WP Product Review Lite - Version 3.7.10

Version Description

  • 2020-06-24
Download this release

Release Info

Developer codeinwp
Plugin Icon WP Product Review Lite
Version 3.7.10
Comparing to
See all releases

Code changes from version 3.7.9 to 3.7.10

CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
 
 
 
 
 
 
 
 
 
 
2
  ### v3.7.9 - 2020-06-15
3
  **Changes:**
4
  * [Fix] Schema.org in both the new and classic editor
1
 
2
+ ### v3.7.10 - 2020-07-21
3
+ **Changes:**
4
+
5
+ ### v3.7.10 - 2020-06-24
6
+ **Changes:**
7
+ * [Fix] Load schema.org just for PHP 7.0 and above
8
+ * [Fix] Take into account the rating scale option for schema.org
9
+ * [Fix] Dequeue jquery-ui-slider when not used
10
+
11
  ### v3.7.9 - 2020-06-15
12
  **Changes:**
13
  * [Fix] Schema.org in both the new and classic editor
includes/admin/layouts/editor-default-tpl.php CHANGED
@@ -53,11 +53,14 @@ $check = $review->is_active() ? 'yes' : 'no';
53
  <?php do_action( 'wppr_editor_details_before', $model->post ); ?>
54
  <div class="wppr-review-details-fields wppr-review-fieldset">
55
  <ul>
 
 
 
 
56
  <div class="wppr-review-type">
57
  <h5>
58
  <label for="wppr-editor-review-type"><?php _e( 'Review Type', 'wp-product-review' ); ?></label>
59
  <?php
60
- $schema_types = WPPR_Schema_Model::get_types();
61
  $schema_type = $review->get_type();
62
  echo $html_helper->select(
63
  array(
@@ -72,6 +75,7 @@ $check = $review->is_active() ? 'yes' : 'no';
72
  </h5>
73
  <div class="wppr-review-type-fields"></div>
74
  </div>
 
75
 
76
  <?php
77
  $templates = apply_filters( 'wppr_review_templates', array( 'default', 'style1', 'style2' ) );
@@ -411,14 +415,16 @@ $check = $review->is_active() ? 'yes' : 'no';
411
  <?php do_action( 'wppr_editor_after', $model->post ); ?>
412
  </div>
413
 
414
- <script id="wppr-review-type-fields-template" type="text/template"
415
- data-json='<?php echo esc_attr( str_replace( "'", '\"', json_encode( WPPR_Schema_Model::get_fields_for_type( $schema_type ) ) ) ); ?>'
416
- data-type='<?php echo esc_attr( $schema_type ); ?>'
417
- data-custom-fields='<?php echo json_encode( $review->get_custom_fields() ); ?>'
418
- >
419
- <li class="wppr-review-type-field">
420
- <label for="wppr-editor-review-type-field">#name#</label>
421
- <input type="text" name="#name#" value="#value#" class="regular-text">
422
- <input type="hidden" name="wppr-editor-review-type-field[]" value="#name#">
423
- </li>
424
- </script>
 
 
53
  <?php do_action( 'wppr_editor_details_before', $model->post ); ?>
54
  <div class="wppr-review-details-fields wppr-review-fieldset">
55
  <ul>
56
+ <?php
57
+ $schema_types = WPPR_Schema_Model::get_types();
58
+ if ( $schema_types ) {
59
+ ?>
60
  <div class="wppr-review-type">
61
  <h5>
62
  <label for="wppr-editor-review-type"><?php _e( 'Review Type', 'wp-product-review' ); ?></label>
63
  <?php
 
64
  $schema_type = $review->get_type();
65
  echo $html_helper->select(
66
  array(
75
  </h5>
76
  <div class="wppr-review-type-fields"></div>
77
  </div>
78
+ <?php } ?>
79
 
80
  <?php
81
  $templates = apply_filters( 'wppr_review_templates', array( 'default', 'style1', 'style2' ) );
415
  <?php do_action( 'wppr_editor_after', $model->post ); ?>
416
  </div>
417
 
418
+ <?php if ( $schema_types ) { ?>
419
+ <script id="wppr-review-type-fields-template" type="text/template"
420
+ data-json='<?php echo esc_attr( str_replace( "'", '\"', json_encode( WPPR_Schema_Model::get_fields_for_type( $schema_type ) ) ) ); ?>'
421
+ data-type='<?php echo esc_attr( $schema_type ); ?>'
422
+ data-custom-fields='<?php echo json_encode( $review->get_custom_fields() ); ?>'
423
+ >
424
+ <li class="wppr-review-type-field">
425
+ <label for="wppr-editor-review-type-field">#name#</label>
426
+ <input type="text" name="#name#" value="#value#" class="regular-text">
427
+ <input type="hidden" name="wppr-editor-review-type-field[]" value="#name#">
428
+ </li>
429
+ </script>
430
+ <?php } ?>
includes/admin/models/class-wppr-review-model.php CHANGED
@@ -1197,13 +1197,23 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
1197
  ),
1198
  );
1199
 
 
 
 
 
 
 
 
 
 
 
1200
  $review_default = array(
1201
  '@type' => 'Review',
1202
  'reviewRating' => array(
1203
  '@type' => 'Rating',
1204
- 'bestRating' => '10',
1205
  'worstRating' => '0',
1206
- 'ratingValue' => number_format( ( $this->get_rating() / 10 ), 2 ),
1207
  ),
1208
  'name' => $this->get_name(),
1209
  'reviewBody' => $this->get_content(),
@@ -1227,9 +1237,9 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
1227
  '@type' => 'Review',
1228
  'reviewRating' => array(
1229
  '@type' => 'Rating',
1230
- 'bestRating' => '10',
1231
  'worstRating' => '0',
1232
- 'ratingValue' => number_format( ( $this->rating_by_options( $comment['options'] ) ), 2 ),
1233
  ),
1234
  'name' => $comment['title'],
1235
  'reviewBody' => $comment['content'],
@@ -1242,9 +1252,9 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
1242
  }
1243
  $ld['aggregateRating'] = array(
1244
  '@type' => 'AggregateRating',
1245
- 'bestRating' => '10',
1246
  'worstRating' => '0',
1247
- 'ratingValue' => number_format( ( $this->get_rating() / 10 ), 2 ),
1248
  'reviewCount' => count( $ld['review'] ),
1249
  );
1250
 
1197
  ),
1198
  );
1199
 
1200
+ $scale = $this->wppr_get_option( 'wppr_use_5_rating_scale' );
1201
+ if ( empty( $scale ) ) {
1202
+ $scale = 10;
1203
+ }
1204
+ // for determining the overall ratings.
1205
+ $divide_by_1 = 10 * ( 10 / $scale );
1206
+
1207
+ // for determinig the comment ratings.
1208
+ $divide_by_2 = 10 / $scale;
1209
+
1210
  $review_default = array(
1211
  '@type' => 'Review',
1212
  'reviewRating' => array(
1213
  '@type' => 'Rating',
1214
+ 'bestRating' => $scale,
1215
  'worstRating' => '0',
1216
+ 'ratingValue' => number_format( ( $this->get_rating() / $divide_by_1 ), 2 ),
1217
  ),
1218
  'name' => $this->get_name(),
1219
  'reviewBody' => $this->get_content(),
1237
  '@type' => 'Review',
1238
  'reviewRating' => array(
1239
  '@type' => 'Rating',
1240
+ 'bestRating' => $scale,
1241
  'worstRating' => '0',
1242
+ 'ratingValue' => number_format( ( $this->rating_by_options( $comment['options'] ) / $divide_by_2 ), 2 ),
1243
  ),
1244
  'name' => $comment['title'],
1245
  'reviewBody' => $comment['content'],
1252
  }
1253
  $ld['aggregateRating'] = array(
1254
  '@type' => 'AggregateRating',
1255
+ 'bestRating' => $scale,
1256
  'worstRating' => '0',
1257
+ 'ratingValue' => number_format( ( $this->get_rating() / $divide_by_1 ), 2 ),
1258
  'reviewCount' => count( $ld['review'] ),
1259
  );
1260
 
includes/admin/models/class-wppr-schema-model.php CHANGED
@@ -37,6 +37,13 @@ class WPPR_Schema_Model extends WPPR_Model_Abstract {
37
  parent::__construct();
38
  }
39
 
 
 
 
 
 
 
 
40
  /**
41
  * Gets all the schema types that support review-type data.
42
  *
@@ -44,6 +51,11 @@ class WPPR_Schema_Model extends WPPR_Model_Abstract {
44
  */
