').append($close);\n }\n }\n\n $body.on('click', '.icon-picker-close, .icon-picker-overlay', function (e) {\n e.preventDefault();\n base.closePicker($brick, jquery__WEBPACK_IMPORTED_MODULE_0___default()(base.iconSet), base.settings.mode);\n }).on('mouseenter mouseleave', '.icon-picker-close', function (e) {\n if (e.type === 'mouseenter') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).addClass(close);\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).removeClass(close);\n }\n });\n }\n }, {\n key: \"makeLaunchers\",\n value: function makeLaunchers($brick) {\n var base = this;\n var dataIconSets = $brick.data('iconsets');\n var iconSet;\n\n if (typeof dataIconSets === 'undefined') {\n dataIconSets = base.settings.iconSets;\n }\n\n for (iconSet in dataIconSets) {\n if (dataIconSets.hasOwnProperty(iconSet)) {\n $brick.append('
' + dataIconSets[iconSet] + ' ');\n }\n }\n\n $brick.find('.launch-icons').on('click', function (e) {\n e.preventDefault();\n var $self = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var theseIcons = $self.data('icons');\n base.iconSetName = theseIcons;\n base.iconSet = '.' + theseIcons + '-set'; // Initialize picker\n\n base.iconPick($brick); // Show icon picker\n\n base.showPicker($brick, jquery__WEBPACK_IMPORTED_MODULE_0___default()(base.iconSet), base.settings.mode);\n });\n }\n }, {\n key: \"iconPick\",\n value: function iconPick($brick) {\n var base = this;\n var highlight = 'icon-highlight ' + base.settings.classes.highlight;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(base.iconSet).on('click', 'li', function (e) {\n e.preventDefault();\n var $icon = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var icon = $icon.data(base.settings.save); // Mark as selected\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-selected').removeClass('icon-selected');\n $icon.addClass('icon-selected');\n\n if (base.$field.data('format') === 'short') {\n icon = icon.slice(6);\n } // Save icon value to field\n\n\n base.$field.val(icon); // Close icon picker\n\n if (base.settings.closeOnPick) {\n base.closePicker($brick, $icon.closest(base.iconSet), base.settings.mode);\n } // Set preview\n\n\n base.setPreview($icon.data('class')); // Broadcast event passing the selected icon.\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').trigger('iconselected.queryloop', icon);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(base.iconSet).on('mouseenter mouseleave', 'li', function (e) {\n if (e.type === 'mouseenter') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).addClass(highlight);\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).removeClass(highlight);\n }\n });\n }\n }, {\n key: \"showPicker\",\n value: function showPicker($brick, $icons, mode) {\n if (mode === 'inline') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-set').removeClass('ip-inline-open');\n $brick.find($icons).toggleClass('ip-inline-open');\n } else if (mode === 'dialog') {\n $brick.find('.icon-picker-close').addClass('make-visible');\n $brick.find('.icon-picker-overlay').addClass('make-visible');\n $icons.addClass('dialog-open');\n }\n\n $icons.find('.icon-selected').removeClass('icon-selected');\n var selectedIcon = this.$field.val().replace(' ', '.');\n\n if (selectedIcon !== '') {\n if (this.settings.save === 'class') {\n $icons.find('.' + selectedIcon).addClass('icon-selected');\n } else {\n $icons.find('[data-code=\"' + selectedIcon + '\"]').addClass('icon-selected');\n }\n } // Broadcast event when the picker is shown passing the picker mode.\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').trigger('iconpickershow.queryloop', mode);\n }\n }, {\n key: \"closePicker\",\n value: function closePicker($brick, $icons, mode) {\n // Remove event so they don't fire from a different picker\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.iconSet).off('click', 'li');\n\n if (mode === 'inline') {\n $brick.find($icons).removeClass('ip-inline-open');\n } else if (mode === 'dialog') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-picker-close, .icon-picker-overlay').removeClass('make-visible');\n } // Broadcast event when the picker is closed passing the picker mode.\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').trigger('iconpickerclose.queryloop', mode);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-set').removeClass('dialog-open');\n }\n }, {\n key: \"setPreview\",\n value: function setPreview(preview) {\n var $preview = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.element).find('.icon-preview');\n $preview.addClass('icon-preview-on').find('i').removeClass().addClass(this.iconSetName).addClass(preview);\n $preview.find('a').show();\n }\n }]);\n\n return QL_Icon_Picker;\n}();\n/* Grav */\n// extend $ with 3rd party QL Icon Picker\n\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().fn.qlIconPicker) = function (options) {\n this.each(function () {\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default().data(this, 'plugin_qlIconPicker')) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default().data(this, 'plugin_qlIconPicker', new QL_Icon_Picker(this, options));\n }\n });\n return this;\n};\n\nvar IconpickerField = /*#__PURE__*/function () {\n function IconpickerField(options) {\n var _this = this;\n\n _classCallCheck(this, IconpickerField);\n\n this.items = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n this.options = Object.assign({}, this.defaults, options);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-grav-iconpicker]').each(function (index, element) {\n return _this.addItem(element);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', this._onAddedNodes.bind(this));\n }\n\n _createClass(IconpickerField, [{\n key: \"_onAddedNodes\",\n value: function _onAddedNodes(event, target\n /* , record, instance */\n ) {\n var _this2 = this;\n\n var fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('[data-grav-iconpicker]');\n\n if (!fields.length) {\n return;\n }\n\n fields.each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n\n if (!~_this2.items.index(field)) {\n _this2.addItem(field);\n }\n });\n }\n }, {\n key: \"addItem\",\n value: function addItem(element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n this.items = this.items.add(element);\n element.find('.icon-picker').qlIconPicker({\n 'save': 'class'\n }); // hack to remove extra icon sets that are just copies\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-set:not(:first)').remove();\n }\n }]);\n\n return IconpickerField;\n}();\n\n\nvar Instance = new IconpickerField(); // Fix to close the dialog when clicking outside\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var match = '.icon-set.dialog-open, .launch-icons[data-icons]';\n\n if (!target.is(match) && !target.closest(match).length) {\n var dialogs = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.icon-set.dialog-open'); // skip if there's no dialog open\n\n if (dialogs.length) {\n dialogs.each(function (index, dialog) {\n var picker = jquery__WEBPACK_IMPORTED_MODULE_0___default()(dialog).siblings('.icon-picker');\n var data = picker.data('plugin_qlIconPicker');\n data.closePicker(picker, jquery__WEBPACK_IMPORTED_MODULE_0___default()(data.iconSet), data.settings.mode);\n });\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9pY29ucGlja2VyLmpzPzVkNDEiXSwibmFtZXMiOlsiZGVmYXVsdHMiLCJRTF9JY29uX1BpY2tlciIsImVsZW1lbnQiLCJvcHRpb25zIiwiaWNvblNldCIsImljb25TZXROYW1lIiwiJGZpZWxkIiwic2V0dGluZ3MiLCIkIiwiX2RlZmF1bHRzIiwiaW5pdCIsIiRicmljayIsInBpY2tlcklkIiwiZGF0YSIsIiRwcmV2aWV3IiwiZmluZCIsIm1ha2VQcmV2aWV3IiwibWFrZUNsZWFyIiwibWFrZUxhdW5jaGVycyIsIm1ha2VEaXNwbGF5IiwiJGljb24iLCJpY29uVmFsdWUiLCJ2YWwiLCJwcmVwZW5kVG8iLCJhZGRDbGFzcyIsImJhc2UiLCIkY2xlYXIiLCJjbGFzc2VzIiwiY2xlYXIiLCJoaWRlIiwic2hvdyIsIm9uIiwiZSIsInByZXZlbnREZWZhdWx0IiwicmVtb3ZlQ2xhc3MiLCJjbG9zZSIsIiRib2R5IiwiJGNsb3NlIiwibW9kZSIsImFwcGVuZCIsInNpemUiLCJwYXJlbnQiLCJsZW5ndGgiLCJjbG9zZVBpY2tlciIsInR5cGUiLCJkYXRhSWNvblNldHMiLCJpY29uU2V0cyIsImhhc093blByb3BlcnR5IiwibGF1bmNoZXIiLCIkc2VsZiIsInRoZXNlSWNvbnMiLCJpY29uUGljayIsInNob3dQaWNrZXIiLCJoaWdobGlnaHQiLCJpY29uIiwic2F2ZSIsInNsaWNlIiwiY2xvc2VPblBpY2siLCJjbG9zZXN0Iiwic2V0UHJldmlldyIsInRyaWdnZXIiLCIkaWNvbnMiLCJ0b2dnbGVDbGFzcyIsInNlbGVjdGVkSWNvbiIsInJlcGxhY2UiLCJvZmYiLCJwcmV2aWV3IiwiZWFjaCIsIkljb25waWNrZXJGaWVsZCIsIml0ZW1zIiwiT2JqZWN0IiwiYXNzaWduIiwiaW5kZXgiLCJhZGRJdGVtIiwiX29uQWRkZWROb2RlcyIsImJpbmQiLCJldmVudCIsInRhcmdldCIsImZpZWxkcyIsImZpZWxkIiwiYWRkIiwicWxJY29uUGlja2VyIiwicmVtb3ZlIiwiSW5zdGFuY2UiLCJkb2N1bWVudCIsIm1hdGNoIiwiaXMiLCJkaWFsb2dzIiwiZGlhbG9nIiwicGlja2VyIiwic2libGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHO0FBQ1gsVUFBUSxRQURHO0FBQ087QUFDbEIsaUJBQWUsSUFGSjtBQUVVO0FBQ3JCLFVBQVEsT0FIRztBQUdNO0FBQ2pCLFVBQVEsRUFKRztBQUtYLGFBQVc7QUFDUCxnQkFBWSxFQURMO0FBQ1M7QUFDaEIsYUFBUyxjQUZGO0FBRWtCO0FBQ3pCLGlCQUFhLEVBSE47QUFHVTtBQUNqQixhQUFTLEVBSkYsQ0FJSzs7QUFKTCxHQUxBO0FBV1gsY0FBWTtBQUFFO0FBQ1YsaUJBQWEsV0FETDtBQUNrQjtBQUMxQixVQUFNLGFBRkUsQ0FFWTs7QUFGWjtBQVhELENBQWY7O0lBaUJNQyxjO0FBRUYsMEJBQVlDLE9BQVosRUFBcUJDLE9BQXJCLEVBQThCO0FBQUE7O0FBQzFCLFNBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixFQUFuQjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxFQUFkO0FBQ0EsU0FBS0osT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0ssUUFBTCxHQUFnQkMsb0RBQUEsQ0FBUyxFQUFULEVBQWFSLFFBQWIsRUFBdUJHLE9BQXZCLENBQWhCO0FBQ0EsU0FBS00sU0FBTCxHQUFpQlQsUUFBakI7QUFDQSxTQUFLVSxJQUFMO0FBQ0g7Ozs7MkJBRU07QUFDSCxVQUFJQyxNQUFNLEdBQUdILDZDQUFDLENBQUMsS0FBS04sT0FBTixDQUFkO0FBQ0EsVUFBSVUsUUFBUSxHQUFHRCxNQUFNLENBQUNFLElBQVAsQ0FBWSxVQUFaLENBQWY7QUFDQSxVQUFJQyxRQUFRLEdBQUdOLDZDQUFDLENBQUMsMkNBQTJDSSxRQUEzQyxHQUFzRCxNQUF2RCxDQUFoQjtBQUVB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QU03RSxJQUFJLEdBQUc0RSxNQUFNLENBQUM1RSxJQUFQLENBQVkscUJBQVosQ0FBYjtBQUNBQSxZQUFJLENBQUM4QixXQUFMLENBQWlCOEMsTUFBakIsRUFBeUJqRiw2Q0FBQyxDQUFDSyxJQUFJLENBQUNULE9BQU4sQ0FBMUIsRUFBMENTLElBQUksQ0FBQ04sUUFBTCxDQUFjK0IsSUFBeEQ7QUFDSCxPQUpEO0FBS0g7QUFDSjtBQUNKLENBZkQiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZmllbGRzL2ljb25waWNrZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuXG4vKiBJY29uIFBpY2tlciBieSBRdWVyeUxvb3BcbiAqIEF1dGhvcjogQGVsaW9yaXZlcm9cbiAqIFVSTDogaHR0cDovL3F1ZXJ5bG9vcC5jb20vXG4gKiBMaWNlbnNlOiBHUEx2MlxuICovXG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgICAnbW9kZSc6ICdkaWFsb2cnLCAvLyBzaG93IG92ZXJsYXkgJ2RpYWxvZycgcGFuZWwgb3Igc2xpZGUgZG93biAnaW5saW5lJyBwYW5lbFxuICAgICdjbG9zZU9uUGljayc6IHRydWUsIC8vIHdoZXRoZXIgdG8gY2xvc2UgcGFuZWwgYWZ0ZXIgcGlja2luZyBvciAnbm8nXG4gICAgJ3NhdmUnOiAnY2xhc3MnLCAvLyBzYXZlIGljb24gJ2NsYXNzJyBvciAnY29kZSdcbiAgICAnc2l6ZSc6ICcnLFxuICAgICdjbGFzc2VzJzoge1xuICAgICAgICAnbGF1bmNoZXInOiAnJywgLy8gZXh0cmEgY2xhc3NlcyBmb3IgbGF1bmNoZXIgYnV0dG9uc1xuICAgICAgICAnY2xlYXInOiAncmVtb3ZlLXRpbWVzJywgLy8gZXh0cmEgY2xhc3NlcyBmb3IgYnV0dG9uIHRoYXQgcmVtb3ZlcyBwcmV2aWV3IGFuZCBjbGVhcnMgZmllbGRcbiAgICAgICAgJ2hpZ2hsaWdodCc6ICcnLCAvLyBleHRyYSBjbGFzc2VzIHdoZW4gaGlnaGxpZ2h0aW5nIGFuIGljb25cbiAgICAgICAgJ2Nsb3NlJzogJycgLy8gZXh0cmEgY2xhc3NlcyBmb3IgY2xvc2UgYnV0dG9uXG4gICAgfSxcbiAgICAnaWNvblNldHMnOiB7IC8vIGV4YW1wbGUgZGF0YSBzdHJ1Y3R1cmUuIFVzZWQgdG8gc3BlY2lmeSB3aGljaCBsYXVuY2hlcnMgd2lsbCBiZSBjcmVhdGVkXG4gICAgICAgICdnZW5lcmljb24nOiAnR2VuZXJpY29uJywgLy8gY3JlYXRlIGEgbGF1bmNoZXIgdG8gcGljayBnZW5lcmljb24gaWNvbnNcbiAgICAgICAgJ2ZhJzogJ0ZvbnRBd2Vzb21lJyAvLyBjcmVhdGUgYSBsYXVuY2hlciB0byBwaWNrIGZvbnRhd2Vzb21lIGljb25zXG4gICAgfVxufTtcblxuY2xhc3MgUUxfSWNvbl9QaWNrZXIge1xuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICB0aGlzLmljb25TZXQgPSAnJztcbiAgICAgICAgdGhpcy5pY29uU2V0TmFtZSA9ICcnO1xuICAgICAgICB0aGlzLiRmaWVsZCA9ICcnO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gJC5leHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdmFyICRicmljayA9ICQodGhpcy5lbGVtZW50KTtcbiAgICAgICAgdmFyIHBpY2tlcklkID0gJGJyaWNrLmRhdGEoJ3BpY2tlcmlkJyk7XG4gICAgICAgIHZhciAkcHJldmlldyA9ICQoJzxkaXYgY2xhc3M9XCJpY29uLXByZXZpZXcgaWNvbi1wcmV2aWV3LScgKyBwaWNrZXJJZCArICdcIiAvPicpO1xuXG4gICAgICAgIHRoaXMuJGZpZWxkID0gJGJyaWNrLmZpbmQoJ2lucHV0Jyk7XG5cbiAgICAgICAgLy8gQWRkIHByZXZpZXcgYXJlYVxuICAgICAgICB0aGlzLm1ha2VQcmV2aWV3KCRicmljaywgcGlja2VySWQsICRwcmV2aWV3KTtcblxuICAgICAgICAvLyBNYWtlIGJ1dHRvbiB0byBjbGVhciBmaWVsZCBhbmQgcmVtb3ZlIHByZXZpZXdcbiAgICAgICAgdGhpcy5tYWtlQ2xlYXIocGlja2VySWQsICRwcmV2aWV3KTtcblxuICAgICAgICAvLyBNYWtlIGJ1dHRvbnMgdGhhdCBvcGVuIHRoZSBwYW5lbCBvZiBpY29uc1xuICAgICAgICB0aGlzLm1ha2VMYXVuY2hlcnMoJGJyaWNrLCBwaWNrZXJJZCk7XG5cbiAgICAgICAgLy8gUHJlcGFyZSBkaXNwbGF5IHN0eWxlcywgaW5saW5lIGFuZCBkaWFsb2dcbiAgICAgICAgdGhpcy5tYWtlRGlzcGxheSgkYnJpY2spO1xuICAgIH1cblxuICAgIG1ha2VQcmV2aWV3KCRicmljaywgcGlja2VySWQsICRwcmV2aWV3KSB7XG4gICAgICAgIHZhciAkaWNvbiA9ICQoJzxpIC8+Jyk7XG4gICAgICAgIHZhciBpY29uVmFsdWUgPSB0aGlzLiRmaWVsZC52YWwoKTtcblxuICAgICAgICAkcHJldmlldy5wcmVwZW5kVG8oJGJyaWNrKTtcbiAgICAgICAgJGljb24ucHJlcGVuZFRvKCRwcmV2aWV3KTtcbiAgICAgICAgaWYgKGljb25WYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICRwcmV2aWV3LmFkZENsYXNzKCdpY29uLXByZXZpZXctb24nKTtcbiAgICAgICAgICAgICRpY29uLmFkZENsYXNzKGljb25WYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtYWtlQ2xlYXIocGlja2VySWQsICRwcmV2aWV3KSB7XG4gICAgICAgIHZhciBiYXNlID0gdGhpcztcbiAgICAgICAgdmFyICRjbGVhciA9ICQoJzxhIGNsYXNzPVwicmVtb3ZlLWljb24gJyArIGJhc2Uuc2V0dGluZ3MuY2xhc3Nlcy5jbGVhciArICdcIiAvPicpO1xuXG4gICAgICAgIC8vIEhpZGUgYnV0dG9uIHRvIHJlbW92ZSBpY29uIGFuZCBwcmV2aWV3IGFuZCBhcHBlbmQgaXQgdG8gcHJldmlldyBhcmVhXG4gICAgICAgICRjbGVhci5oaWRlKCkucHJlcGVuZFRvKCRwcmV2aWV3KTtcbiAgICAgICAgLy8gSWYgdGhlcmUncyBhIGljb24gc2F2ZWQgaW4gdGhlIGZpZWxkLCBzaG93IHJlbW92ZSBpY29uIGJ1dHRvblxuICAgICAgICBpZiAoYmFzZS4kZmllbGQudmFsKCkgIT09ICcnKSB7XG4gICAgICAgICAgICAkY2xlYXIuc2hvdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHByZXZpZXcub24oJ2NsaWNrJywgJy5yZW1vdmUtaWNvbicsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGJhc2UuJGZpZWxkLnZhbCgnJyk7XG4gICAgICAgICAgICAkcHJldmlldy5yZW1vdmVDbGFzcygnaWNvbi1wcmV2aWV3LW9uJykuZmluZCgnaScpLnJlbW92ZUNsYXNzKCk7XG4gICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFrZURpc3BsYXkoJGJyaWNrKSB7XG4gICAgICAgIHZhciBiYXNlID0gdGhpcztcbiAgICAgICAgdmFyIGNsb3NlID0gYmFzZS5zZXR0aW5ncy5jbGFzc2VzLmNsb3NlO1xuICAgICAgICB2YXIgJGJvZHkgPSAkKCdib2R5Jyk7XG5cbiAgICAgICAgdmFyICRjbG9zZSA9ICQoJzxhIGhyZWY9XCIjXCIgY2xhc3M9XCJpY29uLXBpY2tlci1jbG9zZVwiLz4nKTtcblxuICAgICAgICBpZiAoYmFzZS5zZXR0aW5ncy5tb2RlID09PSAnaW5saW5lJykge1xuICAgICAgICAgICAgJGJyaWNrLmZpbmQoJy5pY29uLXNldCcpLmFwcGVuZCgkY2xvc2UpLnJlbW92ZUNsYXNzKCdkaWFsb2cnKS5hZGRDbGFzcygnaXAtaW5saW5lICcgKyBiYXNlLnNldHRpbmdzLnNpemUpLnBhcmVudCgpLmFkZENsYXNzKCdpY29uLXNldC13cmFwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYmFzZS5zZXR0aW5ncy5tb2RlID09PSAnZGlhbG9nJykge1xuICAgICAgICAgICAgJCgnLmljb24tc2V0JykuYWRkQ2xhc3MoJ2RpYWxvZyAnICsgYmFzZS5zZXR0aW5ncy5zaXplKTtcbiAgICAgICAgICAgIGlmICgkKCcuaWNvbi1waWNrZXItb3ZlcmxheScpLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgJGJvZHkuYXBwZW5kKCc8ZGl2IGNsYXNzPVwiaWNvbi1waWNrZXItb3ZlcmxheVwiLz4nKS5hcHBlbmQoJGNsb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAkYm9keVxuICAgICAgICAgICAgLm9uKCdjbGljaycsICcuaWNvbi1waWNrZXItY2xvc2UsIC5pY29uLXBpY2tlci1vdmVybGF5JywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBiYXNlLmNsb3NlUGlja2VyKCRicmljaywgJChiYXNlLmljb25TZXQpLCBiYXNlLnNldHRpbmdzLm1vZGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5vbignbW91c2VlbnRlciBtb3VzZWxlYXZlJywgJy5pY29uLXBpY2tlci1jbG9zZScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlID09PSAnbW91c2VlbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhjbG9zZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhjbG9zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWFrZUxhdW5jaGVycygkYnJpY2spIHtcbiAgICAgICAgdmFyIGJhc2UgPSB0aGlzO1xuICAgICAgICB2YXIgZGF0YUljb25TZXRzID0gJGJyaWNrLmRhdGEoJ2ljb25zZXRzJyk7XG4gICAgICAgIHZhciBpY29uU2V0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YUljb25TZXRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZGF0YUljb25TZXRzID0gYmFzZS5zZXR0aW5ncy5pY29uU2V0cztcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGljb25TZXQgaW4gZGF0YUljb25TZXRzKSB7XG4gICAgICAgICAgICBpZiAoZGF0YUljb25TZXRzLmhhc093blByb3BlcnR5KGljb25TZXQpKSB7XG4gICAgICAgICAgICAgICAgJGJyaWNrLmFwcGVuZCgnPGEgY2xhc3M9XCJsYXVuY2gtaWNvbnMgYnV0dG9uICcgKyBiYXNlLnNldHRpbmdzLmNsYXNzZXMubGF1bmNoZXIgKyAnXCIgZGF0YS1pY29ucz1cIicgKyBpY29uU2V0ICsgJ1wiPicgKyBkYXRhSWNvblNldHNbaWNvblNldF0gKyAnPC9hPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJGJyaWNrLmZpbmQoJy5sYXVuY2gtaWNvbnMnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMpO1xuICAgICAgICAgICAgdmFyIHRoZXNlSWNvbnMgPSAkc2VsZi5kYXRhKCdpY29ucycpO1xuXG4gICAgICAgICAgICBiYXNlLmljb25TZXROYW1lID0gdGhlc2VJY29ucztcbiAgICAgICAgICAgIGJhc2UuaWNvblNldCA9ICcuJyArIHRoZXNlSWNvbnMgKyAnLXNldCc7XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgcGlja2VyXG4gICAgICAgICAgICBiYXNlLmljb25QaWNrKCRicmljayk7XG5cbiAgICAgICAgICAgIC8vIFNob3cgaWNvbiBwaWNrZXJcbiAgICAgICAgICAgIGJhc2Uuc2hvd1BpY2tlcigkYnJpY2ssICQoYmFzZS5pY29uU2V0KSwgYmFzZS5zZXR0aW5ncy5tb2RlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWNvblBpY2soJGJyaWNrKSB7XG4gICAgICAgIHZhciBiYXNlID0gdGhpcztcbiAgICAgICAgdmFyIGhpZ2hsaWdodCA9ICdpY29uLWhpZ2hsaWdodCAnICsgYmFzZS5zZXR0aW5ncy5jbGFzc2VzLmhpZ2hsaWdodDtcblxuICAgICAgICAkKGJhc2UuaWNvblNldCkub24oJ2NsaWNrJywgJ2xpJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdmFyICRpY29uID0gJCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBpY29uID0gJGljb24uZGF0YShiYXNlLnNldHRpbmdzLnNhdmUpO1xuXG4gICAgICAgICAgICAvLyBNYXJrIGFzIHNlbGVjdGVkXG4gICAgICAgICAgICAkKCcuaWNvbi1zZWxlY3RlZCcpLnJlbW92ZUNsYXNzKCdpY29uLXNlbGVjdGVkJyk7XG4gICAgICAgICAgICAkaWNvbi5hZGRDbGFzcygnaWNvbi1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgaWYgKGJhc2UuJGZpZWxkLmRhdGEoJ2Zvcm1hdCcpID09PSAnc2hvcnQnKSB7XG4gICAgICAgICAgICAgICAgaWNvbiA9IGljb24uc2xpY2UoNik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNhdmUgaWNvbiB2YWx1ZSB0byBmaWVsZFxuICAgICAgICAgICAgYmFzZS4kZmllbGQudmFsKGljb24pO1xuXG4gICAgICAgICAgICAvLyBDbG9zZSBpY29uIHBpY2tlclxuICAgICAgICAgICAgaWYgKGJhc2Uuc2V0dGluZ3MuY2xvc2VPblBpY2spIHtcbiAgICAgICAgICAgICAgICBiYXNlLmNsb3NlUGlja2VyKCRicmljaywgJGljb24uY2xvc2VzdChiYXNlLmljb25TZXQpLCBiYXNlLnNldHRpbmdzLm1vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZXQgcHJldmlld1xuICAgICAgICAgICAgYmFzZS5zZXRQcmV2aWV3KCRpY29uLmRhdGEoJ2NsYXNzJykpO1xuXG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgZXZlbnQgcGFzc2luZyB0aGUgc2VsZWN0ZWQgaWNvbi5cbiAgICAgICAgICAgICQoJ2JvZHknKS50cmlnZ2VyKCdpY29uc2VsZWN0ZWQucXVlcnlsb29wJywgaWNvbik7XG4gICAgICAgIH0pO1xuICAgICAgICAkKGJhc2UuaWNvblNldCkub24oJ21vdXNlZW50ZXIgbW91c2VsZWF2ZScsICdsaScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoaGlnaGxpZ2h0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhoaWdobGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzaG93UGlja2VyKCRicmljaywgJGljb25zLCBtb2RlKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnaW5saW5lJykge1xuICAgICAgICAgICAgJCgnLmljb24tc2V0JykucmVtb3ZlQ2xhc3MoJ2lwLWlubGluZS1vcGVuJyk7XG4gICAgICAgICAgICAkYnJpY2suZmluZCgkaWNvbnMpLnRvZ2dsZUNsYXNzKCdpcC1pbmxpbmUtb3BlbicpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09ICdkaWFsb2cnKSB7XG4gICAgICAgICAgICAkYnJpY2suZmluZCgnLmljb24tcGlja2VyLWNsb3NlJykuYWRkQ2xhc3MoJ21ha2UtdmlzaWJsZScpO1xuICAgICAgICAgICAgJGJyaWNrLmZpbmQoJy5pY29uLXBpY2tlci1vdmVybGF5JykuYWRkQ2xhc3MoJ21ha2UtdmlzaWJsZScpO1xuICAgICAgICAgICAgJGljb25zLmFkZENsYXNzKCdkaWFsb2ctb3BlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgJGljb25zLmZpbmQoJy5pY29uLXNlbGVjdGVkJykucmVtb3ZlQ2xhc3MoJ2ljb24tc2VsZWN0ZWQnKTtcbiAgICAgICAgdmFyIHNlbGVjdGVkSWNvbiA9IHRoaXMuJGZpZWxkLnZhbCgpLnJlcGxhY2UoJyAnLCAnLicpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJY29uICE9PSAnJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc2F2ZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgICAgICRpY29ucy5maW5kKCcuJyArIHNlbGVjdGVkSWNvbikuYWRkQ2xhc3MoJ2ljb24tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJGljb25zLmZpbmQoJ1tkYXRhLWNvZGU9XCInICsgc2VsZWN0ZWRJY29uICsgJ1wiXScpLmFkZENsYXNzKCdpY29uLXNlbGVjdGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQnJvYWRjYXN0IGV2ZW50IHdoZW4gdGhlIHBpY2tlciBpcyBzaG93biBwYXNzaW5nIHRoZSBwaWNrZXIgbW9kZS5cbiAgICAgICAgJCgnYm9keScpLnRyaWdnZXIoJ2ljb25waWNrZXJzaG93LnF1ZXJ5bG9vcCcsIG1vZGUpO1xuICAgIH1cblxuICAgIGNsb3NlUGlja2VyKCRicmljaywgJGljb25zLCBtb2RlKSB7XG4gICAgICAgIC8vIFJlbW92ZSBldmVudCBzbyB0aGV5IGRvbid0IGZpcmUgZnJvbSBhIGRpZmZlcmVudCBwaWNrZXJcbiAgICAgICAgJCh0aGlzLmljb25TZXQpLm9mZignY2xpY2snLCAnbGknKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ2lubGluZScpIHtcbiAgICAgICAgICAgICRicmljay5maW5kKCRpY29ucykucmVtb3ZlQ2xhc3MoJ2lwLWlubGluZS1vcGVuJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ2RpYWxvZycpIHtcbiAgICAgICAgICAgICQoJy5pY29uLXBpY2tlci1jbG9zZSwgLmljb24tcGlja2VyLW92ZXJsYXknKS5yZW1vdmVDbGFzcygnbWFrZS12aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQnJvYWRjYXN0IGV2ZW50IHdoZW4gdGhlIHBpY2tlciBpcyBjbG9zZWQgcGFzc2luZyB0aGUgcGlja2VyIG1vZGUuXG4gICAgICAgICQoJ2JvZHknKS50cmlnZ2VyKCdpY29ucGlja2VyY2xvc2UucXVlcnlsb29wJywgbW9kZSk7XG4gICAgICAgICQoJy5pY29uLXNldCcpLnJlbW92ZUNsYXNzKCdkaWFsb2ctb3BlbicpO1xuICAgIH1cblxuICAgIHNldFByZXZpZXcocHJldmlldykge1xuICAgICAgICB2YXIgJHByZXZpZXcgPSAkKHRoaXMuZWxlbWVudCkuZmluZCgnLmljb24tcHJldmlldycpO1xuXG4gICAgICAgICRwcmV2aWV3LmFkZENsYXNzKCdpY29uLXByZXZpZXctb24nKS5maW5kKCdpJykucmVtb3ZlQ2xhc3MoKVxuICAgICAgICAgICAgLmFkZENsYXNzKHRoaXMuaWNvblNldE5hbWUpXG4gICAgICAgICAgICAuYWRkQ2xhc3MocHJldmlldyk7XG4gICAgICAgICRwcmV2aWV3LmZpbmQoJ2EnKS5zaG93KCk7XG4gICAgfVxufVxuXG4vKiBHcmF2ICovXG4vLyBleHRlbmQgJCB3aXRoIDNyZCBwYXJ0eSBRTCBJY29uIFBpY2tlclxuJC5mbi5xbEljb25QaWNrZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoISQuZGF0YSh0aGlzLCAncGx1Z2luX3FsSWNvblBpY2tlcicpKSB7XG4gICAgICAgICAgICAkLmRhdGEodGhpcywgJ3BsdWdpbl9xbEljb25QaWNrZXInLCBuZXcgUUxfSWNvbl9QaWNrZXIodGhpcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEljb25waWNrZXJGaWVsZCB7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSAkKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVmYXVsdHMsIG9wdGlvbnMpO1xuXG4gICAgICAgICQoJ1tkYXRhLWdyYXYtaWNvbnBpY2tlcl0nKS5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4gdGhpcy5hZGRJdGVtKGVsZW1lbnQpKTtcbiAgICAgICAgJCgnYm9keScpLm9uKCdtdXRhdGlvbi5fZ3JhdicsIHRoaXMuX29uQWRkZWROb2Rlcy5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBfb25BZGRlZE5vZGVzKGV2ZW50LCB0YXJnZXQvKiAsIHJlY29yZCwgaW5zdGFuY2UgKi8pIHtcbiAgICAgICAgbGV0IGZpZWxkcyA9ICQodGFyZ2V0KS5maW5kKCdbZGF0YS1ncmF2LWljb25waWNrZXJdJyk7XG4gICAgICAgIGlmICghZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBmaWVsZHMuZWFjaCgoaW5kZXgsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBmaWVsZCA9ICQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKCF+dGhpcy5pdGVtcy5pbmRleChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRJdGVtKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmFkZChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5maW5kKCcuaWNvbi1waWNrZXInKS5xbEljb25QaWNrZXIoe1xuICAgICAgICAgICAgJ3NhdmUnOiAnY2xhc3MnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGhhY2sgdG8gcmVtb3ZlIGV4dHJhIGljb24gc2V0cyB0aGF0IGFyZSBqdXN0IGNvcGllc1xuICAgICAgICAkKCcuaWNvbi1zZXQ6bm90KDpmaXJzdCknKS5yZW1vdmUoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBsZXQgSW5zdGFuY2UgPSBuZXcgSWNvbnBpY2tlckZpZWxkKCk7XG5cbi8vIEZpeCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gY2xpY2tpbmcgb3V0c2lkZVxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gJChldmVudC50YXJnZXQpO1xuICAgIGNvbnN0IG1hdGNoID0gJy5pY29uLXNldC5kaWFsb2ctb3BlbiwgLmxhdW5jaC1pY29uc1tkYXRhLWljb25zXSc7XG4gICAgaWYgKCF0YXJnZXQuaXMobWF0Y2gpICYmICF0YXJnZXQuY2xvc2VzdChtYXRjaCkubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ3MgPSAkKCcuaWNvbi1zZXQuZGlhbG9nLW9wZW4nKTtcblxuICAgICAgICAvLyBza2lwIGlmIHRoZXJlJ3Mgbm8gZGlhbG9nIG9wZW5cbiAgICAgICAgaWYgKGRpYWxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBkaWFsb2dzLmVhY2goKGluZGV4LCBkaWFsb2cpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaWNrZXIgPSAkKGRpYWxvZykuc2libGluZ3MoJy5pY29uLXBpY2tlcicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBwaWNrZXIuZGF0YSgncGx1Z2luX3FsSWNvblBpY2tlcicpO1xuICAgICAgICAgICAgICAgIGRhdGEuY2xvc2VQaWNrZXIocGlja2VyLCAkKGRhdGEuaWNvblNldCksIGRhdGEuc2V0dGluZ3MubW9kZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/iconpicker.js\n");
/***/ }),
/***/ "./app/forms/fields/indeterminate.js":
/*!*******************************************!*\
!*** ./app/forms/fields/indeterminate.js ***!
\*******************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\ndocument.addEventListener('click', function (event) {\n if (document.querySelector('#pages-filters')) {\n return true;\n }\n\n var wrapper = event.target.closest('.checkboxes.indeterminate');\n\n if (wrapper) {\n event.preventDefault();\n var checkbox = wrapper.querySelector('input[type=\"checkbox\"]:not([disabled])');\n var checkStatus = wrapper.dataset._checkStatus;\n wrapper.classList.remove('status-checked', 'status-unchecked', 'status-indeterminate');\n\n switch (checkStatus) {\n // checked, going indeterminate\n case '1':\n wrapper.dataset._checkStatus = '2';\n checkbox.indeterminate = true;\n checkbox.checked = false;\n checkbox.value = 0;\n wrapper.classList.add('status-indeterminate');\n break;\n // indeterminate, going unchecked\n\n case '2':\n wrapper.dataset._checkStatus = '0';\n checkbox.indeterminate = false;\n checkbox.checked = false;\n checkbox.value = '';\n wrapper.classList.add('status-unchecked');\n break;\n // unchecked, going checked\n\n case '0':\n default:\n wrapper.dataset._checkStatus = '1';\n checkbox.indeterminate = false;\n checkbox.checked = true;\n checkbox.value = 1;\n wrapper.classList.add('status-checked');\n break;\n } // const input = new CustomEvent('input', { detail: { target: checkbox }});\n // document.dispatchEvent(input);\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(checkbox).trigger('input');\n }\n});\n(document.querySelectorAll('input[type=\"checkbox\"][indeterminate=\"true\"]') || []).forEach(function (input) {\n input.indeterminate = true;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9pbmRldGVybWluYXRlLmpzP2Q2MzgiXSwibmFtZXMiOlsiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJxdWVyeVNlbGVjdG9yIiwid3JhcHBlciIsInRhcmdldCIsImNsb3Nlc3QiLCJwcmV2ZW50RGVmYXVsdCIsImNoZWNrYm94IiwiY2hlY2tTdGF0dXMiLCJkYXRhc2V0IiwiX2NoZWNrU3RhdHVzIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiaW5kZXRlcm1pbmF0ZSIsImNoZWNrZWQiLCJ2YWx1ZSIsImFkZCIsIiQiLCJ0cmlnZ2VyIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJpbnB1dCJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFFQUEsUUFBUSxDQUFDQyxnQkFBVCxDQUEwQixPQUExQixFQUFtQyxVQUFDQyxLQUFELEVBQVc7QUFDMUMsTUFBSUYsUUFBUSxDQUFDRyxhQUFULENBQXVCLGdCQUF2QixDQUFKLEVBQThDO0FBQzFDLFdBQU8sSUFBUDtBQUNIOztBQUVELE1BQU1DLE9BQU8sR0FBR0YsS0FBSyxDQUFDRyxNQUFOLENBQWFDLE9BQWIsQ0FBcUIsMkJBQXJCLENBQWhCOztBQUVBLE1BQUlGLE9BQUosRUFBYTtBQUNURixTQUFLLENBQUNLLGNBQU47QUFDQSxRQUFNQyxRQUFRLEdBQUdKLE9BQU8sQ0FBQ0QsYUFBUixDQUFzQix3Q0FBdEIsQ0FBakI7QUFDQSxRQUFNTSxXQUFXLEdBQUdMLE9BQU8sQ0FBQ00sT0FBUixDQUFnQkMsWUFBcEM7QUFDQVAsV0FBTyxDQUFDUSxTQUFSLENBQWtCQyxNQUFsQixDQUF5QixnQkFBekIsRUFBMkMsa0JBQTNDLEVBQStELHNCQUEvRDs7QUFFQSxZQUFRSixXQUFSO0FBQ0k7QUFDQSxXQUFLLEdBQUw7QUFDSUwsZUFBTyxDQUFDTSxPQUFSLENBQWdCQyxZQUFoQixHQUErQixHQUEvQjtBQUNBSCxnQkFBUSxDQUFDTSxhQUFULEdBQXlCLElBQXpCO0FBQ0FOLGdCQUFRLENBQUNPLE9BQVQsR0FBbUIsS0FBbkI7QUFDQVAsZ0JBQVEsQ0FBQ1EsS0FBVCxHQUFpQixDQUFqQjtBQUNBWixlQUFPLENBQUNRLFNBQVIsQ0FBa0JLLEdBQWxCLENBQXNCLHNCQUF0QjtBQUNBO0FBRUo7O0FBQ0EsV0FBSyxHQUFMO0FBQ0liLGVBQU8sQ0FBQ00sT0FBUixDQUFnQkMsWUFBaEIsR0FBK0IsR0FBL0I7QUFDQUgsZ0JBQVEsQ0FBQ00sYUFBVCxHQUF5QixLQUF6QjtBQUNBTixnQkFBUSxDQUFDTyxPQUFULEdBQW1CLEtBQW5CO0FBQ0FQLGdCQUFRLENBQUNRLEtBQVQsR0FBaUIsRUFBakI7QUFDQVosZUFBTyxDQUFDUSxTQUFSLENBQWtCSyxHQUFsQixDQUFzQixrQkFBdEI7QUFDQTtBQUVKOztBQUNBLFdBQUssR0FBTDtBQUNBO0FBQ0liLGVBQU8sQ0FBQ00sT0FBUixDQUFnQkMsWUFBaEIsR0FBK0IsR0FBL0I7QUFDQUgsZ0JBQVEsQ0FBQ00sYUFBVCxHQUF5QixLQUF6QjtBQUNBTixnQkFBUSxDQUFDTyxPQUFULEdBQW1CLElBQW5CO0FBQ0FQLGdCQUFRLENBQUNRLEtBQVQsR0FBaUIsQ0FBakI7QUFDQVosZUFBTyxDQUFDUSxTQUFSLENBQWtCSyxHQUFsQixDQUFzQixnQkFBdEI7QUFDQTtBQTNCUixLQU5TLENBb0NUO0FBQ0E7OztBQUNBQyxpREFBQyxDQUFDVixRQUFELENBQUQsQ0FBWVcsT0FBWixDQUFvQixPQUFwQjtBQUNIO0FBQ0osQ0EvQ0Q7QUFpREEsQ0FBQ25CLFFBQVEsQ0FBQ29CLGdCQUFULENBQTBCLDhDQUExQixLQUE2RSxFQUE5RSxFQUFrRkMsT0FBbEYsQ0FBMEYsVUFBQ0MsS0FBRCxFQUFXO0FBQUVBLE9BQUssQ0FBQ1IsYUFBTixHQUFzQixJQUF0QjtBQUE2QixDQUFwSSIsImZpbGUiOiIuL2FwcC9mb3Jtcy9maWVsZHMvaW5kZXRlcm1pbmF0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNwYWdlcy1maWx0ZXJzJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgd3JhcHBlciA9IGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuY2hlY2tib3hlcy5pbmRldGVybWluYXRlJyk7XG5cbiAgICBpZiAod3JhcHBlcikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjaGVja2JveCA9IHdyYXBwZXIucXVlcnlTZWxlY3RvcignaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOm5vdChbZGlzYWJsZWRdKScpO1xuICAgICAgICBjb25zdCBjaGVja1N0YXR1cyA9IHdyYXBwZXIuZGF0YXNldC5fY2hlY2tTdGF0dXM7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgnc3RhdHVzLWNoZWNrZWQnLCAnc3RhdHVzLXVuY2hlY2tlZCcsICdzdGF0dXMtaW5kZXRlcm1pbmF0ZScpO1xuXG4gICAgICAgIHN3aXRjaCAoY2hlY2tTdGF0dXMpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrZWQsIGdvaW5nIGluZGV0ZXJtaW5hdGVcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgIHdyYXBwZXIuZGF0YXNldC5fY2hlY2tTdGF0dXMgPSAnMic7XG4gICAgICAgICAgICAgICAgY2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ3N0YXR1cy1pbmRldGVybWluYXRlJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIGluZGV0ZXJtaW5hdGUsIGdvaW5nIHVuY2hlY2tlZFxuICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgd3JhcHBlci5kYXRhc2V0Ll9jaGVja1N0YXR1cyA9ICcwJztcbiAgICAgICAgICAgICAgICBjaGVja2JveC5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgd3JhcHBlci5jbGFzc0xpc3QuYWRkKCdzdGF0dXMtdW5jaGVja2VkJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIHVuY2hlY2tlZCwgZ29pbmcgY2hlY2tlZFxuICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHdyYXBwZXIuZGF0YXNldC5fY2hlY2tTdGF0dXMgPSAnMSc7XG4gICAgICAgICAgICAgICAgY2hlY2tib3guaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LnZhbHVlID0gMTtcbiAgICAgICAgICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ3N0YXR1cy1jaGVja2VkJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zdCBpbnB1dCA9IG5ldyBDdXN0b21FdmVudCgnaW5wdXQnLCB7IGRldGFpbDogeyB0YXJnZXQ6IGNoZWNrYm94IH19KTtcbiAgICAgICAgLy8gZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChpbnB1dCk7XG4gICAgICAgICQoY2hlY2tib3gpLnRyaWdnZXIoJ2lucHV0Jyk7XG4gICAgfVxufSk7XG5cbihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl1baW5kZXRlcm1pbmF0ZT1cInRydWVcIl0nKSB8fCBbXSkuZm9yRWFjaCgoaW5wdXQpID0+IHsgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7IH0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/indeterminate.js\n");
/***/ }),
/***/ "./app/forms/fields/index.js":
/*!***********************************!*\
!*** ./app/forms/fields/index.js ***!
\***********************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _filepicker__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filepicker */ \"./app/forms/fields/filepicker.js\");\n/* harmony import */ var _selectize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selectize */ \"./app/forms/fields/selectize.js\");\n/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./array */ \"./app/forms/fields/array.js\");\n/* harmony import */ var _collections__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./collections */ \"./app/forms/fields/collections.js\");\n/* harmony import */ var _datetime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datetime */ \"./app/forms/fields/datetime.js\");\n/* harmony import */ var _editor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./editor */ \"./app/forms/fields/editor.js\");\n/* harmony import */ var _colorpicker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./colorpicker */ \"./app/forms/fields/colorpicker.js\");\n/* harmony import */ var _files__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./files */ \"./app/forms/fields/files.js\");\n/* harmony import */ var _selectunique__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./selectunique */ \"./app/forms/fields/selectunique.js\");\n/* harmony import */ var _iconpicker__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./iconpicker */ \"./app/forms/fields/iconpicker.js\");\n/* harmony import */ var _cron__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./cron */ \"./app/forms/fields/cron.js\");\n/* harmony import */ var _parents__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./parents */ \"./app/forms/fields/parents.js\");\n/* harmony import */ var _acl_picker__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./acl-picker */ \"./app/forms/fields/acl-picker.js\");\n/* harmony import */ var _permissions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./permissions */ \"./app/forms/fields/permissions.js\");\n/* harmony import */ var _indeterminate__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./indeterminate */ \"./app/forms/fields/indeterminate.js\");\n/* harmony import */ var _mediapicker__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./mediapicker */ \"./app/forms/fields/mediapicker.js\");\n/* harmony import */ var _multilevel__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./multilevel */ \"./app/forms/fields/multilevel.js\");\n/* harmony import */ var _text__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./text */ \"./app/forms/fields/text.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n FilepickerField: {\n FilepickerField: _filepicker__WEBPACK_IMPORTED_MODULE_0__.default,\n Instance: _filepicker__WEBPACK_IMPORTED_MODULE_0__.Instance\n },\n SelectizeField: {\n SelectizeField: _selectize__WEBPACK_IMPORTED_MODULE_1__.default,\n Instance: _selectize__WEBPACK_IMPORTED_MODULE_1__.Instance\n },\n ArrayField: {\n ArrayField: _array__WEBPACK_IMPORTED_MODULE_2__.default,\n Instance: _array__WEBPACK_IMPORTED_MODULE_2__.Instance\n },\n CollectionsField: {\n CollectionsField: _collections__WEBPACK_IMPORTED_MODULE_3__.default,\n Instance: _collections__WEBPACK_IMPORTED_MODULE_3__.Instance\n },\n DateTimeField: {\n DateTimeField: _datetime__WEBPACK_IMPORTED_MODULE_4__.default,\n Instance: _datetime__WEBPACK_IMPORTED_MODULE_4__.Instance\n },\n EditorField: {\n EditorField: _editor__WEBPACK_IMPORTED_MODULE_5__.default,\n Instance: _editor__WEBPACK_IMPORTED_MODULE_5__.Instance\n },\n ColorpickerField: {\n ColorpickerField: _colorpicker__WEBPACK_IMPORTED_MODULE_6__.default,\n Instance: _colorpicker__WEBPACK_IMPORTED_MODULE_6__.Instance\n },\n FilesField: {\n FilesField: _files__WEBPACK_IMPORTED_MODULE_7__.default,\n Instance: _files__WEBPACK_IMPORTED_MODULE_7__.Instance\n },\n SelectUniqueField: {\n SelectUniqueField: _selectunique__WEBPACK_IMPORTED_MODULE_8__.default,\n Instance: _selectunique__WEBPACK_IMPORTED_MODULE_8__.Instance\n },\n IconpickerField: {\n IconpickerField: _iconpicker__WEBPACK_IMPORTED_MODULE_9__.default,\n Instance: _iconpicker__WEBPACK_IMPORTED_MODULE_9__.Instance\n },\n CronField: {\n CronField: _cron__WEBPACK_IMPORTED_MODULE_10__.default,\n Instance: _cron__WEBPACK_IMPORTED_MODULE_10__.Instance\n },\n ParentsField: {\n ParentsField: _parents__WEBPACK_IMPORTED_MODULE_11__.default,\n Instance: _parents__WEBPACK_IMPORTED_MODULE_11__.Instances\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9pbmRleC5qcz8xOGI1Il0sIm5hbWVzIjpbIkZpbGVwaWNrZXJGaWVsZCIsIkluc3RhbmNlIiwiRmlsZXBpY2tlckZpZWxkSW5zdGFuY2UiLCJTZWxlY3RpemVGaWVsZCIsIlNlbGVjdGl6ZUZpZWxkSW5zdGFuY2UiLCJBcnJheUZpZWxkIiwiQXJyYXlGaWVsZEluc3RhbmNlIiwiQ29sbGVjdGlvbnNGaWVsZCIsIkNvbGxlY3Rpb25zRmllbGRJbnN0YW5jZSIsIkRhdGVUaW1lRmllbGQiLCJEYXRlVGltZUZpZWxkSW5zdGFuY2UiLCJFZGl0b3JGaWVsZCIsIkVkaXRvckZpZWxkSW5zdGFuY2UiLCJDb2xvcnBpY2tlckZpZWxkIiwiQ29sb3JwaWNrZXJGaWVsZEluc3RhbmNlIiwiRmlsZXNGaWVsZCIsIkZpbGVzRmllbGRJbnN0YW5jZSIsIlNlbGVjdFVuaXF1ZUZpZWxkIiwiU2VsZWN0VW5pcXVlSW5zdGFuY2UiLCJJY29ucGlja2VyRmllbGQiLCJJY29ucGlja2VySW5zdGFuY2UiLCJDcm9uRmllbGQiLCJDcm9uRmllbGRJbnN0YW5jZSIsIlBhcmVudHNGaWVsZCIsIlBhcmVudHNGaWVsZEluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsaUVBQWU7QUFDWEEsaUJBQWUsRUFBRTtBQUNiQSxtQkFBZSxFQUFmQSxnREFEYTtBQUViQyxZQUFRLEVBQUVDLGlEQUF1QkE7QUFGcEIsR0FETjtBQUtYQyxnQkFBYyxFQUFFO0FBQ1pBLGtCQUFjLEVBQWRBLCtDQURZO0FBRVpGLFlBQVEsRUFBRUcsZ0RBQXNCQTtBQUZwQixHQUxMO0FBU1hDLFlBQVUsRUFBRTtBQUNSQSxjQUFVLEVBQVZBLDJDQURRO0FBRVJKLFlBQVEsRUFBRUssNENBQWtCQTtBQUZwQixHQVREO0FBYVhDLGtCQUFnQixFQUFFO0FBQ2RBLG9CQUFnQixFQUFoQkEsaURBRGM7QUFFZE4sWUFBUSxFQUFFTyxrREFBd0JBO0FBRnBCLEdBYlA7QUFpQlhDLGVBQWEsRUFBRTtBQUNYQSxpQkFBYSxFQUFiQSw4Q0FEVztBQUVYUixZQUFRLEVBQUVTLCtDQUFxQkE7QUFGcEIsR0FqQko7QUFxQlhDLGFBQVcsRUFBRTtBQUNUQSxlQUFXLEVBQVhBLDRDQURTO0FBRVRWLFlBQVEsRUFBRVcsNkNBQW1CQTtBQUZwQixHQXJCRjtBQXlCWEMsa0JBQWdCLEVBQUU7QUFDZEEsb0JBQWdCLEVBQWhCQSxpREFEYztBQUVkWixZQUFRLEVBQUVhLGtEQUF3QkE7QUFGcEIsR0F6QlA7QUE2QlhDLFlBQVUsRUFBRTtBQUNSQSxjQUFVLEVBQVZBLDJDQURRO0FBRVJkLFlBQVEsRUFBRWUsNENBQWtCQTtBQUZwQixHQTdCRDtBQWlDWEMsbUJBQWlCLEVBQUU7QUFDZkEscUJBQWlCLEVBQWpCQSxrREFEZTtBQUVmaEIsWUFBUSxFQUFFaUIsbURBQW9CQTtBQUZmLEdBakNSO0FBcUNYQyxpQkFBZSxFQUFFO0FBQ2JBLG1CQUFlLEVBQWZBLGdEQURhO0FBRWJsQixZQUFRLEVBQUVtQixpREFBa0JBO0FBRmYsR0FyQ047QUF5Q1hDLFdBQVMsRUFBRTtBQUNQQSxhQUFTLEVBQVRBLDJDQURPO0FBRVBwQixZQUFRLEVBQUVxQiw0Q0FBaUJBO0FBRnBCLEdBekNBO0FBNkNYQyxjQUFZLEVBQUU7QUFDVkEsZ0JBQVksRUFBWkEsOENBRFU7QUFFVnRCLFlBQVEsRUFBRXVCLGdEQUFvQkE7QUFGcEI7QUE3Q0gsQ0FBZiIsImZpbGUiOiIuL2FwcC9mb3Jtcy9maWVsZHMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRmlsZXBpY2tlckZpZWxkLCB7IEluc3RhbmNlIGFzIEZpbGVwaWNrZXJGaWVsZEluc3RhbmNlIH0gZnJvbSAnLi9maWxlcGlja2VyJztcbmltcG9ydCBTZWxlY3RpemVGaWVsZCwgeyBJbnN0YW5jZSBhcyBTZWxlY3RpemVGaWVsZEluc3RhbmNlIH0gZnJvbSAnLi9zZWxlY3RpemUnO1xuaW1wb3J0IEFycmF5RmllbGQsIHsgSW5zdGFuY2UgYXMgQXJyYXlGaWVsZEluc3RhbmNlIH0gZnJvbSAnLi9hcnJheSc7XG5pbXBvcnQgQ29sbGVjdGlvbnNGaWVsZCwgeyBJbnN0YW5jZSBhcyBDb2xsZWN0aW9uc0ZpZWxkSW5zdGFuY2UgfSBmcm9tICcuL2NvbGxlY3Rpb25zJztcbmltcG9ydCBEYXRlVGltZUZpZWxkLCB7IEluc3RhbmNlIGFzIERhdGVUaW1lRmllbGRJbnN0YW5jZSB9IGZyb20gJy4vZGF0ZXRpbWUnO1xuaW1wb3J0IEVkaXRvckZpZWxkLCB7IEluc3RhbmNlIGFzIEVkaXRvckZpZWxkSW5zdGFuY2UgfSBmcm9tICcuL2VkaXRvcic7XG5pbXBvcnQgQ29sb3JwaWNrZXJGaWVsZCwgeyBJbnN0YW5jZSBhcyBDb2xvcnBpY2tlckZpZWxkSW5zdGFuY2UgfSBmcm9tICcuL2NvbG9ycGlja2VyJztcbmltcG9ydCBGaWxlc0ZpZWxkLCB7IEluc3RhbmNlIGFzIEZpbGVzRmllbGRJbnN0YW5jZSB9IGZyb20gJy4vZmlsZXMnO1xuaW1wb3J0IFNlbGVjdFVuaXF1ZUZpZWxkLCB7IEluc3RhbmNlIGFzIFNlbGVjdFVuaXF1ZUluc3RhbmNlIH0gZnJvbSAnLi9zZWxlY3R1bmlxdWUnO1xuaW1wb3J0IEljb25waWNrZXJGaWVsZCwgeyBJbnN0YW5jZSBhcyBJY29ucGlja2VySW5zdGFuY2UgfSBmcm9tICcuL2ljb25waWNrZXInO1xuaW1wb3J0IENyb25GaWVsZCwgeyBJbnN0YW5jZSBhcyBDcm9uRmllbGRJbnN0YW5jZSB9IGZyb20gJy4vY3Jvbic7XG5pbXBvcnQgUGFyZW50c0ZpZWxkLCB7IEluc3RhbmNlcyBhcyBQYXJlbnRzRmllbGRJbnN0YW5jZSB9IGZyb20gJy4vcGFyZW50cyc7XG5cbmltcG9ydCAnLi9hY2wtcGlja2VyJztcbmltcG9ydCAnLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgJy4vaW5kZXRlcm1pbmF0ZSc7XG5pbXBvcnQgJy4vbWVkaWFwaWNrZXInO1xuaW1wb3J0ICcuL211bHRpbGV2ZWwnO1xuaW1wb3J0ICcuL3RleHQnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgRmlsZXBpY2tlckZpZWxkOiB7XG4gICAgICAgIEZpbGVwaWNrZXJGaWVsZCxcbiAgICAgICAgSW5zdGFuY2U6IEZpbGVwaWNrZXJGaWVsZEluc3RhbmNlXG4gICAgfSxcbiAgICBTZWxlY3RpemVGaWVsZDoge1xuICAgICAgICBTZWxlY3RpemVGaWVsZCxcbiAgICAgICAgSW5zdGFuY2U6IFNlbGVjdGl6ZUZpZWxkSW5zdGFuY2VcbiAgICB9LFxuICAgIEFycmF5RmllbGQ6IHtcbiAgICAgICAgQXJyYXlGaWVsZCxcbiAgICAgICAgSW5zdGFuY2U6IEFycmF5RmllbGRJbnN0YW5jZVxuICAgIH0sXG4gICAgQ29sbGVjdGlvbnNGaWVsZDoge1xuICAgICAgICBDb2xsZWN0aW9uc0ZpZWxkLFxuICAgICAgICBJbnN0YW5jZTogQ29sbGVjdGlvbnNGaWVsZEluc3RhbmNlXG4gICAgfSxcbiAgICBEYXRlVGltZUZpZWxkOiB7XG4gICAgICAgIERhdGVUaW1lRmllbGQsXG4gICAgICAgIEluc3RhbmNlOiBEYXRlVGltZUZpZWxkSW5zdGFuY2VcbiAgICB9LFxuICAgIEVkaXRvckZpZWxkOiB7XG4gICAgICAgIEVkaXRvckZpZWxkLFxuICAgICAgICBJbnN0YW5jZTogRWRpdG9yRmllbGRJbnN0YW5jZVxuICAgIH0sXG4gICAgQ29sb3JwaWNrZXJGaWVsZDoge1xuICAgICAgICBDb2xvcnBpY2tlckZpZWxkLFxuICAgICAgICBJbnN0YW5jZTogQ29sb3JwaWNrZXJGaWVsZEluc3RhbmNlXG4gICAgfSxcbiAgICBGaWxlc0ZpZWxkOiB7XG4gICAgICAgIEZpbGVzRmllbGQsXG4gICAgICAgIEluc3RhbmNlOiBGaWxlc0ZpZWxkSW5zdGFuY2VcbiAgICB9LFxuICAgIFNlbGVjdFVuaXF1ZUZpZWxkOiB7XG4gICAgICAgIFNlbGVjdFVuaXF1ZUZpZWxkLFxuICAgICAgICBJbnN0YW5jZTogU2VsZWN0VW5pcXVlSW5zdGFuY2VcbiAgICB9LFxuICAgIEljb25waWNrZXJGaWVsZDoge1xuICAgICAgICBJY29ucGlja2VyRmllbGQsXG4gICAgICAgIEluc3RhbmNlOiBJY29ucGlja2VySW5zdGFuY2VcbiAgICB9LFxuICAgIENyb25GaWVsZDoge1xuICAgICAgICBDcm9uRmllbGQsXG4gICAgICAgIEluc3RhbmNlOiBDcm9uRmllbGRJbnN0YW5jZVxuICAgIH0sXG4gICAgUGFyZW50c0ZpZWxkOiB7XG4gICAgICAgIFBhcmVudHNGaWVsZCxcbiAgICAgICAgSW5zdGFuY2U6IFBhcmVudHNGaWVsZEluc3RhbmNlXG4gICAgfVxufTtcblxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/index.js\n");
/***/ }),
/***/ "./app/forms/fields/mediapicker.js":
/*!*****************************************!*\
!*** ./app/forms/fields/mediapicker.js ***!
\*****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _pages_tree__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../pages/tree */ \"./app/pages/tree.js\");\n\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n var modal = '';\n var body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body'); // Thumb Resizer\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('input change', '.media-container .media-range', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var container = target.closest('.remodal');\n var cards = container.find('.media-container div.card-item');\n var width = target.val() + 'px';\n cards.each(function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css('width', width);\n });\n });\n body.on('click', '[data-mediapicker-modal-trigger]', function (event) {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var modal_identifier = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('grav-mediapicker-unique-identifier');\n var modal_element = body.find(\"[data-remodal-unique-identifier=\\\"\".concat(modal_identifier, \"\\\"]\"));\n modal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal_element.data('remodal')];\n\n if (!modal) {\n modal_element.remodal();\n modal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal_element.data('remodal')];\n }\n\n modal.open();\n modal.dataField = element.find('input'); // load all media\n\n modal_element.find('.js__files').trigger('fillView');\n setTimeout(function () {\n return _pages_tree__WEBPACK_IMPORTED_MODULE_1__.Instance.reload();\n }, 100);\n });\n /* handle media modal click actions */\n\n body.on('click', '[data-remodal-mediapicker] .media-container.in-modal .admin-media-details a', function (event) {\n event.preventDefault();\n event.stopPropagation();\n var val = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('.js__media-element').data('file-url');\n var string = val.replace(/ /g, '%20');\n modal.dataField.val(string);\n modal.close();\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9tZWRpYXBpY2tlci5qcz9kOTFkIl0sIm5hbWVzIjpbIiQiLCJtb2RhbCIsImJvZHkiLCJkb2N1bWVudCIsIm9uIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiY29udGFpbmVyIiwiY2xvc2VzdCIsImNhcmRzIiwiZmluZCIsIndpZHRoIiwidmFsIiwiZWFjaCIsImNzcyIsImVsZW1lbnQiLCJtb2RhbF9pZGVudGlmaWVyIiwiZGF0YSIsIm1vZGFsX2VsZW1lbnQiLCJyZW1vZGFsIiwib3BlbiIsImRhdGFGaWVsZCIsInRyaWdnZXIiLCJzZXRUaW1lb3V0IiwicGFnZXNUcmVlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJwYXJlbnRzIiwic3RyaW5nIiwicmVwbGFjZSIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUVBQSw2Q0FBQyxDQUFDLFlBQVc7QUFDVCxNQUFJQyxLQUFLLEdBQUcsRUFBWjtBQUNBLE1BQUlDLElBQUksR0FBR0YsNkNBQUMsQ0FBQyxNQUFELENBQVosQ0FGUyxDQUlUOztBQUNBQSwrQ0FBQyxDQUFDRyxRQUFELENBQUQsQ0FBWUMsRUFBWixDQUFlLGNBQWYsRUFBK0IsK0JBQS9CLEVBQWdFLFVBQVNDLEtBQVQsRUFBZ0I7QUFDNUUsUUFBTUMsTUFBTSxHQUFHTiw2Q0FBQyxDQUFDSyxLQUFLLENBQUNFLGFBQVAsQ0FBaEI7QUFDQSxRQUFNQyxTQUFTLEdBQUdGLE1BQU0sQ0FBQ0csT0FBUCxDQUFlLFVBQWYsQ0FBbEI7QUFDQSxRQUFJQyxLQUFLLEdBQUdGLFNBQVMsQ0FBQ0csSUFBVixDQUFlLGdDQUFmLENBQVo7QUFDQSxRQUFJQyxLQUFLLEdBQUdOLE1BQU0sQ0FBQ08sR0FBUCxLQUFlLElBQTNCO0FBQ0FILFNBQUssQ0FBQ0ksSUFBTixDQUFXLFlBQVc7QUFDbEJkLG1EQUFDLENBQUMsSUFBRCxDQUFELENBQVFlLEdBQVIsQ0FBWSxPQUFaLEVBQXFCSCxLQUFyQjtBQUNILEtBRkQ7QUFHSCxHQVJEO0FBVUFWLE1BQUksQ0FBQ0UsRUFBTCxDQUFRLE9BQVIsRUFBaUIsa0NBQWpCLEVBQXFELFVBQVNDLEtBQVQsRUFBZ0I7QUFDakUsUUFBTVcsT0FBTyxHQUFHaEIsNkNBQUMsQ0FBQ0ssS0FBSyxDQUFDRSxhQUFQLENBQWpCO0FBQ0EsUUFBSVUsZ0JBQWdCLEdBQUdqQiw2Q0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRa0IsSUFBUixDQUFhLG9DQUFiLENBQXZCO0FBQ0EsUUFBSUMsYUFBYSxHQUFHakIsSUFBSSxDQUFDUyxJQUFMLDZDQUE4Q00sZ0JBQTlDLFNBQXBCO0FBQ0FoQixTQUFLLEdBQUdELDhEQUFBLENBQWlCbUIsYUFBYSxDQUFDRCxJQUFkLENBQW1CLFNBQW5CLENBQWpCLENBQVI7O0FBRUEsUUFBSSxDQUFDakIsS0FBTCxFQUFZO0FBQ1JrQixtQkFBYSxDQUFDQyxPQUFkO0FBQ0FuQixXQUFLLEdBQUdELDhEQUFBLENBQWlCbUIsYUFBYSxDQUFDRCxJQUFkLENBQW1CLFNBQW5CLENBQWpCLENBQVI7QUFDSDs7QUFFRGpCLFNBQUssQ0FBQ29CLElBQU47QUFDQXBCLFNBQUssQ0FBQ3FCLFNBQU4sR0FBa0JOLE9BQU8sQ0FBQ0wsSUFBUixDQUFhLE9BQWIsQ0FBbEIsQ0FaaUUsQ0FjakU7O0FBQ0FRLGlCQUFhLENBQUNSLElBQWQsQ0FBbUIsWUFBbkIsRUFBaUNZLE9BQWpDLENBQXlDLFVBQXpDO0FBRUFDLGNBQVUsQ0FBQztBQUFBLGFBQU1DLHdEQUFBLEVBQU47QUFBQSxLQUFELEVBQTJCLEdBQTNCLENBQVY7QUFDSCxHQWxCRDtBQW9CQTs7QUFDQXZCLE1BQUksQ0FBQ0UsRUFBTCxDQUFRLE9BQVIsRUFBaUIsNkVBQWpCLEVBQWdHLFVBQUNDLEtBQUQsRUFBVztBQUN2R0EsU0FBSyxDQUFDcUIsY0FBTjtBQUNBckIsU0FBSyxDQUFDc0IsZUFBTjtBQUVBLFFBQUlkLEdBQUcsR0FBR2IsNkNBQUMsQ0FBQ0ssS0FBSyxDQUFDQyxNQUFQLENBQUQsQ0FBZ0JzQixPQUFoQixDQUF3QixvQkFBeEIsRUFBOENWLElBQTlDLENBQW1ELFVBQW5ELENBQVY7QUFDQSxRQUFJVyxNQUFNLEdBQUdoQixHQUFHLENBQUNpQixPQUFKLENBQVksSUFBWixFQUFrQixLQUFsQixDQUFiO0FBRUE3QixTQUFLLENBQUNxQixTQUFOLENBQWdCVCxHQUFoQixDQUFvQmdCLE1BQXBCO0FBRUE1QixTQUFLLENBQUM4QixLQUFOO0FBQ0gsR0FWRDtBQVdILENBL0NBLENBQUQiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZmllbGRzL21lZGlhcGlja2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7IEluc3RhbmNlIGFzIHBhZ2VzVHJlZSB9IGZyb20gJy4uLy4uL3BhZ2VzL3RyZWUnO1xuXG4kKGZ1bmN0aW9uKCkge1xuICAgIGxldCBtb2RhbCA9ICcnO1xuICAgIGxldCBib2R5ID0gJCgnYm9keScpO1xuXG4gICAgLy8gVGh1bWIgUmVzaXplclxuICAgICQoZG9jdW1lbnQpLm9uKCdpbnB1dCBjaGFuZ2UnLCAnLm1lZGlhLWNvbnRhaW5lciAubWVkaWEtcmFuZ2UnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSB0YXJnZXQuY2xvc2VzdCgnLnJlbW9kYWwnKTtcbiAgICAgICAgbGV0IGNhcmRzID0gY29udGFpbmVyLmZpbmQoJy5tZWRpYS1jb250YWluZXIgZGl2LmNhcmQtaXRlbScpO1xuICAgICAgICBsZXQgd2lkdGggPSB0YXJnZXQudmFsKCkgKyAncHgnO1xuICAgICAgICBjYXJkcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5jc3MoJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGJvZHkub24oJ2NsaWNrJywgJ1tkYXRhLW1lZGlhcGlja2VyLW1vZGFsLXRyaWdnZXJdJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGxldCBtb2RhbF9pZGVudGlmaWVyID0gJCh0aGlzKS5kYXRhKCdncmF2LW1lZGlhcGlja2VyLXVuaXF1ZS1pZGVudGlmaWVyJyk7XG4gICAgICAgIGxldCBtb2RhbF9lbGVtZW50ID0gYm9keS5maW5kKGBbZGF0YS1yZW1vZGFsLXVuaXF1ZS1pZGVudGlmaWVyPVwiJHttb2RhbF9pZGVudGlmaWVyfVwiXWApO1xuICAgICAgICBtb2RhbCA9ICQucmVtb2RhbC5sb29rdXBbbW9kYWxfZWxlbWVudC5kYXRhKCdyZW1vZGFsJyldO1xuXG4gICAgICAgIGlmICghbW9kYWwpIHtcbiAgICAgICAgICAgIG1vZGFsX2VsZW1lbnQucmVtb2RhbCgpO1xuICAgICAgICAgICAgbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwW21vZGFsX2VsZW1lbnQuZGF0YSgncmVtb2RhbCcpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgICAgbW9kYWwuZGF0YUZpZWxkID0gZWxlbWVudC5maW5kKCdpbnB1dCcpO1xuXG4gICAgICAgIC8vIGxvYWQgYWxsIG1lZGlhXG4gICAgICAgIG1vZGFsX2VsZW1lbnQuZmluZCgnLmpzX19maWxlcycpLnRyaWdnZXIoJ2ZpbGxWaWV3Jyk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwYWdlc1RyZWUucmVsb2FkKCksIDEwMCk7XG4gICAgfSk7XG5cbiAgICAvKiBoYW5kbGUgbWVkaWEgbW9kYWwgY2xpY2sgYWN0aW9ucyAqL1xuICAgIGJvZHkub24oJ2NsaWNrJywgJ1tkYXRhLXJlbW9kYWwtbWVkaWFwaWNrZXJdIC5tZWRpYS1jb250YWluZXIuaW4tbW9kYWwgLmFkbWluLW1lZGlhLWRldGFpbHMgYScsIChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBsZXQgdmFsID0gJChldmVudC50YXJnZXQpLnBhcmVudHMoJy5qc19fbWVkaWEtZWxlbWVudCcpLmRhdGEoJ2ZpbGUtdXJsJyk7XG4gICAgICAgIGxldCBzdHJpbmcgPSB2YWwucmVwbGFjZSgvIC9nLCAnJTIwJyk7XG5cbiAgICAgICAgbW9kYWwuZGF0YUZpZWxkLnZhbChzdHJpbmcpO1xuXG4gICAgICAgIG1vZGFsLmNsb3NlKCk7XG4gICAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/forms/fields/mediapicker.js\n");
/***/ }),
/***/ "./app/forms/fields/multilevel.js":
/*!****************************************!*\
!*** ./app/forms/fields/multilevel.js ***!
\****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(function () {\n var getField = function getField(level, name) {\n var levelMargin = level * 50;\n var top = level === 0 ? 'top' : '';\n var the_name = 'name=\"' + name + '\"';\n\n if (level === 0) {\n // top\n the_name = 'data-attr-name=\"' + name + '\"';\n }\n\n var field = \"\\n
\\n
\\n \\n\\n \\n \\n \\n
\\n
\\n \");\n return field;\n };\n\n var hasChildInputs = function hasChildInputs($element) {\n if ($element.attr('name')) {\n return false;\n }\n\n return true;\n };\n\n var getTopItems = function getTopItems(element) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .js__multilevel-field.top');\n };\n\n var refreshControls = function refreshControls(unique_identifier) {\n var element = '[data-grav-multilevel-field]';\n\n if (unique_identifier) {\n element = '[data-grav-multilevel-field][data-id=\"' + unique_identifier + '\"]';\n }\n\n var hideButtons = function hideButtons() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .js__add-sibling').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .js__add-children').addClass('hidden');\n };\n\n var restoreAddSiblingButtons = function restoreAddSiblingButtons() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .children-wrapper').each(function () {\n var elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children();\n elements.last().each(function () {\n var field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass('js__multilevel-field')) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).find('.js__multilevel-field').first();\n }\n\n field.find('.js__add-sibling').removeClass('hidden');\n });\n }); // add sibling to the last top element\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .js__multilevel-field.top').last().find('.js__add-sibling').removeClass('hidden');\n };\n\n var restoreAddChildrenButtons = function restoreAddChildrenButtons() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(element + ' .js__multilevel-field').each(function () {\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).siblings('.children-wrapper').length === 0 || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).siblings('.children-wrapper').find('.js__multilevel-field').length === 0) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).find('.js__add-children').removeClass('hidden');\n }\n });\n };\n\n var preventRemovingLastTopItem = function preventRemovingLastTopItem() {\n var top_items = getTopItems(element);\n\n if (top_items.length === 1) {\n top_items.first().find('.js__remove-item').addClass('hidden');\n }\n };\n\n hideButtons();\n restoreAddSiblingButtons();\n restoreAddChildrenButtons();\n preventRemovingLastTopItem();\n };\n\n var changeAllOccurrencesInTree = function changeAllOccurrencesInTree($el, current_name, new_name) {\n $el.parents('[data-grav-multilevel-field]').find('input').each(function () {\n var $input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n\n if ($input.attr('name')) {\n $input.attr('name', $input.attr('name').replace(current_name, new_name));\n }\n\n if ($input.attr('data-attr-name')) {\n $input.attr('data-attr-name', $input.attr('data-attr-name').replace(current_name, new_name));\n }\n });\n };\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n refreshControls();\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('mouseleave', '[data-grav-multilevel-field]', function (event) {\n var top_items = getTopItems('[data-id=\"' + jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('id') + '\"]');\n var has_top_items_without_children = false;\n var element_content = '';\n top_items.each(function () {\n var item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(item).siblings('.children-wrapper').find('input').length === 0) {\n has_top_items_without_children = true;\n element_content = item.find('input').val();\n }\n });\n\n if (has_top_items_without_children) {\n if (element_content) {\n alert('Warning: if you save now, the element ' + element_content + ', without children, will be removed, because it\\'s invalid YAML');\n } else {\n alert('Warning: if you save now, the top elements without children will be removed, because it\\'s invalid YAML');\n }\n }\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-grav-multilevel-field] .js__add-children', function (event) {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var unique_container_id = element.closest('.js__multilevel-field').data('id');\n var level = element.data('level') + 1;\n\n var getParentOfElement = function getParentOfElement(element) {\n var parent = element.closest('.js__multilevel-field').parent().first();\n\n if (parent.find('.children-wrapper').length === 0) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).append('
');\n }\n\n parent = parent.find('.children-wrapper').first();\n return parent;\n };\n\n var getNameFromParentInput = function getNameFromParentInput(parentInput, attr) {\n if (parentInput.hasClass('children-wrapper')) {\n parentInput = parentInput.siblings('.js__multilevel-field').first().find('input');\n }\n\n return parentInput.attr(attr) + '[' + parentInput.val() + ']';\n };\n\n var getInputFromChildrenWrapper = function getInputFromChildrenWrapper(parentChildrenWrapper) {\n return parentChildrenWrapper.siblings('.js__multilevel-field').first().find('input');\n };\n\n var parentChildrenWrapper = getParentOfElement(element);\n var parentInput = getInputFromChildrenWrapper(parentChildrenWrapper);\n var attr = 'name';\n\n if (parentInput.closest('.js__multilevel-field').hasClass('top')) {\n attr = 'data-attr-name';\n }\n\n parentInput.attr(attr, parentInput.attr(attr).replace('[]', ''));\n var name = getNameFromParentInput(parentInput, attr);\n var field = getField(level, name);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(parentChildrenWrapper).append(field);\n refreshControls(unique_container_id);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-grav-multilevel-field] .js__add-sibling', function (event) {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var unique_container_id = element.closest('.js__multilevel-field').data('id');\n var level = element.data('level');\n element.closest('.children-wrapper').find('.js__add-sibling').addClass('hidden');\n var sibling = null;\n var is_top = false;\n\n if (element.closest('.js__multilevel-field').hasClass('top')) {\n is_top = true;\n }\n\n if (is_top) {\n sibling = element.closest('.js__multilevel-field').first().find('input').last();\n } else {\n sibling = element.siblings('input').first();\n\n if (!sibling) {\n sibling = element.closest('.children-wrapper').first().find('input').last();\n }\n }\n\n var getParentOfElement = function getParentOfElement(element) {\n var parent = element.closest('.js__multilevel-field').parent().first();\n\n if (!parent.hasClass('element-wrapper')) {\n if (parent.find('.element-wrapper').length === 0) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).append('
');\n }\n\n parent = parent.find('.element-wrapper').first();\n }\n\n return parent;\n };\n\n var getNameFromSibling = function getNameFromSibling(parent, sibling) {\n var is_top = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var name = sibling.attr('name');\n\n if (hasChildInputs(sibling)) {\n var val = sibling.data('attr-name') + '[]';\n sibling.removeAttr('name');\n return val;\n }\n\n var last_index = name.lastIndexOf('[');\n var almost_there = name.substr(last_index + 1);\n var last_tag = almost_there.substr(0, almost_there.length - 1);\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default().isNumeric(last_tag)) {\n name = name.replace('[' + last_tag + ']', '[' + (parseInt(last_tag, 10) + 1) + ']');\n } else {\n if (is_top) {\n name = name.replace('[' + last_tag + ']', '');\n } else {\n name = name + '[1]'; // change sibling name attr if necessary\n\n if (sibling.attr('name').slice('-2') !== '[0]') {\n changeAllOccurrencesInTree(sibling, sibling.attr('name'), sibling.attr('name') + '[0]');\n }\n }\n }\n\n return name;\n };\n\n var parent = getParentOfElement(element);\n var name = getNameFromSibling(parent, sibling, is_top);\n var field = getField(level, name);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(field).insertAfter(parent);\n refreshControls(unique_container_id);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-grav-multilevel-field] .js__remove-item', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).parents('.element-wrapper').first().remove();\n var unique_container_id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).closest('.js__multilevel-field').data('id');\n refreshControls(unique_container_id);\n }); // Store old value before editing a field\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('focusin', '[data-grav-multilevel-field] input', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('current-value', jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val());\n }); // Handle field edited event\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('change', '[data-grav-multilevel-field] input', function (event) {\n var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var old_value = $el.data('current-value');\n var new_value = $el.val();\n var full_name = $el.attr('name') || $el.attr('data-attr-name'); // first-level items have `data-attr-name` instead of `name`\n\n var old_name_attr = full_name + '[' + old_value + ']';\n var new_name_attr = full_name + '[' + new_value + ']';\n changeAllOccurrencesInTree($el, old_name_attr, new_name_attr);\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9tdWx0aWxldmVsLmpzPzJiMjAiXSwibmFtZXMiOlsiJCIsImdldEZpZWxkIiwibGV2ZWwiLCJuYW1lIiwibGV2ZWxNYXJnaW4iLCJ0b3AiLCJ0aGVfbmFtZSIsImZpZWxkIiwiaGFzQ2hpbGRJbnB1dHMiLCIkZWxlbWVudCIsImF0dHIiLCJnZXRUb3BJdGVtcyIsImVsZW1lbnQiLCJyZWZyZXNoQ29udHJvbHMiLCJ1bmlxdWVfaWRlbnRpZmllciIsImhpZGVCdXR0b25zIiwiYWRkQ2xhc3MiLCJyZXN0b3JlQWRkU2libGluZ0J1dHRvbnMiLCJlYWNoIiwiZWxlbWVudHMiLCJjaGlsZHJlbiIsImxhc3QiLCJoYXNDbGFzcyIsImZpbmQiLCJmaXJzdCIsInJlbW92ZUNsYXNzIiwicmVzdG9yZUFkZENoaWxkcmVuQnV0dG9ucyIsInNpYmxpbmdzIiwibGVuZ3RoIiwicHJldmVudFJlbW92aW5nTGFzdFRvcEl0ZW0iLCJ0b3BfaXRlbXMiLCJjaGFuZ2VBbGxPY2N1cnJlbmNlc0luVHJlZSIsIiRlbCIsImN1cnJlbnRfbmFtZSIsIm5ld19uYW1lIiwicGFyZW50cyIsIiRpbnB1dCIsInJlcGxhY2UiLCJkb2N1bWVudCIsInJlYWR5Iiwib24iLCJldmVudCIsImRhdGEiLCJoYXNfdG9wX2l0ZW1zX3dpdGhvdXRfY2hpbGRyZW4iLCJlbGVtZW50X2NvbnRlbnQiLCJpdGVtIiwidmFsIiwiYWxlcnQiLCJ1bmlxdWVfY29udGFpbmVyX2lkIiwiY2xvc2VzdCIsImdldFBhcmVudE9mRWxlbWVudCIsInBhcmVudCIsImFwcGVuZCIsImdldE5hbWVGcm9tUGFyZW50SW5wdXQiLCJwYXJlbnRJbnB1dCIsImdldElucHV0RnJvbUNoaWxkcmVuV3JhcHBlciIsInBhcmVudENoaWxkcmVuV3JhcHBlciIsInNpYmxpbmciLCJpc190b3AiLCJnZXROYW1lRnJvbVNpYmxpbmciLCJyZW1vdmVBdHRyIiwibGFzdF9pbmRleCIsImxhc3RJbmRleE9mIiwiYWxtb3N0X3RoZXJlIiwic3Vic3RyIiwibGFzdF90YWciLCJwYXJzZUludCIsInNsaWNlIiwiaW5zZXJ0QWZ0ZXIiLCJyZW1vdmUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJmdWxsX25hbWUiLCJvbGRfbmFtZV9hdHRyIiwibmV3X25hbWVfYXR0ciJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFFQUEsNkNBQUMsQ0FBQyxZQUFXO0FBRVQsTUFBTUMsUUFBUSxHQUFHLFNBQVNBLFFBQVQsQ0FBa0JDLEtBQWxCLEVBQXlCQyxJQUF6QixFQUErQjtBQUM1QyxRQUFJQyxXQUFXLEdBQUdGLEtBQUssR0FBRyxFQUExQjtBQUNBLFFBQUlHLEdBQUcsR0FBSUgsS0FBSyxLQUFLLENBQVYsR0FBYyxLQUFkLEdBQXNCLEVBQWpDO0FBRUEsUUFBSUksUUFBUSxHQUFHLFdBQVdILElBQVgsR0FBa0IsR0FBakM7O0FBQ0EsUUFBSUQsS0FBSyxLQUFLLENBQWQsRUFBaUI7QUFDYjtBQUNBSSxjQUFRLEdBQUcscUJBQXFCSCxJQUFyQixHQUE0QixHQUF2QztBQUNIOztBQUVELFFBQUlJLEtBQUssOElBRWtFRixHQUZsRSwrSkFNU0MsUUFOVCxpSEFRNkJGLFdBUjdCLHdOQVlpRUYsS0FaakUscUhBYXlFQSxLQWJ6RSxxRUFBVDtBQWtCQSxXQUFPSyxLQUFQO0FBQ0gsR0E3QkQ7O0FBK0JBLE1BQU1DLGNBQWMsR0FBRyxTQUFTQSxjQUFULENBQXdCQyxRQUF4QixFQUFrQztBQUNyRCxRQUFJQSxRQUFRLENBQUNDLElBQVQsQ0FBYyxNQUFkLENBQUosRUFBMkI7QUFDdkIsYUFBTyxLQUFQO0FBQ0g7O0FBRUQsV0FBTyxJQUFQO0FBQ0gsR0FORDs7QUFRQSxNQUFNQyxXQUFXLEdBQUcsU0FBU0EsV0FBVCxDQUFxQkMsT0FBckIsRUFBOEI7QUFDOUMsV0FBT1osNkNBQUMsQ0FBQ1ksT0FBTyxHQUFHLDRCQUFYLENBQVI7QUFDSCxHQUZEOztBQUlBLE1BQU1DLGVBQWUsR0FBRyxTQUFTQSxl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LGVBQVQsQ0FBaEI7QUFDQSxRQUFJNkIsU0FBUyxHQUFHdkMsR0FBRyxDQUFDYyxHQUFKLEVBQWhCO0FBRUEsUUFBSTBCLFNBQVMsR0FBR3hDLEdBQUcsQ0FBQ3RCLElBQUosQ0FBUyxNQUFULEtBQW9Cc0IsR0FBRyxDQUFDdEIsSUFBSixDQUFTLGdCQUFULENBQXBDLENBTDJFLENBS1g7O0FBRWhFLFFBQUkrRCxhQUFhLEdBQUdELFNBQVMsR0FBRyxHQUFaLEdBQWtCRixTQUFsQixHQUE4QixHQUFsRDtBQUNBLFFBQUlJLGFBQWEsR0FBR0YsU0FBUyxHQUFHLEdBQVosR0FBa0JELFNBQWxCLEdBQThCLEdBQWxEO0FBRUF4Qyw4QkFBMEIsQ0FBQ0MsR0FBRCxFQUFNeUMsYUFBTixFQUFxQkMsYUFBckIsQ0FBMUI7QUFDSCxHQVhEO0FBYUgsQ0FwUkEsQ0FBRCIsImZpbGUiOiIuL2FwcC9mb3Jtcy9maWVsZHMvbXVsdGlsZXZlbC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbiQoZnVuY3Rpb24oKSB7XG5cbiAgICBjb25zdCBnZXRGaWVsZCA9IGZ1bmN0aW9uIGdldEZpZWxkKGxldmVsLCBuYW1lKSB7XG4gICAgICAgIGxldCBsZXZlbE1hcmdpbiA9IGxldmVsICogNTA7XG4gICAgICAgIGxldCB0b3AgPSAobGV2ZWwgPT09IDAgPyAndG9wJyA6ICcnKTtcblxuICAgICAgICBsZXQgdGhlX25hbWUgPSAnbmFtZT1cIicgKyBuYW1lICsgJ1wiJztcbiAgICAgICAgaWYgKGxldmVsID09PSAwKSB7XG4gICAgICAgICAgICAvLyB0b3BcbiAgICAgICAgICAgIHRoZV9uYW1lID0gJ2RhdGEtYXR0ci1uYW1lPVwiJyArIG5hbWUgKyAnXCInO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZpZWxkID0gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvdyBhcnJheS1maWVsZC12YWx1ZV9vbmx5IGpzX19tdWx0aWxldmVsLWZpZWxkICR7dG9wfVwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtZ3Jhdi1hcnJheS10eXBlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGVfbmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogJHtsZXZlbE1hcmdpbn1weFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIlwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1taW51cyBqc19fcmVtb3ZlLWl0ZW1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtcGx1cyBqc19fYWRkLXNpYmxpbmcgaGlkZGVuXCIgZGF0YS1sZXZlbD1cIiR7bGV2ZWx9XCIgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZSBqc19fYWRkLWNoaWxkcmVuIGhpZGRlblwiIGRhdGEtbGV2ZWw9XCIke2xldmVsfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBgO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgaGFzQ2hpbGRJbnB1dHMgPSBmdW5jdGlvbiBoYXNDaGlsZElucHV0cygkZWxlbWVudCkge1xuICAgICAgICBpZiAoJGVsZW1lbnQuYXR0cignbmFtZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0VG9wSXRlbXMgPSBmdW5jdGlvbiBnZXRUb3BJdGVtcyhlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiAkKGVsZW1lbnQgKyAnIC5qc19fbXVsdGlsZXZlbC1maWVsZC50b3AnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVmcmVzaENvbnRyb2xzID0gZnVuY3Rpb24gcmVmcmVzaENvbnRyb2xzKHVuaXF1ZV9pZGVudGlmaWVyKSB7XG4gICAgICAgIGxldCBlbGVtZW50ID0gJ1tkYXRhLWdyYXYtbXVsdGlsZXZlbC1maWVsZF0nO1xuICAgICAgICBpZiAodW5pcXVlX2lkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSAnW2RhdGEtZ3Jhdi1tdWx0aWxldmVsLWZpZWxkXVtkYXRhLWlkPVwiJyArIHVuaXF1ZV9pZGVudGlmaWVyICsgJ1wiXSc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoaWRlQnV0dG9ucyA9IGZ1bmN0aW9uIGhpZGVCdXR0b25zKCkge1xuICAgICAgICAgICAgJChlbGVtZW50ICsgJyAuanNfX2FkZC1zaWJsaW5nJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgJChlbGVtZW50ICsgJyAuanNfX2FkZC1jaGlsZHJlbicpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByZXN0b3JlQWRkU2libGluZ0J1dHRvbnMgPSBmdW5jdGlvbiByZXN0b3JlQWRkU2libGluZ0J1dHRvbnMoKSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQgKyAnIC5jaGlsZHJlbi13cmFwcGVyJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSAkKHRoaXMpLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMubGFzdCgpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS5oYXNDbGFzcygnanNfX211bHRpbGV2ZWwtZmllbGQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSAkKHRoaXMpLmZpbmQoJy5qc19fbXVsdGlsZXZlbC1maWVsZCcpLmZpcnN0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZmluZCgnLmpzX19hZGQtc2libGluZycpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBhZGQgc2libGluZyB0byB0aGUgbGFzdCB0b3AgZWxlbWVudFxuICAgICAgICAgICAgJChlbGVtZW50ICsgJyAuanNfX211bHRpbGV2ZWwtZmllbGQudG9wJykubGFzdCgpLmZpbmQoJy5qc19fYWRkLXNpYmxpbmcnKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcmVzdG9yZUFkZENoaWxkcmVuQnV0dG9ucyA9IGZ1bmN0aW9uIHJlc3RvcmVBZGRDaGlsZHJlbkJ1dHRvbnMoKSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQgKyAnIC5qc19fbXVsdGlsZXZlbC1maWVsZCcpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKCQodGhpcykuc2libGluZ3MoJy5jaGlsZHJlbi13cmFwcGVyJykubGVuZ3RoID09PSAwIHx8ICQodGhpcykuc2libGluZ3MoJy5jaGlsZHJlbi13cmFwcGVyJykuZmluZCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmpzX19hZGQtY2hpbGRyZW4nKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcHJldmVudFJlbW92aW5nTGFzdFRvcEl0ZW0gPSBmdW5jdGlvbiBwcmV2ZW50UmVtb3ZpbmdMYXN0VG9wSXRlbSgpIHtcbiAgICAgICAgICAgIGxldCB0b3BfaXRlbXMgPSBnZXRUb3BJdGVtcyhlbGVtZW50KTtcbiAgICAgICAgICAgIGlmICh0b3BfaXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdG9wX2l0ZW1zLmZpcnN0KCkuZmluZCgnLmpzX19yZW1vdmUtaXRlbScpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBoaWRlQnV0dG9ucygpO1xuICAgICAgICByZXN0b3JlQWRkU2libGluZ0J1dHRvbnMoKTtcbiAgICAgICAgcmVzdG9yZUFkZENoaWxkcmVuQnV0dG9ucygpO1xuICAgICAgICBwcmV2ZW50UmVtb3ZpbmdMYXN0VG9wSXRlbSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBjaGFuZ2VBbGxPY2N1cnJlbmNlc0luVHJlZSA9IGZ1bmN0aW9uKCRlbCwgY3VycmVudF9uYW1lLCBuZXdfbmFtZSkge1xuICAgICAgICAkZWwucGFyZW50cygnW2RhdGEtZ3Jhdi1tdWx0aWxldmVsLWZpZWxkXScpLmZpbmQoJ2lucHV0JykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGxldCAkaW5wdXQgPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCRpbnB1dC5hdHRyKCduYW1lJykpIHtcbiAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignbmFtZScsICRpbnB1dC5hdHRyKCduYW1lJykucmVwbGFjZShjdXJyZW50X25hbWUsIG5ld19uYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJGlucHV0LmF0dHIoJ2RhdGEtYXR0ci1uYW1lJykpIHtcbiAgICAgICAgICAgICAgICAkaW5wdXQuYXR0cignZGF0YS1hdHRyLW5hbWUnLCAkaW5wdXQuYXR0cignZGF0YS1hdHRyLW5hbWUnKS5yZXBsYWNlKGN1cnJlbnRfbmFtZSwgbmV3X25hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWZyZXNoQ29udHJvbHMoKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdtb3VzZWxlYXZlJywgJ1tkYXRhLWdyYXYtbXVsdGlsZXZlbC1maWVsZF0nLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICBsZXQgdG9wX2l0ZW1zID0gZ2V0VG9wSXRlbXMoJ1tkYXRhLWlkPVwiJyArICQodGhpcykuZGF0YSgnaWQnKSArICdcIl0nKTtcbiAgICAgICAgbGV0IGhhc190b3BfaXRlbXNfd2l0aG91dF9jaGlsZHJlbiA9IGZhbHNlO1xuICAgICAgICBsZXQgZWxlbWVudF9jb250ZW50ID0gJyc7XG4gICAgICAgIHRvcF9pdGVtcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSAkKHRoaXMpO1xuICAgICAgICAgICAgaWYgKCQoaXRlbSkuc2libGluZ3MoJy5jaGlsZHJlbi13cmFwcGVyJykuZmluZCgnaW5wdXQnKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBoYXNfdG9wX2l0ZW1zX3dpdGhvdXRfY2hpbGRyZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRfY29udGVudCA9IGl0ZW0uZmluZCgnaW5wdXQnKS52YWwoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaGFzX3RvcF9pdGVtc193aXRob3V0X2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudF9jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgYWxlcnQoJ1dhcm5pbmc6IGlmIHlvdSBzYXZlIG5vdywgdGhlIGVsZW1lbnQgJyArIGVsZW1lbnRfY29udGVudCArICcsIHdpdGhvdXQgY2hpbGRyZW4sIHdpbGwgYmUgcmVtb3ZlZCwgYmVjYXVzZSBpdFxcJ3MgaW52YWxpZCBZQU1MJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFsZXJ0KCdXYXJuaW5nOiBpZiB5b3Ugc2F2ZSBub3csIHRoZSB0b3AgZWxlbWVudHMgd2l0aG91dCBjaGlsZHJlbiB3aWxsIGJlIHJlbW92ZWQsIGJlY2F1c2UgaXRcXCdzIGludmFsaWQgWUFNTCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1ncmF2LW11bHRpbGV2ZWwtZmllbGRdIC5qc19fYWRkLWNoaWxkcmVuJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSAkKHRoaXMpO1xuICAgICAgICBsZXQgdW5pcXVlX2NvbnRhaW5lcl9pZCA9IGVsZW1lbnQuY2xvc2VzdCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykuZGF0YSgnaWQnKTtcbiAgICAgICAgbGV0IGxldmVsID0gZWxlbWVudC5kYXRhKCdsZXZlbCcpICsgMTtcblxuICAgICAgICBjb25zdCBnZXRQYXJlbnRPZkVsZW1lbnQgPSBmdW5jdGlvbiBnZXRQYXJlbnRPZkVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IGVsZW1lbnQuY2xvc2VzdCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykucGFyZW50KCkuZmlyc3QoKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQuZmluZCgnLmNoaWxkcmVuLXdyYXBwZXInKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAkKHBhcmVudCkuYXBwZW5kKCc8ZGl2IGNsYXNzPVwiY2hpbGRyZW4td3JhcHBlclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LmZpbmQoJy5jaGlsZHJlbi13cmFwcGVyJykuZmlyc3QoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBnZXROYW1lRnJvbVBhcmVudElucHV0ID0gZnVuY3Rpb24gZ2V0TmFtZUZyb21QYXJlbnRJbnB1dChwYXJlbnRJbnB1dCwgYXR0cikge1xuICAgICAgICAgICAgaWYgKHBhcmVudElucHV0Lmhhc0NsYXNzKCdjaGlsZHJlbi13cmFwcGVyJykpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRJbnB1dCA9IHBhcmVudElucHV0LnNpYmxpbmdzKCcuanNfX211bHRpbGV2ZWwtZmllbGQnKS5maXJzdCgpLmZpbmQoJ2lucHV0Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRJbnB1dC5hdHRyKGF0dHIpICsgJ1snICsgcGFyZW50SW5wdXQudmFsKCkgKyAnXSc7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2V0SW5wdXRGcm9tQ2hpbGRyZW5XcmFwcGVyID0gZnVuY3Rpb24gZ2V0SW5wdXRGcm9tQ2hpbGRyZW5XcmFwcGVyKHBhcmVudENoaWxkcmVuV3JhcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcmVudENoaWxkcmVuV3JhcHBlci5zaWJsaW5ncygnLmpzX19tdWx0aWxldmVsLWZpZWxkJykuZmlyc3QoKS5maW5kKCdpbnB1dCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBwYXJlbnRDaGlsZHJlbldyYXBwZXIgPSBnZXRQYXJlbnRPZkVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGxldCBwYXJlbnRJbnB1dCA9IGdldElucHV0RnJvbUNoaWxkcmVuV3JhcHBlcihwYXJlbnRDaGlsZHJlbldyYXBwZXIpO1xuXG4gICAgICAgIGxldCBhdHRyID0gJ25hbWUnO1xuICAgICAgICBpZiAocGFyZW50SW5wdXQuY2xvc2VzdCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykuaGFzQ2xhc3MoJ3RvcCcpKSB7XG4gICAgICAgICAgICBhdHRyID0gJ2RhdGEtYXR0ci1uYW1lJztcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmVudElucHV0LmF0dHIoYXR0ciwgcGFyZW50SW5wdXQuYXR0cihhdHRyKS5yZXBsYWNlKCdbXScsICcnKSk7XG5cbiAgICAgICAgbGV0IG5hbWUgPSBnZXROYW1lRnJvbVBhcmVudElucHV0KHBhcmVudElucHV0LCBhdHRyKTtcbiAgICAgICAgbGV0IGZpZWxkID0gZ2V0RmllbGQobGV2ZWwsIG5hbWUpO1xuXG4gICAgICAgICQocGFyZW50Q2hpbGRyZW5XcmFwcGVyKS5hcHBlbmQoZmllbGQpO1xuICAgICAgICByZWZyZXNoQ29udHJvbHModW5pcXVlX2NvbnRhaW5lcl9pZCk7XG4gICAgfSk7XG5cbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtZ3Jhdi1tdWx0aWxldmVsLWZpZWxkXSAuanNfX2FkZC1zaWJsaW5nJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSAkKHRoaXMpO1xuICAgICAgICBsZXQgdW5pcXVlX2NvbnRhaW5lcl9pZCA9IGVsZW1lbnQuY2xvc2VzdCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykuZGF0YSgnaWQnKTtcbiAgICAgICAgbGV0IGxldmVsID0gZWxlbWVudC5kYXRhKCdsZXZlbCcpO1xuICAgICAgICBlbGVtZW50LmNsb3Nlc3QoJy5jaGlsZHJlbi13cmFwcGVyJykuZmluZCgnLmpzX19hZGQtc2libGluZycpLmFkZENsYXNzKCdoaWRkZW4nKTtcblxuICAgICAgICBsZXQgc2libGluZyA9IG51bGw7XG4gICAgICAgIGxldCBpc190b3AgPSBmYWxzZTtcblxuICAgICAgICBpZiAoZWxlbWVudC5jbG9zZXN0KCcuanNfX211bHRpbGV2ZWwtZmllbGQnKS5oYXNDbGFzcygndG9wJykpIHtcbiAgICAgICAgICAgIGlzX3RvcCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNfdG9wKSB7XG4gICAgICAgICAgICBzaWJsaW5nID0gZWxlbWVudC5jbG9zZXN0KCcuanNfX211bHRpbGV2ZWwtZmllbGQnKS5maXJzdCgpLmZpbmQoJ2lucHV0JykubGFzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2libGluZyA9IGVsZW1lbnQuc2libGluZ3MoJ2lucHV0JykuZmlyc3QoKTtcbiAgICAgICAgICAgIGlmICghc2libGluZykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBlbGVtZW50LmNsb3Nlc3QoJy5jaGlsZHJlbi13cmFwcGVyJykuZmlyc3QoKS5maW5kKCdpbnB1dCcpLmxhc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdldFBhcmVudE9mRWxlbWVudCA9IGZ1bmN0aW9uIGdldFBhcmVudE9mRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gZWxlbWVudC5jbG9zZXN0KCcuanNfX211bHRpbGV2ZWwtZmllbGQnKS5wYXJlbnQoKS5maXJzdCgpO1xuICAgICAgICAgICAgaWYgKCFwYXJlbnQuaGFzQ2xhc3MoJ2VsZW1lbnQtd3JhcHBlcicpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5maW5kKCcuZWxlbWVudC13cmFwcGVyJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICQocGFyZW50KS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJlbGVtZW50LXdyYXBwZXJcIj48L2Rpdj4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQuZmluZCgnLmVsZW1lbnQtd3JhcHBlcicpLmZpcnN0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZ2V0TmFtZUZyb21TaWJsaW5nID0gZnVuY3Rpb24gZ2V0TmFtZUZyb21TaWJsaW5nKHBhcmVudCwgc2libGluZywgaXNfdG9wID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gc2libGluZy5hdHRyKCduYW1lJyk7XG5cbiAgICAgICAgICAgIGlmIChoYXNDaGlsZElucHV0cyhzaWJsaW5nKSkge1xuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBzaWJsaW5nLmRhdGEoJ2F0dHItbmFtZScpICsgJ1tdJztcbiAgICAgICAgICAgICAgICBzaWJsaW5nLnJlbW92ZUF0dHIoJ25hbWUnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbGFzdF9pbmRleCA9IG5hbWUubGFzdEluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgIGxldCBhbG1vc3RfdGhlcmUgPSBuYW1lLnN1YnN0cihsYXN0X2luZGV4ICsgMSk7XG4gICAgICAgICAgICBsZXQgbGFzdF90YWcgPSBhbG1vc3RfdGhlcmUuc3Vic3RyKDAsIGFsbW9zdF90aGVyZS5sZW5ndGggLSAxKTtcblxuICAgICAgICAgICAgaWYgKCQuaXNOdW1lcmljKGxhc3RfdGFnKSkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoJ1snICsgbGFzdF90YWcgKyAnXScsICdbJyArIChwYXJzZUludChsYXN0X3RhZywgMTApICsgMSkgKyAnXScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNfdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoJ1snICsgbGFzdF90YWcgKyAnXScsICcnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSArICdbMV0nO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZSBzaWJsaW5nIG5hbWUgYXR0ciBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmcuYXR0cignbmFtZScpLnNsaWNlKCctMicpICE9PSAnWzBdJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWxsT2NjdXJyZW5jZXNJblRyZWUoc2libGluZywgc2libGluZy5hdHRyKCduYW1lJyksIHNpYmxpbmcuYXR0cignbmFtZScpICsgJ1swXScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgcGFyZW50ID0gZ2V0UGFyZW50T2ZFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBsZXQgbmFtZSA9IGdldE5hbWVGcm9tU2libGluZyhwYXJlbnQsIHNpYmxpbmcsIGlzX3RvcCk7XG5cbiAgICAgICAgbGV0IGZpZWxkID0gZ2V0RmllbGQobGV2ZWwsIG5hbWUpO1xuICAgICAgICAkKGZpZWxkKS5pbnNlcnRBZnRlcihwYXJlbnQpO1xuXG4gICAgICAgIHJlZnJlc2hDb250cm9scyh1bmlxdWVfY29udGFpbmVyX2lkKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1ncmF2LW11bHRpbGV2ZWwtZmllbGRdIC5qc19fcmVtb3ZlLWl0ZW0nLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5lbGVtZW50LXdyYXBwZXInKS5maXJzdCgpLnJlbW92ZSgpO1xuICAgICAgICBsZXQgdW5pcXVlX2NvbnRhaW5lcl9pZCA9ICQodGhpcykuY2xvc2VzdCgnLmpzX19tdWx0aWxldmVsLWZpZWxkJykuZGF0YSgnaWQnKTtcbiAgICAgICAgcmVmcmVzaENvbnRyb2xzKHVuaXF1ZV9jb250YWluZXJfaWQpO1xuICAgIH0pO1xuXG4gICAgLy8gU3RvcmUgb2xkIHZhbHVlIGJlZm9yZSBlZGl0aW5nIGEgZmllbGRcbiAgICAkKGRvY3VtZW50KS5vbignZm9jdXNpbicsICdbZGF0YS1ncmF2LW11bHRpbGV2ZWwtZmllbGRdIGlucHV0JywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgJCh0aGlzKS5kYXRhKCdjdXJyZW50LXZhbHVlJywgJCh0aGlzKS52YWwoKSk7XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGUgZmllbGQgZWRpdGVkIGV2ZW50XG4gICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICdbZGF0YS1ncmF2LW11bHRpbGV2ZWwtZmllbGRdIGlucHV0JywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgbGV0ICRlbCA9ICQodGhpcyk7XG4gICAgICAgIGxldCBvbGRfdmFsdWUgPSAkZWwuZGF0YSgnY3VycmVudC12YWx1ZScpO1xuICAgICAgICBsZXQgbmV3X3ZhbHVlID0gJGVsLnZhbCgpO1xuXG4gICAgICAgIGxldCBmdWxsX25hbWUgPSAkZWwuYXR0cignbmFtZScpIHx8ICRlbC5hdHRyKCdkYXRhLWF0dHItbmFtZScpOyAvLyBmaXJzdC1sZXZlbCBpdGVtcyBoYXZlIGBkYXRhLWF0dHItbmFtZWAgaW5zdGVhZCBvZiBgbmFtZWBcblxuICAgICAgICBsZXQgb2xkX25hbWVfYXR0ciA9IGZ1bGxfbmFtZSArICdbJyArIG9sZF92YWx1ZSArICddJztcbiAgICAgICAgbGV0IG5ld19uYW1lX2F0dHIgPSBmdWxsX25hbWUgKyAnWycgKyBuZXdfdmFsdWUgKyAnXSc7XG5cbiAgICAgICAgY2hhbmdlQWxsT2NjdXJyZW5jZXNJblRyZWUoJGVsLCBvbGRfbmFtZV9hdHRyLCBuZXdfbmFtZV9hdHRyKTtcbiAgICB9KTtcblxufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/multilevel.js\n");
/***/ }),
/***/ "./app/forms/fields/parents.js":
/*!*************************************!*\
!*** ./app/forms/fields/parents.js ***!
\*************************************/
/*! namespace exports */
/*! export Instances [provided] [no usage info] [missing usage info prevents renaming] */
/*! export b64_decode_unicode [provided] [no usage info] [missing usage info prevents renaming] */
/*! export b64_encode_unicode [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Instances\": () => /* binding */ Instances,\n/* harmony export */ \"default\": () => /* binding */ Parents,\n/* harmony export */ \"b64_encode_unicode\": () => /* binding */ b64_encode_unicode,\n/* harmony export */ \"b64_decode_unicode\": () => /* binding */ b64_decode_unicode\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_finderjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/finderjs */ \"./app/utils/finderjs.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_2__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar XHRUUID = 0;\nvar Instances = {};\n\nvar Parents = /*#__PURE__*/function () {\n function Parents(container, field, data) {\n var _this = this;\n\n _classCallCheck(this, Parents);\n\n this.container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n this.fieldName = field.attr('name');\n this.field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(this.fieldName, \"\\\"]\"));\n this.data = data;\n this.parentLabel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-parents-field-label=\\\"\".concat(this.fieldName, \"\\\"]\"));\n this.parentName = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-parents-field-name=\\\"\".concat(this.fieldName, \"\\\"]\"));\n var dataLoad = this.dataLoad;\n this.finder = new _utils_finderjs__WEBPACK_IMPORTED_MODULE_1__.default(this.container, function (parent, callback) {\n return dataLoad.call(_this, parent, callback);\n }, {\n labelKey: 'name',\n defaultPath: this.field.val(),\n createItemContent: function createItemContent(item) {\n return Parents.createItemContent(this.config, item);\n }\n });\n /*\n this.finder.$emitter.on('leaf-selected', (item) => {\n console.log('selected', item);\n this.finder.emit('create-column', () => this.createSimpleColumn(item));\n });\n this.finder.$emitter.on('item-selected', (selected) => {\n console.log('selected', selected);\n // for future use only - create column-card creation for file with details like in macOS finder\n // this.finder.$emitter('create-column', () => this.createSimpleColumn(selected));\n }); */\n\n this.finder.$emitter.on('column-created', function () {\n _this.container[0].scrollLeft = _this.container[0].scrollWidth - _this.container[0].clientWidth;\n });\n }\n\n _createClass(Parents, [{\n key: \"createSimpleColumn\",\n value: function createSimpleColumn(item) {}\n }, {\n key: \"dataLoad\",\n value: function dataLoad(parent, callback) {\n var _this2 = this;\n\n if (!parent) {\n return callback(this.data);\n }\n\n if (parent.type !== 'dir' || !parent['has-children']) {\n return false;\n }\n\n var UUID = ++XHRUUID;\n this.startLoader();\n jquery__WEBPACK_IMPORTED_MODULE_0___default().ajax({\n url: \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.current_url),\n method: 'post',\n data: Object.assign({}, getExtraFormData(this.container), {\n route: b64_encode_unicode(parent.value),\n field: this.field.data('fieldName'),\n action: 'getLevelListing'\n }),\n success: function success(response) {\n _this2.stopLoader();\n\n if (response.status === 'error') {\n _this2.finder.$emitter.emit('create-column', Parents.createErrorColumn(response.message)[0]);\n\n return false;\n } // stale request\n\n\n if (UUID !== XHRUUID) {\n return false;\n }\n\n return callback(response.data);\n }\n });\n }\n }, {\n key: \"startLoader\",\n value: function startLoader() {\n this.loadingIndicator = Parents.createLoadingColumn();\n this.finder.$emitter.emit('create-column', this.loadingIndicator[0]);\n return this.loadingIndicator;\n }\n }, {\n key: \"stopLoader\",\n value: function stopLoader() {\n return this.loadingIndicator && this.loadingIndicator.remove();\n }\n }], [{\n key: \"createItemContent\",\n value: function createItemContent(config, item) {\n var frag = document.createDocumentFragment();\n var label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n var infoContainer = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var iconPrepend = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var iconAppend = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var badge = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var prependClasses = ['fa'];\n var appendClasses = ['fa']; // prepend icon\n\n if (item.children || item.type === 'dir') {\n prependClasses.push('fa-folder');\n } else if (item.type === 'root') {\n prependClasses.push('fa-sitemap');\n } else if (item.type === 'file') {\n prependClasses.push('fa-file-o');\n }\n\n iconPrepend.addClass(prependClasses.join(' ')); // text label\n\n label.text(item[config.labelKey]).prepend(iconPrepend);\n label.appendTo(frag); // append icon\n\n if (item.children || item['has-children']) {\n appendClasses.push('fa-caret-right');\n badge.text(item.size || item.count || 0);\n badge.appendTo(infoContainer);\n }\n\n iconAppend.addClass(appendClasses.join(' '));\n iconAppend.appendTo(infoContainer);\n infoContainer.appendTo(frag);\n return frag;\n }\n }, {\n key: \"createLoadingColumn\",\n value: function createLoadingColumn() {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"\\n
\\n \");\n }\n }, {\n key: \"createErrorColumn\",\n value: function createErrorColumn(error) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"\\n
\\n
\\n \\n \".concat(error, \" \\n
\\n
\\n \"));\n }\n }]);\n\n return Parents;\n}();\n\n\nvar b64_encode_unicode = function b64_encode_unicode(str) {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {\n return String.fromCharCode('0x' + p1);\n }));\n};\nvar b64_decode_unicode = function b64_decode_unicode(str) {\n return decodeURIComponent(atob(str).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n};\n\nvar getExtraFormData = function getExtraFormData(container) {\n var form = container.closest('form');\n\n if (container.closest('[data-remodal-id]').length) {\n form = jquery__WEBPACK_IMPORTED_MODULE_0___default()('form#blueprints');\n }\n\n var data = {};\n var unique_id = form.find('[name=\"__unique_form_id__\"]');\n data['__form-name__'] = form.find('[name=\"__form-name__\"]').val();\n data['form-nonce'] = form.find('[name=\"form-nonce\"]').val();\n\n if (unique_id.length) {\n data['__unique_form_id__'] = unique_id.val();\n }\n\n return data;\n};\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-parents]', function (event) {\n event.preventDefault();\n event.stopPropagation();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var field = target.closest('.parents-wrapper').find('input[name]');\n var fieldName = field.attr('name');\n\n if (!field.length) {\n fieldName = target.data('parents');\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(target.data('parents'), \"\\\"]\")).first();\n }\n\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-remodal-id=\\\"\".concat(target.data('remodalTarget') || 'parents', \"\\\"]\"));\n var loader = modal.find('.grav-loading');\n var content = modal.find('.parents-content');\n loader.css('display', 'block');\n content.html('');\n jquery__WEBPACK_IMPORTED_MODULE_0___default().ajax({\n url: \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.current_url),\n method: 'post',\n data: Object.assign({}, getExtraFormData(target), {\n route: b64_encode_unicode(field.val()),\n field: field.data('fieldName'),\n action: 'getLevelListing',\n initial: true\n }),\n success: function success(response) {\n loader.css('display', 'none');\n\n if (response.status === 'error') {\n content.html(response.message);\n return true;\n }\n\n if (!Instances[\"\".concat(fieldName, \"-\").concat(modal.data('remodalId'))]) {\n Instances[\"\".concat(fieldName, \"-\").concat(modal.data('remodalId'))] = new Parents(content, field, response.data);\n } else {\n Instances[\"\".concat(fieldName, \"-\").concat(modal.data('remodalId'))].finder.reload(response.data);\n }\n\n modal.data('parents', Instances[\"\".concat(fieldName, \"-\").concat(modal.data('remodalId'))]);\n }\n });\n}); // apply finder selection to field\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-remodal-id].parents-container [data-parents-select]', function (event) {\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).closest('[data-remodal-id]');\n var parents = modal.data('parents');\n var finder = parents.finder;\n var field = parents.field;\n var parentLabel = parents.parentLabel;\n var parentName = parents.parentName;\n var selection = finder.findLastActive().item[0];\n var value = selection._item[finder.config.valueKey];\n var name = selection._item[finder.config.labelKey];\n field.val(value);\n parentLabel.text(value);\n parentName.text(name);\n finder.config.defaultPath = value;\n var remodal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-remodal-id=\\\"\".concat(modal.data('remodalId'), \"\\\"]\")).data('remodal')];\n remodal.close();\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9wYXJlbnRzLmpzPzQ5YzgiXSwibmFtZXMiOlsiWEhSVVVJRCIsIkluc3RhbmNlcyIsIlBhcmVudHMiLCJjb250YWluZXIiLCJmaWVsZCIsImRhdGEiLCIkIiwiZmllbGROYW1lIiwiYXR0ciIsInBhcmVudExhYmVsIiwicGFyZW50TmFtZSIsImRhdGFMb2FkIiwiZmluZGVyIiwiRmluZGVyIiwicGFyZW50IiwiY2FsbGJhY2siLCJjYWxsIiwibGFiZWxLZXkiLCJkZWZhdWx0UGF0aCIsInZhbCIsImNyZWF0ZUl0ZW1Db250ZW50IiwiaXRlbSIsImNvbmZpZyIsIiRlbWl0dGVyIiwib24iLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsInR5cGUiLCJVVUlEIiwic3RhcnRMb2FkZXIiLCJ1cmwiLCJncmF2Q29uZmlnIiwibWV0aG9kIiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0RXh0cmFGb3JtRGF0YSIsInJvdXRlIiwiYjY0X2VuY29kZV91bmljb2RlIiwidmFsdWUiLCJhY3Rpb24iLCJzdWNjZXNzIiwicmVzcG9uc2UiLCJzdG9wTG9hZGVyIiwic3RhdHVzIiwiZW1pdCIsImNyZWF0ZUVycm9yQ29sdW1uIiwibWVzc2FnZSIsImxvYWRpbmdJbmRpY2F0b3IiLCJjcmVhdGVMb2FkaW5nQ29sdW1uIiwicmVtb3ZlIiwiZnJhZyIsImRvY3VtZW50IiwiY3JlYXRlRG9jdW1lbnRGcmFnbWVudCIsImxhYmVsIiwiaW5mb0NvbnRhaW5lciIsImljb25QcmVwZW5kIiwiaWNvbkFwcGVuZCIsImJhZGdlIiwicHJlcGVuZENsYXNzZXMiLCJhcHBlbmRDbGFzc2VzIiwiY2hpbGRyZW4iLCJwdXNoIiwiYWRkQ2xhc3MiLCJqb2luIiwidGV4dCIsInByZXBlbmQiLCJhcHBlbmRUbyIsInNpemUiLCJjb3VudCIsImVycm9yIiwic3RyIiwiYnRvYSIsImVuY29kZVVSSUNvbXBvbmVudCIsInJlcGxhY2UiLCJ0b1NvbGlkQnl0ZXMiLCJtYXRjaCIsInAxIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYjY0X2RlY29kZV91bmljb2RlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiYXRvYiIsInNwbGl0IiwibWFwIiwiYyIsImNoYXJDb2RlQXQiLCJ0b1N0cmluZyIsInNsaWNlIiwiZm9ybSIsImNsb3Nlc3QiLCJsZW5ndGgiLCJ1bmlxdWVfaWQiLCJmaW5kIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJmaXJzdCIsIm1vZGFsIiwibG9hZGVyIiwiY29udGVudCIsImNzcyIsImh0bWwiLCJpbml0aWFsIiwicmVsb2FkIiwicGFyZW50cyIsInNlbGVjdGlvbiIsImZpbmRMYXN0QWN0aXZlIiwiX2l0ZW0iLCJ2YWx1ZUtleSIsIm5hbWUiLCJyZW1vZGFsIiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLE9BQU8sR0FBRyxDQUFkO0FBQ08sSUFBTUMsU0FBUyxHQUFHLEVBQWxCOztJQUVjQyxPO0FBQ2pCLG1CQUFZQyxTQUFaLEVBQXVCQyxLQUF2QixFQUE4QkMsSUFBOUIsRUFBb0M7QUFBQTs7QUFBQTs7QUFDaEMsU0FBS0YsU0FBTCxHQUFpQkcsNkNBQUMsQ0FBQ0gsU0FBRCxDQUFsQjtBQUNBLFNBQUtJLFNBQUwsR0FBaUJILEtBQUssQ0FBQ0ksSUFBTixDQUFXLE1BQVgsQ0FBakI7QUFDQSxTQUFLSixLQUFMLEdBQWFFLDZDQUFDLG1CQUFXLEtBQUtDLFNBQWhCLFNBQWQ7QUFDQSxTQUFLRixJQUFMLEdBQVlBLElBQVo7QUFDQSxTQUFLSSxXQUFMLEdBQW1CSCw2Q0FBQyx1Q0FBK0IsS0FBS0MsU0FBcEMsU0FBcEI7QUFDQSxTQUFLRyxVQUFMLEdBQWtCSiw2Q0FBQyxzQ0FBOEIsS0FBS0MsU0FBbkMsU0FBbkI7QUFFQSxRQUFNSSxRQUFRLEdB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TyxDQUFDQyxLQUFSO0FBQ0gsQ0FsQkQiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZmllbGRzL3BhcmVudHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEZpbmRlciBmcm9tICcuLi8uLi91dGlscy9maW5kZXJqcyc7XG5pbXBvcnQgeyBjb25maWcgYXMgZ3JhdkNvbmZpZyB9IGZyb20gJ2dyYXYtY29uZmlnJztcblxubGV0IFhIUlVVSUQgPSAwO1xuZXhwb3J0IGNvbnN0IEluc3RhbmNlcyA9IHt9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJlbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcihjb250YWluZXIsIGZpZWxkLCBkYXRhKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgICAgICB0aGlzLmZpZWxkTmFtZSA9IGZpZWxkLmF0dHIoJ25hbWUnKTtcbiAgICAgICAgdGhpcy5maWVsZCA9ICQoYFtuYW1lPVwiJHt0aGlzLmZpZWxkTmFtZX1cIl1gKTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYXJlbnRMYWJlbCA9ICQoYFtkYXRhLXBhcmVudHMtZmllbGQtbGFiZWw9XCIke3RoaXMuZmllbGROYW1lfVwiXWApO1xuICAgICAgICB0aGlzLnBhcmVudE5hbWUgPSAkKGBbZGF0YS1wYXJlbnRzLWZpZWxkLW5hbWU9XCIke3RoaXMuZmllbGROYW1lfVwiXWApO1xuXG4gICAgICAgIGNvbnN0IGRhdGFMb2FkID0gdGhpcy5kYXRhTG9hZDtcblxuICAgICAgICB0aGlzLmZpbmRlciA9IG5ldyBGaW5kZXIoXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgICAgIChwYXJlbnQsIGNhbGxiYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFMb2FkLmNhbGwodGhpcywgcGFyZW50LCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsS2V5OiAnbmFtZScsXG4gICAgICAgICAgICAgICAgZGVmYXVsdFBhdGg6IHRoaXMuZmllbGQudmFsKCksXG4gICAgICAgICAgICAgICAgY3JlYXRlSXRlbUNvbnRlbnQ6IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudHMuY3JlYXRlSXRlbUNvbnRlbnQodGhpcy5jb25maWcsIGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvKlxuICAgICAgICB0aGlzLmZpbmRlci4kZW1pdHRlci5vbignbGVhZi1zZWxlY3RlZCcsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCBpdGVtKTtcbiAgICAgICAgICAgIHRoaXMuZmluZGVyLmVtaXQoJ2NyZWF0ZS1jb2x1bW4nLCAoKSA9PiB0aGlzLmNyZWF0ZVNpbXBsZUNvbHVtbihpdGVtKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmluZGVyLiRlbWl0dGVyLm9uKCdpdGVtLXNlbGVjdGVkJywgKHNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnc2VsZWN0ZWQnLCBzZWxlY3RlZCk7XG4gICAgICAgICAgICAvLyBmb3IgZnV0dXJlIHVzZSBvbmx5IC0gY3JlYXRlIGNvbHVtbi1jYXJkIGNyZWF0aW9uIGZvciBmaWxlIHdpdGggZGV0YWlscyBsaWtlIGluIG1hY09TIGZpbmRlclxuICAgICAgICAgICAgLy8gdGhpcy5maW5kZXIuJGVtaXR0ZXIoJ2NyZWF0ZS1jb2x1bW4nLCAoKSA9PiB0aGlzLmNyZWF0ZVNpbXBsZUNvbHVtbihzZWxlY3RlZCkpO1xuICAgICAgICB9KTsgKi9cblxuICAgICAgICB0aGlzLmZpbmRlci4kZW1pdHRlci5vbignY29sdW1uLWNyZWF0ZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclswXS5zY3JvbGxMZWZ0ID0gdGhpcy5jb250YWluZXJbMF0uc2Nyb2xsV2lkdGggLSB0aGlzLmNvbnRhaW5lclswXS5jbGllbnRXaWR0aDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZUl0ZW1Db250ZW50KGNvbmZpZywgaXRlbSkge1xuICAgICAgICBjb25zdCBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgICAgIGNvbnN0IGxhYmVsID0gJChgPHNwYW4gdGl0bGU9XCIke2l0ZW1bY29uZmlnLmxhYmVsS2V5XX1cIiAvPmApO1xuICAgICAgICBjb25zdCBpbmZvQ29udGFpbmVyID0gJCgnPHNwYW4gY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiIC8+Jyk7XG4gICAgICAgIGNvbnN0IGljb25QcmVwZW5kID0gJCgnPGkgLz4nKTtcbiAgICAgICAgY29uc3QgaWNvbkFwcGVuZCA9ICQoJzxpIC8+Jyk7XG4gICAgICAgIGNvbnN0IGJhZGdlID0gJCgnPHNwYW4gY2xhc3M9XCJiYWRnZVwiIC8+Jyk7XG4gICAgICAgIGNvbnN0IHByZXBlbmRDbGFzc2VzID0gWydmYSddO1xuICAgICAgICBjb25zdCBhcHBlbmRDbGFzc2VzID0gWydmYSddO1xuXG4gICAgICAgIC8vIHByZXBlbmQgaWNvblxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiB8fCBpdGVtLnR5cGUgPT09ICdkaXInKSB7XG4gICAgICAgICAgICBwcmVwZW5kQ2xhc3Nlcy5wdXNoKCdmYS1mb2xkZXInKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdyb290Jykge1xuICAgICAgICAgICAgcHJlcGVuZENsYXNzZXMucHVzaCgnZmEtc2l0ZW1hcCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBwcmVwZW5kQ2xhc3Nlcy5wdXNoKCdmYS1maWxlLW8nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGljb25QcmVwZW5kLmFkZENsYXNzKHByZXBlbmRDbGFzc2VzLmpvaW4oJyAnKSk7XG5cbiAgICAgICAgLy8gdGV4dCBsYWJlbFxuICAgICAgICBsYWJlbC50ZXh0KGl0ZW1bY29uZmlnLmxhYmVsS2V5XSkucHJlcGVuZChpY29uUHJlcGVuZCk7XG4gICAgICAgIGxhYmVsLmFwcGVuZFRvKGZyYWcpO1xuXG4gICAgICAgIC8vIGFwcGVuZCBpY29uXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuIHx8IGl0ZW1bJ2hhcy1jaGlsZHJlbiddKSB7XG4gICAgICAgICAgICBhcHBlbmRDbGFzc2VzLnB1c2goJ2ZhLWNhcmV0LXJpZ2h0Jyk7XG4gICAgICAgICAgICBiYWRnZS50ZXh0KGl0ZW0uc2l6ZSB8fCBpdGVtLmNvdW50IHx8IDApO1xuICAgICAgICAgICAgYmFkZ2UuYXBwZW5kVG8oaW5mb0NvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpY29uQXBwZW5kLmFkZENsYXNzKGFwcGVuZENsYXNzZXMuam9pbignICcpKTtcbiAgICAgICAgaWNvbkFwcGVuZC5hcHBlbmRUbyhpbmZvQ29udGFpbmVyKTtcbiAgICAgICAgaW5mb0NvbnRhaW5lci5hcHBlbmRUbyhmcmFnKTtcblxuICAgICAgICByZXR1cm4gZnJhZztcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlTG9hZGluZ0NvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuICQoYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZqcy1jb2wgbGVhZi1jb2xcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlYWYtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF2LWxvYWRpbmdcIj48ZGl2IGNsYXNzPVwiZ3Jhdi1sb2FkZXJcIj5Mb2FkaW5nLi4uPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgYCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZUVycm9yQ29sdW1uKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAkKGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmanMtY29sIGxlYWYtY29sXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWFmLXJvdyBlcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWZ3IGZhLXdhcm5pbmdcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiR7ZXJyb3J9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIGApO1xuICAgIH1cblxuICAgIGNyZWF0ZVNpbXBsZUNvbHVtbihpdGVtKSB7fVxuXG4gICAgZGF0YUxvYWQocGFyZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRoaXMuZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50LnR5cGUgIT09ICdkaXInIHx8ICFwYXJlbnRbJ2hhcy1jaGlsZHJlbiddKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBVVUlEID0gKytYSFJVVUlEO1xuICAgICAgICB0aGlzLnN0YXJ0TG9hZGVyKCk7XG5cbiAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgIHVybDogYCR7Z3JhdkNvbmZpZy5jdXJyZW50X3VybH1gLFxuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBnZXRFeHRyYUZvcm1EYXRhKHRoaXMuY29udGFpbmVyKSwge1xuICAgICAgICAgICAgICAgIHJvdXRlOiBiNjRfZW5jb2RlX3VuaWNvZGUocGFyZW50LnZhbHVlKSxcbiAgICAgICAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZC5kYXRhKCdmaWVsZE5hbWUnKSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdnZXRMZXZlbExpc3RpbmcnXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcExvYWRlcigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRlci4kZW1pdHRlci5lbWl0KCdjcmVhdGUtY29sdW1uJywgUGFyZW50cy5jcmVhdGVFcnJvckNvbHVtbihyZXNwb25zZS5tZXNzYWdlKVswXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc3RhbGUgcmVxdWVzdFxuICAgICAgICAgICAgICAgIGlmIChVVUlEICE9PSBYSFJVVUlEKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2socmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXJ0TG9hZGVyKCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdJbmRpY2F0b3IgPSBQYXJlbnRzLmNyZWF0ZUxvYWRpbmdDb2x1bW4oKTtcbiAgICAgICAgdGhpcy5maW5kZXIuJGVtaXR0ZXIuZW1pdCgnY3JlYXRlLWNvbHVtbicsIHRoaXMubG9hZGluZ0luZGljYXRvclswXSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZ0luZGljYXRvcjtcbiAgICB9XG5cbiAgICBzdG9wTG9hZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nSW5kaWNhdG9yICYmIHRoaXMubG9hZGluZ0luZGljYXRvci5yZW1vdmUoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBiNjRfZW5jb2RlX3VuaWNvZGUgPSAoc3RyKSA9PiB7XG4gICAgcmV0dXJuIGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvJShbMC05QS1GXXsyfSkvZyxcbiAgICAgICAgZnVuY3Rpb24gdG9Tb2xpZEJ5dGVzKG1hdGNoLCBwMSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoJzB4JyArIHAxKTtcbiAgICAgICAgfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGI2NF9kZWNvZGVfdW5pY29kZSA9IChzdHIpID0+IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGF0b2Ioc3RyKS5zcGxpdCgnJykubWFwKGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgcmV0dXJuICclJyArICgnMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oJycpKTtcbn07XG5cbmNvbnN0IGdldEV4dHJhRm9ybURhdGEgPSAoY29udGFpbmVyKSA9PiB7XG4gICAgbGV0IGZvcm0gPSBjb250YWluZXIuY2xvc2VzdCgnZm9ybScpO1xuICAgIGlmIChjb250YWluZXIuY2xvc2VzdCgnW2RhdGEtcmVtb2RhbC1pZF0nKS5sZW5ndGgpIHtcbiAgICAgICAgZm9ybSA9ICQoJ2Zvcm0jYmx1ZXByaW50cycpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3QgdW5pcXVlX2lkID0gZm9ybS5maW5kKCdbbmFtZT1cIl9fdW5pcXVlX2Zvcm1faWRfX1wiXScpO1xuXG4gICAgZGF0YVsnX19mb3JtLW5hbWVfXyddID0gZm9ybS5maW5kKCdbbmFtZT1cIl9fZm9ybS1uYW1lX19cIl0nKS52YWwoKTtcbiAgICBkYXRhWydmb3JtLW5vbmNlJ10gPSBmb3JtLmZpbmQoJ1tuYW1lPVwiZm9ybS1ub25jZVwiXScpLnZhbCgpO1xuXG4gICAgaWYgKHVuaXF1ZV9pZC5sZW5ndGgpIHtcbiAgICAgICAgZGF0YVsnX191bmlxdWVfZm9ybV9pZF9fJ10gPSB1bmlxdWVfaWQudmFsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtcGFyZW50c10nLCAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBsZXQgZmllbGQgPSB0YXJnZXQuY2xvc2VzdCgnLnBhcmVudHMtd3JhcHBlcicpLmZpbmQoJ2lucHV0W25hbWVdJyk7XG4gICAgbGV0IGZpZWxkTmFtZSA9IGZpZWxkLmF0dHIoJ25hbWUnKTtcblxuICAgIGlmICghZmllbGQubGVuZ3RoKSB7XG4gICAgICAgIGZpZWxkTmFtZSA9IHRhcmdldC5kYXRhKCdwYXJlbnRzJyk7XG4gICAgICAgIGZpZWxkID0gJChgW25hbWU9XCIke3RhcmdldC5kYXRhKCdwYXJlbnRzJyl9XCJdYCkuZmlyc3QoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RhbCA9ICQoYFtkYXRhLXJlbW9kYWwtaWQ9XCIke3RhcmdldC5kYXRhKCdyZW1vZGFsVGFyZ2V0JykgfHwgJ3BhcmVudHMnfVwiXWApO1xuICAgIGNvbnN0IGxvYWRlciA9IG1vZGFsLmZpbmQoJy5ncmF2LWxvYWRpbmcnKTtcbiAgICBjb25zdCBjb250ZW50ID0gbW9kYWwuZmluZCgnLnBhcmVudHMtY29udGVudCcpO1xuXG4gICAgbG9hZGVyLmNzcygnZGlzcGxheScsICdibG9jaycpO1xuICAgIGNvbnRlbnQuaHRtbCgnJyk7XG4gICAgJC5hamF4KHtcbiAgICAgICAgdXJsOiBgJHtncmF2Q29uZmlnLmN1cnJlbnRfdXJsfWAsXG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBnZXRFeHRyYUZvcm1EYXRhKHRhcmdldCksIHtcbiAgICAgICAgICAgIHJvdXRlOiBiNjRfZW5jb2RlX3VuaWNvZGUoZmllbGQudmFsKCkpLFxuICAgICAgICAgICAgZmllbGQ6IGZpZWxkLmRhdGEoJ2ZpZWxkTmFtZScpLFxuICAgICAgICAgICAgYWN0aW9uOiAnZ2V0TGV2ZWxMaXN0aW5nJyxcbiAgICAgICAgICAgIGluaXRpYWw6IHRydWVcbiAgICAgICAgfSksXG4gICAgICAgIHN1Y2Nlc3MocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGxvYWRlci5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgY29udGVudC5odG1sKHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUluc3RhbmNlc1tgJHtmaWVsZE5hbWV9LSR7bW9kYWwuZGF0YSgncmVtb2RhbElkJyl9YF0pIHtcbiAgICAgICAgICAgICAgICBJbnN0YW5jZXNbYCR7ZmllbGROYW1lfS0ke21vZGFsLmRhdGEoJ3JlbW9kYWxJZCcpfWBdID0gbmV3IFBhcmVudHMoY29udGVudCwgZmllbGQsIHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBJbnN0YW5jZXNbYCR7ZmllbGROYW1lfS0ke21vZGFsLmRhdGEoJ3JlbW9kYWxJZCcpfWBdLmZpbmRlci5yZWxvYWQocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1vZGFsLmRhdGEoJ3BhcmVudHMnLCBJbnN0YW5jZXNbYCR7ZmllbGROYW1lfS0ke21vZGFsLmRhdGEoJ3JlbW9kYWxJZCcpfWBdKTtcblxuICAgICAgICB9XG4gICAgfSk7XG59KTtcblxuLy8gYXBwbHkgZmluZGVyIHNlbGVjdGlvbiB0byBmaWVsZFxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXJlbW9kYWwtaWRdLnBhcmVudHMtY29udGFpbmVyIFtkYXRhLXBhcmVudHMtc2VsZWN0XScsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IG1vZGFsID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5jbG9zZXN0KCdbZGF0YS1yZW1vZGFsLWlkXScpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBtb2RhbC5kYXRhKCdwYXJlbnRzJyk7XG4gICAgY29uc3QgZmluZGVyID0gcGFyZW50cy5maW5kZXI7XG4gICAgY29uc3QgZmllbGQgPSBwYXJlbnRzLmZpZWxkO1xuICAgIGNvbnN0IHBhcmVudExhYmVsID0gcGFyZW50cy5wYXJlbnRMYWJlbDtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gcGFyZW50cy5wYXJlbnROYW1lO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGZpbmRlci5maW5kTGFzdEFjdGl2ZSgpLml0ZW1bMF07XG4gICAgY29uc3QgdmFsdWUgPSBzZWxlY3Rpb24uX2l0ZW1bZmluZGVyLmNvbmZpZy52YWx1ZUtleV07XG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdGlvbi5faXRlbVtmaW5kZXIuY29uZmlnLmxhYmVsS2V5XTtcblxuICAgIGZpZWxkLnZhbCh2YWx1ZSk7XG4gICAgcGFyZW50TGFiZWwudGV4dCh2YWx1ZSk7XG4gICAgcGFyZW50TmFtZS50ZXh0KG5hbWUpO1xuICAgIGZpbmRlci5jb25maWcuZGVmYXVsdFBhdGggPSB2YWx1ZTtcblxuICAgIGNvbnN0IHJlbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwWyQoYFtkYXRhLXJlbW9kYWwtaWQ9XCIke21vZGFsLmRhdGEoJ3JlbW9kYWxJZCcpfVwiXWApLmRhdGEoJ3JlbW9kYWwnKV07XG4gICAgcmVtb2RhbC5jbG9zZSgpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/parents.js\n");
/***/ }),
/***/ "./app/forms/fields/permissions.js":
/*!*****************************************!*\
!*** ./app/forms/fields/permissions.js ***!
\*****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\nvar body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\nvar radioSelector = '.permission-container.parent-section input[type=\"radio\"]';\n\nvar handleParent = function handleParent(event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var value = target.val();\n var container = target.closest('.parent-section');\n var fieldset = container.next('fieldset');\n var radios = fieldset.find(\"input[type=\\\"radio\\\"][value=\\\"\".concat(value, \"\\\"]\"));\n\n if (container.data('isLocked') !== false) {\n container.data('isUpdating', true);\n radios.each(function (index, radio) {\n var ID = radio.id;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(radio).siblings(\"[for=\\\"\".concat(ID, \"\\\"]\")).trigger('click');\n });\n container.data('isUpdating', false);\n }\n};\n\nvar boundHandleParent = handleParent.bind(handleParent);\nbody.on('click', '.permission-container.parent-section label', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var container = target.closest('.parent-section');\n container.data('isLocked', true);\n});\nbody.on('input', radioSelector, boundHandleParent);\nbody.on('input', '.permissions-container input[type=\"radio\"][data-parent-id]', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var parent = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[for=\\\"\".concat(target.data('parentId'), \"\\\"]\"));\n var container = target.closest('fieldset').prev('.permission-container.parent-section');\n\n if (container.data('isUpdating') === true) {\n return true;\n }\n\n body.off('input', radioSelector, boundHandleParent);\n container.data('isLocked', false);\n parent.trigger('click');\n body.on('input', radioSelector, boundHandleParent);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9wZXJtaXNzaW9ucy5qcz9jODVmIl0sIm5hbWVzIjpbImJvZHkiLCIkIiwicmFkaW9TZWxlY3RvciIsImhhbmRsZVBhcmVudCIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsInZhbHVlIiwidmFsIiwiY29udGFpbmVyIiwiY2xvc2VzdCIsImZpZWxkc2V0IiwibmV4dCIsInJhZGlvcyIsImZpbmQiLCJkYXRhIiwiZWFjaCIsImluZGV4IiwicmFkaW8iLCJJRCIsImlkIiwic2libGluZ3MiLCJ0cmlnZ2VyIiwiYm91bmRIYW5kbGVQYXJlbnQiLCJiaW5kIiwib24iLCJwYXJlbnQiLCJwcmV2Iiwib2ZmIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUVBLElBQU1BLElBQUksR0FBR0MsNkNBQUMsQ0FBQyxNQUFELENBQWQ7QUFDQSxJQUFNQyxhQUFhLEdBQUcsMERBQXRCOztBQUVBLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLEtBQUQsRUFBVztBQUM1QixNQUFNQyxNQUFNLEdBQUdKLDZDQUFDLENBQUNHLEtBQUssQ0FBQ0UsYUFBUCxDQUFoQjtBQUNBLE1BQU1DLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxHQUFQLEVBQWQ7QUFDQSxNQUFNQyxTQUFTLEdBQUdKLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlLGlCQUFmLENBQWxCO0FBQ0EsTUFBTUMsUUFBUSxHQUFHRixTQUFTLENBQUNHLElBQVYsQ0FBZSxVQUFmLENBQWpCO0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixRQUFRLENBQUNHLElBQVQseUNBQTRDUCxLQUE1QyxTQUFmOztBQUVBLE1BQUlFLFNBQVMsQ0FBQ00sSUFBVixDQUFlLFVBQWYsTUFBK0IsS0FBbkMsRUFBMEM7QUFDdENOLGFBQVMsQ0FBQ00sSUFBVixDQUFlLFlBQWYsRUFBNkIsSUFBN0I7QUFDQUYsVUFBTSxDQUFDRyxJQUFQLENBQVksVUFBQ0MsS0FBRCxFQUFRQyxLQUFSLEVBQWtCO0FBQzFCLFVBQU1DLEVBQUUsR0FBR0QsS0FBSyxDQUFDRSxFQUFqQjtBQUNBbkIsbURBQUMsQ0FBQ2lCLEtBQUQsQ0FBRCxDQUFTRyxRQUFULGtCQUEyQkYsRUFBM0IsVUFBbUNHLE9BQW5DLENBQTJDLE9BQTNDO0FBQ0gsS0FIRDtBQUlBYixhQUFTLENBQUNNLElBQVYsQ0FBZSxZQUFmLEVBQTZCLEtBQTdCO0FBQ0g7QUFDSixDQWZEOztBQWlCQSxJQUFNUSxpQkFBaUIsR0FBR3BCLFlBQVksQ0FBQ3FCLElBQWIsQ0FBa0JyQixZQUFsQixDQUExQjtBQUVBSCxJQUFJLENBQUN5QixFQUFMLENBQVEsT0FBUixFQUFpQiw0Q0FBakIsRUFBK0QsVUFBQ3JCLEtBQUQsRUFBVztBQUN0RSxNQUFNQyxNQUFNLEdBQUdKLDZDQUFDLENBQUNHLEtBQUssQ0FBQ0UsYUFBUCxDQUFoQjtBQUNBLE1BQU1HLFNBQVMsR0FBR0osTUFBTSxDQUFDSyxPQUFQLENBQWUsaUJBQWYsQ0FBbEI7QUFDQUQsV0FBUyxDQUFDTSxJQUFWLENBQWUsVUFBZixFQUEyQixJQUEzQjtBQUNILENBSkQ7QUFNQWYsSUFBSSxDQUFDeUIsRUFBTCxDQUFRLE9BQVIsRUFBaUJ2QixhQUFqQixFQUFnQ3FCLGlCQUFoQztBQUVBdkIsSUFBSSxDQUFDeUIsRUFBTCxDQUFRLE9BQVIsRUFBaUIsNERBQWpCLEVBQStFLFVBQUNyQixLQUFELEVBQVc7QUFDdEYsTUFBTUMsTUFBTSxHQUFHSiw2Q0FBQyxDQUFDRyxLQUFLLENBQUNFLGFBQVAsQ0FBaEI7QUFDQSxNQUFNb0IsTUFBTSxHQUFHekIsNkNBQUMsa0JBQVVJLE1BQU0sQ0FBQ1UsSUFBUCxDQUFZLFVBQVosQ0FBVixTQUFoQjtBQUNBLE1BQU1OLFNBQVMsR0FBR0osTUFBTSxDQUFDSyxPQUFQLENBQWUsVUFBZixFQUEyQmlCLElBQTNCLENBQWdDLHNDQUFoQyxDQUFsQjs7QUFFQSxNQUFJbEIsU0FBUyxDQUFDTSxJQUFWLENBQWUsWUFBZixNQUFpQyxJQUFyQyxFQUEyQztBQUN2QyxXQUFPLElBQVA7QUFDSDs7QUFFRGYsTUFBSSxDQUFDNEIsR0FBTCxDQUFTLE9BQVQsRUFBa0IxQixhQUFsQixFQUFpQ3FCLGlCQUFqQztBQUNBZCxXQUFTLENBQUNNLElBQVYsQ0FBZSxVQUFmLEVBQTJCLEtBQTNCO0FBQ0FXLFFBQU0sQ0FBQ0osT0FBUCxDQUFlLE9BQWY7QUFDQXRCLE1BQUksQ0FBQ3lCLEVBQUwsQ0FBUSxPQUFSLEVBQWlCdkIsYUFBakIsRUFBZ0NxQixpQkFBaEM7QUFDSCxDQWJEIiwiZmlsZSI6Ii4vYXBwL2Zvcm1zL2ZpZWxkcy9wZXJtaXNzaW9ucy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbmNvbnN0IGJvZHkgPSAkKCdib2R5Jyk7XG5jb25zdCByYWRpb1NlbGVjdG9yID0gJy5wZXJtaXNzaW9uLWNvbnRhaW5lci5wYXJlbnQtc2VjdGlvbiBpbnB1dFt0eXBlPVwicmFkaW9cIl0nO1xuXG5jb25zdCBoYW5kbGVQYXJlbnQgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0LnZhbCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhcmdldC5jbG9zZXN0KCcucGFyZW50LXNlY3Rpb24nKTtcbiAgICBjb25zdCBmaWVsZHNldCA9IGNvbnRhaW5lci5uZXh0KCdmaWVsZHNldCcpO1xuICAgIGNvbnN0IHJhZGlvcyA9IGZpZWxkc2V0LmZpbmQoYGlucHV0W3R5cGU9XCJyYWRpb1wiXVt2YWx1ZT1cIiR7dmFsdWV9XCJdYCk7XG5cbiAgICBpZiAoY29udGFpbmVyLmRhdGEoJ2lzTG9ja2VkJykgIT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRhaW5lci5kYXRhKCdpc1VwZGF0aW5nJywgdHJ1ZSk7XG4gICAgICAgIHJhZGlvcy5lYWNoKChpbmRleCwgcmFkaW8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IElEID0gcmFkaW8uaWQ7XG4gICAgICAgICAgICAkKHJhZGlvKS5zaWJsaW5ncyhgW2Zvcj1cIiR7SUR9XCJdYCkudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRhaW5lci5kYXRhKCdpc1VwZGF0aW5nJywgZmFsc2UpO1xuICAgIH1cbn07XG5cbmNvbnN0IGJvdW5kSGFuZGxlUGFyZW50ID0gaGFuZGxlUGFyZW50LmJpbmQoaGFuZGxlUGFyZW50KTtcblxuYm9keS5vbignY2xpY2snLCAnLnBlcm1pc3Npb24tY29udGFpbmVyLnBhcmVudC1zZWN0aW9uIGxhYmVsJywgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0YXJnZXQuY2xvc2VzdCgnLnBhcmVudC1zZWN0aW9uJyk7XG4gICAgY29udGFpbmVyLmRhdGEoJ2lzTG9ja2VkJywgdHJ1ZSk7XG59KTtcblxuYm9keS5vbignaW5wdXQnLCByYWRpb1NlbGVjdG9yLCBib3VuZEhhbmRsZVBhcmVudCk7XG5cbmJvZHkub24oJ2lucHV0JywgJy5wZXJtaXNzaW9ucy1jb250YWluZXIgaW5wdXRbdHlwZT1cInJhZGlvXCJdW2RhdGEtcGFyZW50LWlkXScsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgY29uc3QgcGFyZW50ID0gJChgW2Zvcj1cIiR7dGFyZ2V0LmRhdGEoJ3BhcmVudElkJyl9XCJdYCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGFyZ2V0LmNsb3Nlc3QoJ2ZpZWxkc2V0JykucHJldignLnBlcm1pc3Npb24tY29udGFpbmVyLnBhcmVudC1zZWN0aW9uJyk7XG5cbiAgICBpZiAoY29udGFpbmVyLmRhdGEoJ2lzVXBkYXRpbmcnKSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBib2R5Lm9mZignaW5wdXQnLCByYWRpb1NlbGVjdG9yLCBib3VuZEhhbmRsZVBhcmVudCk7XG4gICAgY29udGFpbmVyLmRhdGEoJ2lzTG9ja2VkJywgZmFsc2UpO1xuICAgIHBhcmVudC50cmlnZ2VyKCdjbGljaycpO1xuICAgIGJvZHkub24oJ2lucHV0JywgcmFkaW9TZWxlY3RvciwgYm91bmRIYW5kbGVQYXJlbnQpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/permissions.js\n");
/***/ }),
/***/ "./app/forms/fields/selectize.js":
/*!***************************************!*\
!*** ./app/forms/fields/selectize.js ***!
\***************************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ SelectizeField,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! selectize */ \"./node_modules/selectize/dist/js/selectize.js\");\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(selectize__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_selectize_required_fix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/selectize-required-fix */ \"./app/utils/selectize-required-fix.js\");\n/* harmony import */ var _utils_selectize_option_click__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/selectize-option-click */ \"./app/utils/selectize-option-click.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar PagesRoute = {\n option: function option(item, escape) {\n var label = escape(item.text).split(' ');\n var arrows = label.shift();\n var slug = label.shift();\n return \"
\\n \".concat(arrows, \" \\n \\n \").concat(slug.replace('(', '/').replace(')', ''), \" \\n \").concat(label.join(' '), \" \\n \\n
\");\n }\n};\n\nvar SelectizeField = /*#__PURE__*/function () {\n function SelectizeField() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, SelectizeField);\n\n this.options = Object.assign({}, options);\n this.elements = [];\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-grav-selectize]').each(function (index, element) {\n return _this.add(element);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', this._onAddedNodes.bind(this));\n }\n\n _createClass(SelectizeField, [{\n key: \"add\",\n value: function add(element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n\n if (element.closest('template').length) {\n return false;\n }\n\n var tag = element.prop('tagName').toLowerCase();\n var isInput = tag === 'input' || tag === 'select';\n var data = (isInput ? element.closest('[data-grav-selectize]') : element).data('grav-selectize') || {};\n var field = isInput ? element : element.find('input, select');\n\n if (field.attr('name') === 'data[route]') {\n data = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, data, {\n render: PagesRoute\n });\n }\n\n if (!field.length || field.get(0).selectize) {\n return;\n }\n\n var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default().merge(data.plugins ? data.plugins : [], ['required-fix']);\n field.selectize(jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, data, {\n plugins: plugins\n }));\n this.elements.push(field.data('selectize'));\n }\n }, {\n key: \"_onAddedNodes\",\n value: function _onAddedNodes(event, target\n /* , record, instance */\n ) {\n var _this2 = this;\n\n var fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('select.fancy, input.fancy, [data-grav-selectize]').filter(function (index, element) {\n return !jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).closest('template').length;\n });\n\n if (!fields.length) {\n return;\n }\n\n fields.each(function (index, field) {\n return _this2.add(field);\n });\n }\n }]);\n\n return SelectizeField;\n}();\n\n\nvar Instance = new SelectizeField();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9zZWxlY3RpemUuanM/NzM1MyJdLCJuYW1lcyI6WyJQYWdlc1JvdXRlIiwib3B0aW9uIiwiaXRlbSIsImVzY2FwZSIsImxhYmVsIiwidGV4dCIsInNwbGl0IiwiYXJyb3dzIiwic2hpZnQiLCJzbHVnIiwicmVwbGFjZSIsImpvaW4iLCJTZWxlY3RpemVGaWVsZCIsIm9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJlbGVtZW50cyIsIiQiLCJlYWNoIiwiaW5kZXgiLCJlbGVtZW50IiwiYWRkIiwib24iLCJfb25BZGRlZE5vZGVzIiwiYmluZCIsImNsb3Nlc3QiLCJsZW5ndGgiLCJ0YWciLCJwcm9wIiwidG9Mb3dlckNhc2UiLCJpc0lucHV0IiwiZGF0YSIsImZpZWxkIiwiZmluZCIsImF0dHIiLCJyZW5kZXIiLCJnZXQiLCJzZWxlY3RpemUiLCJwbHVnaW5zIiwicHVzaCIsImV2ZW50IiwidGFyZ2V0IiwiZmllbGRzIiwiZmlsdGVyIiwiSW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxVQUFVLEdBQUc7QUFDZkMsUUFBTSxFQUFFLGdCQUFTQyxJQUFULEVBQWVDLE1BQWYsRUFBdUI7QUFDM0IsUUFBTUMsS0FBSyxHQUFHRCxNQUFNLENBQUNELElBQUksQ0FBQ0csSUFBTixDQUFOLENBQWtCQyxLQUFsQixDQUF3QixHQUF4QixDQUFkO0FBQ0EsUUFBTUMsTUFBTSxHQUFHSCxLQUFLLENBQUNJLEtBQU4sRUFBZjtBQUNBLFFBQU1DLElBQUksR0FBR0wsS0FBSyxDQUFDSSxLQUFOLEVBQWI7QUFFQSxtR0FDOEJELE1BRDlCLHNGQUdvQ0UsSUFBSSxDQUFDQyxPQUFMLENBQWEsR0FBYixFQUFrQixHQUFsQixFQUF1QkEsT0FBdkIsQ0FBK0IsR0FBL0IsRUFBb0MsRUFBcEMsQ0FIcEMsNENBSWdCTixLQUFLLENBQUNPLElB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QUFBLE9BQVo7QUFDSDs7Ozs7OztBQUdFLElBQUlZLFFBQVEsR0FBRyxJQUFJaEMsY0FBSixFQUFmIiwiZmlsZSI6Ii4vYXBwL2Zvcm1zL2ZpZWxkcy9zZWxlY3RpemUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0ICdzZWxlY3RpemUnO1xuaW1wb3J0ICcuLi8uLi91dGlscy9zZWxlY3RpemUtcmVxdWlyZWQtZml4JztcbmltcG9ydCAnLi4vLi4vdXRpbHMvc2VsZWN0aXplLW9wdGlvbi1jbGljayc7XG5cbmNvbnN0IFBhZ2VzUm91dGUgPSB7XG4gICAgb3B0aW9uOiBmdW5jdGlvbihpdGVtLCBlc2NhcGUpIHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBlc2NhcGUoaXRlbS50ZXh0KS5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBhcnJvd3MgPSBsYWJlbC5zaGlmdCgpO1xuICAgICAgICBjb25zdCBzbHVnID0gbGFiZWwuc2hpZnQoKTtcblxuICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJzZWxlY3RpemUtcm91dGUtb3B0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JleVwiPiR7YXJyb3dzfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC11cGRhdGVcIj4ke3NsdWcucmVwbGFjZSgnKCcsICcvJykucmVwbGFjZSgnKScsICcnKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+JHtsYWJlbC5qb2luKCcgJyl9PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5gO1xuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlbGVjdGl6ZUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZWxlbWVudHMgPSBbXTtcblxuICAgICAgICAkKCdbZGF0YS1ncmF2LXNlbGVjdGl6ZV0nKS5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4gdGhpcy5hZGQoZWxlbWVudCkpO1xuICAgICAgICAkKCdib2R5Jykub24oJ211dGF0aW9uLl9ncmF2JywgdGhpcy5fb25BZGRlZE5vZGVzLmJpbmQodGhpcykpO1xuICAgIH1cblxuICAgIGFkZChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbGVtZW50LmNsb3Nlc3QoJ3RlbXBsYXRlJykubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGFnID0gZWxlbWVudC5wcm9wKCd0YWdOYW1lJykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IGlzSW5wdXQgPSB0YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JztcblxuICAgICAgICBsZXQgZGF0YSA9IChpc0lucHV0ID8gZWxlbWVudC5jbG9zZXN0KCdbZGF0YS1ncmF2LXNlbGVjdGl6ZV0nKSA6IGVsZW1lbnQpLmRhdGEoJ2dyYXYtc2VsZWN0aXplJykgfHwge307XG4gICAgICAgIGxldCBmaWVsZCA9IChpc0lucHV0ID8gZWxlbWVudCA6IGVsZW1lbnQuZmluZCgnaW5wdXQsIHNlbGVjdCcpKTtcblxuICAgICAgICBpZiAoZmllbGQuYXR0cignbmFtZScpID09PSAnZGF0YVtyb3V0ZV0nKSB7XG4gICAgICAgICAgICBkYXRhID0gJC5leHRlbmQoe30sIGRhdGEsIHsgcmVuZGVyOiBQYWdlc1JvdXRlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmaWVsZC5sZW5ndGggfHwgZmllbGQuZ2V0KDApLnNlbGVjdGl6ZSkgeyByZXR1cm47IH1cbiAgICAgICAgY29uc3QgcGx1Z2lucyA9ICQubWVyZ2UoZGF0YS5wbHVnaW5zID8gZGF0YS5wbHVnaW5zIDogW10sIFsncmVxdWlyZWQtZml4J10pO1xuICAgICAgICBmaWVsZC5zZWxlY3RpemUoJC5leHRlbmQoe30sIGRhdGEsIHsgcGx1Z2lucyB9KSk7XG5cbiAgICAgICAgdGhpcy5lbGVtZW50cy5wdXNoKGZpZWxkLmRhdGEoJ3NlbGVjdGl6ZScpKTtcbiAgICB9XG5cbiAgICBfb25BZGRlZE5vZGVzKGV2ZW50LCB0YXJnZXQvKiAsIHJlY29yZCwgaW5zdGFuY2UgKi8pIHtcbiAgICAgICAgbGV0IGZpZWxkcyA9ICQodGFyZ2V0KS5maW5kKCdzZWxlY3QuZmFuY3ksIGlucHV0LmZhbmN5LCBbZGF0YS1ncmF2LXNlbGVjdGl6ZV0nKS5maWx0ZXIoKGluZGV4LCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISQoZWxlbWVudCkuY2xvc2VzdCgndGVtcGxhdGUnKS5sZW5ndGg7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBmaWVsZHMuZWFjaCgoaW5kZXgsIGZpZWxkKSA9PiB0aGlzLmFkZChmaWVsZCkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9IG5ldyBTZWxlY3RpemVGaWVsZCgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/selectize.js\n");
/***/ }),
/***/ "./app/forms/fields/selectunique.js":
/*!******************************************!*\
!*** ./app/forms/fields/selectunique.js ***!
\******************************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ SelectUniqueField,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mout_object_forIn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mout/object/forIn */ \"./node_modules/mout/object/forIn.js\");\n/* harmony import */ var mout_object_forIn__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mout_object_forIn__WEBPACK_IMPORTED_MODULE_1__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n // import { config } from 'grav-config';\n\nvar Data = {};\n\nvar SelectUniqueField = /*#__PURE__*/function () {\n function SelectUniqueField(options) {\n var _this = this;\n\n _classCallCheck(this, SelectUniqueField);\n\n var body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\n this.items = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n this.options = Object.assign({}, this.defaults, options);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-select-observe]').each(function (index, element) {\n return _this.addSelect(element);\n }).last().trigger('change', {\n load: true\n });\n body.on('mutation._grav', this._onAddedNodes.bind(this));\n body.on('mutation_removed._grav', this._onRemovedNodes.bind(this));\n }\n\n _createClass(SelectUniqueField, [{\n key: \"_onAddedNodes\",\n value: function _onAddedNodes(event, target, record, instance) {\n var _this2 = this;\n\n var fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('[data-select-observe]');\n\n if (!fields.length) {\n return;\n }\n\n fields.each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n\n if (!~_this2.items.index(field)) {\n _this2.addSelect(field);\n }\n });\n }\n }, {\n key: \"_onRemovedNodes\",\n value: function _onRemovedNodes(event, data\n /* , instance */\n ) {\n var _this3 = this;\n\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(data.target);\n var holder = target.data('collectionHolder');\n\n if (!holder) {\n return false;\n }\n\n var node = jquery__WEBPACK_IMPORTED_MODULE_0___default()(data.mutation.removedNodes);\n var value = node.find('[data-select-observe]').val();\n\n if (value) {\n Data[holder].state[value] = value;\n }\n\n target.find('[data-select-observe]').each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n\n if (field.val() !== value) {\n _this3.updateOptions(field);\n }\n });\n }\n }, {\n key: \"addSelect\",\n value: function addSelect(element) {\n var _this4 = this;\n\n this.items = this.items.add(element);\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var value = element.attr('value');\n var holder = element.closest('[data-collection-holder]').data('collectionHolder');\n var options = element.closest('[data-select-unique]').data('selectUnique');\n\n if (!Data[holder]) {\n var data = {};\n\n if (Array.isArray(options)) {\n options.slice(0).map(function (item) {\n data[item] = item;\n });\n } else {\n data = Object.assign({}, options);\n }\n\n Data[holder] = {\n original: null,\n state: null\n };\n Data[holder].original = Object.assign({}, data);\n Data[holder].state = Object.assign({}, data);\n }\n\n this.updateOptions(element);\n element.data('originalValue', value);\n element.on('change', function (event, extras) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n\n if (target.data('dummyChange')) {\n target.data('dummyChange', false);\n return false;\n }\n\n _this4.refreshOptions(target, extras && extras.load ? null : element.data('originalValue'));\n\n element.data('originalValue', target.val());\n });\n }\n }, {\n key: \"updateOptions\",\n value: function updateOptions(element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var value = element.attr('value');\n var holder = element.closest('[data-collection-holder]').data('collectionHolder');\n mout_object_forIn__WEBPACK_IMPORTED_MODULE_1___default()(Data[holder].state, function (v, k) {\n var selected = k === value ? 'selected=\"selected\"' : '';\n\n if (element.get(0).selectize) {\n var selectize = element.data('selectize');\n selectize.removeOption(k);\n selectize.addOption({\n value: k,\n text: v\n });\n } else {\n element.append(\"
\").concat(v, \" \"));\n }\n\n if (selected) {\n if (element.get(0).selectize) {\n var _selectize = element.data('selectize');\n\n _selectize.setValue(k);\n }\n\n delete Data[holder].state[value];\n }\n });\n }\n }, {\n key: \"refreshOptions\",\n value: function refreshOptions(element, originalValue) {\n var value = element.val();\n var holder = element.closest('[data-collection-holder]').data('collectionHolder');\n delete Data[holder].state[value];\n\n if (originalValue && Data[holder].original[originalValue]) {\n Data[holder].state[originalValue] = Data[holder].original[originalValue];\n }\n\n this.items.each(function (index, select) {\n select = jquery__WEBPACK_IMPORTED_MODULE_0___default()(select);\n\n if (select[0] === element[0]) {\n return;\n }\n\n var selectedValue = select.val();\n select.data('dummyChange', true);\n\n if (select.get(0).selectize) {\n var selectize = select.data('selectize');\n\n if (selectize) {\n selectize.clearOptions();\n\n if (selectedValue) {\n selectize.addOption({\n value: selectedValue,\n text: Data[holder].original[selectedValue] || selectedValue\n });\n }\n\n mout_object_forIn__WEBPACK_IMPORTED_MODULE_1___default()(Data[holder].state, function (v, k) {\n selectize.addOption({\n value: k,\n text: v\n });\n });\n selectize.setValue(selectedValue, true);\n }\n } else {\n select.empty();\n mout_object_forIn__WEBPACK_IMPORTED_MODULE_1___default()(Data[holder].state, function (v, k) {\n var selected = k === selectedValue ? 'selected=\"selected\"' : '';\n select.append(\"
\").concat(v, \" \"));\n });\n }\n\n select.data('dummyChange', false);\n });\n }\n }]);\n\n return SelectUniqueField;\n}();\n\n\nvar Instance = new SelectUniqueField();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9zZWxlY3R1bmlxdWUuanM/MjA0OSJdLCJuYW1lcyI6WyJEYXRhIiwiU2VsZWN0VW5pcXVlRmllbGQiLCJvcHRpb25zIiwiYm9keSIsIiQiLCJpdGVtcyIsIk9iamVjdCIsImFzc2lnbiIsImRlZmF1bHRzIiwiZWFjaCIsImluZGV4IiwiZWxlbWVudCIsImFkZFNlbGVjdCIsImxhc3QiLCJ0cmlnZ2VyIiwibG9hZCIsIm9uIiwiX29uQWRkZWROb2RlcyIsImJpbmQiLCJfb25SZW1vdmVkTm9kZXMiLCJldmVudCIsInRhcmdldCIsInJlY29yZCIsImluc3RhbmNlIiwiZmllbGRzIiwiZmluZCIsImxlbmd0aCIsImZpZWxkIiwiZGF0YSIsImhvbGRlciIsIm5vZGUiLCJtdXRhdGlvbiIsInJlbW92ZWROb2RlcyIsInZhbHVlIiwidmFsIiwic3RhdGUiLCJ1cGRhdGVPcHRpb25zIiwiYWRkIiwiYXR0ciIsImNsb3Nlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJzbGljZSIsIm1hcCIsIml0ZW0iLCJvcmlnaW5hbCIsImV4dHJhcyIsImN1cnJlbnRUYXJnZXQiLCJyZWZyZXNoT3B0aW9ucyIsImZvckluIiwidiIsImsiLCJzZWxlY3RlZCIsImdldCIsInNlbGVjdGl6ZSIsInJlbW92ZU9wdGlvbiIsImFkZE9wdGlvbiIsInRleHQiLCJhcHBlbmQiLCJzZXRWYWx1ZSIsIm9yaWdpbmFsVmFsdWUiLCJzZWxlY3QiLCJzZWxlY3RlZFZhbHVlIiwiY2xlYXJPcHRpb25zIiwiZW1wdHkiLCJJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Q0FFQTs7QUFFQSxJQUFNQSxJQUFJLEdBQUcsRUFBYjs7SUFDcUJDLGlCO0FBRWpCLDZCQUFZQyxPQUFaLEVBQXFCO0FBQUE7O0FBQUE7O0FBQ2pCLFFBQU1DLElBQUksR0FBR0MsNkNBQUMsQ0FBQyxNQUFELENBQWQ7QUFDQSxTQUFLQyxLQUFM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QUQsa0JBQU0sQ0FBQ0gsTUFBUCwyQkFBZ0NQLENBQWhDLGdCQUFzQ0MsUUFBdEMsY0FBa0RGLENBQWxEO0FBQ0gsV0FISSxDQUFMO0FBSUg7O0FBRURXLGNBQU0sQ0FBQ2pDLElBQVAsQ0FBWSxhQUFaLEVBQTJCLEtBQTNCO0FBQ0gsT0FuQ0Q7QUFvQ0g7Ozs7Ozs7QUFHRSxJQUFJcUMsUUFBUSxHQUFHLElBQUloRSxpQkFBSixFQUFmIiwiZmlsZSI6Ii4vYXBwL2Zvcm1zL2ZpZWxkcy9zZWxlY3R1bmlxdWUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IGZvckluIGZyb20gJ21vdXQvb2JqZWN0L2ZvckluJztcbi8vIGltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ2dyYXYtY29uZmlnJztcblxuY29uc3QgRGF0YSA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VsZWN0VW5pcXVlRmllbGQge1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBjb25zdCBib2R5ID0gJCgnYm9keScpO1xuICAgICAgICB0aGlzLml0ZW1zID0gJCgpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgICAgICAkKCdbZGF0YS1zZWxlY3Qtb2JzZXJ2ZV0nKS5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4gdGhpcy5hZGRTZWxlY3QoZWxlbWVudCkpLmxhc3QoKS50cmlnZ2VyKCdjaGFuZ2UnLCB7IGxvYWQ6IHRydWUgfSk7XG4gICAgICAgIGJvZHkub24oJ211dGF0aW9uLl9ncmF2JywgdGhpcy5fb25BZGRlZE5vZGVzLmJpbmQodGhpcykpO1xuICAgICAgICBib2R5Lm9uKCdtdXRhdGlvbl9yZW1vdmVkLl9ncmF2JywgdGhpcy5fb25SZW1vdmVkTm9kZXMuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgX29uQWRkZWROb2RlcyhldmVudCwgdGFyZ2V0LCByZWNvcmQsIGluc3RhbmNlKSB7XG4gICAgICAgIGxldCBmaWVsZHMgPSAkKHRhcmdldCkuZmluZCgnW2RhdGEtc2VsZWN0LW9ic2VydmVdJyk7XG4gICAgICAgIGlmICghZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBmaWVsZHMuZWFjaCgoaW5kZXgsIGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBmaWVsZCA9ICQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKCF+dGhpcy5pdGVtcy5pbmRleChmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFNlbGVjdChmaWVsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9vblJlbW92ZWROb2RlcyhldmVudCwgZGF0YS8qICwgaW5zdGFuY2UgKi8pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChkYXRhLnRhcmdldCk7XG4gICAgICAgIGNvbnN0IGhvbGRlciA9IHRhcmdldC5kYXRhKCdjb2xsZWN0aW9uSG9sZGVyJyk7XG4gICAgICAgIGlmICghaG9sZGVyKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgIGNvbnN0IG5vZGUgPSAkKGRhdGEubXV0YXRpb24ucmVtb3ZlZE5vZGVzKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlLmZpbmQoJ1tkYXRhLXNlbGVjdC1vYnNlcnZlXScpLnZhbCgpO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIERhdGFbaG9sZGVyXS5zdGF0ZVt2YWx1ZV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldC5maW5kKCdbZGF0YS1zZWxlY3Qtb2JzZXJ2ZV0nKS5lYWNoKChpbmRleCwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGZpZWxkID0gJChmaWVsZCk7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC52YWwoKSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoZmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRTZWxlY3QoZWxlbWVudCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC5hdHRyKCd2YWx1ZScpO1xuICAgICAgICBjb25zdCBob2xkZXIgPSBlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLWNvbGxlY3Rpb24taG9sZGVyXScpLmRhdGEoJ2NvbGxlY3Rpb25Ib2xkZXInKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtc2VsZWN0LXVuaXF1ZV0nKS5kYXRhKCdzZWxlY3RVbmlxdWUnKTtcblxuICAgICAgICBpZiAoIURhdGFbaG9sZGVyXSkge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB7fTtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zbGljZSgwKS5tYXAoKGl0ZW0pID0+IHsgZGF0YVtpdGVtXSA9IGl0ZW07IH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIERhdGFbaG9sZGVyXSA9IHsgb3JpZ2luYWw6IG51bGwsIHN0YXRlOiBudWxsIH07XG4gICAgICAgICAgICBEYXRhW2hvbGRlcl0ub3JpZ2luYWwgPSBPYmplY3QuYXNzaWduKHt9LCBkYXRhKTtcbiAgICAgICAgICAgIERhdGFbaG9sZGVyXS5zdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zKGVsZW1lbnQpO1xuXG4gICAgICAgIGVsZW1lbnQuZGF0YSgnb3JpZ2luYWxWYWx1ZScsIHZhbHVlKTtcbiAgICAgICAgZWxlbWVudC5vbignY2hhbmdlJywgKGV2ZW50LCBleHRyYXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0LmRhdGEoJ2R1bW15Q2hhbmdlJykpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQuZGF0YSgnZHVtbXlDaGFuZ2UnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hPcHRpb25zKHRhcmdldCwgZXh0cmFzICYmIGV4dHJhcy5sb2FkID8gbnVsbCA6IGVsZW1lbnQuZGF0YSgnb3JpZ2luYWxWYWx1ZScpKTtcbiAgICAgICAgICAgIGVsZW1lbnQuZGF0YSgnb3JpZ2luYWxWYWx1ZScsIHRhcmdldC52YWwoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZU9wdGlvbnMoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gJChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LmF0dHIoJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IGhvbGRlciA9IGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtY29sbGVjdGlvbi1ob2xkZXJdJykuZGF0YSgnY29sbGVjdGlvbkhvbGRlcicpO1xuXG4gICAgICAgIGZvckluKERhdGFbaG9sZGVyXS5zdGF0ZSwgKHYsIGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gayA9PT0gdmFsdWUgPyAnc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiJyA6ICcnO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5nZXQoMCkuc2VsZWN0aXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aXplID0gZWxlbWVudC5kYXRhKCdzZWxlY3RpemUnKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RpemUucmVtb3ZlT3B0aW9uKGspO1xuICAgICAgICAgICAgICAgIHNlbGVjdGl6ZS5hZGRPcHRpb24oeyB2YWx1ZTogaywgdGV4dDogdiB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmQoYDxvcHRpb24gdmFsdWU9XCIke2t9XCIgJHtzZWxlY3RlZH0+JHt2fTwvb3B0aW9uPmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5nZXQoMCkuc2VsZWN0aXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGl6ZSA9IGVsZW1lbnQuZGF0YSgnc2VsZWN0aXplJyk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGl6ZS5zZXRWYWx1ZShrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIERhdGFbaG9sZGVyXS5zdGF0ZVt2YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZnJlc2hPcHRpb25zKGVsZW1lbnQsIG9yaWdpbmFsVmFsdWUpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LnZhbCgpO1xuICAgICAgICBjb25zdCBob2xkZXIgPSBlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLWNvbGxlY3Rpb24taG9sZGVyXScpLmRhdGEoJ2NvbGxlY3Rpb25Ib2xkZXInKTtcbiAgICAgICAgZGVsZXRlIERhdGFbaG9sZGVyXS5zdGF0ZVt2YWx1ZV07XG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWUgJiYgRGF0YVtob2xkZXJdLm9yaWdpbmFsW29yaWdpbmFsVmFsdWVdKSB7XG4gICAgICAgICAgICBEYXRhW2hvbGRlcl0uc3RhdGVbb3JpZ2luYWxWYWx1ZV0gPSBEYXRhW2hvbGRlcl0ub3JpZ2luYWxbb3JpZ2luYWxWYWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1zLmVhY2goKGluZGV4LCBzZWxlY3QpID0+IHtcbiAgICAgICAgICAgIHNlbGVjdCA9ICQoc2VsZWN0KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RbMF0gPT09IGVsZW1lbnRbMF0pIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBzZWxlY3QudmFsKCk7XG4gICAgICAgICAgICBzZWxlY3QuZGF0YSgnZHVtbXlDaGFuZ2UnLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdC5nZXQoMCkuc2VsZWN0aXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aXplID0gc2VsZWN0LmRhdGEoJ3NlbGVjdGl6ZScpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGl6ZSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RpemUuY2xlYXJPcHRpb25zKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGl6ZS5hZGRPcHRpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IERhdGFbaG9sZGVyXS5vcmlnaW5hbFtzZWxlY3RlZFZhbHVlXSB8fCBzZWxlY3RlZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGZvckluKERhdGFbaG9sZGVyXS5zdGF0ZSwgKHYsIGspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGl6ZS5hZGRPcHRpb24oeyB2YWx1ZTogaywgdGV4dDogdiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aXplLnNldFZhbHVlKHNlbGVjdGVkVmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0LmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgZm9ySW4oRGF0YVtob2xkZXJdLnN0YXRlLCAodiwgaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGsgPT09IHNlbGVjdGVkVmFsdWUgPyAnc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiJyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3QuYXBwZW5kKGA8b3B0aW9uIHZhbHVlPVwiJHtrfVwiICR7c2VsZWN0ZWR9PiR7dn08L29wdGlvbj5gKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VsZWN0LmRhdGEoJ2R1bW15Q2hhbmdlJywgZmFsc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBsZXQgSW5zdGFuY2UgPSBuZXcgU2VsZWN0VW5pcXVlRmllbGQoKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/forms/fields/selectunique.js\n");
/***/ }),
/***/ "./app/forms/fields/text.js":
/*!**********************************!*\
!*** ./app/forms/fields/text.js ***!
\**********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.copy-to-clipboard').click(function (event) {\n var $tempElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').append($tempElement);\n $tempElement.val(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).prev('input').val()).select();\n document.execCommand('Copy');\n $tempElement.remove();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-hint', 'Copied to clipboard!').addClass('hint--left');\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy90ZXh0LmpzPzhlMTciXSwibmFtZXMiOlsiJCIsImRvY3VtZW50IiwicmVhZHkiLCJjbGljayIsImV2ZW50IiwiJHRlbXBFbGVtZW50IiwiYXBwZW5kIiwidmFsIiwicHJldiIsInNlbGVjdCIsImV4ZWNDb21tYW5kIiwicmVtb3ZlIiwiYXR0ciIsImFkZENsYXNzIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUVBQSw2Q0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQixZQUFXO0FBQ3pCRiwrQ0FBQyxDQUFDLG9CQUFELENBQUQsQ0FBd0JHLEtBQXhCLENBQThCLFVBQVNDLEtBQVQsRUFBZ0I7QUFDMUMsUUFBSUMsWUFBWSxHQUFHTCw2Q0FBQyxDQUFDLFNBQUQsQ0FBcEI7QUFDQUEsaURBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVU0sTUFBVixDQUFpQkQsWUFBakI7QUFDQUEsZ0JBQVksQ0FBQ0UsR0FBYixDQUFpQlAsNkNBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUVEsSUFBUixDQUFhLE9BQWIsRUFBc0JELEdBQXRCLEVBQWpCLEVBQThDRSxNQUE5QztBQUNBUixZQUFRLENBQUNTLFdBQVQsQ0FBcUIsTUFBckI7QUFDQUwsZ0JBQVksQ0FBQ00sTUFBYjtBQUVBWCxpREFBQyxDQUFDLElBQUQsQ0FBRCxDQUFRWSxJQUFSLENBQWEsV0FBYixFQUEwQixzQkFBMUIsRUFBa0RDLFFBQWxELENBQTJELFlBQTNEO0FBQ0gsR0FSRDtBQVNILENBVkQiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZmllbGRzL3RleHQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHtcbiAgICAkKCcuY29weS10by1jbGlwYm9hcmQnKS5jbGljayhmdW5jdGlvbihldmVudCkge1xuICAgICAgICB2YXIgJHRlbXBFbGVtZW50ID0gJCgnPGlucHV0PicpO1xuICAgICAgICAkKCdib2R5JykuYXBwZW5kKCR0ZW1wRWxlbWVudCk7XG4gICAgICAgICR0ZW1wRWxlbWVudC52YWwoJCh0aGlzKS5wcmV2KCdpbnB1dCcpLnZhbCgpKS5zZWxlY3QoKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0NvcHknKTtcbiAgICAgICAgJHRlbXBFbGVtZW50LnJlbW92ZSgpO1xuXG4gICAgICAgICQodGhpcykuYXR0cignZGF0YS1oaW50JywgJ0NvcGllZCB0byBjbGlwYm9hcmQhJykuYWRkQ2xhc3MoJ2hpbnQtLWxlZnQnKTtcbiAgICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/text.js\n");
/***/ }),
/***/ "./app/forms/form.js":
/*!***************************!*\
!*** ./app/forms/form.js ***!
\***************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ Form,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/* Dependencies for checking if changes happened since load on a form\nimport toastr from '../utils/toastr';\nimport { translations } from 'grav-config';\nimport { Instance as FormState } from './state';\n*/\n\nvar Form = /*#__PURE__*/function () {\n function Form(form) {\n var _this = this;\n\n _classCallCheck(this, Form);\n\n this.form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(form);\n\n if (!this.form.length || this.form.prop('tagName').toLowerCase() !== 'form') {\n return;\n }\n /* Option for not saving while nothing in a form has changed\n this.form.on('submit', (event) => {\n if (FormState.equals()) {\n event.preventDefault();\n toastr.info(translations.PLUGIN_ADMIN.NOTHING_TO_SAVE);\n }\n }); */\n\n\n this._attachShortcuts();\n\n this._attachToggleables();\n\n this._attachDisabledFields();\n\n this._submitUncheckedFields();\n\n this.observer = new MutationObserver(this.addedNodes);\n this.form.each(function (index, form) {\n return _this.observer.observe(form, {\n subtree: true,\n childList: true\n });\n });\n }\n\n _createClass(Form, [{\n key: \"_attachShortcuts\",\n value: function _attachShortcuts() {\n // CTRL + S / CMD + S - shortcut for [Save] when available\n var saveTask = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#titlebar [name=\"task\"][value=\"save\"][form=\"blueprints\"]');\n\n if (saveTask.length) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('keydown', function (event) {\n var key = String.fromCharCode(event.which).toLowerCase();\n\n if (!event.shiftKey && (event.ctrlKey && !event.altKey || event.metaKey) && key === 's') {\n event.preventDefault();\n saveTask.click();\n }\n });\n }\n }\n }, {\n key: \"_attachToggleables\",\n value: function _attachToggleables() {\n var query = '[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]';\n this.form.on('change', query, function (event) {\n var toggle = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var enabled = toggle.is(':checked');\n var parent = toggle.closest('.form-field');\n var label = parent.find('label.toggleable');\n var fields = parent.find('.form-data');\n var inputs = fields.find('input, select, textarea, button');\n label.add(fields).css('opacity', enabled ? '' : 0.7);\n inputs.map(function (index, input) {\n var isSelectize = input.selectize;\n input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(input);\n\n if (isSelectize) {\n isSelectize[enabled ? 'enable' : 'disable']();\n } else {\n input.prop('disabled', !enabled);\n }\n });\n });\n this.form.find(query).trigger('change');\n }\n }, {\n key: \"_attachDisabledFields\",\n value: function _attachDisabledFields() {\n var prefix = '.form-field-toggleable .form-data';\n var query = [];\n ['input', 'select', 'label[for]', 'textarea', '.selectize-control'].forEach(function (item) {\n query.push(\"\".concat(prefix, \" \").concat(item));\n });\n this.form.on('mousedown', query.join(', '), function (event) {\n var input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var isFor = input.prop('for');\n var isSelectize = (input.hasClass('selectize-control') || input.parents('.selectize-control')).length;\n\n if (isFor) {\n input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[id=\\\"\".concat(isFor, \"\\\"]\"));\n }\n\n if (isSelectize) {\n input = input.closest('.selectize-control').siblings('select[name]');\n }\n\n if (!input.prop('disabled')) {\n return true;\n }\n\n var toggle = input.closest('.form-field').find('[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]');\n toggle.trigger('click');\n });\n }\n }, {\n key: \"_submitUncheckedFields\",\n value: function _submitUncheckedFields() {\n var submitted = false;\n this.form.each(function (index, form) {\n form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(form);\n form.on('submit', function () {\n // workaround for MS Edge, submitting multiple forms at the same time\n if (submitted) {\n return false;\n }\n\n var formId = form.attr('id');\n var unchecked = form.find('input[type=\"checkbox\"]:not(:checked):not(:disabled)');\n var submit = form.find('[type=\"submit\"]').add(\"[form=\\\"\".concat(formId, \"\\\"][type=\\\"submit\\\"]\"));\n\n if (!unchecked.length) {\n return true;\n }\n\n submit.addClass('pointer-events-disabled');\n unchecked.each(function (index, element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var name = element.prop('name');\n var fake = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n form.append(fake);\n });\n submitted = true;\n return true;\n });\n });\n }\n }, {\n key: \"addedNodes\",\n value: function addedNodes(mutations) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type !== 'childList') {\n return;\n }\n\n if (mutation.addedNodes) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').trigger('mutation._grav', mutation.target, mutation, _this2);\n }\n\n if (mutation.removedNodes) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').trigger('mutation_removed._grav', {\n target: mutation.target,\n mutation: mutation\n }, _this2);\n }\n });\n }\n }]);\n\n return Form;\n}();\n\n\nvar Instance = new Form('form#blueprints');//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2Zvcm0uanM/OTQ2MyJdLCJuYW1lcyI6WyJGb3JtIiwiZm9ybSIsIiQiLCJsZW5ndGgiLCJwcm9wIiwidG9Mb3dlckNhc2UiLCJfYXR0YWNoU2hvcnRjdXRzIiwiX2F0dGFjaFRvZ2dsZWFibGVzIiwiX2F0dGFjaERpc2FibGVkRmllbGRzIiwiX3N1Ym1pdFVuY2hlY2tlZEZpZWxkcyIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsImFkZGVkTm9kZXMiLCJlYWNoIiwiaW5kZXgiLCJvYnNlcnZlIiwic3VidHJlZSIsImNoaWxkTGlzdCIsInNhdmVUYXNrIiwiZ2xvYmFsIiwib24iLCJldmVudCIsImtleSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIndoaWNoIiwic2hpZnRLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwibWV0YUtleSIsInByZXZlbnREZWZhdWx0IiwiY2xpY2siLCJxdWVyeSIsInRvZ2dsZSIsInRhcmdldCIsImVuYWJsZWQiLCJpcyIsInBhcmVudCIsImNsb3Nlc3QiLCJsYWJlbCIsImZpbmQiLCJmaWVsZHMiLCJpbnB1dHMiLCJhZGQiLCJjc3MiLCJtYXAiLCJpbnB1dCIsImlzU2VsZWN0aXplIiwic2VsZWN0aXplIiwidHJpZ2dlciIsInByZWZpeCIsImZvckVhY2giLCJpdGVtIiwicHVzaCIsImpvaW4iLCJpc0ZvciIsImhhc0NsYXNzIiwicGFyZW50cyIsInNpYmxpbmdzIiwic3VibWl0dGVkIiwiZm9ybUlkIiwiYXR0ciIsInVuY2hlY2tlZCIsInN1Ym1pdCIsImFkZENsYXNzIiwiZWxlbWVudCIsIm5hbWUiLCJmYWtlIiwiYXBwZW5kIiwibXV0YXRpb25zIiwibXV0YXRpb24iLCJ0eXBlIiwicmVtb3ZlZE5vZGVzIiwiSW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRXFCQSxJO0FBQ2pCLGdCQUFZ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WUQsSUFBWjtBQUNILFdBTEQ7QUFNQVIsbUJBQVMsR0FBRyxJQUFaO0FBQ0EsaUJBQU8sSUFBUDtBQUNILFNBbkJEO0FBb0JILE9BdEJEO0FBdUJIOzs7K0JBRVVVLFMsRUFBVztBQUFBOztBQUNsQkEsZUFBUyxDQUFDbEIsT0FBVixDQUFrQixVQUFDbUIsUUFBRCxFQUFjO0FBQzVCLFlBQUlBLFFBQVEsQ0FBQ0MsSUFBVCxLQUFrQixXQUF0QixFQUFtQztBQUFFO0FBQVM7O0FBRTlDLFlBQUlELFFBQVEsQ0FBQzFELFVBQWIsRUFBeUI7QUFDckJWLHVEQUFDLENBQUMsTUFBRCxDQUFELENBQVUrQyxPQUFWLENBQWtCLGdCQUFsQixFQUFvQ3FCLFFBQVEsQ0FBQ3BDLE1BQTdDLEVBQXFEb0MsUUFBckQsRUFBK0QsTUFBL0Q7QUFDSDs7QUFFRCxZQUFJQSxRQUFRLENBQUNFLFlBQWIsRUFBMkI7QUFDdkJ0RSx1REFBQyxDQUFDLE1BQUQsQ0FBRCxDQUFVK0MsT0FBVixDQUFrQix3QkFBbEIsRUFBNEM7QUFBRWYsa0JBQU0sRUFBRW9DLFFBQVEsQ0FBQ3BDLE1BQW5CO0FBQTJCb0Msb0JBQVEsRUFBUkE7QUFBM0IsV0FBNUMsRUFBbUYsTUFBbkY7QUFDSDtBQUNKLE9BVkQ7QUFXSDs7Ozs7OztBQUdFLElBQUlHLFFBQVEsR0FBRyxJQUFJekUsSUFBSixDQUFTLGlCQUFULENBQWYiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZm9ybS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbi8qIERlcGVuZGVuY2llcyBmb3IgY2hlY2tpbmcgaWYgY2hhbmdlcyBoYXBwZW5lZCBzaW5jZSBsb2FkIG9uIGEgZm9ybVxuaW1wb3J0IHRvYXN0ciBmcm9tICcuLi91dGlscy90b2FzdHInO1xuaW1wb3J0IHsgdHJhbnNsYXRpb25zIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IHsgSW5zdGFuY2UgYXMgRm9ybVN0YXRlIH0gZnJvbSAnLi9zdGF0ZSc7XG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihmb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9ICQoZm9ybSk7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmxlbmd0aCB8fCB0aGlzLmZvcm0ucHJvcCgndGFnTmFtZScpLnRvTG93ZXJDYXNlKCkgIT09ICdmb3JtJykgeyByZXR1cm47IH1cblxuICAgICAgICAvKiBPcHRpb24gZm9yIG5vdCBzYXZpbmcgd2hpbGUgbm90aGluZyBpbiBhIGZvcm0gaGFzIGNoYW5nZWRcblxuICAgICAgICB0aGlzLmZvcm0ub24oJ3N1Ym1pdCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKEZvcm1TdGF0ZS5lcXVhbHMoKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdG9hc3RyLmluZm8odHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5OT1RISU5HX1RPX1NBVkUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTsgKi9cblxuICAgICAgICB0aGlzLl9hdHRhY2hTaG9ydGN1dHMoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoVG9nZ2xlYWJsZXMoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoRGlzYWJsZWRGaWVsZHMoKTtcbiAgICAgICAgdGhpcy5fc3VibWl0VW5jaGVja2VkRmllbGRzKCk7XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuYWRkZWROb2Rlcyk7XG4gICAgICAgIHRoaXMuZm9ybS5lYWNoKChpbmRleCwgZm9ybSkgPT4gdGhpcy5vYnNlcnZlci5vYnNlcnZlKGZvcm0sIHsgc3VidHJlZTogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlIH0pKTtcbiAgICB9XG5cbiAgICBfYXR0YWNoU2hvcnRjdXRzKCkge1xuICAgICAgICAvLyBDVFJMICsgUyAvIENNRCArIFMgLSBzaG9ydGN1dCBmb3IgW1NhdmVdIHdoZW4gYXZhaWxhYmxlXG4gICAgICAgIGxldCBzYXZlVGFzayA9ICQoJyN0aXRsZWJhciBbbmFtZT1cInRhc2tcIl1bdmFsdWU9XCJzYXZlXCJdW2Zvcm09XCJibHVlcHJpbnRzXCJdJyk7XG5cbiAgICAgICAgaWYgKHNhdmVUYXNrLmxlbmd0aCkge1xuICAgICAgICAgICAgJChnbG9iYWwpLm9uKCdrZXlkb3duJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LndoaWNoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgKChldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkpIHx8IGV2ZW50Lm1ldGFLZXkpICYmIGtleSA9PT0gJ3MnKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHNhdmVUYXNrLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfYXR0YWNoVG9nZ2xlYWJsZXMoKSB7XG4gICAgICAgIGxldCBxdWVyeSA9ICdbZGF0YS1ncmF2LWZpZWxkPVwidG9nZ2xlYWJsZVwiXSBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nO1xuXG4gICAgICAgIHRoaXMuZm9ybS5vbignY2hhbmdlJywgcXVlcnksIChldmVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRvZ2dsZSA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGxldCBlbmFibGVkID0gdG9nZ2xlLmlzKCc6Y2hlY2tlZCcpO1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRvZ2dsZS5jbG9zZXN0KCcuZm9ybS1maWVsZCcpO1xuICAgICAgICAgICAgbGV0IGxhYmVsID0gcGFyZW50LmZpbmQoJ2xhYmVsLnRvZ2dsZWFibGUnKTtcbiAgICAgICAgICAgIGxldCBmaWVsZHMgPSBwYXJlbnQuZmluZCgnLmZvcm0tZGF0YScpO1xuICAgICAgICAgICAgbGV0IGlucHV0cyA9IGZpZWxkcy5maW5kKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYnV0dG9uJyk7XG5cbiAgICAgICAgICAgIGxhYmVsLmFkZChmaWVsZHMpLmNzcygnb3BhY2l0eScsIGVuYWJsZWQgPyAnJyA6IDAuNyk7XG4gICAgICAgICAgICBpbnB1dHMubWFwKChpbmRleCwgaW5wdXQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaXNTZWxlY3RpemUgPSBpbnB1dC5zZWxlY3RpemU7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSAkKGlucHV0KTtcblxuICAgICAgICAgICAgICAgIGlmIChpc1NlbGVjdGl6ZSkge1xuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGl6ZVtlbmFibGVkID8gJ2VuYWJsZScgOiAnZGlzYWJsZSddKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQucHJvcCgnZGlzYWJsZWQnLCAhZW5hYmxlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybS5maW5kKHF1ZXJ5KS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9XG5cbiAgICBfYXR0YWNoRGlzYWJsZWRGaWVsZHMoKSB7XG4gICAgICAgIGxldCBwcmVmaXggPSAnLmZvcm0tZmllbGQtdG9nZ2xlYWJsZSAuZm9ybS1kYXRhJztcbiAgICAgICAgbGV0IHF1ZXJ5ID0gW107XG5cbiAgICAgICAgWydpbnB1dCcsICdzZWxlY3QnLCAnbGFiZWxbZm9yXScsICd0ZXh0YXJlYScsICcuc2VsZWN0aXplLWNvbnRyb2wnXS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBxdWVyeS5wdXNoKGAke3ByZWZpeH0gJHtpdGVtfWApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm0ub24oJ21vdXNlZG93bicsIHF1ZXJ5LmpvaW4oJywgJyksIChldmVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IGlucHV0ID0gJChldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgbGV0IGlzRm9yID0gaW5wdXQucHJvcCgnZm9yJyk7XG4gICAgICAgICAgICBsZXQgaXNTZWxlY3RpemUgPSAoaW5wdXQuaGFzQ2xhc3MoJ3NlbGVjdGl6ZS1jb250cm9sJykgfHwgaW5wdXQucGFyZW50cygnLnNlbGVjdGl6ZS1jb250cm9sJykpLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKGlzRm9yKSB7IGlucHV0ID0gJChgW2lkPVwiJHtpc0Zvcn1cIl1gKTsgfVxuICAgICAgICAgICAgaWYgKGlzU2VsZWN0aXplKSB7IGlucHV0ID0gaW5wdXQuY2xvc2VzdCgnLnNlbGVjdGl6ZS1jb250cm9sJykuc2libGluZ3MoJ3NlbGVjdFtuYW1lXScpOyB9XG5cbiAgICAgICAgICAgIGlmICghaW5wdXQucHJvcCgnZGlzYWJsZWQnKSkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gICAgICAgICAgICBsZXQgdG9nZ2xlID0gaW5wdXQuY2xvc2VzdCgnLmZvcm0tZmllbGQnKS5maW5kKCdbZGF0YS1ncmF2LWZpZWxkPVwidG9nZ2xlYWJsZVwiXSBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKTtcbiAgICAgICAgICAgIHRvZ2dsZS50cmlnZ2VyKCdjbGljaycpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfc3VibWl0VW5jaGVja2VkRmllbGRzKCkge1xuICAgICAgICBsZXQgc3VibWl0dGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybS5lYWNoKChpbmRleCwgZm9ybSkgPT4ge1xuICAgICAgICAgICAgZm9ybSA9ICQoZm9ybSk7XG4gICAgICAgICAgICBmb3JtLm9uKCdzdWJtaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gd29ya2Fyb3VuZCBmb3IgTVMgRWRnZSwgc3VibWl0dGluZyBtdWx0aXBsZSBmb3JtcyBhdCB0aGUgc2FtZSB0aW1lXG4gICAgICAgICAgICAgICAgaWYgKHN1Ym1pdHRlZCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICAgICAgICAgIGxldCBmb3JtSWQgPSBmb3JtLmF0dHIoJ2lkJyk7XG4gICAgICAgICAgICAgICAgbGV0IHVuY2hlY2tlZCA9IGZvcm0uZmluZCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOm5vdCg6Y2hlY2tlZCk6bm90KDpkaXNhYmxlZCknKTtcbiAgICAgICAgICAgICAgICBsZXQgc3VibWl0ID0gZm9ybS5maW5kKCdbdHlwZT1cInN1Ym1pdFwiXScpLmFkZChgW2Zvcm09XCIke2Zvcm1JZH1cIl1bdHlwZT1cInN1Ym1pdFwiXWApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF1bmNoZWNrZWQubGVuZ3RoKSB7IHJldHVybiB0cnVlOyB9XG5cbiAgICAgICAgICAgICAgICBzdWJtaXQuYWRkQ2xhc3MoJ3BvaW50ZXItZXZlbnRzLWRpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgdW5jaGVja2VkLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGVsZW1lbnQucHJvcCgnbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmFrZSA9ICQoYDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIiR7bmFtZX1cIiB2YWx1ZT1cIjBcIiAvPmApO1xuICAgICAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZChmYWtlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZGVkTm9kZXMobXV0YXRpb25zKSB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgIT09ICdjaGlsZExpc3QnKSB7IHJldHVybjsgfVxuXG4gICAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2Rlcykge1xuICAgICAgICAgICAgICAgICQoJ2JvZHknKS50cmlnZ2VyKCdtdXRhdGlvbi5fZ3JhdicsIG11dGF0aW9uLnRhcmdldCwgbXV0YXRpb24sIHRoaXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keScpLnRyaWdnZXIoJ211dGF0aW9uX3JlbW92ZWQuX2dyYXYnLCB7IHRhcmdldDogbXV0YXRpb24udGFyZ2V0LCBtdXRhdGlvbiB9LCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gbmV3IEZvcm0oJ2Zvcm0jYmx1ZXByaW50cycpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/form.js\n");
/***/ }),
/***/ "./app/forms/index.js":
/*!****************************!*\
!*** ./app/forms/index.js ***!
\****************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ \"./app/forms/state.js\");\n/* harmony import */ var _form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./form */ \"./app/forms/form.js\");\n/* harmony import */ var _fields__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fields */ \"./app/forms/fields/index.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n Form: {\n Form: _form__WEBPACK_IMPORTED_MODULE_1__.default,\n Instance: _form__WEBPACK_IMPORTED_MODULE_1__.Instance\n },\n Fields: _fields__WEBPACK_IMPORTED_MODULE_2__.default,\n FormState: {\n FormState: _state__WEBPACK_IMPORTED_MODULE_0__.default,\n Instance: _state__WEBPACK_IMPORTED_MODULE_0__.Instance\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2luZGV4LmpzPzkyNzMiXSwibmFtZXMiOlsiRm9ybSIsIkluc3RhbmNlIiwiRm9ybUluc3RhbmNlIiwiRmllbGRzIiwiRm9ybVN0YXRlIiwiRm9ybVN0YXRlSW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBRUE7QUFFQSxpRUFBZTtBQUNYQSxNQUFJLEVBQUU7QUFDRkEsUUFBSSxFQUFKQSwwQ0FERTtBQUVGQyxZQUFRLEVBQUVDLDJDQUFZQTtBQUZwQixHQURLO0FBS1hDLFFBQU0sRUFBTkEsNENBTFc7QUFNWEMsV0FBUyxFQUFFO0FBQ1BBLGFBQVMsRUFBVEEsMkNBRE87QUFFUEgsWUFBUSxFQUFFSSw0Q0FBaUJBO0FBRnBCO0FBTkEsQ0FBZiIsImZpbGUiOiIuL2FwcC9mb3Jtcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGb3JtU3RhdGUsIHsgSW5zdGFuY2UgYXMgRm9ybVN0YXRlSW5zdGFuY2UgfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCBGb3JtLCB7IEluc3RhbmNlIGFzIEZvcm1JbnN0YW5jZSB9IGZyb20gJy4vZm9ybSc7XG5cbmltcG9ydCBGaWVsZHMgZnJvbSAnLi9maWVsZHMnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgRm9ybToge1xuICAgICAgICBGb3JtLFxuICAgICAgICBJbnN0YW5jZTogRm9ybUluc3RhbmNlXG4gICAgfSxcbiAgICBGaWVsZHMsXG4gICAgRm9ybVN0YXRlOiB7XG4gICAgICAgIEZvcm1TdGF0ZSxcbiAgICAgICAgSW5zdGFuY2U6IEZvcm1TdGF0ZUluc3RhbmNlXG4gICAgfVxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/forms/index.js\n");
/***/ }),
/***/ "./app/forms/state.js":
/*!****************************!*\
!*** ./app/forms/state.js ***!
\****************************/
/*! namespace exports */
/*! export DOMBehaviors [provided] [no usage info] [missing usage info prevents renaming] */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ FormState,\n/* harmony export */ \"Instance\": () => /* binding */ Instance,\n/* harmony export */ \"DOMBehaviors\": () => /* binding */ DOMBehaviors\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutablediff */ \"./node_modules/immutablediff/src/diff.js\");\n/* harmony import */ var immutablediff__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutablediff__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar FormLoadState = {};\nvar DOMBehaviors = {\n attach: function attach() {\n this.preventUnload();\n this.preventClickAway();\n },\n preventUnload: function preventUnload() {\n var selector = '[name=\"task\"][value^=\"save\"], [data-delete-action]';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(window, 'events').beforeunload || []).filter(function (event) {\n return event.namespace === '_grav';\n }).length) {\n return;\n } // Allow some elements to leave the page without native confirmation\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n }); // Catch browser uri change / refresh attempt and stop it if the form state is dirty\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('beforeunload._grav', function () {\n if (Instance.equals() === false) {\n return 'You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.';\n }\n });\n },\n preventClickAway: function preventClickAway() {\n var selector = 'a[href]:not([href^=\"#\"]):not([target=\"_blank\"]):not([href^=\"javascript:\"])';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events') && (jquery__WEBPACK_IMPORTED_MODULE_0___default()._data(jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).get(0), 'events').click || []).filter(function (event) {\n return event.namespace === '_grav';\n })) {\n return;\n } // Prevent clicking away if the form state is dirty\n // instead, display a confirmation before continuing\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector).on('click._grav', function (event) {\n var isClean = Instance.equals();\n\n if (isClean === null || isClean) {\n return true;\n }\n\n event.preventDefault();\n var destination = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('href');\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"changes\"]');\n var lookup = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')];\n var buttons = jquery__WEBPACK_IMPORTED_MODULE_0___default()('a.button', modal);\n\n var handler = function handler(event) {\n event.preventDefault();\n var action = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('leave-action');\n buttons.off('click', handler);\n lookup.close();\n\n if (action === 'continue') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).off('beforeunload');\n __webpack_require__.g.location.href = destination;\n }\n };\n\n buttons.on('click', handler);\n lookup.open();\n });\n }\n};\n\nvar FormState = /*#__PURE__*/function () {\n function FormState() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n ignore: [],\n form_id: 'blueprints'\n };\n\n _classCallCheck(this, FormState);\n\n this.options = options;\n this.refresh();\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n FormLoadState = this.collect();\n this.loadState = FormLoadState;\n DOMBehaviors.attach();\n }\n\n _createClass(FormState, [{\n key: \"refresh\",\n value: function refresh() {\n this.form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id)).filter(':noparents(.remodal)');\n this.fields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"form#\".concat(this.options.form_id, \" *, [form=\\\"\").concat(this.options.form_id, \"\\\"]\")).filter(':input:not(.no-form)').filter(':noparents(.remodal)');\n return this;\n }\n }, {\n key: \"collect\",\n value: function collect() {\n var _this = this;\n\n if (!this.form || !this.fields.length) {\n return;\n }\n\n var values = {};\n this.refresh().fields.each(function (index, field) {\n field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(field);\n var name = field.prop('name');\n var type = field.prop('type');\n var tag = field.prop('tagName').toLowerCase();\n var value;\n\n if (name.startsWith('toggleable_') || name === 'data[lang]' || name === 'data[redirect]') {\n return;\n }\n\n switch (type) {\n case 'checkbox':\n value = field.is(':checked');\n break;\n\n case 'radio':\n if (!field.is(':checked')) {\n return;\n }\n\n value = field.val();\n break;\n\n default:\n value = field.val();\n }\n\n if (tag === 'select' && value === null) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n value = value.join('|');\n }\n\n if (name && !~_this.options.ignore.indexOf(name)) {\n values[name] = value;\n }\n });\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().OrderedMap(values);\n }\n }, {\n key: \"diff\",\n value: function diff() {\n return immutablediff__WEBPACK_IMPORTED_MODULE_2___default()(FormLoadState, this.collect());\n } // When the form doesn't exist or there are no fields, `equals` returns `null`\n // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false\n\n }, {\n key: \"equals\",\n value: function equals() {\n if (!this.form || !this.fields.length) {\n return null;\n }\n\n return immutable__WEBPACK_IMPORTED_MODULE_1___default().is(FormLoadState, this.collect());\n }\n }]);\n\n return FormState;\n}();\n\n\n;\nvar Instance = new FormState();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL3N0YXRlLmpzPzY3ZTMiXSwibmFtZXMiOlsiRm9ybUxvYWRTdGF0ZSIsIkRPTUJlaGF2aW9ycyIsImF0dGFjaCIsInByZXZlbnRVbmxvYWQiLCJwcmV2ZW50Q2xpY2tBd2F5Iiwic2VsZWN0b3IiLCIkIiwid2luZG93IiwiYmVmb3JldW5sb2FkIiwiZmlsdGVyIiwiZXZlbnQiLCJuYW1lc3BhY2UiLCJsZW5ndGgiLCJvbiIsImdsb2JhbCIsIm9mZiIsIkluc3RhbmNlIiwiZXF1YWxzIiwiZ2V0IiwiY2xpY2siLCJpc0NsZWFuIiwicHJldmVudERlZmF1bHQiLCJkZXN0aW5hdGlvbiIsImF0dHIiLCJtb2RhbCIsImxvb2t1cCIsImRhdGEiLCJidXR0b25zIiwiaGFuZGxlciIsImFjdGlvbiIsImNsb3NlIiwibG9jYXRpb24iLCJocmVmIiwib3BlbiIsIkZvcm1TdGF0ZSIsIm9wdGlvbnMiLCJpZ25vcmUiLCJmb3JtX2lkIiwicmVmcmVzaCIsImZvcm0iLCJmaWVsZHMiLCJjb2xsZWN0IiwibG9hZFN0YXRlIiwidmFsdWVzIiwiZWFjaCIsImluZGV4IiwiZmllbGQiLCJuYW1lIiwicHJvcCIsInR5cGUiLCJ0YWciLCJ0b0xvd2VyQ2FzZSIsInZhbHVlIiwic3RhcnRzV2l0aCIsImlzIiwidmFsIiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsImluZGV4T2YiLCJJbW11dGFibGUiLCJpbW11dGFibGVkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxhQUFhLEdBQUcsRUFBcEI7QUFFQSxJQUFNQyxZQUFZLEdBQUc7QUFDakJDLFFBRGlCLG9CQUNSO0FBQ0wsU0FBS0MsYUFBTDtBQUNBLFNBQUtDLGdCQUFMO0FBQ0gsR0FKZ0I7QUFNakJELGVBTmlCLDJCQU1EO0FBQ1osUUFBSUUsUUFBUSxHQUFHLG9EQUFmOztBQUNBLFFBQUlDLG1EQUFB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Z0IsS0FBS3lDLE9BQUwsRUFBaEIsQ0FBcEI7QUFDSCxLLENBRUQ7QUFDQTs7Ozs2QkFDUztBQUNMLFVBQUksQ0FBQyxLQUFLRixJQUFOLElBQWMsQ0FBQyxLQUFLQyxNQUFMLENBQVk1QixNQUEvQixFQUF1QztBQUFFLGVBQU8sSUFBUDtBQUFjOztBQUN2RCxhQUFPZ0QsbURBQUEsQ0FBYTVELGFBQWIsRUFBNEIsS0FBS3lDLE9BQUwsRUFBNUIsQ0FBUDtBQUNIOzs7Ozs7O0FBQ0o7QUFFTSxJQUFJekIsUUFBUSxHQUFHLElBQUlrQixTQUFKLEVBQWYiLCJmaWxlIjoiLi9hcHAvZm9ybXMvc3RhdGUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEltbXV0YWJsZSBmcm9tICdpbW11dGFibGUnO1xuaW1wb3J0IGltbXV0YWJsZWRpZmYgZnJvbSAnaW1tdXRhYmxlZGlmZic7XG5pbXBvcnQgJy4uL3V0aWxzL2pxdWVyeS11dGlscyc7XG5cbmxldCBGb3JtTG9hZFN0YXRlID0ge307XG5cbmNvbnN0IERPTUJlaGF2aW9ycyA9IHtcbiAgICBhdHRhY2goKSB7XG4gICAgICAgIHRoaXMucHJldmVudFVubG9hZCgpO1xuICAgICAgICB0aGlzLnByZXZlbnRDbGlja0F3YXkoKTtcbiAgICB9LFxuXG4gICAgcHJldmVudFVubG9hZCgpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yID0gJ1tuYW1lPVwidGFza1wiXVt2YWx1ZV49XCJzYXZlXCJdLCBbZGF0YS1kZWxldGUtYWN0aW9uXSc7XG4gICAgICAgIGlmICgkLl9kYXRhKHdpbmRvdywgJ2V2ZW50cycpICYmICgkLl9kYXRhKHdpbmRvdywgJ2V2ZW50cycpLmJlZm9yZXVubG9hZCB8fCBbXSkuZmlsdGVyKChldmVudCkgPT4gZXZlbnQubmFtZXNwYWNlID09PSAnX2dyYXYnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsbG93IHNvbWUgZWxlbWVudHMgdG8gbGVhdmUgdGhlIHBhZ2Ugd2l0aG91dCBuYXRpdmUgY29uZmlybWF0aW9uXG4gICAgICAgICQoc2VsZWN0b3IpLm9uKCdjbGljay5fZ3JhdicsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAkKGdsb2JhbCkub2ZmKCdiZWZvcmV1bmxvYWQnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2F0Y2ggYnJvd3NlciB1cmkgY2hhbmdlIC8gcmVmcmVzaCBhdHRlbXB0IGFuZCBzdG9wIGl0IGlmIHRoZSBmb3JtIHN0YXRlIGlzIGRpcnR5XG4gICAgICAgICQoZ2xvYmFsKS5vbignYmVmb3JldW5sb2FkLl9ncmF2JywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKEluc3RhbmNlLmVxdWFscygpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnWW91IGhhdmUgbWFkZSBjaGFuZ2VzIG9uIHRoaXMgcGFnZSB0aGF0IHlvdSBoYXZlIG5vdCB5ZXQgY29uZmlybWVkLiBJZiB5b3UgbmF2aWdhdGUgYXdheSBmcm9tIHRoaXMgcGFnZSB5b3Ugd2lsbCBsb3NlIHlvdXIgdW5zYXZlZCBjaGFuZ2VzLic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBwcmV2ZW50Q2xpY2tBd2F5KCkge1xuICAgICAgICBsZXQgc2VsZWN0b3IgPSAnYVtocmVmXTpub3QoW2hyZWZePVwiI1wiXSk6bm90KFt0YXJnZXQ9XCJfYmxhbmtcIl0pOm5vdChbaHJlZl49XCJqYXZhc2NyaXB0OlwiXSknO1xuXG4gICAgICAgIGlmICgkLl9kYXRhKCQoc2VsZWN0b3IpLmdldCgwKSwgJ2V2ZW50cycpICYmICgkLl9kYXRhKCQoc2VsZWN0b3IpLmdldCgwKSwgJ2V2ZW50cycpLmNsaWNrIHx8IFtdKS5maWx0ZXIoKGV2ZW50KSA9PiBldmVudC5uYW1lc3BhY2UgPT09ICdfZ3JhdicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IGNsaWNraW5nIGF3YXkgaWYgdGhlIGZvcm0gc3RhdGUgaXMgZGlydHlcbiAgICAgICAgLy8gaW5zdGVhZCwgZGlzcGxheSBhIGNvbmZpcm1hdGlvbiBiZWZvcmUgY29udGludWluZ1xuICAgICAgICAkKHNlbGVjdG9yKS5vbignY2xpY2suX2dyYXYnLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgbGV0IGlzQ2xlYW4gPSBJbnN0YW5jZS5lcXVhbHMoKTtcbiAgICAgICAgICAgIGlmIChpc0NsZWFuID09PSBudWxsIHx8IGlzQ2xlYW4pIHsgcmV0dXJuIHRydWU7IH1cblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgbGV0IGRlc3RpbmF0aW9uID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICBsZXQgbW9kYWwgPSAkKCdbZGF0YS1yZW1vZGFsLWlkPVwiY2hhbmdlc1wiXScpO1xuICAgICAgICAgICAgbGV0IGxvb2t1cCA9ICQucmVtb2RhbC5sb29rdXBbbW9kYWwuZGF0YSgncmVtb2RhbCcpXTtcbiAgICAgICAgICAgIGxldCBidXR0b25zID0gJCgnYS5idXR0b24nLCBtb2RhbCk7XG5cbiAgICAgICAgICAgIGxldCBoYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSAkKHRoaXMpLmRhdGEoJ2xlYXZlLWFjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgYnV0dG9ucy5vZmYoJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgICAgICAgICAgICAgbG9va3VwLmNsb3NlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnY29udGludWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICQoZ2xvYmFsKS5vZmYoJ2JlZm9yZXVubG9hZCcpO1xuICAgICAgICAgICAgICAgICAgICBnbG9iYWwubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGJ1dHRvbnMub24oJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgICAgICAgICBsb29rdXAub3BlbigpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtU3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7XG4gICAgICAgIGlnbm9yZTogW10sXG4gICAgICAgIGZvcm1faWQ6ICdibHVlcHJpbnRzJ1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cbiAgICAgICAgRm9ybUxvYWRTdGF0ZSA9IHRoaXMuY29sbGVjdCgpO1xuICAgICAgICB0aGlzLmxvYWRTdGF0ZSA9IEZvcm1Mb2FkU3RhdGU7XG4gICAgICAgIERPTUJlaGF2aW9ycy5hdHRhY2goKTtcbiAgICB9XG5cbiAgICByZWZyZXNoKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSAkKGBmb3JtIyR7dGhpcy5vcHRpb25zLmZvcm1faWR9YCkuZmlsdGVyKCc6bm9wYXJlbnRzKC5yZW1vZGFsKScpO1xuICAgICAgICB0aGlzLmZpZWxkcyA9ICQoYGZvcm0jJHt0aGlzLm9wdGlvbnMuZm9ybV9pZH0gKiwgW2Zvcm09XCIke3RoaXMub3B0aW9ucy5mb3JtX2lkfVwiXWApLmZpbHRlcignOmlucHV0Om5vdCgubm8tZm9ybSknKS5maWx0ZXIoJzpub3BhcmVudHMoLnJlbW9kYWwpJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgY29sbGVjdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBsZXQgdmFsdWVzID0ge307XG4gICAgICAgIHRoaXMucmVmcmVzaCgpLmZpZWxkcy5lYWNoKChpbmRleCwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGZpZWxkID0gJChmaWVsZCk7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IGZpZWxkLnByb3AoJ25hbWUnKTtcbiAgICAgICAgICAgIGxldCB0eXBlID0gZmllbGQucHJvcCgndHlwZScpO1xuICAgICAgICAgICAgbGV0IHRhZyA9IGZpZWxkLnByb3AoJ3RhZ05hbWUnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHZhbHVlO1xuXG4gICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCd0b2dnbGVhYmxlXycpIHx8IG5hbWUgPT09ICdkYXRhW2xhbmddJyB8fCBuYW1lID09PSAnZGF0YVtyZWRpcmVjdF0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmllbGQuaXMoJzpjaGVja2VkJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5pcygnOmNoZWNrZWQnKSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWwoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWwoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZyA9PT0gJ3NlbGVjdCcgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmpvaW4oJ3wnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgIX50aGlzLm9wdGlvbnMuaWdub3JlLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIEltbXV0YWJsZS5PcmRlcmVkTWFwKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgZGlmZigpIHtcbiAgICAgICAgcmV0dXJuIGltbXV0YWJsZWRpZmYoRm9ybUxvYWRTdGF0ZSwgdGhpcy5jb2xsZWN0KCkpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIGZvcm0gZG9lc24ndCBleGlzdCBvciB0aGVyZSBhcmUgbm8gZmllbGRzLCBgZXF1YWxzYCByZXR1cm5zIGBudWxsYFxuICAgIC8vIGZvciB0aGlzIHJlYXNvbiwgX05FVkVSXyBjaGVjayB3aXRoICFJbnN0YW5jZS5lcXVhbHMoKSwgdXNlIEluc3RhbmNlLmVxdWFscygpID09PSBmYWxzZVxuICAgIGVxdWFscygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZmllbGRzLmxlbmd0aCkgeyByZXR1cm4gbnVsbDsgfVxuICAgICAgICByZXR1cm4gSW1tdXRhYmxlLmlzKEZvcm1Mb2FkU3RhdGUsIHRoaXMuY29sbGVjdCgpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gbmV3IEZvcm1TdGF0ZSgpO1xuXG5leHBvcnQgeyBET01CZWhhdmlvcnMgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/forms/state.js\n");
/***/ }),
/***/ "./app/main.js":
/*!*********************!*\
!*** ./app/main.js ***!
\*********************/
/*! namespace exports */
/*! export default [provided] [maybe used in app (runtime-defined)] [usage prevents renaming] */
/*! other exports [not provided] [maybe used in app (runtime-defined)] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _babel_polyfill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/polyfill */ \"./node_modules/@babel/polyfill/lib/index.js\");\n/* harmony import */ var _babel_polyfill__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_polyfill__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_remodal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/remodal */ \"./app/utils/remodal.js\");\n/* harmony import */ var simplebar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! simplebar */ \"./node_modules/simplebar/dist/simplebar.esm.js\");\n/* harmony import */ var _utils_gpm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/gpm */ \"./app/utils/gpm.js\");\n/* harmony import */ var _utils_keepalive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/keepalive */ \"./app/utils/keepalive.js\");\n/* harmony import */ var _updates__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updates */ \"./app/updates/index.js\");\n/* harmony import */ var _dashboard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./dashboard */ \"./app/dashboard/index.js\");\n/* harmony import */ var _pages__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./pages */ \"./app/pages/index.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./forms */ \"./app/forms/index.js\");\n/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./plugins */ \"./app/plugins/index.js\");\n/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./themes */ \"./app/themes/index.js\");\n/* harmony import */ var _media__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./media */ \"./app/media/index.js\");\n/* harmony import */ var _utils_toastr__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/toastr */ \"./app/utils/toastr.js\");\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _utils_2fa__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/2fa */ \"./app/utils/2fa.js\");\n/* harmony import */ var _tools__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./tools */ \"./app/tools/index.js\");\n/* harmony import */ var _whitelabel__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./whitelabel */ \"./app/whitelabel/index.js\");\n/* harmony import */ var _utils_bootstrap_transition__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/bootstrap-transition */ \"./app/utils/bootstrap-transition.js\");\n/* harmony import */ var _utils_bootstrap_collapse__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/bootstrap-collapse */ \"./app/utils/bootstrap-collapse.js\");\n/* harmony import */ var _utils_bootstrap_dropdown__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./utils/bootstrap-dropdown */ \"./app/utils/bootstrap-dropdown.js\");\n/* harmony import */ var _utils_tabs_memory__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./utils/tabs-memory */ \"./app/utils/tabs-memory.js\");\n/* harmony import */ var _utils_changelog__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./utils/changelog */ \"./app/utils/changelog.js\");\n/* harmony import */ var _utils_sidebar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./utils/sidebar */ \"./app/utils/sidebar.js\");\n// polyfills\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // bootstrap jQuery extensions\n\n\n\n // tabs memory\n\n // changelog\n\n // Main Sidebar\n\n // starts the keep alive, auto runs every X seconds\n\n_utils_keepalive__WEBPACK_IMPORTED_MODULE_5__.default.start(); // global event to catch sidebar_state changes\n\njquery__WEBPACK_IMPORTED_MODULE_1___default()(__webpack_require__.g).on('sidebar_state._grav', function () {\n Object.keys(_dashboard__WEBPACK_IMPORTED_MODULE_7__.default.Chart.Instances).forEach(function (chart) {\n setTimeout(function () {\n return _dashboard__WEBPACK_IMPORTED_MODULE_7__.default.Chart.Instances[chart].chart.update();\n }, 10);\n });\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n GPM: {\n GPM: _utils_gpm__WEBPACK_IMPORTED_MODULE_4__.default,\n Instance: _utils_gpm__WEBPACK_IMPORTED_MODULE_4__.Instance\n },\n KeepAlive: _utils_keepalive__WEBPACK_IMPORTED_MODULE_5__.default,\n Dashboard: _dashboard__WEBPACK_IMPORTED_MODULE_7__.default,\n Pages: _pages__WEBPACK_IMPORTED_MODULE_8__.default,\n Forms: _forms__WEBPACK_IMPORTED_MODULE_9__.default,\n Updates: {\n Updates: _updates__WEBPACK_IMPORTED_MODULE_6__.default,\n Notifications: _updates__WEBPACK_IMPORTED_MODULE_6__.Notifications,\n Feed: _updates__WEBPACK_IMPORTED_MODULE_6__.Feed,\n Instance: _updates__WEBPACK_IMPORTED_MODULE_6__.Instance\n },\n Sidebar: {\n Sidebar: _utils_sidebar__WEBPACK_IMPORTED_MODULE_23__.default,\n Instance: _utils_sidebar__WEBPACK_IMPORTED_MODULE_23__.Instance\n },\n MediaFilter: {\n MediaFilter: _media__WEBPACK_IMPORTED_MODULE_12__.default,\n Instance: _media__WEBPACK_IMPORTED_MODULE_12__.Instance\n },\n Scrollbar: {\n Scrollbar: {\n deprecated: true\n },\n Instance: {\n deprecated: true\n }\n },\n Utils: {\n request: _utils_request__WEBPACK_IMPORTED_MODULE_14__.default,\n toastr: _utils_toastr__WEBPACK_IMPORTED_MODULE_13__.default\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL21haW4uanM/ZjE2MSJdLCJuYW1lcyI6WyJLZWVwQWxpdmUiLCIkIiwiZ2xvYmFsIiwib24iLCJPYmplY3QiLCJrZXlzIiwiRGFzaGJvYXJkIiwiZm9yRWFjaCIsImNoYXJ0Iiwic2V0VGltZW91dCIsInVwZGF0ZSIsIkdQTSIsIkluc3RhbmNlIiwiZ3BtIiwiUGFnZXMiLCJGb3JtcyIsIlVwZGF0ZXMiLCJOb3RpZmljYXRpb25zIiwiRmVlZCIsInVwZGF0ZXMiLCJTaWRlYmFyIiwic2lkZWJhciIsIk1lZGlhRmlsdGVyIiwiTWVkaWFGaWx0ZXJJbnN0YW5jZSIsIlNjcm9sbGJhciIsImRlcHJlY2F0ZWQiLCJVdGlscyIsInJlcXVlc3QiLCJ0b2FzdHIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtDQUdBOztBQUNBO0FBQ0E7Q0FHQTs7Q0FHQTs7Q0FHQTs7Q0FHQTs7QUFDQUEsMkRBQUEsRyxDQUVBOztBQUNBQyw2Q0FBQyxDQUFDQyxxQkFBRCxDQUFELENBQVVDLEVBQVYsQ0FBYSxxQkFBYixFQUFvQyxZQUFNO0FBQ3RDQyxRQUFNLENBQUNDLElBQVAsQ0FBWUMsK0RBQVosRUFBdUNDLE9BQXZDLENBQStDLFVBQUNDLEtBQUQsRUFBVztBQUN0REMsY0FBVSxDQUFDO0FBQUEsYUFBTUgsK0RBQUEsQ0FBMEJFLEtBQTFCLEVBQWlDQSxLQUFqQyxDQUF1Q0UsTUFBdkMsRUFBTjtBQUFBLEtBQUQsRUFBd0QsRUFBeEQsQ0FBVjtBQUNILEdBRkQ7QUFHSCxDQUpEO0FBTUEsaUVBQWU7QUFDWEMsS0FBRyxFQUFFO0FBQ0RBLE9BQUcsRUFBSEEsK0NBREM7QUFFREMsWUFBUSxFQUFFQyxnREFBR0E7QUFGWixHQURNO0FBS1hiLFdBQVMsRUFBVEEscURBTFc7QUFNWE0sV0FBUyxFQUFUQSwrQ0FOVztBQU9YUSxPQUFLLEVBQUxBLDJDQVBXO0FBUVhDLE9BQUssRUFBTEEsMkNBUlc7QUFTWEMsU0FBTyxFQUFFO0FBQ0xBLFdBQU8sRUFBUEEsNkNBREs7QUFFTEMsaUJBQWEsRUFBYkEsbURBRks7QUFHTEMsUUFBSSxFQUFKQSwwQ0FISztBQUlMTixZQUFRLEVBQUVPLDhDQUFPQTtBQUpaLEdBVEU7QUFlWEMsU0FBTyxFQUFFO0FBQ0xBLFdBQU8sRUFBUEEsb0RBREs7QUFFTFIsWUFBUSxFQUFFUyxxREFBT0E7QUFGWixHQWZFO0FBbUJYQyxhQUFXLEVBQUU7QUFDVEEsZUFBVyxFQUFYQSw0Q0FEUztBQUVUVixZQUFRLEVBQUVXLDZDQUFtQkE7QUFGcEIsR0FuQkY7QUF1QlhDLFdBQVMsRUFBRTtBQUFFQSxhQUFTLEVBQUU7QUFBRUMsZ0JBQVUsRUFBRTtBQUFkLEtBQWI7QUFBbUNiLFlBQVEsRUFBRTtBQUFFYSxnQkFBVSxFQUFFO0FBQWQ7QUFBN0MsR0F2QkE7QUF3QlhDLE9BQUssRUFBRTtBQUFFQyxXQUFPLEVBQVBBLG9EQUFGO0FBQVdDLFVBQU0sRUFBTkEsbURBQU1BO0FBQWpCO0FBeEJJLENBQWYiLCJmaWxlIjoiLi9hcHAvbWFpbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHBvbHlmaWxsc1xuaW1wb3J0ICdAYmFiZWwvcG9seWZpbGwnO1xuXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0ICcuL3V0aWxzL3JlbW9kYWwnO1xuaW1wb3J0ICdzaW1wbGViYXInO1xuaW1wb3J0IEdQTSwgeyBJbnN0YW5jZSBhcyBncG0gfSBmcm9tICcuL3V0aWxzL2dwbSc7XG5pbXBvcnQgS2VlcEFsaXZlIGZyb20gJy4vdXRpbHMva2VlcGFsaXZlJztcbmltcG9ydCBVcGRhdGVzLCB7IEluc3RhbmNlIGFzIHVwZGF0ZXMsIE5vdGlmaWNhdGlvbnMsIEZlZWQgfSBmcm9tICcuL3VwZGF0ZXMnO1xuaW1wb3J0IERhc2hib2FyZCBmcm9tICcuL2Rhc2hib2FyZCc7XG5pbXBvcnQgUGFnZXMgZnJvbSAnLi9wYWdlcyc7XG5pbXBvcnQgRm9ybXMgZnJvbSAnLi9mb3Jtcyc7XG5pbXBvcnQgJy4vcGx1Z2lucyc7XG5pbXBvcnQgJy4vdGhlbWVzJztcbmltcG9ydCBNZWRpYUZpbHRlciwgeyBJbnN0YW5jZSBhcyBNZWRpYUZpbHRlckluc3RhbmNlfSBmcm9tICcuL21lZGlhJztcbmltcG9ydCB0b2FzdHIgZnJvbSAnLi91dGlscy90b2FzdHInO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCAnLi91dGlscy8yZmEnO1xuaW1wb3J0ICcuL3Rvb2xzJztcbmltcG9ydCAnLi93aGl0ZWxhYmVsJztcblxuLy8gYm9vdHN0cmFwIGpRdWVyeSBleHRlbnNpb25zXG5pbXBvcnQgJy4vdXRpbHMvYm9vdHN0cmFwLXRyYW5zaXRpb24nO1xuaW1wb3J0ICcuL3V0aWxzL2Jvb3RzdHJhcC1jb2xsYXBzZSc7XG5pbXBvcnQgJy4vdXRpbHMvYm9vdHN0cmFwLWRyb3Bkb3duJztcblxuLy8gdGFicyBtZW1vcnlcbmltcG9ydCAnLi91dGlscy90YWJzLW1lbW9yeSc7XG5cbi8vIGNoYW5nZWxvZ1xuaW1wb3J0ICcuL3V0aWxzL2NoYW5nZWxvZyc7XG5cbi8vIE1haW4gU2lkZWJhclxuaW1wb3J0IFNpZGViYXIsIHsgSW5zdGFuY2UgYXMgc2lkZWJhciB9IGZyb20gJy4vdXRpbHMvc2lkZWJhcic7XG5cbi8vIHN0YXJ0cyB0aGUga2VlcCBhbGl2ZSwgYXV0byBydW5zIGV2ZXJ5IFggc2Vjb25kc1xuS2VlcEFsaXZlLnN0YXJ0KCk7XG5cbi8vIGdsb2JhbCBldmVudCB0byBjYXRjaCBzaWRlYmFyX3N0YXRlIGNoYW5nZXNcbiQoZ2xvYmFsKS5vbignc2lkZWJhcl9zdGF0ZS5fZ3JhdicsICgpID0+IHtcbiAgICBPYmplY3Qua2V5cyhEYXNoYm9hcmQuQ2hhcnQuSW5zdGFuY2VzKS5mb3JFYWNoKChjaGFydCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IERhc2hib2FyZC5DaGFydC5JbnN0YW5jZXNbY2hhcnRdLmNoYXJ0LnVwZGF0ZSgpLCAxMCk7XG4gICAgfSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIEdQTToge1xuICAgICAgICBHUE0sXG4gICAgICAgIEluc3RhbmNlOiBncG1cbiAgICB9LFxuICAgIEtlZXBBbGl2ZSxcbiAgICBEYXNoYm9hcmQsXG4gICAgUGFnZXMsXG4gICAgRm9ybXMsXG4gICAgVXBkYXRlczoge1xuICAgICAgICBVcGRhdGVzLFxuICAgICAgICBOb3RpZmljYXRpb25zLFxuICAgICAgICBGZWVkLFxuICAgICAgICBJbnN0YW5jZTogdXBkYXRlc1xuICAgIH0sXG4gICAgU2lkZWJhcjoge1xuICAgICAgICBTaWRlYmFyLFxuICAgICAgICBJbnN0YW5jZTogc2lkZWJhclxuICAgIH0sXG4gICAgTWVkaWFGaWx0ZXI6IHtcbiAgICAgICAgTWVkaWFGaWx0ZXIsXG4gICAgICAgIEluc3RhbmNlOiBNZWRpYUZpbHRlckluc3RhbmNlXG4gICAgfSxcbiAgICBTY3JvbGxiYXI6IHsgU2Nyb2xsYmFyOiB7IGRlcHJlY2F0ZWQ6IHRydWUgfSwgSW5zdGFuY2U6IHsgZGVwcmVjYXRlZDogdHJ1ZSB9IH0sXG4gICAgVXRpbHM6IHsgcmVxdWVzdCwgdG9hc3RyIH1cbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/main.js\n");
/***/ }),
/***/ "./app/media/index.js":
/*!****************************!*\
!*** ./app/media/index.js ***!
\****************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ Filter,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar Filter = /*#__PURE__*/function () {\n function Filter() {\n _classCallCheck(this, Filter);\n\n this.URI = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/media-manager/\");\n }\n\n _createClass(Filter, [{\n key: \"filter\",\n value: function filter(name, value) {\n var filtered = [];\n var keys = Object.keys(grav_config__WEBPACK_IMPORTED_MODULE_1__.uri_params);\n\n if (!~keys.indexOf(name)) {\n keys.push(name);\n }\n\n keys.forEach(function (key) {\n var filter = Filter.cleanValue(key === name ? value : grav_config__WEBPACK_IMPORTED_MODULE_1__.uri_params[key]);\n\n if (filter !== '*') {\n filtered.push(\"\".concat(key).concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(filter));\n }\n });\n __webpack_require__.g.location = this.URI + filtered.join('/');\n }\n }], [{\n key: \"cleanValue\",\n value: function cleanValue(value) {\n return encodeURIComponent(value.replace('/', '\\\\'));\n }\n }]);\n\n return Filter;\n}();\n\n\nvar Instance = new Filter();\nvar isLoading = false;\nvar filters = {};\nvar global_index = 1;\nvar files_ended = false;\nvar MEDIA_PAGINATION_INTERVAL = 20;\n/* handle changing file type / date filter */\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('change', '.thumbs-list-container select.filter', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var filterName = target.data('name');\n var filterValue = target.val();\n\n if (filterValue) {\n filters[filterName] = filterValue;\n } else {\n delete filters[filterName];\n }\n\n filterFiles();\n});\n/* initialize media uploader */\n\nif (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.thumbs-list-container .dropzone')[0]) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.thumbs-list-container .dropzone')[0].dropzone.on('queuecomplete', function () {\n var body = {};\n\n if (filters.page) {\n body.page = filters.page;\n }\n\n if (filters.date) {\n body.date = filters.date;\n }\n\n if (filters.type) {\n body.type = filters.type;\n }\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone')[0].dropzone.files.forEach(function (file) {\n file.previewElement.remove();\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone').first().removeClass('dz-started');\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/media-manager.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"clearMediaCache\"), {\n method: 'post',\n body: body\n }, function () {\n filterFiles();\n });\n });\n}\n/* handle loading media */\n\n\nvar loadMedia = function loadMedia(filters, callback) {\n var url = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/media.json/tmpl\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"media-list-content/index\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(global_index);\n\n if (filters.page) {\n url += \"/page\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(filters.page.split('/').join('%5C'));\n }\n\n if (filters.type && filters.type !== '*') {\n url += \"/type\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(filters.type);\n }\n\n if (filters.date && filters.date !== '*') {\n url += \"/date\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(filters.date);\n }\n\n if (!isLoading) {\n isLoading = true;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.spinning-wheel').show();\n jquery__WEBPACK_IMPORTED_MODULE_0___default().get(url, function (content) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files').append(content);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.spinning-wheel').hide();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-container .media-range').trigger('change');\n isLoading = false;\n global_index++;\n callback(content);\n });\n }\n};\n\nvar cleanFilesList = function cleanFilesList() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files .card-item').remove();\n};\n\nvar resetActiveStateInSidebar = function resetActiveStateInSidebar() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.pages-list-container .row').removeClass('active'); // clear active state in sidebar\n};\n\nvar showEmptyState = function showEmptyState() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.thumbs-list-container').append('
No media found
');\n};\n\nvar filterFiles = function filterFiles() {\n cleanFilesList();\n global_index = 0;\n files_ended = false;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.empty-space').remove();\n loadMedia(filters, function (content) {\n if (!content.trim().length) {\n showEmptyState();\n } else {\n if (!filters.page && (!filters.date || filters.date === '*') && (!filters.type || filters.type === '*')) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files').trigger('fillView');\n }\n }\n });\n};\n/* handle changing page */\n\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click', '.pages-list-container .js__page-link', function (event) {\n var page = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).data('page');\n filters['page'] = page;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-list-title .page-indicator').html(page); // set indication\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__reset-pages-filter').removeClass('hidden'); // activate reset pages icon\n\n resetActiveStateInSidebar();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('.row').addClass('active'); // set active state in sidebar\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__file-uploader').removeClass('hidden'); // customize processing URL, as the page changes dynamically\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone')[0]) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone')[0].dropzone.on('processing', function (file) {\n this.options.url = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/media-manager\").concat(page, \".json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"addmedia\");\n });\n }\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__button-clear-media-cache').addClass('hidden');\n filterFiles();\n disableInfiniteScrolling(); // only infinite scroll on main list, not inside single pages\n});\n/* handle clearing page filter */\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click', '.js__reset-pages-filter', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-list-title .page-indicator').html('All Pages'); // set indication\n\n cleanFilesList();\n resetActiveStateInSidebar();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__reset-pages-filter').addClass('hidden'); // remove reset pages icon\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__file-uploader').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__button-clear-media-cache').removeClass('hidden');\n delete filters['page'];\n filterFiles();\n});\n/* handle infinite loading */\n\nvar enableInfiniteScrolling = function enableInfiniteScrolling() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.spinning-wheel').hide();\n var view = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.mediapicker-scroll').last();\n\n if (!view.length) {\n return;\n }\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(view).on('scroll', function () {\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).scrollTop() + jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).innerHeight() + 100 >= jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].scrollHeight) {\n fillView();\n }\n });\n};\n\nvar loadNextBatch = function loadNextBatch(callback) {\n if (files_ended) {\n return;\n }\n\n loadMedia({}, function (content) {\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(content).length || content.split('card-item').length - 1 < MEDIA_PAGINATION_INTERVAL) {\n files_ended = true;\n } else {\n if (callback) {\n callback();\n }\n }\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-container .media-range').trigger('input');\n });\n};\n\nvar fillView = function fillView() {\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files').find('.card-item').last().offset()) {\n setTimeout(function () {\n // retry later\n fillView();\n }, 300);\n return;\n }\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files').find('.card-item').last().offset().top - 1 <= jquery__WEBPACK_IMPORTED_MODULE_0___default()('.media-container').height()) {\n loadNextBatch(function () {\n fillView();\n });\n }\n};\n/* disable infinite loading */\n\n\nvar disableInfiniteScrolling = function disableInfiniteScrolling() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.spinning-wheel').hide();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.content-wrapper').unbind('scroll');\n};\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files').on('fillView', function (event) {\n // the first batch got the max number of media files, try loading more\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js__files')[0].innerHTML.split('card-item').length - 1 === MEDIA_PAGINATION_INTERVAL) {\n fillView();\n enableInfiniteScrolling();\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL21lZGlhL2luZGV4LmpzPzE1NDAiXSwibmFtZXMiOlsiRmlsdGVyIiwiVVJJIiwiY29uZmlnIiwibmFtZSIsInZhbHVlIiwiZmlsdGVyZWQiLCJrZXlzIiwiT2JqZWN0IiwidXJpX3BhcmFtcyIsImluZGV4T2YiLCJwdXNoIiwiZm9yRWFjaCIsImtleSIsImZpbHRlciIsImNsZWFuVmFsdWUiLCJnbG9iYWwiLCJsb2NhdGlvbiIsImpvaW4iLCJlbmNvZGVVUklDb21wb25lbnQiLCJyZXBsYWNlIiwiSW5zdGFuY2UiLCJpc0xvYWRpbmciLCJmaWx0ZXJzIiwiZ2xvYmFsX2luZGV4IiwiZmlsZXNfZW5kZWQiLCJNRURJQV9QQUdJTkFUSU9OX0lOVEVSVkFMIiwiJCIsIm9uIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiZmlsdGVyTmFtZSIsImRhdGEiLCJmaWx0ZXJWYWx1ZSIsInZhbCIsImZpbHRlckZpbGVzIiwiZHJvcHpvbmUiLCJib2R5IiwicGFnZSIsImRhdGUiLCJ0eXBlIiwiZmlsZXMiLCJmaWxlIiwicHJldmlld0VsZW1lbnQiLCJyZW1vdmUiLCJmaXJzdCIsInJlbW92ZUNsYXNzIiwicmVxdWVzdCIsIm1ldGhvZCIsImxvYWRNZWRpYSIsImNhbGxiYWNrIiwidXJsIiwic3BsaXQiLCJzaG93IiwiY29udGVudCIsImFwcGVuZCIsImhpZGUiLCJ0cmlnZ2VyIiwiY2xlYW5GaWxlc0xpc3QiLCJyZXNldEFjdGl2ZVN0YXRlSW5TaWRlYmFyIiwic2hvd0VtcHR5U3RhdGUiLCJ0cmltIiwibGVuZ3RoIiwiaHRtbCIsInBhcmVudHMiLCJhZGRDbGFzcyIsIm9wdGlvbnMiLCJkaXNhYmxlSW5maW5pdGVTY3JvbGxpbmciLCJlbmFibGVJbmZpbml0ZVNjcm9sbGluZyIsInZpZXciLCJsYXN0Iiwic2Nyb2xsVG9wIiwiaW5uZXJIZWlnaHQiLCJzY3JvbGxIZWlnaHQiLCJmaWxsVmlldyIsImxvYWROZXh0QmF0Y2giLCJmaW5kIiwib2Zmc2V0Iiwic2V0VGltZW91dCIsInRvcCIsImhlaWdodCIsInVuYmluZCIsImlubmVySFRNTCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7SUFFcUJBLE07QUFDakIsb0JBQWM7QUFBQTs7QUFDVixTQUFLQyxHQUFMLGFBQWNDLGlFQUFkO0FBQ0g7Ozs7MkJBRU1DLEksRUFBTUMsSyxFQUFPO0FBQ2hCLFVBQUlDLFFBQVEsR0FBRyxFQUFmO0FBQ0EsVUFBSUMsSUFBSSxHQUFHQyxNQUFNLENBQUNELElBQVAsQ0FBWUUsbURBQVosQ0FBWDs7QUFDQSxVQUFJLENBQUMsQ0FBQ0YsSUFBSSxDQUFDRyxPQUFMLENBQWFOLElBQWIsQ0FBTixFQUEwQjtBQUFFRyxZQUFJLENBQUNJLElBQUwsQ0FBVVAsSUFBVjtBQUFrQjs7QUFFOUNHLFVBQUksQ0FBQ0ssT0FBTCxDQUFhLFVBQUNDLEdBQUQsRUFBUztBQUNsQixZQUFJQyxNQUFNLEdBQUdiLE1BQU0sQ0FBQ2MsVUFBUCxDQUFrQkYsR0FBRyxLQUFLVCxJQUFSLEdBQWVDLEtBQWYsR0FBdUJJLG1EQUFVLENBQUNJLEdBQUQsQ0FBbkQsQ0FBYjs7QUFDQSxZQUFJQyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUNoQlIsa0JBQVEsQ0FBQ0ssSUFBVCxXQUFpQkUsR0FBakIsU0FBdUJWLHlEQUF2QixTQUEwQ1csTUFBMUM7QUFDSDtBQUNKLE9BTEQ7QUFPQUUsMkJBQU0sQ0FBQ0MsUUFBUCxHQUFrQixLQUFLZixHQUFMLEdBQVdJLFFBQVEsQ0FBQ1ksSUFBVCxDQUFjLEdBQWQsQ0FBN0I7QUFDSDs7OytCQUVpQmIsSyxFQUFPO0FBQ3JCLGFBQU9jLGtCQUFrQixDQUFDZCxLQUFLLENBQUNlLE9BQU4sQ0FBYyxHQUFkLEVBQW1CLElBQW5CLENBQUQsQ0FBekI7QUFDSDs7Ozs7OztBQUdFLElBQUlDLFFBQVEsR0FBRyxJQUFJcEIsTUFBSixFQUFmO0FBQ1AsSUFBSXFCLFNBQVMsR0FBRyxLQUFoQjtB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QUFoQixDQUFxQixZQUFyQixFQUFtQ04sSUFBbkMsR0FBMENPLE1BQTFDLEVBQUwsRUFBeUQ7QUFDckRDLGNBQVUsQ0FBQyxZQUFXO0FBQ2xCO0FBQ0FKLGNBQVE7QUFDWCxLQUhTLEVBR1AsR0FITyxDQUFWO0FBS0E7QUFDSDs7QUFFRCxNQUFJaEQsNkNBQUMsQ0FBQyxZQUFELENBQUQsQ0FBZ0JrRCxJQUFoQixDQUFxQixZQUFyQixFQUFtQ04sSUFBbkMsR0FBMENPLE1BQTFDLEdBQW1ERSxHQUFuRCxHQUF5RCxDQUF6RCxJQUE4RHJELDZDQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQnNELE1BQXRCLEVBQWxFLEVBQWtHO0FBQzlGTCxpQkFBYSxDQUFDLFlBQVc7QUFDckJELGNBQVE7QUFDWCxLQUZZLENBQWI7QUFHSDtBQUNKLENBZkQ7QUFpQkE7OztBQUNBLElBQUlQLHdCQUF3QixHQUFHLFNBQVNBLHdCQUFULEdBQW9DO0FBQy9EekMsK0NBQUMsQ0FBQyxpQkFBRCxDQUFELENBQXFCOEIsSUFBckI7QUFDQTlCLCtDQUFDLENBQUMsa0JBQUQsQ0FBRCxDQUFzQnVELE1BQXRCLENBQTZCLFFBQTdCO0FBQ0gsQ0FIRDs7QUFLQXZELDZDQUFDLENBQUMsWUFBRCxDQUFELENBQWdCQyxFQUFoQixDQUFtQixVQUFuQixFQUErQixVQUFTQyxLQUFULEVBQWdCO0FBQzNDO0FBQ0EsTUFBS0YsNkNBQUMsQ0FBQyxZQUFELENBQUQsQ0FBZ0IsQ0FBaEIsRUFBbUJ3RCxTQUFuQixDQUE2QjlCLEtBQTdCLENBQW1DLFdBQW5DLEVBQWdEVSxNQUFoRCxHQUF5RCxDQUExRCxLQUFpRXJDLHlCQUFyRSxFQUFnRztBQUM1RmlELFlBQVE7QUFDUk4sMkJBQXVCO0FBQzFCO0FBQ0osQ0FORCIsImZpbGUiOiIuL2FwcC9tZWRpYS9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgeyBjb25maWcsIHVyaV9wYXJhbXMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi91dGlscy9yZXF1ZXN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5VUkkgPSBgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L21lZGlhLW1hbmFnZXIvYDtcbiAgICB9XG5cbiAgICBmaWx0ZXIobmFtZSwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGZpbHRlcmVkID0gW107XG4gICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModXJpX3BhcmFtcyk7XG4gICAgICAgIGlmICghfmtleXMuaW5kZXhPZihuYW1lKSkgeyBrZXlzLnB1c2gobmFtZSk7IH1cblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbHRlciA9IEZpbHRlci5jbGVhblZhbHVlKGtleSA9PT0gbmFtZSA/IHZhbHVlIDogdXJpX3BhcmFtc1trZXldKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgIT09ICcqJykge1xuICAgICAgICAgICAgICAgIGZpbHRlcmVkLnB1c2goYCR7a2V5fSR7Y29uZmlnLnBhcmFtX3NlcH0ke2ZpbHRlcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ2xvYmFsLmxvY2F0aW9uID0gdGhpcy5VUkkgKyBmaWx0ZXJlZC5qb2luKCcvJyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNsZWFuVmFsdWUodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZS5yZXBsYWNlKCcvJywgJ1xcXFwnKSk7XG4gICAgfVxufVxuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gbmV3IEZpbHRlcigpO1xudmFyIGlzTG9hZGluZyA9IGZhbHNlO1xuXG52YXIgZmlsdGVycyA9IHt9O1xudmFyIGdsb2JhbF9pbmRleCA9IDE7XG52YXIgZmlsZXNfZW5kZWQgPSBmYWxzZTtcbmNvbnN0IE1FRElBX1BBR0lOQVRJT05fSU5URVJWQUwgPSAyMDtcblxuLyogaGFuZGxlIGNoYW5naW5nIGZpbGUgdHlwZSAvIGRhdGUgZmlsdGVyICovXG4kKCdib2R5Jykub24oJ2NoYW5nZScsICcudGh1bWJzLWxpc3QtY29udGFpbmVyIHNlbGVjdC5maWx0ZXInLCAoZXZlbnQpID0+IHtcbiAgICBsZXQgdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBsZXQgZmlsdGVyTmFtZSA9IHRhcmdldC5kYXRhKCduYW1lJyk7XG4gICAgbGV0IGZpbHRlclZhbHVlID0gdGFyZ2V0LnZhbCgpO1xuXG4gICAgaWYgKGZpbHRlclZhbHVlKSB7XG4gICAgICAgIGZpbHRlcnNbZmlsdGVyTmFtZV0gPSBmaWx0ZXJWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgZmlsdGVyc1tmaWx0ZXJOYW1lXTtcbiAgICB9XG5cbiAgICBmaWx0ZXJGaWxlcygpO1xufSk7XG5cbi8qIGluaXRpYWxpemUgbWVkaWEgdXBsb2FkZXIgKi9cbmlmICgkKCcudGh1bWJzLWxpc3QtY29udGFpbmVyIC5kcm9wem9uZScpWzBdKSB7XG4gICAgJCgnLnRodW1icy1saXN0LWNvbnRhaW5lciAuZHJvcHpvbmUnKVswXS5kcm9wem9uZS5vbigncXVldWVjb21wbGV0ZScsIGZ1bmN0aW9uKCkge1xuICAgICAgICBsZXQgYm9keSA9IHt9O1xuICAgICAgICBpZiAoZmlsdGVycy5wYWdlKSB7IGJvZHkucGFnZSA9IGZpbHRlcnMucGFnZTsgfVxuICAgICAgICBpZiAoZmlsdGVycy5kYXRlKSB7IGJvZHkuZGF0ZSA9IGZpbHRlcnMuZGF0ZTsgfVxuICAgICAgICBpZiAoZmlsdGVycy50eXBlKSB7IGJvZHkudHlwZSA9IGZpbHRlcnMudHlwZTsgfVxuXG4gICAgICAgICQoJy5kcm9wem9uZScpWzBdLmRyb3B6b25lLmZpbGVzLmZvckVhY2goZnVuY3Rpb24oZmlsZSkgeyBmaWxlLnByZXZpZXdFbGVtZW50LnJlbW92ZSgpOyB9KTtcbiAgICAgICAgJCgnLmRyb3B6b25lJykuZmlyc3QoKS5yZW1vdmVDbGFzcygnZHotc3RhcnRlZCcpO1xuXG4gICAgICAgIHJlcXVlc3QoYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS9tZWRpYS1tYW5hZ2VyLmpzb24vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1jbGVhck1lZGlhQ2FjaGVgLCB7IG1ldGhvZDogJ3Bvc3QnLCBib2R5IH0sICgpID0+IHtcbiAgICAgICAgICAgIGZpbHRlckZpbGVzKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG4vKiBoYW5kbGUgbG9hZGluZyBtZWRpYSAqL1xudmFyIGxvYWRNZWRpYSA9IGZ1bmN0aW9uIGxvYWRNZWRpYShmaWx0ZXJzLCBjYWxsYmFjaykge1xuICAgIHZhciB1cmwgPSBgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L21lZGlhLmpzb24vdG1wbCR7Y29uZmlnLnBhcmFtX3NlcH1tZWRpYS1saXN0LWNvbnRlbnQvaW5kZXgke2NvbmZpZy5wYXJhbV9zZXB9JHtnbG9iYWxfaW5kZXh9YDtcblxuICAgIGlmIChmaWx0ZXJzLnBhZ2UpIHtcbiAgICAgICAgdXJsICs9IGAvcGFnZSR7Y29uZmlnLnBhcmFtX3NlcH0keyhmaWx0ZXJzLnBhZ2UpLnNwbGl0KCcvJykuam9pbignJTVDJyl9YDtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMudHlwZSAmJiBmaWx0ZXJzLnR5cGUgIT09ICcqJykge1xuICAgICAgICB1cmwgKz0gYC90eXBlJHtjb25maWcucGFyYW1fc2VwfSR7ZmlsdGVycy50eXBlfWA7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzLmRhdGUgJiYgZmlsdGVycy5kYXRlICE9PSAnKicpIHtcbiAgICAgICAgdXJsICs9IGAvZGF0ZSR7Y29uZmlnLnBhcmFtX3NlcH0ke2ZpbHRlcnMuZGF0ZX1gO1xuICAgIH1cblxuICAgIGlmICghaXNMb2FkaW5nKSB7XG4gICAgICAgIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgJCgnLnNwaW5uaW5nLXdoZWVsJykuc2hvdygpO1xuICAgICAgICAkLmdldCh1cmwsIGZ1bmN0aW9uKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICQoJy5qc19fZmlsZXMnKS5hcHBlbmQoY29udGVudCk7XG4gICAgICAgICAgICAkKCcuc3Bpbm5pbmctd2hlZWwnKS5oaWRlKCk7XG4gICAgICAgICAgICAkKCcubWVkaWEtY29udGFpbmVyIC5tZWRpYS1yYW5nZScpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgICAgICAgICAgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBnbG9iYWxfaW5kZXgrKztcblxuICAgICAgICAgICAgY2FsbGJhY2soY29udGVudCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG5cbnZhciBjbGVhbkZpbGVzTGlzdCA9IGZ1bmN0aW9uIGNsZWFuRmlsZXNMaXN0KCkge1xuICAgICQoJy5qc19fZmlsZXMgLmNhcmQtaXRlbScpLnJlbW92ZSgpO1xufTtcblxudmFyIHJlc2V0QWN0aXZlU3RhdGVJblNpZGViYXIgPSBmdW5jdGlvbiByZXNldEFjdGl2ZVN0YXRlSW5TaWRlYmFyKCkge1xuICAgICQoJy5wYWdlcy1saXN0LWNvbnRhaW5lciAucm93JykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAvLyBjbGVhciBhY3RpdmUgc3RhdGUgaW4gc2lkZWJhclxufTtcblxudmFyIHNob3dFbXB0eVN0YXRlID0gZnVuY3Rpb24gc2hvd0VtcHR5U3RhdGUoKSB7XG4gICAgJCgnLnRodW1icy1saXN0LWNvbnRhaW5lcicpLmFwcGVuZCgnPHAgY2xhc3M9XCJjYXJkLWl0ZW0gZW1wdHktc3BhY2VcIj5ObyBtZWRpYSBmb3VuZDwvcD4nKTtcbn07XG5cbnZhciBmaWx0ZXJGaWxlcyA9IGZ1bmN0aW9uIGZpbHRlckZpbGVzKCkge1xuICAgIGNsZWFuRmlsZXNMaXN0KCk7XG4gICAgZ2xvYmFsX2luZGV4ID0gMDtcbiAgICBmaWxlc19lbmRlZCA9IGZhbHNlO1xuICAgICQoJy5lbXB0eS1zcGFjZScpLnJlbW92ZSgpO1xuICAgIGxvYWRNZWRpYShmaWx0ZXJzLCBmdW5jdGlvbihjb250ZW50KSB7XG4gICAgICAgIGlmICghY29udGVudC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBzaG93RW1wdHlTdGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmaWx0ZXJzLnBhZ2UgJiYgKCFmaWx0ZXJzLmRhdGUgfHwgZmlsdGVycy5kYXRlID09PSAnKicpICYmICghZmlsdGVycy50eXBlIHx8IGZpbHRlcnMudHlwZSA9PT0gJyonKSkge1xuICAgICAgICAgICAgICAgICQoJy5qc19fZmlsZXMnKS50cmlnZ2VyKCdmaWxsVmlldycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vKiBoYW5kbGUgY2hhbmdpbmcgcGFnZSAqL1xuJCgnYm9keScpLm9uKCdjbGljaycsICcucGFnZXMtbGlzdC1jb250YWluZXIgLmpzX19wYWdlLWxpbmsnLCAoZXZlbnQpID0+IHtcbiAgICB2YXIgcGFnZSA9ICQoZXZlbnQudGFyZ2V0KS5kYXRhKCdwYWdlJyk7XG4gICAgZmlsdGVyc1sncGFnZSddID0gcGFnZTtcblxuICAgICQoJy5tZWRpYS1saXN0LXRpdGxlIC5wYWdlLWluZGljYXRvcicpLmh0bWwocGFnZSk7IC8vIHNldCBpbmRpY2F0aW9uXG4gICAgJCgnLmpzX19yZXNldC1wYWdlcy1maWx0ZXInKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7IC8vIGFjdGl2YXRlIHJlc2V0IHBhZ2VzIGljb25cbiAgICByZXNldEFjdGl2ZVN0YXRlSW5TaWRlYmFyKCk7XG4gICAgJChldmVudC50YXJnZXQpLnBhcmVudHMoJy5yb3cnKS5hZGRDbGFzcygnYWN0aXZlJyk7IC8vIHNldCBhY3RpdmUgc3RhdGUgaW4gc2lkZWJhclxuICAgICQoJy5qc19fZmlsZS11cGxvYWRlcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcblxuICAgIC8vIGN1c3RvbWl6ZSBwcm9jZXNzaW5nIFVSTCwgYXMgdGhlIHBhZ2UgY2hhbmdlcyBkeW5hbWljYWxseVxuICAgIGlmICgkKCcuZHJvcHpvbmUnKVswXSkge1xuICAgICAgICAkKCcuZHJvcHpvbmUnKVswXS5kcm9wem9uZS5vbigncHJvY2Vzc2luZycsIGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy51cmwgPSBgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L21lZGlhLW1hbmFnZXIke3BhZ2V9Lmpzb24vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1hZGRtZWRpYWA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICQoJy5qc19fYnV0dG9uLWNsZWFyLW1lZGlhLWNhY2hlJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgIGZpbHRlckZpbGVzKCk7XG5cbiAgICBkaXNhYmxlSW5maW5pdGVTY3JvbGxpbmcoKTsgLy8gb25seSBpbmZpbml0ZSBzY3JvbGwgb24gbWFpbiBsaXN0LCBub3QgaW5zaWRlIHNpbmdsZSBwYWdlc1xufSk7XG5cbi8qIGhhbmRsZSBjbGVhcmluZyBwYWdlIGZpbHRlciAqL1xuJCgnYm9keScpLm9uKCdjbGljaycsICcuanNfX3Jlc2V0LXBhZ2VzLWZpbHRlcicsIChldmVudCkgPT4ge1xuICAgICQoJy5tZWRpYS1saXN0LXRpdGxlIC5wYWdlLWluZGljYXRvcicpLmh0bWwoJ0FsbCBQYWdlcycpOyAvLyBzZXQgaW5kaWNhdGlvblxuICAgIGNsZWFuRmlsZXNMaXN0KCk7XG4gICAgcmVzZXRBY3RpdmVTdGF0ZUluU2lkZWJhcigpO1xuICAgICQoJy5qc19fcmVzZXQtcGFnZXMtZmlsdGVyJykuYWRkQ2xhc3MoJ2hpZGRlbicpOyAvLyByZW1vdmUgcmVzZXQgcGFnZXMgaWNvblxuICAgICQoJy5qc19fZmlsZS11cGxvYWRlcicpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAkKCcuanNfX2J1dHRvbi1jbGVhci1tZWRpYS1jYWNoZScpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICBkZWxldGUgZmlsdGVyc1sncGFnZSddO1xuXG4gICAgZmlsdGVyRmlsZXMoKTtcbn0pO1xuXG4vKiBoYW5kbGUgaW5maW5pdGUgbG9hZGluZyAqL1xudmFyIGVuYWJsZUluZmluaXRlU2Nyb2xsaW5nID0gZnVuY3Rpb24gZW5hYmxlSW5maW5pdGVTY3JvbGxpbmcoKSB7XG4gICAgJCgnLnNwaW5uaW5nLXdoZWVsJykuaGlkZSgpO1xuICAgIHZhciB2aWV3ID0gJCgnLm1lZGlhcGlja2VyLXNjcm9sbCcpLmxhc3QoKTtcblxuICAgIGlmICghdmlldy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAkKHZpZXcpLm9uKCdzY3JvbGwnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCgkKHRoaXMpLnNjcm9sbFRvcCgpICsgJCh0aGlzKS5pbm5lckhlaWdodCgpICsgMTAwKSA+PSAkKHRoaXMpWzBdLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgZmlsbFZpZXcoKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxudmFyIGxvYWROZXh0QmF0Y2ggPSBmdW5jdGlvbiBsb2FkTmV4dEJhdGNoKGNhbGxiYWNrKSB7XG4gICAgaWYgKGZpbGVzX2VuZGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2FkTWVkaWEoe30sIGZ1bmN0aW9uKGNvbnRlbnQpIHtcbiAgICAgICAgaWYgKCEkKGNvbnRlbnQpLmxlbmd0aCB8fCAoKGNvbnRlbnQuc3BsaXQoJ2NhcmQtaXRlbScpLmxlbmd0aCAtIDEpIDwgTUVESUFfUEFHSU5BVElPTl9JTlRFUlZBTCkpIHtcbiAgICAgICAgICAgIGZpbGVzX2VuZGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAkKCcubWVkaWEtY29udGFpbmVyIC5tZWRpYS1yYW5nZScpLnRyaWdnZXIoJ2lucHV0Jyk7XG4gICAgfSk7XG59O1xuXG52YXIgZmlsbFZpZXcgPSBmdW5jdGlvbiBmaWxsVmlldygpIHtcbiAgICBpZiAoISQoJy5qc19fZmlsZXMnKS5maW5kKCcuY2FyZC1pdGVtJykubGFzdCgpLm9mZnNldCgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyByZXRyeSBsYXRlclxuICAgICAgICAgICAgZmlsbFZpZXcoKTtcbiAgICAgICAgfSwgMzAwKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCQoJy5qc19fZmlsZXMnKS5maW5kKCcuY2FyZC1pdGVtJykubGFzdCgpLm9mZnNldCgpLnRvcCAtIDEgPD0gJCgnLm1lZGlhLWNvbnRhaW5lcicpLmhlaWdodCgpKSB7XG4gICAgICAgIGxvYWROZXh0QmF0Y2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmaWxsVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vKiBkaXNhYmxlIGluZmluaXRlIGxvYWRpbmcgKi9cbnZhciBkaXNhYmxlSW5maW5pdGVTY3JvbGxpbmcgPSBmdW5jdGlvbiBkaXNhYmxlSW5maW5pdGVTY3JvbGxpbmcoKSB7XG4gICAgJCgnLnNwaW5uaW5nLXdoZWVsJykuaGlkZSgpO1xuICAgICQoJy5jb250ZW50LXdyYXBwZXInKS51bmJpbmQoJ3Njcm9sbCcpO1xufTtcblxuJCgnLmpzX19maWxlcycpLm9uKCdmaWxsVmlldycsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgLy8gdGhlIGZpcnN0IGJhdGNoIGdvdCB0aGUgbWF4IG51bWJlciBvZiBtZWRpYSBmaWxlcywgdHJ5IGxvYWRpbmcgbW9yZVxuICAgIGlmICgoJCgnLmpzX19maWxlcycpWzBdLmlubmVySFRNTC5zcGxpdCgnY2FyZC1pdGVtJykubGVuZ3RoIC0gMSkgPT09IE1FRElBX1BBR0lOQVRJT05fSU5URVJWQUwpIHtcbiAgICAgICAgZmlsbFZpZXcoKTtcbiAgICAgICAgZW5hYmxlSW5maW5pdGVTY3JvbGxpbmcoKTtcbiAgICB9XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/media/index.js\n");
/***/ }),
/***/ "./app/pages/filter.js":
/*!*****************************!*\
!*** ./app/pages/filter.js ***!
\*****************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ PagesFilter,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debounce */ \"./node_modules/debounce/index.js\");\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tree__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tree */ \"./app/pages/tree.js\");\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! selectize */ \"./node_modules/selectize/dist/js/selectize.js\");\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(selectize__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_selectize_required_fix_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/selectize-required-fix.js */ \"./app/utils/selectize-required-fix.js\");\n/* harmony import */ var _utils_storage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/storage */ \"./app/utils/storage.js\");\n/* harmony import */ var _utils_storage__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_storage__WEBPACK_IMPORTED_MODULE_7__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n/* @formatter:off */\n\n/* eslint-disable */\n\nvar options = [{\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.MODULE,\n key: 'Module',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.VISIBLE,\n key: 'Visible',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.ROUTABLE,\n key: 'Routable',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.PUBLISHED,\n key: 'Published',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.NON_MODULE,\n key: 'NonModule',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.NON_VISIBLE,\n key: 'NonVisible',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.NON_ROUTABLE,\n key: 'NonRoutable',\n cat: 'mode'\n}, {\n flag: grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.NON_PUBLISHED,\n key: 'NonPublished',\n cat: 'mode'\n}];\n/* @formatter:on */\n\n/* eslint-enable */\n\nvar PagesFilter = /*#__PURE__*/function () {\n function PagesFilter(filters, search) {\n var _this = this;\n\n _classCallCheck(this, PagesFilter);\n\n this.filters = jquery__WEBPACK_IMPORTED_MODULE_0___default()(filters);\n this.search = jquery__WEBPACK_IMPORTED_MODULE_0___default()(search);\n this.options = options;\n this.tree = _tree__WEBPACK_IMPORTED_MODULE_4__.Instance;\n var storage = JSON.parse(localStorage.getItem('grav:admin:pages:filter') || '{}');\n\n if (!this.filters.length || !this.search.length) {\n return;\n }\n\n this.labels = this.filters.data('filter-labels');\n this.search.on('input', debounce__WEBPACK_IMPORTED_MODULE_3___default()(function () {\n return _this.filter();\n }, 250));\n this.filters.on('change', function () {\n return _this.filter();\n }); // restore state\n\n if (storage.flags || storage.query) {\n this.setValues(storage);\n this.filter();\n }\n\n this._initSelectize();\n }\n\n _createClass(PagesFilter, [{\n key: \"filter\",\n value: function filter(value) {\n var _this2 = this;\n\n var data = {\n flags: '',\n query: ''\n };\n\n if (_typeof(value) === 'object') {\n Object.assign(data, value);\n }\n\n if (typeof value === 'string') {\n data.query = value;\n }\n\n if (typeof value === 'undefined') {\n data.flags = this.filters.val();\n data.query = this.search.val();\n }\n\n if (!Object.keys(data).filter(function (key) {\n return data[key] !== '';\n }).length) {\n this.resetValues();\n return;\n }\n\n data.flags = data.flags.replace(/(\\s{1,})?,(\\s{1,})?/g, ',');\n this.setValues({\n flags: data.flags,\n query: data.query\n }, 'silent');\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/pages-filter.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"filterPages\"), {\n method: 'post',\n body: data\n }, function (response) {\n _this2.refreshDOM(response);\n });\n }\n }, {\n key: \"refreshDOM\",\n value: function refreshDOM(response) {\n var _this3 = this;\n\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-nav-id]');\n\n if (!response) {\n items.removeClass('search-match').show();\n this.tree.restore();\n return;\n }\n\n items.removeClass('search-match').hide();\n response.results.forEach(function (page) {\n var match = items.filter(\"[data-nav-id=\\\"\".concat(page, \"\\\"]\")).addClass('search-match').show();\n match.parents('[data-nav-id]').addClass('search-match').show();\n\n _this3.tree.expand(page, 'no-store');\n });\n }\n }, {\n key: \"setValues\",\n value: function setValues(_ref, silent) {\n var _ref$flags = _ref.flags,\n flags = _ref$flags === void 0 ? '' : _ref$flags,\n _ref$query = _ref.query,\n query = _ref$query === void 0 ? '' : _ref$query;\n var flagsArray = flags.replace(/(\\s{1,})?,(\\s{1,})?/g, ',').split(',');\n\n if (this.filters.val() !== flags) {\n var selectize = this.filters.data('selectize');\n this.filters[selectize ? 'setValue' : 'val'](flagsArray, silent);\n }\n\n if (this.search.val() !== query) {\n this.search.val(query);\n }\n\n localStorage.setItem('grav:admin:pages:filter', JSON.stringify({\n flags: flags,\n query: query\n }));\n }\n }, {\n key: \"resetValues\",\n value: function resetValues() {\n this.setValues('', 'silent');\n this.refreshDOM();\n }\n }, {\n key: \"_initSelectize\",\n value: function _initSelectize() {\n var _this4 = this;\n\n var extras = {\n type: this.filters.data('filter-types') || {},\n access: this.filters.data('filter-access-levels') || {}\n };\n Object.keys(extras).forEach(function (cat) {\n Object.keys(extras[cat]).forEach(function (key) {\n _this4.options.push({\n cat: cat,\n key: key,\n flag: extras[cat][key]\n });\n });\n });\n this.filters.selectize({\n maxItems: null,\n valueField: 'key',\n labelField: 'flag',\n searchField: ['flag', 'key'],\n options: this.options,\n optgroups: this.labels,\n optgroupField: 'cat',\n optgroupLabelField: 'name',\n optgroupValueField: 'id',\n optgroupOrder: this.labels.map(function (item) {\n return item.id;\n }),\n plugins: ['optgroup_columns', 'required-fix']\n });\n }\n }]);\n\n return PagesFilter;\n}();\n\n\nvar Instance = new PagesFilter('input[name=\"page-filter\"]', 'input[name=\"page-search\"]');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL2ZpbHRlci5qcz80NzRmIl0sIm5hbWVzIjpbIm9wdGlvbnMiLCJmbGFnIiwidHJhbnNsYXRpb25zIiwia2V5IiwiY2F0IiwiUGFnZXNGaWx0ZXIiLCJmaWx0ZXJzIiwic2VhcmNoIiwiJCIsInRyZWUiLCJwYWdlc1RyZWUiLCJzdG9yYWdlIiwiSlNPTiIsInBhcnNlIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsImxlbmd0aCIsImxhYmVscyIsImRhdGEiLCJvbiIsImRlYm91bmNlIiwiZmlsdGVyIiwiZmxhZ3MiLCJxdWVyeSIsInNldFZhbHVlcyIsIl9pbml0U2VsZWN0aXplIiwidmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJ2YWwiLCJrZXlzIiwicmVzZXRWYWx1ZXMiLCJyZXBsYWNlIiwicmVxdWVzdCIsImNvbmZpZyIsIm1ldGhvZCIsImJvZHkiLCJyZXNwb25zZSIsInJlZnJlc2hET00iLCJpdGVtcyIsInJlbW92ZUNsYXNzIiwic2hvdyIsInJlc3RvcmUiLCJoaWRlIiwicmVzdWx0cyIsImZvckVhY2giLCJwYWdlIiwibWF0Y2giLCJhZGRDbGFzcyIsInBhcmVudHMiLCJleHBhbmQiLCJzaWxlbnQiLCJmbGFnc0FycmF5Iiwic3BsaXQiLCJzZWxlY3RpemUiLCJzZXRJdGVtIiwic3RyaW5naWZ5IiwiZXh0cmFzIiwidHlwZSIsImFjY2VzcyIsInB1c2giLCJtYXhJdGVtcyIsInZhbHVlRmllbGQiLCJsYWJlbEZpZWxkIiwic2VhcmNoRmllbGQiLCJvcHRncm91cHMiLCJvcHRncm91cEZpZWxkIiwib3B0Z3JvdXBMYWJlbEZpZWxkIiwib3B0Z3JvdXBWYWx1ZUZpZWxkIiwib3B0Z3JvdXBPcmRlciIsIm1hcCIsIml0ZW0iLCJpZCIsInBsdWdpbnMiLCJJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QWdCLFVBQUNDLElBQUQ7QUFBQSxpQkFBVUEsSUFBSSxDQUFDQyxFQUFmO0FBQUEsU0FBaEIsQ0FWSTtBQVduQkMsZUFBTyxFQUFFLENBQUMsa0JBQUQsRUFBcUIsY0FBckI7QUFYVSxPQUF2QjtBQWFIOzs7Ozs7O0FBR0wsSUFBSUMsUUFBUSxHQUFHLElBQUlyRSxXQUFKLENBQWdCLDJCQUFoQixFQUE2QywyQkFBN0MsQ0FBZiIsImZpbGUiOiIuL2FwcC9wYWdlcy9maWx0ZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgY29uZmlnLCB0cmFuc2xhdGlvbnMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdkZWJvdW5jZSc7XG5pbXBvcnQgeyBJbnN0YW5jZSBhcyBwYWdlc1RyZWUgfSBmcm9tICcuL3RyZWUnO1xuaW1wb3J0ICdzZWxlY3RpemUnO1xuaW1wb3J0ICcuLi91dGlscy9zZWxlY3RpemUtcmVxdWlyZWQtZml4LmpzJztcbmltcG9ydCAnLi4vdXRpbHMvc3RvcmFnZSc7XG5cbi8qIEBmb3JtYXR0ZXI6b2ZmICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuY29uc3Qgb3B0aW9ucyA9IFtcbiAgICB7IGZsYWc6IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTU9EVUxFLCAgICAgICAga2V5OiAnTW9kdWxlJywgICAgICBjYXQ6ICdtb2RlJyB9LFxuICAgIHsgZmxhZzogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5WSVNJQkxFLCAgICAgICBrZXk6ICdWaXNpYmxlJywgICAgICBjYXQ6ICdtb2RlJyB9LFxuICAgIHsgZmxhZzogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5ST1VUQUJMRSwgICAgICBrZXk6ICdSb3V0YWJsZScsICAgICBjYXQ6ICdtb2RlJyB9LFxuICAgIHsgZmxhZzogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5QVUJMSVNIRUQsICAgICBrZXk6ICdQdWJsaXNoZWQnLCAgICBjYXQ6ICdtb2RlJyB9LFxuICAgIHsgZmxhZzogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5OT05fTU9EVUxFLCAgICBrZXk6ICdOb25Nb2R1bGUnLCAgIGNhdDogJ21vZGUnIH0sXG4gICAgeyBmbGFnOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk5PTl9WSVNJQkxFLCAgIGtleTogJ05vblZpc2libGUnLCAgIGNhdDogJ21vZGUnIH0sXG4gICAgeyBmbGFnOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk5PTl9ST1VUQUJMRSwgIGtleTogJ05vblJvdXRhYmxlJywgIGNhdDogJ21vZGUnIH0sXG4gICAgeyBmbGFnOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk5PTl9QVUJMSVNIRUQsIGtleTogJ05vblB1Ymxpc2hlZCcsIGNhdDogJ21vZGUnIH1cbl07XG4vKiBAZm9ybWF0dGVyOm9uICovXG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhZ2VzRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3RvcihmaWx0ZXJzLCBzZWFyY2gpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gJChmaWx0ZXJzKTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSAkKHNlYXJjaCk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMudHJlZSA9IHBhZ2VzVHJlZTtcbiAgICAgICAgbGV0IHN0b3JhZ2UgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdncmF2OmFkbWluOnBhZ2VzOmZpbHRlcicpIHx8ICd7fScpO1xuXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJzLmxlbmd0aCB8fCAhdGhpcy5zZWFyY2gubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMubGFiZWxzID0gdGhpcy5maWx0ZXJzLmRhdGEoJ2ZpbHRlci1sYWJlbHMnKTtcblxuICAgICAgICB0aGlzLnNlYXJjaC5vbignaW5wdXQnLCBkZWJvdW5jZSgoKSA9PiB0aGlzLmZpbHRlcigpLCAyNTApKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzLm9uKCdjaGFuZ2UnLCAoKSA9PiB0aGlzLmZpbHRlcigpKTtcblxuICAgICAgICAvLyByZXN0b3JlIHN0YXRlXG4gICAgICAgIGlmIChzdG9yYWdlLmZsYWdzIHx8IHN0b3JhZ2UucXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzKHN0b3JhZ2UpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2luaXRTZWxlY3RpemUoKTtcbiAgICB9XG5cbiAgICBmaWx0ZXIodmFsdWUpIHtcbiAgICAgICAgbGV0IGRhdGEgPSB7IGZsYWdzOiAnJywgcXVlcnk6ICcnIH07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBkYXRhLnF1ZXJ5ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGRhdGEuZmxhZ3MgPSB0aGlzLmZpbHRlcnMudmFsKCk7XG4gICAgICAgICAgICBkYXRhLnF1ZXJ5ID0gdGhpcy5zZWFyY2gudmFsKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIU9iamVjdC5rZXlzKGRhdGEpLmZpbHRlcigoa2V5KSA9PiBkYXRhW2tleV0gIT09ICcnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRWYWx1ZXMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGEuZmxhZ3MgPSBkYXRhLmZsYWdzLnJlcGxhY2UoLyhcXHN7MSx9KT8sKFxcc3sxLH0pPy9nLCAnLCcpO1xuICAgICAgICB0aGlzLnNldFZhbHVlcyh7IGZsYWdzOiBkYXRhLmZsYWdzLCBxdWVyeTogZGF0YS5xdWVyeSB9LCAnc2lsZW50Jyk7XG5cbiAgICAgICAgcmVxdWVzdChgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L3BhZ2VzLWZpbHRlci5qc29uL3Rhc2ske2NvbmZpZy5wYXJhbV9zZXB9ZmlsdGVyUGFnZXNgLCB7XG4gICAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICAgIGJvZHk6IGRhdGFcbiAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hET00ocmVzcG9uc2UpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWZyZXNoRE9NKHJlc3BvbnNlKSB7XG4gICAgICAgIGxldCBpdGVtcyA9ICQoJ1tkYXRhLW5hdi1pZF0nKTtcblxuICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpdGVtcy5yZW1vdmVDbGFzcygnc2VhcmNoLW1hdGNoJykuc2hvdygpO1xuICAgICAgICAgICAgdGhpcy50cmVlLnJlc3RvcmUoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXMucmVtb3ZlQ2xhc3MoJ3NlYXJjaC1tYXRjaCcpLmhpZGUoKTtcblxuICAgICAgICByZXNwb25zZS5yZXN1bHRzLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IGl0ZW1zLmZpbHRlcihgW2RhdGEtbmF2LWlkPVwiJHtwYWdlfVwiXWApLmFkZENsYXNzKCdzZWFyY2gtbWF0Y2gnKS5zaG93KCk7XG4gICAgICAgICAgICBtYXRjaC5wYXJlbnRzKCdbZGF0YS1uYXYtaWRdJykuYWRkQ2xhc3MoJ3NlYXJjaC1tYXRjaCcpLnNob3coKTtcblxuICAgICAgICAgICAgdGhpcy50cmVlLmV4cGFuZChwYWdlLCAnbm8tc3RvcmUnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VmFsdWVzKHsgZmxhZ3MgPSAnJywgcXVlcnkgPSAnJ30sIHNpbGVudCkge1xuICAgICAgICBsZXQgZmxhZ3NBcnJheSA9IGZsYWdzLnJlcGxhY2UoLyhcXHN7MSx9KT8sKFxcc3sxLH0pPy9nLCAnLCcpLnNwbGl0KCcsJyk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcnMudmFsKCkgIT09IGZsYWdzKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aXplID0gdGhpcy5maWx0ZXJzLmRhdGEoJ3NlbGVjdGl6ZScpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzW3NlbGVjdGl6ZSA/ICdzZXRWYWx1ZScgOiAndmFsJ10oZmxhZ3NBcnJheSwgc2lsZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWFyY2gudmFsKCkgIT09IHF1ZXJ5KSB7IHRoaXMuc2VhcmNoLnZhbChxdWVyeSk7IH1cblxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZ3JhdjphZG1pbjpwYWdlczpmaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh7IGZsYWdzLCBxdWVyeSB9KSk7XG4gICAgfVxuXG4gICAgcmVzZXRWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWVzKCcnLCAnc2lsZW50Jyk7XG4gICAgICAgIHRoaXMucmVmcmVzaERPTSgpO1xuICAgIH1cblxuICAgIF9pbml0U2VsZWN0aXplKCkge1xuICAgICAgICBsZXQgZXh0cmFzID0ge1xuICAgICAgICAgICAgdHlwZTogdGhpcy5maWx0ZXJzLmRhdGEoJ2ZpbHRlci10eXBlcycpIHx8IHt9LFxuICAgICAgICAgICAgYWNjZXNzOiB0aGlzLmZpbHRlcnMuZGF0YSgnZmlsdGVyLWFjY2Vzcy1sZXZlbHMnKSB8fCB7fVxuICAgICAgICB9O1xuXG4gICAgICAgIE9iamVjdC5rZXlzKGV4dHJhcykuZm9yRWFjaCgoY2F0KSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhleHRyYXNbY2F0XSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjYXQsXG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgZmxhZzogZXh0cmFzW2NhdF1ba2V5XVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsdGVycy5zZWxlY3RpemUoe1xuICAgICAgICAgICAgbWF4SXRlbXM6IG51bGwsXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiAna2V5JyxcbiAgICAgICAgICAgIGxhYmVsRmllbGQ6ICdmbGFnJyxcbiAgICAgICAgICAgIHNlYXJjaEZpZWxkOiBbJ2ZsYWcnLCAna2V5J10sXG4gICAgICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRncm91cHM6IHRoaXMubGFiZWxzLFxuICAgICAgICAgICAgb3B0Z3JvdXBGaWVsZDogJ2NhdCcsXG4gICAgICAgICAgICBvcHRncm91cExhYmVsRmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgIG9wdGdyb3VwVmFsdWVGaWVsZDogJ2lkJyxcbiAgICAgICAgICAgIG9wdGdyb3VwT3JkZXI6IHRoaXMubGFiZWxzLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCksXG4gICAgICAgICAgICBwbHVnaW5zOiBbJ29wdGdyb3VwX2NvbHVtbnMnLCAncmVxdWlyZWQtZml4J11cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5sZXQgSW5zdGFuY2UgPSBuZXcgUGFnZXNGaWx0ZXIoJ2lucHV0W25hbWU9XCJwYWdlLWZpbHRlclwiXScsICdpbnB1dFtuYW1lPVwicGFnZS1zZWFyY2hcIl0nKTtcbmV4cG9ydCB7IEluc3RhbmNlIH07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/filter.js\n");
/***/ }),
/***/ "./app/pages/index.js":
/*!****************************!*\
!*** ./app/pages/index.js ***!
\****************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.complete.esm.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter */ \"./app/pages/filter.js\");\n/* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./page */ \"./app/pages/page/index.js\");\n\n\n\n\n\nvar pad = function pad(n, s) {\n return \"000\".concat(n).substr(-s);\n}; // Pages Ordering\n\n\nvar Ordering = null;\nvar orderingElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#ordering');\n\nif (orderingElement.length) {\n Ordering = new sortablejs__WEBPACK_IMPORTED_MODULE_1__.default(orderingElement.get(0), {\n filter: '.ignore',\n onUpdate: function onUpdate() {\n /* Old single page index behavior\n let item = $(event.item);\n let index = orderingElement.children().index(item) + 1;\n $('[data-order]').val(index);\n */\n var indexes = [];\n var children = orderingElement.children();\n var padZero = (children.length + '').split('').length;\n children.each(function (index, item) {\n item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(item);\n indexes.push(item.data('id'));\n item.find('.page-order').text(\"\".concat(pad(index + 1, padZero), \".\"));\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-order]').val(indexes.join(','));\n }\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('input', '[name=\"data[folder]\"]', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var activeOrder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-id][data-active-id]');\n activeOrder.data('id', target.val());\n Ordering.options.onUpdate();\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n Ordering: Ordering,\n Page: _page__WEBPACK_IMPORTED_MODULE_3__.default,\n PageFilters: {\n PageFilters: _filter__WEBPACK_IMPORTED_MODULE_2__.default,\n Instance: _filter__WEBPACK_IMPORTED_MODULE_2__.Instance\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL2luZGV4LmpzPzdhMzUiXSwibmFtZXMiOlsicGFkIiwibiIsInMiLCJzdWJzdHIiLCJPcmRlcmluZyIsIm9yZGVyaW5nRWxlbWVudCIsIiQiLCJsZW5ndGgiLCJTb3J0YWJsZSIsImdldCIsImZpbHRlciIsIm9uVXBkYXRlIiwiaW5kZXhlcyIsImNoaWxkcmVuIiwicGFkWmVybyIsInNwbGl0IiwiZWFjaCIsImluZGV4IiwiaXRlbSIsInB1c2giLCJkYXRhIiwiZmluZCIsInRleHQiLCJ2YWwiLCJqb2luIiwiZG9jdW1lbnQiLCJvbiIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImFjdGl2ZU9yZGVyIiwib3B0aW9ucyIsIlBhZ2UiLCJQYWdlRmlsdGVycyIsIkluc3RhbmNlIiwiUGFnZUZpbHRlcnNJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLFNBQU5BLEdBQU0sQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsU0FBVSxhQUFPRCxDQUFQLEVBQVlFLE1BQVosQ0FBbUIsQ0FBQ0QsQ0FBcEIsQ0FBVjtBQUFBLENBQVosQyxDQUVBOzs7QUFDQSxJQUFJRSxRQUFRLEdBQUcsSUFBZjtBQUNBLElBQUlDLGVBQWUsR0FBR0MsNkNBQUMsQ0FBQyxXQUFELENBQXZCOztBQUNBLElBQUlELGVBQWUsQ0FBQ0UsTUFBcEIsRUFBNEI7QUFDeEJILFVBQVEsR0FBRyxJQUFJSSwrQ0FBSixDQUFhSCxlQUFlLENBQUNJLEdBQWhCLENBQW9CLENBQXBCLENBQWIsRUFBcUM7QUFDNUNDLFVBQU0sRUFBRSxTQURvQztBQUU1Q0MsWUFBUSxFQUFFLG9CQUFXO0FBQ2pCO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFHWSxVQUFJQyxPQUFPLEdBQUcsRUFBZDtBQUNBLFVBQU1DLFFBQVEsR0FBR1IsZUFBZSxDQUFDUSxRQUFoQixFQUFqQjtBQUNBLFVBQU1DLE9BQU8sR0FBRyxDQUFDRCxRQUFRLENBQUNOLE1BQVQsR0FBa0IsRUFBbkIsRUFBdUJRLEtBQXZCLENBQTZCLEVBQTdCLEVBQWlDUixNQUFqRDtBQUNBTSxjQUFRLENBQUNHLElBQVQsQ0FBYyxVQUFDQyxLQUFELEVBQVFDLElBQVIsRUFBaUI7QUFDM0JBLFlBQUksR0FBR1osNkNBQUMsQ0FBQ1ksSUFBRCxDQUFSO0FBQ0FOLGVBQU8sQ0FBQ08sSUFBUixDQUFhRCxJQUFJLENBQUNFLElBQUwsQ0FBVSxJQUFWLENBQWI7QUFDQUYsWUFBSSxDQUFDRyxJQUFMLENBQVUsYUFBVixFQUF5QkMsSUFBekIsV0FBaUN0QixHQUFHLENBQUNpQixLQUFLLEdBQUcsQ0FBVCxFQUFZSCxPQUFaLENBQXBDO0FBQ0gsT0FKRDtBQU1BUixtREFBQyxDQUFDLGNBQUQsQ0FBRCxDQUFrQmlCLEdBQWxCLENBQXNCWCxPQUFPLENBQUNZLElBQVIsQ0FBYSxHQUFiLENBQXRCO0FBQ0g7QUFwQjJDLEdBQXJDLENBQVg7QUF1QkFsQiwrQ0FBQyxDQUFDbUIsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLHVCQUF4QixFQUFpRCxVQUFDQyxLQUFELEVBQVc7QUFDeEQsUUFBTUMsTUFBTSxHQUFHdEIsNkNBQUMsQ0FBQ3FCLEtBQUssQ0FBQ0UsYUFBUCxDQUFoQjtBQUNBLFFBQU1DLFdBQVcsR0FBR3hCLDZDQUFDLENBQUMsMkJBQUQsQ0FBckI7QUFFQXdCLGVBQVcsQ0FBQ1YsSUFBWixDQUFpQixJQUFqQixFQUF1QlEsTUFBTSxDQUFDTCxHQUFQLEVBQXZCO0FBRUFuQixZQUFRLENBQUMyQixPQUFULENBQWlCcEIsUUFBakI7QUFDSCxHQVBEO0FBU0g7O0FBRUQsaUVBQWU7QUFDWFAsVUFBUSxFQUFSQSxRQURXO0FBRVg0QixNQUFJLEVBQUpBLDBDQUZXO0FBR1hDLGFBQVcsRUFBRTtBQUNUQSxlQUFXLEVBQVhBLDRDQURTO0FBRVRDLFlBQVEsRUFBRUMsNkNBQW1CQTtBQUZwQjtBQUhGLENBQWYiLCJmaWxlIjoiLi9hcHAvcGFnZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IFNvcnRhYmxlIGZyb20gJ3NvcnRhYmxlanMnO1xuaW1wb3J0IFBhZ2VGaWx0ZXJzLCB7IEluc3RhbmNlIGFzIFBhZ2VGaWx0ZXJzSW5zdGFuY2UgfSBmcm9tICcuL2ZpbHRlcic7XG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2UnO1xuXG5jb25zdCBwYWQgPSAobiwgcykgPT4gKGAwMDAke259YCkuc3Vic3RyKC1zKTtcblxuLy8gUGFnZXMgT3JkZXJpbmdcbmxldCBPcmRlcmluZyA9IG51bGw7XG5sZXQgb3JkZXJpbmdFbGVtZW50ID0gJCgnI29yZGVyaW5nJyk7XG5pZiAob3JkZXJpbmdFbGVtZW50Lmxlbmd0aCkge1xuICAgIE9yZGVyaW5nID0gbmV3IFNvcnRhYmxlKG9yZGVyaW5nRWxlbWVudC5nZXQoMCksIHtcbiAgICAgICAgZmlsdGVyOiAnLmlnbm9yZScsXG4gICAgICAgIG9uVXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8qIE9sZCBzaW5nbGUgcGFnZSBpbmRleCBiZWhhdmlvclxuXG4gICAgICAgICAgICBsZXQgaXRlbSA9ICQoZXZlbnQuaXRlbSk7XG4gICAgICAgICAgICBsZXQgaW5kZXggPSBvcmRlcmluZ0VsZW1lbnQuY2hpbGRyZW4oKS5pbmRleChpdGVtKSArIDE7XG4gICAgICAgICAgICAkKCdbZGF0YS1vcmRlcl0nKS52YWwoaW5kZXgpO1xuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgbGV0IGluZGV4ZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gb3JkZXJpbmdFbGVtZW50LmNoaWxkcmVuKCk7XG4gICAgICAgICAgICBjb25zdCBwYWRaZXJvID0gKGNoaWxkcmVuLmxlbmd0aCArICcnKS5zcGxpdCgnJykubGVuZ3RoO1xuICAgICAgICAgICAgY2hpbGRyZW4uZWFjaCgoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtID0gJChpdGVtKTtcbiAgICAgICAgICAgICAgICBpbmRleGVzLnB1c2goaXRlbS5kYXRhKCdpZCcpKTtcbiAgICAgICAgICAgICAgICBpdGVtLmZpbmQoJy5wYWdlLW9yZGVyJykudGV4dChgJHtwYWQoaW5kZXggKyAxLCBwYWRaZXJvKX0uYCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJCgnW2RhdGEtb3JkZXJdJykudmFsKGluZGV4ZXMuam9pbignLCcpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2lucHV0JywgJ1tuYW1lPVwiZGF0YVtmb2xkZXJdXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9yZGVyID0gJCgnW2RhdGEtaWRdW2RhdGEtYWN0aXZlLWlkXScpO1xuXG4gICAgICAgIGFjdGl2ZU9yZGVyLmRhdGEoJ2lkJywgdGFyZ2V0LnZhbCgpKTtcblxuICAgICAgICBPcmRlcmluZy5vcHRpb25zLm9uVXBkYXRlKCk7XG4gICAgfSk7XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIE9yZGVyaW5nLFxuICAgIFBhZ2UsXG4gICAgUGFnZUZpbHRlcnM6IHtcbiAgICAgICAgUGFnZUZpbHRlcnMsXG4gICAgICAgIEluc3RhbmNlOiBQYWdlRmlsdGVyc0luc3RhbmNlXG4gICAgfVxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/pages/index.js\n");
/***/ }),
/***/ "./app/pages/page/add.js":
/*!*******************************!*\
!*** ./app/pages/page/add.js ***!
\*******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nvar custom = false;\nvar folder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"modal\"] input[name=\"data[folder]\"], [data-remodal-id=\"module\"] input[name=\"data[folder]\"]');\nvar title = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"modal\"] input[name=\"data[title]\"], [data-remodal-id=\"module\"] input[name=\"data[title]\"]');\n\nvar getFields = function getFields(type, target) {\n target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target);\n var query = \"[data-remodal-id=\\\"\".concat(target.closest('[data-remodal-id]').data('remodal-id'), \"\\\"]\");\n return {\n title: type === 'title' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(target) : jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"\".concat(query, \" input[name=\\\"data[title]\\\"]\")),\n folder: type === 'folder' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(target) : jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"\".concat(query, \" input[name=\\\"data[folder]\\\"]\"))\n };\n};\n\ntitle.on('input focus blur', function (event) {\n if (custom) {\n return true;\n }\n\n var elements = getFields('title', event.currentTarget);\n var slug = jquery__WEBPACK_IMPORTED_MODULE_0___default().slugify(elements.title.val(), {\n custom: {\n \"'\": ''\n }\n });\n elements.folder.val(slug);\n});\nfolder.on('input', function (event) {\n var elements = getFields('folder', event.currentTarget);\n var input = elements.folder.get(0);\n var value = elements.folder.val();\n var selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n value = value.toLowerCase().replace(/\\s/g, '-').replace(/[^a-z0-9_\\-]/g, '');\n elements.folder.val(value);\n custom = !!value; // restore cursor position\n\n input.setSelectionRange(selection.start, selection.end);\n});\nfolder.on('focus blur', function (event) {\n return getFields('title', event.currentTarget).title.trigger('input');\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('change', '[name=\"data[route]\"]', function (event) {\n var rawroute = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).val();\n var pageTemplate = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[name=\"data[name]\"]');\n var URI = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.config.base_url_relative, \"/ajax.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.config.param_sep, \"getChildTypes\");\n\n if (pageTemplate.length === 0) {\n return;\n }\n\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(URI, {\n method: 'post',\n body: {\n rawroute: rawroute\n }\n }, function (response) {\n var type = response.child_type;\n\n if (type !== '' && type !== 'default') {\n pageTemplate.val(type);\n pageTemplate.data('selectize').setValue(type);\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvYWRkLmpzP2IyMjgiXSwibmFtZXMiOlsiY3VzdG9tIiwiZm9sZGVyIiwiJCIsInRpdGxlIiwiZ2V0RmllbGRzIiwidHlwZSIsInRhcmdldCIsInF1ZXJ5IiwiY2xvc2VzdCIsImRhdGEiLCJvbiIsImV2ZW50IiwiZWxlbWVudHMiLCJjdXJyZW50VGFyZ2V0Iiwic2x1ZyIsInZhbCIsImlucHV0IiwiZ2V0IiwidmFsdWUiLCJzZWxlY3Rpb24iLCJzdGFydCIsInNlbGVjdGlvblN0YXJ0IiwiZW5kIiwic2VsZWN0aW9uRW5kIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJ0cmlnZ2VyIiwiZG9jdW1lbnQiLCJyYXdyb3V0ZSIsInBhZ2VUZW1wbGF0ZSIsIlVSSSIsImNvbmZpZyIsImxlbmd0aCIsInJlcXVlc3QiLCJtZXRob2QiLCJib2R5IiwicmVzcG9uc2UiLCJjaGlsZF90eXBlIiwic2V0VmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLE1BQU0sR0FBRyxLQUFiO0FBQ0EsSUFBSUMsTUFBTSxHQUFHQyw2Q0FBQyxDQUFDLDZHQUFELENBQWQ7QUFDQSxJQUFJQyxLQUFLLEdBQUdELDZDQUFDLENBQUMsMkdBQUQsQ0FBYjs7QUFDQSxJQUFJRSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFDQyxJQUFELEVBQU9DLE1BQVAsRUFBa0I7QUFDOUJBLFFBQU0sR0FBR0osNkNBQUMsQ0FBQ0ksTUFBRCxDQUFWO0FBQ0EsTUFBSUMsS0FBSyxnQ0FBd0JELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLG1CQUFmLEVBQW9DQyxJQUFwQyxDQUF5QyxZQUF6QyxDQUF4QixRQUFUO0FBRUEsU0FBTztBQUNITixTQUFLLEVBQUVFLElBQUksS0FBSyxPQUFULEdBQW1CSCw2Q0FBQyxDQUFDSSxNQUFELENBQXBCLEdBQStCSiw2Q0FBQyxX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WSxDQUFDZixHQUFiLENBQWlCVixJQUFqQjtBQUNBeUIsa0JBQVksQ0FBQ3JCLElBQWIsQ0FBa0IsV0FBbEIsRUFBK0I4QixRQUEvQixDQUF3Q2xDLElBQXhDO0FBQ0g7QUFDSixHQVRNLENBQVA7QUFVSCxDQW5CRCIsImZpbGUiOiIuL2FwcC9wYWdlcy9wYWdlL2FkZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgJy4uLy4uL3V0aWxzL2pxdWVyeS11dGlscyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ2dyYXYtY29uZmlnJztcblxubGV0IGN1c3RvbSA9IGZhbHNlO1xubGV0IGZvbGRlciA9ICQoJ1tkYXRhLXJlbW9kYWwtaWQ9XCJtb2RhbFwiXSBpbnB1dFtuYW1lPVwiZGF0YVtmb2xkZXJdXCJdLCBbZGF0YS1yZW1vZGFsLWlkPVwibW9kdWxlXCJdIGlucHV0W25hbWU9XCJkYXRhW2ZvbGRlcl1cIl0nKTtcbmxldCB0aXRsZSA9ICQoJ1tkYXRhLXJlbW9kYWwtaWQ9XCJtb2RhbFwiXSBpbnB1dFtuYW1lPVwiZGF0YVt0aXRsZV1cIl0sIFtkYXRhLXJlbW9kYWwtaWQ9XCJtb2R1bGVcIl0gaW5wdXRbbmFtZT1cImRhdGFbdGl0bGVdXCJdJyk7XG5sZXQgZ2V0RmllbGRzID0gKHR5cGUsIHRhcmdldCkgPT4ge1xuICAgIHRhcmdldCA9ICQodGFyZ2V0KTtcbiAgICBsZXQgcXVlcnkgPSBgW2RhdGEtcmVtb2RhbC1pZD1cIiR7dGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXJlbW9kYWwtaWRdJykuZGF0YSgncmVtb2RhbC1pZCcpfVwiXWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdHlwZSA9PT0gJ3RpdGxlJyA/ICQodGFyZ2V0KSA6ICQoYCR7cXVlcnl9IGlucHV0W25hbWU9XCJkYXRhW3RpdGxlXVwiXWApLFxuICAgICAgICBmb2xkZXI6IHR5cGUgPT09ICdmb2xkZXInID8gJCh0YXJnZXQpIDogJChgJHtxdWVyeX0gaW5wdXRbbmFtZT1cImRhdGFbZm9sZGVyXVwiXWApXG4gICAgfTtcbn07XG5cbnRpdGxlLm9uKCdpbnB1dCBmb2N1cyBibHVyJywgKGV2ZW50KSA9PiB7XG4gICAgaWYgKGN1c3RvbSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIGxldCBlbGVtZW50cyA9IGdldEZpZWxkcygndGl0bGUnLCBldmVudC5jdXJyZW50VGFyZ2V0KTtcblxuICAgIGxldCBzbHVnID0gJC5zbHVnaWZ5KGVsZW1lbnRzLnRpdGxlLnZhbCgpLCB7Y3VzdG9tOiB7XCInXCI6ICcnfX0pO1xuICAgIGVsZW1lbnRzLmZvbGRlci52YWwoc2x1Zyk7XG59KTtcblxuZm9sZGVyLm9uKCdpbnB1dCcsIChldmVudCkgPT4ge1xuICAgIGxldCBlbGVtZW50cyA9IGdldEZpZWxkcygnZm9sZGVyJywgZXZlbnQuY3VycmVudFRhcmdldCk7XG5cbiAgICBsZXQgaW5wdXQgPSBlbGVtZW50cy5mb2xkZXIuZ2V0KDApO1xuICAgIGxldCB2YWx1ZSA9IGVsZW1lbnRzLmZvbGRlci52YWwoKTtcbiAgICBsZXQgc2VsZWN0aW9uID0ge1xuICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9uU3RhcnQsXG4gICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9uRW5kXG4gICAgfTtcblxuICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJy0nKS5yZXBsYWNlKC9bXmEtejAtOV9cXC1dL2csICcnKTtcbiAgICBlbGVtZW50cy5mb2xkZXIudmFsKHZhbHVlKTtcbiAgICBjdXN0b20gPSAhIXZhbHVlO1xuXG4gICAgLy8gcmVzdG9yZSBjdXJzb3IgcG9zaXRpb25cbiAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24uc3RhcnQsIHNlbGVjdGlvbi5lbmQpO1xuXG59KTtcblxuZm9sZGVyLm9uKCdmb2N1cyBibHVyJywgKGV2ZW50KSA9PiBnZXRGaWVsZHMoJ3RpdGxlJywgZXZlbnQuY3VycmVudFRhcmdldCkudGl0bGUudHJpZ2dlcignaW5wdXQnKSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnW25hbWU9XCJkYXRhW3JvdXRlXVwiXScsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IHJhd3JvdXRlID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS52YWwoKTtcbiAgICBjb25zdCBwYWdlVGVtcGxhdGUgPSAkKCdbbmFtZT1cImRhdGFbbmFtZV1cIl0nKTtcbiAgICBjb25zdCBVUkkgPSBgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L2FqYXguanNvbi90YXNrJHtjb25maWcucGFyYW1fc2VwfWdldENoaWxkVHlwZXNgO1xuXG4gICAgaWYgKHBhZ2VUZW1wbGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlcXVlc3QoVVJJLCB7XG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBib2R5OiB7IHJhd3JvdXRlIH1cbiAgICB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlc3BvbnNlLmNoaWxkX3R5cGU7XG4gICAgICAgIGlmICh0eXBlICE9PSAnJyAmJiB0eXBlICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgIHBhZ2VUZW1wbGF0ZS52YWwodHlwZSk7XG4gICAgICAgICAgICBwYWdlVGVtcGxhdGUuZGF0YSgnc2VsZWN0aXplJykuc2V0VmFsdWUodHlwZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/pages/page/add.js\n");
/***/ }),
/***/ "./app/pages/page/delete.js":
/*!**********************************!*\
!*** ./app/pages/page/delete.js ***!
\**********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-remodal-target=\"delete\"]', function () {\n var confirm = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"delete\"] [data-delete-action]');\n var link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('delete-url');\n confirm.data('delete-action', link);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-delete-action]', function () {\n var remodal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"delete\"]').data('remodal')];\n __webpack_require__.g.location.href = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('delete-action');\n remodal.close();\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvZGVsZXRlLmpzPzEwMTciXSwibmFtZXMiOlsiJCIsImRvY3VtZW50Iiwib24iLCJjb25maXJtIiwibGluayIsImRhdGEiLCJyZW1vZGFsIiwiZ2xvYmFsIiwibG9jYXRpb24iLCJocmVmIiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBRUFBLDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsT0FBZixFQUF3QixnQ0FBeEIsRUFBMEQsWUFBVztBQUNqRSxNQUFJQyxPQUFPLEdBQUdILDZDQUFDLENBQUMsaURBQUQsQ0FBZjtBQUNBLE1BQUlJLElBQUksR0FBR0osNkNBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUUssSUFBUixDQUFhLFlBQWIsQ0FBWDtBQUVBRixTQUFPLENBQUNFLElBQVIsQ0FBYSxlQUFiLEVBQThCRCxJQUE5QjtBQUNILENBTEQ7QUFPQUosNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLHNCQUF4QixFQUFnRCxZQUFXO0FBQ3ZELE1BQUlJLE9BQU8sR0FBR04sOERBQUEsQ0FBaUJBLDZDQUFDLENBQUMsNEJBQUQsQ0FBRCxDQUFnQ0ssSUFBaEMsQ0FBcUMsU0FBckMsQ0FBakIsQ0FBZDtBQUVBRSx1QkFBTSxDQUFDQyxRQUFQLENBQWdCQyxJQUFoQixHQUF1QlQsNkNBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUUssSUFBUixDQUFhLGVBQWIsQ0FBdkI7QUFDQUMsU0FBTyxDQUFDSSxLQUFSO0FBQ0gsQ0FMRCIsImZpbGUiOiIuL2FwcC9wYWdlcy9wYWdlL2RlbGV0ZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1yZW1vZGFsLXRhcmdldD1cImRlbGV0ZVwiXScsIGZ1bmN0aW9uKCkge1xuICAgIGxldCBjb25maXJtID0gJCgnW2RhdGEtcmVtb2RhbC1pZD1cImRlbGV0ZVwiXSBbZGF0YS1kZWxldGUtYWN0aW9uXScpO1xuICAgIGxldCBsaW5rID0gJCh0aGlzKS5kYXRhKCdkZWxldGUtdXJsJyk7XG5cbiAgICBjb25maXJtLmRhdGEoJ2RlbGV0ZS1hY3Rpb24nLCBsaW5rKTtcbn0pO1xuXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtZGVsZXRlLWFjdGlvbl0nLCBmdW5jdGlvbigpIHtcbiAgICBsZXQgcmVtb2RhbCA9ICQucmVtb2RhbC5sb29rdXBbJCgnW2RhdGEtcmVtb2RhbC1pZD1cImRlbGV0ZVwiXScpLmRhdGEoJ3JlbW9kYWwnKV07XG5cbiAgICBnbG9iYWwubG9jYXRpb24uaHJlZiA9ICQodGhpcykuZGF0YSgnZGVsZXRlLWFjdGlvbicpO1xuICAgIHJlbW9kYWwuY2xvc2UoKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/pages/page/delete.js\n");
/***/ }),
/***/ "./app/pages/page/disable-buttons.js":
/*!*******************************************!*\
!*** ./app/pages/page/disable-buttons.js ***!
\*******************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('.disable-after-click').on('click', function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).addClass('pointer-events-disabled');\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvZGlzYWJsZS1idXR0b25zLmpzPzZiODEiXSwibmFtZXMiOlsiJCIsIm9uIiwiYWRkQ2xhc3MiXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBRUFBLDZDQUFDLENBQUMsc0JBQUQsQ0FBRCxDQUEwQkMsRUFBMUIsQ0FBNkIsT0FBN0IsRUFBc0MsWUFBVztBQUM3Q0QsK0NBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUUUsUUFBUixDQUFpQix5QkFBakI7QUFDSCxDQUZEIiwiZmlsZSI6Ii4vYXBwL3BhZ2VzL3BhZ2UvZGlzYWJsZS1idXR0b25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcblxuJCgnLmRpc2FibGUtYWZ0ZXItY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAkKHRoaXMpLmFkZENsYXNzKCdwb2ludGVyLWV2ZW50cy1kaXNhYmxlZCcpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/page/disable-buttons.js\n");
/***/ }),
/***/ "./app/pages/page/index.js":
/*!*********************************!*\
!*** ./app/pages/page/index.js ***!
\*********************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _add__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./add */ \"./app/pages/page/add.js\");\n/* harmony import */ var _move__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./move */ \"./app/pages/page/move.js\");\n/* harmony import */ var _delete__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./delete */ \"./app/pages/page/delete.js\");\n/* harmony import */ var _unset__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./unset */ \"./app/pages/page/unset.js\");\n/* harmony import */ var _disable_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./disable-buttons */ \"./app/pages/page/disable-buttons.js\");\n/* harmony import */ var _media__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./media */ \"./app/pages/page/media.js\");\n/* harmony import */ var _multilang__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./multilang */ \"./app/pages/page/multilang.js\");\n\n\n\n\n\n\n\n\nvar switcher = jquery__WEBPACK_IMPORTED_MODULE_0___default()('input[type=\"radio\"][name=\"mode-switch\"]');\n\nif (switcher) {\n var link = switcher.closest(':checked').data('leave-url');\n var fakeLink = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n switcher.parent().append(fakeLink);\n switcher.siblings('label').on('mousedown touchdown', function (event) {\n event.preventDefault(); // let remodal = $.remodal.lookup[$('[data-remodal-id=\"changes\"]').data('remodal')];\n\n var confirm = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"changes\"] [data-leave-action=\"continue\"]');\n confirm.one('click', function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('beforeunload._grav');\n fakeLink.off('click._grav');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).trigger('click');\n });\n fakeLink.trigger('click._grav');\n });\n switcher.on('change', function (event) {\n var radio = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n link = radio.data('leave-url');\n setTimeout(function () {\n return fakeLink.attr('href', link).get(0).click();\n }, 5);\n });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n Media: {\n PageMedia: _media__WEBPACK_IMPORTED_MODULE_6__.default,\n PageMediaInstances: _media__WEBPACK_IMPORTED_MODULE_6__.Instance\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvaW5kZXguanM/YzAxYyJdLCJuYW1lcyI6WyJzd2l0Y2hlciIsIiQiLCJsaW5rIiwiY2xvc2VzdCIsImRhdGEiLCJmYWtlTGluayIsInBhcmVudCIsImFwcGVuZCIsInNpYmxpbmdzIiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY29uZmlybSIsIm9uZSIsImdsb2JhbCIsIm9mZiIsInRhcmdldCIsInRyaWdnZXIiLCJyYWRpbyIsInNldFRpbWVvdXQiLCJhdHRyIiwiZ2V0IiwiY2xpY2siLCJNZWRpYSIsIlBhZ2VNZWRpYSIsIlBhZ2VNZWRpYUluc3RhbmNlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxRQUFRLEdBQUdDLDZDQUFDLENBQUMseUNBQUQsQ0FBbEI7O0FBRUEsSUFBSUQsUUFBSixFQUFjO0FBQ1YsTUFBSUUsSUFBSSxHQUFHRixRQUFRLENBQUNHLE9BQVQsQ0FBaUIsVUFBakIsRUFBNkJDLElBQTdCLENBQWtDLFdBQWxDLENBQVg7QUFDQSxNQUFJQyxRQUFRLEdBQUdKLDZDQUFDLHFCQUFhQyxJQUFiLFdBQWhCO0FBRUFGLFVBQVEsQ0FBQ00sTUFBVCxHQUFrQkMsTUFBbEIsQ0FBeUJGLFFBQXpCO0FBRUFMLFVBQVEsQ0FBQ1EsUUFBVCxDQUFrQixPQUFsQixFQUEyQkMsRUFBM0IsQ0FBOEIscUJBQTlCLEVBQXFELFVBQUNDLEtBQUQsRUFBVztBQUM1REEsU0FBSyxDQUFDQyxjQUFOLEdBRDRELENBRzVEOztBQUNBLFFBQUlDLE9BQU8sR0FBR1gsNkNBQUMsQ0FBQyw0REFBRCxDQUFmO0FBRUFXLFdBQU8sQ0FBQ0MsR0FBUixDQUFZLE9BQVosRUFBcUIsWUFBTTtBQUN2QlosbURBQUMsQ0FBQ2EscUJBQUQsQ0FBRCxDQUFVTCxFQUFWLENBQWEsb0JBQWI7QUFDQUosY0FBUSxDQUFDVSxHQUFULENBQWEsYUFBYjtBQUVBZCxtREFBQyxDQUFDUyxLQUFLLENBQUNNLE1BQVAsQ0FBRCxDQUFnQkMsT0FBaEIsQ0FBd0IsT0FBeEI7QUFDSCxLQUxEO0FBT0FaLFlBQVEsQ0FBQ1ksT0FBVCxDQUFpQixhQUFqQjtBQUNILEdBZEQ7QUFnQkFqQixVQUFRLENBQUNTLEVBQVQsQ0FBWSxRQUFaLEVBQXNCLFVBQUNDLEtBQUQsRUFBVztBQUM3QixRQUFJUSxLQUFLLEdBQUdqQiw2Q0FBQyxDQUFDUyxLQUFLLENBQUNNLE1BQVAsQ0FBYjtBQUNBZCxRQUFJLEdBQUdnQixLQUFLLENBQUNkLElBQU4sQ0FBVyxXQUFYLENBQVA7QUFFQWUsY0FBVSxDQUFDO0FBQUEsYUFBTWQsUUFBUSxDQUFDZSxJQUFULENBQWMsTUFBZCxFQUFzQmxCLElBQXRCLEVBQTRCbUIsR0FBNUIsQ0FBZ0MsQ0FBaEMsRUFBbUNDLEtBQW5DLEVBQU47QUFBQSxLQUFELEVBQW1ELENBQW5ELENBQVY7QUFDSCxHQUxEO0FBTUg7O0FBRUQsaUVBQWU7QUFDWEMsT0FBSyxFQUFFO0FBQ0hDLGFBQVMsRUFBVEEsMkNBREc7QUFFSEMsc0JBQWtCLEVBQWxCQSw0Q0FBa0JBO0FBRmY7QUFESSxDQUFmIiwiZmlsZSI6Ii4vYXBwL3BhZ2VzL3BhZ2UvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0ICcuL2FkZCc7XG5pbXBvcnQgJy4vbW92ZSc7XG5pbXBvcnQgJy4vZGVsZXRlJztcbmltcG9ydCAnLi91bnNldCc7XG5pbXBvcnQgJy4vZGlzYWJsZS1idXR0b25zJztcbmltcG9ydCBQYWdlTWVkaWEsIHsgSW5zdGFuY2UgYXMgUGFnZU1lZGlhSW5zdGFuY2VzIH0gZnJvbSAnLi9tZWRpYSc7XG5pbXBvcnQgJy4vbXVsdGlsYW5nJztcblxuY29uc3Qgc3dpdGNoZXIgPSAkKCdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIm1vZGUtc3dpdGNoXCJdJyk7XG5cbmlmIChzd2l0Y2hlcikge1xuICAgIGxldCBsaW5rID0gc3dpdGNoZXIuY2xvc2VzdCgnOmNoZWNrZWQnKS5kYXRhKCdsZWF2ZS11cmwnKTtcbiAgICBsZXQgZmFrZUxpbmsgPSAkKGA8YSBocmVmPVwiJHtsaW5rfVwiIC8+YCk7XG5cbiAgICBzd2l0Y2hlci5wYXJlbnQoKS5hcHBlbmQoZmFrZUxpbmspO1xuXG4gICAgc3dpdGNoZXIuc2libGluZ3MoJ2xhYmVsJykub24oJ21vdXNlZG93biB0b3VjaGRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAvLyBsZXQgcmVtb2RhbCA9ICQucmVtb2RhbC5sb29rdXBbJCgnW2RhdGEtcmVtb2RhbC1pZD1cImNoYW5nZXNcIl0nKS5kYXRhKCdyZW1vZGFsJyldO1xuICAgICAgICBsZXQgY29uZmlybSA9ICQoJ1tkYXRhLXJlbW9kYWwtaWQ9XCJjaGFuZ2VzXCJdIFtkYXRhLWxlYXZlLWFjdGlvbj1cImNvbnRpbnVlXCJdJyk7XG5cbiAgICAgICAgY29uZmlybS5vbmUoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgJChnbG9iYWwpLm9uKCdiZWZvcmV1bmxvYWQuX2dyYXYnKTtcbiAgICAgICAgICAgIGZha2VMaW5rLm9mZignY2xpY2suX2dyYXYnKTtcblxuICAgICAgICAgICAgJChldmVudC50YXJnZXQpLnRyaWdnZXIoJ2NsaWNrJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZha2VMaW5rLnRyaWdnZXIoJ2NsaWNrLl9ncmF2Jyk7XG4gICAgfSk7XG5cbiAgICBzd2l0Y2hlci5vbignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGxldCByYWRpbyA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgbGluayA9IHJhZGlvLmRhdGEoJ2xlYXZlLXVybCcpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZmFrZUxpbmsuYXR0cignaHJlZicsIGxpbmspLmdldCgwKS5jbGljaygpLCA1KTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIE1lZGlhOiB7XG4gICAgICAgIFBhZ2VNZWRpYSxcbiAgICAgICAgUGFnZU1lZGlhSW5zdGFuY2VzXG4gICAgfVxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/pages/page/index.js\n");
/***/ }),
/***/ "./app/pages/page/media.js":
/*!*********************************!*\
!*** ./app/pages/page/media.js ***!
\*********************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ PageMedia,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _forms_fields_files__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../forms/fields/files */ \"./app/forms/fields/files.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _forms_fields_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../forms/fields/editor */ \"./app/forms/fields/editor.js\");\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.complete.esm.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n\nvar previewTemplate = \"\\n
\").trim();\n\nvar PageMedia = /*#__PURE__*/function (_FilesField) {\n _inherits(PageMedia, _FilesField);\n\n var _super = _createSuper(PageMedia);\n\n function PageMedia() {\n var _this;\n\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? '#grav-dropzone' : _ref$container,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options;\n\n _classCallCheck(this, PageMedia);\n\n options = Object.assign(options, {\n previewTemplate: previewTemplate\n });\n _this = _super.call(this, {\n container: container,\n options: options\n });\n\n if (!_this.container.length) {\n return _possibleConstructorReturn(_this);\n }\n\n _this.urls = {\n fetch: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.config.param_sep, \"listmedia\"),\n add: \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.config.param_sep, \"addmedia\"),\n \"delete\": \"\".concat(_this.container.data('media-url'), \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.config.param_sep, \"delmedia\")\n };\n _this.dropzone.options.url = _this.urls.add;\n\n if (typeof _this.options.fetchMedia === 'undefined' || _this.options.fetchMedia) {\n _this.fetchMedia();\n }\n\n if (typeof _this.options.attachDragDrop === 'undefined' || _this.options.attachDragDrop) {\n _this.attachDragDrop();\n }\n\n var field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(_this.container.data('dropzone-field'), \"\\\"]\"));\n\n if (field.length) {\n _this.sortable = new sortablejs__WEBPACK_IMPORTED_MODULE_5__.default(_this.container.get(0), {\n animation: 150,\n // forceFallback: true,\n setData: function setData(dataTransfer, target) {\n target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_2__.UriToMarkdown)(uri);\n\n _this.dropzone.disable();\n\n target.addClass('hide-backface');\n dataTransfer.effectAllowed = 'copy';\n dataTransfer.setData('text', shortcode);\n },\n onSort: function onSort() {\n var names = [];\n\n _this.container.find('[data-dz-name]').each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n var name = file.text().trim();\n names.push(name);\n });\n\n field.val(names.join(','));\n }\n });\n }\n\n return _this;\n }\n\n _createClass(PageMedia, [{\n key: \"fetchMedia\",\n value: function fetchMedia() {\n var _this2 = this;\n\n var order = this.container.closest('.form-field').find('[name=\"data[header][media_order]\"]').val();\n var body = {\n uri: this.getURI(),\n order: order\n };\n var url = this.urls.fetch;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_1__.default)(url, {\n method: 'post',\n body: body\n }, function (response) {\n var results = response.results;\n Object.keys(results).forEach(function (name) {\n var data = results[name];\n var mock = {\n name: name,\n size: data.size,\n accepted: true,\n extras: data\n };\n\n _this2.dropzone.files.push(mock);\n\n _this2.dropzone.options.addedfile.call(_this2.dropzone, mock);\n\n _this2.dropzone.options.thumbnail.call(_this2.dropzone, mock, data.url);\n });\n\n _this2.container.find('.dz-preview').prop('draggable', 'true');\n });\n }\n }, {\n key: \"onDropzoneSending\",\n value: function onDropzoneSending(file, xhr, formData) {\n /*\n // Cannot call super because Safari and IE API don't implement `delete`\n super.onDropzoneSending(file, xhr, formData);\n formData.delete('task');\n */\n formData.append('name', this.options.dotNotation || file.name);\n formData.append('admin-nonce', grav_config__WEBPACK_IMPORTED_MODULE_3__.config.admin_nonce);\n formData.append('uri', this.getURI());\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneComplete\", this).call(this, file);\n\n this.sortable.options.onSort(); // accepted\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dz-preview').prop('draggable', 'true');\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _get2;\n\n for (var _len = arguments.length, extra = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n extra[_key - 1] = arguments[_key];\n }\n\n (_get2 = _get(_getPrototypeOf(PageMedia.prototype), \"onDropzoneRemovedFile\", this)).call.apply(_get2, [this, file].concat(extra));\n\n this.sortable.options.onSort();\n }\n }, {\n key: \"attachDragDrop\",\n value: function attachDragDrop() {\n var _this3 = this;\n\n this.container.delegate('[data-dz-insert]', 'click', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).parent('.dz-preview').find('.dz-filename');\n var editor = _forms_fields_editor__WEBPACK_IMPORTED_MODULE_4__.Instance.editors.filter(function (index, editor) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(editor).attr('name') === 'data[content]';\n });\n\n if (editor.length) {\n editor = editor.data('codemirror');\n editor.focus();\n var filename = encodeURI(target.text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_2__.UriToMarkdown)(filename);\n editor.doc.replaceSelection(shortcode);\n }\n });\n this.container.delegate('[data-dz-view]', 'mouseenter', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var URL = target.closest('[data-media-path]').data('media-path');\n\n var original = _this3.dropzone.files.filter(function (file) {\n return encodeURI(file.name) === filename;\n }).shift();\n\n original = original && (original.extras && original.extras.original || encodeURI(original.name));\n target.attr('href', \"\".concat(URL, \"/\").concat(original));\n });\n this.container.delegate('[data-dz-metadata]', 'click', function (e) {\n e.preventDefault();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var file = target.parent('.dz-preview').find('.dz-filename');\n var filename = encodeURI(file.text());\n var fileObj = _this3.dropzone.files.filter(function (file) {\n return file.name === __webpack_require__.g.decodeURI(filename);\n }).shift() || {};\n\n if (!fileObj.extras) {\n fileObj.extras = {\n metadata: []\n };\n }\n\n if (Array.isArray(fileObj.extras.metadata) && !fileObj.extras.metadata.length) {\n fileObj.extras.metadata = {\n '': \"\".concat(__webpack_require__.g.decodeURI(filename), \".meta.yaml doesn't exist\")\n };\n }\n\n fileObj = fileObj.extras;\n var modal_element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').find('[data-remodal-id=\"metadata\"]');\n var modal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal_element.data('remodal')];\n modal_element.find('h1 strong').html(filename);\n\n if (fileObj.url) {\n modal_element.find('.meta-preview').html(\"
\"));\n }\n\n var container = modal_element.find('.meta-content').html('
').find('ul');\n Object.keys(fileObj.metadata).forEach(function (meta) {\n container.append(\"
\".concat(meta ? meta + ':' : '', \" \").concat(fileObj.metadata[meta], \"\"));\n });\n modal.open();\n });\n this.container.delegate('.dz-preview', 'dragstart', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n var uri = encodeURI(target.find('.dz-filename').text());\n var shortcode = (0,_forms_fields_files__WEBPACK_IMPORTED_MODULE_2__.UriToMarkdown)(uri);\n\n _this3.dropzone.disable();\n\n target.addClass('hide-backface');\n e.originalEvent.dataTransfer.effectAllowed = 'copy';\n e.originalEvent.dataTransfer.setData('text', shortcode);\n });\n this.container.delegate('.dz-preview', 'dragend', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);\n\n _this3.dropzone.enable();\n\n target.removeClass('hide-backface');\n });\n }\n }]);\n\n return PageMedia;\n}(_forms_fields_files__WEBPACK_IMPORTED_MODULE_2__.default);\n\n\nvar Instance = new PageMedia();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvbWVkaWEuanM/ZTlhMiJdLCJuYW1lcyI6WyJwcmV2aWV3VGVtcGxhdGUiLCJ0cmFuc2xhdGlvbnMiLCJ0cmltIiwiUGFnZU1lZGlhIiwiY29udGFpbmVyIiwib3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsImxlbmd0aCIsInVybHMiLCJmZXRjaCIsImRhdGEiLCJjb25maWciLCJhZGQiLCJkcm9wem9uZSIsInVybCIsImZldGNoTWVkaWEiLCJhdHRhY2hEcmFnRHJvcCIsImZpZWxkIiwiJCIsInNvcnRhYmxlIiwiU29ydGFibGUiLCJnZXQiLCJhbmltYXRpb24iLCJzZXREYXRhIiwiZGF0YVRyYW5zZmVyIiwidGFyZ2V0IiwidXJpIiwiZW5jb2RlVVJJIiwiZmluZCIsInRleHQiLCJzaG9ydGNvZGUiLCJVcmlUb01hcmtkb3duIiwiZGlzYWJsZSIsImFkZENsYXNzIiwiZWZmZWN0QWxsb3dlZCIsIm9uU29ydCIsIm5hbWVzIiwiZWFjaCIsImluZGV4IiwiZmlsZSIsIm5hbWUiLCJwdXNoIiwidmFsIiwiam9pbiIsIm9yZGVyIiwiY2xvc2VzdCIsImJvZHkiLCJnZXRVUkkiLCJyZXF1ZXN0IiwibWV0aG9kIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwia2V5cyIsImZvckVhY2giLCJtb2NrIiwic2l6ZSIsImFjY2VwdGVkIiwiZXh0cmFzIiwiZmlsZXMiLCJhZGRlZGZpbGUiLCJjYWxsIiwidGh1bWJuYWlsIiwicHJvcCIsInhociIsImZvcm1EYXRhIiwiYXBwZW5kIiwiZG90Tm90YXRpb24iLCJleHRyYSIsImRlbGVnYXRlIiwiZSIsImN1cnJlbnRUYXJnZXQiLCJwYXJlbnQiLCJlZGl0b3IiLCJFZGl0b3IiLCJhdHRyIiwiZm9jdXMiLCJmaWxlbmFtZSIsImRvYyIsInJlcGxhY2VTZWxlY3Rpb24iLCJVUkwiLCJvcmlnaW5hbCIsImZpbHRlciIsInNoaWZ0IiwicHJldmVudERlZmF1bHQiLCJmaWxlT2JqIiwiZ2xvYmFsIiwiZGVjb2RlVVJJIiwibWV0YWRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJtb2RhbF9lbGVtZW50IiwibW9kYWwiLCJodG1sIiwibWV0YSIsIm9wZW4iLCJvcmlnaW5hbEV2ZW50IiwiZW5hYmxlIiwicmVtb3ZlQ2xhc3MiLCJGaWxlc0ZpZWxkIiwiSW5zdGFuY2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLGVBQWUsR0FBRyw0bEJBV1lDLHlFQVhaLDhEQVc2RkEseUVBWDdGLDBEQVljQSwyRUFaZCw4REFZK0ZBLDJFQVovRixzREFhVUEsdUVBYlYsMERBYW1GQSx1RUFibkYsd0RBY1lBLHlFQWRaLDhEQWM2RkEseUVBZDdGLHNCQWVaQyxJQWZZLEVBQXhCOztJQWlCcUJDLFM7Ozs7O0FBQ2pCLHVCQUFpRTtBQUFBOztBQUFBLG1GQUFKLEVBQUk7QUFBQSw4QkFBbkRDLFNBQW1EO0FBQUEsUUFBbkRBLFNBQW1ELCtCQUF2QyxnQkFBdUM7QUFBQSw0QkFBckJDLE9BQXFCO0FBQUEsUUFBckJBLE9BQXFCLDZCQUFYLEVBQVc7O0FBQUE7O0FBQzdEQSxXQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixPQUFkLEVBQXVCO0FBQUVMLHFCQUFlLEVBQWZBO0FBQUYsS0FBdkIsQ0FBVjtBQUNBLDhCQUFNO0FBQUVJLGVBQVMsRUFBVEEsU0FBRjtBQUFhQyxhQUFPLEVBQVBBO0FBQWIsS0FBTjs7QUFDQSxRQUFJLENBQUMsTUFBS0QsU0FBTCxDQUFlSSxNQUFwQixFQUE0QjtBQUFFO0FBQVM7O0FBRXZDLFVBQUtDLElBQUwsR0FBWTtBQUNSQyxXQUFLLFlBQUssTUFBS04sU0FBTCxDQUFlTyxJQUFmLENBQW9CLFdBQXBCLENBQUwsa0JBQTZDQyx5REFBN0MsY0FERztBQUVSQyxTQUFHLFlBQUssTUFBS1QsU0FBTCxDQUFlTyxJQUFmLENBQW9CLFdBQXBC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QyxNQUE3QztBQUNBbUMsU0FBQyxDQUFDMEIsYUFBRixDQUFnQnZFLFlBQWhCLENBQTZCRCxPQUE3QixDQUFxQyxNQUFyQyxFQUE2Q08sU0FBN0M7QUFDSCxPQVJEO0FBVUEsV0FBSzNCLFNBQUwsQ0FBZWlFLFFBQWYsQ0FBd0IsYUFBeEIsRUFBdUMsU0FBdkMsRUFBa0QsVUFBQ0MsQ0FBRCxFQUFPO0FBQ3JELFlBQUk1QyxNQUFNLEdBQUdQLDZDQUFDLENBQUNtRCxDQUFDLENBQUNDLGFBQUgsQ0FBZDs7QUFDQSxjQUFJLENBQUN6RCxRQUFMLENBQWNtRixNQUFkOztBQUNBdkUsY0FBTSxDQUFDd0UsV0FBUCxDQUFtQixlQUFuQjtBQUNILE9BSkQ7QUFLSDs7OztFQTdLa0NDLHdEOzs7QUFnTGhDLElBQUlDLFFBQVEsR0FBRyxJQUFJakcsU0FBSixFQUFmIiwiZmlsZSI6Ii4vYXBwL3BhZ2VzL3BhZ2UvbWVkaWEuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdCc7XG5pbXBvcnQgRmlsZXNGaWVsZCwgeyBVcmlUb01hcmtkb3duIH0gZnJvbSAnLi4vLi4vZm9ybXMvZmllbGRzL2ZpbGVzJztcbmltcG9ydCB7IGNvbmZpZywgdHJhbnNsYXRpb25zIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IHsgSW5zdGFuY2UgYXMgRWRpdG9yIH0gZnJvbSAnLi4vLi4vZm9ybXMvZmllbGRzL2VkaXRvcic7XG5pbXBvcnQgU29ydGFibGUgZnJvbSAnc29ydGFibGVqcyc7XG5cbmNvbnN0IHByZXZpZXdUZW1wbGF0ZSA9IGBcbiAgICA8ZGl2IGNsYXNzPVwiZHotcHJldmlldyBkei1maWxlLXByZXZpZXdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1kZXRhaWxzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkei1maWxlbmFtZVwiPjxzcGFuIGRhdGEtZHotbmFtZT48L3NwYW4+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkei1zaXplXCIgZGF0YS1kei1zaXplPjwvZGl2PlxuICAgICAgICA8aW1nIGRhdGEtZHotdGh1bWJuYWlsIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkei1wcm9ncmVzc1wiPjxzcGFuIGNsYXNzPVwiZHotdXBsb2FkXCIgZGF0YS1kei11cGxvYWRwcm9ncmVzcz48L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHotc3VjY2Vzcy1tYXJrXCI+PHNwYW4+4pyUPC9zcGFuPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImR6LWVycm9yLW1hcmtcIj48c3Bhbj7inJg8L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHotZXJyb3ItbWVzc2FnZVwiPjxzcGFuIGRhdGEtZHotZXJyb3JtZXNzYWdlPjwvc3Bhbj48L2Rpdj5cbiAgICAgIDxhIGNsYXNzPVwiZHotcmVtb3ZlXCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfVwiIGhyZWY9XCJqYXZhc2NyaXB0OnVuZGVmaW5lZDtcIiBkYXRhLWR6LXJlbW92ZT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfTwvYT5cbiAgICAgIDxhIGNsYXNzPVwiZHotbWV0YWRhdGFcIiB0aXRsZT1cIiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5NRVRBREFUQX1cIiBocmVmPVwiI1wiIHRhcmdldD1cIl9ibGFua1wiIGRhdGEtZHotbWV0YWRhdGE+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk1FVEFEQVRBfTwvYT5cbiAgICAgIDxhIGNsYXNzPVwiZHotdmlld1wiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlZJRVd9XCIgaHJlZj1cIiNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBkYXRhLWR6LXZpZXc+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlZJRVd9PC9hPlxuICAgICAgPGEgY2xhc3M9XCJkei1pbnNlcnRcIiB0aXRsZT1cIiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5JTlNFUlR9XCIgaHJlZj1cImphdmFzY3JpcHQ6dW5kZWZpbmVkO1wiIGRhdGEtZHotaW5zZXJ0PiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5JTlNFUlR9PC9hPlxuICAgIDwvZGl2PmAudHJpbSgpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYWdlTWVkaWEgZXh0ZW5kcyBGaWxlc0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3Rvcih7IGNvbnRhaW5lciA9ICcjZ3Jhdi1kcm9wem9uZScsIG9wdGlvbnMgPSB7fSB9ID0ge30pIHtcbiAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBwcmV2aWV3VGVtcGxhdGUgfSk7XG4gICAgICAgIHN1cGVyKHsgY29udGFpbmVyLCBvcHRpb25zIH0pO1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLnVybHMgPSB7XG4gICAgICAgICAgICBmZXRjaDogYCR7dGhpcy5jb250YWluZXIuZGF0YSgnbWVkaWEtdXJsJyl9L3Rhc2ske2NvbmZpZy5wYXJhbV9zZXB9bGlzdG1lZGlhYCxcbiAgICAgICAgICAgIGFkZDogYCR7dGhpcy5jb250YWluZXIuZGF0YSgnbWVkaWEtdXJsJyl9L3Rhc2ske2NvbmZpZy5wYXJhbV9zZXB9YWRkbWVkaWFgLFxuICAgICAgICAgICAgZGVsZXRlOiBgJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYS11cmwnKX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1kZWxtZWRpYWBcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRyb3B6b25lLm9wdGlvbnMudXJsID0gdGhpcy51cmxzLmFkZDtcblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5mZXRjaE1lZGlhID09PSAndW5kZWZpbmVkJyB8fCB0aGlzLm9wdGlvbnMuZmV0Y2hNZWRpYSkge1xuICAgICAgICAgICAgdGhpcy5mZXRjaE1lZGlhKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5hdHRhY2hEcmFnRHJvcCA9PT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy5vcHRpb25zLmF0dGFjaERyYWdEcm9wKSB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaERyYWdEcm9wKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWVsZCA9ICQoYFtuYW1lPVwiJHt0aGlzLmNvbnRhaW5lci5kYXRhKCdkcm9wem9uZS1maWVsZCcpfVwiXWApO1xuXG4gICAgICAgIGlmIChmaWVsZC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydGFibGUgPSBuZXcgU29ydGFibGUodGhpcy5jb250YWluZXIuZ2V0KDApLCB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAxNTAsXG4gICAgICAgICAgICAgICAgLy8gZm9yY2VGYWxsYmFjazogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzZXREYXRhOiAoZGF0YVRyYW5zZmVyLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gJCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdXJpID0gZW5jb2RlVVJJKHRhcmdldC5maW5kKCcuZHotZmlsZW5hbWUnKS50ZXh0KCkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2hvcnRjb2RlID0gVXJpVG9NYXJrZG93bih1cmkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLmRpc2FibGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFkZENsYXNzKCdoaWRlLWJhY2tmYWNlJyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ2NvcHknO1xuICAgICAgICAgICAgICAgICAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dCcsIHNob3J0Y29kZSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvblNvcnQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmZpbmQoJ1tkYXRhLWR6LW5hbWVdJykuZWFjaCgoaW5kZXgsIGZpbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSAkKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUudGV4dCgpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbChuYW1lcy5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmV0Y2hNZWRpYSgpIHtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLmNvbnRhaW5lci5jbG9zZXN0KCcuZm9ybS1maWVsZCcpLmZpbmQoJ1tuYW1lPVwiZGF0YVtoZWFkZXJdW21lZGlhX29yZGVyXVwiXScpLnZhbCgpO1xuICAgICAgICBjb25zdCBib2R5ID0geyB1cmk6IHRoaXMuZ2V0VVJJKCksIG9yZGVyIH07XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLnVybHMuZmV0Y2g7XG5cbiAgICAgICAgcmVxdWVzdCh1cmwsIHsgbWV0aG9kOiAncG9zdCcsIGJvZHkgfSwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IHJlc3BvbnNlLnJlc3VsdHM7XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3VsdHMpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHJlc3VsdHNbbmFtZV07XG4gICAgICAgICAgICAgICAgbGV0IG1vY2sgPSB7IG5hbWUsIHNpemU6IGRhdGEuc2l6ZSwgYWNjZXB0ZWQ6IHRydWUsIGV4dHJhczogZGF0YSB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5maWxlcy5wdXNoKG1vY2spO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy5hZGRlZGZpbGUuY2FsbCh0aGlzLmRyb3B6b25lLCBtb2NrKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLm9wdGlvbnMudGh1bWJuYWlsLmNhbGwodGhpcy5kcm9wem9uZSwgbW9jaywgZGF0YS51cmwpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmZpbmQoJy5kei1wcmV2aWV3JykucHJvcCgnZHJhZ2dhYmxlJywgJ3RydWUnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVNlbmRpbmcoZmlsZSwgeGhyLCBmb3JtRGF0YSkge1xuICAgICAgICAvKlxuICAgICAgICAvLyBDYW5ub3QgY2FsbCBzdXBlciBiZWNhdXNlIFNhZmFyaSBhbmQgSUUgQVBJIGRvbid0IGltcGxlbWVudCBgZGVsZXRlYFxuICAgICAgICBzdXBlci5vbkRyb3B6b25lU2VuZGluZyhmaWxlLCB4aHIsIGZvcm1EYXRhKTtcbiAgICAgICAgZm9ybURhdGEuZGVsZXRlKCd0YXNrJyk7XG4gICAgICAgICovXG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgdGhpcy5vcHRpb25zLmRvdE5vdGF0aW9uIHx8IGZpbGUubmFtZSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnYWRtaW4tbm9uY2UnLCBjb25maWcuYWRtaW5fbm9uY2UpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VyaScsIHRoaXMuZ2V0VVJJKCkpO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVDb21wbGV0ZShmaWxlKSB7XG4gICAgICAgIHN1cGVyLm9uRHJvcHpvbmVDb21wbGV0ZShmaWxlKTtcbiAgICAgICAgdGhpcy5zb3J0YWJsZS5vcHRpb25zLm9uU29ydCgpO1xuXG4gICAgICAgIC8vIGFjY2VwdGVkXG4gICAgICAgICQoJy5kei1wcmV2aWV3JykucHJvcCgnZHJhZ2dhYmxlJywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lUmVtb3ZlZEZpbGUoZmlsZSwgLi4uZXh0cmEpIHtcbiAgICAgICAgc3VwZXIub25Ecm9wem9uZVJlbW92ZWRGaWxlKGZpbGUsIC4uLmV4dHJhKTtcbiAgICAgICAgdGhpcy5zb3J0YWJsZS5vcHRpb25zLm9uU29ydCgpO1xuICAgIH1cblxuICAgIGF0dGFjaERyYWdEcm9wKCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnW2RhdGEtZHotaW5zZXJ0XScsICdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpLnBhcmVudCgnLmR6LXByZXZpZXcnKS5maW5kKCcuZHotZmlsZW5hbWUnKTtcbiAgICAgICAgICAgIGxldCBlZGl0b3IgPSBFZGl0b3IuZWRpdG9ycy5maWx0ZXIoKGluZGV4LCBlZGl0b3IpID0+ICQoZWRpdG9yKS5hdHRyKCduYW1lJykgPT09ICdkYXRhW2NvbnRlbnRdJyk7XG5cbiAgICAgICAgICAgIGlmIChlZGl0b3IubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZWRpdG9yID0gZWRpdG9yLmRhdGEoJ2NvZGVtaXJyb3InKTtcbiAgICAgICAgICAgICAgICBlZGl0b3IuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGVuY29kZVVSSSh0YXJnZXQudGV4dCgpKTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvcnRjb2RlID0gVXJpVG9NYXJrZG93bihmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgZWRpdG9yLmRvYy5yZXBsYWNlU2VsZWN0aW9uKHNob3J0Y29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLmRlbGVnYXRlKCdbZGF0YS1kei12aWV3XScsICdtb3VzZWVudGVyJywgKGUpID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBsZXQgZmlsZSA9IHRhcmdldC5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBlbmNvZGVVUkkoZmlsZS50ZXh0KCkpO1xuICAgICAgICAgICAgbGV0IFVSTCA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1tZWRpYS1wYXRoXScpLmRhdGEoJ21lZGlhLXBhdGgnKTtcbiAgICAgICAgICAgIGxldCBvcmlnaW5hbCA9IHRoaXMuZHJvcHpvbmUuZmlsZXMuZmlsdGVyKChmaWxlKSA9PiBlbmNvZGVVUkkoZmlsZS5uYW1lKSA9PT0gZmlsZW5hbWUpLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgIG9yaWdpbmFsID0gb3JpZ2luYWwgJiYgKChvcmlnaW5hbC5leHRyYXMgJiYgb3JpZ2luYWwuZXh0cmFzLm9yaWdpbmFsKSB8fCBlbmNvZGVVUkkob3JpZ2luYWwubmFtZSkpO1xuXG4gICAgICAgICAgICB0YXJnZXQuYXR0cignaHJlZicsIGAke1VSTH0vJHtvcmlnaW5hbH1gKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250YWluZXIuZGVsZWdhdGUoJ1tkYXRhLWR6LW1ldGFkYXRhXScsICdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LnBhcmVudCgnLmR6LXByZXZpZXcnKS5maW5kKCcuZHotZmlsZW5hbWUnKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gZW5jb2RlVVJJKGZpbGUudGV4dCgpKTtcblxuICAgICAgICAgICAgbGV0IGZpbGVPYmogPSB0aGlzLmRyb3B6b25lLmZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5uYW1lID09PSBnbG9iYWwuZGVjb2RlVVJJKGZpbGVuYW1lKSkuc2hpZnQoKSB8fCB7fTtcblxuICAgICAgICAgICAgaWYgKCFmaWxlT2JqLmV4dHJhcykge1xuICAgICAgICAgICAgICAgIGZpbGVPYmouZXh0cmFzID0geyBtZXRhZGF0YTogW10gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsZU9iai5leHRyYXMubWV0YWRhdGEpICYmICFmaWxlT2JqLmV4dHJhcy5tZXRhZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmaWxlT2JqLmV4dHJhcy5tZXRhZGF0YSA9IHsgJyc6IGAke2dsb2JhbC5kZWNvZGVVUkkoZmlsZW5hbWUpfS5tZXRhLnlhbWwgZG9lc24ndCBleGlzdGAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmlsZU9iaiA9IGZpbGVPYmouZXh0cmFzO1xuXG4gICAgICAgICAgICBjb25zdCBtb2RhbF9lbGVtZW50ID0gJCgnYm9keScpLmZpbmQoJ1tkYXRhLXJlbW9kYWwtaWQ9XCJtZXRhZGF0YVwiXScpO1xuICAgICAgICAgICAgY29uc3QgbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwW21vZGFsX2VsZW1lbnQuZGF0YSgncmVtb2RhbCcpXTtcblxuICAgICAgICAgICAgbW9kYWxfZWxlbWVudC5maW5kKCdoMSBzdHJvbmcnKS5odG1sKGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGlmIChmaWxlT2JqLnVybCkge1xuICAgICAgICAgICAgICAgIG1vZGFsX2VsZW1lbnQuZmluZCgnLm1ldGEtcHJldmlldycpLmh0bWwoYDxpbWcgc3JjPVwiJHtmaWxlT2JqLnVybH1cIiAvPmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBtb2RhbF9lbGVtZW50LmZpbmQoJy5tZXRhLWNvbnRlbnQnKS5odG1sKCc8dWwgLz4nKS5maW5kKCd1bCcpO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmlsZU9iai5tZXRhZGF0YSkuZm9yRWFjaCgobWV0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoYDxsaT48c3Ryb25nPiR7bWV0YSA/IG1ldGEgKyAnOicgOiAnJ308L3N0cm9uZz4gJHtmaWxlT2JqLm1ldGFkYXRhW21ldGFdfTwvbGk+YCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbW9kYWwub3BlbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnLmR6LXByZXZpZXcnLCAnZHJhZ3N0YXJ0JywgKGUpID0+IHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQgPSAkKGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBsZXQgdXJpID0gZW5jb2RlVVJJKHRhcmdldC5maW5kKCcuZHotZmlsZW5hbWUnKS50ZXh0KCkpO1xuICAgICAgICAgICAgbGV0IHNob3J0Y29kZSA9IFVyaVRvTWFya2Rvd24odXJpKTtcbiAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZGlzYWJsZSgpO1xuICAgICAgICAgICAgdGFyZ2V0LmFkZENsYXNzKCdoaWRlLWJhY2tmYWNlJyk7XG4gICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gICAgICAgICAgICBlLm9yaWdpbmFsRXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQnLCBzaG9ydGNvZGUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5kZWxlZ2F0ZSgnLmR6LXByZXZpZXcnLCAnZHJhZ2VuZCcsIChlKSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5lbmFibGUoKTtcbiAgICAgICAgICAgIHRhcmdldC5yZW1vdmVDbGFzcygnaGlkZS1iYWNrZmFjZScpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBsZXQgSW5zdGFuY2UgPSBuZXcgUGFnZU1lZGlhKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/page/media.js\n");
/***/ }),
/***/ "./app/pages/page/move.js":
/*!********************************!*\
!*** ./app/pages/page/move.js ***!
\********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-page-move] button[name=\"task\"][value=\"save\"]', function (event) {\n /* let route = $('form#blueprints:first select[name=\"data[route]\"]');\n let moveTo = $('[data-page-move] select').val();\n if (route.length && route.val() !== moveTo) {\n let selectize = route.data('selectize');\n route.val(moveTo);\n if (selectize) selectize.setValue(moveTo);\n }*/\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).closest('[data-remodal-id]');\n var parents = modal.data('parents') || {};\n var finder = parents.finder;\n\n if (!parents || !finder) {\n return true;\n }\n\n var field = parents.field;\n var parentLabel = parents.parentLabel;\n var parentName = parents.parentName;\n var selection = finder.findLastActive().item[0];\n var value = selection._item[finder.config.valueKey];\n var name = selection._item[finder.config.labelKey];\n field.val(value);\n parentLabel.text(value);\n parentName.text(name);\n finder.config.defaultPath = value;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').css({\n backgroundColor: 'rgba(255, 255, 255, 0.1)',\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n zIndex: 15000\n }).appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()('body'));\n});\n/*\n$(document).on('click', '[data-remodal-id=\"parents\"] [data-parents-select]', (event) => {\n const modal = $(event.currentTarget).closest('[data-remodal-id]');\n const parents = modal.data('parents');\n const finder = parents.finder;\n const field = parents.field;\n const parentLabel = parents.parentLabel;\n const parentName = parents.parentName;\n const selection = finder.findLastActive().item[0];\n const value = selection._item[finder.config.valueKey];\n const name = selection._item[finder.config.labelKey];\n\n field.val(value);\n parentLabel.text(value);\n parentName.text(name);\n finder.config.defaultPath = value;\n\n const remodal = $.remodal.lookup[$(`[data-remodal-id=\"${modal.data('remodalId')}\"]`).data('remodal')];\n remodal.close();\n});\n*///# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvbW92ZS5qcz8yMDVmIl0sIm5hbWVzIjpbIiQiLCJkb2N1bWVudCIsIm9uIiwiZXZlbnQiLCJtb2RhbCIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwicGFyZW50cyIsImRhdGEiLCJmaW5kZXIiLCJmaWVsZCIsInBhcmVudExhYmVsIiwicGFyZW50TmFtZSIsInNlbGVjdGlvbiIsImZpbmRMYXN0QWN0aXZlIiwiaXRlbSIsInZhbHVlIiwiX2l0ZW0iLCJjb25maWciLCJ2YWx1ZUtleSIsIm5hbWUiLCJsYWJlbEtleSIsInZhbCIsInRleHQiLCJkZWZhdWx0UGF0aCIsImNzcyIsImJhY2tncm91bmRDb2xvciIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwiekluZGV4IiwiYXBwZW5kVG8iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBRUFBLDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsT0FBZixFQUF3QixvREFBeEIsRUFBOEUsVUFBQ0MsS0FBRCxFQUFXO0FBQ3JGO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUksTUFBTUMsS0FBSyxHQUFHSiw2Q0FBQyxDQUFDRyxLQUFLLENBQUNFLGFBQVAsQ0FBRCxDQUF1QkMsT0FBdkIsQ0FBK0IsbUJBQS9CLENBQWQ7QUFDQSxNQUFNQyxPQUFPLEdBQUdILEtBQUssQ0FBQ0ksSUFBTixDQUFXLFNBQVgsS0FBeUIsRUFBekM7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0UsTUFBdkI7O0FBRUEsTUFBSSxDQUFDRixPQUFELElBQVksQ0FBQ0UsTUFBakIsRUFBeUI7QUFBRSxXQUFPLElBQVA7QUFBYzs7QUFFekMsTUFBTUMsS0FBSyxHQUFHSCxPQUFPLENBQUNHLEtBQXRCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHSixPQUFPLENBQUNJLFdBQTVCO0FBQ0EsTUFBTUMsVUFBVSxHQUFHTCxPQUFPLENBQUNLLFVBQTNCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHSixNQUFNLENBQUNLLGNBQVAsR0FBd0JDLElBQXhCLENBQTZCLENBQTdCLENBQWxCO0FBQ0EsTUFBTUMsS0FBSyxHQUFHSCxTQUFTLENBQUNJLEtBQVYsQ0FBZ0JSLE1BQU0sQ0FBQ1MsTUFBUCxDQUFjQyxRQUE5QixDQUFkO0FBQ0EsTUFBTUMsSUFBSSxHQUFHUCxTQUFTLENBQUNJLEtBQVYsQ0FBZ0JSLE1BQU0sQ0FBQ1MsTUFBUCxDQUFjRyxRQUE5QixDQUFiO0FBRUFYLE9BQUssQ0FBQ1ksR0FBTixDQUFVTixLQUFWO0FBQ0FMLGFBQVcsQ0FBQ1ksSUFBWixDQUFpQlAsS0FBakI7QUFDQUosWUFBVSxDQUFDVyxJQUFYLENBQWdCSCxJQUFoQjtBQUNBWCxRQUFNLENBQUNTLE1BQVAsQ0FBY00sV0FBZCxHQUE0QlIsS0FBNUI7QUFFQWhCLCtDQUFDLENBQUMsU0FBRCxDQUFELENBQWF5QixHQUFiLENBQWlCO0FBQ2JDLG1CQUFlLEVBQUUsMEJBREo7QUFFYkMsWUFBUSxFQUFFLE9BRkc7QUFHYkMsT0FBRyxFQUFFLENBSFE7QUFJYkMsUUFBSSxFQUFFLENBSk87QUFLYkMsU0FBSyxFQUFFLE9BTE07QUFNYkMsVUFBTSxFQUFFLE9BTks7QUFPYkMsVUFBTSxFQUFFO0FBUEssR0FBakIsRUFRR0MsUUFSSCxDQVFZakMsNkNBQUMsQ0FBQyxNQUFELENBUmI7QUFTSCxDQXRDRDtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9hcHAvcGFnZXMvcGFnZS9tb3ZlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXBhZ2UtbW92ZV0gYnV0dG9uW25hbWU9XCJ0YXNrXCJdW3ZhbHVlPVwic2F2ZVwiXScsIChldmVudCkgPT4ge1xuICAgIC8qIGxldCByb3V0ZSA9ICQoJ2Zvcm0jYmx1ZXByaW50czpmaXJzdCBzZWxlY3RbbmFtZT1cImRhdGFbcm91dGVdXCJdJyk7XG4gICAgbGV0IG1vdmVUbyA9ICQoJ1tkYXRhLXBhZ2UtbW92ZV0gc2VsZWN0JykudmFsKCk7XG5cbiAgICBpZiAocm91dGUubGVuZ3RoICYmIHJvdXRlLnZhbCgpICE9PSBtb3ZlVG8pIHtcbiAgICAgICAgbGV0IHNlbGVjdGl6ZSA9IHJvdXRlLmRhdGEoJ3NlbGVjdGl6ZScpO1xuICAgICAgICByb3V0ZS52YWwobW92ZVRvKTtcblxuICAgICAgICBpZiAoc2VsZWN0aXplKSBzZWxlY3RpemUuc2V0VmFsdWUobW92ZVRvKTtcbiAgICB9Ki9cblxuICAgIGNvbnN0IG1vZGFsID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5jbG9zZXN0KCdbZGF0YS1yZW1vZGFsLWlkXScpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBtb2RhbC5kYXRhKCdwYXJlbnRzJykgfHwge307XG4gICAgY29uc3QgZmluZGVyID0gcGFyZW50cy5maW5kZXI7XG5cbiAgICBpZiAoIXBhcmVudHMgfHwgIWZpbmRlcikgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gICAgY29uc3QgZmllbGQgPSBwYXJlbnRzLmZpZWxkO1xuICAgIGNvbnN0IHBhcmVudExhYmVsID0gcGFyZW50cy5wYXJlbnRMYWJlbDtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gcGFyZW50cy5wYXJlbnROYW1lO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGZpbmRlci5maW5kTGFzdEFjdGl2ZSgpLml0ZW1bMF07XG4gICAgY29uc3QgdmFsdWUgPSBzZWxlY3Rpb24uX2l0ZW1bZmluZGVyLmNvbmZpZy52YWx1ZUtleV07XG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdGlvbi5faXRlbVtmaW5kZXIuY29uZmlnLmxhYmVsS2V5XTtcblxuICAgIGZpZWxkLnZhbCh2YWx1ZSk7XG4gICAgcGFyZW50TGFiZWwudGV4dCh2YWx1ZSk7XG4gICAgcGFyZW50TmFtZS50ZXh0KG5hbWUpO1xuICAgIGZpbmRlci5jb25maWcuZGVmYXVsdFBhdGggPSB2YWx1ZTtcblxuICAgICQoJzxkaXYgLz4nKS5jc3Moe1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSknLFxuICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICB3aWR0aDogJzEwMHZ3JyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgICAgICB6SW5kZXg6IDE1MDAwXG4gICAgfSkuYXBwZW5kVG8oJCgnYm9keScpKTtcbn0pO1xuXG4vKlxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXJlbW9kYWwtaWQ9XCJwYXJlbnRzXCJdIFtkYXRhLXBhcmVudHMtc2VsZWN0XScsIChldmVudCkgPT4ge1xuICAgIGNvbnN0IG1vZGFsID0gJChldmVudC5jdXJyZW50VGFyZ2V0KS5jbG9zZXN0KCdbZGF0YS1yZW1vZGFsLWlkXScpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBtb2RhbC5kYXRhKCdwYXJlbnRzJyk7XG4gICAgY29uc3QgZmluZGVyID0gcGFyZW50cy5maW5kZXI7XG4gICAgY29uc3QgZmllbGQgPSBwYXJlbnRzLmZpZWxkO1xuICAgIGNvbnN0IHBhcmVudExhYmVsID0gcGFyZW50cy5wYXJlbnRMYWJlbDtcbiAgICBjb25zdCBwYXJlbnROYW1lID0gcGFyZW50cy5wYXJlbnROYW1lO1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGZpbmRlci5maW5kTGFzdEFjdGl2ZSgpLml0ZW1bMF07XG4gICAgY29uc3QgdmFsdWUgPSBzZWxlY3Rpb24uX2l0ZW1bZmluZGVyLmNvbmZpZy52YWx1ZUtleV07XG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdGlvbi5faXRlbVtmaW5kZXIuY29uZmlnLmxhYmVsS2V5XTtcblxuICAgIGZpZWxkLnZhbCh2YWx1ZSk7XG4gICAgcGFyZW50TGFiZWwudGV4dCh2YWx1ZSk7XG4gICAgcGFyZW50TmFtZS50ZXh0KG5hbWUpO1xuICAgIGZpbmRlci5jb25maWcuZGVmYXVsdFBhdGggPSB2YWx1ZTtcblxuICAgIGNvbnN0IHJlbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwWyQoYFtkYXRhLXJlbW9kYWwtaWQ9XCIke21vZGFsLmRhdGEoJ3JlbW9kYWxJZCcpfVwiXWApLmRhdGEoJ3JlbW9kYWwnKV07XG4gICAgcmVtb2RhbC5jbG9zZSgpO1xufSk7XG4qL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/pages/page/move.js\n");
/***/ }),
/***/ "./app/pages/page/multilang.js":
/*!*************************************!*\
!*** ./app/pages/page/multilang.js ***!
\*************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('[name=\"task\"][value=\"saveas\"], [name=\"task\"][value=\"switchlanguage\"]').on('mousedown touchstart', function (event) {\n var fields = ['lang', 'redirect'];\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var form = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#\".concat(element.attr('form')));\n\n if (!form.length) {\n return;\n }\n\n fields.forEach(function (field) {\n var value = element.attr(field);\n\n if (!value) {\n return;\n }\n\n var input = form.find(\"[name=\\\"data[\".concat(field, \"]\\\"]\"));\n\n if (!input.length) {\n input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n form.append(input);\n }\n\n input.val(value);\n });\n return true;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvbXVsdGlsYW5nLmpzPzBjMDEiXSwibmFtZXMiOlsiJCIsIm9uIiwiZXZlbnQiLCJmaWVsZHMiLCJlbGVtZW50IiwiY3VycmVudFRhcmdldCIsImZvcm0iLCJhdHRyIiwibGVuZ3RoIiwiZm9yRWFjaCIsImZpZWxkIiwidmFsdWUiLCJpbnB1dCIsImZpbmQiLCJhcHBlbmQiLCJ2YWwiXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBRUFBLDZDQUFDLENBQUMsc0VBQUQsQ0FBRCxDQUEwRUMsRUFBMUUsQ0FBNkUsc0JBQTdFLEVBQXFHLFVBQUNDLEtBQUQsRUFBVztBQUM1RyxNQUFJQyxNQUFNLEdBQUcsQ0FBQyxNQUFELEVBQVMsVUFBVCxDQUFiO0FBQ0EsTUFBSUMsT0FBTyxHQUFHSiw2Q0FBQyxDQUFDRSxLQUFLLENBQUNHLGFBQVAsQ0FBZjtBQUNBLE1BQUlDLElBQUksR0FBR04sNkNBQUMsWUFBS0ksT0FBTyxDQUFDRyxJQUFSLENBQWEsTUFBYixDQUFMLEVBQVo7O0FBRUEsTUFBSSxDQUFDRCxJQUFJLENBQUNFLE1BQVYsRUFBa0I7QUFBRTtBQUFTOztBQUM3QkwsUUFBTSxDQUFDTSxPQUFQLENBQWUsVUFBQ0MsS0FBRCxFQUFXO0FBQ3RCLFFBQUlDLEtBQUssR0FBR1AsT0FBTyxDQUFDRyxJQUFSLENBQWFHLEtBQWIsQ0FBWjs7QUFDQSxRQUFJLENBQUNDLEtBQUwsRUFBWTtBQUFFO0FBQVM7O0FBQ3ZCLFFBQUlDLEtBQUssR0FBR04sSUFBSSxDQUFDTyxJQUFMLHdCQUF5QkgsS0FBekIsVUFBWjs7QUFDQSxRQUFJLENBQUNFLEtBQUssQ0FBQ0osTUFBWCxFQUFtQjtBQUNmSSxXQUFLLEdBQUdaLDZDQUFDLDhDQUFvQ1UsS0FBcEMsdUJBQVQ7QUFDQUosVUFBSSxDQUFDUSxNQUFMLENBQVlGLEtBQVo7QUFDSDs7QUFFREEsU0FBSyxDQUFDRyxHQUFOLENBQVVKLEtBQVY7QUFDSCxHQVZEO0FBWUEsU0FBTyxJQUFQO0FBQ0gsQ0FuQkQiLCJmaWxlIjoiLi9hcHAvcGFnZXMvcGFnZS9tdWx0aWxhbmcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuXG4kKCdbbmFtZT1cInRhc2tcIl1bdmFsdWU9XCJzYXZlYXNcIl0sIFtuYW1lPVwidGFza1wiXVt2YWx1ZT1cInN3aXRjaGxhbmd1YWdlXCJdJykub24oJ21vdXNlZG93biB0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgbGV0IGZpZWxkcyA9IFsnbGFuZycsICdyZWRpcmVjdCddO1xuICAgIGxldCBlbGVtZW50ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBsZXQgZm9ybSA9ICQoYCMke2VsZW1lbnQuYXR0cignZm9ybScpfWApO1xuXG4gICAgaWYgKCFmb3JtLmxlbmd0aCkgeyByZXR1cm47IH1cbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gZWxlbWVudC5hdHRyKGZpZWxkKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkgeyByZXR1cm47IH1cbiAgICAgICAgbGV0IGlucHV0ID0gZm9ybS5maW5kKGBbbmFtZT1cImRhdGFbJHtmaWVsZH1dXCJdYCk7XG4gICAgICAgIGlmICghaW5wdXQubGVuZ3RoKSB7XG4gICAgICAgICAgICBpbnB1dCA9ICQoYDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImRhdGFbJHtmaWVsZH1dXCIgdmFsdWU9XCJcIiAvPmApO1xuICAgICAgICAgICAgZm9ybS5hcHBlbmQoaW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQudmFsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/page/multilang.js\n");
/***/ }),
/***/ "./app/pages/page/unset.js":
/*!*********************************!*\
!*** ./app/pages/page/unset.js ***!
\*********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '.dz-unset', function () {\n var file_upload = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).closest('.files-upload');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).closest('.dz-image-preview').remove();\n var unset_image = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).closest('.dz-image-preview').find('[data-dz-name]').text().trim();\n var images = JSON.parse(file_upload.find('input[data-grav-field=\"hidden\"]').val()) || {};\n var image_array = {};\n jquery__WEBPACK_IMPORTED_MODULE_0___default().each(images, function (ind, obj) {\n if (!ind.endsWith(unset_image)) {\n image_array[ind] = obj;\n }\n });\n file_upload.find('input[data-grav-field=\"hidden\"]').val(JSON.stringify(image_array));\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3BhZ2UvdW5zZXQuanM/OWZiYyJdLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJvbiIsImZpbGVfdXBsb2FkIiwiY2xvc2VzdCIsInJlbW92ZSIsInVuc2V0X2ltYWdlIiwiZmluZCIsInRleHQiLCJ0cmltIiwiaW1hZ2VzIiwiSlNPTiIsInBhcnNlIiwidmFsIiwiaW1hZ2VfYXJyYXkiLCJpbmQiLCJvYmoiLCJlbmRzV2l0aCIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFFQUEsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLFdBQXhCLEVBQXFDLFlBQVc7QUFFNUMsTUFBTUMsV0FBVyxHQUFHSCw2Q0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRSSxPQUFSLENBQWdCLGVBQWhCLENBQXBCO0FBQ0FKLCtDQUFDLENBQUMsSUFBRCxDQUFELENBQVFJLE9BQVIsQ0FBZ0IsbUJBQWhCLEVBQXFDQyxNQUFyQztBQUNBLE1BQU1DLFdBQVcsR0FBR04sNkNBQUMsQ0FBQyxJQUFELENBQUQsQ0FBUUksT0FBUixDQUFnQixtQkFBaEIsRUFBcUNHLElBQXJDLENBQTBDLGdCQUExQyxFQUE0REMsSUFBNUQsR0FBbUVDLElBQW5FLEVBQXBCO0FBQ0EsTUFBTUMsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEtBQUwsQ0FBV1QsV0FBVyxDQUFDSSxJQUFaLENBQWlCLGlDQUFqQixFQUFvRE0sR0FBcEQsRUFBWCxLQUF5RSxFQUF4RjtBQUNBLE1BQUlDLFdBQVcsR0FBRyxFQUFsQjtBQUVBZCxvREFBQSxDQUFPVSxNQUFQLEVBQWUsVUFBU0ssR0FBVCxFQUFjQyxHQUFkLEVBQW1CO0FBQzlCLFFBQUksQ0FBQ0QsR0FBRyxDQUFDRSxRQUFKLENBQWFYLFdBQWIsQ0FBTCxFQUFnQztBQUM1QlEsaUJBQVcsQ0FBQ0MsR0FBRCxDQUFYLEdBQW1CQyxHQUFuQjtBQUNIO0FBQ0osR0FKRDtBQU1BYixhQUFXLENBQUNJLElBQVosQ0FBaUIsaUNBQWpCLEVBQW9ETSxHQUFwRCxDQUF3REYsSUFBSSxDQUFDTyxTQUFMLENBQWVKLFdBQWYsQ0FBeEQ7QUFDSCxDQWZEIiwiZmlsZSI6Ii4vYXBwL3BhZ2VzL3BhZ2UvdW5zZXQuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmR6LXVuc2V0JywgZnVuY3Rpb24oKSB7XG5cbiAgICBjb25zdCBmaWxlX3VwbG9hZCA9ICQodGhpcykuY2xvc2VzdCgnLmZpbGVzLXVwbG9hZCcpO1xuICAgICQodGhpcykuY2xvc2VzdCgnLmR6LWltYWdlLXByZXZpZXcnKS5yZW1vdmUoKTtcbiAgICBjb25zdCB1bnNldF9pbWFnZSA9ICQodGhpcykuY2xvc2VzdCgnLmR6LWltYWdlLXByZXZpZXcnKS5maW5kKCdbZGF0YS1kei1uYW1lXScpLnRleHQoKS50cmltKCk7XG4gICAgY29uc3QgaW1hZ2VzID0gSlNPTi5wYXJzZShmaWxlX3VwbG9hZC5maW5kKCdpbnB1dFtkYXRhLWdyYXYtZmllbGQ9XCJoaWRkZW5cIl0nKS52YWwoKSkgfHwge307XG4gICAgbGV0IGltYWdlX2FycmF5ID0ge307XG5cbiAgICAkLmVhY2goaW1hZ2VzLCBmdW5jdGlvbihpbmQsIG9iaikge1xuICAgICAgICBpZiAoIWluZC5lbmRzV2l0aCh1bnNldF9pbWFnZSkpIHtcbiAgICAgICAgICAgIGltYWdlX2FycmF5W2luZF0gPSBvYmo7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZpbGVfdXBsb2FkLmZpbmQoJ2lucHV0W2RhdGEtZ3Jhdi1maWVsZD1cImhpZGRlblwiXScpLnZhbChKU09OLnN0cmluZ2lmeShpbWFnZV9hcnJheSkpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/pages/page/unset.js\n");
/***/ }),
/***/ "./app/pages/tree.js":
/*!***************************!*\
!*** ./app/pages/tree.js ***!
\***************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ PagesTree,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_storage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/storage */ \"./app/utils/storage.js\");\n/* harmony import */ var _utils_storage__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_utils_storage__WEBPACK_IMPORTED_MODULE_1__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nvar sessionKey = 'grav:admin:pages';\n\nif (!sessionStorage.getItem(sessionKey)) {\n sessionStorage.setItem(sessionKey, '{}');\n}\n\nvar PagesTree = /*#__PURE__*/function () {\n function PagesTree(query) {\n var _this = this;\n\n var elements = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n _classCallCheck(this, PagesTree);\n\n this.query = query;\n this.elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements !== undefined ? elements : this.query);\n this.session = JSON.parse(sessionStorage.getItem(sessionKey) || '{}');\n\n if (!this.elements.length) {\n return;\n }\n\n this.restore();\n this.elements.find('.page-icon').on('click', function (event) {\n return _this.toggle(event.target);\n });\n this.elements.data('tree_init', 1);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-page-toggleall]').on('click', function (event) {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).closest('[data-page-toggleall]');\n var action = element.data('page-toggleall');\n\n _this[action]();\n });\n }\n\n _createClass(PagesTree, [{\n key: \"reload\",\n value: function reload() {\n var elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.query).filter(function (index, element) {\n return !jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('tree_init');\n });\n\n if (!elements.length) {\n return;\n }\n\n this.constructor(this.query, elements);\n }\n }, {\n key: \"toggle\",\n value: function toggle(elements) {\n var _this2 = this;\n\n var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof elements === 'string') {\n elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-nav-id=\\\"\".concat(elements, \"\\\"]\")).find('[data-toggle=\"children\"]');\n }\n\n elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements || this.elements);\n elements.each(function (index, element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n\n var state = _this2.getState(element.closest('[data-toggle=\"children\"]'));\n\n _this2[state.isOpen ? 'collapse' : 'expand'](state.id, dontStore);\n });\n }\n }, {\n key: \"collapse\",\n value: function collapse(elements) {\n var _this3 = this;\n\n var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof elements === 'string') {\n elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-nav-id=\\\"\".concat(elements, \"\\\"]\")).find('[data-toggle=\"children\"]');\n }\n\n elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements || this.elements);\n elements.each(function (index, element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n\n var state = _this3.getState(element);\n\n if (state.isOpen) {\n state.children.hide();\n state.icon.removeClass('children-open').addClass('children-closed');\n\n if (!dontStore) {\n delete _this3.session[state.id];\n }\n }\n });\n\n if (!dontStore) {\n this.save();\n }\n }\n }, {\n key: \"expand\",\n value: function expand(elements) {\n var _this4 = this;\n\n var dontStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (typeof elements === 'string') {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-nav-id=\\\"\".concat(elements, \"\\\"]\"));\n var parents = element.parents('[data-nav-id]'); // loop back through parents, we don't want to expand an hidden child\n\n if (parents.length) {\n parents = parents.find('[data-toggle=\"children\"]:first');\n parents = parents.add(element.find('[data-toggle=\"children\"]:first'));\n return this.expand(parents, dontStore);\n }\n\n elements = element.find('[data-toggle=\"children\"]:first');\n }\n\n elements = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements || this.elements);\n elements.each(function (index, element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n\n var state = _this4.getState(element);\n\n if (!state.isOpen) {\n state.children.show();\n state.icon.removeClass('children-closed').addClass('children-open');\n\n if (!dontStore) {\n _this4.session[state.id] = 1;\n }\n }\n });\n\n if (!dontStore) {\n this.save();\n }\n }\n }, {\n key: \"restore\",\n value: function restore() {\n var _this5 = this;\n\n this.collapse(null, true);\n Object.keys(this.session).forEach(function (key) {\n _this5.expand(key, 'no-store');\n });\n }\n }, {\n key: \"save\",\n value: function save() {\n return sessionStorage.setItem(sessionKey, JSON.stringify(this.session));\n }\n }, {\n key: \"getState\",\n value: function getState(element) {\n element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n return {\n id: element.closest('[data-nav-id]').data('nav-id'),\n children: element.closest('li.page-item').find('ul:first'),\n icon: element.find('.page-icon'),\n\n get isOpen() {\n return this.icon.hasClass('children-open');\n }\n\n };\n }\n }]);\n\n return PagesTree;\n}();\n\n\nvar Instance = new PagesTree('[data-toggle=\"children\"]');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BhZ2VzL3RyZWUuanM/MWEzNSJdLCJuYW1lcyI6WyJzZXNzaW9uS2V5Iiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwic2V0SXRlbSIsIlBhZ2VzVHJlZSIsInF1ZXJ5IiwiZWxlbWVudHMiLCJ1bmRlZmluZWQiLCIkIiwic2Vzc2lvbiIsIkpTT04iLCJwYXJzZSIsImxlbmd0aCIsInJlc3RvcmUiLCJmaW5kIiwib24iLCJldmVudCIsInRvZ2dsZSIsInRhcmdldCIsImRhdGEiLCJlbGVtZW50IiwiY2xvc2VzdCIsImFjdGlvbiIsImZpbHRlciIsImluZGV4IiwiY29uc3RydWN0b3IiLCJkb250U3RvcmUiLCJlYWNoIiwic3RhdGUiLCJnZXRTdGF0ZSIsImlzT3BlbiIsImlkIiwiY2hpbGRyZW4iLCJoaWRlIiwiaWNvbiIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJzYXZlIiwicGFyZW50cyIsImFkZCIsImV4cGFuZCIsInNob3ciLCJjb2xsYXBzZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5Iiwic3RyaW5naWZ5IiwiaGFzQ2xhc3MiLCJJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBLElBQU1BLFVBQVUsR0FBRyxrQkFBbkI7O0FBRUEsSUFBSSxDQUFDQyxjQUFjLENBQUNDLE9BQWYsQ0FBdUJGLFVBQXZCLENBQUwsRUFBeUM7QUFDckNDLGdCQUFjLENBQUNFLE9BQWYsQ0FBdUJILFVBQXZCLEVBQW1DLElBQW5DO0FBQ0g7O0lBRW9CSSxTO0FBQ2pCLHFCQUFZQyxLQUFaLEVBQXlDO0FBQUE7O0FBQUEsUUFBdEJDLFFBQXNCLHVFQUFYQyxTQUFXOztBQUFBOztBQUNyQyxTQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCRSw2Q0FBQyxDQUFDRixRQUFRLEtBQUtDLFNBQWIsR0FBeUJELFFBQXpCLEdBQW9DLEtBQUtELEtB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Q0FBZ0IsY0FBaEIsRUFBZ0NQLElBQWhDLENBQXFDLFVBQXJDLENBRlA7QUFHSG9CLFlBQUksRUFBRWQsT0FBTyxDQUFDTixJQUFSLENBQWEsWUFBYixDQUhIOztBQUlILFlBQUlnQixNQUFKLEdBQWE7QUFBRSxpQkFBTyxLQUFLSSxJQUFMLENBQVVjLFFBQVYsQ0FBbUIsZUFBbkIsQ0FBUDtBQUE2Qzs7QUFKekQsT0FBUDtBQU1IOzs7Ozs7O0FBR0wsSUFBSUMsUUFBUSxHQUFHLElBQUk3QyxTQUFKLENBQWMsMEJBQWQsQ0FBZiIsImZpbGUiOiIuL2FwcC9wYWdlcy90cmVlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCAnLi4vdXRpbHMvc3RvcmFnZSc7XG5cbmNvbnN0IHNlc3Npb25LZXkgPSAnZ3JhdjphZG1pbjpwYWdlcyc7XG5cbmlmICghc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzZXNzaW9uS2V5KSkge1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oc2Vzc2lvbktleSwgJ3t9Jyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhZ2VzVHJlZSB7XG4gICAgY29uc3RydWN0b3IocXVlcnksIGVsZW1lbnRzID0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9ICQoZWxlbWVudHMgIT09IHVuZGVmaW5lZCA/IGVsZW1lbnRzIDogdGhpcy5xdWVyeSk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShzZXNzaW9uS2V5KSB8fCAne30nKTtcblxuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudHMubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZSgpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudHMuZmluZCgnLnBhZ2UtaWNvbicpLm9uKCdjbGljaycsIChldmVudCkgPT4gdGhpcy50b2dnbGUoZXZlbnQudGFyZ2V0KSk7XG4gICAgICAgIHRoaXMuZWxlbWVudHMuZGF0YSgndHJlZV9pbml0JywgMSk7XG5cbiAgICAgICAgJCgnW2RhdGEtcGFnZS10b2dnbGVhbGxdJykub24oJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9ICQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdbZGF0YS1wYWdlLXRvZ2dsZWFsbF0nKTtcbiAgICAgICAgICAgIGxldCBhY3Rpb24gPSBlbGVtZW50LmRhdGEoJ3BhZ2UtdG9nZ2xlYWxsJyk7XG5cbiAgICAgICAgICAgIHRoaXNbYWN0aW9uXSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWxvYWQoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gJCh0aGlzLnF1ZXJ5KS5maWx0ZXIoKGluZGV4LCBlbGVtZW50KSA9PiAhJChlbGVtZW50KS5kYXRhKCd0cmVlX2luaXQnKSk7XG4gICAgICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yKHRoaXMucXVlcnksIGVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICB0b2dnbGUoZWxlbWVudHMsIGRvbnRTdG9yZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBlbGVtZW50cyA9ICQoYFtkYXRhLW5hdi1pZD1cIiR7ZWxlbWVudHN9XCJdYCkuZmluZCgnW2RhdGEtdG9nZ2xlPVwiY2hpbGRyZW5cIl0nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzID0gJChlbGVtZW50cyB8fCB0aGlzLmVsZW1lbnRzKTtcbiAgICAgICAgZWxlbWVudHMuZWFjaCgoaW5kZXgsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZShlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT1cImNoaWxkcmVuXCJdJykpO1xuICAgICAgICAgICAgdGhpc1tzdGF0ZS5pc09wZW4gPyAnY29sbGFwc2UnIDogJ2V4cGFuZCddKHN0YXRlLmlkLCBkb250U3RvcmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZShlbGVtZW50cywgZG9udFN0b3JlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzID0gJChgW2RhdGEtbmF2LWlkPVwiJHtlbGVtZW50c31cIl1gKS5maW5kKCdbZGF0YS10b2dnbGU9XCJjaGlsZHJlblwiXScpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudHMgPSAkKGVsZW1lbnRzIHx8IHRoaXMuZWxlbWVudHMpO1xuICAgICAgICBlbGVtZW50cy5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmdldFN0YXRlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoc3RhdGUuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuY2hpbGRyZW4uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHN0YXRlLmljb24ucmVtb3ZlQ2xhc3MoJ2NoaWxkcmVuLW9wZW4nKS5hZGRDbGFzcygnY2hpbGRyZW4tY2xvc2VkJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFkb250U3RvcmUpIHsgZGVsZXRlIHRoaXMuc2Vzc2lvbltzdGF0ZS5pZF07IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFkb250U3RvcmUpIHsgdGhpcy5zYXZlKCk7IH1cbiAgICB9XG5cbiAgICBleHBhbmQoZWxlbWVudHMsIGRvbnRTdG9yZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9ICQoYFtkYXRhLW5hdi1pZD1cIiR7ZWxlbWVudHN9XCJdYCk7XG4gICAgICAgICAgICBsZXQgcGFyZW50cyA9IGVsZW1lbnQucGFyZW50cygnW2RhdGEtbmF2LWlkXScpO1xuXG4gICAgICAgICAgICAvLyBsb29wIGJhY2sgdGhyb3VnaCBwYXJlbnRzLCB3ZSBkb24ndCB3YW50IHRvIGV4cGFuZCBhbiBoaWRkZW4gY2hpbGRcbiAgICAgICAgICAgIGlmIChwYXJlbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhcmVudHMgPSBwYXJlbnRzLmZpbmQoJ1tkYXRhLXRvZ2dsZT1cImNoaWxkcmVuXCJdOmZpcnN0Jyk7XG4gICAgICAgICAgICAgICAgcGFyZW50cyA9IHBhcmVudHMuYWRkKGVsZW1lbnQuZmluZCgnW2RhdGEtdG9nZ2xlPVwiY2hpbGRyZW5cIl06Zmlyc3QnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kKHBhcmVudHMsIGRvbnRTdG9yZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudC5maW5kKCdbZGF0YS10b2dnbGU9XCJjaGlsZHJlblwiXTpmaXJzdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWxlbWVudHMgPSAkKGVsZW1lbnRzIHx8IHRoaXMuZWxlbWVudHMpO1xuICAgICAgICBlbGVtZW50cy5lYWNoKChpbmRleCwgZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgZWxlbWVudCA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmdldFN0YXRlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoIXN0YXRlLmlzT3Blbikge1xuICAgICAgICAgICAgICAgIHN0YXRlLmNoaWxkcmVuLnNob3coKTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5pY29uLnJlbW92ZUNsYXNzKCdjaGlsZHJlbi1jbG9zZWQnKS5hZGRDbGFzcygnY2hpbGRyZW4tb3BlbicpO1xuICAgICAgICAgICAgICAgIGlmICghZG9udFN0b3JlKSB7IHRoaXMuc2Vzc2lvbltzdGF0ZS5pZF0gPSAxOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghZG9udFN0b3JlKSB7IHRoaXMuc2F2ZSgpOyB9XG4gICAgfVxuXG4gICAgcmVzdG9yZSgpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZShudWxsLCB0cnVlKTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnNlc3Npb24pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5leHBhbmQoa2V5LCAnbm8tc3RvcmUnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2F2ZSgpIHtcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oc2Vzc2lvbktleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5zZXNzaW9uKSk7XG4gICAgfVxuXG4gICAgZ2V0U3RhdGUoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gJChlbGVtZW50KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGVsZW1lbnQuY2xvc2VzdCgnW2RhdGEtbmF2LWlkXScpLmRhdGEoJ25hdi1pZCcpLFxuICAgICAgICAgICAgY2hpbGRyZW46IGVsZW1lbnQuY2xvc2VzdCgnbGkucGFnZS1pdGVtJykuZmluZCgndWw6Zmlyc3QnKSxcbiAgICAgICAgICAgIGljb246IGVsZW1lbnQuZmluZCgnLnBhZ2UtaWNvbicpLFxuICAgICAgICAgICAgZ2V0IGlzT3BlbigpIHsgcmV0dXJuIHRoaXMuaWNvbi5oYXNDbGFzcygnY2hpbGRyZW4tb3BlbicpOyB9XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5sZXQgSW5zdGFuY2UgPSBuZXcgUGFnZXNUcmVlKCdbZGF0YS10b2dnbGU9XCJjaGlsZHJlblwiXScpO1xuZXhwb3J0IHsgSW5zdGFuY2UgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/pages/tree.js\n");
/***/ }),
/***/ "./app/plugins/index.js":
/*!******************************!*\
!*** ./app/plugins/index.js ***!
\******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_packages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/packages */ \"./app/utils/packages.js\");\n/* harmony import */ var mout_string_camelCase__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! mout/string/camelCase */ \"./node_modules/mout/string/camelCase.js\");\n/* harmony import */ var mout_string_camelCase__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(mout_string_camelCase__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! debounce */ \"./node_modules/debounce/index.js\");\n/* harmony import */ var debounce__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(debounce__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var mout_string_contains__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mout/string/contains */ \"./node_modules/mout/string/contains.js\");\n/* harmony import */ var mout_string_contains__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(mout_string_contains__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n // Plugins sliders details\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('.gpm-name, .gpm-actions').on('click', function (e) {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target);\n var tag = target.prop('tagName').toLowerCase();\n\n if (tag === 'a' || element.parent('a').length || target.parent('a').length) {\n return true;\n }\n\n var wrapper = element.siblings('.gpm-details').find('.table-wrapper');\n wrapper.slideToggle({\n duration: 350,\n complete: function complete() {\n var visible = wrapper.is(':visible');\n wrapper.closest('tr').find('.gpm-details-expand i').removeClass('fa-chevron-' + (visible ? 'down' : 'up')).addClass('fa-chevron-' + (visible ? 'up' : 'down'));\n }\n });\n}); // Removing plugin\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"remove-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleRemovingPackage('plugin', event);\n}); // Reinstall plugin\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"reinstall-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleReinstallPackage('plugin', event);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"remove-dependency-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleRemovingDependency('plugin', event);\n}); // Trigger the add new plugin / update plugin modal\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"start-package-installation\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleGettingPackageDependencies('plugin', event, 'install');\n}); // Trigger the update all plugins modal\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"start-packages-update\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleGettingPackageDependencies('plugin', event);\n}); // Install a plugin dependencies and the plugin\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"install-dependencies-and-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleInstallingDependenciesAndPackage('plugin', event);\n}); // Install a plugin\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-plugin-action=\"install-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleInstallingPackage('plugin', event);\n}); // Sort plugins/themes dropdown\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('change', '.sort-actions select', function (event) {\n var direction = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.sort-actions .sort-icon .fa').hasClass('fa-sort-amount-desc') ? 'desc' : 'asc';\n var sorting = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).val();\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.Sort[mout_string_camelCase__WEBPACK_IMPORTED_MODULE_2___default()(\"by-\".concat(sorting))](direction);\n}); // Sort plugins/themes icon\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '.sort-icon', function (event) {\n var icon = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).find('.fa');\n var current = icon.hasClass('fa-sort-amount-asc') ? 'asc' : 'desc';\n var opposite = current === 'asc' ? 'desc' : 'asc';\n icon.removeClass(\"fa-sort-amount-\".concat(current)).addClass(\"fa-sort-amount-\".concat(opposite));\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.sort-actions select').trigger('change');\n}); // Filter plugin/theme\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('input', '[data-gpm-filter]', debounce__WEBPACK_IMPORTED_MODULE_3___default()(function (event) {\n var value = jquery__WEBPACK_IMPORTED_MODULE_0___default()(jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget)).val();\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-gpm-plugin], [data-gpm-theme]');\n items.hide().filter(function (index, item) {\n item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(item);\n return mout_string_contains__WEBPACK_IMPORTED_MODULE_4___default()(item.data('gpm-plugin'), value) || mout_string_contains__WEBPACK_IMPORTED_MODULE_4___default()(item.data('gpm-theme'), value) || mout_string_contains__WEBPACK_IMPORTED_MODULE_4___default()(item.data('gpm-name').toLowerCase(), value.toLowerCase());\n }).show();\n}, 250));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3BsdWdpbnMvaW5kZXguanM/ZGU3YSJdLCJuYW1lcyI6WyIkIiwib24iLCJlIiwiZWxlbWVudCIsInRhcmdldCIsInRhZyIsInByb3AiLCJ0b0xvd2VyQ2FzZSIsInBhcmVudCIsImxlbmd0aCIsIndyYXBwZXIiLCJzaWJsaW5ncyIsImZpbmQiLCJzbGlkZVRvZ2dsZSIsImR1cmF0aW9uIiwiY29tcGxldGUiLCJ2aXNpYmxlIiwiaXMiLCJjbG9zZXN0IiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsImRvY3VtZW50IiwiZXZlbnQiLCJwYWNrYWdlcyIsImRpcmVjdGlvbiIsImhhc0NsYXNzIiwic29ydGluZyIsImN1cnJlbnRUYXJnZXQiLCJ2YWwiLCJjYW1lbENhc2UiLCJpY29uIiwiY3VycmVudCIsIm9wcG9zaXRlIiwidHJpZ2dlciIsImRlYm91bmNlIiwidmFsdWUiLCJpdGVtcyIsImhpZGUiLCJmaWx0ZXIiLCJpbmRleCIsIml0ZW0iLCJjb250YWlucyIsImRhdGEiLCJzaG93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Q0FHQTs7QUFDQUEsNkNBQUMsQ0FBQyx5QkFBRCxDQUFELENBQTZCQyxFQUE3QixDQUFnQyxPQUFoQyxFQUF5QyxVQUFTQyxDQUFULEVBQVk7QUFDakQsTUFBSUMsT0FBTyxHQUFHSCw2Q0FBQyxDQUFDLElBQUQsQ0FBZjtBQUNBLE1BQUlJLE1BQU0sR0FBR0osNkNBQUMsQ0FBQ0UsQ0FBQyxDQUFDRSxNQUFILENBQWQ7QUFDQSxNQUFJQyxHQUFHLEdBQUdELE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLFNBQVosRUFBdUJDLFdBQXZCLEVBQVY7O0FBRUEsTUFBSUYsR0FBRyxLQUFLLEdBQVIsSUFBZUYsT0FBTyxDQUFDSyxNQUFSLENBQWUsR0FBZixFQUFvQkMsTUFBbkMsSUFBNkNMLE1BQU0sQ0FBQ0ksTUFBUCxDQUFjLEdBQWQsRUFBbUJDLE1BQXBFLEVBQTRF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QUF6QixDQUFwRCxJQUF1Rk0sMkRBQVEsQ0FBQ0QsSUFBSSxDQUFDRSxJQUFMLENBQVUsVUFBVixFQUFzQm5DLFdBQXRCLEVBQUQsRUFBc0M0QixLQUFLLENBQUM1QixXQUFOLEVBQXRDLENBQXRHO0FBQ0gsR0FKRCxFQUlHb0MsSUFKSDtBQUtILENBVG9ELEVBU2xELEdBVGtELENBQXJEIiwiZmlsZSI6Ii4vYXBwL3BsdWdpbnMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHBhY2thZ2VzIGZyb20gJy4uL3V0aWxzL3BhY2thZ2VzJztcbmltcG9ydCBjYW1lbENhc2UgZnJvbSAnbW91dC9zdHJpbmcvY2FtZWxDYXNlJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICdkZWJvdW5jZSc7XG5pbXBvcnQgY29udGFpbnMgZnJvbSAnbW91dC9zdHJpbmcvY29udGFpbnMnO1xuXG4vLyBQbHVnaW5zIHNsaWRlcnMgZGV0YWlsc1xuJCgnLmdwbS1uYW1lLCAuZ3BtLWFjdGlvbnMnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7XG4gICAgbGV0IGVsZW1lbnQgPSAkKHRoaXMpO1xuICAgIGxldCB0YXJnZXQgPSAkKGUudGFyZ2V0KTtcbiAgICBsZXQgdGFnID0gdGFyZ2V0LnByb3AoJ3RhZ05hbWUnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKHRhZyA9PT0gJ2EnIHx8IGVsZW1lbnQucGFyZW50KCdhJykubGVuZ3RoIHx8IHRhcmdldC5wYXJlbnQoJ2EnKS5sZW5ndGgpIHsgcmV0dXJuIHRydWU7IH1cblxuICAgIGxldCB3cmFwcGVyID0gZWxlbWVudC5zaWJsaW5ncygnLmdwbS1kZXRhaWxzJykuZmluZCgnLnRhYmxlLXdyYXBwZXInKTtcblxuICAgIHdyYXBwZXIuc2xpZGVUb2dnbGUoe1xuICAgICAgICBkdXJhdGlvbjogMzUwLFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHZpc2libGUgPSB3cmFwcGVyLmlzKCc6dmlzaWJsZScpO1xuICAgICAgICAgICAgd3JhcHBlclxuICAgICAgICAgICAgICAgIC5jbG9zZXN0KCd0cicpXG4gICAgICAgICAgICAgICAgLmZpbmQoJy5ncG0tZGV0YWlscy1leHBhbmQgaScpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdmYS1jaGV2cm9uLScgKyAodmlzaWJsZSA/ICdkb3duJyA6ICd1cCcpKVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnZmEtY2hldnJvbi0nICsgKHZpc2libGUgPyAndXAnIDogJ2Rvd24nKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuXG4vLyBSZW1vdmluZyBwbHVnaW5cbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1wbHVnaW4tYWN0aW9uPVwicmVtb3ZlLXBhY2thZ2VcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVSZW1vdmluZ1BhY2thZ2UoJ3BsdWdpbicsIGV2ZW50KTtcbn0pO1xuXG4vLyBSZWluc3RhbGwgcGx1Z2luXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtcGx1Z2luLWFjdGlvbj1cInJlaW5zdGFsbC1wYWNrYWdlXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgcGFja2FnZXMuaGFuZGxlUmVpbnN0YWxsUGFja2FnZSgncGx1Z2luJywgZXZlbnQpO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1wbHVnaW4tYWN0aW9uPVwicmVtb3ZlLWRlcGVuZGVuY3ktcGFja2FnZVwiXScsIChldmVudCkgPT4ge1xuICAgIHBhY2thZ2VzLmhhbmRsZVJlbW92aW5nRGVwZW5kZW5jeSgncGx1Z2luJywgZXZlbnQpO1xufSk7XG5cbi8vIFRyaWdnZXIgdGhlIGFkZCBuZXcgcGx1Z2luIC8gdXBkYXRlIHBsdWdpbiBtb2RhbFxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXBsdWdpbi1hY3Rpb249XCJzdGFydC1wYWNrYWdlLWluc3RhbGxhdGlvblwiXScsIChldmVudCkgPT4ge1xuICAgIHBhY2thZ2VzLmhhbmRsZUdldHRpbmdQYWNrYWdlRGVwZW5kZW5jaWVzKCdwbHVnaW4nLCBldmVudCwgJ2luc3RhbGwnKTtcbn0pO1xuXG4vLyBUcmlnZ2VyIHRoZSB1cGRhdGUgYWxsIHBsdWdpbnMgbW9kYWxcbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1wbHVnaW4tYWN0aW9uPVwic3RhcnQtcGFja2FnZXMtdXBkYXRlXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgcGFja2FnZXMuaGFuZGxlR2V0dGluZ1BhY2thZ2VEZXBlbmRlbmNpZXMoJ3BsdWdpbicsIGV2ZW50KTtcbn0pO1xuXG4vLyBJbnN0YWxsIGEgcGx1Z2luIGRlcGVuZGVuY2llcyBhbmQgdGhlIHBsdWdpblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXBsdWdpbi1hY3Rpb249XCJpbnN0YWxsLWRlcGVuZGVuY2llcy1hbmQtcGFja2FnZVwiXScsIChldmVudCkgPT4ge1xuICAgIHBhY2thZ2VzLmhhbmRsZUluc3RhbGxpbmdEZXBlbmRlbmNpZXNBbmRQYWNrYWdlKCdwbHVnaW4nLCBldmVudCk7XG59KTtcblxuLy8gSW5zdGFsbCBhIHBsdWdpblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXBsdWdpbi1hY3Rpb249XCJpbnN0YWxsLXBhY2thZ2VcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVJbnN0YWxsaW5nUGFja2FnZSgncGx1Z2luJywgZXZlbnQpO1xufSk7XG5cbi8vIFNvcnQgcGx1Z2lucy90aGVtZXMgZHJvcGRvd25cbiQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnLnNvcnQtYWN0aW9ucyBzZWxlY3QnLCAoZXZlbnQpID0+IHtcbiAgICBsZXQgZGlyZWN0aW9uID0gJCgnLnNvcnQtYWN0aW9ucyAuc29ydC1pY29uIC5mYScpLmhhc0NsYXNzKCdmYS1zb3J0LWFtb3VudC1kZXNjJykgPyAnZGVzYycgOiAnYXNjJztcbiAgICBsZXQgc29ydGluZyA9ICQoZXZlbnQuY3VycmVudFRhcmdldCkudmFsKCk7XG5cbiAgICBwYWNrYWdlcy5Tb3J0W2NhbWVsQ2FzZShgYnktJHtzb3J0aW5nfWApXShkaXJlY3Rpb24pO1xufSk7XG5cbi8vIFNvcnQgcGx1Z2lucy90aGVtZXMgaWNvblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5zb3J0LWljb24nLCAoZXZlbnQpID0+IHtcbiAgICBsZXQgaWNvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCkuZmluZCgnLmZhJyk7XG4gICAgbGV0IGN1cnJlbnQgPSBpY29uLmhhc0NsYXNzKCdmYS1zb3J0LWFtb3VudC1hc2MnKSA/ICdhc2MnIDogJ2Rlc2MnO1xuICAgIGxldCBvcHBvc2l0ZSA9IGN1cnJlbnQgPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYyc7XG5cbiAgICBpY29uLnJlbW92ZUNsYXNzKGBmYS1zb3J0LWFtb3VudC0ke2N1cnJlbnR9YCkuYWRkQ2xhc3MoYGZhLXNvcnQtYW1vdW50LSR7b3Bwb3NpdGV9YCk7XG4gICAgJCgnLnNvcnQtYWN0aW9ucyBzZWxlY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbn0pO1xuXG4vLyBGaWx0ZXIgcGx1Z2luL3RoZW1lXG4kKGRvY3VtZW50KS5vbignaW5wdXQnLCAnW2RhdGEtZ3BtLWZpbHRlcl0nLCBkZWJvdW5jZSgoZXZlbnQpID0+IHtcbiAgICBsZXQgdmFsdWUgPSAkKCQoZXZlbnQuY3VycmVudFRhcmdldCkpLnZhbCgpO1xuICAgIGxldCBpdGVtcyA9ICQoJ1tkYXRhLWdwbS1wbHVnaW5dLCBbZGF0YS1ncG0tdGhlbWVdJyk7XG5cbiAgICBpdGVtcy5oaWRlKCkuZmlsdGVyKChpbmRleCwgaXRlbSkgPT4ge1xuICAgICAgICBpdGVtID0gJChpdGVtKTtcblxuICAgICAgICByZXR1cm4gY29udGFpbnMoaXRlbS5kYXRhKCdncG0tcGx1Z2luJyksIHZhbHVlKSB8fCBjb250YWlucyhpdGVtLmRhdGEoJ2dwbS10aGVtZScpLCB2YWx1ZSkgfHwgY29udGFpbnMoaXRlbS5kYXRhKCdncG0tbmFtZScpLnRvTG93ZXJDYXNlKCksIHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgIH0pLnNob3coKTtcbn0sIDI1MCkpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/plugins/index.js\n");
/***/ }),
/***/ "./app/themes/index.js":
/*!*****************************!*\
!*** ./app/themes/index.js ***!
\*****************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_packages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/packages */ \"./app/utils/packages.js\");\n\n // Themes Switcher Warning\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('mousedown', '[data-remodal-target=\"theme-switch-warn\"]', function (event) {\n var name = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).closest('[data-gpm-theme]').find('.gpm-name a:first').text();\n var remodal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remodal.theme-switcher');\n remodal.find('strong').text(name);\n remodal.find('.button.continue').attr('href', jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).attr('href'));\n}); // Removing theme\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"remove-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleRemovingPackage('theme', event);\n}); // Reinstall theme\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"reinstall-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleReinstallPackage('theme', event);\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"remove-dependency-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleRemovingDependency('theme', event);\n}); // Opened the add new theme / update theme modal\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"start-package-installation\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleGettingPackageDependencies('theme', event, 'install');\n}); // Trigger the update all themes modal\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"start-packages-update\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleGettingPackageDependencies('theme', event);\n}); // Install a theme dependencies and the theme\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"install-dependencies-and-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleInstallingDependenciesAndPackage('theme', event);\n}); // Install a theme\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-theme-action=\"install-package\"]', function (event) {\n _utils_packages__WEBPACK_IMPORTED_MODULE_1__.default.handleInstallingPackage('theme', event);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3RoZW1lcy9pbmRleC5qcz8zNDc0Il0sIm5hbWVzIjpbIiQiLCJkb2N1bWVudCIsIm9uIiwiZXZlbnQiLCJuYW1lIiwidGFyZ2V0IiwiY2xvc2VzdCIsImZpbmQiLCJ0ZXh0IiwicmVtb2RhbCIsImF0dHIiLCJwYWNrYWdlcyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0NBR0E7O0FBQ0FBLDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsV0FBZixFQUE0QiwyQ0FBNUIsRUFBeUUsVUFBQ0MsS0FBRCxFQUFXO0FBQ2hGLE1BQUlDLElBQUksR0FBR0osNkNBQUMsQ0FBQ0csS0FBSyxDQUFDRSxNQUFQLENBQUQsQ0FBZ0JDLE9BQWhCLENBQXdCLGtCQUF4QixFQUE0Q0MsSUFBNUMsQ0FBaUQsbUJBQWpELEVBQXNFQyxJQUF0RSxFQUFYO0FBQ0EsTUFBSUMsT0FBTyxHQUFHVCw2Q0FBQyxDQUFDLHlCQUFELENBQWY7QUFFQVMsU0FBTyxDQUFDRixJQUFSLENBQWEsUUFBYixFQUF1QkMsSUFBdkIsQ0FBNEJKLElBQTVCO0FBQ0FLLFNBQU8sQ0FBQ0YsSUFBUixDQUFhLGtCQUFiLEVBQWlDRyxJQUFqQyxDQUFzQyxNQUF0QyxFQUE4Q1YsNkNBQUMsQ0FBQ0csS0FBSyxDQUFDRSxNQUFQLENBQUQsQ0FBZ0JLLElBQWhCLENBQXFCLE1BQXJCLENBQTlDO0FBQ0gsQ0FORCxFLENBUUE7O0FBQ0FWLDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsT0FBZixFQUF3QixzQ0FBeEIsRUFBZ0UsVUFBQ0MsS0FBRCxFQUFXO0FBQ3ZFUSw0RUFBQSxDQUErQixPQUEvQixFQUF3Q1IsS0FBeEM7QUFDSCxDQUZELEUsQ0FJQTs7QUFDQUgsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLHlDQUF4QixFQUFtRSxVQUFDQyxLQUFELEVBQVc7QUFDMUVRLDZFQUFBLENBQWdDLE9BQWhDLEVBQXlDUixLQUF6QztBQUNILENBRkQ7QUFJQUgsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLGlEQUF4QixFQUEyRSxVQUFDQyxLQUFELEVBQVc7QUFDbEZRLCtFQUFBLENBQWtDLE9BQWxDLEVBQTJDUixLQUEzQztBQUNILENBRkQsRSxDQUlBOztBQUNBSCw2Q0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsRUFBWixDQUFlLE9BQWYsRUFBd0Isa0RBQXhCLEVBQTRFLFVBQUNDLEtBQUQsRUFBVztBQUNuRlEsdUZBQUEsQ0FBMEMsT0FBMUMsRUFBbURSLEtBQW5ELEVBQTBELFNBQTFEO0FBQ0gsQ0FGRCxFLENBSUE7O0FBQ0FILDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsT0FBZixFQUF3Qiw2Q0FBeEIsRUFBdUUsVUFBQ0MsS0FBRCxFQUFXO0FBQzlFUSx1RkFBQSxDQUEwQyxPQUExQyxFQUFtRFIsS0FBbkQ7QUFDSCxDQUZELEUsQ0FJQTs7QUFDQUgsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLHdEQUF4QixFQUFrRixVQUFDQyxLQUFELEVBQVc7QUFDekZRLDZGQUFBLENBQWdELE9BQWhELEVBQXlEUixLQUF6RDtBQUNILENBRkQsRSxDQUlBOztBQUNBSCw2Q0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsRUFBWixDQUFlLE9BQWYsRUFBd0IsdUNBQXhCLEVBQWlFLFVBQUNDLEtBQUQsRUFBVztBQUN4RVEsOEVBQUEsQ0FBaUMsT0FBakMsRUFBMENSLEtBQTFDO0FBQ0gsQ0FGRCIsImZpbGUiOiIuL2FwcC90aGVtZXMvaW5kZXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHBhY2thZ2VzIGZyb20gJy4uL3V0aWxzL3BhY2thZ2VzJztcblxuLy8gVGhlbWVzIFN3aXRjaGVyIFdhcm5pbmdcbiQoZG9jdW1lbnQpLm9uKCdtb3VzZWRvd24nLCAnW2RhdGEtcmVtb2RhbC10YXJnZXQ9XCJ0aGVtZS1zd2l0Y2gtd2FyblwiXScsIChldmVudCkgPT4ge1xuICAgIGxldCBuYW1lID0gJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ1tkYXRhLWdwbS10aGVtZV0nKS5maW5kKCcuZ3BtLW5hbWUgYTpmaXJzdCcpLnRleHQoKTtcbiAgICBsZXQgcmVtb2RhbCA9ICQoJy5yZW1vZGFsLnRoZW1lLXN3aXRjaGVyJyk7XG5cbiAgICByZW1vZGFsLmZpbmQoJ3N0cm9uZycpLnRleHQobmFtZSk7XG4gICAgcmVtb2RhbC5maW5kKCcuYnV0dG9uLmNvbnRpbnVlJykuYXR0cignaHJlZicsICQoZXZlbnQudGFyZ2V0KS5hdHRyKCdocmVmJykpO1xufSk7XG5cbi8vIFJlbW92aW5nIHRoZW1lXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtdGhlbWUtYWN0aW9uPVwicmVtb3ZlLXBhY2thZ2VcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVSZW1vdmluZ1BhY2thZ2UoJ3RoZW1lJywgZXZlbnQpO1xufSk7XG5cbi8vIFJlaW5zdGFsbCB0aGVtZVxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXRoZW1lLWFjdGlvbj1cInJlaW5zdGFsbC1wYWNrYWdlXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgcGFja2FnZXMuaGFuZGxlUmVpbnN0YWxsUGFja2FnZSgndGhlbWUnLCBldmVudCk7XG59KTtcblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXRoZW1lLWFjdGlvbj1cInJlbW92ZS1kZXBlbmRlbmN5LXBhY2thZ2VcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVSZW1vdmluZ0RlcGVuZGVuY3koJ3RoZW1lJywgZXZlbnQpO1xufSk7XG5cbi8vIE9wZW5lZCB0aGUgYWRkIG5ldyB0aGVtZSAvIHVwZGF0ZSB0aGVtZSBtb2RhbFxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXRoZW1lLWFjdGlvbj1cInN0YXJ0LXBhY2thZ2UtaW5zdGFsbGF0aW9uXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgcGFja2FnZXMuaGFuZGxlR2V0dGluZ1BhY2thZ2VEZXBlbmRlbmNpZXMoJ3RoZW1lJywgZXZlbnQsICdpbnN0YWxsJyk7XG59KTtcblxuLy8gVHJpZ2dlciB0aGUgdXBkYXRlIGFsbCB0aGVtZXMgbW9kYWxcbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS10aGVtZS1hY3Rpb249XCJzdGFydC1wYWNrYWdlcy11cGRhdGVcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVHZXR0aW5nUGFja2FnZURlcGVuZGVuY2llcygndGhlbWUnLCBldmVudCk7XG59KTtcblxuLy8gSW5zdGFsbCBhIHRoZW1lIGRlcGVuZGVuY2llcyBhbmQgdGhlIHRoZW1lXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtdGhlbWUtYWN0aW9uPVwiaW5zdGFsbC1kZXBlbmRlbmNpZXMtYW5kLXBhY2thZ2VcIl0nLCAoZXZlbnQpID0+IHtcbiAgICBwYWNrYWdlcy5oYW5kbGVJbnN0YWxsaW5nRGVwZW5kZW5jaWVzQW5kUGFja2FnZSgndGhlbWUnLCBldmVudCk7XG59KTtcblxuLy8gSW5zdGFsbCBhIHRoZW1lXG4kKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtdGhlbWUtYWN0aW9uPVwiaW5zdGFsbC1wYWNrYWdlXCJdJywgKGV2ZW50KSA9PiB7XG4gICAgcGFja2FnZXMuaGFuZGxlSW5zdGFsbGluZ1BhY2thZ2UoJ3RoZW1lJywgZXZlbnQpO1xufSk7XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/themes/index.js\n");
/***/ }),
/***/ "./app/tools/index.js":
/*!****************************!*\
!*** ./app/tools/index.js ***!
\****************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _logs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./logs */ "./app/tools/logs.js");
/***/ }),
/***/ "./app/tools/logs.js":
/*!***************************!*\
!*** ./app/tools/logs.js ***!
\***************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mout_queryString__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mout/queryString */ \"./node_modules/mout/queryString.js\");\n/* harmony import */ var mout_queryString__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mout_queryString__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar prepareQuery = function prepareQuery(key, value) {\n return (0,mout_queryString__WEBPACK_IMPORTED_MODULE_1__.setParam)(__webpack_require__.g.location.href, key, value);\n};\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('change', '.logs-content .block-select select[name]', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var name = target.attr('name');\n var value = target.val();\n __webpack_require__.g.location.href = prepareQuery(name, value);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3Rvb2xzL2xvZ3MuanM/N2M0YyJdLCJuYW1lcyI6WyJwcmVwYXJlUXVlcnkiLCJrZXkiLCJ2YWx1ZSIsInNldFBhcmFtIiwiZ2xvYmFsIiwibG9jYXRpb24iLCJocmVmIiwiJCIsImRvY3VtZW50Iiwib24iLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJuYW1lIiwiYXR0ciIsInZhbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBOztBQUVBLElBQU1BLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNDLEdBQUQsRUFBTUMsS0FBTixFQUFnQjtBQUNqQyxTQUFPQywwREFBUSxDQUFDQyxxQkFBTSxDQUFDQyxRQUFQLENBQWdCQyxJQUFqQixFQUF1QkwsR0FBdkIsRUFBNEJDLEtBQTVCLENBQWY7QUFDSCxDQUZEOztBQUlBSyw2Q0FBQyxDQUFDQyxRQUFELENBQUQsQ0FBWUMsRUFBWixDQUFlLFFBQWYsRUFBeUIsMENBQXpCLEVBQXFFLFVBQUNDLEtBQUQsRUFBVztBQUM1RSxNQUFNQyxNQUFNLEdBQUdKLDZDQUFDLENBQUNHLEtBQUssQ0FBQ0UsYUFBUCxDQUFoQjtBQUNBLE1BQU1DLElBQUksR0FBR0YsTUFBTSxDQUFDRyxJQUFQLENBQVksTUFBWixDQUFiO0FBQ0EsTUFBTVosS0FBSyxHQUFHUyxNQUFNLENBQUNJLEdBQVAsRUFBZDtBQUVBWCx1QkFBTSxDQUFDQyxRQUFQLENBQWdCQyxJQUFoQixHQUF1Qk4sWUFBWSxDQUFDYSxJQUFELEVBQU9YLEtBQVAsQ0FBbkM7QUFDSCxDQU5EIiwiZmlsZSI6Ii4vYXBwL3Rvb2xzL2xvZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgc2V0UGFyYW0gfSBmcm9tICdtb3V0L3F1ZXJ5U3RyaW5nJztcblxuY29uc3QgcHJlcGFyZVF1ZXJ5ID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICByZXR1cm4gc2V0UGFyYW0oZ2xvYmFsLmxvY2F0aW9uLmhyZWYsIGtleSwgdmFsdWUpO1xufTtcblxuJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcubG9ncy1jb250ZW50IC5ibG9jay1zZWxlY3Qgc2VsZWN0W25hbWVdJywgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBjb25zdCBuYW1lID0gdGFyZ2V0LmF0dHIoJ25hbWUnKTtcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldC52YWwoKTtcblxuICAgIGdsb2JhbC5sb2NhdGlvbi5ocmVmID0gcHJlcGFyZVF1ZXJ5KG5hbWUsIHZhbHVlKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/tools/logs.js\n");
/***/ }),
/***/ "./app/updates/channel-switcher.js":
/*!*****************************************!*\
!*** ./app/updates/channel-switcher.js ***!
\*****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n\n\nvar switcher = jquery__WEBPACK_IMPORTED_MODULE_0___default()('input[type=\"radio\"][name=\"channel-switch\"]');\n\nif (switcher) {\n switcher.on('change', function (event) {\n var radio = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var url = \"\".concat(radio.parent('[data-url]').data('url'));\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_1__.default)(url, {\n method: 'post',\n body: {\n task: 'gpmRelease',\n release: radio.val()\n }\n }, function (response) {\n if (response.reload) {\n __webpack_require__.g.location.reload();\n }\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvY2hhbm5lbC1zd2l0Y2hlci5qcz8zOTczIl0sIm5hbWVzIjpbInN3aXRjaGVyIiwiJCIsIm9uIiwiZXZlbnQiLCJyYWRpbyIsInRhcmdldCIsInVybCIsInBhcmVudCIsImRhdGEiLCJyZXF1ZXN0IiwibWV0aG9kIiwiYm9keSIsInRhc2siLCJyZWxlYXNlIiwidmFsIiwicmVzcG9uc2UiLCJyZWxvYWQiLCJnbG9iYWwiLCJsb2NhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFFQSxJQUFNQSxRQUFRLEdBQUdDLDZDQUFDLENBQUMsNENBQUQsQ0FBbEI7O0FBRUEsSUFBSUQsUUFBSixFQUFjO0FBQ1ZBLFVBQVEsQ0FBQ0UsRUFBVCxDQUFZLFFBQVosRUFBc0IsVUFBQ0MsS0FBRCxFQUFXO0FBQzdCLFFBQUlDLEtBQUssR0FBR0gsNkNBQUMsQ0FBQ0UsS0FBSyxDQUFDRSxNQUFQLENBQWI7QUFDQSxRQUFJQyxHQUFHLGFBQU1GLEtBQUssQ0FBQ0csTUFBTixDQUFhLFlBQWIsRUFBMkJDLElBQTNCLENBQWdDLEtBQWhDLENBQU4sQ0FBUDtBQUVBQywyREFBTyxDQUFDSCxHQUFELEVBQU07QUFDVEksWUFBTSxFQUFFLE1BREM7QUFFVEMsVUFBSSxFQUFFO0FBQ0ZDLFlBQUksRUFBRSxZQURKO0FBRUZDLGVBQU8sRUFBRVQsS0FBSyxDQUFDVSxHQUFOO0FBRlA7QUFGRyxLQUFOLEVBT1AsVUFBQ0MsUUFBRCxFQUFjO0FBQ1YsVUFBSUEsUUFBUSxDQUFDQyxNQUFiLEVBQXFCO0FBQ2pCQyw2QkFBTSxDQUFDQyxRQUFQLENBQWdCRixNQUFoQjtBQUNIO0FBQ0osS0FYTSxDQUFQO0FBWUgsR0FoQkQ7QUFpQkgiLCJmaWxlIjoiLi9hcHAvdXBkYXRlcy9jaGFubmVsLXN3aXRjaGVyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCByZXF1ZXN0IGZyb20gJy4uL3V0aWxzL3JlcXVlc3QnO1xuXG5jb25zdCBzd2l0Y2hlciA9ICQoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiY2hhbm5lbC1zd2l0Y2hcIl0nKTtcblxuaWYgKHN3aXRjaGVyKSB7XG4gICAgc3dpdGNoZXIub24oJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICBsZXQgcmFkaW8gPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGxldCB1cmwgPSBgJHtyYWRpby5wYXJlbnQoJ1tkYXRhLXVybF0nKS5kYXRhKCd1cmwnKX1gO1xuXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICB0YXNrOiAnZ3BtUmVsZWFzZScsXG4gICAgICAgICAgICAgICAgcmVsZWFzZTogcmFkaW8udmFsKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucmVsb2FkKSB7XG4gICAgICAgICAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/updates/channel-switcher.js\n");
/***/ }),
/***/ "./app/updates/check.js":
/*!******************************!*\
!*** ./app/updates/check.js ***!
\******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_gpm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/gpm */ \"./app/utils/gpm.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_toastr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/toastr */ \"./app/utils/toastr.js\");\n\n\n\n // Check for updates trigger\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-gpm-checkupdates]').on('click', function () {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n element.find('i').addClass('fa-spin');\n _utils_gpm__WEBPACK_IMPORTED_MODULE_1__.Instance.fetch(function (response) {\n element.find('i').removeClass('fa-spin');\n var payload = response.payload;\n\n if (!payload) {\n return;\n }\n\n if (!payload.grav.isUpdatable && !payload.resources.total) {\n _utils_toastr__WEBPACK_IMPORTED_MODULE_3__.default.success(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.EVERYTHING_UP_TO_DATE);\n } else {\n var grav = payload.grav.isUpdatable ? 'Grav v' + payload.grav.available : '';\n var resources = payload.resources.total ? payload.resources.total + ' ' + grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.UPDATES_ARE_AVAILABLE : '';\n\n if (!resources) {\n grav += ' ' + grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.IS_AVAILABLE_FOR_UPDATE;\n }\n\n _utils_toastr__WEBPACK_IMPORTED_MODULE_3__.default.info(grav + (grav && resources ? ' ' + grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.AND + ' ' : '') + resources);\n }\n }, true);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvY2hlY2suanM/MzQwOSJdLCJuYW1lcyI6WyIkIiwib24iLCJlbGVtZW50IiwiZmluZCIsImFkZENsYXNzIiwiZ3BtIiwicmVzcG9uc2UiLCJyZW1vdmVDbGFzcyIsInBheWxvYWQiLCJncmF2IiwiaXNVcGRhdGFibGUiLCJyZXNvdXJjZXMiLCJ0b3RhbCIsInRvYXN0ciIsInRyYW5zbGF0aW9ucyIsImF2YWlsYWJsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtDQUdBOztBQUNBQSw2Q0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkJDLEVBQTdCLENBQWdDLE9BQWhDLEVBQXlDLFlBQVc7QUFDaEQsTUFBSUMsT0FBTyxHQUFHRiw2Q0FBQyxDQUFDLElBQUQsQ0FBZjtBQUNBRSxTQUFPLENBQUNDLElBQVIsQ0FBYSxHQUFiLEVBQWtCQyxRQUFsQixDQUEyQixTQUEzQjtBQUVBQyx3REFBQSxDQUFVLFVBQUNDLFFBQUQsRUFBYztBQUNwQkosV0FBTyxDQUFDQyxJQUFSLENBQWEsR0FBYixFQUFrQkksV0FBbEIsQ0FBOEIsU0FBOUI7QUFDQSxRQUFJQyxPQUFPLEdBQUdGLFFBQVEsQ0FBQ0UsT0FBdkI7O0FBRUEsUUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFBRTtBQUFTOztBQUN6QixRQUFJLENBQUNBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhQyxXQUFkLElBQTZCLENBQUNGLE9BQU8sQ0FBQ0csU0FBUixDQUFrQkMsS0FBcEQsRUFBMkQ7QUFDdkRDLGdFQUFBLENBQWVDLHdGQUFmO0FBQ0gsS0FGRCxNQUVPO0FBQ0gsVUFBSUwsSUFBSSxHQUFHRCxPQUFPLENBQUNDLElBQVIsQ0FBYUMsV0FBYixHQUEyQixXQUFXRixPQUFPLENBQUNDLElBQVIsQ0FBYU0sU0FBbkQsR0FBK0QsRUFBMUU7QUFDQSxVQUFJSixTQUFTLEdBQUdILE9BQU8sQ0FBQ0csU0FBUixDQUFrQkMsS0FBbEIsR0FBMEJKLE9BQU8sQ0FBQ0csU0FBUixDQUFrQkMsS0FBbEIsR0FBMEIsR0FBMUIsR0FBZ0NFLHdGQUExRCxHQUE0RyxFQUE1SDs7QUFFQSxVQUFJLENBQUNILFNBQUwsRUFBZ0I7QUFBRUYsWUFBSSxJQUFJLE1BQU1LLDBGQUFkO0FBQWtFOztBQUNwRkQsNkRBQUEsQ0FBWUosSUFBSSxJQUFJQSxJQUFJLElBQUlFLFNBQVIsR0FBb0IsTUFBTUcsc0VBQU4sR0FBc0MsR0FBMUQsR0FBZ0UsRUFBcEUsQ0FBSixHQUE4RUgsU0FBMUY7QUFDSDtBQUNKLEdBZEQsRUFjRyxJQWRIO0FBZUgsQ0FuQkQiLCJmaWxlIjoiLi9hcHAvdXBkYXRlcy9jaGVjay5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgeyBJbnN0YW5jZSBhcyBncG0gfSBmcm9tICcuLi91dGlscy9ncG0nO1xuaW1wb3J0IHsgdHJhbnNsYXRpb25zIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IHRvYXN0ciBmcm9tICcuLi91dGlscy90b2FzdHInO1xuXG4vLyBDaGVjayBmb3IgdXBkYXRlcyB0cmlnZ2VyXG4kKCdbZGF0YS1ncG0tY2hlY2t1cGRhdGVzXScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgIGxldCBlbGVtZW50ID0gJCh0aGlzKTtcbiAgICBlbGVtZW50LmZpbmQoJ2knKS5hZGRDbGFzcygnZmEtc3BpbicpO1xuXG4gICAgZ3BtLmZldGNoKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBlbGVtZW50LmZpbmQoJ2knKS5yZW1vdmVDbGFzcygnZmEtc3BpbicpO1xuICAgICAgICBsZXQgcGF5bG9hZCA9IHJlc3BvbnNlLnBheWxvYWQ7XG5cbiAgICAgICAgaWYgKCFwYXlsb2FkKSB7IHJldHVybjsgfVxuICAgICAgICBpZiAoIXBheWxvYWQuZ3Jhdi5pc1VwZGF0YWJsZSAmJiAhcGF5bG9hZC5yZXNvdXJjZXMudG90YWwpIHtcbiAgICAgICAgICAgIHRvYXN0ci5zdWNjZXNzKHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRVZFUllUSElOR19VUF9UT19EQVRFKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBncmF2ID0gcGF5bG9hZC5ncmF2LmlzVXBkYXRhYmxlID8gJ0dyYXYgdicgKyBwYXlsb2FkLmdyYXYuYXZhaWxhYmxlIDogJyc7XG4gICAgICAgICAgICB2YXIgcmVzb3VyY2VzID0gcGF5bG9hZC5yZXNvdXJjZXMudG90YWwgPyBwYXlsb2FkLnJlc291cmNlcy50b3RhbCArICcgJyArIHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVVBEQVRFU19BUkVfQVZBSUxBQkxFIDogJyc7XG5cbiAgICAgICAgICAgIGlmICghcmVzb3VyY2VzKSB7IGdyYXYgKz0gJyAnICsgdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5JU19BVkFJTEFCTEVfRk9SX1VQREFURTsgfVxuICAgICAgICAgICAgdG9hc3RyLmluZm8oZ3JhdiArIChncmF2ICYmIHJlc291cmNlcyA/ICcgJyArIHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uQU5EICsgJyAnIDogJycpICsgcmVzb3VyY2VzKTtcbiAgICAgICAgfVxuICAgIH0sIHRydWUpO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/updates/check.js\n");
/***/ }),
/***/ "./app/updates/feed.js":
/*!*****************************!*\
!*** ./app/updates/feed.js ***!
\*****************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar URI = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/ajax.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"getNewsFeed\");\n\nvar Feed = /*#__PURE__*/function () {\n function Feed() {\n _classCallCheck(this, Feed);\n\n this.data = null;\n }\n\n _createClass(Feed, [{\n key: \"fetch\",\n value: function fetch() {\n var _this = this;\n\n var refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(URI, {\n method: 'post',\n body: {\n refresh: refresh\n }\n }, function (response) {\n _this.data = response;\n callback(response);\n });\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _refresh = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var feed = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#news-feed .widget-content');\n\n if (!feed.length) {\n return;\n }\n\n var loader = feed.find('.widget-loader');\n loader.find('div').remove();\n loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin');\n loader.show();\n feed.find('> ul').hide();\n\n if (!this.data || this.data.error || _refresh) {\n this.fetch(_refresh, this.updateContent.bind(this));\n } else {\n this.updateContent();\n }\n }\n }, {\n key: \"updateContent\",\n value: function updateContent() {\n var feed = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#news-feed .widget-content');\n\n if (!feed.length) {\n return;\n }\n\n var loader = feed.find('.widget-loader').hide();\n var content = feed.find('> ul').empty().show();\n\n if (this.data.error || this.data.status === 'error') {\n loader.show().find('div').remove();\n loader.find('.fa-refresh').removeClass('fa-refresh fa-spin').addClass('fa-warning');\n loader.append(\"
\".concat(this.data.error ? this.data.error.message : this.data.message || 'Unable to download news feed', \"
\"));\n return;\n }\n\n if (this.data && this.data.feed_data) {\n content.append(this.data.feed_data);\n }\n }\n }]);\n\n return Feed;\n}();\n\nvar feed = new Feed();\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n return feed.refresh();\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-refresh=\"feed\"]', function (event) {\n event.preventDefault();\n feed.refresh(true);\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (feed);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvZmVlZC5qcz9mMTVlIl0sIm5hbWVzIjpbIlVSSSIsImNvbmZpZyIsIkZlZWQiLCJkYXRhIiwicmVmcmVzaCIsImNhbGxiYWNrIiwicmVxdWVzdCIsIm1ldGhvZCIsImJvZHkiLCJyZXNwb25zZSIsImZlZWQiLCIkIiwibGVuZ3RoIiwibG9hZGVyIiwiZmluZCIsInJlbW92ZSIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJzaG93IiwiaGlkZSIsImVycm9yIiwiZmV0Y2giLCJ1cGRhdGVDb250ZW50IiwiYmluZCIsImNvbnRlbnQiLCJlbXB0eSIsInN0YXR1cyIsImFwcGVuZCIsIm1lc3NhZ2UiLCJmZWVkX2RhdGEiLCJkb2N1bWVudCIsInJlYWR5Iiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxHQUFHLGFBQU1DLGlFQUFOLDRCQUFnREEseURBQWhELGdCQUFUOztJQUVNQyxJO0FBQ0Ysa0JBQWM7QUFBQTs7QUFDVixTQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNIOzs7OzRCQUVnRDtBQUFBOztBQUFBLFVBQTNDQyxPQUEyQyx1RUFBakMsS0FBaUM7QUFBQSxVQUExQkMsUUFBMEIsdUVBQWYsWUFBVyxDQUFFLENBQUU7QUFDN0NDLDZEQUFPLENBQUNOLEdBQUQsRUFBTTtBQUNUTyxjQUFNLEVBQUUsTUFEQztBQUVUQyxZQUFJLEVBQUU7QUFBRUosaUJBQU8sRUFBUEE7QUFBRjtBQUZHLE9BQU4sRUFHSixVQUFDSyxRQUFELEVBQWM7QUFDYixhQUFJLENBQUNOLElBQUwsR0FBWU0sUUFBWjtBQUNBSixnQkFBUSxDQUFDSSxRQUFELENBQVI7QUFDSCxPQU5NLENBQVA7QUFPSDs7OzhCQUV3QjtBQUFBLFVBQWpCTCxRQUFpQix1RUFBUCxLQUFPOztBQUNyQixVQUFNTSxJQUFJLEdBQUdDLDZDQUFDLENBQUMsNEJBQUQsQ0FBZDs7QUFDQSxVQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBVixFQUFrQjtBQUFFO0FBQVM7O0FBRTdCLFVBQUlDLE1BQU0sR0FBR0gsSUFBSSxDQUFDSSxJQUFMLENBQVUsZ0JBQVYsQ0FBYjtBQUNBRCxZQUFNLENBQUNDLElBQVAsQ0FBWSxLQUFaLEVBQW1CQyxNQUFuQjtBQUNBRixZQUFNLENBQUNDLElBQVAsQ0FBWSxhQUFaLEVBQTJCRSxXQUEzQixDQUF1QyxZQUF2QyxFQUFxREMsUUFBckQsQ0FBOEQsb0JBQTlEO0FBQ0FKLFlBQU0sQ0FBQ0ssSUFBUDtBQUVBUixVQUFJLENBQUNJLElBQUwsQ0FBVSxNQUFWLEVBQWtCSyxJQUFsQjs7QUFFQSxVQUFJLENBQUMsS0FBS2hCLElBQU4sSUFBYyxLQUFLQSxJQUFMLENBQVVpQixLQUF4QixJQUFpQ2hCLFFBQXJDLEVBQThDO0FBQzFDLGFBQUtpQixLQUFMLENBQVdqQixRQUFYLEVBQW9CLEtBQUtrQixhQUFMLENBQW1CQyxJQUFuQixDQUF3QixJQUF4QixDQUFwQjtBQUNILE9BRkQsTUFFTztBQUNILGFBQUtELGFBQUw7QUFDSDtBQUNKOzs7b0NBRWU7QUFDWixVQUFNWixJQUFJLEdBQUdDLDZDQUFDLENBQUMsNEJBQUQsQ0FBZDs7QUFDQSxVQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBVixFQUFrQjtBQUFFO0FBQVM7O0FBRTdCLFVBQUlDLE1BQU0sR0FBR0gsSUFBSSxDQUFDSSxJQUFMLENBQVUsZ0JBQVYsRUFBNEJLLElBQTVCLEVBQWI7QUFDQSxVQUFJSyxPQUFPLEdBQUdkLElBQUksQ0FBQ0ksSUFBTCxDQUFVLE1BQVYsRUFBa0JXLEtBQWxCLEdBQTBCUCxJQUExQixFQUFkOztBQUVBLFVBQUksS0FBS2YsSUFBTCxDQUFVaUIsS0FBVixJQUFtQixLQUFLakIsSUFBTCxDQUFVdUIsTUFBVixLQUFxQixPQUE1QyxFQUFxRDtBQUNqRGIsY0FBTSxDQUFDSyxJQUFQLEdBQWNKLElBQWQsQ0FBbUIsS0FBbkIsRUFBMEJDLE1BQTFCO0FBQ0FGLGNBQU0sQ0FBQ0MsSUFBUCxDQUFZLGFBQVosRUFBMkJFLFdBQTNCLENBQXVDLG9CQUF2QyxFQUE2REMsUUFBN0QsQ0FBc0UsWUFBdEU7QUFDQUosY0FBTSxDQUFDYyxNQUFQLGdCQUFzQixLQUFLeEIsSUFBTCxDQUFVaUIsS0FBVixHQUFrQixLQUFLakIsSUFBTCxDQUFVaUIsS0FBVixDQUFnQlEsT0FBbEMsR0FBNEMsS0FBS3pCLElBQUwsQ0FBVXlCLE9BQVYsSUFBcUIsOEJBQXZGO0FBRUE7QUFDSDs7QUFFRCxVQUFJLEtBQUt6QixJQUFMLElBQWEsS0FBS0EsSUFBTCxDQUFVMEIsU0FBM0IsRUFBc0M7QUFDbENMLGVBQU8sQ0FBQ0csTUFBUixDQUFlLEtBQUt4QixJQUFMLENBQVUwQixTQUF6QjtBQUNIO0FBQ0o7Ozs7OztBQUdMLElBQUluQixJQUFJLEdBQUcsSUFBSVIsSUFBSixFQUFYO0FBQ0FTLDZDQUFDLENBQUNtQixRQUFELENBQUQsQ0FBWUMsS0FBWixDQUFrQjtBQUFBLFNBQU1yQixJQUFJLENBQUNOLE9BQUwsRUFBTjtBQUFBLENBQWxCO0FBQ0FPLDZDQUFDLENBQUNtQixRQUFELENBQUQsQ0FBWUUsRUFBWixDQUFlLE9BQWYsRUFBd0IsdUJBQXhCLEVBQWlELFVBQUNDLEtBQUQsRUFBVztBQUN4REEsT0FBSyxDQUFDQyxjQUFOO0FBQ0F4QixNQUFJLENBQUNOLE9BQUwsQ0FBYSxJQUFiO0FBQ0gsQ0FIRDtBQUtBLGlFQUFlTSxJQUFmIiwiZmlsZSI6Ii4vYXBwL3VwZGF0ZXMvZmVlZC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi91dGlscy9yZXF1ZXN0JztcblxuY29uc3QgVVJJID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS9hamF4Lmpzb24vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1nZXROZXdzRmVlZGA7XG5cbmNsYXNzIEZlZWQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmRhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIGZldGNoKHJlZnJlc2ggPSBmYWxzZSwgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHt9KSB7XG4gICAgICAgIHJlcXVlc3QoVVJJLCB7XG4gICAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICAgIGJvZHk6IHsgcmVmcmVzaCB9XG4gICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlZnJlc2gocmVmcmVzaCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGZlZWQgPSAkKCcjbmV3cy1mZWVkIC53aWRnZXQtY29udGVudCcpO1xuICAgICAgICBpZiAoIWZlZWQubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGxldCBsb2FkZXIgPSBmZWVkLmZpbmQoJy53aWRnZXQtbG9hZGVyJyk7XG4gICAgICAgIGxvYWRlci5maW5kKCdkaXYnKS5yZW1vdmUoKTtcbiAgICAgICAgbG9hZGVyLmZpbmQoJy5mYS13YXJuaW5nJykucmVtb3ZlQ2xhc3MoJ2ZhLXdhcm5pbmcnKS5hZGRDbGFzcygnZmEtcmVmcmVzaCBmYS1zcGluJyk7XG4gICAgICAgIGxvYWRlci5zaG93KCk7XG5cbiAgICAgICAgZmVlZC5maW5kKCc+IHVsJykuaGlkZSgpO1xuXG4gICAgICAgIGlmICghdGhpcy5kYXRhIHx8IHRoaXMuZGF0YS5lcnJvciB8fCByZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoKHJlZnJlc2gsIHRoaXMudXBkYXRlQ29udGVudC5iaW5kKHRoaXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgZmVlZCA9ICQoJyNuZXdzLWZlZWQgLndpZGdldC1jb250ZW50Jyk7XG4gICAgICAgIGlmICghZmVlZC5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgbGV0IGxvYWRlciA9IGZlZWQuZmluZCgnLndpZGdldC1sb2FkZXInKS5oaWRlKCk7XG4gICAgICAgIGxldCBjb250ZW50ID0gZmVlZC5maW5kKCc+IHVsJykuZW1wdHkoKS5zaG93KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lcnJvciB8fCB0aGlzLmRhdGEuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICBsb2FkZXIuc2hvdygpLmZpbmQoJ2RpdicpLnJlbW92ZSgpO1xuICAgICAgICAgICAgbG9hZGVyLmZpbmQoJy5mYS1yZWZyZXNoJykucmVtb3ZlQ2xhc3MoJ2ZhLXJlZnJlc2ggZmEtc3BpbicpLmFkZENsYXNzKCdmYS13YXJuaW5nJyk7XG4gICAgICAgICAgICBsb2FkZXIuYXBwZW5kKGA8ZGl2PiR7dGhpcy5kYXRhLmVycm9yID8gdGhpcy5kYXRhLmVycm9yLm1lc3NhZ2UgOiB0aGlzLmRhdGEubWVzc2FnZSB8fCAnVW5hYmxlIHRvIGRvd25sb2FkIG5ld3MgZmVlZCd9PC9kaXY+YCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmZlZWRfZGF0YSkge1xuICAgICAgICAgICAgY29udGVudC5hcHBlbmQodGhpcy5kYXRhLmZlZWRfZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmxldCBmZWVkID0gbmV3IEZlZWQoKTtcbiQoZG9jdW1lbnQpLnJlYWR5KCgpID0+IGZlZWQucmVmcmVzaCgpKTtcbiQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1yZWZyZXNoPVwiZmVlZFwiXScsIChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZmVlZC5yZWZyZXNoKHRydWUpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZlZWQ7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/updates/feed.js\n");
/***/ }),
/***/ "./app/updates/index.js":
/*!******************************!*\
!*** ./app/updates/index.js ***!
\******************************/
/*! namespace exports */
/*! export Feed [provided] [no usage info] [missing usage info prevents renaming] -> ./app/updates/feed.js .default */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export Notifications [provided] [no usage info] [missing usage info prevents renaming] -> ./app/updates/notifications.js .default */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.d, __webpack_require__.r, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ Updates,\n/* harmony export */ \"Instance\": () => /* binding */ Instance,\n/* harmony export */ \"Notifications\": () => /* reexport safe */ _notifications__WEBPACK_IMPORTED_MODULE_4__.default,\n/* harmony export */ \"Feed\": () => /* reexport safe */ _feed__WEBPACK_IMPORTED_MODULE_5__.default\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var mout_array_unique__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! mout/array/unique */ \"./node_modules/mout/array/unique.js\");\n/* harmony import */ var mout_array_unique__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(mout_array_unique__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_gpm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/gpm */ \"./app/utils/gpm.js\");\n/* harmony import */ var _notifications__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./notifications */ \"./app/updates/notifications.js\");\n/* harmony import */ var _feed__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./feed */ \"./app/updates/feed.js\");\n/* harmony import */ var _check__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./check */ \"./app/updates/check.js\");\n/* harmony import */ var _update__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./update */ \"./app/updates/update.js\");\n/* harmony import */ var _channel_switcher__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./channel-switcher */ \"./app/updates/channel-switcher.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\nvar Updates = /*#__PURE__*/function () {\n function Updates() {\n var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Updates);\n\n this.setPayload(payload);\n this.task = \"task\".concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.param_sep);\n this.updateURL = '';\n }\n\n _createClass(Updates, [{\n key: \"setPayload\",\n value: function setPayload() {\n var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.payload = payload;\n return this;\n }\n }, {\n key: \"fetch\",\n value: function fetch() {\n var _this = this;\n\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n _utils_gpm__WEBPACK_IMPORTED_MODULE_3__.Instance.fetch(function (response) {\n return _this.setPayload(response);\n }, force);\n return this;\n }\n }, {\n key: \"maintenance\",\n value: function maintenance() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'hide';\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#updates [data-update-packages]');\n element[mode === 'show' ? 'fadeIn' : 'fadeOut']();\n\n if (mode === 'hide') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove();\n }\n\n return this;\n }\n }, {\n key: \"grav\",\n value: function grav() {\n var payload = this.payload.grav;\n\n if (payload && payload.isUpdatable) {\n var task = this.task;\n var bar = '';\n\n if (!payload.isSymlink) {\n this.updateURL = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.base_url_relative, \"/update.json/\").concat(task, \"updategrav/admin-nonce\").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.param_sep).concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.config.admin_nonce);\n bar += \"
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.UPDATE_GRAV_NOW, \" (5s) \");\n } else {\n bar += \"
\");\n }\n\n bar += \"\\n Grav
v\".concat(payload.available, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE, \"!
(\").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.CURRENT, \" v\").concat(payload.version, \") \\n \");\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-gpm-grav]').removeClass('hidden');\n\n if (element.is(':empty')) {\n element.hide();\n }\n\n element.addClass('grav').html(\"\".concat(bar)).slideDown(150, function () {\n var c = 5;\n var x = setInterval(function () {\n c -= 1;\n element.find('.pointer-events-none .cnt-down').text('(' + c + 's)');\n }, 1000);\n setTimeout(function () {\n clearInterval(x);\n element.find('.pointer-events-none .cnt-down').remove();\n element.find('.pointer-events-none').removeClass('pointer-events-none');\n }, 5000);\n }).parent('#messages').addClass('default-box-shadow');\n }\n\n return this;\n }\n }, {\n key: \"resources\",\n value: function resources() {\n if (!this.payload || !this.payload.resources || !this.payload.resources.total) {\n return this.maintenance('hide');\n }\n\n var is_current_package_latest = true;\n var map = ['plugins', 'themes'];\n var singles = ['plugin', 'theme'];\n var _this$payload$resourc = this.payload.resources,\n plugins = _this$payload$resourc.plugins,\n themes = _this$payload$resourc.themes;\n\n if (!this.payload.resources.total) {\n return this;\n }\n\n [plugins, themes].forEach(function (resources, index) {\n if (!resources || Array.isArray(resources)) {\n return;\n }\n\n var length = Object.keys(resources).length;\n var type = map[index]; // sidebar\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#admin-menu a[href$=\\\"/\".concat(map[index], \"\\\"]\")).find('.badges').addClass('with-updates').find('.badge.updates').text(length);\n var type_translation = ''; // update all\n\n if (type === 'plugins') {\n type_translation = grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.PLUGINS;\n } else {\n type_translation = grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.THEMES;\n }\n\n var updateAll = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\".grav-update.\".concat(type));\n updateAll.css('display', 'block').html(\"\\n
\\n \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.UPDATE, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.ALL, \" \").concat(type_translation, \" \\n \\n \").concat(length, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.OF_YOUR, \" \").concat(type_translation.toLowerCase(), \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE, \"\\n
\\n \"));\n var existing_slugs = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-update-packages]').attr('data-packages-slugs') || '';\n\n if (existing_slugs) {\n existing_slugs = existing_slugs.split(',');\n } else {\n existing_slugs = [];\n }\n\n var slugs = mout_array_unique__WEBPACK_IMPORTED_MODULE_1___default()(existing_slugs.concat(Object.keys(resources))).join();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-update-packages]').attr('data-packages-slugs', \"\".concat(slugs));\n Object.keys(resources).forEach(function (item) {\n // listing page\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-gpm-\".concat(singles[index], \"=\\\"\").concat(item, \"\\\"]\"));\n var element = container.find('.gpm-name');\n var url = element.find('a');\n var content_wrapper = container.parents('.content-wrapper');\n\n if (type === 'plugins' && !element.find('.badge.update').length) {\n element.append(\"
\").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.UPDATE_AVAILABLE, \"! \"));\n content_wrapper.addClass('has-updates');\n } else if (type === 'themes') {\n element.append(\"
\"));\n content_wrapper.addClass('has-updates');\n } // details page\n\n\n if (container.length) {\n var details = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\".grav-update.\".concat(singles[index]));\n\n if (details.length) {\n var releaseType = resources[item].type === 'testing' ? '
test release ' : '';\n details.html(\"\\n
\\n \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.UPDATE, \" \").concat(singles[index].charAt(0).toUpperCase() + singles[index].substr(1).toLowerCase(), \" \\n \\n v\").concat(resources[item].available, \" \").concat(releaseType, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.OF_THIS, \" \").concat(singles[index], \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_2__.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE, \"!\\n
\\n \")).css('display', 'block');\n is_current_package_latest = false;\n }\n }\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-update-packages]').removeClass('hidden');\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.content-wrapper').addClass('updates-checked');\n\n if (!is_current_package_latest) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.warning-reinstall-not-latest-release').removeClass('hidden');\n }\n }\n }]);\n\n return Updates;\n}();\n\n\nvar Instance = new Updates();\n // automatically refresh UI for updates (graph, sidebar, plugin/themes pages) after every fetch\n\n_utils_gpm__WEBPACK_IMPORTED_MODULE_3__.Instance.on('fetched', function (response, raw) {\n Instance.setPayload(response.payload || {});\n Instance.grav().resources();\n});\n\nif (grav_config__WEBPACK_IMPORTED_MODULE_2__.config.enable_auto_updates_check === '1') {\n _utils_gpm__WEBPACK_IMPORTED_MODULE_3__.Instance.fetch();\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvaW5kZXguanM/MjBmMCJdLCJuYW1lcyI6WyJVcGRhdGVzIiwicGF5bG9hZCIsInNldFBheWxvYWQiLCJ0YXNrIiwiY29uZmlnIiwidXBkYXRlVVJMIiwiZm9yY2UiLCJncG0iLCJyZXNwb25zZSIsIm1vZGUiLCJlbGVtZW50IiwiJCIsInJlbW92ZUNsYXNzIiwiZmluZCIsInJlbW92ZSIsImdyYXYiLCJpc1VwZGF0YWJsZSIsImJhciIsImlzU3ltbGluayIsInRyYW5zbGF0aW9ucyIsImF2YWlsYWJsZSIsInZlcnNpb24iLCJpcyIsImhpZGUiLCJhZGRDbGFzcyIsImh0bWwiLCJzbGlkZURvd24iLCJjIiwieCIsInNldEludGVydmFsIiwidGV4dCIsInNldFRpbWVvdXQiLCJjbGVhckludGVydmFsIiwicGFyZW50IiwicmVzb3VyY2VzIiwidG90YWwiLCJtYWludGVuYW5jZSIsImlzX2N1cnJlbnRfcGFja2FnZV9sYXRlc3QiLCJtYXAiLCJzaW5nbGVzIiwicGx1Z2lucyIsInRoZW1lcyIsImZvckVhY2giLCJpbmRleCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIk9iamVjdCIsImtleXMiLCJ0eXBlIiwidHlwZV90cmFuc2xhdGlvbiIsInVwZGF0ZUFsbCIsImNzcyIsImpvaW4iLCJ0b0xvd2VyQ2FzZSIsImV4aXN0aW5nX3NsdWdzIiwiYXR0ciIsInNwbGl0Iiwic2x1Z3MiLCJ1bmlxdWUiLCJjb25jYXQiLCJpdGVtIiwiY29udGFpbmVyIiwidXJsIiwiY29udGVudF93cmFwcGVyIiwicGFyZW50cyIsImFwcGVuZCIsImRldGFpbHMiLCJyZWxlYXNlVHlwZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyIiwiSW5zdGFuY2UiLCJyYXciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7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QUhEOztBQUtBLElBQUk5Qix5RUFBQSxLQUFxQyxHQUF6QyxFQUE4QztBQUMxQ0csd0RBQUE7QUFDSCIsImZpbGUiOiIuL2FwcC91cGRhdGVzL2luZGV4LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB1bmlxdWUgZnJvbSAnbW91dC9hcnJheS91bmlxdWUnO1xuaW1wb3J0IHsgY29uZmlnLCB0cmFuc2xhdGlvbnMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgeyBJbnN0YW5jZSBhcyBncG0gfSBmcm9tICcuLi91dGlscy9ncG0nO1xuaW1wb3J0IE5vdGlmaWNhdGlvbnMgZnJvbSAnLi9ub3RpZmljYXRpb25zJztcblxuaW1wb3J0IEZlZWQgZnJvbSAnLi9mZWVkJztcbmltcG9ydCAnLi9jaGVjayc7XG5pbXBvcnQgJy4vdXBkYXRlJztcbmltcG9ydCAnLi9jaGFubmVsLXN3aXRjaGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRlcyB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCA9IHt9KSB7XG4gICAgICAgIHRoaXMuc2V0UGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgdGhpcy50YXNrID0gYHRhc2ske2NvbmZpZy5wYXJhbV9zZXB9YDtcbiAgICAgICAgdGhpcy51cGRhdGVVUkwgPSAnJztcbiAgICB9XG5cbiAgICBzZXRQYXlsb2FkKHBheWxvYWQgPSB7fSkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBwYXlsb2FkO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZldGNoKGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgZ3BtLmZldGNoKChyZXNwb25zZSkgPT4gdGhpcy5zZXRQYXlsb2FkKHJlc3BvbnNlKSwgZm9yY2UpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG1haW50ZW5hbmNlKG1vZGUgPSAnaGlkZScpIHtcbiAgICAgICAgbGV0IGVsZW1lbnQgPSAkKCcjdXBkYXRlcyBbZGF0YS11cGRhdGUtcGFja2FnZXNdJyk7XG5cbiAgICAgICAgZWxlbWVudFttb2RlID09PSAnc2hvdycgPyAnZmFkZUluJyA6ICdmYWRlT3V0J10oKTtcblxuICAgICAgICBpZiAobW9kZSA9PT0gJ2hpZGUnKSB7XG4gICAgICAgICAgICAkKCcuYmFkZ2VzLndpdGgtdXBkYXRlcycpLnJlbW92ZUNsYXNzKCd3aXRoLXVwZGF0ZXMnKS5maW5kKCcuYmFkZ2UudXBkYXRlcycpLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZ3JhdigpIHtcbiAgICAgICAgbGV0IHBheWxvYWQgPSB0aGlzLnBheWxvYWQuZ3JhdjtcblxuICAgICAgICBpZiAocGF5bG9hZCAmJiBwYXlsb2FkLmlzVXBkYXRhYmxlKSB7XG4gICAgICAgICAgICBsZXQgdGFzayA9IHRoaXMudGFzaztcbiAgICAgICAgICAgIGxldCBiYXIgPSAnJztcblxuICAgICAgICAgICAgaWYgKCFwYXlsb2FkLmlzU3ltbGluaykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVVJMID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS91cGRhdGUuanNvbi8ke3Rhc2t9dXBkYXRlZ3Jhdi9hZG1pbi1ub25jZSR7Y29uZmlnLnBhcmFtX3NlcH0ke2NvbmZpZy5hZG1pbl9ub25jZX1gO1xuICAgICAgICAgICAgICAgIGJhciArPSBgPGJ1dHRvbiBkYXRhLXJlbW9kYWwtdGFyZ2V0PVwidXBkYXRlLWdyYXZcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgc2Vjb25kYXJ5IHBvaW50ZXItZXZlbnRzLW5vbmVcIiBpZD1cImdyYXYtdXBkYXRlLWJ1dHRvblwiPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5VUERBVEVfR1JBVl9OT1d9IDxzcGFuIGNsYXNzPVwiY250LWRvd25cIj4oNXMpPC9zcGFuPjwvYnV0dG9uPmA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhciArPSBgPHNwYW4gY2xhc3M9XCJoaW50LS1sZWZ0XCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCIgZGF0YS1oaW50PVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkdSQVZfU1lNQk9MSUNBTExZX0xJTktFRH1cIj48aSBjbGFzcz1cImZhIGZhLWZ3IGZhLWxpbmtcIj48L2k+PC9zcGFuPmA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJhciArPSBgXG4gICAgICAgICAgICAgICAgR3JhdiA8Yj52JHtwYXlsb2FkLmF2YWlsYWJsZX08L2I+ICR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5JU19OT1dfQVZBSUxBQkxFfSEgPHNwYW4gY2xhc3M9XCJsZXNzXCI+KCR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5DVVJSRU5UfSB2JHtwYXlsb2FkLnZlcnNpb259KTwvc3Bhbj5cbiAgICAgICAgICAgIGA7XG5cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJCgnW2RhdGEtZ3BtLWdyYXZdJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pcygnOmVtcHR5JykpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmhpZGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudFxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnZ3JhdicpXG4gICAgICAgICAgICAgICAgLmh0bWwoYCR7YmFyfWApXG4gICAgICAgICAgICAgICAgLnNsaWRlRG93bigxNTAsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IDU7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoJy5wb2ludGVyLWV2ZW50cy1ub25lIC5jbnQtZG93bicpLnRleHQoJygnICsgYyArICdzKScpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcblxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuZmluZCgnLnBvaW50ZXItZXZlbnRzLW5vbmUgLmNudC1kb3duJykucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbmQoJy5wb2ludGVyLWV2ZW50cy1ub25lJykucmVtb3ZlQ2xhc3MoJ3BvaW50ZXItZXZlbnRzLW5vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucGFyZW50KCcjbWVzc2FnZXMnKS5hZGRDbGFzcygnZGVmYXVsdC1ib3gtc2hhZG93Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICByZXNvdXJjZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXlsb2FkIHx8ICF0aGlzLnBheWxvYWQucmVzb3VyY2VzIHx8ICF0aGlzLnBheWxvYWQucmVzb3VyY2VzLnRvdGFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWludGVuYW5jZSgnaGlkZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzX2N1cnJlbnRfcGFja2FnZV9sYXRlc3QgPSB0cnVlO1xuICAgICAgICBsZXQgbWFwID0gWydwbHVnaW5zJywgJ3RoZW1lcyddO1xuICAgICAgICBsZXQgc2luZ2xlcyA9IFsncGx1Z2luJywgJ3RoZW1lJ107XG4gICAgICAgIGxldCB7IHBsdWdpbnMsIHRoZW1lcyB9ID0gdGhpcy5wYXlsb2FkLnJlc291cmNlcztcblxuICAgICAgICBpZiAoIXRoaXMucGF5bG9hZC5yZXNvdXJjZXMudG90YWwpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICBbcGx1Z2lucywgdGhlbWVzXS5mb3JFYWNoKGZ1bmN0aW9uKHJlc291cmNlcywgaW5kZXgpIHtcbiAgICAgICAgICAgIGlmICghcmVzb3VyY2VzIHx8IEFycmF5LmlzQXJyYXkocmVzb3VyY2VzKSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBPYmplY3Qua2V5cyhyZXNvdXJjZXMpLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCB0eXBlID0gbWFwW2luZGV4XTtcblxuICAgICAgICAgICAgLy8gc2lkZWJhclxuICAgICAgICAgICAgJChgI2FkbWluLW1lbnUgYVtocmVmJD1cIi8ke21hcFtpbmRleF19XCJdYClcbiAgICAgICAgICAgICAgICAuZmluZCgnLmJhZGdlcycpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCd3aXRoLXVwZGF0ZXMnKVxuICAgICAgICAgICAgICAgIC5maW5kKCcuYmFkZ2UudXBkYXRlcycpLnRleHQobGVuZ3RoKTtcblxuICAgICAgICAgICAgdmFyIHR5cGVfdHJhbnNsYXRpb24gPSAnJztcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBhbGxcblxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdwbHVnaW5zJykge1xuICAgICAgICAgICAgICAgIHR5cGVfdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlBMVUdJTlM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHR5cGVfdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlRIRU1FUztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHVwZGF0ZUFsbCA9ICQoYC5ncmF2LXVwZGF0ZS4ke3R5cGV9YCk7XG4gICAgICAgICAgICB1cGRhdGVBbGwuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJykuaHRtbChgXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBzZWNvbmRhcnlcIiBkYXRhLXJlbW9kYWwtdGFyZ2V0PVwidXBkYXRlLXBhY2thZ2VzXCIgZGF0YS1wYWNrYWdlcy1zbHVncz1cIiR7T2JqZWN0LmtleXMocmVzb3VyY2VzKS5qb2luKCl9XCIgZGF0YS0ke3NpbmdsZXNbaW5kZXhdfS1hY3Rpb249XCJzdGFydC1wYWNrYWdlcy11cGRhdGVcIj4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVVBEQVRFfSAke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uQUxMfSAke3R5cGVfdHJhbnNsYXRpb259PC9hPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnVsbGhvcm5cIj48L2k+XG4gICAgICAgICAgICAgICAgJHtsZW5ndGh9ICR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5PRl9ZT1VSfSAke3R5cGVfdHJhbnNsYXRpb24udG9Mb3dlckNhc2UoKX0gJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkhBVkVfQU5fVVBEQVRFX0FWQUlMQUJMRX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIGApO1xuXG4gICAgICAgICAgICBsZXQgZXhpc3Rpbmdfc2x1Z3MgPSAkKCdbZGF0YS11cGRhdGUtcGFja2FnZXNdJykuYXR0cignZGF0YS1wYWNrYWdlcy1zbHVncycpIHx8ICcnO1xuXG4gICAgICAgICAgICBpZiAoZXhpc3Rpbmdfc2x1Z3MpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ19zbHVncyA9IGV4aXN0aW5nX3NsdWdzLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nX3NsdWdzID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBzbHVncyA9IHVuaXF1ZShleGlzdGluZ19zbHVncy5jb25jYXQoT2JqZWN0LmtleXMocmVzb3VyY2VzKSkpLmpvaW4oKTtcbiAgICAgICAgICAgICQoJ1tkYXRhLXVwZGF0ZS1wYWNrYWdlc10nKS5hdHRyKCdkYXRhLXBhY2thZ2VzLXNsdWdzJywgYCR7c2x1Z3N9YCk7XG5cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc291cmNlcykuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICAgICAgLy8gbGlzdGluZyBwYWdlXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRhaW5lciA9ICQoYFtkYXRhLWdwbS0ke3NpbmdsZXNbaW5kZXhdfT1cIiR7aXRlbX1cIl1gKTtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGNvbnRhaW5lci5maW5kKCcuZ3BtLW5hbWUnKTtcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gZWxlbWVudC5maW5kKCdhJyk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnRfd3JhcHBlciA9IGNvbnRhaW5lci5wYXJlbnRzKCcuY29udGVudC13cmFwcGVyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ3BsdWdpbnMnICYmICFlbGVtZW50LmZpbmQoJy5iYWRnZS51cGRhdGUnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmQoYDxhIGNsYXNzPVwicGx1Z2luLXVwZGF0ZS1idXR0b25cIiBocmVmPVwiJHt1cmwuYXR0cignaHJlZicpfVwiPjxzcGFuIGNsYXNzPVwiYmFkZ2UgdXBkYXRlXCI+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVQREFURV9BVkFJTEFCTEV9ITwvc3Bhbj48L2E+YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfd3JhcHBlci5hZGRDbGFzcygnaGFzLXVwZGF0ZXMnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aGVtZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kKGA8ZGl2IGNsYXNzPVwiZ3BtLXJpYmJvblwiPjxhIGhyZWY9XCIke3VybC5hdHRyKCdocmVmJyl9XCI+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVQREFURS50b1VwcGVyQ2FzZSgpfTwvYT48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudF93cmFwcGVyLmFkZENsYXNzKCdoYXMtdXBkYXRlcycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRldGFpbHMgcGFnZVxuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxzID0gJChgLmdyYXYtdXBkYXRlLiR7c2luZ2xlc1tpbmRleF19YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGVhc2VUeXBlID0gcmVzb3VyY2VzW2l0ZW1dLnR5cGUgPT09ICd0ZXN0aW5nJyA/ICc8c3BhbiBjbGFzcz1cImdwbS10ZXN0aW5nXCI+dGVzdCByZWxlYXNlPC9zcGFuPicgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuaHRtbChgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIHNlY29uZGFyeVwiIGRhdGEtcmVtb2RhbC10YXJnZXQ9XCJ1cGRhdGUtcGFja2FnZXNcIiBkYXRhLXBhY2thZ2VzLXNsdWdzPVwiJHtpdGVtfVwiIGRhdGEtJHtzaW5nbGVzW2luZGV4XX0tYWN0aW9uPVwic3RhcnQtcGFja2FnZS1pbnN0YWxsYXRpb25cIj4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVVBEQVRFfSAke3NpbmdsZXNbaW5kZXhdLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2luZ2xlc1tpbmRleF0uc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCl9PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJ1bGxob3JuXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnYke3Jlc291cmNlc1tpdGVtXS5hdmFpbGFibGV9PC9zdHJvbmc+ICR7cmVsZWFzZVR5cGV9ICR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5PRl9USElTfSAke3NpbmdsZXNbaW5kZXhdfSAke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uSVNfTk9XX0FWQUlMQUJMRX0hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgYCkuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzX2N1cnJlbnRfcGFja2FnZV9sYXRlc3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkKCdbZGF0YS11cGRhdGUtcGFja2FnZXNdJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKCcuY29udGVudC13cmFwcGVyJykuYWRkQ2xhc3MoJ3VwZGF0ZXMtY2hlY2tlZCcpO1xuXG4gICAgICAgIGlmICghaXNfY3VycmVudF9wYWNrYWdlX2xhdGVzdCkge1xuICAgICAgICAgICAgJCgnLndhcm5pbmctcmVpbnN0YWxsLW5vdC1sYXRlc3QtcmVsZWFzZScpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubGV0IEluc3RhbmNlID0gbmV3IFVwZGF0ZXMoKTtcbmV4cG9ydCB7IEluc3RhbmNlLCBOb3RpZmljYXRpb25zLCBGZWVkIH07XG5cbi8vIGF1dG9tYXRpY2FsbHkgcmVmcmVzaCBVSSBmb3IgdXBkYXRlcyAoZ3JhcGgsIHNpZGViYXIsIHBsdWdpbi90aGVtZXMgcGFnZXMpIGFmdGVyIGV2ZXJ5IGZldGNoXG5ncG0ub24oJ2ZldGNoZWQnLCAocmVzcG9uc2UsIHJhdykgPT4ge1xuICAgIEluc3RhbmNlLnNldFBheWxvYWQocmVzcG9uc2UucGF5bG9hZCB8fCB7fSk7XG4gICAgSW5zdGFuY2UuZ3JhdigpLnJlc291cmNlcygpO1xufSk7XG5cbmlmIChjb25maWcuZW5hYmxlX2F1dG9fdXBkYXRlc19jaGVjayA9PT0gJzEnKSB7XG4gICAgZ3BtLmZldGNoKCk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/updates/index.js\n");
/***/ }),
/***/ "./app/updates/notifications.js":
/*!**************************************!*\
!*** ./app/updates/notifications.js ***!
\**************************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar canFetchNotifications = function canFetchNotifications() {\n return grav_config__WEBPACK_IMPORTED_MODULE_1__.config.notifications.enabled;\n};\n\nvar notificationsFilters = function notificationsFilters() {\n return grav_config__WEBPACK_IMPORTED_MODULE_1__.config.notifications.filters;\n};\n\nvar Notifications = /*#__PURE__*/function () {\n function Notifications() {\n _classCallCheck(this, Notifications);\n }\n\n _createClass(Notifications, [{\n key: \"fetch\",\n // Grav.default.Notifications.fetch()\n value: function fetch() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$filter = _ref.filter,\n filter = _ref$filter === void 0 ? notificationsFilters() : _ref$filter,\n _ref$refresh = _ref.refresh,\n refresh = _ref$refresh === void 0 ? false : _ref$refresh;\n\n if (!canFetchNotifications()) {\n return false;\n }\n\n var feed = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications');\n var loader = feed.find('.widget-loader');\n var content = feed.find('.widget-content > ul');\n loader.find('div').remove();\n loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin');\n loader.show();\n content.hide();\n\n var processNotifications = function processNotifications(response) {\n var notifications = response.notifications;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications').find('.widget-content > ul').empty();\n\n if (notifications) {\n Object.keys(notifications).forEach(function (location) {\n return Notifications.processLocation(location, notifications[location]);\n });\n }\n };\n\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"getNotifications\"), {\n method: 'post',\n body: {\n refresh: refresh,\n filter: filter\n }\n }, function (response) {\n processNotifications(response);\n })[\"catch\"](function () {\n var widget = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications .widget-content');\n widget.find('.widget-loader').find('div').remove();\n widget.find('.widget-loader').append('
Failed to retrieve notifications
').find('.fa-spin').removeClass('fa-spin fa-refresh').addClass('fa-warning');\n });\n }\n }], [{\n key: \"addShowAllInFeed\",\n value: function addShowAllInFeed() {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications ul').append('
Show all ');\n }\n }, {\n key: \"showNotificationInFeed\",\n value: function showNotificationInFeed(notification) {\n var notifications = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications').removeClass('hidden');\n var loader = notifications.find('.widget-loader').hide();\n var content = notifications.find('.widget-content > ul').show();\n loader.find('div').remove();\n loader.find('.fa-warning').removeClass('fa-warning').addClass('fa-refresh fa-spin');\n content.append(notification).find('li:nth-child(n+11)').addClass('hidden'); // hide all items > 10\n\n if (content.find('li.hidden').length) {\n Notifications.addShowAllInFeed();\n }\n }\n }, {\n key: \"showNotificationInTop\",\n value: function showNotificationInTop(notification) {\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.top-notifications-container');\n var dummy = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').html(notification);\n container.removeClass('hidden').append(dummy.children());\n dummy.children().slideDown(150);\n }\n }, {\n key: \"showNotificationInDashboard\",\n value: function showNotificationInDashboard(notification) {\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dashboard-notifications-container');\n var dummy = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').html(notification);\n container.removeClass('hidden').append(dummy.children());\n dummy.children().slideDown(150);\n }\n }, {\n key: \"showNotificationInPlugins\",\n value: function showNotificationInPlugins(notification) {\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.plugins-notifications-container');\n var dummy = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').html(notification);\n container.removeClass('hidden').append(dummy.children());\n dummy.children().slideDown(150);\n }\n }, {\n key: \"showNotificationInThemes\",\n value: function showNotificationInThemes(notification) {\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.themes-notifications-container');\n var dummy = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').html(notification);\n container.removeClass('hidden').append(dummy.children());\n dummy.children().slideDown(150);\n }\n }, {\n key: \"processLocation\",\n value: function processLocation(location, notification) {\n switch (location) {\n case 'feed':\n Notifications.showNotificationInFeed(notification);\n break;\n\n case 'top':\n if (!notification.read) {\n Notifications.showNotificationInTop(notification);\n }\n\n break;\n\n case 'dashboard':\n if (!notification.read) {\n Notifications.showNotificationInDashboard(notification);\n }\n\n break;\n\n case 'plugins':\n if (!notification.read) {\n Notifications.showNotificationInPlugins(notification);\n }\n\n break;\n\n case 'themes':\n if (!notification.read) {\n Notifications.showNotificationInThemes(notification);\n }\n\n break;\n }\n }\n }]);\n\n return Notifications;\n}();\n\nvar notifications = new Notifications();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (notifications);\n\nif (canFetchNotifications()) {\n notifications.fetch();\n /* Hide a notification and store it hidden\n //
\n $(document).on('click', '[data-notification-action=\"hide-notification\"]', (event) => {\n let notification_id = $(event.target).parents('.hide-notification').data('notification-id');\n let url = `${config.base_url_relative}/notifications.json/task${config.param_sep}hideNotification/notification_id${config.param_sep}${notification_id}`;\n request(url, { method: 'post' }, () => {});\n $(event.target).parents('.single-notification').hide();\n });\n */\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-notification-action=\"hide-notification\"]', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var notification = target.parent();\n notification.slideUp(function () {\n return notification.remove();\n });\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-notification-action=\"show-all-notifications\"]', function (event) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications .show-all').hide();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('#notifications .hidden').removeClass('hidden');\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-refresh=\"notifications\"]', function (event) {\n event.preventDefault();\n notifications.fetch({\n filter: ['feed'],\n refresh: true\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvbm90aWZpY2F0aW9ucy5qcz9mYmNkIl0sIm5hbWVzIjpbImNhbkZldGNoTm90aWZpY2F0aW9ucyIsImNvbmZpZyIsIm5vdGlmaWNhdGlvbnNGaWx0ZXJzIiwiTm90aWZpY2F0aW9ucyIsImZpbHRlciIsInJlZnJlc2giLCJmZWVkIiwiJCIsImxvYWRlciIsImZpbmQiLCJjb250ZW50IiwicmVtb3ZlIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInNob3ciLCJoaWRlIiwicHJvY2Vzc05vdGlmaWNhdGlvbnMiLCJyZXNwb25zZSIsIm5vdGlmaWNhdGlvbnMiLCJlbXB0eSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwibG9jYXRpb24iLCJwcm9jZXNzTG9jYXRpb24iLCJyZXF1ZXN0IiwibWV0aG9kIiwiYm9keSIsIndpZGdldCIsImFwcGVuZCIsIm5vdGlmaWNhdGlvbiIsImxlbmd0aCIsImFkZFNob3dBbGxJbkZlZWQiLCJjb250YWluZXIiLCJkdW1teSIsImh0bWwiLCJjaGlsZHJlbiIsInNsaWRlRG93biIsInNob3dOb3RpZmljYXRpb25JbkZlZWQiLCJyZWFkIiwic2hvd05vdGlmaWNhdGlvbkluVG9wIiwic2hvd05vdGlmaWNhdGlvbkluRGFzaGJvYXJkIiwic2hvd05vdGlmaWNhdGlvbkluUGx1Z2lucyIsInNob3dOb3RpZmljYXRpb25JblRoZW1lcyIsImZldGNoIiwiZG9jdW1lbnQiLCJvbiIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsInBhcmVudCIsInNsaWRlVXAiLCJwcmV2ZW50RGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBOztBQUVBLElBQU1BLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBd0I7QUFBQSxTQUFNQyxxRUFBTjtBQUFBLENBQTlCOztBQUNBLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBdUI7QUFBQSxT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dGlvbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vdXRpbHMvcmVxdWVzdCc7XG5cbmNvbnN0IGNhbkZldGNoTm90aWZpY2F0aW9ucyA9ICgpID0+IGNvbmZpZy5ub3RpZmljYXRpb25zLmVuYWJsZWQ7XG5jb25zdCBub3RpZmljYXRpb25zRmlsdGVycyA9ICgpID0+IGNvbmZpZy5ub3RpZmljYXRpb25zLmZpbHRlcnM7XG5cbmNsYXNzIE5vdGlmaWNhdGlvbnMge1xuXG4gICAgc3RhdGljIGFkZFNob3dBbGxJbkZlZWQoKSB7XG4gICAgICAgICQoJyNub3RpZmljYXRpb25zIHVsJykuYXBwZW5kKCc8bGkgY2xhc3M9XCJzaG93LWFsbFwiIGRhdGEtbm90aWZpY2F0aW9uLWFjdGlvbj1cInNob3ctYWxsLW5vdGlmaWNhdGlvbnNcIj5TaG93IGFsbDwvbGk+Jyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNob3dOb3RpZmljYXRpb25JbkZlZWQobm90aWZpY2F0aW9uKSB7XG4gICAgICAgIGxldCBub3RpZmljYXRpb25zID0gJCgnI25vdGlmaWNhdGlvbnMnKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG5cbiAgICAgICAgbGV0IGxvYWRlciA9IG5vdGlmaWNhdGlvbnMuZmluZCgnLndpZGdldC1sb2FkZXInKS5oaWRlKCk7XG4gICAgICAgIGxldCBjb250ZW50ID0gbm90aWZpY2F0aW9ucy5maW5kKCcud2lkZ2V0LWNvbnRlbnQgPiB1bCcpLnNob3coKTtcbiAgICAgICAgbG9hZGVyLmZpbmQoJ2RpdicpLnJlbW92ZSgpO1xuICAgICAgICBsb2FkZXIuZmluZCgnLmZhLXdhcm5pbmcnKS5yZW1vdmVDbGFzcygnZmEtd2FybmluZycpLmFkZENsYXNzKCdmYS1yZWZyZXNoIGZhLXNwaW4nKTtcblxuICAgICAgICBjb250ZW50XG4gICAgICAgICAgICAuYXBwZW5kKG5vdGlmaWNhdGlvbilcbiAgICAgICAgICAgIC5maW5kKCdsaTpudGgtY2hpbGQobisxMSknKS5hZGRDbGFzcygnaGlkZGVuJyk7IC8vIGhpZGUgYWxsIGl0ZW1zID4gMTBcblxuICAgICAgICBpZiAoY29udGVudC5maW5kKCdsaS5oaWRkZW4nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIE5vdGlmaWNhdGlvbnMuYWRkU2hvd0FsbEluRmVlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHNob3dOb3RpZmljYXRpb25JblRvcChub3RpZmljYXRpb24pIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gJCgnLnRvcC1ub3RpZmljYXRpb25zLWNvbnRhaW5lcicpO1xuICAgICAgICBjb25zdCBkdW1teSA9ICQoJzxkaXYgLz4nKS5odG1sKG5vdGlmaWNhdGlvbik7XG5cbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNsYXNzKCdoaWRkZW4nKS5hcHBlbmQoZHVtbXkuY2hpbGRyZW4oKSk7XG4gICAgICAgIGR1bW15LmNoaWxkcmVuKCkuc2xpZGVEb3duKDE1MCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNob3dOb3RpZmljYXRpb25JbkRhc2hib2FyZChub3RpZmljYXRpb24pIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gJCgnLmRhc2hib2FyZC1ub3RpZmljYXRpb25zLWNvbnRhaW5lcicpO1xuICAgICAgICBjb25zdCBkdW1teSA9ICQoJzxkaXYgLz4nKS5odG1sKG5vdGlmaWNhdGlvbik7XG5cbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUNsYXNzKCdoaWRkZW4nKS5hcHBlbmQoZHVtbXkuY2hpbGRyZW4oKSk7XG4gICAgICAgIGR1bW15LmNoaWxkcmVuKCkuc2xpZGVEb3duKDE1MCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNob3dOb3RpZmljYXRpb25JblBsdWdpbnMobm90aWZpY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9ICQoJy5wbHVnaW5zLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IGR1bW15ID0gJCgnPGRpdiAvPicpLmh0bWwobm90aWZpY2F0aW9uKTtcblxuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpLmFwcGVuZChkdW1teS5jaGlsZHJlbigpKTtcbiAgICAgICAgZHVtbXkuY2hpbGRyZW4oKS5zbGlkZURvd24oMTUwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc2hvd05vdGlmaWNhdGlvbkluVGhlbWVzKG5vdGlmaWNhdGlvbikge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSAkKCcudGhlbWVzLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IGR1bW15ID0gJCgnPGRpdiAvPicpLmh0bWwobm90aWZpY2F0aW9uKTtcblxuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpLmFwcGVuZChkdW1teS5jaGlsZHJlbigpKTtcbiAgICAgICAgZHVtbXkuY2hpbGRyZW4oKS5zbGlkZURvd24oMTUwKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcHJvY2Vzc0xvY2F0aW9uKGxvY2F0aW9uLCBub3RpZmljYXRpb24pIHtcbiAgICAgICAgc3dpdGNoIChsb2NhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnZmVlZCc6XG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9ucy5zaG93Tm90aWZpY2F0aW9uSW5GZWVkKG5vdGlmaWNhdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgIGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9ucy5zaG93Tm90aWZpY2F0aW9uSW5Ub3Aobm90aWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXNoYm9hcmQnOlxuICAgICAgICAgICAgICAgIGlmICghbm90aWZpY2F0aW9uLnJlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9ucy5zaG93Tm90aWZpY2F0aW9uSW5EYXNoYm9hcmQobm90aWZpY2F0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwbHVnaW5zJzpcbiAgICAgICAgICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbi5yZWFkKSB7XG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbnMuc2hvd05vdGlmaWNhdGlvbkluUGx1Z2lucyhub3RpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RoZW1lcyc6XG4gICAgICAgICAgICAgICAgaWYgKCFub3RpZmljYXRpb24ucmVhZCkge1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25zLnNob3dOb3RpZmljYXRpb25JblRoZW1lcyhub3RpZmljYXRpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEdyYXYuZGVmYXVsdC5Ob3RpZmljYXRpb25zLmZldGNoKClcbiAgICBmZXRjaCh7IGZpbHRlciA9IG5vdGlmaWNhdGlvbnNGaWx0ZXJzKCksIHJlZnJlc2ggPSBmYWxzZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKCFjYW5GZXRjaE5vdGlmaWNhdGlvbnMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZlZWQgPSAkKCcjbm90aWZpY2F0aW9ucycpO1xuICAgICAgICBsZXQgbG9hZGVyID0gZmVlZC5maW5kKCcud2lkZ2V0LWxvYWRlcicpO1xuICAgICAgICBsZXQgY29udGVudCA9IGZlZWQuZmluZCgnLndpZGdldC1jb250ZW50ID4gdWwnKTtcbiAgICAgICAgbG9hZGVyLmZpbmQoJ2RpdicpLnJlbW92ZSgpO1xuICAgICAgICBsb2FkZXIuZmluZCgnLmZhLXdhcm5pbmcnKS5yZW1vdmVDbGFzcygnZmEtd2FybmluZycpLmFkZENsYXNzKCdmYS1yZWZyZXNoIGZhLXNwaW4nKTtcbiAgICAgICAgbG9hZGVyLnNob3coKTtcbiAgICAgICAgY29udGVudC5oaWRlKCk7XG5cbiAgICAgICAgbGV0IHByb2Nlc3NOb3RpZmljYXRpb25zID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBsZXQgbm90aWZpY2F0aW9ucyA9IHJlc3BvbnNlLm5vdGlmaWNhdGlvbnM7XG5cbiAgICAgICAgICAgICQoJyNub3RpZmljYXRpb25zJykuZmluZCgnLndpZGdldC1jb250ZW50ID4gdWwnKS5lbXB0eSgpO1xuXG4gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9ucykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG5vdGlmaWNhdGlvbnMpLmZvckVhY2goKGxvY2F0aW9uKSA9PiBOb3RpZmljYXRpb25zLnByb2Nlc3NMb2NhdGlvbihsb2NhdGlvbiwgbm90aWZpY2F0aW9uc1tsb2NhdGlvbl0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0KGAke2NvbmZpZy5iYXNlX3VybF9yZWxhdGl2ZX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1nZXROb3RpZmljYXRpb25zYCwge1xuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBib2R5OiB7IHJlZnJlc2gsIGZpbHRlciB9XG4gICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzc05vdGlmaWNhdGlvbnMocmVzcG9uc2UpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgd2lkZ2V0ID0gJCgnI25vdGlmaWNhdGlvbnMgLndpZGdldC1jb250ZW50Jyk7XG4gICAgICAgICAgICB3aWRnZXRcbiAgICAgICAgICAgICAgICAuZmluZCgnLndpZGdldC1sb2FkZXInKVxuICAgICAgICAgICAgICAgIC5maW5kKCdkaXYnKS5yZW1vdmUoKTtcblxuICAgICAgICAgICAgd2lkZ2V0XG4gICAgICAgICAgICAgICAgLmZpbmQoJy53aWRnZXQtbG9hZGVyJylcbiAgICAgICAgICAgICAgICAuYXBwZW5kKCc8ZGl2PkZhaWxlZCB0byByZXRyaWV2ZSBub3RpZmljYXRpb25zPC9kaXY+JylcbiAgICAgICAgICAgICAgICAuZmluZCgnLmZhLXNwaW4nKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnZmEtc3BpbiBmYS1yZWZyZXNoJykuYWRkQ2xhc3MoJ2ZhLXdhcm5pbmcnKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5sZXQgbm90aWZpY2F0aW9ucyA9IG5ldyBOb3RpZmljYXRpb25zKCk7XG5leHBvcnQgZGVmYXVsdCBub3RpZmljYXRpb25zO1xuXG5pZiAoY2FuRmV0Y2hOb3RpZmljYXRpb25zKCkpIHtcbiAgICBub3RpZmljYXRpb25zLmZldGNoKCk7XG5cbiAgICAvKiBIaWRlIGEgbm90aWZpY2F0aW9uIGFuZCBzdG9yZSBpdCBoaWRkZW5cbiAgICAvLyA8YSBocmVmPVwiI1wiIGRhdGEtbm90aWZpY2F0aW9uLWFjdGlvbj1cImhpZGUtbm90aWZpY2F0aW9uXCIgZGF0YS1ub3RpZmljYXRpb24taWQ9XCIke25vdGlmaWNhdGlvbi5pZH1cIiBjbGFzcz1cImNsb3NlIGhpZGUtbm90aWZpY2F0aW9uXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG9zZVwiPjwvaT48L2E+XG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLW5vdGlmaWNhdGlvbi1hY3Rpb249XCJoaWRlLW5vdGlmaWNhdGlvblwiXScsIChldmVudCkgPT4ge1xuICAgICAgICBsZXQgbm90aWZpY2F0aW9uX2lkID0gJChldmVudC50YXJnZXQpLnBhcmVudHMoJy5oaWRlLW5vdGlmaWNhdGlvbicpLmRhdGEoJ25vdGlmaWNhdGlvbi1pZCcpO1xuXG4gICAgICAgIGxldCB1cmwgPSBgJHtjb25maWcuYmFzZV91cmxfcmVsYXRpdmV9L25vdGlmaWNhdGlvbnMuanNvbi90YXNrJHtjb25maWcucGFyYW1fc2VwfWhpZGVOb3RpZmljYXRpb24vbm90aWZpY2F0aW9uX2lkJHtjb25maWcucGFyYW1fc2VwfSR7bm90aWZpY2F0aW9uX2lkfWA7XG5cbiAgICAgICAgcmVxdWVzdCh1cmwsIHsgbWV0aG9kOiAncG9zdCcgfSwgKCkgPT4ge30pO1xuXG4gICAgICAgICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcuc2luZ2xlLW5vdGlmaWNhdGlvbicpLmhpZGUoKTtcbiAgICB9KTtcbiAgICAqL1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLW5vdGlmaWNhdGlvbi1hY3Rpb249XCJoaWRlLW5vdGlmaWNhdGlvblwiXScsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb24gPSB0YXJnZXQucGFyZW50KCk7XG5cbiAgICAgICAgbm90aWZpY2F0aW9uLnNsaWRlVXAoKCkgPT4gbm90aWZpY2F0aW9uLnJlbW92ZSgpKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS1ub3RpZmljYXRpb24tYWN0aW9uPVwic2hvdy1hbGwtbm90aWZpY2F0aW9uc1wiXScsIChldmVudCkgPT4ge1xuICAgICAgICAkKCcjbm90aWZpY2F0aW9ucyAuc2hvdy1hbGwnKS5oaWRlKCk7XG4gICAgICAgICQoJyNub3RpZmljYXRpb25zIC5oaWRkZW4nKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG4gICAgfSk7XG5cbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnW2RhdGEtcmVmcmVzaD1cIm5vdGlmaWNhdGlvbnNcIl0nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbm90aWZpY2F0aW9ucy5mZXRjaCh7IGZpbHRlcjogWydmZWVkJ10sIHJlZnJlc2g6IHRydWUgfSk7XG4gICAgfSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/updates/notifications.js\n");
/***/ }),
/***/ "./app/updates/update.js":
/*!*******************************!*\
!*** ./app/updates/update.js ***!
\*******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_formatbytes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/formatbytes */ \"./app/utils/formatbytes.js\");\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index */ \"./app/updates/index.js\");\n\n\n\n\n // Dashboard update and Grav update\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click.remodal', '[data-remodal-id=\"update-grav\"] [data-remodal-action=\"confirm\"]', function () {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#grav-update-button');\n element.html(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT, \" \").concat((0,_utils_formatbytes__WEBPACK_IMPORTED_MODULE_2__.default)(_index__WEBPACK_IMPORTED_MODULE_4__.Instance.payload.grav.assets[\"grav-update\"].size), \"..\"));\n element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin');\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_3__.default)(_index__WEBPACK_IMPORTED_MODULE_4__.Instance.updateURL, function (response) {\n if (response.type === 'updategrav') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-gpm-grav]').remove();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('#footer .grav-version').html(response.version);\n }\n\n element.removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-cloud-download');\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3VwZGF0ZXMvdXBkYXRlLmpzPzQ3NjkiXSwibmFtZXMiOlsiJCIsImRvY3VtZW50Iiwib24iLCJlbGVtZW50IiwiaHRtbCIsInRyYW5zbGF0aW9ucyIsImZvcm1hdEJ5dGVzIiwiVXBkYXRlIiwiYXR0ciIsImZpbmQiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwicmVxdWVzdCIsInJlc3BvbnNlIiwidHlwZSIsInJlbW92ZSIsInZlcnNpb24iLCJyZW1vdmVBdHRyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0NBR0E7O0FBQ0FBLDZDQUFDLENBQUNDLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsZUFBZixFQUFnQyxpRUFBaEMsRUFBbUcsWUFBTTtBQUNyRyxNQUFNQyxPQUFPLEdBQUdILDZDQUFDLENBQUMscUJBQUQsQ0FBakI7QUFDQUcsU0FBTyxDQUFDQyxJQUFSLFdBQWdCQyx1RkFBaEIsY0FBa0VDLDJEQUFXLENBQUNDLG9GQUFELENBQTdFO0FBRUFKLFNBQU8sQ0FBQ0ssSUFBUixDQUFhLFVBQWIsRUFBeUIsVUFBekIsRUFBcUNDLElBQXJDLENBQTBDLE9BQTFDLEVBQW1EQyxXQUFuRCxDQUErRCxtQkFBL0QsRUFBb0ZDLFFBQXBGLENBQTZGLG9CQUE3RjtBQUVBQyx5REFBTyxDQUFDTCxzREFBRCxFQUFtQixVQUFDTSxRQUFELEVBQWM7QUFDcEMsUUFBSUEsUUFBUSxDQUFDQyxJQUFULEtBQWtCLFlBQXRCLEVBQW9DO0FBQ2hDZCxtREFBQyxDQUFDLGlCQUFELENBQUQsQ0FBcUJlLE1BQXJCO0FBQ0FmLG1EQUFDLENBQUMsdUJBQUQsQ0FBRCxDQUEyQkksSUFBM0IsQ0FBZ0NTLFFBQVEsQ0FBQ0csT0FBekM7QUFDSDs7QUFFRGIsV0FBTyxDQUFDYyxVQUFSLENBQW1CLFVBQW5CLEVBQStCUixJQUEvQixDQUFvQyxPQUFwQyxFQUE2Q0MsV0FBN0MsQ0FBeUQsb0JBQXpELEVBQStFQyxRQUEvRSxDQUF3RixtQkFBeEY7QUFDSCxHQVBNLENBQVA7QUFRSCxDQWREIiwiZmlsZSI6Ii4vYXBwL3VwZGF0ZXMvdXBkYXRlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7IHRyYW5zbGF0aW9ucyB9IGZyb20gJ2dyYXYtY29uZmlnJztcbmltcG9ydCBmb3JtYXRCeXRlcyBmcm9tICcuLi91dGlscy9mb3JtYXRieXRlcyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCB7IEluc3RhbmNlIGFzIFVwZGF0ZSB9IGZyb20gJy4vaW5kZXgnO1xuXG4vLyBEYXNoYm9hcmQgdXBkYXRlIGFuZCBHcmF2IHVwZGF0ZVxuJChkb2N1bWVudCkub24oJ2NsaWNrLnJlbW9kYWwnLCAnW2RhdGEtcmVtb2RhbC1pZD1cInVwZGF0ZS1ncmF2XCJdIFtkYXRhLXJlbW9kYWwtYWN0aW9uPVwiY29uZmlybVwiXScsICgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gJCgnI2dyYXYtdXBkYXRlLWJ1dHRvbicpO1xuICAgIGVsZW1lbnQuaHRtbChgJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVQREFUSU5HX1BMRUFTRV9XQUlUfSAke2Zvcm1hdEJ5dGVzKFVwZGF0ZS5wYXlsb2FkLmdyYXYuYXNzZXRzWydncmF2LXVwZGF0ZSddLnNpemUpfS4uYCk7XG5cbiAgICBlbGVtZW50LmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJykuZmluZCgnPiAuZmEnKS5yZW1vdmVDbGFzcygnZmEtY2xvdWQtZG93bmxvYWQnKS5hZGRDbGFzcygnZmEtcmVmcmVzaCBmYS1zcGluJyk7XG5cbiAgICByZXF1ZXN0KFVwZGF0ZS51cGRhdGVVUkwsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA9PT0gJ3VwZGF0ZWdyYXYnKSB7XG4gICAgICAgICAgICAkKCdbZGF0YS1ncG0tZ3Jhdl0nKS5yZW1vdmUoKTtcbiAgICAgICAgICAgICQoJyNmb290ZXIgLmdyYXYtdmVyc2lvbicpLmh0bWwocmVzcG9uc2UudmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHIoJ2Rpc2FibGVkJykuZmluZCgnPiAuZmEnKS5yZW1vdmVDbGFzcygnZmEtcmVmcmVzaCBmYS1zcGluJykuYWRkQ2xhc3MoJ2ZhLWNsb3VkLWRvd25sb2FkJyk7XG4gICAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/updates/update.js\n");
/***/ }),
/***/ "./app/utils/2fa.js":
/*!**************************!*\
!*** ./app/utils/2fa.js ***!
\**************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n\n\n\nvar body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body'); // Dashboard update and Grav update\n\nbody.on('click', '[data-2fa-regenerate]', function (event) {\n event.preventDefault();\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var url = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/ajax.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"regenerate2FASecret\");\n element.attr('disabled', 'disabled').find('> .fa').addClass('fa-spin');\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post'\n }, function (response) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-2fa-image]').attr('src', response.image);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-2fa-secret]').text(response.secret);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-2fa-value]').val(response.secret.replace(' ', ''));\n element.removeAttr('disabled').find('> .fa').removeClass('fa-spin');\n });\n});\n\nvar toggleSecret = function toggleSecret() {\n var toggle = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#toggle_twofa_enabled1');\n var secret = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.twofa-secret');\n secret[toggle.is(':checked') ? 'addClass' : 'removeClass']('show');\n};\n\nbody.on('click', '.twofa-toggle input', toggleSecret);\ntoggleSecret();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzLzJmYS5qcz80NGE4Il0sIm5hbWVzIjpbImJvZHkiLCIkIiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiZWxlbWVudCIsInVybCIsImNvbmZpZyIsImF0dHIiLCJmaW5kIiwiYWRkQ2xhc3MiLCJyZXF1ZXN0IiwibWV0aG9kIiwicmVzcG9uc2UiLCJpbWFnZSIsInRleHQiLCJzZWNyZXQiLCJ2YWwiLCJyZXBsYWNlIiwicmVtb3ZlQXR0ciIsInJlbW92ZUNsYXNzIiwidG9nZ2xlU2VjcmV0IiwidG9nZ2xlIiwiaXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLElBQUksR0FBR0MsNkNBQUMsQ0FBQyxNQUFELENBQWQsQyxDQUVBOztBQUNBRCxJQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLHVCQUFqQixFQUEwQyxVQUFTQyxLQUFULEVBQWdCO0FBQ3REQSxPQUFLLENBQUNDLGNBQU47QUFDQSxNQUFJQyxPQUFPLEdBQUdKLDZDQUFDLENBQUMsSUFBRCxDQUFmO0FBQ0EsTUFBSUssR0FBRyxhQUFNQyxpRUFBTiw0QkFBZ0RBLHlEQUFoRCx3QkFBUDtBQUVBRixTQUFPLENBQUNHLElBQVIsQ0FBYSxVQUFiLEVBQXlCLFVBQXpCLEVBQXFDQyxJQUFyQyxDQUEwQyxPQUExQyxFQUFtREMsUUFBbkQsQ0FBNEQsU0FBNUQ7QUFFQUMseURBQU8sQ0FBQ0wsR0FBRCxFQUFNO0FBQUVNLFVBQU0sRUFBRTtBQUFWLEdBQU4sRUFBMEIsVUFBQ0MsUUFBRCxFQUFjO0FBQzNDWixpREFBQyxDQUFDLGtCQUFELENBQUQsQ0FBc0JPLElBQXRCLENBQTJCLEtBQTNCLEVBQWtDSyxRQUFRLENBQUNDLEtBQTNDO0FBQ0FiLGlEQUFDLENBQUMsbUJBQUQsQ0FBRCxDQUF1QmMsSUFBdkIsQ0FBNEJGLFFBQVEsQ0FBQ0csTUFBckM7QUFDQWYsaURBQUMsQ0FBQyxrQkFBRCxDQUFELENBQXNCZ0IsR0FBdEIsQ0FBMEJKLFFBQVEsQ0FBQ0csTUFBVCxDQUFnQkUsT0FBaEIsQ0FBd0IsR0FBeEIsRUFBNkIsRUFBN0IsQ0FBMUI7QUFFQWIsV0FBTyxDQUFDYyxVQUFSLENBQW1CLFVBQW5CLEVBQStCVixJQUEvQixDQUFvQyxPQUFwQyxFQUE2Q1csV0FBN0MsQ0FBeUQsU0FBekQ7QUFDSCxHQU5NLENBQVA7QUFPSCxDQWREOztBQWdCQSxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ3ZCLE1BQU1DLE1BQU0sR0FBR3JCLDZDQUFDLENBQUMsd0JBQUQsQ0FBaEI7QUFDQSxNQUFNZSxNQUFNLEdBQUdmLDZDQUFDLENBQUMsZUFBRCxDQUFoQjtBQUVBZSxRQUFNLENBQUNNLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVLFVBQVYsSUFBd0IsVUFBeEIsR0FBcUMsYUFBdEMsQ0FBTixDQUEyRCxNQUEzRDtBQUNILENBTEQ7O0FBT0F2QixJQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLHFCQUFqQixFQUF3Q21CLFlBQXhDO0FBQ0FBLFlBQVkiLCJmaWxlIjoiLi9hcHAvdXRpbHMvMmZhLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ2dyYXYtY29uZmlnJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJy4uL3V0aWxzL3JlcXVlc3QnO1xuXG5jb25zdCBib2R5ID0gJCgnYm9keScpO1xuXG4vLyBEYXNoYm9hcmQgdXBkYXRlIGFuZCBHcmF2IHVwZGF0ZVxuYm9keS5vbignY2xpY2snLCAnW2RhdGEtMmZhLXJlZ2VuZXJhdGVdJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGxldCBlbGVtZW50ID0gJCh0aGlzKTtcbiAgICBsZXQgdXJsID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS9hamF4Lmpzb24vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1yZWdlbmVyYXRlMkZBU2VjcmV0YDtcblxuICAgIGVsZW1lbnQuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKS5maW5kKCc+IC5mYScpLmFkZENsYXNzKCdmYS1zcGluJyk7XG5cbiAgICByZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdwb3N0JyB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgJCgnW2RhdGEtMmZhLWltYWdlXScpLmF0dHIoJ3NyYycsIHJlc3BvbnNlLmltYWdlKTtcbiAgICAgICAgJCgnW2RhdGEtMmZhLXNlY3JldF0nKS50ZXh0KHJlc3BvbnNlLnNlY3JldCk7XG4gICAgICAgICQoJ1tkYXRhLTJmYS12YWx1ZV0nKS52YWwocmVzcG9uc2Uuc2VjcmV0LnJlcGxhY2UoJyAnLCAnJykpO1xuXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cignZGlzYWJsZWQnKS5maW5kKCc+IC5mYScpLnJlbW92ZUNsYXNzKCdmYS1zcGluJyk7XG4gICAgfSk7XG59KTtcblxuY29uc3QgdG9nZ2xlU2VjcmV0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHRvZ2dsZSA9ICQoJyN0b2dnbGVfdHdvZmFfZW5hYmxlZDEnKTtcbiAgICBjb25zdCBzZWNyZXQgPSAkKCcudHdvZmEtc2VjcmV0Jyk7XG5cbiAgICBzZWNyZXRbdG9nZ2xlLmlzKCc6Y2hlY2tlZCcpID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKCdzaG93Jyk7XG59O1xuXG5ib2R5Lm9uKCdjbGljaycsICcudHdvZmEtdG9nZ2xlIGlucHV0JywgdG9nZ2xlU2VjcmV0KTtcbnRvZ2dsZVNlY3JldCgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/2fa.js\n");
/***/ }),
/***/ "./app/utils/bootstrap-collapse.js":
/*!*****************************************!*\
!*** ./app/utils/bootstrap-collapse.js ***!
\*****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.0\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict'; // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function Collapse(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, Collapse.DEFAULTS, options);\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' + '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]');\n this.transitioning = null;\n\n if (this.options.parent) {\n this.$parent = this.getParent();\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger);\n }\n\n if (this.options.toggle) this.toggle();\n };\n\n Collapse.VERSION = '3.4.0';\n Collapse.TRANSITION_DURATION = 350;\n Collapse.DEFAULTS = {\n toggle: true\n };\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width');\n return hasWidth ? 'width' : 'height';\n };\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return;\n var activesData;\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing');\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse');\n if (activesData && activesData.transitioning) return;\n }\n\n var startEvent = $.Event('show.bs.collapse');\n this.$element.trigger(startEvent);\n if (startEvent.isDefaultPrevented()) return;\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide');\n activesData || actives.data('bs.collapse', null);\n }\n\n var dimension = this.dimension();\n this.$element.removeClass('collapse').addClass('collapsing')[dimension](0).attr('aria-expanded', true);\n this.$trigger.removeClass('collapsed').attr('aria-expanded', true);\n this.transitioning = 1;\n\n var complete = function complete() {\n this.$element.removeClass('collapsing').addClass('collapse in')[dimension]('');\n this.transitioning = 0;\n this.$element.trigger('shown.bs.collapse');\n };\n\n if (!$.support.transition) return complete.call(this);\n var scrollSize = $.camelCase(['scroll', dimension].join('-'));\n this.$element.one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]);\n };\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return;\n var startEvent = $.Event('hide.bs.collapse');\n this.$element.trigger(startEvent);\n if (startEvent.isDefaultPrevented()) return;\n var dimension = this.dimension();\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight;\n this.$element.addClass('collapsing').removeClass('collapse in').attr('aria-expanded', false);\n this.$trigger.addClass('collapsed').attr('aria-expanded', false);\n this.transitioning = 1;\n\n var complete = function complete() {\n this.transitioning = 0;\n this.$element.removeClass('collapsing').addClass('collapse').trigger('hidden.bs.collapse');\n };\n\n if (!$.support.transition) return complete.call(this);\n this.$element[dimension](0).one('bsTransitionEnd', $.proxy(complete, this)).emulateTransitionEnd(Collapse.TRANSITION_DURATION);\n };\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']();\n };\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]').each($.proxy(function (i, element) {\n var $element = $(element);\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element);\n }, this)).end();\n };\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in');\n $element.attr('aria-expanded', isOpen);\n $trigger.toggleClass('collapsed', !isOpen).attr('aria-expanded', isOpen);\n };\n\n function getTargetFromTrigger($trigger) {\n var href;\n var target = $trigger.attr('data-target') || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); // strip for ie7\n\n return $(target);\n } // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.collapse');\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), _typeof(option) === 'object' && option);\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false;\n if (!data) $this.data('bs.collapse', data = new Collapse(this, options));\n if (typeof option === 'string') data[option]();\n });\n }\n\n var old = $.fn.collapse;\n $.fn.collapse = Plugin;\n $.fn.collapse.Constructor = Collapse; // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old;\n return this;\n }; // COLLAPSE DATA-API\n // =================\n\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this);\n if (!$this.attr('data-target')) e.preventDefault();\n var $target = getTargetFromTrigger($this);\n var data = $target.data('bs.collapse');\n var option = data ? 'toggle' : $this.data();\n Plugin.call($target, option);\n });\n}((jquery__WEBPACK_IMPORTED_MODULE_0___default()));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Jvb3RzdHJhcC1jb2xsYXBzZS5qcz9lMjUwIl0sIm5hbWVzIjpbIiQiLCJDb2xsYXBzZSIsImVsZW1lbnQiLCJvcHRpb25zIiwiJGVsZW1lbnQiLCJleHRlbmQiLCJERUZBVUxUUyIsIiR0cmlnZ2VyIiwiaWQiLCJ0cmFuc2l0aW9uaW5nIiwicGFyZW50IiwiJHBhcmVudCIsImdldFBhcmVudCIsImFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyIsInRvZ2dsZSIsIlZFUlNJT04iLCJUUkFOU0lUSU9OX0RVUkFUSU9OIiwicHJvdG90eXBlIiwiZGltZW5zaW9uIiwiaGFzV2lkdGgiLCJoYXNDbGFzcyIsInNob3ciLCJhY3RpdmVzRGF0YSIsImFjdGl2ZXMiLCJjaGlsZHJlbiIsImxlbmd0aCIsImRhdGEiLCJzdGFydEV2ZW50IiwiRXZlbnQiLCJ0cmlnZ2VyIiwiaXNEZWZhdWx0UHJldmVudGVkIiwiUGx1Z2luIiwiY2FsbCIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJhdHRyIiwiY29tcGxldGUiLCJzdXBwb3J0IiwidHJhbnNpdGlvbiIsInNjcm9sbFNpemUiLCJjYW1lbENhc2UiLCJqb2luIiwib25lIiwicHJveHkiLCJlbXVsYXRlVHJhbnNpdGlvbkVuZCIsImhpZGUiLCJvZmZzZXRIZWlnaHQiLCJmaW5kIiwiZWFjaCIsImkiLCJnZXRUYXJnZXRGcm9tVHJpZ2dlciIsImVuZCIsImlzT3BlbiIsInRvZ2dsZUNsYXNzIiwiaHJlZiIsInRhcmdldCIsInJlcGxhY2UiLCJvcHRpb24iLCIkdGhpcyIsInRlc3QiLCJvbGQiLCJmbiIsImNvbGxhcHNlIiwiQ29uc3RydWN0b3IiLCJub0NvbmZsaWN0IiwiZG9jdW1lbnQiLCJvbiIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIiR0YXJnZXQiLCJqUXVlcnkiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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TCxDQUFjRSxVQUFkLEdBQTJCLFlBQVc7QUFDbENoRSxLQUFDLENBQUM2RCxFQUFGLENBQUtDLFFBQUwsR0FBZ0JGLEdBQWhCO0FBQ0EsV0FBTyxJQUFQO0FBQ0gsR0FIRCxDQWpMVSxDQXNMVjtBQUNBOzs7QUFFQTVELEdBQUMsQ0FBQ2lFLFFBQUQsQ0FBRCxDQUFZQyxFQUFaLENBQWUsNEJBQWYsRUFBNkMsMEJBQTdDLEVBQXlFLFVBQVNDLENBQVQsRUFBWTtBQUNqRixRQUFJVCxLQUFLLEdBQUcxRCxDQUFDLENBQUMsSUFBRCxDQUFiO0FBRUEsUUFBSSxDQUFDMEQsS0FBSyxDQUFDdkIsSUFBTixDQUFXLGFBQVgsQ0FBTCxFQUFnQ2dDLENBQUMsQ0FBQ0MsY0FBRjtBQUVoQyxRQUFJQyxPQUFPLEdBQUduQixvQkFBb0IsQ0FBQ1EsS0FBRCxDQUFsQztBQUNBLFFBQUloQyxJQUFJLEdBQUcyQyxPQUFPLENBQUMzQyxJQUFSLENBQWEsYUFBYixDQUFYO0FBQ0EsUUFBSStCLE1BQU0sR0FBRy9CLElBQUksR0FBRyxRQUFILEdBQWNnQyxLQUFLLENBQUNoQyxJQUFOLEVBQS9CO0FBRUFLLFVBQU0sQ0FBQ0MsSUFBUCxDQUFZcUMsT0FBWixFQUFxQlosTUFBckI7QUFDSCxHQVZEO0FBWUgsQ0FyTUMsQ0FxTUFhLCtDQXJNQSxDQUFGIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL2Jvb3RzdHJhcC1jb2xsYXBzZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqUXVlcnkgZnJvbSAnanF1ZXJ5JztcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBCb290c3RyYXA6IGNvbGxhcHNlLmpzIHYzLjQuMFxuICogaHR0cDovL2dldGJvb3RzdHJhcC5jb20vamF2YXNjcmlwdC8jY29sbGFwc2VcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weXJpZ2h0IDIwMTEtMjAxNiBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIGpzaGludCBsYXRlZGVmOiBmYWxzZSAqL1xuXG4rKGZ1bmN0aW9uKCQpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvLyBDT0xMQVBTRSBQVUJMSUMgQ0xBU1MgREVGSU5JVElPTlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB2YXIgQ29sbGFwc2UgPSBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgQ29sbGFwc2UuREVGQVVMVFMsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLiR0cmlnZ2VyID0gJCgnW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl1baHJlZj1cIiMnICsgZWxlbWVudC5pZCArICdcIl0sJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAnW2RhdGEtdG9nZ2xlPVwiY29sbGFwc2VcIl1bZGF0YS10YXJnZXQ9XCIjJyArIGVsZW1lbnQuaWQgKyAnXCJdJyk7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuJHBhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLiRlbGVtZW50LCB0aGlzLiR0cmlnZ2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudG9nZ2xlKSB0aGlzLnRvZ2dsZSgpO1xuICAgIH07XG5cbiAgICBDb2xsYXBzZS5WRVJTSU9OID0gJzMuNC4wJztcblxuICAgIENvbGxhcHNlLlRSQU5TSVRJT05fRFVSQVRJT04gPSAzNTA7XG5cbiAgICBDb2xsYXBzZS5ERUZBVUxUUyA9IHtcbiAgICAgICAgdG9nZ2xlOiB0cnVlXG4gICAgfTtcblxuICAgIENvbGxhcHNlLnByb3RvdHlwZS5kaW1lbnNpb24gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGhhc1dpZHRoID0gdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnd2lkdGgnKTtcbiAgICAgICAgcmV0dXJuIGhhc1dpZHRoID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIH07XG5cbiAgICBDb2xsYXBzZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy50cmFuc2l0aW9uaW5nIHx8IHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykpIHJldHVybjtcblxuICAgICAgICB2YXIgYWN0aXZlc0RhdGE7XG4gICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy4kcGFyZW50ICYmIHRoaXMuJHBhcmVudC5jaGlsZHJlbignLnBhbmVsJykuY2hpbGRyZW4oJy5pbiwgLmNvbGxhcHNpbmcnKTtcblxuICAgICAgICBpZiAoYWN0aXZlcyAmJiBhY3RpdmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgYWN0aXZlc0RhdGEgPSBhY3RpdmVzLmRhdGEoJ2JzLmNvbGxhcHNlJyk7XG4gICAgICAgICAgICBpZiAoYWN0aXZlc0RhdGEgJiYgYWN0aXZlc0RhdGEudHJhbnNpdGlvbmluZykgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0YXJ0RXZlbnQgPSAkLkV2ZW50KCdzaG93LmJzLmNvbGxhcHNlJyk7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihzdGFydEV2ZW50KTtcbiAgICAgICAgaWYgKHN0YXJ0RXZlbnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHJldHVybjtcblxuICAgICAgICBpZiAoYWN0aXZlcyAmJiBhY3RpdmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgUGx1Z2luLmNhbGwoYWN0aXZlcywgJ2hpZGUnKTtcbiAgICAgICAgICAgIGFjdGl2ZXNEYXRhIHx8IGFjdGl2ZXMuZGF0YSgnYnMuY29sbGFwc2UnLCBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLmRpbWVuc2lvbigpO1xuXG4gICAgICAgIHRoaXMuJGVsZW1lbnRcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2UnKVxuICAgICAgICAgICAgLmFkZENsYXNzKCdjb2xsYXBzaW5nJylbZGltZW5zaW9uXSgwKVxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICB0aGlzLiR0cmlnZ2VyXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ2NvbGxhcHNlZCcpXG4gICAgICAgICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsIHRydWUpO1xuXG4gICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IDE7XG5cbiAgICAgICAgdmFyIGNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50XG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzaW5nJylcbiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2NvbGxhcHNlIGluJylbZGltZW5zaW9uXSgnJyk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSAwO1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAgICAgICAgIC50cmlnZ2VyKCdzaG93bi5icy5jb2xsYXBzZScpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghJC5zdXBwb3J0LnRyYW5zaXRpb24pIHJldHVybiBjb21wbGV0ZS5jYWxsKHRoaXMpO1xuXG4gICAgICAgIHZhciBzY3JvbGxTaXplID0gJC5jYW1lbENhc2UoWydzY3JvbGwnLCBkaW1lbnNpb25dLmpvaW4oJy0nKSk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAgICAgLm9uZSgnYnNUcmFuc2l0aW9uRW5kJywgJC5wcm94eShjb21wbGV0ZSwgdGhpcykpXG4gICAgICAgICAgICAuZW11bGF0ZVRyYW5zaXRpb25FbmQoQ29sbGFwc2UuVFJBTlNJVElPTl9EVVJBVElPTilbZGltZW5zaW9uXSh0aGlzLiRlbGVtZW50WzBdW3Njcm9sbFNpemVdKTtcbiAgICB9O1xuXG4gICAgQ29sbGFwc2UucHJvdG90eXBlLmhpZGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNpdGlvbmluZyB8fCAhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygnaW4nKSkgcmV0dXJuO1xuXG4gICAgICAgIHZhciBzdGFydEV2ZW50ID0gJC5FdmVudCgnaGlkZS5icy5jb2xsYXBzZScpO1xuICAgICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoc3RhcnRFdmVudCk7XG4gICAgICAgIGlmIChzdGFydEV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpKSByZXR1cm47XG5cbiAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuZGltZW5zaW9uKCk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudFtkaW1lbnNpb25dKHRoaXMuJGVsZW1lbnRbZGltZW5zaW9uXSgpKVswXS5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudFxuICAgICAgICAgICAgLmFkZENsYXNzKCdjb2xsYXBzaW5nJylcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnY29sbGFwc2UgaW4nKVxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy4kdHJpZ2dlclxuICAgICAgICAgICAgLmFkZENsYXNzKCdjb2xsYXBzZWQnKVxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gMTtcblxuICAgICAgICB2YXIgY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IDA7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50XG4gICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzaW5nJylcbiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2NvbGxhcHNlJylcbiAgICAgICAgICAgICAgICAudHJpZ2dlcignaGlkZGVuLmJzLmNvbGxhcHNlJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCEkLnN1cHBvcnQudHJhbnNpdGlvbikgcmV0dXJuIGNvbXBsZXRlLmNhbGwodGhpcyk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudFtkaW1lbnNpb25dKDApXG4gICAgICAgICAgICAub25lKCdic1RyYW5zaXRpb25FbmQnLCAkLnByb3h5KGNvbXBsZXRlLCB0aGlzKSlcbiAgICAgICAgICAgIC5lbXVsYXRlVHJhbnNpdGlvbkVuZChDb2xsYXBzZS5UUkFOU0lUSU9OX0RVUkFUSU9OKTtcbiAgICB9O1xuXG4gICAgQ29sbGFwc2UucHJvdG90eXBlLnRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2luJykgPyAnaGlkZScgOiAnc2hvdyddKCk7XG4gICAgfTtcblxuICAgIENvbGxhcHNlLnByb3RvdHlwZS5nZXRQYXJlbnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcy5vcHRpb25zLnBhcmVudClcbiAgICAgICAgICAgIC5maW5kKCdbZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXVtkYXRhLXBhcmVudD1cIicgKyB0aGlzLm9wdGlvbnMucGFyZW50ICsgJ1wiXScpXG4gICAgICAgICAgICAuZWFjaCgkLnByb3h5KGZ1bmN0aW9uKGksIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgJGVsZW1lbnQgPSAkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKGdldFRhcmdldEZyb21UcmlnZ2VyKCRlbGVtZW50KSwgJGVsZW1lbnQpO1xuICAgICAgICAgICAgfSwgdGhpcykpXG4gICAgICAgICAgICAuZW5kKCk7XG4gICAgfTtcblxuICAgIENvbGxhcHNlLnByb3RvdHlwZS5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MgPSBmdW5jdGlvbigkZWxlbWVudCwgJHRyaWdnZXIpIHtcbiAgICAgICAgdmFyIGlzT3BlbiA9ICRlbGVtZW50Lmhhc0NsYXNzKCdpbicpO1xuXG4gICAgICAgICRlbGVtZW50LmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pO1xuICAgICAgICAkdHJpZ2dlclxuICAgICAgICAgICAgLnRvZ2dsZUNsYXNzKCdjb2xsYXBzZWQnLCAhaXNPcGVuKVxuICAgICAgICAgICAgLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRUYXJnZXRGcm9tVHJpZ2dlcigkdHJpZ2dlcikge1xuICAgICAgICB2YXIgaHJlZjtcbiAgICAgICAgdmFyIHRhcmdldCA9ICR0cmlnZ2VyLmF0dHIoJ2RhdGEtdGFyZ2V0JykgfHxcbiAgICAgIChocmVmID0gJHRyaWdnZXIuYXR0cignaHJlZicpKSAmJiBocmVmLnJlcGxhY2UoLy4qKD89I1teXFxzXSskKS8sICcnKTsgLy8gc3RyaXAgZm9yIGllN1xuXG4gICAgICAgIHJldHVybiAkKHRhcmdldCk7XG4gICAgfVxuXG4gICAgLy8gQ09MTEFQU0UgUExVR0lOIERFRklOSVRJT05cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgZnVuY3Rpb24gUGx1Z2luKG9wdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBkYXRhID0gJHRoaXMuZGF0YSgnYnMuY29sbGFwc2UnKTtcbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gJC5leHRlbmQoe30sIENvbGxhcHNlLkRFRkFVTFRTLCAkdGhpcy5kYXRhKCksIHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnICYmIG9wdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghZGF0YSAmJiBvcHRpb25zLnRvZ2dsZSAmJiAvc2hvd3xoaWRlLy50ZXN0KG9wdGlvbikpIG9wdGlvbnMudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoIWRhdGEpICR0aGlzLmRhdGEoJ2JzLmNvbGxhcHNlJywgKGRhdGEgPSBuZXcgQ29sbGFwc2UodGhpcywgb3B0aW9ucykpKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykgZGF0YVtvcHRpb25dKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBvbGQgPSAkLmZuLmNvbGxhcHNlO1xuXG4gICAgJC5mbi5jb2xsYXBzZSA9IFBsdWdpbjtcbiAgICAkLmZuLmNvbGxhcHNlLkNvbnN0cnVjdG9yID0gQ29sbGFwc2U7XG5cbiAgICAvLyBDT0xMQVBTRSBOTyBDT05GTElDVFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09XG5cbiAgICAkLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgJC5mbi5jb2xsYXBzZSA9IG9sZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIC8vIENPTExBUFNFIERBVEEtQVBJXG4gICAgLy8gPT09PT09PT09PT09PT09PT1cblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljay5icy5jb2xsYXBzZS5kYXRhLWFwaScsICdbZGF0YS10b2dnbGU9XCJjb2xsYXBzZVwiXScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcblxuICAgICAgICBpZiAoISR0aGlzLmF0dHIoJ2RhdGEtdGFyZ2V0JykpIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB2YXIgJHRhcmdldCA9IGdldFRhcmdldEZyb21UcmlnZ2VyKCR0aGlzKTtcbiAgICAgICAgdmFyIGRhdGEgPSAkdGFyZ2V0LmRhdGEoJ2JzLmNvbGxhcHNlJyk7XG4gICAgICAgIHZhciBvcHRpb24gPSBkYXRhID8gJ3RvZ2dsZScgOiAkdGhpcy5kYXRhKCk7XG5cbiAgICAgICAgUGx1Z2luLmNhbGwoJHRhcmdldCwgb3B0aW9uKTtcbiAgICB9KTtcblxufShqUXVlcnkpKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/bootstrap-collapse.js\n");
/***/ }),
/***/ "./app/utils/bootstrap-datetimepicker.js":
/*!***********************************************!*\
!*** ./app/utils/bootstrap-datetimepicker.js ***!
\***********************************************/
/*! unknown exports (runtime-defined) */
/*! runtime requirements: __webpack_require__, __webpack_exports__, module */
/***/ ((module, exports, __webpack_require__) => {
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! version : 4.17.47\n =========================================================\n bootstrap-datetimejs\n https://github.com/Eonasdan/bootstrap-datetimepicker\n Copyright (c) 2015 Jonathan Peterson\n =========================================================\n */\n\n/*\n The MIT License (MIT)\n\n Copyright (c) 2015 Jonathan Peterson\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n\n/* global define:false */\n\n/* global jQuery:false */\n\n/* global moment:false */\n(function (factory) {\n 'use strict';\n\n if (true) {\n // AMD is used - Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\"), __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(function ($, moment) {\n 'use strict';\n\n if (!moment) {\n throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');\n }\n\n var dateTimePicker = function dateTimePicker(element, options) {\n var picker = {};\n var date;\n var viewDate;\n var unset = true;\n var input;\n var component = false;\n var widget = false;\n var use24Hours;\n var minViewModeNumber = 0;\n var actualFormat;\n var parseFormats;\n var currentViewMode;\n var datePickerModes = [{\n clsName: 'days',\n navFnc: 'M',\n navStep: 1\n }, {\n clsName: 'months',\n navFnc: 'y',\n navStep: 1\n }, {\n clsName: 'years',\n navFnc: 'y',\n navStep: 10\n }, {\n clsName: 'decades',\n navFnc: 'y',\n navStep: 100\n }];\n var viewModes = ['days', 'months', 'years', 'decades'];\n var verticalModes = ['top', 'bottom', 'auto'];\n var horizontalModes = ['left', 'right', 'auto'];\n var toolbarPlacements = ['default', 'top', 'bottom'];\n var keyMap = {\n 'up': 38,\n 38: 'up',\n 'down': 40,\n 40: 'down',\n 'left': 37,\n 37: 'left',\n 'right': 39,\n 39: 'right',\n 'tab': 9,\n 9: 'tab',\n 'escape': 27,\n 27: 'escape',\n 'enter': 13,\n 13: 'enter',\n 'pageUp': 33,\n 33: 'pageUp',\n 'pageDown': 34,\n 34: 'pageDown',\n 'shift': 16,\n 16: 'shift',\n 'control': 17,\n 17: 'control',\n 'space': 32,\n 32: 'space',\n 't': 84,\n 84: 't',\n 'delete': 46,\n 46: 'delete'\n };\n var keyState = {};\n /** ******************************************************************************\n *\n * Private functions\n *\n ********************************************************************************/\n\n var hasTimeZone = function hasTimeZone() {\n return moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '';\n };\n\n var getMoment = function getMoment(d) {\n var returnMoment;\n\n if (d === undefined || d === null) {\n returnMoment = moment(); // TODO should this use format? and locale?\n } else if (moment.isDate(d) || moment.isMoment(d)) {\n // If the date that is passed in is already a Date() or moment() object,\n // pass it directly to moment.\n returnMoment = moment(d);\n } else if (hasTimeZone()) {\n // There is a string to parse and a default time zone\n // parse with the tz function which takes a default time zone if it is not in the format string\n returnMoment = moment.tz(d, parseFormats, options.useStrict, options.timeZone);\n } else {\n returnMoment = moment(d, parseFormats, options.useStrict);\n }\n\n if (hasTimeZone()) {\n returnMoment.tz(options.timeZone);\n }\n\n return returnMoment;\n };\n\n var isEnabled = function isEnabled(granularity) {\n if (typeof granularity !== 'string' || granularity.length > 1) {\n throw new TypeError('isEnabled expects a single character string parameter');\n }\n\n switch (granularity) {\n case 'y':\n return actualFormat.indexOf('Y') !== -1;\n\n case 'M':\n return actualFormat.indexOf('M') !== -1;\n\n case 'd':\n return actualFormat.toLowerCase().indexOf('d') !== -1;\n\n case 'h':\n case 'H':\n return actualFormat.toLowerCase().indexOf('h') !== -1;\n\n case 'm':\n return actualFormat.indexOf('m') !== -1;\n\n case 's':\n return actualFormat.indexOf('s') !== -1;\n\n default:\n return false;\n }\n };\n\n var hasTime = function hasTime() {\n return isEnabled('h') || isEnabled('m') || isEnabled('s');\n };\n\n var hasDate = function hasDate() {\n return isEnabled('y') || isEnabled('M') || isEnabled('d');\n };\n\n var getDatePickerTemplate = function getDatePickerTemplate() {\n var headTemplate = $('
').append($('').append($('').addClass('prev').attr('data-action', 'previous').append($('').addClass(options.icons.previous))).append($(' ').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', options.calendarWeeks ? '6' : '5')).append($(' ').addClass('next').attr('data-action', 'next').append($('').addClass(options.icons.next))));\n var contTemplate = $('').append($('').append($('').attr('colspan', options.calendarWeeks ? '8' : '7')));\n return [$('').addClass('datepicker-days').append($('
').addClass('table-condensed').append(headTemplate).append($(''))), $('').addClass('datepicker-months').append($('
').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('').addClass('datepicker-years').append($('
').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('').addClass('datepicker-decades').append($('
').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))];\n };\n\n var getTimePickerMainTemplate = function getTimePickerMainTemplate() {\n var topRow = $('');\n var middleRow = $(' ');\n var bottomRow = $(' ');\n\n if (isEnabled('h')) {\n topRow.append($('').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementHour\n }).addClass('btn').attr('data-action', 'incrementHours').append($('').addClass(options.icons.up))));\n middleRow.append($(' ').append($('').addClass('timepicker-hour').attr({\n 'data-time-component': 'hours',\n 'title': options.tooltips.pickHour\n }).attr('data-action', 'showHours')));\n bottomRow.append($(' ').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementHour\n }).addClass('btn').attr('data-action', 'decrementHours').append($('').addClass(options.icons.down))));\n }\n\n if (isEnabled('m')) {\n if (isEnabled('h')) {\n topRow.append($(' ').addClass('separator'));\n middleRow.append($(' ').addClass('separator').html(':'));\n bottomRow.append($(' ').addClass('separator'));\n }\n\n topRow.append($(' ').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementMinute\n }).addClass('btn').attr('data-action', 'incrementMinutes').append($('').addClass(options.icons.up))));\n middleRow.append($(' ').append($('').addClass('timepicker-minute').attr({\n 'data-time-component': 'minutes',\n 'title': options.tooltips.pickMinute\n }).attr('data-action', 'showMinutes')));\n bottomRow.append($(' ').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementMinute\n }).addClass('btn').attr('data-action', 'decrementMinutes').append($('').addClass(options.icons.down))));\n }\n\n if (isEnabled('s')) {\n if (isEnabled('m')) {\n topRow.append($(' ').addClass('separator'));\n middleRow.append($(' ').addClass('separator').html(':'));\n bottomRow.append($(' ').addClass('separator'));\n }\n\n topRow.append($(' ').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementSecond\n }).addClass('btn').attr('data-action', 'incrementSeconds').append($('').addClass(options.icons.up))));\n middleRow.append($(' ').append($('').addClass('timepicker-second').attr({\n 'data-time-component': 'seconds',\n 'title': options.tooltips.pickSecond\n }).attr('data-action', 'showSeconds')));\n bottomRow.append($(' ').append($('').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementSecond\n }).addClass('btn').attr('data-action', 'decrementSeconds').append($('').addClass(options.icons.down))));\n }\n\n if (!use24Hours) {\n topRow.append($(' ').addClass('separator'));\n middleRow.append($(' ').append($('').addClass('btn btn-primary').attr({\n 'data-action': 'togglePeriod',\n tabindex: '-1',\n 'title': options.tooltips.togglePeriod\n })));\n bottomRow.append($('').addClass('separator'));\n }\n\n return $('').addClass('timepicker-picker').append($('
').addClass('table-condensed').append([topRow, middleRow, bottomRow]));\n };\n\n var getTimePickerTemplate = function getTimePickerTemplate() {\n var hoursView = $('').addClass('timepicker-hours').append($('
').addClass('table-condensed'));\n var minutesView = $('').addClass('timepicker-minutes').append($('
').addClass('table-condensed'));\n var secondsView = $('').addClass('timepicker-seconds').append($('
').addClass('table-condensed'));\n var ret = [getTimePickerMainTemplate()];\n\n if (isEnabled('h')) {\n ret.push(hoursView);\n }\n\n if (isEnabled('m')) {\n ret.push(minutesView);\n }\n\n if (isEnabled('s')) {\n ret.push(secondsView);\n }\n\n return ret;\n };\n\n var getToolbar = function getToolbar() {\n var row = [];\n\n if (options.showTodayButton) {\n row.push($('').append($('').attr({\n 'data-action': 'today',\n 'title': options.tooltips.today\n }).append($('').addClass(options.icons.today))));\n }\n\n if (!options.sideBySide && hasDate() && hasTime()) {\n row.push($(' ').append($('').attr({\n 'data-action': 'togglePicker',\n 'title': options.tooltips.selectTime\n }).append($('').addClass(options.icons.time))));\n }\n\n if (options.showClear) {\n row.push($(' ').append($('').attr({\n 'data-action': 'clear',\n 'title': options.tooltips.clear\n }).append($('').addClass(options.icons.clear))));\n }\n\n if (options.showClose) {\n row.push($(' ').append($('').attr({\n 'data-action': 'close',\n 'title': options.tooltips.close\n }).append($('').addClass(options.icons.close))));\n }\n\n return $('').addClass('table-condensed').append($('').append($('').append(row)));\n };\n\n var getTemplate = function getTemplate() {\n var template = $('').addClass('bootstrap-datetimepicker-widget dropdown-menu');\n var dateView = $('
').addClass('datepicker').append(getDatePickerTemplate());\n var timeView = $('
').addClass('timepicker').append(getTimePickerTemplate());\n var content = $('
').addClass('list-unstyled');\n var toolbar = $('').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar());\n\n if (options.inline) {\n template.removeClass('dropdown-menu');\n }\n\n if (use24Hours) {\n template.addClass('usetwentyfour');\n }\n\n if (isEnabled('s') && !use24Hours) {\n template.addClass('wider');\n }\n\n if (options.sideBySide && hasDate() && hasTime()) {\n template.addClass('timepicker-sbs');\n\n if (options.toolbarPlacement === 'top') {\n template.append(toolbar);\n }\n\n template.append($('').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6')));\n\n if (options.toolbarPlacement === 'bottom') {\n template.append(toolbar);\n }\n\n return template;\n }\n\n if (options.toolbarPlacement === 'top') {\n content.append(toolbar);\n }\n\n if (hasDate()) {\n content.append($('
').addClass(options.collapse && hasTime() ? 'collapse in' : '').append(dateView));\n }\n\n if (options.toolbarPlacement === 'default') {\n content.append(toolbar);\n }\n\n if (hasTime()) {\n content.append($(' ').addClass(options.collapse && hasDate() ? 'collapse' : '').append(timeView));\n }\n\n if (options.toolbarPlacement === 'bottom') {\n content.append(toolbar);\n }\n\n return template.append(content);\n };\n\n var dataToOptions = function dataToOptions() {\n var eData;\n var dataOptions = {};\n\n if (element.is('input') || options.inline) {\n eData = element.data();\n } else {\n eData = element.find('input').data();\n }\n\n if (eData.dateOptions && eData.dateOptions instanceof Object) {\n dataOptions = $.extend(true, dataOptions, eData.dateOptions);\n }\n\n $.each(options, function (key) {\n var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1);\n\n if (eData[attributeName] !== undefined) {\n dataOptions[key] = eData[attributeName];\n }\n });\n return dataOptions;\n };\n\n var place = function place() {\n var position = (component || element).position();\n var offset = (component || element).offset();\n var vertical = options.widgetPositioning.vertical;\n var horizontal = options.widgetPositioning.horizontal;\n var parent;\n\n if (options.widgetParent) {\n parent = options.widgetParent.append(widget);\n } else if (element.is('input')) {\n parent = element.after(widget).parent();\n } else if (options.inline) {\n parent = element.append(widget);\n return;\n } else {\n parent = element;\n element.children().first().after(widget);\n } // Top and bottom logic\n\n\n if (vertical === 'auto') {\n if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && widget.height() + element.outerHeight() < offset.top) {\n vertical = 'top';\n } else {\n vertical = 'bottom';\n }\n } // Left and right logic\n\n\n if (horizontal === 'auto') {\n if (parent.width() < offset.left + widget.outerWidth() / 2 && offset.left + widget.outerWidth() > $(window).width()) {\n horizontal = 'right';\n } else {\n horizontal = 'left';\n }\n }\n\n if (vertical === 'top') {\n widget.addClass('top').removeClass('bottom');\n } else {\n widget.addClass('bottom').removeClass('top');\n }\n\n if (horizontal === 'right') {\n widget.addClass('pull-right');\n } else {\n widget.removeClass('pull-right');\n } // find the first parent element that has a non-static css positioning\n\n\n if (parent.css('position') === 'static') {\n parent = parent.parents().filter(function () {\n return $(this).css('position') !== 'static';\n }).first();\n }\n\n if (parent.length === 0) {\n throw new Error('datetimepicker component should be placed within a non-static positioned container');\n }\n\n widget.css({\n top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(),\n bottom: vertical === 'top' ? parent.outerHeight() - (parent === element ? 0 : position.top) : 'auto',\n left: horizontal === 'left' ? parent === element ? 0 : position.left : 'auto',\n right: horizontal === 'left' ? 'auto' : parent.outerWidth() - element.outerWidth() - (parent === element ? 0 : position.left)\n });\n };\n\n var notifyEvent = function notifyEvent(e) {\n if (e.type === 'dp.change' && (e.date && e.date.isSame(e.oldDate) || !e.date && !e.oldDate)) {\n return;\n }\n\n element.trigger(e);\n };\n\n var viewUpdate = function viewUpdate(e) {\n if (e === 'y') {\n e = 'YYYY';\n }\n\n notifyEvent({\n type: 'dp.update',\n change: e,\n viewDate: viewDate.clone()\n });\n };\n\n var showMode = function showMode(dir) {\n if (!widget) {\n return;\n }\n\n if (dir) {\n currentViewMode = Math.max(minViewModeNumber, Math.min(3, currentViewMode + dir));\n }\n\n widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show();\n };\n\n var fillDow = function fillDow() {\n var row = $('');\n var currentDate = viewDate.clone().startOf('w').startOf('d');\n\n if (options.calendarWeeks === true) {\n row.append($('').addClass('cw').text('#'));\n }\n\n while (currentDate.isBefore(viewDate.clone().endOf('w'))) {\n row.append($(' ').addClass('dow').text(currentDate.format('dd')));\n currentDate.add(1, 'd');\n }\n\n widget.find('.datepicker-days thead').append(row);\n };\n\n var isInDisabledDates = function isInDisabledDates(testDate) {\n return options.disabledDates[testDate.format('YYYY-MM-DD')] === true;\n };\n\n var isInEnabledDates = function isInEnabledDates(testDate) {\n return options.enabledDates[testDate.format('YYYY-MM-DD')] === true;\n };\n\n var isInDisabledHours = function isInDisabledHours(testDate) {\n return options.disabledHours[testDate.format('H')] === true;\n };\n\n var isInEnabledHours = function isInEnabledHours(testDate) {\n return options.enabledHours[testDate.format('H')] === true;\n };\n\n var isValid = function isValid(targetMoment, granularity) {\n if (!targetMoment.isValid()) {\n return false;\n }\n\n if (options.disabledDates && granularity === 'd' && isInDisabledDates(targetMoment)) {\n return false;\n }\n\n if (options.enabledDates && granularity === 'd' && !isInEnabledDates(targetMoment)) {\n return false;\n }\n\n if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) {\n return false;\n }\n\n if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) {\n return false;\n }\n\n if (options.daysOfWeekDisabled && granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {\n return false;\n }\n\n if (options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && isInDisabledHours(targetMoment)) {\n return false;\n }\n\n if (options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !isInEnabledHours(targetMoment)) {\n return false;\n }\n\n if (options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {\n var found = false;\n $.each(options.disabledTimeIntervals, function () {\n if (targetMoment.isBetween(this[0], this[1])) {\n found = true;\n return false;\n }\n });\n\n if (found) {\n return false;\n }\n }\n\n return true;\n };\n\n var fillMonths = function fillMonths() {\n var spans = [];\n var monthsShort = viewDate.clone().startOf('y').startOf('d');\n\n while (monthsShort.isSame(viewDate, 'y')) {\n spans.push($('').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));\n monthsShort.add(1, 'M');\n }\n\n widget.find('.datepicker-months td').empty().append(spans);\n };\n\n var updateMonths = function updateMonths() {\n var monthsView = widget.find('.datepicker-months');\n var monthsViewHeader = monthsView.find('th');\n var months = monthsView.find('tbody').find('span');\n monthsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevYear);\n monthsViewHeader.eq(1).attr('title', options.tooltips.selectYear);\n monthsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextYear);\n monthsView.find('.disabled').removeClass('disabled');\n\n if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) {\n monthsViewHeader.eq(0).addClass('disabled');\n }\n\n monthsViewHeader.eq(1).text(viewDate.year());\n\n if (!isValid(viewDate.clone().add(1, 'y'), 'y')) {\n monthsViewHeader.eq(2).addClass('disabled');\n }\n\n months.removeClass('active');\n\n if (date.isSame(viewDate, 'y') && !unset) {\n months.eq(date.month()).addClass('active');\n }\n\n months.each(function (index) {\n if (!isValid(viewDate.clone().month(index), 'M')) {\n $(this).addClass('disabled');\n }\n });\n };\n\n var updateYears = function updateYears() {\n var yearsView = widget.find('.datepicker-years');\n var yearsViewHeader = yearsView.find('th');\n var startYear = viewDate.clone().subtract(5, 'y');\n var endYear = viewDate.clone().add(6, 'y');\n var html = '';\n yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);\n yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);\n yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);\n yearsView.find('.disabled').removeClass('disabled');\n\n if (options.minDate && options.minDate.isAfter(startYear, 'y')) {\n yearsViewHeader.eq(0).addClass('disabled');\n }\n\n yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year());\n\n if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) {\n yearsViewHeader.eq(2).addClass('disabled');\n }\n\n while (!startYear.isAfter(endYear, 'y')) {\n html += '' + startYear.year() + ' ';\n startYear.add(1, 'y');\n }\n\n yearsView.find('td').html(html);\n };\n\n var updateDecades = function updateDecades() {\n var decadesView = widget.find('.datepicker-decades');\n var decadesViewHeader = decadesView.find('th');\n var startDecade = moment({\n y: viewDate.year() - viewDate.year() % 100 - 1\n });\n var endDecade = startDecade.clone().add(100, 'y');\n var startedAt = startDecade.clone();\n var minDateDecade = false;\n var maxDateDecade = false;\n var endDecadeYear;\n var html = '';\n decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);\n decadesViewHeader.eq(2).find('span').attr('title', options.tooltips.nextCentury);\n decadesView.find('.disabled').removeClass('disabled');\n\n if (startDecade.isSame(moment({\n y: 1900\n })) || options.minDate && options.minDate.isAfter(startDecade, 'y')) {\n decadesViewHeader.eq(0).addClass('disabled');\n }\n\n decadesViewHeader.eq(1).text(startDecade.year() + '-' + endDecade.year());\n\n if (startDecade.isSame(moment({\n y: 2000\n })) || options.maxDate && options.maxDate.isBefore(endDecade, 'y')) {\n decadesViewHeader.eq(2).addClass('disabled');\n }\n\n while (!startDecade.isAfter(endDecade, 'y')) {\n endDecadeYear = startDecade.year() + 12;\n minDateDecade = options.minDate && options.minDate.isAfter(startDecade, 'y') && options.minDate.year() <= endDecadeYear;\n maxDateDecade = options.maxDate && options.maxDate.isAfter(startDecade, 'y') && options.maxDate.year() <= endDecadeYear;\n html += '' + (startDecade.year() + 1) + ' - ' + (startDecade.year() + 12) + ' ';\n startDecade.add(12, 'y');\n }\n\n html += ' '; // push the dangling block over, at least this way it's even\n\n decadesView.find('td').html(html);\n decadesViewHeader.eq(1).text(startedAt.year() + 1 + '-' + startDecade.year());\n };\n\n var fillDate = function fillDate() {\n var daysView = widget.find('.datepicker-days');\n var daysViewHeader = daysView.find('th');\n var currentDate;\n var html = [];\n var row;\n var clsNames = [];\n var i;\n\n if (!hasDate()) {\n return;\n }\n\n daysViewHeader.eq(0).find('span').attr('title', options.tooltips.prevMonth);\n daysViewHeader.eq(1).attr('title', options.tooltips.selectMonth);\n daysViewHeader.eq(2).find('span').attr('title', options.tooltips.nextMonth);\n daysView.find('.disabled').removeClass('disabled');\n daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat));\n\n if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) {\n daysViewHeader.eq(0).addClass('disabled');\n }\n\n if (!isValid(viewDate.clone().add(1, 'M'), 'M')) {\n daysViewHeader.eq(2).addClass('disabled');\n }\n\n currentDate = viewDate.clone().startOf('M').startOf('w').startOf('d');\n\n for (i = 0; i < 42; i++) {\n // always display 42 days (should show 6 weeks)\n if (currentDate.weekday() === 0) {\n row = $('');\n\n if (options.calendarWeeks) {\n row.append('' + currentDate.week() + ' ');\n }\n\n html.push(row);\n }\n\n clsNames = ['day'];\n\n if (currentDate.isBefore(viewDate, 'M')) {\n clsNames.push('old');\n }\n\n if (currentDate.isAfter(viewDate, 'M')) {\n clsNames.push('new');\n }\n\n if (currentDate.isSame(date, 'd') && !unset) {\n clsNames.push('active');\n }\n\n if (!isValid(currentDate, 'd')) {\n clsNames.push('disabled');\n }\n\n if (currentDate.isSame(getMoment(), 'd')) {\n clsNames.push('today');\n }\n\n if (currentDate.day() === 0 || currentDate.day() === 6) {\n clsNames.push('weekend');\n }\n\n notifyEvent({\n type: 'dp.classify',\n date: currentDate,\n classNames: clsNames\n });\n row.append('' + currentDate.date() + ' ');\n currentDate.add(1, 'd');\n }\n\n daysView.find('tbody').empty().append(html);\n updateMonths();\n updateYears();\n updateDecades();\n };\n\n var fillHours = function fillHours() {\n var table = widget.find('.timepicker-hours table');\n var currentHour = viewDate.clone().startOf('d');\n var html = [];\n var row = $(' ');\n\n if (viewDate.hour() > 11 && !use24Hours) {\n currentHour.hour(12);\n }\n\n while (currentHour.isSame(viewDate, 'd') && (use24Hours || viewDate.hour() < 12 && currentHour.hour() < 12 || viewDate.hour() > 11)) {\n if (currentHour.hour() % 4 === 0) {\n row = $(' ');\n html.push(row);\n }\n\n row.append('' + currentHour.format(use24Hours ? 'HH' : 'hh') + ' ');\n currentHour.add(1, 'h');\n }\n\n table.empty().append(html);\n };\n\n var fillMinutes = function fillMinutes() {\n var table = widget.find('.timepicker-minutes table');\n var currentMinute = viewDate.clone().startOf('h');\n var html = [];\n var row = $(' ');\n var step = options.stepping === 1 ? 5 : options.stepping;\n\n while (viewDate.isSame(currentMinute, 'h')) {\n if (currentMinute.minute() % (step * 4) === 0) {\n row = $(' ');\n html.push(row);\n }\n\n row.append('' + currentMinute.format('mm') + ' ');\n currentMinute.add(step, 'm');\n }\n\n table.empty().append(html);\n };\n\n var fillSeconds = function fillSeconds() {\n var table = widget.find('.timepicker-seconds table');\n var currentSecond = viewDate.clone().startOf('m');\n var html = [];\n var row = $(' ');\n\n while (viewDate.isSame(currentSecond, 'm')) {\n if (currentSecond.second() % 20 === 0) {\n row = $(' ');\n html.push(row);\n }\n\n row.append('' + currentSecond.format('ss') + ' ');\n currentSecond.add(5, 's');\n }\n\n table.empty().append(html);\n };\n\n var fillTime = function fillTime() {\n var toggle;\n var newDate;\n var timeComponents = widget.find('.timepicker span[data-time-component]');\n\n if (!use24Hours) {\n toggle = widget.find('.timepicker [data-action=togglePeriod]');\n newDate = date.clone().add(date.hours() >= 12 ? -12 : 12, 'h');\n toggle.text(date.format('A'));\n\n if (isValid(newDate, 'h')) {\n toggle.removeClass('disabled');\n } else {\n toggle.addClass('disabled');\n }\n }\n\n timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh'));\n timeComponents.filter('[data-time-component=minutes]').text(date.format('mm'));\n timeComponents.filter('[data-time-component=seconds]').text(date.format('ss'));\n fillHours();\n fillMinutes();\n fillSeconds();\n };\n\n var update = function update() {\n if (!widget) {\n return;\n }\n\n fillDate();\n fillTime();\n };\n\n var setValue = function setValue(targetMoment) {\n var oldDate = unset ? null : date; // case of calling setValue(null or false)\n\n if (!targetMoment) {\n unset = true;\n input.val('');\n element.data('date', '');\n notifyEvent({\n type: 'dp.change',\n date: false,\n oldDate: oldDate\n });\n update();\n return;\n }\n\n targetMoment = targetMoment.clone().locale(options.locale);\n\n if (hasTimeZone()) {\n targetMoment.tz(options.timeZone);\n }\n\n if (options.stepping !== 1) {\n targetMoment.minutes(Math.round(targetMoment.minutes() / options.stepping) * options.stepping).seconds(0);\n\n while (options.minDate && targetMoment.isBefore(options.minDate)) {\n targetMoment.add(options.stepping, 'minutes');\n }\n }\n\n if (isValid(targetMoment)) {\n date = targetMoment;\n viewDate = date.clone();\n input.val(date.format(actualFormat));\n element.data('date', date.format(actualFormat));\n unset = false;\n update();\n notifyEvent({\n type: 'dp.change',\n date: date.clone(),\n oldDate: oldDate\n });\n } else {\n if (!options.keepInvalid) {\n input.val(unset ? '' : date.format(actualFormat));\n } else {\n notifyEvent({\n type: 'dp.change',\n date: targetMoment,\n oldDate: oldDate\n });\n }\n\n notifyEvent({\n type: 'dp.error',\n date: targetMoment,\n oldDate: oldDate\n });\n }\n };\n /**\n * Hides the widget. Possibly will emit dp.hide\n */\n\n\n var hide = function hide() {\n var transitioning = false;\n\n if (!widget) {\n return picker;\n } // Ignore event if in the middle of a picker transition\n\n\n widget.find('.collapse').each(function () {\n var collapseData = $(this).data('collapse');\n\n if (collapseData && collapseData.transitioning) {\n transitioning = true;\n return false;\n }\n\n return true;\n });\n\n if (transitioning) {\n return picker;\n }\n\n if (component && component.hasClass('btn')) {\n component.toggleClass('active');\n }\n\n widget.hide();\n $(window).off('resize', place);\n widget.off('click', '[data-action]');\n widget.off('mousedown', false);\n widget.remove();\n widget = false;\n notifyEvent({\n type: 'dp.hide',\n date: date.clone()\n });\n input.blur();\n viewDate = date.clone();\n return picker;\n };\n\n var clear = function clear() {\n setValue(null);\n };\n\n var parseInputDate = function parseInputDate(inputDate) {\n if (options.parseInputDate === undefined) {\n if (!moment.isMoment(inputDate) || inputDate instanceof Date) {\n inputDate = getMoment(inputDate);\n }\n } else {\n inputDate = options.parseInputDate(inputDate);\n } // inputDate.locale(options.locale);\n\n\n return inputDate;\n };\n /** ******************************************************************************\n *\n * Widget UI interaction functions\n *\n ********************************************************************************/\n\n\n var actions = {\n next: function next() {\n var navFnc = datePickerModes[currentViewMode].navFnc;\n viewDate.add(datePickerModes[currentViewMode].navStep, navFnc);\n fillDate();\n viewUpdate(navFnc);\n },\n previous: function previous() {\n var navFnc = datePickerModes[currentViewMode].navFnc;\n viewDate.subtract(datePickerModes[currentViewMode].navStep, navFnc);\n fillDate();\n viewUpdate(navFnc);\n },\n pickerSwitch: function pickerSwitch() {\n showMode(1);\n },\n selectMonth: function selectMonth(e) {\n var month = $(e.target).closest('tbody').find('span').index($(e.target));\n viewDate.month(month);\n\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()).month(viewDate.month()));\n\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n\n viewUpdate('M');\n },\n selectYear: function selectYear(e) {\n var year = parseInt($(e.target).text(), 10) || 0;\n viewDate.year(year);\n\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()));\n\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n\n viewUpdate('YYYY');\n },\n selectDecade: function selectDecade(e) {\n var year = parseInt($(e.target).data('selection'), 10) || 0;\n viewDate.year(year);\n\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()));\n\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n\n viewUpdate('YYYY');\n },\n selectDay: function selectDay(e) {\n var day = viewDate.clone();\n\n if ($(e.target).is('.old')) {\n day.subtract(1, 'M');\n }\n\n if ($(e.target).is('.new')) {\n day.add(1, 'M');\n }\n\n setValue(day.date(parseInt($(e.target).text(), 10)));\n\n if (!hasTime() && !options.keepOpen && !options.inline) {\n hide();\n }\n },\n incrementHours: function incrementHours() {\n var newDate = date.clone().add(1, 'h');\n\n if (isValid(newDate, 'h')) {\n setValue(newDate);\n }\n },\n incrementMinutes: function incrementMinutes() {\n var newDate = date.clone().add(options.stepping, 'm');\n\n if (isValid(newDate, 'm')) {\n setValue(newDate);\n }\n },\n incrementSeconds: function incrementSeconds() {\n var newDate = date.clone().add(1, 's');\n\n if (isValid(newDate, 's')) {\n setValue(newDate);\n }\n },\n decrementHours: function decrementHours() {\n var newDate = date.clone().subtract(1, 'h');\n\n if (isValid(newDate, 'h')) {\n setValue(newDate);\n }\n },\n decrementMinutes: function decrementMinutes() {\n var newDate = date.clone().subtract(options.stepping, 'm');\n\n if (isValid(newDate, 'm')) {\n setValue(newDate);\n }\n },\n decrementSeconds: function decrementSeconds() {\n var newDate = date.clone().subtract(1, 's');\n\n if (isValid(newDate, 's')) {\n setValue(newDate);\n }\n },\n togglePeriod: function togglePeriod() {\n setValue(date.clone().add(date.hours() >= 12 ? -12 : 12, 'h'));\n },\n togglePicker: function togglePicker(e) {\n var $this = $(e.target);\n var $parent = $this.closest('ul');\n var expanded = $parent.find('.in');\n var closed = $parent.find('.collapse:not(.in)');\n var collapseData;\n\n if (expanded && expanded.length) {\n collapseData = expanded.data('collapse');\n\n if (collapseData && collapseData.transitioning) {\n return;\n }\n\n if (expanded.collapse) {\n // if collapse plugin is available through bootstrap.js then use it\n expanded.collapse('hide');\n closed.collapse('show');\n } else {\n // otherwise just toggle in class on the two views\n expanded.removeClass('in');\n closed.addClass('in');\n }\n\n if ($this.is('span')) {\n $this.toggleClass(options.icons.time + ' ' + options.icons.date);\n } else {\n $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n } // NOTE: uncomment if toggled state will be restored in show()\n // if (component) {\n // component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n // }\n\n }\n },\n showPicker: function showPicker() {\n widget.find('.timepicker > div:not(.timepicker-picker)').hide();\n widget.find('.timepicker .timepicker-picker').show();\n },\n showHours: function showHours() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-hours').show();\n },\n showMinutes: function showMinutes() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-minutes').show();\n },\n showSeconds: function showSeconds() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-seconds').show();\n },\n selectHour: function selectHour(e) {\n var hour = parseInt($(e.target).text(), 10);\n\n if (!use24Hours) {\n if (date.hours() >= 12) {\n if (hour !== 12) {\n hour += 12;\n }\n } else {\n if (hour === 12) {\n hour = 0;\n }\n }\n }\n\n setValue(date.clone().hours(hour));\n actions.showPicker.call(picker);\n },\n selectMinute: function selectMinute(e) {\n setValue(date.clone().minutes(parseInt($(e.target).text(), 10)));\n actions.showPicker.call(picker);\n },\n selectSecond: function selectSecond(e) {\n setValue(date.clone().seconds(parseInt($(e.target).text(), 10)));\n actions.showPicker.call(picker);\n },\n clear: clear,\n today: function today() {\n var todaysDate = getMoment();\n\n if (isValid(todaysDate, 'd')) {\n setValue(todaysDate);\n }\n },\n close: hide\n };\n\n var doAction = function doAction(e) {\n if ($(e.currentTarget).is('.disabled')) {\n return false;\n }\n\n actions[$(e.currentTarget).data('action')].apply(picker, arguments);\n return false;\n };\n /**\n * Shows the widget. Possibly will emit dp.show and dp.change\n */\n\n\n var show = function show() {\n var currentMoment;\n var useCurrentGranularity = {\n 'year': function year(m) {\n return m.month(0).date(1).hours(0).seconds(0).minutes(0);\n },\n 'month': function month(m) {\n return m.date(1).hours(0).seconds(0).minutes(0);\n },\n 'day': function day(m) {\n return m.hours(0).seconds(0).minutes(0);\n },\n 'hour': function hour(m) {\n return m.seconds(0).minutes(0);\n },\n 'minute': function minute(m) {\n return m.seconds(0);\n }\n };\n\n if (input.prop('disabled') || !options.ignoreReadonly && input.prop('readonly') || widget) {\n return picker;\n }\n\n if (input.val() !== undefined && input.val().trim().length !== 0) {\n setValue(parseInputDate(input.val().trim()));\n } else if (unset && options.useCurrent && (options.inline || input.is('input') && input.val().trim().length === 0)) {\n currentMoment = getMoment();\n\n if (typeof options.useCurrent === 'string') {\n currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);\n }\n\n setValue(currentMoment);\n }\n\n widget = getTemplate();\n fillDow();\n fillMonths();\n widget.find('.timepicker-hours').hide();\n widget.find('.timepicker-minutes').hide();\n widget.find('.timepicker-seconds').hide();\n update();\n showMode();\n $(window).on('resize', place);\n widget.on('click', '[data-action]', doAction); // this handles clicks on the widget\n\n widget.on('mousedown', false);\n\n if (component && component.hasClass('btn')) {\n component.toggleClass('active');\n }\n\n place();\n widget.show();\n\n if (options.focusOnShow && !input.is(':focus')) {\n input.focus();\n }\n\n notifyEvent({\n type: 'dp.show'\n });\n return picker;\n };\n /**\n * Shows or hides the widget\n */\n\n\n var toggle = function toggle() {\n return widget ? hide() : show();\n };\n\n var keydown = function keydown(e) {\n var handler = null;\n var index;\n var index2;\n var pressedKeys = [];\n var pressedModifiers = {};\n var currentKey = e.which;\n var keyBindKeys;\n var allModifiersPressed;\n var pressed = 'p';\n keyState[currentKey] = pressed;\n\n for (index in keyState) {\n if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {\n pressedKeys.push(index);\n\n if (parseInt(index, 10) !== currentKey) {\n pressedModifiers[index] = true;\n }\n }\n }\n\n for (index in options.keyBinds) {\n if (options.keyBinds.hasOwnProperty(index) && typeof options.keyBinds[index] === 'function') {\n keyBindKeys = index.split(' ');\n\n if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {\n allModifiersPressed = true;\n\n for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {\n if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) {\n allModifiersPressed = false;\n break;\n }\n }\n\n if (allModifiersPressed) {\n handler = options.keyBinds[index];\n break;\n }\n }\n }\n }\n\n if (handler) {\n handler.call(picker, widget);\n e.stopPropagation();\n e.preventDefault();\n }\n };\n\n var keyup = function keyup(e) {\n keyState[e.which] = 'r';\n e.stopPropagation();\n e.preventDefault();\n };\n\n var change = function change(e) {\n var val = $(e.target).val().trim();\n var parsedDate = val ? parseInputDate(val) : null;\n setValue(parsedDate);\n e.stopImmediatePropagation();\n return false;\n };\n\n var attachDatePickerElementEvents = function attachDatePickerElementEvents() {\n input.on({\n 'change': change,\n 'blur': options.debug ? '' : hide,\n 'keydown': keydown,\n 'keyup': keyup,\n 'focus': options.allowInputToggle ? show : ''\n });\n\n if (element.is('input')) {\n input.on({\n 'focus': show\n });\n } else if (component) {\n component.on('click', toggle);\n component.on('mousedown', false);\n }\n };\n\n var detachDatePickerElementEvents = function detachDatePickerElementEvents() {\n input.off({\n 'change': change,\n 'blur': blur,\n 'keydown': keydown,\n 'keyup': keyup,\n 'focus': options.allowInputToggle ? hide : ''\n });\n\n if (element.is('input')) {\n input.off({\n 'focus': show\n });\n } else if (component) {\n component.off('click', toggle);\n component.off('mousedown', false);\n }\n };\n\n var indexGivenDates = function indexGivenDates(givenDatesArray) {\n // Store given enabledDates and disabledDates as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledDates['2014-02-27'] === true)\n var givenDatesIndexed = {};\n $.each(givenDatesArray, function () {\n var dDate = parseInputDate(this);\n\n if (dDate.isValid()) {\n givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;\n }\n });\n return Object.keys(givenDatesIndexed).length ? givenDatesIndexed : false;\n };\n\n var indexGivenHours = function indexGivenHours(givenHoursArray) {\n // Store given enabledHours and disabledHours as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledHours['2014-02-27'] === true)\n var givenHoursIndexed = {};\n $.each(givenHoursArray, function () {\n givenHoursIndexed[this] = true;\n });\n return Object.keys(givenHoursIndexed).length ? givenHoursIndexed : false;\n };\n\n var initFormatting = function initFormatting() {\n var format = options.format || 'L LT';\n actualFormat = format.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {\n var newinput = date.localeData().longDateFormat(formatInput) || formatInput;\n return newinput.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) {\n // temp fix for #740\n return date.localeData().longDateFormat(formatInput2) || formatInput2;\n });\n });\n parseFormats = options.extraFormats ? options.extraFormats.slice() : [];\n\n if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) {\n parseFormats.push(actualFormat);\n }\n\n use24Hours = actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.replace(/\\[.*?\\]/g, '').indexOf('h') < 1;\n\n if (isEnabled('y')) {\n minViewModeNumber = 2;\n }\n\n if (isEnabled('M')) {\n minViewModeNumber = 1;\n }\n\n if (isEnabled('d')) {\n minViewModeNumber = 0;\n }\n\n currentViewMode = Math.max(minViewModeNumber, currentViewMode);\n\n if (!unset) {\n setValue(date);\n }\n };\n /** ******************************************************************************\n *\n * Public API functions\n * =====================\n *\n * Important: Do not expose direct references to private objects or the options\n * object to the outer world. Always return a clone when returning values or make\n * a clone when setting a private variable.\n *\n ********************************************************************************/\n\n\n picker.destroy = function () {\n // /Destroys the widget and removes all attached event listeners \n hide();\n detachDatePickerElementEvents();\n element.removeData('DateTimePicker');\n element.removeData('date');\n };\n\n picker.toggle = toggle;\n picker.show = show;\n picker.hide = hide;\n\n picker.disable = function () {\n // /Disables the input element, the component is attached to, by adding a disabled=\"true\" attribute to it.\n // /If the widget was visible before that call it is hidden. Possibly emits dp.hide \n hide();\n\n if (component && component.hasClass('btn')) {\n component.addClass('disabled');\n }\n\n input.prop('disabled', true);\n return picker;\n };\n\n picker.enable = function () {\n // /Enables the input element, the component is attached to, by removing disabled attribute from it. \n if (component && component.hasClass('btn')) {\n component.removeClass('disabled');\n }\n\n input.prop('disabled', false);\n return picker;\n };\n\n picker.ignoreReadonly = function (ignoreReadonly) {\n if (arguments.length === 0) {\n return options.ignoreReadonly;\n }\n\n if (typeof ignoreReadonly !== 'boolean') {\n throw new TypeError('ignoreReadonly () expects a boolean parameter');\n }\n\n options.ignoreReadonly = ignoreReadonly;\n return picker;\n };\n\n picker.options = function (newOptions) {\n if (arguments.length === 0) {\n return $.extend(true, {}, options);\n }\n\n if (!(newOptions instanceof Object)) {\n throw new TypeError('options() options parameter should be an object');\n }\n\n $.extend(true, options, newOptions);\n $.each(options, function (key, value) {\n if (picker[key] !== undefined) {\n picker[key](value);\n } else {\n throw new TypeError('option ' + key + ' is not recognized!');\n }\n });\n return picker;\n };\n\n picker.date = function (newDate) {\n // /\n // /Returns the component's model current date, a moment object or null if not set. \n // /date.clone() \n // / \n // /\n // /Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration. \n // / Takes string, Date, moment, null parameter.\n // / \n if (arguments.length === 0) {\n if (unset) {\n return null;\n }\n\n return date.clone();\n }\n\n if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('date() parameter must be one of [null, string, moment or Date]');\n }\n\n setValue(newDate === null ? null : parseInputDate(newDate));\n return picker;\n };\n\n picker.format = function (newFormat) {\n // /test su \n // / info about para\n // /returns foo \n if (arguments.length === 0) {\n return options.format;\n }\n\n if (typeof newFormat !== 'string' && (typeof newFormat !== 'boolean' || newFormat !== false)) {\n throw new TypeError('format() expects a string or boolean:false parameter ' + newFormat);\n }\n\n options.format = newFormat;\n\n if (actualFormat) {\n initFormatting(); // reinit formatting\n }\n\n return picker;\n };\n\n picker.timeZone = function (newZone) {\n if (arguments.length === 0) {\n return options.timeZone;\n }\n\n if (typeof newZone !== 'string') {\n throw new TypeError('newZone() expects a string parameter');\n }\n\n options.timeZone = newZone;\n return picker;\n };\n\n picker.dayViewHeaderFormat = function (newFormat) {\n if (arguments.length === 0) {\n return options.dayViewHeaderFormat;\n }\n\n if (typeof newFormat !== 'string') {\n throw new TypeError('dayViewHeaderFormat() expects a string parameter');\n }\n\n options.dayViewHeaderFormat = newFormat;\n return picker;\n };\n\n picker.extraFormats = function (formats) {\n if (arguments.length === 0) {\n return options.extraFormats;\n }\n\n if (formats !== false && !(formats instanceof Array)) {\n throw new TypeError('extraFormats() expects an array or false parameter');\n }\n\n options.extraFormats = formats;\n\n if (parseFormats) {\n initFormatting(); // reinit formatting\n }\n\n return picker;\n };\n\n picker.disabledDates = function (dates) {\n // /\n // /Returns an array with the currently set disabled dates on the component. \n // /options.disabledDates \n // / \n // /\n // /Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n // /options.enabledDates if such exist. \n // / Takes an [ string or Date or moment ] of values and allows the user to select only from those days.\n // / \n if (arguments.length === 0) {\n return options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates;\n }\n\n if (!dates) {\n options.disabledDates = false;\n update();\n return picker;\n }\n\n if (!(dates instanceof Array)) {\n throw new TypeError('disabledDates() expects an array parameter');\n }\n\n options.disabledDates = indexGivenDates(dates);\n options.enabledDates = false;\n update();\n return picker;\n };\n\n picker.enabledDates = function (dates) {\n // /\n // /Returns an array with the currently set enabled dates on the component. \n // /options.enabledDates \n // / \n // /\n // /Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledDates if such exist. \n // / Takes an [ string or Date or moment ] of values and allows the user to select only from those days.\n // / \n if (arguments.length === 0) {\n return options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates;\n }\n\n if (!dates) {\n options.enabledDates = false;\n update();\n return picker;\n }\n\n if (!(dates instanceof Array)) {\n throw new TypeError('enabledDates() expects an array parameter');\n }\n\n options.enabledDates = indexGivenDates(dates);\n options.disabledDates = false;\n update();\n return picker;\n };\n\n picker.daysOfWeekDisabled = function (daysOfWeekDisabled) {\n if (arguments.length === 0) {\n return options.daysOfWeekDisabled.splice(0);\n }\n\n if (typeof daysOfWeekDisabled === 'boolean' && !daysOfWeekDisabled) {\n options.daysOfWeekDisabled = false;\n update();\n return picker;\n }\n\n if (!(daysOfWeekDisabled instanceof Array)) {\n throw new TypeError('daysOfWeekDisabled() expects an array parameter');\n }\n\n options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) {\n currentValue = parseInt(currentValue, 10);\n\n if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {\n return previousValue;\n }\n\n if (previousValue.indexOf(currentValue) === -1) {\n previousValue.push(currentValue);\n }\n\n return previousValue;\n }, []).sort();\n\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n\n while (!isValid(date, 'd')) {\n date.add(1, 'd');\n\n if (tries === 31) {\n throw new Error('Tried 31 times to find a valid date');\n }\n\n tries++;\n }\n\n setValue(date);\n }\n\n update();\n return picker;\n };\n\n picker.maxDate = function (maxDate) {\n if (arguments.length === 0) {\n return options.maxDate ? options.maxDate.clone() : options.maxDate;\n }\n\n if (typeof maxDate === 'boolean' && maxDate === false) {\n options.maxDate = false;\n update();\n return picker;\n }\n\n if (typeof maxDate === 'string') {\n if (maxDate === 'now' || maxDate === 'moment') {\n maxDate = getMoment();\n }\n }\n\n var parsedDate = parseInputDate(maxDate);\n\n if (!parsedDate.isValid()) {\n throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate);\n }\n\n if (options.minDate && parsedDate.isBefore(options.minDate)) {\n throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat));\n }\n\n options.maxDate = parsedDate;\n\n if (options.useCurrent && !options.keepInvalid && date.isAfter(maxDate)) {\n setValue(options.maxDate);\n }\n\n if (viewDate.isAfter(parsedDate)) {\n viewDate = parsedDate.clone().subtract(options.stepping, 'm');\n }\n\n update();\n return picker;\n };\n\n picker.minDate = function (minDate) {\n if (arguments.length === 0) {\n return options.minDate ? options.minDate.clone() : options.minDate;\n }\n\n if (typeof minDate === 'boolean' && minDate === false) {\n options.minDate = false;\n update();\n return picker;\n }\n\n if (typeof minDate === 'string') {\n if (minDate === 'now' || minDate === 'moment') {\n minDate = getMoment();\n }\n }\n\n var parsedDate = parseInputDate(minDate);\n\n if (!parsedDate.isValid()) {\n throw new TypeError('minDate() Could not parse date parameter: ' + minDate);\n }\n\n if (options.maxDate && parsedDate.isAfter(options.maxDate)) {\n throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat));\n }\n\n options.minDate = parsedDate;\n\n if (options.useCurrent && !options.keepInvalid && date.isBefore(minDate)) {\n setValue(options.minDate);\n }\n\n if (viewDate.isBefore(parsedDate)) {\n viewDate = parsedDate.clone().add(options.stepping, 'm');\n }\n\n update();\n return picker;\n };\n\n picker.defaultDate = function (defaultDate) {\n // /\n // /Returns a moment with the options.defaultDate option configuration or false if not set \n // /date.clone() \n // / \n // /\n // /Will set the picker's inital date. If a boolean:false value is passed the options.defaultDate parameter is cleared. \n // / Takes a string, Date, moment, boolean:false\n // / \n if (arguments.length === 0) {\n return options.defaultDate ? options.defaultDate.clone() : options.defaultDate;\n }\n\n if (!defaultDate) {\n options.defaultDate = false;\n return picker;\n }\n\n if (typeof defaultDate === 'string') {\n if (defaultDate === 'now' || defaultDate === 'moment') {\n defaultDate = getMoment();\n } else {\n defaultDate = getMoment(defaultDate);\n }\n }\n\n var parsedDate = parseInputDate(defaultDate);\n\n if (!parsedDate.isValid()) {\n throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate);\n }\n\n if (!isValid(parsedDate)) {\n throw new TypeError('defaultDate() date passed is invalid according to component setup validations');\n }\n\n options.defaultDate = parsedDate;\n\n if (options.defaultDate && options.inline || input.val().trim() === '') {\n setValue(options.defaultDate);\n }\n\n return picker;\n };\n\n picker.locale = function (locale) {\n if (arguments.length === 0) {\n return options.locale;\n }\n\n if (!moment.localeData(locale)) {\n throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!');\n }\n\n options.locale = locale;\n date.locale(options.locale);\n viewDate.locale(options.locale);\n\n if (actualFormat) {\n initFormatting(); // reinit formatting\n }\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.stepping = function (stepping) {\n if (arguments.length === 0) {\n return options.stepping;\n }\n\n stepping = parseInt(stepping, 10);\n\n if (isNaN(stepping) || stepping < 1) {\n stepping = 1;\n }\n\n options.stepping = stepping;\n return picker;\n };\n\n picker.useCurrent = function (useCurrent) {\n var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];\n\n if (arguments.length === 0) {\n return options.useCurrent;\n }\n\n if (typeof useCurrent !== 'boolean' && typeof useCurrent !== 'string') {\n throw new TypeError('useCurrent() expects a boolean or string parameter');\n }\n\n if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) {\n throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', '));\n }\n\n options.useCurrent = useCurrent;\n return picker;\n };\n\n picker.collapse = function (collapse) {\n if (arguments.length === 0) {\n return options.collapse;\n }\n\n if (typeof collapse !== 'boolean') {\n throw new TypeError('collapse() expects a boolean parameter');\n }\n\n if (options.collapse === collapse) {\n return picker;\n }\n\n options.collapse = collapse;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.icons = function (icons) {\n if (arguments.length === 0) {\n return $.extend({}, options.icons);\n }\n\n if (!(icons instanceof Object)) {\n throw new TypeError('icons() expects parameter to be an Object');\n }\n\n $.extend(options.icons, icons);\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.tooltips = function (tooltips) {\n if (arguments.length === 0) {\n return $.extend({}, options.tooltips);\n }\n\n if (!(tooltips instanceof Object)) {\n throw new TypeError('tooltips() expects parameter to be an Object');\n }\n\n $.extend(options.tooltips, tooltips);\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.useStrict = function (useStrict) {\n if (arguments.length === 0) {\n return options.useStrict;\n }\n\n if (typeof useStrict !== 'boolean') {\n throw new TypeError('useStrict() expects a boolean parameter');\n }\n\n options.useStrict = useStrict;\n return picker;\n };\n\n picker.sideBySide = function (sideBySide) {\n if (arguments.length === 0) {\n return options.sideBySide;\n }\n\n if (typeof sideBySide !== 'boolean') {\n throw new TypeError('sideBySide() expects a boolean parameter');\n }\n\n options.sideBySide = sideBySide;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.viewMode = function (viewMode) {\n if (arguments.length === 0) {\n return options.viewMode;\n }\n\n if (typeof viewMode !== 'string') {\n throw new TypeError('viewMode() expects a string parameter');\n }\n\n if (viewModes.indexOf(viewMode) === -1) {\n throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value');\n }\n\n options.viewMode = viewMode;\n currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber);\n showMode();\n return picker;\n };\n\n picker.toolbarPlacement = function (toolbarPlacement) {\n if (arguments.length === 0) {\n return options.toolbarPlacement;\n }\n\n if (typeof toolbarPlacement !== 'string') {\n throw new TypeError('toolbarPlacement() expects a string parameter');\n }\n\n if (toolbarPlacements.indexOf(toolbarPlacement) === -1) {\n throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value');\n }\n\n options.toolbarPlacement = toolbarPlacement;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.widgetPositioning = function (widgetPositioning) {\n if (arguments.length === 0) {\n return $.extend({}, options.widgetPositioning);\n }\n\n if ({}.toString.call(widgetPositioning) !== '[object Object]') {\n throw new TypeError('widgetPositioning() expects an object variable');\n }\n\n if (widgetPositioning.horizontal) {\n if (typeof widgetPositioning.horizontal !== 'string') {\n throw new TypeError('widgetPositioning() horizontal variable must be a string');\n }\n\n widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase();\n\n if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) {\n throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')');\n }\n\n options.widgetPositioning.horizontal = widgetPositioning.horizontal;\n }\n\n if (widgetPositioning.vertical) {\n if (typeof widgetPositioning.vertical !== 'string') {\n throw new TypeError('widgetPositioning() vertical variable must be a string');\n }\n\n widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase();\n\n if (verticalModes.indexOf(widgetPositioning.vertical) === -1) {\n throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')');\n }\n\n options.widgetPositioning.vertical = widgetPositioning.vertical;\n }\n\n update();\n return picker;\n };\n\n picker.calendarWeeks = function (calendarWeeks) {\n if (arguments.length === 0) {\n return options.calendarWeeks;\n }\n\n if (typeof calendarWeeks !== 'boolean') {\n throw new TypeError('calendarWeeks() expects parameter to be a boolean value');\n }\n\n options.calendarWeeks = calendarWeeks;\n update();\n return picker;\n };\n\n picker.showTodayButton = function (showTodayButton) {\n if (arguments.length === 0) {\n return options.showTodayButton;\n }\n\n if (typeof showTodayButton !== 'boolean') {\n throw new TypeError('showTodayButton() expects a boolean parameter');\n }\n\n options.showTodayButton = showTodayButton;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.showClear = function (showClear) {\n if (arguments.length === 0) {\n return options.showClear;\n }\n\n if (typeof showClear !== 'boolean') {\n throw new TypeError('showClear() expects a boolean parameter');\n }\n\n options.showClear = showClear;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.widgetParent = function (widgetParent) {\n if (arguments.length === 0) {\n return options.widgetParent;\n }\n\n if (typeof widgetParent === 'string') {\n widgetParent = $(widgetParent);\n }\n\n if (widgetParent !== null && typeof widgetParent !== 'string' && !(widgetParent instanceof $)) {\n throw new TypeError('widgetParent() expects a string or a jQuery object parameter');\n }\n\n options.widgetParent = widgetParent;\n\n if (widget) {\n hide();\n show();\n }\n\n return picker;\n };\n\n picker.keepOpen = function (keepOpen) {\n if (arguments.length === 0) {\n return options.keepOpen;\n }\n\n if (typeof keepOpen !== 'boolean') {\n throw new TypeError('keepOpen() expects a boolean parameter');\n }\n\n options.keepOpen = keepOpen;\n return picker;\n };\n\n picker.focusOnShow = function (focusOnShow) {\n if (arguments.length === 0) {\n return options.focusOnShow;\n }\n\n if (typeof focusOnShow !== 'boolean') {\n throw new TypeError('focusOnShow() expects a boolean parameter');\n }\n\n options.focusOnShow = focusOnShow;\n return picker;\n };\n\n picker.inline = function (inline) {\n if (arguments.length === 0) {\n return options.inline;\n }\n\n if (typeof inline !== 'boolean') {\n throw new TypeError('inline() expects a boolean parameter');\n }\n\n options.inline = inline;\n return picker;\n };\n\n picker.clear = function () {\n clear();\n return picker;\n };\n\n picker.keyBinds = function (keyBinds) {\n if (arguments.length === 0) {\n return options.keyBinds;\n }\n\n options.keyBinds = keyBinds;\n return picker;\n };\n\n picker.getMoment = function (d) {\n return getMoment(d);\n };\n\n picker.debug = function (debug) {\n if (typeof debug !== 'boolean') {\n throw new TypeError('debug() expects a boolean parameter');\n }\n\n options.debug = debug;\n return picker;\n };\n\n picker.allowInputToggle = function (allowInputToggle) {\n if (arguments.length === 0) {\n return options.allowInputToggle;\n }\n\n if (typeof allowInputToggle !== 'boolean') {\n throw new TypeError('allowInputToggle() expects a boolean parameter');\n }\n\n options.allowInputToggle = allowInputToggle;\n return picker;\n };\n\n picker.showClose = function (showClose) {\n if (arguments.length === 0) {\n return options.showClose;\n }\n\n if (typeof showClose !== 'boolean') {\n throw new TypeError('showClose() expects a boolean parameter');\n }\n\n options.showClose = showClose;\n return picker;\n };\n\n picker.keepInvalid = function (keepInvalid) {\n if (arguments.length === 0) {\n return options.keepInvalid;\n }\n\n if (typeof keepInvalid !== 'boolean') {\n throw new TypeError('keepInvalid() expects a boolean parameter');\n }\n\n options.keepInvalid = keepInvalid;\n return picker;\n };\n\n picker.datepickerInput = function (datepickerInput) {\n if (arguments.length === 0) {\n return options.datepickerInput;\n }\n\n if (typeof datepickerInput !== 'string') {\n throw new TypeError('datepickerInput() expects a string parameter');\n }\n\n options.datepickerInput = datepickerInput;\n return picker;\n };\n\n picker.parseInputDate = function (parseInputDate) {\n if (arguments.length === 0) {\n return options.parseInputDate;\n }\n\n if (typeof parseInputDate !== 'function') {\n throw new TypeError('parseInputDate() sholud be as function');\n }\n\n options.parseInputDate = parseInputDate;\n return picker;\n };\n\n picker.disabledTimeIntervals = function (disabledTimeIntervals) {\n // /\n // /Returns an array with the currently set disabled dates on the component. \n // /options.disabledTimeIntervals \n // / \n // /\n // /Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n // /options.enabledDates if such exist. \n // / Takes an [ string or Date or moment ] of values and allows the user to select only from those days.\n // / \n if (arguments.length === 0) {\n return options.disabledTimeIntervals ? $.extend({}, options.disabledTimeIntervals) : options.disabledTimeIntervals;\n }\n\n if (!disabledTimeIntervals) {\n options.disabledTimeIntervals = false;\n update();\n return picker;\n }\n\n if (!(disabledTimeIntervals instanceof Array)) {\n throw new TypeError('disabledTimeIntervals() expects an array parameter');\n }\n\n options.disabledTimeIntervals = disabledTimeIntervals;\n update();\n return picker;\n };\n\n picker.disabledHours = function (hours) {\n // /\n // /Returns an array with the currently set disabled hours on the component. \n // /options.disabledHours \n // / \n // /\n // /Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n // /options.enabledHours if such exist. \n // / Takes an [ int ] of values and disallows the user to select only from those hours.\n // / \n if (arguments.length === 0) {\n return options.disabledHours ? $.extend({}, options.disabledHours) : options.disabledHours;\n }\n\n if (!hours) {\n options.disabledHours = false;\n update();\n return picker;\n }\n\n if (!(hours instanceof Array)) {\n throw new TypeError('disabledHours() expects an array parameter');\n }\n\n options.disabledHours = indexGivenHours(hours);\n options.enabledHours = false;\n\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n\n while (!isValid(date, 'h')) {\n date.add(1, 'h');\n\n if (tries === 24) {\n throw new Error('Tried 24 times to find a valid date');\n }\n\n tries++;\n }\n\n setValue(date);\n }\n\n update();\n return picker;\n };\n\n picker.enabledHours = function (hours) {\n // /\n // /Returns an array with the currently set enabled hours on the component. \n // /options.enabledHours \n // / \n // /\n // /Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledHours if such exist. \n // / Takes an [ int ] of values and allows the user to select only from those hours.\n // / \n if (arguments.length === 0) {\n return options.enabledHours ? $.extend({}, options.enabledHours) : options.enabledHours;\n }\n\n if (!hours) {\n options.enabledHours = false;\n update();\n return picker;\n }\n\n if (!(hours instanceof Array)) {\n throw new TypeError('enabledHours() expects an array parameter');\n }\n\n options.enabledHours = indexGivenHours(hours);\n options.disabledHours = false;\n\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n\n while (!isValid(date, 'h')) {\n date.add(1, 'h');\n\n if (tries === 24) {\n throw new Error('Tried 24 times to find a valid date');\n }\n\n tries++;\n }\n\n setValue(date);\n }\n\n update();\n return picker;\n };\n /**\n * Returns the component's model current viewDate, a moment object or null if not set. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.\n * @param {Takes string, viewDate, moment, null parameter.} newDate\n * @returns {viewDate.clone()}\n */\n\n\n picker.viewDate = function (newDate) {\n if (arguments.length === 0) {\n return viewDate.clone();\n }\n\n if (!newDate) {\n viewDate = date.clone();\n return picker;\n }\n\n if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');\n }\n\n viewDate = parseInputDate(newDate);\n viewUpdate();\n return picker;\n }; // initializing element and component attributes\n\n\n if (element.is('input')) {\n input = element;\n } else {\n input = element.find(options.datepickerInput);\n\n if (input.length === 0) {\n input = element.find('input');\n } else if (!input.is('input')) {\n throw new Error('CSS class \"' + options.datepickerInput + '\" cannot be applied to non input element');\n }\n }\n\n if (element.hasClass('input-group')) {\n // in case there is more then one 'input-group-addon' Issue #48\n if (element.find('.datepickerbutton').length === 0) {\n component = element.find('.input-group-addon');\n } else {\n component = element.find('.datepickerbutton');\n }\n }\n\n if (!options.inline && !input.is('input')) {\n throw new Error('Could not initialize DateTimePicker without an input element');\n } // Set defaults for date here now instead of in var declaration\n\n\n date = getMoment();\n viewDate = date.clone();\n $.extend(true, options, dataToOptions());\n picker.options(options);\n initFormatting();\n attachDatePickerElementEvents();\n\n if (input.prop('disabled')) {\n picker.disable();\n }\n\n if (input.is('input') && input.val().trim().length !== 0) {\n setValue(parseInputDate(input.val().trim()));\n } else if (options.defaultDate && input.attr('placeholder') === undefined) {\n setValue(options.defaultDate);\n }\n\n if (options.inline) {\n show();\n }\n\n return picker;\n };\n /** ******************************************************************************\n *\n * jQuery plugin constructor and defaults object\n *\n ********************************************************************************/\n\n /**\n * See (http://jquery.com/).\n * @name jQuery\n * @class\n * See the jQuery Library (http://jquery.com/) for full details. This just\n * documents the function and classes that are added to jQuery by this plug-in.\n */\n\n /**\n * See (http://jquery.com/)\n * @name fn\n * @class\n * See the jQuery Library (http://jquery.com/) for full details. This just\n * documents the function and classes that are added to jQuery by this plug-in.\n * @memberOf jQuery\n */\n\n /**\n * Show comments\n * @class datetimepicker\n * @memberOf jQuery.fn\n */\n\n\n $.fn.datetimepicker = function (options) {\n options = options || {};\n var args = Array.prototype.slice.call(arguments, 1);\n var isInstance = true;\n var thisMethods = ['destroy', 'hide', 'show', 'toggle'];\n var returnValue;\n\n if (_typeof(options) === 'object') {\n return this.each(function () {\n var $this = $(this);\n\n var _options;\n\n if (!$this.data('DateTimePicker')) {\n // create a private copy of the defaults object\n _options = $.extend(true, {}, $.fn.datetimepicker.defaults, options);\n $this.data('DateTimePicker', dateTimePicker($this, _options));\n }\n });\n } else if (typeof options === 'string') {\n this.each(function () {\n var $this = $(this);\n var instance = $this.data('DateTimePicker');\n\n if (!instance) {\n throw new Error('bootstrap-datetimepicker(\"' + options + '\") method was called on an element that is not using DateTimePicker');\n }\n\n returnValue = instance[options].apply(instance, args);\n isInstance = returnValue === instance;\n });\n\n if (isInstance || $.inArray(options, thisMethods) > -1) {\n return this;\n }\n\n return returnValue;\n }\n\n throw new TypeError('Invalid arguments for DateTimePicker: ' + options);\n };\n\n $.fn.datetimepicker.defaults = {\n timeZone: '',\n format: false,\n dayViewHeaderFormat: 'MMMM YYYY',\n extraFormats: false,\n stepping: 1,\n minDate: false,\n maxDate: false,\n useCurrent: true,\n collapse: true,\n locale: moment.locale(),\n defaultDate: false,\n disabledDates: false,\n enabledDates: false,\n icons: {\n time: 'glyphicon glyphicon-time',\n date: 'glyphicon glyphicon-calendar',\n up: 'glyphicon glyphicon-chevron-up',\n down: 'glyphicon glyphicon-chevron-down',\n previous: 'glyphicon glyphicon-chevron-left',\n next: 'glyphicon glyphicon-chevron-right',\n today: 'glyphicon glyphicon-screenshot',\n clear: 'glyphicon glyphicon-trash',\n close: 'glyphicon glyphicon-remove'\n },\n tooltips: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n togglePeriod: 'Toggle Period',\n selectTime: 'Select Time'\n },\n useStrict: false,\n sideBySide: false,\n daysOfWeekDisabled: false,\n calendarWeeks: false,\n viewMode: 'days',\n toolbarPlacement: 'default',\n showTodayButton: false,\n showClear: false,\n showClose: false,\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'auto'\n },\n widgetParent: null,\n ignoreReadonly: false,\n keepOpen: false,\n focusOnShow: true,\n inline: false,\n keepInvalid: false,\n datepickerInput: '.datepickerinput',\n keyBinds: {\n up: function up(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(7, 'd'));\n } else {\n this.date(d.clone().add(this.stepping(), 'm'));\n }\n },\n down: function down(widget) {\n if (!widget) {\n this.show();\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(7, 'd'));\n } else {\n this.date(d.clone().subtract(this.stepping(), 'm'));\n }\n },\n 'control up': function controlUp(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'y'));\n } else {\n this.date(d.clone().add(1, 'h'));\n }\n },\n 'control down': function controlDown(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'y'));\n } else {\n this.date(d.clone().subtract(1, 'h'));\n }\n },\n left: function left(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'd'));\n }\n },\n right: function right(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'd'));\n }\n },\n pageUp: function pageUp(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'M'));\n }\n },\n pageDown: function pageDown(widget) {\n if (!widget) {\n return;\n }\n\n var d = this.date() || this.getMoment();\n\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'M'));\n }\n },\n enter: function enter() {\n this.hide();\n },\n escape: function escape() {\n this.hide();\n },\n // tab: function (widget) { //this break the flow of the form. disabling for now\n // var toggle = widget.find('.picker-switch a[data-action=\"togglePicker\"]');\n // if(toggle.length > 0) toggle.click();\n // },\n 'control space': function controlSpace(widget) {\n if (!widget) {\n return;\n }\n\n if (widget.find('.timepicker').is(':visible')) {\n widget.find('.btn[data-action=\"togglePeriod\"]').click();\n }\n },\n t: function t() {\n this.date(this.getMoment());\n },\n 'delete': function _delete() {\n this.clear();\n }\n },\n debug: false,\n allowInputToggle: false,\n disabledTimeIntervals: false,\n disabledHours: false,\n enabledHours: false,\n viewDate: false\n };\n return $.fn.datetimepicker;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlci5qcz9lNDA5Il0sIm5hbWVzIjpbImZhY3RvcnkiLCJkZWZpbmUiLCIkIiwibW9tZW50IiwiRXJyb3IiLCJkYXRlVGltZVBpY2tlciIsImVsZW1lbnQiLCJvcHRpb25zIiwicGlja2VyIiwiZGF0ZSIsInZpZXdEYXRlIiwidW5zZXQiLCJpbnB1dCIsImNvbXBvbmVudCIsIndpZGdldCIsInVzZTI0SG91cnMiLCJtaW5WaWV3TW9kZU51bWJlciIsImFjdHVhbEZvcm1hdCIsInBhcnNlRm9ybWF0cyIsImN1cnJlbnRWaWV3TW9kZSIsImRhdGVQaWNrZXJNb2RlcyIsImNsc05hbWUiLCJuYXZGbmMiLCJuYXZTdGVwIiwidmlld01vZGVzIiwidmVydGljYWxNb2RlcyIsImhvcml6b250YWxNb2RlcyIsInRvb2xiYXJQbGFjZW1lbnRzIiwia2V5TWFwIiwia2V5U3RhdGUiLCJoYXNUaW1lWm9uZSIsInR6IiwidW5kZWZpbmVkIiwidGltZVpvbmUiLCJnZXRNb21lbnQiLCJkIiwicmV0dXJuTW9tZW50IiwiaXNEYXRlIiwiaXNNb21lbnQiLCJ1c2VTdHJpY3QiLCJpc0VuYWJsZWQiLCJncmFudWxhcml0eSIsImxlbmd0aCIsIlR5cGVFcnJvciIsImluZGV4T2YiLCJ0b0xvd2VyQ2FzZSIsImhhc1RpbWUiLCJoYXNEYXRlIiwiZ2V0RGF0ZVBpY2tlclRlbXBsYXRlIiwiaGVhZFRlbXBsYXRlIiwiYXBwZW5kIiwiYWRkQ2xhc3MiLCJhdHRyIiwiaWNvbnMiLCJwcmV2aW91cyIsImNhbGVuZGFyV2Vla3MiLCJuZXh0IiwiY29udFRlbXBsYXRlIiwiY2xvbmUiLCJnZXRUaW1lUGlja2VyTWFpblRlbXBsYXRlIiwidG9wUm93IiwibWlkZGxlUm93IiwiYm90dG9tUm93IiwiaHJlZiIsInRhYmluZGV4IiwidG9vbHRpcHMiLCJpbmNyZW1lbnRIb3VyIiwidXAiLCJwaWNrSG91ciIsImRlY3JlbWVudEhvdXIiLCJkb3duIiwiaHRtbCIsImluY3JlbWVudE1pbnV0ZSIsInBpY2tNaW51dGUiLCJkZWNyZW1lbnRNaW51dGUiLCJpbmNyZW1lbnRTZWNvbmQiLCJwaWNrU2Vjb25kIiwiZGVjcmVtZW50U2Vjb25kIiwidG9nZ2xlUGVyaW9kIiwiZ2V0VGltZVBpY2tlclRlbXBsYXRlIiwiaG91cnNWaWV3IiwibWludXRlc1ZpZXciLCJzZWNvbmRzVmlldyIsInJldCIsInB1c2giLCJnZXRUb29sYmFyIiwicm93Iiwic2hvd1RvZGF5QnV0dG9uIiwidG9kYXkiLCJzaWRlQnlTaWRlIiwic2VsZWN0VGltZSIsInRpbWUiLCJzaG93Q2xlYXIiLCJjbGVhciIsInNob3dDbG9zZSIsImNsb3NlIiwiZ2V0VGVtcGxhdGUiLCJ0ZW1wbGF0ZSIsImRhdGVWaWV3IiwidGltZVZpZXciLCJjb250ZW50IiwidG9vbGJhciIsImNvbGxhcHNlIiwiaW5saW5lIiwicmVtb3ZlQ2xhc3MiLCJ0b29sYmFyUGxhY2VtZW50IiwiZGF0YVRvT3B0aW9ucyIsImVEYXRhIiwiZGF0YU9wdGlvbnMiLCJpcyIsImRhdGEiLCJmaW5kIiwiZGF0ZU9wdGlvbnMiLCJPYmplY3QiLCJleHRlbmQiLCJlYWNoIiwia2V5IiwiYXR0cmlidXRlTmFtZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJwbGFjZSIsInBvc2l0aW9uIiwib2Zmc2V0IiwidmVydGljYWwiLCJ3aWRnZXRQb3NpdGlvbmluZyIsImhvcml6b250YWwiLCJwYXJlbnQiLCJ3aWRnZXRQYXJlbnQiLCJhZnRlciIsImNoaWxkcmVuIiwiZmlyc3QiLCJ0b3AiLCJoZWlnaHQiLCJ3aW5kb3ciLCJzY3JvbGxUb3AiLCJvdXRlckhlaWdodCIsIndpZHRoIiwibGVmdCIsIm91dGVyV2lkdGgiLCJjc3MiLCJwYXJlbnRzIiwiZmlsdGVyIiwiYm90dG9tIiwicmlnaHQiLCJub3RpZnlFdmVudCIsImUiLCJ0eXBlIiwiaXNTYW1lIiwib2xkRGF0ZSIsInRyaWdnZXIiLCJ2aWV3VXBkYXRlIiwiY2hhbmdlIiwic2hvd01vZGUiLCJkaXIiLCJNYXRoIiwibWF4IiwibWluIiwiaGlkZSIsInNob3ciLCJmaWxsRG93IiwiY3VycmVudERhdGUiLCJzdGFydE9mIiwidGV4dCIsImlzQmVmb3JlIiwiZW5kT2YiLCJmb3JtYXQiLCJhZGQiLCJpc0luRGlzYWJsZWREYXRlcyIsInRlc3REYXRlIiwiZGlzYWJsZWREYXRlcyIsImlzSW5FbmFibGVkRGF0ZXMiLCJlbmFibGVkRGF0ZXMiLCJpc0luRGlzYWJsZWRIb3VycyIsImRpc2FibGVkSG91cnMiLCJpc0luRW5hYmxlZEhvdXJzIiwiZW5hYmxlZEhvdXJzIiwiaXNWYWxpZCIsInRhcmdldE1vbWVudCIsIm1pbkRhdGUiLCJtYXhEYXRlIiwiaXNBZnRlciIsImRheXNPZldlZWtEaXNhYmxlZCIsImRheSIsImRpc2FibGVkVGltZUludGVydmFscyIsImZvdW5kIiwiaXNCZXR3ZWVuIiwiZmlsbE1vbnRocyIsInNwYW5zIiwibW9udGhzU2hvcnQiLCJlbXB0eSIsInVwZGF0ZU1vbnRocyIsIm1vbnRoc1ZpZXciLCJtb250aHNWaWV3SGVhZGVyIiwibW9udGhzIiwiZXEiLCJwcmV2WWVhciIsInNlbGVjdFllYXIiLCJuZXh0WWVhciIsInN1YnRyYWN0IiwieWVhciIsIm1vbnRoIiwiaW5kZXgiLCJ1cGRhdGVZZWFycyIsInllYXJzVmlldyIsInllYXJzVmlld0hlYWRlciIsInN0YXJ0WWVhciIsImVuZFllYXIiLCJwcmV2RGVjYWRlIiwic2VsZWN0RGVjYWRlIiwibmV4dERlY2FkZSIsInVwZGF0ZURlY2FkZXMiLCJkZWNhZGVzVmlldyIsImRlY2FkZXNWaWV3SGVhZGVyIiwic3RhcnREZWNhZGUiLCJ5IiwiZW5kRGVjYWRlIiwic3RhcnRlZEF0IiwibWluRGF0ZURlY2FkZSIsIm1heERhdGVEZWNhZGUiLCJlbmREZWNhZGVZZWFyIiwicHJldkNlbnR1cnkiLCJuZXh0Q2VudHVyeSIsImZpbGxEYXRlIiwiZGF5c1ZpZXciLCJkYXlzVmlld0hlYWRlciIsImNsc05hbWVzIiwiaSIsInByZXZNb250aCIsInNlbGVjdE1vbnRoIiwibmV4dE1vbnRoIiwiZGF5Vmlld0hlYWRlckZvcm1hdCIsIndlZWtkYXkiLCJ3ZWVrIiwiY2xhc3NOYW1lcyIsImpvaW4iLCJmaWxsSG91cnMiLCJ0YWJsZSIsImN1cnJlbnRIb3VyIiwiaG91ciIsImZpbGxNaW51dGVzIiwiY3VycmVudE1pbnV0ZSIsInN0ZXAiLCJzdGVwcGluZyIsIm1pbnV0ZSIsImZpbGxTZWNvbmRzIiwiY3VycmVudFNlY29uZCIsInNlY29uZCIsImZpbGxUaW1lIiwidG9nZ2xlIiwibmV3RGF0ZSIsInRpbWVDb21wb25lbnRzIiwiaG91cnMiLCJ1cGRhdGUiLCJzZXRWYWx1ZSIsInZhbCIsImxvY2FsZSIsIm1pbnV0ZXMiLCJyb3VuZCIsInNlY29uZHMiLCJrZWVwSW52YWxpZCIsInRyYW5zaXRpb25pbmciLCJjb2xsYXBzZURhdGEiLCJoYXNDbGFzcyIsInRvZ2dsZUNsYXNzIiwib2ZmIiwicmVtb3ZlIiwiYmx1ciIsInBhcnNlSW5wdXREYXRlIiwiaW5wdXREYXRlIiwiRGF0ZSIsImFjdGlvbnMiLCJwaWNrZXJTd2l0Y2giLCJ0YXJnZXQiLCJjbG9zZXN0IiwicGFyc2VJbnQiLCJzZWxlY3REYXkiLCJrZWVwT3BlbiIsImluY3JlbWVudEhvdXJzIiwiaW5jcmVtZW50TWludXRlcyIsImluY3JlbWVudFNlY29uZHMiLCJkZWNyZW1lbnRIb3VycyIsImRlY3JlbWVudE1pbnV0ZXMiLCJkZWNyZW1lbnRTZWNvbmRzIiwidG9nZ2xlUGlja2VyIiwiJHRoaXMiLCIkcGFyZW50IiwiZXhwYW5kZWQiLCJjbG9zZWQiLCJzaG93UGlja2VyIiwic2hvd0hvdXJzIiwic2hvd01pbnV0ZXMiLCJzaG93U2Vjb25kcyIsInNlbGVjdEhvdXIiLCJjYWxsIiwic2VsZWN0TWludXRlIiwic2VsZWN0U2Vjb25kIiwidG9kYXlzRGF0ZSIsImRvQWN0aW9uIiwiY3VycmVudFRhcmdldCIsImFwcGx5IiwiYXJndW1lbnRzIiwiY3VycmVudE1vbWVudCIsInVzZUN1cnJlbnRHcmFudWxhcml0eSIsIm0iLCJwcm9wIiwiaWdub3JlUmVhZG9ubHkiLCJ0cmltIiwidXNlQ3VycmVudCIsIm9uIiwiZm9jdXNPblNob3ciLCJmb2N1cyIsImtleWRvd24iLCJoYW5kbGVyIiwiaW5kZXgyIiwicHJlc3NlZEtleXMiLCJwcmVzc2VkTW9kaWZpZXJzIiwiY3VycmVudEtleSIsIndoaWNoIiwia2V5QmluZEtleXMiLCJhbGxNb2RpZmllcnNQcmVzc2VkIiwicHJlc3NlZCIsImhhc093blByb3BlcnR5Iiwia2V5QmluZHMiLCJzcGxpdCIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwia2V5dXAiLCJwYXJzZWREYXRlIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiYXR0YWNoRGF0ZVBpY2tlckVsZW1lbnRFdmVudHMiLCJkZWJ1ZyIsImFsbG93SW5wdXRUb2dnbGUiLCJkZXRhY2hEYXRlUGlja2VyRWxlbWVudEV2ZW50cyIsImluZGV4R2l2ZW5EYXRlcyIsImdpdmVuRGF0ZXNBcnJheSIsImdpdmVuRGF0ZXNJbmRleGVkIiwiZERhdGUiLCJrZXlzIiwiaW5kZXhHaXZlbkhvdXJzIiwiZ2l2ZW5Ib3Vyc0FycmF5IiwiZ2l2ZW5Ib3Vyc0luZGV4ZWQiLCJpbml0Rm9ybWF0dGluZyIsInJlcGxhY2UiLCJmb3JtYXRJbnB1dCIsIm5ld2lucHV0IiwibG9jYWxlRGF0YSIsImxvbmdEYXRlRm9ybWF0IiwiZm9ybWF0SW5wdXQyIiwiZXh0cmFGb3JtYXRzIiwiZGVzdHJveSIsInJlbW92ZURhdGEiLCJkaXNhYmxlIiwiZW5hYmxlIiwibmV3T3B0aW9ucyIsInZhbHVlIiwibmV3Rm9ybWF0IiwibmV3Wm9uZSIsImZvcm1hdHMiLCJBcnJheSIsImRhdGVzIiwic3BsaWNlIiwicmVkdWNlIiwicHJldmlvdXNWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsImlzTmFOIiwic29ydCIsInRyaWVzIiwiZGVmYXVsdERhdGUiLCJ1c2VDdXJyZW50T3B0aW9ucyIsInZpZXdNb2RlIiwidG9TdHJpbmciLCJkYXRlcGlja2VySW5wdXQiLCJmbiIsImRhdGV0aW1lcGlja2VyIiwiYXJncyIsInByb3RvdHlwZSIsImlzSW5zdGFuY2UiLCJ0aGlzTWV0aG9kcyIsInJldHVyblZhbHVlIiwiX29wdGlvbnMiLCJkZWZhdWx0cyIsImluc3RhbmNlIiwiaW5BcnJheSIsInBhZ2VVcCIsInBhZ2VEb3duIiwiZW50ZXIiLCJlc2NhcGUiLCJjbGljayIsInQiXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTtBQUNDLFdBQVNBLE9BQVQsRUFBa0I7QUFDZjs7QUFDQSxNQUFJLElBQUosRUFBZ0Q7QUFDNUM7QUFDQUMscUNBQU8sQ0FBQywyQ0FBRCxFQUFXLG9FQUFYLENBQUQsb0NBQXVCRCxPQUF2QjtBQUFBO0FBQUE7QUFBQSxrR0FBTjtBQUNILEdBSEQsTUFHTyxFQVdOO0FBQ0osQ0FqQkEsRUFpQkMsVUFBU0UsQ0FBVCxFQUFZQyxNQUFaLEVBQW9CO0FBQ2xCOztBQUNBLE1BQUksQ0FBQ0EsTUFBTCxFQUFhO0FBQ1QsVUFBTSxJQUFJQyxLQUFKLENBQVUsZ0VBQVYsQ0FBTjtBQUNIOztBQUVELE1BQUlDLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBU0MsT0FBVCxFQUFrQkMsT0FBbEIsRUFBMkI7QUFDNUMsUUFBSUMsTUFBTSxHQUFHLEVBQWI7QUFDQSxRQUFJQyxJQUFKO0FBQ0EsUUFBSUMsUUFBSjtBQUNBLFFBQUlDLEtBQUssR0FBRyxJQUFaO0FBQ0EsUUFBSUMsS0FBSjtBQUNBLFFBQUlDLFNBQVMsR0FBRyxLQUFoQjtBQUNBLFFBQUlDLE1BQU0s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a2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyohIHZlcnNpb24gOiA0LjE3LjQ3XG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gYm9vdHN0cmFwLWRhdGV0aW1lanNcbiBodHRwczovL2dpdGh1Yi5jb20vRW9uYXNkYW4vYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyXG4gQ29weXJpZ2h0IChjKSAyMDE1IEpvbmF0aGFuIFBldGVyc29uXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cbi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKGMpIDIwMTUgSm9uYXRoYW4gUGV0ZXJzb25cblxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gVEhFIFNPRlRXQVJFLlxuICovXG4vKiBnbG9iYWwgZGVmaW5lOmZhbHNlICovXG4vKiBnbG9iYWwgalF1ZXJ5OmZhbHNlICovXG4vKiBnbG9iYWwgbW9tZW50OmZhbHNlICovXG4oZnVuY3Rpb24oZmFjdG9yeSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIC8vIEFNRCBpcyB1c2VkIC0gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICAgICAgZGVmaW5lKFsnanF1ZXJ5JywgJ21vbWVudCddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JyksIHJlcXVpcmUoJ21vbWVudCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOZWl0aGVyIEFNRCBub3IgQ29tbW9uSlMgdXNlZC4gVXNlIGdsb2JhbCB2YXJpYWJsZXMuXG4gICAgICAgIGlmICh0eXBlb2YgalF1ZXJ5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIgcmVxdWlyZXMgalF1ZXJ5IHRvIGJlIGxvYWRlZCBmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbW9tZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdib290c3RyYXAtZGF0ZXRpbWVwaWNrZXIgcmVxdWlyZXMgTW9tZW50LmpzIHRvIGJlIGxvYWRlZCBmaXJzdCcpO1xuICAgICAgICB9XG4gICAgICAgIGZhY3RvcnkoalF1ZXJ5LCBtb21lbnQpO1xuICAgIH1cbn0oZnVuY3Rpb24oJCwgbW9tZW50KSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIGlmICghbW9tZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyIHJlcXVpcmVzIE1vbWVudC5qcyB0byBiZSBsb2FkZWQgZmlyc3QnKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0ZVRpbWVQaWNrZXIgPSBmdW5jdGlvbihlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBwaWNrZXIgPSB7fTtcbiAgICAgICAgdmFyIGRhdGU7XG4gICAgICAgIHZhciB2aWV3RGF0ZTtcbiAgICAgICAgdmFyIHVuc2V0ID0gdHJ1ZTtcbiAgICAgICAgdmFyIGlucHV0O1xuICAgICAgICB2YXIgY29tcG9uZW50ID0gZmFsc2U7XG4gICAgICAgIHZhciB3aWRnZXQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHVzZTI0SG91cnM7XG4gICAgICAgIHZhciBtaW5WaWV3TW9kZU51bWJlciA9IDA7XG4gICAgICAgIHZhciBhY3R1YWxGb3JtYXQ7XG4gICAgICAgIHZhciBwYXJzZUZvcm1hdHM7XG4gICAgICAgIHZhciBjdXJyZW50Vmlld01vZGU7XG4gICAgICAgIHZhciBkYXRlUGlja2VyTW9kZXMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xzTmFtZTogJ2RheXMnLFxuICAgICAgICAgICAgICAgIG5hdkZuYzogJ00nLFxuICAgICAgICAgICAgICAgIG5hdlN0ZXA6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xzTmFtZTogJ21vbnRocycsXG4gICAgICAgICAgICAgICAgbmF2Rm5jOiAneScsXG4gICAgICAgICAgICAgICAgbmF2U3RlcDogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbHNOYW1lOiAneWVhcnMnLFxuICAgICAgICAgICAgICAgIG5hdkZuYzogJ3knLFxuICAgICAgICAgICAgICAgIG5hdlN0ZXA6IDEwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsc05hbWU6ICdkZWNhZGVzJyxcbiAgICAgICAgICAgICAgICBuYXZGbmM6ICd5JyxcbiAgICAgICAgICAgICAgICBuYXZTdGVwOiAxMDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdmFyIHZpZXdNb2RlcyA9IFsnZGF5cycsICdtb250aHMnLCAneWVhcnMnLCAnZGVjYWRlcyddO1xuICAgICAgICB2YXIgdmVydGljYWxNb2RlcyA9IFsndG9wJywgJ2JvdHRvbScsICdhdXRvJ107XG4gICAgICAgIHZhciBob3Jpem9udGFsTW9kZXMgPSBbJ2xlZnQnLCAncmlnaHQnLCAnYXV0byddO1xuICAgICAgICB2YXIgdG9vbGJhclBsYWNlbWVudHMgPSBbJ2RlZmF1bHQnLCAndG9wJywgJ2JvdHRvbSddO1xuICAgICAgICB2YXIga2V5TWFwID0ge1xuICAgICAgICAgICAgJ3VwJzogMzgsXG4gICAgICAgICAgICAzODogJ3VwJyxcbiAgICAgICAgICAgICdkb3duJzogNDAsXG4gICAgICAgICAgICA0MDogJ2Rvd24nLFxuICAgICAgICAgICAgJ2xlZnQnOiAzNyxcbiAgICAgICAgICAgIDM3OiAnbGVmdCcsXG4gICAgICAgICAgICAncmlnaHQnOiAzOSxcbiAgICAgICAgICAgIDM5OiAncmlnaHQnLFxuICAgICAgICAgICAgJ3RhYic6IDksXG4gICAgICAgICAgICA5OiAndGFiJyxcbiAgICAgICAgICAgICdlc2NhcGUnOiAyNyxcbiAgICAgICAgICAgIDI3OiAnZXNjYXBlJyxcbiAgICAgICAgICAgICdlbnRlcic6IDEzLFxuICAgICAgICAgICAgMTM6ICdlbnRlcicsXG4gICAgICAgICAgICAncGFnZVVwJzogMzMsXG4gICAgICAgICAgICAzMzogJ3BhZ2VVcCcsXG4gICAgICAgICAgICAncGFnZURvd24nOiAzNCxcbiAgICAgICAgICAgIDM0OiAncGFnZURvd24nLFxuICAgICAgICAgICAgJ3NoaWZ0JzogMTYsXG4gICAgICAgICAgICAxNjogJ3NoaWZ0JyxcbiAgICAgICAgICAgICdjb250cm9sJzogMTcsXG4gICAgICAgICAgICAxNzogJ2NvbnRyb2wnLFxuICAgICAgICAgICAgJ3NwYWNlJzogMzIsXG4gICAgICAgICAgICAzMjogJ3NwYWNlJyxcbiAgICAgICAgICAgICd0JzogODQsXG4gICAgICAgICAgICA4NDogJ3QnLFxuICAgICAgICAgICAgJ2RlbGV0ZSc6IDQ2LFxuICAgICAgICAgICAgNDY6ICdkZWxldGUnXG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZXlTdGF0ZSA9IHt9O1xuXG4gICAgICAgIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBQcml2YXRlIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgICAgICB2YXIgaGFzVGltZVpvbmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQudHogIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLnRpbWVab25lICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy50aW1lWm9uZSAhPT0gbnVsbCAmJiBvcHRpb25zLnRpbWVab25lICE9PSAnJztcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0TW9tZW50ID0gZnVuY3Rpb24oZCkge1xuICAgICAgICAgICAgdmFyIHJldHVybk1vbWVudDtcblxuICAgICAgICAgICAgaWYgKGQgPT09IHVuZGVmaW5lZCB8fCBkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuTW9tZW50ID0gbW9tZW50KCk7IC8vIFRPRE8gc2hvdWxkIHRoaXMgdXNlIGZvcm1hdD8gYW5kIGxvY2FsZT9cbiAgICAgICAgICAgIH0gZWxzZSBpZiAobW9tZW50LmlzRGF0ZShkKSB8fCBtb21lbnQuaXNNb21lbnQoZCkpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGF0ZSB0aGF0IGlzIHBhc3NlZCBpbiBpcyBhbHJlYWR5IGEgRGF0ZSgpIG9yIG1vbWVudCgpIG9iamVjdCxcbiAgICAgICAgICAgICAgICAvLyBwYXNzIGl0IGRpcmVjdGx5IHRvIG1vbWVudC5cbiAgICAgICAgICAgICAgICByZXR1cm5Nb21lbnQgPSBtb21lbnQoZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhc1RpbWVab25lKCkpIHsgLy8gVGhlcmUgaXMgYSBzdHJpbmcgdG8gcGFyc2UgYW5kIGEgZGVmYXVsdCB0aW1lIHpvbmVcbiAgICAgICAgICAgICAgICAvLyBwYXJzZSB3aXRoIHRoZSB0eiBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIGRlZmF1bHQgdGltZSB6b25lIGlmIGl0IGlzIG5vdCBpbiB0aGUgZm9ybWF0IHN0cmluZ1xuICAgICAgICAgICAgICAgIHJldHVybk1vbWVudCA9IG1vbWVudC50eihkLCBwYXJzZUZvcm1hdHMsIG9wdGlvbnMudXNlU3RyaWN0LCBvcHRpb25zLnRpbWVab25lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuTW9tZW50ID0gbW9tZW50KGQsIHBhcnNlRm9ybWF0cywgb3B0aW9ucy51c2VTdHJpY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaGFzVGltZVpvbmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybk1vbWVudC50eihvcHRpb25zLnRpbWVab25lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJldHVybk1vbWVudDtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNFbmFibGVkID0gZnVuY3Rpb24oZ3JhbnVsYXJpdHkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ3JhbnVsYXJpdHkgIT09ICdzdHJpbmcnIHx8IGdyYW51bGFyaXR5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpc0VuYWJsZWQgZXhwZWN0cyBhIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5nIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChncmFudWxhcml0eSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4T2YoJ1knKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZignTScpICE9PSAtMTtcbiAgICAgICAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdHVhbEZvcm1hdC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2QnKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnSCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdoJykgIT09IC0xO1xuICAgICAgICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0dWFsRm9ybWF0LmluZGV4T2YoJ20nKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY3R1YWxGb3JtYXQuaW5kZXhPZigncycpICE9PSAtMTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGhhc1RpbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiAoaXNFbmFibGVkKCdoJykgfHwgaXNFbmFibGVkKCdtJykgfHwgaXNFbmFibGVkKCdzJykpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBoYXNEYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzRW5hYmxlZCgneScpIHx8IGlzRW5hYmxlZCgnTScpIHx8IGlzRW5hYmxlZCgnZCcpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0RGF0ZVBpY2tlclRlbXBsYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgaGVhZFRlbXBsYXRlID0gJCgnPHRoZWFkPicpXG4gICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dHI+JylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGg+JykuYWRkQ2xhc3MoJ3ByZXYnKS5hdHRyKCdkYXRhLWFjdGlvbicsICdwcmV2aW91cycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMucHJldmlvdXMpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCdwaWNrZXItc3dpdGNoJykuYXR0cignZGF0YS1hY3Rpb24nLCAncGlja2VyU3dpdGNoJykuYXR0cignY29sc3BhbicsIChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPyAnNicgOiAnNScpKSlcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGg+JykuYWRkQ2xhc3MoJ25leHQnKS5hdHRyKCdkYXRhLWFjdGlvbicsICduZXh0JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy5uZXh0KSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2YXIgY29udFRlbXBsYXRlID0gJCgnPHRib2R5PicpXG4gICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dHI+JylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGQ+JykuYXR0cignY29sc3BhbicsIChvcHRpb25zLmNhbGVuZGFyV2Vla3MgPyAnOCcgOiAnNycpKSlcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICQoJzxkaXY+JykuYWRkQ2xhc3MoJ2RhdGVwaWNrZXItZGF5cycpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChoZWFkVGVtcGxhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0Ym9keT4nKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAkKCc8ZGl2PicpLmFkZENsYXNzKCdkYXRlcGlja2VyLW1vbnRocycpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChoZWFkVGVtcGxhdGUuY2xvbmUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoY29udFRlbXBsYXRlLmNsb25lKCkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygnZGF0ZXBpY2tlci15ZWFycycpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChoZWFkVGVtcGxhdGUuY2xvbmUoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoY29udFRlbXBsYXRlLmNsb25lKCkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygnZGF0ZXBpY2tlci1kZWNhZGVzJylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKGhlYWRUZW1wbGF0ZS5jbG9uZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChjb250VGVtcGxhdGUuY2xvbmUoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0VGltZVBpY2tlck1haW5UZW1wbGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRvcFJvdyA9ICQoJzx0cj4nKTtcbiAgICAgICAgICAgIHZhciBtaWRkbGVSb3cgPSAkKCc8dHI+Jyk7XG4gICAgICAgICAgICB2YXIgYm90dG9tUm93ID0gJCgnPHRyPicpO1xuXG4gICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdoJykpIHtcbiAgICAgICAgICAgICAgICB0b3BSb3cuYXBwZW5kKCQoJzx0ZD4nKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyBocmVmOiAnIycsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmluY3JlbWVudEhvdXIgfSkuYWRkQ2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2luY3JlbWVudEhvdXJzJykuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMudXApKSkpO1xuICAgICAgICAgICAgICAgIG1pZGRsZVJvdy5hcHBlbmQoJCgnPHRkPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItaG91cicpLmF0dHIoeyAnZGF0YS10aW1lLWNvbXBvbmVudCc6ICdob3VycycsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMucGlja0hvdXIgfSkuYXR0cignZGF0YS1hY3Rpb24nLCAnc2hvd0hvdXJzJykpKTtcbiAgICAgICAgICAgICAgICBib3R0b21Sb3cuYXBwZW5kKCQoJzx0ZD4nKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyBocmVmOiAnIycsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmRlY3JlbWVudEhvdXIgfSkuYWRkQ2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2RlY3JlbWVudEhvdXJzJykuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMuZG93bikpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdtJykpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbmFibGVkKCdoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTtcbiAgICAgICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpLmh0bWwoJzonKSk7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvcFJvdy5hcHBlbmQoJCgnPHRkPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuaW5jcmVtZW50TWludXRlIH0pLmFkZENsYXNzKCdidG4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdpbmNyZW1lbnRNaW51dGVzJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy51cCkpKSk7XG4gICAgICAgICAgICAgICAgbWlkZGxlUm93LmFwcGVuZCgkKCc8dGQ+JylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcygndGltZXBpY2tlci1taW51dGUnKS5hdHRyKHsgJ2RhdGEtdGltZS1jb21wb25lbnQnOiAnbWludXRlcycsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMucGlja01pbnV0ZSB9KS5hdHRyKCdkYXRhLWFjdGlvbicsICdzaG93TWludXRlcycpKSk7XG4gICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVuZCgkKCc8dGQ+JylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgaHJlZjogJyMnLCB0YWJpbmRleDogJy0xJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5kZWNyZW1lbnRNaW51dGUgfSkuYWRkQ2xhc3MoJ2J0bicpLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2RlY3JlbWVudE1pbnV0ZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8c3Bhbj4nKS5hZGRDbGFzcyhvcHRpb25zLmljb25zLmRvd24pKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgncycpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgnbScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvcFJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKSk7XG4gICAgICAgICAgICAgICAgICAgIG1pZGRsZVJvdy5hcHBlbmQoJCgnPHRkPicpLmFkZENsYXNzKCdzZXBhcmF0b3InKS5odG1sKCc6JykpO1xuICAgICAgICAgICAgICAgICAgICBib3R0b21Sb3cuYXBwZW5kKCQoJzx0ZD4nKS5hZGRDbGFzcygnc2VwYXJhdG9yJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b3BSb3cuYXBwZW5kKCQoJzx0ZD4nKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxhPicpLmF0dHIoeyBocmVmOiAnIycsIHRhYmluZGV4OiAnLTEnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLmluY3JlbWVudFNlY29uZCB9KS5hZGRDbGFzcygnYnRuJykuYXR0cignZGF0YS1hY3Rpb24nLCAnaW5jcmVtZW50U2Vjb25kcycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMudXApKSkpO1xuICAgICAgICAgICAgICAgIG1pZGRsZVJvdy5hcHBlbmQoJCgnPHRkPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItc2Vjb25kJykuYXR0cih7ICdkYXRhLXRpbWUtY29tcG9uZW50JzogJ3NlY29uZHMnLCAndGl0bGUnOiBvcHRpb25zLnRvb2x0aXBzLnBpY2tTZWNvbmQgfSkuYXR0cignZGF0YS1hY3Rpb24nLCAnc2hvd1NlY29uZHMnKSkpO1xuICAgICAgICAgICAgICAgIGJvdHRvbVJvdy5hcHBlbmQoJCgnPHRkPicpXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPGE+JykuYXR0cih7IGhyZWY6ICcjJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuZGVjcmVtZW50U2Vjb25kIH0pLmFkZENsYXNzKCdidG4nKS5hdHRyKCdkYXRhLWFjdGlvbicsICdkZWNyZW1lbnRTZWNvbmRzJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy5kb3duKSkpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF1c2UyNEhvdXJzKSB7XG4gICAgICAgICAgICAgICAgdG9wUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTtcbiAgICAgICAgICAgICAgICBtaWRkbGVSb3cuYXBwZW5kKCQoJzx0ZD4nKVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzxidXR0b24+JykuYWRkQ2xhc3MoJ2J0biBidG4tcHJpbWFyeScpLmF0dHIoeyAnZGF0YS1hY3Rpb24nOiAndG9nZ2xlUGVyaW9kJywgdGFiaW5kZXg6ICctMScsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMudG9nZ2xlUGVyaW9kIH0pKSk7XG4gICAgICAgICAgICAgICAgYm90dG9tUm93LmFwcGVuZCgkKCc8dGQ+JykuYWRkQ2xhc3MoJ3NlcGFyYXRvcicpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItcGlja2VyJylcbiAgICAgICAgICAgICAgICAuYXBwZW5kKCQoJzx0YWJsZT4nKS5hZGRDbGFzcygndGFibGUtY29uZGVuc2VkJylcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChbdG9wUm93LCBtaWRkbGVSb3csIGJvdHRvbVJvd10pKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0VGltZVBpY2tlclRlbXBsYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgaG91cnNWaWV3ID0gJCgnPGRpdj4nKS5hZGRDbGFzcygndGltZXBpY2tlci1ob3VycycpXG4gICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpKTtcbiAgICAgICAgICAgIHZhciBtaW51dGVzVmlldyA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItbWludXRlcycpXG4gICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpKTtcbiAgICAgICAgICAgIHZhciBzZWNvbmRzVmlldyA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ3RpbWVwaWNrZXItc2Vjb25kcycpXG4gICAgICAgICAgICAgICAgLmFwcGVuZCgkKCc8dGFibGU+JykuYWRkQ2xhc3MoJ3RhYmxlLWNvbmRlbnNlZCcpKTtcbiAgICAgICAgICAgIHZhciByZXQgPSBbZ2V0VGltZVBpY2tlck1haW5UZW1wbGF0ZSgpXTtcblxuICAgICAgICAgICAgaWYgKGlzRW5hYmxlZCgnaCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0LnB1c2goaG91cnNWaWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ20nKSkge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKG1pbnV0ZXNWaWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ3MnKSkge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKHNlY29uZHNWaWV3KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0VG9vbGJhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvd1RvZGF5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ3RvZGF5JywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy50b2RheSB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy50b2RheSkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lkZUJ5U2lkZSAmJiBoYXNEYXRlKCkgJiYgaGFzVGltZSgpKSB7XG4gICAgICAgICAgICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ3RvZ2dsZVBpY2tlcicsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0VGltZSB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy50aW1lKSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNob3dDbGVhcikge1xuICAgICAgICAgICAgICAgIHJvdy5wdXNoKCQoJzx0ZD4nKS5hcHBlbmQoJCgnPGE+JykuYXR0cih7ICdkYXRhLWFjdGlvbic6ICdjbGVhcicsICd0aXRsZSc6IG9wdGlvbnMudG9vbHRpcHMuY2xlYXIgfSkuYXBwZW5kKCQoJzxzcGFuPicpLmFkZENsYXNzKG9wdGlvbnMuaWNvbnMuY2xlYXIpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvd0Nsb3NlKSB7XG4gICAgICAgICAgICAgICAgcm93LnB1c2goJCgnPHRkPicpLmFwcGVuZCgkKCc8YT4nKS5hdHRyKHsgJ2RhdGEtYWN0aW9uJzogJ2Nsb3NlJywgJ3RpdGxlJzogb3B0aW9ucy50b29sdGlwcy5jbG9zZSB9KS5hcHBlbmQoJCgnPHNwYW4+JykuYWRkQ2xhc3Mob3B0aW9ucy5pY29ucy5jbG9zZSkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJCgnPHRhYmxlPicpLmFkZENsYXNzKCd0YWJsZS1jb25kZW5zZWQnKS5hcHBlbmQoJCgnPHRib2R5PicpLmFwcGVuZCgkKCc8dHI+JykuYXBwZW5kKHJvdykpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZ2V0VGVtcGxhdGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0ZW1wbGF0ZSA9ICQoJzxkaXY+JykuYWRkQ2xhc3MoJ2Jvb3RzdHJhcC1kYXRldGltZXBpY2tlci13aWRnZXQgZHJvcGRvd24tbWVudScpO1xuICAgICAgICAgICAgdmFyIGRhdGVWaWV3ID0gJCgnPGRpdj4nKS5hZGRDbGFzcygnZGF0ZXBpY2tlcicpLmFwcGVuZChnZXREYXRlUGlja2VyVGVtcGxhdGUoKSk7XG4gICAgICAgICAgICB2YXIgdGltZVZpZXcgPSAkKCc8ZGl2PicpLmFkZENsYXNzKCd0aW1lcGlja2VyJykuYXBwZW5kKGdldFRpbWVQaWNrZXJUZW1wbGF0ZSgpKTtcbiAgICAgICAgICAgIHZhciBjb250ZW50ID0gJCgnPHVsPicpLmFkZENsYXNzKCdsaXN0LXVuc3R5bGVkJyk7XG4gICAgICAgICAgICB2YXIgdG9vbGJhciA9ICQoJzxsaT4nKS5hZGRDbGFzcygncGlja2VyLXN3aXRjaCcgKyAob3B0aW9ucy5jb2xsYXBzZSA/ICcgYWNjb3JkaW9uLXRvZ2dsZScgOiAnJykpLmFwcGVuZChnZXRUb29sYmFyKCkpO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5yZW1vdmVDbGFzcygnZHJvcGRvd24tbWVudScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodXNlMjRIb3Vycykge1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFkZENsYXNzKCd1c2V0d2VudHlmb3VyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ3MnKSAmJiAhdXNlMjRIb3Vycykge1xuICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFkZENsYXNzKCd3aWRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaWRlQnlTaWRlICYmIGhhc0RhdGUoKSAmJiBoYXNUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hZGRDbGFzcygndGltZXBpY2tlci1zYnMnKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy50b29sYmFyUGxhY2VtZW50ID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5hcHBlbmQodG9vbGJhcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLmFwcGVuZChcbiAgICAgICAgICAgICAgICAgICAgJCgnPGRpdj4nKS5hZGRDbGFzcygncm93JylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQoZGF0ZVZpZXcuYWRkQ2xhc3MoJ2NvbC1tZC02JykpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXBwZW5kKHRpbWVWaWV3LmFkZENsYXNzKCdjb2wtbWQtNicpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUuYXBwZW5kKHRvb2xiYXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcGxhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRvb2xiYXJQbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQodG9vbGJhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzRGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJCgnPGxpPicpLmFkZENsYXNzKChvcHRpb25zLmNvbGxhcHNlICYmIGhhc1RpbWUoKSA/ICdjb2xsYXBzZSBpbicgOiAnJykpLmFwcGVuZChkYXRlVmlldykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQodG9vbGJhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGFzVGltZSgpKSB7XG4gICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJCgnPGxpPicpLmFkZENsYXNzKChvcHRpb25zLmNvbGxhcHNlICYmIGhhc0RhdGUoKSA/ICdjb2xsYXBzZScgOiAnJykpLmFwcGVuZCh0aW1lVmlldykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudG9vbGJhclBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCh0b29sYmFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0ZW1wbGF0ZS5hcHBlbmQoY29udGVudCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGRhdGFUb09wdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBlRGF0YTtcbiAgICAgICAgICAgIHZhciBkYXRhT3B0aW9ucyA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSB8fCBvcHRpb25zLmlubGluZSkge1xuICAgICAgICAgICAgICAgIGVEYXRhID0gZWxlbWVudC5kYXRhKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVEYXRhID0gZWxlbWVudC5maW5kKCdpbnB1dCcpLmRhdGEoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVEYXRhLmRhdGVPcHRpb25zICYmIGVEYXRhLmRhdGVPcHRpb25zIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgZGF0YU9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCBkYXRhT3B0aW9ucywgZURhdGEuZGF0ZU9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSAnZGF0ZScgKyBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgaWYgKGVEYXRhW2F0dHJpYnV0ZU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9wdGlvbnNba2V5XSA9IGVEYXRhW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFPcHRpb25zO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBwbGFjZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gKGNvbXBvbmVudCB8fCBlbGVtZW50KS5wb3NpdGlvbigpO1xuICAgICAgICAgICAgdmFyIG9mZnNldCA9IChjb21wb25lbnQgfHwgZWxlbWVudCkub2Zmc2V0KCk7XG4gICAgICAgICAgICB2YXIgdmVydGljYWwgPSBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsO1xuICAgICAgICAgICAgdmFyIGhvcml6b250YWwgPSBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWw7XG4gICAgICAgICAgICB2YXIgcGFyZW50O1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy53aWRnZXRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBvcHRpb25zLndpZGdldFBhcmVudC5hcHBlbmQod2lkZ2V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5pcygnaW5wdXQnKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IGVsZW1lbnQuYWZ0ZXIod2lkZ2V0KS5wYXJlbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtZW50LmFwcGVuZCh3aWRnZXQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuKCkuZmlyc3QoKS5hZnRlcih3aWRnZXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUb3AgYW5kIGJvdHRvbSBsb2dpY1xuICAgICAgICAgICAgaWYgKHZlcnRpY2FsID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0LnRvcCArIHdpZGdldC5oZWlnaHQoKSAqIDEuNSA+PSAkKHdpbmRvdykuaGVpZ2h0KCkgKyAkKHdpbmRvdykuc2Nyb2xsVG9wKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldC5oZWlnaHQoKSArIGVsZW1lbnQub3V0ZXJIZWlnaHQoKSA8IG9mZnNldC50b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgPSAndG9wJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbCA9ICdib3R0b20nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTGVmdCBhbmQgcmlnaHQgbG9naWNcbiAgICAgICAgICAgIGlmIChob3Jpem9udGFsID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50LndpZHRoKCkgPCBvZmZzZXQubGVmdCArIHdpZGdldC5vdXRlcldpZHRoKCkgLyAyICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQubGVmdCArIHdpZGdldC5vdXRlcldpZHRoKCkgPiAkKHdpbmRvdykud2lkdGgoKSkge1xuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsID0gJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZlcnRpY2FsID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHdpZGdldC5hZGRDbGFzcygndG9wJykucmVtb3ZlQ2xhc3MoJ2JvdHRvbScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ2JvdHRvbScpLnJlbW92ZUNsYXNzKCd0b3AnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGhvcml6b250YWwgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQuYWRkQ2xhc3MoJ3B1bGwtcmlnaHQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lkZ2V0LnJlbW92ZUNsYXNzKCdwdWxsLXJpZ2h0Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHBhcmVudCBlbGVtZW50IHRoYXQgaGFzIGEgbm9uLXN0YXRpYyBjc3MgcG9zaXRpb25pbmdcbiAgICAgICAgICAgIGlmIChwYXJlbnQuY3NzKCdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJykgIT09ICdzdGF0aWMnO1xuICAgICAgICAgICAgICAgIH0pLmZpcnN0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRldGltZXBpY2tlciBjb21wb25lbnQgc2hvdWxkIGJlIHBsYWNlZCB3aXRoaW4gYSBub24tc3RhdGljIHBvc2l0aW9uZWQgY29udGFpbmVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdpZGdldC5jc3Moe1xuICAgICAgICAgICAgICAgIHRvcDogdmVydGljYWwgPT09ICd0b3AnID8gJ2F1dG8nIDogcG9zaXRpb24udG9wICsgZWxlbWVudC5vdXRlckhlaWdodCgpLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdmVydGljYWwgPT09ICd0b3AnID8gcGFyZW50Lm91dGVySGVpZ2h0KCkgLSAocGFyZW50ID09PSBlbGVtZW50ID8gMCA6IHBvc2l0aW9uLnRvcCkgOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgbGVmdDogaG9yaXpvbnRhbCA9PT0gJ2xlZnQnID8gKHBhcmVudCA9PT0gZWxlbWVudCA/IDAgOiBwb3NpdGlvbi5sZWZ0KSA6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICByaWdodDogaG9yaXpvbnRhbCA9PT0gJ2xlZnQnID8gJ2F1dG8nIDogcGFyZW50Lm91dGVyV2lkdGgoKSAtIGVsZW1lbnQub3V0ZXJXaWR0aCgpIC0gKHBhcmVudCA9PT0gZWxlbWVudCA/IDAgOiBwb3NpdGlvbi5sZWZ0KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIG5vdGlmeUV2ZW50ID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ2RwLmNoYW5nZScgJiYgKChlLmRhdGUgJiYgZS5kYXRlLmlzU2FtZShlLm9sZERhdGUpKSB8fCAoIWUuZGF0ZSAmJiAhZS5vbGREYXRlKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50LnRyaWdnZXIoZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHZpZXdVcGRhdGUgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gJ3knKSB7XG4gICAgICAgICAgICAgICAgZSA9ICdZWVlZJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vdGlmeUV2ZW50KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHAudXBkYXRlJyxcbiAgICAgICAgICAgICAgICBjaGFuZ2U6IGUsXG4gICAgICAgICAgICAgICAgdmlld0RhdGU6IHZpZXdEYXRlLmNsb25lKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBzaG93TW9kZSA9IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlyKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlID0gTWF0aC5tYXgobWluVmlld01vZGVOdW1iZXIsIE1hdGgubWluKDMsIGN1cnJlbnRWaWV3TW9kZSArIGRpcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyID4gZGl2JykuaGlkZSgpLmZpbHRlcignLmRhdGVwaWNrZXItJyArIGRhdGVQaWNrZXJNb2Rlc1tjdXJyZW50Vmlld01vZGVdLmNsc05hbWUpLnNob3coKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZmlsbERvdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHJvdyA9ICQoJzx0cj4nKTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50RGF0ZSA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZigndycpLnN0YXJ0T2YoJ2QnKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2FsZW5kYXJXZWVrcyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJCgnPHRoPicpLmFkZENsYXNzKCdjdycpLnRleHQoJyMnKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZS5pc0JlZm9yZSh2aWV3RGF0ZS5jbG9uZSgpLmVuZE9mKCd3JykpKSB7XG4gICAgICAgICAgICAgICAgcm93LmFwcGVuZCgkKCc8dGg+JykuYWRkQ2xhc3MoJ2RvdycpLnRleHQoY3VycmVudERhdGUuZm9ybWF0KCdkZCcpKSk7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXItZGF5cyB0aGVhZCcpLmFwcGVuZChyb3cpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBpc0luRGlzYWJsZWREYXRlcyA9IGZ1bmN0aW9uKHRlc3REYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kaXNhYmxlZERhdGVzW3Rlc3REYXRlLmZvcm1hdCgnWVlZWS1NTS1ERCcpXSA9PT0gdHJ1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNJbkVuYWJsZWREYXRlcyA9IGZ1bmN0aW9uKHRlc3REYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5lbmFibGVkRGF0ZXNbdGVzdERhdGUuZm9ybWF0KCdZWVlZLU1NLUREJyldID09PSB0cnVlO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBpc0luRGlzYWJsZWRIb3VycyA9IGZ1bmN0aW9uKHRlc3REYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kaXNhYmxlZEhvdXJzW3Rlc3REYXRlLmZvcm1hdCgnSCcpXSA9PT0gdHJ1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaXNJbkVuYWJsZWRIb3VycyA9IGZ1bmN0aW9uKHRlc3REYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5lbmFibGVkSG91cnNbdGVzdERhdGUuZm9ybWF0KCdIJyldID09PSB0cnVlO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBpc1ZhbGlkID0gZnVuY3Rpb24odGFyZ2V0TW9tZW50LCBncmFudWxhcml0eSkge1xuICAgICAgICAgICAgaWYgKCF0YXJnZXRNb21lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZWREYXRlcyAmJiBncmFudWxhcml0eSA9PT0gJ2QnICYmIGlzSW5EaXNhYmxlZERhdGVzKHRhcmdldE1vbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVkRGF0ZXMgJiYgZ3JhbnVsYXJpdHkgPT09ICdkJyAmJiAhaXNJbkVuYWJsZWREYXRlcyh0YXJnZXRNb21lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubWluRGF0ZSAmJiB0YXJnZXRNb21lbnQuaXNCZWZvcmUob3B0aW9ucy5taW5EYXRlLCBncmFudWxhcml0eSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tYXhEYXRlICYmIHRhcmdldE1vbWVudC5pc0FmdGVyKG9wdGlvbnMubWF4RGF0ZSwgZ3JhbnVsYXJpdHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZGF5c09mV2Vla0Rpc2FibGVkICYmIGdyYW51bGFyaXR5ID09PSAnZCcgJiYgb3B0aW9ucy5kYXlzT2ZXZWVrRGlzYWJsZWQuaW5kZXhPZih0YXJnZXRNb21lbnQuZGF5KCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkSG91cnMgJiYgKGdyYW51bGFyaXR5ID09PSAnaCcgfHwgZ3JhbnVsYXJpdHkgPT09ICdtJyB8fCBncmFudWxhcml0eSA9PT0gJ3MnKSAmJiBpc0luRGlzYWJsZWRIb3Vycyh0YXJnZXRNb21lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlZEhvdXJzICYmIChncmFudWxhcml0eSA9PT0gJ2gnIHx8IGdyYW51bGFyaXR5ID09PSAnbScgfHwgZ3JhbnVsYXJpdHkgPT09ICdzJykgJiYgIWlzSW5FbmFibGVkSG91cnModGFyZ2V0TW9tZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyAmJiAoZ3JhbnVsYXJpdHkgPT09ICdoJyB8fCBncmFudWxhcml0eSA9PT0gJ20nIHx8IGdyYW51bGFyaXR5ID09PSAncycpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgJC5lYWNoKG9wdGlvbnMuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldE1vbWVudC5pc0JldHdlZW4odGhpc1swXSwgdGhpc1sxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGZpbGxNb250aHMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBzcGFucyA9IFtdO1xuICAgICAgICAgICAgdmFyIG1vbnRoc1Nob3J0ID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9mKCd5Jykuc3RhcnRPZignZCcpO1xuICAgICAgICAgICAgd2hpbGUgKG1vbnRoc1Nob3J0LmlzU2FtZSh2aWV3RGF0ZSwgJ3knKSkge1xuICAgICAgICAgICAgICAgIHNwYW5zLnB1c2goJCgnPHNwYW4+JykuYXR0cignZGF0YS1hY3Rpb24nLCAnc2VsZWN0TW9udGgnKS5hZGRDbGFzcygnbW9udGgnKS50ZXh0KG1vbnRoc1Nob3J0LmZvcm1hdCgnTU1NJykpKTtcbiAgICAgICAgICAgICAgICBtb250aHNTaG9ydC5hZGQoMSwgJ00nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlci1tb250aHMgdGQnKS5lbXB0eSgpLmFwcGVuZChzcGFucyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHVwZGF0ZU1vbnRocyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIG1vbnRoc1ZpZXcgPSB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXItbW9udGhzJyk7XG4gICAgICAgICAgICB2YXIgbW9udGhzVmlld0hlYWRlciA9IG1vbnRoc1ZpZXcuZmluZCgndGgnKTtcbiAgICAgICAgICAgIHZhciBtb250aHMgPSBtb250aHNWaWV3LmZpbmQoJ3Rib2R5JykuZmluZCgnc3BhbicpO1xuXG4gICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDApLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMucHJldlllYXIpO1xuICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgxKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMuc2VsZWN0WWVhcik7XG4gICAgICAgICAgICBtb250aHNWaWV3SGVhZGVyLmVxKDIpLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMubmV4dFllYXIpO1xuXG4gICAgICAgICAgICBtb250aHNWaWV3LmZpbmQoJy5kaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQodmlld0RhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCAneScpLCAneScpKSB7XG4gICAgICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgxKS50ZXh0KHZpZXdEYXRlLnllYXIoKSk7XG5cbiAgICAgICAgICAgIGlmICghaXNWYWxpZCh2aWV3RGF0ZS5jbG9uZSgpLmFkZCgxLCAneScpLCAneScpKSB7XG4gICAgICAgICAgICAgICAgbW9udGhzVmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbW9udGhzLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIGlmIChkYXRlLmlzU2FtZSh2aWV3RGF0ZSwgJ3knKSAmJiAhdW5zZXQpIHtcbiAgICAgICAgICAgICAgICBtb250aHMuZXEoZGF0ZS5tb250aCgpKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1vbnRocy5lYWNoKGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHZpZXdEYXRlLmNsb25lKCkubW9udGgoaW5kZXgpLCAnTScpKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHVwZGF0ZVllYXJzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgeWVhcnNWaWV3ID0gd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLXllYXJzJyk7XG4gICAgICAgICAgICB2YXIgeWVhcnNWaWV3SGVhZGVyID0geWVhcnNWaWV3LmZpbmQoJ3RoJyk7XG4gICAgICAgICAgICB2YXIgc3RhcnRZZWFyID0gdmlld0RhdGUuY2xvbmUoKS5zdWJ0cmFjdCg1LCAneScpO1xuICAgICAgICAgICAgdmFyIGVuZFllYXIgPSB2aWV3RGF0ZS5jbG9uZSgpLmFkZCg2LCAneScpO1xuICAgICAgICAgICAgdmFyIGh0bWwgPSAnJztcblxuICAgICAgICAgICAgeWVhcnNWaWV3SGVhZGVyLmVxKDApLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMucHJldkRlY2FkZSk7XG4gICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMSkuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLnNlbGVjdERlY2FkZSk7XG4gICAgICAgICAgICB5ZWFyc1ZpZXdIZWFkZXIuZXEoMikuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5uZXh0RGVjYWRlKTtcblxuICAgICAgICAgICAgeWVhcnNWaWV3LmZpbmQoJy5kaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5taW5EYXRlICYmIG9wdGlvbnMubWluRGF0ZS5pc0FmdGVyKHN0YXJ0WWVhciwgJ3knKSkge1xuICAgICAgICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeWVhcnNWaWV3SGVhZGVyLmVxKDEpLnRleHQoc3RhcnRZZWFyLnllYXIoKSArICctJyArIGVuZFllYXIueWVhcigpKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMubWF4RGF0ZSAmJiBvcHRpb25zLm1heERhdGUuaXNCZWZvcmUoZW5kWWVhciwgJ3knKSkge1xuICAgICAgICAgICAgICAgIHllYXJzVmlld0hlYWRlci5lcSgyKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2hpbGUgKCFzdGFydFllYXIuaXNBZnRlcihlbmRZZWFyLCAneScpKSB7XG4gICAgICAgICAgICAgICAgaHRtbCArPSAnPHNwYW4gZGF0YS1hY3Rpb249XCJzZWxlY3RZZWFyXCIgY2xhc3M9XCJ5ZWFyJyArIChzdGFydFllYXIuaXNTYW1lKGRhdGUsICd5JykgJiYgIXVuc2V0ID8gJyBhY3RpdmUnIDogJycpICsgKCFpc1ZhbGlkKHN0YXJ0WWVhciwgJ3knKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiPicgKyBzdGFydFllYXIueWVhcigpICsgJzwvc3Bhbj4nO1xuICAgICAgICAgICAgICAgIHN0YXJ0WWVhci5hZGQoMSwgJ3knKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeWVhcnNWaWV3LmZpbmQoJ3RkJykuaHRtbChodG1sKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgdXBkYXRlRGVjYWRlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGRlY2FkZXNWaWV3ID0gd2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyLWRlY2FkZXMnKTtcbiAgICAgICAgICAgIHZhciBkZWNhZGVzVmlld0hlYWRlciA9IGRlY2FkZXNWaWV3LmZpbmQoJ3RoJyk7XG4gICAgICAgICAgICB2YXIgc3RhcnREZWNhZGUgPSBtb21lbnQoeyB5OiB2aWV3RGF0ZS55ZWFyKCkgLSAodmlld0RhdGUueWVhcigpICUgMTAwKSAtIDEgfSk7XG4gICAgICAgICAgICB2YXIgZW5kRGVjYWRlID0gc3RhcnREZWNhZGUuY2xvbmUoKS5hZGQoMTAwLCAneScpO1xuICAgICAgICAgICAgdmFyIHN0YXJ0ZWRBdCA9IHN0YXJ0RGVjYWRlLmNsb25lKCk7XG4gICAgICAgICAgICB2YXIgbWluRGF0ZURlY2FkZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIG1heERhdGVEZWNhZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBlbmREZWNhZGVZZWFyO1xuICAgICAgICAgICAgdmFyIGh0bWwgPSAnJztcblxuICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMCkuZmluZCgnc3BhbicpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5wcmV2Q2VudHVyeSk7XG4gICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgyKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLm5leHRDZW50dXJ5KTtcblxuICAgICAgICAgICAgZGVjYWRlc1ZpZXcuZmluZCgnLmRpc2FibGVkJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7XG5cbiAgICAgICAgICAgIGlmIChzdGFydERlY2FkZS5pc1NhbWUobW9tZW50KHsgeTogMTkwMCB9KSkgfHwgKG9wdGlvbnMubWluRGF0ZSAmJiBvcHRpb25zLm1pbkRhdGUuaXNBZnRlcihzdGFydERlY2FkZSwgJ3knKSkpIHtcbiAgICAgICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMSkudGV4dChzdGFydERlY2FkZS55ZWFyKCkgKyAnLScgKyBlbmREZWNhZGUueWVhcigpKTtcblxuICAgICAgICAgICAgaWYgKHN0YXJ0RGVjYWRlLmlzU2FtZShtb21lbnQoeyB5OiAyMDAwIH0pKSB8fCAob3B0aW9ucy5tYXhEYXRlICYmIG9wdGlvbnMubWF4RGF0ZS5pc0JlZm9yZShlbmREZWNhZGUsICd5JykpKSB7XG4gICAgICAgICAgICAgICAgZGVjYWRlc1ZpZXdIZWFkZXIuZXEoMikuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdoaWxlICghc3RhcnREZWNhZGUuaXNBZnRlcihlbmREZWNhZGUsICd5JykpIHtcbiAgICAgICAgICAgICAgICBlbmREZWNhZGVZZWFyID0gc3RhcnREZWNhZGUueWVhcigpICsgMTI7XG4gICAgICAgICAgICAgICAgbWluRGF0ZURlY2FkZSA9IG9wdGlvbnMubWluRGF0ZSAmJiBvcHRpb25zLm1pbkRhdGUuaXNBZnRlcihzdGFydERlY2FkZSwgJ3knKSAmJiBvcHRpb25zLm1pbkRhdGUueWVhcigpIDw9IGVuZERlY2FkZVllYXI7XG4gICAgICAgICAgICAgICAgbWF4RGF0ZURlY2FkZSA9IG9wdGlvbnMubWF4RGF0ZSAmJiBvcHRpb25zLm1heERhdGUuaXNBZnRlcihzdGFydERlY2FkZSwgJ3knKSAmJiBvcHRpb25zLm1heERhdGUueWVhcigpIDw9IGVuZERlY2FkZVllYXI7XG4gICAgICAgICAgICAgICAgaHRtbCArPSAnPHNwYW4gZGF0YS1hY3Rpb249XCJzZWxlY3REZWNhZGVcIiBjbGFzcz1cImRlY2FkZScgKyAoZGF0ZS5pc0FmdGVyKHN0YXJ0RGVjYWRlKSAmJiBkYXRlLnllYXIoKSA8PSBlbmREZWNhZGVZZWFyID8gJyBhY3RpdmUnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICghaXNWYWxpZChzdGFydERlY2FkZSwgJ3knKSAmJiAhbWluRGF0ZURlY2FkZSAmJiAhbWF4RGF0ZURlY2FkZSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiIGRhdGEtc2VsZWN0aW9uPVwiJyArIChzdGFydERlY2FkZS55ZWFyKCkgKyA2KSArICdcIj4nICsgKHN0YXJ0RGVjYWRlLnllYXIoKSArIDEpICsgJyAtICcgKyAoc3RhcnREZWNhZGUueWVhcigpICsgMTIpICsgJzwvc3Bhbj4nO1xuICAgICAgICAgICAgICAgIHN0YXJ0RGVjYWRlLmFkZCgxMiwgJ3knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPic7IC8vIHB1c2ggdGhlIGRhbmdsaW5nIGJsb2NrIG92ZXIsIGF0IGxlYXN0IHRoaXMgd2F5IGl0J3MgZXZlblxuXG4gICAgICAgICAgICBkZWNhZGVzVmlldy5maW5kKCd0ZCcpLmh0bWwoaHRtbCk7XG4gICAgICAgICAgICBkZWNhZGVzVmlld0hlYWRlci5lcSgxKS50ZXh0KChzdGFydGVkQXQueWVhcigpICsgMSkgKyAnLScgKyAoc3RhcnREZWNhZGUueWVhcigpKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGZpbGxEYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgZGF5c1ZpZXcgPSB3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXItZGF5cycpO1xuICAgICAgICAgICAgdmFyIGRheXNWaWV3SGVhZGVyID0gZGF5c1ZpZXcuZmluZCgndGgnKTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50RGF0ZTtcbiAgICAgICAgICAgIHZhciBodG1sID0gW107XG4gICAgICAgICAgICB2YXIgcm93O1xuICAgICAgICAgICAgdmFyIGNsc05hbWVzID0gW107XG4gICAgICAgICAgICB2YXIgaTtcblxuICAgICAgICAgICAgaWYgKCFoYXNEYXRlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXNWaWV3SGVhZGVyLmVxKDApLmZpbmQoJ3NwYW4nKS5hdHRyKCd0aXRsZScsIG9wdGlvbnMudG9vbHRpcHMucHJldk1vbnRoKTtcbiAgICAgICAgICAgIGRheXNWaWV3SGVhZGVyLmVxKDEpLmF0dHIoJ3RpdGxlJywgb3B0aW9ucy50b29sdGlwcy5zZWxlY3RNb250aCk7XG4gICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgyKS5maW5kKCdzcGFuJykuYXR0cigndGl0bGUnLCBvcHRpb25zLnRvb2x0aXBzLm5leHRNb250aCk7XG5cbiAgICAgICAgICAgIGRheXNWaWV3LmZpbmQoJy5kaXNhYmxlZCcpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgZGF5c1ZpZXdIZWFkZXIuZXEoMSkudGV4dCh2aWV3RGF0ZS5mb3JtYXQob3B0aW9ucy5kYXlWaWV3SGVhZGVyRm9ybWF0KSk7XG5cbiAgICAgICAgICAgIGlmICghaXNWYWxpZCh2aWV3RGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdNJyksICdNJykpIHtcbiAgICAgICAgICAgICAgICBkYXlzVmlld0hlYWRlci5lcSgwKS5hZGRDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNWYWxpZCh2aWV3RGF0ZS5jbG9uZSgpLmFkZCgxLCAnTScpLCAnTScpKSB7XG4gICAgICAgICAgICAgICAgZGF5c1ZpZXdIZWFkZXIuZXEoMikuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnREYXRlID0gdmlld0RhdGUuY2xvbmUoKS5zdGFydE9mKCdNJykuc3RhcnRPZigndycpLnN0YXJ0T2YoJ2QnKTtcblxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQyOyBpKyspIHsgLy8gYWx3YXlzIGRpc3BsYXkgNDIgZGF5cyAoc2hvdWxkIHNob3cgNiB3ZWVrcylcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUud2Vla2RheSgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdyA9ICQoJzx0cj4nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2FsZW5kYXJXZWVrcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnPHRkIGNsYXNzPVwiY3dcIj4nICsgY3VycmVudERhdGUud2VlaygpICsgJzwvdGQ+Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaHRtbC5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsc05hbWVzID0gWydkYXknXTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUuaXNCZWZvcmUodmlld0RhdGUsICdNJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMucHVzaCgnb2xkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0ZS5pc0FmdGVyKHZpZXdEYXRlLCAnTScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsc05hbWVzLnB1c2goJ25ldycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUuaXNTYW1lKGRhdGUsICdkJykgJiYgIXVuc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsc05hbWVzLnB1c2goJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWQoY3VycmVudERhdGUsICdkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMucHVzaCgnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRlLmlzU2FtZShnZXRNb21lbnQoKSwgJ2QnKSkge1xuICAgICAgICAgICAgICAgICAgICBjbHNOYW1lcy5wdXNoKCd0b2RheScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGUuZGF5KCkgPT09IDAgfHwgY3VycmVudERhdGUuZGF5KCkgPT09IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xzTmFtZXMucHVzaCgnd2Vla2VuZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5jbGFzc2lmeScsXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IGN1cnJlbnREYXRlLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBjbHNOYW1lc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJzx0ZCBkYXRhLWFjdGlvbj1cInNlbGVjdERheVwiIGRhdGEtZGF5PVwiJyArIGN1cnJlbnREYXRlLmZvcm1hdCgnTCcpICsgJ1wiIGNsYXNzPVwiJyArIGNsc05hbWVzLmpvaW4oJyAnKSArICdcIj4nICsgY3VycmVudERhdGUuZGF0ZSgpICsgJzwvdGQ+Jyk7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKDEsICdkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRheXNWaWV3LmZpbmQoJ3Rib2R5JykuZW1wdHkoKS5hcHBlbmQoaHRtbCk7XG5cbiAgICAgICAgICAgIHVwZGF0ZU1vbnRocygpO1xuXG4gICAgICAgICAgICB1cGRhdGVZZWFycygpO1xuXG4gICAgICAgICAgICB1cGRhdGVEZWNhZGVzKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGZpbGxIb3VycyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRhYmxlID0gd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyLWhvdXJzIHRhYmxlJyk7XG4gICAgICAgICAgICB2YXIgY3VycmVudEhvdXIgPSB2aWV3RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2QnKTtcbiAgICAgICAgICAgIHZhciBodG1sID0gW107XG4gICAgICAgICAgICB2YXIgcm93ID0gJCgnPHRyPicpO1xuXG4gICAgICAgICAgICBpZiAodmlld0RhdGUuaG91cigpID4gMTEgJiYgIXVzZTI0SG91cnMpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SG91ci5ob3VyKDEyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50SG91ci5pc1NhbWUodmlld0RhdGUsICdkJykgJiYgKHVzZTI0SG91cnMgfHwgKHZpZXdEYXRlLmhvdXIoKSA8IDEyICYmIGN1cnJlbnRIb3VyLmhvdXIoKSA8IDEyKSB8fCB2aWV3RGF0ZS5ob3VyKCkgPiAxMSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEhvdXIuaG91cigpICUgNCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3cgPSAkKCc8dHI+Jyk7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQgZGF0YS1hY3Rpb249XCJzZWxlY3RIb3VyXCIgY2xhc3M9XCJob3VyJyArICghaXNWYWxpZChjdXJyZW50SG91ciwgJ2gnKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiPicgKyBjdXJyZW50SG91ci5mb3JtYXQodXNlMjRIb3VycyA/ICdISCcgOiAnaGgnKSArICc8L3RkPicpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRIb3VyLmFkZCgxLCAnaCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFibGUuZW1wdHkoKS5hcHBlbmQoaHRtbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGZpbGxNaW51dGVzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGFibGUgPSB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXItbWludXRlcyB0YWJsZScpO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRNaW51dGUgPSB2aWV3RGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2gnKTtcbiAgICAgICAgICAgIHZhciBodG1sID0gW107XG4gICAgICAgICAgICB2YXIgcm93ID0gJCgnPHRyPicpO1xuICAgICAgICAgICAgdmFyIHN0ZXAgPSBvcHRpb25zLnN0ZXBwaW5nID09PSAxID8gNSA6IG9wdGlvbnMuc3RlcHBpbmc7XG5cbiAgICAgICAgICAgIHdoaWxlICh2aWV3RGF0ZS5pc1NhbWUoY3VycmVudE1pbnV0ZSwgJ2gnKSkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TWludXRlLm1pbnV0ZSgpICUgKHN0ZXAgKiA0KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByb3cgPSAkKCc8dHI+Jyk7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCc8dGQgZGF0YS1hY3Rpb249XCJzZWxlY3RNaW51dGVcIiBjbGFzcz1cIm1pbnV0ZScgKyAoIWlzVmFsaWQoY3VycmVudE1pbnV0ZSwgJ20nKSA/ICcgZGlzYWJsZWQnIDogJycpICsgJ1wiPicgKyBjdXJyZW50TWludXRlLmZvcm1hdCgnbW0nKSArICc8L3RkPicpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRNaW51dGUuYWRkKHN0ZXAsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVuZChodG1sKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZmlsbFNlY29uZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0YWJsZSA9IHdpZGdldC5maW5kKCcudGltZXBpY2tlci1zZWNvbmRzIHRhYmxlJyk7XG4gICAgICAgICAgICB2YXIgY3VycmVudFNlY29uZCA9IHZpZXdEYXRlLmNsb25lKCkuc3RhcnRPZignbScpO1xuICAgICAgICAgICAgdmFyIGh0bWwgPSBbXTtcbiAgICAgICAgICAgIHZhciByb3cgPSAkKCc8dHI+Jyk7XG5cbiAgICAgICAgICAgIHdoaWxlICh2aWV3RGF0ZS5pc1NhbWUoY3VycmVudFNlY29uZCwgJ20nKSkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2Vjb25kLnNlY29uZCgpICUgMjAgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93ID0gJCgnPHRyPicpO1xuICAgICAgICAgICAgICAgICAgICBodG1sLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnPHRkIGRhdGEtYWN0aW9uPVwic2VsZWN0U2Vjb25kXCIgY2xhc3M9XCJzZWNvbmQnICsgKCFpc1ZhbGlkKGN1cnJlbnRTZWNvbmQsICdzJykgPyAnIGRpc2FibGVkJyA6ICcnKSArICdcIj4nICsgY3VycmVudFNlY29uZC5mb3JtYXQoJ3NzJykgKyAnPC90ZD4nKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50U2Vjb25kLmFkZCg1LCAncycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0YWJsZS5lbXB0eSgpLmFwcGVuZChodG1sKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgZmlsbFRpbWUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0b2dnbGU7IHZhciBuZXdEYXRlOyB2YXIgdGltZUNvbXBvbmVudHMgPSB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgc3BhbltkYXRhLXRpbWUtY29tcG9uZW50XScpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZTI0SG91cnMpIHtcbiAgICAgICAgICAgICAgICB0b2dnbGUgPSB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgW2RhdGEtYWN0aW9uPXRvZ2dsZVBlcmlvZF0nKTtcbiAgICAgICAgICAgICAgICBuZXdEYXRlID0gZGF0ZS5jbG9uZSgpLmFkZCgoZGF0ZS5ob3VycygpID49IDEyKSA/IC0xMiA6IDEyLCAnaCcpO1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlLnRleHQoZGF0ZS5mb3JtYXQoJ0EnKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAnaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGUuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1ob3Vyc10nKS50ZXh0KGRhdGUuZm9ybWF0KHVzZTI0SG91cnMgPyAnSEgnIDogJ2hoJykpO1xuICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1taW51dGVzXScpLnRleHQoZGF0ZS5mb3JtYXQoJ21tJykpO1xuICAgICAgICAgICAgdGltZUNvbXBvbmVudHMuZmlsdGVyKCdbZGF0YS10aW1lLWNvbXBvbmVudD1zZWNvbmRzXScpLnRleHQoZGF0ZS5mb3JtYXQoJ3NzJykpO1xuXG4gICAgICAgICAgICBmaWxsSG91cnMoKTtcbiAgICAgICAgICAgIGZpbGxNaW51dGVzKCk7XG4gICAgICAgICAgICBmaWxsU2Vjb25kcygpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciB1cGRhdGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsbERhdGUoKTtcbiAgICAgICAgICAgIGZpbGxUaW1lKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIHNldFZhbHVlID0gZnVuY3Rpb24odGFyZ2V0TW9tZW50KSB7XG4gICAgICAgICAgICB2YXIgb2xkRGF0ZSA9IHVuc2V0ID8gbnVsbCA6IGRhdGU7XG5cbiAgICAgICAgICAgIC8vIGNhc2Ugb2YgY2FsbGluZyBzZXRWYWx1ZShudWxsIG9yIGZhbHNlKVxuICAgICAgICAgICAgaWYgKCF0YXJnZXRNb21lbnQpIHtcbiAgICAgICAgICAgICAgICB1bnNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5wdXQudmFsKCcnKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmRhdGEoJ2RhdGUnLCAnJyk7XG4gICAgICAgICAgICAgICAgbm90aWZ5RXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZHAuY2hhbmdlJyxcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG9sZERhdGU6IG9sZERhdGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRhcmdldE1vbWVudCA9IHRhcmdldE1vbWVudC5jbG9uZSgpLmxvY2FsZShvcHRpb25zLmxvY2FsZSk7XG5cbiAgICAgICAgICAgIGlmIChoYXNUaW1lWm9uZSgpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TW9tZW50LnR6KG9wdGlvbnMudGltZVpvbmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zdGVwcGluZyAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRhcmdldE1vbWVudC5taW51dGVzKChNYXRoLnJvdW5kKHRhcmdldE1vbWVudC5taW51dGVzKCkgLyBvcHRpb25zLnN0ZXBwaW5nKSAqIG9wdGlvbnMuc3RlcHBpbmcpKS5zZWNvbmRzKDApO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKG9wdGlvbnMubWluRGF0ZSAmJiB0YXJnZXRNb21lbnQuaXNCZWZvcmUob3B0aW9ucy5taW5EYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRNb21lbnQuYWRkKG9wdGlvbnMuc3RlcHBpbmcsICdtaW51dGVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNWYWxpZCh0YXJnZXRNb21lbnQpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRhcmdldE1vbWVudDtcbiAgICAgICAgICAgICAgICB2aWV3RGF0ZSA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICBpbnB1dC52YWwoZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5kYXRhKCdkYXRlJywgZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgdW5zZXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5jaGFuZ2UnLFxuICAgICAgICAgICAgICAgICAgICBkYXRlOiBkYXRlLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgIG9sZERhdGU6IG9sZERhdGVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmtlZXBJbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbCh1bnNldCA/ICcnIDogZGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZ5RXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2RwLmNoYW5nZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiB0YXJnZXRNb21lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvbGREYXRlOiBvbGREYXRlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBub3RpZnlFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5lcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IHRhcmdldE1vbWVudCxcbiAgICAgICAgICAgICAgICAgICAgb2xkRGF0ZTogb2xkRGF0ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGlkZXMgdGhlIHdpZGdldC4gUG9zc2libHkgd2lsbCBlbWl0IGRwLmhpZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRyYW5zaXRpb25pbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElnbm9yZSBldmVudCBpZiBpbiB0aGUgbWlkZGxlIG9mIGEgcGlja2VyIHRyYW5zaXRpb25cbiAgICAgICAgICAgIHdpZGdldC5maW5kKCcuY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBjb2xsYXBzZURhdGEgPSAkKHRoaXMpLmRhdGEoJ2NvbGxhcHNlJyk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbGxhcHNlRGF0YSAmJiBjb2xsYXBzZURhdGEudHJhbnNpdGlvbmluZykge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuaGFzQ2xhc3MoJ2J0bicpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpZGdldC5oaWRlKCk7XG5cbiAgICAgICAgICAgICQod2luZG93KS5vZmYoJ3Jlc2l6ZScsIHBsYWNlKTtcbiAgICAgICAgICAgIHdpZGdldC5vZmYoJ2NsaWNrJywgJ1tkYXRhLWFjdGlvbl0nKTtcbiAgICAgICAgICAgIHdpZGdldC5vZmYoJ21vdXNlZG93bicsIGZhbHNlKTtcblxuICAgICAgICAgICAgd2lkZ2V0LnJlbW92ZSgpO1xuICAgICAgICAgICAgd2lkZ2V0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIG5vdGlmeUV2ZW50KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHAuaGlkZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogZGF0ZS5jbG9uZSgpXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaW5wdXQuYmx1cigpO1xuXG4gICAgICAgICAgICB2aWV3RGF0ZSA9IGRhdGUuY2xvbmUoKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBwYXJzZUlucHV0RGF0ZSA9IGZ1bmN0aW9uKGlucHV0RGF0ZSkge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFyc2VJbnB1dERhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmICghbW9tZW50LmlzTW9tZW50KGlucHV0RGF0ZSkgfHwgaW5wdXREYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dERhdGUgPSBnZXRNb21lbnQoaW5wdXREYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlucHV0RGF0ZSA9IG9wdGlvbnMucGFyc2VJbnB1dERhdGUoaW5wdXREYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlucHV0RGF0ZS5sb2NhbGUob3B0aW9ucy5sb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0RGF0ZTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogV2lkZ2V0IFVJIGludGVyYWN0aW9uIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgICAgdmFyIGFjdGlvbnMgPSB7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmF2Rm5jID0gZGF0ZVBpY2tlck1vZGVzW2N1cnJlbnRWaWV3TW9kZV0ubmF2Rm5jO1xuICAgICAgICAgICAgICAgIHZpZXdEYXRlLmFkZChkYXRlUGlja2VyTW9kZXNbY3VycmVudFZpZXdNb2RlXS5uYXZTdGVwLCBuYXZGbmMpO1xuICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7XG4gICAgICAgICAgICAgICAgdmlld1VwZGF0ZShuYXZGbmMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcHJldmlvdXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBuYXZGbmMgPSBkYXRlUGlja2VyTW9kZXNbY3VycmVudFZpZXdNb2RlXS5uYXZGbmM7XG4gICAgICAgICAgICAgICAgdmlld0RhdGUuc3VidHJhY3QoZGF0ZVBpY2tlck1vZGVzW2N1cnJlbnRWaWV3TW9kZV0ubmF2U3RlcCwgbmF2Rm5jKTtcbiAgICAgICAgICAgICAgICBmaWxsRGF0ZSgpO1xuICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUobmF2Rm5jKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBpY2tlclN3aXRjaDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgc2hvd01vZGUoMSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZWxlY3RNb250aDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciBtb250aCA9ICQoZS50YXJnZXQpLmNsb3Nlc3QoJ3Rib2R5JykuZmluZCgnc3BhbicpLmluZGV4KCQoZS50YXJnZXQpKTtcbiAgICAgICAgICAgICAgICB2aWV3RGF0ZS5tb250aChtb250aCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3TW9kZSA9PT0gbWluVmlld01vZGVOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLnllYXIodmlld0RhdGUueWVhcigpKS5tb250aCh2aWV3RGF0ZS5tb250aCgpKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dNb2RlKC0xKTtcbiAgICAgICAgICAgICAgICAgICAgZmlsbERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmlld1VwZGF0ZSgnTScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2VsZWN0WWVhcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCkgfHwgMDtcbiAgICAgICAgICAgICAgICB2aWV3RGF0ZS55ZWFyKHllYXIpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Vmlld01vZGUgPT09IG1pblZpZXdNb2RlTnVtYmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS55ZWFyKHZpZXdEYXRlLnllYXIoKSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzaG93TW9kZSgtMSk7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxEYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZpZXdVcGRhdGUoJ1lZWVknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNlbGVjdERlY2FkZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB5ZWFyID0gcGFyc2VJbnQoJChlLnRhcmdldCkuZGF0YSgnc2VsZWN0aW9uJyksIDEwKSB8fCAwO1xuICAgICAgICAgICAgICAgIHZpZXdEYXRlLnllYXIoeWVhcik7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3TW9kZSA9PT0gbWluVmlld01vZGVOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZS5jbG9uZSgpLnllYXIodmlld0RhdGUueWVhcigpKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dNb2RlKC0xKTtcbiAgICAgICAgICAgICAgICAgICAgZmlsbERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmlld1VwZGF0ZSgnWVlZWScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2VsZWN0RGF5OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRheSA9IHZpZXdEYXRlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgaWYgKCQoZS50YXJnZXQpLmlzKCcub2xkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF5LnN1YnRyYWN0KDEsICdNJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgkKGUudGFyZ2V0KS5pcygnLm5ldycpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheS5hZGQoMSwgJ00nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF5LmRhdGUocGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCkpKTtcbiAgICAgICAgICAgICAgICBpZiAoIWhhc1RpbWUoKSAmJiAhb3B0aW9ucy5rZWVwT3BlbiAmJiAhb3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluY3JlbWVudEhvdXJzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV3RGF0ZSA9IGRhdGUuY2xvbmUoKS5hZGQoMSwgJ2gnKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAnaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdEYXRlID0gZGF0ZS5jbG9uZSgpLmFkZChvcHRpb25zLnN0ZXBwaW5nLCAnbScpO1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3RGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaW5jcmVtZW50U2Vjb25kczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuYWRkKDEsICdzJyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ3MnKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkZWNyZW1lbnRIb3VyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld0RhdGUgPSBkYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ2gnKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZChuZXdEYXRlLCAnaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKG5ld0RhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRlY3JlbWVudE1pbnV0ZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdEYXRlID0gZGF0ZS5jbG9uZSgpLnN1YnRyYWN0KG9wdGlvbnMuc3RlcHBpbmcsICdtJyk7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQobmV3RGF0ZSwgJ20nKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkZWNyZW1lbnRTZWNvbmRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV3RGF0ZSA9IGRhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCAncycpO1xuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKG5ld0RhdGUsICdzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3RGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdG9nZ2xlUGVyaW9kOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlLmNsb25lKCkuYWRkKChkYXRlLmhvdXJzKCkgPj0gMTIpID8gLTEyIDogMTIsICdoJykpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdG9nZ2xlUGlja2VyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJChlLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyICRwYXJlbnQgPSAkdGhpcy5jbG9zZXN0KCd1bCcpO1xuICAgICAgICAgICAgICAgIHZhciBleHBhbmRlZCA9ICRwYXJlbnQuZmluZCgnLmluJyk7XG4gICAgICAgICAgICAgICAgdmFyIGNsb3NlZCA9ICRwYXJlbnQuZmluZCgnLmNvbGxhcHNlOm5vdCguaW4pJyk7XG4gICAgICAgICAgICAgICAgdmFyIGNvbGxhcHNlRGF0YTtcblxuICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZCAmJiBleHBhbmRlZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VEYXRhID0gZXhwYW5kZWQuZGF0YSgnY29sbGFwc2UnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbGxhcHNlRGF0YSAmJiBjb2xsYXBzZURhdGEudHJhbnNpdGlvbmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZC5jb2xsYXBzZSkgeyAvLyBpZiBjb2xsYXBzZSBwbHVnaW4gaXMgYXZhaWxhYmxlIHRocm91Z2ggYm9vdHN0cmFwLmpzIHRoZW4gdXNlIGl0XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZC5jb2xsYXBzZSgnaGlkZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkLmNvbGxhcHNlKCdzaG93Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIG90aGVyd2lzZSBqdXN0IHRvZ2dsZSBpbiBjbGFzcyBvbiB0aGUgdHdvIHZpZXdzXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZC5yZW1vdmVDbGFzcygnaW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZC5hZGRDbGFzcygnaW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMuaXMoJ3NwYW4nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMudG9nZ2xlQ2xhc3Mob3B0aW9ucy5pY29ucy50aW1lICsgJyAnICsgb3B0aW9ucy5pY29ucy5kYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmZpbmQoJ3NwYW4nKS50b2dnbGVDbGFzcyhvcHRpb25zLmljb25zLnRpbWUgKyAnICcgKyBvcHRpb25zLmljb25zLmRhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogdW5jb21tZW50IGlmIHRvZ2dsZWQgc3RhdGUgd2lsbCBiZSByZXN0b3JlZCBpbiBzaG93KClcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICBjb21wb25lbnQuZmluZCgnc3BhbicpLnRvZ2dsZUNsYXNzKG9wdGlvbnMuaWNvbnMudGltZSArICcgJyArIG9wdGlvbnMuaWNvbnMuZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93UGlja2VyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgPiBkaXY6bm90KC50aW1lcGlja2VyLXBpY2tlciknKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLnNob3coKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3dIb3VyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItaG91cnMnKS5zaG93KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93TWludXRlczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgd2lkZ2V0LmZpbmQoJy50aW1lcGlja2VyIC50aW1lcGlja2VyLXBpY2tlcicpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItbWludXRlcycpLnNob3coKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3dTZWNvbmRzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXIgLnRpbWVwaWNrZXItcGlja2VyJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlciAudGltZXBpY2tlci1zZWNvbmRzJykuc2hvdygpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2VsZWN0SG91cjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciBob3VyID0gcGFyc2VJbnQoJChlLnRhcmdldCkudGV4dCgpLCAxMCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXVzZTI0SG91cnMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUuaG91cnMoKSA+PSAxMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXIgIT09IDEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciArPSAxMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChob3VyID09PSAxMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS5ob3Vycyhob3VyKSk7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5zaG93UGlja2VyLmNhbGwocGlja2VyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNlbGVjdE1pbnV0ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS5taW51dGVzKHBhcnNlSW50KCQoZS50YXJnZXQpLnRleHQoKSwgMTApKSk7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5zaG93UGlja2VyLmNhbGwocGlja2VyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNlbGVjdFNlY29uZDogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUuY2xvbmUoKS5zZWNvbmRzKHBhcnNlSW50KCQoZS50YXJnZXQpLnRleHQoKSwgMTApKSk7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5zaG93UGlja2VyLmNhbGwocGlja2VyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsZWFyOiBjbGVhcixcblxuICAgICAgICAgICAgdG9kYXk6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2RheXNEYXRlID0gZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWQodG9kYXlzRGF0ZSwgJ2QnKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh0b2RheXNEYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbG9zZTogaGlkZVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBkb0FjdGlvbiA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGlmICgkKGUuY3VycmVudFRhcmdldCkuaXMoJy5kaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aW9uc1skKGUuY3VycmVudFRhcmdldCkuZGF0YSgnYWN0aW9uJyldLmFwcGx5KHBpY2tlciwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNob3dzIHRoZSB3aWRnZXQuIFBvc3NpYmx5IHdpbGwgZW1pdCBkcC5zaG93IGFuZCBkcC5jaGFuZ2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRNb21lbnQ7XG4gICAgICAgICAgICB2YXIgdXNlQ3VycmVudEdyYW51bGFyaXR5ID0ge1xuICAgICAgICAgICAgICAgICd5ZWFyJzogZnVuY3Rpb24obSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5tb250aCgwKS5kYXRlKDEpLmhvdXJzKDApLnNlY29uZHMoMCkubWludXRlcygwKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdtb250aCc6IGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uZGF0ZSgxKS5ob3VycygwKS5zZWNvbmRzKDApLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZGF5JzogZnVuY3Rpb24obSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbS5ob3VycygwKS5zZWNvbmRzKDApLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnaG91cic6IGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uc2Vjb25kcygwKS5taW51dGVzKDApO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ21pbnV0ZSc6IGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0uc2Vjb25kcygwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoaW5wdXQucHJvcCgnZGlzYWJsZWQnKSB8fCAoIW9wdGlvbnMuaWdub3JlUmVhZG9ubHkgJiYgaW5wdXQucHJvcCgncmVhZG9ubHknKSkgfHwgd2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbnB1dC52YWwoKSAhPT0gdW5kZWZpbmVkICYmIGlucHV0LnZhbCgpLnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShwYXJzZUlucHV0RGF0ZShpbnB1dC52YWwoKS50cmltKCkpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodW5zZXQgJiYgb3B0aW9ucy51c2VDdXJyZW50ICYmIChvcHRpb25zLmlubGluZSB8fCAoaW5wdXQuaXMoJ2lucHV0JykgJiYgaW5wdXQudmFsKCkudHJpbSgpLmxlbmd0aCA9PT0gMCkpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE1vbWVudCA9IGdldE1vbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy51c2VDdXJyZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50TW9tZW50ID0gdXNlQ3VycmVudEdyYW51bGFyaXR5W29wdGlvbnMudXNlQ3VycmVudF0oY3VycmVudE1vbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGN1cnJlbnRNb21lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2lkZ2V0ID0gZ2V0VGVtcGxhdGUoKTtcblxuICAgICAgICAgICAgZmlsbERvdygpO1xuICAgICAgICAgICAgZmlsbE1vbnRocygpO1xuXG4gICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXItaG91cnMnKS5oaWRlKCk7XG4gICAgICAgICAgICB3aWRnZXQuZmluZCgnLnRpbWVwaWNrZXItbWludXRlcycpLmhpZGUoKTtcbiAgICAgICAgICAgIHdpZGdldC5maW5kKCcudGltZXBpY2tlci1zZWNvbmRzJykuaGlkZSgpO1xuXG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgIHNob3dNb2RlKCk7XG5cbiAgICAgICAgICAgICQod2luZG93KS5vbigncmVzaXplJywgcGxhY2UpO1xuICAgICAgICAgICAgd2lkZ2V0Lm9uKCdjbGljaycsICdbZGF0YS1hY3Rpb25dJywgZG9BY3Rpb24pOyAvLyB0aGlzIGhhbmRsZXMgY2xpY2tzIG9uIHRoZSB3aWRnZXRcbiAgICAgICAgICAgIHdpZGdldC5vbignbW91c2Vkb3duJywgZmFsc2UpO1xuXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5oYXNDbGFzcygnYnRuJykpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGxhY2UoKTtcbiAgICAgICAgICAgIHdpZGdldC5zaG93KCk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5mb2N1c09uU2hvdyAmJiAhaW5wdXQuaXMoJzpmb2N1cycpKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbm90aWZ5RXZlbnQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcC5zaG93J1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2hvd3Mgb3IgaGlkZXMgdGhlIHdpZGdldFxuICAgICAgICAgICAgICovXG4gICAgICAgIHZhciB0b2dnbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiAod2lkZ2V0ID8gaGlkZSgpIDogc2hvdygpKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIga2V5ZG93biA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciBoYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgIHZhciBpbmRleDtcbiAgICAgICAgICAgIHZhciBpbmRleDI7XG4gICAgICAgICAgICB2YXIgcHJlc3NlZEtleXMgPSBbXTtcbiAgICAgICAgICAgIHZhciBwcmVzc2VkTW9kaWZpZXJzID0ge307XG4gICAgICAgICAgICB2YXIgY3VycmVudEtleSA9IGUud2hpY2g7XG4gICAgICAgICAgICB2YXIga2V5QmluZEtleXM7XG4gICAgICAgICAgICB2YXIgYWxsTW9kaWZpZXJzUHJlc3NlZDtcbiAgICAgICAgICAgIHZhciBwcmVzc2VkID0gJ3AnO1xuXG4gICAgICAgICAgICBrZXlTdGF0ZVtjdXJyZW50S2V5XSA9IHByZXNzZWQ7XG5cbiAgICAgICAgICAgIGZvciAoaW5kZXggaW4ga2V5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5U3RhdGUuaGFzT3duUHJvcGVydHkoaW5kZXgpICYmIGtleVN0YXRlW2luZGV4XSA9PT0gcHJlc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBwcmVzc2VkS2V5cy5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGluZGV4LCAxMCkgIT09IGN1cnJlbnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNzZWRNb2RpZmllcnNbaW5kZXhdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChpbmRleCBpbiBvcHRpb25zLmtleUJpbmRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMua2V5QmluZHMuaGFzT3duUHJvcGVydHkoaW5kZXgpICYmIHR5cGVvZiAob3B0aW9ucy5rZXlCaW5kc1tpbmRleF0pID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleUJpbmRLZXlzID0gaW5kZXguc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleUJpbmRLZXlzLmxlbmd0aCA9PT0gcHJlc3NlZEtleXMubGVuZ3RoICYmIGtleU1hcFtjdXJyZW50S2V5XSA9PT0ga2V5QmluZEtleXNba2V5QmluZEtleXMubGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbE1vZGlmaWVyc1ByZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbmRleDIgPSBrZXlCaW5kS2V5cy5sZW5ndGggLSAyOyBpbmRleDIgPj0gMDsgaW5kZXgyLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShrZXlNYXBba2V5QmluZEtleXNbaW5kZXgyXV0gaW4gcHJlc3NlZE1vZGlmaWVycykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsTW9kaWZpZXJzUHJlc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsTW9kaWZpZXJzUHJlc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBvcHRpb25zLmtleUJpbmRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmNhbGwocGlja2VyLCB3aWRnZXQpO1xuICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBrZXl1cCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGtleVN0YXRlW2Uud2hpY2hdID0gJ3InO1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgY2hhbmdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgdmFyIHZhbCA9ICQoZS50YXJnZXQpLnZhbCgpLnRyaW0oKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWREYXRlID0gdmFsID8gcGFyc2VJbnB1dERhdGUodmFsKSA6IG51bGw7XG4gICAgICAgICAgICBzZXRWYWx1ZShwYXJzZWREYXRlKTtcbiAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGF0dGFjaERhdGVQaWNrZXJFbGVtZW50RXZlbnRzID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpbnB1dC5vbih7XG4gICAgICAgICAgICAgICAgJ2NoYW5nZSc6IGNoYW5nZSxcbiAgICAgICAgICAgICAgICAnYmx1cic6IG9wdGlvbnMuZGVidWcgPyAnJyA6IGhpZGUsXG4gICAgICAgICAgICAgICAgJ2tleWRvd24nOiBrZXlkb3duLFxuICAgICAgICAgICAgICAgICdrZXl1cCc6IGtleXVwLFxuICAgICAgICAgICAgICAgICdmb2N1cyc6IG9wdGlvbnMuYWxsb3dJbnB1dFRvZ2dsZSA/IHNob3cgOiAnJ1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50LmlzKCdpbnB1dCcpKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQub24oe1xuICAgICAgICAgICAgICAgICAgICAnZm9jdXMnOiBzaG93XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vbignY2xpY2snLCB0b2dnbGUpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vbignbW91c2Vkb3duJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBkZXRhY2hEYXRlUGlja2VyRWxlbWVudEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaW5wdXQub2ZmKHtcbiAgICAgICAgICAgICAgICAnY2hhbmdlJzogY2hhbmdlLFxuICAgICAgICAgICAgICAgICdibHVyJzogYmx1cixcbiAgICAgICAgICAgICAgICAna2V5ZG93bic6IGtleWRvd24sXG4gICAgICAgICAgICAgICAgJ2tleXVwJzoga2V5dXAsXG4gICAgICAgICAgICAgICAgJ2ZvY3VzJzogb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlID8gaGlkZSA6ICcnXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXMoJ2lucHV0JykpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5vZmYoe1xuICAgICAgICAgICAgICAgICAgICAnZm9jdXMnOiBzaG93XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5vZmYoJ2NsaWNrJywgdG9nZ2xlKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQub2ZmKCdtb3VzZWRvd24nLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGluZGV4R2l2ZW5EYXRlcyA9IGZ1bmN0aW9uKGdpdmVuRGF0ZXNBcnJheSkge1xuICAgICAgICAgICAgLy8gU3RvcmUgZ2l2ZW4gZW5hYmxlZERhdGVzIGFuZCBkaXNhYmxlZERhdGVzIGFzIGtleXMuXG4gICAgICAgICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gY2hlY2sgdGhlaXIgZXhpc3RlbmNlIGluIE8oMSkgdGltZSBpbnN0ZWFkIG9mIGxvb3BpbmcgdGhyb3VnaCB3aG9sZSBhcnJheS5cbiAgICAgICAgICAgIC8vIChmb3IgZXhhbXBsZTogb3B0aW9ucy5lbmFibGVkRGF0ZXNbJzIwMTQtMDItMjcnXSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHZhciBnaXZlbkRhdGVzSW5kZXhlZCA9IHt9O1xuICAgICAgICAgICAgJC5lYWNoKGdpdmVuRGF0ZXNBcnJheSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGREYXRlID0gcGFyc2VJbnB1dERhdGUodGhpcyk7XG4gICAgICAgICAgICAgICAgaWYgKGREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBnaXZlbkRhdGVzSW5kZXhlZFtkRGF0ZS5mb3JtYXQoJ1lZWVktTU0tREQnKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIChPYmplY3Qua2V5cyhnaXZlbkRhdGVzSW5kZXhlZCkubGVuZ3RoKSA/IGdpdmVuRGF0ZXNJbmRleGVkIDogZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGluZGV4R2l2ZW5Ib3VycyA9IGZ1bmN0aW9uKGdpdmVuSG91cnNBcnJheSkge1xuICAgICAgICAgICAgLy8gU3RvcmUgZ2l2ZW4gZW5hYmxlZEhvdXJzIGFuZCBkaXNhYmxlZEhvdXJzIGFzIGtleXMuXG4gICAgICAgICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gY2hlY2sgdGhlaXIgZXhpc3RlbmNlIGluIE8oMSkgdGltZSBpbnN0ZWFkIG9mIGxvb3BpbmcgdGhyb3VnaCB3aG9sZSBhcnJheS5cbiAgICAgICAgICAgIC8vIChmb3IgZXhhbXBsZTogb3B0aW9ucy5lbmFibGVkSG91cnNbJzIwMTQtMDItMjcnXSA9PT0gdHJ1ZSlcbiAgICAgICAgICAgIHZhciBnaXZlbkhvdXJzSW5kZXhlZCA9IHt9O1xuICAgICAgICAgICAgJC5lYWNoKGdpdmVuSG91cnNBcnJheSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZ2l2ZW5Ib3Vyc0luZGV4ZWRbdGhpc10gPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5rZXlzKGdpdmVuSG91cnNJbmRleGVkKS5sZW5ndGgpID8gZ2l2ZW5Ib3Vyc0luZGV4ZWQgOiBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaW5pdEZvcm1hdHRpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBmb3JtYXQgPSBvcHRpb25zLmZvcm1hdCB8fCAnTCBMVCc7XG5cbiAgICAgICAgICAgIGFjdHVhbEZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csIGZ1bmN0aW9uKGZvcm1hdElucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIG5ld2lucHV0ID0gZGF0ZS5sb2NhbGVEYXRhKCkubG9uZ0RhdGVGb3JtYXQoZm9ybWF0SW5wdXQpIHx8IGZvcm1hdElucHV0O1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdpbnB1dC5yZXBsYWNlKC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csIGZ1bmN0aW9uKGZvcm1hdElucHV0MikgeyAvLyB0ZW1wIGZpeCBmb3IgIzc0MFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS5sb2NhbGVEYXRhKCkubG9uZ0RhdGVGb3JtYXQoZm9ybWF0SW5wdXQyKSB8fCBmb3JtYXRJbnB1dDI7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcGFyc2VGb3JtYXRzID0gb3B0aW9ucy5leHRyYUZvcm1hdHMgPyBvcHRpb25zLmV4dHJhRm9ybWF0cy5zbGljZSgpIDogW107XG4gICAgICAgICAgICBpZiAocGFyc2VGb3JtYXRzLmluZGV4T2YoZm9ybWF0KSA8IDAgJiYgcGFyc2VGb3JtYXRzLmluZGV4T2YoYWN0dWFsRm9ybWF0KSA8IDApIHtcbiAgICAgICAgICAgICAgICBwYXJzZUZvcm1hdHMucHVzaChhY3R1YWxGb3JtYXQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1c2UyNEhvdXJzID0gKGFjdHVhbEZvcm1hdC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2EnKSA8IDEgJiYgYWN0dWFsRm9ybWF0LnJlcGxhY2UoL1xcWy4qP1xcXS9nLCAnJykuaW5kZXhPZignaCcpIDwgMSk7XG5cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ3knKSkge1xuICAgICAgICAgICAgICAgIG1pblZpZXdNb2RlTnVtYmVyID0gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ00nKSkge1xuICAgICAgICAgICAgICAgIG1pblZpZXdNb2RlTnVtYmVyID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VuYWJsZWQoJ2QnKSkge1xuICAgICAgICAgICAgICAgIG1pblZpZXdNb2RlTnVtYmVyID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlID0gTWF0aC5tYXgobWluVmlld01vZGVOdW1iZXIsIGN1cnJlbnRWaWV3TW9kZSk7XG5cbiAgICAgICAgICAgIGlmICghdW5zZXQpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICAgICAqXG4gICAgICAgICAqIFB1YmxpYyBBUEkgZnVuY3Rpb25zXG4gICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PVxuICAgICAgICAgKlxuICAgICAgICAgKiBJbXBvcnRhbnQ6IERvIG5vdCBleHBvc2UgZGlyZWN0IHJlZmVyZW5jZXMgdG8gcHJpdmF0ZSBvYmplY3RzIG9yIHRoZSBvcHRpb25zXG4gICAgICAgICAqIG9iamVjdCB0byB0aGUgb3V0ZXIgd29ybGQuIEFsd2F5cyByZXR1cm4gYSBjbG9uZSB3aGVuIHJldHVybmluZyB2YWx1ZXMgb3IgbWFrZVxuICAgICAgICAgKiBhIGNsb25lIHdoZW4gc2V0dGluZyBhIHByaXZhdGUgdmFyaWFibGUuXG4gICAgICAgICAqXG4gICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgICAgcGlja2VyLmRlc3Ryb3kgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5EZXN0cm95cyB0aGUgd2lkZ2V0IGFuZCByZW1vdmVzIGFsbCBhdHRhY2hlZCBldmVudCBsaXN0ZW5lcnM8L3N1bW1hcnk+XG4gICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICBkZXRhY2hEYXRlUGlja2VyRWxlbWVudEV2ZW50cygpO1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVEYXRhKCdEYXRlVGltZVBpY2tlcicpO1xuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVEYXRhKCdkYXRlJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLnRvZ2dsZSA9IHRvZ2dsZTtcblxuICAgICAgICBwaWNrZXIuc2hvdyA9IHNob3c7XG5cbiAgICAgICAgcGlja2VyLmhpZGUgPSBoaWRlO1xuXG4gICAgICAgIHBpY2tlci5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAvLyAvPHN1bW1hcnk+RGlzYWJsZXMgdGhlIGlucHV0IGVsZW1lbnQsIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8sIGJ5IGFkZGluZyBhIGRpc2FibGVkPVwidHJ1ZVwiIGF0dHJpYnV0ZSB0byBpdC5cbiAgICAgICAgICAgIC8vIC9JZiB0aGUgd2lkZ2V0IHdhcyB2aXNpYmxlIGJlZm9yZSB0aGF0IGNhbGwgaXQgaXMgaGlkZGVuLiBQb3NzaWJseSBlbWl0cyBkcC5oaWRlPC9zdW1tYXJ5PlxuICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCAmJiBjb21wb25lbnQuaGFzQ2xhc3MoJ2J0bicpKSB7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmFkZENsYXNzKCdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXQucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLmVuYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgLy8gLzxzdW1tYXJ5PkVuYWJsZXMgdGhlIGlucHV0IGVsZW1lbnQsIHRoZSBjb21wb25lbnQgaXMgYXR0YWNoZWQgdG8sIGJ5IHJlbW92aW5nIGRpc2FibGVkIGF0dHJpYnV0ZSBmcm9tIGl0Ljwvc3VtbWFyeT5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50Lmhhc0NsYXNzKCdidG4nKSkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuaWdub3JlUmVhZG9ubHkgPSBmdW5jdGlvbihpZ25vcmVSZWFkb25seSkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pZ25vcmVSZWFkb25seTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgaWdub3JlUmVhZG9ubHkgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lnbm9yZVJlYWRvbmx5ICgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5pZ25vcmVSZWFkb25seSA9IGlnbm9yZVJlYWRvbmx5O1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIub3B0aW9ucyA9IGZ1bmN0aW9uKG5ld09wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEobmV3T3B0aW9ucyBpbnN0YW5jZW9mIE9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zKCkgb3B0aW9ucyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGFuIG9iamVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJC5leHRlbmQodHJ1ZSwgb3B0aW9ucywgbmV3T3B0aW9ucyk7XG4gICAgICAgICAgICAkLmVhY2gob3B0aW9ucywgZnVuY3Rpb24oa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChwaWNrZXJba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBpY2tlcltrZXldKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIGtleSArICcgaXMgbm90IHJlY29nbml6ZWQhJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kYXRlID0gZnVuY3Rpb24obmV3RGF0ZSkge1xuICAgICAgICAgICAgLy8gLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRhdGVcIj5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5SZXR1cm5zIHRoZSBjb21wb25lbnQncyBtb2RlbCBjdXJyZW50IGRhdGUsIGEgbW9tZW50IG9iamVjdCBvciBudWxsIGlmIG5vdCBzZXQuPC9zdW1tYXJ5PlxuICAgICAgICAgICAgLy8gLzxyZXR1cm5zIHR5cGU9XCJNb21lbnRcIj5kYXRlLmNsb25lKCk8L3JldHVybnM+XG4gICAgICAgICAgICAvLyAvPC9zaWduYXR1cmU+XG4gICAgICAgICAgICAvLyAvPHNpZ25hdHVyZT5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5TZXRzIHRoZSBjb21wb25lbnRzIG1vZGVsIGN1cnJlbnQgbW9tZW50IHRvIGl0LiBQYXNzaW5nIGEgbnVsbCB2YWx1ZSB1bnNldHMgdGhlIGNvbXBvbmVudHMgbW9kZWwgY3VycmVudCBtb21lbnQuIFBhcnNpbmcgb2YgdGhlIG5ld0RhdGUgcGFyYW1ldGVyIGlzIG1hZGUgdXNpbmcgbW9tZW50IGxpYnJhcnkgd2l0aCB0aGUgb3B0aW9ucy5mb3JtYXQgYW5kIG9wdGlvbnMudXNlU3RyaWN0IGNvbXBvbmVudHMgY29uZmlndXJhdGlvbi48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHBhcmFtIG5hbWU9XCJuZXdEYXRlXCIgbG9jaWQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRhdGVfcDpuZXdEYXRlXCI+VGFrZXMgc3RyaW5nLCBEYXRlLCBtb21lbnQsIG51bGwgcGFyYW1ldGVyLjwvcGFyYW0+XG4gICAgICAgICAgICAvLyAvPC9zaWduYXR1cmU+XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICh1bnNldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0RhdGUgIT09IG51bGwgJiYgdHlwZW9mIG5ld0RhdGUgIT09ICdzdHJpbmcnICYmICFtb21lbnQuaXNNb21lbnQobmV3RGF0ZSkgJiYgIShuZXdEYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRlKCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mIFtudWxsLCBzdHJpbmcsIG1vbWVudCBvciBEYXRlXScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRWYWx1ZShuZXdEYXRlID09PSBudWxsID8gbnVsbCA6IHBhcnNlSW5wdXREYXRlKG5ld0RhdGUpKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLmZvcm1hdCA9IGZ1bmN0aW9uKG5ld0Zvcm1hdCkge1xuICAgICAgICAgICAgLy8gLzxzdW1tYXJ5PnRlc3Qgc3U8L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHBhcmFtIG5hbWU9XCJuZXdGb3JtYXRcIj5pbmZvIGFib3V0IHBhcmE8L3BhcmFtPlxuICAgICAgICAgICAgLy8gLzxyZXR1cm5zIHR5cGU9XCJzdHJpbmd8Ym9vbGVhblwiPnJldHVybnMgZm9vPC9yZXR1cm5zPlxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mb3JtYXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgodHlwZW9mIG5ld0Zvcm1hdCAhPT0gJ3N0cmluZycpICYmICgodHlwZW9mIG5ld0Zvcm1hdCAhPT0gJ2Jvb2xlYW4nKSB8fCAobmV3Rm9ybWF0ICE9PSBmYWxzZSkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZm9ybWF0KCkgZXhwZWN0cyBhIHN0cmluZyBvciBib29sZWFuOmZhbHNlIHBhcmFtZXRlciAnICsgbmV3Rm9ybWF0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5mb3JtYXQgPSBuZXdGb3JtYXQ7XG4gICAgICAgICAgICBpZiAoYWN0dWFsRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTsgLy8gcmVpbml0IGZvcm1hdHRpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLnRpbWVab25lID0gZnVuY3Rpb24obmV3Wm9uZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy50aW1lWm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuZXdab25lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25ld1pvbmUoKSBleHBlY3RzIGEgc3RyaW5nIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLnRpbWVab25lID0gbmV3Wm9uZTtcblxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuZGF5Vmlld0hlYWRlckZvcm1hdCA9IGZ1bmN0aW9uKG5ld0Zvcm1hdCkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5kYXlWaWV3SGVhZGVyRm9ybWF0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0Zvcm1hdCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXlWaWV3SGVhZGVyRm9ybWF0KCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5kYXlWaWV3SGVhZGVyRm9ybWF0ID0gbmV3Rm9ybWF0O1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuZXh0cmFGb3JtYXRzID0gZnVuY3Rpb24oZm9ybWF0cykge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5leHRyYUZvcm1hdHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmb3JtYXRzICE9PSBmYWxzZSAmJiAhKGZvcm1hdHMgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHRyYUZvcm1hdHMoKSBleHBlY3RzIGFuIGFycmF5IG9yIGZhbHNlIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmV4dHJhRm9ybWF0cyA9IGZvcm1hdHM7XG4gICAgICAgICAgICBpZiAocGFyc2VGb3JtYXRzKSB7XG4gICAgICAgICAgICAgICAgaW5pdEZvcm1hdHRpbmcoKTsgLy8gcmVpbml0IGZvcm1hdHRpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLmRpc2FibGVkRGF0ZXMgPSBmdW5jdGlvbihkYXRlcykge1xuICAgICAgICAgICAgLy8gLzxzaWduYXR1cmUgaGVscEtleXdvcmQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRpc2FibGVkRGF0ZXNcIj5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZGlzYWJsZWQgZGF0ZXMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHJldHVybnMgdHlwZT1cImFycmF5XCI+b3B0aW9ucy5kaXNhYmxlZERhdGVzPC9yZXR1cm5zPlxuICAgICAgICAgICAgLy8gLzwvc2lnbmF0dXJlPlxuICAgICAgICAgICAgLy8gLzxzaWduYXR1cmU+XG4gICAgICAgICAgICAvLyAvPHN1bW1hcnk+U2V0dGluZyB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvcHRpb25zLm1pbkRhdGUsIG9wdGlvbnMubWF4RGF0ZSBjb25maWd1cmF0aW9uLiBBbHNvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIG9mXG4gICAgICAgICAgICAvLyAvb3B0aW9ucy5lbmFibGVkRGF0ZXMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHBhcmFtIG5hbWU9XCJkYXRlc1wiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZERhdGVzX3A6ZGF0ZXNcIj5UYWtlcyBhbiBbIHN0cmluZyBvciBEYXRlIG9yIG1vbWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFtPlxuICAgICAgICAgICAgLy8gLzwvc2lnbmF0dXJlPlxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbnMuZGlzYWJsZWREYXRlcyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkRGF0ZXMpIDogb3B0aW9ucy5kaXNhYmxlZERhdGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFkYXRlcykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWREYXRlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShkYXRlcyBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Rpc2FibGVkRGF0ZXMoKSBleHBlY3RzIGFuIGFycmF5IHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZERhdGVzID0gaW5kZXhHaXZlbkRhdGVzKGRhdGVzKTtcbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZERhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLmVuYWJsZWREYXRlcyA9IGZ1bmN0aW9uKGRhdGVzKSB7XG4gICAgICAgICAgICAvLyAvPHNpZ25hdHVyZSBoZWxwS2V5d29yZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZW5hYmxlZERhdGVzXCI+XG4gICAgICAgICAgICAvLyAvPHN1bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGVuYWJsZWQgZGF0ZXMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHJldHVybnMgdHlwZT1cImFycmF5XCI+b3B0aW9ucy5lbmFibGVkRGF0ZXM8L3JldHVybnM+XG4gICAgICAgICAgICAvLyAvPC9zaWduYXR1cmU+XG4gICAgICAgICAgICAvLyAvPHNpZ25hdHVyZT5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5TZXR0aW5nIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9wdGlvbnMubWluRGF0ZSwgb3B0aW9ucy5tYXhEYXRlIGNvbmZpZ3VyYXRpb24uIEFsc28gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2Ygb3B0aW9ucy5kaXNhYmxlZERhdGVzIGlmIHN1Y2ggZXhpc3QuPC9zdW1tYXJ5PlxuICAgICAgICAgICAgLy8gLzxwYXJhbSBuYW1lPVwiZGF0ZXNcIiBsb2NpZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZW5hYmxlZERhdGVzX3A6ZGF0ZXNcIj5UYWtlcyBhbiBbIHN0cmluZyBvciBEYXRlIG9yIG1vbWVudCBdIG9mIHZhbHVlcyBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBvbmx5IGZyb20gdGhvc2UgZGF5cy48L3BhcmFtPlxuICAgICAgICAgICAgLy8gLzwvc2lnbmF0dXJlPlxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbnMuZW5hYmxlZERhdGVzID8gJC5leHRlbmQoe30sIG9wdGlvbnMuZW5hYmxlZERhdGVzKSA6IG9wdGlvbnMuZW5hYmxlZERhdGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFkYXRlcykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZERhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghKGRhdGVzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5hYmxlZERhdGVzKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZERhdGVzID0gaW5kZXhHaXZlbkRhdGVzKGRhdGVzKTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWREYXRlcyA9IGZhbHNlO1xuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kYXlzT2ZXZWVrRGlzYWJsZWQgPSBmdW5jdGlvbihkYXlzT2ZXZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGF5c09mV2Vla0Rpc2FibGVkLnNwbGljZSgwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0eXBlb2YgZGF5c09mV2Vla0Rpc2FibGVkID09PSAnYm9vbGVhbicpICYmICFkYXlzT2ZXZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmRheXNPZldlZWtEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghKGRheXNPZldlZWtEaXNhYmxlZCBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RheXNPZldlZWtEaXNhYmxlZCgpIGV4cGVjdHMgYW4gYXJyYXkgcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLmRheXNPZldlZWtEaXNhYmxlZCA9IGRheXNPZldlZWtEaXNhYmxlZC5yZWR1Y2UoZnVuY3Rpb24ocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZhbHVlID0gcGFyc2VJbnQoY3VycmVudFZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+IDYgfHwgY3VycmVudFZhbHVlIDwgMCB8fCBpc05hTihjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNWYWx1ZS5pbmRleE9mKGN1cnJlbnRWYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUucHVzaChjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgICAgICAgICAgIH0sIFtdKS5zb3J0KCk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51c2VDdXJyZW50ICYmICFvcHRpb25zLmtlZXBJbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyaWVzID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWlzVmFsaWQoZGF0ZSwgJ2QnKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHJpZXMgPT09IDMxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWVkIDMxIHRpbWVzIHRvIGZpbmQgYSB2YWxpZCBkYXRlJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdHJpZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLm1heERhdGUgPSBmdW5jdGlvbihtYXhEYXRlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm1heERhdGUgPyBvcHRpb25zLm1heERhdGUuY2xvbmUoKSA6IG9wdGlvbnMubWF4RGF0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0eXBlb2YgbWF4RGF0ZSA9PT0gJ2Jvb2xlYW4nKSAmJiBtYXhEYXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMubWF4RGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWF4RGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4RGF0ZSA9PT0gJ25vdycgfHwgbWF4RGF0ZSA9PT0gJ21vbWVudCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4RGF0ZSA9IGdldE1vbWVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZShtYXhEYXRlKTtcblxuICAgICAgICAgICAgaWYgKCFwYXJzZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heERhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICcgKyBtYXhEYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1pbkRhdGUgJiYgcGFyc2VkRGF0ZS5pc0JlZm9yZShvcHRpb25zLm1pbkRhdGUpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4RGF0ZSgpIGRhdGUgcGFyYW1ldGVyIGlzIGJlZm9yZSBvcHRpb25zLm1pbkRhdGU6ICcgKyBwYXJzZWREYXRlLmZvcm1hdChhY3R1YWxGb3JtYXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMubWF4RGF0ZSA9IHBhcnNlZERhdGU7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51c2VDdXJyZW50ICYmICFvcHRpb25zLmtlZXBJbnZhbGlkICYmIGRhdGUuaXNBZnRlcihtYXhEYXRlKSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKG9wdGlvbnMubWF4RGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmlld0RhdGUuaXNBZnRlcihwYXJzZWREYXRlKSkge1xuICAgICAgICAgICAgICAgIHZpZXdEYXRlID0gcGFyc2VkRGF0ZS5jbG9uZSgpLnN1YnRyYWN0KG9wdGlvbnMuc3RlcHBpbmcsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLm1pbkRhdGUgPSBmdW5jdGlvbihtaW5EYXRlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm1pbkRhdGUgPyBvcHRpb25zLm1pbkRhdGUuY2xvbmUoKSA6IG9wdGlvbnMubWluRGF0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0eXBlb2YgbWluRGF0ZSA9PT0gJ2Jvb2xlYW4nKSAmJiBtaW5EYXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMubWluRGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWluRGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluRGF0ZSA9PT0gJ25vdycgfHwgbWluRGF0ZSA9PT0gJ21vbWVudCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluRGF0ZSA9IGdldE1vbWVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZShtaW5EYXRlKTtcblxuICAgICAgICAgICAgaWYgKCFwYXJzZWREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbkRhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICcgKyBtaW5EYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1heERhdGUgJiYgcGFyc2VkRGF0ZS5pc0FmdGVyKG9wdGlvbnMubWF4RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW5EYXRlKCkgZGF0ZSBwYXJhbWV0ZXIgaXMgYWZ0ZXIgb3B0aW9ucy5tYXhEYXRlOiAnICsgcGFyc2VkRGF0ZS5mb3JtYXQoYWN0dWFsRm9ybWF0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLm1pbkRhdGUgPSBwYXJzZWREYXRlO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlQ3VycmVudCAmJiAhb3B0aW9ucy5rZWVwSW52YWxpZCAmJiBkYXRlLmlzQmVmb3JlKG1pbkRhdGUpKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUob3B0aW9ucy5taW5EYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2aWV3RGF0ZS5pc0JlZm9yZShwYXJzZWREYXRlKSkge1xuICAgICAgICAgICAgICAgIHZpZXdEYXRlID0gcGFyc2VkRGF0ZS5jbG9uZSgpLmFkZChvcHRpb25zLnN0ZXBwaW5nLCAnbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kZWZhdWx0RGF0ZSA9IGZ1bmN0aW9uKGRlZmF1bHREYXRlKSB7XG4gICAgICAgICAgICAvLyAvPHNpZ25hdHVyZSBoZWxwS2V5d29yZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGVmYXVsdERhdGVcIj5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5SZXR1cm5zIGEgbW9tZW50IHdpdGggdGhlIG9wdGlvbnMuZGVmYXVsdERhdGUgb3B0aW9uIGNvbmZpZ3VyYXRpb24gb3IgZmFsc2UgaWYgbm90IHNldDwvc3VtbWFyeT5cbiAgICAgICAgICAgIC8vIC88cmV0dXJucyB0eXBlPVwiTW9tZW50XCI+ZGF0ZS5jbG9uZSgpPC9yZXR1cm5zPlxuICAgICAgICAgICAgLy8gLzwvc2lnbmF0dXJlPlxuICAgICAgICAgICAgLy8gLzxzaWduYXR1cmU+XG4gICAgICAgICAgICAvLyAvPHN1bW1hcnk+V2lsbCBzZXQgdGhlIHBpY2tlcidzIGluaXRhbCBkYXRlLiBJZiBhIGJvb2xlYW46ZmFsc2UgdmFsdWUgaXMgcGFzc2VkIHRoZSBvcHRpb25zLmRlZmF1bHREYXRlIHBhcmFtZXRlciBpcyBjbGVhcmVkLjwvc3VtbWFyeT5cbiAgICAgICAgICAgIC8vIC88cGFyYW0gbmFtZT1cImRlZmF1bHREYXRlXCIgbG9jaWQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRlZmF1bHREYXRlX3A6ZGVmYXVsdERhdGVcIj5UYWtlcyBhIHN0cmluZywgRGF0ZSwgbW9tZW50LCBib29sZWFuOmZhbHNlPC9wYXJhbT5cbiAgICAgICAgICAgIC8vIC88L3NpZ25hdHVyZT5cbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGVmYXVsdERhdGUgPyBvcHRpb25zLmRlZmF1bHREYXRlLmNsb25lKCkgOiBvcHRpb25zLmRlZmF1bHREYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkZWZhdWx0RGF0ZSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZGVmYXVsdERhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHREYXRlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RGF0ZSA9PT0gJ25vdycgfHwgZGVmYXVsdERhdGUgPT09ICdtb21lbnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYXRlID0gZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERhdGUgPSBnZXRNb21lbnQoZGVmYXVsdERhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHBhcnNlZERhdGUgPSBwYXJzZUlucHV0RGF0ZShkZWZhdWx0RGF0ZSk7XG4gICAgICAgICAgICBpZiAoIXBhcnNlZERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGVmYXVsdERhdGUoKSBDb3VsZCBub3QgcGFyc2UgZGF0ZSBwYXJhbWV0ZXI6ICcgKyBkZWZhdWx0RGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQocGFyc2VkRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkZWZhdWx0RGF0ZSgpIGRhdGUgcGFzc2VkIGlzIGludmFsaWQgYWNjb3JkaW5nIHRvIGNvbXBvbmVudCBzZXR1cCB2YWxpZGF0aW9ucycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmRlZmF1bHREYXRlID0gcGFyc2VkRGF0ZTtcblxuICAgICAgICAgICAgaWYgKChvcHRpb25zLmRlZmF1bHREYXRlICYmIG9wdGlvbnMuaW5saW5lKSB8fCBpbnB1dC52YWwoKS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUob3B0aW9ucy5kZWZhdWx0RGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5sb2NhbGUgPSBmdW5jdGlvbihsb2NhbGUpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMubG9jYWxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW1vbWVudC5sb2NhbGVEYXRhKGxvY2FsZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdsb2NhbGUoKSBsb2NhbGUgJyArIGxvY2FsZSArICcgaXMgbm90IGxvYWRlZCBmcm9tIG1vbWVudCBsb2NhbGVzIScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmxvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgICAgIGRhdGUubG9jYWxlKG9wdGlvbnMubG9jYWxlKTtcbiAgICAgICAgICAgIHZpZXdEYXRlLmxvY2FsZShvcHRpb25zLmxvY2FsZSk7XG5cbiAgICAgICAgICAgIGlmIChhY3R1YWxGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBpbml0Rm9ybWF0dGluZygpOyAvLyByZWluaXQgZm9ybWF0dGluZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5zdGVwcGluZyA9IGZ1bmN0aW9uKHN0ZXBwaW5nKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnN0ZXBwaW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdGVwcGluZyA9IHBhcnNlSW50KHN0ZXBwaW5nLCAxMCk7XG4gICAgICAgICAgICBpZiAoaXNOYU4oc3RlcHBpbmcpIHx8IHN0ZXBwaW5nIDwgMSkge1xuICAgICAgICAgICAgICAgIHN0ZXBwaW5nID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuc3RlcHBpbmcgPSBzdGVwcGluZztcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLnVzZUN1cnJlbnQgPSBmdW5jdGlvbih1c2VDdXJyZW50KSB7XG4gICAgICAgICAgICB2YXIgdXNlQ3VycmVudE9wdGlvbnMgPSBbJ3llYXInLCAnbW9udGgnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJ107XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnVzZUN1cnJlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgodHlwZW9mIHVzZUN1cnJlbnQgIT09ICdib29sZWFuJykgJiYgKHR5cGVvZiB1c2VDdXJyZW50ICE9PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1c2VDdXJyZW50KCkgZXhwZWN0cyBhIGJvb2xlYW4gb3Igc3RyaW5nIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiB1c2VDdXJyZW50ID09PSAnc3RyaW5nJyAmJiB1c2VDdXJyZW50T3B0aW9ucy5pbmRleE9mKHVzZUN1cnJlbnQudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndXNlQ3VycmVudCgpIGV4cGVjdHMgYSBzdHJpbmcgcGFyYW1ldGVyIG9mICcgKyB1c2VDdXJyZW50T3B0aW9ucy5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMudXNlQ3VycmVudCA9IHVzZUN1cnJlbnQ7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5jb2xsYXBzZSA9IGZ1bmN0aW9uKGNvbGxhcHNlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbGxhcHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbGxhcHNlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2xsYXBzZSgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29sbGFwc2UgPT09IGNvbGxhcHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuY29sbGFwc2UgPSBjb2xsYXBzZTtcbiAgICAgICAgICAgIGlmICh3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICBoaWRlKCk7XG4gICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuaWNvbnMgPSBmdW5jdGlvbihpY29ucykge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5leHRlbmQoe30sIG9wdGlvbnMuaWNvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIShpY29ucyBpbnN0YW5jZW9mIE9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpY29ucygpIGV4cGVjdHMgcGFyYW1ldGVyIHRvIGJlIGFuIE9iamVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJC5leHRlbmQob3B0aW9ucy5pY29ucywgaWNvbnMpO1xuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci50b29sdGlwcyA9IGZ1bmN0aW9uKHRvb2x0aXBzKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkLmV4dGVuZCh7fSwgb3B0aW9ucy50b29sdGlwcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghKHRvb2x0aXBzIGluc3RhbmNlb2YgT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Rvb2x0aXBzKCkgZXhwZWN0cyBwYXJhbWV0ZXIgdG8gYmUgYW4gT2JqZWN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkLmV4dGVuZChvcHRpb25zLnRvb2x0aXBzLCB0b29sdGlwcyk7XG4gICAgICAgICAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLnVzZVN0cmljdCA9IGZ1bmN0aW9uKHVzZVN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy51c2VTdHJpY3Q7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdXNlU3RyaWN0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1c2VTdHJpY3QoKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMudXNlU3RyaWN0ID0gdXNlU3RyaWN0O1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuc2lkZUJ5U2lkZSA9IGZ1bmN0aW9uKHNpZGVCeVNpZGUpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2lkZUJ5U2lkZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaWRlQnlTaWRlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaWRlQnlTaWRlKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLnNpZGVCeVNpZGUgPSBzaWRlQnlTaWRlO1xuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci52aWV3TW9kZSA9IGZ1bmN0aW9uKHZpZXdNb2RlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnZpZXdNb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZpZXdNb2RlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZpZXdNb2RlKCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZpZXdNb2Rlcy5pbmRleE9mKHZpZXdNb2RlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aWV3TW9kZSgpIHBhcmFtZXRlciBtdXN0IGJlIG9uZSBvZiAoJyArIHZpZXdNb2Rlcy5qb2luKCcsICcpICsgJykgdmFsdWUnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy52aWV3TW9kZSA9IHZpZXdNb2RlO1xuICAgICAgICAgICAgY3VycmVudFZpZXdNb2RlID0gTWF0aC5tYXgodmlld01vZGVzLmluZGV4T2Yodmlld01vZGUpLCBtaW5WaWV3TW9kZU51bWJlcik7XG5cbiAgICAgICAgICAgIHNob3dNb2RlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci50b29sYmFyUGxhY2VtZW50ID0gZnVuY3Rpb24odG9vbGJhclBsYWNlbWVudCkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy50b29sYmFyUGxhY2VtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRvb2xiYXJQbGFjZW1lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9vbGJhclBsYWNlbWVudCgpIGV4cGVjdHMgYSBzdHJpbmcgcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9vbGJhclBsYWNlbWVudHMuaW5kZXhPZih0b29sYmFyUGxhY2VtZW50KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b29sYmFyUGxhY2VtZW50KCkgcGFyYW1ldGVyIG11c3QgYmUgb25lIG9mICgnICsgdG9vbGJhclBsYWNlbWVudHMuam9pbignLCAnKSArICcpIHZhbHVlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLnRvb2xiYXJQbGFjZW1lbnQgPSB0b29sYmFyUGxhY2VtZW50O1xuXG4gICAgICAgICAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLndpZGdldFBvc2l0aW9uaW5nID0gZnVuY3Rpb24od2lkZ2V0UG9zaXRpb25pbmcpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh7fSkudG9TdHJpbmcuY2FsbCh3aWRnZXRQb3NpdGlvbmluZykgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2lkZ2V0UG9zaXRpb25pbmcoKSBleHBlY3RzIGFuIG9iamVjdCB2YXJpYWJsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3dpZGdldFBvc2l0aW9uaW5nKCkgaG9yaXpvbnRhbCB2YXJpYWJsZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgPSB3aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKGhvcml6b250YWxNb2Rlcy5pbmRleE9mKHdpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd3aWRnZXRQb3NpdGlvbmluZygpIGV4cGVjdHMgaG9yaXpvbnRhbCBwYXJhbWV0ZXIgdG8gYmUgb25lIG9mICgnICsgaG9yaXpvbnRhbE1vZGVzLmpvaW4oJywgJykgKyAnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nLmhvcml6b250YWwgPSB3aWRnZXRQb3NpdGlvbmluZy5ob3Jpem9udGFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aWRnZXRQb3NpdGlvbmluZy52ZXJ0aWNhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2lkZ2V0UG9zaXRpb25pbmcoKSB2ZXJ0aWNhbCB2YXJpYWJsZSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsID0gd2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodmVydGljYWxNb2Rlcy5pbmRleE9mKHdpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2lkZ2V0UG9zaXRpb25pbmcoKSBleHBlY3RzIHZlcnRpY2FsIHBhcmFtZXRlciB0byBiZSBvbmUgb2YgKCcgKyB2ZXJ0aWNhbE1vZGVzLmpvaW4oJywgJykgKyAnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zLndpZGdldFBvc2l0aW9uaW5nLnZlcnRpY2FsID0gd2lkZ2V0UG9zaXRpb25pbmcudmVydGljYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLmNhbGVuZGFyV2Vla3MgPSBmdW5jdGlvbihjYWxlbmRhcldlZWtzKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmNhbGVuZGFyV2Vla3M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsZW5kYXJXZWVrcyAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsZW5kYXJXZWVrcygpIGV4cGVjdHMgcGFyYW1ldGVyIHRvIGJlIGEgYm9vbGVhbiB2YWx1ZScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmNhbGVuZGFyV2Vla3MgPSBjYWxlbmRhcldlZWtzO1xuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5zaG93VG9kYXlCdXR0b24gPSBmdW5jdGlvbihzaG93VG9kYXlCdXR0b24pIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2hvd1RvZGF5QnV0dG9uO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNob3dUb2RheUJ1dHRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvd1RvZGF5QnV0dG9uKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMuc2hvd1RvZGF5QnV0dG9uID0gc2hvd1RvZGF5QnV0dG9uO1xuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5zaG93Q2xlYXIgPSBmdW5jdGlvbihzaG93Q2xlYXIpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc2hvd0NsZWFyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNob3dDbGVhciAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2hvd0NsZWFyKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMuc2hvd0NsZWFyID0gc2hvd0NsZWFyO1xuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci53aWRnZXRQYXJlbnQgPSBmdW5jdGlvbih3aWRnZXRQYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMud2lkZ2V0UGFyZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpZGdldFBhcmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB3aWRnZXRQYXJlbnQgPSAkKHdpZGdldFBhcmVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3aWRnZXRQYXJlbnQgIT09IG51bGwgJiYgKHR5cGVvZiB3aWRnZXRQYXJlbnQgIT09ICdzdHJpbmcnICYmICEod2lkZ2V0UGFyZW50IGluc3RhbmNlb2YgJCkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignd2lkZ2V0UGFyZW50KCkgZXhwZWN0cyBhIHN0cmluZyBvciBhIGpRdWVyeSBvYmplY3QgcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMud2lkZ2V0UGFyZW50ID0gd2lkZ2V0UGFyZW50O1xuICAgICAgICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5rZWVwT3BlbiA9IGZ1bmN0aW9uKGtlZXBPcGVuKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmtlZXBPcGVuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGtlZXBPcGVuICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdrZWVwT3BlbigpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmtlZXBPcGVuID0ga2VlcE9wZW47XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5mb2N1c09uU2hvdyA9IGZ1bmN0aW9uKGZvY3VzT25TaG93KSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZvY3VzT25TaG93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZvY3VzT25TaG93ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmb2N1c09uU2hvdygpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmZvY3VzT25TaG93ID0gZm9jdXNPblNob3c7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5pbmxpbmUgPSBmdW5jdGlvbihpbmxpbmUpIHtcbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW5saW5lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGlubGluZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5saW5lKCkgZXhwZWN0cyBhIGJvb2xlYW4gcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9wdGlvbnMuaW5saW5lID0gaW5saW5lO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNsZWFyKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5rZXlCaW5kcyA9IGZ1bmN0aW9uKGtleUJpbmRzKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmtleUJpbmRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmtleUJpbmRzID0ga2V5QmluZHM7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5nZXRNb21lbnQgPSBmdW5jdGlvbihkKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0TW9tZW50KGQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kZWJ1ZyA9IGZ1bmN0aW9uKGRlYnVnKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRlYnVnICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkZWJ1ZygpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvcHRpb25zLmRlYnVnID0gZGVidWc7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5hbGxvd0lucHV0VG9nZ2xlID0gZnVuY3Rpb24oYWxsb3dJbnB1dFRvZ2dsZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFsbG93SW5wdXRUb2dnbGUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FsbG93SW5wdXRUb2dnbGUoKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5hbGxvd0lucHV0VG9nZ2xlID0gYWxsb3dJbnB1dFRvZ2dsZTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgcGlja2VyLnNob3dDbG9zZSA9IGZ1bmN0aW9uKHNob3dDbG9zZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaG93Q2xvc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2hvd0Nsb3NlICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaG93Q2xvc2UoKSBleHBlY3RzIGEgYm9vbGVhbiBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5zaG93Q2xvc2UgPSBzaG93Q2xvc2U7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5rZWVwSW52YWxpZCA9IGZ1bmN0aW9uKGtlZXBJbnZhbGlkKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmtlZXBJbnZhbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGtlZXBJbnZhbGlkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdrZWVwSW52YWxpZCgpIGV4cGVjdHMgYSBib29sZWFuIHBhcmFtZXRlcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5rZWVwSW52YWxpZCA9IGtlZXBJbnZhbGlkO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuZGF0ZXBpY2tlcklucHV0ID0gZnVuY3Rpb24oZGF0ZXBpY2tlcklucHV0KSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmRhdGVwaWNrZXJJbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlcGlja2VySW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGF0ZXBpY2tlcklucHV0KCkgZXhwZWN0cyBhIHN0cmluZyBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5kYXRlcGlja2VySW5wdXQgPSBkYXRlcGlja2VySW5wdXQ7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5wYXJzZUlucHV0RGF0ZSA9IGZ1bmN0aW9uKHBhcnNlSW5wdXREYXRlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLnBhcnNlSW5wdXREYXRlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHBhcnNlSW5wdXREYXRlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyc2VJbnB1dERhdGUoKSBzaG9sdWQgYmUgYXMgZnVuY3Rpb24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5wYXJzZUlucHV0RGF0ZSA9IHBhcnNlSW5wdXREYXRlO1xuXG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kaXNhYmxlZFRpbWVJbnRlcnZhbHMgPSBmdW5jdGlvbihkaXNhYmxlZFRpbWVJbnRlcnZhbHMpIHtcbiAgICAgICAgICAgIC8vIC88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZFRpbWVJbnRlcnZhbHNcIj5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZGlzYWJsZWQgZGF0ZXMgb24gdGhlIGNvbXBvbmVudC48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHJldHVybnMgdHlwZT1cImFycmF5XCI+b3B0aW9ucy5kaXNhYmxlZFRpbWVJbnRlcnZhbHM8L3JldHVybnM+XG4gICAgICAgICAgICAvLyAvPC9zaWduYXR1cmU+XG4gICAgICAgICAgICAvLyAvPHNpZ25hdHVyZT5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5TZXR0aW5nIHRoaXMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG9wdGlvbnMubWluRGF0ZSwgb3B0aW9ucy5tYXhEYXRlIGNvbmZpZ3VyYXRpb24uIEFsc28gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2ZcbiAgICAgICAgICAgIC8vIC9vcHRpb25zLmVuYWJsZWREYXRlcyBpZiBzdWNoIGV4aXN0Ljwvc3VtbWFyeT5cbiAgICAgICAgICAgIC8vIC88cGFyYW0gbmFtZT1cImRhdGVzXCIgbG9jaWQ9XCIkLmZuLmRhdGV0aW1lcGlja2VyLmRpc2FibGVkVGltZUludGVydmFsc19wOmRhdGVzXCI+VGFrZXMgYW4gWyBzdHJpbmcgb3IgRGF0ZSBvciBtb21lbnQgXSBvZiB2YWx1ZXMgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25seSBmcm9tIHRob3NlIGRheXMuPC9wYXJhbT5cbiAgICAgICAgICAgIC8vIC88L3NpZ25hdHVyZT5cbiAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyA/ICQuZXh0ZW5kKHt9LCBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscykgOiBvcHRpb25zLmRpc2FibGVkVGltZUludGVydmFscyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZFRpbWVJbnRlcnZhbHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1cGRhdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEoZGlzYWJsZWRUaW1lSW50ZXJ2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGlzYWJsZWRUaW1lSW50ZXJ2YWxzKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWRUaW1lSW50ZXJ2YWxzID0gZGlzYWJsZWRUaW1lSW50ZXJ2YWxzO1xuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuXG4gICAgICAgIHBpY2tlci5kaXNhYmxlZEhvdXJzID0gZnVuY3Rpb24oaG91cnMpIHtcbiAgICAgICAgICAgIC8vIC88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPVwiJC5mbi5kYXRldGltZXBpY2tlci5kaXNhYmxlZEhvdXJzXCI+XG4gICAgICAgICAgICAvLyAvPHN1bW1hcnk+UmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IGRpc2FibGVkIGhvdXJzIG9uIHRoZSBjb21wb25lbnQuPC9zdW1tYXJ5PlxuICAgICAgICAgICAgLy8gLzxyZXR1cm5zIHR5cGU9XCJhcnJheVwiPm9wdGlvbnMuZGlzYWJsZWRIb3VyczwvcmV0dXJucz5cbiAgICAgICAgICAgIC8vIC88L3NpZ25hdHVyZT5cbiAgICAgICAgICAgIC8vIC88c2lnbmF0dXJlPlxuICAgICAgICAgICAgLy8gLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZlxuICAgICAgICAgICAgLy8gL29wdGlvbnMuZW5hYmxlZEhvdXJzIGlmIHN1Y2ggZXhpc3QuPC9zdW1tYXJ5PlxuICAgICAgICAgICAgLy8gLzxwYXJhbSBuYW1lPVwiaG91cnNcIiBsb2NpZD1cIiQuZm4uZGF0ZXRpbWVwaWNrZXIuZGlzYWJsZWRIb3Vyc19wOmhvdXJzXCI+VGFrZXMgYW4gWyBpbnQgXSBvZiB2YWx1ZXMgYW5kIGRpc2FsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25seSBmcm9tIHRob3NlIGhvdXJzLjwvcGFyYW0+XG4gICAgICAgICAgICAvLyAvPC9zaWduYXR1cmU+XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9ucy5kaXNhYmxlZEhvdXJzID8gJC5leHRlbmQoe30sIG9wdGlvbnMuZGlzYWJsZWRIb3VycykgOiBvcHRpb25zLmRpc2FibGVkSG91cnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhvdXJzKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5kaXNhYmxlZEhvdXJzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghKGhvdXJzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZGlzYWJsZWRIb3VycygpIGV4cGVjdHMgYW4gYXJyYXkgcGFyYW1ldGVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcHRpb25zLmRpc2FibGVkSG91cnMgPSBpbmRleEdpdmVuSG91cnMoaG91cnMpO1xuICAgICAgICAgICAgb3B0aW9ucy5lbmFibGVkSG91cnMgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVzZUN1cnJlbnQgJiYgIW9wdGlvbnMua2VlcEludmFsaWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgdHJpZXMgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlICghaXNWYWxpZChkYXRlLCAnaCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuYWRkKDEsICdoJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmllcyA9PT0gMjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJpZWQgMjQgdGltZXMgdG8gZmluZCBhIHZhbGlkIGRhdGUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0cmllcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgfTtcblxuICAgICAgICBwaWNrZXIuZW5hYmxlZEhvdXJzID0gZnVuY3Rpb24oaG91cnMpIHtcbiAgICAgICAgICAgIC8vIC88c2lnbmF0dXJlIGhlbHBLZXl3b3JkPVwiJC5mbi5kYXRldGltZXBpY2tlci5lbmFibGVkSG91cnNcIj5cbiAgICAgICAgICAgIC8vIC88c3VtbWFyeT5SZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGN1cnJlbnRseSBzZXQgZW5hYmxlZCBob3VycyBvbiB0aGUgY29tcG9uZW50Ljwvc3VtbWFyeT5cbiAgICAgICAgICAgIC8vIC88cmV0dXJucyB0eXBlPVwiYXJyYXlcIj5vcHRpb25zLmVuYWJsZWRIb3VyczwvcmV0dXJucz5cbiAgICAgICAgICAgIC8vIC88L3NpZ25hdHVyZT5cbiAgICAgICAgICAgIC8vIC88c2lnbmF0dXJlPlxuICAgICAgICAgICAgLy8gLzxzdW1tYXJ5PlNldHRpbmcgdGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3B0aW9ucy5taW5EYXRlLCBvcHRpb25zLm1heERhdGUgY29uZmlndXJhdGlvbi4gQWxzbyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBvcHRpb25zLmRpc2FibGVkSG91cnMgaWYgc3VjaCBleGlzdC48L3N1bW1hcnk+XG4gICAgICAgICAgICAvLyAvPHBhcmFtIG5hbWU9XCJob3Vyc1wiIGxvY2lkPVwiJC5mbi5kYXRldGltZXBpY2tlci5lbmFibGVkSG91cnNfcDpob3Vyc1wiPlRha2VzIGFuIFsgaW50IF0gb2YgdmFsdWVzIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0IG9ubHkgZnJvbSB0aG9zZSBob3Vycy48L3BhcmFtPlxuICAgICAgICAgICAgLy8gLzwvc2lnbmF0dXJlPlxuICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG9wdGlvbnMuZW5hYmxlZEhvdXJzID8gJC5leHRlbmQoe30sIG9wdGlvbnMuZW5hYmxlZEhvdXJzKSA6IG9wdGlvbnMuZW5hYmxlZEhvdXJzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFob3Vycykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghKGhvdXJzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5hYmxlZEhvdXJzKCkgZXhwZWN0cyBhbiBhcnJheSBwYXJhbWV0ZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlZEhvdXJzID0gaW5kZXhHaXZlbkhvdXJzKGhvdXJzKTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZWRIb3VycyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXNlQ3VycmVudCAmJiAhb3B0aW9ucy5rZWVwSW52YWxpZCkge1xuICAgICAgICAgICAgICAgIHZhciB0cmllcyA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFpc1ZhbGlkKGRhdGUsICdoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5hZGQoMSwgJ2gnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWVzID09PSAyNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmllZCAyNCB0aW1lcyB0byBmaW5kIGEgdmFsaWQgZGF0ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRyaWVzKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlKCk7XG4gICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogUmV0dXJucyB0aGUgY29tcG9uZW50J3MgbW9kZWwgY3VycmVudCB2aWV3RGF0ZSwgYSBtb21lbnQgb2JqZWN0IG9yIG51bGwgaWYgbm90IHNldC4gUGFzc2luZyBhIG51bGwgdmFsdWUgdW5zZXRzIHRoZSBjb21wb25lbnRzIG1vZGVsIGN1cnJlbnQgbW9tZW50LiBQYXJzaW5nIG9mIHRoZSBuZXdEYXRlIHBhcmFtZXRlciBpcyBtYWRlIHVzaW5nIG1vbWVudCBsaWJyYXJ5IHdpdGggdGhlIG9wdGlvbnMuZm9ybWF0IGFuZCBvcHRpb25zLnVzZVN0cmljdCBjb21wb25lbnRzIGNvbmZpZ3VyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7VGFrZXMgc3RyaW5nLCB2aWV3RGF0ZSwgbW9tZW50LCBudWxsIHBhcmFtZXRlci59IG5ld0RhdGVcbiAgICAgICAgICogQHJldHVybnMge3ZpZXdEYXRlLmNsb25lKCl9XG4gICAgICAgICAqL1xuICAgICAgICBwaWNrZXIudmlld0RhdGUgPSBmdW5jdGlvbihuZXdEYXRlKSB7XG4gICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2aWV3RGF0ZS5jbG9uZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW5ld0RhdGUpIHtcbiAgICAgICAgICAgICAgICB2aWV3RGF0ZSA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG5ld0RhdGUgIT09ICdzdHJpbmcnICYmICFtb21lbnQuaXNNb21lbnQobmV3RGF0ZSkgJiYgIShuZXdEYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2aWV3RGF0ZSgpIHBhcmFtZXRlciBtdXN0IGJlIG9uZSBvZiBbc3RyaW5nLCBtb21lbnQgb3IgRGF0ZV0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmlld0RhdGUgPSBwYXJzZUlucHV0RGF0ZShuZXdEYXRlKTtcbiAgICAgICAgICAgIHZpZXdVcGRhdGUoKTtcbiAgICAgICAgICAgIHJldHVybiBwaWNrZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaW5pdGlhbGl6aW5nIGVsZW1lbnQgYW5kIGNvbXBvbmVudCBhdHRyaWJ1dGVzXG4gICAgICAgIGlmIChlbGVtZW50LmlzKCdpbnB1dCcpKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dCA9IGVsZW1lbnQuZmluZChvcHRpb25zLmRhdGVwaWNrZXJJbnB1dCk7XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBlbGVtZW50LmZpbmQoJ2lucHV0Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5pcygnaW5wdXQnKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ1NTIGNsYXNzIFwiJyArIG9wdGlvbnMuZGF0ZXBpY2tlcklucHV0ICsgJ1wiIGNhbm5vdCBiZSBhcHBsaWVkIHRvIG5vbiBpbnB1dCBlbGVtZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZWxlbWVudC5oYXNDbGFzcygnaW5wdXQtZ3JvdXAnKSkge1xuICAgICAgICAgICAgLy8gaW4gY2FzZSB0aGVyZSBpcyBtb3JlIHRoZW4gb25lICdpbnB1dC1ncm91cC1hZGRvbicgSXNzdWUgIzQ4XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5maW5kKCcuZGF0ZXBpY2tlcmJ1dHRvbicpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IGVsZW1lbnQuZmluZCgnLmlucHV0LWdyb3VwLWFkZG9uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IGVsZW1lbnQuZmluZCgnLmRhdGVwaWNrZXJidXR0b24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5pbmxpbmUgJiYgIWlucHV0LmlzKCdpbnB1dCcpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBpbml0aWFsaXplIERhdGVUaW1lUGlja2VyIHdpdGhvdXQgYW4gaW5wdXQgZWxlbWVudCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IGRlZmF1bHRzIGZvciBkYXRlIGhlcmUgbm93IGluc3RlYWQgb2YgaW4gdmFyIGRlY2xhcmF0aW9uXG4gICAgICAgIGRhdGUgPSBnZXRNb21lbnQoKTtcbiAgICAgICAgdmlld0RhdGUgPSBkYXRlLmNsb25lKCk7XG5cbiAgICAgICAgJC5leHRlbmQodHJ1ZSwgb3B0aW9ucywgZGF0YVRvT3B0aW9ucygpKTtcblxuICAgICAgICBwaWNrZXIub3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICBpbml0Rm9ybWF0dGluZygpO1xuXG4gICAgICAgIGF0dGFjaERhdGVQaWNrZXJFbGVtZW50RXZlbnRzKCk7XG5cbiAgICAgICAgaWYgKGlucHV0LnByb3AoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgIHBpY2tlci5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0LmlzKCdpbnB1dCcpICYmIGlucHV0LnZhbCgpLnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHNldFZhbHVlKHBhcnNlSW5wdXREYXRlKGlucHV0LnZhbCgpLnRyaW0oKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGVmYXVsdERhdGUgJiYgaW5wdXQuYXR0cigncGxhY2Vob2xkZXInKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShvcHRpb25zLmRlZmF1bHREYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5pbmxpbmUpIHtcbiAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGlja2VyO1xuICAgIH07XG5cbiAgICAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBqUXVlcnkgcGx1Z2luIGNvbnN0cnVjdG9yIGFuZCBkZWZhdWx0cyBvYmplY3RcbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIFNlZSAoaHR0cDovL2pxdWVyeS5jb20vKS5cbiAgICAgKiBAbmFtZSBqUXVlcnlcbiAgICAgKiBAY2xhc3NcbiAgICAgKiBTZWUgdGhlIGpRdWVyeSBMaWJyYXJ5ICAoaHR0cDovL2pxdWVyeS5jb20vKSBmb3IgZnVsbCBkZXRhaWxzLiAgVGhpcyBqdXN0XG4gICAgICogZG9jdW1lbnRzIHRoZSBmdW5jdGlvbiBhbmQgY2xhc3NlcyB0aGF0IGFyZSBhZGRlZCB0byBqUXVlcnkgYnkgdGhpcyBwbHVnLWluLlxuICAgICAqL1xuICAgIC8qKlxuICAgICAqIFNlZSAoaHR0cDovL2pxdWVyeS5jb20vKVxuICAgICAqIEBuYW1lIGZuXG4gICAgICogQGNsYXNzXG4gICAgICogU2VlIHRoZSBqUXVlcnkgTGlicmFyeSAgKGh0dHA6Ly9qcXVlcnkuY29tLykgZm9yIGZ1bGwgZGV0YWlscy4gIFRoaXMganVzdFxuICAgICAqIGRvY3VtZW50cyB0aGUgZnVuY3Rpb24gYW5kIGNsYXNzZXMgdGhhdCBhcmUgYWRkZWQgdG8galF1ZXJ5IGJ5IHRoaXMgcGx1Zy1pbi5cbiAgICAgKiBAbWVtYmVyT2YgalF1ZXJ5XG4gICAgICovXG4gICAgLyoqXG4gICAgICogU2hvdyBjb21tZW50c1xuICAgICAqIEBjbGFzcyBkYXRldGltZXBpY2tlclxuICAgICAqIEBtZW1iZXJPZiBqUXVlcnkuZm5cbiAgICAgKi9cbiAgICAkLmZuLmRhdGV0aW1lcGlja2VyID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgIHZhciBpc0luc3RhbmNlID0gdHJ1ZTtcbiAgICAgICAgdmFyIHRoaXNNZXRob2RzID0gWydkZXN0cm95JywgJ2hpZGUnLCAnc2hvdycsICd0b2dnbGUnXTtcbiAgICAgICAgdmFyIHJldHVyblZhbHVlO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICB2YXIgX29wdGlvbnM7XG4gICAgICAgICAgICAgICAgaWYgKCEkdGhpcy5kYXRhKCdEYXRlVGltZVBpY2tlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIHByaXZhdGUgY29weSBvZiB0aGUgZGVmYXVsdHMgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIF9vcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sICQuZm4uZGF0ZXRpbWVwaWNrZXIuZGVmYXVsdHMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAkdGhpcy5kYXRhKCdEYXRlVGltZVBpY2tlcicsIGRhdGVUaW1lUGlja2VyKCR0aGlzLCBfb3B0aW9ucykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gJHRoaXMuZGF0YSgnRGF0ZVRpbWVQaWNrZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyKFwiJyArIG9wdGlvbnMgKyAnXCIpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgRGF0ZVRpbWVQaWNrZXInKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IGluc3RhbmNlW29wdGlvbnNdLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcbiAgICAgICAgICAgICAgICBpc0luc3RhbmNlID0gcmV0dXJuVmFsdWUgPT09IGluc3RhbmNlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpc0luc3RhbmNlIHx8ICQuaW5BcnJheShvcHRpb25zLCB0aGlzTWV0aG9kcykgPiAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGFyZ3VtZW50cyBmb3IgRGF0ZVRpbWVQaWNrZXI6ICcgKyBvcHRpb25zKTtcbiAgICB9O1xuXG4gICAgJC5mbi5kYXRldGltZXBpY2tlci5kZWZhdWx0cyA9IHtcbiAgICAgICAgdGltZVpvbmU6ICcnLFxuICAgICAgICBmb3JtYXQ6IGZhbHNlLFxuICAgICAgICBkYXlWaWV3SGVhZGVyRm9ybWF0OiAnTU1NTSBZWVlZJyxcbiAgICAgICAgZXh0cmFGb3JtYXRzOiBmYWxzZSxcbiAgICAgICAgc3RlcHBpbmc6IDEsXG4gICAgICAgIG1pbkRhdGU6IGZhbHNlLFxuICAgICAgICBtYXhEYXRlOiBmYWxzZSxcbiAgICAgICAgdXNlQ3VycmVudDogdHJ1ZSxcbiAgICAgICAgY29sbGFwc2U6IHRydWUsXG4gICAgICAgIGxvY2FsZTogbW9tZW50LmxvY2FsZSgpLFxuICAgICAgICBkZWZhdWx0RGF0ZTogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkRGF0ZXM6IGZhbHNlLFxuICAgICAgICBlbmFibGVkRGF0ZXM6IGZhbHNlLFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgdGltZTogJ2dseXBoaWNvbiBnbHlwaGljb24tdGltZScsXG4gICAgICAgICAgICBkYXRlOiAnZ2x5cGhpY29uIGdseXBoaWNvbi1jYWxlbmRhcicsXG4gICAgICAgICAgICB1cDogJ2dseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi11cCcsXG4gICAgICAgICAgICBkb3duOiAnZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWRvd24nLFxuICAgICAgICAgICAgcHJldmlvdXM6ICdnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tbGVmdCcsXG4gICAgICAgICAgICBuZXh0OiAnZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0JyxcbiAgICAgICAgICAgIHRvZGF5OiAnZ2x5cGhpY29uIGdseXBoaWNvbi1zY3JlZW5zaG90JyxcbiAgICAgICAgICAgIGNsZWFyOiAnZ2x5cGhpY29uIGdseXBoaWNvbi10cmFzaCcsXG4gICAgICAgICAgICBjbG9zZTogJ2dseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlJ1xuICAgICAgICB9LFxuICAgICAgICB0b29sdGlwczoge1xuICAgICAgICAgICAgdG9kYXk6ICdHbyB0byB0b2RheScsXG4gICAgICAgICAgICBjbGVhcjogJ0NsZWFyIHNlbGVjdGlvbicsXG4gICAgICAgICAgICBjbG9zZTogJ0Nsb3NlIHRoZSBwaWNrZXInLFxuICAgICAgICAgICAgc2VsZWN0TW9udGg6ICdTZWxlY3QgTW9udGgnLFxuICAgICAgICAgICAgcHJldk1vbnRoOiAnUHJldmlvdXMgTW9udGgnLFxuICAgICAgICAgICAgbmV4dE1vbnRoOiAnTmV4dCBNb250aCcsXG4gICAgICAgICAgICBzZWxlY3RZZWFyOiAnU2VsZWN0IFllYXInLFxuICAgICAgICAgICAgcHJldlllYXI6ICdQcmV2aW91cyBZZWFyJyxcbiAgICAgICAgICAgIG5leHRZZWFyOiAnTmV4dCBZZWFyJyxcbiAgICAgICAgICAgIHNlbGVjdERlY2FkZTogJ1NlbGVjdCBEZWNhZGUnLFxuICAgICAgICAgICAgcHJldkRlY2FkZTogJ1ByZXZpb3VzIERlY2FkZScsXG4gICAgICAgICAgICBuZXh0RGVjYWRlOiAnTmV4dCBEZWNhZGUnLFxuICAgICAgICAgICAgcHJldkNlbnR1cnk6ICdQcmV2aW91cyBDZW50dXJ5JyxcbiAgICAgICAgICAgIG5leHRDZW50dXJ5OiAnTmV4dCBDZW50dXJ5JyxcbiAgICAgICAgICAgIHBpY2tIb3VyOiAnUGljayBIb3VyJyxcbiAgICAgICAgICAgIGluY3JlbWVudEhvdXI6ICdJbmNyZW1lbnQgSG91cicsXG4gICAgICAgICAgICBkZWNyZW1lbnRIb3VyOiAnRGVjcmVtZW50IEhvdXInLFxuICAgICAgICAgICAgcGlja01pbnV0ZTogJ1BpY2sgTWludXRlJyxcbiAgICAgICAgICAgIGluY3JlbWVudE1pbnV0ZTogJ0luY3JlbWVudCBNaW51dGUnLFxuICAgICAgICAgICAgZGVjcmVtZW50TWludXRlOiAnRGVjcmVtZW50IE1pbnV0ZScsXG4gICAgICAgICAgICBwaWNrU2Vjb25kOiAnUGljayBTZWNvbmQnLFxuICAgICAgICAgICAgaW5jcmVtZW50U2Vjb25kOiAnSW5jcmVtZW50IFNlY29uZCcsXG4gICAgICAgICAgICBkZWNyZW1lbnRTZWNvbmQ6ICdEZWNyZW1lbnQgU2Vjb25kJyxcbiAgICAgICAgICAgIHRvZ2dsZVBlcmlvZDogJ1RvZ2dsZSBQZXJpb2QnLFxuICAgICAgICAgICAgc2VsZWN0VGltZTogJ1NlbGVjdCBUaW1lJ1xuICAgICAgICB9LFxuICAgICAgICB1c2VTdHJpY3Q6IGZhbHNlLFxuICAgICAgICBzaWRlQnlTaWRlOiBmYWxzZSxcbiAgICAgICAgZGF5c09mV2Vla0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY2FsZW5kYXJXZWVrczogZmFsc2UsXG4gICAgICAgIHZpZXdNb2RlOiAnZGF5cycsXG4gICAgICAgIHRvb2xiYXJQbGFjZW1lbnQ6ICdkZWZhdWx0JyxcbiAgICAgICAgc2hvd1RvZGF5QnV0dG9uOiBmYWxzZSxcbiAgICAgICAgc2hvd0NsZWFyOiBmYWxzZSxcbiAgICAgICAgc2hvd0Nsb3NlOiBmYWxzZSxcbiAgICAgICAgd2lkZ2V0UG9zaXRpb25pbmc6IHtcbiAgICAgICAgICAgIGhvcml6b250YWw6ICdhdXRvJyxcbiAgICAgICAgICAgIHZlcnRpY2FsOiAnYXV0bydcbiAgICAgICAgfSxcbiAgICAgICAgd2lkZ2V0UGFyZW50OiBudWxsLFxuICAgICAgICBpZ25vcmVSZWFkb25seTogZmFsc2UsXG4gICAgICAgIGtlZXBPcGVuOiBmYWxzZSxcbiAgICAgICAgZm9jdXNPblNob3c6IHRydWUsXG4gICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgIGtlZXBJbnZhbGlkOiBmYWxzZSxcbiAgICAgICAgZGF0ZXBpY2tlcklucHV0OiAnLmRhdGVwaWNrZXJpbnB1dCcsXG4gICAgICAgIGtleUJpbmRzOiB7XG4gICAgICAgICAgICB1cDogZnVuY3Rpb24od2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoNywgJ2QnKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQodGhpcy5zdGVwcGluZygpLCAnbScpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZG93bjogZnVuY3Rpb24od2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGUoKSB8fCB0aGlzLmdldE1vbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmICh3aWRnZXQuZmluZCgnLmRhdGVwaWNrZXInKS5pcygnOnZpc2libGUnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5jbG9uZSgpLmFkZCg3LCAnZCcpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGUoZC5jbG9uZSgpLnN1YnRyYWN0KHRoaXMuc3RlcHBpbmcoKSwgJ20nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjb250cm9sIHVwJzogZnVuY3Rpb24od2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ3knKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ2gnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdjb250cm9sIGRvd24nOiBmdW5jdGlvbih3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ3knKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5zdWJ0cmFjdCgxLCAnaCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVmdDogZnVuY3Rpb24od2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ2QnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBmdW5jdGlvbih3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ2QnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2VVcDogZnVuY3Rpb24od2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0ZSgpIHx8IHRoaXMuZ2V0TW9tZW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcuZGF0ZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZShkLmNsb25lKCkuc3VidHJhY3QoMSwgJ00nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhZ2VEb3duOiBmdW5jdGlvbih3aWRnZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXdpZGdldCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkID0gdGhpcy5kYXRlKCkgfHwgdGhpcy5nZXRNb21lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAod2lkZ2V0LmZpbmQoJy5kYXRlcGlja2VyJykuaXMoJzp2aXNpYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlKGQuY2xvbmUoKS5hZGQoMSwgJ00nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlc2NhcGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIHRhYjogZnVuY3Rpb24gKHdpZGdldCkgeyAvL3RoaXMgYnJlYWsgdGhlIGZsb3cgb2YgdGhlIGZvcm0uIGRpc2FibGluZyBmb3Igbm93XG4gICAgICAgICAgICAvLyAgICB2YXIgdG9nZ2xlID0gd2lkZ2V0LmZpbmQoJy5waWNrZXItc3dpdGNoIGFbZGF0YS1hY3Rpb249XCJ0b2dnbGVQaWNrZXJcIl0nKTtcbiAgICAgICAgICAgIC8vICAgIGlmKHRvZ2dsZS5sZW5ndGggPiAwKSB0b2dnbGUuY2xpY2soKTtcbiAgICAgICAgICAgIC8vIH0sXG4gICAgICAgICAgICAnY29udHJvbCBzcGFjZSc6IGZ1bmN0aW9uKHdpZGdldCkge1xuICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHdpZGdldC5maW5kKCcudGltZXBpY2tlcicpLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldC5maW5kKCcuYnRuW2RhdGEtYWN0aW9uPVwidG9nZ2xlUGVyaW9kXCJdJykuY2xpY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlKHRoaXMuZ2V0TW9tZW50KCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdkZWxldGUnOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgICAgYWxsb3dJbnB1dFRvZ2dsZTogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkVGltZUludGVydmFsczogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkSG91cnM6IGZhbHNlLFxuICAgICAgICBlbmFibGVkSG91cnM6IGZhbHNlLFxuICAgICAgICB2aWV3RGF0ZTogZmFsc2VcbiAgICB9O1xuXG4gICAgcmV0dXJuICQuZm4uZGF0ZXRpbWVwaWNrZXI7XG59KSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/bootstrap-datetimepicker.js\n");
/***/ }),
/***/ "./app/utils/bootstrap-dropdown.js":
/*!*****************************************!*\
!*** ./app/utils/bootstrap-dropdown.js ***!
\*****************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/v3-dev/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict'; // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop';\n var toggle = '[data-toggle=\"dropdown\"]';\n\n var Dropdown = function Dropdown(element) {\n $(element).on('click.bs.dropdown', this.toggle);\n };\n\n Dropdown.VERSION = '3.4.1';\n\n function getParent($this) {\n var selector = $this.attr('data-target');\n\n if (!selector) {\n selector = $this.attr('href');\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, ''); // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null;\n return $parent && $parent.length ? $parent : $this.parent();\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) {\n return;\n }\n\n $(backdrop).remove();\n $(toggle).each(function () {\n var $this = $(this);\n var $parent = getParent($this);\n var relatedTarget = {\n relatedTarget: this\n };\n\n if (!$parent.hasClass('open')) {\n return;\n }\n\n if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) {\n return;\n }\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget));\n\n if (e.isDefaultPrevented()) {\n return;\n }\n\n $this.attr('aria-expanded', 'false');\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget));\n });\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this);\n\n if ($this.is('.disabled, :disabled')) {\n return;\n }\n\n var $parent = getParent($this);\n var isActive = $parent.hasClass('open');\n clearMenus();\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div')).addClass('dropdown-backdrop').insertAfter($(this)).on('click', clearMenus);\n }\n\n var relatedTarget = {\n relatedTarget: this\n };\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget));\n\n if (e.isDefaultPrevented()) {\n return;\n }\n\n $this.trigger('focus').attr('aria-expanded', 'true');\n $parent.toggleClass('open').trigger($.Event('shown.bs.dropdown', relatedTarget));\n }\n\n return false;\n };\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return;\n var $this = $(this);\n e.preventDefault();\n e.stopPropagation();\n\n if ($this.is('.disabled, :disabled')) {\n return;\n }\n\n var $parent = getParent($this);\n var isActive = $parent.hasClass('open');\n\n if (!isActive && e.which !== 27 || isActive && e.which === 27) {\n if (e.which === 27) {\n $parent.find(toggle).trigger('focus');\n }\n\n return $this.trigger('click');\n }\n\n var desc = ' li:not(.disabled):visible a';\n var $items = $parent.find('.dropdown-menu' + desc);\n\n if (!$items.length) {\n return;\n }\n\n var index = $items.index(e.target);\n\n if (e.which === 38 && index > 0) {\n index--;\n } // up\n\n\n if (e.which === 40 && index < $items.length - 1) {\n index++;\n } // down\n\n\n if (!~index) {\n index = 0;\n }\n\n $items.eq(index).trigger('focus');\n }; // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.dropdown');\n if (!data) $this.data('bs.dropdown', data = new Dropdown(this));\n if (typeof option === 'string') data[option].call($this);\n });\n }\n\n var old = $.fn.dropdown;\n $.fn.dropdown = Plugin;\n $.fn.dropdown.Constructor = Dropdown; // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old;\n return this;\n }; // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n\n $(document).on('click.bs.dropdown.data-api', clearMenus).on('click.bs.dropdown.data-api', '.dropdown form', function (e) {\n e.stopPropagation();\n }).on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle).on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown).on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown);\n}((jquery__WEBPACK_IMPORTED_MODULE_0___default()));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Jvb3RzdHJhcC1kcm9wZG93bi5qcz9hZGJmIl0sIm5hbWVzIjpbIiQiLCJiYWNrZHJvcCIsInRvZ2dsZSIsIkRyb3Bkb3duIiwiZWxlbWVudCIsIm9uIiwiVkVSU0lPTiIsImdldFBhcmVudCIsIiR0aGlzIiwic2VsZWN0b3IiLCJhdHRyIiwidGVzdCIsInJlcGxhY2UiLCIkcGFyZW50IiwiZG9jdW1lbnQiLCJmaW5kIiwibGVuZ3RoIiwicGFyZW50IiwiY2xlYXJNZW51cyIsImUiLCJ3aGljaCIsInJlbW92ZSIsImVhY2giLCJyZWxhdGVkVGFyZ2V0IiwiaGFzQ2xhc3MiLCJ0eXBlIiwidGFyZ2V0IiwidGFnTmFtZSIsImNvbnRhaW5zIiwidHJpZ2dlciIsIkV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVkIiwicmVtb3ZlQ2xhc3MiLCJwcm90b3R5cGUiLCJpcyIsImlzQWN0aXZlIiwiZG9jdW1lbnRFbGVtZW50IiwiY2xvc2VzdCIsImNyZWF0ZUVsZW1lbnQiLCJhZGRDbGFzcyIsImluc2VydEFmdGVyIiwidG9nZ2xlQ2xhc3MiLCJrZXlkb3duIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJkZXNjIiwiJGl0ZW1zIiwiaW5kZXgiLCJlcSIsIlBsdWdpbiIsIm9wdGlvbiIsImRhdGEiLCJjYWxsIiwib2xkIiwiZm4iLCJkcm9wZG93biIsIkNvbnN0cnVjdG9yIiwibm9Db25mbGljdCIsImpRdWVyeSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxDQUFFLFVBQVNBLENBQVQsRUFBWTtBQUNWLGVBRFUsQ0FHVjtBQUNBOztBQUVBLE1BQU1DLFFBQVEsR0FBRyxvQkFBakI7QUFDQSxNQUFNQyxNQUFNLEdBQUcsMEJBQWY7O0FBQ0EsTUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBU0MsT0FBVCxFQUFrQjtBQUMvQkos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QUQsQ0FDS1QsRUFETCxDQUNRLDRCQURSLEVBQ3NDYSxVQUR0QyxFQUVLYixFQUZMLENBRVEsNEJBRlIsRUFFc0MsZ0JBRnRDLEVBRXdELFVBQVNjLENBQVQsRUFBWTtBQUFFQSxLQUFDLENBQUN5QixlQUFGO0FBQXNCLEdBRjVGLEVBR0t2QyxFQUhMLENBR1EsNEJBSFIsRUFHc0NILE1BSHRDLEVBRzhDQyxRQUFRLENBQUM4QixTQUFULENBQW1CL0IsTUFIakUsRUFJS0csRUFKTCxDQUlRLDhCQUpSLEVBSXdDSCxNQUp4QyxFQUlnREMsUUFBUSxDQUFDOEIsU0FBVCxDQUFtQlMsT0FKbkUsRUFLS3JDLEVBTEwsQ0FLUSw4QkFMUixFQUt3QyxnQkFMeEMsRUFLMERGLFFBQVEsQ0FBQzhCLFNBQVQsQ0FBbUJTLE9BTDdFO0FBTUgsQ0E5SkMsQ0E4SkFnQiwrQ0E5SkEsQ0FBRiIsImZpbGUiOiIuL2FwcC91dGlscy9ib290c3RyYXAtZHJvcGRvd24uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgalF1ZXJ5IGZyb20gJ2pxdWVyeSc7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQm9vdHN0cmFwOiBkcm9wZG93bi5qcyB2My40LjFcbiAqIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzMuNC9qYXZhc2NyaXB0LyNkcm9wZG93bnNcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weXJpZ2h0IDIwMTEtMjAxOSBUd2l0dGVyLCBJbmMuXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL3YzLWRldi9MSUNFTlNFKVxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbisoZnVuY3Rpb24oJCkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIC8vIERST1BET1dOIENMQVNTIERFRklOSVRJT05cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBjb25zdCBiYWNrZHJvcCA9ICcuZHJvcGRvd24tYmFja2Ryb3AnO1xuICAgIGNvbnN0IHRvZ2dsZSA9ICdbZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXSc7XG4gICAgY29uc3QgRHJvcGRvd24gPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICQoZWxlbWVudCkub24oJ2NsaWNrLmJzLmRyb3Bkb3duJywgdGhpcy50b2dnbGUpO1xuICAgIH07XG5cbiAgICBEcm9wZG93bi5WRVJTSU9OID0gJzMuNC4xJztcblxuICAgIGZ1bmN0aW9uIGdldFBhcmVudCgkdGhpcykge1xuICAgICAgICBsZXQgc2VsZWN0b3IgPSAkdGhpcy5hdHRyKCdkYXRhLXRhcmdldCcpO1xuXG4gICAgICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gJHRoaXMuYXR0cignaHJlZicpO1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvciAmJiAvI1tBLVphLXpdLy50ZXN0KHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5yZXBsYWNlKC8uKig/PSNbXlxcc10qJCkvLCAnJyk7IC8vIHN0cmlwIGZvciBpZTdcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0ICRwYXJlbnQgPSBzZWxlY3RvciAhPT0gJyMnID8gJChkb2N1bWVudCkuZmluZChzZWxlY3RvcikgOiBudWxsO1xuXG4gICAgICAgIHJldHVybiAkcGFyZW50ICYmICRwYXJlbnQubGVuZ3RoID8gJHBhcmVudCA6ICR0aGlzLnBhcmVudCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFyTWVudXMoZSkge1xuICAgICAgICBpZiAoZSAmJiBlLndoaWNoID09PSAzKSB7IHJldHVybjsgfVxuICAgICAgICAkKGJhY2tkcm9wKS5yZW1vdmUoKTtcbiAgICAgICAgJCh0b2dnbGUpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICBjb25zdCAkcGFyZW50ID0gZ2V0UGFyZW50KCR0aGlzKTtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7IHJlbGF0ZWRUYXJnZXQ6IHRoaXMgfTtcblxuICAgICAgICAgICAgaWYgKCEkcGFyZW50Lmhhc0NsYXNzKCdvcGVuJykpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIGlmIChlICYmIGUudHlwZSA9PT0gJ2NsaWNrJyAmJiAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpICYmICQuY29udGFpbnMoJHBhcmVudFswXSwgZS50YXJnZXQpKSB7IHJldHVybjsgfVxuXG4gICAgICAgICAgICAkcGFyZW50LnRyaWdnZXIoZSA9ICQuRXZlbnQoJ2hpZGUuYnMuZHJvcGRvd24nLCByZWxhdGVkVGFyZ2V0KSk7XG5cbiAgICAgICAgICAgIGlmIChlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7IHJldHVybjsgfVxuXG4gICAgICAgICAgICAkdGhpcy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAkcGFyZW50LnJlbW92ZUNsYXNzKCdvcGVuJykudHJpZ2dlcigkLkV2ZW50KCdoaWRkZW4uYnMuZHJvcGRvd24nLCByZWxhdGVkVGFyZ2V0KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIERyb3Bkb3duLnByb3RvdHlwZS50b2dnbGUgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgIGNvbnN0ICR0aGlzID0gJCh0aGlzKTtcblxuICAgICAgICBpZiAoJHRoaXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3QgJHBhcmVudCA9IGdldFBhcmVudCgkdGhpcyk7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gJHBhcmVudC5oYXNDbGFzcygnb3BlbicpO1xuXG4gICAgICAgIGNsZWFyTWVudXMoKTtcblxuICAgICAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICAgICAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmICEkcGFyZW50LmNsb3Nlc3QoJy5uYXZiYXItbmF2JykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgbW9iaWxlIHdlIHVzZSBhIGJhY2tkcm9wIGJlY2F1c2UgY2xpY2sgZXZlbnRzIGRvbid0IGRlbGVnYXRlXG4gICAgICAgICAgICAgICAgJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdkcm9wZG93bi1iYWNrZHJvcCcpXG4gICAgICAgICAgICAgICAgICAgIC5pbnNlcnRBZnRlcigkKHRoaXMpKVxuICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgY2xlYXJNZW51cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7IHJlbGF0ZWRUYXJnZXQ6IHRoaXMgfTtcbiAgICAgICAgICAgICRwYXJlbnQudHJpZ2dlcihlID0gJC5FdmVudCgnc2hvdy5icy5kcm9wZG93bicsIHJlbGF0ZWRUYXJnZXQpKTtcblxuICAgICAgICAgICAgaWYgKGUuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgICR0aGlzXG4gICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2ZvY3VzJylcbiAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG5cbiAgICAgICAgICAgICRwYXJlbnRcbiAgICAgICAgICAgICAgICAudG9nZ2xlQ2xhc3MoJ29wZW4nKVxuICAgICAgICAgICAgICAgIC50cmlnZ2VyKCQuRXZlbnQoJ3Nob3duLmJzLmRyb3Bkb3duJywgcmVsYXRlZFRhcmdldCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBEcm9wZG93bi5wcm90b3R5cGUua2V5ZG93biA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgaWYgKCEvKDM4fDQwfDI3fDMyKS8udGVzdChlLndoaWNoKSB8fCAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGUudGFyZ2V0LnRhZ05hbWUpKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgJHRoaXMgPSAkKHRoaXMpO1xuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBpZiAoJHRoaXMuaXMoJy5kaXNhYmxlZCwgOmRpc2FibGVkJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0ICRwYXJlbnQgPSBnZXRQYXJlbnQoJHRoaXMpO1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9ICRwYXJlbnQuaGFzQ2xhc3MoJ29wZW4nKTtcblxuICAgICAgICBpZiAoIWlzQWN0aXZlICYmIGUud2hpY2ggIT09IDI3IHx8IGlzQWN0aXZlICYmIGUud2hpY2ggPT09IDI3KSB7XG4gICAgICAgICAgICBpZiAoZS53aGljaCA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICAkcGFyZW50LmZpbmQodG9nZ2xlKS50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJHRoaXMudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc2MgPSAnIGxpOm5vdCguZGlzYWJsZWQpOnZpc2libGUgYSc7XG4gICAgICAgIGNvbnN0ICRpdGVtcyA9ICRwYXJlbnQuZmluZCgnLmRyb3Bkb3duLW1lbnUnICsgZGVzYyk7XG5cbiAgICAgICAgaWYgKCEkaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5kZXggPSAkaXRlbXMuaW5kZXgoZS50YXJnZXQpO1xuXG4gICAgICAgIGlmIChlLndoaWNoID09PSAzOCAmJiBpbmRleCA+IDApIHsgaW5kZXgtLTsgfSAvLyB1cFxuICAgICAgICBpZiAoZS53aGljaCA9PT0gNDAgJiYgaW5kZXggPCAkaXRlbXMubGVuZ3RoIC0gMSkgeyBpbmRleCsrOyB9IC8vIGRvd25cbiAgICAgICAgaWYgKCF+aW5kZXgpIHsgaW5kZXggPSAwOyB9XG5cbiAgICAgICAgJGl0ZW1zLmVxKGluZGV4KS50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH07XG5cbiAgICAvLyBEUk9QRE9XTiBQTFVHSU4gREVGSU5JVElPTlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiBQbHVnaW4ob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICBsZXQgZGF0YSA9ICR0aGlzLmRhdGEoJ2JzLmRyb3Bkb3duJyk7XG5cbiAgICAgICAgICAgIGlmICghZGF0YSkgJHRoaXMuZGF0YSgnYnMuZHJvcGRvd24nLCAoZGF0YSA9IG5ldyBEcm9wZG93bih0aGlzKSkpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSBkYXRhW29wdGlvbl0uY2FsbCgkdGhpcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZCA9ICQuZm4uZHJvcGRvd247XG5cbiAgICAkLmZuLmRyb3Bkb3duID0gUGx1Z2luO1xuICAgICQuZm4uZHJvcGRvd24uQ29uc3RydWN0b3IgPSBEcm9wZG93bjtcblxuICAgIC8vIERST1BET1dOIE5PIENPTkZMSUNUXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT1cblxuICAgICQuZm4uZHJvcGRvd24ubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAkLmZuLmRyb3Bkb3duID0gb2xkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4gICAgLy8gQVBQTFkgVE8gU1RBTkRBUkQgRFJPUERPV04gRUxFTUVOVFNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgJChkb2N1bWVudClcbiAgICAgICAgLm9uKCdjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaScsIGNsZWFyTWVudXMpXG4gICAgICAgIC5vbignY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGknLCAnLmRyb3Bkb3duIGZvcm0nLCBmdW5jdGlvbihlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pXG4gICAgICAgIC5vbignY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGknLCB0b2dnbGUsIERyb3Bkb3duLnByb3RvdHlwZS50b2dnbGUpXG4gICAgICAgIC5vbigna2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaScsIHRvZ2dsZSwgRHJvcGRvd24ucHJvdG90eXBlLmtleWRvd24pXG4gICAgICAgIC5vbigna2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaScsICcuZHJvcGRvd24tbWVudScsIERyb3Bkb3duLnByb3RvdHlwZS5rZXlkb3duKTtcbn0oalF1ZXJ5KSk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/bootstrap-dropdown.js\n");
/***/ }),
/***/ "./app/utils/bootstrap-transition.js":
/*!*******************************************!*\
!*** ./app/utils/bootstrap-transition.js ***!
\*******************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n\n+function ($) {\n 'use strict'; // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap');\n var transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return {\n end: transEndEventNames[name]\n };\n }\n }\n\n return false; // explicit for ie8 ( ._.)\n } // http://blog.alexmaccaw.com/css-transitions\n\n\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false;\n var $el = this;\n $(this).one('bsTransitionEnd', function () {\n called = true;\n });\n\n var callback = function callback() {\n if (!called) $($el).trigger($.support.transition.end);\n };\n\n setTimeout(callback, duration);\n return this;\n };\n\n $(function () {\n $.support.transition = transitionEnd();\n if (!$.support.transition) return;\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function handle(e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments);\n }\n };\n });\n}((jquery__WEBPACK_IMPORTED_MODULE_0___default()));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Jvb3RzdHJhcC10cmFuc2l0aW9uLmpzPzZlYTciXSwibmFtZXMiOlsiJCIsInRyYW5zaXRpb25FbmQiLCJlbCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRyYW5zRW5kRXZlbnROYW1lcyIsIldlYmtpdFRyYW5zaXRpb24iLCJNb3pUcmFuc2l0aW9uIiwiT1RyYW5zaXRpb24iLCJ0cmFuc2l0aW9uIiwibmFtZSIsInN0eWxlIiwidW5kZWZpbmVkIiwiZW5kIiwiZm4iLCJlbXVsYXRlVHJhbnNpdGlvbkVuZCIsImR1cmF0aW9uIiwiY2FsbGVkIiwiJGVsIiwib25lIiwiY2FsbGJhY2siLCJ0cmlnZ2VyIiwic3VwcG9ydCIsInNldFRpbWVvdXQiLCJldmVudCIsInNwZWNpYWwiLCJic1RyYW5zaXRpb25FbmQiLCJiaW5kVHlwZSIsImRlbGVnYXRlVHlwZSIsImhhbmRsZSIsImUiLCJ0YXJnZXQiLCJpcyIsImhhbmRsZU9iaiIsImhhbmRsZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsImpRdWVyeSJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFFQSxDQUFFLFVBQVNBLENBQVQsRUFBWTtBQUNWLGVBRFUsQ0FHVjtBQUNBOztBQUVBLFdBQVNDLGFBQVQsR0FBeUI7QUFDckIsUUFBSUMsRUFBRSxHQUFHQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsV0FBdkIsQ0FBVDtBQUVBLFFBQUlDLGtCQUFrQixHQUFHO0FBQ3JCQyxzQkFBZ0IsRUFBRSxxQkFERztBQUVyQkMsbUJBQWEsRUFBRSxlQUZNO0FBR3JCQyxpQkFBVyxFQUFFLCtCQUhRO0FBSXJCQyxnQkFBVSxFQUFFO0FBSlMsS0FBekI7O0FBT0EsU0FBSyxJQUFJQyxJQUFULElBQWlCTCxrQkFBakIsRUFBcUM7QUFDakMsVUFBSUgsRUFBRSxDQUFDUyxLQUFILENBQVNELElBQVQsTUFBbUJFLFNBQXZCLEVBQWtDO0FBQzlCLGVBQU87QUFBRUMsYUFBRyxFQUFFUixrQkFBa0IsQ0FBQ0ssSUFBRDtBQUF6QixTQUFQO0FBQ0g7QUFDSjs7QUFFRCxXQUFPLEtBQVAsQ0FoQnFCLENBZ0JQO0FBQ2pCLEdBdkJTLENBeUJWOzs7QUFDQVYsR0FBQyxDQUFDYyxFQUFGLENBQUtDLG9CQUFMLEdBQTRCLFVBQVNDLFFBQVQsRUFBbUI7QUFDM0MsUUFBSUMsTUFBTSxHQUFHLEtBQWI7QUFDQSxRQUFJQyxHQUFHLEdBQUcsSUFBVjtBQUNBbEIsS0FBQyxDQUFDLElBQUQsQ0FBRCxDQUFRbUIsR0FBUixDQUFZLGlCQUFaLEVBQStCLFlBQVc7QUFBRUYsWUFBTSxHQUFHLElBQVQ7QUFBZ0IsS0FBNUQ7O0FBQ0EsUUFBSUcsUUFBUSxHQUFHLFNBQVhBLFFBQVcsR0FBVztBQUFFLFVBQUksQ0FBQ0gsTUFBTCxFQUFhakIsQ0FBQyxDQUFDa0IsR0FBRCxDQUFELENBQU9HLE9BQVAsQ0FBZXJCLENBQUMsQ0FBQ3NCLE9BQUYsQ0FBVWIsVUFBVixDQUFxQkksR0FBcEM7QUFBMkMsS0FBcEY7O0FBQ0FVLGNBQVUsQ0FBQ0gsUUFBRCxFQUFXSixRQUFYLENBQVY7QUFDQSxXQUFPLElBQVA7QUFDSCxHQVBEOztBQVNBaEIsR0FBQyxDQUFDLFlBQVc7QUFDVEEsS0FBQyxDQUFDc0IsT0FBRixDQUFVYixVQUFWLEdBQXVCUixhQUFhLEVBQXBDO0FBRUEsUUFBSSxDQUFDRCxDQUFDLENBQUNzQixPQUFGLENBQVViLFVBQWYsRUFBMkI7QUFFM0JULEtBQUMsQ0FBQ3dCLEtBQUYsQ0FBUUMsT0FBUixDQUFnQkMsZUFBaEIsR0FBa0M7QUFDOUJDLGNBQVEsRUFBRTNCLENBQUMsQ0FBQ3NCLE9BQUYsQ0FBVWIsVUFBVixDQUFxQkksR0FERDtBQUU5QmUsa0JBQVksRUFBRTVCLENBQUMsQ0FBQ3NCLE9BQUYsQ0FBVWIsVUFBVixDQUFxQkksR0FGTDtBQUc5QmdCLFlBQU0sRUFBRSxnQkFBU0MsQ0FBVCxFQUFZO0FBQ2hCLFlBQUk5QixDQUFDLENBQUM4QixDQUFDLENBQUNDLE1BQUgsQ0FBRCxDQUFZQyxFQUFaLENBQWUsSUFBZixDQUFKLEVBQTBCLE9BQU9GLENBQUMsQ0FBQ0csU0FBRixDQUFZQyxPQUFaLENBQW9CQyxLQUFwQixDQUEwQixJQUExQixFQUFnQ0MsU0FBaEMsQ0FBUDtBQUM3QjtBQUw2QixLQUFsQztBQU9ILEdBWkEsQ0FBRDtBQWNILENBakRDLENBaURBQywrQ0FqREEsQ0FBRiIsImZpbGUiOiIuL2FwcC91dGlscy9ib290c3RyYXAtdHJhbnNpdGlvbi5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqUXVlcnkgZnJvbSAnanF1ZXJ5JztcblxuKyhmdW5jdGlvbigkKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLy8gQ1NTIFRSQU5TSVRJT04gU1VQUE9SVCAoU2hvdXRvdXQ6IGh0dHA6Ly93d3cubW9kZXJuaXpyLmNvbS8pXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKCkge1xuICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdib290c3RyYXAnKTtcblxuICAgICAgICB2YXIgdHJhbnNFbmRFdmVudE5hbWVzID0ge1xuICAgICAgICAgICAgV2Via2l0VHJhbnNpdGlvbjogJ3dlYmtpdFRyYW5zaXRpb25FbmQnLFxuICAgICAgICAgICAgTW96VHJhbnNpdGlvbjogJ3RyYW5zaXRpb25lbmQnLFxuICAgICAgICAgICAgT1RyYW5zaXRpb246ICdvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCcsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNpdGlvbmVuZCdcbiAgICAgICAgfTtcblxuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRyYW5zRW5kRXZlbnROYW1lcykge1xuICAgICAgICAgICAgaWYgKGVsLnN0eWxlW25hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBlbmQ6IHRyYW5zRW5kRXZlbnROYW1lc1tuYW1lXSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBleHBsaWNpdCBmb3IgaWU4ICggIC5fLilcbiAgICB9XG5cbiAgICAvLyBodHRwOi8vYmxvZy5hbGV4bWFjY2F3LmNvbS9jc3MtdHJhbnNpdGlvbnNcbiAgICAkLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24oZHVyYXRpb24pIHtcbiAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgJGVsID0gdGhpcztcbiAgICAgICAgJCh0aGlzKS5vbmUoJ2JzVHJhbnNpdGlvbkVuZCcsIGZ1bmN0aW9uKCkgeyBjYWxsZWQgPSB0cnVlOyB9KTtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7IGlmICghY2FsbGVkKSAkKCRlbCkudHJpZ2dlcigkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpOyB9O1xuICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkdXJhdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbiAgICAkKGZ1bmN0aW9uKCkge1xuICAgICAgICAkLnN1cHBvcnQudHJhbnNpdGlvbiA9IHRyYW5zaXRpb25FbmQoKTtcblxuICAgICAgICBpZiAoISQuc3VwcG9ydC50cmFuc2l0aW9uKSByZXR1cm47XG5cbiAgICAgICAgJC5ldmVudC5zcGVjaWFsLmJzVHJhbnNpdGlvbkVuZCA9IHtcbiAgICAgICAgICAgIGJpbmRUeXBlOiAkLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsXG4gICAgICAgICAgICBkZWxlZ2F0ZVR5cGU6ICQuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxcbiAgICAgICAgICAgIGhhbmRsZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGlmICgkKGUudGFyZ2V0KS5pcyh0aGlzKSkgcmV0dXJuIGUuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcblxufShqUXVlcnkpKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/bootstrap-transition.js\n");
/***/ }),
/***/ "./app/utils/changelog.js":
/*!********************************!*\
!*** ./app/utils/changelog.js ***!
\********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* eslint-disable */\n\nvar TRIGGER = null;\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('click', '[data-remodal-changelog]', function (event) {\n TRIGGER = event.currentTarget;\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('opened', '[data-remodal-id=\"changelog\"]', function () {\n var instance = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=changelog]').data('remodal')];\n instance.$modal.html('
');\n\n if (!TRIGGER) {\n return true;\n }\n\n var url = jquery__WEBPACK_IMPORTED_MODULE_0___default()(TRIGGER).data('remodalChangelog');\n jquery__WEBPACK_IMPORTED_MODULE_0___default().ajax({\n url: url\n }).done(function (data) {\n instance.$modal.html(data);\n });\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('closed', '[data-remodal-id=\"changelog\"]', function () {\n var instance = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=changelog]').data('remodal')];\n instance.$modal.html('');\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2NoYW5nZWxvZy5qcz83NjFjIl0sIm5hbWVzIjpbIlRSSUdHRVIiLCIkIiwiZG9jdW1lbnQiLCJvbiIsImV2ZW50IiwiY3VycmVudFRhcmdldCIsImluc3RhbmNlIiwiZGF0YSIsIiRtb2RhbCIsImh0bWwiLCJ1cmwiLCJkb25lIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBRUEsSUFBSUEsT0FBTyxHQUFHLElBQWQ7QUFFQUMsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxPQUFmLEVBQXdCLDBCQUF4QixFQUFvRCxVQUFDQyxLQUFELEVBQVc7QUFDM0RKLFNBQU8sR0FBR0ksS0FBSyxDQUFDQyxhQUFoQjtBQUNILENBRkQ7QUFJQUosNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxRQUFmLEVBQXlCLCtCQUF6QixFQUEwRCxZQUFNO0FBQzVELE1BQU1HLFFBQVEsR0FBR0wsOERBQUEsQ0FBaUJBLDZDQUFDLENBQUMsNkJBQUQsQ0FBRCxDQUFpQ00sSUFBakMsQ0FBc0MsU0FBdEMsQ0FBakIsQ0FBakI7QUFDQUQsVUFBUSxDQUFDRSxNQUFULENBQWdCQyxJQUFoQixDQUFxQiwwSUFBckI7O0FBQ0EsTUFBSSxDQUFDVCxPQUFMLEVBQWM7QUFBRSxXQUFPLElBQVA7QUFBYzs7QUFFOUIsTUFBTVUsR0FBRyxHQUFHVCw2Q0FBQyxDQUFDRCxPQUFELENBQUQsQ0FBV08sSUFBWCxDQUFnQixrQkFBaEIsQ0FBWjtBQUVBTixvREFBQSxDQUFPO0FBQUNTLE9BQUcsRUFBRUE7QUFBTixHQUFQLEVBQW1CQyxJQUFuQixDQUF3QixVQUFTSixJQUFULEVBQWU7QUFDbkNELFlBQVEsQ0FBQ0UsTUFBVCxDQUFnQkMsSUFBaEIsQ0FBcUJGLElBQXJCO0FBQ0gsR0FGRDtBQUdILENBVkQ7QUFZQU4sNkNBQUMsQ0FBQ0MsUUFBRCxDQUFELENBQVlDLEVBQVosQ0FBZSxRQUFmLEVBQXlCLCtCQUF6QixFQUEwRCxZQUFNO0FBQzVELE1BQU1HLFFBQVEsR0FBR0wsOERBQUEsQ0FBaUJBLDZDQUFDLENBQUMsNkJBQUQsQ0FBRCxDQUFpQ00sSUFBakMsQ0FBc0MsU0FBdEMsQ0FBakIsQ0FBakI7QUFDQUQsVUFBUSxDQUFDRSxNQUFULENBQWdCQyxJQUFoQixDQUFxQixFQUFyQjtBQUNILENBSEQiLCJmaWxlIjoiLi9hcHAvdXRpbHMvY2hhbmdlbG9nLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbmxldCBUUklHR0VSID0gbnVsbDtcblxuJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ1tkYXRhLXJlbW9kYWwtY2hhbmdlbG9nXScsIChldmVudCkgPT4ge1xuICAgIFRSSUdHRVIgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdvcGVuZWQnLCAnW2RhdGEtcmVtb2RhbC1pZD1cImNoYW5nZWxvZ1wiXScsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9ICQucmVtb2RhbC5sb29rdXBbJCgnW2RhdGEtcmVtb2RhbC1pZD1jaGFuZ2Vsb2ddJykuZGF0YSgncmVtb2RhbCcpXTtcbiAgICBpbnN0YW5jZS4kbW9kYWwuaHRtbCgnPGRpdiBjbGFzcz1cImNoYW5nZWxvZy1vdmVyZmxvdyBjZW50ZXJcIiBzdHlsZT1cInBhZGRpbmc6NXJlbSAwO3RleHQtYWxpZ246Y2VudGVyO1wiPjxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluIGZhLTN4IGZhLWZ3XCI+PC9pPjwvZGl2PicpO1xuICAgIGlmICghVFJJR0dFUikgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gICAgY29uc3QgdXJsID0gJChUUklHR0VSKS5kYXRhKCdyZW1vZGFsQ2hhbmdlbG9nJyk7XG5cbiAgICAkLmFqYXgoe3VybDogdXJsfSkuZG9uZShmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIGluc3RhbmNlLiRtb2RhbC5odG1sKGRhdGEpO1xuICAgIH0pO1xufSk7XG5cbiQoZG9jdW1lbnQpLm9uKCdjbG9zZWQnLCAnW2RhdGEtcmVtb2RhbC1pZD1cImNoYW5nZWxvZ1wiXScsICgpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9ICQucmVtb2RhbC5sb29rdXBbJCgnW2RhdGEtcmVtb2RhbC1pZD1jaGFuZ2Vsb2ddJykuZGF0YSgncmVtb2RhbCcpXTtcbiAgICBpbnN0YW5jZS4kbW9kYWwuaHRtbCgnJyk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/changelog.js\n");
/***/ }),
/***/ "./app/utils/colors.js":
/*!*****************************!*\
!*** ./app/utils/colors.js ***!
\*****************************/
/*! namespace exports */
/*! export hex2hsb [provided] [no usage info] [missing usage info prevents renaming] */
/*! export hex2rgb [provided] [no usage info] [missing usage info prevents renaming] */
/*! export hsb2hex [provided] [no usage info] [missing usage info prevents renaming] */
/*! export hsb2rgb [provided] [no usage info] [missing usage info prevents renaming] */
/*! export parseHex [provided] [no usage info] [missing usage info prevents renaming] */
/*! export rgb2hex [provided] [no usage info] [missing usage info prevents renaming] */
/*! export rgb2hsb [provided] [no usage info] [missing usage info prevents renaming] */
/*! export rgbstr2hex [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseHex\": () => /* binding */ parseHex,\n/* harmony export */ \"hsb2rgb\": () => /* binding */ hsb2rgb,\n/* harmony export */ \"rgb2hex\": () => /* binding */ rgb2hex,\n/* harmony export */ \"rgbstr2hex\": () => /* binding */ rgbstr2hex,\n/* harmony export */ \"hsb2hex\": () => /* binding */ hsb2hex,\n/* harmony export */ \"hex2hsb\": () => /* binding */ hex2hsb,\n/* harmony export */ \"rgb2hsb\": () => /* binding */ rgb2hsb,\n/* harmony export */ \"hex2rgb\": () => /* binding */ hex2rgb\n/* harmony export */ });\n// Parses a string and returns a valid hex string when possible\n// parseHex('#fff') => '#ffffff'\nvar parseHex = function parseHex(string) {\n string = string.replace(/[^A-F0-9]/ig, '');\n if (string.length !== 3 && string.length !== 6) return '';\n\n if (string.length === 3) {\n string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n }\n\n return '#' + string.toLowerCase();\n}; // Converts an HSB object to an RGB object\n// hsb2rgb({h: 0, s: 0, b: 100}) => {r: 255, g: 255, b: 255}\n\nvar hsb2rgb = function hsb2rgb(hsb) {\n var rgb = {};\n var h = Math.round(hsb.h);\n var s = Math.round(hsb.s * 255 / 100);\n var v = Math.round(hsb.b * 255 / 100);\n\n if (s === 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n if (h === 360) h = 0;\n\n if (h < 60) {\n rgb.r = t1;\n rgb.b = t2;\n rgb.g = t2 + t3;\n } else if (h < 120) {\n rgb.g = t1;\n rgb.b = t2;\n rgb.r = t1 - t3;\n } else if (h < 180) {\n rgb.g = t1;\n rgb.r = t2;\n rgb.b = t2 + t3;\n } else if (h < 240) {\n rgb.b = t1;\n rgb.r = t2;\n rgb.g = t1 - t3;\n } else if (h < 300) {\n rgb.b = t1;\n rgb.g = t2;\n rgb.r = t2 + t3;\n } else if (h < 360) {\n rgb.r = t1;\n rgb.g = t2;\n rgb.b = t1 - t3;\n } else {\n rgb.r = 0;\n rgb.g = 0;\n rgb.b = 0;\n }\n }\n\n return {\n r: Math.round(rgb.r),\n g: Math.round(rgb.g),\n b: Math.round(rgb.b)\n };\n}; // Converts an RGB object to a HEX string\n// rgb2hex({r: 255, g: 255, b: 255}) => #ffffff\n\nvar rgb2hex = function rgb2hex(rgb) {\n var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n hex.forEach(function (val, nr) {\n if (val.length === 1) hex[nr] = '0' + val;\n });\n return '#' + hex.join('');\n}; // Converts and RGB(a) string to a HEX string\n// rgbstr2hex('rgba(255, 255, 255, 0.5)') => #ffffff\n\nvar rgbstr2hex = function rgbstr2hex(rgb) {\n rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';\n}; // Converts an HSB object to a HEX string\n// hsb2hex({h: 0, s: 0, b: 100}) => #ffffff\n\nvar hsb2hex = function hsb2hex(hsb) {\n return rgb2hex(hsb2rgb(hsb));\n}; // Converts a HEX string to an HSB object\n// hex2hsb('#ffffff') => {h: 0, s: 0, b: 100}\n\nvar hex2hsb = function hex2hsb(hex) {\n var hsb = rgb2hsb(hex2rgb(hex));\n if (hsb.s === 0) hsb.h = 360;\n return hsb;\n}; // Converts an RGB object to an HSB object\n// rgb2hsb({r: 255, g: 255, b: 255}) => {h: 0, s: 0, b: 100}\n\nvar rgb2hsb = function rgb2hsb(rgb) {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max !== 0 ? 255 * delta / max : 0;\n\n if (hsb.s !== 0) {\n if (rgb.r === max) {\n hsb.h = (rgb.g - rgb.b) / delta;\n } else if (rgb.g === max) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n } else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n } else {\n hsb.h = -1;\n }\n\n hsb.h *= 60;\n\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n return hsb;\n}; // Converts a HEX string to an RGB object\n// hex2rgb('#ffffff') => {r: 255, g: 255, b: 255}\n\nvar hex2rgb = function hex2rgb(hex) {\n hex = parseInt(hex.indexOf('#') > -1 ? hex.substring(1) : hex, 16);\n return {\n /* jshint ignore:start */\n r: hex >> 16,\n g: (hex & 0x00FF00) >> 8,\n b: hex & 0x0000FF\n /* jshint ignore:end */\n\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2NvbG9ycy5qcz9lMGE4Il0sIm5hbWVzIjpbInBhcnNlSGV4Iiwic3RyaW5nIiwicmVwbGFjZSIsImxlbmd0aCIsInRvTG93ZXJDYXNlIiwiaHNiMnJnYiIsImhzYiIsInJnYiIsImgiLCJNYXRoIiwicm91bmQiLCJzIiwidiIsImIiLCJyIiwiZyIsInQxIiwidDIiLCJ0MyIsInJnYjJoZXgiLCJoZXgiLCJ0b1N0cmluZyIsImZvckVhY2giLCJ2YWwiLCJuciIsImpvaW4iLCJyZ2JzdHIyaGV4IiwibWF0Y2giLCJwYXJzZUludCIsInNsaWNlIiwiaHNiMmhleCIsImhleDJoc2IiLCJyZ2IyaHNiIiwiaGV4MnJnYiIsIm1pbiIsIm1heCIsImRlbHRhIiwiaW5kZXhPZiIsInN1YnN0cmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ08sSUFBTUEsUUFBUSxHQUFHLFNBQVhBLFFBQVcsQ0FBQ0MsTUFBRCxFQUFZO0FBQ2hDQSxRQUFNLEdBQUdBLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlLGFBQWYsRUFBOEIsRUFBOUIsQ0FBVDtBQUNBLE1BQUlELE1BQU0sQ0FBQ0UsTUFBUCxLQUFrQixDQUFsQixJQUF1QkYsTUFBTSxDQUFDRSxNQUFQLEtBQWtCLENBQTdDLEVBQWdELE9BQU8sRUFBUDs7QUFDaEQsTUFBSUYsTUFBTSxDQUFDRSxNQUFQLEtBQWtCLENBQXRCLEVBQXlCO0FBQ3JCRixVQUFNLEdBQUdBLE1BQU0sQ0FBQyxDQUFELENBQU4sR0FBWUEsTUFBTSxDQUFDLENBQUQsQ0FBbEIsR0FBd0JBLE1BQU0sQ0FBQyxDQUFELENBQTlCLEdBQW9DQSxNQUFNLENBQUMsQ0FBRCxDQUExQyxHQUFnREEsTUFBTSxDQUFDLENBQUQsQ0FBdEQsR0FBNERBLE1BQU0sQ0FBQyxDQUFELENBQTNFO0FBQ0g7O0FBRUQsU0FBTyxNQUFNQSxNQUFNLENBQUNHLFdBQVAsRUFBYjtBQUNILENBUk0sQyxDQVVQ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OUJNLEMsQ0FnQ1A7QUFDQTs7QUFDTyxJQUFNMkIsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ2IsR0FBRCxFQUFTO0FBQzVCQSxLQUFHLEdBQUdRLFFBQVEsQ0FBR1IsR0FBRyxDQUFDaUIsT0FBSixDQUFZLEdBQVosSUFBbUIsQ0FBQyxDQUFyQixHQUEwQmpCLEdBQUcsQ0FBQ2tCLFNBQUosQ0FBYyxDQUFkLENBQTFCLEdBQTZDbEIsR0FBL0MsRUFBcUQsRUFBckQsQ0FBZDtBQUVBLFNBQU87QUFDSDtBQUNBTixLQUFDLEVBQUVNLEdBQUcsSUFBSSxFQUZQO0FBR0hMLEtBQUMsRUFBRSxDQUFDSyxHQUFHLEdBQUcsUUFBUCxLQUFvQixDQUhwQjtBQUlIUCxLQUFDLEVBQUdPLEdBQUcsR0FBRztBQUNWOztBQUxHLEdBQVA7QUFPSCxDQVZNIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL2NvbG9ycy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhIHZhbGlkIGhleCBzdHJpbmcgd2hlbiBwb3NzaWJsZVxuLy8gcGFyc2VIZXgoJyNmZmYnKSA9PiAnI2ZmZmZmZidcbmV4cG9ydCBjb25zdCBwYXJzZUhleCA9IChzdHJpbmcpID0+IHtcbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvW15BLUYwLTldL2lnLCAnJyk7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggIT09IDMgJiYgc3RyaW5nLmxlbmd0aCAhPT0gNikgcmV0dXJuICcnO1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZ1swXSArIHN0cmluZ1swXSArIHN0cmluZ1sxXSArIHN0cmluZ1sxXSArIHN0cmluZ1syXSArIHN0cmluZ1syXTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyMnICsgc3RyaW5nLnRvTG93ZXJDYXNlKCk7XG59O1xuXG4vLyBDb252ZXJ0cyBhbiBIU0Igb2JqZWN0IHRvIGFuIFJHQiBvYmplY3Rcbi8vIGhzYjJyZ2Ioe2g6IDAsIHM6IDAsIGI6IDEwMH0pID0+IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fVxuZXhwb3J0IGNvbnN0IGhzYjJyZ2IgPSAoaHNiKSA9PiB7XG4gICAgbGV0IHJnYiA9IHt9O1xuICAgIGxldCBoID0gTWF0aC5yb3VuZChoc2IuaCk7XG4gICAgbGV0IHMgPSBNYXRoLnJvdW5kKGhzYi5zICogMjU1IC8gMTAwKTtcbiAgICBsZXQgdiA9IE1hdGgucm91bmQoaHNiLmIgKiAyNTUgLyAxMDApO1xuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAgIHJnYi5yID0gcmdiLmcgPSByZ2IuYiA9IHY7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHQxID0gdjtcbiAgICAgICAgdmFyIHQyID0gKDI1NSAtIHMpICogdiAvIDI1NTtcbiAgICAgICAgdmFyIHQzID0gKHQxIC0gdDIpICogKGggJSA2MCkgLyA2MDtcbiAgICAgICAgaWYgKGggPT09IDM2MCkgaCA9IDA7XG4gICAgICAgIGlmIChoIDwgNjApIHtcbiAgICAgICAgICAgIHJnYi5yID0gdDE7XG4gICAgICAgICAgICByZ2IuYiA9IHQyO1xuICAgICAgICAgICAgcmdiLmcgPSB0MiArIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKGggPCAxMjApIHtcbiAgICAgICAgICAgIHJnYi5nID0gdDE7XG4gICAgICAgICAgICByZ2IuYiA9IHQyO1xuICAgICAgICAgICAgcmdiLnIgPSB0MSAtIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKGggPCAxODApIHtcbiAgICAgICAgICAgIHJnYi5nID0gdDE7XG4gICAgICAgICAgICByZ2IuciA9IHQyO1xuICAgICAgICAgICAgcmdiLmIgPSB0MiArIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKGggPCAyNDApIHtcbiAgICAgICAgICAgIHJnYi5iID0gdDE7XG4gICAgICAgICAgICByZ2IuciA9IHQyO1xuICAgICAgICAgICAgcmdiLmcgPSB0MSAtIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKGggPCAzMDApIHtcbiAgICAgICAgICAgIHJnYi5iID0gdDE7XG4gICAgICAgICAgICByZ2IuZyA9IHQyO1xuICAgICAgICAgICAgcmdiLnIgPSB0MiArIHQzO1xuICAgICAgICB9IGVsc2UgaWYgKGggPCAzNjApIHtcbiAgICAgICAgICAgIHJnYi5yID0gdDE7XG4gICAgICAgICAgICByZ2IuZyA9IHQyO1xuICAgICAgICAgICAgcmdiLmIgPSB0MSAtIHQzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmdiLnIgPSAwO1xuICAgICAgICAgICAgcmdiLmcgPSAwO1xuICAgICAgICAgICAgcmdiLmIgPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHI6IE1hdGgucm91bmQocmdiLnIpLFxuICAgICAgICBnOiBNYXRoLnJvdW5kKHJnYi5nKSxcbiAgICAgICAgYjogTWF0aC5yb3VuZChyZ2IuYilcbiAgICB9O1xufTtcblxuLy8gQ29udmVydHMgYW4gUkdCIG9iamVjdCB0byBhIEhFWCBzdHJpbmdcbi8vIHJnYjJoZXgoe3I6IDI1NSwgZzogMjU1LCBiOiAyNTV9KSA9PiAjZmZmZmZmXG5leHBvcnQgY29uc3QgcmdiMmhleCA9IChyZ2IpID0+IHtcbiAgICB2YXIgaGV4ID0gW1xuICAgICAgICByZ2Iuci50b1N0cmluZygxNiksXG4gICAgICAgIHJnYi5nLnRvU3RyaW5nKDE2KSxcbiAgICAgICAgcmdiLmIudG9TdHJpbmcoMTYpXG4gICAgXTtcblxuICAgIGhleC5mb3JFYWNoKCh2YWwsIG5yKSA9PiB7XG4gICAgICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSBoZXhbbnJdID0gJzAnICsgdmFsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICcjJyArIGhleC5qb2luKCcnKTtcbn07XG5cbi8vIENvbnZlcnRzIGFuZCBSR0IoYSkgc3RyaW5nIHRvIGEgSEVYIHN0cmluZ1xuLy8gcmdic3RyMmhleCgncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJykgPT4gI2ZmZmZmZlxuZXhwb3J0IGNvbnN0IHJnYnN0cjJoZXggPSAocmdiKSA9PiB7XG4gICAgcmdiID0gcmdiLm1hdGNoKC9ecmdiYT9bXFxzK10/XFwoW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8sW1xccytdPyhcXGQrKVtcXHMrXT8vaSk7XG5cbiAgICByZXR1cm4gKHJnYiAmJiByZ2IubGVuZ3RoID09PSA0KSA/ICcjJyArXG4gICAgKCcwJyArIHBhcnNlSW50KHJnYlsxXSwgMTApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpICtcbiAgICAoJzAnICsgcGFyc2VJbnQocmdiWzJdLCAxMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikgK1xuICAgICgnMCcgKyBwYXJzZUludChyZ2JbM10sIDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKSA6ICcnO1xufTtcblxuLy8gQ29udmVydHMgYW4gSFNCIG9iamVjdCB0byBhIEhFWCBzdHJpbmdcbi8vIGhzYjJoZXgoe2g6IDAsIHM6IDAsIGI6IDEwMH0pID0+ICNmZmZmZmZcbmV4cG9ydCBjb25zdCBoc2IyaGV4ID0gKGhzYikgPT4ge1xuICAgIHJldHVybiByZ2IyaGV4KGhzYjJyZ2IoaHNiKSk7XG59O1xuXG4vLyBDb252ZXJ0cyBhIEhFWCBzdHJpbmcgdG8gYW4gSFNCIG9iamVjdFxuLy8gaGV4MmhzYignI2ZmZmZmZicpID0+IHtoOiAwLCBzOiAwLCBiOiAxMDB9XG5leHBvcnQgY29uc3QgaGV4MmhzYiA9IChoZXgpID0+IHtcbiAgICBsZXQgaHNiID0gcmdiMmhzYihoZXgycmdiKGhleCkpO1xuICAgIGlmIChoc2IucyA9PT0gMCkgaHNiLmggPSAzNjA7XG5cbiAgICByZXR1cm4gaHNiO1xufTtcblxuLy8gQ29udmVydHMgYW4gUkdCIG9iamVjdCB0byBhbiBIU0Igb2JqZWN0XG4vLyByZ2IyaHNiKHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSkgPT4ge2g6IDAsIHM6IDAsIGI6IDEwMH1cbmV4cG9ydCBjb25zdCByZ2IyaHNiID0gKHJnYikgPT4ge1xuICAgIGxldCBoc2IgPSB7XG4gICAgICAgIGg6IDAsXG4gICAgICAgIHM6IDAsXG4gICAgICAgIGI6IDBcbiAgICB9O1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbihyZ2IuciwgcmdiLmcsIHJnYi5iKTtcbiAgICBsZXQgbWF4ID0gTWF0aC5tYXgocmdiLnIsIHJnYi5nLCByZ2IuYik7XG4gICAgbGV0IGRlbHRhID0gbWF4IC0gbWluO1xuICAgIGhzYi5iID0gbWF4O1xuICAgIGhzYi5zID0gbWF4ICE9PSAwID8gMjU1ICogZGVsdGEgLyBtYXggOiAwO1xuICAgIGlmIChoc2IucyAhPT0gMCkge1xuICAgICAgICBpZiAocmdiLnIgPT09IG1heCkge1xuICAgICAgICAgICAgaHNiLmggPSAocmdiLmcgLSByZ2IuYikgLyBkZWx0YTtcbiAgICAgICAgfSBlbHNlIGlmIChyZ2IuZyA9PT0gbWF4KSB7XG4gICAgICAgICAgICBoc2IuaCA9IDIgKyAocmdiLmIgLSByZ2IucikgLyBkZWx0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhzYi5oID0gNCArIChyZ2IuciAtIHJnYi5nKSAvIGRlbHRhO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaHNiLmggPSAtMTtcbiAgICB9XG4gICAgaHNiLmggKj0gNjA7XG4gICAgaWYgKGhzYi5oIDwgMCkge1xuICAgICAgICBoc2IuaCArPSAzNjA7XG4gICAgfVxuICAgIGhzYi5zICo9IDEwMCAvIDI1NTtcbiAgICBoc2IuYiAqPSAxMDAgLyAyNTU7XG5cbiAgICByZXR1cm4gaHNiO1xufTtcblxuLy8gQ29udmVydHMgYSBIRVggc3RyaW5nIHRvIGFuIFJHQiBvYmplY3Rcbi8vIGhleDJyZ2IoJyNmZmZmZmYnKSA9PiB7cjogMjU1LCBnOiAyNTUsIGI6IDI1NX1cbmV4cG9ydCBjb25zdCBoZXgycmdiID0gKGhleCkgPT4ge1xuICAgIGhleCA9IHBhcnNlSW50KCgoaGV4LmluZGV4T2YoJyMnKSA+IC0xKSA/IGhleC5zdWJzdHJpbmcoMSkgOiBoZXgpLCAxNik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHI6IGhleCA+PiAxNixcbiAgICAgICAgZzogKGhleCAmIDB4MDBGRjAwKSA+PiA4LFxuICAgICAgICBiOiAoaGV4ICYgMHgwMDAwRkYpXG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/colors.js\n");
/***/ }),
/***/ "./app/utils/cron-ui.js":
/*!******************************!*\
!*** ./app/utils/cron-ui.js ***!
\******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable */\n\n/*\n * This file is part of the Arnapou jqCron package.\n *\n * (c) Arnaud Buathier \n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\n/**\n * Default settings\n */\n\nvar jqCronDefaultSettings = {\n texts: {},\n monthdays: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],\n hours: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],\n hour_labels: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\"],\n minutes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59],\n lang: 'en',\n enabled_minute: false,\n enabled_hour: true,\n enabled_day: true,\n enabled_week: true,\n enabled_month: true,\n enabled_year: true,\n multiple_dom: false,\n multiple_month: false,\n multiple_mins: false,\n multiple_dow: false,\n multiple_time_hours: false,\n multiple_time_minutes: false,\n numeric_zero_pad: false,\n default_period: 'day',\n default_value: '',\n no_reset_button: true,\n disabled: false,\n bind_to: null,\n bind_method: {\n set: function set($element, value) {\n $element.is(':input') ? $element.val(value) : $element.data('jqCronValue', value);\n },\n get: function get($element) {\n return $element.is(':input') ? $element.val() : $element.data('jqCronValue');\n }\n }\n};\n/**\n * Custom extend of json for jqCron settings.\n * We don't use jQuery.extend because simple extend does not fit our needs, and deep extend has a bad\n * feature for us : it replaces keys of \"Arrays\" instead of replacing the full array.\n */\n\n(function ($) {\n var extend = function extend(dst, src) {\n for (var i in src) {\n if ($.isPlainObject(src[i])) {\n dst[i] = extend(dst[i] && $.isPlainObject(dst[i]) ? dst[i] : {}, src[i]);\n } else if ($.isArray(src[i])) {\n dst[i] = src[i].slice(0);\n } else if (src[i] !== undefined) {\n dst[i] = src[i];\n }\n }\n\n return dst;\n };\n\n this.jqCronMergeSettings = function (obj) {\n return extend(extend({}, jqCronDefaultSettings), obj || {});\n };\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * Shortcut to get the instance of jqCron instance from one jquery object\n */\n\n(function ($) {\n $.fn.jqCronGetInstance = function () {\n return this.data('jqCron');\n };\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * Main plugin\n */\n\n(function ($) {\n $.fn.jqCron = function (settings) {\n var saved_settings = settings;\n return this.each(function () {\n var cron, saved;\n var $this = $(this);\n var settings = jqCronMergeSettings(saved_settings); // clone settings\n\n var translations = settings.texts[settings.lang];\n\n if (_typeof(translations) !== 'object' || $.isEmptyObject(translations)) {\n console && console.error('Missing translations for language \"' + settings.lang + '\". ' + 'Please include jqCron.' + settings.lang + '.js or manually provide ' + 'the necessary translations when calling $.fn.jqCron().');\n return;\n }\n\n if (!settings.jquery_container) {\n if ($this.is(':container')) {\n settings.jquery_element = $this.uniqueId('jqCron');\n } else if ($this.is(':autoclose')) {\n // delete already generated dom if exists\n if ($this.next('.jqCron').length == 1) {\n $this.next('.jqCron').remove();\n } // generate new\n\n\n settings.jquery_element = $(' ').uniqueId('jqCron').insertAfter($this);\n } else {\n console && console.error(settings.texts[settings.lang].error1.replace('%s', this.tagName));\n return;\n }\n } // autoset bind_to if it is an input\n\n\n if ($this.is(':input')) {\n settings.bind_to = settings.bind_to || $this;\n } // init cron object\n\n\n if (settings.bind_to) {\n if (settings.bind_to.is(':input')) {\n // auto bind from input to object if an input, textarea ...\n settings.bind_to.blur(function () {\n var value = settings.bind_method.get(settings.bind_to);\n $this.jqCronGetInstance().setCron(value);\n });\n }\n\n saved = settings.bind_method.get(settings.bind_to);\n cron = new jqCron(settings);\n cron.setCron(saved);\n } else {\n cron = new jqCron(settings);\n }\n\n $(this).data('jqCron', cron);\n });\n };\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * jqCron class\n */\n\n(function ($) {\n var jqCronInstances = [];\n\n function jqCron(settings) {\n var _initialized = false;\n\n var _self = this;\n\n var _$elt = this;\n\n var _$obj = $(' ');\n\n var _$blocks = $(' ');\n\n var _$blockPERIOD = $(' ');\n\n var _$blockDOM = $(' ');\n\n var _$blockMONTH = $(' ');\n\n var _$blockMINS = $(' ');\n\n var _$blockDOW = $(' ');\n\n var _$blockTIME = $(' ');\n\n var _$cross = $('✘ ');\n\n var _selectors = [];\n\n var _selectorPeriod, _selectorMins, _selectorTimeH, _selectorTimeM, _selectorDow, _selectorDom, _selectorMonth; // instanciate a new selector\n\n\n function newSelector($block, multiple, type) {\n var selector = new jqCronSelector(_self, $block, multiple, type);\n selector.$.bind('selector:open', function () {\n // we close all opened selectors of all other jqCron\n for (var n = jqCronInstances.length; n--;) {\n if (jqCronInstances[n] != _self) {\n jqCronInstances[n].closeSelectors();\n } else {\n // we close all other opened selectors of this jqCron\n for (var o = _selectors.length; o--;) {\n if (_selectors[o] != selector) {\n _selectors[o].close();\n }\n }\n }\n }\n });\n selector.$.bind('selector:change', function () {\n var boundChanged = false; // don't propagate if not initialized\n\n if (!_initialized) return; // bind data between two minute selectors (only if they have the same multiple settings)\n\n if (settings.multiple_mins == settings.multiple_time_minutes) {\n if (selector == _selectorMins) {\n boundChanged = _selectorTimeM.setValue(_selectorMins.getValue());\n } else if (selector == _selectorTimeM) {\n boundChanged = _selectorMins.setValue(_selectorTimeM.getValue());\n }\n } // we propagate the change event to the main object\n\n\n boundChanged || _$obj.trigger('cron:change', _self.getCron());\n });\n\n _selectors.push(selector);\n\n return selector;\n } // disable the selector\n\n\n this.disable = function () {\n _$obj.addClass('disable');\n\n settings.disable = true;\n\n _self.closeSelectors();\n }; // return if the selector is disabled\n\n\n this.isDisabled = function () {\n return settings.disable == true;\n }; // enable the selector\n\n\n this.enable = function () {\n _$obj.removeClass('disable');\n\n settings.disable = false;\n }; // get cron value\n\n\n this.getCron = function () {\n var period = _selectorPeriod.getValue();\n\n var items = ['*', '*', '*', '*', '*'];\n\n if (period == 'hour') {\n items[0] = _selectorMins.getCronValue();\n }\n\n if (period == 'day' || period == 'week' || period == 'month' || period == 'year') {\n items[0] = _selectorTimeM.getCronValue();\n items[1] = _selectorTimeH.getCronValue();\n }\n\n if (period == 'month' || period == 'year') {\n items[2] = _selectorDom.getCronValue();\n }\n\n if (period == 'year') {\n items[3] = _selectorMonth.getCronValue();\n }\n\n if (period == 'week') {\n items[4] = _selectorDow.getCronValue();\n }\n\n return items.join(' ');\n }; // set cron (string like * * * * *)\n\n\n this.setCron = function (str) {\n if (!str) return;\n\n try {\n str = str.replace(/\\s+/g, ' ').replace(/^ +/, '').replace(/ +$/, ''); // sanitize\n\n var mask = str.replace(/[^\\* ]/g, '-').replace(/-+/g, '-').replace(/ +/g, '');\n var items = str.split(' ');\n if (items.length != 5) _self.error(_self.getText('error2'));\n\n if (mask == '*****') {\n // 1 possibility\n _selectorPeriod.setValue('minute');\n } else if (mask == '-****') {\n // 1 possibility\n _selectorPeriod.setValue('hour');\n\n _selectorMins.setCronValue(items[0]);\n\n _selectorTimeM.setCronValue(items[0]);\n } else if (mask.substring(2, mask.length) == '***') {\n // 4 possibilities\n _selectorPeriod.setValue('day');\n\n _selectorMins.setCronValue(items[0]);\n\n _selectorTimeM.setCronValue(items[0]);\n\n _selectorTimeH.setCronValue(items[1]);\n } else if (mask.substring(2, mask.length) == '-**') {\n // 4 possibilities\n _selectorPeriod.setValue('month');\n\n _selectorMins.setCronValue(items[0]);\n\n _selectorTimeM.setCronValue(items[0]);\n\n _selectorTimeH.setCronValue(items[1]);\n\n _selectorDom.setCronValue(items[2]);\n } else if (mask.substring(2, mask.length) == '**-') {\n // 4 possibilities\n _selectorPeriod.setValue('week');\n\n _selectorMins.setCronValue(items[0]);\n\n _selectorTimeM.setCronValue(items[0]);\n\n _selectorTimeH.setCronValue(items[1]);\n\n _selectorDow.setCronValue(items[4]);\n } else if (mask.substring(3, mask.length) == '-*') {\n // 8 possibilities\n _selectorPeriod.setValue('year');\n\n _selectorMins.setCronValue(items[0]);\n\n _selectorTimeM.setCronValue(items[0]);\n\n _selectorTimeH.setCronValue(items[1]);\n\n _selectorDom.setCronValue(items[2]);\n\n _selectorMonth.setCronValue(items[3]);\n } else {\n _self.error(_self.getText('error4'));\n }\n\n _self.clearError();\n } catch (e) {}\n }; // close all child selectors\n\n\n this.closeSelectors = function () {\n for (var n = _selectors.length; n--;) {\n _selectors[n].close();\n }\n }; // get the main element id\n\n\n this.getId = function () {\n return _$elt.attr('id');\n }; // get the translated text\n\n\n this.getText = function (key) {\n var text = settings.texts[settings.lang][key] || null;\n\n if (typeof text == \"string\" && text.match(' )/gi, '');\n text = '' + text + ' ';\n }\n\n return text;\n }; // get the human readable text\n\n\n this.getHumanText = function () {\n var texts = [];\n\n _$obj.find('> span > span:visible').find('.jqCron-text, .jqCron-selector > span').each(function () {\n var text = $(this).text().replace(/\\s+$/g, '').replace(/^\\s+/g, '');\n text && texts.push(text);\n });\n\n return texts.join(' ').replace(/\\s:\\s/g, ':');\n }; // get settings\n\n\n this.getSettings = function () {\n return settings;\n }; // display an error\n\n\n this.error = function (msg) {\n console && console.error('[jqCron Error] ' + msg);\n\n _$obj.addClass('jqCron-error').attr('title', msg);\n\n throw msg;\n }; // clear error\n\n\n this.clearError = function () {\n _$obj.attr('title', '').removeClass('jqCron-error');\n }; // clear\n\n\n this.clear = function () {\n _selectorDom.setValue([]);\n\n _selectorDow.setValue([]);\n\n _selectorMins.setValue([]);\n\n _selectorMonth.setValue([]);\n\n _selectorTimeH.setValue([]);\n\n _selectorTimeM.setValue([]);\n\n _self.triggerChange();\n }; // init (called in constructor)\n\n\n this.init = function () {\n var n, i, labelsList, list;\n if (_initialized) return;\n settings = jqCronMergeSettings(settings);\n settings.jquery_element || _self.error(_self.getText('error3'));\n _$elt = settings.jquery_element;\n\n _$elt.append(_$obj);\n\n _$obj.data('id', settings.id);\n\n _$obj.data('jqCron', _self);\n\n _$obj.append(_$blocks);\n\n settings.no_reset_button || _$obj.append(_$cross);\n !settings.disable || _$obj.addClass('disable');\n\n _$blocks.append(_$blockPERIOD);\n\n if (/^(ko)$/i.test(settings.lang)) {\n _$blocks.append(_$blockMONTH, _$blockDOM);\n } else {\n _$blocks.append(_$blockDOM, _$blockMONTH);\n }\n\n _$blocks.append(_$blockMINS);\n\n _$blocks.append(_$blockDOW);\n\n _$blocks.append(_$blockTIME); // various binding\n\n\n _$cross.click(function () {\n _self.isDisabled() || _self.clear();\n }); // binding from cron to target\n\n\n _$obj.bind('cron:change', function (evt, value) {\n if (!settings.bind_to) return;\n settings.bind_method.set && settings.bind_method.set(settings.bind_to, value);\n\n _self.clearError();\n }); // PERIOD\n\n\n _$blockPERIOD.append(_self.getText('text_period'));\n\n _selectorPeriod = newSelector(_$blockPERIOD, false, 'period');\n settings.enabled_minute && _selectorPeriod.add('minute', _self.getText('name_minute'));\n settings.enabled_hour && _selectorPeriod.add('hour', _self.getText('name_hour'));\n settings.enabled_day && _selectorPeriod.add('day', _self.getText('name_day'));\n settings.enabled_week && _selectorPeriod.add('week', _self.getText('name_week'));\n settings.enabled_month && _selectorPeriod.add('month', _self.getText('name_month'));\n settings.enabled_year && _selectorPeriod.add('year', _self.getText('name_year'));\n\n _selectorPeriod.$.bind('selector:change', function (e, value) {\n _$blockDOM.hide();\n\n _$blockMONTH.hide();\n\n _$blockMINS.hide();\n\n _$blockDOW.hide();\n\n _$blockTIME.hide();\n\n if (value == 'hour') {\n _$blockMINS.show();\n } else if (value == 'day') {\n _$blockTIME.show();\n } else if (value == 'week') {\n _$blockDOW.show();\n\n _$blockTIME.show();\n } else if (value == 'month') {\n _$blockDOM.show();\n\n _$blockTIME.show();\n } else if (value == 'year') {\n _$blockDOM.show();\n\n _$blockMONTH.show();\n\n _$blockTIME.show();\n }\n });\n\n _selectorPeriod.setValue(settings.default_period); // MINS (minutes)\n\n\n _$blockMINS.append(_self.getText('text_mins'));\n\n _selectorMins = newSelector(_$blockMINS, settings.multiple_mins, 'minutes');\n\n for (i = 0, list = settings.minutes; i < list.length; i++) {\n _selectorMins.add(list[i], list[i]);\n } // TIME (hour:min)\n\n\n _$blockTIME.append(_self.getText('text_time'));\n\n _selectorTimeH = newSelector(_$blockTIME, settings.multiple_time_hours, 'time_hours');\n\n for (i = 0, list = settings.hours, labelsList = settings.hour_labels; i < list.length; i++) {\n _selectorTimeH.add(list[i], labelsList[i]);\n }\n\n _selectorTimeM = newSelector(_$blockTIME, settings.multiple_time_minutes, 'time_minutes');\n\n for (i = 0, list = settings.minutes; i < list.length; i++) {\n _selectorTimeM.add(list[i], list[i]);\n } // DOW (day of week)\n\n\n _$blockDOW.append(_self.getText('text_dow'));\n\n _selectorDow = newSelector(_$blockDOW, settings.multiple_dow, 'day_of_week');\n\n for (i = 0, list = _self.getText('weekdays'); i < list.length; i++) {\n _selectorDow.add(i + 1, list[i]);\n } // DOM (day of month)\n\n\n _$blockDOM.append(_self.getText('text_dom'));\n\n _selectorDom = newSelector(_$blockDOM, settings.multiple_dom, 'day_of_month');\n\n for (i = 0, list = settings.monthdays; i < list.length; i++) {\n _selectorDom.add(list[i], list[i]);\n } // MONTH (day of week)\n\n\n _$blockMONTH.append(_self.getText('text_month'));\n\n _selectorMonth = newSelector(_$blockMONTH, settings.multiple_month, 'month');\n\n for (i = 0, list = _self.getText('months'); i < list.length; i++) {\n _selectorMonth.add(i + 1, list[i]);\n } // close all selectors when we click in body\n\n\n $('body').click(function () {\n var i,\n n = _selectors.length;\n\n for (i = 0; i < n; i++) {\n _selectors[i].close();\n }\n });\n _initialized = true; // default value\n\n if (settings.default_value) {\n _self.setCron(settings.default_value);\n }\n }; // trigger a change event\n\n\n this.triggerChange = function () {\n _$obj.trigger('cron:change', _self.getCron());\n }; // store instance in array\n\n\n jqCronInstances.push(this); // expose main jquery object\n\n this.$ = _$obj; // init\n\n try {\n this.init();\n\n _self.triggerChange();\n } catch (e) {}\n }\n\n this.jqCron = jqCron;\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * jqCronSelector class\n */\n\n(function ($) {\n function jqCronSelector(_cron, _$block, _multiple, _type) {\n var _self = this;\n\n var _$list = $('');\n\n var _$title = $(' ');\n\n var _$selector = $(' ');\n\n var _values = {};\n var _value = [];\n var _hasNumericTexts = true;\n\n var _numeric_zero_pad = _cron.getSettings().numeric_zero_pad; // return an array without doublon\n\n\n function array_unique(l) {\n var i = 0,\n n = l.length,\n k = {},\n a = [];\n\n while (i < n) {\n k[l[i]] || (k[l[i]] = true && a.push(l[i]));\n i++;\n }\n\n return a;\n } // get the value (an array if multiple, else a single value)\n\n\n this.getValue = function () {\n return _multiple ? _value : _value[0];\n }; // get a correct string for cron\n\n\n this.getCronValue = function () {\n if (_value.length == 0) return '*';\n var cron = [_value[0]],\n i,\n s = _value[0],\n c = _value[0],\n n = _value.length;\n\n for (i = 1; i < n; i++) {\n if (_value[i] == c + 1) {\n c = _value[i];\n cron[cron.length - 1] = s + '-' + c;\n } else {\n s = c = _value[i];\n cron.push(c);\n }\n }\n\n return cron.join(',');\n }; // set the cron value\n\n\n this.setCronValue = function (str) {\n var values = [],\n m,\n i,\n n;\n\n if (str !== '*') {\n while (str != '') {\n // test \"*/n\" expression\n m = str.match(/^\\*\\/([0-9]+),?/);\n\n if (m && m.length == 2) {\n for (i = 0; i <= 59; i += m[1] | 0) {\n values.push(i);\n }\n\n str = str.replace(m[0], '');\n continue;\n } // test \"a-b/n\" expression\n\n\n m = str.match(/^([0-9]+)-([0-9]+)\\/([0-9]+),?/);\n\n if (m && m.length == 4) {\n for (i = m[1] | 0; i <= (m[2] | 0); i += m[3] | 0) {\n values.push(i);\n }\n\n str = str.replace(m[0], '');\n continue;\n } // test \"a-b\" expression\n\n\n m = str.match(/^([0-9]+)-([0-9]+),?/);\n\n if (m && m.length == 3) {\n for (i = m[1] | 0; i <= (m[2] | 0); i++) {\n values.push(i);\n }\n\n str = str.replace(m[0], '');\n continue;\n } // test \"c\" expression\n\n\n m = str.match(/^([0-9]+),?/);\n\n if (m && m.length == 2) {\n values.push(m[1] | 0);\n str = str.replace(m[0], '');\n continue;\n } // something goes wrong in the expression\n\n\n return;\n }\n }\n\n _self.setValue(values);\n }; // close the selector\n\n\n this.close = function () {\n _$selector.trigger('selector:close');\n }; // open the selector\n\n\n this.open = function () {\n _$selector.trigger('selector:open');\n }; // whether the selector is open\n\n\n this.isOpened = function () {\n return _$list.is(':visible');\n }; // add a selected value to the list\n\n\n this.addValue = function (key) {\n var values = _multiple ? _value.slice(0) : []; // clone array\n\n values.push(key);\n\n _self.setValue(values);\n }; // remove a selected value from the list\n\n\n this.removeValue = function (key) {\n if (_multiple) {\n var i,\n newValue = [];\n\n for (i = 0; i < _value.length; i++) {\n if (key != [_value[i]]) {\n newValue.push(_value[i]);\n }\n }\n\n _self.setValue(newValue);\n } else {\n _self.clear();\n }\n }; // set the selected value(s) of the list\n\n\n this.setValue = function (keys) {\n var i,\n newKeys = [],\n saved = _value.join(' ');\n\n if (!$.isArray(keys)) keys = [keys];\n\n _$list.find('li').removeClass('selected');\n\n keys = array_unique(keys);\n keys.sort(function (a, b) {\n var ta = _typeof(a);\n\n var tb = _typeof(b);\n\n if (ta == tb && ta == \"number\") return a - b;else return String(a) == String(b) ? 0 : String(a) < String(b) ? -1 : 1;\n });\n\n if (_multiple) {\n for (i = 0; i < keys.length; i++) {\n if (keys[i] in _values) {\n _values[keys[i]].addClass('selected');\n\n newKeys.push(keys[i]);\n }\n }\n } else {\n if (keys[0] in _values) {\n _values[keys[0]].addClass('selected');\n\n newKeys.push(keys[0]);\n }\n } // remove unallowed values\n\n\n _value = newKeys;\n\n if (saved != _value.join(' ')) {\n _$selector.trigger('selector:change', _multiple ? keys : keys[0]);\n\n return true;\n }\n\n return false;\n }; // get the title text\n\n\n this.getTitleText = function () {\n var getValueText = function getValueText(key) {\n return key in _values ? _values[key].text() : key;\n };\n\n if (_value.length == 0) {\n return _cron.getText('empty_' + _type) || _cron.getText('empty');\n }\n\n var cron = [getValueText(_value[0])],\n i,\n s = _value[0],\n c = _value[0],\n n = _value.length;\n\n for (i = 1; i < n; i++) {\n if (_value[i] == c + 1) {\n c = _value[i];\n cron[cron.length - 1] = getValueText(s) + '-' + getValueText(c);\n } else {\n s = c = _value[i];\n cron.push(getValueText(c));\n }\n }\n\n return cron.join(',');\n }; // clear list\n\n\n this.clear = function () {\n _values = {};\n\n _self.setValue([]);\n\n _$list.empty();\n }; // add a (key, value) pair\n\n\n this.add = function (key, value) {\n if (!(value + '').match(/^[0-9]+$/)) _hasNumericTexts = false;\n\n if (_numeric_zero_pad && _hasNumericTexts && value < 10) {\n value = '0' + value;\n }\n\n var $item = $('' + value + ' ');\n\n _$list.append($item);\n\n _values[key] = $item;\n $item.click(function () {\n if (_multiple && $(this).hasClass('selected')) {\n _self.removeValue(key);\n } else {\n _self.addValue(key);\n\n if (!_multiple) _self.close();\n }\n });\n }; // expose main jquery object\n\n\n this.$ = _$selector; // constructor\n\n _$block.find('b:eq(0)').after(_$selector).remove();\n\n _$selector.addClass('jqCron-selector-' + _$block.find('.jqCron-selector').length).append(_$title).append(_$list).bind('selector:open', function () {\n if (_hasNumericTexts) {\n var nbcols = 1,\n n = _$list.find('li').length;\n\n if (n > 5 && n <= 16) nbcols = 2;else if (n > 16 && n <= 23) nbcols = 3;else if (n > 23 && n <= 40) nbcols = 4;else if (n > 40) nbcols = 5;\n\n _$list.addClass('cols' + nbcols);\n }\n\n _$list.show();\n }).bind('selector:close', function () {\n _$list.hide();\n }).bind('selector:change', function () {\n _$title.html(_self.getTitleText());\n }).click(function (e) {\n e.stopPropagation();\n }).trigger('selector:change');\n\n $.fn.disableSelection && _$selector.disableSelection(); // only work with jQuery UI\n\n _$title.click(function (e) {\n _self.isOpened() || _cron.isDisabled() ? _self.close() : _self.open();\n });\n\n _self.close();\n\n _self.clear();\n }\n\n this.jqCronSelector = jqCronSelector;\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * Generate unique id for each element.\n * Skip elements which have already an id.\n */\n\n(function ($) {\n var jqUID = 0;\n\n var jqGetUID = function jqGetUID(prefix) {\n var id;\n\n while (1) {\n jqUID++;\n id = (prefix || 'JQUID') + '' + jqUID;\n if (!document.getElementById(id)) return id;\n }\n };\n\n $.fn.uniqueId = function (prefix) {\n return this.each(function () {\n if ($(this).attr('id')) return;\n var id = jqGetUID(prefix);\n $(this).attr('id', id);\n });\n };\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n/**\n * Extends jQuery selectors with new block selector\n */\n\n(function ($) {\n $.extend($.expr[':'], {\n container: function container(a) {\n return (a.tagName + '').toLowerCase() in {\n a: 1,\n abbr: 1,\n acronym: 1,\n address: 1,\n b: 1,\n big: 1,\n blockquote: 1,\n button: 1,\n cite: 1,\n code: 1,\n dd: 1,\n del: 1,\n dfn: 1,\n div: 1,\n dt: 1,\n em: 1,\n fieldset: 1,\n form: 1,\n h1: 1,\n h2: 1,\n h3: 1,\n h4: 1,\n h5: 1,\n h6: 1,\n i: 1,\n ins: 1,\n kbd: 1,\n label: 1,\n li: 1,\n p: 1,\n pre: 1,\n q: 1,\n samp: 1,\n small: 1,\n span: 1,\n strong: 1,\n sub: 1,\n sup: 1,\n td: 1,\n tt: 1\n };\n },\n autoclose: function autoclose(a) {\n return (a.tagName + '').toLowerCase() in {\n area: 1,\n base: 1,\n basefont: 1,\n br: 1,\n col: 1,\n frame: 1,\n hr: 1,\n img: 1,\n input: 1,\n link: 1,\n meta: 1,\n param: 1\n };\n }\n });\n}).call(window, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Nyb24tdWkuanM/NDlmYyJdLCJuYW1lcyI6WyJqcUNyb25EZWZhdWx0U2V0dGluZ3MiLCJ0ZXh0cyIsIm1vbnRoZGF5cyIsImhvdXJzIiwiaG91cl9sYWJlbHMiLCJtaW51dGVzIiwibGFuZyIsImVuYWJsZWRfbWludXRlIiwiZW5hYmxlZF9ob3VyIiwiZW5hYmxlZF9kYXkiLCJlbmFibGVkX3dlZWsiLCJlbmFibGVkX21vbnRoIiwiZW5hYmxlZF95ZWFyIiwibXVsdGlwbGVfZG9tIiwibXVsdGlwbGVfbW9udGgiLCJtdWx0aXBsZV9taW5zIiwibXVsdGlwbGVfZG93IiwibXVsdGlwbGVfdGltZV9ob3VycyIsIm11bHRpcGxlX3RpbWVfbWludXRlcyIsIm51bWVyaWNfemVyb19wYWQiLCJkZWZhdWx0X3BlcmlvZCIsImRlZmF1bHRfdmFsdWUiLCJub19yZXNldF9idXR0b24iLCJkaXNhYmxlZCIsImJpbmRfdG8iLCJiaW5kX21ldGhvZCIsInNldCIsIiRlbGVtZW50IiwidmFsdWUiLCJpcyIsInZhbCIsImRhdGEiLCJnZXQiLCIkIiwiZXh0ZW5kIiwiZHN0Iiwic3JjIiwiaSIsImlzUGxhaW5PYmplY3QiLCJpc0FycmF5Iiwic2xpY2UiLCJ1bmRlZmluZWQiLCJqcUNyb25NZXJnZVNldHRpbmdzIiwib2JqIiwiY2FsbCIsIndpbmRvdyIsImZuIiwianFDcm9uR2V0SW5zdGFuY2UiLCJqcUNyb24iLCJzZXR0aW5ncyIsInNhdmVkX3NldHRpbmdzIiwiZWFjaCIsImNyb24iLCJzYXZlZCIsIiR0aGlzIiwidHJhbnNsYXRpb25zIiwiaXNFbXB0eU9iamVjdCIsImNvbnNvbGUiLCJlcnJvciIsImpxdWVyeV9jb250YWluZXIiLCJqcXVlcnlfZWxlbWVudCIsInVuaXF1ZUlkIiwibmV4dCIsImxlbmd0aCIsInJlbW92ZSIsImluc2VydEFmdGVyIiwiZXJyb3IxIiwicmVwbGFjZSIsInRhZ05hbWUiLCJibHVyIiwic2V0Q3JvbiIsImpxQ3Jvbkluc3RhbmNlcyIsIl9pbml0aWFsaXplZCIsIl9zZWxmIiwiXyRlbHQiLCJfJG9iaiIsIl8kYmxvY2tzIiwiXyRibG9ja1BFUklPRCIsIl8kYmxvY2tET00iLCJfJGJsb2NrTU9OVEgiLCJfJGJsb2NrTUlOUyIsIl8kYmxvY2tET1ciLCJfJGJsb2NrVElNRSIsIl8kY3Jvc3MiLCJfc2VsZWN0b3JzIiwiX3NlbGVjdG9yUGVyaW9kIiwiX3NlbGVjdG9yTWlucyIsIl9zZWxlY3RvclRpbWVIIiwiX3NlbGVjdG9yVGltZU0iLCJfc2VsZWN0b3JEb3ciLCJfc2VsZWN0b3JEb20iLCJfc2VsZWN0b3JNb250aCIsIm5ld1NlbGVjdG9yIiwiJGJsb2NrIiwibXVsdGlwbGUiLCJ0eXBlIiwic2VsZWN0b3IiLCJqcUNyb25TZWxlY3RvciIsImJpbmQiLCJuIiwiY2xvc2VTZWxlY3RvcnMiLCJvIiwiY2xvc2UiLCJib3VuZENoYW5nZWQiLCJzZXRWYWx1ZSIsImdldFZhbHVlIiwidHJpZ2dlciIsImdldENyb24iLCJwdXNoIiwiZGlzYWJsZSIsImFkZENsYXNzIiwiaXNEaXNhYmxlZCIsImVuYWJsZSIsInJlbW92ZUNsYXNzIiwicGVyaW9kIiwiaXRlbXMiLCJnZXRDcm9uVmFsdWUiLCJqb2luIiwic3RyIiwibWFzayIsInNwbGl0IiwiZ2V0VGV4dCIsInNldENyb25WYWx1ZSIsInN1YnN0cmluZyIsImNsZWFyRXJyb3IiLCJlIiwiZ2V0SWQiLCJhdHRyIiwia2V5IiwidGV4dCIsIm1hdGNoIiwiZ2V0SHVtYW5UZXh0IiwiZmluZCIsImdldFNldHRpbmdzIiwibXNnIiwiY2xlYXIiLCJ0cmlnZ2VyQ2hhbmdlIiwiaW5pdCIsImxhYmVsc0xpc3QiLCJsaXN0IiwiYXBwZW5kIiwiaWQiLCJ0ZXN0IiwiY2xpY2siLCJldnQiLCJhZGQiLCJoaWRlIiwic2hvdyIsIl9jcm9uIiwiXyRibG9jayIsIl9tdWx0aXBsZSIsIl90eXBlIiwiXyRsaXN0IiwiXyR0aXRsZSIsIl8kc2VsZWN0b3IiLCJfdmFsdWVzIiwiX3ZhbHVlIiwiX2hhc051bWVyaWNUZXh0cyIsIl9udW1lcmljX3plcm9fcGFkIiwiYXJyYXlfdW5pcXVlIiwibCIsImsiLCJhIiwicyIsImMiLCJ2YWx1ZXMiLCJtIiwib3BlbiIsImlzT3BlbmVkIiwiYWRkVmFsdWUiLCJyZW1vdmVWYWx1ZSIsIm5ld1ZhbHVlIiwia2V5cyIsIm5ld0tleXMiLCJzb3J0IiwiYiIsInRhIiwidGIiLCJTdHJpbmciLCJnZXRUaXRsZVRleHQiLCJnZXRWYWx1ZVRleHQiLCJlbXB0eSIsIiRpdGVtIiwiaGFzQ2xhc3MiLCJhZnRlciIsIm5iY29scyIsImh0bWwiLCJzdG9wUHJvcGFnYXRpb24iLCJkaXNhYmxlU2VsZWN0aW9uIiwianFVSUQiLCJqcUdldFVJRCIsInByZWZpeCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJleHByIiwiY29udGFpbmVyIiwidG9Mb3dlckNhc2UiLCJhYmJyIiwiYWNyb255bSIsImFkZHJlc3MiLCJiaWciLCJibG9ja3F1b3RlIiwiYnV0dG9uIiwiY2l0ZSIsImNvZGUiLCJkZCIsImRlbCIsImRmbiIsImRpdiIsImR0IiwiZW0iLCJmaWVsZHNldCIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJpbnMiLCJrYmQiLCJsYWJlbCIsImxpIiwicCIsInByZSIsInEiLCJzYW1wIiwic21hbGwiLCJzcGFuIiwic3Ryb25nIiwic3ViIiwic3VwIiwidGQiLCJ0dCIsImF1dG9jbG9zZSIsImFyZWEiLCJiYXNlIiwiYmFzZWZvbnQiLCJiciIsImNvbCIsImZyYW1lIiwiaHIiLCJpbWciLCJpbnB1dCIsImxpbmsiLCJtZXRhIiwicGFyYW0iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUNBLElBQUlBLHFCQUFxQixHQUFHO0FBQ3hCQyxPQUFLLEVBQUUsRUFEaUI7QUFFeEJDLFdBQVMsRUFBRSxD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bkNDLFlBQUksRUFBQyxDQWpDOEI7QUFrQ25DQyxhQUFLLEVBQUMsQ0FsQzZCO0FBbUNuQ0MsWUFBSSxFQUFDLENBbkM4QjtBQW9DbkNDLGNBQU0sRUFBQyxDQXBDNEI7QUFxQ25DQyxXQUFHLEVBQUUsQ0FyQzhCO0FBc0NuQ0MsV0FBRyxFQUFDLENBdEMrQjtBQXVDbkNDLFVBQUUsRUFBQyxDQXZDZ0M7QUF3Q25DQyxVQUFFLEVBQUM7QUF4Q2dDLE9BQXZDO0FBMENILEtBNUNpQjtBQTZDbEJDLGFBQVMsRUFBRSxtQkFBU3hFLENBQVQsRUFBWTtBQUNuQixhQUFPLENBQUNBLENBQUMsQ0FBQzlGLE9BQUYsR0FBVSxFQUFYLEVBQWVnSSxXQUFmLE1BQWdDO0FBQ25DdUMsWUFBSSxFQUFDLENBRDhCO0FBRW5DQyxZQUFJLEVBQUMsQ0FGOEI7QUFHbkNDLGdCQUFRLEVBQUMsQ0FIMEI7QUFJbkNDLFVBQUUsRUFBQyxDQUpnQztBQUtuQ0MsV0FBRyxFQUFDLENBTCtCO0FBTW5DQyxhQUFLLEVBQUMsQ0FONkI7QUFPbkNDLFVBQUUsRUFBQyxDQVBnQztBQVFuQ0MsV0FBRyxFQUFDLENBUitCO0FBU25DQyxhQUFLLEVBQUMsQ0FUNkI7QUFVbkNDLFlBQUksRUFBQyxDQVY4QjtBQVduQ0MsWUFBSSxFQUFDLENBWDhCO0FBWW5DQyxhQUFLLEVBQUM7QUFaNkIsT0FBdkM7QUFjSDtBQTVEaUIsR0FBdEI7QUE4REgsQ0EvREQsRUErREcxTSxJQS9ESCxDQStEUUMsTUEvRFIsRUErRGdCWiwrQ0EvRGhCIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL2Nyb24tdWkuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5Jztcbi8qXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQXJuYXBvdSBqcUNyb24gcGFja2FnZS5cbiAqXG4gKiAoYykgQXJuYXVkIEJ1YXRoaWVyIDxhcm5hdWRAYXJuYXBvdS5uZXQ+XG4gKlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICovXG5cbi8qKlxuICogRGVmYXVsdCBzZXR0aW5nc1xuICovXG52YXIganFDcm9uRGVmYXVsdFNldHRpbmdzID0ge1xuICAgIHRleHRzOiB7fSxcbiAgICBtb250aGRheXM6IFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMV0sXG4gICAgaG91cnM6IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjNdLFxuICAgIGhvdXJfbGFiZWxzOiBbXCIwXCIsIFwiMVwiLCBcIjJcIiwgXCIzXCIsIFwiNFwiLCBcIjVcIiwgXCI2XCIsIFwiN1wiLCBcIjhcIiwgXCI5XCIsIFwiMTBcIiwgXCIxMVwiLCBcIjEyXCIsIFwiMTNcIiwgXCIxNFwiLCBcIjE1XCIsIFwiMTZcIiwgXCIxN1wiLCBcIjE4XCIsIFwiMTlcIiwgXCIyMFwiLCBcIjIxXCIsIFwiMjJcIiwgXCIyM1wiXSxcbiAgICBtaW51dGVzOiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5XSxcbiAgICBsYW5nOiAnZW4nLFxuICAgIGVuYWJsZWRfbWludXRlOiBmYWxzZSxcbiAgICBlbmFibGVkX2hvdXI6IHRydWUsXG4gICAgZW5hYmxlZF9kYXk6IHRydWUsXG4gICAgZW5hYmxlZF93ZWVrOiB0cnVlLFxuICAgIGVuYWJsZWRfbW9udGg6IHRydWUsXG4gICAgZW5hYmxlZF95ZWFyOiB0cnVlLFxuICAgIG11bHRpcGxlX2RvbTogZmFsc2UsXG4gICAgbXVsdGlwbGVfbW9udGg6IGZhbHNlLFxuICAgIG11bHRpcGxlX21pbnM6IGZhbHNlLFxuICAgIG11bHRpcGxlX2RvdzogZmFsc2UsXG4gICAgbXVsdGlwbGVfdGltZV9ob3VyczogZmFsc2UsXG4gICAgbXVsdGlwbGVfdGltZV9taW51dGVzOiBmYWxzZSxcbiAgICBudW1lcmljX3plcm9fcGFkOiBmYWxzZSxcbiAgICBkZWZhdWx0X3BlcmlvZDogJ2RheScsXG4gICAgZGVmYXVsdF92YWx1ZTogJycsXG4gICAgbm9fcmVzZXRfYnV0dG9uOiB0cnVlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBiaW5kX3RvOiBudWxsLFxuICAgIGJpbmRfbWV0aG9kOiB7XG4gICAgICAgIHNldDogZnVuY3Rpb24oJGVsZW1lbnQsIHZhbHVlKSB7XG4gICAgICAgICAgICAkZWxlbWVudC5pcygnOmlucHV0JykgPyAkZWxlbWVudC52YWwodmFsdWUpIDogJGVsZW1lbnQuZGF0YSgnanFDcm9uVmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogZnVuY3Rpb24oJGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudC5pcygnOmlucHV0JykgPyAkZWxlbWVudC52YWwoKSA6ICRlbGVtZW50LmRhdGEoJ2pxQ3JvblZhbHVlJyk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vKipcbiAqIEN1c3RvbSBleHRlbmQgb2YganNvbiBmb3IganFDcm9uIHNldHRpbmdzLlxuICogV2UgZG9uJ3QgdXNlIGpRdWVyeS5leHRlbmQgYmVjYXVzZSBzaW1wbGUgZXh0ZW5kIGRvZXMgbm90IGZpdCBvdXIgbmVlZHMsIGFuZCBkZWVwIGV4dGVuZCBoYXMgYSBiYWRcbiAqIGZlYXR1cmUgZm9yIHVzIDogaXQgcmVwbGFjZXMga2V5cyBvZiBcIkFycmF5c1wiIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZSBmdWxsIGFycmF5LlxuICovXG4oZnVuY3Rpb24oJCl7XG4gICAgdmFyIGV4dGVuZCA9IGZ1bmN0aW9uKGRzdCwgc3JjKSB7XG4gICAgICAgIGZvcih2YXIgaSBpbiBzcmMpIHtcbiAgICAgICAgICAgIGlmKCQuaXNQbGFpbk9iamVjdChzcmNbaV0pKSB7XG4gICAgICAgICAgICAgICAgZHN0W2ldID0gZXh0ZW5kKGRzdFtpXSAmJiAkLmlzUGxhaW5PYmplY3QoZHN0W2ldKSA/IGRzdFtpXSA6IHt9LCBzcmNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZigkLmlzQXJyYXkoc3JjW2ldKSkge1xuICAgICAgICAgICAgICAgIGRzdFtpXSA9IHNyY1tpXS5zbGljZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYoc3JjW2ldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBkc3RbaV0gPSBzcmNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRzdDtcbiAgICB9O1xuICAgIHRoaXMuanFDcm9uTWVyZ2VTZXR0aW5ncyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICByZXR1cm4gZXh0ZW5kKGV4dGVuZCh7fSwganFDcm9uRGVmYXVsdFNldHRpbmdzKSwgb2JqIHx8IHt9KTtcbiAgICB9O1xufSkuY2FsbCh3aW5kb3csICQpO1xuXG4vKipcbiAqIFNob3J0Y3V0IHRvIGdldCB0aGUgaW5zdGFuY2Ugb2YganFDcm9uIGluc3RhbmNlIGZyb20gb25lIGpxdWVyeSBvYmplY3RcbiAqL1xuKGZ1bmN0aW9uKCQpe1xuICAgICQuZm4uanFDcm9uR2V0SW5zdGFuY2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSgnanFDcm9uJyk7XG4gICAgfTtcbn0pLmNhbGwod2luZG93LCAkKTtcblxuLyoqXG4gKiBNYWluIHBsdWdpblxuICovXG4oZnVuY3Rpb24oJCl7XG4gICAgJC5mbi5qcUNyb24gPSBmdW5jdGlvbihzZXR0aW5ncykge1xuICAgICAgICB2YXIgc2F2ZWRfc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjcm9uLCBzYXZlZDtcbiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBqcUNyb25NZXJnZVNldHRpbmdzKHNhdmVkX3NldHRpbmdzKTsgLy8gY2xvbmUgc2V0dGluZ3NcbiAgICAgICAgICAgIHZhciB0cmFuc2xhdGlvbnMgPSBzZXR0aW5ncy50ZXh0c1tzZXR0aW5ncy5sYW5nXTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZih0cmFuc2xhdGlvbnMpICE9PSAnb2JqZWN0JyB8fCAkLmlzRW1wdHlPYmplY3QodHJhbnNsYXRpb25zKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ01pc3NpbmcgdHJhbnNsYXRpb25zIGZvciBsYW5ndWFnZSBcIicgKyBzZXR0aW5ncy5sYW5nICsgJ1wiLiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBpbmNsdWRlIGpxQ3Jvbi4nICsgc2V0dGluZ3MubGFuZyArICcuanMgb3IgbWFudWFsbHkgcHJvdmlkZSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ3RoZSBuZWNlc3NhcnkgdHJhbnNsYXRpb25zIHdoZW4gY2FsbGluZyAkLmZuLmpxQ3JvbigpLidcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoIXNldHRpbmdzLmpxdWVyeV9jb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZigkdGhpcy5pcygnOmNvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmpxdWVyeV9lbGVtZW50ID0gJHRoaXMudW5pcXVlSWQoJ2pxQ3JvbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmKCR0aGlzLmlzKCc6YXV0b2Nsb3NlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIGFscmVhZHkgZ2VuZXJhdGVkIGRvbSBpZiBleGlzdHNcbiAgICAgICAgICAgICAgICAgICAgaWYoJHRoaXMubmV4dCgnLmpxQ3JvbicpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCcuanFDcm9uJykucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gZ2VuZXJhdGUgbmV3XG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmpxdWVyeV9lbGVtZW50ID0gJCgnPHNwYW4gY2xhc3M9XCJqcUNyb25cIj48L3NwYW4+JykudW5pcXVlSWQoJ2pxQ3JvbicpLmluc2VydEFmdGVyKCR0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcihzZXR0aW5ncy50ZXh0c1tzZXR0aW5ncy5sYW5nXS5lcnJvcjEucmVwbGFjZSgnJXMnLCB0aGlzLnRhZ05hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYXV0b3NldCBiaW5kX3RvIGlmIGl0IGlzIGFuIGlucHV0XG4gICAgICAgICAgICBpZigkdGhpcy5pcygnOmlucHV0JykpIHtcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5iaW5kX3RvID0gc2V0dGluZ3MuYmluZF90byB8fCAkdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaW5pdCBjcm9uIG9iamVjdFxuICAgICAgICAgICAgaWYoc2V0dGluZ3MuYmluZF90byl7XG4gICAgICAgICAgICAgICAgaWYoc2V0dGluZ3MuYmluZF90by5pcygnOmlucHV0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYXV0byBiaW5kIGZyb20gaW5wdXQgdG8gb2JqZWN0IGlmIGFuIGlucHV0LCB0ZXh0YXJlYSAuLi5cbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuYmluZF90by5ibHVyKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzZXR0aW5ncy5iaW5kX21ldGhvZC5nZXQoc2V0dGluZ3MuYmluZF90byk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5qcUNyb25HZXRJbnN0YW5jZSgpLnNldENyb24odmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2F2ZWQgPSBzZXR0aW5ncy5iaW5kX21ldGhvZC5nZXQoc2V0dGluZ3MuYmluZF90byk7XG4gICAgICAgICAgICAgICAgY3JvbiA9IG5ldyBqcUNyb24oc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgIGNyb24uc2V0Q3JvbihzYXZlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjcm9uID0gbmV3IGpxQ3JvbihzZXR0aW5ncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2pxQ3JvbicsIGNyb24pO1xuICAgICAgICB9KTtcbiAgICB9O1xufSkuY2FsbCh3aW5kb3csICQpO1xuXG4vKipcbiAqIGpxQ3JvbiBjbGFzc1xuICovXG4oZnVuY3Rpb24oJCl7XG4gICAgdmFyIGpxQ3Jvbkluc3RhbmNlcyA9IFtdO1xuXG4gICAgZnVuY3Rpb24ganFDcm9uKHNldHRpbmdzKSB7XG4gICAgICAgIHZhciBfaW5pdGlhbGl6ZWQgID0gZmFsc2U7XG4gICAgICAgIHZhciBfc2VsZiAgICAgICAgID0gdGhpcztcbiAgICAgICAgdmFyIF8kZWx0ICAgICAgICAgPSB0aGlzO1xuICAgICAgICB2YXIgXyRvYmogICAgICAgICA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLWNvbnRhaW5lclwiPjwvc3Bhbj4nKTtcbiAgICAgICAgdmFyIF8kYmxvY2tzICAgICAgPSAkKCc8c3BhbiBjbGFzcz1cImpxQ3Jvbi1ibG9ja3NcIj48L3NwYW4+Jyk7XG4gICAgICAgIHZhciBfJGJsb2NrUEVSSU9EID0gJCgnPHNwYW4gY2xhc3M9XCJqcUNyb24tcGVyaW9kXCI+PC9zcGFuPicpO1xuICAgICAgICB2YXIgXyRibG9ja0RPTSAgICA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLWRvbVwiPjwvc3Bhbj4nKTtcbiAgICAgICAgdmFyIF8kYmxvY2tNT05USCAgPSAkKCc8c3BhbiBjbGFzcz1cImpxQ3Jvbi1tb250aFwiPjwvc3Bhbj4nKTtcbiAgICAgICAgdmFyIF8kYmxvY2tNSU5TICAgPSAkKCc8c3BhbiBjbGFzcz1cImpxQ3Jvbi1taW5zXCI+PC9zcGFuPicpO1xuICAgICAgICB2YXIgXyRibG9ja0RPVyAgICA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLWRvd1wiPjwvc3Bhbj4nKTtcbiAgICAgICAgdmFyIF8kYmxvY2tUSU1FICAgPSAkKCc8c3BhbiBjbGFzcz1cImpxQ3Jvbi10aW1lXCI+PC9zcGFuPicpO1xuICAgICAgICB2YXIgXyRjcm9zcyAgICAgICA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLWNyb3NzXCI+JiMxMDAwODs8L3NwYW4+Jyk7XG4gICAgICAgIHZhciBfc2VsZWN0b3JzICAgID0gW107XG4gICAgICAgIHZhciBfc2VsZWN0b3JQZXJpb2QsIF9zZWxlY3Rvck1pbnMsIF9zZWxlY3RvclRpbWVILCBfc2VsZWN0b3JUaW1lTSwgX3NlbGVjdG9yRG93LCBfc2VsZWN0b3JEb20sIF9zZWxlY3Rvck1vbnRoO1xuXG4gICAgICAgIC8vIGluc3RhbmNpYXRlIGEgbmV3IHNlbGVjdG9yXG4gICAgICAgIGZ1bmN0aW9uIG5ld1NlbGVjdG9yKCRibG9jaywgbXVsdGlwbGUsIHR5cGUpe1xuICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gbmV3IGpxQ3JvblNlbGVjdG9yKF9zZWxmLCAkYmxvY2ssIG11bHRpcGxlLCB0eXBlKTtcbiAgICAgICAgICAgIHNlbGVjdG9yLiQuYmluZCgnc2VsZWN0b3I6b3BlbicsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgLy8gd2UgY2xvc2UgYWxsIG9wZW5lZCBzZWxlY3RvcnMgb2YgYWxsIG90aGVyIGpxQ3JvblxuICAgICAgICAgICAgICAgIGZvcih2YXIgbiA9IGpxQ3Jvbkluc3RhbmNlcy5sZW5ndGg7IG4tLTsgKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoanFDcm9uSW5zdGFuY2VzW25dICE9IF9zZWxmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBqcUNyb25JbnN0YW5jZXNbbl0uY2xvc2VTZWxlY3RvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNsb3NlIGFsbCBvdGhlciBvcGVuZWQgc2VsZWN0b3JzIG9mIHRoaXMganFDcm9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIG8gPSBfc2VsZWN0b3JzLmxlbmd0aDsgby0tOyApe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKF9zZWxlY3RvcnNbb10gIT0gc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yc1tvXS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2VsZWN0b3IuJC5iaW5kKCdzZWxlY3RvcjpjaGFuZ2UnLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIHZhciBib3VuZENoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBkb24ndCBwcm9wYWdhdGUgaWYgbm90IGluaXRpYWxpemVkXG4gICAgICAgICAgICAgICAgaWYoIV9pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIC8vIGJpbmQgZGF0YSBiZXR3ZWVuIHR3byBtaW51dGUgc2VsZWN0b3JzIChvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBtdWx0aXBsZSBzZXR0aW5ncylcbiAgICAgICAgICAgICAgICBpZihzZXR0aW5ncy5tdWx0aXBsZV9taW5zID09IHNldHRpbmdzLm11bHRpcGxlX3RpbWVfbWludXRlcykge1xuICAgICAgICAgICAgICAgICAgICBpZihzZWxlY3RvciA9PSBfc2VsZWN0b3JNaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZENoYW5nZWQgPSBfc2VsZWN0b3JUaW1lTS5zZXRWYWx1ZShfc2VsZWN0b3JNaW5zLmdldFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoc2VsZWN0b3IgPT0gX3NlbGVjdG9yVGltZU0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kQ2hhbmdlZCA9IF9zZWxlY3Rvck1pbnMuc2V0VmFsdWUoX3NlbGVjdG9yVGltZU0uZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gd2UgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgZXZlbnQgdG8gdGhlIG1haW4gb2JqZWN0XG4gICAgICAgICAgICAgICAgYm91bmRDaGFuZ2VkIHx8IF8kb2JqLnRyaWdnZXIoJ2Nyb246Y2hhbmdlJywgX3NlbGYuZ2V0Q3JvbigpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3NlbGVjdG9ycy5wdXNoKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRpc2FibGUgdGhlIHNlbGVjdG9yXG4gICAgICAgIHRoaXMuZGlzYWJsZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBfJG9iai5hZGRDbGFzcygnZGlzYWJsZScpO1xuICAgICAgICAgICAgc2V0dGluZ3MuZGlzYWJsZSA9IHRydWU7XG4gICAgICAgICAgICBfc2VsZi5jbG9zZVNlbGVjdG9ycygpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHJldHVybiBpZiB0aGUgc2VsZWN0b3IgaXMgZGlzYWJsZWRcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3MuZGlzYWJsZSA9PSB0cnVlO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGVuYWJsZSB0aGUgc2VsZWN0b3JcbiAgICAgICAgdGhpcy5lbmFibGUgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgXyRvYmoucmVtb3ZlQ2xhc3MoJ2Rpc2FibGUnKTtcbiAgICAgICAgICAgIHNldHRpbmdzLmRpc2FibGUgPSBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBnZXQgY3JvbiB2YWx1ZVxuICAgICAgICB0aGlzLmdldENyb24gPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIHBlcmlvZCA9IF9zZWxlY3RvclBlcmlvZC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgdmFyIGl0ZW1zID0gWycqJywgJyonLCAnKicsICcqJywgJyonXTtcbiAgICAgICAgICAgIGlmKHBlcmlvZCA9PSAnaG91cicpIHtcbiAgICAgICAgICAgICAgICBpdGVtc1swXSA9IF9zZWxlY3Rvck1pbnMuZ2V0Q3JvblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihwZXJpb2QgPT0gJ2RheScgfHwgcGVyaW9kID09ICd3ZWVrJyB8fCBwZXJpb2QgPT0gJ21vbnRoJyB8fCBwZXJpb2QgPT0gJ3llYXInKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbMF0gPSBfc2VsZWN0b3JUaW1lTS5nZXRDcm9uVmFsdWUoKTtcbiAgICAgICAgICAgICAgICBpdGVtc1sxXSA9IF9zZWxlY3RvclRpbWVILmdldENyb25WYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYocGVyaW9kID09ICdtb250aCcgfHwgcGVyaW9kID09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIGl0ZW1zWzJdID0gX3NlbGVjdG9yRG9tLmdldENyb25WYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYocGVyaW9kID09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgIGl0ZW1zWzNdID0gX3NlbGVjdG9yTW9udGguZ2V0Q3JvblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihwZXJpb2QgPT0gJ3dlZWsnKSB7XG4gICAgICAgICAgICAgICAgaXRlbXNbNF0gPSBfc2VsZWN0b3JEb3cuZ2V0Q3JvblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuam9pbignICcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHNldCBjcm9uIChzdHJpbmcgbGlrZSAqICogKiAqICopXG4gICAgICAgIHRoaXMuc2V0Q3JvbiA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgaWYoIXN0cikgcmV0dXJuO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxzKy9nLCAnICcpLnJlcGxhY2UoL14gKy8sICcnKS5yZXBsYWNlKC8gKyQvLCAnJyk7IC8vIHNhbml0aXplXG4gICAgICAgICAgICAgICAgdmFyIG1hc2sgPSBzdHIucmVwbGFjZSgvW15cXCogXS9nLCAnLScpLnJlcGxhY2UoLy0rL2csICctJykucmVwbGFjZSgvICsvZywgJycpO1xuICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IHN0ci5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggIT0gNSkgX3NlbGYuZXJyb3IoX3NlbGYuZ2V0VGV4dCgnZXJyb3IyJykpO1xuICAgICAgICAgICAgICAgIGlmKG1hc2sgPT0gJyoqKioqJykge1x0XHRcdFx0XHRcdC8vIDEgcG9zc2liaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yUGVyaW9kLnNldFZhbHVlKCdtaW51dGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZihtYXNrID09ICctKioqKicpIHtcdFx0XHRcdFx0Ly8gMSBwb3NzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JQZXJpb2Quc2V0VmFsdWUoJ2hvdXInKTtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yTWlucy5zZXRDcm9uVmFsdWUoaXRlbXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JUaW1lTS5zZXRDcm9uVmFsdWUoaXRlbXNbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmKG1hc2suc3Vic3RyaW5nKDIsIG1hc2subGVuZ3RoKSA9PSAnKioqJykge1x0XHRcdC8vIDQgcG9zc2liaWxpdGllc1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JQZXJpb2Quc2V0VmFsdWUoJ2RheScpO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JNaW5zLnNldENyb25WYWx1ZShpdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclRpbWVNLnNldENyb25WYWx1ZShpdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclRpbWVILnNldENyb25WYWx1ZShpdGVtc1sxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYobWFzay5zdWJzdHJpbmcoMiwgbWFzay5sZW5ndGgpID09ICctKionKSB7XHRcdFx0Ly8gNCBwb3NzaWJpbGl0aWVzXG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclBlcmlvZC5zZXRWYWx1ZSgnbW9udGgnKTtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yTWlucy5zZXRDcm9uVmFsdWUoaXRlbXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JUaW1lTS5zZXRDcm9uVmFsdWUoaXRlbXNbMF0pO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JUaW1lSC5zZXRDcm9uVmFsdWUoaXRlbXNbMV0pO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JEb20uc2V0Q3JvblZhbHVlKGl0ZW1zWzJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZihtYXNrLnN1YnN0cmluZygyLCBtYXNrLmxlbmd0aCkgPT0gJyoqLScpIHtcdFx0XHQvLyA0IHBvc3NpYmlsaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yUGVyaW9kLnNldFZhbHVlKCd3ZWVrJyk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3Rvck1pbnMuc2V0Q3JvblZhbHVlKGl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yVGltZU0uc2V0Q3JvblZhbHVlKGl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yVGltZUguc2V0Q3JvblZhbHVlKGl0ZW1zWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGVjdG9yRG93LnNldENyb25WYWx1ZShpdGVtc1s0XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hc2suc3Vic3RyaW5nKDMsIG1hc2subGVuZ3RoKSA9PSAnLSonKSB7XHRcdFx0Ly8gOCBwb3NzaWJpbGl0aWVzXG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclBlcmlvZC5zZXRWYWx1ZSgneWVhcicpO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JNaW5zLnNldENyb25WYWx1ZShpdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclRpbWVNLnNldENyb25WYWx1ZShpdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvclRpbWVILnNldENyb25WYWx1ZShpdGVtc1sxXSk7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvckRvbS5zZXRDcm9uVmFsdWUoaXRlbXNbMl0pO1xuICAgICAgICAgICAgICAgICAgICBfc2VsZWN0b3JNb250aC5zZXRDcm9uVmFsdWUoaXRlbXNbM10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuZXJyb3IoX3NlbGYuZ2V0VGV4dCgnZXJyb3I0JykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfc2VsZi5jbGVhckVycm9yKCk7XG4gICAgICAgICAgICB9IGNhdGNoKGUpIHt9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY2xvc2UgYWxsIGNoaWxkIHNlbGVjdG9yc1xuICAgICAgICB0aGlzLmNsb3NlU2VsZWN0b3JzID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGZvcih2YXIgbiA9IF9zZWxlY3RvcnMubGVuZ3RoOyBuLS07ICl7XG4gICAgICAgICAgICAgICAgX3NlbGVjdG9yc1tuXS5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGdldCB0aGUgbWFpbiBlbGVtZW50IGlkXG4gICAgICAgIHRoaXMuZ2V0SWQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgcmV0dXJuIF8kZWx0LmF0dHIoJ2lkJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBnZXQgdGhlIHRyYW5zbGF0ZWQgdGV4dFxuICAgICAgICB0aGlzLmdldFRleHQgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0ID0gc2V0dGluZ3MudGV4dHNbc2V0dGluZ3MubGFuZ11ba2V5XSB8fCBudWxsO1xuICAgICAgICAgICAgaWYodHlwZW9mKHRleHQpID09IFwic3RyaW5nXCIgJiYgdGV4dC5tYXRjaCgnPGInKSl7XG4gICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgvKDxiICpcXC8+KS9naSwgJzwvc3Bhbj48YiAvPjxzcGFuIGNsYXNzPVwianFDcm9uLXRleHRcIj4nKTtcbiAgICAgICAgICAgICAgICB0ZXh0ID0gJzxzcGFuIGNsYXNzPVwianFDcm9uLXRleHRcIj4nICsgdGV4dCArICc8L3NwYW4+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGdldCB0aGUgaHVtYW4gcmVhZGFibGUgdGV4dFxuICAgICAgICB0aGlzLmdldEh1bWFuVGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRleHRzPVtdO1xuICAgICAgICAgICAgXyRvYmpcbiAgICAgICAgICAgICAgICAuZmluZCgnPiBzcGFuID4gc3Bhbjp2aXNpYmxlJylcbiAgICAgICAgICAgICAgICAuZmluZCgnLmpxQ3Jvbi10ZXh0LCAuanFDcm9uLXNlbGVjdG9yID4gc3BhbicpXG4gICAgICAgICAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gJCh0aGlzKS50ZXh0KCkucmVwbGFjZSgvXFxzKyQvZywgJycpLnJlcGxhY2UoL15cXHMrL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCAmJiB0ZXh0cy5wdXNoKHRleHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRleHRzLmpvaW4oJyAnKS5yZXBsYWNlKC9cXHM6XFxzL2csICc6Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBnZXQgc2V0dGluZ3NcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5ncyA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICByZXR1cm4gc2V0dGluZ3M7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gZGlzcGxheSBhbiBlcnJvclxuICAgICAgICB0aGlzLmVycm9yID0gZnVuY3Rpb24obXNnKSB7XG4gICAgICAgICAgICBjb25zb2xlICYmIGNvbnNvbGUuZXJyb3IoJ1tqcUNyb24gRXJyb3JdICcgKyBtc2cpO1xuICAgICAgICAgICAgXyRvYmouYWRkQ2xhc3MoJ2pxQ3Jvbi1lcnJvcicpLmF0dHIoJ3RpdGxlJywgbXNnKTtcbiAgICAgICAgICAgIHRocm93IG1zZztcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBjbGVhciBlcnJvclxuICAgICAgICB0aGlzLmNsZWFyRXJyb3IgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgXyRvYmouYXR0cigndGl0bGUnLCAnJykucmVtb3ZlQ2xhc3MoJ2pxQ3Jvbi1lcnJvcicpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGNsZWFyXG4gICAgICAgIHRoaXMuY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIF9zZWxlY3RvckRvbS5zZXRWYWx1ZShbXSk7XG4gICAgICAgICAgICBfc2VsZWN0b3JEb3cuc2V0VmFsdWUoW10pO1xuICAgICAgICAgICAgX3NlbGVjdG9yTWlucy5zZXRWYWx1ZShbXSk7XG4gICAgICAgICAgICBfc2VsZWN0b3JNb250aC5zZXRWYWx1ZShbXSk7XG4gICAgICAgICAgICBfc2VsZWN0b3JUaW1lSC5zZXRWYWx1ZShbXSk7XG4gICAgICAgICAgICBfc2VsZWN0b3JUaW1lTS5zZXRWYWx1ZShbXSk7XG4gICAgICAgICAgICBfc2VsZi50cmlnZ2VyQ2hhbmdlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaW5pdCAoY2FsbGVkIGluIGNvbnN0cnVjdG9yKVxuICAgICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIG4saSxsYWJlbHNMaXN0LGxpc3Q7XG4gICAgICAgICAgICBpZihfaW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgICAgICAgICAgc2V0dGluZ3MgPSBqcUNyb25NZXJnZVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICAgICAgICAgIHNldHRpbmdzLmpxdWVyeV9lbGVtZW50IHx8IF9zZWxmLmVycm9yKF9zZWxmLmdldFRleHQoJ2Vycm9yMycpKTtcbiAgICAgICAgICAgIF8kZWx0ID0gc2V0dGluZ3MuanF1ZXJ5X2VsZW1lbnQ7XG4gICAgICAgICAgICBfJGVsdC5hcHBlbmQoXyRvYmopO1xuICAgICAgICAgICAgXyRvYmouZGF0YSgnaWQnLCBzZXR0aW5ncy5pZCk7XG4gICAgICAgICAgICBfJG9iai5kYXRhKCdqcUNyb24nLCBfc2VsZik7XG4gICAgICAgICAgICBfJG9iai5hcHBlbmQoXyRibG9ja3MpO1xuICAgICAgICAgICAgc2V0dGluZ3Mubm9fcmVzZXRfYnV0dG9uIHx8IF8kb2JqLmFwcGVuZChfJGNyb3NzKTtcbiAgICAgICAgICAgICghc2V0dGluZ3MuZGlzYWJsZSkgfHwgXyRvYmouYWRkQ2xhc3MoJ2Rpc2FibGUnKTtcbiAgICAgICAgICAgIF8kYmxvY2tzLmFwcGVuZChfJGJsb2NrUEVSSU9EKTtcblxuICAgICAgICAgICAgaWYgKCAvXihrbykkL2kudGVzdChzZXR0aW5ncy5sYW5nKSApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXyRibG9ja3MuYXBwZW5kKF8kYmxvY2tNT05USCwgXyRibG9ja0RPTSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXyRibG9ja3MuYXBwZW5kKF8kYmxvY2tET00sIF8kYmxvY2tNT05USCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8kYmxvY2tzLmFwcGVuZChfJGJsb2NrTUlOUyk7XG4gICAgICAgICAgICBfJGJsb2Nrcy5hcHBlbmQoXyRibG9ja0RPVyk7XG4gICAgICAgICAgICBfJGJsb2Nrcy5hcHBlbmQoXyRibG9ja1RJTUUpO1xuXG4gICAgICAgICAgICAvLyB2YXJpb3VzIGJpbmRpbmdcbiAgICAgICAgICAgIF8kY3Jvc3MuY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBfc2VsZi5pc0Rpc2FibGVkKCkgfHwgX3NlbGYuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBiaW5kaW5nIGZyb20gY3JvbiB0byB0YXJnZXRcbiAgICAgICAgICAgIF8kb2JqLmJpbmQoJ2Nyb246Y2hhbmdlJywgZnVuY3Rpb24oZXZ0LCB2YWx1ZSl7XG4gICAgICAgICAgICAgICAgaWYoIXNldHRpbmdzLmJpbmRfdG8pIHJldHVybjtcbiAgICAgICAgICAgICAgICBzZXR0aW5ncy5iaW5kX21ldGhvZC5zZXQgJiYgc2V0dGluZ3MuYmluZF9tZXRob2Quc2V0KHNldHRpbmdzLmJpbmRfdG8sIHZhbHVlKTtcbiAgICAgICAgICAgICAgICBfc2VsZi5jbGVhckVycm9yKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gUEVSSU9EXG4gICAgICAgICAgICBfJGJsb2NrUEVSSU9ELmFwcGVuZChfc2VsZi5nZXRUZXh0KCd0ZXh0X3BlcmlvZCcpKTtcbiAgICAgICAgICAgIF9zZWxlY3RvclBlcmlvZCA9IG5ld1NlbGVjdG9yKF8kYmxvY2tQRVJJT0QsIGZhbHNlLCAncGVyaW9kJyk7XG4gICAgICAgICAgICBzZXR0aW5ncy5lbmFibGVkX21pbnV0ZSAmJiBfc2VsZWN0b3JQZXJpb2QuYWRkKCdtaW51dGUnLCBfc2VsZi5nZXRUZXh0KCduYW1lX21pbnV0ZScpKTtcbiAgICAgICAgICAgIHNldHRpbmdzLmVuYWJsZWRfaG91ciAgICYmIF9zZWxlY3RvclBlcmlvZC5hZGQoJ2hvdXInLCAgIF9zZWxmLmdldFRleHQoJ25hbWVfaG91cicpKTtcbiAgICAgICAgICAgIHNldHRpbmdzLmVuYWJsZWRfZGF5ICAgICYmIF9zZWxlY3RvclBlcmlvZC5hZGQoJ2RheScsICAgIF9zZWxmLmdldFRleHQoJ25hbWVfZGF5JykpO1xuICAgICAgICAgICAgc2V0dGluZ3MuZW5hYmxlZF93ZWVrICAgJiYgX3NlbGVjdG9yUGVyaW9kLmFkZCgnd2VlaycsICAgX3NlbGYuZ2V0VGV4dCgnbmFtZV93ZWVrJykpO1xuICAgICAgICAgICAgc2V0dGluZ3MuZW5hYmxlZF9tb250aCAgJiYgX3NlbGVjdG9yUGVyaW9kLmFkZCgnbW9udGgnLCAgX3NlbGYuZ2V0VGV4dCgnbmFtZV9tb250aCcpKTtcbiAgICAgICAgICAgIHNldHRpbmdzLmVuYWJsZWRfeWVhciAgICYmIF9zZWxlY3RvclBlcmlvZC5hZGQoJ3llYXInLCAgIF9zZWxmLmdldFRleHQoJ25hbWVfeWVhcicpKTtcbiAgICAgICAgICAgIF9zZWxlY3RvclBlcmlvZC4kLmJpbmQoJ3NlbGVjdG9yOmNoYW5nZScsIGZ1bmN0aW9uKGUsIHZhbHVlKXtcbiAgICAgICAgICAgICAgICBfJGJsb2NrRE9NLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBfJGJsb2NrTU9OVEguaGlkZSgpO1xuICAgICAgICAgICAgICAgIF8kYmxvY2tNSU5TLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBfJGJsb2NrRE9XLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBfJGJsb2NrVElNRS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgaWYodmFsdWUgPT0gJ2hvdXInKSB7XG4gICAgICAgICAgICAgICAgICAgIF8kYmxvY2tNSU5TLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZih2YWx1ZSA9PSAnZGF5Jykge1xuICAgICAgICAgICAgICAgICAgICBfJGJsb2NrVElNRS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYodmFsdWUgPT0gJ3dlZWsnKSB7XG4gICAgICAgICAgICAgICAgICAgIF8kYmxvY2tET1cuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICBfJGJsb2NrVElNRS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYodmFsdWUgPT0gJ21vbnRoJykge1xuICAgICAgICAgICAgICAgICAgICBfJGJsb2NrRE9NLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgXyRibG9ja1RJTUUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmKHZhbHVlID09ICd5ZWFyJykge1xuICAgICAgICAgICAgICAgICAgICBfJGJsb2NrRE9NLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgXyRibG9ja01PTlRILnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgXyRibG9ja1RJTUUuc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3NlbGVjdG9yUGVyaW9kLnNldFZhbHVlKHNldHRpbmdzLmRlZmF1bHRfcGVyaW9kKTtcblxuICAgICAgICAgICAgLy8gTUlOUyAgKG1pbnV0ZXMpXG4gICAgICAgICAgICBfJGJsb2NrTUlOUy5hcHBlbmQoX3NlbGYuZ2V0VGV4dCgndGV4dF9taW5zJykpO1xuICAgICAgICAgICAgX3NlbGVjdG9yTWlucyA9IG5ld1NlbGVjdG9yKF8kYmxvY2tNSU5TLCBzZXR0aW5ncy5tdWx0aXBsZV9taW5zLCAnbWludXRlcycpO1xuICAgICAgICAgICAgZm9yKGk9MCwgbGlzdD1zZXR0aW5ncy5taW51dGVzOyBpPGxpc3QubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgICAgIF9zZWxlY3Rvck1pbnMuYWRkKGxpc3RbaV0sIGxpc3RbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUSU1FICAoaG91cjptaW4pXG4gICAgICAgICAgICBfJGJsb2NrVElNRS5hcHBlbmQoX3NlbGYuZ2V0VGV4dCgndGV4dF90aW1lJykpO1xuICAgICAgICAgICAgX3NlbGVjdG9yVGltZUggPSBuZXdTZWxlY3RvcihfJGJsb2NrVElNRSwgc2V0dGluZ3MubXVsdGlwbGVfdGltZV9ob3VycywgJ3RpbWVfaG91cnMnKTtcbiAgICAgICAgICAgIGZvcihpPTAsIGxpc3Q9c2V0dGluZ3MuaG91cnMsIGxhYmVsc0xpc3Q9c2V0dGluZ3MuaG91cl9sYWJlbHM7IGk8bGlzdC5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgX3NlbGVjdG9yVGltZUguYWRkKGxpc3RbaV0sIGxhYmVsc0xpc3RbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3NlbGVjdG9yVGltZU0gPSBuZXdTZWxlY3RvcihfJGJsb2NrVElNRSwgc2V0dGluZ3MubXVsdGlwbGVfdGltZV9taW51dGVzLCAndGltZV9taW51dGVzJyk7XG4gICAgICAgICAgICBmb3IoaT0wLCBsaXN0PXNldHRpbmdzLm1pbnV0ZXM7IGk8bGlzdC5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgX3NlbGVjdG9yVGltZU0uYWRkKGxpc3RbaV0sIGxpc3RbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBET1cgIChkYXkgb2Ygd2VlaylcbiAgICAgICAgICAgIF8kYmxvY2tET1cuYXBwZW5kKF9zZWxmLmdldFRleHQoJ3RleHRfZG93JykpO1xuICAgICAgICAgICAgX3NlbGVjdG9yRG93ID0gbmV3U2VsZWN0b3IoXyRibG9ja0RPVywgc2V0dGluZ3MubXVsdGlwbGVfZG93LCAnZGF5X29mX3dlZWsnKTtcbiAgICAgICAgICAgIGZvcihpPTAsIGxpc3Q9X3NlbGYuZ2V0VGV4dCgnd2Vla2RheXMnKTsgaTxsaXN0Lmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICBfc2VsZWN0b3JEb3cuYWRkKGkrMSwgbGlzdFtpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERPTSAgKGRheSBvZiBtb250aClcbiAgICAgICAgICAgIF8kYmxvY2tET00uYXBwZW5kKF9zZWxmLmdldFRleHQoJ3RleHRfZG9tJykpO1xuICAgICAgICAgICAgX3NlbGVjdG9yRG9tID0gbmV3U2VsZWN0b3IoXyRibG9ja0RPTSwgc2V0dGluZ3MubXVsdGlwbGVfZG9tLCAnZGF5X29mX21vbnRoJyk7XG4gICAgICAgICAgICBmb3IoaT0wLCBsaXN0PXNldHRpbmdzLm1vbnRoZGF5czsgaTxsaXN0Lmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgICAgICBfc2VsZWN0b3JEb20uYWRkKGxpc3RbaV0sIGxpc3RbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBNT05USCAgKGRheSBvZiB3ZWVrKVxuICAgICAgICAgICAgXyRibG9ja01PTlRILmFwcGVuZChfc2VsZi5nZXRUZXh0KCd0ZXh0X21vbnRoJykpO1xuICAgICAgICAgICAgX3NlbGVjdG9yTW9udGggPSBuZXdTZWxlY3RvcihfJGJsb2NrTU9OVEgsIHNldHRpbmdzLm11bHRpcGxlX21vbnRoLCAnbW9udGgnKTtcbiAgICAgICAgICAgIGZvcihpPTAsIGxpc3Q9X3NlbGYuZ2V0VGV4dCgnbW9udGhzJyk7IGk8bGlzdC5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgX3NlbGVjdG9yTW9udGguYWRkKGkrMSwgbGlzdFtpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNsb3NlIGFsbCBzZWxlY3RvcnMgd2hlbiB3ZSBjbGljayBpbiBib2R5XG4gICAgICAgICAgICAkKCdib2R5JykuY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICB2YXIgaSwgbiA9IF9zZWxlY3RvcnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IG47IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIF9zZWxlY3RvcnNbaV0uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF9pbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIGlmKHNldHRpbmdzLmRlZmF1bHRfdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfc2VsZi5zZXRDcm9uKHNldHRpbmdzLmRlZmF1bHRfdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHRyaWdnZXIgYSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgdGhpcy50cmlnZ2VyQ2hhbmdlID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIF8kb2JqLnRyaWdnZXIoJ2Nyb246Y2hhbmdlJywgX3NlbGYuZ2V0Q3JvbigpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBzdG9yZSBpbnN0YW5jZSBpbiBhcnJheVxuICAgICAgICBqcUNyb25JbnN0YW5jZXMucHVzaCh0aGlzKTtcblxuICAgICAgICAvLyBleHBvc2UgbWFpbiBqcXVlcnkgb2JqZWN0XG4gICAgICAgIHRoaXMuJCA9IF8kb2JqO1xuXG4gICAgICAgIC8vIGluaXRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgX3NlbGYudHJpZ2dlckNoYW5nZSgpO1xuICAgICAgICB9IGNhdGNoKGUpe31cbiAgICB9XG4gICAgdGhpcy5qcUNyb24gPSBqcUNyb247XG59KS5jYWxsKHdpbmRvdywgJCk7XG5cblxuLyoqXG4gKiBqcUNyb25TZWxlY3RvciBjbGFzc1xuICovXG4oZnVuY3Rpb24oJCl7XG4gICAgZnVuY3Rpb24ganFDcm9uU2VsZWN0b3IoX2Nyb24sIF8kYmxvY2ssIF9tdWx0aXBsZSwgX3R5cGUpe1xuICAgICAgICB2YXIgX3NlbGYgICAgICA9IHRoaXM7XG4gICAgICAgIHZhciBfJGxpc3QgICAgID0gJCgnPHVsIGNsYXNzPVwianFDcm9uLXNlbGVjdG9yLWxpc3RcIj48L3VsPicpO1xuICAgICAgICB2YXIgXyR0aXRsZSAgICA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLXNlbGVjdG9yLXRpdGxlXCI+PC9zcGFuPicpO1xuICAgICAgICB2YXIgXyRzZWxlY3RvciA9ICQoJzxzcGFuIGNsYXNzPVwianFDcm9uLXNlbGVjdG9yXCI+PC9zcGFuPicpO1xuICAgICAgICB2YXIgX3ZhbHVlcyAgICA9IHt9O1xuICAgICAgICB2YXIgX3ZhbHVlICAgICA9IFtdO1xuICAgICAgICB2YXIgX2hhc051bWVyaWNUZXh0cyA9IHRydWU7XG4gICAgICAgIHZhciBfbnVtZXJpY196ZXJvX3BhZCA9IF9jcm9uLmdldFNldHRpbmdzKCkubnVtZXJpY196ZXJvX3BhZDtcblxuICAgICAgICAvLyByZXR1cm4gYW4gYXJyYXkgd2l0aG91dCBkb3VibG9uXG4gICAgICAgIGZ1bmN0aW9uIGFycmF5X3VuaXF1ZShsKXtcbiAgICAgICAgICAgIHZhciBpPTAsbj1sLmxlbmd0aCxrPXt9LGE9W107XG4gICAgICAgICAgICB3aGlsZShpPG4pIHtcbiAgICAgICAgICAgICAgICBrW2xbaV1dIHx8IChrW2xbaV1dID0gMSAmJiBhLnB1c2gobFtpXSkpO1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZ2V0IHRoZSB2YWx1ZSAoYW4gYXJyYXkgaWYgbXVsdGlwbGUsIGVsc2UgYSBzaW5nbGUgdmFsdWUpXG4gICAgICAgIHRoaXMuZ2V0VmFsdWUgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgcmV0dXJuIF9tdWx0aXBsZSA/IF92YWx1ZSA6IF92YWx1ZVswXTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBnZXQgYSBjb3JyZWN0IHN0cmluZyBmb3IgY3JvblxuICAgICAgICB0aGlzLmdldENyb25WYWx1ZSA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpZihfdmFsdWUubGVuZ3RoID09IDApIHJldHVybiAnKic7XG4gICAgICAgICAgICB2YXIgY3JvbiA9IFtfdmFsdWVbMF1dLCBpLCBzID0gX3ZhbHVlWzBdLCBjID0gX3ZhbHVlWzBdLCBuID0gX3ZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIGZvcihpPTE7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYoX3ZhbHVlW2ldID09IGMrMSkge1xuICAgICAgICAgICAgICAgICAgICBjID0gX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICAgICAgICBjcm9uW2Nyb24ubGVuZ3RoLTFdID0gcysnLScrYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMgPSBjID0gX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICAgICAgICBjcm9uLnB1c2goYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNyb24uam9pbignLCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIHNldCB0aGUgY3JvbiB2YWx1ZVxuICAgICAgICB0aGlzLnNldENyb25WYWx1ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IFtdLCBtICxpLCBuO1xuICAgICAgICAgICAgaWYoc3RyICE9PSAnKicpIHtcbiAgICAgICAgICAgICAgICB3aGlsZShzdHIgIT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGVzdCBcIiovblwiIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgbSA9IHN0ci5tYXRjaCgvXlxcKlxcLyhbMC05XSspLD8vKTtcbiAgICAgICAgICAgICAgICAgICAgaWYobSAmJiBtLmxlbmd0aCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPD01OTsgaSs9KG1bMV18MCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG1bMF0sICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgXCJhLWIvblwiIGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICAgICAgbSA9IHN0ci5tYXRjaCgvXihbMC05XSspLShbMC05XSspXFwvKFswLTldKyksPy8pO1xuICAgICAgICAgICAgICAgICAgICBpZihtICYmIG0ubGVuZ3RoID09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpPShtWzFdfDApOyBpPD0obVsyXXwwKTsgaSs9KG1bM118MCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG1bMF0sICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgXCJhLWJcIiBleHByZXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIG0gPSBzdHIubWF0Y2goL14oWzAtOV0rKS0oWzAtOV0rKSw/Lyk7XG4gICAgICAgICAgICAgICAgICAgIGlmKG0gJiYgbS5sZW5ndGggPT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGk9KG1bMV18MCk7IGk8PShtWzJdfDApOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG1bMF0sICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHRlc3QgXCJjXCIgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICBtID0gc3RyLm1hdGNoKC9eKFswLTldKyksPy8pO1xuICAgICAgICAgICAgICAgICAgICBpZihtICYmIG0ubGVuZ3RoID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKG1bMV18MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShtWzBdLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgZ29lcyB3cm9uZyBpbiB0aGUgZXhwcmVzc2lvblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9zZWxmLnNldFZhbHVlKHZhbHVlcyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY2xvc2UgdGhlIHNlbGVjdG9yXG4gICAgICAgIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpe1xuICAgICAgICAgICAgXyRzZWxlY3Rvci50cmlnZ2VyKCdzZWxlY3RvcjpjbG9zZScpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIG9wZW4gdGhlIHNlbGVjdG9yXG4gICAgICAgIHRoaXMub3BlbiA9IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBfJHNlbGVjdG9yLnRyaWdnZXIoJ3NlbGVjdG9yOm9wZW4nKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB3aGV0aGVyIHRoZSBzZWxlY3RvciBpcyBvcGVuXG4gICAgICAgIHRoaXMuaXNPcGVuZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBfJGxpc3QuaXMoJzp2aXNpYmxlJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gYWRkIGEgc2VsZWN0ZWQgdmFsdWUgdG8gdGhlIGxpc3RcbiAgICAgICAgdGhpcy5hZGRWYWx1ZSA9IGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlcyA9IF9tdWx0aXBsZSA/IF92YWx1ZS5zbGljZSgwKSA6IFtdOyAvLyBjbG9uZSBhcnJheVxuICAgICAgICAgICAgdmFsdWVzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIF9zZWxmLnNldFZhbHVlKHZhbHVlcyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gcmVtb3ZlIGEgc2VsZWN0ZWQgdmFsdWUgZnJvbSB0aGUgbGlzdFxuICAgICAgICB0aGlzLnJlbW92ZVZhbHVlID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICBpZihfbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSwgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPF92YWx1ZS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIGlmKGtleSAhPSBbX3ZhbHVlW2ldXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUucHVzaChfdmFsdWVbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF9zZWxmLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF9zZWxmLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gc2V0IHRoZSBzZWxlY3RlZCB2YWx1ZShzKSBvZiB0aGUgbGlzdFxuICAgICAgICB0aGlzLnNldFZhbHVlID0gZnVuY3Rpb24oa2V5cyl7XG4gICAgICAgICAgICB2YXIgaSwgbmV3S2V5cyA9IFtdLCBzYXZlZCA9IF92YWx1ZS5qb2luKCcgJyk7XG4gICAgICAgICAgICBpZighJC5pc0FycmF5KGtleXMpKSBrZXlzID0gW2tleXNdO1xuICAgICAgICAgICAgXyRsaXN0LmZpbmQoJ2xpJykucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7XG4gICAgICAgICAgICBrZXlzID0gYXJyYXlfdW5pcXVlKGtleXMpO1xuICAgICAgICAgICAga2V5cy5zb3J0KGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgICAgICAgICAgIHZhciB0YSA9IHR5cGVvZihhKTtcbiAgICAgICAgICAgICAgICB2YXIgdGIgPSB0eXBlb2YoYik7XG4gICAgICAgICAgICAgICAgaWYodGE9PXRiICYmIHRhPT1cIm51bWJlclwiKSByZXR1cm4gYS1iO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFN0cmluZyhhKSA9PSBTdHJpbmcoYikgPyAwIDogKFN0cmluZyhhKSA8IFN0cmluZyhiKSA/IC0xIDogMSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmKF9tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGZvcihpPTA7IGk8a2V5cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIGlmKGtleXNbaV0gaW4gX3ZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbHVlc1trZXlzW2ldXS5hZGRDbGFzcygnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0tleXMucHVzaChrZXlzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKGtleXNbMF0gaW4gX3ZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICBfdmFsdWVzW2tleXNbMF1dLmFkZENsYXNzKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgICAgICAgICBuZXdLZXlzLnB1c2goa2V5c1swXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmVtb3ZlIHVuYWxsb3dlZCB2YWx1ZXNcbiAgICAgICAgICAgIF92YWx1ZSA9IG5ld0tleXM7XG4gICAgICAgICAgICBpZihzYXZlZCAhPSBfdmFsdWUuam9pbignICcpKSB7XG4gICAgICAgICAgICAgICAgXyRzZWxlY3Rvci50cmlnZ2VyKCdzZWxlY3RvcjpjaGFuZ2UnLCBfbXVsdGlwbGUgPyBrZXlzIDoga2V5c1swXSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gZ2V0IHRoZSB0aXRsZSB0ZXh0XG4gICAgICAgIHRoaXMuZ2V0VGl0bGVUZXh0ID0gZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciBnZXRWYWx1ZVRleHQgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGtleSBpbiBfdmFsdWVzKSA/IF92YWx1ZXNba2V5XS50ZXh0KCkgOiBrZXk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZihfdmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2Nyb24uZ2V0VGV4dCgnZW1wdHlfJyArIF90eXBlKSB8fCBfY3Jvbi5nZXRUZXh0KCdlbXB0eScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNyb24gPSBbZ2V0VmFsdWVUZXh0KF92YWx1ZVswXSldLCBpLCBzID0gX3ZhbHVlWzBdLCBjID0gX3ZhbHVlWzBdLCBuID0gX3ZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIGZvcihpPTE7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYoX3ZhbHVlW2ldID09IGMrMSkge1xuICAgICAgICAgICAgICAgICAgICBjID0gX3ZhbHVlW2ldO1xuICAgICAgICAgICAgICAgICAgICBjcm9uW2Nyb24ubGVuZ3RoLTFdID0gZ2V0VmFsdWVUZXh0KHMpKyctJytnZXRWYWx1ZVRleHQoYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzID0gYyA9IF92YWx1ZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgY3Jvbi5wdXNoKGdldFZhbHVlVGV4dChjKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNyb24uam9pbignLCcpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGNsZWFyIGxpc3RcbiAgICAgICAgdGhpcy5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgX3ZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgX3NlbGYuc2V0VmFsdWUoW10pO1xuICAgICAgICAgICAgXyRsaXN0LmVtcHR5KCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gYWRkIGEgKGtleSwgdmFsdWUpIHBhaXJcbiAgICAgICAgdGhpcy5hZGQgPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICBpZighKHZhbHVlKycnKS5tYXRjaCgvXlswLTldKyQvKSkgX2hhc051bWVyaWNUZXh0cyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoX251bWVyaWNfemVyb19wYWQgJiYgX2hhc051bWVyaWNUZXh0cyAmJiB2YWx1ZSA8IDEwKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSAnMCcrdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgJGl0ZW0gPSAkKCc8bGk+JyArIHZhbHVlICsgJzwvbGk+Jyk7XG4gICAgICAgICAgICBfJGxpc3QuYXBwZW5kKCRpdGVtKTtcbiAgICAgICAgICAgIF92YWx1ZXNba2V5XSA9ICRpdGVtO1xuICAgICAgICAgICAgJGl0ZW0uY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBpZihfbXVsdGlwbGUgJiYgJCh0aGlzKS5oYXNDbGFzcygnc2VsZWN0ZWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBfc2VsZi5yZW1vdmVWYWx1ZShrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuYWRkVmFsdWUoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYoIV9tdWx0aXBsZSkgX3NlbGYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBleHBvc2UgbWFpbiBqcXVlcnkgb2JqZWN0XG4gICAgICAgIHRoaXMuJCA9IF8kc2VsZWN0b3I7XG5cbiAgICAgICAgLy8gY29uc3RydWN0b3JcbiAgICAgICAgXyRibG9jay5maW5kKCdiOmVxKDApJykuYWZ0ZXIoXyRzZWxlY3RvcikucmVtb3ZlKCk7XG4gICAgICAgIF8kc2VsZWN0b3JcbiAgICAgICAgICAgIC5hZGRDbGFzcygnanFDcm9uLXNlbGVjdG9yLScgKyBfJGJsb2NrLmZpbmQoJy5qcUNyb24tc2VsZWN0b3InKS5sZW5ndGgpXG4gICAgICAgICAgICAuYXBwZW5kKF8kdGl0bGUpXG4gICAgICAgICAgICAuYXBwZW5kKF8kbGlzdClcbiAgICAgICAgICAgIC5iaW5kKCdzZWxlY3RvcjpvcGVuJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBpZihfaGFzTnVtZXJpY1RleHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYmNvbHMgPSAxLCBuID0gXyRsaXN0LmZpbmQoJ2xpJykubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZihuID4gNSAmJiBuIDw9IDE2KSBuYmNvbHMgPSAyO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG4gPiAxNiAmJiBuIDw9IDIzKSBuYmNvbHMgPSAzO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG4gPiAyMyAmJiBuIDw9IDQwKSBuYmNvbHMgPSA0O1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG4gPiA0MCkgbmJjb2xzID0gNTtcbiAgICAgICAgICAgICAgICAgICAgXyRsaXN0LmFkZENsYXNzKCdjb2xzJytuYmNvbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfJGxpc3Quc2hvdygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5iaW5kKCdzZWxlY3RvcjpjbG9zZScsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgXyRsaXN0LmhpZGUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYmluZCgnc2VsZWN0b3I6Y2hhbmdlJywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICBfJHRpdGxlLmh0bWwoX3NlbGYuZ2V0VGl0bGVUZXh0KCkpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jbGljayhmdW5jdGlvbihlKXtcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50cmlnZ2VyKCdzZWxlY3RvcjpjaGFuZ2UnKVxuICAgICAgICA7XG4gICAgICAgICQuZm4uZGlzYWJsZVNlbGVjdGlvbiAmJiBfJHNlbGVjdG9yLmRpc2FibGVTZWxlY3Rpb24oKTsgLy8gb25seSB3b3JrIHdpdGggalF1ZXJ5IFVJXG4gICAgICAgIF8kdGl0bGUuY2xpY2soZnVuY3Rpb24oZSl7XG4gICAgICAgICAgICAoX3NlbGYuaXNPcGVuZWQoKSB8fCBfY3Jvbi5pc0Rpc2FibGVkKCkpID8gX3NlbGYuY2xvc2UoKSA6IF9zZWxmLm9wZW4oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIF9zZWxmLmNsb3NlKCk7XG4gICAgICAgIF9zZWxmLmNsZWFyKCk7XG4gICAgfVxuICAgIHRoaXMuanFDcm9uU2VsZWN0b3IgPSBqcUNyb25TZWxlY3Rvcjtcbn0pLmNhbGwod2luZG93LCAkKTtcblxuLyoqXG4gKiBHZW5lcmF0ZSB1bmlxdWUgaWQgZm9yIGVhY2ggZWxlbWVudC5cbiAqIFNraXAgZWxlbWVudHMgd2hpY2ggaGF2ZSBhbHJlYWR5IGFuIGlkLlxuICovXG4oZnVuY3Rpb24oJCl7XG4gICAgdmFyIGpxVUlEID0gMDtcbiAgICB2YXIganFHZXRVSUQgPSBmdW5jdGlvbihwcmVmaXgpe1xuICAgICAgICB2YXIgaWQ7XG4gICAgICAgIHdoaWxlKDEpIHtcbiAgICAgICAgICAgIGpxVUlEKys7XG4gICAgICAgICAgICBpZCA9ICgocHJlZml4IHx8ICdKUVVJRCcpKycnKSArIGpxVUlEO1xuICAgICAgICAgICAgaWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkgcmV0dXJuIGlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAkLmZuLnVuaXF1ZUlkID0gIGZ1bmN0aW9uKHByZWZpeCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpZigkKHRoaXMpLmF0dHIoJ2lkJykpIHJldHVybjtcbiAgICAgICAgICAgIHZhciBpZCA9IGpxR2V0VUlEKHByZWZpeCk7XG4gICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2lkJywgaWQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufSkuY2FsbCh3aW5kb3csICQpO1xuXG5cbi8qKlxuICogRXh0ZW5kcyBqUXVlcnkgc2VsZWN0b3JzIHdpdGggbmV3IGJsb2NrIHNlbGVjdG9yXG4gKi9cbihmdW5jdGlvbigkKXtcbiAgICAkLmV4dGVuZCgkLmV4cHJbJzonXSwge1xuICAgICAgICBjb250YWluZXI6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAoYS50YWdOYW1lKycnKS50b0xvd2VyQ2FzZSgpIGluIHtcbiAgICAgICAgICAgICAgICBhOjEsXG4gICAgICAgICAgICAgICAgYWJicjoxLFxuICAgICAgICAgICAgICAgIGFjcm9ueW06MSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOjEsXG4gICAgICAgICAgICAgICAgYjoxLFxuICAgICAgICAgICAgICAgIGJpZzoxLFxuICAgICAgICAgICAgICAgIGJsb2NrcXVvdGU6MSxcbiAgICAgICAgICAgICAgICBidXR0b246MSxcbiAgICAgICAgICAgICAgICBjaXRlOjEsXG4gICAgICAgICAgICAgICAgY29kZToxLFxuICAgICAgICAgICAgICAgIGRkOiAxLFxuICAgICAgICAgICAgICAgIGRlbDoxLFxuICAgICAgICAgICAgICAgIGRmbjoxLFxuICAgICAgICAgICAgICAgIGRpdjoxLFxuICAgICAgICAgICAgICAgIGR0OjEsXG4gICAgICAgICAgICAgICAgZW06MSxcbiAgICAgICAgICAgICAgICBmaWVsZHNldDoxLFxuICAgICAgICAgICAgICAgIGZvcm06MSxcbiAgICAgICAgICAgICAgICBoMToxLFxuICAgICAgICAgICAgICAgIGgyOjEsXG4gICAgICAgICAgICAgICAgaDM6MSxcbiAgICAgICAgICAgICAgICBoNDoxLFxuICAgICAgICAgICAgICAgIGg1OjEsXG4gICAgICAgICAgICAgICAgaDY6IDEsXG4gICAgICAgICAgICAgICAgaToxLFxuICAgICAgICAgICAgICAgIGluczoxLFxuICAgICAgICAgICAgICAgIGtiZDoxLFxuICAgICAgICAgICAgICAgIGxhYmVsOjEsXG4gICAgICAgICAgICAgICAgbGk6MSxcbiAgICAgICAgICAgICAgICBwOjEsXG4gICAgICAgICAgICAgICAgcHJlOjEsXG4gICAgICAgICAgICAgICAgcToxLFxuICAgICAgICAgICAgICAgIHNhbXA6MSxcbiAgICAgICAgICAgICAgICBzbWFsbDoxLFxuICAgICAgICAgICAgICAgIHNwYW46MSxcbiAgICAgICAgICAgICAgICBzdHJvbmc6MSxcbiAgICAgICAgICAgICAgICBzdWI6IDEsXG4gICAgICAgICAgICAgICAgc3VwOjEsXG4gICAgICAgICAgICAgICAgdGQ6MSxcbiAgICAgICAgICAgICAgICB0dDoxXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBhdXRvY2xvc2U6IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgICAgIHJldHVybiAoYS50YWdOYW1lKycnKS50b0xvd2VyQ2FzZSgpIGluIHtcbiAgICAgICAgICAgICAgICBhcmVhOjEsXG4gICAgICAgICAgICAgICAgYmFzZToxLFxuICAgICAgICAgICAgICAgIGJhc2Vmb250OjEsXG4gICAgICAgICAgICAgICAgYnI6MSxcbiAgICAgICAgICAgICAgICBjb2w6MSxcbiAgICAgICAgICAgICAgICBmcmFtZToxLFxuICAgICAgICAgICAgICAgIGhyOjEsXG4gICAgICAgICAgICAgICAgaW1nOjEsXG4gICAgICAgICAgICAgICAgaW5wdXQ6MSxcbiAgICAgICAgICAgICAgICBsaW5rOjEsXG4gICAgICAgICAgICAgICAgbWV0YToxLFxuICAgICAgICAgICAgICAgIHBhcmFtOjFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KTtcbn0pLmNhbGwod2luZG93LCAkKTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/cron-ui.js\n");
/***/ }),
/***/ "./app/utils/finderjs.js":
/*!*******************************!*\
!*** ./app/utils/finderjs.js ***!
\*******************************/
/*! namespace exports */
/*! export DEFAULTS [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULTS\": () => /* binding */ DEFAULTS,\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! eventemitter3 */ \"./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * (c) Trilby Media, LLC\n * Author Djamil Legato\n *\n * Based on Mark Matyas's Finderjs\n * MIT License\n */\n\n\nvar DEFAULTS = {\n labelKey: 'name',\n valueKey: 'value',\n // new\n childKey: 'children',\n iconKey: 'icon',\n // new\n itemKey: 'item-key',\n // new\n pathBar: true,\n className: {\n container: 'fjs-container',\n pathBar: 'fjs-path-bar',\n col: 'fjs-col',\n list: 'fjs-list',\n item: 'fjs-item',\n active: 'fjs-active',\n children: 'fjs-has-children',\n url: 'fjs-url',\n itemPrepend: 'fjs-item-prepend',\n itemContent: 'fjs-item-content',\n itemAppend: 'fjs-item-append'\n }\n};\n\nvar Finder = /*#__PURE__*/function () {\n function Finder(container, data, options) {\n var _this = this;\n\n _classCallCheck(this, Finder);\n\n this.$emitter = new (eventemitter3__WEBPACK_IMPORTED_MODULE_1___default())();\n this.container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n this.data = data;\n this.config = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, DEFAULTS, options); // dom events\n\n this.container.on('click', this.clickEvent.bind(this));\n this.container.on('keydown', this.keydownEvent.bind(this)); // internal events\n\n this.$emitter.on('item-selected', this.itemSelected.bind(this));\n this.$emitter.on('create-column', this.addColumn.bind(this));\n this.$emitter.on('navigate', this.navigate.bind(this));\n this.$emitter.on('go-to', this.goTo.bind(this, this.data));\n this.container.addClass(this.config.className.container).attr('tabindex', 0);\n this.createColumn(this.data);\n\n if (this.config.pathBar) {\n this.pathBar = this.createPathBar();\n this.pathBar.on('click', '[data-breadcrumb-node]', function (event) {\n event.preventDefault();\n var location = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget).data('breadcrumbNode');\n\n _this.goTo(_this.data, location);\n });\n } // '' is \n\n\n if (this.config.defaultPath || this.config.defaultPath === '') {\n this.goTo(this.data, this.config.defaultPath);\n }\n }\n\n _createClass(Finder, [{\n key: \"reload\",\n value: function reload() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.data;\n this.createColumn(data); // '' is \n\n if (this.config.defaultPath || this.config.defaultPath === '') {\n this.goTo(data, this.config.defaultPath);\n }\n }\n }, {\n key: \"createColumn\",\n value: function createColumn(data, parent) {\n var _this2 = this;\n\n var callback = function callback(data) {\n return _this2.createColumn(data, parent);\n };\n\n if (typeof data === 'function') {\n data.call(this, parent, callback);\n } else if (Array.isArray(data) || _typeof(data) === 'object') {\n if (_typeof(data) === 'object') {\n data = Array.from(data);\n }\n\n var list = this.createList(data);\n var div = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n div.append(list).addClass(this.config.className.col);\n this.$emitter.emit('create-column', div);\n return div;\n } else {\n throw new Error('Unknown data type');\n }\n }\n }, {\n key: \"createPathBar\",\n value: function createPathBar() {\n this.container.siblings(\".\".concat(this.config.className.pathBar)).remove();\n var pathBar = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n pathBar.insertAfter(this.container);\n return pathBar;\n }\n }, {\n key: \"clickEvent\",\n value: function clickEvent(event) {\n event.stopPropagation();\n event.preventDefault();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var column = target.closest(\".\".concat(this.config.className.col));\n var item = target.closest(\".\".concat(this.config.className.item));\n\n if (item.length) {\n this.$emitter.emit('item-selected', {\n column: column,\n item: item\n });\n }\n }\n }, {\n key: \"keydownEvent\",\n value: function keydownEvent(event) {\n var codes = {\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down'\n };\n\n if (event.keyCode in codes) {\n event.stopPropagation();\n event.preventDefault();\n this.$emitter.emit('navigate', {\n direction: codes[event.keyCode]\n });\n }\n }\n }, {\n key: \"itemSelected\",\n value: function itemSelected(value) {\n var element = value.item;\n\n if (!element.length) {\n return false;\n }\n\n var item = element[0]._item;\n var column = value.column;\n var data = item[this.config.childKey] || this.data;\n var active = jquery__WEBPACK_IMPORTED_MODULE_0___default()(column).find(\".\".concat(this.config.className.active));\n\n if (active.length) {\n active.removeClass(this.config.className.active);\n }\n\n element.addClass(this.config.className.active);\n column.nextAll().remove(); // ?!?!?\n\n this.container[0].focus();\n window.scrollTo(window.pageXOffset, window.pageYOffset);\n this.updatePathBar();\n var newColumn;\n\n if (data) {\n newColumn = this.createColumn(data, item);\n this.$emitter.emit('interior-selected', item);\n } else {\n this.$emitter.emit('leaf-selected', item);\n }\n\n return newColumn;\n }\n }, {\n key: \"addColumn\",\n value: function addColumn(column) {\n this.container.append(column);\n this.$emitter.emit('column-created', column);\n }\n }, {\n key: \"navigate\",\n value: function navigate(value) {\n var active = this.findLastActive();\n var direction = value.direction;\n var column;\n var item;\n var target;\n\n if (active) {\n item = active.item;\n column = active.column;\n\n if (direction === 'up' && item.prev().length) {\n target = item.prev();\n } else if (direction === 'down' && item.next().length) {\n target = item.next();\n } else if (direction === 'right' && column.next().length) {\n column = column.next();\n target = column.find(\".\".concat(this.config.className.item)).first();\n } else if (direction === 'left' && column.prev().length) {\n column = column.prev();\n target = column.find(\".\".concat(this.config.className.active)).first() || column.find(\".\".concat(this.config.className.item));\n }\n } else {\n column = this.container.find(\".\".concat(this.config.className.col)).first();\n target = column.find(\".\".concat(this.config.className.item)).first();\n }\n\n if (target) {\n this.$emitter.emit('item-selected', {\n column: column,\n item: target\n });\n }\n }\n }, {\n key: \"goTo\",\n value: function goTo(data, path) {\n var _this3 = this;\n\n path = Array.isArray(path) ? path : path.split('/').map(function (bit) {\n return bit.trim();\n }).filter(Boolean);\n\n if (path.length) {\n this.container.children().remove();\n }\n\n if (typeof data === 'function') {\n data.call(this, null, function (data) {\n return _this3.selectPath(path, data);\n });\n } else {\n this.selectPath(path, data);\n }\n }\n }, {\n key: \"selectPath\",\n value: function selectPath(path, data, column) {\n var _this4 = this;\n\n column = column || (path.length ? this.createColumn(data) : this.container.find(\"> .\".concat(this.config.className.col)));\n var current = path[0] || '';\n var children = data.find(function (item) {\n return item[_this4.config.itemKey] === current;\n });\n var newColumn = this.itemSelected({\n column: column,\n item: column.find(\"[data-fjs-item=\\\"\".concat(current, \"\\\"]\")).first()\n });\n path.shift();\n\n if (path.length && children) {\n this.selectPath(path, children[this.config.childKey], newColumn);\n }\n }\n }, {\n key: \"findLastActive\",\n value: function findLastActive() {\n var active = this.container.find(\".\".concat(this.config.className.active));\n\n if (!active.length) {\n return null;\n }\n\n var item = active.last();\n var column = item.closest(\".\".concat(this.config.className.col));\n return {\n item: item,\n column: column\n };\n }\n }, {\n key: \"createList\",\n value: function createList(data) {\n var _this5 = this;\n\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()('');\n var items = data.map(function (item) {\n return _this5.createItem(item);\n });\n var fragments = items.reduce(function (fragment, current) {\n fragment.appendChild(current[0] || current);\n return fragment;\n }, document.createDocumentFragment());\n list.append(fragments).addClass(this.config.className.list);\n return list;\n }\n }, {\n key: \"createItem\",\n value: function createItem(item) {\n var listItem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(' ');\n var listItemClasses = [this.config.className.item];\n var link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(' ');\n var createItemContent = this.config.createItemContent || this.createItemContent;\n var fragment = createItemContent.call(this, item);\n link.append(fragment).attr('href', '').attr('tabindex', -1);\n\n if (item.url) {\n link.attr('href', item.url);\n listItemClasses.push(item.className);\n }\n\n if (item[this.config.childKey]) {\n listItemClasses.push(this.config.className[this.config.childKey]);\n }\n\n listItemClasses.push(\"fjs-item-\".concat(item.type));\n listItem.addClass(listItemClasses.join(' '));\n listItem.append(link).attr('data-fjs-item', item[this.config.itemKey]);\n listItem[0]._item = item;\n return listItem;\n }\n }, {\n key: \"updatePathBar\",\n value: function updatePathBar() {\n var _this6 = this;\n\n if (!this.config.pathBar) {\n return false;\n }\n\n var activeItems = this.container.find(\".\".concat(this.config.className.active));\n var itemKeys = '';\n this.pathBar.children().empty();\n activeItems.each(function (index, activeItem) {\n var item = activeItem._item;\n var isLast = index + 1 === activeItems.length;\n itemKeys += \"/\".concat(item[_this6.config.itemKey]);\n\n _this6.pathBar.append(\"\\n \\n \\n \").concat(jquery__WEBPACK_IMPORTED_MODULE_0___default()('
').text(item[_this6.config.labelKey]).html(), \" \\n \").concat(!isLast ? ' ' : '', \"\\n \\n \"));\n });\n }\n }, {\n key: \"getIcon\",\n value: function getIcon(type) {\n switch (type) {\n case 'root':\n return 'fa-sitemap';\n\n case 'file':\n return 'fa-file-o';\n\n case 'dir':\n default:\n return 'fa-folder';\n }\n }\n }]);\n\n return Finder;\n}();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Finder);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2ZpbmRlcmpzLmpzP2NmNGMiXSwibmFtZXMiOlsiREVGQVVMVFMiLCJsYWJlbEtleSIsInZhbHVlS2V5IiwiY2hpbGRLZXkiLCJpY29uS2V5IiwiaXRlbUtleSIsInBhdGhCYXIiLCJjbGFzc05hbWUiLCJjb250YWluZXIiLCJjb2wiLCJsaXN0IiwiaXRlbSIsImFjdGl2ZSIsImNoaWxkcmVuIiwidXJsIiwiaXRlbVByZXBlbmQiLCJpdGVtQ29udGVudCIsIml0ZW1BcHBlbmQiLCJGaW5kZXIiLCJkYXRhIiwib3B0aW9ucyIsIiRlbWl0dGVyIiwiRXZlbnRFbWl0dGVyIiwiJCIsImNvbmZpZyIsIm9uIiwiY2xpY2tFdmVudCIsImJpbmQiLCJrZXlkb3duRXZlbnQiLCJpdGVtU2VsZWN0ZWQiLCJhZGRDb2x1bW4iLCJuYXZpZ2F0ZSIsImdvVG8iLCJhZGRDbGFzcyIsImF0dHIiLCJjcmVhdGVDb2x1bW4iLCJjcmVhdGVQYXRoQmFyIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImxvY2F0aW9uIiwiY3VycmVudFRhcmdldCIsImRlZmF1bHRQYXRoIiwicGFyZW50IiwiY2FsbGJhY2siLCJjYWxsIiwiQXJyYXkiLCJpc0FycmF5IiwiZnJvbSIsImNyZWF0ZUxpc3QiLCJkaXYiLCJhcHBlbmQiLCJlbWl0IiwiRXJyb3IiLCJzaWJsaW5ncyIsInJlbW92ZSIsImluc2VydEFmdGVyIiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwiY29sdW1uIiwiY2xvc2VzdCIsImxlbmd0aCIsImNvZGVzIiwia2V5Q29kZSIsImRpcmVjdGlvbiIsInZhbHVlIiwiZWxlbWVudCIsIl9pdGVtIiwiZmluZCIsInJlbW92ZUNsYXNzIiwibmV4dEFsbCIsImZvY3VzIiwid2luZG93Iiwic2Nyb2xsVG8iLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwidXBkYXRlUGF0aEJhciIsIm5ld0NvbHVtbiIsImZpbmRMYXN0QWN0aXZlIiwicHJldiIsIm5leHQiLCJmaXJzdCIsInBhdGgiLCJzcGxpdCIsIm1hcCIsImJpdCIsInRyaW0iLCJmaWx0ZXIiLCJCb29sZWFuIiwic2VsZWN0UGF0aCIsImN1cnJlbnQiLCJzaGlmdCIsImxhc3QiLCJpdGVtcyIsImNyZWF0ZUl0ZW0iLCJmcmFnbWVudHMiLCJyZWR1Y2UiLCJmcmFnbWVudCIsImFwcGVuZENoaWxkIiwiZG9jdW1lbnQiLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50IiwibGlzdEl0ZW0iLCJsaXN0SXRlbUNsYXNzZXMiLCJsaW5rIiwiY3JlYXRlSXRlbUNvbnRlbnQiLCJwdXNoIiwidHlwZSIsImpvaW4iLCJhY3RpdmVJdGVtcyIsIml0ZW1LZXlzIiwiZW1wdHkiLCJlYWNoIiwiaW5kZXgiLCJhY3RpdmVJdGVtIiwiaXNMYXN0IiwiZ2V0SWNvbiIsInRleHQiLCJodG1sIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVPLElBQU1BLFFBQVEsR0FBRztBQUNwQkMsVUFBUSxFQUFFLE1BRFU7QUFFcEJDLFVBQVEsRUFBRSxPQUZVO0FBRUQ7QUFDbkJDLFVBQVEsRUFBRSxVQUhVO0FBSXBCQyxTQUFPLEVBQUUsTUFKVztBQUlIO0FBQ2pCQyxTQUFPLEVBQUUsVUFMVztBQUtDO0FBQ3JCQyxTQUFPLEVBQUUsSUFOVztBQU9wQkMsV0FBUyxFQUFFO0FBQ1BDLGFBQVMsRUFBRSxlQURKO0FBRVBGLFdBQU8sRUFBRSxjQUZGO0FBR1BHLE9BQUcsRUFBRSxTQUhFO0FBSVBDLFFBQUksRUFBRSxVQUpDO0FBS1BDLFFBQUksRUFBRSxVQUxDO0FBTVBDLFVBQU0sRUFBRSxZQU5EO0FBT1BDLFlBQVEsRUFBRSxrQkFQSDtBQVFQQyxPQUFHLEVBQUUsU0FSRTtBQVNQQyxlQUFXLEVBQUUsa0JBVE47QUFVUEMsZUFBVyxFQUFFLGtCQVZOO0FBV1BDLGNBQVUsRUFBRTtBQVhMO0FBUFMsQ0FBakI7O0lBc0JE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LEksRUFBTTtBQUNWLGNBQVFBLElBQVI7QUFDSSxhQUFLLE1BQUw7QUFDSSxpQkFBTyxZQUFQOztBQUNKLGFBQUssTUFBTDtBQUNJLGlCQUFPLFdBQVA7O0FBQ0osYUFBSyxLQUFMO0FBQ0E7QUFDSSxpQkFBTyxXQUFQO0FBUFI7QUFTSDs7Ozs7O0FBR0wsaUVBQWV2RixNQUFmIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL2ZpbmRlcmpzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAoYykgVHJpbGJ5IE1lZGlhLCBMTENcbiAqIEF1dGhvciBEamFtaWwgTGVnYXRvXG4gKlxuICogQmFzZWQgb24gTWFyayBNYXR5YXMncyBGaW5kZXJqc1xuICogTUlUIExpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudGVtaXR0ZXIzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRTID0ge1xuICAgIGxhYmVsS2V5OiAnbmFtZScsXG4gICAgdmFsdWVLZXk6ICd2YWx1ZScsIC8vIG5ld1xuICAgIGNoaWxkS2V5OiAnY2hpbGRyZW4nLFxuICAgIGljb25LZXk6ICdpY29uJywgLy8gbmV3XG4gICAgaXRlbUtleTogJ2l0ZW0ta2V5JywgLy8gbmV3XG4gICAgcGF0aEJhcjogdHJ1ZSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgY29udGFpbmVyOiAnZmpzLWNvbnRhaW5lcicsXG4gICAgICAgIHBhdGhCYXI6ICdmanMtcGF0aC1iYXInLFxuICAgICAgICBjb2w6ICdmanMtY29sJyxcbiAgICAgICAgbGlzdDogJ2Zqcy1saXN0JyxcbiAgICAgICAgaXRlbTogJ2Zqcy1pdGVtJyxcbiAgICAgICAgYWN0aXZlOiAnZmpzLWFjdGl2ZScsXG4gICAgICAgIGNoaWxkcmVuOiAnZmpzLWhhcy1jaGlsZHJlbicsXG4gICAgICAgIHVybDogJ2Zqcy11cmwnLFxuICAgICAgICBpdGVtUHJlcGVuZDogJ2Zqcy1pdGVtLXByZXBlbmQnLFxuICAgICAgICBpdGVtQ29udGVudDogJ2Zqcy1pdGVtLWNvbnRlbnQnLFxuICAgICAgICBpdGVtQXBwZW5kOiAnZmpzLWl0ZW0tYXBwZW5kJ1xuICAgIH1cbn07XG5cbmNsYXNzIEZpbmRlciB7XG4gICAgY29uc3RydWN0b3IoY29udGFpbmVyLCBkYXRhLCBvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuJGVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0gJC5leHRlbmQoe30sIERFRkFVTFRTLCBvcHRpb25zKTtcblxuICAgICAgICAvLyBkb20gZXZlbnRzXG4gICAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdjbGljaycsIHRoaXMuY2xpY2tFdmVudC5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIub24oJ2tleWRvd24nLCB0aGlzLmtleWRvd25FdmVudC5iaW5kKHRoaXMpKTtcblxuICAgICAgICAvLyBpbnRlcm5hbCBldmVudHNcbiAgICAgICAgdGhpcy4kZW1pdHRlci5vbignaXRlbS1zZWxlY3RlZCcsIHRoaXMuaXRlbVNlbGVjdGVkLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLiRlbWl0dGVyLm9uKCdjcmVhdGUtY29sdW1uJywgdGhpcy5hZGRDb2x1bW4uYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuJGVtaXR0ZXIub24oJ25hdmlnYXRlJywgdGhpcy5uYXZpZ2F0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy4kZW1pdHRlci5vbignZ28tdG8nLCB0aGlzLmdvVG8uYmluZCh0aGlzLCB0aGlzLmRhdGEpKTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyh0aGlzLmNvbmZpZy5jbGFzc05hbWUuY29udGFpbmVyKS5hdHRyKCd0YWJpbmRleCcsIDApO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uKHRoaXMuZGF0YSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnBhdGhCYXIpIHtcbiAgICAgICAgICAgIHRoaXMucGF0aEJhciA9IHRoaXMuY3JlYXRlUGF0aEJhcigpO1xuICAgICAgICAgICAgdGhpcy5wYXRoQmFyLm9uKCdjbGljaycsICdbZGF0YS1icmVhZGNydW1iLW5vZGVdJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCkuZGF0YSgnYnJlYWRjcnVtYk5vZGUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG8odGhpcy5kYXRhLCBsb2NhdGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vICcnIGlzIDxSb290PlxuICAgICAgICBpZiAodGhpcy5jb25maWcuZGVmYXVsdFBhdGggfHwgdGhpcy5jb25maWcuZGVmYXVsdFBhdGggPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG8odGhpcy5kYXRhLCB0aGlzLmNvbmZpZy5kZWZhdWx0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWxvYWQoZGF0YSA9IHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbihkYXRhKTtcblxuICAgICAgICAvLyAnJyBpcyA8Um9vdD5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlZmF1bHRQYXRoIHx8IHRoaXMuY29uZmlnLmRlZmF1bHRQYXRoID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5nb1RvKGRhdGEsIHRoaXMuY29uZmlnLmRlZmF1bHRQYXRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUNvbHVtbihkYXRhLCBwYXJlbnQpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoZGF0YSkgPT4gdGhpcy5jcmVhdGVDb2x1bW4oZGF0YSwgcGFyZW50KTtcblxuICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGRhdGEuY2FsbCh0aGlzLCBwYXJlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBBcnJheS5mcm9tKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY3JlYXRlTGlzdChkYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGRpdiA9ICQoJzxkaXYgLz4nKTtcbiAgICAgICAgICAgIGRpdi5hcHBlbmQobGlzdCkuYWRkQ2xhc3ModGhpcy5jb25maWcuY2xhc3NOYW1lLmNvbCk7XG4gICAgICAgICAgICB0aGlzLiRlbWl0dGVyLmVtaXQoJ2NyZWF0ZS1jb2x1bW4nLCBkaXYpO1xuXG4gICAgICAgICAgICByZXR1cm4gZGl2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGRhdGEgdHlwZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUGF0aEJhcigpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuc2libGluZ3MoYC4ke3RoaXMuY29uZmlnLmNsYXNzTmFtZS5wYXRoQmFyfWApLnJlbW92ZSgpO1xuICAgICAgICBjb25zdCBwYXRoQmFyID0gJChgPGRpdiBjbGFzcz1cIiR7dGhpcy5jb25maWcuY2xhc3NOYW1lLnBhdGhCYXJ9XCIgLz5gKTtcbiAgICAgICAgcGF0aEJhci5pbnNlcnRBZnRlcih0aGlzLmNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIHBhdGhCYXI7XG4gICAgfVxuXG4gICAgY2xpY2tFdmVudChldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRhcmdldC5jbG9zZXN0KGAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuY29sfWApO1xuICAgICAgICBjb25zdCBpdGVtID0gdGFyZ2V0LmNsb3Nlc3QoYC4ke3RoaXMuY29uZmlnLmNsYXNzTmFtZS5pdGVtfWApO1xuXG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy4kZW1pdHRlci5lbWl0KCdpdGVtLXNlbGVjdGVkJywgeyBjb2x1bW4sIGl0ZW0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBrZXlkb3duRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgY29kZXMgPSB7IDM3OiAnbGVmdCcsIDM4OiAndXAnLCAzOTogJ3JpZ2h0JywgNDA6ICdkb3duJyB9O1xuXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlIGluIGNvZGVzKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuJGVtaXR0ZXIuZW1pdCgnbmF2aWdhdGUnLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBjb2Rlc1tldmVudC5rZXlDb2RlXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtU2VsZWN0ZWQodmFsdWUpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHZhbHVlLml0ZW07XG4gICAgICAgIGlmICghZWxlbWVudC5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBlbGVtZW50WzBdLl9pdGVtO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB2YWx1ZS5jb2x1bW47XG4gICAgICAgIGNvbnN0IGRhdGEgPSBpdGVtW3RoaXMuY29uZmlnLmNoaWxkS2V5XSB8fCB0aGlzLmRhdGE7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9ICQoY29sdW1uKS5maW5kKGAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuYWN0aXZlfWApO1xuXG4gICAgICAgIGlmIChhY3RpdmUubGVuZ3RoKSB7XG4gICAgICAgICAgICBhY3RpdmUucmVtb3ZlQ2xhc3ModGhpcy5jb25maWcuY2xhc3NOYW1lLmFjdGl2ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50LmFkZENsYXNzKHRoaXMuY29uZmlnLmNsYXNzTmFtZS5hY3RpdmUpO1xuICAgICAgICBjb2x1bW4ubmV4dEFsbCgpLnJlbW92ZSgpOyAvLyA/IT8hP1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyWzBdLmZvY3VzKCk7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh3aW5kb3cucGFnZVhPZmZzZXQsIHdpbmRvdy5wYWdlWU9mZnNldCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVQYXRoQmFyKCk7XG5cbiAgICAgICAgbGV0IG5ld0NvbHVtbjtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIG5ld0NvbHVtbiA9IHRoaXMuY3JlYXRlQ29sdW1uKGRhdGEsIGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy4kZW1pdHRlci5lbWl0KCdpbnRlcmlvci1zZWxlY3RlZCcsIGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4kZW1pdHRlci5lbWl0KCdsZWFmLXNlbGVjdGVkJywgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3Q29sdW1uO1xuICAgIH1cblxuICAgIGFkZENvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kKGNvbHVtbik7XG4gICAgICAgIHRoaXMuJGVtaXR0ZXIuZW1pdCgnY29sdW1uLWNyZWF0ZWQnLCBjb2x1bW4pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZmluZExhc3RBY3RpdmUoKTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gdmFsdWUuZGlyZWN0aW9uO1xuICAgICAgICBsZXQgY29sdW1uO1xuICAgICAgICBsZXQgaXRlbTtcbiAgICAgICAgbGV0IHRhcmdldDtcblxuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICBpdGVtID0gYWN0aXZlLml0ZW07XG4gICAgICAgICAgICBjb2x1bW4gPSBhY3RpdmUuY29sdW1uO1xuXG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnICYmIGl0ZW0ucHJldigpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IGl0ZW0ucHJldigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkb3duJyAmJiBpdGVtLm5leHQoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBpdGVtLm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAncmlnaHQnICYmIGNvbHVtbi5uZXh0KCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gY29sdW1uLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBjb2x1bW4uZmluZChgLiR7dGhpcy5jb25maWcuY2xhc3NOYW1lLml0ZW19YCkuZmlyc3QoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcgJiYgY29sdW1uLnByZXYoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBjb2x1bW4ucHJldigpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvbHVtbi5maW5kKGAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuYWN0aXZlfWApLmZpcnN0KCkgfHwgY29sdW1uLmZpbmQoYC4ke3RoaXMuY29uZmlnLmNsYXNzTmFtZS5pdGVtfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uID0gdGhpcy5jb250YWluZXIuZmluZChgLiR7dGhpcy5jb25maWcuY2xhc3NOYW1lLmNvbH1gKS5maXJzdCgpO1xuICAgICAgICAgICAgdGFyZ2V0ID0gY29sdW1uLmZpbmQoYC4ke3RoaXMuY29uZmlnLmNsYXNzTmFtZS5pdGVtfWApLmZpcnN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLiRlbWl0dGVyLmVtaXQoJ2l0ZW0tc2VsZWN0ZWQnLCB7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIGl0ZW06IHRhcmdldFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnb1RvKGRhdGEsIHBhdGgpIHtcbiAgICAgICAgcGF0aCA9IEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoIDogcGF0aC5zcGxpdCgnLycpLm1hcChiaXQgPT4gYml0LnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIGlmIChwYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXIuY2hpbGRyZW4oKS5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZGF0YS5jYWxsKHRoaXMsIG51bGwsIChkYXRhKSA9PiB0aGlzLnNlbGVjdFBhdGgocGF0aCwgZGF0YSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RQYXRoKHBhdGgsIGRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0UGF0aChwYXRoLCBkYXRhLCBjb2x1bW4pIHtcbiAgICAgICAgY29sdW1uID0gY29sdW1uIHx8IChwYXRoLmxlbmd0aCA/IHRoaXMuY3JlYXRlQ29sdW1uKGRhdGEpIDogdGhpcy5jb250YWluZXIuZmluZChgPiAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuY29sfWApKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50ID0gcGF0aFswXSB8fCAnJztcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW1bdGhpcy5jb25maWcuaXRlbUtleV0gPT09IGN1cnJlbnQpO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLml0ZW1TZWxlY3RlZCh7XG4gICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICBpdGVtOiBjb2x1bW4uZmluZChgW2RhdGEtZmpzLWl0ZW09XCIke2N1cnJlbnR9XCJdYCkuZmlyc3QoKVxuICAgICAgICB9KTtcblxuICAgICAgICBwYXRoLnNoaWZ0KCk7XG5cbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoICYmIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFBhdGgocGF0aCwgY2hpbGRyZW5bdGhpcy5jb25maWcuY2hpbGRLZXldLCBuZXdDb2x1bW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZExhc3RBY3RpdmUoKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuY29udGFpbmVyLmZpbmQoYC4ke3RoaXMuY29uZmlnLmNsYXNzTmFtZS5hY3RpdmV9YCk7XG4gICAgICAgIGlmICghYWN0aXZlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtID0gYWN0aXZlLmxhc3QoKTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gaXRlbS5jbG9zZXN0KGAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuY29sfWApO1xuXG4gICAgICAgIHJldHVybiB7IGl0ZW0sIGNvbHVtbiB9O1xuICAgIH1cblxuICAgIGNyZWF0ZUxpc3QoZGF0YSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gJCgnPHVsIC8+Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gZGF0YS5tYXAoKGl0ZW0pID0+IHRoaXMuY3JlYXRlSXRlbShpdGVtKSk7XG5cbiAgICAgICAgY29uc3QgZnJhZ21lbnRzID0gaXRlbXMucmVkdWNlKChmcmFnbWVudCwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoY3VycmVudFswXSB8fCBjdXJyZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgICAgICB9LCBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO1xuXG4gICAgICAgIGxpc3QuYXBwZW5kKGZyYWdtZW50cykuYWRkQ2xhc3ModGhpcy5jb25maWcuY2xhc3NOYW1lLmxpc3QpO1xuXG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGNyZWF0ZUl0ZW0oaXRlbSkge1xuICAgICAgICBjb25zdCBsaXN0SXRlbSA9ICQoJzxsaSAvPicpO1xuICAgICAgICBjb25zdCBsaXN0SXRlbUNsYXNzZXMgPSBbdGhpcy5jb25maWcuY2xhc3NOYW1lLml0ZW1dO1xuICAgICAgICBjb25zdCBsaW5rID0gJCgnPGEgLz4nKTtcbiAgICAgICAgY29uc3QgY3JlYXRlSXRlbUNvbnRlbnQgPSB0aGlzLmNvbmZpZy5jcmVhdGVJdGVtQ29udGVudCB8fCB0aGlzLmNyZWF0ZUl0ZW1Db250ZW50O1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGNyZWF0ZUl0ZW1Db250ZW50LmNhbGwodGhpcywgaXRlbSk7XG4gICAgICAgIGxpbmsuYXBwZW5kKGZyYWdtZW50KVxuICAgICAgICAgICAgLmF0dHIoJ2hyZWYnLCAnJylcbiAgICAgICAgICAgIC5hdHRyKCd0YWJpbmRleCcsIC0xKTtcblxuICAgICAgICBpZiAoaXRlbS51cmwpIHtcbiAgICAgICAgICAgIGxpbmsuYXR0cignaHJlZicsIGl0ZW0udXJsKTtcbiAgICAgICAgICAgIGxpc3RJdGVtQ2xhc3Nlcy5wdXNoKGl0ZW0uY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtW3RoaXMuY29uZmlnLmNoaWxkS2V5XSkge1xuICAgICAgICAgICAgbGlzdEl0ZW1DbGFzc2VzLnB1c2godGhpcy5jb25maWcuY2xhc3NOYW1lW3RoaXMuY29uZmlnLmNoaWxkS2V5XSk7XG4gICAgICAgIH1cblxuICAgICAgICBsaXN0SXRlbUNsYXNzZXMucHVzaChgZmpzLWl0ZW0tJHtpdGVtLnR5cGV9YCk7XG4gICAgICAgIGxpc3RJdGVtLmFkZENsYXNzKGxpc3RJdGVtQ2xhc3Nlcy5qb2luKCcgJykpO1xuICAgICAgICBsaXN0SXRlbS5hcHBlbmQobGluaylcbiAgICAgICAgICAgIC5hdHRyKCdkYXRhLWZqcy1pdGVtJywgaXRlbVt0aGlzLmNvbmZpZy5pdGVtS2V5XSk7XG5cbiAgICAgICAgbGlzdEl0ZW1bMF0uX2l0ZW0gPSBpdGVtO1xuXG4gICAgICAgIHJldHVybiBsaXN0SXRlbTtcbiAgICB9XG5cbiAgICB1cGRhdGVQYXRoQmFyKCkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnBhdGhCYXIpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbXMgPSB0aGlzLmNvbnRhaW5lci5maW5kKGAuJHt0aGlzLmNvbmZpZy5jbGFzc05hbWUuYWN0aXZlfWApO1xuICAgICAgICBsZXQgaXRlbUtleXMgPSAnJztcbiAgICAgICAgdGhpcy5wYXRoQmFyLmNoaWxkcmVuKCkuZW1wdHkoKTtcbiAgICAgICAgYWN0aXZlSXRlbXMuZWFjaCgoaW5kZXgsIGFjdGl2ZUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhY3RpdmVJdGVtLl9pdGVtO1xuICAgICAgICAgICAgY29uc3QgaXNMYXN0ID0gKGluZGV4ICsgMSkgPT09IGFjdGl2ZUl0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIGl0ZW1LZXlzICs9IGAvJHtpdGVtW3RoaXMuY29uZmlnLml0ZW1LZXldfWA7XG4gICAgICAgICAgICB0aGlzLnBhdGhCYXIuYXBwZW5kKGBcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJyZWFkY3J1bWItbm9kZSBicmVhZGNydW1iLW5vZGUtJHtpdGVtLnR5cGV9XCIgJHtpdGVtLnR5cGUgPT09ICdkaXInID8gYGRhdGEtYnJlYWRjcnVtYi1ub2RlPVwiJHtpdGVtS2V5c31cImAgOiAnJ30+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZncgJHt0aGlzLmdldEljb24oaXRlbS50eXBlKX1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnJlYWRjcnVtYi1ub2RlLW5hbWVcIj4keyQoJzxkaXYgLz4nKS50ZXh0KGl0ZW1bdGhpcy5jb25maWcubGFiZWxLZXldKS5odG1sKCl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAkeyFpc0xhc3QgPyAnPGkgY2xhc3M9XCJmYSBmYS1mdyBmYS1jaGV2cm9uLXJpZ2h0XCI+PC9pPicgOiAnJ31cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbih0eXBlKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAncm9vdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdmYS1zaXRlbWFwJztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmEtZmlsZS1vJztcbiAgICAgICAgICAgIGNhc2UgJ2Rpcic6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnZmEtZm9sZGVyJztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmluZGVyO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/finderjs.js\n");
/***/ }),
/***/ "./app/utils/formatbytes.js":
/*!**********************************!*\
!*** ./app/utils/formatbytes.js ***!
\**********************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ formatBytes\n/* harmony export */ });\nvar sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\nfunction formatBytes(bytes, decimals) {\n if (bytes === 0) return '0 Byte';\n var k = 1000;\n var value = Math.floor(Math.log(bytes) / Math.log(k));\n var decimal = decimals + 1 || 3;\n return (bytes / Math.pow(k, value)).toPrecision(decimal) + ' ' + sizes[value];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2Zvcm1hdGJ5dGVzLmpzP2FhZDMiXSwibmFtZXMiOlsic2l6ZXMiLCJmb3JtYXRCeXRlcyIsImJ5dGVzIiwiZGVjaW1hbHMiLCJrIiwidmFsdWUiLCJNYXRoIiwiZmxvb3IiLCJsb2ciLCJkZWNpbWFsIiwicG93IiwidG9QcmVjaXNpb24iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFNQSxLQUFLLEdBQUcsQ0FBQyxPQUFELEVBQVUsSUFBVixFQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QixJQUE1QixFQUFrQyxJQUFsQyxFQUF3QyxJQUF4QyxFQUE4QyxJQUE5QyxFQUFvRCxJQUFwRCxDQUFkO0FBRWUsU0FBU0MsV0FBVCxDQUFxQkMsS0FBckIsRUFBNEJDLFFBQTVCLEVBQXNDO0FBQ2pELE1BQUlELEtBQUssS0FBSyxDQUFkLEVBQWlCLE9BQU8sUUFBUDtBQUVqQixNQUFJRSxDQUFDLEdBQUcsSUFBUjtBQUNBLE1BQUlDLEtBQUssR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ0UsR0FBTCxDQUFTTixLQUFULElBQWtCSSxJQUFJLENBQUNFLEdBQUwsQ0FBU0osQ0FBVCxDQUE3QixDQUFaO0FBQ0EsTUFBSUssT0FBTyxHQUFHTixRQUFRLEdBQUcsQ0FBWCxJQUFnQixDQUE5QjtBQUVBLFNBQU8sQ0FBQ0QsS0FBSyxHQUFHSSxJQUFJLENBQUNJLEdBQUwsQ0FBU04sQ0FBVCxFQUFZQyxLQUFaLENBQVQsRUFBNkJNLFdBQTdCLENBQXlDRixPQUF6QyxJQUFvRCxHQUFwRCxHQUEwRFQsS0FBSyxDQUFDSyxLQUFELENBQXRFO0FBQ0giLCJmaWxlIjoiLi9hcHAvdXRpbHMvZm9ybWF0Ynl0ZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaXplcyA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0Qnl0ZXMoYnl0ZXMsIGRlY2ltYWxzKSB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQnl0ZSc7XG5cbiAgICBsZXQgayA9IDEwMDA7XG4gICAgbGV0IHZhbHVlID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gICAgbGV0IGRlY2ltYWwgPSBkZWNpbWFscyArIDEgfHwgMztcblxuICAgIHJldHVybiAoYnl0ZXMgLyBNYXRoLnBvdyhrLCB2YWx1ZSkpLnRvUHJlY2lzaW9uKGRlY2ltYWwpICsgJyAnICsgc2l6ZXNbdmFsdWVdO1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/formatbytes.js\n");
/***/ }),
/***/ "./app/utils/gpm.js":
/*!**************************!*\
!*** ./app/utils/gpm.js ***!
\**************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ GPM,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var _response__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response */ \"./app/utils/response.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! events */ \"./node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_2__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\nvar GPM = /*#__PURE__*/function (_EventEmitter) {\n _inherits(GPM, _EventEmitter);\n\n var _super = _createSuper(GPM);\n\n function GPM() {\n var _this;\n\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'getUpdates';\n\n _classCallCheck(this, GPM);\n\n _this = _super.call(this);\n _this.payload = {};\n _this.raw = {};\n _this.action = action;\n return _this;\n }\n\n _createClass(GPM, [{\n key: \"setPayload\",\n value: function setPayload() {\n var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.payload = payload;\n this.emit('payload', payload);\n return this;\n }\n }, {\n key: \"setAction\",\n value: function setAction() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'getUpdates';\n this.action = action;\n this.emit('action', action);\n return this;\n }\n }, {\n key: \"fetch\",\n value: function (_fetch) {\n function fetch() {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function () {\n var _this2 = this;\n\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {\n return true;\n };\n var flush = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var data = new FormData();\n data.append('admin-nonce', grav_config__WEBPACK_IMPORTED_MODULE_1__.config.admin_nonce);\n\n if (flush) {\n data.append('flush', true);\n }\n\n this.emit('fetching', this);\n fetch(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/update.json/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep, \"getUpdates\"), {\n credentials: 'same-origin',\n method: 'post',\n body: data\n }).then(function (response) {\n _this2.raw = response;\n return response;\n }).then(_response__WEBPACK_IMPORTED_MODULE_0__.parseStatus).then(_response__WEBPACK_IMPORTED_MODULE_0__.parseJSON).then(function (response) {\n return _this2.response(response);\n }).then(function (response) {\n return callback(response, _this2.raw);\n }).then(function (response) {\n return _this2.emit('fetched', _this2.payload, _this2.raw, _this2);\n })[\"catch\"](_response__WEBPACK_IMPORTED_MODULE_0__.userFeedbackError);\n })\n }, {\n key: \"response\",\n value: function response(_response) {\n this.payload = _response;\n return _response;\n }\n }]);\n\n return GPM;\n}((events__WEBPACK_IMPORTED_MODULE_2___default()));\n\n\nvar Instance = new GPM();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2dwbS5qcz83OWI2Il0sIm5hbWVzIjpbIkdQTSIsImFjdGlvbiIsInBheWxvYWQiLCJyYXciLCJlbWl0IiwiY2FsbGJhY2siLCJmbHVzaCIsImRhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsImNvbmZpZyIsImZldGNoIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwicGFyc2VTdGF0dXMiLCJwYXJzZUpTT04iLCJ1c2VyRmVlZGJhY2tFcnJvciIsIkV2ZW50RW1pdHRlciIsIkluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7SUFFcUJBLEc7Ozs7O0FBQ2pCLGlCQUFtQztBQUFBOztBQUFBLFFBQXZCQyxNQUF1Qix1RUFBZCxZQUFjOztBQUFBOztBQUMvQjtBQUNBLFVBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0EsVUFBS0MsR0FBTCxHQUFXLEVBQVg7QUFDQSxVQUFLRixNQUFMLEdBQWNBLE1BQWQ7QUFKK0I7QUFLbEM7Ozs7aUNBRXdCO0FBQUEsVUFBZEMsT0FBYyx1RUFBSixFQUFJO0FBQ3JCLFdBQUtBLE9BQUwsR0FBZUEsT0FBZjtBQUNBLFdBQUtFLElBQUwsQ0FBVSxTQUFWLEVBQXFCRixPQUFyQjtBQUVBLGFBQU8sSUFBUDtBQUNIOzs7Z0NBRWdDO0FBQUEsVUFBdkJELE1BQXVCLHVFQUFkLFlBQWM7QUFDN0IsV0FBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsV0FBS0csSUFBTCxDQUFVLFFBQVYsRUFBb0JILE1BQXBCO0FBRUEsYUFBTyxJQUFQO0FBQ0g7Ozs7Ozs7Ozs7Ozs7a0JBRTJDO0FBQUE7O0FBQUEsVUFBdENJLFFBQXNDLHVFQUEzQjtBQUFBLGVBQU0sSUFBTjtBQUFBLE9BQTJCO0FBQUEsVUFBZkMsS0FBZSx1RUFBUCxLQUFPO0FBQ3hDLFVBQUlDLElBQUksR0FBRyxJQUFJQyxRQUFKLEVBQVg7QUFDQUQsVUFBSSxDQUFDRSxNQUFMLENBQVksYUFBWixFQUEyQkMsMkRBQTNCOztBQUVBLFVBQUlKLEtBQUosRUFBVztBQUNQQyxZQUFJLENBQUNFLE1BQUwsQ0FBWSxPQUFaLEVBQXFCLElBQXJCO0FBQ0g7O0FBRUQsV0FBS0wsSUFBTCxDQUFVLFVBQVYsRUFBc0IsSUFBdEI7QUFFQU8sV0FBSyxXQUFJRCxpRUFBSiw4QkFBZ0RBLHlEQUFoRCxpQkFBOEU7QUFDL0VFLG1CQUFXLEVBQUUsYUFEa0U7QUFFL0VDLGNBQU0sRUFBRSxNQUZ1RTtBQUcvRUMsWUFBSSxFQUFFUDtBQUh5RSxPQUE5RSxDQUFMLENBSUdRLElBSkgsQ0FJUSxVQUFDQyxRQUFELEVBQWM7QUFBRSxjQUFJLENBQUNiLEdBQUwsR0FBV2EsUUFBWDtBQUFxQixlQUFPQSxRQUFQO0FBQWtCLE9BSi9ELEVBS0tELElBTEwsQ0FLVUUsa0RBTFYsRUFNS0YsSUFOTCxDQU1VRyxnREFOVixFQU9LSCxJQVBMLENBT1UsVUFBQ0MsUUFBRDtBQUFBLGVBQWMsTUFBSSxDQUFDQSxRQUFMLENBQWNBLFFBQWQsQ0FBZDtBQUFBLE9BUFYsRUFRS0QsSUFSTCxDQVFVLFVBQUNDLFFBQUQ7QUFBQSxlQUFjWCxRQUFRLENBQUNXLFFBQUQsRUFBVyxNQUFJLENBQUNiLEdBQWhCLENBQXRCO0FBQUEsT0FSVixFQVNLWSxJQVRMLENBU1UsVUFBQ0MsUUFBRDtBQUFBLGVBQWMsTUFBSSxDQUFDWixJQUFMLENBQVUsU0FBVixFQUFxQixNQUFJLENBQUNGLE9BQTFCLEVBQW1DLE1BQUksQ0FBQ0MsR0FBeEMsRUFBNkMsTUFBN0MsQ0FBZDtBQUFBLE9BVFYsV0FVV2dCLHdEQVZYO0FBV0gsSzs7OzZCQUVRSCxTLEVBQVU7QUFDZixXQUFLZCxPQUFMLEdBQWVjLFNBQWY7QUFFQSxhQUFPQSxTQUFQO0FBQ0g7Ozs7RUFqRDRCSSwrQzs7O0FBb0QxQixJQUFJQyxRQUFRLEdBQUcsSUFBSXJCLEdBQUosRUFBZiIsImZpbGUiOiIuL2FwcC91dGlscy9ncG0uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZUpTT04sIHBhcnNlU3RhdHVzLCB1c2VyRmVlZGJhY2tFcnJvciB9IGZyb20gJy4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHUE0gZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICAgIGNvbnN0cnVjdG9yKGFjdGlvbiA9ICdnZXRVcGRhdGVzJykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBheWxvYWQgPSB7fTtcbiAgICAgICAgdGhpcy5yYXcgPSB7fTtcbiAgICAgICAgdGhpcy5hY3Rpb24gPSBhY3Rpb247XG4gICAgfVxuXG4gICAgc2V0UGF5bG9hZChwYXlsb2FkID0ge30pIHtcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gcGF5bG9hZDtcbiAgICAgICAgdGhpcy5lbWl0KCdwYXlsb2FkJywgcGF5bG9hZCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgc2V0QWN0aW9uKGFjdGlvbiA9ICdnZXRVcGRhdGVzJykge1xuICAgICAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgdGhpcy5lbWl0KCdhY3Rpb24nLCBhY3Rpb24pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZldGNoKGNhbGxiYWNrID0gKCkgPT4gdHJ1ZSwgZmx1c2ggPSBmYWxzZSkge1xuICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBkYXRhLmFwcGVuZCgnYWRtaW4tbm9uY2UnLCBjb25maWcuYWRtaW5fbm9uY2UpO1xuXG4gICAgICAgIGlmIChmbHVzaCkge1xuICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2ZsdXNoJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ2ZldGNoaW5nJywgdGhpcyk7XG5cbiAgICAgICAgZmV0Y2goYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS91cGRhdGUuanNvbi90YXNrJHtjb25maWcucGFyYW1fc2VwfWdldFVwZGF0ZXNgLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICAgICAgYm9keTogZGF0YVxuICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4geyB0aGlzLnJhdyA9IHJlc3BvbnNlOyByZXR1cm4gcmVzcG9uc2U7IH0pXG4gICAgICAgICAgICAudGhlbihwYXJzZVN0YXR1cylcbiAgICAgICAgICAgIC50aGVuKHBhcnNlSlNPTilcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gdGhpcy5yZXNwb25zZShyZXNwb25zZSkpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNhbGxiYWNrKHJlc3BvbnNlLCB0aGlzLnJhdykpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHRoaXMuZW1pdCgnZmV0Y2hlZCcsIHRoaXMucGF5bG9hZCwgdGhpcy5yYXcsIHRoaXMpKVxuICAgICAgICAgICAgLmNhdGNoKHVzZXJGZWVkYmFja0Vycm9yKTtcbiAgICB9XG5cbiAgICByZXNwb25zZShyZXNwb25zZSkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSByZXNwb25zZTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxufVxuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gbmV3IEdQTSgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/gpm.js\n");
/***/ }),
/***/ "./app/utils/jquery-utils.js":
/*!***********************************!*\
!*** ./app/utils/jquery-utils.js ***!
\***********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var speakingurl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! speakingurl */ \"./node_modules/speakingurl/index.js\");\n/* harmony import */ var speakingurl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(speakingurl__WEBPACK_IMPORTED_MODULE_1__);\nvar _this = undefined;\n\n\n // jQuery no parents filter\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().expr[\":\"].noparents) = jquery__WEBPACK_IMPORTED_MODULE_0___default().expr.createPseudo(function (text) {\n return function (element) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).parents(text).length < 1;\n };\n}); // Slugify\n// CommonJS and ES6 version of https://github.com/madflow/jquery-slugify\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().fn.slugify) = function (source, options) {\n return _this.each(function (element) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);\n var source = jquery__WEBPACK_IMPORTED_MODULE_0___default()(source);\n target.on('keyup change', function () {\n target.data('locked', target.val() !== '' && target.val() !== undefined);\n });\n source.on('keyup change', function () {\n if (target.data('locked') === true) {\n return true;\n }\n\n var isInput = target.is('input') || target.is('textarea');\n target[isInput ? 'val' : 'text'](jquery__WEBPACK_IMPORTED_MODULE_0___default().slugify(source.val(), options));\n });\n });\n}; // Static method.\n\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().slugify) = function (sourceString, options) {\n options = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, (jquery__WEBPACK_IMPORTED_MODULE_0___default().slugify.options), options);\n options.lang = options.lang || jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').prop('lang');\n\n if (typeof options.preSlug === 'function') {\n sourceString = options.preSlug(sourceString);\n }\n\n sourceString = options.slugFunc(sourceString, options);\n\n if (typeof options.postSlug === 'function') {\n sourceString = options.postSlug(sourceString);\n }\n\n return sourceString;\n}; // Default plugin options\n\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().slugify.options) = {\n preSlug: null,\n postSlug: null,\n slugFunc: function slugFunc(input, opts) {\n return speakingurl__WEBPACK_IMPORTED_MODULE_1___default()(input, opts);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2pxdWVyeS11dGlscy5qcz85MGRlIl0sIm5hbWVzIjpbIiQiLCJ0ZXh0IiwiZWxlbWVudCIsInBhcmVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJvcHRpb25zIiwiZWFjaCIsInRhcmdldCIsIm9uIiwiZGF0YSIsInZhbCIsInVuZGVmaW5lZCIsImlzSW5wdXQiLCJpcyIsInNvdXJjZVN0cmluZyIsImxhbmciLCJwcm9wIiwicHJlU2x1ZyIsInNsdWdGdW5jIiwicG9zdFNsdWciLCJpbnB1dCIsIm9wdHMiLCJnZXRTbHVnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Q0FHQTs7QUFDQUEsbUVBQUEsR0FBMkJBLCtEQUFBLENBQW9CLFVBQUNDLElBQUQ7QUFBQSxTQUFVLFVBQUNDLE9BQUQ7QUFBQSxXQUFhRiw2Q0FBQyxDQUFDRSxPQUFELENBQUQsQ0FBV0MsT0FBWCxDQUFtQkYsSUFBbkIsRUFBeUJHLE1BQXpCLEdBQWtDLENBQS9DO0FBQUEsR0FBVjtBQUFBLENBQXBCLENBQTNCLEMsQ0FFQTtBQUNBOztBQUNBSiwwREFBQSxHQUFlLFVBQUNLLE1BQUQsRUFBU0MsT0FBVCxFQUFxQjtBQUNoQyxTQUFPLEtBQUksQ0FBQ0MsSUFBTCxDQUFVLFVBQUNMLE9BQUQsRUFBYTtBQUMxQixRQUFJTSxNQUFNLEdBQUdSLDZDQUFDLENBQUNFLE9BQUQsQ0FBZDtBQUNBLFFBQUlHLE1BQU0sR0FBR0wsNkNBQUMsQ0FBQ0ssTUFBRCxDQUFkO0FBRUFHLFVBQU0sQ0FBQ0MsRUFBUCxDQUFVLGNBQVYsRUFBMEIsWUFBTTtBQUM1QkQsWUFBTSxDQUFDRSxJQUFQLENBQVksUUFBWixFQUFzQkYsTUFBTSxDQUFDRyxHQUFQLE9BQWlCLEVBQWpCLElBQXVCSCxNQUFNLENBQUNHLEdBQVAsT0FBaUJDLFNBQTlEO0FBQ0gsS0FGRDtBQUlBUCxVQUFNLENBQUNJLEVBQVAsQ0FBVSxjQUFWLEVBQTBCLFlBQU07QUFDNUIsVUFBSUQsTUFBTSxDQUFDRSxJQUFQLENBQVksUUFBWixNQUEwQixJQUE5QixFQUFvQztBQUFFLGVBQU8sSUFBUDtBQUFjOztBQUVwRCxVQUFJRyxPQUFPLEdBQUdMLE1BQU0sQ0FBQ00sRUFBUCxDQUFVLE9BQVYsS0FBc0JOLE1BQU0sQ0FBQ00sRUFBUCxDQUFVLFVBQVYsQ0FBcEM7QUFDQU4sWUFBTSxDQUFDSyxPQUFPLEdBQUcsS0FBSCxHQUFXLE1BQW5CLENBQU4sQ0FBaUNiLHFEQUFBLENBQVVLLE1BQU0sQ0FBQ00sR0FBUCxFQUFWLEVBQXdCTCxPQUF4QixDQUFqQztBQUNILEtBTEQ7QUFNSCxHQWRNLENBQVA7QUFlSCxDQWhCRCxDLENBa0JBOzs7QUFDQU4sdURBQUEsR0FBWSxVQUFDZSxZQUFELEVBQWVULE9BQWYsRUFBMkI7QUFDbkNBLFNBQU8sR0FBR04sb0RBQUEsQ0FBUyxFQUFULEVBQWFBLCtEQUFiLEVBQWdDTSxPQUFoQyxDQUFWO0FBQ0FBLFNBQU8sQ0FBQ1UsSUFBUixHQUFlVixPQUFPLENBQUNVLElBQVIsSUFBZ0JoQiw2Q0FBQyxDQUFDLE1BQUQsQ0FBRCxDQUFVaUIsSUFBVixDQUFlLE1BQWYsQ0FBL0I7O0FBRUEsTUFBSSxPQUFPWCxPQUFPLENBQUNZLE9BQWYsS0FBMkIsVUFBL0IsRUFBMkM7QUFDdkNILGdCQUFZLEdBQUdULE9BQU8sQ0FBQ1ksT0FBUixDQUFnQkgsWUFBaEIsQ0FBZjtBQUNIOztBQUVEQSxjQUFZLEdBQUdULE9BQU8sQ0FBQ2EsUUFBUixDQUFpQkosWUFBakIsRUFBK0JULE9BQS9CLENBQWY7O0FBRUEsTUFBSSxPQUFPQSxPQUFPLENBQUNjLFFBQWYsS0FBNEIsVUFBaEMsRUFBNEM7QUFDeENMLGdCQUFZLEdBQUdULE9BQU8sQ0FBQ2MsUUFBUixDQUFpQkwsWUFBakIsQ0FBZjtBQUNIOztBQUVELFNBQU9BLFlBQVA7QUFDSCxDQWZELEMsQ0FpQkE7OztBQUNBZiwrREFBQSxHQUFvQjtBQUNoQmtCLFNBQU8sRUFBRSxJQURPO0FBRWhCRSxVQUFRLEVBQUUsSUFGTTtBQUdoQkQsVUFBUSxFQUFFLGtCQUFDRSxLQUFELEVBQVFDLElBQVI7QUFBQSxXQUFpQkMsa0RBQU8sQ0FBQ0YsS0FBRCxFQUFRQyxJQUFSLENBQXhCO0FBQUE7QUFITSxDQUFwQiIsImZpbGUiOiIuL2FwcC91dGlscy9qcXVlcnktdXRpbHMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IGdldFNsdWcgZnJvbSAnc3BlYWtpbmd1cmwnO1xuXG4vLyBqUXVlcnkgbm8gcGFyZW50cyBmaWx0ZXJcbiQuZXhwclsnOiddWydub3BhcmVudHMnXSA9ICQuZXhwci5jcmVhdGVQc2V1ZG8oKHRleHQpID0+IChlbGVtZW50KSA9PiAkKGVsZW1lbnQpLnBhcmVudHModGV4dCkubGVuZ3RoIDwgMSk7XG5cbi8vIFNsdWdpZnlcbi8vIENvbW1vbkpTIGFuZCBFUzYgdmVyc2lvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vbWFkZmxvdy9qcXVlcnktc2x1Z2lmeVxuJC5mbi5zbHVnaWZ5ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICAgIHJldHVybiB0aGlzLmVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgbGV0IHRhcmdldCA9ICQoZWxlbWVudCk7XG4gICAgICAgIGxldCBzb3VyY2UgPSAkKHNvdXJjZSk7XG5cbiAgICAgICAgdGFyZ2V0Lm9uKCdrZXl1cCBjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICB0YXJnZXQuZGF0YSgnbG9ja2VkJywgdGFyZ2V0LnZhbCgpICE9PSAnJyAmJiB0YXJnZXQudmFsKCkgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNvdXJjZS5vbigna2V5dXAgY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRhcmdldC5kYXRhKCdsb2NrZWQnKSA9PT0gdHJ1ZSkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gICAgICAgICAgICBsZXQgaXNJbnB1dCA9IHRhcmdldC5pcygnaW5wdXQnKSB8fCB0YXJnZXQuaXMoJ3RleHRhcmVhJyk7XG4gICAgICAgICAgICB0YXJnZXRbaXNJbnB1dCA/ICd2YWwnIDogJ3RleHQnXSgkLnNsdWdpZnkoc291cmNlLnZhbCgpLCBvcHRpb25zKSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuLy8gU3RhdGljIG1ldGhvZC5cbiQuc2x1Z2lmeSA9IChzb3VyY2VTdHJpbmcsIG9wdGlvbnMpID0+IHtcbiAgICBvcHRpb25zID0gJC5leHRlbmQoe30sICQuc2x1Z2lmeS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICBvcHRpb25zLmxhbmcgPSBvcHRpb25zLmxhbmcgfHwgJCgnaHRtbCcpLnByb3AoJ2xhbmcnKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wcmVTbHVnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHNvdXJjZVN0cmluZyA9IG9wdGlvbnMucHJlU2x1Zyhzb3VyY2VTdHJpbmcpO1xuICAgIH1cblxuICAgIHNvdXJjZVN0cmluZyA9IG9wdGlvbnMuc2x1Z0Z1bmMoc291cmNlU3RyaW5nLCBvcHRpb25zKTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wb3N0U2x1ZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzb3VyY2VTdHJpbmcgPSBvcHRpb25zLnBvc3RTbHVnKHNvdXJjZVN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZVN0cmluZztcbn07XG5cbi8vIERlZmF1bHQgcGx1Z2luIG9wdGlvbnNcbiQuc2x1Z2lmeS5vcHRpb25zID0ge1xuICAgIHByZVNsdWc6IG51bGwsXG4gICAgcG9zdFNsdWc6IG51bGwsXG4gICAgc2x1Z0Z1bmM6IChpbnB1dCwgb3B0cykgPT4gZ2V0U2x1ZyhpbnB1dCwgb3B0cylcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/jquery-utils.js\n");
/***/ }),
/***/ "./app/utils/keepalive.js":
/*!********************************!*\
!*** ./app/utils/keepalive.js ***!
\********************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _response__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./response */ \"./app/utils/response.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar KeepAlive = /*#__PURE__*/function () {\n function KeepAlive() {\n _classCallCheck(this, KeepAlive);\n\n this.active = false;\n }\n\n _createClass(KeepAlive, [{\n key: \"start\",\n value: function start() {\n var _this = this;\n\n var timeout = grav_config__WEBPACK_IMPORTED_MODULE_0__.config.admin_timeout / 1.5 * 1000;\n this.timer = setInterval(function () {\n return _this.fetch();\n }, timeout);\n this.active = true;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n clearInterval(this.timer);\n this.active = false;\n }\n }, {\n key: \"fetch\",\n value: function (_fetch) {\n function fetch() {\n return _fetch.apply(this, arguments);\n }\n\n fetch.toString = function () {\n return _fetch.toString();\n };\n\n return fetch;\n }(function () {\n var data = new FormData();\n data.append('admin-nonce', grav_config__WEBPACK_IMPORTED_MODULE_0__.config.admin_nonce);\n fetch(\"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_0__.config.base_url_relative, \"/task\").concat(grav_config__WEBPACK_IMPORTED_MODULE_0__.config.param_sep, \"keepAlive\"), {\n credentials: 'same-origin',\n method: 'post',\n body: data\n })[\"catch\"](_response__WEBPACK_IMPORTED_MODULE_1__.userFeedbackError);\n })\n }]);\n\n return KeepAlive;\n}();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new KeepAlive());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL2tlZXBhbGl2ZS5qcz9jNWNhIl0sIm5hbWVzIjpbIktlZXBBbGl2ZSIsImFjdGl2ZSIsInRpbWVvdXQiLCJjb25maWciLCJ0aW1lciIsInNldEludGVydmFsIiwiZmV0Y2giLCJjbGVhckludGVydmFsIiwiZGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJib2R5IiwidXNlckZlZWRiYWNrRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztJQUVNQSxTO0FBQ0YsdUJBQWM7QUFBQTs7QUFDVixTQUFLQyxNQUFMLEdBQWMsS0FBZDtBQUNIOzs7OzRCQUVPO0FBQUE7O0FBQ0osVUFBSUMsT0FBTyxHQUFHQyw2REFBQSxHQUF1QixHQUF2QixHQUE2QixJQUEzQztBQUNBLFdBQUtDLEtBQUwsR0FBYUMsV0FBVyxDQUFDO0FBQUEsZUFBTSxLQUFJLENBQUNDLEtBQUwsRUFBTjtBQUFBLE9BQUQsRUFBcUJKLE9BQXJCLENBQXhCO0FBQ0EsV0FBS0QsTUFBTCxHQUFjLElBQWQ7QUFDSDs7OzJCQUVNO0FBQ0hNLG1CQUFhLENBQUMsS0FBS0gsS0FBTixDQUFiO0FBQ0EsV0FBS0gsTUFBTCxHQUFjLEtBQWQ7QUFDSDs7Ozs7Ozs7Ozs7OztrQkFFTztBQUNKLFVBQUlPLElBQUksR0FBRyxJQUFJQyxRQUFKLEVBQVg7QUFDQUQsVUFBSSxDQUFDRSxNQUFMLENBQVksYUFBWixFQUEyQlAsMkRBQTNCO0FBRUFHLFdBQUssV0FBSUgsaUVBQUosa0JBQW9DQSx5REFBcEMsZ0JBQWlFO0FBQ2xFUSxtQkFBVyxFQUFFLGFBRHFEO0FBRWxFQyxjQUFNLEVBQUUsTUFGMEQ7QUFHbEVDLFlBQUksRUFBRUw7QUFINEQsT0FBakUsQ0FBTCxVQUlTTSx3REFKVDtBQUtILEs7Ozs7OztBQUdMLGlFQUFlLElBQUlkLFNBQUosRUFBZiIsImZpbGUiOiIuL2FwcC91dGlscy9rZWVwYWxpdmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25maWcgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgeyB1c2VyRmVlZGJhY2tFcnJvciB9IGZyb20gJy4vcmVzcG9uc2UnO1xuXG5jbGFzcyBLZWVwQWxpdmUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHN0YXJ0KCkge1xuICAgICAgICBsZXQgdGltZW91dCA9IGNvbmZpZy5hZG1pbl90aW1lb3V0IC8gMS41ICogMTAwMDtcbiAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKCgpID0+IHRoaXMuZmV0Y2goKSwgdGltZW91dCk7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzdG9wKCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGZldGNoKCkge1xuICAgICAgICBsZXQgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBkYXRhLmFwcGVuZCgnYWRtaW4tbm9uY2UnLCBjb25maWcuYWRtaW5fbm9uY2UpO1xuXG4gICAgICAgIGZldGNoKGAke2NvbmZpZy5iYXNlX3VybF9yZWxhdGl2ZX0vdGFzayR7Y29uZmlnLnBhcmFtX3NlcH1rZWVwQWxpdmVgLCB7XG4gICAgICAgICAgICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICAgICAgYm9keTogZGF0YVxuICAgICAgICB9KS5jYXRjaCh1c2VyRmVlZGJhY2tFcnJvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgS2VlcEFsaXZlKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/keepalive.js\n");
/***/ }),
/***/ "./app/utils/offline.js":
/*!******************************!*\
!*** ./app/utils/offline.js ***!
\******************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_offline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/offline */ \"./app/utils/offline.js\");\n\n\nvar offlineElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#offline-status');\njquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('offline', function () {\n offlineElement.slideDown();\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('online', function () {\n offlineElement.slideUp();\n});\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n if (!_utils_offline__WEBPACK_IMPORTED_MODULE_1__.default) {\n offlineElement.slideDown();\n }\n}); // assume online if can't check\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (typeof __webpack_require__.g.navigator.onLine !== 'undefined' ? __webpack_require__.g.navigator.onLine : true);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL29mZmxpbmUuanM/ODc0ZSJdLCJuYW1lcyI6WyJvZmZsaW5lRWxlbWVudCIsIiQiLCJ3aW5kb3ciLCJvbiIsInNsaWRlRG93biIsInNsaWRlVXAiLCJkb2N1bWVudCIsInJlYWR5IiwiaXNPbmxpbmUiLCJnbG9iYWwiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBRUEsSUFBTUEsY0FBYyxHQUFHQyw2Q0FBQyxDQUFDLGlCQUFELENBQXhCO0FBRUFBLDZDQUFDLENBQUNDLE1BQUQsQ0FBRCxDQUFVQyxFQUFWLENBQWEsU0FBYixFQUF3QixZQUFNO0FBQzFCSCxnQkFBYyxDQUFDSSxTQUFmO0FBQ0gsQ0FGRDtBQUlBSCw2Q0FBQyxDQUFDQyxNQUFELENBQUQsQ0FBVUMsRUFBVixDQUFhLFFBQWIsRUFBdUIsWUFBTTtBQUN6QkgsZ0JBQWMsQ0FBQ0ssT0FBZjtBQUNILENBRkQ7QUFJQUosNkNBQUMsQ0FBQ0ssUUFBRCxDQUFELENBQVlDLEtBQVosQ0FBa0IsWUFBTTtBQUNwQixNQUFJLENBQUNDLG1EQUFMLEVBQWU7QUFDWFIsa0JBQWMsQ0FBQ0ksU0FBZjtBQUNIO0FBQ0osQ0FKRCxFLENBTUE7O0FBQ0EsaUVBQWUsT0FBT0sscUJBQU0sQ0FBQ0MsU0FBUCxDQUFpQkMsTUFBeEIsS0FBbUMsV0FBbkMsR0FBaURGLHFCQUFNLENBQUNDLFNBQVAsQ0FBaUJDLE1BQWxFLEdBQTJFLElBQTFGIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL29mZmxpbmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IGlzT25saW5lIGZyb20gJy4uL3V0aWxzL29mZmxpbmUnO1xuXG5jb25zdCBvZmZsaW5lRWxlbWVudCA9ICQoJyNvZmZsaW5lLXN0YXR1cycpO1xuXG4kKHdpbmRvdykub24oJ29mZmxpbmUnLCAoKSA9PiB7XG4gICAgb2ZmbGluZUVsZW1lbnQuc2xpZGVEb3duKCk7XG59KTtcblxuJCh3aW5kb3cpLm9uKCdvbmxpbmUnLCAoKSA9PiB7XG4gICAgb2ZmbGluZUVsZW1lbnQuc2xpZGVVcCgpO1xufSk7XG5cbiQoZG9jdW1lbnQpLnJlYWR5KCgpID0+IHtcbiAgICBpZiAoIWlzT25saW5lKSB7XG4gICAgICAgIG9mZmxpbmVFbGVtZW50LnNsaWRlRG93bigpO1xuICAgIH1cbn0pO1xuXG4vLyBhc3N1bWUgb25saW5lIGlmIGNhbid0IGNoZWNrXG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgZ2xvYmFsLm5hdmlnYXRvci5vbkxpbmUgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsLm5hdmlnYXRvci5vbkxpbmUgOiB0cnVlO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/offline.js\n");
/***/ }),
/***/ "./app/utils/packages.js":
/*!*******************************!*\
!*** ./app/utils/packages.js ***!
\*******************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var _utils_gpm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/gpm */ \"./app/utils/gpm.js\");\n/* harmony import */ var es6_promise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! es6-promise */ \"./node_modules/es6-promise/dist/es6-promise.js\");\n/* harmony import */ var es6_promise__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(es6_promise__WEBPACK_IMPORTED_MODULE_4__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\nvar Sorter = /*#__PURE__*/function () {\n function Sorter() {\n _classCallCheck(this, Sorter);\n }\n\n _createClass(Sorter, [{\n key: \"getElements\",\n value: function getElements(elements, container) {\n this.elements = elements || jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-gpm-plugin], [data-gpm-theme]');\n this.container = container || jquery__WEBPACK_IMPORTED_MODULE_0___default()('.gpm-plugins > table > tbody, .gpm-themes > .themes.card-row');\n return this.elements;\n }\n }, {\n key: \"byCommon\",\n value: function byCommon() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var elements = this.getElements().sort(function (a, b) {\n var A = jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).data(data).toString().toLowerCase();\n var B = jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).data(data).toString().toLowerCase();\n return Sorter.sort(A, B, direction);\n });\n return elements.appendTo(this.container);\n }\n }, {\n key: \"byName\",\n value: function byName() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-name';\n return this.byCommon(direction, data);\n }\n }, {\n key: \"byAuthor\",\n value: function byAuthor() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-author';\n return this.byCommon(direction, data);\n }\n }, {\n key: \"byOfficial\",\n value: function byOfficial() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-official';\n return this.byCommon(direction, data);\n }\n }, {\n key: \"byReleaseDate\",\n value: function byReleaseDate() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-release-date';\n var elements = this.getElements().sort(function (a, b) {\n var A = new Date(jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).data(data)).getTime();\n var B = new Date(jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).data(data)).getTime();\n return Sorter.sort(A, B, direction === 'asc' ? 'desc' : 'asc');\n });\n elements.appendTo(this.container);\n }\n }, {\n key: \"byUpdatable\",\n value: function byUpdatable() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-updatable';\n return this.byCommon(direction, data);\n }\n }, {\n key: \"byEnabled\",\n value: function byEnabled() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-enabled';\n return this.byCommon(direction, data);\n }\n }, {\n key: \"byTesting\",\n value: function byTesting() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gpm-testing';\n return this.byCommon(direction, data);\n }\n }], [{\n key: \"sort\",\n value: function sort(A, B) {\n var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'asc';\n\n if (A > B) {\n return direction === 'asc' ? 1 : -1;\n }\n\n if (A < B) {\n return direction === 'asc' ? -1 : 1;\n }\n\n return 0;\n }\n }]);\n\n return Sorter;\n}();\n\nvar Packages = /*#__PURE__*/function () {\n function Packages() {\n _classCallCheck(this, Packages);\n\n this.Sort = new Sorter();\n }\n\n _createClass(Packages, [{\n key: \"addDependenciesToList\",\n value: function addDependenciesToList(dependencies) {\n var slug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n dependencies.forEach(function (dependency) {\n Packages.addDependencyToList('plugin', dependency.name || dependency, slug);\n });\n }\n }, {\n key: \"removePackage\",\n value: function removePackage(type, slug) {\n var _this = this;\n\n var url = Packages.getRemovePackageUrl(type);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n \"package\": slug\n }\n }, function (response) {\n if (response.status === 'success') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remove-package-confirm').addClass('hidden');\n\n if (response.dependencies && response.dependencies.length > 0) {\n _this.addDependenciesToList(response.dependencies);\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remove-package-dependencies').removeClass('hidden');\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remove-package-done').removeClass('hidden');\n } // The package was removed. When the modal closes, move to the packages list\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on('closing', '[data-remodal-id=\"remove-package\"]', function () {\n Packages.getBackToList(type);\n });\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remove-package-confirm').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.remove-package-error').removeClass('hidden');\n }\n });\n }\n }, {\n key: \"reinstallPackage\",\n value: function reinstallPackage(type, slug, package_name, current_version) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.button-bar button').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.button-bar .spinning-wheel').removeClass('hidden');\n var url = Packages.getReinstallPackageUrl(type);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n slug: slug,\n type: type,\n package_name: package_name,\n current_version: current_version\n }\n }, function (response) {\n if (response.status === 'success') {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reinstall-package-confirm').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reinstall-package-done').removeClass('hidden');\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reinstall-package-confirm').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reinstall-package-error').removeClass('hidden');\n }\n\n window.location.reload();\n });\n }\n }, {\n key: \"removeDependency\",\n value: function removeDependency(type, slug, button) {\n var _this2 = this;\n\n var url = Packages.getRemovePackageUrl(type);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n \"package\": slug\n }\n }, function (response) {\n if (response.status === 'success') {\n button.removeClass('button');\n button.replaceWith(jquery__WEBPACK_IMPORTED_MODULE_0___default()('Removed successfully '));\n\n if (response.dependencies && response.dependencies.length > 0) {\n _this2.addDependenciesToList(response.dependencies, slug);\n }\n }\n });\n }\n }, {\n key: \"getPackagesDependencies\",\n value: function getPackagesDependencies(type, slugs, finishedLoadingCallback) {\n var url = Packages.getGetPackagesDependenciesUrl(type);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n packages: slugs\n }\n }, function (response) {\n finishedLoadingCallback();\n\n if (response.status === 'success') {\n if (response.dependencies) {\n var hasDependencies = false;\n\n for (var dependency in response.dependencies) {\n if (response.dependencies.hasOwnProperty(dependency)) {\n if (dependency === 'grav') {\n continue;\n }\n\n hasDependencies = true;\n var dependencyName = dependency;\n var action = response.dependencies[dependency];\n Packages.addNeededDependencyToList(action, dependencyName);\n }\n }\n\n if (hasDependencies) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-dependencies-package-container').removeClass('hidden');\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-container').removeClass('hidden');\n }\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-container').removeClass('hidden');\n }\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-error').removeClass('hidden');\n }\n });\n }\n }, {\n key: \"installDependenciesOfPackages\",\n value: function installDependenciesOfPackages(type, slugs, callbackSuccess, callbackError) {\n var url = Packages.getInstallDependenciesOfPackagesUrl(type);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n packages: slugs\n }\n }, callbackSuccess);\n }\n }, {\n key: \"installPackages\",\n value: function installPackages(type, slugs, callbackSuccess) {\n var url = Packages.getInstallPackageUrl(type);\n es6_promise__WEBPACK_IMPORTED_MODULE_4__.Promise.all(slugs.map(function (slug) {\n return new es6_promise__WEBPACK_IMPORTED_MODULE_4__.Promise(function (resolve, reject) {\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: {\n \"package\": slug,\n type: type\n }\n }, function (response) {\n resolve(response);\n });\n });\n })).then(callbackSuccess);\n }\n }, {\n key: \"handleGettingPackageDependencies\",\n value: function handleGettingPackageDependencies(type, event) {\n var action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'update';\n var slugs = Packages.getSlugsFromEvent(event);\n\n if (!slugs) {\n alert('No slug set');\n return;\n } // Cleanup\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.packages-names-list').html('');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.install-dependencies-package-container li').remove();\n slugs.forEach(function (slug) {\n if (action === 'update') {\n var current_version = '';\n var available_version = '';\n var _name = '';\n var resources = _utils_gpm__WEBPACK_IMPORTED_MODULE_3__.Instance.payload.payload.resources;\n\n if (resources.plugins[slug]) {\n available_version = resources.plugins[slug].available;\n current_version = resources.plugins[slug].version;\n _name = resources.plugins[slug].name;\n } else if (resources.themes[slug]) {\n available_version = resources.themes[slug].available;\n current_version = resources.themes[slug].version;\n _name = resources.themes[slug].name;\n }\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.packages-names-list').append(\"\".concat(_name ? _name : slug, \", \").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.FROM, \" v\").concat(current_version, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.TO, \" v\").concat(available_version, \" \"));\n } else {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.packages-names-list').append(\"\".concat(name ? name : slug, \" \"));\n }\n });\n event.preventDefault();\n event.stopPropagation(); // fix mismatching types when sharing install modal between plugins/themes\n\n var query = '[data-packages-modal] [data-theme-action], [data-packages-modal] [data-plugin-action]';\n var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(query).data('themeAction') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(query).data('pluginAction');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(query).removeAttr('data-theme-action').removeAttr('data-plugin-action').attr(\"data-\".concat(type, \"-action\"), data); // Restore original state\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .loading').removeClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-dependencies-package-container').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-container').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-dependencies').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-package').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installation-complete').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-error').addClass('hidden');\n this.getPackagesDependencies(type, slugs, function () {\n var slugs_string = slugs.join();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-packages-modal] [data-\".concat(type, \"-action=\\\"install-dependencies-and-package\\\"]\")).attr('data-packages-slugs', slugs_string);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[data-packages-modal] [data-\".concat(type, \"-action=\\\"install-package\\\"]\")).attr('data-packages-slugs', slugs_string);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .loading').addClass('hidden');\n });\n }\n }, {\n key: \"handleInstallingDependenciesAndPackage\",\n value: function handleInstallingDependenciesAndPackage(type, event) {\n var _this3 = this;\n\n var slugs = Packages.getSlugsFromEvent(event);\n event.preventDefault();\n event.stopPropagation();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-dependencies-package-container').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-container').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-dependencies').removeClass('hidden');\n this.installDependenciesOfPackages(type, slugs, function (response) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-dependencies').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-package').removeClass('hidden');\n\n _this3.installPackages(type, slugs, function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-package').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installation-complete').removeClass('hidden');\n\n if (response.status === 'error') {\n var remodal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal]').data('remodal')];\n remodal.close();\n return;\n }\n\n setTimeout(function () {\n if (slugs.length === 1) {\n __webpack_require__.g.location.href = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/\").concat(type, \"s/\").concat(slugs[0]);\n } else {\n __webpack_require__.g.location.href = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/\").concat(type, \"s\");\n }\n }, 1000);\n });\n });\n }\n }, {\n key: \"handleInstallingPackage\",\n value: function handleInstallingPackage(type, event) {\n var slugs = Packages.getSlugsFromEvent(event);\n event.preventDefault();\n event.stopPropagation();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .install-package-container').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-package').removeClass('hidden');\n this.installPackages(type, slugs, function (response) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installing-package').addClass('hidden');\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal] .installation-complete').removeClass('hidden');\n var errors = Array.from(response).filter(function (r) {\n return r.status === 'error';\n });\n\n if (errors && errors.length) {\n var remodal = (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-packages-modal].remodal-is-opened').data('remodal')];\n remodal.close();\n return;\n }\n\n if (slugs.length === 1) {\n __webpack_require__.g.location.href = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/\").concat(type, \"s/\").concat(slugs[0]);\n } else {\n __webpack_require__.g.location.href = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/\").concat(type, \"s\");\n }\n });\n }\n }, {\n key: \"handleRemovingPackage\",\n value: function handleRemovingPackage(type, event) {\n var slug = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).attr('data-packages-slugs');\n event.preventDefault();\n event.stopPropagation();\n this.removePackage(type, slug);\n }\n }, {\n key: \"handleReinstallPackage\",\n value: function handleReinstallPackage(type, event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var slug = target.attr('data-package-slug');\n var package_name = target.attr('data-package-name');\n var current_version = target.attr('data-package-current-version');\n event.preventDefault();\n event.stopPropagation();\n this.reinstallPackage(type, slug, package_name, current_version);\n }\n }, {\n key: \"handleRemovingDependency\",\n value: function handleRemovingDependency(type, event) {\n var slug = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).attr('data-dependency-slug');\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n event.preventDefault();\n event.stopPropagation();\n this.removeDependency(type, slug, button);\n }\n }], [{\n key: \"getBackToList\",\n value: function getBackToList(type) {\n __webpack_require__.g.location.href = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative, \"/\").concat(type, \"s\");\n }\n }, {\n key: \"addDependencyToList\",\n value: function addDependencyToList(type, dependency) {\n var slug = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (['admin', 'form', 'login', 'email', 'grav'].indexOf(dependency) !== -1) {\n return;\n }\n\n var container = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.package-dependencies-container');\n var text = \"\".concat(dependency, \" Remove \");\n\n if (slug) {\n text += \" (was needed by \".concat(slug, \")\");\n }\n\n container.append(\"\".concat(text, \" \"));\n }\n }, {\n key: \"getTaskUrl\",\n value: function getTaskUrl(type, task) {\n var url = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.base_url_relative);\n url += \"/\".concat(type, \"s.json\");\n url += \"/task\".concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.config.param_sep).concat(task);\n return url;\n }\n }, {\n key: \"getRemovePackageUrl\",\n value: function getRemovePackageUrl(type) {\n return \"\".concat(Packages.getTaskUrl(type, 'removePackage'));\n }\n }, {\n key: \"getReinstallPackageUrl\",\n value: function getReinstallPackageUrl(type) {\n return \"\".concat(Packages.getTaskUrl(type, 'reinstallPackage'));\n }\n }, {\n key: \"getGetPackagesDependenciesUrl\",\n value: function getGetPackagesDependenciesUrl(type) {\n return \"\".concat(Packages.getTaskUrl(type, 'getPackagesDependencies'));\n }\n }, {\n key: \"getInstallDependenciesOfPackagesUrl\",\n value: function getInstallDependenciesOfPackagesUrl(type) {\n return \"\".concat(Packages.getTaskUrl(type, 'installDependenciesOfPackages'));\n }\n }, {\n key: \"getInstallPackageUrl\",\n value: function getInstallPackageUrl(type) {\n return \"\".concat(Packages.getTaskUrl(type, 'installPackage'));\n }\n }, {\n key: \"addNeededDependencyToList\",\n value: function addNeededDependencyToList(action, slug) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.install-dependencies-package-container .type-' + action).removeClass('hidden');\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.install-dependencies-package-container .type-' + action + ' ul');\n\n if (action !== 'install') {\n var current_version = '';\n var available_version = '';\n var _name2 = '';\n var resources = _utils_gpm__WEBPACK_IMPORTED_MODULE_3__.Instance.payload.payload.resources;\n\n if (resources.plugins[slug]) {\n available_version = resources.plugins[slug].available;\n current_version = resources.plugins[slug].version;\n _name2 = resources.plugins[slug].name;\n } else if (resources.themes[slug]) {\n available_version = resources.themes[slug].available;\n current_version = resources.themes[slug].version;\n _name2 = resources.themes[slug].name;\n }\n\n list.append(\"\".concat(_name2 ? _name2 : slug, \", \").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.FROM, \" v\").concat(current_version, \" \").concat(grav_config__WEBPACK_IMPORTED_MODULE_1__.translations.PLUGIN_ADMIN.TO, \" v\").concat(available_version, \" \"));\n } else {\n list.append(\"\".concat(name ? name : slug, \" \"));\n }\n }\n }, {\n key: \"getSlugsFromEvent\",\n value: function getSlugsFromEvent(event) {\n var slugs = '';\n\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is('[data-packages-slugs]')) {\n slugs = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).attr('data-packages-slugs');\n } else {\n slugs = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parent('[data-packages-slugs]').attr('data-packages-slugs');\n }\n\n if (typeof slugs === 'undefined') {\n return null;\n }\n\n slugs = slugs.split(',');\n return typeof slugs === 'string' ? [slugs] : slugs;\n }\n }]);\n\n return Packages;\n}();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new Packages());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3BhY2thZ2VzLmpzP2VhZWEiXSwibmFtZXMiOlsiU29ydGVyIiwiZWxlbWVudHMiLCJjb250YWluZXIiLCIkIiwiZGlyZWN0aW9uIiwiZGF0YSIsImdldEVsZW1lbnRzIiwic29ydCIsImEiLCJiIiwiQSIsInRvU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJCIiwiYXBwZW5kVG8iLCJieUNvbW1vbiIsIkRhdGUiLCJnZXRUaW1lIiwiUGFja2FnZXMiLCJTb3J0IiwiZGVwZW5kZW5jaWVzIiwic2x1ZyIsImZvckVhY2giLCJkZXBlbmRlbmN5IiwiYWRkRGVwZW5kZW5jeVRvTGlzdCIsIm5hbWUiLCJ0eXBlIiwidXJsIiwiZ2V0UmVtb3ZlUGFja2FnZVVybCIsInJlcXVlc3QiLCJtZXRob2QiLCJib2R5IiwicmVzcG9uc2UiLCJzdGF0dXMiLCJhZGRDbGFzcyIsImxlbmd0aCIsImFkZERlcGVuZGVuY2llc1RvTGlzdCIsInJlbW92ZUNsYXNzIiwiZG9jdW1lbnQiLCJvbiIsImdldEJhY2tUb0xpc3QiLCJwYWNrYWdlX25hbWUiLCJjdXJyZW50X3ZlcnNpb24iLCJnZXRSZWluc3RhbGxQYWNrYWdlVXJsIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiLCJidXR0b24iLCJyZXBsYWNlV2l0aCIsInNsdWdzIiwiZmluaXNoZWRMb2FkaW5nQ2FsbGJhY2siLCJnZXRHZXRQYWNrYWdlc0RlcGVuZGVuY2llc1VybCIsInBhY2thZ2VzIiwiaGFzRGVwZW5kZW5jaWVzIiwiaGFzT3duUHJvcGVydHkiLCJkZXBlbmRlbmN5TmFtZSIsImFjdGlvbiIsImFkZE5lZWRlZERlcGVuZGVuY3lUb0xpc3QiLCJjYWxsYmFja1N1Y2Nlc3MiLCJjYWxsYmFja0Vycm9yIiwiZ2V0SW5zdGFsbERlcGVuZGVuY2llc09mUGFja2FnZXNVcmwiLCJnZXRJbnN0YWxsUGFja2FnZVVybCIsIlByb21pc2UiLCJtYXAiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsImV2ZW50IiwiZ2V0U2x1Z3NGcm9tRXZlbnQiLCJhbGVydCIsImh0bWwiLCJyZW1vdmUiLCJhdmFpbGFibGVfdmVyc2lvbiIsInJlc291cmNlcyIsImdwbSIsInBsdWdpbnMiLCJhdmFpbGFibGUiLCJ2ZXJzaW9uIiwidGhlbWVzIiwiYXBwZW5kIiwidHJhbnNsYXRpb25zIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJxdWVyeSIsInJlbW92ZUF0dHIiLCJhdHRyIiwiZ2V0UGFja2FnZXNEZXBlbmRlbmNpZXMiLCJzbHVnc19zdHJpbmciLCJqb2luIiwiaW5zdGFsbERlcGVuZGVuY2llc09mUGFja2FnZXMiLCJpbnN0YWxsUGFja2FnZXMiLCJyZW1vZGFsIiwiY2xvc2UiLCJzZXRUaW1lb3V0IiwiZ2xvYmFsIiwiaHJlZiIsImNvbmZpZyIsImVycm9ycyIsIkFycmF5IiwiZnJvbSIsImZpbHRlciIsInIiLCJ0YXJnZXQiLCJyZW1vdmVQYWNrYWdlIiwicmVpbnN0YWxsUGFja2FnZSIsInJlbW92ZURlcGVuZGVuY3kiLCJpbmRleE9mIiwidGV4dCIsInRhc2siLCJnZXRUYXNrVXJsIiwibGlzdCIsImlzIiwicGFyZW50Iiwic3BsaXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRU1BLE07Ozs7Ozs7Z0NBQ1VDLFEsRUFBVUMsUyxFQUFXO0FBQzdCLFdBQUtELFFBQUwsR0FBZ0JBLFFBQVEsSUFBSUUsNkNBQUMsQ0FBQyxxQ0FBRCxDQUE3QjtBQUNBLFdBQUtELFNBQUwsR0FBaUJBLFNBQVMsSUFBSUMsNkNBQUMsQ0FBQyw4REFBRCxDQUEvQjtBQUNBLGFBQU8sS0FBS0YsUUFBWjtBQUNIOzs7K0JBU3NDO0FBQUEsVUFBOUJHLFNBQThCLHVFQUFsQixLQUFrQjtBQUFBLFVBQVhDLElBQVcsdUVBQUosRUFBSTtBQUNuQyxVQUFJSixRQUFRLEdBQUcsS0FBS0ssV0FBTCxHQUFtQkMsSUFBbkIsQ0FB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QUFuQixDQUFKLEVBQWlEO0FBQzdDOUQsYUFBSyxHQUFHOUMsNkNBQUMsQ0FBQ2dFLEtBQUssQ0FBQ21DLE1BQVAsQ0FBRCxDQUFnQmpCLElBQWhCLENBQXFCLHFCQUFyQixDQUFSO0FBQ0gsT0FGRCxNQUVPO0FBQ0hwQyxhQUFLLEdBQUc5Qyw2Q0FBQyxDQUFDZ0UsS0FBSyxDQUFDbUMsTUFBUCxDQUFELENBQWdCVSxNQUFoQixDQUF1Qix1QkFBdkIsRUFBZ0QzQixJQUFoRCxDQUFxRCxxQkFBckQsQ0FBUjtBQUNIOztBQUVELFVBQUksT0FBT3BDLEtBQVAsS0FBaUIsV0FBckIsRUFBa0M7QUFDOUIsZUFBTyxJQUFQO0FBQ0g7O0FBRURBLFdBQUssR0FBR0EsS0FBSyxDQUFDZ0UsS0FBTixDQUFZLEdBQVosQ0FBUjtBQUNBLGFBQU8sT0FBT2hFLEtBQVAsS0FBaUIsUUFBakIsR0FBNEIsQ0FBQ0EsS0FBRCxDQUE1QixHQUFzQ0EsS0FBN0M7QUFDSDs7Ozs7O0FBOEpMLGlFQUFlLElBQUkvQixRQUFKLEVBQWYiLCJmaWxlIjoiLi9hcHAvdXRpbHMvcGFja2FnZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgY29uZmlnLCB0cmFuc2xhdGlvbnMgfSBmcm9tICdncmF2LWNvbmZpZyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCB7IEluc3RhbmNlIGFzIGdwbSB9IGZyb20gJy4uL3V0aWxzL2dwbSc7XG5pbXBvcnQgeyBQcm9taXNlIH0gZnJvbSAnZXM2LXByb21pc2UnO1xuXG5jbGFzcyBTb3J0ZXIge1xuICAgIGdldEVsZW1lbnRzKGVsZW1lbnRzLCBjb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzIHx8ICQoJ1tkYXRhLWdwbS1wbHVnaW5dLCBbZGF0YS1ncG0tdGhlbWVdJyk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyIHx8ICQoJy5ncG0tcGx1Z2lucyA+IHRhYmxlID4gdGJvZHksIC5ncG0tdGhlbWVzID4gLnRoZW1lcy5jYXJkLXJvdycpO1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgc29ydChBLCBCLCBkaXJlY3Rpb24gPSAnYXNjJykge1xuICAgICAgICBpZiAoQSA+IEIpIHsgcmV0dXJuIChkaXJlY3Rpb24gPT09ICdhc2MnKSA/IDEgOiAtMTsgfVxuICAgICAgICBpZiAoQSA8IEIpIHsgcmV0dXJuIChkaXJlY3Rpb24gPT09ICdhc2MnKSA/IC0xIDogMTsgfVxuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGJ5Q29tbW9uKGRpcmVjdGlvbiA9ICdhc2MnLCBkYXRhID0gJycpIHtcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gdGhpcy5nZXRFbGVtZW50cygpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGxldCBBID0gJChhKS5kYXRhKGRhdGEpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBCID0gJChiKS5kYXRhKGRhdGEpLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgcmV0dXJuIFNvcnRlci5zb3J0KEEsIEIsIGRpcmVjdGlvbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbGVtZW50cy5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgYnlOYW1lKGRpcmVjdGlvbiA9ICdhc2MnLCBkYXRhID0gJ2dwbS1uYW1lJykge1xuICAgICAgICByZXR1cm4gdGhpcy5ieUNvbW1vbihkaXJlY3Rpb24sIGRhdGEpO1xuICAgIH1cblxuICAgIGJ5QXV0aG9yKGRpcmVjdGlvbiA9ICdhc2MnLCBkYXRhID0gJ2dwbS1hdXRob3InKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5Q29tbW9uKGRpcmVjdGlvbiwgZGF0YSk7XG4gICAgfVxuXG4gICAgYnlPZmZpY2lhbChkaXJlY3Rpb24gPSAnYXNjJywgZGF0YSA9ICdncG0tb2ZmaWNpYWwnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5Q29tbW9uKGRpcmVjdGlvbiwgZGF0YSk7XG4gICAgfVxuXG4gICAgYnlSZWxlYXNlRGF0ZShkaXJlY3Rpb24gPSAnYXNjJywgZGF0YSA9ICdncG0tcmVsZWFzZS1kYXRlJykge1xuICAgICAgICBsZXQgZWxlbWVudHMgPSB0aGlzLmdldEVsZW1lbnRzKCkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgbGV0IEEgPSBuZXcgRGF0ZSgkKGEpLmRhdGEoZGF0YSkpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGxldCBCID0gbmV3IERhdGUoJChiKS5kYXRhKGRhdGEpKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBTb3J0ZXIuc29ydChBLCBCLCBkaXJlY3Rpb24gPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYycpO1xuICAgICAgICB9KTtcblxuICAgICAgICBlbGVtZW50cy5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgYnlVcGRhdGFibGUoZGlyZWN0aW9uID0gJ2FzYycsIGRhdGEgPSAnZ3BtLXVwZGF0YWJsZScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnlDb21tb24oZGlyZWN0aW9uLCBkYXRhKTtcbiAgICB9XG5cbiAgICBieUVuYWJsZWQoZGlyZWN0aW9uID0gJ2FzYycsIGRhdGEgPSAnZ3BtLWVuYWJsZWQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ5Q29tbW9uKGRpcmVjdGlvbiwgZGF0YSk7XG4gICAgfVxuXG4gICAgYnlUZXN0aW5nKGRpcmVjdGlvbiA9ICdhc2MnLCBkYXRhID0gJ2dwbS10ZXN0aW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5ieUNvbW1vbihkaXJlY3Rpb24sIGRhdGEpO1xuICAgIH1cbn1cblxuY2xhc3MgUGFja2FnZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLlNvcnQgPSBuZXcgU29ydGVyKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEJhY2tUb0xpc3QodHlwZSkge1xuICAgICAgICBnbG9iYWwubG9jYXRpb24uaHJlZiA9IGAke2NvbmZpZy5iYXNlX3VybF9yZWxhdGl2ZX0vJHt0eXBlfXNgO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGREZXBlbmRlbmN5VG9MaXN0KHR5cGUsIGRlcGVuZGVuY3ksIHNsdWcgPSAnJykge1xuICAgICAgICBpZiAoWydhZG1pbicsICdmb3JtJywgJ2xvZ2luJywgJ2VtYWlsJywgJ2dyYXYnXS5pbmRleE9mKGRlcGVuZGVuY3kpICE9PSAtMSkgeyByZXR1cm47IH1cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9ICQoJy5wYWNrYWdlLWRlcGVuZGVuY2llcy1jb250YWluZXInKTtcbiAgICAgICAgbGV0IHRleHQgPSBgJHtkZXBlbmRlbmN5fSA8YSBocmVmPVwiI1wiIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1kZXBlbmRlbmN5LXNsdWc9XCIke2RlcGVuZGVuY3l9XCIgZGF0YS0ke3R5cGV9LWFjdGlvbj1cInJlbW92ZS1kZXBlbmRlbmN5LXBhY2thZ2VcIj5SZW1vdmU8L2E+YDtcblxuICAgICAgICBpZiAoc2x1Zykge1xuICAgICAgICAgICAgdGV4dCArPSBgICh3YXMgbmVlZGVkIGJ5ICR7c2x1Z30pYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmQoYDxsaT4ke3RleHR9PC9saT5gKTtcbiAgICB9XG5cbiAgICBhZGREZXBlbmRlbmNpZXNUb0xpc3QoZGVwZW5kZW5jaWVzLCBzbHVnID0gJycpIHtcbiAgICAgICAgZGVwZW5kZW5jaWVzLmZvckVhY2goKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICAgIFBhY2thZ2VzLmFkZERlcGVuZGVuY3lUb0xpc3QoJ3BsdWdpbicsIGRlcGVuZGVuY3kubmFtZSB8fCBkZXBlbmRlbmN5LCBzbHVnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFRhc2tVcmwodHlwZSwgdGFzaykge1xuICAgICAgICBsZXQgdXJsID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfWA7XG4gICAgICAgIHVybCArPSBgLyR7dHlwZX1zLmpzb25gO1xuICAgICAgICB1cmwgKz0gYC90YXNrJHtjb25maWcucGFyYW1fc2VwfSR7dGFza31gO1xuICAgICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRSZW1vdmVQYWNrYWdlVXJsKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGAke1BhY2thZ2VzLmdldFRhc2tVcmwodHlwZSwgJ3JlbW92ZVBhY2thZ2UnKX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRSZWluc3RhbGxQYWNrYWdlVXJsKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGAke1BhY2thZ2VzLmdldFRhc2tVcmwodHlwZSwgJ3JlaW5zdGFsbFBhY2thZ2UnKX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRHZXRQYWNrYWdlc0RlcGVuZGVuY2llc1VybCh0eXBlKSB7XG4gICAgICAgIHJldHVybiBgJHtQYWNrYWdlcy5nZXRUYXNrVXJsKHR5cGUsICdnZXRQYWNrYWdlc0RlcGVuZGVuY2llcycpfWA7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldEluc3RhbGxEZXBlbmRlbmNpZXNPZlBhY2thZ2VzVXJsKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGAke1BhY2thZ2VzLmdldFRhc2tVcmwodHlwZSwgJ2luc3RhbGxEZXBlbmRlbmNpZXNPZlBhY2thZ2VzJyl9YDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0SW5zdGFsbFBhY2thZ2VVcmwodHlwZSkge1xuICAgICAgICByZXR1cm4gYCR7UGFja2FnZXMuZ2V0VGFza1VybCh0eXBlLCAnaW5zdGFsbFBhY2thZ2UnKX1gO1xuICAgIH1cblxuICAgIHJlbW92ZVBhY2thZ2UodHlwZSwgc2x1Zykge1xuICAgICAgICBsZXQgdXJsID0gUGFja2FnZXMuZ2V0UmVtb3ZlUGFja2FnZVVybCh0eXBlKTtcblxuICAgICAgICByZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgcGFja2FnZTogc2x1Z1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgICQoJy5yZW1vdmUtcGFja2FnZS1jb25maXJtJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRlcGVuZGVuY2llcyAmJiByZXNwb25zZS5kZXBlbmRlbmNpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERlcGVuZGVuY2llc1RvTGlzdChyZXNwb25zZS5kZXBlbmRlbmNpZXMpO1xuICAgICAgICAgICAgICAgICAgICAkKCcucmVtb3ZlLXBhY2thZ2UtZGVwZW5kZW5jaWVzJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQoJy5yZW1vdmUtcGFja2FnZS1kb25lJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFRoZSBwYWNrYWdlIHdhcyByZW1vdmVkLiBXaGVuIHRoZSBtb2RhbCBjbG9zZXMsIG1vdmUgdG8gdGhlIHBhY2thZ2VzIGxpc3RcbiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xvc2luZycsICdbZGF0YS1yZW1vZGFsLWlkPVwicmVtb3ZlLXBhY2thZ2VcIl0nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzLmdldEJhY2tUb0xpc3QodHlwZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJy5yZW1vdmUtcGFja2FnZS1jb25maXJtJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICQoJy5yZW1vdmUtcGFja2FnZS1lcnJvcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVpbnN0YWxsUGFja2FnZSh0eXBlLCBzbHVnLCBwYWNrYWdlX25hbWUsIGN1cnJlbnRfdmVyc2lvbikge1xuICAgICAgICAkKCcuYnV0dG9uLWJhciBidXR0b24nKS5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICQoJy5idXR0b24tYmFyIC5zcGlubmluZy13aGVlbCcpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcblxuICAgICAgICBsZXQgdXJsID0gUGFja2FnZXMuZ2V0UmVpbnN0YWxsUGFja2FnZVVybCh0eXBlKTtcblxuICAgICAgICByZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgc2x1Zzogc2x1ZyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIHBhY2thZ2VfbmFtZTogcGFja2FnZV9uYW1lLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbjogY3VycmVudF92ZXJzaW9uXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgJCgnLnJlaW5zdGFsbC1wYWNrYWdlLWNvbmZpcm0nKS5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgJCgnLnJlaW5zdGFsbC1wYWNrYWdlLWRvbmUnKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJy5yZWluc3RhbGwtcGFja2FnZS1jb25maXJtJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICQoJy5yZWluc3RhbGwtcGFja2FnZS1lcnJvcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVEZXBlbmRlbmN5KHR5cGUsIHNsdWcsIGJ1dHRvbikge1xuICAgICAgICBsZXQgdXJsID0gUGFja2FnZXMuZ2V0UmVtb3ZlUGFja2FnZVVybCh0eXBlKTtcblxuICAgICAgICByZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgcGFja2FnZTogc2x1Z1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgIGJ1dHRvbi5yZW1vdmVDbGFzcygnYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgYnV0dG9uLnJlcGxhY2VXaXRoKCQoJzxzcGFuPlJlbW92ZWQgc3VjY2Vzc2Z1bGx5PC9zcGFuPicpKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5kZXBlbmRlbmNpZXMgJiYgcmVzcG9uc2UuZGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGREZXBlbmRlbmNpZXNUb0xpc3QocmVzcG9uc2UuZGVwZW5kZW5jaWVzLCBzbHVnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGROZWVkZWREZXBlbmRlbmN5VG9MaXN0KGFjdGlvbiwgc2x1Zykge1xuICAgICAgICAkKCcuaW5zdGFsbC1kZXBlbmRlbmNpZXMtcGFja2FnZS1jb250YWluZXIgLnR5cGUtJyArIGFjdGlvbikucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICBsZXQgbGlzdCA9ICQoJy5pbnN0YWxsLWRlcGVuZGVuY2llcy1wYWNrYWdlLWNvbnRhaW5lciAudHlwZS0nICsgYWN0aW9uICsgJyB1bCcpO1xuXG4gICAgICAgIGlmIChhY3Rpb24gIT09ICdpbnN0YWxsJykge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRfdmVyc2lvbiA9ICcnO1xuICAgICAgICAgICAgbGV0IGF2YWlsYWJsZV92ZXJzaW9uID0gJyc7XG4gICAgICAgICAgICBsZXQgbmFtZSA9ICcnO1xuXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gZ3BtLnBheWxvYWQucGF5bG9hZC5yZXNvdXJjZXM7XG5cbiAgICAgICAgICAgIGlmIChyZXNvdXJjZXMucGx1Z2luc1tzbHVnXSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9uID0gcmVzb3VyY2VzLnBsdWdpbnNbc2x1Z10uYXZhaWxhYmxlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbiA9IHJlc291cmNlcy5wbHVnaW5zW3NsdWddLnZlcnNpb247XG4gICAgICAgICAgICAgICAgbmFtZSA9IHJlc291cmNlcy5wbHVnaW5zW3NsdWddLm5hbWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlcy50aGVtZXNbc2x1Z10pIHtcbiAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbiA9IHJlc291cmNlcy50aGVtZXNbc2x1Z10uYXZhaWxhYmxlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbiA9IHJlc291cmNlcy50aGVtZXNbc2x1Z10udmVyc2lvbjtcbiAgICAgICAgICAgICAgICBuYW1lID0gcmVzb3VyY2VzLnRoZW1lc1tzbHVnXS5uYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaXN0LmFwcGVuZChgPGxpPiR7bmFtZSA/IG5hbWUgOiBzbHVnfSwgJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkZST019IHY8c3Ryb25nPiR7Y3VycmVudF92ZXJzaW9ufTwvc3Ryb25nPiAke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVE99IHY8c3Ryb25nPiR7YXZhaWxhYmxlX3ZlcnNpb259PC9zdHJvbmc+PC9saT5gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpc3QuYXBwZW5kKGA8bGk+JHtuYW1lID8gbmFtZSA6IHNsdWd9PC9saT5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhY2thZ2VzRGVwZW5kZW5jaWVzKHR5cGUsIHNsdWdzLCBmaW5pc2hlZExvYWRpbmdDYWxsYmFjaykge1xuICAgICAgICBsZXQgdXJsID0gUGFja2FnZXMuZ2V0R2V0UGFja2FnZXNEZXBlbmRlbmNpZXNVcmwodHlwZSk7XG5cbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHBhY2thZ2VzOiBzbHVnc1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAocmVzcG9uc2UpID0+IHtcblxuICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nQ2FsbGJhY2soKTtcblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaGFzRGVwZW5kZW5jaWVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGRlcGVuZGVuY3kgaW4gcmVzcG9uc2UuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09ICdncmF2Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRGVwZW5kZW5jaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSByZXNwb25zZS5kZXBlbmRlbmNpZXNbZGVwZW5kZW5jeV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcy5hZGROZWVkZWREZXBlbmRlbmN5VG9MaXN0KGFjdGlvbiwgZGVwZW5kZW5jeU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0RlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsLWRlcGVuZGVuY2llcy1wYWNrYWdlLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbC1wYWNrYWdlLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbC1wYWNrYWdlLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbC1wYWNrYWdlLWVycm9yJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnN0YWxsRGVwZW5kZW5jaWVzT2ZQYWNrYWdlcyh0eXBlLCBzbHVncywgY2FsbGJhY2tTdWNjZXNzLCBjYWxsYmFja0Vycm9yKSB7XG4gICAgICAgIGxldCB1cmwgPSBQYWNrYWdlcy5nZXRJbnN0YWxsRGVwZW5kZW5jaWVzT2ZQYWNrYWdlc1VybCh0eXBlKTtcblxuICAgICAgICByZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgICAgcGFja2FnZXM6IHNsdWdzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGNhbGxiYWNrU3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgaW5zdGFsbFBhY2thZ2VzKHR5cGUsIHNsdWdzLCBjYWxsYmFja1N1Y2Nlc3MpIHtcbiAgICAgICAgbGV0IHVybCA9IFBhY2thZ2VzLmdldEluc3RhbGxQYWNrYWdlVXJsKHR5cGUpO1xuXG4gICAgICAgIFByb21pc2UuYWxsKHNsdWdzLm1hcCgoc2x1ZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0KHVybCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZTogc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSkudGhlbihjYWxsYmFja1N1Y2Nlc3MpO1xuXG4gICAgfVxuXG4gICAgc3RhdGljIGdldFNsdWdzRnJvbUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIGxldCBzbHVncyA9ICcnO1xuICAgICAgICBpZiAoJChldmVudC50YXJnZXQpLmlzKCdbZGF0YS1wYWNrYWdlcy1zbHVnc10nKSkge1xuICAgICAgICAgICAgc2x1Z3MgPSAkKGV2ZW50LnRhcmdldCkuYXR0cignZGF0YS1wYWNrYWdlcy1zbHVncycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2x1Z3MgPSAkKGV2ZW50LnRhcmdldCkucGFyZW50KCdbZGF0YS1wYWNrYWdlcy1zbHVnc10nKS5hdHRyKCdkYXRhLXBhY2thZ2VzLXNsdWdzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHNsdWdzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBzbHVncyA9IHNsdWdzLnNwbGl0KCcsJyk7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygc2x1Z3MgPT09ICdzdHJpbmcnID8gW3NsdWdzXSA6IHNsdWdzO1xuICAgIH1cblxuICAgIGhhbmRsZUdldHRpbmdQYWNrYWdlRGVwZW5kZW5jaWVzKHR5cGUsIGV2ZW50LCBhY3Rpb24gPSAndXBkYXRlJykge1xuICAgICAgICBsZXQgc2x1Z3MgPSBQYWNrYWdlcy5nZXRTbHVnc0Zyb21FdmVudChldmVudCk7XG5cbiAgICAgICAgaWYgKCFzbHVncykge1xuICAgICAgICAgICAgYWxlcnQoJ05vIHNsdWcgc2V0Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhbnVwXG4gICAgICAgICQoJy5wYWNrYWdlcy1uYW1lcy1saXN0JykuaHRtbCgnJyk7XG4gICAgICAgICQoJy5pbnN0YWxsLWRlcGVuZGVuY2llcy1wYWNrYWdlLWNvbnRhaW5lciBsaScpLnJlbW92ZSgpO1xuXG4gICAgICAgIHNsdWdzLmZvckVhY2goKHNsdWcpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfdmVyc2lvbiA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBhdmFpbGFibGVfdmVyc2lvbiA9ICcnO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gJyc7XG5cbiAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2VzID0gZ3BtLnBheWxvYWQucGF5bG9hZC5yZXNvdXJjZXM7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2VzLnBsdWdpbnNbc2x1Z10pIHtcbiAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb24gPSByZXNvdXJjZXMucGx1Z2luc1tzbHVnXS5hdmFpbGFibGU7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbiA9IHJlc291cmNlcy5wbHVnaW5zW3NsdWddLnZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZXNvdXJjZXMucGx1Z2luc1tzbHVnXS5uYW1lO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VzLnRoZW1lc1tzbHVnXSkge1xuICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbiA9IHJlc291cmNlcy50aGVtZXNbc2x1Z10uYXZhaWxhYmxlO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3ZlcnNpb24gPSByZXNvdXJjZXMudGhlbWVzW3NsdWddLnZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZXNvdXJjZXMudGhlbWVzW3NsdWddLm5hbWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJCgnLnBhY2thZ2VzLW5hbWVzLWxpc3QnKS5hcHBlbmQoYDxsaT4ke25hbWUgPyBuYW1lIDogc2x1Z30sICR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GUk9NfSB2PHN0cm9uZz4ke2N1cnJlbnRfdmVyc2lvbn08L3N0cm9uZz4gJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlRPfSB2PHN0cm9uZz4ke2F2YWlsYWJsZV92ZXJzaW9ufTwvc3Ryb25nPjwvbGk+YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJy5wYWNrYWdlcy1uYW1lcy1saXN0JykuYXBwZW5kKGA8bGk+JHtuYW1lID8gbmFtZSA6IHNsdWd9PC9saT5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgLy8gZml4IG1pc21hdGNoaW5nIHR5cGVzIHdoZW4gc2hhcmluZyBpbnN0YWxsIG1vZGFsIGJldHdlZW4gcGx1Z2lucy90aGVtZXNcbiAgICAgICAgY29uc3QgcXVlcnkgPSAnW2RhdGEtcGFja2FnZXMtbW9kYWxdIFtkYXRhLXRoZW1lLWFjdGlvbl0sIFtkYXRhLXBhY2thZ2VzLW1vZGFsXSBbZGF0YS1wbHVnaW4tYWN0aW9uXSc7XG4gICAgICAgIGNvbnN0IGRhdGEgPSAkKHF1ZXJ5KS5kYXRhKCd0aGVtZUFjdGlvbicpIHx8ICQocXVlcnkpLmRhdGEoJ3BsdWdpbkFjdGlvbicpO1xuICAgICAgICAkKHF1ZXJ5KS5yZW1vdmVBdHRyKCdkYXRhLXRoZW1lLWFjdGlvbicpLnJlbW92ZUF0dHIoJ2RhdGEtcGx1Z2luLWFjdGlvbicpLmF0dHIoYGRhdGEtJHt0eXBlfS1hY3Rpb25gLCBkYXRhKTtcblxuICAgICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHN0YXRlXG4gICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAubG9hZGluZycpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsLWRlcGVuZGVuY2llcy1wYWNrYWdlLWNvbnRhaW5lcicpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsLXBhY2thZ2UtY29udGFpbmVyJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxpbmctZGVwZW5kZW5jaWVzJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxpbmctcGFja2FnZScpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsYXRpb24tY29tcGxldGUnKS5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbC1wYWNrYWdlLWVycm9yJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuXG4gICAgICAgIHRoaXMuZ2V0UGFja2FnZXNEZXBlbmRlbmNpZXModHlwZSwgc2x1Z3MsICgpID0+IHtcbiAgICAgICAgICAgIGxldCBzbHVnc19zdHJpbmcgPSBzbHVncy5qb2luKCk7XG4gICAgICAgICAgICAkKGBbZGF0YS1wYWNrYWdlcy1tb2RhbF0gW2RhdGEtJHt0eXBlfS1hY3Rpb249XCJpbnN0YWxsLWRlcGVuZGVuY2llcy1hbmQtcGFja2FnZVwiXWApLmF0dHIoJ2RhdGEtcGFja2FnZXMtc2x1Z3MnLCBzbHVnc19zdHJpbmcpO1xuICAgICAgICAgICAgJChgW2RhdGEtcGFja2FnZXMtbW9kYWxdIFtkYXRhLSR7dHlwZX0tYWN0aW9uPVwiaW5zdGFsbC1wYWNrYWdlXCJdYCkuYXR0cignZGF0YS1wYWNrYWdlcy1zbHVncycsIHNsdWdzX3N0cmluZyk7XG4gICAgICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmxvYWRpbmcnKS5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUluc3RhbGxpbmdEZXBlbmRlbmNpZXNBbmRQYWNrYWdlKHR5cGUsIGV2ZW50KSB7XG4gICAgICAgIGxldCBzbHVncyA9IFBhY2thZ2VzLmdldFNsdWdzRnJvbUV2ZW50KGV2ZW50KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsLWRlcGVuZGVuY2llcy1wYWNrYWdlLWNvbnRhaW5lcicpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsLXBhY2thZ2UtY29udGFpbmVyJykuYWRkQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxpbmctZGVwZW5kZW5jaWVzJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFsbERlcGVuZGVuY2llc09mUGFja2FnZXModHlwZSwgc2x1Z3MsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsaW5nLWRlcGVuZGVuY2llcycpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbGluZy1wYWNrYWdlJykucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5pbnN0YWxsUGFja2FnZXModHlwZSwgc2x1Z3MsICgpID0+IHtcbiAgICAgICAgICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxpbmctcGFja2FnZScpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxhdGlvbi1jb21wbGV0ZScpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbW9kYWwgPSAkLnJlbW9kYWwubG9va3VwWyQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXScpLmRhdGEoJ3JlbW9kYWwnKV07XG4gICAgICAgICAgICAgICAgICAgIHJlbW9kYWwuY2xvc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbHVncy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ocmVmID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS8ke3R5cGV9cy8ke3NsdWdzWzBdfWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwubG9jYXRpb24uaHJlZiA9IGAke2NvbmZpZy5iYXNlX3VybF9yZWxhdGl2ZX0vJHt0eXBlfXNgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbnN0YWxsaW5nUGFja2FnZSh0eXBlLCBldmVudCkge1xuICAgICAgICBsZXQgc2x1Z3MgPSBQYWNrYWdlcy5nZXRTbHVnc0Zyb21FdmVudChldmVudCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICQoJ1tkYXRhLXBhY2thZ2VzLW1vZGFsXSAuaW5zdGFsbC1wYWNrYWdlLWNvbnRhaW5lcicpLmFkZENsYXNzKCdoaWRkZW4nKTtcbiAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsaW5nLXBhY2thZ2UnKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7XG5cbiAgICAgICAgdGhpcy5pbnN0YWxsUGFja2FnZXModHlwZSwgc2x1Z3MsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgJCgnW2RhdGEtcGFja2FnZXMtbW9kYWxdIC5pbnN0YWxsaW5nLXBhY2thZ2UnKS5hZGRDbGFzcygnaGlkZGVuJyk7XG4gICAgICAgICAgICAkKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0gLmluc3RhbGxhdGlvbi1jb21wbGV0ZScpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTtcblxuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gQXJyYXkuZnJvbShyZXNwb25zZSkuZmlsdGVyKChyKSA9PiByLnN0YXR1cyA9PT0gJ2Vycm9yJyk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcnMgJiYgZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxldCByZW1vZGFsID0gJC5yZW1vZGFsLmxvb2t1cFskKCdbZGF0YS1wYWNrYWdlcy1tb2RhbF0ucmVtb2RhbC1pcy1vcGVuZWQnKS5kYXRhKCdyZW1vZGFsJyldO1xuICAgICAgICAgICAgICAgIHJlbW9kYWwuY2xvc2UoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNsdWdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ocmVmID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS8ke3R5cGV9cy8ke3NsdWdzWzBdfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ocmVmID0gYCR7Y29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlfS8ke3R5cGV9c2A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZVJlbW92aW5nUGFja2FnZSh0eXBlLCBldmVudCkge1xuICAgICAgICBsZXQgc2x1ZyA9ICQoZXZlbnQudGFyZ2V0KS5hdHRyKCdkYXRhLXBhY2thZ2VzLXNsdWdzJyk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMucmVtb3ZlUGFja2FnZSh0eXBlLCBzbHVnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVSZWluc3RhbGxQYWNrYWdlKHR5cGUsIGV2ZW50KSB7XG4gICAgICAgIGxldCB0YXJnZXQgPSAkKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGxldCBzbHVnID0gdGFyZ2V0LmF0dHIoJ2RhdGEtcGFja2FnZS1zbHVnJyk7XG4gICAgICAgIGxldCBwYWNrYWdlX25hbWUgPSB0YXJnZXQuYXR0cignZGF0YS1wYWNrYWdlLW5hbWUnKTtcbiAgICAgICAgbGV0IGN1cnJlbnRfdmVyc2lvbiA9IHRhcmdldC5hdHRyKCdkYXRhLXBhY2thZ2UtY3VycmVudC12ZXJzaW9uJyk7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5yZWluc3RhbGxQYWNrYWdlKHR5cGUsIHNsdWcsIHBhY2thZ2VfbmFtZSwgY3VycmVudF92ZXJzaW9uKTtcbiAgICB9XG5cbiAgICBoYW5kbGVSZW1vdmluZ0RlcGVuZGVuY3kodHlwZSwgZXZlbnQpIHtcbiAgICAgICAgbGV0IHNsdWcgPSAkKGV2ZW50LnRhcmdldCkuYXR0cignZGF0YS1kZXBlbmRlbmN5LXNsdWcnKTtcbiAgICAgICAgbGV0IGJ1dHRvbiA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVEZXBlbmRlbmN5KHR5cGUsIHNsdWcsIGJ1dHRvbik7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBQYWNrYWdlcygpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/packages.js\n");
/***/ }),
/***/ "./app/utils/remodal.js":
/*!******************************!*\
!*** ./app/utils/remodal.js ***!
\******************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* Remodal from https://github.com/vodkabears/Remodal\n * With Stackable option from https://github.com/antstorm/Remodal patch\n */\n\n!function (root, factory) {\n return factory(root, (jquery__WEBPACK_IMPORTED_MODULE_0___default()));\n}(undefined, function (global, $) {\n 'use strict';\n /**\n * Name of the plugin\n * @private\n * @const\n * @type {String}\n */\n\n var PLUGIN_NAME = 'remodal';\n /**\n * Namespace for CSS and events\n * @private\n * @const\n * @type {String}\n */\n\n var NAMESPACE = window.REMODAL_GLOBALS && window.REMODAL_GLOBALS.NAMESPACE || PLUGIN_NAME;\n /**\n * Animationstart event with vendor prefixes\n * @private\n * @const\n * @type {String}\n */\n\n var ANIMATIONSTART_EVENTS = $.map(['animationstart', 'webkitAnimationStart', 'MSAnimationStart', 'oAnimationStart'], function (eventName) {\n return eventName + '.' + NAMESPACE;\n }).join(' ');\n /**\n * Animationend event with vendor prefixes\n * @private\n * @const\n * @type {String}\n */\n\n var ANIMATIONEND_EVENTS = $.map(['animationend', 'webkitAnimationEnd', 'MSAnimationEnd', 'oAnimationEnd'], function (eventName) {\n return eventName + '.' + NAMESPACE;\n }).join(' ');\n /**\n * Default settings\n * @private\n * @const\n * @type {Object}\n */\n\n var DEFAULTS = $.extend({\n hashTracking: true,\n closeOnConfirm: true,\n closeOnCancel: true,\n closeOnEscape: true,\n closeOnOutsideClick: true,\n modifier: '',\n stack: false,\n appendTo: null\n }, window.REMODAL_GLOBALS && window.REMODAL_GLOBALS.DEFAULTS);\n /**\n * States of the Remodal\n * @private\n * @const\n * @enum {String}\n */\n\n var STATES = {\n CLOSING: 'closing',\n CLOSED: 'closed',\n OPENING: 'opening',\n OPENED: 'opened'\n };\n /**\n * Reasons of the state change.\n * @private\n * @const\n * @enum {String}\n */\n\n var STATE_CHANGE_REASONS = {\n CONFIRMATION: 'confirmation',\n CANCELLATION: 'cancellation'\n };\n /**\n * Is animation supported?\n * @private\n * @const\n * @type {Boolean}\n */\n\n var IS_ANIMATION = function () {\n var style = document.createElement('div').style;\n return style.animationName !== undefined || style.WebkitAnimationName !== undefined || style.MozAnimationName !== undefined || style.msAnimationName !== undefined || style.OAnimationName !== undefined;\n }();\n /**\n * Is iOS?\n * @private\n * @const\n * @type {Boolean}\n */\n\n\n var IS_IOS = /iPad|iPhone|iPod/.test(navigator.platform);\n /**\n * Current modal\n * @private\n * @type {Remodal}\n */\n\n var openModals = [];\n /**\n * Scrollbar position\n * @private\n * @type {Number}\n */\n\n var scrollTop;\n /**\n * Returns an animation duration\n * @private\n * @param {jQuery} $elem\n * @returns {Number}\n */\n\n function getAnimationDuration($elem) {\n if (IS_ANIMATION && $elem.css('animation-name') === 'none' && $elem.css('-webkit-animation-name') === 'none' && $elem.css('-moz-animation-name') === 'none' && $elem.css('-o-animation-name') === 'none' && $elem.css('-ms-animation-name') === 'none') {\n return 0;\n }\n\n var duration = $elem.css('animation-duration') || $elem.css('-webkit-animation-duration') || $elem.css('-moz-animation-duration') || $elem.css('-o-animation-duration') || $elem.css('-ms-animation-duration') || '0s';\n var delay = $elem.css('animation-delay') || $elem.css('-webkit-animation-delay') || $elem.css('-moz-animation-delay') || $elem.css('-o-animation-delay') || $elem.css('-ms-animation-delay') || '0s';\n var iterationCount = $elem.css('animation-iteration-count') || $elem.css('-webkit-animation-iteration-count') || $elem.css('-moz-animation-iteration-count') || $elem.css('-o-animation-iteration-count') || $elem.css('-ms-animation-iteration-count') || '1';\n var max;\n var len;\n var num;\n var i;\n duration = duration.split(', ');\n delay = delay.split(', ');\n iterationCount = iterationCount.split(', '); // The 'duration' size is the same as the 'delay' size\n\n for (i = 0, len = duration.length, max = Number.NEGATIVE_INFINITY; i < len; i++) {\n num = parseFloat(duration[i]) * parseInt(iterationCount[i], 10) + parseFloat(delay[i]);\n\n if (num > max) {\n max = num;\n }\n }\n\n return max;\n }\n /**\n * Returns a scrollbar width\n * @private\n * @returns {Number}\n */\n\n\n function getScrollbarWidth() {\n if ($(document).height() <= $(window).height()) {\n return 0;\n }\n\n var outer = document.createElement('div');\n var inner = document.createElement('div');\n var widthNoScroll;\n var widthWithScroll;\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n document.body.appendChild(outer);\n widthNoScroll = outer.offsetWidth; // Force scrollbars\n\n outer.style.overflow = 'scroll'; // Add inner div\n\n inner.style.width = '100%';\n outer.appendChild(inner);\n widthWithScroll = inner.offsetWidth; // Remove divs\n\n outer.parentNode.removeChild(outer);\n return widthNoScroll - widthWithScroll;\n }\n /**\n * Locks the screen\n * @private\n */\n\n\n function lockScreen() {\n if (IS_IOS) {\n return;\n }\n\n var $html = $('html');\n var lockedClass = namespacify('is-locked');\n var paddingRight;\n var $body;\n\n if (!$html.hasClass(lockedClass)) {\n $body = $(document.body); // Zepto does not support '-=', '+=' in the `css` method\n\n paddingRight = parseInt($body.css('padding-right'), 10) + getScrollbarWidth();\n $body.css('padding-right', paddingRight + 'px');\n $html.addClass(lockedClass);\n }\n }\n /**\n * Unlocks the screen\n * @private\n */\n\n\n function unlockScreen() {\n if (IS_IOS) {\n return;\n }\n\n var $html = $('html');\n var lockedClass = namespacify('is-locked');\n var paddingRight;\n var $body;\n\n if ($html.hasClass(lockedClass)) {\n $body = $(document.body); // Zepto does not support '-=', '+=' in the `css` method\n\n paddingRight = parseInt($body.css('padding-right'), 10) - getScrollbarWidth();\n $body.css('padding-right', paddingRight + 'px');\n $html.removeClass(lockedClass);\n }\n }\n /**\n * Sets a state for an instance\n * @private\n * @param {Remodal} instance\n * @param {STATES} state\n * @param {Boolean} isSilent If true, Remodal does not trigger events\n * @param {String} Reason of a state change.\n */\n\n\n function setState(instance, state, isSilent, reason) {\n var newState = namespacify('is', state);\n var allStates = [namespacify('is', STATES.CLOSING), namespacify('is', STATES.OPENING), namespacify('is', STATES.CLOSED), namespacify('is', STATES.OPENED)].join(' ');\n instance.$bg.removeClass(allStates).addClass(newState);\n instance.$overlay.removeClass(allStates).addClass(newState);\n instance.$wrapper.removeClass(allStates).addClass(newState);\n instance.$modal.removeClass(allStates).addClass(newState);\n instance.state = state;\n !isSilent && instance.$modal.trigger({\n type: state,\n reason: reason\n }, [{\n reason: reason\n }]);\n }\n /**\n * Synchronizes with the animation\n * @param {Function} doBeforeAnimation\n * @param {Function} doAfterAnimation\n * @param {Remodal} instance\n */\n\n\n function syncWithAnimation(doBeforeAnimation, doAfterAnimation, instance) {\n var runningAnimationsCount = 0;\n\n var handleAnimationStart = function handleAnimationStart(e) {\n if (e.target !== this) {\n return;\n }\n\n runningAnimationsCount++;\n };\n\n var handleAnimationEnd = function handleAnimationEnd(e) {\n if (e.target !== this) {\n return;\n }\n\n if (--runningAnimationsCount === 0) {\n // Remove event listeners\n $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) {\n instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS);\n });\n doAfterAnimation();\n }\n };\n\n $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) {\n instance[elemName].on(ANIMATIONSTART_EVENTS, handleAnimationStart).on(ANIMATIONEND_EVENTS, handleAnimationEnd);\n });\n doBeforeAnimation(); // If the animation is not supported by a browser or its duration is 0\n\n if (getAnimationDuration(instance.$bg) === 0 && getAnimationDuration(instance.$overlay) === 0 && getAnimationDuration(instance.$wrapper) === 0 && getAnimationDuration(instance.$modal) === 0) {\n // Remove event listeners\n $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) {\n instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS);\n });\n doAfterAnimation();\n }\n }\n /**\n * Closes immediately\n * @private\n * @param {Remodal} instance\n */\n\n\n function halt(instance) {\n if (instance.state === STATES.CLOSED) {\n return;\n }\n\n $.each(['$bg', '$overlay', '$wrapper', '$modal'], function (index, elemName) {\n instance[elemName].off(ANIMATIONSTART_EVENTS + ' ' + ANIMATIONEND_EVENTS);\n });\n removeModal(instance);\n instance.$bg.removeClass(instance.settings.modifier);\n instance.$overlay.removeClass(instance.settings.modifier).hide();\n instance.$wrapper.hide();\n\n if (openModals.length === 0) {\n unlockScreen();\n }\n\n setState(instance, STATES.CLOSED, true);\n }\n /**\n * Parses a string with options\n * @private\n * @param str\n * @returns {Object}\n */\n\n\n function parseOptions(str) {\n var obj = {};\n var arr;\n var len;\n var val;\n var i; // Remove spaces before and after delimiters\n\n str = str.replace(/\\s*:\\s*/g, ':').replace(/\\s*,\\s*/g, ','); // Parse a string\n\n arr = str.split(',');\n\n for (i = 0, len = arr.length; i < len; i++) {\n arr[i] = arr[i].split(':');\n val = arr[i][1]; // Convert a string value if it is like a boolean\n\n if (typeof val === 'string' || val instanceof String) {\n val = val === 'true' || (val === 'false' ? false : val);\n } // Convert a string value if it is like a number\n\n\n if (typeof val === 'string' || val instanceof String) {\n val = !isNaN(val) ? +val : val;\n }\n\n obj[arr[i][0]] = val;\n }\n\n return obj;\n }\n /**\n * Generates a string separated by dashes and prefixed with NAMESPACE\n * @private\n * @param {...String}\n * @returns {String}\n */\n\n\n function namespacify() {\n var result = NAMESPACE;\n\n for (var i = 0; i < arguments.length; ++i) {\n result += '-' + arguments[i];\n }\n\n return result;\n }\n /**\n * Handles the hashchange event\n * @private\n * @listens hashchange\n */\n\n\n function handleHashChangeEvent() {\n var id = location.hash.replace('#', '');\n var instance;\n var $elem;\n var current = currentModal();\n\n if (!id) {\n // Check if we have currently opened modal and animation was completed\n if (current && current.state === STATES.OPENED && current.settings.hashTracking) {\n current.close();\n }\n } else {\n if (!current || current.id !== id) {\n // Catch syntax error if your hash is bad\n try {\n $elem = $('[data-' + PLUGIN_NAME + '-id=\"' + id + '\"]');\n } catch (err) {}\n\n if ($elem && $elem.length) {\n instance = $[PLUGIN_NAME].lookup[$elem.data(PLUGIN_NAME)];\n\n if (instance && instance.settings.hashTracking) {\n instance.open();\n }\n }\n }\n }\n }\n\n function currentModal() {\n return openModals[openModals.length - 1];\n }\n\n function removeModal(remodal) {\n var index = openModals.indexOf(remodal);\n\n if (index >= 0) {\n openModals.slice(index, 1);\n }\n }\n /**\n * Remodal constructor\n * @constructor\n * @param {jQuery} $modal\n * @param {Object} options\n */\n\n\n function Remodal($modal, options) {\n var $body = $(document.body);\n var $appendTo = $body;\n var remodal = this;\n remodal.id = $modal.attr('data-' + PLUGIN_NAME + '-id');\n remodal.settings = $.extend({}, DEFAULTS, options);\n remodal.index = $[PLUGIN_NAME].lookup.push(remodal) - 1;\n remodal.state = STATES.CLOSED; // remodal.$overlay = $('.' + namespacify('overlay'));\n\n if (remodal.settings.appendTo !== null && remodal.settings.appendTo.length) {\n $appendTo = $(remodal.settings.appendTo);\n }\n\n if (!remodal.$overlay) {\n remodal.$overlay = $('').addClass(namespacify('overlay') + ' ' + namespacify('is', STATES.CLOSED)).hide();\n $appendTo.append(remodal.$overlay);\n }\n\n remodal.$bg = $('.' + namespacify('bg')).addClass(namespacify('is', STATES.CLOSED));\n remodal.$modal = $modal.addClass(NAMESPACE + ' ' + namespacify('is-initialized') + ' ' + remodal.settings.modifier + ' ' + namespacify('is', STATES.CLOSED)).attr('tabindex', '-1');\n remodal.$wrapper = $('
').addClass(namespacify('wrapper') + ' ' + remodal.settings.modifier + ' ' + namespacify('is', STATES.CLOSED)).hide().append(remodal.$modal);\n $appendTo.append(remodal.$wrapper); // Add the event listener for the close button\n\n remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action=\"close\"]', function (e) {\n e.preventDefault();\n remodal.close();\n }); // Add the event listener for the cancel button\n\n remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action=\"cancel\"]', function (e) {\n e.preventDefault();\n remodal.$modal.trigger(STATE_CHANGE_REASONS.CANCELLATION);\n\n if (remodal.settings.closeOnCancel) {\n remodal.close(STATE_CHANGE_REASONS.CANCELLATION);\n }\n }); // Add the event listener for the confirm button\n\n remodal.$wrapper.on('click.' + NAMESPACE, '[data-' + PLUGIN_NAME + '-action=\"confirm\"]', function (e) {\n e.preventDefault();\n remodal.$modal.trigger(STATE_CHANGE_REASONS.CONFIRMATION);\n\n if (remodal.settings.closeOnConfirm) {\n remodal.close(STATE_CHANGE_REASONS.CONFIRMATION);\n }\n }); // Add the event listener for the overlay\n\n remodal.$wrapper.on('click.' + NAMESPACE, function (e) {\n var $target = $(e.target);\n var isWrapper = $target.hasClass(namespacify('wrapper'));\n var isWithin = $target.closest('.' + namespacify('is', STATES.OPENED)).length;\n\n if (!isWrapper && isWithin) {\n return;\n }\n\n if (remodal.settings.closeOnOutsideClick) {\n remodal.close();\n }\n });\n }\n /**\n * Opens a modal window\n * @public\n */\n\n\n Remodal.prototype.open = function () {\n var remodal = this;\n var current;\n var modalCount; // Check if the animation was completed\n\n if (remodal.state === STATES.OPENING || remodal.state === STATES.CLOSING) {\n return;\n } // id = remodal.$modal.attr('data-' + PLUGIN_NAME + '-id');\n\n\n if (remodal.id && remodal.settings.hashTracking) {\n scrollTop = $(window).scrollTop();\n location.hash = remodal.id;\n }\n\n if (!remodal.settings.stack) {\n current = currentModal();\n\n if (current && current !== remodal) {\n halt(current);\n }\n }\n\n modalCount = openModals.push(remodal);\n remodal.$overlay.css('z-index', function (_, value) {\n return parseInt(value, 10) + modalCount;\n });\n remodal.$wrapper.css('z-index', function (_, value) {\n return parseInt(value, 10) + modalCount;\n });\n lockScreen();\n remodal.$bg.addClass(remodal.settings.modifier);\n remodal.$overlay.addClass(remodal.settings.modifier).show();\n remodal.$wrapper.show().scrollTop(0);\n remodal.$modal.focus();\n syncWithAnimation(function () {\n setState(remodal, STATES.OPENING);\n }, function () {\n setState(remodal, STATES.OPENED);\n }, remodal);\n };\n /**\n * Closes a modal window\n * @public\n * @param {String} reason\n */\n\n\n Remodal.prototype.close = function (reason) {\n var remodal = this;\n var current; // Check if the animation was completed\n\n if (remodal.state === STATES.OPENING || remodal.state === STATES.CLOSING || remodal.state === STATES.CLOSED) {\n return;\n }\n\n removeModal(remodal);\n\n if (remodal.settings.hashTracking && remodal.id === location.hash.substr(1)) {\n current = currentModal();\n\n if (current) {\n location.hash = current.id;\n } else {\n location.hash = '';\n $(window).scrollTop(scrollTop);\n }\n }\n\n syncWithAnimation(function () {\n setState(remodal, STATES.CLOSING, false, reason);\n }, function () {\n remodal.$bg.removeClass(remodal.settings.modifier);\n remodal.$overlay.removeClass(remodal.settings.modifier).hide();\n remodal.$wrapper.hide();\n\n if (openModals.length === 0) {\n unlockScreen();\n }\n\n setState(remodal, STATES.CLOSED, false, reason);\n }, remodal);\n };\n /**\n * Returns a current state of a modal\n * @public\n * @returns {STATES}\n */\n\n\n Remodal.prototype.getState = function () {\n return this.state;\n };\n /**\n * Destroys a modal\n * @public\n */\n\n\n Remodal.prototype.destroy = function () {\n var lookup = $[PLUGIN_NAME].lookup;\n var instanceCount;\n halt(this);\n this.$wrapper.remove();\n delete lookup[this.index];\n instanceCount = $.grep(lookup, function (instance) {\n return !!instance;\n }).length;\n\n if (instanceCount === 0) {\n this.$overlay.remove();\n this.$bg.removeClass(namespacify('is', STATES.CLOSING) + ' ' + namespacify('is', STATES.OPENING) + ' ' + namespacify('is', STATES.CLOSED) + ' ' + namespacify('is', STATES.OPENED));\n }\n };\n /**\n * Special plugin object for instances\n * @public\n * @type {Object}\n */\n\n\n $[PLUGIN_NAME] = {\n lookup: []\n };\n /**\n * Plugin constructor\n * @constructor\n * @param {Object} options\n * @returns {JQuery}\n */\n\n $.fn[PLUGIN_NAME] = function (opts) {\n var instance;\n var $elem;\n this.each(function (index, elem) {\n $elem = $(elem);\n\n if ($elem.data(PLUGIN_NAME) == null) {\n instance = new Remodal($elem, opts);\n $elem.data(PLUGIN_NAME, instance.index);\n\n if (instance.settings.hashTracking && instance.id === location.hash.substr(1)) {\n instance.open();\n }\n } else {\n instance = $[PLUGIN_NAME].lookup[$elem.data(PLUGIN_NAME)];\n }\n });\n return instance;\n };\n\n $(document).ready(function () {\n // data-remodal-target opens a modal window with the special Id\n $(document).on('click', '[data-' + PLUGIN_NAME + '-target]', function (e) {\n e.preventDefault();\n var elem = e.currentTarget;\n var id = elem.getAttribute('data-' + PLUGIN_NAME + '-target');\n var $target = $('[data-' + PLUGIN_NAME + '-id=\"' + id + '\"]');\n $[PLUGIN_NAME].lookup[$target.data(PLUGIN_NAME)].open();\n }); // Auto initialization of modal windows\n // They should have the 'remodal' class attribute\n // Also you can write the `data-remodal-options` attribute to pass params into the modal\n\n $(document).find('.' + NAMESPACE).each(function (i, container) {\n var $container = $(container);\n var options = $container.data(PLUGIN_NAME + '-options');\n\n if (!options) {\n options = {};\n } else if (typeof options === 'string' || options instanceof String) {\n options = parseOptions(options);\n }\n\n $container[PLUGIN_NAME](options);\n }); // Handles the keydown event\n\n $(document).on('keydown.' + NAMESPACE, function (e) {\n var current = currentModal();\n\n if (current && current.settings.closeOnEscape && current.state === STATES.OPENED && e.keyCode === 27) {\n current.close();\n }\n }); // Handles the hashchange event\n\n $(window).on('hashchange.' + NAMESPACE, handleHashChangeEvent);\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3JlbW9kYWwuanM/M2M5ZiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsIiQiLCJnbG9iYWwiLCJQTFVHSU5fTkFNRSIsIk5BTUVTUEFDRSIsIndpbmRvdyIsIlJFTU9EQUxfR0xPQkFMUyIsIkFOSU1BVElPTlNUQVJUX0VWRU5UUyIsIm1hcCIsImV2ZW50TmFtZSIsImpvaW4iLCJBTklNQVRJT05FTkRfRVZFTlRTIiwiREVGQVVMVFMiLCJleHRlbmQiLCJoYXNoVHJhY2tpbmciLCJjbG9zZU9uQ29uZmlybSIsImNsb3NlT25DYW5jZWwiLCJjbG9zZU9uRXNjYXBlIiwiY2xvc2VPbk91dHNpZGVDbGljayIsIm1vZGlmaWVyIiwic3RhY2siLCJhcHBlbmRUbyIsIlNUQVRFUyIsIkNMT1NJTkciLCJDTE9TRUQiLCJPUEVOSU5HIiwiT1BFTkVEIiwiU1RBVEVfQ0hBTkdFX1JFQVNPTlMiLCJDT05GSVJNQVRJT04iLCJDQU5DRUxMQVRJT04iLCJJU19BTklNQVRJT04iLCJzdHlsZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImFuaW1hdGlvbk5hbWUiLCJ1bmRlZmluZWQiLCJXZWJraXRBbmltYXRpb25OYW1lIiwiTW96QW5pbWF0aW9uTmFtZSIsIm1zQW5pbWF0aW9uTmFtZSIsIk9BbmltYXRpb25OYW1lIiwiSVNfSU9TIiwidGVzdCIsIm5hdmlnYXRvciIsInBsYXRmb3JtIiwib3Blbk1vZGFscyIsInNjcm9sbFRvcCIsImdldEFuaW1hdGlvbkR1cmF0aW9uIiwiJGVsZW0iLCJjc3MiLCJkdXJhdGlvbiIsImRlbGF5IiwiaXRlcmF0aW9uQ291bnQiLCJtYXgiLCJsZW4iLCJudW0iLCJpIiwic3BsaXQiLCJsZW5ndGgiLCJOdW1iZXIiLCJORUdBVElWRV9JTkZJTklUWSIsInBhcnNlRmxvYXQiLCJwYXJzZUludCIsImdldFNjcm9sbGJhcldpZHRoIiwiaGVpZ2h0Iiwib3V0ZXIiLCJpbm5lciIsIndpZHRoTm9TY3JvbGwiLCJ3aWR0aFdpdGhTY3JvbGwiLCJ2aXNpYmlsaXR5Iiwid2lkdGgiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJvZmZzZXRXaWR0aCIsIm92ZXJmbG93IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwibG9ja1NjcmVlbiIsIiRodG1sIiwibG9ja2VkQ2xhc3MiLCJuYW1lc3BhY2lmeSIsInBhZGRpbmdSaWdodCIsIiRib2R5IiwiaGFzQ2xhc3MiLCJhZGRDbGFzcyIsInVubG9ja1NjcmVlbiIsInJlbW92ZUNsYXNzIiwic2V0U3RhdGUiLCJpbnN0YW5jZSIsInN0YXRlIiwiaXNTaWxlbnQiLCJyZWFzb24iLCJuZXdTdGF0ZSIsImFsbFN0YXRlcyIsIiRiZyIsIiRvdmVybGF5IiwiJHdyYXBwZXIiLCIkbW9kYWwiLCJ0cmlnZ2VyIiwidHlwZSIsInN5bmNXaXRoQW5pbWF0aW9uIiwiZG9CZWZvcmVBbmltYXRpb24iLCJkb0FmdGVyQW5pbWF0aW9uIiwicnVubmluZ0FuaW1hdGlvbnNDb3VudCIsImhhbmRsZUFuaW1hdGlvblN0YXJ0IiwiZSIsInRhcmdldCIsImhhbmRsZUFuaW1hdGlvbkVuZCIsImVhY2giLCJpbmRleCIsImVsZW1OYW1lIiwib2ZmIiwib24iLCJoYWx0IiwicmVtb3ZlTW9kYWwiLCJzZXR0aW5ncyIsImhpZGUiLCJwYXJzZU9wdGlvbnMiLCJzdHIiLCJvYmoiLCJhcnIiLCJ2YWwiLCJyZXBsYWNlIiwiU3RyaW5nIiwiaXNOYU4iLCJyZXN1bHQiLCJhcmd1bWVudHMiLCJoYW5kbGVIYXNoQ2hhbmdlRXZlbnQiLCJpZCIsImxvY2F0aW9uIiwiaGFzaCIsImN1cnJlbnQiLCJjdXJyZW50TW9kYWwiLCJjbG9zZSIsImVyciIsImxvb2t1cCIsImRhdGEiLCJvcGVuIiwicmVtb2RhbCIsImluZGV4T2YiLCJzbGljZSIsIlJlbW9kYWwiLCJvcHRpb25zIiwiJGFwcGVuZFRvIiwiYXR0ciIsInB1c2giLCJhcHBlbmQiLCJwcmV2ZW50RGVmYXVsdCIsIiR0YXJnZXQiLCJpc1dyYXBwZXIiLCJpc1dpdGhpbiIsImNsb3Nlc3QiLCJwcm90b3R5cGUiLCJtb2RhbENvdW50IiwiXyIsInZhbHVlIiwic2hvdyIsImZvY3VzIiwic3Vic3RyIiwiZ2V0U3RhdGUiLCJkZXN0cm95IiwiaW5zdGFuY2VDb3VudCIsInJlbW92ZSIsImdyZXAiLCJmbiIsIm9wdHMiLCJlbGVtIiwicmVhZHkiLCJjdXJyZW50VGFyZ2V0IiwiZ2V0QXR0cmlidXRlIiwiZmluZCIsImNvbnRhaW5lciIsIiRjb250YWluZXIiLCJrZXlDb2RlIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBLENBQUUsVUFBU0EsSUFBVCxFQUFlQyxPQUFmLEVBQXdCO0FBQ3RCLFNBQU9BLE9BQU8sQ0FBQ0QsSUFBRCxFQUFPRSwrQ0FBUCxDQUFkO0FBQ0gsQ0FGQSxDQUVFLFNBRkYsRUFFUSxVQUFTQyxNQUFULEVBQWlCRCxDQUFqQixFQUFvQjtBQUV6QjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDSSxNQUFJRSxXQUFXLEdBQUcsU0FBbEI7QUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0ksTUFBSUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLGVBQVAsSUFBMEJELE1BQU0sQ0FBQ0MsZUFBUCxDQUF1QkYsU0FBakQsSUFBOERELFdBQTlFO0FBRUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNJLE1BQUlJLHFCQUFxQixHQUFHTixDQUFDLENBQUNPLEdBQUYsQ0FDeEIsQ0FBQyxnQkFBRCxFQUFtQixzQkFBbkIsRUFBMkMsa0JBQTNDLEVBQStELGlCQUEvRCxDQUR3QixFQUd4QixVQUFTQyxTQUFULEVBQW9CO0FBQ2hCLFdBQU9BLFNBQVMsR0FBRyxHQUFaLEdBQWtCTCxTQUF6QjtBQUNILEdBTHVCLEVBTzFCTSxJQVAwQixDQU9yQixHQVBxQixDQUE1QjtBQVNBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDSSxNQUFJQyxtQkFBbUIsR0FBR1YsQ0FBQyxD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LElBQVgsQ0FBZ0JwSSxXQUFXLEdBQUcsVUFBOUIsQ0FBZDs7QUFFQSxVQUFJLENBQUMwSSxPQUFMLEVBQWM7QUFDVkEsZUFBTyxHQUFHLEVBQVY7QUFDSCxPQUZELE1BRU8sSUFBSSxPQUFPQSxPQUFQLEtBQW1CLFFBQW5CLElBQStCQSxPQUFPLFlBQVluQixNQUF0RCxFQUE4RDtBQUNqRW1CLGVBQU8sR0FBR3pCLFlBQVksQ0FBQ3lCLE9BQUQsQ0FBdEI7QUFDSDs7QUFFRDhCLGdCQUFVLENBQUN4SyxXQUFELENBQVYsQ0FBd0IwSSxPQUF4QjtBQUNILEtBWEQsRUFoQnlCLENBNkJ6Qjs7QUFDQTVJLEtBQUMsQ0FBQytCLFFBQUQsQ0FBRCxDQUFZK0UsRUFBWixDQUFlLGFBQWEzRyxTQUE1QixFQUF1QyxVQUFTb0csQ0FBVCxFQUFZO0FBQy9DLFVBQUkwQixPQUFPLEdBQUdDLFlBQVksRUFBMUI7O0FBRUEsVUFBSUQsT0FBTyxJQUFJQSxPQUFPLENBQUNoQixRQUFSLENBQWlCakcsYUFBNUIsSUFBNkNpSCxPQUFPLENBQUMxQyxLQUFSLEtBQWtCbEUsTUFBTSxDQUFDSSxNQUF0RSxJQUFnRjhFLENBQUMsQ0FBQ29FLE9BQUYsS0FBYyxFQUFsRyxFQUFzRztBQUNsRzFDLGVBQU8sQ0FBQ0UsS0FBUjtBQUNIO0FBQ0osS0FORCxFQTlCeUIsQ0FzQ3pCOztBQUNBbkksS0FBQyxDQUFDSSxNQUFELENBQUQsQ0FBVTBHLEVBQVYsQ0FBYSxnQkFBZ0IzRyxTQUE3QixFQUF3QzBILHFCQUF4QztBQUNILEdBeENEO0FBeUNILENBN3lCQSxDQUFEIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL3JlbW9kYWwuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBSZW1vZGFsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvZGthYmVhcnMvUmVtb2RhbFxuICogV2l0aCBTdGFja2FibGUgb3B0aW9uIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FudHN0b3JtL1JlbW9kYWwgcGF0Y2hcbiAqL1xuXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuXG4hKGZ1bmN0aW9uKHJvb3QsIGZhY3RvcnkpIHtcbiAgICByZXR1cm4gZmFjdG9yeShyb290LCAkKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKGdsb2JhbCwgJCkge1xuXG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgcGx1Z2luXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RcbiAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAqL1xuICAgIHZhciBQTFVHSU5fTkFNRSA9ICdyZW1vZGFsJztcblxuICAgIC8qKlxuICAgICAqIE5hbWVzcGFjZSBmb3IgQ1NTIGFuZCBldmVudHNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdFxuICAgICAqIEB0eXBlIHtTdHJpbmd9XG4gICAgICovXG4gICAgdmFyIE5BTUVTUEFDRSA9IHdpbmRvdy5SRU1PREFMX0dMT0JBTFMgJiYgd2luZG93LlJFTU9EQUxfR0xPQkFMUy5OQU1FU1BBQ0UgfHwgUExVR0lOX05BTUU7XG5cbiAgICAvKipcbiAgICAgKiBBbmltYXRpb25zdGFydCBldmVudCB3aXRoIHZlbmRvciBwcmVmaXhlc1xuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0XG4gICAgICogQHR5cGUge1N0cmluZ31cbiAgICAgKi9cbiAgICB2YXIgQU5JTUFUSU9OU1RBUlRfRVZFTlRTID0gJC5tYXAoXG4gICAgICAgIFsnYW5pbWF0aW9uc3RhcnQnLCAnd2Via2l0QW5pbWF0aW9uU3RhcnQnLCAnTVNBbmltYXRpb25TdGFydCcsICdvQW5pbWF0aW9uU3RhcnQnXSxcblxuICAgICAgICBmdW5jdGlvbihldmVudE5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBldmVudE5hbWUgKyAnLicgKyBOQU1FU1BBQ0U7XG4gICAgICAgIH1cblxuICAgICkuam9pbignICcpO1xuXG4gICAgLyoqXG4gICAgICogQW5pbWF0aW9uZW5kIGV2ZW50IHdpdGggdmVuZG9yIHByZWZpeGVzXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RcbiAgICAgKiBAdHlwZSB7U3RyaW5nfVxuICAgICAqL1xuICAgIHZhciBBTklNQVRJT05FTkRfRVZFTlRTID0gJC5tYXAoXG4gICAgICAgIFsnYW5pbWF0aW9uZW5kJywgJ3dlYmtpdEFuaW1hdGlvbkVuZCcsICdNU0FuaW1hdGlvbkVuZCcsICdvQW5pbWF0aW9uRW5kJ10sXG5cbiAgICAgICAgZnVuY3Rpb24oZXZlbnROYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnROYW1lICsgJy4nICsgTkFNRVNQQUNFO1xuICAgICAgICB9XG5cbiAgICApLmpvaW4oJyAnKTtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc2V0dGluZ3NcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdFxuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgdmFyIERFRkFVTFRTID0gJC5leHRlbmQoe1xuICAgICAgICBoYXNoVHJhY2tpbmc6IHRydWUsXG4gICAgICAgIGNsb3NlT25Db25maXJtOiB0cnVlLFxuICAgICAgICBjbG9zZU9uQ2FuY2VsOiB0cnVlLFxuICAgICAgICBjbG9zZU9uRXNjYXBlOiB0cnVlLFxuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBtb2RpZmllcjogJycsXG4gICAgICAgIHN0YWNrOiBmYWxzZSxcbiAgICAgICAgYXBwZW5kVG86IG51bGxcbiAgICB9LCB3aW5kb3cuUkVNT0RBTF9HTE9CQUxTICYmIHdpbmRvdy5SRU1PREFMX0dMT0JBTFMuREVGQVVMVFMpO1xuXG4gICAgLyoqXG4gICAgICogU3RhdGVzIG9mIHRoZSBSZW1vZGFsXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RcbiAgICAgKiBAZW51bSB7U3RyaW5nfVxuICAgICAqL1xuICAgIHZhciBTVEFURVMgPSB7XG4gICAgICAgIENMT1NJTkc6ICdjbG9zaW5nJyxcbiAgICAgICAgQ0xPU0VEOiAnY2xvc2VkJyxcbiAgICAgICAgT1BFTklORzogJ29wZW5pbmcnLFxuICAgICAgICBPUEVORUQ6ICdvcGVuZWQnXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJlYXNvbnMgb2YgdGhlIHN0YXRlIGNoYW5nZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdFxuICAgICAqIEBlbnVtIHtTdHJpbmd9XG4gICAgICovXG4gICAgdmFyIFNUQVRFX0NIQU5HRV9SRUFTT05TID0ge1xuICAgICAgICBDT05GSVJNQVRJT046ICdjb25maXJtYXRpb24nLFxuICAgICAgICBDQU5DRUxMQVRJT046ICdjYW5jZWxsYXRpb24nXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIElzIGFuaW1hdGlvbiBzdXBwb3J0ZWQ/XG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RcbiAgICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICAgKi9cbiAgICB2YXIgSVNfQU5JTUFUSU9OID0gKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5zdHlsZTtcblxuICAgICAgICByZXR1cm4gc3R5bGUuYW5pbWF0aW9uTmFtZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBzdHlsZS5XZWJraXRBbmltYXRpb25OYW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIHN0eWxlLk1vekFuaW1hdGlvbk5hbWUgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgc3R5bGUubXNBbmltYXRpb25OYW1lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIHN0eWxlLk9BbmltYXRpb25OYW1lICE9PSB1bmRlZmluZWQ7XG4gICAgfSkoKTtcblxuICAgIC8qKlxuICAgICAqIElzIGlPUz9cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdFxuICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAqL1xuICAgIHZhciBJU19JT1MgPSAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudCBtb2RhbFxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge1JlbW9kYWx9XG4gICAgICovXG4gICAgdmFyIG9wZW5Nb2RhbHMgPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFNjcm9sbGJhciBwb3NpdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHR5cGUge051bWJlcn1cbiAgICAgKi9cbiAgICB2YXIgc2Nyb2xsVG9wO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhbmltYXRpb24gZHVyYXRpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7alF1ZXJ5fSAkZWxlbVxuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QW5pbWF0aW9uRHVyYXRpb24oJGVsZW0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgSVNfQU5JTUFUSU9OICYmXG4gICAgICAgICAgICAkZWxlbS5jc3MoJ2FuaW1hdGlvbi1uYW1lJykgPT09ICdub25lJyAmJlxuICAgICAgICAgICAgJGVsZW0uY3NzKCctd2Via2l0LWFuaW1hdGlvbi1uYW1lJykgPT09ICdub25lJyAmJlxuICAgICAgICAgICAgJGVsZW0uY3NzKCctbW96LWFuaW1hdGlvbi1uYW1lJykgPT09ICdub25lJyAmJlxuICAgICAgICAgICAgJGVsZW0uY3NzKCctby1hbmltYXRpb24tbmFtZScpID09PSAnbm9uZScgJiZcbiAgICAgICAgICAgICRlbGVtLmNzcygnLW1zLWFuaW1hdGlvbi1uYW1lJykgPT09ICdub25lJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGR1cmF0aW9uID0gJGVsZW0uY3NzKCdhbmltYXRpb24tZHVyYXRpb24nKSB8fFxuICAgICAgICAgICAgJGVsZW0uY3NzKCctd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbicpIHx8XG4gICAgICAgICAgICAkZWxlbS5jc3MoJy1tb3otYW5pbWF0aW9uLWR1cmF0aW9uJykgfHxcbiAgICAgICAgICAgICRlbGVtLmNzcygnLW8tYW5pbWF0aW9uLWR1cmF0aW9uJykgfHxcbiAgICAgICAgICAgICRlbGVtLmNzcygnLW1zLWFuaW1hdGlvbi1kdXJhdGlvbicpIHx8XG4gICAgICAgICAgICAnMHMnO1xuXG4gICAgICAgIHZhciBkZWxheSA9ICRlbGVtLmNzcygnYW5pbWF0aW9uLWRlbGF5JykgfHxcbiAgICAgICAgICAgICRlbGVtLmNzcygnLXdlYmtpdC1hbmltYXRpb24tZGVsYXknKSB8fFxuICAgICAgICAgICAgJGVsZW0uY3NzKCctbW96LWFuaW1hdGlvbi1kZWxheScpIHx8XG4gICAgICAgICAgICAkZWxlbS5jc3MoJy1vLWFuaW1hdGlvbi1kZWxheScpIHx8XG4gICAgICAgICAgICAkZWxlbS5jc3MoJy1tcy1hbmltYXRpb24tZGVsYXknKSB8fFxuICAgICAgICAgICAgJzBzJztcblxuICAgICAgICB2YXIgaXRlcmF0aW9uQ291bnQgPSAkZWxlbS5jc3MoJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnKSB8fFxuICAgICAgICAgICAgJGVsZW0uY3NzKCctd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnKSB8fFxuICAgICAgICAgICAgJGVsZW0uY3NzKCctbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnKSB8fFxuICAgICAgICAgICAgJGVsZW0uY3NzKCctby1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50JykgfHxcbiAgICAgICAgICAgICRlbGVtLmNzcygnLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnKSB8fFxuICAgICAgICAgICAgJzEnO1xuXG4gICAgICAgIHZhciBtYXg7XG4gICAgICAgIHZhciBsZW47XG4gICAgICAgIHZhciBudW07XG4gICAgICAgIHZhciBpO1xuXG4gICAgICAgIGR1cmF0aW9uID0gZHVyYXRpb24uc3BsaXQoJywgJyk7XG4gICAgICAgIGRlbGF5ID0gZGVsYXkuc3BsaXQoJywgJyk7XG4gICAgICAgIGl0ZXJhdGlvbkNvdW50ID0gaXRlcmF0aW9uQ291bnQuc3BsaXQoJywgJyk7XG5cbiAgICAgICAgLy8gVGhlICdkdXJhdGlvbicgc2l6ZSBpcyB0aGUgc2FtZSBhcyB0aGUgJ2RlbGF5JyBzaXplXG4gICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGR1cmF0aW9uLmxlbmd0aCwgbWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIG51bSA9IHBhcnNlRmxvYXQoZHVyYXRpb25baV0pICogcGFyc2VJbnQoaXRlcmF0aW9uQ291bnRbaV0sIDEwKSArIHBhcnNlRmxvYXQoZGVsYXlbaV0pO1xuXG4gICAgICAgICAgICBpZiAobnVtID4gbWF4KSB7XG4gICAgICAgICAgICAgICAgbWF4ID0gbnVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgc2Nyb2xsYmFyIHdpZHRoXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcmV0dXJucyB7TnVtYmVyfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFNjcm9sbGJhcldpZHRoKCkge1xuICAgICAgICBpZiAoJChkb2N1bWVudCkuaGVpZ2h0KCkgPD0gJCh3aW5kb3cpLmhlaWdodCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvdXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdmFyIHdpZHRoTm9TY3JvbGw7XG4gICAgICAgIHZhciB3aWR0aFdpdGhTY3JvbGw7XG5cbiAgICAgICAgb3V0ZXIuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICBvdXRlci5zdHlsZS53aWR0aCA9ICcxMDBweCc7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0ZXIpO1xuXG4gICAgICAgIHdpZHRoTm9TY3JvbGwgPSBvdXRlci5vZmZzZXRXaWR0aDtcblxuICAgICAgICAvLyBGb3JjZSBzY3JvbGxiYXJzXG4gICAgICAgIG91dGVyLnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG5cbiAgICAgICAgLy8gQWRkIGlubmVyIGRpdlxuICAgICAgICBpbm5lci5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICAgICAgb3V0ZXIuYXBwZW5kQ2hpbGQoaW5uZXIpO1xuXG4gICAgICAgIHdpZHRoV2l0aFNjcm9sbCA9IGlubmVyLm9mZnNldFdpZHRoO1xuXG4gICAgICAgIC8vIFJlbW92ZSBkaXZzXG4gICAgICAgIG91dGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3V0ZXIpO1xuXG4gICAgICAgIHJldHVybiB3aWR0aE5vU2Nyb2xsIC0gd2lkdGhXaXRoU2Nyb2xsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvY2tzIHRoZSBzY3JlZW5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxvY2tTY3JlZW4oKSB7XG4gICAgICAgIGlmIChJU19JT1MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciAkaHRtbCA9ICQoJ2h0bWwnKTtcbiAgICAgICAgdmFyIGxvY2tlZENsYXNzID0gbmFtZXNwYWNpZnkoJ2lzLWxvY2tlZCcpO1xuICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0O1xuICAgICAgICB2YXIgJGJvZHk7XG5cbiAgICAgICAgaWYgKCEkaHRtbC5oYXNDbGFzcyhsb2NrZWRDbGFzcykpIHtcbiAgICAgICAgICAgICRib2R5ID0gJChkb2N1bWVudC5ib2R5KTtcblxuICAgICAgICAgICAgLy8gWmVwdG8gZG9lcyBub3Qgc3VwcG9ydCAnLT0nLCAnKz0nIGluIHRoZSBgY3NzYCBtZXRob2RcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodCA9IHBhcnNlSW50KCRib2R5LmNzcygncGFkZGluZy1yaWdodCcpLCAxMCkgKyBnZXRTY3JvbGxiYXJXaWR0aCgpO1xuXG4gICAgICAgICAgICAkYm9keS5jc3MoJ3BhZGRpbmctcmlnaHQnLCBwYWRkaW5nUmlnaHQgKyAncHgnKTtcbiAgICAgICAgICAgICRodG1sLmFkZENsYXNzKGxvY2tlZENsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVubG9ja3MgdGhlIHNjcmVlblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5sb2NrU2NyZWVuKCkge1xuICAgICAgICBpZiAoSVNfSU9TKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJGh0bWwgPSAkKCdodG1sJyk7XG4gICAgICAgIHZhciBsb2NrZWRDbGFzcyA9IG5hbWVzcGFjaWZ5KCdpcy1sb2NrZWQnKTtcbiAgICAgICAgdmFyIHBhZGRpbmdSaWdodDtcbiAgICAgICAgdmFyICRib2R5O1xuXG4gICAgICAgIGlmICgkaHRtbC5oYXNDbGFzcyhsb2NrZWRDbGFzcykpIHtcbiAgICAgICAgICAgICRib2R5ID0gJChkb2N1bWVudC5ib2R5KTtcblxuICAgICAgICAgICAgLy8gWmVwdG8gZG9lcyBub3Qgc3VwcG9ydCAnLT0nLCAnKz0nIGluIHRoZSBgY3NzYCBtZXRob2RcbiAgICAgICAgICAgIHBhZGRpbmdSaWdodCA9IHBhcnNlSW50KCRib2R5LmNzcygncGFkZGluZy1yaWdodCcpLCAxMCkgLSBnZXRTY3JvbGxiYXJXaWR0aCgpO1xuXG4gICAgICAgICAgICAkYm9keS5jc3MoJ3BhZGRpbmctcmlnaHQnLCBwYWRkaW5nUmlnaHQgKyAncHgnKTtcbiAgICAgICAgICAgICRodG1sLnJlbW92ZUNsYXNzKGxvY2tlZENsYXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSBzdGF0ZSBmb3IgYW4gaW5zdGFuY2VcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7UmVtb2RhbH0gaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge1NUQVRFU30gc3RhdGVcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzU2lsZW50IElmIHRydWUsIFJlbW9kYWwgZG9lcyBub3QgdHJpZ2dlciBldmVudHNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gUmVhc29uIG9mIGEgc3RhdGUgY2hhbmdlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFN0YXRlKGluc3RhbmNlLCBzdGF0ZSwgaXNTaWxlbnQsIHJlYXNvbikge1xuXG4gICAgICAgIHZhciBuZXdTdGF0ZSA9IG5hbWVzcGFjaWZ5KCdpcycsIHN0YXRlKTtcbiAgICAgICAgdmFyIGFsbFN0YXRlcyA9IFtuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuQ0xPU0lORyksXG4gICAgICAgICAgICBuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuT1BFTklORyksXG4gICAgICAgICAgICBuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuQ0xPU0VEKSxcbiAgICAgICAgICAgIG5hbWVzcGFjaWZ5KCdpcycsIFNUQVRFUy5PUEVORUQpXS5qb2luKCcgJyk7XG5cbiAgICAgICAgaW5zdGFuY2UuJGJnXG4gICAgICAgICAgICAucmVtb3ZlQ2xhc3MoYWxsU3RhdGVzKVxuICAgICAgICAgICAgLmFkZENsYXNzKG5ld1N0YXRlKTtcblxuICAgICAgICBpbnN0YW5jZS4kb3ZlcmxheVxuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKGFsbFN0YXRlcylcbiAgICAgICAgICAgIC5hZGRDbGFzcyhuZXdTdGF0ZSk7XG5cbiAgICAgICAgaW5zdGFuY2UuJHdyYXBwZXJcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcyhhbGxTdGF0ZXMpXG4gICAgICAgICAgICAuYWRkQ2xhc3MobmV3U3RhdGUpO1xuXG4gICAgICAgIGluc3RhbmNlLiRtb2RhbFxuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKGFsbFN0YXRlcylcbiAgICAgICAgICAgIC5hZGRDbGFzcyhuZXdTdGF0ZSk7XG5cbiAgICAgICAgaW5zdGFuY2Uuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgIWlzU2lsZW50ICYmIGluc3RhbmNlLiRtb2RhbC50cmlnZ2VyKHtcbiAgICAgICAgICAgIHR5cGU6IHN0YXRlLFxuICAgICAgICAgICAgcmVhc29uOiByZWFzb25cbiAgICAgICAgfSwgW3sgcmVhc29uOiByZWFzb24gfV0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmNocm9uaXplcyB3aXRoIHRoZSBhbmltYXRpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkb0JlZm9yZUFuaW1hdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGRvQWZ0ZXJBbmltYXRpb25cbiAgICAgKiBAcGFyYW0ge1JlbW9kYWx9IGluc3RhbmNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3luY1dpdGhBbmltYXRpb24oZG9CZWZvcmVBbmltYXRpb24sIGRvQWZ0ZXJBbmltYXRpb24sIGluc3RhbmNlKSB7XG4gICAgICAgIHZhciBydW5uaW5nQW5pbWF0aW9uc0NvdW50ID0gMDtcblxuICAgICAgICB2YXIgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJ1bm5pbmdBbmltYXRpb25zQ291bnQrKztcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgaGFuZGxlQW5pbWF0aW9uRW5kID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoLS1ydW5uaW5nQW5pbWF0aW9uc0NvdW50ID09PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZXZlbnQgbGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgJC5lYWNoKFsnJGJnJywgJyRvdmVybGF5JywgJyR3cmFwcGVyJywgJyRtb2RhbCddLCBmdW5jdGlvbihpbmRleCwgZWxlbU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VbZWxlbU5hbWVdLm9mZihBTklNQVRJT05TVEFSVF9FVkVOVFMgKyAnICcgKyBBTklNQVRJT05FTkRfRVZFTlRTKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGRvQWZ0ZXJBbmltYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAkLmVhY2goWyckYmcnLCAnJG92ZXJsYXknLCAnJHdyYXBwZXInLCAnJG1vZGFsJ10sIGZ1bmN0aW9uKGluZGV4LCBlbGVtTmFtZSkge1xuICAgICAgICAgICAgaW5zdGFuY2VbZWxlbU5hbWVdXG4gICAgICAgICAgICAgICAgLm9uKEFOSU1BVElPTlNUQVJUX0VWRU5UUywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpXG4gICAgICAgICAgICAgICAgLm9uKEFOSU1BVElPTkVORF9FVkVOVFMsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRvQmVmb3JlQW5pbWF0aW9uKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGFuaW1hdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGEgYnJvd3NlciBvciBpdHMgZHVyYXRpb24gaXMgMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBnZXRBbmltYXRpb25EdXJhdGlvbihpbnN0YW5jZS4kYmcpID09PSAwICYmXG4gICAgICAgICAgICBnZXRBbmltYXRpb25EdXJhdGlvbihpbnN0YW5jZS4kb3ZlcmxheSkgPT09IDAgJiZcbiAgICAgICAgICAgIGdldEFuaW1hdGlvbkR1cmF0aW9uKGluc3RhbmNlLiR3cmFwcGVyKSA9PT0gMCAmJlxuICAgICAgICAgICAgZ2V0QW5pbWF0aW9uRHVyYXRpb24oaW5zdGFuY2UuJG1vZGFsKSA9PT0gMFxuICAgICAgICApIHtcblxuICAgICAgICAgICAgLy8gUmVtb3ZlIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgICAgICAgJC5lYWNoKFsnJGJnJywgJyRvdmVybGF5JywgJyR3cmFwcGVyJywgJyRtb2RhbCddLCBmdW5jdGlvbihpbmRleCwgZWxlbU5hbWUpIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZVtlbGVtTmFtZV0ub2ZmKEFOSU1BVElPTlNUQVJUX0VWRU5UUyArICcgJyArIEFOSU1BVElPTkVORF9FVkVOVFMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRvQWZ0ZXJBbmltYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBpbW1lZGlhdGVseVxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtSZW1vZGFsfSBpbnN0YW5jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhbHQoaW5zdGFuY2UpIHtcbiAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlID09PSBTVEFURVMuQ0xPU0VEKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAkLmVhY2goWyckYmcnLCAnJG92ZXJsYXknLCAnJHdyYXBwZXInLCAnJG1vZGFsJ10sIGZ1bmN0aW9uKGluZGV4LCBlbGVtTmFtZSkge1xuICAgICAgICAgICAgaW5zdGFuY2VbZWxlbU5hbWVdLm9mZihBTklNQVRJT05TVEFSVF9FVkVOVFMgKyAnICcgKyBBTklNQVRJT05FTkRfRVZFTlRTKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVtb3ZlTW9kYWwoaW5zdGFuY2UpO1xuICAgICAgICBpbnN0YW5jZS4kYmcucmVtb3ZlQ2xhc3MoaW5zdGFuY2Uuc2V0dGluZ3MubW9kaWZpZXIpO1xuICAgICAgICBpbnN0YW5jZS4kb3ZlcmxheS5yZW1vdmVDbGFzcyhpbnN0YW5jZS5zZXR0aW5ncy5tb2RpZmllcikuaGlkZSgpO1xuICAgICAgICBpbnN0YW5jZS4kd3JhcHBlci5oaWRlKCk7XG5cbiAgICAgICAgaWYgKG9wZW5Nb2RhbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB1bmxvY2tTY3JlZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFN0YXRlKGluc3RhbmNlLCBTVEFURVMuQ0xPU0VELCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgYSBzdHJpbmcgd2l0aCBvcHRpb25zXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gc3RyXG4gICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJzZU9wdGlvbnMoc3RyKSB7XG4gICAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgICAgdmFyIGFycjtcbiAgICAgICAgdmFyIGxlbjtcbiAgICAgICAgdmFyIHZhbDtcbiAgICAgICAgdmFyIGk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHNwYWNlcyBiZWZvcmUgYW5kIGFmdGVyIGRlbGltaXRlcnNcbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoL1xccyo6XFxzKi9nLCAnOicpLnJlcGxhY2UoL1xccyosXFxzKi9nLCAnLCcpO1xuXG4gICAgICAgIC8vIFBhcnNlIGEgc3RyaW5nXG4gICAgICAgIGFyciA9IHN0ci5zcGxpdCgnLCcpO1xuICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGFycltpXSA9IGFycltpXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgdmFsID0gYXJyW2ldWzFdO1xuXG4gICAgICAgICAgICAvLyBDb252ZXJ0IGEgc3RyaW5nIHZhbHVlIGlmIGl0IGlzIGxpa2UgYSBib29sZWFuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsID09PSAndHJ1ZScgfHwgKHZhbCA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdmFsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ29udmVydCBhIHN0cmluZyB2YWx1ZSBpZiBpdCBpcyBsaWtlIGEgbnVtYmVyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdmFsIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gIWlzTmFOKHZhbCkgPyArdmFsIDogdmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvYmpbYXJyW2ldWzBdXSA9IHZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBkYXNoZXMgYW5kIHByZWZpeGVkIHdpdGggTkFNRVNQQUNFXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0gey4uLlN0cmluZ31cbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hbWVzcGFjaWZ5KCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gTkFNRVNQQUNFO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJy0nICsgYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHRoZSBoYXNoY2hhbmdlIGV2ZW50XG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbGlzdGVucyBoYXNoY2hhbmdlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZUV2ZW50KCkge1xuICAgICAgICB2YXIgaWQgPSBsb2NhdGlvbi5oYXNoLnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgICAgIHZhciBpbnN0YW5jZTtcbiAgICAgICAgdmFyICRlbGVtO1xuXG4gICAgICAgIHZhciBjdXJyZW50ID0gY3VycmVudE1vZGFsKCk7XG5cbiAgICAgICAgaWYgKCFpZCkge1xuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGN1cnJlbnRseSBvcGVuZWQgbW9kYWwgYW5kIGFuaW1hdGlvbiB3YXMgY29tcGxldGVkXG4gICAgICAgICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50LnN0YXRlID09PSBTVEFURVMuT1BFTkVEICYmIGN1cnJlbnQuc2V0dGluZ3MuaGFzaFRyYWNraW5nKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC5pZCAhPT0gaWQpIHtcbiAgICAgICAgICAgICAgICAvLyBDYXRjaCBzeW50YXggZXJyb3IgaWYgeW91ciBoYXNoIGlzIGJhZFxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICRlbGVtID0gJChcbiAgICAgICAgICAgICAgICAgICAgICAgICdbZGF0YS0nICsgUExVR0lOX05BTUUgKyAnLWlkPVwiJyArIGlkICsgJ1wiXSdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoJGVsZW0gJiYgJGVsZW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlID0gJFtQTFVHSU5fTkFNRV0ubG9va3VwWyRlbGVtLmRhdGEoUExVR0lOX05BTUUpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2Uuc2V0dGluZ3MuaGFzaFRyYWNraW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5vcGVuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnRNb2RhbCgpIHtcbiAgICAgICAgcmV0dXJuIG9wZW5Nb2RhbHNbb3Blbk1vZGFscy5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW1vdmVNb2RhbChyZW1vZGFsKSB7XG4gICAgICAgIHZhciBpbmRleCA9IG9wZW5Nb2RhbHMuaW5kZXhPZihyZW1vZGFsKTtcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgb3Blbk1vZGFscy5zbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vZGFsIGNvbnN0cnVjdG9yXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtqUXVlcnl9ICRtb2RhbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICovXG4gICAgZnVuY3Rpb24gUmVtb2RhbCgkbW9kYWwsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyICRib2R5ID0gJChkb2N1bWVudC5ib2R5KTtcbiAgICAgICAgdmFyICRhcHBlbmRUbyA9ICRib2R5O1xuICAgICAgICB2YXIgcmVtb2RhbCA9IHRoaXM7XG5cbiAgICAgICAgcmVtb2RhbC5pZCA9ICRtb2RhbC5hdHRyKCdkYXRhLScgKyBQTFVHSU5fTkFNRSArICctaWQnKTtcbiAgICAgICAgcmVtb2RhbC5zZXR0aW5ncyA9ICQuZXh0ZW5kKHt9LCBERUZBVUxUUywgb3B0aW9ucyk7XG4gICAgICAgIHJlbW9kYWwuaW5kZXggPSAkW1BMVUdJTl9OQU1FXS5sb29rdXAucHVzaChyZW1vZGFsKSAtIDE7XG4gICAgICAgIHJlbW9kYWwuc3RhdGUgPSBTVEFURVMuQ0xPU0VEO1xuXG4gICAgICAgIC8vIHJlbW9kYWwuJG92ZXJsYXkgPSAkKCcuJyArIG5hbWVzcGFjaWZ5KCdvdmVybGF5JykpO1xuXG4gICAgICAgIGlmIChyZW1vZGFsLnNldHRpbmdzLmFwcGVuZFRvICE9PSBudWxsICYmIHJlbW9kYWwuc2V0dGluZ3MuYXBwZW5kVG8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAkYXBwZW5kVG8gPSAkKHJlbW9kYWwuc2V0dGluZ3MuYXBwZW5kVG8pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZW1vZGFsLiRvdmVybGF5KSB7XG4gICAgICAgICAgICByZW1vZGFsLiRvdmVybGF5ID0gJCgnPGRpdj4nKS5hZGRDbGFzcyhuYW1lc3BhY2lmeSgnb3ZlcmxheScpICsgJyAnICsgbmFtZXNwYWNpZnkoJ2lzJywgU1RBVEVTLkNMT1NFRCkpLmhpZGUoKTtcbiAgICAgICAgICAgICRhcHBlbmRUby5hcHBlbmQocmVtb2RhbC4kb3ZlcmxheSk7XG4gICAgICAgIH1cblxuICAgICAgICByZW1vZGFsLiRiZyA9ICQoJy4nICsgbmFtZXNwYWNpZnkoJ2JnJykpLmFkZENsYXNzKG5hbWVzcGFjaWZ5KCdpcycsIFNUQVRFUy5DTE9TRUQpKTtcblxuICAgICAgICByZW1vZGFsLiRtb2RhbCA9ICRtb2RhbFxuICAgICAgICAgICAgLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIE5BTUVTUEFDRSArICcgJyArXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNpZnkoJ2lzLWluaXRpYWxpemVkJykgKyAnICcgK1xuICAgICAgICAgICAgICAgIHJlbW9kYWwuc2V0dGluZ3MubW9kaWZpZXIgKyAnICcgK1xuICAgICAgICAgICAgICAgIG5hbWVzcGFjaWZ5KCdpcycsIFNUQVRFUy5DTE9TRUQpKVxuICAgICAgICAgICAgLmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgICAgICAgcmVtb2RhbC4kd3JhcHBlciA9ICQoJzxkaXY+JylcbiAgICAgICAgICAgIC5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2lmeSgnd3JhcHBlcicpICsgJyAnICtcbiAgICAgICAgICAgICAgICByZW1vZGFsLnNldHRpbmdzLm1vZGlmaWVyICsgJyAnICtcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuQ0xPU0VEKSlcbiAgICAgICAgICAgIC5oaWRlKClcbiAgICAgICAgICAgIC5hcHBlbmQocmVtb2RhbC4kbW9kYWwpO1xuICAgICAgICAkYXBwZW5kVG8uYXBwZW5kKHJlbW9kYWwuJHdyYXBwZXIpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBjbG9zZSBidXR0b25cbiAgICAgICAgcmVtb2RhbC4kd3JhcHBlci5vbignY2xpY2suJyArIE5BTUVTUEFDRSwgJ1tkYXRhLScgKyBQTFVHSU5fTkFNRSArICctYWN0aW9uPVwiY2xvc2VcIl0nLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHJlbW9kYWwuY2xvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBldmVudCBsaXN0ZW5lciBmb3IgdGhlIGNhbmNlbCBidXR0b25cbiAgICAgICAgcmVtb2RhbC4kd3JhcHBlci5vbignY2xpY2suJyArIE5BTUVTUEFDRSwgJ1tkYXRhLScgKyBQTFVHSU5fTkFNRSArICctYWN0aW9uPVwiY2FuY2VsXCJdJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZW1vZGFsLiRtb2RhbC50cmlnZ2VyKFNUQVRFX0NIQU5HRV9SRUFTT05TLkNBTkNFTExBVElPTik7XG5cbiAgICAgICAgICAgIGlmIChyZW1vZGFsLnNldHRpbmdzLmNsb3NlT25DYW5jZWwpIHtcbiAgICAgICAgICAgICAgICByZW1vZGFsLmNsb3NlKFNUQVRFX0NIQU5HRV9SRUFTT05TLkNBTkNFTExBVElPTik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgZXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBjb25maXJtIGJ1dHRvblxuICAgICAgICByZW1vZGFsLiR3cmFwcGVyLm9uKCdjbGljay4nICsgTkFNRVNQQUNFLCAnW2RhdGEtJyArIFBMVUdJTl9OQU1FICsgJy1hY3Rpb249XCJjb25maXJtXCJdJywgZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICByZW1vZGFsLiRtb2RhbC50cmlnZ2VyKFNUQVRFX0NIQU5HRV9SRUFTT05TLkNPTkZJUk1BVElPTik7XG5cbiAgICAgICAgICAgIGlmIChyZW1vZGFsLnNldHRpbmdzLmNsb3NlT25Db25maXJtKSB7XG4gICAgICAgICAgICAgICAgcmVtb2RhbC5jbG9zZShTVEFURV9DSEFOR0VfUkVBU09OUy5DT05GSVJNQVRJT04pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZGQgdGhlIGV2ZW50IGxpc3RlbmVyIGZvciB0aGUgb3ZlcmxheVxuICAgICAgICByZW1vZGFsLiR3cmFwcGVyLm9uKCdjbGljay4nICsgTkFNRVNQQUNFLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICB2YXIgJHRhcmdldCA9ICQoZS50YXJnZXQpO1xuICAgICAgICAgICAgdmFyIGlzV3JhcHBlciA9ICR0YXJnZXQuaGFzQ2xhc3MobmFtZXNwYWNpZnkoJ3dyYXBwZXInKSk7XG4gICAgICAgICAgICB2YXIgaXNXaXRoaW4gPSAkdGFyZ2V0LmNsb3Nlc3QoJy4nICsgbmFtZXNwYWNpZnkoJ2lzJywgU1RBVEVTLk9QRU5FRCkpLmxlbmd0aDtcblxuICAgICAgICAgICAgaWYgKCFpc1dyYXBwZXIgJiYgaXNXaXRoaW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZW1vZGFsLnNldHRpbmdzLmNsb3NlT25PdXRzaWRlQ2xpY2spIHtcbiAgICAgICAgICAgICAgICByZW1vZGFsLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgbW9kYWwgd2luZG93XG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIFJlbW9kYWwucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJlbW9kYWwgPSB0aGlzO1xuICAgICAgICB2YXIgY3VycmVudDtcbiAgICAgICAgdmFyIG1vZGFsQ291bnQ7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGFuaW1hdGlvbiB3YXMgY29tcGxldGVkXG4gICAgICAgIGlmIChyZW1vZGFsLnN0YXRlID09PSBTVEFURVMuT1BFTklORyB8fCByZW1vZGFsLnN0YXRlID09PSBTVEFURVMuQ0xPU0lORykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWQgPSByZW1vZGFsLiRtb2RhbC5hdHRyKCdkYXRhLScgKyBQTFVHSU5fTkFNRSArICctaWQnKTtcblxuICAgICAgICBpZiAocmVtb2RhbC5pZCAmJiByZW1vZGFsLnNldHRpbmdzLmhhc2hUcmFja2luZykge1xuICAgICAgICAgICAgc2Nyb2xsVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpO1xuICAgICAgICAgICAgbG9jYXRpb24uaGFzaCA9IHJlbW9kYWwuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlbW9kYWwuc2V0dGluZ3Muc3RhY2spIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50TW9kYWwoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IHJlbW9kYWwpIHtcbiAgICAgICAgICAgICAgICBoYWx0KGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbW9kYWxDb3VudCA9IG9wZW5Nb2RhbHMucHVzaChyZW1vZGFsKTtcbiAgICAgICAgcmVtb2RhbC4kb3ZlcmxheS5jc3MoJ3otaW5kZXgnLCBmdW5jdGlvbihfLCB2YWx1ZSkgeyByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKSArIG1vZGFsQ291bnQ7IH0pO1xuICAgICAgICByZW1vZGFsLiR3cmFwcGVyLmNzcygnei1pbmRleCcsIGZ1bmN0aW9uKF8sIHZhbHVlKSB7IHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApICsgbW9kYWxDb3VudDsgfSk7XG5cbiAgICAgICAgbG9ja1NjcmVlbigpO1xuICAgICAgICByZW1vZGFsLiRiZy5hZGRDbGFzcyhyZW1vZGFsLnNldHRpbmdzLm1vZGlmaWVyKTtcbiAgICAgICAgcmVtb2RhbC4kb3ZlcmxheS5hZGRDbGFzcyhyZW1vZGFsLnNldHRpbmdzLm1vZGlmaWVyKS5zaG93KCk7XG4gICAgICAgIHJlbW9kYWwuJHdyYXBwZXIuc2hvdygpLnNjcm9sbFRvcCgwKTtcbiAgICAgICAgcmVtb2RhbC4kbW9kYWwuZm9jdXMoKTtcblxuICAgICAgICBzeW5jV2l0aEFuaW1hdGlvbihcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlKHJlbW9kYWwsIFNUQVRFUy5PUEVOSU5HKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlKHJlbW9kYWwsIFNUQVRFUy5PUEVORUQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb2RhbCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBhIG1vZGFsIHdpbmRvd1xuICAgICAqIEBwdWJsaWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcmVhc29uXG4gICAgICovXG4gICAgUmVtb2RhbC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbihyZWFzb24pIHtcbiAgICAgICAgdmFyIHJlbW9kYWwgPSB0aGlzO1xuICAgICAgICB2YXIgY3VycmVudDtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgYW5pbWF0aW9uIHdhcyBjb21wbGV0ZWRcbiAgICAgICAgaWYgKHJlbW9kYWwuc3RhdGUgPT09IFNUQVRFUy5PUEVOSU5HIHx8IHJlbW9kYWwuc3RhdGUgPT09IFNUQVRFUy5DTE9TSU5HIHx8IHJlbW9kYWwuc3RhdGUgPT09IFNUQVRFUy5DTE9TRUQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbW92ZU1vZGFsKHJlbW9kYWwpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlbW9kYWwuc2V0dGluZ3MuaGFzaFRyYWNraW5nICYmXG4gICAgICAgICAgICByZW1vZGFsLmlkID09PSBsb2NhdGlvbi5oYXNoLnN1YnN0cigxKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50TW9kYWwoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgbG9jYXRpb24uaGFzaCA9IGN1cnJlbnQuaWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICAgICAgICAgICAgICAkKHdpbmRvdykuc2Nyb2xsVG9wKHNjcm9sbFRvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzeW5jV2l0aEFuaW1hdGlvbihcbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlKHJlbW9kYWwsIFNUQVRFUy5DTE9TSU5HLCBmYWxzZSwgcmVhc29uKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlbW9kYWwuJGJnLnJlbW92ZUNsYXNzKHJlbW9kYWwuc2V0dGluZ3MubW9kaWZpZXIpO1xuICAgICAgICAgICAgICAgIHJlbW9kYWwuJG92ZXJsYXkucmVtb3ZlQ2xhc3MocmVtb2RhbC5zZXR0aW5ncy5tb2RpZmllcikuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHJlbW9kYWwuJHdyYXBwZXIuaGlkZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9wZW5Nb2RhbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHVubG9ja1NjcmVlbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFN0YXRlKHJlbW9kYWwsIFNUQVRFUy5DTE9TRUQsIGZhbHNlLCByZWFzb24pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb2RhbCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBjdXJyZW50IHN0YXRlIG9mIGEgbW9kYWxcbiAgICAgKiBAcHVibGljXG4gICAgICogQHJldHVybnMge1NUQVRFU31cbiAgICAgKi9cbiAgICBSZW1vZGFsLnByb3RvdHlwZS5nZXRTdGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVzdHJveXMgYSBtb2RhbFxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBSZW1vZGFsLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBsb29rdXAgPSAkW1BMVUdJTl9OQU1FXS5sb29rdXA7XG4gICAgICAgIHZhciBpbnN0YW5jZUNvdW50O1xuXG4gICAgICAgIGhhbHQodGhpcyk7XG4gICAgICAgIHRoaXMuJHdyYXBwZXIucmVtb3ZlKCk7XG5cbiAgICAgICAgZGVsZXRlIGxvb2t1cFt0aGlzLmluZGV4XTtcbiAgICAgICAgaW5zdGFuY2VDb3VudCA9ICQuZ3JlcChsb29rdXAsIGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gISFpbnN0YW5jZTtcbiAgICAgICAgfSkubGVuZ3RoO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZUNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLiRvdmVybGF5LnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy4kYmcucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNpZnkoJ2lzJywgU1RBVEVTLkNMT1NJTkcpICsgJyAnICtcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuT1BFTklORykgKyAnICcgK1xuICAgICAgICAgICAgICAgIG5hbWVzcGFjaWZ5KCdpcycsIFNUQVRFUy5DTE9TRUQpICsgJyAnICtcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2lmeSgnaXMnLCBTVEFURVMuT1BFTkVEKSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lhbCBwbHVnaW4gb2JqZWN0IGZvciBpbnN0YW5jZXNcbiAgICAgKiBAcHVibGljXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICAkW1BMVUdJTl9OQU1FXSA9IHtcbiAgICAgICAgbG9va3VwOiBbXVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQbHVnaW4gY29uc3RydWN0b3JcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEByZXR1cm5zIHtKUXVlcnl9XG4gICAgICovXG4gICAgJC5mbltQTFVHSU5fTkFNRV0gPSBmdW5jdGlvbihvcHRzKSB7XG4gICAgICAgIHZhciBpbnN0YW5jZTtcbiAgICAgICAgdmFyICRlbGVtO1xuXG4gICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbihpbmRleCwgZWxlbSkge1xuICAgICAgICAgICAgJGVsZW0gPSAkKGVsZW0pO1xuXG4gICAgICAgICAgICBpZiAoJGVsZW0uZGF0YShQTFVHSU5fTkFNRSkgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gbmV3IFJlbW9kYWwoJGVsZW0sIG9wdHMpO1xuICAgICAgICAgICAgICAgICRlbGVtLmRhdGEoUExVR0lOX05BTUUsIGluc3RhbmNlLmluZGV4KTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2Uuc2V0dGluZ3MuaGFzaFRyYWNraW5nICYmXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmlkID09PSBsb2NhdGlvbi5oYXNoLnN1YnN0cigxKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5vcGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9ICRbUExVR0lOX05BTUVdLmxvb2t1cFskZWxlbS5kYXRhKFBMVUdJTl9OQU1FKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgLy8gZGF0YS1yZW1vZGFsLXRhcmdldCBvcGVucyBhIG1vZGFsIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWFsIElkXG4gICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICdbZGF0YS0nICsgUExVR0lOX05BTUUgKyAnLXRhcmdldF0nLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHZhciBlbGVtID0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtJyArIFBMVUdJTl9OQU1FICsgJy10YXJnZXQnKTtcbiAgICAgICAgICAgIHZhciAkdGFyZ2V0ID0gJCgnW2RhdGEtJyArIFBMVUdJTl9OQU1FICsgJy1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAgICAgICAgICAgJFtQTFVHSU5fTkFNRV0ubG9va3VwWyR0YXJnZXQuZGF0YShQTFVHSU5fTkFNRSldLm9wZW4oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQXV0byBpbml0aWFsaXphdGlvbiBvZiBtb2RhbCB3aW5kb3dzXG4gICAgICAgIC8vIFRoZXkgc2hvdWxkIGhhdmUgdGhlICdyZW1vZGFsJyBjbGFzcyBhdHRyaWJ1dGVcbiAgICAgICAgLy8gQWxzbyB5b3UgY2FuIHdyaXRlIHRoZSBgZGF0YS1yZW1vZGFsLW9wdGlvbnNgIGF0dHJpYnV0ZSB0byBwYXNzIHBhcmFtcyBpbnRvIHRoZSBtb2RhbFxuICAgICAgICAkKGRvY3VtZW50KS5maW5kKCcuJyArIE5BTUVTUEFDRSkuZWFjaChmdW5jdGlvbihpLCBjb250YWluZXIpIHtcbiAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSAkY29udGFpbmVyLmRhdGEoUExVR0lOX05BTUUgKyAnLW9wdGlvbnMnKTtcblxuICAgICAgICAgICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgfHwgb3B0aW9ucyBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICRjb250YWluZXJbUExVR0lOX05BTUVdKG9wdGlvbnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBIYW5kbGVzIHRoZSBrZXlkb3duIGV2ZW50XG4gICAgICAgICQoZG9jdW1lbnQpLm9uKCdrZXlkb3duLicgKyBOQU1FU1BBQ0UsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gY3VycmVudE1vZGFsKCk7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnQuc2V0dGluZ3MuY2xvc2VPbkVzY2FwZSAmJiBjdXJyZW50LnN0YXRlID09PSBTVEFURVMuT1BFTkVEICYmIGUua2V5Q29kZSA9PT0gMjcpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50LmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEhhbmRsZXMgdGhlIGhhc2hjaGFuZ2UgZXZlbnRcbiAgICAgICAgJCh3aW5kb3cpLm9uKCdoYXNoY2hhbmdlLicgKyBOQU1FU1BBQ0UsIGhhbmRsZUhhc2hDaGFuZ2VFdmVudCk7XG4gICAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/remodal.js\n");
/***/ }),
/***/ "./app/utils/request.js":
/*!******************************!*\
!*** ./app/utils/request.js ***!
\******************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var _response__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./response */ \"./app/utils/response.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar raw;\n\nvar request = function request(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {\n return true;\n };\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.method && options.method === 'post') {\n var data = new FormData();\n options.body = Object.assign({\n 'admin-nonce': grav_config__WEBPACK_IMPORTED_MODULE_1__.config.admin_nonce\n }, options.body || {});\n Object.keys(options.body).map(function (key) {\n return data.append(key, options.body[key]);\n });\n options.body = data;\n }\n\n options = Object.assign({\n credentials: 'same-origin',\n headers: {\n 'Accept': 'application/json'\n }\n }, options);\n return fetch(url, options).then(function (response) {\n raw = response;\n return response;\n }).then(_response__WEBPACK_IMPORTED_MODULE_0__.parseStatus).then(_response__WEBPACK_IMPORTED_MODULE_0__.parseJSON).then(_response__WEBPACK_IMPORTED_MODULE_0__.userFeedback).then(function (response) {\n return callback(response, raw);\n })[\"catch\"](_response__WEBPACK_IMPORTED_MODULE_0__.userFeedbackError);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (request);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3JlcXVlc3QuanM/MTc2YSJdLCJuYW1lcyI6WyJyYXciLCJyZXF1ZXN0IiwidXJsIiwib3B0aW9ucyIsImNhbGxiYWNrIiwibWV0aG9kIiwiZGF0YSIsIkZvcm1EYXRhIiwiYm9keSIsIk9iamVjdCIsImFzc2lnbiIsImNvbmZpZyIsImFkbWluX25vbmNlIiwia2V5cyIsIm1hcCIsImtleSIsImFwcGVuZCIsImNyZWRlbnRpYWxzIiwiaGVhZGVycyIsImZldGNoIiwidGhlbiIsInJlc3BvbnNlIiwicGFyc2VTdGF0dXMiLCJwYXJzZUpTT04iLCJ1c2VyRmVlZGJhY2siLCJ1c2VyRmVlZGJhY2tFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFFQSxJQUFJQSxHQUFKOztBQUNBLElBQUlDLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQVNDLEdBQVQsRUFBbUQ7QUFBQSxNQUFyQ0MsT0FBcUMsdUVBQTNCLEVBQTJCO0FBQUEsTUFBdkJDLFFBQXVCLHVFQUFaO0FBQUEsV0FBTSxJQUFOO0FBQUEsR0FBWTs7QUFDN0QsTUFBSSxPQUFPRCxPQUFQLEtBQW1CLFVBQXZCLEVBQW1DO0FBQy9CQyxZQUFRLEdBQUdELE9BQVg7QUFDQUEsV0FBTyxHQUFHLEVBQVY7QUFDSDs7QUFFRCxNQUFJQSxPQUFPLENBQUNFLE1BQVIsSUFBa0JGLE9BQU8sQ0FBQ0UsTUFBUixLQUFtQixNQUF6QyxFQUFpRDtBQUM3QyxRQUFJQyxJQUFJLEdBQUcsSUFBSUMsUUFBSixFQUFYO0FBRUFKLFdBQU8sQ0FBQ0ssSUFBUixHQUFlQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFFLHFCQUFlQywyREFBa0JDO0FBQW5DLEtBQWQsRUFBcURULE9BQU8sQ0FBQ0ssSUFBUixJQUFnQixFQUFyRSxDQUFmO0FBQ0FDLFVBQU0sQ0FBQ0ksSUFBUCxDQUFZVixPQUFPLENBQUNLLElBQXBCLEVBQTBCTSxHQUExQixDQUE4QixVQUFDQyxHQUFEO0FBQUEsYUFBU1QsSUFBSSxDQUFDVSxNQUFMLENBQVlELEdBQVosRUFBaUJaLE9BQU8sQ0FBQ0ssSUFBUixDQUFhTyxHQUFiLENBQWpCLENBQVQ7QUFBQSxLQUE5QjtBQUNBWixXQUFPLENBQUNLLElBQVIsR0FBZUYsSUFBZjtBQUNIOztBQUVESCxTQUFPLEdBQUdNLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ3BCTyxlQUFXLEVBQUUsYUFETztBQUVwQkMsV0FBTyxFQUFFO0FBQ0wsZ0JBQVU7QUFETDtBQUZXLEdBQWQsRUFLUGYsT0FMTyxDQUFWO0FBT0EsU0FBT2dCLEtBQUssQ0FBQ2pCLEdBQUQsRUFBTUMsT0FBTixDQUFMLENBQ0ZpQixJQURFLENBQ0csVUFBQ0MsUUFBRCxFQUFjO0FBQ2hCckIsT0FBRyxHQUFHcUIsUUFBTjtBQUNBLFdBQU9BLFFBQVA7QUFDSCxHQUpFLEVBS0ZELElBTEUsQ0FLR0Usa0RBTEgsRUFNRkYsSUFORSxDQU1HRyxnREFOSCxFQU9GSCxJQVBFLENBT0dJLG1EQVBILEVBUUZKLElBUkUsQ0FRRyxVQUFDQyxRQUFEO0FBQUEsV0FBY2pCLFFBQVEsQ0FBQ2lCLFFBQUQsRUFBV3JCLEdBQVgsQ0FBdEI7QUFBQSxHQVJILFdBU0l5Qix3REFUSixDQUFQO0FBVUgsQ0EvQkQ7O0FBaUNBLGlFQUFleEIsT0FBZiIsImZpbGUiOiIuL2FwcC91dGlscy9yZXF1ZXN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VTdGF0dXMsIHBhcnNlSlNPTiwgdXNlckZlZWRiYWNrLCB1c2VyRmVlZGJhY2tFcnJvciB9IGZyb20gJy4vcmVzcG9uc2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuXG5sZXQgcmF3O1xubGV0IHJlcXVlc3QgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMgPSB7fSwgY2FsbGJhY2sgPSAoKSA9PiB0cnVlKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1ldGhvZCAmJiBvcHRpb25zLm1ldGhvZCA9PT0gJ3Bvc3QnKSB7XG4gICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgb3B0aW9ucy5ib2R5ID0gT2JqZWN0LmFzc2lnbih7ICdhZG1pbi1ub25jZSc6IGNvbmZpZy5hZG1pbl9ub25jZSB9LCBvcHRpb25zLmJvZHkgfHwge30pO1xuICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zLmJvZHkpLm1hcCgoa2V5KSA9PiBkYXRhLmFwcGVuZChrZXksIG9wdGlvbnMuYm9keVtrZXldKSk7XG4gICAgICAgIG9wdGlvbnMuYm9keSA9IGRhdGE7XG4gICAgfVxuXG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBjcmVkZW50aWFsczogJ3NhbWUtb3JpZ2luJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gZmV0Y2godXJsLCBvcHRpb25zKVxuICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJhdyA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbihwYXJzZVN0YXR1cylcbiAgICAgICAgLnRoZW4ocGFyc2VKU09OKVxuICAgICAgICAudGhlbih1c2VyRmVlZGJhY2spXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY2FsbGJhY2socmVzcG9uc2UsIHJhdykpXG4gICAgICAgIC5jYXRjaCh1c2VyRmVlZGJhY2tFcnJvcik7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZXF1ZXN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/request.js\n");
/***/ }),
/***/ "./app/utils/response.js":
/*!*******************************!*\
!*** ./app/utils/response.js ***!
\*******************************/
/*! namespace exports */
/*! export parseJSON [provided] [no usage info] [missing usage info prevents renaming] */
/*! export parseStatus [provided] [no usage info] [missing usage info prevents renaming] */
/*! export userFeedback [provided] [no usage info] [missing usage info prevents renaming] */
/*! export userFeedbackError [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseStatus\": () => /* binding */ parseStatus,\n/* harmony export */ \"parseJSON\": () => /* binding */ parseJSON,\n/* harmony export */ \"userFeedback\": () => /* binding */ userFeedback,\n/* harmony export */ \"userFeedbackError\": () => /* binding */ userFeedbackError\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _toastr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toastr */ \"./app/utils/toastr.js\");\n/* harmony import */ var _offline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offline */ \"./app/utils/offline.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var mout_string_trim__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! mout/string/trim */ \"./node_modules/mout/string/trim.js\");\n/* harmony import */ var mout_string_trim__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(mout_string_trim__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\nvar UNLOADING = false;\n\nvar error = function error(response) {\n var error = new Error(response.statusText || response || '');\n error.response = response;\n return error;\n};\n\nfunction parseStatus(response) {\n return response;\n /* Whoops can handle JSON responses so we don't need this for now.\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n throw error(response);\n }\n */\n}\nfunction parseJSON(response) {\n return response.text().then(function (text) {\n var parsed = text;\n\n try {\n parsed = JSON.parse(text);\n } catch (error) {\n var content = document.createElement('div');\n content.innerHTML = text;\n var the_error = new Error();\n the_error.stack = mout_string_trim__WEBPACK_IMPORTED_MODULE_4___default()(content.innerText);\n throw the_error;\n }\n\n return parsed;\n });\n}\nfunction userFeedback(response) {\n if (UNLOADING) {\n return true;\n }\n\n var status = response.status || (response.error ? 'error' : '');\n var message = response.message || (response.error ? response.error.message : null);\n var settings = response.toastr || null;\n var backup;\n\n switch (status) {\n case 'unauthenticated':\n document.location.href = grav_config__WEBPACK_IMPORTED_MODULE_3__.config.base_url_relative;\n throw error('Logged out');\n\n case 'unauthorized':\n status = 'error';\n message = message || 'Unauthorized.';\n break;\n\n case 'error':\n status = 'error';\n message = message || 'Unknown error.';\n break;\n\n case 'success':\n status = 'success';\n message = message || '';\n break;\n\n default:\n status = 'error';\n message = message || 'Invalid AJAX response.';\n break;\n }\n\n if (settings) {\n backup = Object.assign({}, _toastr__WEBPACK_IMPORTED_MODULE_1__.default.options);\n Object.keys(settings).forEach(function (key) {\n _toastr__WEBPACK_IMPORTED_MODULE_1__.default.options[key] = settings[key];\n });\n }\n\n if (message && (_offline__WEBPACK_IMPORTED_MODULE_2__.default || !_offline__WEBPACK_IMPORTED_MODULE_2__.default && status !== 'error')) {\n _toastr__WEBPACK_IMPORTED_MODULE_1__.default[status === 'success' ? 'success' : 'error'](message);\n }\n\n if (settings) {\n _toastr__WEBPACK_IMPORTED_MODULE_1__.default.options = backup;\n }\n\n return response;\n}\nfunction userFeedbackError(error) {\n if (UNLOADING) {\n return true;\n }\n\n var stack = error.stack ? \"
\".concat(error.stack, \"
\") : '';\n _toastr__WEBPACK_IMPORTED_MODULE_1__.default.error(\"Fetch Failed:
\".concat(error.message, \" \").concat(stack));\n console.error(\"\".concat(error.message, \" at \").concat(error.stack));\n}\njquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).on('beforeunload._ajax', function () {\n UNLOADING = true;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3Jlc3BvbnNlLmpzP2FhYjIiXSwibmFtZXMiOlsiVU5MT0FESU5HIiwiZXJyb3IiLCJyZXNwb25zZSIsIkVycm9yIiwic3RhdHVzVGV4dCIsInBhcnNlU3RhdHVzIiwicGFyc2VKU09OIiwidGV4dCIsInRoZW4iLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJjb250ZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXJIVE1MIiwidGhlX2Vycm9yIiwic3RhY2siLCJ0cmltIiwiaW5uZXJUZXh0IiwidXNlckZlZWRiYWNrIiwic3RhdHVzIiwibWVzc2FnZSIsInNldHRpbmdzIiwidG9hc3RyIiwiYmFja3VwIiwibG9jYXRpb24iLCJocmVmIiwiY29uZmlnIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJpc09ubGluZSIsInVzZXJGZWVkYmFja0Vycm9yIiwiY29uc29sZSIsIiQiLCJnbG9iYWwiLCJvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFNBQVMsR0FBRyxLQUFoQjs7QUFDQSxJQUFJQyxLQUFLLEdBQUcsZUFBU0MsUUFBVCxFQUFtQjtBQUMzQixNQUFJRCxLQUFLLEdBQUcsSUFBSUUsS0FBSixDQUFVRCxRQUFRLENBQUNFLFVBQVQsSUFBdUJGLFFBQXZCLElBQW1DLEVBQTdDLENBQVo7QUFDQUQsT0FBSyxDQUFDQyxRQUFOLEdBQWlCQSxRQUFqQjtBQUVBLFNBQU9ELEtBQVA7QUFDSCxDQUxEOztBQU9PLFNBQVNJLFdBQVQsQ0FBcUJILFFBQXJCLEVBQStCO0FBQ2xDLFNBQU9BLFFBQVA7QUFFQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNDO0FBRU0sU0FBU0ksU0FBVCxDQUFtQkosUUFBbkIsRUFBNkI7QUFDaEMsU0FBT0EsUUFBUSxDQUFDSyxJQUFULEdBQWdC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QUFBLGdDQUFxQ3ZCLEtBQUssQ0FBQ3FCLE9BQTNDLGNBQXNETCxLQUF0RDtBQUNBbUIsU0FBTyxDQUFDbkMsS0FBUixXQUFpQkEsS0FBSyxDQUFDcUIsT0FBdkIsaUJBQXFDckIsS0FBSyxDQUFDZ0IsS0FBM0M7QUFDSDtBQUVEb0IsNkNBQUMsQ0FBQ0MscUJBQUQsQ0FBRCxDQUFVQyxFQUFWLENBQWEsb0JBQWIsRUFBbUMsWUFBTTtBQUNyQ3ZDLFdBQVMsR0FBRyxJQUFaO0FBQ0gsQ0FGRCIsImZpbGUiOiIuL2FwcC91dGlscy9yZXNwb25zZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgdG9hc3RyIGZyb20gJy4vdG9hc3RyJztcbmltcG9ydCBpc09ubGluZSBmcm9tICcuL29mZmxpbmUnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuaW1wb3J0IHRyaW0gZnJvbSAnbW91dC9zdHJpbmcvdHJpbSc7XG5cbmxldCBVTkxPQURJTkcgPSBmYWxzZTtcbmxldCBlcnJvciA9IGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1c1RleHQgfHwgcmVzcG9uc2UgfHwgJycpO1xuICAgIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG5cbiAgICByZXR1cm4gZXJyb3I7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0dXMocmVzcG9uc2UpIHtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG5cbiAgICAvKiBXaG9vcHMgY2FuIGhhbmRsZSBKU09OIHJlc3BvbnNlcyBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgZm9yIG5vdy5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSAyMDAgJiYgcmVzcG9uc2Uuc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAqL1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VKU09OKHJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKS50aGVuKCh0ZXh0KSA9PiB7XG4gICAgICAgIGxldCBwYXJzZWQgPSB0ZXh0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBjb250ZW50LmlubmVySFRNTCA9IHRleHQ7XG5cbiAgICAgICAgICAgIGxldCB0aGVfZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICAgICAgICAgIHRoZV9lcnJvci5zdGFjayA9IHRyaW0oY29udGVudC5pbm5lclRleHQpO1xuXG4gICAgICAgICAgICB0aHJvdyB0aGVfZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlckZlZWRiYWNrKHJlc3BvbnNlKSB7XG4gICAgaWYgKFVOTE9BRElORykgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gICAgbGV0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyB8fCAocmVzcG9uc2UuZXJyb3IgPyAnZXJyb3InIDogJycpO1xuICAgIGxldCBtZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZSB8fCAocmVzcG9uc2UuZXJyb3IgPyByZXNwb25zZS5lcnJvci5tZXNzYWdlIDogbnVsbCk7XG4gICAgbGV0IHNldHRpbmdzID0gcmVzcG9uc2UudG9hc3RyIHx8IG51bGw7XG4gICAgbGV0IGJhY2t1cDtcblxuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgJ3VuYXV0aGVudGljYXRlZCc6XG4gICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gY29uZmlnLmJhc2VfdXJsX3JlbGF0aXZlO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3IoJ0xvZ2dlZCBvdXQnKTtcbiAgICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgICAgIHN0YXR1cyA9ICdlcnJvcic7XG4gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSB8fCAnVW5hdXRob3JpemVkLic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgc3RhdHVzID0gJ2Vycm9yJztcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdVbmtub3duIGVycm9yLic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgICAgICBzdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSB8fCAnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgc3RhdHVzID0gJ2Vycm9yJztcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdJbnZhbGlkIEFKQVggcmVzcG9uc2UuJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICBiYWNrdXAgPSBPYmplY3QuYXNzaWduKHt9LCB0b2FzdHIub3B0aW9ucyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHNldHRpbmdzKS5mb3JFYWNoKChrZXkpID0+IHsgdG9hc3RyLm9wdGlvbnNba2V5XSA9IHNldHRpbmdzW2tleV07IH0pO1xuICAgIH1cblxuICAgIGlmIChtZXNzYWdlICYmIChpc09ubGluZSB8fCAoIWlzT25saW5lICYmIHN0YXR1cyAhPT0gJ2Vycm9yJykpKSB7XG4gICAgICAgIHRvYXN0cltzdGF0dXMgPT09ICdzdWNjZXNzJyA/ICdzdWNjZXNzJyA6ICdlcnJvciddKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgICB0b2FzdHIub3B0aW9ucyA9IGJhY2t1cDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyRmVlZGJhY2tFcnJvcihlcnJvcikge1xuICAgIGlmIChVTkxPQURJTkcpIHsgcmV0dXJuIHRydWU7IH1cbiAgICBsZXQgc3RhY2sgPSBlcnJvci5zdGFjayA/IGA8cHJlPjxjb2RlPiR7ZXJyb3Iuc3RhY2t9PC9jb2RlPjwvcHJlPmAgOiAnJztcbiAgICB0b2FzdHIuZXJyb3IoYEZldGNoIEZhaWxlZDogPGJyIC8+ICR7ZXJyb3IubWVzc2FnZX0gJHtzdGFja31gKTtcbiAgICBjb25zb2xlLmVycm9yKGAke2Vycm9yLm1lc3NhZ2V9IGF0ICR7ZXJyb3Iuc3RhY2t9YCk7XG59XG5cbiQoZ2xvYmFsKS5vbignYmVmb3JldW5sb2FkLl9hamF4JywgKCkgPT4ge1xuICAgIFVOTE9BRElORyA9IHRydWU7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/response.js\n");
/***/ }),
/***/ "./app/utils/selectize-option-click.js":
/*!*********************************************!*\
!*** ./app/utils/selectize-option-click.js ***!
\*********************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! selectize */ \"./node_modules/selectize/dist/js/selectize.js\");\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(selectize__WEBPACK_IMPORTED_MODULE_1__);\n\n\nselectize__WEBPACK_IMPORTED_MODULE_1___default().define('option_click', function (options) {\n var self = this;\n var setup = self.setup;\n\n this.setup = function () {\n setup.apply(self, arguments);\n var clicking = false; // Detect click on a .clickable\n\n self.$dropdown_content.on('mousedown click', function (e) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target);\n\n if (target.hasClass('clickable') || target.closest('.clickable').length) {\n if (e.type === 'mousedown') {\n clicking = true;\n self.isFocused = false; // awful hack to defuse the document mousedown listener\n } else {\n self.isFocused = true;\n setTimeout(function () {\n clicking = false; // wait until blur has been preempted\n });\n }\n } else {\n // cleanup in case user right-clicked or dragged off the element\n clicking = false;\n self.isFocused = true;\n }\n }); // Intercept default handlers\n\n self.$dropdown.off('mousedown click', '[data-selectable]').on('mousedown click', '[data-selectable]', function () {\n if (!clicking) {\n return self.onOptionSelect.apply(self, arguments);\n }\n });\n self.$control_input.off('blur').on('blur', function () {\n if (!clicking) {\n return self.onBlur.apply(self, arguments);\n }\n });\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3NlbGVjdGl6ZS1vcHRpb24tY2xpY2suanM/NWI2OCJdLCJuYW1lcyI6WyJTZWxlY3RpemUiLCJvcHRpb25zIiwic2VsZiIsInNldHVwIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjbGlja2luZyIsIiRkcm9wZG93bl9jb250ZW50Iiwib24iLCJlIiwidGFyZ2V0IiwiJCIsImhhc0NsYXNzIiwiY2xvc2VzdCIsImxlbmd0aCIsInR5cGUiLCJpc0ZvY3VzZWQiLCJzZXRUaW1lb3V0IiwiJGRyb3Bkb3duIiwib2ZmIiwib25PcHRpb25TZWxlY3QiLCIkY29udHJvbF9pbnB1dCIsIm9uQmx1ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBRUFBLHVEQUFBLENBQWlCLGNBQWpCLEVBQWlDLFVBQVNDLE9BQVQsRUFBa0I7QUFDL0MsTUFBTUMsSUFBSSxHQUFHLElBQWI7QUFDQSxNQUFNQyxLQUFLLEdBQUdELElBQUksQ0FBQ0MsS0FBbkI7O0FBQ0EsT0FBS0EsS0FBTCxHQUFhLFlBQVc7QUFDcEJBLFNBQUssQ0FBQ0MsS0FBTixDQUFZRixJQUFaLEVBQWtCRyxTQUFsQjtBQUNBLFFBQUlDLFFBQVEsR0FBRyxLQUFmLENBRm9CLENBSXBCOztBQUNBSixRQUFJLENBQUNLLGlCQUFMLENBQXVCQyxFQUF2QixDQUEwQixpQkFBMUIsRUFBNkMsVUFBU0MsQ0FBVCxFQUFZO0FBQ3JELFVBQU1DLE1BQU0sR0FBR0MsNkNBQUMsQ0FBQ0YsQ0FBQyxDQUFDQyxNQUFILENBQWhCOztBQUNBLFVBQUlBLE1BQU0sQ0FBQ0UsUUFBUCxDQUFnQixXQUFoQixLQUFnQ0YsTUFBTSxDQUFDRyxPQUFQLENBQWUsWUFBZixFQUE2QkMsTUFBakUsRUFBeUU7QUFDckUsWUFBSUwsQ0FBQyxDQUFDTSxJQUFGLEtBQVcsV0FBZixFQUE0QjtBQUN4QlQsa0JBQVEsR0FBRyxJQUFYO0FBQ0FKLGNBQUksQ0FBQ2MsU0FBTCxHQUFpQixLQUFqQixDQUZ3QixDQUVBO0FBQzNCLFNBSEQsTUFHTztBQUNIZCxjQUFJLENBQUNjLFNBQUwsR0FBaUIsSUFBakI7QUFDQUMsb0JBQVUsQ0FBQyxZQUFXO0FBQ2xCWCxvQkFBUSxHQUFHLEtBQVgsQ0FEa0IsQ0FDQTtBQUNyQixXQUZTLENBQVY7QUFHSDtBQUNKLE9BVkQsTUFVTztBQUFFO0FBQ0xBLGdCQUFRLEdBQUcsS0FBWDtBQUNBSixZQUFJLENBQUNjLFNBQUwsR0FBaUIsSUFBakI7QUFDSDtBQUNKLEtBaEJELEVBTG9CLENBdUJwQjs7QUFDQWQsUUFBSSxDQUFDZ0IsU0FBTCxDQUFlQyxHQUFmLENBQW1CLGlCQUFuQixFQUFzQyxtQkFBdEMsRUFBMkRYLEVBQTNELENBQThELGlCQUE5RCxFQUFpRixtQkFBakYsRUFBc0csWUFBVztBQUM3RyxVQUFJLENBQUNGLFFBQUwsRUFBZTtBQUNYLGVBQU9KLElBQUksQ0FBQ2tCLGNBQUwsQ0FBb0JoQixLQUFwQixDQUEwQkYsSUFBMUIsRUFBZ0NHLFNBQWhDLENBQVA7QUFDSDtBQUNKLEtBSkQ7QUFLQUgsUUFBSSxDQUFDbUIsY0FBTCxDQUFvQkYsR0FBcEIsQ0FBd0IsTUFBeEIsRUFBZ0NYLEVBQWhDLENBQW1DLE1BQW5DLEVBQTJDLFlBQVc7QUFDbEQsVUFBSSxDQUFDRixRQUFMLEVBQWU7QUFDWCxlQUFPSixJQUFJLENBQUNvQixNQUFMLENBQVlsQixLQUFaLENBQWtCRixJQUFsQixFQUF3QkcsU0FBeEIsQ0FBUDtBQUNIO0FBQ0osS0FKRDtBQUtILEdBbENEO0FBbUNILENBdENEIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL3NlbGVjdGl6ZS1vcHRpb24tY2xpY2suanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IFNlbGVjdGl6ZSBmcm9tICdzZWxlY3RpemUnO1xuXG5TZWxlY3RpemUuZGVmaW5lKCdvcHRpb25fY2xpY2snLCBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3Qgc2V0dXAgPSBzZWxmLnNldHVwO1xuICAgIHRoaXMuc2V0dXAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgc2V0dXAuYXBwbHkoc2VsZiwgYXJndW1lbnRzKTtcbiAgICAgICAgbGV0IGNsaWNraW5nID0gZmFsc2U7XG5cbiAgICAgICAgLy8gRGV0ZWN0IGNsaWNrIG9uIGEgLmNsaWNrYWJsZVxuICAgICAgICBzZWxmLiRkcm9wZG93bl9jb250ZW50Lm9uKCdtb3VzZWRvd24gY2xpY2snLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGUudGFyZ2V0KTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzQ2xhc3MoJ2NsaWNrYWJsZScpIHx8IHRhcmdldC5jbG9zZXN0KCcuY2xpY2thYmxlJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ21vdXNlZG93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpY2tpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmlzRm9jdXNlZCA9IGZhbHNlOyAvLyBhd2Z1bCBoYWNrIHRvIGRlZnVzZSB0aGUgZG9jdW1lbnQgbW91c2Vkb3duIGxpc3RlbmVyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tpbmcgPSBmYWxzZTsgLy8gd2FpdCB1bnRpbCBibHVyIGhhcyBiZWVuIHByZWVtcHRlZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBjbGVhbnVwIGluIGNhc2UgdXNlciByaWdodC1jbGlja2VkIG9yIGRyYWdnZWQgb2ZmIHRoZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgY2xpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZWxmLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEludGVyY2VwdCBkZWZhdWx0IGhhbmRsZXJzXG4gICAgICAgIHNlbGYuJGRyb3Bkb3duLm9mZignbW91c2Vkb3duIGNsaWNrJywgJ1tkYXRhLXNlbGVjdGFibGVdJykub24oJ21vdXNlZG93biBjbGljaycsICdbZGF0YS1zZWxlY3RhYmxlXScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKCFjbGlja2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm9uT3B0aW9uU2VsZWN0LmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLiRjb250cm9sX2lucHV0Lm9mZignYmx1cicpLm9uKCdibHVyJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoIWNsaWNraW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYub25CbHVyLmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/selectize-option-click.js\n");
/***/ }),
/***/ "./app/utils/selectize-required-fix.js":
/*!*********************************************!*\
!*** ./app/utils/selectize-required-fix.js ***!
\*********************************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! selectize */ \"./node_modules/selectize/dist/js/selectize.js\");\n/* harmony import */ var selectize__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(selectize__WEBPACK_IMPORTED_MODULE_0__);\n/**\n * This is a plugin to override the `.refreshValidityState` method of\n * the Selectize library (https://selectize.github.io/selectize.js/).\n * The library is not maintained anymore (as of 2017-09-13) and contains\n * a bug which causes Microsoft Edge to not work with selectized [required]\n * form fields. This plugin should be removed if\n * https://github.com/selectize/selectize.js/pull/1320 is ever merged\n * and a new version of Selectize gets released.\n */\n\nselectize__WEBPACK_IMPORTED_MODULE_0___default().define('required-fix', function (options) {\n var _this = this;\n\n this.refreshValidityState = function () {\n if (!_this.isRequired) return false;\n var invalid = !_this.items.length;\n _this.isInvalid = invalid;\n\n if (invalid) {\n _this.$control_input.attr('required', '');\n\n _this.$input.removeAttr('required');\n } else {\n _this.$control_input.removeAttr('required');\n\n _this.$input.attr('required');\n }\n };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3NlbGVjdGl6ZS1yZXF1aXJlZC1maXguanM/OWQ5NiJdLCJuYW1lcyI6WyJTZWxlY3RpemUiLCJvcHRpb25zIiwicmVmcmVzaFZhbGlkaXR5U3RhdGUiLCJpc1JlcXVpcmVkIiwiaW52YWxpZCIsIml0ZW1zIiwibGVuZ3RoIiwiaXNJbnZhbGlkIiwiJGNvbnRyb2xfaW5wdXQiLCJhdHRyIiwiJGlucHV0IiwicmVtb3ZlQXR0ciJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQUEsdURBQUEsQ0FBaUIsY0FBakIsRUFBaUMsVUFBU0MsT0FBVCxFQUFrQjtBQUFBOztBQUMvQyxPQUFLQyxvQkFBTCxHQUE0QixZQUFNO0FBQzlCLFFBQUksQ0FBQyxLQUFJLENBQUNDLFVBQVYsRUFBc0IsT0FBTyxLQUFQO0FBRXRCLFFBQUlDLE9BQU8sR0FBRyxDQUFDLEtBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUExQjtBQUNBLFNBQUksQ0FBQ0MsU0FBTCxHQUFpQkgsT0FBakI7O0FBRUEsUUFBSUEsT0FBSixFQUFhO0FBQ1QsV0FBSSxDQUFDSSxjQUFMLENBQW9CQyxJQUFwQixDQUF5QixVQUF6QixFQUFxQyxFQUFyQzs7QUFDQSxXQUFJLENBQUNDLE1BQUwsQ0FBWUMsVUFBWixDQUF1QixVQUF2QjtBQUNILEtBSEQsTUFHTztBQUNILFdBQUksQ0FBQ0gsY0FBTCxDQUFvQkcsVUFBcEIsQ0FBK0IsVUFBL0I7O0FBQ0EsV0FBSSxDQUFDRCxNQUFMLENBQVlELElBQVosQ0FBaUIsVUFBakI7QUFDSDtBQUNKLEdBYkQ7QUFjSCxDQWZEIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL3NlbGVjdGl6ZS1yZXF1aXJlZC1maXguanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaXMgaXMgYSBwbHVnaW4gdG8gb3ZlcnJpZGUgdGhlIGAucmVmcmVzaFZhbGlkaXR5U3RhdGVgIG1ldGhvZCBvZlxuICogdGhlIFNlbGVjdGl6ZSBsaWJyYXJ5IChodHRwczovL3NlbGVjdGl6ZS5naXRodWIuaW8vc2VsZWN0aXplLmpzLykuXG4gKiBUaGUgbGlicmFyeSBpcyBub3QgbWFpbnRhaW5lZCBhbnltb3JlIChhcyBvZiAyMDE3LTA5LTEzKSBhbmQgY29udGFpbnNcbiAqIGEgYnVnIHdoaWNoIGNhdXNlcyBNaWNyb3NvZnQgRWRnZSB0byBub3Qgd29yayB3aXRoIHNlbGVjdGl6ZWQgW3JlcXVpcmVkXVxuICogZm9ybSBmaWVsZHMuIFRoaXMgcGx1Z2luIHNob3VsZCBiZSByZW1vdmVkIGlmXG4gKiBodHRwczovL2dpdGh1Yi5jb20vc2VsZWN0aXplL3NlbGVjdGl6ZS5qcy9wdWxsLzEzMjAgaXMgZXZlciBtZXJnZWRcbiAqIGFuZCBhIG5ldyB2ZXJzaW9uIG9mIFNlbGVjdGl6ZSBnZXRzIHJlbGVhc2VkLlxuICovXG5cbmltcG9ydCBTZWxlY3RpemUgZnJvbSAnc2VsZWN0aXplJztcblxuU2VsZWN0aXplLmRlZmluZSgncmVxdWlyZWQtZml4JywgZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHRoaXMucmVmcmVzaFZhbGlkaXR5U3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc1JlcXVpcmVkKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgbGV0IGludmFsaWQgPSAhdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gaW52YWxpZDtcblxuICAgICAgICBpZiAoaW52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy4kY29udHJvbF9pbnB1dC5hdHRyKCdyZXF1aXJlZCcsICcnKTtcbiAgICAgICAgICAgIHRoaXMuJGlucHV0LnJlbW92ZUF0dHIoJ3JlcXVpcmVkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiRjb250cm9sX2lucHV0LnJlbW92ZUF0dHIoJ3JlcXVpcmVkJyk7XG4gICAgICAgICAgICB0aGlzLiRpbnB1dC5hdHRyKCdyZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/utils/selectize-required-fix.js\n");
/***/ }),
/***/ "./app/utils/sidebar.js":
/*!******************************!*\
!*** ./app/utils/sidebar.js ***!
\******************************/
/*! namespace exports */
/*! export Instance [provided] [no usage info] [missing usage info prevents renaming] */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.g, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ Sidebar,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var es6_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! es6-map */ \"./node_modules/es6-map/index.js\");\n/* harmony import */ var es6_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(es6_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var cookies_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! cookies-js */ \"./node_modules/cookies-js/dist/cookies.js\");\n/* harmony import */ var cookies_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(cookies_js__WEBPACK_IMPORTED_MODULE_2__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar MOBILE_BREAKPOINT = 48 - 0.062;\nvar DESKTOP_BREAKPOINT = 75 + 0.063;\nvar EVENTS = 'touchstart._grav click._grav';\nvar TARGETS = '[data-sidebar-mobile-toggle], #overlay';\nvar MOBILE_QUERY = \"(max-width: \".concat(MOBILE_BREAKPOINT, \"em)\");\nvar DESKTOP_QUERY = \"(min-width: \".concat(DESKTOP_BREAKPOINT, \"em)\");\nvar map = new (es6_map__WEBPACK_IMPORTED_MODULE_1___default())();\n\nvar Sidebar = /*#__PURE__*/function () {\n function Sidebar() {\n _classCallCheck(this, Sidebar);\n\n this.timeout = null;\n this.isOpen = false;\n this.body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\n this.matchMedia = __webpack_require__.g.matchMedia(MOBILE_QUERY);\n this.enable();\n }\n\n _createClass(Sidebar, [{\n key: \"enable\",\n value: function enable() {\n var sidebar = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar');\n this.matchMedia.addListener(this._getBound('checkMatch'));\n this.checkMatch(this.matchMedia);\n this.body.on(EVENTS, '[data-sidebar-toggle]', this._getBound('toggleSidebarState'));\n\n if (sidebar.data('quickopen')) {\n sidebar.hover(this._getBound('quickOpenIn'), this._getBound('quickOpenOut'));\n }\n }\n }, {\n key: \"disable\",\n value: function disable() {\n var sidebar = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar');\n this.close();\n this.matchMedia.removeListener(this._getBound('checkMatch'));\n this.body.off(EVENTS, '[data-sidebar-toggle]', this._getBound('toggleSidebarState'));\n\n if (sidebar.data('quickopen')) {\n sidebar.off('mouseenter mouseleave');\n }\n }\n }, {\n key: \"attach\",\n value: function attach() {\n this.body.on(EVENTS, TARGETS, this._getBound('toggle'));\n }\n }, {\n key: \"detach\",\n value: function detach() {\n this.body.off(EVENTS, TARGETS, this._getBound('toggle'));\n }\n }, {\n key: \"quickOpenIn\",\n value: function quickOpenIn()\n /* event */\n {\n var _this = this;\n\n var isDesktop = __webpack_require__.g.matchMedia(DESKTOP_QUERY).matches;\n var delay = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar').data('quickopen-delay') || 500;\n\n if (this.body.hasClass('sidebar-mobile-open')) {\n return;\n }\n\n var shouldQuickOpen = isDesktop ? this.body.hasClass('sidebar-closed') : !this.body.hasClass('sidebar-open');\n\n if (!shouldQuickOpen && !this.body.hasClass('sidebar-quickopen')) {\n return this.quickOpenOut();\n }\n\n this.timeout = setTimeout(function () {\n _this.body.addClass('sidebar-open sidebar-quickopen');\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).trigger('sidebar_state._grav', isDesktop);\n }, delay);\n }\n }, {\n key: \"quickOpenOut\",\n value: function quickOpenOut()\n /* event */\n {\n clearTimeout(this.timeout);\n\n if (this.body.hasClass('sidebar-quickopen')) {\n this.body.removeClass('sidebar-open sidebar-quickopen');\n }\n\n return true;\n }\n }, {\n key: \"open\",\n value: function open(event) {\n var _this2 = this;\n\n var quick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (event) {\n event.preventDefault();\n }\n\n var overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#overlay');\n var sidebar = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar');\n this.body.addClass('sidebar-mobile-open');\n overlay.css('display', 'block');\n\n if (!quick) {\n sidebar.css('display', 'block').animate({\n opacity: 1\n }, 200, function () {\n _this2.isOpen = true;\n });\n } else {\n sidebar.css({\n display: 'block',\n opacity: 1\n });\n this.isOpen = true;\n }\n }\n }, {\n key: \"close\",\n value: function close(event) {\n var _this3 = this;\n\n var quick = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (event) {\n event.preventDefault();\n }\n\n var overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#overlay');\n var sidebar = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar');\n this.body.removeClass('sidebar-mobile-open');\n overlay.css('display', 'none');\n\n if (!quick) {\n sidebar.animate({\n opacity: 0\n }, 200, function () {\n sidebar.css('display', 'none');\n _this3.isOpen = false;\n });\n } else {\n sidebar.css({\n opacity: 0,\n display: 'none'\n });\n this.isOpen = false;\n }\n }\n }, {\n key: \"toggle\",\n value: function toggle(event) {\n if (event) {\n event.preventDefault();\n }\n\n return this[this.isOpen ? 'close' : 'open'](event);\n }\n }, {\n key: \"toggleSidebarState\",\n value: function toggleSidebarState(event) {\n if (event) {\n event.preventDefault();\n }\n\n clearTimeout(this.timeout);\n var isDesktop = __webpack_require__.g.matchMedia(DESKTOP_QUERY).matches;\n var cookie = null;\n\n if (isDesktop) {\n this.body.removeClass('sidebar-open');\n }\n\n if (!isDesktop) {\n this.body.removeClass('sidebar-closed');\n this.body.removeClass('sidebar-mobile-open');\n }\n\n this.body.toggleClass(\"sidebar-\".concat(isDesktop ? 'closed' : 'open'));\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(__webpack_require__.g).trigger('sidebar_state._grav', isDesktop);\n\n if (isDesktop) {\n cookie = !this.body.hasClass('sidebar-closed');\n } else {\n cookie = this.body.hasClass('sidebar-open');\n }\n\n cookies_js__WEBPACK_IMPORTED_MODULE_2___default().set('grav-admin-sidebar', cookie, {\n expires: Infinity\n });\n }\n }, {\n key: \"checkMatch\",\n value: function checkMatch(data) {\n var sidebar = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#admin-sidebar');\n var overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#overlay');\n this.isOpen = false;\n overlay.css('display', 'none');\n sidebar.css({\n display: data.matches ? 'none' : 'inherit',\n opacity: data.matches ? 0 : 1\n });\n\n if (data.matches) {\n this.body.removeClass('sidebar-open sidebar-closed');\n }\n\n this[data.matches ? 'attach' : 'detach']();\n }\n }, {\n key: \"_resetMap\",\n value: function _resetMap() {\n return map.clear();\n }\n }, {\n key: \"_getBound\",\n value: function _getBound(fn) {\n if (map.has(fn)) {\n return map.get(fn);\n }\n\n return map.set(fn, this[fn].bind(this)).get(fn);\n }\n }]);\n\n return Sidebar;\n}();\n\n\nvar Instance = new Sidebar();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3NpZGViYXIuanM/MzM1MSJdLCJuYW1lcyI6WyJNT0JJTEVfQlJFQUtQT0lOVCIsIkRFU0tUT1BfQlJFQUtQT0lOVCIsIkVWRU5UUyIsIlRBUkdFVFMiLCJNT0JJTEVfUVVFUlkiLCJERVNLVE9QX1FVRVJZIiwibWFwIiwiTWFwIiwiU2lkZWJhciIsInRpbWVvdXQiLCJpc09wZW4iLCJib2R5IiwiJCIsIm1hdGNoTWVkaWEiLCJnbG9iYWwiLCJlbmFibGUiLCJzaWRlYmFyIiwiYWRkTGlzdGVuZXIiLCJfZ2V0Qm91bmQiLCJjaGVja01hdGNoIiwib24iLCJkYXRhIiwiaG92ZXIiLCJjbG9zZSIsInJlbW92ZUxpc3RlbmVyIiwib2ZmIiwiaXNEZXNrdG9wIiwibWF0Y2hlcyIsImRlbGF5IiwiaGFzQ2xhc3MiLCJzaG91bGRRdWlja09wZW4iLCJxdWlja09wZW5PdXQiLCJzZXRUaW1lb3V0IiwiYWRkQ2xhc3MiLCJ0cmlnZ2VyIiwiY2xlYXJUaW1lb3V0IiwicmVtb3ZlQ2xhc3MiLCJldmVudCIsInF1aWNrIiwicHJldmVudERlZmF1bHQiLCJvdmVybGF5IiwiY3NzIiwiYW5pbWF0ZSIsIm9wYWNpdHkiLCJkaXNwbGF5IiwiY29va2llIiwidG9nZ2xlQ2xhc3MiLCJDb29raWVzIiwiZXhwaXJlcyIsIkluZmluaXR5IiwiY2xlYXIiLCJmbiIsImhhcyIsImdldCIsInNldCIsImJpbmQiLCJJbnN0YW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxpQkFBaUIsR0FBRyxLQUFLLEtBQS9CO0FBQ0EsSUFBTUMsa0JBQWtCLEdBQUcsS0FBSyxLQUFoQztBQUNBLElBQU1DLE1BQU0sR0FBRyw4QkFBZjtBQUNBLElBQU1DLE9BQU8sR0FBRyx3Q0FBaEI7QUFDQSxJQUFNQyxZQUFZLHlCQUFrQkosaUJBQWxCLFFBQWxCO0FBQ0EsSUFBTUssYUFBYSx5QkFBa0JK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QUksQ0FBQ00sT0FBTCxHQUFlLFFBQWYsR0FBMEIsUUFBL0I7QUFDSDs7O2dDQUVXO0FBQ1IsYUFBT3JCLEdBQUcsQ0FBQzRDLEtBQUosRUFBUDtBQUNIOzs7OEJBRVNDLEUsRUFBSTtBQUNWLFVBQUk3QyxHQUFHLENBQUM4QyxHQUFKLENBQVFELEVBQVIsQ0FBSixFQUFpQjtBQUNiLGVBQU83QyxHQUFHLENBQUMrQyxHQUFKLENBQVFGLEVBQVIsQ0FBUDtBQUNIOztBQUVELGFBQU83QyxHQUFHLENBQUNnRCxHQUFKLENBQVFILEVBQVIsRUFBWSxLQUFLQSxFQUFMLEVBQVNJLElBQVQsQ0FBYyxJQUFkLENBQVosRUFBaUNGLEdBQWpDLENBQXFDRixFQUFyQyxDQUFQO0FBQ0g7Ozs7Ozs7QUFHRSxJQUFJSyxRQUFRLEdBQUcsSUFBSWhELE9BQUosRUFBZiIsImZpbGUiOiIuL2FwcC91dGlscy9zaWRlYmFyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBNYXAgZnJvbSAnZXM2LW1hcCc7XG5pbXBvcnQgQ29va2llcyBmcm9tICdjb29raWVzLWpzJztcblxuY29uc3QgTU9CSUxFX0JSRUFLUE9JTlQgPSA0OCAtIDAuMDYyO1xuY29uc3QgREVTS1RPUF9CUkVBS1BPSU5UID0gNzUgKyAwLjA2MztcbmNvbnN0IEVWRU5UUyA9ICd0b3VjaHN0YXJ0Ll9ncmF2IGNsaWNrLl9ncmF2JztcbmNvbnN0IFRBUkdFVFMgPSAnW2RhdGEtc2lkZWJhci1tb2JpbGUtdG9nZ2xlXSwgI292ZXJsYXknO1xuY29uc3QgTU9CSUxFX1FVRVJZID0gYChtYXgtd2lkdGg6ICR7TU9CSUxFX0JSRUFLUE9JTlR9ZW0pYDtcbmNvbnN0IERFU0tUT1BfUVVFUlkgPSBgKG1pbi13aWR0aDogJHtERVNLVE9QX0JSRUFLUE9JTlR9ZW0pYDtcblxubGV0IG1hcCA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2lkZWJhciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudGltZW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYm9keSA9ICQoJ2JvZHknKTtcbiAgICAgICAgdGhpcy5tYXRjaE1lZGlhID0gZ2xvYmFsLm1hdGNoTWVkaWEoTU9CSUxFX1FVRVJZKTtcbiAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBlbmFibGUoKSB7XG4gICAgICAgIGNvbnN0IHNpZGViYXIgPSAkKCcjYWRtaW4tc2lkZWJhcicpO1xuXG4gICAgICAgIHRoaXMubWF0Y2hNZWRpYS5hZGRMaXN0ZW5lcih0aGlzLl9nZXRCb3VuZCgnY2hlY2tNYXRjaCcpKTtcbiAgICAgICAgdGhpcy5jaGVja01hdGNoKHRoaXMubWF0Y2hNZWRpYSk7XG4gICAgICAgIHRoaXMuYm9keS5vbihFVkVOVFMsICdbZGF0YS1zaWRlYmFyLXRvZ2dsZV0nLCB0aGlzLl9nZXRCb3VuZCgndG9nZ2xlU2lkZWJhclN0YXRlJykpO1xuXG4gICAgICAgIGlmIChzaWRlYmFyLmRhdGEoJ3F1aWNrb3BlbicpKSB7XG4gICAgICAgICAgICBzaWRlYmFyLmhvdmVyKHRoaXMuX2dldEJvdW5kKCdxdWlja09wZW5JbicpLCB0aGlzLl9nZXRCb3VuZCgncXVpY2tPcGVuT3V0JykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc2lkZWJhciA9ICQoJyNhZG1pbi1zaWRlYmFyJyk7XG5cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLm1hdGNoTWVkaWEucmVtb3ZlTGlzdGVuZXIodGhpcy5fZ2V0Qm91bmQoJ2NoZWNrTWF0Y2gnKSk7XG4gICAgICAgIHRoaXMuYm9keS5vZmYoRVZFTlRTLCAnW2RhdGEtc2lkZWJhci10b2dnbGVdJywgdGhpcy5fZ2V0Qm91bmQoJ3RvZ2dsZVNpZGViYXJTdGF0ZScpKTtcbiAgICAgICAgaWYgKHNpZGViYXIuZGF0YSgncXVpY2tvcGVuJykpIHtcbiAgICAgICAgICAgIHNpZGViYXIub2ZmKCdtb3VzZWVudGVyIG1vdXNlbGVhdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF0dGFjaCgpIHtcbiAgICAgICAgdGhpcy5ib2R5Lm9uKEVWRU5UUywgVEFSR0VUUywgdGhpcy5fZ2V0Qm91bmQoJ3RvZ2dsZScpKTtcbiAgICB9XG5cbiAgICBkZXRhY2goKSB7XG4gICAgICAgIHRoaXMuYm9keS5vZmYoRVZFTlRTLCBUQVJHRVRTLCB0aGlzLl9nZXRCb3VuZCgndG9nZ2xlJykpO1xuICAgIH1cblxuICAgIHF1aWNrT3BlbkluKC8qIGV2ZW50ICovKSB7XG4gICAgICAgIGxldCBpc0Rlc2t0b3AgPSBnbG9iYWwubWF0Y2hNZWRpYShERVNLVE9QX1FVRVJZKS5tYXRjaGVzO1xuICAgICAgICBsZXQgZGVsYXkgPSAkKCcjYWRtaW4tc2lkZWJhcicpLmRhdGEoJ3F1aWNrb3Blbi1kZWxheScpIHx8IDUwMDtcbiAgICAgICAgaWYgKHRoaXMuYm9keS5oYXNDbGFzcygnc2lkZWJhci1tb2JpbGUtb3BlbicpKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGxldCBzaG91bGRRdWlja09wZW4gPSBpc0Rlc2t0b3AgPyB0aGlzLmJvZHkuaGFzQ2xhc3MoJ3NpZGViYXItY2xvc2VkJykgOiAhdGhpcy5ib2R5Lmhhc0NsYXNzKCdzaWRlYmFyLW9wZW4nKTtcbiAgICAgICAgaWYgKCFzaG91bGRRdWlja09wZW4gJiYgIXRoaXMuYm9keS5oYXNDbGFzcygnc2lkZWJhci1xdWlja29wZW4nKSkgeyByZXR1cm4gdGhpcy5xdWlja09wZW5PdXQoKTsgfVxuXG4gICAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ib2R5LmFkZENsYXNzKCdzaWRlYmFyLW9wZW4gc2lkZWJhci1xdWlja29wZW4nKTtcbiAgICAgICAgICAgICQoZ2xvYmFsKS50cmlnZ2VyKCdzaWRlYmFyX3N0YXRlLl9ncmF2JywgaXNEZXNrdG9wKTtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgIH1cblxuICAgIHF1aWNrT3Blbk91dCgvKiBldmVudCAqLykge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgICAgaWYgKHRoaXMuYm9keS5oYXNDbGFzcygnc2lkZWJhci1xdWlja29wZW4nKSkge1xuICAgICAgICAgICAgdGhpcy5ib2R5LnJlbW92ZUNsYXNzKCdzaWRlYmFyLW9wZW4gc2lkZWJhci1xdWlja29wZW4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIG9wZW4oZXZlbnQsIHF1aWNrID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IH1cbiAgICAgICAgbGV0IG92ZXJsYXkgPSAkKCcjb3ZlcmxheScpO1xuICAgICAgICBsZXQgc2lkZWJhciA9ICQoJyNhZG1pbi1zaWRlYmFyJyk7XG5cbiAgICAgICAgdGhpcy5ib2R5LmFkZENsYXNzKCdzaWRlYmFyLW1vYmlsZS1vcGVuJyk7XG4gICAgICAgIG92ZXJsYXkuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgaWYgKCFxdWljaykge1xuICAgICAgICAgICAgc2lkZWJhci5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICB9LCAyMDAsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGViYXIuY3NzKHsgZGlzcGxheTogJ2Jsb2NrJywgb3BhY2l0eTogMSB9KTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlKGV2ZW50LCBxdWljayA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChldmVudCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgICAgIGxldCBvdmVybGF5ID0gJCgnI292ZXJsYXknKTtcbiAgICAgICAgbGV0IHNpZGViYXIgPSAkKCcjYWRtaW4tc2lkZWJhcicpO1xuXG4gICAgICAgIHRoaXMuYm9keS5yZW1vdmVDbGFzcygnc2lkZWJhci1tb2JpbGUtb3BlbicpO1xuICAgICAgICBvdmVybGF5LmNzcygnZGlzcGxheScsICdub25lJyk7XG5cbiAgICAgICAgaWYgKCFxdWljaykge1xuICAgICAgICAgICAgc2lkZWJhci5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICB9LCAyMDAsICgpID0+IHtcbiAgICAgICAgICAgICAgICBzaWRlYmFyLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2lkZWJhci5jc3MoeyBvcGFjaXR5OiAwLCBkaXNwbGF5OiAnbm9uZScgfSk7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudCkgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9XG4gICAgICAgIHJldHVybiB0aGlzW3RoaXMuaXNPcGVuID8gJ2Nsb3NlJyA6ICdvcGVuJ10oZXZlbnQpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNpZGViYXJTdGF0ZShldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQpIHsgZXZlbnQucHJldmVudERlZmF1bHQoKTsgfVxuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgICAgbGV0IGlzRGVza3RvcCA9IGdsb2JhbC5tYXRjaE1lZGlhKERFU0tUT1BfUVVFUlkpLm1hdGNoZXM7XG4gICAgICAgIGxldCBjb29raWUgPSBudWxsO1xuXG4gICAgICAgIGlmIChpc0Rlc2t0b3ApIHtcbiAgICAgICAgICAgIHRoaXMuYm9keS5yZW1vdmVDbGFzcygnc2lkZWJhci1vcGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzRGVza3RvcCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5LnJlbW92ZUNsYXNzKCdzaWRlYmFyLWNsb3NlZCcpO1xuICAgICAgICAgICAgdGhpcy5ib2R5LnJlbW92ZUNsYXNzKCdzaWRlYmFyLW1vYmlsZS1vcGVuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJvZHkudG9nZ2xlQ2xhc3MoYHNpZGViYXItJHtpc0Rlc2t0b3AgPyAnY2xvc2VkJyA6ICdvcGVuJ31gKTtcbiAgICAgICAgJChnbG9iYWwpLnRyaWdnZXIoJ3NpZGViYXJfc3RhdGUuX2dyYXYnLCBpc0Rlc2t0b3ApO1xuXG4gICAgICAgIGlmIChpc0Rlc2t0b3ApIHtcbiAgICAgICAgICAgIGNvb2tpZSA9ICF0aGlzLmJvZHkuaGFzQ2xhc3MoJ3NpZGViYXItY2xvc2VkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb29raWUgPSB0aGlzLmJvZHkuaGFzQ2xhc3MoJ3NpZGViYXItb3BlbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgQ29va2llcy5zZXQoJ2dyYXYtYWRtaW4tc2lkZWJhcicsIGNvb2tpZSwgeyBleHBpcmVzOiBJbmZpbml0eSB9KTtcbiAgICB9XG5cbiAgICBjaGVja01hdGNoKGRhdGEpIHtcbiAgICAgICAgbGV0IHNpZGViYXIgPSAkKCcjYWRtaW4tc2lkZWJhcicpO1xuICAgICAgICBsZXQgb3ZlcmxheSA9ICQoJyNvdmVybGF5Jyk7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG5cbiAgICAgICAgb3ZlcmxheS5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgICBzaWRlYmFyLmNzcyh7XG4gICAgICAgICAgICBkaXNwbGF5OiBkYXRhLm1hdGNoZXMgPyAnbm9uZScgOiAnaW5oZXJpdCcsXG4gICAgICAgICAgICBvcGFjaXR5OiBkYXRhLm1hdGNoZXMgPyAwIDogMVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZGF0YS5tYXRjaGVzKSB7XG4gICAgICAgICAgICB0aGlzLmJvZHkucmVtb3ZlQ2xhc3MoJ3NpZGViYXItb3BlbiBzaWRlYmFyLWNsb3NlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpc1tkYXRhLm1hdGNoZXMgPyAnYXR0YWNoJyA6ICdkZXRhY2gnXSgpO1xuICAgIH1cblxuICAgIF9yZXNldE1hcCgpIHtcbiAgICAgICAgcmV0dXJuIG1hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIF9nZXRCb3VuZChmbikge1xuICAgICAgICBpZiAobWFwLmhhcyhmbikpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXAuZ2V0KGZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtYXAuc2V0KGZuLCB0aGlzW2ZuXS5iaW5kKHRoaXMpKS5nZXQoZm4pO1xuICAgIH1cbn1cblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9IG5ldyBTaWRlYmFyKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/sidebar.js\n");
/***/ }),
/***/ "./app/utils/storage.js":
/*!******************************!*\
!*** ./app/utils/storage.js ***!
\******************************/
/*! unknown exports (runtime-defined) */
/*! runtime requirements: */
/***/ (() => {
eval("// localStorage\n(function () {\n function isSupported() {\n var item = 'localStoragePollyfill';\n\n try {\n localStorage.setItem(item, item);\n localStorage.removeItem(item);\n sessionStorage.setItem(item, item);\n sessionStorage.removeItem(item);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n if (!isSupported()) {\n try {\n Storage.prototype._data = {};\n\n Storage.prototype.setItem = function (id, val) {\n this._data[id] = String(val);\n return this._data[id];\n };\n\n Storage.prototype.getItem = function (id) {\n return this._data.hasOwnProperty(id) ? this._data[id] : undefined;\n };\n\n Storage.prototype.removeItem = function (id) {\n return delete this._data[id];\n };\n\n Storage.prototype.clear = function () {\n this._data = {};\n return this._data;\n };\n } catch (e) {\n console.error('localStorage pollyfill error: ', e);\n }\n }\n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3N0b3JhZ2UuanM/YjUzNiJdLCJuYW1lcyI6WyJpc1N1cHBvcnRlZCIsIml0ZW0iLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwicmVtb3ZlSXRlbSIsInNlc3Npb25TdG9yYWdlIiwiZSIsIlN0b3JhZ2UiLCJwcm90b3R5cGUiLCJfZGF0YSIsImlkIiwidmFsIiwiU3RyaW5nIiwiZ2V0SXRlbSIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwiY2xlYXIiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0MsYUFBVztBQUNSLFdBQVNBLFdBQVQsR0FBdUI7QUFDbkIsUUFBSUMsSUFBSSxHQUFHLHVCQUFYOztBQUNBLFFBQUk7QUFDQUMsTUFBQUEsWUFBWSxDQUFDQyxPQUFiLENBQXFCRixJQUFyQixFQUEyQkEsSUFBM0I7QUFDQUMsTUFBQUEsWUFBWSxDQUFDRSxVQUFiLENBQXdCSCxJQUF4QjtBQUNBSSxNQUFBQSxjQUFjLENBQUNGLE9BQWYsQ0FBdUJGLElBQXZCLEVBQTZCQSxJQUE3QjtBQUNBSSxNQUFBQSxjQUFjLENBQUNELFVBQWYsQ0FBMEJILElBQTFCO0FBQ0EsYUFBTyxJQUFQO0FBQ0gsS0FORCxDQU1FLE9BQU9LLENBQVAsRUFBVTtBQUNSLGFBQU8sS0FBUDtBQUNIO0FBQ0o7O0FBRUQsTUFBSSxDQUFDTixXQUFXLEVBQWhCLEVBQW9CO0FBQ2hCLFFBQUk7QUFDQU8sTUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCQyxLQUFsQixHQUEwQixFQUExQjs7QUFFQUYsTUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCTCxPQUFsQixHQUE0QixVQUFTTyxFQUFULEVBQWFDLEdBQWIsRUFBa0I7QUFDMUMsYUFBS0YsS0FBTCxDQUFXQyxFQUFYLElBQWlCRSxNQUFNLENBQUNELEdBQUQsQ0FBdkI7QUFDQSxlQUFPLEtBQUtGLEtBQUwsQ0FBV0MsRUFBWCxDQUFQO0FBQ0gsT0FIRDs7QUFLQUgsTUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCSyxPQUFsQixHQUE0QixVQUFTSCxFQUFULEVBQWE7QUFDckMsZUFBTyxLQUFLRCxLQUFMLENBQVdLLGNBQVgsQ0FBMEJKLEVBQTFCLElBQWdDLEtBQUtELEtBQUwsQ0FBV0MsRUFBWCxDQUFoQyxHQUFpREssU0FBeEQ7QUFDSCxPQUZEOztBQUlBUixNQUFBQSxPQUFPLENBQUNDLFNBQVIsQ0FBa0JKLFVBQWxCLEdBQStCLFVBQVNNLEVBQVQsRUFBYTtBQUN4QyxlQUFPLE9BQU8sS0FBS0QsS0FBTCxDQUFXQyxFQUFYLENBQWQ7QUFDSCxPQUZEOztBQUlBSCxNQUFBQSxPQUFPLENBQUNDLFNBQVIsQ0FBa0JRLEtBQWxCLEdBQTBCLFlBQVc7QUFDakMsYUFBS1AsS0FBTCxHQUFhLEVBQWI7QUFDQSxlQUFPLEtBQUtBLEtBQVo7QUFDSCxPQUhEO0FBSUgsS0FwQkQsQ0FvQkUsT0FBT0gsQ0FBUCxFQUFVO0FBQ1JXLE1BQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFjLGdDQUFkLEVBQWdEWixDQUFoRDtBQUNIO0FBQ0o7QUFDSixDQXZDQSxHQUFEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbG9jYWxTdG9yYWdlXG4oZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gaXNTdXBwb3J0ZWQoKSB7XG4gICAgICAgIHZhciBpdGVtID0gJ2xvY2FsU3RvcmFnZVBvbGx5ZmlsbCc7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShpdGVtLCBpdGVtKTtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShpdGVtLCBpdGVtKTtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc1N1cHBvcnRlZCgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBTdG9yYWdlLnByb3RvdHlwZS5fZGF0YSA9IHt9O1xuXG4gICAgICAgICAgICBTdG9yYWdlLnByb3RvdHlwZS5zZXRJdGVtID0gZnVuY3Rpb24oaWQsIHZhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFbaWRdID0gU3RyaW5nKHZhbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbaWRdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgU3RvcmFnZS5wcm90b3R5cGUuZ2V0SXRlbSA9IGZ1bmN0aW9uKGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuaGFzT3duUHJvcGVydHkoaWQpID8gdGhpcy5fZGF0YVtpZF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBTdG9yYWdlLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlIHRoaXMuX2RhdGFbaWRdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgU3RvcmFnZS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0ge307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdsb2NhbFN0b3JhZ2UgcG9sbHlmaWxsIGVycm9yOiAnLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbn0oKSk7XG4iXSwiZmlsZSI6Ii4vYXBwL3V0aWxzL3N0b3JhZ2UuanMuanMiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/storage.js\n");
/***/ }),
/***/ "./app/utils/tabs-memory.js":
/*!**********************************!*\
!*** ./app/utils/tabs-memory.js ***!
\**********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cookies_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cookies-js */ \"./node_modules/cookies-js/dist/cookies.js\");\n/* harmony import */ var cookies_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cookies_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _forms_fields_editor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../forms/fields/editor */ \"./app/forms/fields/editor.js\");\n\n\n\nvar Data = JSON.parse(cookies_js__WEBPACK_IMPORTED_MODULE_1___default().get('grav-tabs-state') || '{}');\njquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('touchstart click', '[data-tabid]', function (event) {\n event && event.stopPropagation();\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n Data[target.data('tabkey')] = target.data('scope');\n cookies_js__WEBPACK_IMPORTED_MODULE_1___default().set('grav-tabs-state', JSON.stringify(Data), {\n expires: Infinity\n });\n var panel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[id=\\\"\".concat(target.data('tabid'), \"\\\"]\"));\n target.siblings('[data-tabid]').removeClass('active');\n target.addClass('active');\n panel.siblings('[id]').removeClass('active');\n panel.addClass('active');\n _forms_fields_editor__WEBPACK_IMPORTED_MODULE_2__.Instance.editors.each(function (index, editor) {\n var codemirror = jquery__WEBPACK_IMPORTED_MODULE_0___default()(editor).data('codemirror');\n\n if (!codemirror) {\n return;\n }\n\n if (codemirror.display.lastWrapWidth === 0) {\n codemirror.refresh();\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3RhYnMtbWVtb3J5LmpzPzM5YjEiXSwibmFtZXMiOlsiRGF0YSIsIkpTT04iLCJwYXJzZSIsIkNvb2tpZXMiLCIkIiwib24iLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJkYXRhIiwic3RyaW5naWZ5IiwiZXhwaXJlcyIsIkluZmluaXR5IiwicGFuZWwiLCJzaWJsaW5ncyIsInJlbW92ZUNsYXNzIiwiYWRkQ2xhc3MiLCJFZGl0b3JzIiwiaW5kZXgiLCJlZGl0b3IiLCJjb2RlbWlycm9yIiwiZGlzcGxheSIsImxhc3RXcmFwV2lkdGgiLCJyZWZyZXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxxREFBQSxDQUFZLGlCQUFaLEtBQWtDLElBQTdDLENBQVg7QUFFQUMsNkNBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVUMsRUFBVixDQUFhLGtCQUFiLEVBQWlDLGNBQWpDLEVBQWlELFVBQUNDLEtBQUQsRUFBVztBQUN4REEsT0FBSyxJQUFJQSxLQUFLLENBQUNDLGVBQU4sRUFBVDtBQUNBLE1BQUlDLE1BQU0sR0FBR0osNkNBQUMsQ0FBQ0UsS0FBSyxDQUFDRyxhQUFQLENBQWQ7QUFFQVQsTUFBSSxDQUFDUSxNQUFNLENBQUNFLElBQVAsQ0FBWSxRQUFaLENBQUQsQ0FBSixHQUE4QkYsTUFBTSxDQUFDRSxJQUFQLENBQVksT0FBWixDQUE5QjtBQUNBUCx1REFBQSxDQUFZLGlCQUFaLEVBQStCRixJQUFJLENBQUNVLFNBQUwsQ0FBZVgsSUFBZixDQUEvQixFQUFxRDtBQUFFWSxXQUFPLEVBQUVDO0FBQVgsR0FBckQ7QUFFQSxNQUFNQyxLQUFLLEdBQUdWLDZDQUFDLGlCQUFTSSxNQUFNLENBQUNFLElBQVAsQ0FBWSxPQUFaLENBQVQsU0FBZjtBQUVBRixRQUFNLENBQUNPLFFBQVAsQ0FBZ0IsY0FBaEIsRUFBZ0NDLFdBQWhDLENBQTRDLFFBQTVDO0FBQ0FSLFFBQU0sQ0FBQ1MsUUFBUCxDQUFnQixRQUFoQjtBQUVBSCxPQUFLLENBQUNDLFFBQU4sQ0FBZSxNQUFmLEVBQXVCQyxXQUF2QixDQUFtQyxRQUFuQztBQUNBRixPQUFLLENBQUNHLFFBQU4sQ0FBZSxRQUFmO0FBRUFDLHlFQUFBLENBQXFCLFVBQUNDLEtBQUQsRUFBUUMsTUFBUixFQUFtQjtBQUNwQyxRQUFJQyxVQUFVLEdBQUdqQiw2Q0FBQyxDQUFDZ0IsTUFBRCxDQUFELENBQVVWLElBQVYsQ0FBZSxZQUFmLENBQWpCOztBQUNBLFFBQUksQ0FBQ1csVUFBTCxFQUFpQjtBQUFFO0FBQVM7O0FBQzVCLFFBQUlBLFVBQVUsQ0FBQ0MsT0FBWCxDQUFtQkMsYUFBbkIsS0FBcUMsQ0FBekMsRUFBNEM7QUFDeENGLGdCQUFVLENBQUNHLE9BQVg7QUFDSDtBQUNKLEdBTkQ7QUFPSCxDQXRCRCIsImZpbGUiOiIuL2FwcC91dGlscy90YWJzLW1lbW9yeS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQ29va2llcyBmcm9tICdjb29raWVzLWpzJztcbmltcG9ydCB7IEluc3RhbmNlIGFzIEVkaXRvcnMgfSBmcm9tICcuLi9mb3Jtcy9maWVsZHMvZWRpdG9yJztcblxubGV0IERhdGEgPSBKU09OLnBhcnNlKENvb2tpZXMuZ2V0KCdncmF2LXRhYnMtc3RhdGUnKSB8fCAne30nKTtcblxuJCgnYm9keScpLm9uKCd0b3VjaHN0YXJ0IGNsaWNrJywgJ1tkYXRhLXRhYmlkXScsIChldmVudCkgPT4ge1xuICAgIGV2ZW50ICYmIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGxldCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuXG4gICAgRGF0YVt0YXJnZXQuZGF0YSgndGFia2V5JyldID0gdGFyZ2V0LmRhdGEoJ3Njb3BlJyk7XG4gICAgQ29va2llcy5zZXQoJ2dyYXYtdGFicy1zdGF0ZScsIEpTT04uc3RyaW5naWZ5KERhdGEpLCB7IGV4cGlyZXM6IEluZmluaXR5IH0pO1xuXG4gICAgY29uc3QgcGFuZWwgPSAkKGBbaWQ9XCIke3RhcmdldC5kYXRhKCd0YWJpZCcpfVwiXWApO1xuXG4gICAgdGFyZ2V0LnNpYmxpbmdzKCdbZGF0YS10YWJpZF0nKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgdGFyZ2V0LmFkZENsYXNzKCdhY3RpdmUnKTtcblxuICAgIHBhbmVsLnNpYmxpbmdzKCdbaWRdJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgIHBhbmVsLmFkZENsYXNzKCdhY3RpdmUnKTtcblxuICAgIEVkaXRvcnMuZWRpdG9ycy5lYWNoKChpbmRleCwgZWRpdG9yKSA9PiB7XG4gICAgICAgIGxldCBjb2RlbWlycm9yID0gJChlZGl0b3IpLmRhdGEoJ2NvZGVtaXJyb3InKTtcbiAgICAgICAgaWYgKCFjb2RlbWlycm9yKSB7IHJldHVybjsgfVxuICAgICAgICBpZiAoY29kZW1pcnJvci5kaXNwbGF5Lmxhc3RXcmFwV2lkdGggPT09IDApIHtcbiAgICAgICAgICAgIGNvZGVtaXJyb3IucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/utils/tabs-memory.js\n");
/***/ }),
/***/ "./app/utils/toastr.js":
/*!*****************************!*\
!*** ./app/utils/toastr.js ***!
\*****************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__\n/* harmony export */ });\n/* harmony import */ var toastr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! toastr */ \"./node_modules/toastr/toastr.js\");\n/* harmony import */ var toastr__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(toastr__WEBPACK_IMPORTED_MODULE_0__);\n\n(toastr__WEBPACK_IMPORTED_MODULE_0___default().options.positionClass) = 'toast-top-right';\n(toastr__WEBPACK_IMPORTED_MODULE_0___default().options.preventDuplicates) = true;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((toastr__WEBPACK_IMPORTED_MODULE_0___default()));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3V0aWxzL3RvYXN0ci5qcz9jZjdiIl0sIm5hbWVzIjpbInRvYXN0ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFFQUEscUVBQUEsR0FBK0IsaUJBQS9CO0FBQ0FBLHlFQUFBLEdBQW1DLElBQW5DO0FBRUEsaUVBQWVBLCtDQUFmIiwiZmlsZSI6Ii4vYXBwL3V0aWxzL3RvYXN0ci5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0b2FzdHIgZnJvbSAndG9hc3RyJztcblxudG9hc3RyLm9wdGlvbnMucG9zaXRpb25DbGFzcyA9ICd0b2FzdC10b3AtcmlnaHQnO1xudG9hc3RyLm9wdGlvbnMucHJldmVudER1cGxpY2F0ZXMgPSB0cnVlO1xuXG5leHBvcnQgZGVmYXVsdCB0b2FzdHI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/utils/toastr.js\n");
/***/ }),
/***/ "./app/whitelabel/compile.js":
/*!***********************************!*\
!*** ./app/whitelabel/compile.js ***!
\***********************************/
/*! namespace exports */
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
/*! export prepareElement [provided] [no usage info] [missing usage info prevents renaming] */
/*! export resetElement [provided] [no usage info] [missing usage info prevents renaming] */
/*! other exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_exports__, __webpack_require__.r, __webpack_require__.d, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => __WEBPACK_DEFAULT_EXPORT__,\n/* harmony export */ \"prepareElement\": () => /* binding */ prepareElement,\n/* harmony export */ \"resetElement\": () => /* binding */ resetElement\n/* harmony export */ });\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/request */ \"./app/utils/request.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$preview = _ref.preview,\n preview = _ref$preview === void 0 ? false : _ref$preview,\n _ref$exportScss = _ref.exportScss,\n exportScss = _ref$exportScss === void 0 ? false : _ref$exportScss,\n _ref$color_scheme = _ref.color_scheme,\n color_scheme = _ref$color_scheme === void 0 ? {} : _ref$color_scheme,\n _ref$fonts = _ref.fonts,\n fonts = _ref$fonts === void 0 ? {} : _ref$fonts,\n _ref$callback = _ref.callback,\n callback = _ref$callback === void 0 ? function () {} : _ref$callback;\n\n var task = exportScss ? 'exportScss' : 'compileScss'; // console.log(config);\n\n var URI = \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_0__.config.base_url_relative, \".json/task:\").concat(task);\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_1__.default)(URI, {\n method: 'post',\n body: Object.assign({}, preview ? {\n preview: preview\n } : null, color_scheme)\n }, callback);\n});\nvar prepareElement = function prepareElement(element) {\n element.data('busy_right_now', true);\n\n if (!element.data('current_icon')) {\n element.data('current_icon', element.find('.fa').attr('class'));\n }\n\n element.find('.fa').attr('class', 'fa fa-fw fa-spin fa-refresh');\n};\nvar resetElement = function resetElement(element) {\n element.data('busy_right_now', false);\n element.find('.fa').attr('class', element.data('current_icon'));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3doaXRlbGFiZWwvY29tcGlsZS5qcz9iZjI3Il0sIm5hbWVzIjpbInByZXZpZXciLCJleHBvcnRTY3NzIiwiY29sb3Jfc2NoZW1lIiwiZm9udHMiLCJjYWxsYmFjayIsInRhc2siLCJVUkkiLCJjb25maWciLCJyZXF1ZXN0IiwibWV0aG9kIiwiYm9keSIsIk9iamVjdCIsImFzc2lnbiIsInByZXBhcmVFbGVtZW50IiwiZWxlbWVudCIsImRhdGEiLCJmaW5kIiwiYXR0ciIsInJlc2V0RWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUVBLGlFQUFlLFlBQXNHO0FBQUEsaUZBQVAsRUFBTztBQUFBLDBCQUFuR0EsT0FBbUc7QUFBQSxNQUFuR0EsT0FBbUcsNkJBQXpGLEtBQXlGO0FBQUEsNkJBQWxGQyxVQUFrRjtBQUFBLE1BQWxGQSxVQUFrRixnQ0FBckUsS0FBcUU7QUFBQSwrQkFBOURDLFlBQThEO0FBQUEsTUFBOURBLFlBQThELGtDQUEvQyxFQUErQztBQUFBLHdCQUEzQ0MsS0FBMkM7QUFBQSxNQUEzQ0EsS0FBMkMsMkJBQW5DLEVBQW1DO0FBQUEsMkJBQS9CQyxRQUErQjtBQUFBLE1BQS9CQSxRQUErQiw4QkFBcEIsWUFBTSxDQUFFLENBQVk7O0FBQ2pILE1BQUlDLElBQUksR0FBR0osVUFBVSxHQUFHLFlBQUgsR0FBa0IsYUFBdkMsQ0FEaUgsQ0FFakg7O0FBQ0EsTUFBTUssR0FBRyxhQUFNQyxpRUFBTix3QkFBNENGLElBQTVDLENBQVQ7QUFDQUcseURBQU8sQ0FBQ0YsR0FBRCxFQUFNO0FBQ1RHLFVBQU0sRUFBRSxNQURDO0FBRVRDLFFBQUksRUFBRUMsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQlosT0FBTyxHQUFHO0FBQUVBLGFBQU8sRUFBUEE7QUFBRixLQUFILEdBQWlCLElBQTFDLEVBQWdERSxZQUFoRDtBQUZHLEdBQU4sRUFHSkUsUUFISSxDQUFQO0FBSUgsQ0FSRDtBQVVPLElBQU1TLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsT0FBRCxFQUFhO0FBQ3ZDQSxTQUFPLENBQUNDLElBQVIsQ0FBYSxnQkFBYixFQUErQixJQUEvQjs7QUFDQSxNQUFJLENBQUNELE9BQU8sQ0FBQ0MsSUFBUixDQUFhLGNBQWIsQ0FBTCxFQUFtQztBQUMvQkQsV0FBTyxDQUFDQyxJQUFSLENBQWEsY0FBYixFQUE2QkQsT0FBTyxDQUFDRSxJQUFSLENBQWEsS0FBYixFQUFvQkMsSUFBcEIsQ0FBeUIsT0FBekIsQ0FBN0I7QUFDSDs7QUFDREgsU0FBTyxDQUFDRSxJQUFSLENBQWEsS0FBYixFQUFvQkMsSUFBcEIsQ0FBeUIsT0FBekIsRUFBa0MsNkJBQWxDO0FBQ0gsQ0FOTTtBQVFBLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQUNKLE9BQUQsRUFBYTtBQUNyQ0EsU0FBTyxDQUFDQyxJQUFSLENBQWEsZ0JBQWIsRUFBK0IsS0FBL0I7QUFDQUQsU0FBTyxDQUFDRSxJQUFSLENBQWEsS0FBYixFQUFvQkMsSUFBcEIsQ0FBeUIsT0FBekIsRUFBa0NILE9BQU8sQ0FBQ0MsSUFBUixDQUFhLGNBQWIsQ0FBbEM7QUFDSCxDQUhNIiwiZmlsZSI6Ii4vYXBwL3doaXRlbGFiZWwvY29tcGlsZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ2dyYXYtY29uZmlnJztcbmltcG9ydCByZXF1ZXN0IGZyb20gJy4uL3V0aWxzL3JlcXVlc3QnO1xuXG5leHBvcnQgZGVmYXVsdCAoeyBwcmV2aWV3ID0gZmFsc2UsIGV4cG9ydFNjc3MgPSBmYWxzZSwgY29sb3Jfc2NoZW1lID0ge30sIGZvbnRzID0ge30sIGNhbGxiYWNrID0gKCkgPT4ge30gfSA9IHt9KSA9PiB7XG4gICAgbGV0IHRhc2sgPSBleHBvcnRTY3NzID8gJ2V4cG9ydFNjc3MnIDogJ2NvbXBpbGVTY3NzJztcbiAgICAvLyBjb25zb2xlLmxvZyhjb25maWcpO1xuICAgIGNvbnN0IFVSSSA9IGAke2NvbmZpZy5iYXNlX3VybF9yZWxhdGl2ZX0uanNvbi90YXNrOiR7dGFza31gO1xuICAgIHJlcXVlc3QoVVJJLCB7XG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBib2R5OiBPYmplY3QuYXNzaWduKHt9LCBwcmV2aWV3ID8geyBwcmV2aWV3IH0gOiBudWxsLCBjb2xvcl9zY2hlbWUpXG4gICAgfSwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVFbGVtZW50ID0gKGVsZW1lbnQpID0+IHtcbiAgICBlbGVtZW50LmRhdGEoJ2J1c3lfcmlnaHRfbm93JywgdHJ1ZSk7XG4gICAgaWYgKCFlbGVtZW50LmRhdGEoJ2N1cnJlbnRfaWNvbicpKSB7XG4gICAgICAgIGVsZW1lbnQuZGF0YSgnY3VycmVudF9pY29uJywgZWxlbWVudC5maW5kKCcuZmEnKS5hdHRyKCdjbGFzcycpKTtcbiAgICB9XG4gICAgZWxlbWVudC5maW5kKCcuZmEnKS5hdHRyKCdjbGFzcycsICdmYSBmYS1mdyBmYS1zcGluIGZhLXJlZnJlc2gnKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVsZW1lbnQgPSAoZWxlbWVudCkgPT4ge1xuICAgIGVsZW1lbnQuZGF0YSgnYnVzeV9yaWdodF9ub3cnLCBmYWxzZSk7XG4gICAgZWxlbWVudC5maW5kKCcuZmEnKS5hdHRyKCdjbGFzcycsIGVsZW1lbnQuZGF0YSgnY3VycmVudF9pY29uJykpO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/whitelabel/compile.js\n");
/***/ }),
/***/ "./app/whitelabel/index.js":
/*!*********************************!*\
!*** ./app/whitelabel/index.js ***!
\*********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _compile__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compile */ \"./app/whitelabel/compile.js\");\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../forms */ \"./app/forms/index.js\");\n/* harmony import */ var _utils_colors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/colors */ \"./app/utils/colors.js\");\n/* harmony import */ var _presets__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./presets */ \"./app/whitelabel/presets.js\");\n\n\n\n\n\nvar body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\nvar FormState = _forms__WEBPACK_IMPORTED_MODULE_2__.default.FormState.Instance;\n\nvar compiler = function compiler(element) {\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var exportScss = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var _callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n (0,_compile__WEBPACK_IMPORTED_MODULE_1__.prepareElement)(element);\n var fields = FormState.collect();\n (0,_compile__WEBPACK_IMPORTED_MODULE_1__.default)({\n preview: preview,\n exportScss: exportScss,\n color_scheme: !fields ? [] : fields.filter(function (value, key) {\n return key.match(/^data\\[whitelabel]\\[color_scheme]/);\n }).toJS(),\n callback: function callback(response) {\n _callback.call(_callback, response);\n\n (0,_compile__WEBPACK_IMPORTED_MODULE_1__.resetElement)(element);\n }\n });\n};\n\nbody.on('click', '[data-preview-scss]', function (event) {\n event && event.preventDefault();\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n\n if (element.data('busy_right_now')) {\n return false;\n }\n\n compiler(element, true, false, function (response) {\n if (response.files) {\n Object.keys(response.files).forEach(function (key) {\n var file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"#admin-pro-preview-\".concat(key));\n var timestamp = Date.now();\n\n if (!file.length) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"
\"));\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('head').append(file);\n\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-reset-scss]').length) {\n var reset = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
Reset');\n reset.insertAfter(element);\n }\n }\n\n file.attr('href', \"\".concat(response.files[key], \"?\").concat(timestamp));\n });\n }\n });\n});\nbody.on('click', '[data-recompile-scss]', function (event) {\n event && event.preventDefault();\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n\n if (element.data('busy_right_now')) {\n return false;\n }\n\n compiler(element, true, false);\n});\nbody.on('click', '[data-export-scss]', function (event) {\n event && event.preventDefault();\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n\n if (element.data('busy_right_now')) {\n return false;\n }\n\n compiler(element, true, true, function (response) {\n if (response.files) {\n Object.keys(response.files).forEach(function (key) {\n if (key === 'download') {\n var _element = document.createElement('a');\n\n _element.setAttribute('href', response.files[key]);\n\n _element.setAttribute('download', '');\n\n _element.style.display = 'none';\n document.body.appendChild(_element);\n\n _element.click();\n\n document.body.removeChild(_element);\n }\n });\n }\n });\n});\nbody.on('change._grav_colorpicker', '[data-grav-colorpicker]', function (event, input, hex, opacity) {\n var RGB = (0,_utils_colors__WEBPACK_IMPORTED_MODULE_3__.hex2rgb)(hex);\n var YIQ = (RGB.r * 299 + RGB.g * 587 + RGB.b * 114) / 1000;\n var contrast = YIQ >= 128 || opacity <= 0.50 ? 'dark' : 'light';\n input.parent().removeClass('dark-text light-text').addClass(\"\".concat(contrast, \"-text\"));\n});\nbody.ready(function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-grav-colorpicker]').trigger('keyup');\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3doaXRlbGFiZWwvaW5kZXguanM/MjI5OCJdLCJuYW1lcyI6WyJib2R5IiwiJCIsIkZvcm1TdGF0ZSIsIkZvcm1zIiwiY29tcGlsZXIiLCJlbGVtZW50IiwicHJldmlldyIsImV4cG9ydFNjc3MiLCJjYWxsYmFjayIsInByZXBhcmVFbGVtZW50IiwiZmllbGRzIiwiY29sbGVjdCIsIkNvbXBpbGUiLCJjb2xvcl9zY2hlbWUiLCJmaWx0ZXIiLCJ2YWx1ZSIsImtleSIsIm1hdGNoIiwidG9KUyIsInJlc3BvbnNlIiwiY2FsbCIsInJlc2V0RWxlbWVudCIsIm9uIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImN1cnJlbnRUYXJnZXQiLCJkYXRhIiwiZmlsZXMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImZpbGUiLCJ0aW1lc3RhbXAiLCJEYXRlIiwibm93IiwibGVuZ3RoIiwiYXBwZW5kIiwicmVzZXQiLCJpbnNlcnRBZnRlciIsImF0dHIiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJpbnB1dCIsImhleCIsIm9wYWNpdHkiLCJSR0IiLCJoZXgycmdiIiwiWUlRIiwiciIsImciLCJiIiwiY29udHJhc3QiLCJwYXJlbnQiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwicmVhZHkiLCJ0cmlnZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLElBQUksR0FBR0MsNkNBQUMsQ0FBQyxNQUFELENBQWQ7QUFDQSxJQUFNQyxTQUFTLEdBQUdDLDhEQUFsQjs7QUFDQSxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxPQUFELEVBQXVFO0FBQUEsTUFBN0RDLE9BQTZELHVFQUFuRCxLQUFtRDtBQUFBLE1BQTVDQyxVQUE0Qyx1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QUlDLEdBQUcsR0FBR0Msc0RBQU8sQ0FBQ0gsR0FBRCxDQUFqQjtBQUNBLE1BQUlJLEdBQUcsR0FBRyxDQUFFRixHQUFHLENBQUNHLENBQUosR0FBUSxHQUFULEdBQWlCSCxHQUFHLENBQUNJLENBQUosR0FBUSxHQUF6QixHQUFpQ0osR0FBRyxDQUFDSyxDQUFKLEdBQVEsR0FBMUMsSUFBa0QsSUFBNUQ7QUFDQSxNQUFJQyxRQUFRLEdBQUdKLEdBQUcsSUFBSSxHQUFQLElBQWNILE9BQU8sSUFBSSxJQUF6QixHQUFnQyxNQUFoQyxHQUF5QyxPQUF4RDtBQUVBRixPQUFLLENBQUNVLE1BQU4sR0FBZUMsV0FBZixDQUEyQixzQkFBM0IsRUFBbURDLFFBQW5ELFdBQStESCxRQUEvRDtBQUNILENBTkQ7QUFRQXpELElBQUksQ0FBQzZELEtBQUwsQ0FBVyxZQUFNO0FBQ2I1RCwrQ0FBQyxDQUFDLHlCQUFELENBQUQsQ0FBNkI2RCxPQUE3QixDQUFxQyxPQUFyQztBQUNILENBRkQiLCJmaWxlIjoiLi9hcHAvd2hpdGVsYWJlbC9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQ29tcGlsZSwgeyBwcmVwYXJlRWxlbWVudCwgcmVzZXRFbGVtZW50IH0gZnJvbSAnLi9jb21waWxlJztcbmltcG9ydCBGb3JtcyBmcm9tICcuLi9mb3Jtcyc7XG5pbXBvcnQgeyBoZXgycmdiIH0gZnJvbSAnLi4vdXRpbHMvY29sb3JzJztcbmltcG9ydCAnLi9wcmVzZXRzJztcblxuY29uc3QgYm9keSA9ICQoJ2JvZHknKTtcbmNvbnN0IEZvcm1TdGF0ZSA9IEZvcm1zLkZvcm1TdGF0ZS5JbnN0YW5jZTtcbmNvbnN0IGNvbXBpbGVyID0gKGVsZW1lbnQsIHByZXZpZXcgPSBmYWxzZSwgZXhwb3J0U2NzcyA9IGZhbHNlLCBjYWxsYmFjayA9ICgpID0+IHt9KSA9PiB7XG4gICAgcHJlcGFyZUVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBsZXQgZmllbGRzID0gRm9ybVN0YXRlLmNvbGxlY3QoKTtcbiAgICBDb21waWxlKHtcbiAgICAgICAgcHJldmlldyxcbiAgICAgICAgZXhwb3J0U2NzcyxcbiAgICAgICAgY29sb3Jfc2NoZW1lOiAhZmllbGRzID8gW10gOiBmaWVsZHMuZmlsdGVyKCh2YWx1ZSwga2V5KSA9PiBrZXkubWF0Y2goL15kYXRhXFxbd2hpdGVsYWJlbF1cXFtjb2xvcl9zY2hlbWVdLykpLnRvSlMoKSxcbiAgICAgICAgY2FsbGJhY2s6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2suY2FsbChjYWxsYmFjaywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgcmVzZXRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5ib2R5Lm9uKCdjbGljaycsICdbZGF0YS1wcmV2aWV3LXNjc3NdJywgKGV2ZW50KSA9PiB7XG4gICAgZXZlbnQgJiYgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBsZXQgZWxlbWVudCA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgaWYgKGVsZW1lbnQuZGF0YSgnYnVzeV9yaWdodF9ub3cnKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIGNvbXBpbGVyKGVsZW1lbnQsIHRydWUsIGZhbHNlLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmZpbGVzKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5maWxlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSAkKGAjYWRtaW4tcHJvLXByZXZpZXctJHtrZXl9YCk7XG4gICAgICAgICAgICAgICAgbGV0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlID0gJChgPGxpbmsgaWQ9XCJhZG1pbi1wcm8tcHJldmlldy0ke2tleX1cIiB0eXBlPVwidGV4dC9jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz5gKTtcbiAgICAgICAgICAgICAgICAgICAgJCgnaGVhZCcpLmFwcGVuZChmaWxlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoJ1tkYXRhLXJlc2V0LXNjc3NdJykubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzZXQgPSAkKCc8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgZGF0YS1yZXNldC1zY3NzIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDVweDtcIj48aSBjbGFzcz1cImZhIGZhLWZ3IGZhLWhpc3RvcnlcIj48L2k+IFJlc2V0PC9idXR0b24+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldC5pbnNlcnRBZnRlcihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpbGUuYXR0cignaHJlZicsIGAke3Jlc3BvbnNlLmZpbGVzW2tleV19PyR7dGltZXN0YW1wfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuXG5ib2R5Lm9uKCdjbGljaycsICdbZGF0YS1yZWNvbXBpbGUtc2Nzc10nLCAoZXZlbnQpID0+IHtcbiAgICBldmVudCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGxldCBlbGVtZW50ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBpZiAoZWxlbWVudC5kYXRhKCdidXN5X3JpZ2h0X25vdycpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgY29tcGlsZXIoZWxlbWVudCwgdHJ1ZSwgZmFsc2UpO1xufSk7XG5cbmJvZHkub24oJ2NsaWNrJywgJ1tkYXRhLWV4cG9ydC1zY3NzXScsIChldmVudCkgPT4ge1xuICAgIGV2ZW50ICYmIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgbGV0IGVsZW1lbnQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGlmIChlbGVtZW50LmRhdGEoJ2J1c3lfcmlnaHRfbm93JykpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBjb21waWxlcihlbGVtZW50LCB0cnVlLCB0cnVlLCAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmZpbGVzKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5maWxlcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2Rvd25sb2FkJykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCByZXNwb25zZS5maWxlc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgJycpO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5cbmJvZHkub24oJ2NoYW5nZS5fZ3Jhdl9jb2xvcnBpY2tlcicsICdbZGF0YS1ncmF2LWNvbG9ycGlja2VyXScsIChldmVudCwgaW5wdXQsIGhleCwgb3BhY2l0eSkgPT4ge1xuICAgIGxldCBSR0IgPSBoZXgycmdiKGhleCk7XG4gICAgbGV0IFlJUSA9ICgoUkdCLnIgKiAyOTkpICsgKFJHQi5nICogNTg3KSArIChSR0IuYiAqIDExNCkpIC8gMTAwMDtcbiAgICBsZXQgY29udHJhc3QgPSBZSVEgPj0gMTI4IHx8IG9wYWNpdHkgPD0gMC41MCA/ICdkYXJrJyA6ICdsaWdodCc7XG5cbiAgICBpbnB1dC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnZGFyay10ZXh0IGxpZ2h0LXRleHQnKS5hZGRDbGFzcyhgJHtjb250cmFzdH0tdGV4dGApO1xufSk7XG5cbmJvZHkucmVhZHkoKCkgPT4ge1xuICAgICQoJ1tkYXRhLWdyYXYtY29sb3JwaWNrZXJdJykudHJpZ2dlcigna2V5dXAnKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/whitelabel/index.js\n");
/***/ }),
/***/ "./app/whitelabel/presets.js":
/*!***********************************!*\
!*** ./app/whitelabel/presets.js ***!
\***********************************/
/*! namespace exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: __webpack_require__, __webpack_require__.n, __webpack_require__.r, __webpack_exports__, __webpack_require__.* */
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _forms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../forms */ \"./app/forms/index.js\");\n\n\nvar body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');\nvar fields = [];\nvar FormState = _forms__WEBPACK_IMPORTED_MODULE_1__.default.FormState.Instance;\n\nvar setField = function setField(field, value) {\n var name = field.prop('name');\n var tag = field.prop('tagName').toLowerCase();\n var type = field.prop('type');\n fields.push(name);\n\n switch (tag) {\n case 'select':\n field.val(value);\n field.data('selectize').setValue(value);\n field.trigger('change');\n break;\n\n case 'input':\n if (type === 'radio') {\n var strValue = value ? '1' : '0';\n field.filter(function (index, radio) {\n return jquery__WEBPACK_IMPORTED_MODULE_0___default()(radio).val() === strValue;\n }).prop('checked', true);\n break;\n }\n\n if (type === 'checkbox') {\n field.prop('checked', value);\n break;\n }\n\n field.val(value);\n field.trigger('keyup');\n }\n};\n\nbody.on('click', '[data-preset-values]', function (event) {\n var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var data = target.data('preset-values');\n Object.keys(data).forEach(function (section) {\n if (typeof data[section] === 'string') {\n return;\n }\n\n Object.keys(data[section]).forEach(function (key) {\n var field = jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"data[whitelabel][color_scheme][\".concat(section, \"][\").concat(key, \"]\\\"], [name=\\\"data[\").concat(section, \"][\").concat(key, \"]\\\"]\"));\n var value = data[section][key];\n setField(field, value);\n });\n });\n});\nbody.on('click', '[data-reset-scss]', function (event) {\n event && event.preventDefault();\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var links = jquery__WEBPACK_IMPORTED_MODULE_0___default()('link[id^=admin-pro-preview-]');\n element.remove();\n links.remove();\n fields.forEach(function (field) {\n var value = FormState.loadState.get(field);\n setField(jquery__WEBPACK_IMPORTED_MODULE_0___default()(\"[name=\\\"\".concat(field, \"\\\"]\")), value);\n });\n fields = [];\n}); // Horizontal Scroll Functionality\n\n(jquery__WEBPACK_IMPORTED_MODULE_0___default().fn.hscrollarrows) = function () {\n return this.each(function () {\n var navNext = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var navPrev = jquery__WEBPACK_IMPORTED_MODULE_0___default()('
');\n var scrollTime = null;\n var resizeTime = null;\n var scrolling = false;\n var elm_w = 0;\n var elem_data_w = 0;\n var max_scroll = 0;\n var inc_scroll = 0;\n\n var calcData = function calcData() {\n elm_w = elem.width();\n elem_data_w = elem_data.get(0).scrollWidth;\n max_scroll = elem_data_w - elm_w;\n inc_scroll = elm_w * 0.3; // 20%\n };\n\n var revalidate = function revalidate() {\n calcData();\n stateNavs();\n };\n\n var run = function run() {\n calcData();\n setupNavs();\n };\n\n var setupNavs = function setupNavs() {\n elem.parent().prepend(navNext);\n elem.parent().prepend(navPrev);\n navNext.on('click', next);\n navPrev.on('click', prev);\n stateNavs();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).scroll(function () {\n if (!scrolling) {\n clearTimeout(scrollTime);\n scrollTime = setTimeout(function () {\n stateNavs();\n }, 250);\n }\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).resize(function () {\n clearTimeout(resizeTime);\n resizeTime = setTimeout(function () {\n revalidate();\n }, 250);\n });\n };\n\n var stateNavs = function stateNavs() {\n var current_scroll = elem.scrollLeft();\n\n if (current_scroll < max_scroll) {\n navNext.removeClass('hide');\n } else {\n navNext.addClass('hide');\n }\n\n if (current_scroll > 0) {\n navPrev.removeClass('hide');\n } else {\n navPrev.addClass('hide');\n }\n\n scrolling = false;\n };\n\n var next = function next() {\n var current_scroll = elem.scrollLeft();\n\n if (current_scroll < max_scroll) {\n scrolling = true;\n elem.stop().animate({\n scrollLeft: current_scroll + inc_scroll\n }, stateNavs);\n }\n };\n\n var prev = function prev() {\n var current_scroll = elem.scrollLeft();\n\n if (current_scroll > 0) {\n scrolling = true;\n elem.stop().animate({\n scrollLeft: current_scroll - inc_scroll\n }, stateNavs);\n }\n };\n\n var elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var elem_data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(':first-child', elem);\n run();\n });\n};\n\njquery__WEBPACK_IMPORTED_MODULE_0___default()(document).ready(function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.jquery-horizontal-scroll').hscrollarrows();\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL3doaXRlbGFiZWwvcHJlc2V0cy5qcz8zMjNjIl0sIm5hbWVzIjpbImJvZHkiLCIkIiwiZmllbGRzIiwiRm9ybVN0YXRlIiwiRm9ybXMiLCJzZXRGaWVsZCIsImZpZWxkIiwidmFsdWUiLCJuYW1lIiwicHJvcCIsInRhZyIsInRvTG93ZXJDYXNlIiwidHlwZSIsInB1c2giLCJ2YWwiLCJkYXRhIiwic2V0VmFsdWUiLCJ0cmlnZ2VyIiwic3RyVmFsdWUiLCJmaWx0ZXIiLCJpbmRleCIsInJhZGlvIiwib24iLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNlY3Rpb24iLCJrZXkiLCJwcmV2ZW50RGVmYXVsdCIsImVsZW1lbnQiLCJsaW5rcyIsInJlbW92ZSIsImxvYWRTdGF0ZSIsImdldCIsImVhY2giLCJuYXZOZXh0IiwibmF2UHJldiIsInNjcm9sbFRpbWUiLCJyZXNpemVUaW1lIiwic2Nyb2xsaW5nIiwiZWxtX3ciLCJlbGVtX2RhdGFfdyIsIm1heF9zY3JvbGwiLCJpbmNfc2Nyb2xsIiwiY2FsY0RhdGEiLCJlbGVtIiwid2lkdGgiLCJlbGVtX2RhdGEiLCJzY3JvbGxXaWR0aCIsInJldmFsaWRhdGUiLCJzdGF0ZU5hdnMiLCJydW4iLCJzZXR1cE5hdnMiLCJwYXJlbnQiLCJwcmVwZW5kIiwibmV4dCIsInByZXYiLCJzY3JvbGwiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwid2luZG93IiwicmVzaXplIiwiY3VycmVudF9zY3JvbGwiLCJzY3JvbGxMZWZ0IiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInN0b3AiLCJhbmltYXRlIiwiZG9jdW1lbnQiLCJyZWFkeSIsImhzY3JvbGxhcnJvd3MiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBRUEsSUFBSUEsSUFBSSxHQUFHQyw2Q0FBQyxDQUFDLE1BQUQsQ0FBWjtBQUNBLElBQUlDLE1BQU0s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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBGb3JtcyBmcm9tICcuLi9mb3Jtcyc7XG5cbmxldCBib2R5ID0gJCgnYm9keScpO1xubGV0IGZpZWxkcyA9IFtdO1xuY29uc3QgRm9ybVN0YXRlID0gRm9ybXMuRm9ybVN0YXRlLkluc3RhbmNlO1xuY29uc3Qgc2V0RmllbGQgPSAoZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgbGV0IG5hbWUgPSBmaWVsZC5wcm9wKCduYW1lJyk7XG4gICAgbGV0IHRhZyA9IGZpZWxkLnByb3AoJ3RhZ05hbWUnKS50b0xvd2VyQ2FzZSgpO1xuICAgIGxldCB0eXBlID0gZmllbGQucHJvcCgndHlwZScpO1xuXG4gICAgZmllbGRzLnB1c2gobmFtZSk7XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgICAgIGZpZWxkLnZhbCh2YWx1ZSk7XG4gICAgICAgICAgICBmaWVsZC5kYXRhKCdzZWxlY3RpemUnKS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICBmaWVsZC50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgICAgICAgICAgIGxldCBzdHJWYWx1ZSA9IHZhbHVlID8gJzEnIDogJzAnO1xuICAgICAgICAgICAgICAgIGZpZWxkLmZpbHRlcigoaW5kZXgsIHJhZGlvKSA9PiAkKHJhZGlvKS52YWwoKSA9PT0gc3RyVmFsdWUpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3AoJ2NoZWNrZWQnLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZC52YWwodmFsdWUpO1xuICAgICAgICAgICAgZmllbGQudHJpZ2dlcigna2V5dXAnKTtcbiAgICB9XG59O1xuXG5ib2R5Lm9uKCdjbGljaycsICdbZGF0YS1wcmVzZXQtdmFsdWVzXScsIChldmVudCkgPT4ge1xuICAgIGxldCB0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgIGxldCBkYXRhID0gdGFyZ2V0LmRhdGEoJ3ByZXNldC12YWx1ZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW3NlY3Rpb25dID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YVtzZWN0aW9uXSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBsZXQgZmllbGQgPSAkKGBbbmFtZT1cImRhdGFbd2hpdGVsYWJlbF1bY29sb3Jfc2NoZW1lXVske3NlY3Rpb259XVske2tleX1dXCJdLCBbbmFtZT1cImRhdGFbJHtzZWN0aW9ufV1bJHtrZXl9XVwiXWApO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gZGF0YVtzZWN0aW9uXVtrZXldO1xuICAgICAgICAgICAgc2V0RmllbGQoZmllbGQsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcblxuYm9keS5vbignY2xpY2snLCAnW2RhdGEtcmVzZXQtc2Nzc10nLCAoZXZlbnQpID0+IHtcbiAgICBldmVudCAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGxldCBlbGVtZW50ID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICBsZXQgbGlua3MgPSAkKCdsaW5rW2lkXj1hZG1pbi1wcm8tcHJldmlldy1dJyk7XG5cbiAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgIGxpbmtzLnJlbW92ZSgpO1xuXG4gICAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IEZvcm1TdGF0ZS5sb2FkU3RhdGUuZ2V0KGZpZWxkKTtcbiAgICAgICAgc2V0RmllbGQoJChgW25hbWU9XCIke2ZpZWxkfVwiXWApLCB2YWx1ZSk7XG4gICAgfSk7XG4gICAgZmllbGRzID0gW107XG59KTtcblxuLy8gSG9yaXpvbnRhbCBTY3JvbGwgRnVuY3Rpb25hbGl0eVxuJC5mbi5oc2Nyb2xsYXJyb3dzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHtcblxuICAgICAgICBsZXQgbmF2TmV4dCA9ICQoJzxhIGNsYXNzPVwibmF2LW5leHQgaGlkZVwiPjwvYT4nKTtcbiAgICAgICAgbGV0IG5hdlByZXYgPSAkKCc8YSBjbGFzcz1cIm5hdi1wcmV2IGhpZGVcIj48L2E+Jyk7XG4gICAgICAgIGxldCBzY3JvbGxUaW1lID0gbnVsbDtcbiAgICAgICAgbGV0IHJlc2l6ZVRpbWUgPSBudWxsO1xuICAgICAgICBsZXQgc2Nyb2xsaW5nID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGVsbV93ID0gMDtcbiAgICAgICAgbGV0IGVsZW1fZGF0YV93ID0gMDtcbiAgICAgICAgbGV0IG1heF9zY3JvbGwgPSAwO1xuICAgICAgICBsZXQgaW5jX3Njcm9sbCA9IDA7XG5cbiAgICAgICAgbGV0IGNhbGNEYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBlbG1fdyA9IGVsZW0ud2lkdGgoKTtcbiAgICAgICAgICAgIGVsZW1fZGF0YV93ID0gZWxlbV9kYXRhLmdldCgwKS5zY3JvbGxXaWR0aDtcbiAgICAgICAgICAgIG1heF9zY3JvbGwgPSBlbGVtX2RhdGFfdyAtIGVsbV93O1xuICAgICAgICAgICAgaW5jX3Njcm9sbCA9IGVsbV93ICogMC4zOyAvLyAyMCVcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgcmV2YWxpZGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY2FsY0RhdGEoKTtcbiAgICAgICAgICAgIHN0YXRlTmF2cygpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBydW4gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNhbGNEYXRhKCk7XG4gICAgICAgICAgICBzZXR1cE5hdnMoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgc2V0dXBOYXZzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGVsZW0ucGFyZW50KCkucHJlcGVuZChuYXZOZXh0KTtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50KCkucHJlcGVuZChuYXZQcmV2KTtcbiAgICAgICAgICAgIG5hdk5leHQub24oJ2NsaWNrJywgbmV4dCk7XG4gICAgICAgICAgICBuYXZQcmV2Lm9uKCdjbGljaycsIHByZXYpO1xuICAgICAgICAgICAgc3RhdGVOYXZzKCk7XG5cbiAgICAgICAgICAgICQoZWxlbSkuc2Nyb2xsKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICghc2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChzY3JvbGxUaW1lKTtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVGltZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZU5hdnMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocmVzaXplVGltZSk7XG4gICAgICAgICAgICAgICAgcmVzaXplVGltZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGUoKTtcbiAgICAgICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHN0YXRlTmF2cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRfc2Nyb2xsID0gZWxlbS5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudF9zY3JvbGwgPCBtYXhfc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgbmF2TmV4dC5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYXZOZXh0LmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudF9zY3JvbGwgPiAwKSB7XG4gICAgICAgICAgICAgICAgbmF2UHJldi5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuYXZQcmV2LmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY3JvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgbmV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRfc2Nyb2xsID0gZWxlbS5zY3JvbGxMZWZ0KCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudF9zY3JvbGwgPCBtYXhfc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbGVtLnN0b3AoKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogKGN1cnJlbnRfc2Nyb2xsICsgaW5jX3Njcm9sbClcbiAgICAgICAgICAgICAgICB9LCBzdGF0ZU5hdnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBwcmV2ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudF9zY3JvbGwgPSBlbGVtLnNjcm9sbExlZnQoKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50X3Njcm9sbCA+IDApIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsZW0uc3RvcCgpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiAoY3VycmVudF9zY3JvbGwgLSBpbmNfc2Nyb2xsKVxuICAgICAgICAgICAgICAgIH0sIHN0YXRlTmF2cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGVsZW0gPSAkKHRoaXMpO1xuICAgICAgICBsZXQgZWxlbV9kYXRhID0gJCgnOmZpcnN0LWNoaWxkJywgZWxlbSk7XG4gICAgICAgIHJ1bigpO1xuXG4gICAgfSk7XG59O1xuXG4kKGRvY3VtZW50KS5yZWFkeSgoKSA9PiB7XG4gICAgJCgnLmpxdWVyeS1ob3Jpem9udGFsLXNjcm9sbCcpLmhzY3JvbGxhcnJvd3MoKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/whitelabel/presets.js\n");
/***/ }),
/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
/*!***************************************************!*\
!*** ./node_modules/moment/locale/ sync ^\.\/.*$ ***!
\***************************************************/
/*! default exports */
/*! exports [not provided] [no usage info] */
/*! runtime requirements: module, __webpack_require__.o, __webpack_require__ */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var map = {
"./af": "./node_modules/moment/locale/af.js",
"./af.js": "./node_modules/moment/locale/af.js",
"./ar": "./node_modules/moment/locale/ar.js",
"./ar-dz": "./node_modules/moment/locale/ar-dz.js",
"./ar-dz.js": "./node_modules/moment/locale/ar-dz.js",
"./ar-kw": "./node_modules/moment/locale/ar-kw.js",
"./ar-kw.js": "./node_modules/moment/locale/ar-kw.js",
"./ar-ly": "./node_modules/moment/locale/ar-ly.js",
"./ar-ly.js": "./node_modules/moment/locale/ar-ly.js",
"./ar-ma": "./node_modules/moment/locale/ar-ma.js",
"./ar-ma.js": "./node_modules/moment/locale/ar-ma.js",
"./ar-sa": "./node_modules/moment/locale/ar-sa.js",
"./ar-sa.js": "./node_modules/moment/locale/ar-sa.js",
"./ar-tn": "./node_modules/moment/locale/ar-tn.js",
"./ar-tn.js": "./node_modules/moment/locale/ar-tn.js",
"./ar.js": "./node_modules/moment/locale/ar.js",
"./az": "./node_modules/moment/locale/az.js",
"./az.js": "./node_modules/moment/locale/az.js",
"./be": "./node_modules/moment/locale/be.js",
"./be.js": "./node_modules/moment/locale/be.js",
"./bg": "./node_modules/moment/locale/bg.js",
"./bg.js": "./node_modules/moment/locale/bg.js",
"./bm": "./node_modules/moment/locale/bm.js",
"./bm.js": "./node_modules/moment/locale/bm.js",
"./bn": "./node_modules/moment/locale/bn.js",
"./bn-bd": "./node_modules/moment/locale/bn-bd.js",
"./bn-bd.js": "./node_modules/moment/locale/bn-bd.js",
"./bn.js": "./node_modules/moment/locale/bn.js",
"./bo": "./node_modules/moment/locale/bo.js",
"./bo.js": "./node_modules/moment/locale/bo.js",
"./br": "./node_modules/moment/locale/br.js",
"./br.js": "./node_modules/moment/locale/br.js",
"./bs": "./node_modules/moment/locale/bs.js",
"./bs.js": "./node_modules/moment/locale/bs.js",
"./ca": "./node_modules/moment/locale/ca.js",
"./ca.js": "./node_modules/moment/locale/ca.js",
"./cs": "./node_modules/moment/locale/cs.js",
"./cs.js": "./node_modules/moment/locale/cs.js",
"./cv": "./node_modules/moment/locale/cv.js",
"./cv.js": "./node_modules/moment/locale/cv.js",
"./cy": "./node_modules/moment/locale/cy.js",
"./cy.js": "./node_modules/moment/locale/cy.js",
"./da": "./node_modules/moment/locale/da.js",
"./da.js": "./node_modules/moment/locale/da.js",
"./de": "./node_modules/moment/locale/de.js",
"./de-at": "./node_modules/moment/locale/de-at.js",
"./de-at.js": "./node_modules/moment/locale/de-at.js",
"./de-ch": "./node_modules/moment/locale/de-ch.js",
"./de-ch.js": "./node_modules/moment/locale/de-ch.js",
"./de.js": "./node_modules/moment/locale/de.js",
"./dv": "./node_modules/moment/locale/dv.js",
"./dv.js": "./node_modules/moment/locale/dv.js",
"./el": "./node_modules/moment/locale/el.js",
"./el.js": "./node_modules/moment/locale/el.js",
"./en-au": "./node_modules/moment/locale/en-au.js",
"./en-au.js": "./node_modules/moment/locale/en-au.js",
"./en-ca": "./node_modules/moment/locale/en-ca.js",
"./en-ca.js": "./node_modules/moment/locale/en-ca.js",
"./en-gb": "./node_modules/moment/locale/en-gb.js",
"./en-gb.js": "./node_modules/moment/locale/en-gb.js",
"./en-ie": "./node_modules/moment/locale/en-ie.js",
"./en-ie.js": "./node_modules/moment/locale/en-ie.js",
"./en-il": "./node_modules/moment/locale/en-il.js",
"./en-il.js": "./node_modules/moment/locale/en-il.js",
"./en-in": "./node_modules/moment/locale/en-in.js",
"./en-in.js": "./node_modules/moment/locale/en-in.js",
"./en-nz": "./node_modules/moment/locale/en-nz.js",
"./en-nz.js": "./node_modules/moment/locale/en-nz.js",
"./en-sg": "./node_modules/moment/locale/en-sg.js",
"./en-sg.js": "./node_modules/moment/locale/en-sg.js",
"./eo": "./node_modules/moment/locale/eo.js",
"./eo.js": "./node_modules/moment/locale/eo.js",
"./es": "./node_modules/moment/locale/es.js",
"./es-do": "./node_modules/moment/locale/es-do.js",
"./es-do.js": "./node_modules/moment/locale/es-do.js",
"./es-mx": "./node_modules/moment/locale/es-mx.js",
"./es-mx.js": "./node_modules/moment/locale/es-mx.js",
"./es-us": "./node_modules/moment/locale/es-us.js",
"./es-us.js": "./node_modules/moment/locale/es-us.js",
"./es.js": "./node_modules/moment/locale/es.js",
"./et": "./node_modules/moment/locale/et.js",
"./et.js": "./node_modules/moment/locale/et.js",
"./eu": "./node_modules/moment/locale/eu.js",
"./eu.js": "./node_modules/moment/locale/eu.js",
"./fa": "./node_modules/moment/locale/fa.js",
"./fa.js": "./node_modules/moment/locale/fa.js",
"./fi": "./node_modules/moment/locale/fi.js",
"./fi.js": "./node_modules/moment/locale/fi.js",
"./fil": "./node_modules/moment/locale/fil.js",
"./fil.js": "./node_modules/moment/locale/fil.js",
"./fo": "./node_modules/moment/locale/fo.js",
"./fo.js": "./node_modules/moment/locale/fo.js",
"./fr": "./node_modules/moment/locale/fr.js",
"./fr-ca": "./node_modules/moment/locale/fr-ca.js",
"./fr-ca.js": "./node_modules/moment/locale/fr-ca.js",
"./fr-ch": "./node_modules/moment/locale/fr-ch.js",
"./fr-ch.js": "./node_modules/moment/locale/fr-ch.js",
"./fr.js": "./node_modules/moment/locale/fr.js",
"./fy": "./node_modules/moment/locale/fy.js",
"./fy.js": "./node_modules/moment/locale/fy.js",
"./ga": "./node_modules/moment/locale/ga.js",
"./ga.js": "./node_modules/moment/locale/ga.js",
"./gd": "./node_modules/moment/locale/gd.js",
"./gd.js": "./node_modules/moment/locale/gd.js",
"./gl": "./node_modules/moment/locale/gl.js",
"./gl.js": "./node_modules/moment/locale/gl.js",
"./gom-deva": "./node_modules/moment/locale/gom-deva.js",
"./gom-deva.js": "./node_modules/moment/locale/gom-deva.js",
"./gom-latn": "./node_modules/moment/locale/gom-latn.js",
"./gom-latn.js": "./node_modules/moment/locale/gom-latn.js",
"./gu": "./node_modules/moment/locale/gu.js",
"./gu.js": "./node_modules/moment/locale/gu.js",
"./he": "./node_modules/moment/locale/he.js",
"./he.js": "./node_modules/moment/locale/he.js",
"./hi": "./node_modules/moment/locale/hi.js",
"./hi.js": "./node_modules/moment/locale/hi.js",
"./hr": "./node_modules/moment/locale/hr.js",
"./hr.js": "./node_modules/moment/locale/hr.js",
"./hu": "./node_modules/moment/locale/hu.js",
"./hu.js": "./node_modules/moment/locale/hu.js",
"./hy-am": "./node_modules/moment/locale/hy-am.js",
"./hy-am.js": "./node_modules/moment/locale/hy-am.js",
"./id": "./node_modules/moment/locale/id.js",
"./id.js": "./node_modules/moment/locale/id.js",
"./is": "./node_modules/moment/locale/is.js",
"./is.js": "./node_modules/moment/locale/is.js",
"./it": "./node_modules/moment/locale/it.js",
"./it-ch": "./node_modules/moment/locale/it-ch.js",
"./it-ch.js": "./node_modules/moment/locale/it-ch.js",
"./it.js": "./node_modules/moment/locale/it.js",
"./ja": "./node_modules/moment/locale/ja.js",
"./ja.js": "./node_modules/moment/locale/ja.js",
"./jv": "./node_modules/moment/locale/jv.js",
"./jv.js": "./node_modules/moment/locale/jv.js",
"./ka": "./node_modules/moment/locale/ka.js",
"./ka.js": "./node_modules/moment/locale/ka.js",
"./kk": "./node_modules/moment/locale/kk.js",
"./kk.js": "./node_modules/moment/locale/kk.js",
"./km": "./node_modules/moment/locale/km.js",
"./km.js": "./node_modules/moment/locale/km.js",
"./kn": "./node_modules/moment/locale/kn.js",
"./kn.js": "./node_modules/moment/locale/kn.js",
"./ko": "./node_modules/moment/locale/ko.js",
"./ko.js": "./node_modules/moment/locale/ko.js",
"./ku": "./node_modules/moment/locale/ku.js",
"./ku.js": "./node_modules/moment/locale/ku.js",
"./ky": "./node_modules/moment/locale/ky.js",
"./ky.js": "./node_modules/moment/locale/ky.js",
"./lb": "./node_modules/moment/locale/lb.js",
"./lb.js": "./node_modules/moment/locale/lb.js",
"./lo": "./node_modules/moment/locale/lo.js",
"./lo.js": "./node_modules/moment/locale/lo.js",
"./lt": "./node_modules/moment/locale/lt.js",
"./lt.js": "./node_modules/moment/locale/lt.js",
"./lv": "./node_modules/moment/locale/lv.js",
"./lv.js": "./node_modules/moment/locale/lv.js",
"./me": "./node_modules/moment/locale/me.js",
"./me.js": "./node_modules/moment/locale/me.js",
"./mi": "./node_modules/moment/locale/mi.js",
"./mi.js": "./node_modules/moment/locale/mi.js",
"./mk": "./node_modules/moment/locale/mk.js",
"./mk.js": "./node_modules/moment/locale/mk.js",
"./ml": "./node_modules/moment/locale/ml.js",
"./ml.js": "./node_modules/moment/locale/ml.js",
"./mn": "./node_modules/moment/locale/mn.js",
"./mn.js": "./node_modules/moment/locale/mn.js",
"./mr": "./node_modules/moment/locale/mr.js",
"./mr.js": "./node_modules/moment/locale/mr.js",
"./ms": "./node_modules/moment/locale/ms.js",
"./ms-my": "./node_modules/moment/locale/ms-my.js",
"./ms-my.js": "./node_modules/moment/locale/ms-my.js",
"./ms.js": "./node_modules/moment/locale/ms.js",
"./mt": "./node_modules/moment/locale/mt.js",
"./mt.js": "./node_modules/moment/locale/mt.js",
"./my": "./node_modules/moment/locale/my.js",
"./my.js": "./node_modules/moment/locale/my.js",
"./nb": "./node_modules/moment/locale/nb.js",
"./nb.js": "./node_modules/moment/locale/nb.js",
"./ne": "./node_modules/moment/locale/ne.js",
"./ne.js": "./node_modules/moment/locale/ne.js",
"./nl": "./node_modules/moment/locale/nl.js",
"./nl-be": "./node_modules/moment/locale/nl-be.js",
"./nl-be.js": "./node_modules/moment/locale/nl-be.js",
"./nl.js": "./node_modules/moment/locale/nl.js",
"./nn": "./node_modules/moment/locale/nn.js",
"./nn.js": "./node_modules/moment/locale/nn.js",
"./oc-lnc": "./node_modules/moment/locale/oc-lnc.js",
"./oc-lnc.js": "./node_modules/moment/locale/oc-lnc.js",
"./pa-in": "./node_modules/moment/locale/pa-in.js",
"./pa-in.js": "./node_modules/moment/locale/pa-in.js",
"./pl": "./node_modules/moment/locale/pl.js",
"./pl.js": "./node_modules/moment/locale/pl.js",
"./pt": "./node_modules/moment/locale/pt.js",
"./pt-br": "./node_modules/moment/locale/pt-br.js",
"./pt-br.js": "./node_modules/moment/locale/pt-br.js",
"./pt.js": "./node_modules/moment/locale/pt.js",
"./ro": "./node_modules/moment/locale/ro.js",
"./ro.js": "./node_modules/moment/locale/ro.js",
"./ru": "./node_modules/moment/locale/ru.js",
"./ru.js": "./node_modules/moment/locale/ru.js",
"./sd": "./node_modules/moment/locale/sd.js",
"./sd.js": "./node_modules/moment/locale/sd.js",
"./se": "./node_modules/moment/locale/se.js",
"./se.js": "./node_modules/moment/locale/se.js",
"./si": "./node_modules/moment/locale/si.js",
"./si.js": "./node_modules/moment/locale/si.js",
"./sk": "./node_modules/moment/locale/sk.js",
"./sk.js": "./node_modules/moment/locale/sk.js",
"./sl": "./node_modules/moment/locale/sl.js",
"./sl.js": "./node_modules/moment/locale/sl.js",
"./sq": "./node_modules/moment/locale/sq.js",
"./sq.js": "./node_modules/moment/locale/sq.js",
"./sr": "./node_modules/moment/locale/sr.js",
"./sr-cyrl": "./node_modules/moment/locale/sr-cyrl.js",
"./sr-cyrl.js": "./node_modules/moment/locale/sr-cyrl.js",
"./sr.js": "./node_modules/moment/locale/sr.js",
"./ss": "./node_modules/moment/locale/ss.js",
"./ss.js": "./node_modules/moment/locale/ss.js",
"./sv": "./node_modules/moment/locale/sv.js",
"./sv.js": "./node_modules/moment/locale/sv.js",
"./sw": "./node_modules/moment/locale/sw.js",
"./sw.js": "./node_modules/moment/locale/sw.js",
"./ta": "./node_modules/moment/locale/ta.js",
"./ta.js": "./node_modules/moment/locale/ta.js",
"./te": "./node_modules/moment/locale/te.js",
"./te.js": "./node_modules/moment/locale/te.js",
"./tet": "./node_modules/moment/locale/tet.js",
"./tet.js": "./node_modules/moment/locale/tet.js",
"./tg": "./node_modules/moment/locale/tg.js",
"./tg.js": "./node_modules/moment/locale/tg.js",
"./th": "./node_modules/moment/locale/th.js",
"./th.js": "./node_modules/moment/locale/th.js",
"./tk": "./node_modules/moment/locale/tk.js",
"./tk.js": "./node_modules/moment/locale/tk.js",
"./tl-ph": "./node_modules/moment/locale/tl-ph.js",
"./tl-ph.js": "./node_modules/moment/locale/tl-ph.js",
"./tlh": "./node_modules/moment/locale/tlh.js",
"./tlh.js": "./node_modules/moment/locale/tlh.js",
"./tr": "./node_modules/moment/locale/tr.js",
"./tr.js": "./node_modules/moment/locale/tr.js",
"./tzl": "./node_modules/moment/locale/tzl.js",
"./tzl.js": "./node_modules/moment/locale/tzl.js",
"./tzm": "./node_modules/moment/locale/tzm.js",
"./tzm-latn": "./node_modules/moment/locale/tzm-latn.js",
"./tzm-latn.js": "./node_modules/moment/locale/tzm-latn.js",
"./tzm.js": "./node_modules/moment/locale/tzm.js",
"./ug-cn": "./node_modules/moment/locale/ug-cn.js",
"./ug-cn.js": "./node_modules/moment/locale/ug-cn.js",
"./uk": "./node_modules/moment/locale/uk.js",
"./uk.js": "./node_modules/moment/locale/uk.js",
"./ur": "./node_modules/moment/locale/ur.js",
"./ur.js": "./node_modules/moment/locale/ur.js",
"./uz": "./node_modules/moment/locale/uz.js",
"./uz-latn": "./node_modules/moment/locale/uz-latn.js",
"./uz-latn.js": "./node_modules/moment/locale/uz-latn.js",
"./uz.js": "./node_modules/moment/locale/uz.js",
"./vi": "./node_modules/moment/locale/vi.js",
"./vi.js": "./node_modules/moment/locale/vi.js",
"./x-pseudo": "./node_modules/moment/locale/x-pseudo.js",
"./x-pseudo.js": "./node_modules/moment/locale/x-pseudo.js",
"./yo": "./node_modules/moment/locale/yo.js",
"./yo.js": "./node_modules/moment/locale/yo.js",
"./zh-cn": "./node_modules/moment/locale/zh-cn.js",
"./zh-cn.js": "./node_modules/moment/locale/zh-cn.js",
"./zh-hk": "./node_modules/moment/locale/zh-hk.js",
"./zh-hk.js": "./node_modules/moment/locale/zh-hk.js",
"./zh-mo": "./node_modules/moment/locale/zh-mo.js",
"./zh-mo.js": "./node_modules/moment/locale/zh-mo.js",
"./zh-tw": "./node_modules/moment/locale/zh-tw.js",
"./zh-tw.js": "./node_modules/moment/locale/zh-tw.js"
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = "./node_modules/moment/locale sync recursive ^\\.\\/.*$";
/***/ }),
/***/ "grav-config":
/*!****************************!*\
!*** external "GravAdmin" ***!
\****************************/
/*! dynamic exports */
/*! export __esModule [maybe provided (runtime-defined)] [no usage info] [provision prevents renaming (no use info)] */
/*! other exports [maybe provided (runtime-defined)] [no usage info] */
/*! runtime requirements: module */
/***/ ((module) => {
"use strict";
module.exports = GravAdmin;
/***/ }),
/***/ "jquery":
/*!*************************!*\
!*** external "jQuery" ***!
\*************************/
/*! dynamic exports */
/*! export __esModule [maybe provided (runtime-defined)] [no usage info] [provision prevents renaming (no use info)] */
/*! other exports [maybe provided (runtime-defined)] [no usage info] */
/*! runtime requirements: module */
/***/ ((module) => {
"use strict";
module.exports = jQuery;
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(__webpack_module_cache__[moduleId]) {
/******/ return __webpack_module_cache__[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ loaded: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = __webpack_modules__;
/******/
/************************************************************************/
/******/ /* webpack/runtime/amd define */
/******/ (() => {
/******/ __webpack_require__.amdD = function () {
/******/ throw new Error('define cannot be used indirect');
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => module['default'] :
/******/ () => module;
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/global */
/******/ (() => {
/******/ __webpack_require__.g = (function() {
/******/ if (typeof globalThis === 'object') return globalThis;
/******/ try {
/******/ return this || new Function('return this')();
/******/ } catch (e) {
/******/ if (typeof window === 'object') return window;
/******/ }
/******/ })();
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/node module decorator */
/******/ (() => {
/******/ __webpack_require__.nmd = (module) => {
/******/ module.paths = [];
/******/ if (!module.children) module.children = [];
/******/ return module;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/jsonp chunk loading */
/******/ (() => {
/******/ // no baseURI
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app": 0
/******/ };
/******/
/******/ var deferredModules = [
/******/ ["./app/main.js","vendor"]
/******/ ];
/******/ // no chunk on demand loading
/******/
/******/ // no prefetching
/******/
/******/ // no preloaded
/******/
/******/ // no HMR
/******/
/******/ // no HMR manifest
/******/
/******/ var checkDeferredModules = () => {
/******/
/******/ };
/******/ function checkDeferredModulesImpl() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/ if(deferredModules.length === 0) {
/******/ __webpack_require__.x();
/******/ __webpack_require__.x = () => {
/******/
/******/ }
/******/ }
/******/ return result;
/******/ }
/******/ __webpack_require__.x = () => {
/******/ // reset startup function so it can be called again when more startup code is added
/******/ __webpack_require__.x = () => {
/******/
/******/ }
/******/ chunkLoadingGlobal = chunkLoadingGlobal.slice();
/******/ for(var i = 0; i < chunkLoadingGlobal.length; i++) webpackJsonpCallback(chunkLoadingGlobal[i]);
/******/ return (checkDeferredModules = checkDeferredModulesImpl)();
/******/ };
/******/
/******/ // install a JSONP callback for chunk loading
/******/ var webpackJsonpCallback = (data) => {
/******/ var [chunkIds, moreModules, runtime, executeModules] = data;
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(runtime) runtime(__webpack_require__);
/******/ parentChunkLoadingFunction(data);
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ if(executeModules) deferredModules.push.apply(deferredModules, executeModules);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ }
/******/
/******/ var chunkLoadingGlobal = self["webpackChunkGrav"] = self["webpackChunkGrav"] || [];
/******/ var parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);
/******/ chunkLoadingGlobal.push = webpackJsonpCallback;
/******/ })();
/******/
/************************************************************************/
/******/ // module exports must be returned from runtime so entry inlining is disabled
/******/ // run startup
/******/ return __webpack_require__.x();
/******/ })()
;