45
  public static function get_types() {
46
  $types = null;
 
 
 
 
 
47
  if ( ! ( WPPR_CACHE_DISABLED || apply_filters( 'wppr_schema_disable_cache', false ) ) ) {
48
  $types = get_transient( 'wppr_schema_types' );
49
  }
@@ -69,12 +81,17 @@ class WPPR_Schema_Model extends WPPR_Model_Abstract {
69
  * Gets all the fields for the specified schema type.
70
  */
71
  public static function get_fields_for_type( $type ) {
 
 
 
 
 
 
72
  include WPPR_PATH . '/vendor/autoload.php';
73
  $class = '\Spatie\SchemaOrg\\' . ucwords( $type );
74
  $class = new $class();
75
  $methods = self::get_uninherited_class_methods( $class );
76
 
77
- $fields = array();
78
  foreach ( $methods as $method ) {
79
  if ( is_callable( array( $class, $method ) ) ) {
80
  $fields[] = $method;
37
  parent::__construct();
38
  }
39
 
40
+ /**
41
+ * Checks if the PHP version is supported by this package.
42
+ */
43
+ private static function is_version_supported() {
44
+ return version_compare( phpversion(), '7.0', '>=' );
45
+ }
46
+
47
  /**
48
  * Gets all the schema types that support review-type data.
49
  *
51
  */
52
  public static function get_types() {
53
  $types = null;
54
+
55
+ if ( ! self::is_version_supported() ) {
56
+ return $types;
57
+ }
58
+
59
  if ( ! ( WPPR_CACHE_DISABLED || apply_filters( 'wppr_schema_disable_cache', false ) ) ) {
60
  $types = get_transient( 'wppr_schema_types' );
61
  }
81
  * Gets all the fields for the specified schema type.
82
  */
83
  public static function get_fields_for_type( $type ) {
84
+ $fields = array();
85
+
86
+ if ( ! self::is_version_supported() ) {
87
+ return $fields;
88
+ }
89
+
90
  include WPPR_PATH . '/vendor/autoload.php';
91
  $class = '\Spatie\SchemaOrg\\' . ucwords( $type );
92
  $class = new $class();
93
  $methods = self::get_uninherited_class_methods( $class );
94
 
 
95
  foreach ( $methods as $method ) {
96
  if ( is_callable( array( $class, $method ) ) ) {
97
  $fields[] = $method;
includes/class-wppr.php CHANGED
@@ -67,7 +67,7 @@ class WPPR {
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
- $this->version = '3.7.9';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
+ $this->version = '3.7.10';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
includes/gutenberg/build/sidebar.js CHANGED
@@ -408,7 +408,7 @@ eval("var pIE = __webpack_require__(16);\nvar createDesc = __webpack_require__(2
408
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
409
 
410
  "use strict";
411
- eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__style_scss__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__radio_image_control___ = __webpack_require__(126);\n\n\n\n\n\n\n\n\n\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\n/**\r\n * WordPress dependencies\r\n */\nvar __ = wp.i18n.__;\nvar _lodash = lodash,\n isUndefined = _lodash.isUndefined,\n pickBy = _lodash.pickBy;\nvar registerPlugin = wp.plugins.registerPlugin;\nvar MediaUpload = wp.editor.MediaUpload;\nvar _wp$data = wp.data,\n select = _wp$data.select,\n withSelect = _wp$data.withSelect,\n withDispatch = _wp$data.withDispatch;\nvar _wp$editPost = wp.editPost,\n PluginPostStatusInfo = _wp$editPost.PluginPostStatusInfo,\n PluginSidebarMoreMenuItem = _wp$editPost.PluginSidebarMoreMenuItem,\n PluginSidebar = _wp$editPost.PluginSidebar;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar _wp$compose = wp.compose,\n withState = _wp$compose.withState,\n compose = _wp$compose.compose;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n FormToggle = _wp$components.FormToggle,\n Modal = _wp$components.Modal,\n PanelBody = _wp$components.PanelBody,\n SelectControl = _wp$components.SelectControl,\n TextControl = _wp$components.TextControl,\n ExternalLink = _wp$components.ExternalLink;\n\nvar WP_Product_Review = function (_Component) {\n\t__WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits___default()(WP_Product_Review, _Component);\n\n\tfunction WP_Product_Review() {\n\t\t__WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck___default()(this, WP_Product_Review);\n\n\t\tvar _this = __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn___default()(this, (WP_Product_Review.__proto__ || __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of___default()(WP_Product_Review)).apply(this, arguments));\n\n\t\t_this.toggleReviewStatus = _this.toggleReviewStatus.bind(_this);\n\t\t_this.onChangeTemplate = _this.onChangeTemplate.bind(_this);\n\t\t_this.onChangeReviewTitle = _this.onChangeReviewTitle.bind(_this);\n\t\t_this.onChangeReviewImage = _this.onChangeReviewImage.bind(_this);\n\t\t_this.onChangeImageLink = _this.onChangeImageLink.bind(_this);\n\t\t_this.onChangeReviewAffiliateTitle = _this.onChangeReviewAffiliateTitle.bind(_this);\n\t\t_this.onChangeReviewAffiliateLink = _this.onChangeReviewAffiliateLink.bind(_this);\n\t\t_this.addButton = _this.addButton.bind(_this);\n\t\t_this.onChangeReviewPrice = _this.onChangeReviewPrice.bind(_this);\n\t\t_this.onChangeOptionText = _this.onChangeOptionText.bind(_this);\n\t\t_this.onChangeOptionNumber = _this.onChangeOptionNumber.bind(_this);\n\t\t_this.onChangeSchemaType = _this.onChangeSchemaType.bind(_this);\n\t\t_this.onChangeSchemaField = _this.onChangeSchemaField.bind(_this);\n\t\t_this.addOption = _this.addOption.bind(_this);\n\t\t_this.onChangeProText = _this.onChangeProText.bind(_this);\n\t\t_this.addPro = _this.addPro.bind(_this);\n\t\t_this.onChangeConText = _this.onChangeConText.bind(_this);\n\t\t_this.addCon = _this.addCon.bind(_this);\n\t\t_this.importReview = _this.importReview.bind(_this);\n\n\t\t_this.state = {\n\t\t\tcwp_meta_box_check: 'No',\n\t\t\tcwp_rev_product_name: '',\n\t\t\t_wppr_review_template: 'default',\n\t\t\tcwp_rev_product_image: '',\n\t\t\tcwp_image_link: 'image',\n\t\t\twppr_links: {\n\t\t\t\t'': ''\n\t\t\t},\n\t\t\tcwp_rev_price: '',\n\t\t\twppr_options: {\n\t\t\t\t1: {\n\t\t\t\t\tname: '',\n\t\t\t\t\tvalue: 0\n\t\t\t\t}\n\t\t\t},\n\t\t\twppr_pros: {\n\t\t\t\t0: ''\n\t\t\t},\n\t\t\twppr_cons: {\n\t\t\t\t0: ''\n\t\t\t},\n\t\t\twppr_review_type: 'Product',\n\t\t\twppr_review_custom_fields: {},\n\t\t\tschema_fields: {},\n\t\t\tschema_url: ''\n\t\t};\n\t\treturn _this;\n\t}\n\n\t__WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass___default()(WP_Product_Review, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function () {\n\t\t\tvar _ref = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default.a.mark(function _callee() {\n\t\t\t\tvar _select, getCurrentPostId, getCurrentPostType, post, data;\n\n\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t_select = select('core/editor'), getCurrentPostId = _select.getCurrentPostId, getCurrentPostType = _select.getCurrentPostType;\n\t\t\t\t\t\t\t\t_context.next = 3;\n\t\t\t\t\t\t\t\treturn select('core').getEntityRecord('postType', getCurrentPostType(), getCurrentPostId());\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tpost = _context.sent;\n\n\t\t\t\t\t\t\t\tif (!(undefined !== post && post.wppr_data)) {\n\t\t\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (post.wppr_data.wppr_links && post.wppr_data.wppr_links.length < 1) {\n\t\t\t\t\t\t\t\t\tpost.wppr_data.wppr_links[''] = '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setState(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, post.wppr_data));\n\n\t\t\t\t\t\t\t\t_context.next = 9;\n\t\t\t\t\t\t\t\treturn wp.apiRequest({ path: '/wppr/v1/schema-fields?type=' + this.state.wppr_review_type });\n\n\t\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\t\tdata = _context.sent;\n\n\t\t\t\t\t\t\t\tthis.setState({ schema_fields: data.fields, schema_url: data.url });\n\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction componentDidMount() {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn componentDidMount;\n\t\t}()\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (this.state.cwp_meta_box_check !== prevState.cwp_meta_box_check && this.state.cwp_meta_box_check === 'Yes') {\n\t\t\t\tthis.props.openReviewSidebar();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'toggleReviewStatus',\n\t\tvalue: function toggleReviewStatus() {\n\t\t\tthis.setState({ cwp_meta_box_check: this.state.cwp_meta_box_check === 'Yes' ? 'No' : 'Yes' });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeTemplate',\n\t\tvalue: function onChangeTemplate(value) {\n\t\t\tthis.setState({ _wppr_review_template: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewTitle',\n\t\tvalue: function onChangeReviewTitle(value) {\n\t\t\tthis.setState({ cwp_rev_product_name: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewImage',\n\t\tvalue: function onChangeReviewImage(value) {\n\t\t\tif (value.url !== undefined && value.url !== '') {\n\t\t\t\tthis.setState({ cwp_rev_product_image: value.url });\n\t\t\t} else if (value.id !== undefined) {\n\t\t\t\tthis.setState({ cwp_rev_product_image: value.id });\n\t\t\t}\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeImageLink',\n\t\tvalue: function onChangeImageLink(value) {\n\t\t\tthis.setState({ cwp_image_link: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewAffiliateTitle',\n\t\tvalue: function onChangeReviewAffiliateTitle(e, key) {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\tif (__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).length === 2) {\n\t\t\t\tif (e === __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[0] || e === __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[1]) {\n\t\t\t\t\te = e + ' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[0] === key) {\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_11__utils__[\"a\" /* renameKey */])(wppr_links, key, e);\n\t\t\t\twppr_links = Object(__WEBPACK_IMPORTED_MODULE_11__utils__[\"b\" /* reverseObject */])(wppr_links);\n\t\t\t} else {\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_11__utils__[\"a\" /* renameKey */])(wppr_links, key, e);\n\t\t\t}\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewAffiliateLink',\n\t\tvalue: function onChangeReviewAffiliateLink(e, key) {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\twppr_links[key] = e;\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addButton',\n\t\tvalue: function addButton() {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\twppr_links['Buy Now'] = '';\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewPrice',\n\t\tvalue: function onChangeReviewPrice(value) {\n\t\t\tthis.setState({ cwp_rev_price: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeOptionText',\n\t\tvalue: function onChangeOptionText(e, key) {\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\twppr_options[key]['name'] = e;\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeOptionNumber',\n\t\tvalue: function onChangeOptionNumber(e, key) {\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\tif (e === '') e = 0;\n\t\t\twppr_options[key]['value'] = e;\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeSchemaType',\n\t\tvalue: function onChangeSchemaType(e, key) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (e === '') return;\n\n\t\t\t// remove existing fields first.\n\t\t\tthis.setState({ schema_fields: {}, schema_url: '' });\n\n\t\t\twp.apiRequest({ path: '/wppr/v1/schema-fields?type=' + e }).then(function (data) {\n\t\t\t\t_this2.setState({ schema_fields: data.fields, schema_url: data.url, wppr_review_type: e });\n\t\t\t\t_this2.props.editPostStatus({ edited: true });\n\t\t\t}, function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'onChangeSchemaField',\n\t\tvalue: function onChangeSchemaField(e, field) {\n\t\t\tvar fields = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_review_custom_fields);\n\t\t\tvar schema_fields = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.schema_fields);\n\t\t\tfields[field] = e;\n\t\t\tthis.setState({ wppr_review_custom_fields: fields });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addOption',\n\t\tvalue: function addOption() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).length + 1;\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\twppr_options[key] = {\n\t\t\t\tname: '',\n\t\t\t\tvalue: 0\n\t\t\t};\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeProText',\n\t\tvalue: function onChangeProText(e, key) {\n\t\t\tvar wppr_pros = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_pros);\n\t\t\twppr_pros[key] = e;\n\t\t\tthis.setState({ wppr_pros: wppr_pros });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addPro',\n\t\tvalue: function addPro() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).length;\n\t\t\tvar wppr_pros = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_pros);\n\t\t\twppr_pros[key] = '';\n\t\t\tthis.setState({ wppr_pros: wppr_pros });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeConText',\n\t\tvalue: function onChangeConText(e, key) {\n\t\t\tvar wppr_cons = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_cons);\n\t\t\twppr_cons[key] = e;\n\t\t\tthis.setState({ wppr_cons: wppr_cons });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addCon',\n\t\tvalue: function addCon() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).length;\n\t\t\tvar wppr_cons = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_cons);\n\t\t\twppr_cons[key] = '';\n\t\t\tthis.setState({ wppr_cons: wppr_cons });\n\t\t}\n\t}, {\n\t\tkey: 'importReview',\n\t\tvalue: function importReview(key) {\n\t\t\tthis.setState({\n\t\t\t\twppr_options: this.props.posts[key].wppr_data.wppr_options,\n\t\t\t\twppr_pros: this.props.posts[key].wppr_data.wppr_pros,\n\t\t\t\twppr_cons: this.props.posts[key].wppr_data.wppr_cons\n\t\t\t});\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t\tthis.props.setState({ isOpen: false });\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginPostStatusInfo,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'label',\n\t\t\t\t\t\t{ htmlFor: 'is-this-a-review' },\n\t\t\t\t\t\t__('Is this post a review?')\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(FormToggle, {\n\t\t\t\t\t\tchecked: this.state.cwp_meta_box_check === 'Yes' ? true : false,\n\t\t\t\t\t\tonChange: this.toggleReviewStatus,\n\t\t\t\t\t\tid: 'is-this-a-review'\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tthis.state.cwp_meta_box_check === 'Yes' && [wp.element.createElement(\n\t\t\t\t\tPluginSidebarMoreMenuItem,\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: 'wp-product-review'\n\t\t\t\t\t},\n\t\t\t\t\t__('WP Product Review')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\tPluginSidebar,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'wp-product-review',\n\t\t\t\t\t\ttitle: __('WP Product Review')\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Product Details'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-details',\n\t\t\t\t\t\t\tinitialOpen: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\twpprguten.isPro && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_12__radio_image_control___[\"a\" /* default */], {\n\t\t\t\t\t\t\tlabel: __('Review Template'),\n\t\t\t\t\t\t\tselected: this.state._wppr_review_template,\n\t\t\t\t\t\t\toptions: [{\n\t\t\t\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/default.png',\n\t\t\t\t\t\t\t\tvalue: 'default'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Style 1'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/style1.png',\n\t\t\t\t\t\t\t\tvalue: 'style1'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Style 2'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/style2.png',\n\t\t\t\t\t\t\t\tvalue: 'style2'\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tonChange: this.onChangeTemplate\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.props.postType !== 'wppr_review' && [wp.element.createElement(TextControl, {\n\t\t\t\t\t\t\tlabel: __('Product Name'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tvalue: this.state.cwp_rev_product_name,\n\t\t\t\t\t\t\tonChange: this.onChangeReviewTitle\n\t\t\t\t\t\t})],\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wp-product-review-sidebar-base-control' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t{ className: 'blocks-base-control__label', 'for': 'inspector-media-upload' },\n\t\t\t\t\t\t\t\t__('Product Image')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tid: 'inspector-media-upload',\n\t\t\t\t\t\t\t\tvalue: this.state.cwp_rev_product_image,\n\t\t\t\t\t\t\t\tonSelect: this.onChangeReviewImage,\n\t\t\t\t\t\t\t\trender: function render(_ref2) {\n\t\t\t\t\t\t\t\t\tvar open = _ref2.open;\n\t\t\t\t\t\t\t\t\treturn [_this3.state.cwp_rev_product_image !== '' && [wp.element.createElement('img', {\n\t\t\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\t\t\tsrc: _this3.state.cwp_rev_product_image,\n\t\t\t\t\t\t\t\t\t\talt: __('Review image')\n\t\t\t\t\t\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\t\treturn _this3.setState({ cwp_rev_product_image: '' });\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t__('Remove Image')\n\t\t\t\t\t\t\t\t\t)], wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' },\n\t\t\t\t\t\t\t\t\t\t\tclassName: _this3.state.cwp_rev_product_image === '' && 'wppr_image_upload'\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t__('Choose or Upload an Image')\n\t\t\t\t\t\t\t\t\t)];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\t\tlabel: __('Product Image Click'),\n\t\t\t\t\t\t\tvalue: this.state.cwp_image_link,\n\t\t\t\t\t\t\toptions: [{\n\t\t\t\t\t\t\t\tlabel: __('Show Whole Image'),\n\t\t\t\t\t\t\t\tvalue: 'image'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Open Affiliate Link'),\n\t\t\t\t\t\t\t\tvalue: 'link'\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tonChange: this.onChangeImageLink\n\t\t\t\t\t\t}),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-links-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\tFragment,\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\tlabel: __('Affiliate Button Text'),\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tvalue: key != 1 ? key : '',\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeReviewAffiliateTitle(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\tlabel: __('Affiliate Button Link'),\n\t\t\t\t\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_links[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeReviewAffiliateLink(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).length < 2 && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addButton\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another button')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\tlabel: __('Product Price'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tvalue: this.state.cwp_rev_price,\n\t\t\t\t\t\t\tonChange: this.onChangeReviewPrice\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Product Options'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-options',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-options-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-options-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-option-item-' + key },\n\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-option-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_options[key].name,\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeOptionText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text wppr-option-number',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('0'),\n\t\t\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_options[key].value,\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeOptionNumber(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addOption\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Pro Features'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-pros',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-pro-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-pro-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-pro-item-' + key },\n\t\t\t\t\t\t\t\t\t\tparseInt(key) + 1\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-pro-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_pros[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeProText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addPro\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Con Features'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-cons',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-con-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-con-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-con-item-' + key },\n\t\t\t\t\t\t\t\t\t\tparseInt(key) + 1\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-con-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_cons[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeConText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addCon\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Schema Details'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-schema',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-schema' },\n\t\t\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\t\t\tlabel: __('Review Type'),\n\t\t\t\t\t\t\t\tvalue: this.state.wppr_review_type,\n\t\t\t\t\t\t\t\toptions: wpprguten.schema_types,\n\t\t\t\t\t\t\t\tonChange: this.onChangeSchemaType\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-schema-fields' },\n\t\t\t\t\t\t\t!!this.state.schema_url && wp.element.createElement(\n\t\t\t\t\t\t\t\tExternalLink,\n\t\t\t\t\t\t\t\t{ href: this.state.schema_url, title: __('View Schema Description ') },\n\t\t\t\t\t\t\t\t__('View Schema Description ')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values___default()(this.state.schema_fields).map(function (field, key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-schema-field' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-schema-field-' + key },\n\t\t\t\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-schema-field-' + key,\n\t\t\t\t\t\t\t\t\t\tname: 'wppr-schema-field-' + field,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_review_custom_fields[field] ? _this3.state.wppr_review_custom_fields[field] : '',\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeSchemaField(e, field);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twpprguten.isPro && wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'wppr-review-import-review-button' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tisPrimary: true,\n\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn _this3.props.setState({ isOpen: true });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Import Review')\n\t\t\t\t\t\t),\n\t\t\t\t\t\tthis.props.isOpen ? wp.element.createElement(\n\t\t\t\t\t\t\tModal,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: __('Import Review'),\n\t\t\t\t\t\t\t\tclassName: 'wppr-review-import-modal',\n\t\t\t\t\t\t\t\tonRequestClose: function onRequestClose() {\n\t\t\t\t\t\t\t\t\treturn _this3.props.setState({ isOpen: false });\n\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\tthis.props.posts && __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.props.posts).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttitle: _this3.props.posts[key].title.raw,\n\t\t\t\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t\t{ className: 'cwp_pitem_info' },\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_content' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Options')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_options).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_options[i].name\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_pros' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Pros')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_pros).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_pros[i]\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_cons' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Cons')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_cons).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_cons[i]\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn _this3.importReview(key);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t__('Import Review')\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)\n\t\t\t\t)]\n\t\t\t);\n\t\t}\n\t}], [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(nextProps, state) {\n\t\t\tif ((nextProps.isPublishing || nextProps.isSaving) && !nextProps.isAutoSaving) {\n\t\t\t\twp.apiRequest({ path: '/wppr/v1/update-review?id=' + nextProps.postId + '&postType=' + nextProps.postType, method: 'POST', data: state }).then(function (data) {\n\t\t\t\t\treturn data;\n\t\t\t\t}, function (err) {\n\t\t\t\t\treturn err;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn WP_Product_Review;\n}(Component);\n\nvar WPPR = compose([withSelect(function (select, _ref3) {\n\tvar forceIsSaving = _ref3.forceIsSaving;\n\n\tvar _select2 = select('core/editor'),\n\t getCurrentPostId = _select2.getCurrentPostId,\n\t isSavingPost = _select2.isSavingPost,\n\t isPublishingPost = _select2.isPublishingPost,\n\t isAutosavingPost = _select2.isAutosavingPost,\n\t getCurrentPostType = _select2.getCurrentPostType;\n\n\tvar latestPostsQuery = pickBy({\n\t\tper_page: 100,\n\t\tmeta_key: 'cwp_meta_box_check',\n\t\tmeta_value: 'Yes'\n\t}, function (value) {\n\t\treturn !isUndefined(value);\n\t});\n\treturn {\n\t\tpostId: getCurrentPostId(),\n\t\tpostType: getCurrentPostType(),\n\t\tposts: select('core').getEntityRecords('postType', 'post', latestPostsQuery),\n\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\tisAutoSaving: isAutosavingPost(),\n\t\tisPublishing: isPublishingPost()\n\t};\n}), withState({\n\tisOpen: false\n}), withDispatch(function (dispatch) {\n\treturn {\n\t\topenReviewSidebar: function openReviewSidebar() {\n\t\t\treturn dispatch('core/edit-post').openGeneralSidebar('wp-product-review/wp-product-review');\n\t\t},\n\t\teditPostStatus: dispatch('core/editor').editPost\n\t};\n})])(WP_Product_Review);\n\nregisterPlugin('wp-product-review', {\n\ticon: 'star-empty',\n\trender: WPPR\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2lkZWJhci5qcz8yNWQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfT2JqZWN0JHZhbHVlcyBmcm9tICdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L3ZhbHVlcyc7XG5pbXBvcnQgX09iamVjdCRrZXlzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cyc7XG5pbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tICdiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3InO1xuaW1wb3J0IF9PYmplY3QkZ2V0UHJvdG90eXBlT2YgZnJvbSAnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJztcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG4vKipcclxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXHJcbiAqL1xuaW1wb3J0ICcuL3N0eWxlLnNjc3MnO1xuaW1wb3J0IHsgcmV2ZXJzZU9iamVjdCwgcmVuYW1lS2V5LCBpbkFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgUmFkaW9JbWFnZUNvbnRyb2wgZnJvbSAnLi9yYWRpby1pbWFnZS1jb250cm9sLyc7XG5cbi8qKlxyXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXHJcbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciBfbG9kYXNoID0gbG9kYXNoLFxuICAgIGlzVW5kZWZpbmVkID0gX2xvZGFzaC5pc1VuZGVmaW5lZCxcbiAgICBwaWNrQnkgPSBfbG9kYXNoLnBpY2tCeTtcbnZhciByZWdpc3RlclBsdWdpbiA9IHdwLnBsdWdpbnMucmVnaXN0ZXJQbHVnaW47XG52YXIgTWVkaWFVcGxvYWQgPSB3cC5lZGl0b3IuTWVkaWFVcGxvYWQ7XG52YXIgX3dwJGRhdGEgPSB3cC5kYXRhLFxuICAgIHNlbGVjdCA9IF93cCRkYXRhLnNlbGVjdCxcbiAgICB3aXRoU2VsZWN0ID0gX3dwJGRhdGEud2l0aFNlbGVjdCxcbiAgICB3aXRoRGlzcGF0Y2ggPSBfd3AkZGF0YS53aXRoRGlzcGF0Y2g7XG52YXIgX3dwJGVkaXRQb3N0ID0gd3AuZWRpdFBvc3QsXG4gICAgUGx1Z2luUG9zdFN0YXR1c0luZm8gPSBfd3AkZWRpdFBvc3QuUGx1Z2luUG9zdFN0YXR1c0luZm8sXG4gICAgUGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSA9IF93cCRlZGl0UG9zdC5QbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtLFxuICAgIFBsdWdpblNpZGViYXIgPSBfd3AkZWRpdFBvc3QuUGx1Z2luU2lkZWJhcjtcbnZhciBfd3AkZWxlbWVudCA9IHdwLmVsZW1lbnQsXG4gICAgQ29tcG9uZW50ID0gX3dwJGVsZW1lbnQuQ29tcG9uZW50LFxuICAgIEZyYWdtZW50ID0gX3dwJGVsZW1lbnQuRnJhZ21lbnQ7XG52YXIgX3dwJGNvbXBvc2UgPSB3cC5jb21wb3NlLFxuICAgIHdpdGhTdGF0ZSA9IF93cCRjb21wb3NlLndpdGhTdGF0ZSxcbiAgICBjb21wb3NlID0gX3dwJGNvbXBvc2UuY29tcG9zZTtcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgQnV0dG9uID0gX3dwJGNvbXBvbmVudHMuQnV0dG9uLFxuICAgIEZvcm1Ub2dnbGUgPSBfd3AkY29tcG9uZW50cy5Gb3JtVG9nZ2xlLFxuICAgIE1vZGFsID0gX3dwJGNvbXBvbmVudHMuTW9kYWwsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgRXh0ZXJuYWxMaW5rID0gX3dwJGNvbXBvbmVudHMuRXh0ZXJuYWxMaW5rO1xuXG52YXIgV1BfUHJvZHVjdF9SZXZpZXcgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHRfaW5oZXJpdHMoV1BfUHJvZHVjdF9SZXZpZXcsIF9Db21wb25lbnQpO1xuXG5cdGZ1bmN0aW9uIFdQX1Byb2R1Y3RfUmV2aWV3KCkge1xuXHRcdF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXUF9Qcm9kdWN0X1Jldmlldyk7XG5cblx0XHR2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoV1BfUHJvZHVjdF9SZXZpZXcuX19wcm90b19fIHx8IF9PYmplY3QkZ2V0UHJvdG90eXBlT2YoV1BfUHJvZHVjdF9SZXZpZXcpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblxuXHRcdF90aGlzLnRvZ2dsZVJldmlld1N0YXR1cyA9IF90aGlzLnRvZ2dsZVJldmlld1N0YXR1cy5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVRlbXBsYXRlID0gX3RoaXMub25DaGFuZ2VUZW1wbGF0ZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVJldmlld1RpdGxlID0gX3RoaXMub25DaGFuZ2VSZXZpZXdUaXRsZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVJldmlld0ltYWdlID0gX3RoaXMub25DaGFuZ2VSZXZpZXdJbWFnZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZUltYWdlTGluayA9IF90aGlzLm9uQ2hhbmdlSW1hZ2VMaW5rLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlVGl0bGUgPSBfdGhpcy5vbkNoYW5nZVJldmlld0FmZmlsaWF0ZVRpdGxlLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlTGluayA9IF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlTGluay5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5hZGRCdXR0b24gPSBfdGhpcy5hZGRCdXR0b24uYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VSZXZpZXdQcmljZSA9IF90aGlzLm9uQ2hhbmdlUmV2aWV3UHJpY2UuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VPcHRpb25UZXh0ID0gX3RoaXMub25DaGFuZ2VPcHRpb25UZXh0LmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlT3B0aW9uTnVtYmVyID0gX3RoaXMub25DaGFuZ2VPcHRpb25OdW1iZXIuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VTY2hlbWFUeXBlID0gX3RoaXMub25DaGFuZ2VTY2hlbWFUeXBlLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlU2NoZW1hRmllbGQgPSBfdGhpcy5vbkNoYW5nZVNjaGVtYUZpZWxkLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLmFkZE9wdGlvbiA9IF90aGlzLmFkZE9wdGlvbi5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVByb1RleHQgPSBfdGhpcy5vbkNoYW5nZVByb1RleHQuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMuYWRkUHJvID0gX3RoaXMuYWRkUHJvLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlQ29uVGV4dCA9IF90aGlzLm9uQ2hhbmdlQ29uVGV4dC5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5hZGRDb24gPSBfdGhpcy5hZGRDb24uYmluZChfdGhpcyk7XG5cdFx0X3RoaXMuaW1wb3J0UmV2aWV3ID0gX3RoaXMuaW1wb3J0UmV2aWV3LmJpbmQoX3RoaXMpO1xuXG5cdFx0X3RoaXMuc3RhdGUgPSB7XG5cdFx0XHRjd3BfbWV0YV9ib3hfY2hlY2s6ICdObycsXG5cdFx0XHRjd3BfcmV2X3Byb2R1Y3RfbmFtZTogJycsXG5cdFx0XHRfd3Bwcl9yZXZpZXdfdGVtcGxhdGU6ICdkZWZhdWx0Jyxcblx0XHRcdGN3cF9yZXZfcHJvZHVjdF9pbWFnZTogJycsXG5cdFx0XHRjd3BfaW1hZ2VfbGluazogJ2ltYWdlJyxcblx0XHRcdHdwcHJfbGlua3M6IHtcblx0XHRcdFx0Jyc6ICcnXG5cdFx0XHR9LFxuXHRcdFx0Y3dwX3Jldl9wcmljZTogJycsXG5cdFx0XHR3cHByX29wdGlvbnM6IHtcblx0XHRcdFx0MToge1xuXHRcdFx0XHRcdG5hbWU6ICcnLFxuXHRcdFx0XHRcdHZhbHVlOiAwXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR3cHByX3Byb3M6IHtcblx0XHRcdFx0MDogJydcblx0XHRcdH0sXG5cdFx0XHR3cHByX2NvbnM6IHtcblx0XHRcdFx0MDogJydcblx0XHRcdH0sXG5cdFx0XHR3cHByX3Jldmlld190eXBlOiAnUHJvZHVjdCcsXG5cdFx0XHR3cHByX3Jldmlld19jdXN0b21fZmllbGRzOiB7fSxcblx0XHRcdHNjaGVtYV9maWVsZHM6IHt9LFxuXHRcdFx0c2NoZW1hX3VybDogJydcblx0XHR9O1xuXHRcdHJldHVybiBfdGhpcztcblx0fVxuXG5cdF9jcmVhdGVDbGFzcyhXUF9Qcm9kdWN0X1JldmlldywgW3tcblx0XHRrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcblx0XHRcdFx0dmFyIF9zZWxlY3QsIGdldEN1cnJlbnRQb3N0SWQsIGdldEN1cnJlbnRQb3N0VHlwZSwgcG9zdCwgZGF0YTtcblxuXHRcdFx0XHRyZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG5cdFx0XHRcdFx0d2hpbGUgKDEpIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdF9zZWxlY3QgPSBzZWxlY3QoJ2NvcmUvZWRpdG9yJyksIGdldEN1cnJlbnRQb3N0SWQgPSBfc2VsZWN0LmdldEN1cnJlbnRQb3N0SWQsIGdldEN1cnJlbnRQb3N0VHlwZSA9IF9zZWxlY3QuZ2V0Q3VycmVudFBvc3RUeXBlO1xuXHRcdFx0XHRcdFx0XHRcdF9jb250ZXh0Lm5leHQgPSAzO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZWxlY3QoJ2NvcmUnKS5nZXRFbnRpdHlSZWNvcmQoJ3Bvc3RUeXBlJywgZ2V0Q3VycmVudFBvc3RUeXBlKCksIGdldEN1cnJlbnRQb3N0SWQoKSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdHBvc3QgPSBfY29udGV4dC5zZW50O1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCEodW5kZWZpbmVkICE9PSBwb3N0ICYmIHBvc3Qud3Bwcl9kYXRhKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2NvbnRleHQubmV4dCA9IDExO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHBvc3Qud3Bwcl9kYXRhLndwcHJfbGlua3MgJiYgcG9zdC53cHByX2RhdGEud3Bwcl9saW5rcy5sZW5ndGggPCAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwb3N0LndwcHJfZGF0YS53cHByX2xpbmtzWycnXSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKF9leHRlbmRzKHt9LCBwb3N0LndwcHJfZGF0YSkpO1xuXG5cdFx0XHRcdFx0XHRcdFx0X2NvbnRleHQubmV4dCA9IDk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmFwaVJlcXVlc3QoeyBwYXRoOiAnL3dwcHIvdjEvc2NoZW1hLWZpZWxkcz90eXBlPScgKyB0aGlzLnN0YXRlLndwcHJfcmV2aWV3X3R5cGUgfSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSA5OlxuXHRcdFx0XHRcdFx0XHRcdGRhdGEgPSBfY29udGV4dC5zZW50O1xuXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHNjaGVtYV9maWVsZHM6IGRhdGEuZmllbGRzLCBzY2hlbWFfdXJsOiBkYXRhLnVybCB9KTtcblxuXHRcdFx0XHRcdFx0XHRjYXNlIDExOlxuXHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBfY29udGV4dC5zdG9wKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LCBfY2FsbGVlLCB0aGlzKTtcblx0XHRcdH0pKTtcblxuXHRcdFx0ZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG5cdFx0XHRcdHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjb21wb25lbnREaWRNb3VudDtcblx0XHR9KClcblx0fSwge1xuXHRcdGtleTogJ2NvbXBvbmVudERpZFVwZGF0ZScsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrICE9PSBwcmV2U3RhdGUuY3dwX21ldGFfYm94X2NoZWNrICYmIHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrID09PSAnWWVzJykge1xuXHRcdFx0XHR0aGlzLnByb3BzLm9wZW5SZXZpZXdTaWRlYmFyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAndG9nZ2xlUmV2aWV3U3RhdHVzJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gdG9nZ2xlUmV2aWV3U3RhdHVzKCkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9tZXRhX2JveF9jaGVjazogdGhpcy5zdGF0ZS5jd3BfbWV0YV9ib3hfY2hlY2sgPT09ICdZZXMnID8gJ05vJyA6ICdZZXMnIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVRlbXBsYXRlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IF93cHByX3Jldmlld190ZW1wbGF0ZTogdmFsdWUgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ29uQ2hhbmdlUmV2aWV3VGl0bGUnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVJldmlld1RpdGxlKHZhbHVlKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgY3dwX3Jldl9wcm9kdWN0X25hbWU6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0ltYWdlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdJbWFnZSh2YWx1ZSkge1xuXHRcdFx0aWYgKHZhbHVlLnVybCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnVybCAhPT0gJycpIHtcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9yZXZfcHJvZHVjdF9pbWFnZTogdmFsdWUudXJsIH0pO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZS5pZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyBjd3BfcmV2X3Byb2R1Y3RfaW1hZ2U6IHZhbHVlLmlkIH0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZUltYWdlTGluaycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlSW1hZ2VMaW5rKHZhbHVlKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgY3dwX2ltYWdlX2xpbms6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0FmZmlsaWF0ZVRpdGxlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdBZmZpbGlhdGVUaXRsZShlLCBrZXkpIHtcblx0XHRcdHZhciB3cHByX2xpbmtzID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9saW5rcyk7XG5cdFx0XHRpZiAoX09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9saW5rcykubGVuZ3RoID09PSAyKSB7XG5cdFx0XHRcdGlmIChlID09PSBfT2JqZWN0JGtleXMod3Bwcl9saW5rcylbMF0gfHwgZSA9PT0gX09iamVjdCRrZXlzKHdwcHJfbGlua3MpWzFdKSB7XG5cdFx0XHRcdFx0ZSA9IGUgKyAnICc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChfT2JqZWN0JGtleXMod3Bwcl9saW5rcylbMF0gPT09IGtleSkge1xuXHRcdFx0XHRyZW5hbWVLZXkod3Bwcl9saW5rcywga2V5LCBlKTtcblx0XHRcdFx0d3Bwcl9saW5rcyA9IHJldmVyc2VPYmplY3Qod3Bwcl9saW5rcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZW5hbWVLZXkod3Bwcl9saW5rcywga2V5LCBlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2xpbmtzOiB3cHByX2xpbmtzIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9saW5rcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfbGlua3MpO1xuXHRcdFx0d3Bwcl9saW5rc1trZXldID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2xpbmtzOiB3cHByX2xpbmtzIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdhZGRCdXR0b24nLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBhZGRCdXR0b24oKSB7XG5cdFx0XHR2YXIgd3Bwcl9saW5rcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfbGlua3MpO1xuXHRcdFx0d3Bwcl9saW5rc1snQnV5IE5vdyddID0gJyc7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9saW5rczogd3Bwcl9saW5rcyB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld1ByaWNlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdQcmljZSh2YWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9yZXZfcHJpY2U6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZU9wdGlvblRleHQnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZU9wdGlvblRleHQoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9vcHRpb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9vcHRpb25zKTtcblx0XHRcdHdwcHJfb3B0aW9uc1trZXldWyduYW1lJ10gPSBlO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfb3B0aW9uczogd3Bwcl9vcHRpb25zIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZU9wdGlvbk51bWJlcicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlT3B0aW9uTnVtYmVyKGUsIGtleSkge1xuXHRcdFx0dmFyIHdwcHJfb3B0aW9ucyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfb3B0aW9ucyk7XG5cdFx0XHRpZiAoZSA9PT0gJycpIGUgPSAwO1xuXHRcdFx0d3Bwcl9vcHRpb25zW2tleV1bJ3ZhbHVlJ10gPSBlO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfb3B0aW9uczogd3Bwcl9vcHRpb25zIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVNjaGVtYVR5cGUnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVNjaGVtYVR5cGUoZSwga2V5KSB7XG5cdFx0XHR2YXIgX3RoaXMyID0gdGhpcztcblxuXHRcdFx0aWYgKGUgPT09ICcnKSByZXR1cm47XG5cblx0XHRcdC8vIHJlbW92ZSBleGlzdGluZyBmaWVsZHMgZmlyc3QuXG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgc2NoZW1hX2ZpZWxkczoge30sIHNjaGVtYV91cmw6ICcnIH0pO1xuXG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy93cHByL3YxL3NjaGVtYS1maWVsZHM/dHlwZT0nICsgZSB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG5cdFx0XHRcdF90aGlzMi5zZXRTdGF0ZSh7IHNjaGVtYV9maWVsZHM6IGRhdGEuZmllbGRzLCBzY2hlbWFfdXJsOiBkYXRhLnVybCwgd3Bwcl9yZXZpZXdfdHlwZTogZSB9KTtcblx0XHRcdFx0X3RoaXMyLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdFx0fSwgZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRyZXR1cm4gZXJyO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnb25DaGFuZ2VTY2hlbWFGaWVsZCcsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlU2NoZW1hRmllbGQoZSwgZmllbGQpIHtcblx0XHRcdHZhciBmaWVsZHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzKTtcblx0XHRcdHZhciBzY2hlbWFfZmllbGRzID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUuc2NoZW1hX2ZpZWxkcyk7XG5cdFx0XHRmaWVsZHNbZmllbGRdID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX3Jldmlld19jdXN0b21fZmllbGRzOiBmaWVsZHMgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2FkZE9wdGlvbicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGFkZE9wdGlvbigpIHtcblx0XHRcdHZhciBrZXkgPSBfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX29wdGlvbnMpLmxlbmd0aCArIDE7XG5cdFx0XHR2YXIgd3Bwcl9vcHRpb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9vcHRpb25zKTtcblx0XHRcdHdwcHJfb3B0aW9uc1trZXldID0ge1xuXHRcdFx0XHRuYW1lOiAnJyxcblx0XHRcdFx0dmFsdWU6IDBcblx0XHRcdH07XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9vcHRpb25zOiB3cHByX29wdGlvbnMgfSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnb25DaGFuZ2VQcm9UZXh0Jyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VQcm9UZXh0KGUsIGtleSkge1xuXHRcdFx0dmFyIHdwcHJfcHJvcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfcHJvcyk7XG5cdFx0XHR3cHByX3Byb3Nba2V5XSA9IGU7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9wcm9zOiB3cHByX3Byb3MgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2FkZFBybycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGFkZFBybygpIHtcblx0XHRcdHZhciBrZXkgPSBfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX3Byb3MpLmxlbmd0aDtcblx0XHRcdHZhciB3cHByX3Byb3MgPSBfZXh0ZW5kcyh7fSwgdGhpcy5zdGF0ZS53cHByX3Byb3MpO1xuXHRcdFx0d3Bwcl9wcm9zW2tleV0gPSAnJztcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX3Byb3M6IHdwcHJfcHJvcyB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZUNvblRleHQnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZUNvblRleHQoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9jb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9jb25zKTtcblx0XHRcdHdwcHJfY29uc1trZXldID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2NvbnM6IHdwcHJfY29ucyB9KTtcblx0XHRcdHRoaXMucHJvcHMuZWRpdFBvc3RTdGF0dXMoeyBlZGl0ZWQ6IHRydWUgfSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnYWRkQ29uJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gYWRkQ29uKCkge1xuXHRcdFx0dmFyIGtleSA9IF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfY29ucykubGVuZ3RoO1xuXHRcdFx0dmFyIHdwcHJfY29ucyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfY29ucyk7XG5cdFx0XHR3cHByX2NvbnNba2V5XSA9ICcnO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfY29uczogd3Bwcl9jb25zIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2ltcG9ydFJldmlldycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGltcG9ydFJldmlldyhrZXkpIHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHR3cHByX29wdGlvbnM6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9vcHRpb25zLFxuXHRcdFx0XHR3cHByX3Byb3M6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9wcm9zLFxuXHRcdFx0XHR3cHByX2NvbnM6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9jb25zXG5cdFx0XHR9KTtcblx0XHRcdHRoaXMucHJvcHMuZWRpdFBvc3RTdGF0dXMoeyBlZGl0ZWQ6IHRydWUgfSk7XG5cdFx0XHR0aGlzLnByb3BzLnNldFN0YXRlKHsgaXNPcGVuOiBmYWxzZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdyZW5kZXInLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdFx0XHR2YXIgX3RoaXMzID0gdGhpcztcblxuXHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQbHVnaW5Qb3N0U3RhdHVzSW5mbyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdsYWJlbCcsXG5cdFx0XHRcdFx0XHR7IGh0bWxGb3I6ICdpcy10aGlzLWEtcmV2aWV3JyB9LFxuXHRcdFx0XHRcdFx0X18oJ0lzIHRoaXMgcG9zdCBhIHJldmlldz8nKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KEZvcm1Ub2dnbGUsIHtcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrID09PSAnWWVzJyA/IHRydWUgOiBmYWxzZSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVJldmlld1N0YXR1cyxcblx0XHRcdFx0XHRcdGlkOiAnaXMtdGhpcy1hLXJldmlldydcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLnN0YXRlLmN3cF9tZXRhX2JveF9jaGVjayA9PT0gJ1llcycgJiYgW3dwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ3dwLXByb2R1Y3QtcmV2aWV3J1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0X18oJ1dQIFByb2R1Y3QgUmV2aWV3Jylcblx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBsdWdpblNpZGViYXIsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogJ3dwLXByb2R1Y3QtcmV2aWV3Jyxcblx0XHRcdFx0XHRcdHRpdGxlOiBfXygnV1AgUHJvZHVjdCBSZXZpZXcnKVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogX18oJ1Byb2R1Y3QgRGV0YWlscycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1wcm9kdWN0LWRldGFpbHMnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogdHJ1ZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHdwcHJndXRlbi5pc1BybyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFkaW9JbWFnZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdSZXZpZXcgVGVtcGxhdGUnKSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IHRoaXMuc3RhdGUuX3dwcHJfcmV2aWV3X3RlbXBsYXRlLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGVmYXVsdCcpLFxuXHRcdFx0XHRcdFx0XHRcdHNyYzogd3Bwcmd1dGVuLnBhdGggKyAnL2Fzc2V0cy9pbWcvdGVtcGxhdGVzL2RlZmF1bHQucG5nJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlZmF1bHQnXG5cdFx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ1N0eWxlIDEnKSxcblx0XHRcdFx0XHRcdFx0XHRzcmM6IHdwcHJndXRlbi5wYXRoICsgJy9hc3NldHMvaW1nL3RlbXBsYXRlcy9zdHlsZTEucG5nJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMSdcblx0XHRcdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMicpLFxuXHRcdFx0XHRcdFx0XHRcdHNyYzogd3Bwcmd1dGVuLnBhdGggKyAnL2Fzc2V0cy9pbWcvdGVtcGxhdGVzL3N0eWxlMi5wbmcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnc3R5bGUyJ1xuXHRcdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VUZW1wbGF0ZVxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR0aGlzLnByb3BzLnBvc3RUeXBlICE9PSAnd3Bwcl9yZXZpZXcnICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IE5hbWUnKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHQnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy5zdGF0ZS5jd3BfcmV2X3Byb2R1Y3RfbmFtZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VSZXZpZXdUaXRsZVxuXHRcdFx0XHRcdFx0fSldLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1zaWRlYmFyLWJhc2UtY29udHJvbCcgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdsYWJlbCcsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdibG9ja3MtYmFzZS1jb250cm9sX19sYWJlbCcsICdmb3InOiAnaW5zcGVjdG9yLW1lZGlhLXVwbG9hZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRfXygnUHJvZHVjdCBJbWFnZScpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbWFnZScsXG5cdFx0XHRcdFx0XHRcdFx0aWQ6ICdpbnNwZWN0b3ItbWVkaWEtdXBsb2FkJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy5zdGF0ZS5jd3BfcmV2X3Byb2R1Y3RfaW1hZ2UsXG5cdFx0XHRcdFx0XHRcdFx0b25TZWxlY3Q6IHRoaXMub25DaGFuZ2VSZXZpZXdJbWFnZSxcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmMi5vcGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtfdGhpczMuc3RhdGUuY3dwX3Jldl9wcm9kdWN0X2ltYWdlICE9PSAnJyAmJiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNyYzogX3RoaXMzLnN0YXRlLmN3cF9yZXZfcHJvZHVjdF9pbWFnZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YWx0OiBfXygnUmV2aWV3IGltYWdlJylcblx0XHRcdFx0XHRcdFx0XHRcdH0pLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMuc2V0U3RhdGUoeyBjd3BfcmV2X3Byb2R1Y3RfaW1hZ2U6ICcnIH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHsgbWFyZ2luVG9wOiAnMTBweCcgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnUmVtb3ZlIEltYWdlJylcblx0XHRcdFx0XHRcdFx0XHRcdCldLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogb3Blbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZTogeyBtYXJnaW5Ub3A6ICcxMHB4JyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogX3RoaXMzLnN0YXRlLmN3cF9yZXZfcHJvZHVjdF9pbWFnZSA9PT0gJycgJiYgJ3dwcHJfaW1hZ2VfdXBsb2FkJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnQ2hvb3NlIG9yIFVwbG9hZCBhbiBJbWFnZScpXG5cdFx0XHRcdFx0XHRcdFx0XHQpXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IEltYWdlIENsaWNrJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLnN0YXRlLmN3cF9pbWFnZV9saW5rLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBXaG9sZSBJbWFnZScpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaW1hZ2UnXG5cdFx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ09wZW4gQWZmaWxpYXRlIExpbmsnKSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2xpbmsnXG5cdFx0XHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogdGhpcy5vbkNoYW5nZUltYWdlTGlua1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWxpbmtzLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfbGlua3MpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ0FmZmlsaWF0ZSBCdXR0b24gVGV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBrZXkgIT0gMSA/IGtleSA6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VSZXZpZXdBZmZpbGlhdGVUaXRsZShlLCBrZXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ0FmZmlsaWF0ZSBCdXR0b24gTGluaycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndXJsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX2xpbmtzW2tleV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsoZSwga2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0X09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9saW5rcykubGVuZ3RoIDwgMiAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrOiB0aGlzLmFkZEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBhbm90aGVyIGJ1dHRvbicpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IFByaWNlJyksXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuc3RhdGUuY3dwX3Jldl9wcmljZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VSZXZpZXdQcmljZVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IF9fKCdQcm9kdWN0IE9wdGlvbnMnKSxcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3AtcHJvZHVjdC1yZXZpZXctcHJvZHVjdC1vcHRpb25zJyxcblx0XHRcdFx0XHRcdFx0aW5pdGlhbE9wZW46IGZhbHNlXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cHByLXJldmlldy1vcHRpb25zLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfb3B0aW9ucykubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LW9wdGlvbnMtaXRlbScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnZm9yJzogJ3dwcHItb3B0aW9uLWl0ZW0tJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRrZXlcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZDogJ3dwcHItb3B0aW9uLWl0ZW0tJyArIGtleSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3Bwci10ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdPcHRpb24nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX29wdGlvbnNba2V5XS5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VPcHRpb25UZXh0KGUsIGtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cHByLXRleHQgd3Bwci1vcHRpb24tbnVtYmVyJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCcwJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4OiAxMDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBfdGhpczMuc3RhdGUud3Bwcl9vcHRpb25zW2tleV0udmFsdWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZU9wdGlvbk51bWJlcihlLCBrZXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX29wdGlvbnMpLmxlbmd0aCA8IHdwcHJndXRlbi5sZW5ndGggJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogdGhpcy5hZGRPcHRpb25cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF9fKCdBZGQgYW5vdGhlciBvcHRpb24nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBfXygnUHJvIEZlYXR1cmVzJyksXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwLXByb2R1Y3QtcmV2aWV3LXByb2R1Y3QtcHJvcycsXG5cdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctcHJvLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfcHJvcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LXByby1pdGVtJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnbGFiZWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7ICdmb3InOiAnd3Bwci1wcm8taXRlbS0nICsga2V5IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlSW50KGtleSkgKyAxXG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6ICd3cHByLXByby1pdGVtLScgKyBrZXksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwcHItdGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnT3B0aW9uJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBfdGhpczMuc3RhdGUud3Bwcl9wcm9zW2tleV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZVByb1RleHQoZSwga2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0X09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9wcm9zKS5sZW5ndGggPCB3cHByZ3V0ZW4ubGVuZ3RoICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0aXNMYXJnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IHRoaXMuYWRkUHJvXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRfXygnQWRkIGFub3RoZXIgb3B0aW9uJylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogX18oJ0NvbiBGZWF0dXJlcycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1wcm9kdWN0LWNvbnMnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWNvbi1saXN0JyB9LFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX2NvbnMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cHByLXJldmlldy1jb24taXRlbScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnZm9yJzogJ3dwcHItY29uLWl0ZW0tJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZUludChrZXkpICsgMVxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiAnd3Bwci1jb24taXRlbS0nICsga2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cHByLXRleHQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ09wdGlvbicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogX3RoaXMzLnN0YXRlLndwcHJfY29uc1trZXldLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VDb25UZXh0KGUsIGtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfY29ucykubGVuZ3RoIDwgd3Bwcmd1dGVuLmxlbmd0aCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrOiB0aGlzLmFkZENvblxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBhbm90aGVyIG9wdGlvbicpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IF9fKCdTY2hlbWEgRGV0YWlscycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1zY2hlbWEnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LXNjaGVtYScgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ1JldmlldyBUeXBlJyksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuc3RhdGUud3Bwcl9yZXZpZXdfdHlwZSxcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB3cHByZ3V0ZW4uc2NoZW1hX3R5cGVzLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlU2NoZW1hVHlwZVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctc2NoZW1hLWZpZWxkcycgfSxcblx0XHRcdFx0XHRcdFx0ISF0aGlzLnN0YXRlLnNjaGVtYV91cmwgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdEV4dGVybmFsTGluayxcblx0XHRcdFx0XHRcdFx0XHR7IGhyZWY6IHRoaXMuc3RhdGUuc2NoZW1hX3VybCwgdGl0bGU6IF9fKCdWaWV3IFNjaGVtYSBEZXNjcmlwdGlvbiAnKSB9LFxuXHRcdFx0XHRcdFx0XHRcdF9fKCdWaWV3IFNjaGVtYSBEZXNjcmlwdGlvbiAnKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JHZhbHVlcyh0aGlzLnN0YXRlLnNjaGVtYV9maWVsZHMpLm1hcChmdW5jdGlvbiAoZmllbGQsIGtleSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctc2NoZW1hLWZpZWxkJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnbGFiZWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7ICdmb3InOiAnd3Bwci1zY2hlbWEtZmllbGQtJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiAnd3Bwci1zY2hlbWEtZmllbGQtJyArIGtleSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3dwcHItc2NoZW1hLWZpZWxkLScgKyBmaWVsZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3Bwci10ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzW2ZpZWxkXSA/IF90aGlzMy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzW2ZpZWxkXSA6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VTY2hlbWFGaWVsZChlLCBmaWVsZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwcHJndXRlbi5pc1BybyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctaW1wb3J0LXJldmlldy1idXR0b24nIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0aXNQcmltYXJ5OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gX3RoaXMzLnByb3BzLnNldFN0YXRlKHsgaXNPcGVuOiB0cnVlIH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0X18oJ0ltcG9ydCBSZXZpZXcnKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHRoaXMucHJvcHMuaXNPcGVuID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRNb2RhbCxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBfXygnSW1wb3J0IFJldmlldycpLFxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWltcG9ydC1tb2RhbCcsXG5cdFx0XHRcdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U6IGZ1bmN0aW9uIG9uUmVxdWVzdENsb3NlKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5wcm9wcy5zZXRTdGF0ZSh7IGlzT3BlbjogZmFsc2UgfSk7XG5cdFx0XHRcdFx0XHRcdFx0fSB9LFxuXHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLnBvc3RzICYmIF9PYmplY3Qka2V5cyh0aGlzLnByb3BzLnBvc3RzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBfdGhpczMucHJvcHMucG9zdHNba2V5XS50aXRsZS5yYXcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY3dwX3BpdGVtX2luZm8nIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgJ2NsYXNzJzogJ2N3cF9waXRlbV9vcHRpb25zX2NvbnRlbnQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2g0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnT3B0aW9ucycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXMoX3RoaXMzLnByb3BzLnBvc3RzW2tleV0ud3Bwcl9kYXRhLndwcHJfb3B0aW9ucykubWFwKGZ1bmN0aW9uIChpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbGknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9vcHRpb25zW2ldLm5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1bCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnY2xhc3MnOiAnY3dwX3BpdGVtX29wdGlvbnNfcHJvcycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaDQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdQcm9zJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyhfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9wcm9zKS5tYXAoZnVuY3Rpb24gKGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90aGlzMy5wcm9wcy5wb3N0c1trZXldLndwcHJfZGF0YS53cHByX3Byb3NbaV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1bCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnY2xhc3MnOiAnY3dwX3BpdGVtX29wdGlvbnNfY29ucycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaDQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdDb25zJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyhfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9jb25zKS5tYXAoZnVuY3Rpb24gKGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90aGlzMy5wcm9wcy5wb3N0c1trZXldLndwcHJfZGF0YS53cHByX2NvbnNbaV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5pbXBvcnRSZXZpZXcoa2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdJbXBvcnQgUmV2aWV3Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpIDogbnVsbFxuXHRcdFx0XHRcdClcblx0XHRcdFx0KV1cblx0XHRcdCk7XG5cdFx0fVxuXHR9XSwgW3tcblx0XHRrZXk6ICdnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBzdGF0ZSkge1xuXHRcdFx0aWYgKChuZXh0UHJvcHMuaXNQdWJsaXNoaW5nIHx8IG5leHRQcm9wcy5pc1NhdmluZykgJiYgIW5leHRQcm9wcy5pc0F1dG9TYXZpbmcpIHtcblx0XHRcdFx0d3AuYXBpUmVxdWVzdCh7IHBhdGg6ICcvd3Bwci92MS91cGRhdGUtcmV2aWV3P2lkPScgKyBuZXh0UHJvcHMucG9zdElkICsgJyZwb3N0VHlwZT0nICsgbmV4dFByb3BzLnBvc3RUeXBlLCBtZXRob2Q6ICdQT1NUJywgZGF0YTogc3RhdGUgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9LCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XSk7XG5cblx0cmV0dXJuIFdQX1Byb2R1Y3RfUmV2aWV3O1xufShDb21wb25lbnQpO1xuXG52YXIgV1BQUiA9IGNvbXBvc2UoW3dpdGhTZWxlY3QoZnVuY3Rpb24gKHNlbGVjdCwgX3JlZjMpIHtcblx0dmFyIGZvcmNlSXNTYXZpbmcgPSBfcmVmMy5mb3JjZUlzU2F2aW5nO1xuXG5cdHZhciBfc2VsZWN0MiA9IHNlbGVjdCgnY29yZS9lZGl0b3InKSxcblx0ICAgIGdldEN1cnJlbnRQb3N0SWQgPSBfc2VsZWN0Mi5nZXRDdXJyZW50UG9zdElkLFxuXHQgICAgaXNTYXZpbmdQb3N0ID0gX3NlbGVjdDIuaXNTYXZpbmdQb3N0LFxuXHQgICAgaXNQdWJsaXNoaW5nUG9zdCA9IF9zZWxlY3QyLmlzUHVibGlzaGluZ1Bvc3QsXG5cdCAgICBpc0F1dG9zYXZpbmdQb3N0ID0gX3NlbGVjdDIuaXNBdXRvc2F2aW5nUG9zdCxcblx0ICAgIGdldEN1cnJlbnRQb3N0VHlwZSA9IF9zZWxlY3QyLmdldEN1cnJlbnRQb3N0VHlwZTtcblxuXHR2YXIgbGF0ZXN0UG9zdHNRdWVyeSA9IHBpY2tCeSh7XG5cdFx0cGVyX3BhZ2U6IDEwMCxcblx0XHRtZXRhX2tleTogJ2N3cF9tZXRhX2JveF9jaGVjaycsXG5cdFx0bWV0YV92YWx1ZTogJ1llcydcblx0fSwgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0cmV0dXJuICFpc1VuZGVmaW5lZCh2YWx1ZSk7XG5cdH0pO1xuXHRyZXR1cm4ge1xuXHRcdHBvc3RJZDogZ2V0Q3VycmVudFBvc3RJZCgpLFxuXHRcdHBvc3RUeXBlOiBnZXRDdXJyZW50UG9zdFR5cGUoKSxcblx0XHRwb3N0czogc2VsZWN0KCdjb3JlJykuZ2V0RW50aXR5UmVjb3JkcygncG9zdFR5cGUnLCAncG9zdCcsIGxhdGVzdFBvc3RzUXVlcnkpLFxuXHRcdGlzU2F2aW5nOiBmb3JjZUlzU2F2aW5nIHx8IGlzU2F2aW5nUG9zdCgpLFxuXHRcdGlzQXV0b1NhdmluZzogaXNBdXRvc2F2aW5nUG9zdCgpLFxuXHRcdGlzUHVibGlzaGluZzogaXNQdWJsaXNoaW5nUG9zdCgpXG5cdH07XG59KSwgd2l0aFN0YXRlKHtcblx0aXNPcGVuOiBmYWxzZVxufSksIHdpdGhEaXNwYXRjaChmdW5jdGlvbiAoZGlzcGF0Y2gpIHtcblx0cmV0dXJuIHtcblx0XHRvcGVuUmV2aWV3U2lkZWJhcjogZnVuY3Rpb24gb3BlblJldmlld1NpZGViYXIoKSB7XG5cdFx0XHRyZXR1cm4gZGlzcGF0Y2goJ2NvcmUvZWRpdC1wb3N0Jykub3BlbkdlbmVyYWxTaWRlYmFyKCd3cC1wcm9kdWN0LXJldmlldy93cC1wcm9kdWN0LXJldmlldycpO1xuXHRcdH0sXG5cdFx0ZWRpdFBvc3RTdGF0dXM6IGRpc3BhdGNoKCdjb3JlL2VkaXRvcicpLmVkaXRQb3N0XG5cdH07XG59KV0pKFdQX1Byb2R1Y3RfUmV2aWV3KTtcblxucmVnaXN0ZXJQbHVnaW4oJ3dwLXByb2R1Y3QtcmV2aWV3Jywge1xuXHRpY29uOiAnc3Rhci1lbXB0eScsXG5cdHJlbmRlcjogV1BQUlxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvc2lkZWJhci5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n");
412
 
413
  /***/ }),
414
  /* 57 */
408
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
409
 
410
  "use strict";
411
+ eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator__ = __webpack_require__(73);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__style_scss__ = __webpack_require__(124);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__utils__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__radio_image_control___ = __webpack_require__(126);\n\n\n\n\n\n\n\n\n\n\n/**\r\n * Internal dependencies\r\n */\n\n\n\n\n/**\r\n * WordPress dependencies\r\n */\nvar __ = wp.i18n.__;\nvar _lodash = lodash,\n isUndefined = _lodash.isUndefined,\n pickBy = _lodash.pickBy;\nvar registerPlugin = wp.plugins.registerPlugin;\nvar MediaUpload = wp.editor.MediaUpload;\nvar _wp$data = wp.data,\n select = _wp$data.select,\n withSelect = _wp$data.withSelect,\n withDispatch = _wp$data.withDispatch;\nvar _wp$editPost = wp.editPost,\n PluginPostStatusInfo = _wp$editPost.PluginPostStatusInfo,\n PluginSidebarMoreMenuItem = _wp$editPost.PluginSidebarMoreMenuItem,\n PluginSidebar = _wp$editPost.PluginSidebar;\nvar _wp$element = wp.element,\n Component = _wp$element.Component,\n Fragment = _wp$element.Fragment;\nvar _wp$compose = wp.compose,\n withState = _wp$compose.withState,\n compose = _wp$compose.compose;\nvar _wp$components = wp.components,\n Button = _wp$components.Button,\n FormToggle = _wp$components.FormToggle,\n Modal = _wp$components.Modal,\n PanelBody = _wp$components.PanelBody,\n SelectControl = _wp$components.SelectControl,\n TextControl = _wp$components.TextControl,\n ExternalLink = _wp$components.ExternalLink;\n\nvar WP_Product_Review = function (_Component) {\n\t__WEBPACK_IMPORTED_MODULE_9_babel_runtime_helpers_inherits___default()(WP_Product_Review, _Component);\n\n\tfunction WP_Product_Review() {\n\t\t__WEBPACK_IMPORTED_MODULE_6_babel_runtime_helpers_classCallCheck___default()(this, WP_Product_Review);\n\n\t\tvar _this = __WEBPACK_IMPORTED_MODULE_8_babel_runtime_helpers_possibleConstructorReturn___default()(this, (WP_Product_Review.__proto__ || __WEBPACK_IMPORTED_MODULE_5_babel_runtime_core_js_object_get_prototype_of___default()(WP_Product_Review)).apply(this, arguments));\n\n\t\t_this.toggleReviewStatus = _this.toggleReviewStatus.bind(_this);\n\t\t_this.onChangeTemplate = _this.onChangeTemplate.bind(_this);\n\t\t_this.onChangeReviewTitle = _this.onChangeReviewTitle.bind(_this);\n\t\t_this.onChangeReviewImage = _this.onChangeReviewImage.bind(_this);\n\t\t_this.onChangeImageLink = _this.onChangeImageLink.bind(_this);\n\t\t_this.onChangeReviewAffiliateTitle = _this.onChangeReviewAffiliateTitle.bind(_this);\n\t\t_this.onChangeReviewAffiliateLink = _this.onChangeReviewAffiliateLink.bind(_this);\n\t\t_this.addButton = _this.addButton.bind(_this);\n\t\t_this.onChangeReviewPrice = _this.onChangeReviewPrice.bind(_this);\n\t\t_this.onChangeOptionText = _this.onChangeOptionText.bind(_this);\n\t\t_this.onChangeOptionNumber = _this.onChangeOptionNumber.bind(_this);\n\t\t_this.onChangeSchemaType = _this.onChangeSchemaType.bind(_this);\n\t\t_this.onChangeSchemaField = _this.onChangeSchemaField.bind(_this);\n\t\t_this.addOption = _this.addOption.bind(_this);\n\t\t_this.onChangeProText = _this.onChangeProText.bind(_this);\n\t\t_this.addPro = _this.addPro.bind(_this);\n\t\t_this.onChangeConText = _this.onChangeConText.bind(_this);\n\t\t_this.addCon = _this.addCon.bind(_this);\n\t\t_this.importReview = _this.importReview.bind(_this);\n\n\t\t_this.state = {\n\t\t\tcwp_meta_box_check: 'No',\n\t\t\tcwp_rev_product_name: '',\n\t\t\t_wppr_review_template: 'default',\n\t\t\tcwp_rev_product_image: '',\n\t\t\tcwp_image_link: 'image',\n\t\t\twppr_links: {\n\t\t\t\t'': ''\n\t\t\t},\n\t\t\tcwp_rev_price: '',\n\t\t\twppr_options: {\n\t\t\t\t1: {\n\t\t\t\t\tname: '',\n\t\t\t\t\tvalue: 0\n\t\t\t\t}\n\t\t\t},\n\t\t\twppr_pros: {\n\t\t\t\t0: ''\n\t\t\t},\n\t\t\twppr_cons: {\n\t\t\t\t0: ''\n\t\t\t},\n\t\t\twppr_review_type: 'Product',\n\t\t\twppr_review_custom_fields: {},\n\t\t\tschema_fields: {},\n\t\t\tschema_url: ''\n\t\t};\n\t\treturn _this;\n\t}\n\n\t__WEBPACK_IMPORTED_MODULE_7_babel_runtime_helpers_createClass___default()(WP_Product_Review, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function () {\n\t\t\tvar _ref = __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_asyncToGenerator___default()( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default.a.mark(function _callee() {\n\t\t\t\tvar _select, getCurrentPostId, getCurrentPostType, post, data;\n\n\t\t\t\treturn __WEBPACK_IMPORTED_MODULE_2_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {\n\t\t\t\t\twhile (1) {\n\t\t\t\t\t\tswitch (_context.prev = _context.next) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t_select = select('core/editor'), getCurrentPostId = _select.getCurrentPostId, getCurrentPostType = _select.getCurrentPostType;\n\t\t\t\t\t\t\t\t_context.next = 3;\n\t\t\t\t\t\t\t\treturn select('core').getEntityRecord('postType', getCurrentPostType(), getCurrentPostId());\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tpost = _context.sent;\n\n\t\t\t\t\t\t\t\tif (!(undefined !== post && post.wppr_data)) {\n\t\t\t\t\t\t\t\t\t_context.next = 11;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (post.wppr_data.wppr_links && post.wppr_data.wppr_links.length < 1) {\n\t\t\t\t\t\t\t\t\tpost.wppr_data.wppr_links[''] = '';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setState(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, post.wppr_data));\n\n\t\t\t\t\t\t\t\t_context.next = 9;\n\t\t\t\t\t\t\t\treturn wp.apiRequest({ path: '/wppr/v1/schema-fields?type=' + this.state.wppr_review_type });\n\n\t\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\t\tdata = _context.sent;\n\n\t\t\t\t\t\t\t\tthis.setState({ schema_fields: data.fields, schema_url: data.url });\n\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\tcase 'end':\n\t\t\t\t\t\t\t\treturn _context.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, _callee, this);\n\t\t\t}));\n\n\t\t\tfunction componentDidMount() {\n\t\t\t\treturn _ref.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn componentDidMount;\n\t\t}()\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (this.state.cwp_meta_box_check !== prevState.cwp_meta_box_check && this.state.cwp_meta_box_check === 'Yes') {\n\t\t\t\tthis.props.openReviewSidebar();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'toggleReviewStatus',\n\t\tvalue: function toggleReviewStatus() {\n\t\t\tthis.setState({ cwp_meta_box_check: this.state.cwp_meta_box_check === 'Yes' ? 'No' : 'Yes' });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeTemplate',\n\t\tvalue: function onChangeTemplate(value) {\n\t\t\tthis.setState({ _wppr_review_template: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewTitle',\n\t\tvalue: function onChangeReviewTitle(value) {\n\t\t\tthis.setState({ cwp_rev_product_name: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewImage',\n\t\tvalue: function onChangeReviewImage(value) {\n\t\t\tif (value.url !== undefined && value.url !== '') {\n\t\t\t\tthis.setState({ cwp_rev_product_image: value.url });\n\t\t\t} else if (value.id !== undefined) {\n\t\t\t\tthis.setState({ cwp_rev_product_image: value.id });\n\t\t\t}\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeImageLink',\n\t\tvalue: function onChangeImageLink(value) {\n\t\t\tthis.setState({ cwp_image_link: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewAffiliateTitle',\n\t\tvalue: function onChangeReviewAffiliateTitle(e, key) {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\tif (__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).length === 2) {\n\t\t\t\tif (e === __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[0] || e === __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[1]) {\n\t\t\t\t\te = e + ' ';\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(wppr_links)[0] === key) {\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_11__utils__[\"a\" /* renameKey */])(wppr_links, key, e);\n\t\t\t\twppr_links = Object(__WEBPACK_IMPORTED_MODULE_11__utils__[\"b\" /* reverseObject */])(wppr_links);\n\t\t\t} else {\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_11__utils__[\"a\" /* renameKey */])(wppr_links, key, e);\n\t\t\t}\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewAffiliateLink',\n\t\tvalue: function onChangeReviewAffiliateLink(e, key) {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\twppr_links[key] = e;\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addButton',\n\t\tvalue: function addButton() {\n\t\t\tvar wppr_links = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_links);\n\t\t\twppr_links['Buy Now'] = '';\n\t\t\tthis.setState({ wppr_links: wppr_links });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeReviewPrice',\n\t\tvalue: function onChangeReviewPrice(value) {\n\t\t\tthis.setState({ cwp_rev_price: value });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeOptionText',\n\t\tvalue: function onChangeOptionText(e, key) {\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\twppr_options[key]['name'] = e;\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeOptionNumber',\n\t\tvalue: function onChangeOptionNumber(e, key) {\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\tif (e === '') e = 0;\n\t\t\twppr_options[key]['value'] = e;\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeSchemaType',\n\t\tvalue: function onChangeSchemaType(e, key) {\n\t\t\tvar _this2 = this;\n\n\t\t\tif (e === '') return;\n\n\t\t\t// remove existing fields first.\n\t\t\tthis.setState({ schema_fields: {}, schema_url: '' });\n\n\t\t\twp.apiRequest({ path: '/wppr/v1/schema-fields?type=' + e }).then(function (data) {\n\t\t\t\t_this2.setState({ schema_fields: data.fields, schema_url: data.url, wppr_review_type: e });\n\t\t\t\t_this2.props.editPostStatus({ edited: true });\n\t\t\t}, function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'onChangeSchemaField',\n\t\tvalue: function onChangeSchemaField(e, field) {\n\t\t\tvar fields = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_review_custom_fields);\n\t\t\tvar schema_fields = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.schema_fields);\n\t\t\tfields[field] = e;\n\t\t\tthis.setState({ wppr_review_custom_fields: fields });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addOption',\n\t\tvalue: function addOption() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).length + 1;\n\t\t\tvar wppr_options = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_options);\n\t\t\twppr_options[key] = {\n\t\t\t\tname: '',\n\t\t\t\tvalue: 0\n\t\t\t};\n\t\t\tthis.setState({ wppr_options: wppr_options });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeProText',\n\t\tvalue: function onChangeProText(e, key) {\n\t\t\tvar wppr_pros = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_pros);\n\t\t\twppr_pros[key] = e;\n\t\t\tthis.setState({ wppr_pros: wppr_pros });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addPro',\n\t\tvalue: function addPro() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).length;\n\t\t\tvar wppr_pros = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_pros);\n\t\t\twppr_pros[key] = '';\n\t\t\tthis.setState({ wppr_pros: wppr_pros });\n\t\t}\n\t}, {\n\t\tkey: 'onChangeConText',\n\t\tvalue: function onChangeConText(e, key) {\n\t\t\tvar wppr_cons = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_cons);\n\t\t\twppr_cons[key] = e;\n\t\t\tthis.setState({ wppr_cons: wppr_cons });\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t}\n\t}, {\n\t\tkey: 'addCon',\n\t\tvalue: function addCon() {\n\t\t\tvar key = __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).length;\n\t\t\tvar wppr_cons = __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_extends___default()({}, this.state.wppr_cons);\n\t\t\twppr_cons[key] = '';\n\t\t\tthis.setState({ wppr_cons: wppr_cons });\n\t\t}\n\t}, {\n\t\tkey: 'importReview',\n\t\tvalue: function importReview(key) {\n\t\t\tthis.setState({\n\t\t\t\twppr_options: this.props.posts[key].wppr_data.wppr_options,\n\t\t\t\twppr_pros: this.props.posts[key].wppr_data.wppr_pros,\n\t\t\t\twppr_cons: this.props.posts[key].wppr_data.wppr_cons\n\t\t\t});\n\t\t\tthis.props.editPostStatus({ edited: true });\n\t\t\tthis.props.setState({ isOpen: false });\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar _this3 = this;\n\n\t\t\treturn wp.element.createElement(\n\t\t\t\tFragment,\n\t\t\t\tnull,\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPluginPostStatusInfo,\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'label',\n\t\t\t\t\t\t{ htmlFor: 'is-this-a-review' },\n\t\t\t\t\t\t__('Is this post a review?')\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(FormToggle, {\n\t\t\t\t\t\tchecked: this.state.cwp_meta_box_check === 'Yes' ? true : false,\n\t\t\t\t\t\tonChange: this.toggleReviewStatus,\n\t\t\t\t\t\tid: 'is-this-a-review'\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tthis.state.cwp_meta_box_check === 'Yes' && [wp.element.createElement(\n\t\t\t\t\tPluginSidebarMoreMenuItem,\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: 'wp-product-review'\n\t\t\t\t\t},\n\t\t\t\t\t__('WP Product Review')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\tPluginSidebar,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'wp-product-review',\n\t\t\t\t\t\ttitle: __('WP Product Review')\n\t\t\t\t\t},\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Product Details'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-details',\n\t\t\t\t\t\t\tinitialOpen: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\twpprguten.isPro && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_12__radio_image_control___[\"a\" /* default */], {\n\t\t\t\t\t\t\tlabel: __('Review Template'),\n\t\t\t\t\t\t\tselected: this.state._wppr_review_template,\n\t\t\t\t\t\t\toptions: [{\n\t\t\t\t\t\t\t\tlabel: __('Default'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/default.png',\n\t\t\t\t\t\t\t\tvalue: 'default'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Style 1'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/style1.png',\n\t\t\t\t\t\t\t\tvalue: 'style1'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Style 2'),\n\t\t\t\t\t\t\t\tsrc: wpprguten.path + '/assets/img/templates/style2.png',\n\t\t\t\t\t\t\t\tvalue: 'style2'\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tonChange: this.onChangeTemplate\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.props.postType !== 'wppr_review' && [wp.element.createElement(TextControl, {\n\t\t\t\t\t\t\tlabel: __('Product Name'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tvalue: this.state.cwp_rev_product_name,\n\t\t\t\t\t\t\tonChange: this.onChangeReviewTitle\n\t\t\t\t\t\t})],\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wp-product-review-sidebar-base-control' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t{ className: 'blocks-base-control__label', 'for': 'inspector-media-upload' },\n\t\t\t\t\t\t\t\t__('Product Image')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(MediaUpload, {\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\tid: 'inspector-media-upload',\n\t\t\t\t\t\t\t\tvalue: this.state.cwp_rev_product_image,\n\t\t\t\t\t\t\t\tonSelect: this.onChangeReviewImage,\n\t\t\t\t\t\t\t\trender: function render(_ref2) {\n\t\t\t\t\t\t\t\t\tvar open = _ref2.open;\n\t\t\t\t\t\t\t\t\treturn [_this3.state.cwp_rev_product_image !== '' && [wp.element.createElement('img', {\n\t\t\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\t\t\tsrc: _this3.state.cwp_rev_product_image,\n\t\t\t\t\t\t\t\t\t\talt: __('Review image')\n\t\t\t\t\t\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\t\treturn _this3.setState({ cwp_rev_product_image: '' });\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' }\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t__('Remove Image')\n\t\t\t\t\t\t\t\t\t)], wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\tonClick: open,\n\t\t\t\t\t\t\t\t\t\t\tstyle: { marginTop: '10px' },\n\t\t\t\t\t\t\t\t\t\t\tclassName: _this3.state.cwp_rev_product_image === '' && 'wppr_image_upload'\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t__('Choose or Upload an Image')\n\t\t\t\t\t\t\t\t\t)];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\t\tlabel: __('Product Image Click'),\n\t\t\t\t\t\t\tvalue: this.state.cwp_image_link,\n\t\t\t\t\t\t\toptions: [{\n\t\t\t\t\t\t\t\tlabel: __('Show Whole Image'),\n\t\t\t\t\t\t\t\tvalue: 'image'\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tlabel: __('Open Affiliate Link'),\n\t\t\t\t\t\t\t\tvalue: 'link'\n\t\t\t\t\t\t\t}],\n\t\t\t\t\t\t\tonChange: this.onChangeImageLink\n\t\t\t\t\t\t}),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-links-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\tFragment,\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\tlabel: __('Affiliate Button Text'),\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tvalue: key != 1 ? key : '',\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeReviewAffiliateTitle(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\tlabel: __('Affiliate Button Link'),\n\t\t\t\t\t\t\t\t\t\ttype: 'url',\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_links[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeReviewAffiliateLink(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_links).length < 2 && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addButton\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another button')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\tlabel: __('Product Price'),\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\tvalue: this.state.cwp_rev_price,\n\t\t\t\t\t\t\tonChange: this.onChangeReviewPrice\n\t\t\t\t\t\t})\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Product Options'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-options',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-options-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-options-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-option-item-' + key },\n\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-option-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_options[key].name,\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeOptionText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text wppr-option-number',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('0'),\n\t\t\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_options[key].value,\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeOptionNumber(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_options).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addOption\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Pro Features'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-pros',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-pro-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-pro-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-pro-item-' + key },\n\t\t\t\t\t\t\t\t\t\tparseInt(key) + 1\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-pro-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_pros[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeProText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_pros).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addPro\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Con Features'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-product-cons',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-con-list' },\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-con-item' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-con-item-' + key },\n\t\t\t\t\t\t\t\t\t\tparseInt(key) + 1\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-con-item-' + key,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tplaceholder: __('Option'),\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_cons[key],\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeConText(e, key);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.state.wppr_cons).length < wpprguten.length && wp.element.createElement(\n\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\tonClick: this.addCon\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t__('Add another option')\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twpprguten.schema_types && wpprguten.schema_types.length > 0 && wp.element.createElement(\n\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: __('Schema Details'),\n\t\t\t\t\t\t\tclassName: 'wp-product-review-schema',\n\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-schema' },\n\t\t\t\t\t\t\twp.element.createElement(SelectControl, {\n\t\t\t\t\t\t\t\tlabel: __('Review Type'),\n\t\t\t\t\t\t\t\tvalue: this.state.wppr_review_type,\n\t\t\t\t\t\t\t\toptions: wpprguten.schema_types,\n\t\t\t\t\t\t\t\tonChange: this.onChangeSchemaType\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'wppr-review-schema-fields' },\n\t\t\t\t\t\t\t!!this.state.schema_url && wp.element.createElement(\n\t\t\t\t\t\t\t\tExternalLink,\n\t\t\t\t\t\t\t\t{ href: this.state.schema_url, title: __('View Schema Description ') },\n\t\t\t\t\t\t\t\t__('View Schema Description ')\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_object_values___default()(this.state.schema_fields).map(function (field, key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'wppr-review-schema-field' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'label',\n\t\t\t\t\t\t\t\t\t\t{ 'for': 'wppr-schema-field-' + key },\n\t\t\t\t\t\t\t\t\t\tfield\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\twp.element.createElement(TextControl, {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tid: 'wppr-schema-field-' + key,\n\t\t\t\t\t\t\t\t\t\tname: 'wppr-schema-field-' + field,\n\t\t\t\t\t\t\t\t\t\tclassName: 'wppr-text',\n\t\t\t\t\t\t\t\t\t\tvalue: _this3.state.wppr_review_custom_fields[field] ? _this3.state.wppr_review_custom_fields[field] : '',\n\t\t\t\t\t\t\t\t\t\tonChange: function onChange(e) {\n\t\t\t\t\t\t\t\t\t\t\treturn _this3.onChangeSchemaField(e, field);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\twpprguten.isPro && wp.element.createElement(\n\t\t\t\t\t\t'div',\n\t\t\t\t\t\t{ className: 'wppr-review-import-review-button' },\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\tisPrimary: true,\n\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\treturn _this3.props.setState({ isOpen: true });\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__('Import Review')\n\t\t\t\t\t\t),\n\t\t\t\t\t\tthis.props.isOpen ? wp.element.createElement(\n\t\t\t\t\t\t\tModal,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: __('Import Review'),\n\t\t\t\t\t\t\t\tclassName: 'wppr-review-import-modal',\n\t\t\t\t\t\t\t\tonRequestClose: function onRequestClose() {\n\t\t\t\t\t\t\t\t\treturn _this3.props.setState({ isOpen: false });\n\t\t\t\t\t\t\t\t} },\n\t\t\t\t\t\t\tthis.props.posts && __WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(this.props.posts).map(function (key) {\n\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\tPanelBody,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttitle: _this3.props.posts[key].title.raw,\n\t\t\t\t\t\t\t\t\t\tinitialOpen: false\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t\t{ className: 'cwp_pitem_info' },\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_content' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Options')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_options).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_options[i].name\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_pros' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Pros')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_pros).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_pros[i]\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t\t\t\t\t\t{ 'class': 'cwp_pitem_options_cons' },\n\t\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t'h4',\n\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t__('Cons')\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t__WEBPACK_IMPORTED_MODULE_1_babel_runtime_core_js_object_keys___default()(_this3.props.posts[key].wppr_data.wppr_cons).map(function (i) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'li',\n\t\t\t\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_this3.props.posts[key].wppr_data.wppr_cons[i]\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\tButton,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\t\t\t\t\t\t\tonClick: function onClick() {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn _this3.importReview(key);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t__('Import Review')\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : null\n\t\t\t\t\t)\n\t\t\t\t)]\n\t\t\t);\n\t\t}\n\t}], [{\n\t\tkey: 'getDerivedStateFromProps',\n\t\tvalue: function getDerivedStateFromProps(nextProps, state) {\n\t\t\tif ((nextProps.isPublishing || nextProps.isSaving) && !nextProps.isAutoSaving) {\n\t\t\t\twp.apiRequest({ path: '/wppr/v1/update-review?id=' + nextProps.postId + '&postType=' + nextProps.postType, method: 'POST', data: state }).then(function (data) {\n\t\t\t\t\treturn data;\n\t\t\t\t}, function (err) {\n\t\t\t\t\treturn err;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn WP_Product_Review;\n}(Component);\n\nvar WPPR = compose([withSelect(function (select, _ref3) {\n\tvar forceIsSaving = _ref3.forceIsSaving;\n\n\tvar _select2 = select('core/editor'),\n\t getCurrentPostId = _select2.getCurrentPostId,\n\t isSavingPost = _select2.isSavingPost,\n\t isPublishingPost = _select2.isPublishingPost,\n\t isAutosavingPost = _select2.isAutosavingPost,\n\t getCurrentPostType = _select2.getCurrentPostType;\n\n\tvar latestPostsQuery = pickBy({\n\t\tper_page: 100,\n\t\tmeta_key: 'cwp_meta_box_check',\n\t\tmeta_value: 'Yes'\n\t}, function (value) {\n\t\treturn !isUndefined(value);\n\t});\n\treturn {\n\t\tpostId: getCurrentPostId(),\n\t\tpostType: getCurrentPostType(),\n\t\tposts: select('core').getEntityRecords('postType', 'post', latestPostsQuery),\n\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\tisAutoSaving: isAutosavingPost(),\n\t\tisPublishing: isPublishingPost()\n\t};\n}), withState({\n\tisOpen: false\n}), withDispatch(function (dispatch) {\n\treturn {\n\t\topenReviewSidebar: function openReviewSidebar() {\n\t\t\treturn dispatch('core/edit-post').openGeneralSidebar('wp-product-review/wp-product-review');\n\t\t},\n\t\teditPostStatus: dispatch('core/editor').editPost\n\t};\n})])(WP_Product_Review);\n\nregisterPlugin('wp-product-review', {\n\ticon: 'star-empty',\n\trender: WPPR\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc2lkZWJhci5qcz8yNWQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfT2JqZWN0JHZhbHVlcyBmcm9tICdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L3ZhbHVlcyc7XG5pbXBvcnQgX09iamVjdCRrZXlzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cyc7XG5pbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tICdiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3InO1xuaW1wb3J0IF9PYmplY3QkZ2V0UHJvdG90eXBlT2YgZnJvbSAnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJztcbmltcG9ydCBfY2xhc3NDYWxsQ2hlY2sgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJztcbmltcG9ydCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiBmcm9tICdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cyc7XG4vKipcclxuICogSW50ZXJuYWwgZGVwZW5kZW5jaWVzXHJcbiAqL1xuaW1wb3J0ICcuL3N0eWxlLnNjc3MnO1xuaW1wb3J0IHsgcmV2ZXJzZU9iamVjdCwgcmVuYW1lS2V5LCBpbkFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgUmFkaW9JbWFnZUNvbnRyb2wgZnJvbSAnLi9yYWRpby1pbWFnZS1jb250cm9sLyc7XG5cbi8qKlxyXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXHJcbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciBfbG9kYXNoID0gbG9kYXNoLFxuICAgIGlzVW5kZWZpbmVkID0gX2xvZGFzaC5pc1VuZGVmaW5lZCxcbiAgICBwaWNrQnkgPSBfbG9kYXNoLnBpY2tCeTtcbnZhciByZWdpc3RlclBsdWdpbiA9IHdwLnBsdWdpbnMucmVnaXN0ZXJQbHVnaW47XG52YXIgTWVkaWFVcGxvYWQgPSB3cC5lZGl0b3IuTWVkaWFVcGxvYWQ7XG52YXIgX3dwJGRhdGEgPSB3cC5kYXRhLFxuICAgIHNlbGVjdCA9IF93cCRkYXRhLnNlbGVjdCxcbiAgICB3aXRoU2VsZWN0ID0gX3dwJGRhdGEud2l0aFNlbGVjdCxcbiAgICB3aXRoRGlzcGF0Y2ggPSBfd3AkZGF0YS53aXRoRGlzcGF0Y2g7XG52YXIgX3dwJGVkaXRQb3N0ID0gd3AuZWRpdFBvc3QsXG4gICAgUGx1Z2luUG9zdFN0YXR1c0luZm8gPSBfd3AkZWRpdFBvc3QuUGx1Z2luUG9zdFN0YXR1c0luZm8sXG4gICAgUGx1Z2luU2lkZWJhck1vcmVNZW51SXRlbSA9IF93cCRlZGl0UG9zdC5QbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtLFxuICAgIFBsdWdpblNpZGViYXIgPSBfd3AkZWRpdFBvc3QuUGx1Z2luU2lkZWJhcjtcbnZhciBfd3AkZWxlbWVudCA9IHdwLmVsZW1lbnQsXG4gICAgQ29tcG9uZW50ID0gX3dwJGVsZW1lbnQuQ29tcG9uZW50LFxuICAgIEZyYWdtZW50ID0gX3dwJGVsZW1lbnQuRnJhZ21lbnQ7XG52YXIgX3dwJGNvbXBvc2UgPSB3cC5jb21wb3NlLFxuICAgIHdpdGhTdGF0ZSA9IF93cCRjb21wb3NlLndpdGhTdGF0ZSxcbiAgICBjb21wb3NlID0gX3dwJGNvbXBvc2UuY29tcG9zZTtcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgQnV0dG9uID0gX3dwJGNvbXBvbmVudHMuQnV0dG9uLFxuICAgIEZvcm1Ub2dnbGUgPSBfd3AkY29tcG9uZW50cy5Gb3JtVG9nZ2xlLFxuICAgIE1vZGFsID0gX3dwJGNvbXBvbmVudHMuTW9kYWwsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgRXh0ZXJuYWxMaW5rID0gX3dwJGNvbXBvbmVudHMuRXh0ZXJuYWxMaW5rO1xuXG52YXIgV1BfUHJvZHVjdF9SZXZpZXcgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHRfaW5oZXJpdHMoV1BfUHJvZHVjdF9SZXZpZXcsIF9Db21wb25lbnQpO1xuXG5cdGZ1bmN0aW9uIFdQX1Byb2R1Y3RfUmV2aWV3KCkge1xuXHRcdF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXUF9Qcm9kdWN0X1Jldmlldyk7XG5cblx0XHR2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoV1BfUHJvZHVjdF9SZXZpZXcuX19wcm90b19fIHx8IF9PYmplY3QkZ2V0UHJvdG90eXBlT2YoV1BfUHJvZHVjdF9SZXZpZXcpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcblxuXHRcdF90aGlzLnRvZ2dsZVJldmlld1N0YXR1cyA9IF90aGlzLnRvZ2dsZVJldmlld1N0YXR1cy5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVRlbXBsYXRlID0gX3RoaXMub25DaGFuZ2VUZW1wbGF0ZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVJldmlld1RpdGxlID0gX3RoaXMub25DaGFuZ2VSZXZpZXdUaXRsZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVJldmlld0ltYWdlID0gX3RoaXMub25DaGFuZ2VSZXZpZXdJbWFnZS5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZUltYWdlTGluayA9IF90aGlzLm9uQ2hhbmdlSW1hZ2VMaW5rLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlVGl0bGUgPSBfdGhpcy5vbkNoYW5nZVJldmlld0FmZmlsaWF0ZVRpdGxlLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlTGluayA9IF90aGlzLm9uQ2hhbmdlUmV2aWV3QWZmaWxpYXRlTGluay5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5hZGRCdXR0b24gPSBfdGhpcy5hZGRCdXR0b24uYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VSZXZpZXdQcmljZSA9IF90aGlzLm9uQ2hhbmdlUmV2aWV3UHJpY2UuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VPcHRpb25UZXh0ID0gX3RoaXMub25DaGFuZ2VPcHRpb25UZXh0LmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlT3B0aW9uTnVtYmVyID0gX3RoaXMub25DaGFuZ2VPcHRpb25OdW1iZXIuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMub25DaGFuZ2VTY2hlbWFUeXBlID0gX3RoaXMub25DaGFuZ2VTY2hlbWFUeXBlLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlU2NoZW1hRmllbGQgPSBfdGhpcy5vbkNoYW5nZVNjaGVtYUZpZWxkLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLmFkZE9wdGlvbiA9IF90aGlzLmFkZE9wdGlvbi5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5vbkNoYW5nZVByb1RleHQgPSBfdGhpcy5vbkNoYW5nZVByb1RleHQuYmluZChfdGhpcyk7XG5cdFx0X3RoaXMuYWRkUHJvID0gX3RoaXMuYWRkUHJvLmJpbmQoX3RoaXMpO1xuXHRcdF90aGlzLm9uQ2hhbmdlQ29uVGV4dCA9IF90aGlzLm9uQ2hhbmdlQ29uVGV4dC5iaW5kKF90aGlzKTtcblx0XHRfdGhpcy5hZGRDb24gPSBfdGhpcy5hZGRDb24uYmluZChfdGhpcyk7XG5cdFx0X3RoaXMuaW1wb3J0UmV2aWV3ID0gX3RoaXMuaW1wb3J0UmV2aWV3LmJpbmQoX3RoaXMpO1xuXG5cdFx0X3RoaXMuc3RhdGUgPSB7XG5cdFx0XHRjd3BfbWV0YV9ib3hfY2hlY2s6ICdObycsXG5cdFx0XHRjd3BfcmV2X3Byb2R1Y3RfbmFtZTogJycsXG5cdFx0XHRfd3Bwcl9yZXZpZXdfdGVtcGxhdGU6ICdkZWZhdWx0Jyxcblx0XHRcdGN3cF9yZXZfcHJvZHVjdF9pbWFnZTogJycsXG5cdFx0XHRjd3BfaW1hZ2VfbGluazogJ2ltYWdlJyxcblx0XHRcdHdwcHJfbGlua3M6IHtcblx0XHRcdFx0Jyc6ICcnXG5cdFx0XHR9LFxuXHRcdFx0Y3dwX3Jldl9wcmljZTogJycsXG5cdFx0XHR3cHByX29wdGlvbnM6IHtcblx0XHRcdFx0MToge1xuXHRcdFx0XHRcdG5hbWU6ICcnLFxuXHRcdFx0XHRcdHZhbHVlOiAwXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR3cHByX3Byb3M6IHtcblx0XHRcdFx0MDogJydcblx0XHRcdH0sXG5cdFx0XHR3cHByX2NvbnM6IHtcblx0XHRcdFx0MDogJydcblx0XHRcdH0sXG5cdFx0XHR3cHByX3Jldmlld190eXBlOiAnUHJvZHVjdCcsXG5cdFx0XHR3cHByX3Jldmlld19jdXN0b21fZmllbGRzOiB7fSxcblx0XHRcdHNjaGVtYV9maWVsZHM6IHt9LFxuXHRcdFx0c2NoZW1hX3VybDogJydcblx0XHR9O1xuXHRcdHJldHVybiBfdGhpcztcblx0fVxuXG5cdF9jcmVhdGVDbGFzcyhXUF9Qcm9kdWN0X1JldmlldywgW3tcblx0XHRrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHtcblx0XHRcdFx0dmFyIF9zZWxlY3QsIGdldEN1cnJlbnRQb3N0SWQsIGdldEN1cnJlbnRQb3N0VHlwZSwgcG9zdCwgZGF0YTtcblxuXHRcdFx0XHRyZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG5cdFx0XHRcdFx0d2hpbGUgKDEpIHtcblx0XHRcdFx0XHRcdHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcblx0XHRcdFx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdFx0XHRcdF9zZWxlY3QgPSBzZWxlY3QoJ2NvcmUvZWRpdG9yJyksIGdldEN1cnJlbnRQb3N0SWQgPSBfc2VsZWN0LmdldEN1cnJlbnRQb3N0SWQsIGdldEN1cnJlbnRQb3N0VHlwZSA9IF9zZWxlY3QuZ2V0Q3VycmVudFBvc3RUeXBlO1xuXHRcdFx0XHRcdFx0XHRcdF9jb250ZXh0Lm5leHQgPSAzO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZWxlY3QoJ2NvcmUnKS5nZXRFbnRpdHlSZWNvcmQoJ3Bvc3RUeXBlJywgZ2V0Q3VycmVudFBvc3RUeXBlKCksIGdldEN1cnJlbnRQb3N0SWQoKSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRcdFx0XHRcdHBvc3QgPSBfY29udGV4dC5zZW50O1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCEodW5kZWZpbmVkICE9PSBwb3N0ICYmIHBvc3Qud3Bwcl9kYXRhKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0X2NvbnRleHQubmV4dCA9IDExO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHBvc3Qud3Bwcl9kYXRhLndwcHJfbGlua3MgJiYgcG9zdC53cHByX2RhdGEud3Bwcl9saW5rcy5sZW5ndGggPCAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRwb3N0LndwcHJfZGF0YS53cHByX2xpbmtzWycnXSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKF9leHRlbmRzKHt9LCBwb3N0LndwcHJfZGF0YSkpO1xuXG5cdFx0XHRcdFx0XHRcdFx0X2NvbnRleHQubmV4dCA9IDk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmFwaVJlcXVlc3QoeyBwYXRoOiAnL3dwcHIvdjEvc2NoZW1hLWZpZWxkcz90eXBlPScgKyB0aGlzLnN0YXRlLndwcHJfcmV2aWV3X3R5cGUgfSk7XG5cblx0XHRcdFx0XHRcdFx0Y2FzZSA5OlxuXHRcdFx0XHRcdFx0XHRcdGRhdGEgPSBfY29udGV4dC5zZW50O1xuXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHNjaGVtYV9maWVsZHM6IGRhdGEuZmllbGRzLCBzY2hlbWFfdXJsOiBkYXRhLnVybCB9KTtcblxuXHRcdFx0XHRcdFx0XHRjYXNlIDExOlxuXHRcdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBfY29udGV4dC5zdG9wKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LCBfY2FsbGVlLCB0aGlzKTtcblx0XHRcdH0pKTtcblxuXHRcdFx0ZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG5cdFx0XHRcdHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjb21wb25lbnREaWRNb3VudDtcblx0XHR9KClcblx0fSwge1xuXHRcdGtleTogJ2NvbXBvbmVudERpZFVwZGF0ZScsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrICE9PSBwcmV2U3RhdGUuY3dwX21ldGFfYm94X2NoZWNrICYmIHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrID09PSAnWWVzJykge1xuXHRcdFx0XHR0aGlzLnByb3BzLm9wZW5SZXZpZXdTaWRlYmFyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAndG9nZ2xlUmV2aWV3U3RhdHVzJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gdG9nZ2xlUmV2aWV3U3RhdHVzKCkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9tZXRhX2JveF9jaGVjazogdGhpcy5zdGF0ZS5jd3BfbWV0YV9ib3hfY2hlY2sgPT09ICdZZXMnID8gJ05vJyA6ICdZZXMnIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVRlbXBsYXRlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IF93cHByX3Jldmlld190ZW1wbGF0ZTogdmFsdWUgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ29uQ2hhbmdlUmV2aWV3VGl0bGUnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVJldmlld1RpdGxlKHZhbHVlKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgY3dwX3Jldl9wcm9kdWN0X25hbWU6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0ltYWdlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdJbWFnZSh2YWx1ZSkge1xuXHRcdFx0aWYgKHZhbHVlLnVybCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnVybCAhPT0gJycpIHtcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9yZXZfcHJvZHVjdF9pbWFnZTogdmFsdWUudXJsIH0pO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZS5pZCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyBjd3BfcmV2X3Byb2R1Y3RfaW1hZ2U6IHZhbHVlLmlkIH0pO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZUltYWdlTGluaycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlSW1hZ2VMaW5rKHZhbHVlKSB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgY3dwX2ltYWdlX2xpbms6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0FmZmlsaWF0ZVRpdGxlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdBZmZpbGlhdGVUaXRsZShlLCBrZXkpIHtcblx0XHRcdHZhciB3cHByX2xpbmtzID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9saW5rcyk7XG5cdFx0XHRpZiAoX09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9saW5rcykubGVuZ3RoID09PSAyKSB7XG5cdFx0XHRcdGlmIChlID09PSBfT2JqZWN0JGtleXMod3Bwcl9saW5rcylbMF0gfHwgZSA9PT0gX09iamVjdCRrZXlzKHdwcHJfbGlua3MpWzFdKSB7XG5cdFx0XHRcdFx0ZSA9IGUgKyAnICc7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChfT2JqZWN0JGtleXMod3Bwcl9saW5rcylbMF0gPT09IGtleSkge1xuXHRcdFx0XHRyZW5hbWVLZXkod3Bwcl9saW5rcywga2V5LCBlKTtcblx0XHRcdFx0d3Bwcl9saW5rcyA9IHJldmVyc2VPYmplY3Qod3Bwcl9saW5rcyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZW5hbWVLZXkod3Bwcl9saW5rcywga2V5LCBlKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2xpbmtzOiB3cHByX2xpbmtzIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9saW5rcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfbGlua3MpO1xuXHRcdFx0d3Bwcl9saW5rc1trZXldID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2xpbmtzOiB3cHByX2xpbmtzIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdhZGRCdXR0b24nLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBhZGRCdXR0b24oKSB7XG5cdFx0XHR2YXIgd3Bwcl9saW5rcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfbGlua3MpO1xuXHRcdFx0d3Bwcl9saW5rc1snQnV5IE5vdyddID0gJyc7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9saW5rczogd3Bwcl9saW5rcyB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVJldmlld1ByaWNlJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VSZXZpZXdQcmljZSh2YWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGN3cF9yZXZfcHJpY2U6IHZhbHVlIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZU9wdGlvblRleHQnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZU9wdGlvblRleHQoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9vcHRpb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9vcHRpb25zKTtcblx0XHRcdHdwcHJfb3B0aW9uc1trZXldWyduYW1lJ10gPSBlO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfb3B0aW9uczogd3Bwcl9vcHRpb25zIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZU9wdGlvbk51bWJlcicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlT3B0aW9uTnVtYmVyKGUsIGtleSkge1xuXHRcdFx0dmFyIHdwcHJfb3B0aW9ucyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfb3B0aW9ucyk7XG5cdFx0XHRpZiAoZSA9PT0gJycpIGUgPSAwO1xuXHRcdFx0d3Bwcl9vcHRpb25zW2tleV1bJ3ZhbHVlJ10gPSBlO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfb3B0aW9uczogd3Bwcl9vcHRpb25zIH0pO1xuXHRcdFx0dGhpcy5wcm9wcy5lZGl0UG9zdFN0YXR1cyh7IGVkaXRlZDogdHJ1ZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZVNjaGVtYVR5cGUnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZVNjaGVtYVR5cGUoZSwga2V5KSB7XG5cdFx0XHR2YXIgX3RoaXMyID0gdGhpcztcblxuXHRcdFx0aWYgKGUgPT09ICcnKSByZXR1cm47XG5cblx0XHRcdC8vIHJlbW92ZSBleGlzdGluZyBmaWVsZHMgZmlyc3QuXG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgc2NoZW1hX2ZpZWxkczoge30sIHNjaGVtYV91cmw6ICcnIH0pO1xuXG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy93cHByL3YxL3NjaGVtYS1maWVsZHM/dHlwZT0nICsgZSB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG5cdFx0XHRcdF90aGlzMi5zZXRTdGF0ZSh7IHNjaGVtYV9maWVsZHM6IGRhdGEuZmllbGRzLCBzY2hlbWFfdXJsOiBkYXRhLnVybCwgd3Bwcl9yZXZpZXdfdHlwZTogZSB9KTtcblx0XHRcdFx0X3RoaXMyLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdFx0fSwgZnVuY3Rpb24gKGVycikge1xuXHRcdFx0XHRyZXR1cm4gZXJyO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnb25DaGFuZ2VTY2hlbWFGaWVsZCcsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIG9uQ2hhbmdlU2NoZW1hRmllbGQoZSwgZmllbGQpIHtcblx0XHRcdHZhciBmaWVsZHMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzKTtcblx0XHRcdHZhciBzY2hlbWFfZmllbGRzID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUuc2NoZW1hX2ZpZWxkcyk7XG5cdFx0XHRmaWVsZHNbZmllbGRdID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX3Jldmlld19jdXN0b21fZmllbGRzOiBmaWVsZHMgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2FkZE9wdGlvbicsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGFkZE9wdGlvbigpIHtcblx0XHRcdHZhciBrZXkgPSBfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX29wdGlvbnMpLmxlbmd0aCArIDE7XG5cdFx0XHR2YXIgd3Bwcl9vcHRpb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9vcHRpb25zKTtcblx0XHRcdHdwcHJfb3B0aW9uc1trZXldID0ge1xuXHRcdFx0XHRuYW1lOiAnJyxcblx0XHRcdFx0dmFsdWU6IDBcblx0XHRcdH07XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9vcHRpb25zOiB3cHByX29wdGlvbnMgfSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnb25DaGFuZ2VQcm9UZXh0Jyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gb25DaGFuZ2VQcm9UZXh0KGUsIGtleSkge1xuXHRcdFx0dmFyIHdwcHJfcHJvcyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfcHJvcyk7XG5cdFx0XHR3cHByX3Byb3Nba2V5XSA9IGU7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHsgd3Bwcl9wcm9zOiB3cHByX3Byb3MgfSk7XG5cdFx0XHR0aGlzLnByb3BzLmVkaXRQb3N0U3RhdHVzKHsgZWRpdGVkOiB0cnVlIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2FkZFBybycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGFkZFBybygpIHtcblx0XHRcdHZhciBrZXkgPSBfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX3Byb3MpLmxlbmd0aDtcblx0XHRcdHZhciB3cHByX3Byb3MgPSBfZXh0ZW5kcyh7fSwgdGhpcy5zdGF0ZS53cHByX3Byb3MpO1xuXHRcdFx0d3Bwcl9wcm9zW2tleV0gPSAnJztcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX3Byb3M6IHdwcHJfcHJvcyB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdvbkNoYW5nZUNvblRleHQnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBvbkNoYW5nZUNvblRleHQoZSwga2V5KSB7XG5cdFx0XHR2YXIgd3Bwcl9jb25zID0gX2V4dGVuZHMoe30sIHRoaXMuc3RhdGUud3Bwcl9jb25zKTtcblx0XHRcdHdwcHJfY29uc1trZXldID0gZTtcblx0XHRcdHRoaXMuc2V0U3RhdGUoeyB3cHByX2NvbnM6IHdwcHJfY29ucyB9KTtcblx0XHRcdHRoaXMucHJvcHMuZWRpdFBvc3RTdGF0dXMoeyBlZGl0ZWQ6IHRydWUgfSk7XG5cdFx0fVxuXHR9LCB7XG5cdFx0a2V5OiAnYWRkQ29uJyxcblx0XHR2YWx1ZTogZnVuY3Rpb24gYWRkQ29uKCkge1xuXHRcdFx0dmFyIGtleSA9IF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfY29ucykubGVuZ3RoO1xuXHRcdFx0dmFyIHdwcHJfY29ucyA9IF9leHRlbmRzKHt9LCB0aGlzLnN0YXRlLndwcHJfY29ucyk7XG5cdFx0XHR3cHByX2NvbnNba2V5XSA9ICcnO1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7IHdwcHJfY29uczogd3Bwcl9jb25zIH0pO1xuXHRcdH1cblx0fSwge1xuXHRcdGtleTogJ2ltcG9ydFJldmlldycsXG5cdFx0dmFsdWU6IGZ1bmN0aW9uIGltcG9ydFJldmlldyhrZXkpIHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHR3cHByX29wdGlvbnM6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9vcHRpb25zLFxuXHRcdFx0XHR3cHByX3Byb3M6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9wcm9zLFxuXHRcdFx0XHR3cHByX2NvbnM6IHRoaXMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9jb25zXG5cdFx0XHR9KTtcblx0XHRcdHRoaXMucHJvcHMuZWRpdFBvc3RTdGF0dXMoeyBlZGl0ZWQ6IHRydWUgfSk7XG5cdFx0XHR0aGlzLnByb3BzLnNldFN0YXRlKHsgaXNPcGVuOiBmYWxzZSB9KTtcblx0XHR9XG5cdH0sIHtcblx0XHRrZXk6ICdyZW5kZXInLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdFx0XHR2YXIgX3RoaXMzID0gdGhpcztcblxuXHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQbHVnaW5Qb3N0U3RhdHVzSW5mbyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdsYWJlbCcsXG5cdFx0XHRcdFx0XHR7IGh0bWxGb3I6ICdpcy10aGlzLWEtcmV2aWV3JyB9LFxuXHRcdFx0XHRcdFx0X18oJ0lzIHRoaXMgcG9zdCBhIHJldmlldz8nKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KEZvcm1Ub2dnbGUsIHtcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHRoaXMuc3RhdGUuY3dwX21ldGFfYm94X2NoZWNrID09PSAnWWVzJyA/IHRydWUgOiBmYWxzZSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiB0aGlzLnRvZ2dsZVJldmlld1N0YXR1cyxcblx0XHRcdFx0XHRcdGlkOiAnaXMtdGhpcy1hLXJldmlldydcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0aGlzLnN0YXRlLmN3cF9tZXRhX2JveF9jaGVjayA9PT0gJ1llcycgJiYgW3dwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQbHVnaW5TaWRlYmFyTW9yZU1lbnVJdGVtLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHRhcmdldDogJ3dwLXByb2R1Y3QtcmV2aWV3J1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0X18oJ1dQIFByb2R1Y3QgUmV2aWV3Jylcblx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFBsdWdpblNpZGViYXIsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogJ3dwLXByb2R1Y3QtcmV2aWV3Jyxcblx0XHRcdFx0XHRcdHRpdGxlOiBfXygnV1AgUHJvZHVjdCBSZXZpZXcnKVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogX18oJ1Byb2R1Y3QgRGV0YWlscycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1wcm9kdWN0LWRldGFpbHMnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogdHJ1ZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHdwcHJndXRlbi5pc1BybyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoUmFkaW9JbWFnZUNvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdSZXZpZXcgVGVtcGxhdGUnKSxcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWQ6IHRoaXMuc3RhdGUuX3dwcHJfcmV2aWV3X3RlbXBsYXRlLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnRGVmYXVsdCcpLFxuXHRcdFx0XHRcdFx0XHRcdHNyYzogd3Bwcmd1dGVuLnBhdGggKyAnL2Fzc2V0cy9pbWcvdGVtcGxhdGVzL2RlZmF1bHQucG5nJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2RlZmF1bHQnXG5cdFx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ1N0eWxlIDEnKSxcblx0XHRcdFx0XHRcdFx0XHRzcmM6IHdwcHJndXRlbi5wYXRoICsgJy9hc3NldHMvaW1nL3RlbXBsYXRlcy9zdHlsZTEucG5nJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ3N0eWxlMSdcblx0XHRcdFx0XHRcdFx0fSwge1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU3R5bGUgMicpLFxuXHRcdFx0XHRcdFx0XHRcdHNyYzogd3Bwcmd1dGVuLnBhdGggKyAnL2Fzc2V0cy9pbWcvdGVtcGxhdGVzL3N0eWxlMi5wbmcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnc3R5bGUyJ1xuXHRcdFx0XHRcdFx0XHR9XSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VUZW1wbGF0ZVxuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR0aGlzLnByb3BzLnBvc3RUeXBlICE9PSAnd3Bwcl9yZXZpZXcnICYmIFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IE5hbWUnKSxcblx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHQnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy5zdGF0ZS5jd3BfcmV2X3Byb2R1Y3RfbmFtZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VSZXZpZXdUaXRsZVxuXHRcdFx0XHRcdFx0fSldLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1zaWRlYmFyLWJhc2UtY29udHJvbCcgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdsYWJlbCcsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdibG9ja3MtYmFzZS1jb250cm9sX19sYWJlbCcsICdmb3InOiAnaW5zcGVjdG9yLW1lZGlhLXVwbG9hZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRfXygnUHJvZHVjdCBJbWFnZScpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChNZWRpYVVwbG9hZCwge1xuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdpbWFnZScsXG5cdFx0XHRcdFx0XHRcdFx0aWQ6ICdpbnNwZWN0b3ItbWVkaWEtdXBsb2FkJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy5zdGF0ZS5jd3BfcmV2X3Byb2R1Y3RfaW1hZ2UsXG5cdFx0XHRcdFx0XHRcdFx0b25TZWxlY3Q6IHRoaXMub25DaGFuZ2VSZXZpZXdJbWFnZSxcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXI6IGZ1bmN0aW9uIHJlbmRlcihfcmVmMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIG9wZW4gPSBfcmVmMi5vcGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIFtfdGhpczMuc3RhdGUuY3dwX3Jldl9wcm9kdWN0X2ltYWdlICE9PSAnJyAmJiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdpbWcnLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNyYzogX3RoaXMzLnN0YXRlLmN3cF9yZXZfcHJvZHVjdF9pbWFnZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YWx0OiBfXygnUmV2aWV3IGltYWdlJylcblx0XHRcdFx0XHRcdFx0XHRcdH0pLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMuc2V0U3RhdGUoeyBjd3BfcmV2X3Byb2R1Y3RfaW1hZ2U6ICcnIH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU6IHsgbWFyZ2luVG9wOiAnMTBweCcgfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnUmVtb3ZlIEltYWdlJylcblx0XHRcdFx0XHRcdFx0XHRcdCldLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogb3Blbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZTogeyBtYXJnaW5Ub3A6ICcxMHB4JyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogX3RoaXMzLnN0YXRlLmN3cF9yZXZfcHJvZHVjdF9pbWFnZSA9PT0gJycgJiYgJ3dwcHJfaW1hZ2VfdXBsb2FkJ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnQ2hvb3NlIG9yIFVwbG9hZCBhbiBJbWFnZScpXG5cdFx0XHRcdFx0XHRcdFx0XHQpXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IEltYWdlIENsaWNrJyksXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLnN0YXRlLmN3cF9pbWFnZV9saW5rLFxuXHRcdFx0XHRcdFx0XHRvcHRpb25zOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU2hvdyBXaG9sZSBJbWFnZScpLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiAnaW1hZ2UnXG5cdFx0XHRcdFx0XHRcdH0sIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ09wZW4gQWZmaWxpYXRlIExpbmsnKSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogJ2xpbmsnXG5cdFx0XHRcdFx0XHRcdH1dLFxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogdGhpcy5vbkNoYW5nZUltYWdlTGlua1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWxpbmtzLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfbGlua3MpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdEZyYWdtZW50LFxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ0FmZmlsaWF0ZSBCdXR0b24gVGV4dCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBrZXkgIT0gMSA/IGtleSA6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VSZXZpZXdBZmZpbGlhdGVUaXRsZShlLCBrZXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ0FmZmlsaWF0ZSBCdXR0b24gTGluaycpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndXJsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX2xpbmtzW2tleV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZVJldmlld0FmZmlsaWF0ZUxpbmsoZSwga2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0X09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9saW5rcykubGVuZ3RoIDwgMiAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrOiB0aGlzLmFkZEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBhbm90aGVyIGJ1dHRvbicpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm9kdWN0IFByaWNlJyksXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuc3RhdGUuY3dwX3Jldl9wcmljZSxcblx0XHRcdFx0XHRcdFx0b25DaGFuZ2U6IHRoaXMub25DaGFuZ2VSZXZpZXdQcmljZVxuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IF9fKCdQcm9kdWN0IE9wdGlvbnMnKSxcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3AtcHJvZHVjdC1yZXZpZXctcHJvZHVjdC1vcHRpb25zJyxcblx0XHRcdFx0XHRcdFx0aW5pdGlhbE9wZW46IGZhbHNlXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cHByLXJldmlldy1vcHRpb25zLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfb3B0aW9ucykubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LW9wdGlvbnMtaXRlbScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnZm9yJzogJ3dwcHItb3B0aW9uLWl0ZW0tJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRrZXlcblx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogJ3RleHQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZDogJ3dwcHItb3B0aW9uLWl0ZW0tJyArIGtleSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3Bwci10ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCdPcHRpb24nKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX29wdGlvbnNba2V5XS5uYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VPcHRpb25UZXh0KGUsIGtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cHByLXRleHQgd3Bwci1vcHRpb24tbnVtYmVyJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI6IF9fKCcwJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4OiAxMDAsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBfdGhpczMuc3RhdGUud3Bwcl9vcHRpb25zW2tleV0udmFsdWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZU9wdGlvbk51bWJlcihlLCBrZXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX29wdGlvbnMpLmxlbmd0aCA8IHdwcHJndXRlbi5sZW5ndGggJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogdGhpcy5hZGRPcHRpb25cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdF9fKCdBZGQgYW5vdGhlciBvcHRpb24nKVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBfXygnUHJvIEZlYXR1cmVzJyksXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwLXByb2R1Y3QtcmV2aWV3LXByb2R1Y3QtcHJvcycsXG5cdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctcHJvLWxpc3QnIH0sXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfcHJvcykubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LXByby1pdGVtJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnbGFiZWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7ICdmb3InOiAnd3Bwci1wcm8taXRlbS0nICsga2V5IH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlSW50KGtleSkgKyAxXG5cdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6ICd0ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6ICd3cHByLXByby1pdGVtLScgKyBrZXksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwcHItdGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyOiBfXygnT3B0aW9uJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBfdGhpczMuc3RhdGUud3Bwcl9wcm9zW2tleV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5vbkNoYW5nZVByb1RleHQoZSwga2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdFx0X09iamVjdCRrZXlzKHRoaXMuc3RhdGUud3Bwcl9wcm9zKS5sZW5ndGggPCB3cHByZ3V0ZW4ubGVuZ3RoICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRCdXR0b24sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0aXNMYXJnZTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IHRoaXMuYWRkUHJvXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRfXygnQWRkIGFub3RoZXIgb3B0aW9uJylcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogX18oJ0NvbiBGZWF0dXJlcycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1wcm9kdWN0LWNvbnMnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWNvbi1saXN0JyB9LFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXModGhpcy5zdGF0ZS53cHByX2NvbnMpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICd3cHByLXJldmlldy1jb24taXRlbScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2xhYmVsJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnZm9yJzogJ3dwcHItY29uLWl0ZW0tJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZUludChrZXkpICsgMVxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiAnd3Bwci1jb24taXRlbS0nICsga2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cHByLXRleHQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ09wdGlvbicpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogX3RoaXMzLnN0YXRlLndwcHJfY29uc1trZXldLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VDb25UZXh0KGUsIGtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyh0aGlzLnN0YXRlLndwcHJfY29ucykubGVuZ3RoIDwgd3Bwcmd1dGVuLmxlbmd0aCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrOiB0aGlzLmFkZENvblxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0X18oJ0FkZCBhbm90aGVyIG9wdGlvbicpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwcHJndXRlbi5zY2hlbWFfdHlwZXMgJiYgd3Bwcmd1dGVuLnNjaGVtYV90eXBlcy5sZW5ndGggPiAwICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFBhbmVsQm9keSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IF9fKCdTY2hlbWEgRGV0YWlscycpLFxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU6ICd3cC1wcm9kdWN0LXJldmlldy1zY2hlbWEnLFxuXHRcdFx0XHRcdFx0XHRpbml0aWFsT3BlbjogZmFsc2Vcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LXNjaGVtYScgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogX18oJ1JldmlldyBUeXBlJyksXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuc3RhdGUud3Bwcl9yZXZpZXdfdHlwZSxcblx0XHRcdFx0XHRcdFx0XHRvcHRpb25zOiB3cHByZ3V0ZW4uc2NoZW1hX3R5cGVzLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlU2NoZW1hVHlwZVxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctc2NoZW1hLWZpZWxkcycgfSxcblx0XHRcdFx0XHRcdFx0ISF0aGlzLnN0YXRlLnNjaGVtYV91cmwgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdEV4dGVybmFsTGluayxcblx0XHRcdFx0XHRcdFx0XHR7IGhyZWY6IHRoaXMuc3RhdGUuc2NoZW1hX3VybCwgdGl0bGU6IF9fKCdWaWV3IFNjaGVtYSBEZXNjcmlwdGlvbiAnKSB9LFxuXHRcdFx0XHRcdFx0XHRcdF9fKCdWaWV3IFNjaGVtYSBEZXNjcmlwdGlvbiAnKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRfT2JqZWN0JHZhbHVlcyh0aGlzLnN0YXRlLnNjaGVtYV9maWVsZHMpLm1hcChmdW5jdGlvbiAoZmllbGQsIGtleSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctc2NoZW1hLWZpZWxkJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnbGFiZWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7ICdmb3InOiAnd3Bwci1zY2hlbWEtZmllbGQtJyArIGtleSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmaWVsZFxuXHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiAndGV4dCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiAnd3Bwci1zY2hlbWEtZmllbGQtJyArIGtleSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogJ3dwcHItc2NoZW1hLWZpZWxkLScgKyBmaWVsZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lOiAnd3Bwci10ZXh0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IF90aGlzMy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzW2ZpZWxkXSA/IF90aGlzMy5zdGF0ZS53cHByX3Jldmlld19jdXN0b21fZmllbGRzW2ZpZWxkXSA6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBfdGhpczMub25DaGFuZ2VTY2hlbWFGaWVsZChlLCBmaWVsZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwcHJndXRlbi5pc1BybyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnd3Bwci1yZXZpZXctaW1wb3J0LXJldmlldy1idXR0b24nIH0sXG5cdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0aXNQcmltYXJ5OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gX3RoaXMzLnByb3BzLnNldFN0YXRlKHsgaXNPcGVuOiB0cnVlIH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0X18oJ0ltcG9ydCBSZXZpZXcnKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHRoaXMucHJvcHMuaXNPcGVuID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRNb2RhbCxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBfXygnSW1wb3J0IFJldmlldycpLFxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ3dwcHItcmV2aWV3LWltcG9ydC1tb2RhbCcsXG5cdFx0XHRcdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U6IGZ1bmN0aW9uIG9uUmVxdWVzdENsb3NlKCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5wcm9wcy5zZXRTdGF0ZSh7IGlzT3BlbjogZmFsc2UgfSk7XG5cdFx0XHRcdFx0XHRcdFx0fSB9LFxuXHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLnBvc3RzICYmIF9PYmplY3Qka2V5cyh0aGlzLnByb3BzLnBvc3RzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBfdGhpczMucHJvcHMucG9zdHNba2V5XS50aXRsZS5yYXcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluaXRpYWxPcGVuOiBmYWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnY3dwX3BpdGVtX2luZm8nIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndWwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgJ2NsYXNzJzogJ2N3cF9waXRlbV9vcHRpb25zX2NvbnRlbnQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2g0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfXygnT3B0aW9ucycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfT2JqZWN0JGtleXMoX3RoaXMzLnByb3BzLnBvc3RzW2tleV0ud3Bwcl9kYXRhLndwcHJfb3B0aW9ucykubWFwKGZ1bmN0aW9uIChpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnbGknLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9vcHRpb25zW2ldLm5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1bCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnY2xhc3MnOiAnY3dwX3BpdGVtX29wdGlvbnNfcHJvcycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaDQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdQcm9zJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyhfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9wcm9zKS5tYXAoZnVuY3Rpb24gKGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90aGlzMy5wcm9wcy5wb3N0c1trZXldLndwcHJfZGF0YS53cHByX3Byb3NbaV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd1bCcsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyAnY2xhc3MnOiAnY3dwX3BpdGVtX29wdGlvbnNfY29ucycgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaDQnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdDb25zJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9PYmplY3Qka2V5cyhfdGhpczMucHJvcHMucG9zdHNba2V5XS53cHByX2RhdGEud3Bwcl9jb25zKS5tYXAoZnVuY3Rpb24gKGkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF90aGlzMy5wcm9wcy5wb3N0c1trZXldLndwcHJfZGF0YS53cHByX2NvbnNbaV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEJ1dHRvbixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpc0xhcmdlOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIF90aGlzMy5pbXBvcnRSZXZpZXcoa2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF9fKCdJbXBvcnQgUmV2aWV3Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQpIDogbnVsbFxuXHRcdFx0XHRcdClcblx0XHRcdFx0KV1cblx0XHRcdCk7XG5cdFx0fVxuXHR9XSwgW3tcblx0XHRrZXk6ICdnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMnLFxuXHRcdHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBzdGF0ZSkge1xuXHRcdFx0aWYgKChuZXh0UHJvcHMuaXNQdWJsaXNoaW5nIHx8IG5leHRQcm9wcy5pc1NhdmluZykgJiYgIW5leHRQcm9wcy5pc0F1dG9TYXZpbmcpIHtcblx0XHRcdFx0d3AuYXBpUmVxdWVzdCh7IHBhdGg6ICcvd3Bwci92MS91cGRhdGUtcmV2aWV3P2lkPScgKyBuZXh0UHJvcHMucG9zdElkICsgJyZwb3N0VHlwZT0nICsgbmV4dFByb3BzLnBvc3RUeXBlLCBtZXRob2Q6ICdQT1NUJywgZGF0YTogc3RhdGUgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9LCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XSk7XG5cblx0cmV0dXJuIFdQX1Byb2R1Y3RfUmV2aWV3O1xufShDb21wb25lbnQpO1xuXG52YXIgV1BQUiA9IGNvbXBvc2UoW3dpdGhTZWxlY3QoZnVuY3Rpb24gKHNlbGVjdCwgX3JlZjMpIHtcblx0dmFyIGZvcmNlSXNTYXZpbmcgPSBfcmVmMy5mb3JjZUlzU2F2aW5nO1xuXG5cdHZhciBfc2VsZWN0MiA9IHNlbGVjdCgnY29yZS9lZGl0b3InKSxcblx0ICAgIGdldEN1cnJlbnRQb3N0SWQgPSBfc2VsZWN0Mi5nZXRDdXJyZW50UG9zdElkLFxuXHQgICAgaXNTYXZpbmdQb3N0ID0gX3NlbGVjdDIuaXNTYXZpbmdQb3N0LFxuXHQgICAgaXNQdWJsaXNoaW5nUG9zdCA9IF9zZWxlY3QyLmlzUHVibGlzaGluZ1Bvc3QsXG5cdCAgICBpc0F1dG9zYXZpbmdQb3N0ID0gX3NlbGVjdDIuaXNBdXRvc2F2aW5nUG9zdCxcblx0ICAgIGdldEN1cnJlbnRQb3N0VHlwZSA9IF9zZWxlY3QyLmdldEN1cnJlbnRQb3N0VHlwZTtcblxuXHR2YXIgbGF0ZXN0UG9zdHNRdWVyeSA9IHBpY2tCeSh7XG5cdFx0cGVyX3BhZ2U6IDEwMCxcblx0XHRtZXRhX2tleTogJ2N3cF9tZXRhX2JveF9jaGVjaycsXG5cdFx0bWV0YV92YWx1ZTogJ1llcydcblx0fSwgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0cmV0dXJuICFpc1VuZGVmaW5lZCh2YWx1ZSk7XG5cdH0pO1xuXHRyZXR1cm4ge1xuXHRcdHBvc3RJZDogZ2V0Q3VycmVudFBvc3RJZCgpLFxuXHRcdHBvc3RUeXBlOiBnZXRDdXJyZW50UG9zdFR5cGUoKSxcblx0XHRwb3N0czogc2VsZWN0KCdjb3JlJykuZ2V0RW50aXR5UmVjb3JkcygncG9zdFR5cGUnLCAncG9zdCcsIGxhdGVzdFBvc3RzUXVlcnkpLFxuXHRcdGlzU2F2aW5nOiBmb3JjZUlzU2F2aW5nIHx8IGlzU2F2aW5nUG9zdCgpLFxuXHRcdGlzQXV0b1NhdmluZzogaXNBdXRvc2F2aW5nUG9zdCgpLFxuXHRcdGlzUHVibGlzaGluZzogaXNQdWJsaXNoaW5nUG9zdCgpXG5cdH07XG59KSwgd2l0aFN0YXRlKHtcblx0aXNPcGVuOiBmYWxzZVxufSksIHdpdGhEaXNwYXRjaChmdW5jdGlvbiAoZGlzcGF0Y2gpIHtcblx0cmV0dXJuIHtcblx0XHRvcGVuUmV2aWV3U2lkZWJhcjogZnVuY3Rpb24gb3BlblJldmlld1NpZGViYXIoKSB7XG5cdFx0XHRyZXR1cm4gZGlzcGF0Y2goJ2NvcmUvZWRpdC1wb3N0Jykub3BlbkdlbmVyYWxTaWRlYmFyKCd3cC1wcm9kdWN0LXJldmlldy93cC1wcm9kdWN0LXJldmlldycpO1xuXHRcdH0sXG5cdFx0ZWRpdFBvc3RTdGF0dXM6IGRpc3BhdGNoKCdjb3JlL2VkaXRvcicpLmVkaXRQb3N0XG5cdH07XG59KV0pKFdQX1Byb2R1Y3RfUmV2aWV3KTtcblxucmVnaXN0ZXJQbHVnaW4oJ3dwLXByb2R1Y3QtcmV2aWV3Jywge1xuXHRpY29uOiAnc3Rhci1lbXB0eScsXG5cdHJlbmRlcjogV1BQUlxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9zcmMvc2lkZWJhci5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n");
412
 
413
  /***/ }),
414
  /* 57 */
includes/gutenberg/class-wppr-gutenberg.php CHANGED
@@ -93,8 +93,10 @@ class WPPR_Gutenberg {
93
  private function get_schema_types() {
94
  $types = WPPR_Schema_Model::get_types();
95
  $array = array();
96
- foreach ( $types as $type ) {
97
- $array[] = array( 'label' => $type, 'value' => $type );
 
 
98
  }
99
  return $array;
100
  }
93
  private function get_schema_types() {
94
  $types = WPPR_Schema_Model::get_types();
95
  $array = array();
96
+ if ( $types ) {
97
+ foreach ( $types as $type ) {
98
+ $array[] = array( 'label' => $type, 'value' => $type );
99
+ }
100
  }
101
  return $array;
102
  }
includes/gutenberg/src/sidebar.js CHANGED
@@ -528,6 +528,7 @@ class WP_Product_Review extends Component {
528
  </div>
529
  </PanelBody>
530
 
 
531
  <PanelBody
532
  title={ __( 'Schema Details' ) }
533
  className="wp-product-review-schema"
@@ -560,6 +561,7 @@ class WP_Product_Review extends Component {
560
  ) ) }
561
  </div>
562
  </PanelBody>
 
563
 
564
  { ( wpprguten.isPro ) && (
565
  <div className="wppr-review-import-review-button">
528
  </div>
529
  </PanelBody>
530
 
531
+ { ( wpprguten.schema_types && wpprguten.schema_types.length > 0 ) && (
532
  <PanelBody
533
  title={ __( 'Schema Details' ) }
534
  className="wp-product-review-schema"
561
  ) ) }
562
  </div>
563
  </PanelBody>
564
+ ) }
565
 
566
  { ( wpprguten.isPro ) && (
567
  <div className="wppr-review-import-review-button">
includes/public/class-wppr-public.php CHANGED
@@ -111,14 +111,15 @@ class Wppr_Public {
111
  }
112
  $scale = 10 * ( 10 / $scale );
113
 
114
- wp_enqueue_script( 'jquery-ui-slider' );
115
- wp_enqueue_script( 'jquery-touch-punch' );
 
 
 
116
  wp_enqueue_script(
117
  $this->plugin_name . '-frontpage-js',
118
  WPPR_URL . '/assets/js/main.js',
119
- array(
120
- 'jquery-ui-slider',
121
- ),
122
  $this->version,
123
  true
124
  );
111
  }
112
  $scale = 10 * ( 10 / $scale );
113
 
114
+ $dependencies = array( 'jquery-touch-punch' );
115
+ if ( 'slider' === $review->wppr_get_option( 'wppr_comment_rating' ) ) {
116
+ $dependencies[] = 'jquery-ui-slider';
117
+ }
118
+
119
  wp_enqueue_script(
120
  $this->plugin_name . '-frontpage-js',
121
  WPPR_URL . '/assets/js/main.js',
122
+ $dependencies,
 
 
123
  $this->version,
124
  true
125
  );
package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "wp-product-review",
3
- "version": "3.7.9",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
@@ -41,9 +41,9 @@
41
  "dev": true
42
  },
43
  "ajv": {
44
- "version": "6.12.2",
45
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
46
- "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
47
  "dev": true,
48
  "requires": {
49
  "fast-deep-equal": "3.1.3",
@@ -108,8 +108,8 @@
108
  "archiver-utils": "1.3.0",
109
  "async": "2.6.3",
110
  "buffer-crc32": "0.2.13",
111
- "glob": "7.0.6",
112
- "lodash": "4.17.15",
113
  "readable-stream": "2.3.7",
114
  "tar-stream": "1.6.2",
115
  "walkdir": "0.0.11",
@@ -122,7 +122,7 @@
122
  "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
123
  "dev": true,
124
  "requires": {
125
- "lodash": "4.17.15"
126
  }
127
  }
128
  }
@@ -133,10 +133,10 @@
133
  "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
134
  "dev": true,
135
  "requires": {
136
- "glob": "7.0.6",
137
  "graceful-fs": "4.2.4",
138
  "lazystream": "1.0.0",
139
- "lodash": "4.17.15",
140
  "normalize-path": "2.1.1",
141
  "readable-stream": "2.3.7"
142
  }
@@ -192,12 +192,24 @@
192
  "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
193
  "dev": true
194
  },
 
 
 
 
 
 
195
  "array-find-index": {
196
  "version": "1.0.2",
197
  "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
198
  "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
199
  "dev": true
200
  },
 
 
 
 
 
 
201
  "array-union": {
202
  "version": "1.0.2",
203
  "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -265,14 +277,14 @@
265
  "dev": true
266
  },
267
  "autoprefixer": {
268
- "version": "9.8.0",
269
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz",
270
- "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==",
271
  "dev": true,
272
  "requires": {
273
- "browserslist": "4.12.0",
274
- "caniuse-lite": "1.0.30001083",
275
- "chalk": "2.4.2",
276
  "normalize-range": "0.1.2",
277
  "num2fraction": "1.2.2",
278
  "postcss": "7.0.32",
@@ -686,15 +698,15 @@
686
  }
687
  },
688
  "browserslist": {
689
- "version": "4.12.0",
690
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz",
691
- "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==",
692
  "dev": true,
693
  "requires": {
694
- "caniuse-lite": "1.0.30001083",
695
- "electron-to-chromium": "1.3.473",
696
- "node-releases": "1.1.58",
697
- "pkg-up": "2.0.0"
698
  }
699
  },
700
  "buffer": {
@@ -767,7 +779,7 @@
767
  "graceful-fs": "4.2.4",
768
  "mkdirp": "0.5.5",
769
  "object-assign": "4.1.1",
770
- "rimraf": "2.6.3"
771
  },
772
  "dependencies": {
773
  "mkdirp": {
@@ -778,6 +790,15 @@
778
  "requires": {
779
  "minimist": "1.2.5"
780
  }
 
 
 
 
 
 
 
 
 
781
  }
782
  }
783
  },
@@ -829,9 +850,9 @@
829
  }
830
  },
831
  "caniuse-lite": {
832
- "version": "1.0.30001083",
833
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz",
834
- "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==",
835
  "dev": true
836
  },
837
  "caseless": {
@@ -901,22 +922,6 @@
901
  "requires": {
902
  "exit": "0.1.2",
903
  "glob": "7.1.6"
904
- },
905
- "dependencies": {
906
- "glob": {
907
- "version": "7.1.6",
908
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
909
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
910
- "dev": true,
911
- "requires": {
912
- "fs.realpath": "1.0.0",
913
- "inflight": "1.0.6",
914
- "inherits": "2.0.4",
915
- "minimatch": "3.0.4",
916
- "once": "1.4.0",
917
- "path-is-absolute": "1.0.1"
918
- }
919
- }
920
  }
921
  },
922
  "clone-response": {
@@ -987,6 +992,12 @@
987
  "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
988
  "dev": true
989
  },
 
 
 
 
 
 
990
  "colors": {
991
  "version": "1.1.2",
992
  "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
@@ -1191,6 +1202,15 @@
1191
  "requires": {
1192
  "mdn-data": "2.0.4",
1193
  "source-map": "0.6.1"
 
 
 
 
 
 
 
 
 
1194
  }
1195
  },
1196
  "css-what": {
@@ -1283,6 +1303,13 @@
1283
  "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==",
1284
  "dev": true,
1285
  "optional": true
 
 
 
 
 
 
 
1286
  }
1287
  }
1288
  },
@@ -1320,14 +1347,10 @@
1320
  }
1321
  },
1322
  "dateformat": {
1323
- "version": "1.0.12",
1324
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
1325
- "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
1326
- "dev": true,
1327
- "requires": {
1328
- "get-stdin": "4.0.1",
1329
- "meow": "3.7.0"
1330
- }
1331
  },
1332
  "debug": {
1333
  "version": "2.6.9",
@@ -1534,6 +1557,12 @@
1534
  "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
1535
  "dev": true
1536
  },
 
 
 
 
 
 
1537
  "detect-libc": {
1538
  "version": "1.0.3",
1539
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
@@ -1698,18 +1727,29 @@
1698
  }
1699
  },
1700
  "electron-to-chromium": {
1701
- "version": "1.3.473",
1702
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz",
1703
- "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==",
1704
  "dev": true
1705
  },
1706
  "encoding": {
1707
- "version": "0.1.12",
1708
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
1709
- "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
1710
  "dev": true,
1711
  "requires": {
1712
- "iconv-lite": "0.4.24"
 
 
 
 
 
 
 
 
 
 
 
1713
  }
1714
  },
1715
  "end-of-stream": {
@@ -1763,7 +1803,7 @@
1763
  "has-symbols": "1.0.1",
1764
  "is-callable": "1.2.0",
1765
  "is-regex": "1.1.0",
1766
- "object-inspect": "1.7.0",
1767
  "object-keys": "1.1.1",
1768
  "object.assign": "4.1.0",
1769
  "string.prototype.trimend": "1.0.1",
@@ -1781,6 +1821,12 @@
1781
  "is-symbol": "1.0.3"
1782
  }
1783
  },
 
 
 
 
 
 
1784
  "escape-string-regexp": {
1785
  "version": "1.0.5",
1786
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -1809,7 +1855,7 @@
1809
  "execa": "0.7.0",
1810
  "p-finally": "1.0.0",
1811
  "pify": "3.0.0",
1812
- "rimraf": "2.6.3",
1813
  "tempfile": "2.0.0"
1814
  },
1815
  "dependencies": {
@@ -1819,6 +1865,16 @@
1819
  "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1820
  "dev": true,
1821
  "optional": true
 
 
 
 
 
 
 
 
 
 
1822
  }
1823
  }
1824
  },
@@ -1895,6 +1951,15 @@
1895
  "dev": true,
1896
  "optional": true
1897
  },
 
 
 
 
 
 
 
 
 
1898
  "ext-list": {
1899
  "version": "2.2.2",
1900
  "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
@@ -2041,6 +2106,17 @@
2041
  "is-glob": "4.0.1",
2042
  "merge2": "1.4.1",
2043
  "micromatch": "3.1.10"
 
 
 
 
 
 
 
 
 
 
 
2044
  }
2045
  },
2046
  "fast-json-stable-stringify": {
@@ -2173,12 +2249,40 @@
2173
  }
2174
  }
2175
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2176
  "for-in": {
2177
  "version": "1.0.2",
2178
  "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
2179
  "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
2180
  "dev": true
2181
  },
 
 
 
 
 
 
 
 
 
2182
  "forever-agent": {
2183
  "version": "0.6.1",
2184
  "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -2318,7 +2422,7 @@
2318
  "integrity": "sha512-vNhWcqXEtZPs5Ft1ReA34g7ByWotpcOIeJvXVy2jF3/G2U9v6W0wG4Z4hXzcU8R//jArqkgHcVCGgGqa4vxVlQ==",
2319
  "dev": true,
2320
  "requires": {
2321
- "encoding": "0.1.12",
2322
  "readable-stream": "3.6.0",
2323
  "safe-buffer": "5.1.2"
2324
  },
@@ -2399,9 +2503,9 @@
2399
  "optional": true
2400
  },
2401
  "glob": {
2402
- "version": "7.0.6",
2403
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
2404
- "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
2405
  "dev": true,
2406
  "requires": {
2407
  "fs.realpath": "1.0.0",
@@ -2420,17 +2524,6 @@
2420
  "requires": {
2421
  "is-glob": "3.1.0",
2422
  "path-dirname": "1.0.2"
2423
- },
2424
- "dependencies": {
2425
- "is-glob": {
2426
- "version": "3.1.0",
2427
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
2428
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
2429
- "dev": true,
2430
- "requires": {
2431
- "is-extglob": "2.1.1"
2432
- }
2433
- }
2434
  }
2435
  },
2436
  "glob-to-regexp": {
@@ -2439,6 +2532,30 @@
2439
  "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
2440
  "dev": true
2441
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2442
  "globby": {
2443
  "version": "8.0.2",
2444
  "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
@@ -2454,20 +2571,6 @@
2454
  "slash": "1.0.0"
2455
  },
2456
  "dependencies": {
2457
- "glob": {
2458
- "version": "7.1.6",
2459
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
2460
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
2461
- "dev": true,
2462
- "requires": {
2463
- "fs.realpath": "1.0.0",
2464
- "inflight": "1.0.6",
2465
- "inherits": "2.0.4",
2466
- "minimatch": "3.0.4",
2467
- "once": "1.4.0",
2468
- "path-is-absolute": "1.0.1"
2469
- }
2470
- },
2471
  "ignore": {
2472
  "version": "3.3.10",
2473
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
@@ -2489,24 +2592,8 @@
2489
  "dev": true,
2490
  "requires": {
2491
  "glob": "7.1.6",
2492
- "lodash": "4.17.15",
2493
  "minimatch": "3.0.4"
2494
- },
2495
- "dependencies": {
2496
- "glob": {
2497
- "version": "7.1.6",
2498
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
2499
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
2500
- "dev": true,
2501
- "requires": {
2502
- "fs.realpath": "1.0.0",
2503
- "inflight": "1.0.6",
2504
- "inherits": "2.0.4",
2505
- "minimatch": "3.0.4",
2506
- "once": "1.4.0",
2507
- "path-is-absolute": "1.0.1"
2508
- }
2509
- }
2510
  }
2511
  },
2512
  "gonzales-pe": {
@@ -2570,47 +2657,52 @@
2570
  "dev": true
2571
  },
2572
  "grunt": {
2573
- "version": "1.1.0",
2574
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.1.0.tgz",
2575
- "integrity": "sha512-+NGod0grmviZ7Nzdi9am7vuRS/h76PcWDsV635mEXF0PEQMUV6Kb+OjTdsVxbi0PZmfQOjCMKb3w8CVZcqsn1g==",
2576
  "dev": true,
2577
  "requires": {
2578
- "coffeescript": "1.10.0",
2579
- "dateformat": "1.0.12",
2580
  "eventemitter2": "0.4.14",
2581
  "exit": "0.1.2",
2582
  "findup-sync": "0.3.0",
2583
- "glob": "7.0.6",
2584
- "grunt-cli": "1.2.0",
2585
  "grunt-known-options": "1.1.1",
2586
  "grunt-legacy-log": "2.0.0",
2587
  "grunt-legacy-util": "1.1.1",
2588
  "iconv-lite": "0.4.24",
2589
- "js-yaml": "3.13.1",
2590
  "minimatch": "3.0.4",
2591
  "mkdirp": "1.0.4",
2592
  "nopt": "3.0.6",
2593
- "path-is-absolute": "1.0.1",
2594
- "rimraf": "2.6.3"
2595
  },
2596
  "dependencies": {
2597
  "grunt-cli": {
2598
- "version": "1.2.0",
2599
- "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
2600
- "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
2601
  "dev": true,
2602
  "requires": {
2603
- "findup-sync": "0.3.0",
2604
  "grunt-known-options": "1.1.1",
2605
- "nopt": "3.0.6",
2606
- "resolve": "1.1.7"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2607
  }
2608
- },
2609
- "resolve": {
2610
- "version": "1.1.7",
2611
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
2612
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
2613
- "dev": true
2614
  }
2615
  }
2616
  },
@@ -2657,7 +2749,7 @@
2657
  "archiver": "1.3.0",
2658
  "chalk": "1.1.3",
2659
  "iltorb": "2.4.5",
2660
- "lodash": "4.17.15",
2661
  "pretty-bytes": "4.0.2",
2662
  "stream-buffers": "2.2.0"
2663
  },
@@ -2770,7 +2862,7 @@
2770
  "requires": {
2771
  "async": "2.6.3",
2772
  "gaze": "1.1.3",
2773
- "lodash": "4.17.15",
2774
  "tiny-lr": "1.1.1"
2775
  },
2776
  "dependencies": {
@@ -2780,7 +2872,7 @@
2780
  "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
2781
  "dev": true,
2782
  "requires": {
2783
- "lodash": "4.17.15"
2784
  }
2785
  }
2786
  }
@@ -2806,7 +2898,7 @@
2806
  "colors": "1.1.2",
2807
  "grunt-legacy-log-utils": "2.0.1",
2808
  "hooker": "0.2.3",
2809
- "lodash": "4.17.15"
2810
  }
2811
  },
2812
  "grunt-legacy-log-utils": {
@@ -2816,7 +2908,7 @@
2816
  "dev": true,
2817
  "requires": {
2818
  "chalk": "2.4.2",
2819
- "lodash": "4.17.15"
2820
  }
2821
  },
2822
  "grunt-legacy-util": {
@@ -2829,7 +2921,7 @@
2829
  "exit": "0.1.2",
2830
  "getobject": "0.1.0",
2831
  "hooker": "0.2.3",
2832
- "lodash": "4.17.15",
2833
  "underscore.string": "3.3.5",
2834
  "which": "1.3.1"
2835
  }
@@ -2847,7 +2939,18 @@
2847
  "dev": true,
2848
  "requires": {
2849
  "async": "1.5.2",
2850
- "rimraf": "2.6.3"
 
 
 
 
 
 
 
 
 
 
 
2851
  }
2852
  },
2853
  "grunt-phpcbf": {
@@ -3155,7 +3258,7 @@
3155
  "version": "github:codeinwp/grunt-plugin-fleet#922540b800fafe8a89d60e82699afb8073c1b7c2",
3156
  "dev": true,
3157
  "requires": {
3158
- "autoprefixer": "9.8.0",
3159
  "grunt": "1.0.4",
3160
  "grunt-cachebuster": "0.1.7",
3161
  "grunt-checktextdomain": "1.0.1",
@@ -3182,6 +3285,30 @@
3182
  "time-grunt": "1.4.0"
3183
  },
3184
  "dependencies": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3185
  "grunt": {
3186
  "version": "1.0.4",
3187
  "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz",
@@ -3221,6 +3348,16 @@
3221
  }
3222
  }
3223
  },
 
 
 
 
 
 
 
 
 
 
3224
  "mkdirp": {
3225
  "version": "0.5.5",
3226
  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
@@ -3235,6 +3372,31 @@
3235
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
3236
  "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
3237
  "dev": true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3238
  }
3239
  }
3240
  },
@@ -3259,6 +3421,12 @@
3259
  "source-map": "0.6.1",
3260
  "supports-color": "5.5.0"
3261
  }
 
 
 
 
 
 
3262
  }
3263
  }
3264
  },
@@ -3278,7 +3446,7 @@
3278
  "dev": true,
3279
  "requires": {
3280
  "fs-extra": "6.0.1",
3281
- "glob": "7.0.6",
3282
  "md5-file": "2.0.7"
3283
  }
3284
  },
@@ -3294,7 +3462,7 @@
3294
  "integrity": "sha512-mpcf8tcEtRBeMVkZpysIIDbv6sW3S0R5MO4+ysMNb7i6LNSpvyTePKWE/eOnLdfyXIuqxtP/H2Z4Mgkjl2BUBw==",
3295
  "dev": true,
3296
  "requires": {
3297
- "grunt": "1.1.0",
3298
  "semver": "6.3.0"
3299
  },
3300
  "dependencies": {
@@ -3314,7 +3482,7 @@
3314
  "requires": {
3315
  "cssbeautify": "0.3.1",
3316
  "csscomb": "3.1.8",
3317
- "lodash": "4.17.15"
3318
  }
3319
  },
3320
  "grunt-wp-i18n": {
@@ -3323,7 +3491,7 @@
3323
  "integrity": "sha512-CJNbEKeBeOSAPeaJ9B8iCgSwtaG63UR9/uT46a4OsIqnFhOJpeAi138JTlvjfIbnDVoBrzvdrKJe1svveLjUtA==",
3324
  "dev": true,
3325
  "requires": {
3326
- "grunt": "1.1.0",
3327
  "node-wp-i18n": "1.2.3"
3328
  }
3329
  },
@@ -3345,7 +3513,7 @@
3345
  "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
3346
  "dev": true,
3347
  "requires": {
3348
- "ajv": "6.12.2",
3349
  "har-schema": "2.0.0"
3350
  }
3351
  },
@@ -3438,6 +3606,15 @@
3438
  }
3439
  }
3440
  },
 
 
 
 
 
 
 
 
 
3441
  "hooker": {
3442
  "version": "0.2.3",
3443
  "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
@@ -3567,7 +3744,7 @@
3567
  "detect-libc": "1.0.3",
3568
  "nan": "2.14.1",
3569
  "npmlog": "4.1.2",
3570
- "prebuild-install": "5.3.4",
3571
  "which-pm-runs": "1.0.0"
3572
  }
3573
  },
@@ -3684,6 +3861,12 @@
3684
  "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
3685
  "dev": true
3686
  },
 
 
 
 
 
 
3687
  "into-stream": {
3688
  "version": "3.1.0",
3689
  "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
@@ -3701,6 +3884,16 @@
3701
  "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==",
3702
  "dev": true
3703
  },
 
 
 
 
 
 
 
 
 
 
3704
  "is-accessor-descriptor": {
3705
  "version": "0.1.6",
3706
  "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -3822,9 +4015,9 @@
3822
  }
3823
  },
3824
  "is-glob": {
3825
- "version": "4.0.1",
3826
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
3827
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
3828
  "dev": true,
3829
  "requires": {
3830
  "is-extglob": "2.1.1"
@@ -3900,6 +4093,15 @@
3900
  "has-symbols": "1.0.1"
3901
  }
3902
  },
 
 
 
 
 
 
 
 
 
3903
  "is-retry-allowed": {
3904
  "version": "1.2.0",
3905
  "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
@@ -3937,6 +4139,15 @@
3937
  "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
3938
  "dev": true
3939
  },
 
 
 
 
 
 
 
 
 
3940
  "is-utf8": {
3941
  "version": "0.2.1",
3942
  "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
@@ -4002,9 +4213,9 @@
4002
  }
4003
  },
4004
  "js-yaml": {
4005
- "version": "3.13.1",
4006
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
4007
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
4008
  "dev": true,
4009
  "requires": {
4010
  "argparse": "1.0.10",
@@ -4027,7 +4238,7 @@
4027
  "console-browserify": "1.1.0",
4028
  "exit": "0.1.2",
4029
  "htmlparser2": "3.8.3",
4030
- "lodash": "4.17.15",
4031
  "minimatch": "3.0.4",
4032
  "shelljs": "0.3.0",
4033
  "strip-json-comments": "1.0.4"
@@ -4112,6 +4323,36 @@
4112
  "readable-stream": "2.3.7"
4113
  }
4114
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4115
  "livereload-js": {
4116
  "version": "2.4.0",
4117
  "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
@@ -4179,17 +4420,6 @@
4179
  "arrify": "1.0.1",
4180
  "multimatch": "2.1.0",
4181
  "pkg-up": "1.0.0"
4182
- },
4183
- "dependencies": {
4184
- "pkg-up": {
4185
- "version": "1.0.0",
4186
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
4187
- "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
4188
- "dev": true,
4189
- "requires": {
4190
- "find-up": "1.1.2"
4191
- }
4192
- }
4193
  }
4194
  },
4195
  "load-json-file": {
@@ -4224,28 +4454,10 @@
4224
  }
4225
  }
4226
  },
4227
- "locate-path": {
4228
- "version": "2.0.0",
4229
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
4230
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
4231
- "dev": true,
4232
- "requires": {
4233
- "p-locate": "2.0.0",
4234
- "path-exists": "3.0.0"
4235
- },
4236
- "dependencies": {
4237
- "path-exists": {
4238
- "version": "3.0.0",
4239
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
4240
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
4241
- "dev": true
4242
- }
4243
- }
4244
- },
4245
  "lodash": {
4246
- "version": "4.17.15",
4247
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
4248
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
4249
  "dev": true
4250
  },
4251
  "logalot": {
@@ -4322,6 +4534,15 @@
4322
  }
4323
  }
4324
  },
 
 
 
 
 
 
 
 
 
4325
  "map-cache": {
4326
  "version": "0.2.2",
4327
  "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -4540,9 +4761,9 @@
4540
  }
4541
  },
4542
  "node-releases": {
4543
- "version": "1.1.58",
4544
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz",
4545
- "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==",
4546
  "dev": true
4547
  },
4548
  "node-uuid": {
@@ -4559,8 +4780,8 @@
4559
  "requires": {
4560
  "bluebird": "3.7.2",
4561
  "gettext-parser": "3.1.1",
4562
- "glob": "7.0.6",
4563
- "lodash": "4.17.15",
4564
  "minimist": "1.2.5",
4565
  "mkdirp": "0.5.5",
4566
  "tmp": "0.0.33"
@@ -4756,9 +4977,9 @@
4756
  }
4757
  },
4758
  "object-inspect": {
4759
- "version": "1.7.0",
4760
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
4761
- "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
4762
  "dev": true
4763
  },
4764
  "object-keys": {
@@ -4788,6 +5009,18 @@
4788
  "object-keys": "1.1.1"
4789
  }
4790
  },
 
 
 
 
 
 
 
 
 
 
 
 
4791
  "object.getownpropertydescriptors": {
4792
  "version": "2.1.0",
4793
  "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
@@ -4799,6 +5032,16 @@
4799
  "es-abstract": "1.17.6"
4800
  }
4801
  },
 
 
 
 
 
 
 
 
 
 
4802
  "object.pick": {
4803
  "version": "1.3.0",
4804
  "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -4852,12 +5095,28 @@
4852
  "arch": "2.1.2"
4853
  }
4854
  },
 
 
 
 
 
 
4855
  "os-tmpdir": {
4856
  "version": "1.0.2",
4857
  "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
4858
  "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
4859
  "dev": true
4860
  },
 
 
 
 
 
 
 
 
 
 
4861
  "p-cancelable": {
4862
  "version": "0.3.0",
4863
  "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
@@ -4888,24 +5147,6 @@
4888
  "dev": true,
4889
  "optional": true
4890
  },
4891
- "p-limit": {
4892
- "version": "1.3.0",
4893
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
4894
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
4895
- "dev": true,
4896
- "requires": {
4897
- "p-try": "1.0.0"
4898
- }
4899
- },
4900
- "p-locate": {
4901
- "version": "2.0.0",
4902
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
4903
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
4904
- "dev": true,
4905
- "requires": {
4906
- "p-limit": "1.3.0"
4907
- }
4908
- },
4909
  "p-map": {
4910
  "version": "1.2.0",
4911
  "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
@@ -4944,11 +5185,16 @@
4944
  "p-finally": "1.0.0"
4945
  }
4946
  },
4947
- "p-try": {
4948
- "version": "1.0.0",
4949
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
4950
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
4951
- "dev": true
 
 
 
 
 
4952
  },
4953
  "parse-json": {
4954
  "version": "2.2.0",
@@ -4965,6 +5211,12 @@
4965
  "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=",
4966
  "dev": true
4967
  },
 
 
 
 
 
 
4968
  "pascalcase": {
4969
  "version": "0.1.1",
4970
  "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
@@ -5004,6 +5256,21 @@
5004
  "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
5005
  "dev": true
5006
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5007
  "path-type": {
5008
  "version": "1.1.0",
5009
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
@@ -5049,23 +5316,12 @@
5049
  }
5050
  },
5051
  "pkg-up": {
5052
- "version": "2.0.0",
5053
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
5054
- "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
5055
  "dev": true,
5056
  "requires": {
5057
- "find-up": "2.1.0"
5058
- },
5059
- "dependencies": {
5060
- "find-up": {
5061
- "version": "2.1.0",
5062
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
5063
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
5064
- "dev": true,
5065
- "requires": {
5066
- "locate-path": "2.0.0"
5067
- }
5068
- }
5069
  }
5070
  },
5071
  "plur": {
@@ -5094,6 +5350,12 @@
5094
  "supports-color": "6.1.0"
5095
  },
5096
  "dependencies": {
 
 
 
 
 
 
5097
  "supports-color": {
5098
  "version": "6.1.0",
5099
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -5112,9 +5374,9 @@
5112
  "dev": true
5113
  },
5114
  "prebuild-install": {
5115
- "version": "5.3.4",
5116
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.4.tgz",
5117
- "integrity": "sha512-AkKN+pf4fSEihjapLEEj8n85YIw/tN6BQqkhzbDc0RvEZGdkpJBGMUYx66AAMcPG2KzmPQS7Cm16an4HVBRRMA==",
5118
  "dev": true,
5119
  "optional": true,
5120
  "requires": {
@@ -5311,6 +5573,15 @@
5311
  "util-deprecate": "1.0.2"
5312
  }
5313
  },
 
 
 
 
 
 
 
 
 
5314
  "redent": {
5315
  "version": "1.0.0",
5316
  "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
@@ -5418,6 +5689,16 @@
5418
  "path-parse": "1.0.6"
5419
  }
5420
  },
 
 
 
 
 
 
 
 
 
 
5421
  "resolve-url": {
5422
  "version": "0.2.1",
5423
  "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -5441,28 +5722,12 @@
5441
  "dev": true
5442
  },
5443
  "rimraf": {
5444
- "version": "2.6.3",
5445
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
5446
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
5447
  "dev": true,
5448
  "requires": {
5449
  "glob": "7.1.6"
5450
- },
5451
- "dependencies": {
5452
- "glob": {
5453
- "version": "7.1.6",
5454
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
5455
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
5456
- "dev": true,
5457
- "requires": {
5458
- "fs.realpath": "1.0.0",
5459
- "inflight": "1.0.6",
5460
- "inherits": "2.0.4",
5461
- "minimatch": "3.0.4",
5462
- "once": "1.4.0",
5463
- "path-is-absolute": "1.0.1"
5464
- }
5465
- }
5466
  }
5467
  },
5468
  "rsyncwrapper": {
@@ -5610,9 +5875,9 @@
5610
  "dev": true
5611
  },
5612
  "simple-concat": {
5613
- "version": "1.0.0",
5614
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
5615
- "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
5616
  "dev": true,
5617
  "optional": true
5618
  },
@@ -5625,7 +5890,7 @@
5625
  "requires": {
5626
  "decompress-response": "4.2.1",
5627
  "once": "1.4.0",
5628
- "simple-concat": "1.0.0"
5629
  }
5630
  },
5631
  "slash": {
@@ -5667,12 +5932,6 @@
5667
  "requires": {
5668
  "is-extendable": "0.1.1"
5669
  }
5670
- },
5671
- "source-map": {
5672
- "version": "0.5.7",
5673
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
5674
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
5675
- "dev": true
5676
  }
5677
  }
5678
  },
@@ -5766,9 +6025,9 @@
5766
  }
5767
  },
5768
  "source-map": {
5769
- "version": "0.6.1",
5770
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5771
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5772
  "dev": true
5773
  },
5774
  "source-map-resolve": {
@@ -6063,7 +6322,7 @@
6063
  "css-select-base-adapter": "0.1.1",
6064
  "css-tree": "1.0.0-alpha.37",
6065
  "csso": "4.0.3",
6066
- "js-yaml": "3.13.1",
6067
  "mkdirp": "0.5.5",
6068
  "object.values": "1.1.1",
6069
  "sax": "1.2.4",
@@ -6094,7 +6353,7 @@
6094
  "chownr": "1.1.4",
6095
  "mkdirp-classic": "0.5.3",
6096
  "pump": "3.0.0",
6097
- "tar-stream": "2.1.2"
6098
  },
6099
  "dependencies": {
6100
  "bl": {
@@ -6121,9 +6380,9 @@
6121
  }
6122
  },
6123
  "tar-stream": {
6124
- "version": "2.1.2",
6125
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz",
6126
- "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==",
6127
  "dev": true,
6128
  "optional": true,
6129
  "requires": {
@@ -6380,6 +6639,12 @@
6380
  "through": "2.3.8"
6381
  }
6382
  },
 
 
 
 
 
 
6383
  "underscore": {
6384
  "version": "1.7.0",
6385
  "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
@@ -6523,6 +6788,15 @@
6523
  "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
6524
  "dev": true
6525
  },
 
 
 
 
 
 
 
 
 
6526
  "validate-npm-package-license": {
6527
  "version": "3.0.4",
6528
  "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -6682,7 +6956,7 @@
6682
  "requires": {
6683
  "archiver-utils": "1.3.0",
6684
  "compress-commons": "1.2.2",
6685
- "lodash": "4.17.15",
6686
  "readable-stream": "2.3.7"
6687
  }
6688
  }
1
  {
2
  "name": "wp-product-review",
3
+ "version": "3.7.10",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
41
  "dev": true
42
  },
43
  "ajv": {
44
+ "version": "6.12.3",
45
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
46
+ "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
47
  "dev": true,
48
  "requires": {
49
  "fast-deep-equal": "3.1.3",
108
  "archiver-utils": "1.3.0",
109
  "async": "2.6.3",
110
  "buffer-crc32": "0.2.13",
111
+ "glob": "7.1.6",
112
+ "lodash": "4.17.19",
113
  "readable-stream": "2.3.7",
114
  "tar-stream": "1.6.2",
115
  "walkdir": "0.0.11",
122
  "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
123
  "dev": true,
124
  "requires": {
125
+ "lodash": "4.17.19"
126
  }
127
  }
128
  }
133
  "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
134
  "dev": true,
135
  "requires": {
136
+ "glob": "7.1.6",
137
  "graceful-fs": "4.2.4",
138
  "lazystream": "1.0.0",
139
+ "lodash": "4.17.19",
140
  "normalize-path": "2.1.1",
141
  "readable-stream": "2.3.7"
142
  }
192
  "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
193
  "dev": true
194
  },
195
+ "array-each": {
196
+ "version": "1.0.1",
197
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
198
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
199
+ "dev": true
200
+ },
201
  "array-find-index": {
202
  "version": "1.0.2",
203
  "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
204
  "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
205
  "dev": true
206
  },
207
+ "array-slice": {
208
+ "version": "1.1.0",
209
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
210
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
211
+ "dev": true
212
+ },
213
  "array-union": {
214
  "version": "1.0.2",
215
  "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
277
  "dev": true
278
  },
279
  "autoprefixer": {
280
+ "version": "9.8.5",
281
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.5.tgz",
282
+ "integrity": "sha512-C2p5KkumJlsTHoNv9w31NrBRgXhf6eCMteJuHZi2xhkgC+5Vm40MEtCKPhc0qdgAOhox0YPy1SQHTAky05UoKg==",
283
  "dev": true,
284
  "requires": {
285
+ "browserslist": "4.13.0",
286
+ "caniuse-lite": "1.0.30001104",
287
+ "colorette": "1.2.1",
288
  "normalize-range": "0.1.2",
289
  "num2fraction": "1.2.2",
290
  "postcss": "7.0.32",
698
  }
699
  },
700
  "browserslist": {
701
+ "version": "4.13.0",
702
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz",
703
+ "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==",
704
  "dev": true,
705
  "requires": {
706
+ "caniuse-lite": "1.0.30001104",
707
+ "electron-to-chromium": "1.3.502",
708
+ "escalade": "3.0.2",
709
+ "node-releases": "1.1.59"
710
  }
711
  },
712
  "buffer": {
779
  "graceful-fs": "4.2.4",
780
  "mkdirp": "0.5.5",
781
  "object-assign": "4.1.1",
782
+ "rimraf": "2.7.1"
783
  },
784
  "dependencies": {
785
  "mkdirp": {
790
  "requires": {
791
  "minimist": "1.2.5"
792
  }
793
+ },
794
+ "rimraf": {
795
+ "version": "2.7.1",
796
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
797
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
798
+ "dev": true,
799
+ "requires": {
800
+ "glob": "7.1.6"
801
+ }
802
  }
803
  }
804
  },
850
  }
851
  },
852
  "caniuse-lite": {
853
+ "version": "1.0.30001104",
854
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001104.tgz",
855
+ "integrity": "sha512-pkpCg7dmI/a7WcqM2yfdOiT4Xx5tzyoHAXWsX5/HxZ3TemwDZs0QXdqbE0UPLPVy/7BeK7693YfzfRYfu1YVpg==",
856
  "dev": true
857
  },
858
  "caseless": {
922
  "requires": {
923
  "exit": "0.1.2",
924
  "glob": "7.1.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
925
  }
926
  },
927
  "clone-response": {
992
  "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
993
  "dev": true
994
  },
995
+ "colorette": {
996
+ "version": "1.2.1",
997
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
998
+ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==",
999
+ "dev": true
1000
+ },
1001
  "colors": {
1002
  "version": "1.1.2",
1003
  "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
1202
  "requires": {
1203
  "mdn-data": "2.0.4",
1204
  "source-map": "0.6.1"
1205
+ },
1206
+ "dependencies": {
1207
+ "source-map": {
1208
+ "version": "0.6.1",
1209
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1210
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1211
+ "dev": true,
1212
+ "optional": true
1213
+ }
1214
  }
1215
  },
1216
  "css-what": {
1303
  "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==",
1304
  "dev": true,
1305
  "optional": true
1306
+ },
1307
+ "source-map": {
1308
+ "version": "0.6.1",
1309
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1310
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1311
+ "dev": true,
1312
+ "optional": true
1313
  }
1314
  }
1315
  },
1347
  }
1348
  },
1349
  "dateformat": {
1350
+ "version": "3.0.3",
1351
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
1352
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
1353
+ "dev": true
 
 
 
 
1354
  },
1355
  "debug": {
1356
  "version": "2.6.9",
1557
  "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
1558
  "dev": true
1559
  },
1560
+ "detect-file": {
1561
+ "version": "1.0.0",
1562
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
1563
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
1564
+ "dev": true
1565
+ },
1566
  "detect-libc": {
1567
  "version": "1.0.3",
1568
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
1727
  }
1728
  },
1729
  "electron-to-chromium": {
1730
+ "version": "1.3.502",
1731
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.502.tgz",
1732
+ "integrity": "sha512-TIeXOaHAvfP7FemGUtAJxStmOc1YFGWFNqdey/4Nk41L9b1nMmDVDGNMIWhZJvOfJxix6Cv5FGEnBK+yvw3UTg==",
1733
  "dev": true
1734
  },
1735
  "encoding": {
1736
+ "version": "0.1.13",
1737
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
1738
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
1739
  "dev": true,
1740
  "requires": {
1741
+ "iconv-lite": "0.6.2"
1742
+ },
1743
+ "dependencies": {
1744
+ "iconv-lite": {
1745
+ "version": "0.6.2",
1746
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
1747
+ "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
1748
+ "dev": true,
1749
+ "requires": {
1750
+ "safer-buffer": "2.1.2"
1751
+ }
1752
+ }
1753
  }
1754
  },
1755
  "end-of-stream": {
1803
  "has-symbols": "1.0.1",
1804
  "is-callable": "1.2.0",
1805
  "is-regex": "1.1.0",
1806
+ "object-inspect": "1.8.0",
1807
  "object-keys": "1.1.1",
1808
  "object.assign": "4.1.0",
1809
  "string.prototype.trimend": "1.0.1",
1821
  "is-symbol": "1.0.3"
1822
  }
1823
  },
1824
+ "escalade": {
1825
+ "version": "3.0.2",
1826
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
1827
+ "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==",
1828
+ "dev": true
1829
+ },
1830
  "escape-string-regexp": {
1831
  "version": "1.0.5",
1832
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1855
  "execa": "0.7.0",
1856
  "p-finally": "1.0.0",
1857
  "pify": "3.0.0",
1858
+ "rimraf": "2.7.1",
1859
  "tempfile": "2.0.0"
1860
  },
1861
  "dependencies": {
1865
  "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
1866
  "dev": true,
1867
  "optional": true
1868
+ },
1869
+ "rimraf": {
1870
+ "version": "2.7.1",
1871
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
1872
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
1873
+ "dev": true,
1874
+ "optional": true,
1875
+ "requires": {
1876
+ "glob": "7.1.6"
1877
+ }
1878
  }
1879
  }
1880
  },
1951
  "dev": true,
1952
  "optional": true
1953
  },
1954
+ "expand-tilde": {
1955
+ "version": "2.0.2",
1956
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
1957
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
1958
+ "dev": true,
1959
+ "requires": {
1960
+ "homedir-polyfill": "1.0.3"
1961
+ }
1962
+ },
1963
  "ext-list": {
1964
  "version": "2.2.2",
1965
  "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
2106
  "is-glob": "4.0.1",
2107
  "merge2": "1.4.1",
2108
  "micromatch": "3.1.10"
2109
+ },
2110
+ "dependencies": {
2111
+ "is-glob": {
2112
+ "version": "4.0.1",
2113
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
2114
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
2115
+ "dev": true,
2116
+ "requires": {
2117
+ "is-extglob": "2.1.1"
2118
+ }
2119
+ }
2120
  }
2121
  },
2122
  "fast-json-stable-stringify": {
2249
  }
2250
  }
2251
  },
2252
+ "fined": {
2253
+ "version": "1.2.0",
2254
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
2255
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
2256
+ "dev": true,
2257
+ "requires": {
2258
+ "expand-tilde": "2.0.2",
2259
+ "is-plain-object": "2.0.4",
2260
+ "object.defaults": "1.1.0",
2261
+ "object.pick": "1.3.0",
2262
+ "parse-filepath": "1.0.2"
2263
+ }
2264
+ },
2265
+ "flagged-respawn": {
2266
+ "version": "1.0.1",
2267
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
2268
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
2269
+ "dev": true
2270
+ },
2271
  "for-in": {
2272
  "version": "1.0.2",
2273
  "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
2274
  "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
2275
  "dev": true
2276
  },
2277
+ "for-own": {
2278
+ "version": "1.0.0",
2279
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
2280
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
2281
+ "dev": true,
2282
+ "requires": {
2283
+ "for-in": "1.0.2"
2284
+ }
2285
+ },
2286
  "forever-agent": {
2287
  "version": "0.6.1",
2288
  "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
2422
  "integrity": "sha512-vNhWcqXEtZPs5Ft1ReA34g7ByWotpcOIeJvXVy2jF3/G2U9v6W0wG4Z4hXzcU8R//jArqkgHcVCGgGqa4vxVlQ==",
2423
  "dev": true,
2424
  "requires": {
2425
+ "encoding": "0.1.13",
2426
  "readable-stream": "3.6.0",
2427
  "safe-buffer": "5.1.2"
2428
  },
2503
  "optional": true
2504
  },
2505
  "glob": {
2506
+ "version": "7.1.6",
2507
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
2508
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
2509
  "dev": true,
2510
  "requires": {
2511
  "fs.realpath": "1.0.0",
2524
  "requires": {
2525
  "is-glob": "3.1.0",
2526
  "path-dirname": "1.0.2"
 
 
 
 
 
 
 
 
 
 
 
2527
  }
2528
  },
2529
  "glob-to-regexp": {
2532
  "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
2533
  "dev": true
2534
  },
2535
+ "global-modules": {
2536
+ "version": "1.0.0",
2537
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
2538
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
2539
+ "dev": true,
2540
+ "requires": {
2541
+ "global-prefix": "1.0.2",
2542
+ "is-windows": "1.0.2",
2543
+ "resolve-dir": "1.0.1"
2544
+ }
2545
+ },
2546
+ "global-prefix": {
2547
+ "version": "1.0.2",
2548
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
2549
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
2550
+ "dev": true,
2551
+ "requires": {
2552
+ "expand-tilde": "2.0.2",
2553
+ "homedir-polyfill": "1.0.3",
2554
+ "ini": "1.3.5",
2555
+ "is-windows": "1.0.2",
2556
+ "which": "1.3.1"
2557
+ }
2558
+ },
2559
  "globby": {
2560
  "version": "8.0.2",
2561
  "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
2571
  "slash": "1.0.0"
2572
  },
2573
  "dependencies": {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2574
  "ignore": {
2575
  "version": "3.3.10",
2576
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
2592
  "dev": true,
2593
  "requires": {
2594
  "glob": "7.1.6",
2595
+ "lodash": "4.17.19",
2596
  "minimatch": "3.0.4"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2597
  }
2598
  },
2599
  "gonzales-pe": {
2657
  "dev": true
2658
  },
2659
  "grunt": {
2660
+ "version": "1.2.1",
2661
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.2.1.tgz",
2662
+ "integrity": "sha512-zgJjn9N56tScvRt/y0+1QA+zDBnKTrkpyeSBqQPLcZvbqTD/oyGMrdZQXmm6I3828s+FmPvxc3Xv+lgKFtudOw==",
2663
  "dev": true,
2664
  "requires": {
2665
+ "dateformat": "3.0.3",
 
2666
  "eventemitter2": "0.4.14",
2667
  "exit": "0.1.2",
2668
  "findup-sync": "0.3.0",
2669
+ "glob": "7.1.6",
2670
+ "grunt-cli": "1.3.2",
2671
  "grunt-known-options": "1.1.1",
2672
  "grunt-legacy-log": "2.0.0",
2673
  "grunt-legacy-util": "1.1.1",
2674
  "iconv-lite": "0.4.24",
2675
+ "js-yaml": "3.14.0",
2676
  "minimatch": "3.0.4",
2677
  "mkdirp": "1.0.4",
2678
  "nopt": "3.0.6",
2679
+ "rimraf": "3.0.2"
 
2680
  },
2681
  "dependencies": {
2682
  "grunt-cli": {
2683
+ "version": "1.3.2",
2684
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz",
2685
+ "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==",
2686
  "dev": true,
2687
  "requires": {
 
2688
  "grunt-known-options": "1.1.1",
2689
+ "interpret": "1.1.0",
2690
+ "liftoff": "2.5.0",
2691
+ "nopt": "4.0.3",
2692
+ "v8flags": "3.1.3"
2693
+ },
2694
+ "dependencies": {
2695
+ "nopt": {
2696
+ "version": "4.0.3",
2697
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
2698
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
2699
+ "dev": true,
2700
+ "requires": {
2701
+ "abbrev": "1.1.1",
2702
+ "osenv": "0.1.5"
2703
+ }
2704
+ }
2705
  }
 
 
 
 
 
 
2706
  }
2707
  }
2708
  },
2749
  "archiver": "1.3.0",
2750
  "chalk": "1.1.3",
2751
  "iltorb": "2.4.5",
2752
+ "lodash": "4.17.19",
2753
  "pretty-bytes": "4.0.2",
2754
  "stream-buffers": "2.2.0"
2755
  },
2862
  "requires": {
2863
  "async": "2.6.3",
2864
  "gaze": "1.1.3",
2865
+ "lodash": "4.17.19",
2866
  "tiny-lr": "1.1.1"
2867
  },
2868
  "dependencies": {
2872
  "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
2873
  "dev": true,
2874
  "requires": {
2875
+ "lodash": "4.17.19"
2876
  }
2877
  }
2878
  }
2898
  "colors": "1.1.2",
2899
  "grunt-legacy-log-utils": "2.0.1",
2900
  "hooker": "0.2.3",
2901
+ "lodash": "4.17.19"
2902
  }
2903
  },
2904
  "grunt-legacy-log-utils": {
2908
  "dev": true,
2909
  "requires": {
2910
  "chalk": "2.4.2",
2911
+ "lodash": "4.17.19"
2912
  }
2913
  },
2914
  "grunt-legacy-util": {
2921
  "exit": "0.1.2",
2922
  "getobject": "0.1.0",
2923
  "hooker": "0.2.3",
2924
+ "lodash": "4.17.19",
2925
  "underscore.string": "3.3.5",
2926
  "which": "1.3.1"
2927
  }
2939
  "dev": true,
2940
  "requires": {
2941
  "async": "1.5.2",
2942
+ "rimraf": "2.7.1"
2943
+ },
2944
+ "dependencies": {
2945
+ "rimraf": {
2946
+ "version": "2.7.1",
2947
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
2948
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
2949
+ "dev": true,
2950
+ "requires": {
2951
+ "glob": "7.1.6"
2952
+ }
2953
+ }
2954
  }
2955
  },
2956
  "grunt-phpcbf": {
3258
  "version": "github:codeinwp/grunt-plugin-fleet#922540b800fafe8a89d60e82699afb8073c1b7c2",
3259
  "dev": true,
3260
  "requires": {
3261
+ "autoprefixer": "9.8.5",
3262
  "grunt": "1.0.4",
3263
  "grunt-cachebuster": "0.1.7",
3264
  "grunt-checktextdomain": "1.0.1",
3285
  "time-grunt": "1.4.0"
3286
  },
3287
  "dependencies": {
3288
+ "dateformat": {
3289
+ "version": "1.0.12",
3290
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
3291
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
3292
+ "dev": true,
3293
+ "requires": {
3294
+ "get-stdin": "4.0.1",
3295
+ "meow": "3.7.0"
3296
+ }
3297
+ },
3298
+ "glob": {
3299
+ "version": "7.0.6",
3300
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
3301
+ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
3302
+ "dev": true,
3303
+ "requires": {
3304
+ "fs.realpath": "1.0.0",
3305
+ "inflight": "1.0.6",
3306
+ "inherits": "2.0.4",
3307
+ "minimatch": "3.0.4",
3308
+ "once": "1.4.0",
3309
+ "path-is-absolute": "1.0.1"
3310
+ }
3311
+ },
3312
  "grunt": {
3313
  "version": "1.0.4",
3314
  "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz",
3348
  }
3349
  }
3350
  },
3351
+ "js-yaml": {
3352
+ "version": "3.13.1",
3353
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
3354
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
3355
+ "dev": true,
3356
+ "requires": {
3357
+ "argparse": "1.0.10",
3358
+ "esprima": "4.0.1"
3359
+ }
3360
+ },
3361
  "mkdirp": {
3362
  "version": "0.5.5",
3363
  "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
3372
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
3373
  "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
3374
  "dev": true
3375
+ },
3376
+ "rimraf": {
3377
+ "version": "2.6.3",
3378
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
3379
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
3380
+ "dev": true,
3381
+ "requires": {
3382
+ "glob": "7.1.6"
3383
+ },
3384
+ "dependencies": {
3385
+ "glob": {
3386
+ "version": "7.1.6",
3387
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
3388
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
3389
+ "dev": true,
3390
+ "requires": {
3391
+ "fs.realpath": "1.0.0",
3392
+ "inflight": "1.0.6",
3393
+ "inherits": "2.0.4",
3394
+ "minimatch": "3.0.4",
3395
+ "once": "1.4.0",
3396
+ "path-is-absolute": "1.0.1"
3397
+ }
3398
+ }
3399
+ }
3400
  }
3401
  }
3402
  },
3421
  "source-map": "0.6.1",
3422
  "supports-color": "5.5.0"
3423
  }
3424
+ },
3425
+ "source-map": {
3426
+ "version": "0.6.1",
3427
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3428
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3429
+ "dev": true
3430
  }
3431
  }
3432
  },
3446
  "dev": true,
3447
  "requires": {
3448
  "fs-extra": "6.0.1",
3449
+ "glob": "7.1.6",
3450
  "md5-file": "2.0.7"
3451
  }
3452
  },
3462
  "integrity": "sha512-mpcf8tcEtRBeMVkZpysIIDbv6sW3S0R5MO4+ysMNb7i6LNSpvyTePKWE/eOnLdfyXIuqxtP/H2Z4Mgkjl2BUBw==",
3463
  "dev": true,
3464
  "requires": {
3465
+ "grunt": "1.2.1",
3466
  "semver": "6.3.0"
3467
  },
3468
  "dependencies": {
3482
  "requires": {
3483
  "cssbeautify": "0.3.1",
3484
  "csscomb": "3.1.8",
3485
+ "lodash": "4.17.19"
3486
  }
3487
  },
3488
  "grunt-wp-i18n": {
3491
  "integrity": "sha512-CJNbEKeBeOSAPeaJ9B8iCgSwtaG63UR9/uT46a4OsIqnFhOJpeAi138JTlvjfIbnDVoBrzvdrKJe1svveLjUtA==",
3492
  "dev": true,
3493
  "requires": {
3494
+ "grunt": "1.2.1",
3495
  "node-wp-i18n": "1.2.3"
3496
  }
3497
  },
3513
  "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
3514
  "dev": true,
3515
  "requires": {
3516
+ "ajv": "6.12.3",
3517
  "har-schema": "2.0.0"
3518
  }
3519
  },
3606
  }
3607
  }
3608
  },
3609
+ "homedir-polyfill": {
3610
+ "version": "1.0.3",
3611
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
3612
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
3613
+ "dev": true,
3614
+ "requires": {
3615
+ "parse-passwd": "1.0.0"
3616
+ }
3617
+ },
3618
  "hooker": {
3619
  "version": "0.2.3",
3620
  "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
3744
  "detect-libc": "1.0.3",
3745
  "nan": "2.14.1",
3746
  "npmlog": "4.1.2",
3747
+ "prebuild-install": "5.3.5",
3748
  "which-pm-runs": "1.0.0"
3749
  }
3750
  },
3861
  "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
3862
  "dev": true
3863
  },
3864
+ "interpret": {
3865
+ "version": "1.1.0",
3866
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
3867
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
3868
+ "dev": true
3869
+ },
3870
  "into-stream": {
3871
  "version": "3.1.0",
3872
  "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
3884
  "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==",
3885
  "dev": true
3886
  },
3887
+ "is-absolute": {
3888
+ "version": "1.0.0",
3889
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
3890
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
3891
+ "dev": true,
3892
+ "requires": {
3893
+ "is-relative": "1.0.0",
3894
+ "is-windows": "1.0.2"
3895
+ }
3896
+ },
3897
  "is-accessor-descriptor": {
3898
  "version": "0.1.6",
3899
  "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
4015
  }
4016
  },
4017
  "is-glob": {
4018
+ "version": "3.1.0",
4019
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
4020
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
4021
  "dev": true,
4022
  "requires": {
4023
  "is-extglob": "2.1.1"
4093
  "has-symbols": "1.0.1"
4094
  }
4095
  },
4096
+ "is-relative": {
4097
+ "version": "1.0.0",
4098
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
4099
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
4100
+ "dev": true,
4101
+ "requires": {
4102
+ "is-unc-path": "1.0.0"
4103
+ }
4104
+ },
4105
  "is-retry-allowed": {
4106
  "version": "1.2.0",
4107
  "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
4139
  "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
4140
  "dev": true
4141
  },
4142
+ "is-unc-path": {
4143
+ "version": "1.0.0",
4144
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
4145
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
4146
+ "dev": true,
4147
+ "requires": {
4148
+ "unc-path-regex": "0.1.2"
4149
+ }
4150
+ },
4151
  "is-utf8": {
4152
  "version": "0.2.1",
4153
  "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
4213
  }
4214
  },
4215
  "js-yaml": {
4216
+ "version": "3.14.0",
4217
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
4218
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
4219
  "dev": true,
4220
  "requires": {
4221
  "argparse": "1.0.10",
4238
  "console-browserify": "1.1.0",
4239
  "exit": "0.1.2",
4240
  "htmlparser2": "3.8.3",
4241
+ "lodash": "4.17.19",
4242
  "minimatch": "3.0.4",
4243
  "shelljs": "0.3.0",
4244
  "strip-json-comments": "1.0.4"
4323
  "readable-stream": "2.3.7"
4324
  }
4325
  },
4326
+ "liftoff": {
4327
+ "version": "2.5.0",
4328
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
4329
+ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
4330
+ "dev": true,
4331
+ "requires": {
4332
+ "extend": "3.0.2",
4333
+ "findup-sync": "2.0.0",
4334
+ "fined": "1.2.0",
4335
+ "flagged-respawn": "1.0.1",
4336
+ "is-plain-object": "2.0.4",
4337
+ "object.map": "1.0.1",
4338
+ "rechoir": "0.6.2",
4339
+ "resolve": "1.17.0"
4340
+ },
4341
+ "dependencies": {
4342
+ "findup-sync": {
4343
+ "version": "2.0.0",
4344
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
4345
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
4346
+ "dev": true,
4347
+ "requires": {
4348
+ "detect-file": "1.0.0",
4349
+ "is-glob": "3.1.0",
4350
+ "micromatch": "3.1.10",
4351
+ "resolve-dir": "1.0.1"
4352
+ }
4353
+ }
4354
+ }
4355
+ },
4356
  "livereload-js": {
4357
  "version": "2.4.0",
4358
  "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
4420
  "arrify": "1.0.1",
4421
  "multimatch": "2.1.0",
4422
  "pkg-up": "1.0.0"
 
 
 
 
 
 
 
 
 
 
 
4423
  }
4424
  },
4425
  "load-json-file": {
4454
  }
4455
  }
4456
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4457
  "lodash": {
4458
+ "version": "4.17.19",
4459
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
4460
+ "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
4461
  "dev": true
4462
  },
4463
  "logalot": {
4534
  }
4535
  }
4536
  },
4537
+ "make-iterator": {
4538
+ "version": "1.0.1",
4539
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
4540
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
4541
+ "dev": true,
4542
+ "requires": {
4543
+ "kind-of": "6.0.3"
4544
+ }
4545
+ },
4546
  "map-cache": {
4547
  "version": "0.2.2",
4548
  "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
4761
  }
4762
  },
4763
  "node-releases": {
4764
+ "version": "1.1.59",
4765
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.59.tgz",
4766
+ "integrity": "sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw==",
4767
  "dev": true
4768
  },
4769
  "node-uuid": {
4780
  "requires": {
4781
  "bluebird": "3.7.2",
4782
  "gettext-parser": "3.1.1",
4783
+ "glob": "7.1.6",
4784
+ "lodash": "4.17.19",
4785
  "minimist": "1.2.5",
4786
  "mkdirp": "0.5.5",
4787
  "tmp": "0.0.33"
4977
  }
4978
  },
4979
  "object-inspect": {
4980
+ "version": "1.8.0",
4981
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
4982
+ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
4983
  "dev": true
4984
  },
4985
  "object-keys": {
5009
  "object-keys": "1.1.1"
5010
  }
5011
  },
5012
+ "object.defaults": {
5013
+ "version": "1.1.0",
5014
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
5015
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
5016
+ "dev": true,
5017
+ "requires": {
5018
+ "array-each": "1.0.1",
5019
+ "array-slice": "1.1.0",
5020
+ "for-own": "1.0.0",
5021
+ "isobject": "3.0.1"
5022
+ }
5023
+ },
5024
  "object.getownpropertydescriptors": {
5025
  "version": "2.1.0",
5026
  "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
5032
  "es-abstract": "1.17.6"
5033
  }
5034
  },
5035
+ "object.map": {
5036
+ "version": "1.0.1",
5037
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
5038
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
5039
+ "dev": true,
5040
+ "requires": {
5041
+ "for-own": "1.0.0",
5042
+ "make-iterator": "1.0.1"
5043
+ }
5044
+ },
5045
  "object.pick": {
5046
  "version": "1.3.0",
5047
  "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
5095
  "arch": "2.1.2"
5096
  }
5097
  },
5098
+ "os-homedir": {
5099
+ "version": "1.0.2",
5100
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
5101
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
5102
+ "dev": true
5103
+ },
5104
  "os-tmpdir": {
5105
  "version": "1.0.2",
5106
  "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
5107
  "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
5108
  "dev": true
5109
  },
5110
+ "osenv": {
5111
+ "version": "0.1.5",
5112
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
5113
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
5114
+ "dev": true,
5115
+ "requires": {
5116
+ "os-homedir": "1.0.2",
5117
+ "os-tmpdir": "1.0.2"
5118
+ }
5119
+ },
5120
  "p-cancelable": {
5121
  "version": "0.3.0",
5122
  "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
5147
  "dev": true,
5148
  "optional": true
5149
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5150
  "p-map": {
5151
  "version": "1.2.0",
5152
  "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
5185
  "p-finally": "1.0.0"
5186
  }
5187
  },
5188
+ "parse-filepath": {
5189
+ "version": "1.0.2",
5190
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
5191
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
5192
+ "dev": true,
5193
+ "requires": {
5194
+ "is-absolute": "1.0.0",
5195
+ "map-cache": "0.2.2",
5196
+ "path-root": "0.1.1"
5197
+ }
5198
  },
5199
  "parse-json": {
5200
  "version": "2.2.0",
5211
  "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=",
5212
  "dev": true
5213
  },
5214
+ "parse-passwd": {
5215
+ "version": "1.0.0",
5216
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
5217
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
5218
+ "dev": true
5219
+ },
5220
  "pascalcase": {
5221
  "version": "0.1.1",
5222
  "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
5256
  "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
5257
  "dev": true
5258
  },
5259
+ "path-root": {
5260
+ "version": "0.1.1",
5261
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
5262
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
5263
+ "dev": true,
5264
+ "requires": {
5265
+ "path-root-regex": "0.1.2"
5266
+ }
5267
+ },
5268
+ "path-root-regex": {
5269
+ "version": "0.1.2",
5270
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
5271
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
5272
+ "dev": true
5273
+ },
5274
  "path-type": {
5275
  "version": "1.1.0",
5276
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
5316
  }
5317
  },
5318
  "pkg-up": {
5319
+ "version": "1.0.0",
5320
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
5321
+ "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
5322
  "dev": true,
5323
  "requires": {
5324
+ "find-up": "1.1.2"
 
 
 
 
 
 
 
 
 
 
 
5325
  }
5326
  },
5327
  "plur": {
5350
  "supports-color": "6.1.0"
5351
  },
5352
  "dependencies": {
5353
+ "source-map": {
5354
+ "version": "0.6.1",
5355
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
5356
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
5357
+ "dev": true
5358
+ },
5359
  "supports-color": {
5360
  "version": "6.1.0",
5361
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
5374
  "dev": true
5375
  },
5376
  "prebuild-install": {
5377
+ "version": "5.3.5",
5378
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.5.tgz",
5379
+ "integrity": "sha512-YmMO7dph9CYKi5IR/BzjOJlRzpxGGVo1EsLSUZ0mt/Mq0HWZIHOKHHcHdT69yG54C9m6i45GpItwRHpk0Py7Uw==",
5380
  "dev": true,
5381
  "optional": true,
5382
  "requires": {
5573
  "util-deprecate": "1.0.2"
5574
  }
5575
  },
5576
+ "rechoir": {
5577
+ "version": "0.6.2",
5578
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
5579
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
5580
+ "dev": true,
5581
+ "requires": {
5582
+ "resolve": "1.17.0"
5583
+ }
5584
+ },
5585
  "redent": {
5586
  "version": "1.0.0",
5587
  "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
5689
  "path-parse": "1.0.6"
5690
  }
5691
  },
5692
+ "resolve-dir": {
5693
+ "version": "1.0.1",
5694
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
5695
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
5696
+ "dev": true,
5697
+ "requires": {
5698
+ "expand-tilde": "2.0.2",
5699
+ "global-modules": "1.0.0"
5700
+ }
5701
+ },
5702
  "resolve-url": {
5703
  "version": "0.2.1",
5704
  "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
5722
  "dev": true
5723
  },
5724
  "rimraf": {
5725
+ "version": "3.0.2",
5726
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
5727
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
5728
  "dev": true,
5729
  "requires": {
5730
  "glob": "7.1.6"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5731
  }
5732
  },
5733
  "rsyncwrapper": {
5875
  "dev": true
5876
  },
5877
  "simple-concat": {
5878
+ "version": "1.0.1",
5879
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
5880
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
5881
  "dev": true,
5882
  "optional": true
5883
  },
5890
  "requires": {
5891
  "decompress-response": "4.2.1",
5892
  "once": "1.4.0",
5893
+ "simple-concat": "1.0.1"
5894
  }
5895
  },
5896
  "slash": {
5932
  "requires": {
5933
  "is-extendable": "0.1.1"
5934
  }
 
 
 
 
 
 
5935
  }
5936
  }
5937
  },
6025
  }
6026
  },
6027
  "source-map": {
6028
+ "version": "0.5.7",
6029
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
6030
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
6031
  "dev": true
6032
  },
6033
  "source-map-resolve": {
6322
  "css-select-base-adapter": "0.1.1",
6323
  "css-tree": "1.0.0-alpha.37",
6324
  "csso": "4.0.3",
6325
+ "js-yaml": "3.14.0",
6326
  "mkdirp": "0.5.5",
6327
  "object.values": "1.1.1",
6328
  "sax": "1.2.4",
6353
  "chownr": "1.1.4",
6354
  "mkdirp-classic": "0.5.3",
6355
  "pump": "3.0.0",
6356
+ "tar-stream": "2.1.3"
6357
  },
6358
  "dependencies": {
6359
  "bl": {
6380
  }
6381
  },
6382
  "tar-stream": {
6383
+ "version": "2.1.3",
6384
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz",
6385
+ "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==",
6386
  "dev": true,
6387
  "optional": true,
6388
  "requires": {
6639
  "through": "2.3.8"
6640
  }
6641
  },
6642
+ "unc-path-regex": {
6643
+ "version": "0.1.2",
6644
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
6645
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
6646
+ "dev": true
6647
+ },
6648
  "underscore": {
6649
  "version": "1.7.0",
6650
  "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
6788
  "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
6789
  "dev": true
6790
  },
6791
+ "v8flags": {
6792
+ "version": "3.1.3",
6793
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz",
6794
+ "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==",
6795
+ "dev": true,
6796
+ "requires": {
6797
+ "homedir-polyfill": "1.0.3"
6798
+ }
6799
+ },
6800
  "validate-npm-package-license": {
6801
  "version": "3.0.4",
6802
  "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
6956
  "requires": {
6957
  "archiver-utils": "1.3.0",
6958
  "compress-commons": "1.2.2",
6959
+ "lodash": "4.17.19",
6960
  "readable-stream": "2.3.7"
6961
  }
6962
  }
readme.md CHANGED
@@ -22,7 +22,7 @@ Easily turn your basic posts into in-depth reviews with ratings, pros and cons,
22
 
23
  1. For updates follow https://twitter.com/themeisle.
24
 
25
- If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
26
 
27
 
28
  **WP Product Review provides following features**
@@ -37,22 +37,29 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
37
  **Please note that WP Product Review PRO has been retired and is no longer available**
38
 
39
  ## Changelog ##
40
- ### 3.7.9 - 2020-06-15 ###
41
-
42
- * [Fix] Schema.org in both the new and classic editor
43
- * [Fix] Do not display reviews in content outside the loop
44
-
45
-
46
- ### 3.7.8 - 2020-05-22 ###
47
-
48
- * [Fix] Sanitize values
49
-
50
-
51
- ### 3.7.7 - 2020-05-21 ###
52
-
53
- * [Fix] Security vulnerability
54
-
55
-
 
 
 
 
 
 
 
56
  ### 3.7.6 - 2020-05-14 ###
57
 
58
  * - [Fix] Security vulnerability
22
 
23
  1. For updates follow https://twitter.com/themeisle.
24
 
25
+ If you wanna learn more about the <a href="https://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="https://www.codeinwp.com/blog/best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
26
 
27
 
28
  **WP Product Review provides following features**
37
  **Please note that WP Product Review PRO has been retired and is no longer available**
38
 
39
  ## Changelog ##
40
+ ### 3.7.10 - 2020-06-24 ###
41
+
42
+ * [Fix] Load schema.org just for PHP 7.0 and above
43
+ * [Fix] Take into account the rating scale option for schema.org
44
+ * [Fix] Dequeue jquery-ui-slider when not used
45
+
46
+
47
+ ### 3.7.9 - 2020-06-15 ###
48
+
49
+ * [Fix] Schema.org in both the new and classic editor
50
+ * [Fix] Do not display reviews in content outside the loop
51
+
52
+
53
+ ### 3.7.8 - 2020-05-22 ###
54
+
55
+ * [Fix] Sanitize values
56
+
57
+
58
+ ### 3.7.7 - 2020-05-21 ###
59
+
60
+ * [Fix] Security vulnerability
61
+
62
+
63
  ### 3.7.6 - 2020-05-14 ###
64
 
65
  * - [Fix] Security vulnerability
readme.txt CHANGED
@@ -22,7 +22,7 @@ Easily turn your basic posts into in-depth reviews with ratings, pros and cons,
22
 
23
  1. For updates follow https://twitter.com/themeisle.
24
 
25
- If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
26
 
27
 
28
  **WP Product Review provides following features**
@@ -37,22 +37,29 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
37
  **Please note that WP Product Review PRO has been retired and is no longer available**
38
 
39
  == Changelog ==
40
- = 3.7.9 - 2020-06-15 =
41
-
42
- * [Fix] Schema.org in both the new and classic editor
43
- * [Fix] Do not display reviews in content outside the loop
44
-
45
-
46
- = 3.7.8 - 2020-05-22 =
47
-
48
- * [Fix] Sanitize values
49
-
50
-
51
- = 3.7.7 - 2020-05-21 =
52
-
53
- * [Fix] Security vulnerability
54
-
55
-
 
 
 
 
 
 
 
56
  = 3.7.6 - 2020-05-14 =
57
 
58
  * - [Fix] Security vulnerability
22
 
23
  1. For updates follow https://twitter.com/themeisle.
24
 
25
+ If you wanna learn more about the <a href="https://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="https://www.codeinwp.com/blog/best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
26
 
27
 
28
  **WP Product Review provides following features**
37
  **Please note that WP Product Review PRO has been retired and is no longer available**
38
 
39
  == Changelog ==
40
+ = 3.7.10 - 2020-06-24 =
41
+
42
+ * [Fix] Load schema.org just for PHP 7.0 and above
43
+ * [Fix] Take into account the rating scale option for schema.org
44
+ * [Fix] Dequeue jquery-ui-slider when not used
45
+
46
+
47
+ = 3.7.9 - 2020-06-15 =
48
+
49
+ * [Fix] Schema.org in both the new and classic editor
50
+ * [Fix] Do not display reviews in content outside the loop
51
+
52
+
53
+ = 3.7.8 - 2020-05-22 =
54
+
55
+ * [Fix] Sanitize values
56
+
57
+
58
+ = 3.7.7 - 2020-05-21 =
59
+
60
+ * [Fix] Security vulnerability
61
+
62
+
63
  = 3.7.6 - 2020-05-14 =
64
 
65
  * - [Fix] Security vulnerability
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"class-wppr-autoloader.php":"c7f7f3dd52445edb5f7367ba7b31281f","class-wppr-recursive-filter.php":"6c74b0e7c04529d797ae9689d9a44c8d","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"35d120b0fb6d7aec7593b22a7a823fe0"}
1
+ {"class-wppr-autoloader.php":"c7f7f3dd52445edb5f7367ba7b31281f","class-wppr-recursive-filter.php":"6c74b0e7c04529d797ae9689d9a44c8d","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"014e63887b2d6a83f17dfef87ca9ff7b"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit1db2d309a004db78e14e0be46d1fccc0::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInitab0fc08899d8816390513a66c8a27950::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit6ed738e5975ab224f2715f1f60d3824e::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit0e5107a0dff2124a84d3097301e010e9
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire0e5107a0dff2124a84d3097301e010e9($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire0e5107a0dff2124a84d3097301e010e9($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit1db2d309a004db78e14e0be46d1fccc0
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit1db2d309a004db78e14e0be46d1fccc0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit1db2d309a004db78e14e0be46d1fccc0', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequire1db2d309a004db78e14e0be46d1fccc0($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequire1db2d309a004db78e14e0be46d1fccc0($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInitab0fc08899d8816390513a66c8a27950 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitab0fc08899d8816390513a66c8a27950 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitab0fc08899d8816390513a66c8a27950', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitab0fc08899d8816390513a66c8a27950', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit6ed738e5975ab224f2715f1f60d3824e {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit6ed738e5975ab224f2715f1f60d3824e', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit6ed738e5975ab224f2715f1f60d3824e', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
wp-product-review.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
- * Version: 3.7.9
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
@@ -66,7 +66,7 @@ register_deactivation_hook( __FILE__, 'deactivate_wppr' );
66
  */
67
  function run_wppr() {
68
 
69
- define( 'WPPR_LITE_VERSION', '3.7.9' );
70
  define( 'WPPR_PATH', dirname( __FILE__ ) );
71
  define( 'WPPR_SLUG', 'wppr' );
72
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
+ * Version: 3.7.10
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
66
  */
67
  function run_wppr() {
68
 
69
+ define( 'WPPR_LITE_VERSION', '3.7.10' );
70
  define( 'WPPR_PATH', dirname( __FILE__ ) );
71
  define( 'WPPR_SLUG', 'wppr' );
72
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );