{"version":3,"file":"index-BTFDl9f-.js","sources":["../../../node_modules/choices.js/public/assets/scripts/choices.js","../../../node_modules/@uppy/utils/lib/Translator.js","../../../node_modules/namespace-emitter/index.js","../../../node_modules/nanoid/non-secure/index.js","../../../node_modules/lodash/now.js","../../../node_modules/lodash/debounce.js","../../../node_modules/lodash/throttle.js","../../../node_modules/@uppy/store-default/lib/index.js","../../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js","../../../node_modules/@uppy/utils/lib/mimeTypes.js","../../../node_modules/@uppy/utils/lib/getFileType.js","../../../node_modules/@uppy/utils/lib/generateFileID.js","../../../node_modules/@uppy/core/lib/supportsUploadProgress.js","../../../node_modules/@uppy/core/lib/getFileName.js","../../../node_modules/@uppy/utils/lib/getTimeStamp.js","../../../node_modules/@uppy/core/lib/loggers.js","../../../node_modules/@transloadit/prettier-bytes/dist/prettierBytes.js","../../../node_modules/wildcard/index.js","../../../node_modules/mime-match/index.js","../../../node_modules/@uppy/core/lib/Restricter.js","../../../node_modules/@uppy/core/lib/locale.js","../../../node_modules/@uppy/core/lib/Uppy.js","../../../node_modules/@uppy/core/lib/BasePlugin.js","../../../node_modules/@uppy/utils/lib/UserFacingApiError.js","../../../node_modules/retry/lib/retry_operation.js","../../../node_modules/retry/lib/retry.js","../../../node_modules/retry/index.js","../../../node_modules/is-network-error/index.js","../../../node_modules/p-retry/index.js","../../../node_modules/@uppy/utils/lib/NetworkError.js","../../../node_modules/@uppy/utils/lib/fetchWithNetworkError.js","../../../node_modules/@uppy/utils/lib/hasProperty.js","../../../node_modules/@uppy/utils/lib/ErrorWithCause.js","../../../node_modules/@uppy/utils/lib/getSocketHost.js","../../../node_modules/@uppy/companion-client/lib/AuthError.js","../../../node_modules/@uppy/companion-client/lib/RequestClient.js","../../../node_modules/@uppy/core/lib/EventManager.js","../../../node_modules/@uppy/utils/lib/RateLimitedQueue.js","../../../node_modules/@uppy/utils/lib/fileFilters.js","../../../node_modules/@uppy/utils/lib/AbortController.js","../../../node_modules/@uppy/utils/lib/getAllowedMetaFields.js","../../../node_modules/@uppy/aws-s3/lib/MultipartUploader.js","../../../node_modules/@uppy/aws-s3/lib/utils.js","../../../node_modules/@uppy/aws-s3/lib/createSignedURL.js","../../../node_modules/@uppy/aws-s3/lib/HTTPCommunicationQueue.js","../../../node_modules/@uppy/aws-s3/lib/index.js"],"sourcesContent":["/*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addChoice = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n groupId = _a.groupId,\n disabled = _a.disabled,\n elementId = _a.elementId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addChoice = addChoice;\nvar filterChoices = function (results) {\n return {\n type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\nexports.filterChoices = filterChoices;\nvar activateChoices = function (active) {\n if (active === void 0) {\n active = true;\n }\n return {\n type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\nexports.activateChoices = activateChoices;\nvar clearChoices = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n };\n};\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addGroup = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addGroup = function (_a) {\n var value = _a.value,\n id = _a.id,\n active = _a.active,\n disabled = _a.disabled;\n return {\n type: constants_1.ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addItem = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n choiceId = _a.choiceId,\n groupId = _a.groupId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addItem = addItem;\nvar removeItem = function (id, choiceId) {\n return {\n type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\nexports.removeItem = removeItem;\nvar highlightItem = function (id, highlighted) {\n return {\n type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\nvar constants_1 = __webpack_require__(883);\nvar clearAll = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_ALL\n };\n};\nexports.clearAll = clearAll;\nvar resetTo = function (state) {\n return {\n type: constants_1.ACTION_TYPES.RESET_TO,\n state: state\n };\n};\nexports.resetTo = resetTo;\nvar setIsLoading = function (isLoading) {\n return {\n type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n isLoading: isLoading\n };\n};\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\nvar choices_1 = __webpack_require__(282);\nvar groups_1 = __webpack_require__(783);\nvar items_1 = __webpack_require__(464);\nvar misc_1 = __webpack_require__(137);\nvar components_1 = __webpack_require__(520);\nvar constants_1 = __webpack_require__(883);\nvar defaults_1 = __webpack_require__(789);\nvar utils_1 = __webpack_require__(799);\nvar reducers_1 = __webpack_require__(655);\nvar store_1 = __importDefault(__webpack_require__(744));\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson<josh@joshuajohnson.co.uk>\n */\nvar Choices = /** @class */function () {\n function Choices(element, userConfig) {\n if (element === void 0) {\n element = '[data-choice]';\n }\n if (userConfig === void 0) {\n userConfig = {};\n }\n var _this = this;\n if (userConfig.allowHTML === undefined) {\n console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n }\n this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig],\n // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function (_, sourceArray) {\n return __spreadArray([], sourceArray, true);\n }\n });\n var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n this.config.renderSelectedChoices = 'auto';\n }\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n if (this._isTextElement) {\n this.passedElement = new components_1.WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new components_1.WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function (data) {\n return _this._templates.option(data);\n }\n });\n }\n this.initialised = false;\n this._store = new store_1.default();\n this._initialState = reducers_1.defaultState;\n this._currentState = reducers_1.defaultState;\n this._prevState = reducers_1.defaultState;\n this._currentValue = '';\n this._canSearch = !!this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n this._direction = this.passedElement.dir;\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n this._idNames = {\n itemChoice: 'item-choice'\n };\n if (this._isSelectElement) {\n // Assign preset groups from passed element\n this._presetGroups = this.passedElement.optionGroups;\n // Assign preset options from passed element\n this._presetOptions = this.passedElement.options;\n }\n // Assign preset choices from passed object\n this._presetChoices = this.config.choices;\n // Assign preset items from passed object first\n this._presetItems = this.config.items;\n // Add any values passed from attribute\n if (this.passedElement.value && this._isTextElement) {\n var splitValues = this.passedElement.value.split(this.config.delimiter);\n this._presetItems = this._presetItems.concat(splitValues);\n }\n // Create array of choices from option elements\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (option) {\n _this._presetChoices.push({\n value: option.value,\n label: option.innerHTML,\n selected: !!option.selected,\n disabled: option.disabled || option.parentNode.disabled,\n placeholder: option.value === '' || option.hasAttribute('placeholder'),\n customProperties: (0, utils_1.parseCustomProperties)(option.dataset.customProperties)\n });\n });\n }\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this);\n // If element has already been initialised with Choices, fail silently\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', {\n element: element\n });\n }\n this.initialised = true;\n return;\n }\n // Let's go\n this.init();\n }\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n get templates() {\n return templates_1.default;\n }\n });\n },\n enumerable: false,\n configurable: true\n });\n Choices.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this._createTemplates();\n this._createElements();\n this._createStructure();\n this._store.subscribe(this._render);\n this._render();\n this._addEventListeners();\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n if (shouldDisable) {\n this.disable();\n }\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit;\n // Run callback if it is a function\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n this._templates = templates_1.default;\n this.initialised = false;\n };\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n return this;\n };\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n return this;\n };\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, true));\n if (runEvent) {\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n return this;\n };\n Choices.prototype.unhighlightItem = function (item) {\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, false));\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n Choices.prototype.highlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.highlightItem(item);\n });\n return this;\n };\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.unhighlightItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n this._store.activeItems.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n if (runEvent === void 0) {\n runEvent = false;\n }\n this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n return this;\n };\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n if (this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.show();\n _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n if (!preventInputFocus && _this._canSearch) {\n _this.input.focus();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n });\n return this;\n };\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n if (!this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n _this.containerOuter.close();\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n _this.input.blur();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n });\n return this;\n };\n Choices.prototype.getValue = function (valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n return this._isSelectOneElement ? values[0] : values;\n };\n Choices.prototype.setValue = function (items) {\n var _this = this;\n if (!this.initialised) {\n return this;\n }\n items.forEach(function (value) {\n return _this._setChoiceOrItem(value);\n });\n return this;\n };\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n if (!this.initialised || this._isTextElement) {\n return this;\n }\n // If only one value has been passed, convert to array\n var choiceValue = Array.isArray(value) ? value : [value];\n // Loop through each value and\n choiceValue.forEach(function (val) {\n return _this._findAndSelectChoiceByValue(val);\n });\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this = this;\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n if (value === void 0) {\n value = 'value';\n }\n if (label === void 0) {\n label = 'label';\n }\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n }\n // Clear choices if needed\n if (replaceChoices) {\n this.clearChoices();\n }\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this._handleLoadingState(true);\n }).then(function () {\n return fetcher_1;\n }).then(function (data) {\n return _this.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this._handleLoadingState(false);\n }).then(function () {\n return _this;\n });\n }\n // function returned something else than promise, let's check if it's an array of choices\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n }\n // recursion with results, it's sync and choices were cleared already\n return this.setChoices(fetcher_1, value, label, false);\n }\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n this.containerOuter.removeLoadingState();\n this._startLoading();\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this._addGroup({\n id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n var choice = groupOrChoice;\n _this._addChoice({\n value: choice[value],\n label: choice[label],\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: choice.customProperties\n });\n }\n });\n this._stopLoading();\n return this;\n };\n Choices.prototype.clearChoices = function () {\n this._store.dispatch((0, choices_1.clearChoices)());\n return this;\n };\n Choices.prototype.clearStore = function () {\n this._store.dispatch((0, misc_1.clearAll)());\n return this;\n };\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n return this;\n };\n Choices.prototype._render = function () {\n if (this._store.isLoading()) {\n return;\n }\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n if (!stateChanged) {\n return;\n }\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n if (shouldRenderItems) {\n this._renderItems();\n }\n this._prevState = this._currentState;\n };\n Choices.prototype._renderChoices = function () {\n var _this = this;\n var _a = this._store,\n activeGroups = _a.activeGroups,\n activeChoices = _a.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this.choiceList.scrollToTop();\n });\n }\n // If we have grouped options\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n }\n // If we have choices to show\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, this.input.value);\n // ...and we can select them\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n this._highlightChoice();\n } else {\n var notice = this._getTemplate('notice', canAddItem.notice);\n this.choiceList.append(notice);\n }\n } else {\n // Otherwise show a notice\n var dropdownItem = void 0;\n var notice = void 0;\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n this.choiceList.append(dropdownItem);\n }\n };\n Choices.prototype._renderItems = function () {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear();\n // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n var itemListFragment = this._createItemsFragment(activeItems);\n // If we have items to add, append them\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n var getGroupChoices = function (group) {\n return choices.filter(function (choice) {\n if (_this._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n };\n // If sorting is enabled, filter groups\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this._getTemplate('choiceGroup', group);\n fragment.appendChild(dropdownGroup);\n _this._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n if (withinGroup === void 0) {\n withinGroup = false;\n }\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n var _a = this.config,\n renderSelectedChoices = _a.renderSelectedChoices,\n searchResultLimit = _a.searchResultLimit,\n renderChoiceLimit = _a.renderChoiceLimit;\n var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n var appendChoice = function (choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n if (shouldRender) {\n var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n fragment.appendChild(dropdownItem);\n }\n };\n var rendererableChoices = choices;\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n }\n // Split array into placeholders and \"normal\" choices\n var _b = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _b.placeholderChoices,\n normalChoices = _b.normalChoices;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n var choiceLimit = rendererableChoices.length;\n // Prepend placeholeder\n var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n }\n // Add each choice to dropdown within range\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n return fragment;\n };\n Choices.prototype._createItemsFragment = function (items, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n // Create fragment to add elements to\n var _a = this.config,\n shouldSortItems = _a.shouldSortItems,\n sorter = _a.sorter,\n removeItemButton = _a.removeItemButton;\n // If sorting is enabled, filter items\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(this.config.delimiter);\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n var addItemToFragment = function (item) {\n // Create new list element\n var listItem = _this._getTemplate('item', item, removeItemButton);\n // Append it to list\n fragment.appendChild(listItem);\n };\n // Add each list item to list\n items.forEach(addItemToFragment);\n return fragment;\n };\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n value: value\n });\n };\n Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n this._triggerChange(placeholderChoice.value);\n };\n Choices.prototype._handleButtonAction = function (activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n var itemId = element.parentNode && element.parentNode.dataset.id;\n var itemToRemove = itemId && activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n });\n if (!itemToRemove) {\n return;\n }\n // Remove item associated with button\n this._removeItem(itemToRemove);\n this._triggerChange(itemToRemove.value);\n if (this._isSelectOneElement && this._store.placeholderChoice) {\n this._selectPlaceholderChoice(this._store.placeholderChoice);\n }\n };\n Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n var _this = this;\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n var passedId = element.dataset.id;\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n activeItems.forEach(function (item) {\n if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n _this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n });\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n };\n Choices.prototype._handleChoiceAction = function (activeItems, element) {\n if (!activeItems || !element) {\n return;\n }\n // If we are clicking on an option\n var id = element.dataset.id;\n var choice = id && this._store.getChoiceById(id);\n if (!choice) {\n return;\n }\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n var hasActiveDropdown = this.dropdown.isActive;\n // Update choice keyCode\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n choice: choice\n });\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n this._triggerChange(choice.value);\n }\n }\n this.clearInput();\n // We want to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._handleBackspace = function (activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n });\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n };\n Choices.prototype._startLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(true));\n };\n Choices.prototype._stopLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(false));\n };\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n if (placeholderItem) {\n this.itemList.append(placeholderItem);\n }\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n if (this._isSelectOneElement) {\n if (placeholderItem) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n }\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n var choices = this._store.choices;\n var _a = this.config,\n searchFloor = _a.searchFloor,\n searchChoices = _a.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n });\n // Check that we have a value to search and the input was an alphanumeric character\n if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0;\n // Trigger search event\n this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n };\n Choices.prototype._canAddItem = function (activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n if (!this._isSelectOneElement) {\n var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n return {\n response: canAddItem,\n notice: notice\n };\n };\n Choices.prototype._searchChoices = function (value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n return 0;\n }\n // If new value matches the desired length and is not the same as the current value with a space\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var options = Object.assign(this.config.fuseOptions, {\n keys: __spreadArray([], this.config.searchFields, true),\n includeMatches: true\n });\n var fuse = new fuse_js_1.default(haystack, options);\n var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n this._store.dispatch((0, choices_1.filterChoices)(results));\n return results.length;\n };\n Choices.prototype._addEventListeners = function () {\n var documentElement = document.documentElement;\n // capture events - can cancel event processing or propagation\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true);\n // passive events - doesn't call `preventDefault` or `stopPropagation`\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n this.input.addEventListeners();\n };\n Choices.prototype._removeEventListeners = function () {\n var documentElement = document.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n this.input.removeEventListeners();\n };\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n // eslint-disable-next-line no-control-regex\n var wasPrintableChar = /[^\\x00-\\x1F]/.test(keyString);\n var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n A_KEY = constants_1.KEY_CODES.A_KEY,\n ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n UP_KEY = constants_1.KEY_CODES.UP_KEY,\n DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n if (!this._isTextElement && !hasActiveDropdown && wasPrintableChar) {\n this.showDropdown();\n if (!this.input.isFocussed) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += event.key.toLowerCase();\n }\n }\n switch (keyCode) {\n case A_KEY:\n return this._onSelectKey(event, hasItems);\n case ENTER_KEY:\n return this._onEnterKey(event, activeItems, hasActiveDropdown);\n case ESC_KEY:\n return this._onEscapeKey(hasActiveDropdown);\n case UP_KEY:\n case PAGE_UP_KEY:\n case DOWN_KEY:\n case PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n case DELETE_KEY:\n case BACK_KEY:\n return this._onDeleteKey(event, activeItems, hasFocusedInput);\n default:\n }\n };\n Choices.prototype._onKeyUp = function (_a) {\n var target = _a.target,\n keyCode = _a.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, value);\n var backKey = constants_1.KEY_CODES.BACK_KEY,\n deleteKey = constants_1.KEY_CODES.DELETE_KEY;\n // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n } else if (canSearch) {\n this._handleSearch(this.input.rawValue);\n }\n }\n this._canSearch = this.config.searchEnabled;\n };\n Choices.prototype._onSelectKey = function (event, hasItems) {\n var ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey;\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n var target = event.target;\n var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n var targetWasButton = target && target.hasAttribute('data-button');\n if (this._isTextElement && target && target.value) {\n var value = this.input.value;\n var canAddItem = this._canAddItem(activeItems, value);\n if (canAddItem.response) {\n this.hideDropdown(true);\n this._addItem({\n value: value\n });\n this._triggerChange(value);\n this.clearInput();\n }\n }\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n event.preventDefault();\n }\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode,\n metaKey = event.metaKey;\n var downKey = constants_1.KEY_CODES.DOWN_KEY,\n pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl = void 0;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n if (currentEl) {\n nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n event.preventDefault();\n }\n };\n Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n var target = event.target;\n // If backspace or delete key is pressed and the input has no value\n if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n this._handleBackspace(activeItems);\n event.preventDefault();\n }\n };\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n }\n // Prevents focus event firing\n event.stopPropagation();\n }\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n // If we have our mouse down on the scrollbar and are on IE11...\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n if (target === this.input.element) {\n return;\n }\n var item = target.closest('[data-button],[data-item],[data-choice]');\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n Choices.prototype._onFocus = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (!focusWasWithinContainer) {\n return;\n }\n var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.addFocusState();\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.addFocusState();\n if (target === _this.input.element) {\n _this.showDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.showDropdown(true);\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n _this.containerOuter.addFocusState();\n }\n }, _b);\n focusActions[this.passedElement.element.type]();\n };\n Choices.prototype._onBlur = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var activeItems = this._store.activeItems;\n var hasHighlightedItems_1 = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.removeFocusState();\n if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n _this.hideDropdown(true);\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n }\n }, _b);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n Choices.prototype._onFormReset = function () {\n this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n };\n Choices.prototype._highlightChoice = function (el) {\n var _this = this;\n if (el === void 0) {\n el = null;\n }\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n if (!choices.length) {\n return;\n }\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState)));\n // Remove any highlighted choices\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n el: passedEl\n });\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n Choices.prototype._addItem = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.choiceId,\n choiceId = _c === void 0 ? -1 : _c,\n _d = _a.groupId,\n groupId = _d === void 0 ? -1 : _d,\n _e = _a.customProperties,\n customProperties = _e === void 0 ? {} : _e,\n _f = _a.placeholder,\n placeholder = _f === void 0 ? false : _f,\n _g = _a.keyCode,\n keyCode = _g === void 0 ? -1 : _g;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1;\n // If a prepended value has been passed, prepend it\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n }\n // If an appended value has been passed, append it\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n this._store.dispatch((0, items_1.addItem)({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n }\n // Trigger change event\n this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null,\n keyCode: keyCode\n });\n };\n Choices.prototype._removeItem = function (item) {\n var id = item.id,\n value = item.value,\n label = item.label,\n customProperties = item.customProperties,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n if (!id || !choiceId) {\n return;\n }\n this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null\n });\n };\n Choices.prototype._addChoice = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.isSelected,\n isSelected = _c === void 0 ? false : _c,\n _d = _a.isDisabled,\n isDisabled = _d === void 0 ? false : _d,\n _e = _a.groupId,\n groupId = _e === void 0 ? -1 : _e,\n _f = _a.customProperties,\n customProperties = _f === void 0 ? {} : _f,\n _g = _a.placeholder,\n placeholder = _g === void 0 ? false : _g,\n _h = _a.keyCode,\n keyCode = _h === void 0 ? -1 : _h;\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n // Generate unique id\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n this._store.dispatch((0, choices_1.addChoice)({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n Choices.prototype._addGroup = function (_a) {\n var _this = this;\n var group = _a.group,\n id = _a.id,\n _b = _a.valueKey,\n valueKey = _b === void 0 ? 'value' : _b,\n _c = _a.labelKey,\n labelKey = _c === void 0 ? 'label' : _c;\n var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n if (groupChoices) {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n var addGroupChoices = function (choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n _this._addChoice({\n value: choice[valueKey],\n label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n Choices.prototype._getTemplate = function (template) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n };\n Choices.prototype._createTemplates = function () {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n }\n this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n };\n Choices.prototype._createElements = function () {\n this.containerOuter = new components_1.Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new components_1.Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new components_1.Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new components_1.List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new components_1.List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new components_1.Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n Choices.prototype._createStructure = function () {\n // Hide original element\n this.passedElement.conceal();\n // Wrap input in container preserving DOM ordering\n this.containerInner.wrap(this.passedElement.element);\n // Wrapper inner container with outer container\n this.containerOuter.wrap(this.containerInner.element);\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n this._startLoading();\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n this._stopLoading();\n }\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n Choices.prototype._addPredefinedGroups = function (groups) {\n var _this = this;\n // If we have a placeholder option\n var placeholderChoice = this.passedElement.placeholderOption;\n if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n groups.forEach(function (group) {\n return _this._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n Choices.prototype._addPredefinedChoices = function (choices) {\n var _this = this;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var _a = choice.value,\n value = _a === void 0 ? '' : _a,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n if (_this._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!isSelected,\n isDisabled: !!isDisabled,\n placeholder: !!placeholder,\n customProperties: customProperties\n });\n }\n } else {\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: customProperties\n });\n }\n });\n };\n Choices.prototype._addPredefinedItems = function (items) {\n var _this = this;\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n if (typeof item === 'string') {\n _this._addItem({\n value: item\n });\n }\n });\n };\n Choices.prototype._setChoiceOrItem = function (item) {\n var _this = this;\n var itemType = (0, utils_1.getType)(item).toLowerCase();\n var handleType = {\n object: function () {\n if (!item.value) {\n return;\n }\n // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function () {\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n Choices.prototype._findAndSelectChoiceByValue = function (value) {\n var _this = this;\n var choices = this._store.choices;\n // Check 'value' property exists and the choice isn't already selected\n var foundChoice = choices.find(function (choice) {\n return _this.config.valueComparer(choice.value, value);\n });\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n Choices.prototype._generatePlaceholderValue = function () {\n if (this._isSelectElement && this.passedElement.placeholderOption) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n var _a = this.config,\n placeholder = _a.placeholder,\n placeholderValue = _a.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n return null;\n };\n return Choices;\n}();\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Container = /** @class */function () {\n function Container(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Container.prototype.addEventListeners = function () {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n Container.prototype.removeEventListeners = function () {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n Container.prototype.shouldFlip = function (dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n }\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n var shouldFlip = false;\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n return shouldFlip;\n };\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Container.prototype.open = function (dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n Container.prototype.close = function () {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n Container.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Container.prototype.addFocusState = function () {\n this.element.classList.add(this.classNames.focusState);\n };\n Container.prototype.removeFocusState = function () {\n this.element.classList.remove(this.classNames.focusState);\n };\n Container.prototype.enable = function () {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n };\n Container.prototype.disable = function () {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n };\n Container.prototype.wrap = function (element) {\n (0, utils_1.wrap)(element, this.element);\n };\n Container.prototype.unwrap = function (element) {\n if (this.element.parentNode) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element);\n // Remove this element\n this.element.parentNode.removeChild(this.element);\n }\n };\n Container.prototype.addLoadingState = function () {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n Container.prototype.removeLoadingState = function () {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n Container.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Container.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Container;\n}();\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar Dropdown = /** @class */function () {\n function Dropdown(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n /**\n * Bottom position of dropdown in viewport coordinates\n */\n get: function () {\n return this.element.getBoundingClientRect().bottom;\n },\n enumerable: false,\n configurable: true\n });\n Dropdown.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n /**\n * Show dropdown to user by adding active state class\n */\n Dropdown.prototype.show = function () {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n Dropdown.prototype.hide = function () {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n return Dropdown;\n}();\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\nvar dropdown_1 = __importDefault(__webpack_require__(217));\nexports.Dropdown = dropdown_1.default;\nvar container_1 = __importDefault(__webpack_require__(613));\nexports.Container = container_1.default;\nvar input_1 = __importDefault(__webpack_require__(11));\nexports.Input = input_1.default;\nvar list_1 = __importDefault(__webpack_require__(624));\nexports.List = list_1.default;\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\nexports.WrappedInput = wrapped_input_1.default;\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Input = /** @class */function () {\n function Input(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return (0, utils_1.sanitise)(this.element.value);\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"rawValue\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n Input.prototype.addEventListeners = function () {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n Input.prototype.removeEventListeners = function () {\n this.element.removeEventListener('input', this._onInput);\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n Input.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n Input.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n if (this.element.value) {\n this.element.value = '';\n }\n if (setWidth) {\n this.setWidth();\n }\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var _a = this.element,\n style = _a.style,\n value = _a.value,\n placeholder = _a.placeholder;\n style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n style.width = \"\".concat(value.length + 1, \"ch\");\n };\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Input.prototype._onInput = function () {\n if (this.type !== constants_1.SELECT_ONE_TYPE) {\n this.setWidth();\n }\n };\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Input;\n}();\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar constants_1 = __webpack_require__(883);\nvar List = /** @class */function () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n List.prototype.clear = function () {\n this.element.innerHTML = '';\n };\n List.prototype.append = function (node) {\n this.element.appendChild(node);\n };\n List.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n List.prototype.hasChildren = function () {\n return this.element.hasChildNodes();\n };\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n if (!element) {\n return;\n }\n var listHeight = this.element.offsetHeight;\n // Scroll position of dropdown\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight;\n // Distance from bottom of element to top of parent\n var elementPos = element.offsetTop + elementHeight;\n // Difference between the element and scroll position\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n var strength = constants_1.SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n return List;\n}();\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar WrappedElement = /** @class */function () {\n function WrappedElement(_a) {\n var element = _a.element,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n this.isDisabled = false;\n }\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n WrappedElement.prototype.conceal = function () {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true;\n // Remove element from tab index\n this.element.tabIndex = -1;\n // Backup original styles if any\n var origStyle = this.element.getAttribute('style');\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n this.element.setAttribute('data-choice', 'active');\n };\n WrappedElement.prototype.reveal = function () {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex');\n // Recover original styles if any\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n this.element.removeAttribute('data-choice');\n // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n (0, utils_1.dispatchEvent)(this.element, eventType, data);\n };\n return WrappedElement;\n}();\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedInput = /** @class */function (_super) {\n __extends(WrappedInput, _super);\n function WrappedInput(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n delimiter = _a.delimiter;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.delimiter = delimiter;\n return _this;\n }\n Object.defineProperty(WrappedInput.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n return WrappedInput;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedSelect = /** @class */function (_super) {\n __extends(WrappedSelect, _super);\n function WrappedSelect(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n template = _a.template;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.template = template;\n return _this;\n }\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return this.element.querySelector('option[value=\"\"]') ||\n // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n get: function () {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"options\", {\n get: function () {\n return Array.from(this.element.options);\n },\n set: function (options) {\n var _this = this;\n var fragment = document.createDocumentFragment();\n var addOptionToFragment = function (data) {\n // Create a standard select option\n var option = _this.template(data);\n // Append it to fragment\n fragment.appendChild(option);\n };\n // Add each list item to list\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n },\n enumerable: false,\n configurable: true\n });\n WrappedSelect.prototype.appendDocFragment = function (fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n return WrappedSelect;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n RESET_TO: 'RESET_TO',\n SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\nvar utils_1 = __webpack_require__(799);\nexports.DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n allowHTML: true,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: utils_1.sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) {\n return \"Press Enter to add <b>\\\"\".concat((0, utils_1.sanitise)(value), \"\\\"</b>\");\n },\n maxItemText: function (maxItemCount) {\n return \"Only \".concat(maxItemCount, \" values can be added\");\n },\n valueComparer: function (value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__exportStar(__webpack_require__(18), exports);\n__exportStar(__webpack_require__(978), exports);\n__exportStar(__webpack_require__(948), exports);\n__exportStar(__webpack_require__(359), exports);\n__exportStar(__webpack_require__(285), exports);\n__exportStar(__webpack_require__(533), exports);\n__exportStar(__webpack_require__(287), exports);\n__exportStar(__webpack_require__(132), exports);\n__exportStar(__webpack_require__(837), exports);\n__exportStar(__webpack_require__(598), exports);\n__exportStar(__webpack_require__(369), exports);\n__exportStar(__webpack_require__(37), exports);\n__exportStar(__webpack_require__(47), exports);\n__exportStar(__webpack_require__(923), exports);\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.parseCustomProperties = exports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\nvar getRandomNumber = function (min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\nexports.getRandomNumber = getRandomNumber;\nvar generateChars = function (length) {\n return Array.from({\n length: length\n }, function () {\n return (0, exports.getRandomNumber)(0, 36).toString(36);\n }).join('');\n};\nexports.generateChars = generateChars;\nvar generateId = function (element, prefix) {\n var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\nexports.generateId = generateId;\nvar getType = function (obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\nexports.getType = getType;\nvar isType = function (type, obj) {\n return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\nexports.isType = isType;\nvar wrap = function (element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n if (element.parentNode) {\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n }\n return wrapper.appendChild(element);\n};\nexports.wrap = wrap;\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n sibling = sibling[prop];\n }\n return sibling;\n};\nexports.getAdjacentEl = getAdjacentEl;\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n if (!element) {\n return false;\n }\n var isVisible;\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n return isVisible;\n};\nexports.isScrolledIntoView = isScrolledIntoView;\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n return value.replace(/&/g, '&').replace(/>/g, '>').replace(/</g, '<').replace(/\"/g, '"');\n};\nexports.sanitise = sanitise;\nexports.strToEl = function () {\n var tmpEl = document.createElement('div');\n return function (str) {\n var cleanedInput = str.trim();\n tmpEl.innerHTML = cleanedInput;\n var firldChild = tmpEl.children[0];\n while (tmpEl.firstChild) {\n tmpEl.removeChild(tmpEl.firstChild);\n }\n return firldChild;\n };\n}();\nvar sortByAlpha = function (_a, _b) {\n var value = _a.value,\n _c = _a.label,\n label = _c === void 0 ? value : _c;\n var value2 = _b.value,\n _d = _b.label,\n label2 = _d === void 0 ? value2 : _d;\n return label.localeCompare(label2, [], {\n sensitivity: 'base',\n ignorePunctuation: true,\n numeric: true\n });\n};\nexports.sortByAlpha = sortByAlpha;\nvar sortByScore = function (a, b) {\n var _a = a.score,\n scoreA = _a === void 0 ? 0 : _a;\n var _b = b.score,\n scoreB = _b === void 0 ? 0 : _b;\n return scoreA - scoreB;\n};\nexports.sortByScore = sortByScore;\nvar dispatchEvent = function (element, type, customArgs) {\n if (customArgs === void 0) {\n customArgs = null;\n }\n var event = new CustomEvent(type, {\n detail: customArgs,\n bubbles: true,\n cancelable: true\n });\n return element.dispatchEvent(event);\n};\nexports.dispatchEvent = dispatchEvent;\nvar existsInArray = function (array, value, key) {\n if (key === void 0) {\n key = 'value';\n }\n return array.some(function (item) {\n if (typeof value === 'string') {\n return item[key] === value.trim();\n }\n return item[key] === value;\n });\n};\nexports.existsInArray = existsInArray;\nvar cloneObject = function (obj) {\n return JSON.parse(JSON.stringify(obj));\n};\nexports.cloneObject = cloneObject;\n/**\n * Returns an array of keys present on the first but missing on the second object\n */\nvar diff = function (a, b) {\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n return aKeys.filter(function (i) {\n return bKeys.indexOf(i) < 0;\n });\n};\nexports.diff = diff;\nvar parseCustomProperties = function (customProperties) {\n if (typeof customProperties !== 'undefined') {\n try {\n return JSON.parse(customProperties);\n } catch (e) {\n return customProperties;\n }\n }\n return {};\n};\nexports.parseCustomProperties = parseCustomProperties;\n\n/***/ }),\n\n/***/ 273:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction choices(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_CHOICE':\n {\n var addChoiceAction = action;\n var choice = {\n id: addChoiceAction.id,\n elementId: addChoiceAction.elementId,\n groupId: addChoiceAction.groupId,\n value: addChoiceAction.value,\n label: addChoiceAction.label || addChoiceAction.value,\n disabled: addChoiceAction.disabled || false,\n selected: false,\n active: true,\n score: 9999,\n customProperties: addChoiceAction.customProperties,\n placeholder: addChoiceAction.placeholder || false\n };\n /*\n A disabled choice appears in the choice dropdown but cannot be selected\n A selected choice has been added to the passed input's value (added as an item)\n An active choice appears within the choice dropdown\n */\n return __spreadArray(__spreadArray([], state, true), [choice], false);\n }\n case 'ADD_ITEM':\n {\n var addItemAction_1 = action;\n // When an item is added and it has an associated choice,\n // we want to disable it so it can't be chosen again\n if (addItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n choice.selected = true;\n }\n return choice;\n });\n }\n return state;\n }\n case 'REMOVE_ITEM':\n {\n var removeItemAction_1 = action;\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n choice.selected = false;\n }\n return choice;\n });\n }\n return state;\n }\n case 'FILTER_CHOICES':\n {\n var filterChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n // Set active state based on whether choice is\n // within filtered results\n choice.active = filterChoicesAction_1.results.some(function (_a) {\n var item = _a.item,\n score = _a.score;\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n return false;\n });\n return choice;\n });\n }\n case 'ACTIVATE_CHOICES':\n {\n var activateChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n choice.active = activateChoicesAction_1.active;\n return choice;\n });\n }\n case 'CLEAR_CHOICES':\n {\n return exports.defaultState;\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction groups(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_GROUP':\n {\n var addGroupAction = action;\n return __spreadArray(__spreadArray([], state, true), [{\n id: addGroupAction.id,\n value: addGroupAction.value,\n active: addGroupAction.active,\n disabled: addGroupAction.disabled\n }], false);\n }\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nvar redux_1 = __webpack_require__(791);\nvar items_1 = __importDefault(__webpack_require__(52));\nvar groups_1 = __importDefault(__webpack_require__(871));\nvar choices_1 = __importDefault(__webpack_require__(273));\nvar loading_1 = __importDefault(__webpack_require__(502));\nvar utils_1 = __webpack_require__(799);\nexports.defaultState = {\n groups: [],\n items: [],\n choices: [],\n loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n items: items_1.default,\n groups: groups_1.default,\n choices: choices_1.default,\n loading: loading_1.default\n});\nvar rootReducer = function (passedState, action) {\n var state = passedState;\n // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n if (action.type === 'CLEAR_ALL') {\n state = exports.defaultState;\n } else if (action.type === 'RESET_TO') {\n return (0, utils_1.cloneObject)(action.state);\n }\n return appReducer(state, action);\n};\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction items(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_ITEM':\n {\n var addItemAction = action;\n // Add object to items array\n var newState = __spreadArray(__spreadArray([], state, true), [{\n id: addItemAction.id,\n choiceId: addItemAction.choiceId,\n groupId: addItemAction.groupId,\n value: addItemAction.value,\n label: addItemAction.label,\n active: true,\n highlighted: false,\n customProperties: addItemAction.customProperties,\n placeholder: addItemAction.placeholder || false,\n keyCode: null\n }], false);\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n if (item.id === action.id) {\n item.active = false;\n }\n return item;\n });\n }\n case 'HIGHLIGHT_ITEM':\n {\n var highlightItemAction_1 = action;\n return state.map(function (obj) {\n var item = obj;\n if (item.id === highlightItemAction_1.id) {\n item.highlighted = highlightItemAction_1.highlighted;\n }\n return item;\n });\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\nvar general = function (state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return action.isLoading;\n }\n default:\n {\n return state;\n }\n }\n};\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar redux_1 = __webpack_require__(791);\nvar index_1 = __importDefault(__webpack_require__(655));\nvar Store = /** @class */function () {\n function Store() {\n this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n */\n Store.prototype.subscribe = function (onChange) {\n this._store.subscribe(onChange);\n };\n /**\n * Dispatch event to store (wrapped Redux method)\n */\n Store.prototype.dispatch = function (action) {\n this._store.dispatch(action);\n };\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object (wrapping Redux method)\n */\n get: function () {\n return this._store.getState();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeItems\", {\n /**\n * Get active items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"selectableChoices\", {\n /**\n * Get selectable choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n /**\n * Get placeholder choice from store\n */\n get: function () {\n return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _a = this,\n groups = _a.groups,\n choices = _a.choices;\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get loading state from store\n */\n Store.prototype.isLoading = function () {\n return this.state.loading;\n };\n /**\n * Get single choice by it's ID\n */\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n };\n /**\n * Get group by group id\n */\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n return Store;\n}();\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: containerOuter\n });\n div.dataset.type = passedElementType;\n if (dir) {\n div.dir = dir;\n }\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n if (labelId) {\n div.setAttribute('aria-labelledby', labelId);\n }\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n return Object.assign(document.createElement('div'), {\n className: containerInner\n });\n },\n itemList: function (_a, isSelectOneElement) {\n var _b = _a.classNames,\n list = _b.list,\n listSingle = _b.listSingle,\n listItems = _b.listItems;\n return Object.assign(document.createElement('div'), {\n className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n });\n },\n placeholder: function (_a, value) {\n var _b;\n var allowHTML = _a.allowHTML,\n placeholder = _a.classNames.placeholder;\n return Object.assign(document.createElement('div'), (_b = {\n className: placeholder\n }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n },\n item: function (_a, _b, removeItemButton) {\n var _c, _d;\n var allowHTML = _a.allowHTML,\n _e = _a.classNames,\n item = _e.item,\n button = _e.button,\n highlightedState = _e.highlightedState,\n itemSelectable = _e.itemSelectable,\n placeholder = _e.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n customProperties = _b.customProperties,\n active = _b.active,\n disabled = _b.disabled,\n highlighted = _b.highlighted,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n className: item\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), (_d = {\n type: 'button',\n className: button\n }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n group = _d.group,\n groupHeading = _d.groupHeading,\n itemDisabled = _d.itemDisabled;\n var id = _b.id,\n value = _b.value,\n disabled = _b.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n div.appendChild(Object.assign(document.createElement('div'), (_c = {\n className: groupHeading\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n return div;\n },\n choice: function (_a, _b, selectText) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n item = _d.item,\n itemChoice = _d.itemChoice,\n itemSelectable = _d.itemSelectable,\n selectedState = _d.selectedState,\n itemDisabled = _d.itemDisabled,\n placeholder = _d.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n groupId = _b.groupId,\n elementId = _b.elementId,\n isDisabled = _b.disabled,\n isSelected = _b.selected,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n id: elementId\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n if (isSelected) {\n div.classList.add(selectedState);\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames,\n input = _b.input,\n inputCloned = _b.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'search',\n name: 'search_terms',\n className: \"\".concat(input, \" \").concat(inputCloned),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames,\n list = _b.list,\n listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerText, type) {\n var _b;\n var allowHTML = _a.allowHTML,\n _c = _a.classNames,\n item = _c.item,\n itemChoice = _c.itemChoice,\n noResults = _c.noResults,\n noChoices = _c.noChoices;\n if (type === void 0) {\n type = '';\n }\n var classes = [item, itemChoice];\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n },\n option: function (_a) {\n var label = _a.label,\n value = _a.value,\n customProperties = _a.customProperties,\n active = _a.active,\n disabled = _a.disabled;\n var opt = new Option(label, value, false, active);\n if (customProperties) {\n opt.dataset.customProperties = \"\".concat(customProperties);\n }\n opt.disabled = !!disabled;\n return opt;\n }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array<String>\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array<Object>\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// â—Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {}\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array<Object>\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n \"combineReducers\": function() { return /* binding */ combineReducers; },\n \"compose\": function() { return /* binding */ compose; },\n \"createStore\": function() { return /* binding */ createStore; },\n \"legacy_createStore\": function() { return /* binding */ legacy_createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (false) {}\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( true ? formatProdErrorMessage(0) : 0);\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(1) : 0);\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(2) : 0);\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(3) : 0);\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( true ? formatProdErrorMessage(4) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(5) : 0);\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(6) : 0);\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changedâ€. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( true ? formatProdErrorMessage(7) : 0);\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(8) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(9) : 0);\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(10) : 0);\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( true ? formatProdErrorMessage(11) : 0);\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(12) : 0);\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(13) : 0);\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( true ? formatProdErrorMessage(14) : 0);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( true ? formatProdErrorMessage(16) : 0);\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( true ? formatProdErrorMessage(15) : 0);\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2(_objectSpread2({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n// We're using a generic because languages have different plural rules.\n\n// eslint-disable-next-line no-use-before-define\n\nfunction insertReplacement(source, rx, replacement) {\n const newParts = [];\n source.forEach(chunk => {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we’d get this: [object Object] hello [object Object] my <button>\n if (typeof chunk !== 'string') {\n return newParts.push(chunk);\n }\n return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n if (raw !== '') {\n newParts.push(raw);\n }\n\n // Interlace with the `replacement` value\n if (i < list.length - 1) {\n newParts.push(replacement);\n }\n });\n });\n return newParts;\n}\n\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\nfunction interpolate(phrase, options) {\n const dollarRegex = /\\$/g;\n const dollarBillsYall = '$$$$';\n let interpolated = [phrase];\n if (options == null) return interpolated;\n for (const arg of Object.keys(options)) {\n if (arg !== '_') {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n let replacement = options[arg];\n if (typeof replacement === 'string') {\n replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n }\n }\n return interpolated;\n}\nconst defaultOnMissingKey = key => {\n throw new Error(`missing string: ${key}`);\n};\n\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\nvar _onMissingKey = /*#__PURE__*/_classPrivateFieldLooseKey(\"onMissingKey\");\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\nexport default class Translator {\n constructor(locales, _temp) {\n let {\n onMissingKey = defaultOnMissingKey\n } = _temp === void 0 ? {} : _temp;\n Object.defineProperty(this, _apply, {\n value: _apply2\n });\n Object.defineProperty(this, _onMissingKey, {\n writable: true,\n value: void 0\n });\n this.locale = {\n strings: {},\n pluralize(n) {\n if (n === 1) {\n return 0;\n }\n return 1;\n }\n };\n if (Array.isArray(locales)) {\n locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n } else {\n _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n }\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey] = onMissingKey;\n }\n /**\n * Public translate method\n *\n * @param key\n * @param options with values that will be used later to replace placeholders in string\n * @returns string translated (and interpolated)\n */\n translate(key, options) {\n return this.translateArray(key, options).join('');\n }\n\n /**\n * Get a translation and return the translated and interpolated parts as an array.\n *\n * @returns The translated and interpolated parts, in order.\n */\n translateArray(key, options) {\n let string = this.locale.strings[key];\n if (string == null) {\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey](key);\n string = key;\n }\n const hasPluralForms = typeof string === 'object';\n if (hasPluralForms) {\n if (options && typeof options.smart_count !== 'undefined') {\n const plural = this.locale.pluralize(options.smart_count);\n return interpolate(string[plural], options);\n }\n throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n }\n if (typeof string !== 'string') {\n throw new Error(`string was not a string`);\n }\n return interpolate(string, options);\n }\n}\nfunction _apply2(locale) {\n if (!(locale != null && locale.strings)) {\n return;\n }\n const prevLocale = this.locale;\n Object.assign(this.locale, {\n strings: {\n ...prevLocale.strings,\n ...locale.strings\n },\n pluralize: locale.pluralize || prevLocale.pluralize\n });\n}","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns ? fns.length : 0\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.2.0\"\n};\nvar _callbacks = /*#__PURE__*/_classPrivateFieldLooseKey(\"callbacks\");\nvar _publish = /*#__PURE__*/_classPrivateFieldLooseKey(\"publish\");\n/**\n * Default store that keeps state in a simple object.\n */\nclass DefaultStore {\n constructor() {\n Object.defineProperty(this, _publish, {\n value: _publish2\n });\n this.state = {};\n Object.defineProperty(this, _callbacks, {\n writable: true,\n value: new Set()\n });\n }\n getState() {\n return this.state;\n }\n setState(patch) {\n const prevState = {\n ...this.state\n };\n const nextState = {\n ...this.state,\n ...patch\n };\n this.state = nextState;\n _classPrivateFieldLooseBase(this, _publish)[_publish](prevState, nextState, patch);\n }\n subscribe(listener) {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].add(listener);\n return () => {\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].delete(listener);\n };\n }\n}\nfunction _publish2() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _callbacks)[_callbacks].forEach(listener => {\n listener(...args);\n });\n}\nDefaultStore.VERSION = packageJson.version;\nexport default DefaultStore;","/**\n * Takes a full filename string and returns an object {name, extension}\n */\nexport default function getFileNameAndExtension(fullFileName) {\n const lastDot = fullFileName.lastIndexOf('.');\n // these count as no extension: \"no-dot\", \"trailing-dot.\"\n if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n return {\n name: fullFileName,\n extension: undefined\n };\n }\n return {\n name: fullFileName.slice(0, lastDot),\n extension: fullFileName.slice(lastDot + 1)\n };\n}","// ___Why not add the mime-types package?\n// It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n// https://github.com/jshttp/mime-db/blob/master/db.json\n\nexport default {\n __proto__: null,\n md: 'text/markdown',\n markdown: 'text/markdown',\n mp4: 'video/mp4',\n mp3: 'audio/mp3',\n svg: 'image/svg+xml',\n jpg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n yaml: 'text/yaml',\n yml: 'text/yaml',\n csv: 'text/csv',\n tsv: 'text/tab-separated-values',\n tab: 'text/tab-separated-values',\n avi: 'video/x-msvideo',\n mks: 'video/x-matroska',\n mkv: 'video/x-matroska',\n mov: 'video/quicktime',\n dicom: 'application/dicom',\n doc: 'application/msword',\n docm: 'application/vnd.ms-word.document.macroenabled.12',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n dot: 'application/msword',\n dotm: 'application/vnd.ms-word.template.macroenabled.12',\n dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n xla: 'application/vnd.ms-excel',\n xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n xlc: 'application/vnd.ms-excel',\n xlf: 'application/x-xliff+xml',\n xlm: 'application/vnd.ms-excel',\n xls: 'application/vnd.ms-excel',\n xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xlt: 'application/vnd.ms-excel',\n xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n xlw: 'application/vnd.ms-excel',\n txt: 'text/plain',\n text: 'text/plain',\n conf: 'text/plain',\n log: 'text/plain',\n pdf: 'application/pdf',\n zip: 'application/zip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/x-rar-compressed',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n dmg: 'application/x-apple-diskimage'\n};","import getFileNameAndExtension from './getFileNameAndExtension.js';\nimport mimeTypes from './mimeTypes.js';\nexport default function getFileType(file) {\n var _getFileNameAndExtens;\n if (file.type) return file.type;\n const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n if (fileExtension && fileExtension in mimeTypes) {\n // else, see if we can map extension to a mime type\n return mimeTypes[fileExtension];\n }\n // if all fails, fall back to a generic byte stream type\n return 'application/octet-stream';\n}","import getFileType from './getFileType.js';\nfunction encodeCharacter(character) {\n return character.charCodeAt(0).toString(32);\n}\nfunction encodeFilename(name) {\n let suffix = '';\n return name.replace(/[^A-Z0-9]/gi, character => {\n suffix += `-${encodeCharacter(character)}`;\n return '/';\n }) + suffix;\n}\n\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n */\nexport default function generateFileID(file, instanceId) {\n // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n // is slower! simple string concatenation is fast\n\n let id = instanceId || 'uppy';\n if (typeof file.name === 'string') {\n id += `-${encodeFilename(file.name.toLowerCase())}`;\n }\n if (file.type !== undefined) {\n id += `-${file.type}`;\n }\n if (file.meta && typeof file.meta.relativePath === 'string') {\n id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n }\n if (file.data.size !== undefined) {\n id += `-${file.data.size}`;\n }\n if (file.data.lastModified !== undefined) {\n id += `-${file.data.lastModified}`;\n }\n return id;\n}\n\n// If the provider has a stable, unique ID, then we can use that to identify the file.\n// Then we don't have to generate our own ID, and we can add the same file many times if needed (different path)\nfunction hasFileStableId(file) {\n if (!file.isRemote || !file.remote) return false;\n // These are the providers that it seems like have stable IDs for their files. The other's I haven't checked yet.\n const stableIdProviders = new Set(['box', 'dropbox', 'drive', 'facebook', 'unsplash']);\n return stableIdProviders.has(file.remote.provider);\n}\nexport function getSafeFileId(file, instanceId) {\n if (hasFileStableId(file)) return file.id;\n const fileType = getFileType(file);\n return generateFileID({\n ...file,\n type: fileType\n }, instanceId);\n}","// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nexport default function supportsUploadProgress(userAgent) {\n // Allow passing in userAgent for tests\n if (userAgent == null && typeof navigator !== 'undefined') {\n // eslint-disable-next-line no-param-reassign\n userAgent = navigator.userAgent;\n }\n // Assume it works because basically everything supports progress events.\n if (!userAgent) return true;\n const m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n if (!m) return true;\n const edgeVersion = m[1];\n const version = edgeVersion.split('.', 2);\n const major = parseInt(version[0], 10);\n const minor = parseInt(version[1], 10);\n\n // Worked before:\n // Edge 40.15063.0.0\n // Microsoft EdgeHTML 15.15063\n if (major < 15 || major === 15 && minor < 15063) {\n return true;\n }\n\n // Fixed in:\n // Microsoft EdgeHTML 18.18218\n if (major > 18 || major === 18 && minor >= 18218) {\n return true;\n }\n\n // other versions don't work.\n return false;\n}","export default function getFileName(fileType, fileDescriptor) {\n if (fileDescriptor.name) {\n return fileDescriptor.name;\n }\n if (fileType.split('/')[0] === 'image') {\n return `${fileType.split('/')[0]}.${fileType.split('/')[1]}`;\n }\n return 'noname';\n}","/**\n * Adds zero to strings shorter than two characters.\n */\nfunction pad(number) {\n return number < 10 ? `0${number}` : number.toString();\n}\n\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\nexport default function getTimeStamp() {\n const date = new Date();\n const hours = pad(date.getHours());\n const minutes = pad(date.getMinutes());\n const seconds = pad(date.getSeconds());\n return `${hours}:${minutes}:${seconds}`;\n}","/* eslint-disable no-console */\nimport getTimeStamp from '@uppy/utils/lib/getTimeStamp';\n\n// Swallow all logs, except errors.\n// default if logger is not set or debug: false\nconst justErrorsLogger = {\n debug: () => {},\n warn: () => {},\n error: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\n\n// Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\nconst debugLogger = {\n debug: function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return console.debug(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n warn: function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return console.warn(`[Uppy] [${getTimeStamp()}]`, ...args);\n },\n error: function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return console.error(`[Uppy] [${getTimeStamp()}]`, ...args);\n }\n};\nexport { justErrorsLogger, debugLogger };","\"use strict\";\nmodule.exports = function prettierBytes(input) {\n if (typeof input !== 'number' || Number.isNaN(input)) {\n throw new TypeError(`Expected a number, got ${typeof input}`);\n }\n const neg = input < 0;\n let num = Math.abs(input);\n if (neg) {\n num = -num;\n }\n if (num === 0) {\n return '0 B';\n }\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1);\n const value = Number(num / 1024 ** exponent);\n const unit = units[exponent];\n return `${value >= 10 || value % 1 === 0 ? Math.round(value) : value.toFixed(1)} ${unit}`;\n};\n//# sourceMappingURL=prettierBytes.js.map","/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n <https://github.com/isaacs/node-glob>\n**/\n\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n }\n else if (typeof input.splice == 'function') {\n matches = [];\n\n for (ii = input.length; ii--; ) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n }\n else if (typeof input == 'object') {\n matches = {};\n\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n\n return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n\n return matcher;\n};\n","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n\n return pattern ? test(pattern.split(';')[0]) : test;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable max-classes-per-file, class-methods-use-this */\nimport prettierBytes from '@transloadit/prettier-bytes';\n// @ts-ignore untyped\nimport match from 'mime-match';\n\n/**\n * The minimal required properties to be present from UppyFile in order to validate it.\n */\n\nconst defaultOptions = {\n maxFileSize: null,\n minFileSize: null,\n maxTotalFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null,\n requiredMetaFields: []\n};\nclass RestrictionError extends Error {\n constructor(message, opts) {\n var _opts$isUserFacing;\n super(message);\n this.isRestriction = true;\n this.isUserFacing = (_opts$isUserFacing = opts == null ? void 0 : opts.isUserFacing) != null ? _opts$isUserFacing : true;\n if (opts != null && opts.file) {\n this.file = opts.file; // only some restriction errors are related to a particular file\n }\n }\n}\nclass Restricter {\n constructor(getOpts, getI18n) {\n this.getI18n = getI18n;\n this.getOpts = () => {\n var _opts$restrictions;\n const opts = getOpts();\n if (((_opts$restrictions = opts.restrictions) == null ? void 0 : _opts$restrictions.allowedFileTypes) != null && !Array.isArray(opts.restrictions.allowedFileTypes)) {\n throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n }\n return opts;\n };\n }\n\n // Because these operations are slow, we cannot run them for every file (if we are adding multiple files)\n validateAggregateRestrictions(existingFiles, addingFiles) {\n const {\n maxTotalFileSize,\n maxNumberOfFiles\n } = this.getOpts().restrictions;\n if (maxNumberOfFiles) {\n const nonGhostFiles = existingFiles.filter(f => !f.isGhost);\n if (nonGhostFiles.length + addingFiles.length > maxNumberOfFiles) {\n throw new RestrictionError(`${this.getI18n()('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles\n })}`);\n }\n }\n if (maxTotalFileSize) {\n const totalFilesSize = [...existingFiles, ...addingFiles].reduce((total, f) => {\n var _f$size;\n return total + ((_f$size = f.size) != null ? _f$size : 0);\n }, 0);\n if (totalFilesSize > maxTotalFileSize) {\n throw new RestrictionError(this.getI18n()('aggregateExceedsSize', {\n sizeAllowed: prettierBytes(maxTotalFileSize),\n size: prettierBytes(totalFilesSize)\n }));\n }\n }\n }\n validateSingleFile(file) {\n const {\n maxFileSize,\n minFileSize,\n allowedFileTypes\n } = this.getOpts().restrictions;\n if (allowedFileTypes) {\n const isCorrectFileType = allowedFileTypes.some(type => {\n // check if this is a mime-type\n if (type.includes('/')) {\n if (!file.type) return false;\n return match(file.type.replace(/;.*?$/, ''), type);\n }\n\n // otherwise this is likely an extension\n if (type[0] === '.' && file.extension) {\n return file.extension.toLowerCase() === type.slice(1).toLowerCase();\n }\n return false;\n });\n if (!isCorrectFileType) {\n const allowedFileTypesString = allowedFileTypes.join(', ');\n throw new RestrictionError(this.getI18n()('youCanOnlyUploadFileTypes', {\n types: allowedFileTypesString\n }), {\n file\n });\n }\n }\n\n // We can't check maxFileSize if the size is unknown.\n if (maxFileSize && file.size != null && file.size > maxFileSize) {\n var _file$name;\n throw new RestrictionError(this.getI18n()('exceedsSize', {\n size: prettierBytes(maxFileSize),\n file: (_file$name = file.name) != null ? _file$name : this.getI18n()('unnamed')\n }), {\n file\n });\n }\n\n // We can't check minFileSize if the size is unknown.\n if (minFileSize && file.size != null && file.size < minFileSize) {\n throw new RestrictionError(this.getI18n()('inferiorSize', {\n size: prettierBytes(minFileSize)\n }), {\n file\n });\n }\n }\n validate(existingFiles, addingFiles) {\n addingFiles.forEach(addingFile => {\n this.validateSingleFile(addingFile);\n });\n this.validateAggregateRestrictions(existingFiles, addingFiles);\n }\n validateMinNumberOfFiles(files) {\n const {\n minNumberOfFiles\n } = this.getOpts().restrictions;\n if (minNumberOfFiles && Object.keys(files).length < minNumberOfFiles) {\n throw new RestrictionError(this.getI18n()('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles\n }));\n }\n }\n getMissingRequiredMetaFields(file) {\n var _file$name2;\n const error = new RestrictionError(this.getI18n()('missingRequiredMetaFieldOnFile', {\n fileName: (_file$name2 = file.name) != null ? _file$name2 : this.getI18n()('unnamed')\n }));\n const {\n requiredMetaFields\n } = this.getOpts().restrictions;\n const missingFields = [];\n for (const field of requiredMetaFields) {\n if (!Object.hasOwn(file.meta, field) || file.meta[field] === '') {\n missingFields.push(field);\n }\n }\n return {\n missingFields,\n error\n };\n }\n}\nexport { Restricter, defaultOptions, RestrictionError };","export default {\n strings: {\n addBulkFilesFailed: {\n 0: 'Failed to add %{smart_count} file due to an internal error',\n 1: 'Failed to add %{smart_count} files due to internal errors'\n },\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n aggregateExceedsSize: 'You selected %{size} of files, but maximum allowed size is %{sizeAllowed}',\n exceedsSize: '%{file} exceeds maximum allowed size of %{size}',\n missingRequiredMetaField: 'Missing required meta fields',\n missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n inferiorSize: 'This file is smaller than the allowed size of %{size}',\n youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n noMoreFilesAllowed: 'Cannot add more files',\n noDuplicates: \"Cannot add the duplicate file '%{fileName}', it already exists\",\n companionError: 'Connection with Companion failed',\n authAborted: 'Authentication aborted',\n companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n noSearchResults: 'Unfortunately, there are no results for this search',\n selectX: {\n 0: 'Select %{smart_count}',\n 1: 'Select %{smart_count}'\n },\n allFilesFromFolderNamed: 'All files from folder %{name}',\n openFolderNamed: 'Open folder %{name}',\n cancel: 'Cancel',\n logOut: 'Log out',\n logIn: 'Log in',\n pickFiles: 'Pick files',\n pickPhotos: 'Pick photos',\n filter: 'Filter',\n resetFilter: 'Reset filter',\n loading: 'Loading...',\n loadedXFiles: 'Loaded %{numFiles} files',\n authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n authenticateWith: 'Connect to %{pluginName}',\n signInWithGoogle: 'Sign in with Google',\n searchImages: 'Search for images',\n enterTextToSearch: 'Enter text to search for images',\n search: 'Search',\n resetSearch: 'Reset search',\n emptyFolderAdded: 'No files were added from empty folder',\n addedNumFiles: 'Added %{numFiles} file(s)',\n folderAlreadyAdded: 'The folder \"%{folder}\" was already added',\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}'\n },\n additionalRestrictionsFailed: '%{count} additional restrictions were not fulfilled',\n unnamed: 'Unnamed',\n pleaseWait: 'Please wait'\n }\n};","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\n/* eslint-disable max-classes-per-file */\n/* global AggregateError */\n\nimport Translator from '@uppy/utils/lib/Translator';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport ee from 'namespace-emitter';\nimport { nanoid } from 'nanoid/non-secure';\nimport throttle from 'lodash/throttle.js';\nimport DefaultStore from '@uppy/store-default';\nimport getFileType from '@uppy/utils/lib/getFileType';\nimport getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension';\nimport { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport supportsUploadProgress from './supportsUploadProgress.js';\nimport getFileName from './getFileName.js';\nimport { justErrorsLogger, debugLogger } from './loggers.js';\nimport { Restricter, defaultOptions as defaultRestrictionOptions, RestrictionError } from './Restricter.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.4.1\"\n};\nimport locale from './locale.js';\n\n/**\n * ids are always `string`s, except the root folder's id can be `null`\n */\n\n/**\n * PartialTree has the following structure.\n *\n * FolderRoot\n * ┌─────┴─────â”\n * FolderNode File\n * ┌─────┴────â”\n * File File\n *\n * Root folder is called `PartialTreeFolderRoot`,\n * all other folders are called `PartialTreeFolderNode`, because they are \"internal nodes\".\n *\n * It's possible for `PartialTreeFolderNode` to be a leaf node if it doesn't contain any files.\n */\n\n/**\n * This is a base for a provider that does not necessarily use the Companion-assisted OAuth2 flow\n */\n\n/*\n * UnknownProviderPlugin can be any Companion plugin (such as Google Drive)\n * that uses the Companion-assisted OAuth flow.\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `storage`\n * will error in the `Provider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `Provider` class.\n * `Provider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n/*\n * UnknownSearchProviderPlugin can be any search Companion plugin (such as Unsplash).\n * As the plugins are passed around throughout Uppy we need a generic type for this.\n * It may seems like duplication, but this type safe. Changing the type of `title`\n * will error in the `SearchProvider` class of @uppy/companion-client and vice versa.\n *\n * Note that this is the *plugin* class, not a version of the `SearchProvider` class.\n * `SearchProvider` does operate on Companion plugins with `uppy.getPlugin()`.\n */\n\n// TODO: can we use namespaces in other plugins to populate this?\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n\n// The user facing type for UppyOptions used in uppy.setOptions()\n\n/** `OmitFirstArg<typeof someArray>` is the type of the returned value of `someArray.slice(1)`. */\n\nconst defaultUploadState = {\n totalProgress: 0,\n allowNewUpload: true,\n error: null,\n recoveredState: null\n};\n\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\nvar _plugins = /*#__PURE__*/_classPrivateFieldLooseKey(\"plugins\");\nvar _restricter = /*#__PURE__*/_classPrivateFieldLooseKey(\"restricter\");\nvar _storeUnsubscribe = /*#__PURE__*/_classPrivateFieldLooseKey(\"storeUnsubscribe\");\nvar _emitter = /*#__PURE__*/_classPrivateFieldLooseKey(\"emitter\");\nvar _preProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"preProcessors\");\nvar _uploaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploaders\");\nvar _postProcessors = /*#__PURE__*/_classPrivateFieldLooseKey(\"postProcessors\");\nvar _informAndEmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"informAndEmit\");\nvar _checkRequiredMetaFieldsOnFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFieldsOnFile\");\nvar _checkRequiredMetaFields = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkRequiredMetaFields\");\nvar _assertNewUploadAllowed = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertNewUploadAllowed\");\nvar _transformFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"transformFile\");\nvar _startIfAutoProceed = /*#__PURE__*/_classPrivateFieldLooseKey(\"startIfAutoProceed\");\nvar _checkAndUpdateFileState = /*#__PURE__*/_classPrivateFieldLooseKey(\"checkAndUpdateFileState\");\nvar _handleUploadProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleUploadProgress\");\nvar _updateTotalProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateTotalProgress\");\nvar _updateTotalProgressThrottled = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateTotalProgressThrottled\");\nvar _calculateTotalProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"calculateTotalProgress\");\nvar _addListeners = /*#__PURE__*/_classPrivateFieldLooseKey(\"addListeners\");\nvar _updateOnlineStatus = /*#__PURE__*/_classPrivateFieldLooseKey(\"updateOnlineStatus\");\nvar _requestClientById = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestClientById\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _getUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUpload\");\nvar _removeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"removeUpload\");\nvar _runUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"runUpload\");\nexport class Uppy {\n /**\n * Instantiate Uppy\n */\n constructor(_opts) {\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n */\n Object.defineProperty(this, _runUpload, {\n value: _runUpload2\n });\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n */\n Object.defineProperty(this, _removeUpload, {\n value: _removeUpload2\n });\n Object.defineProperty(this, _getUpload, {\n value: _getUpload2\n });\n /**\n * Create an upload for a bunch of files.\n *\n */\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n Object.defineProperty(this, _addListeners, {\n value: _addListeners2\n });\n Object.defineProperty(this, _calculateTotalProgress, {\n value: _calculateTotalProgress2\n });\n Object.defineProperty(this, _updateTotalProgress, {\n value: _updateTotalProgress2\n });\n Object.defineProperty(this, _checkAndUpdateFileState, {\n value: _checkAndUpdateFileState2\n });\n // Schedule an upload if `autoProceed` is enabled.\n Object.defineProperty(this, _startIfAutoProceed, {\n value: _startIfAutoProceed2\n });\n /**\n * Create a file state object based on user-provided `addFile()` options.\n */\n Object.defineProperty(this, _transformFile, {\n value: _transformFile2\n });\n Object.defineProperty(this, _assertNewUploadAllowed, {\n value: _assertNewUploadAllowed2\n });\n Object.defineProperty(this, _checkRequiredMetaFields, {\n value: _checkRequiredMetaFields2\n });\n Object.defineProperty(this, _checkRequiredMetaFieldsOnFile, {\n value: _checkRequiredMetaFieldsOnFile2\n });\n Object.defineProperty(this, _informAndEmit, {\n value: _informAndEmit2\n });\n Object.defineProperty(this, _plugins, {\n writable: true,\n value: Object.create(null)\n });\n Object.defineProperty(this, _restricter, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _storeUnsubscribe, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _emitter, {\n writable: true,\n value: ee()\n });\n Object.defineProperty(this, _preProcessors, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _uploaders, {\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, _postProcessors, {\n writable: true,\n value: new Set()\n });\n this.scheduledAutoProceed = null;\n this.wasOffline = false;\n Object.defineProperty(this, _handleUploadProgress, {\n writable: true,\n value: (file, progress) => {\n const fileInState = file ? this.getFile(file.id) : undefined;\n if (file == null || !fileInState) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n if (fileInState.progress.percentage === 100) {\n this.log(`Not setting progress for a file that has been already uploaded: ${file.id}`);\n return;\n }\n const newProgress = {\n bytesTotal: progress.bytesTotal,\n // bytesTotal may be null or zero; in that case we can't divide by it\n percentage: progress.bytesTotal != null && Number.isFinite(progress.bytesTotal) && progress.bytesTotal > 0 ? Math.round(progress.bytesUploaded / progress.bytesTotal * 100) : undefined\n };\n if (fileInState.progress.uploadStarted != null) {\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n ...newProgress,\n bytesUploaded: progress.bytesUploaded\n }\n });\n } else {\n this.setFileState(file.id, {\n progress: {\n ...fileInState.progress,\n ...newProgress\n }\n });\n }\n _classPrivateFieldLooseBase(this, _updateTotalProgressThrottled)[_updateTotalProgressThrottled]();\n }\n });\n // ___Why throttle at 500ms?\n // - We must throttle at >250ms for superfocus in Dashboard to work well\n // (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n // [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n // and click 'ADD MORE FILES', - focus won't activate in Firefox.\n // - We must throttle at around >500ms to avoid performance lags.\n // [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n Object.defineProperty(this, _updateTotalProgressThrottled, {\n writable: true,\n value: throttle(() => _classPrivateFieldLooseBase(this, _updateTotalProgress)[_updateTotalProgress](), 500, {\n leading: true,\n trailing: true\n })\n });\n Object.defineProperty(this, _updateOnlineStatus, {\n writable: true,\n value: this.updateOnlineStatus.bind(this)\n });\n // We need to store request clients by a unique ID, so we can share RequestClient instances across files\n // this allows us to do rate limiting and synchronous operations like refreshing provider tokens\n // example: refreshing tokens: if each file has their own requestclient,\n // we don't have any way to synchronize all requests in order to\n // - block all requests\n // - refresh the token\n // - unblock all requests and allow them to run with a the new access token\n // back when we had a requestclient per file, once an access token expired,\n // all 6 files would go ahead and refresh the token at the same time\n // (calling /refresh-token up to 6 times), which will probably fail for some providers\n Object.defineProperty(this, _requestClientById, {\n writable: true,\n value: new Map()\n });\n this.defaultLocale = locale;\n const defaultOptions = {\n id: 'uppy',\n autoProceed: false,\n allowMultipleUploadBatches: true,\n debug: false,\n restrictions: defaultRestrictionOptions,\n meta: {},\n onBeforeFileAdded: (file, files) => !Object.hasOwn(files, file.id),\n onBeforeUpload: files => files,\n store: new DefaultStore(),\n logger: justErrorsLogger,\n infoTimeout: 5000\n };\n const merged = {\n ...defaultOptions,\n ..._opts\n };\n // Merge default options with the ones set by user,\n // making sure to merge restrictions too\n this.opts = {\n ...merged,\n restrictions: {\n ...defaultOptions.restrictions,\n ...(_opts && _opts.restrictions)\n }\n };\n\n // Support debug: true for backwards-compatability, unless logger is set in opts\n // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n if (_opts && _opts.logger && _opts.debug) {\n this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n } else if (_opts && _opts.debug) {\n this.opts.logger = debugLogger;\n }\n this.log(`Using Core v${Uppy.VERSION}`);\n this.i18nInit();\n this.store = this.opts.store;\n this.setState({\n ...defaultUploadState,\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n uploadProgress: supportsUploadProgress(),\n individualCancellation: true,\n resumableUploads: false\n },\n meta: {\n ...this.opts.meta\n },\n info: []\n });\n _classPrivateFieldLooseBase(this, _restricter)[_restricter] = new Restricter(() => this.opts, () => this.i18n);\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe] = this.store.subscribe((prevState, nextState, patch) => {\n this.emit('state-update', prevState, nextState, patch);\n this.updateAll(nextState);\n });\n\n // Exposing uppy object on window for debugging and testing\n if (this.opts.debug && typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Mutating the global object for debug purposes\n window[this.opts.id] = this;\n }\n _classPrivateFieldLooseBase(this, _addListeners)[_addListeners]();\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].emit(event, ...args);\n }\n on(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].on(event, callback);\n return this;\n }\n once(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].once(event, callback);\n return this;\n }\n off(event, callback) {\n _classPrivateFieldLooseBase(this, _emitter)[_emitter].off(event, callback);\n return this;\n }\n\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n updateAll(state) {\n this.iteratePlugins(plugin => {\n plugin.update(state);\n });\n }\n\n /**\n * Updates state with a patch\n */\n setState(patch) {\n this.store.setState(patch);\n }\n\n /**\n * Returns current state.\n */\n getState() {\n return this.store.getState();\n }\n patchFilesState(filesWithNewState) {\n const existingFilesState = this.getState().files;\n this.setState({\n files: {\n ...existingFilesState,\n ...Object.fromEntries(Object.entries(filesWithNewState).map(_ref => {\n let [fileID, newFileState] = _ref;\n return [fileID, {\n ...existingFilesState[fileID],\n ...newFileState\n }];\n }))\n }\n });\n }\n\n /**\n * Shorthand to set state for a specific file.\n */\n setFileState(fileID, state) {\n if (!this.getState().files[fileID]) {\n throw new Error(`Can’t set state for ${fileID} (the file could have been removed)`);\n }\n this.patchFilesState({\n [fileID]: state\n });\n }\n i18nInit() {\n const onMissingKey = key => this.log(`Missing i18n string: ${key}`, 'error');\n const translator = new Translator([this.defaultLocale, this.opts.locale], {\n onMissingKey\n });\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.locale = translator.locale;\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts,\n restrictions: {\n ...this.opts.restrictions,\n ...(newOpts == null ? void 0 : newOpts.restrictions)\n }\n };\n if (newOpts.meta) {\n this.setMeta(newOpts.meta);\n }\n this.i18nInit();\n if (newOpts.locale) {\n this.iteratePlugins(plugin => {\n plugin.setOptions(newOpts);\n });\n }\n\n // Note: this is not the preact `setState`, it's an internal function that has the same name.\n this.setState(undefined); // so that UI re-renders with new options\n }\n resetProgress() {\n const defaultProgress = {\n percentage: 0,\n bytesUploaded: false,\n uploadComplete: false,\n uploadStarted: null\n };\n const files = {\n ...this.getState().files\n };\n const updatedFiles = Object.create(null);\n Object.keys(files).forEach(fileID => {\n updatedFiles[fileID] = {\n ...files[fileID],\n progress: {\n ...files[fileID].progress,\n ...defaultProgress\n },\n // @ts-expect-error these typed are inserted\n // into the namespace in their respective packages\n // but core isn't ware of those\n tus: undefined,\n transloadit: undefined\n };\n });\n this.setState({\n files: updatedFiles,\n ...defaultUploadState\n });\n }\n clear() {\n const {\n capabilities,\n currentUploads\n } = this.getState();\n if (Object.keys(currentUploads).length > 0 && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n this.setState({\n ...defaultUploadState,\n files: {}\n });\n }\n addPreProcessor(fn) {\n _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].add(fn);\n }\n removePreProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors].delete(fn);\n }\n addPostProcessor(fn) {\n _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].add(fn);\n }\n removePostProcessor(fn) {\n return _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].delete(fn);\n }\n addUploader(fn) {\n _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].add(fn);\n }\n removeUploader(fn) {\n return _classPrivateFieldLooseBase(this, _uploaders)[_uploaders].delete(fn);\n }\n setMeta(data) {\n const updatedMeta = {\n ...this.getState().meta,\n ...data\n };\n const updatedFiles = {\n ...this.getState().files\n };\n Object.keys(updatedFiles).forEach(fileID => {\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: {\n ...updatedFiles[fileID].meta,\n ...data\n }\n };\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n });\n }\n setFileMeta(fileID, data) {\n const updatedFiles = {\n ...this.getState().files\n };\n if (!updatedFiles[fileID]) {\n this.log(`Was trying to set metadata for a file that has been removed: ${fileID}`);\n return;\n }\n const newMeta = {\n ...updatedFiles[fileID].meta,\n ...data\n };\n updatedFiles[fileID] = {\n ...updatedFiles[fileID],\n meta: newMeta\n };\n this.setState({\n files: updatedFiles\n });\n }\n\n /**\n * Get a file object.\n */\n getFile(fileID) {\n return this.getState().files[fileID];\n }\n\n /**\n * Get all files in an array.\n */\n getFiles() {\n const {\n files\n } = this.getState();\n return Object.values(files);\n }\n getFilesByIds(ids) {\n return ids.map(id => this.getFile(id));\n }\n getObjectOfFilesPerState() {\n const {\n files: filesObject,\n totalProgress,\n error\n } = this.getState();\n const files = Object.values(filesObject);\n const inProgressFiles = [];\n const newFiles = [];\n const startedFiles = [];\n const uploadStartedFiles = [];\n const pausedFiles = [];\n const completeFiles = [];\n const erroredFiles = [];\n const inProgressNotPausedFiles = [];\n const processingFiles = [];\n for (const file of files) {\n const {\n progress\n } = file;\n if (!progress.uploadComplete && progress.uploadStarted) {\n inProgressFiles.push(file);\n if (!file.isPaused) {\n inProgressNotPausedFiles.push(file);\n }\n }\n if (!progress.uploadStarted) {\n newFiles.push(file);\n }\n if (progress.uploadStarted || progress.preprocess || progress.postprocess) {\n startedFiles.push(file);\n }\n if (progress.uploadStarted) {\n uploadStartedFiles.push(file);\n }\n if (file.isPaused) {\n pausedFiles.push(file);\n }\n if (progress.uploadComplete) {\n completeFiles.push(file);\n }\n if (file.error) {\n erroredFiles.push(file);\n }\n if (progress.preprocess || progress.postprocess) {\n processingFiles.push(file);\n }\n }\n return {\n newFiles,\n startedFiles,\n uploadStartedFiles,\n pausedFiles,\n completeFiles,\n erroredFiles,\n inProgressFiles,\n inProgressNotPausedFiles,\n processingFiles,\n isUploadStarted: uploadStartedFiles.length > 0,\n isAllComplete: totalProgress === 100 && completeFiles.length === files.length && processingFiles.length === 0,\n isAllErrored: !!error && erroredFiles.length === files.length,\n isAllPaused: inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length,\n isUploadInProgress: inProgressFiles.length > 0,\n isSomeGhost: files.some(file => file.isGhost)\n };\n }\n validateRestrictions(file, files) {\n if (files === void 0) {\n files = this.getFiles();\n }\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validate(files, [file]);\n } catch (err) {\n return err;\n }\n return null;\n }\n validateSingleFile(file) {\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateSingleFile(file);\n } catch (err) {\n return err.message;\n }\n return null;\n }\n validateAggregateRestrictions(files) {\n const existingFiles = this.getFiles();\n try {\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateAggregateRestrictions(existingFiles, files);\n } catch (err) {\n return err.message;\n }\n return null;\n }\n checkIfFileAlreadyExists(fileID) {\n const {\n files\n } = this.getState();\n if (files[fileID] && !files[fileID].isGhost) {\n return true;\n }\n return false;\n }\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n */\n addFile(file) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed](file);\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState]([file]);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n if (errors.length > 0) throw errors[0];\n this.setState({\n files: nextFilesState\n });\n const [firstValidFileToAdd] = validFilesToAdd;\n this.emit('file-added', firstValidFileToAdd);\n this.emit('files-added', validFilesToAdd);\n this.log(`Added file: ${firstValidFileToAdd.name}, ${firstValidFileToAdd.id}, mime type: ${firstValidFileToAdd.type}`);\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n return firstValidFileToAdd.id;\n }\n\n /**\n * Add multiple files to `state.files`. See the `addFile()` documentation.\n *\n * If an error occurs while adding a file, it is logged and the user is notified.\n * This is good for UI plugins, but not for programmatic use.\n * Programmatic users should usually still use `addFile()` on individual files.\n */\n addFiles(fileDescriptors) {\n _classPrivateFieldLooseBase(this, _assertNewUploadAllowed)[_assertNewUploadAllowed]();\n const {\n nextFilesState,\n validFilesToAdd,\n errors\n } = _classPrivateFieldLooseBase(this, _checkAndUpdateFileState)[_checkAndUpdateFileState](fileDescriptors);\n const restrictionErrors = errors.filter(error => error.isRestriction);\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit](restrictionErrors);\n const nonRestrictionErrors = errors.filter(error => !error.isRestriction);\n if (nonRestrictionErrors.length > 0) {\n let message = 'Multiple errors occurred while adding files:\\n';\n nonRestrictionErrors.forEach(subError => {\n message += `\\n * ${subError.message}`;\n });\n this.info({\n message: this.i18n('addBulkFilesFailed', {\n smart_count: nonRestrictionErrors.length\n }),\n details: message\n }, 'error', this.opts.infoTimeout);\n if (typeof AggregateError === 'function') {\n throw new AggregateError(nonRestrictionErrors, message);\n } else {\n const err = new Error(message);\n // @ts-expect-error fallback when AggregateError is not available\n err.errors = nonRestrictionErrors;\n throw err;\n }\n }\n\n // OK, we haven't thrown an error, we can start updating state and emitting events now:\n\n this.setState({\n files: nextFilesState\n });\n validFilesToAdd.forEach(file => {\n this.emit('file-added', file);\n });\n this.emit('files-added', validFilesToAdd);\n if (validFilesToAdd.length > 5) {\n this.log(`Added batch of ${validFilesToAdd.length} files`);\n } else {\n Object.values(validFilesToAdd).forEach(file => {\n this.log(`Added file: ${file.name}\\n id: ${file.id}\\n type: ${file.type}`);\n });\n }\n if (validFilesToAdd.length > 0) {\n _classPrivateFieldLooseBase(this, _startIfAutoProceed)[_startIfAutoProceed]();\n }\n }\n removeFiles(fileIDs) {\n const {\n files,\n currentUploads\n } = this.getState();\n const updatedFiles = {\n ...files\n };\n const updatedUploads = {\n ...currentUploads\n };\n const removedFiles = Object.create(null);\n fileIDs.forEach(fileID => {\n if (files[fileID]) {\n removedFiles[fileID] = files[fileID];\n delete updatedFiles[fileID];\n }\n });\n\n // Remove files from the `fileIDs` list in each upload.\n function fileIsNotRemoved(uploadFileID) {\n return removedFiles[uploadFileID] === undefined;\n }\n Object.keys(updatedUploads).forEach(uploadID => {\n const newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved);\n\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n delete updatedUploads[uploadID];\n return;\n }\n const {\n capabilities\n } = this.getState();\n if (newFileIDs.length !== currentUploads[uploadID].fileIDs.length && !capabilities.individualCancellation) {\n throw new Error('The installed uploader plugin does not allow removing files during an upload.');\n }\n updatedUploads[uploadID] = {\n ...currentUploads[uploadID],\n fileIDs: newFileIDs\n };\n });\n const stateUpdate = {\n currentUploads: updatedUploads,\n files: updatedFiles\n };\n\n // If all files were removed - allow new uploads,\n // and clear recoveredState\n if (Object.keys(updatedFiles).length === 0) {\n stateUpdate.allowNewUpload = true;\n stateUpdate.error = null;\n stateUpdate.recoveredState = null;\n }\n this.setState(stateUpdate);\n _classPrivateFieldLooseBase(this, _updateTotalProgressThrottled)[_updateTotalProgressThrottled]();\n const removedFileIDs = Object.keys(removedFiles);\n removedFileIDs.forEach(fileID => {\n this.emit('file-removed', removedFiles[fileID]);\n });\n if (removedFileIDs.length > 5) {\n this.log(`Removed ${removedFileIDs.length} files`);\n } else {\n this.log(`Removed files: ${removedFileIDs.join(', ')}`);\n }\n }\n removeFile(fileID) {\n this.removeFiles([fileID]);\n }\n pauseResume(fileID) {\n if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).progress.uploadComplete) {\n return undefined;\n }\n const file = this.getFile(fileID);\n const wasPaused = file.isPaused || false;\n const isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused\n });\n this.emit('upload-pause', file, isPaused);\n return isPaused;\n }\n pauseAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: true\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('pause-all');\n }\n resumeAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter(file => {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('resume-all');\n }\n retryAll() {\n const updatedFiles = {\n ...this.getState().files\n };\n const filesToRetry = Object.keys(updatedFiles).filter(file => {\n return updatedFiles[file].error;\n });\n filesToRetry.forEach(file => {\n const updatedFile = {\n ...updatedFiles[file],\n isPaused: false,\n error: null\n };\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n error: null\n });\n this.emit('retry-all', Object.values(updatedFiles));\n if (filesToRetry.length === 0) {\n return Promise.resolve({\n successful: [],\n failed: []\n });\n }\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](filesToRetry, {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n cancelAll() {\n this.emit('cancel-all');\n const {\n files\n } = this.getState();\n const fileIDs = Object.keys(files);\n if (fileIDs.length) {\n this.removeFiles(fileIDs);\n }\n this.setState(defaultUploadState);\n }\n retryUpload(fileID) {\n this.setFileState(fileID, {\n error: null,\n isPaused: false\n });\n this.emit('upload-retry', this.getFile(fileID));\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]([fileID], {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n });\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n logout() {\n this.iteratePlugins(plugin => {\n var _provider;\n ;\n (_provider = plugin.provider) == null || _provider.logout == null || _provider.logout();\n });\n }\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/explicit-module-boundary-types\n [Symbol.for('uppy test: updateTotalProgress')]() {\n return _classPrivateFieldLooseBase(this, _updateTotalProgress)[_updateTotalProgress]();\n }\n updateOnlineStatus() {\n var _window$navigator$onL;\n const online = (_window$navigator$onL = window.navigator.onLine) != null ? _window$navigator$onL : true;\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n } else {\n this.emit('is-online');\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n }\n getID() {\n return this.opts.id;\n }\n\n /**\n * Registers a plugin with Core.\n */\n use(Plugin) {\n if (typeof Plugin !== 'function') {\n const msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` + ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n }\n\n // Instantiate\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const plugin = new Plugin(this, ...args);\n const pluginId = plugin.id;\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n const existsPluginAlready = this.getPlugin(pluginId);\n if (existsPluginAlready) {\n const msg = `Already found a plugin named '${existsPluginAlready.id}'. ` + `Tried to use: '${pluginId}'.\\n` + 'Uppy plugins must have unique `id` options.';\n throw new Error(msg);\n }\n\n // @ts-expect-error does exist\n if (Plugin.VERSION) {\n // @ts-expect-error does exist\n this.log(`Using ${pluginId} v${Plugin.VERSION}`);\n }\n if (plugin.type in _classPrivateFieldLooseBase(this, _plugins)[_plugins]) {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type].push(plugin);\n } else {\n _classPrivateFieldLooseBase(this, _plugins)[_plugins][plugin.type] = [plugin];\n }\n plugin.install();\n this.emit('plugin-added', plugin);\n return this;\n }\n\n /**\n * Find one Plugin by name.\n */\n getPlugin(id) {\n for (const plugins of Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins])) {\n const foundPlugin = plugins.find(plugin => plugin.id === id);\n if (foundPlugin != null) return foundPlugin;\n }\n return undefined;\n }\n [Symbol.for('uppy test: getPlugins')](type) {\n return _classPrivateFieldLooseBase(this, _plugins)[_plugins][type];\n }\n\n /**\n * Iterate through all `use`d plugins.\n *\n */\n iteratePlugins(method) {\n Object.values(_classPrivateFieldLooseBase(this, _plugins)[_plugins]).flat(1).forEach(method);\n }\n\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n removePlugin(instance) {\n this.log(`Removing plugin ${instance.id}`);\n this.emit('plugin-remove', instance);\n if (instance.uninstall) {\n instance.uninstall();\n }\n const list = _classPrivateFieldLooseBase(this, _plugins)[_plugins][instance.type];\n // list.indexOf failed here, because Vue3 converted the plugin instance\n // to a Proxy object, which failed the strict comparison test:\n // obj !== objProxy\n const index = list.findIndex(item => item.id === instance.id);\n if (index !== -1) {\n list.splice(index, 1);\n }\n const state = this.getState();\n const updatedState = {\n plugins: {\n ...state.plugins,\n [instance.id]: undefined\n }\n };\n this.setState(updatedState);\n }\n\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n destroy() {\n this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`);\n this.cancelAll();\n _classPrivateFieldLooseBase(this, _storeUnsubscribe)[_storeUnsubscribe]();\n this.iteratePlugins(plugin => {\n this.removePlugin(plugin);\n });\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.removeEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n }\n }\n hideInfo() {\n const {\n info\n } = this.getState();\n this.setState({\n info: info.slice(1)\n });\n this.emit('info-hidden');\n }\n\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n */\n info(message, type, duration) {\n if (type === void 0) {\n type = 'info';\n }\n if (duration === void 0) {\n duration = 3000;\n }\n const isComplexMessage = typeof message === 'object';\n this.setState({\n info: [...this.getState().info, {\n type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }]\n });\n setTimeout(() => this.hideInfo(), duration);\n this.emit('info-visible');\n }\n\n /**\n * Passes messages to a function, provided in `opts.logger`.\n * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n */\n log(message, type) {\n const {\n logger\n } = this.opts;\n switch (type) {\n case 'error':\n logger.error(message);\n break;\n case 'warning':\n logger.warn(message);\n break;\n default:\n logger.debug(message);\n break;\n }\n }\n registerRequestClient(id, client) {\n _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].set(id, client);\n }\n\n /** @protected */\n getRequestClientForFile(file) {\n if (!file.remote) throw new Error(`Tried to get RequestClient for a non-remote file ${file.id}`);\n const requestClient = _classPrivateFieldLooseBase(this, _requestClientById)[_requestClientById].get(file.remote.requestClientId);\n if (requestClient == null) throw new Error(`requestClientId \"${file.remote.requestClientId}\" not registered for file \"${file.id}\"`);\n return requestClient;\n }\n\n /**\n * Restore an upload by its ID.\n */\n restore(uploadID) {\n this.log(`Core: attempting to restore upload \"${uploadID}\"`);\n if (!this.getState().currentUploads[uploadID]) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n return Promise.reject(new Error('Nonexistent upload'));\n }\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }\n [Symbol.for('uppy test: createUpload')]() {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/47595\n return _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](...arguments);\n }\n /**\n * Add data to an upload's result object.\n */\n addResultData(uploadID, data) {\n if (!_classPrivateFieldLooseBase(this, _getUpload)[_getUpload](uploadID)) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n return;\n }\n const {\n currentUploads\n } = this.getState();\n const currentUpload = {\n ...currentUploads[uploadID],\n result: {\n ...currentUploads[uploadID].result,\n ...data\n }\n };\n this.setState({\n currentUploads: {\n ...currentUploads,\n [uploadID]: currentUpload\n }\n });\n }\n /**\n * Start an upload for all the files that are not currently being uploaded.\n */\n upload() {\n var _classPrivateFieldLoo;\n if (!((_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _plugins)[_plugins]['uploader']) != null && _classPrivateFieldLoo.length)) {\n this.log('No uploader type plugins are used', 'warning');\n }\n let {\n files\n } = this.getState();\n const onBeforeUploadResult = this.opts.onBeforeUpload(files);\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n files = onBeforeUploadResult;\n // Updating files in state, because uploader plugins receive file IDs,\n // and then fetch the actual file object from state\n this.setState({\n files\n });\n }\n return Promise.resolve().then(() => _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateMinNumberOfFiles(files)).catch(err => {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([err]);\n throw err;\n }).then(() => {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFields)[_checkRequiredMetaFields](files)) {\n throw new RestrictionError(this.i18n('missingRequiredMetaField'));\n }\n }).catch(err => {\n // Doing this in a separate catch because we already emited and logged\n // all the errors in `checkRequiredMetaFields` so we only throw a generic\n // missing fields error here.\n throw err;\n }).then(() => {\n const {\n currentUploads\n } = this.getState();\n // get a list of files that are currently assigned to uploads\n const currentlyUploadingFiles = Object.values(currentUploads).flatMap(curr => curr.fileIDs);\n const waitingFileIDs = [];\n Object.keys(files).forEach(fileID => {\n const file = this.getFile(fileID);\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n const uploadID = _classPrivateFieldLooseBase(this, _createUpload)[_createUpload](waitingFileIDs);\n return _classPrivateFieldLooseBase(this, _runUpload)[_runUpload](uploadID);\n }).catch(err => {\n this.emit('error', err);\n this.log(err, 'error');\n throw err;\n });\n }\n}\nfunction _informAndEmit2(errors) {\n for (const error of errors) {\n if (error.isRestriction) {\n this.emit('restriction-failed', error.file, error);\n } else {\n this.emit('error', error, error.file);\n }\n this.log(error, 'warning');\n }\n const userFacingErrors = errors.filter(error => error.isUserFacing);\n\n // don't flood the user: only show the first 4 toasts\n const maxNumToShow = 4;\n const firstErrors = userFacingErrors.slice(0, maxNumToShow);\n const additionalErrors = userFacingErrors.slice(maxNumToShow);\n firstErrors.forEach(_ref2 => {\n let {\n message,\n details = ''\n } = _ref2;\n this.info({\n message,\n details\n }, 'error', this.opts.infoTimeout);\n });\n if (additionalErrors.length > 0) {\n this.info({\n message: this.i18n('additionalRestrictionsFailed', {\n count: additionalErrors.length\n })\n });\n }\n}\nfunction _checkRequiredMetaFieldsOnFile2(file) {\n const {\n missingFields,\n error\n } = _classPrivateFieldLooseBase(this, _restricter)[_restricter].getMissingRequiredMetaFields(file);\n if (missingFields.length > 0) {\n this.setFileState(file.id, {\n missingRequiredMetaFields: missingFields\n });\n this.log(error.message);\n this.emit('restriction-failed', file, error);\n return false;\n }\n return true;\n}\nfunction _checkRequiredMetaFields2(files) {\n let success = true;\n for (const file of Object.values(files)) {\n if (!_classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file)) {\n success = false;\n }\n }\n return success;\n}\nfunction _assertNewUploadAllowed2(file) {\n const {\n allowNewUpload\n } = this.getState();\n if (allowNewUpload === false) {\n const error = new RestrictionError(this.i18n('noMoreFilesAllowed'), {\n file\n });\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n throw error;\n }\n}\nfunction _transformFile2(fileDescriptorOrFile) {\n // Uppy expects files in { name, type, size, data } format.\n // If the actual File object is passed from input[type=file] or drag-drop,\n // we normalize it to match Uppy file object\n const file = fileDescriptorOrFile instanceof File ? {\n name: fileDescriptorOrFile.name,\n type: fileDescriptorOrFile.type,\n size: fileDescriptorOrFile.size,\n data: fileDescriptorOrFile\n } : fileDescriptorOrFile;\n const fileType = getFileType(file);\n const fileName = getFileName(fileType, file);\n const fileExtension = getFileNameAndExtension(fileName).extension;\n const id = getSafeFileId(file, this.getID());\n const meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType;\n\n // `null` means the size is unknown.\n const size = Number.isFinite(file.data.size) ? file.data.size : null;\n return {\n source: file.source || '',\n id,\n name: fileName,\n extension: fileExtension || '',\n meta: {\n ...this.getState().meta,\n ...meta\n },\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: false,\n bytesTotal: size,\n uploadComplete: false,\n uploadStarted: null\n },\n size,\n isGhost: false,\n isRemote: file.isRemote || false,\n remote: file.remote,\n preview: file.preview\n };\n}\nfunction _startIfAutoProceed2() {\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(() => {\n this.scheduledAutoProceed = null;\n this.upload().catch(err => {\n if (!err.isRestriction) {\n this.log(err.stack || err.message || err);\n }\n });\n }, 4);\n }\n}\nfunction _checkAndUpdateFileState2(filesToAdd) {\n const {\n files: existingFiles\n } = this.getState();\n\n // create a copy of the files object only once\n const nextFilesState = {\n ...existingFiles\n };\n const validFilesToAdd = [];\n const errors = [];\n for (const fileToAdd of filesToAdd) {\n try {\n var _existingFiles$newFil;\n let newFile = _classPrivateFieldLooseBase(this, _transformFile)[_transformFile](fileToAdd);\n\n // If a file has been recovered (Golden Retriever), but we were unable to recover its data (probably too large),\n // users are asked to re-select these half-recovered files and then this method will be called again.\n // In order to keep the progress, meta and everything else, we keep the existing file,\n // but we replace `data`, and we remove `isGhost`, because the file is no longer a ghost now\n const isGhost = (_existingFiles$newFil = existingFiles[newFile.id]) == null ? void 0 : _existingFiles$newFil.isGhost;\n if (isGhost) {\n const existingFileState = existingFiles[newFile.id];\n newFile = {\n ...existingFileState,\n isGhost: false,\n data: fileToAdd.data\n };\n this.log(`Replaced the blob in the restored ghost file: ${newFile.name}, ${newFile.id}`);\n }\n const onBeforeFileAddedResult = this.opts.onBeforeFileAdded(newFile, nextFilesState);\n if (!onBeforeFileAddedResult && this.checkIfFileAlreadyExists(newFile.id)) {\n var _newFile$name;\n throw new RestrictionError(this.i18n('noDuplicates', {\n fileName: (_newFile$name = newFile.name) != null ? _newFile$name : this.i18n('unnamed')\n }), {\n file: fileToAdd\n });\n }\n\n // Pass through reselected files from Golden Retriever\n if (onBeforeFileAddedResult === false && !isGhost) {\n // Don’t show UI info for this error, as it should be done by the developer\n throw new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.', {\n isUserFacing: false,\n file: fileToAdd\n });\n } else if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult !== null) {\n newFile = onBeforeFileAddedResult;\n }\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateSingleFile(newFile);\n\n // need to add it to the new local state immediately, so we can use the state to validate the next files too\n nextFilesState[newFile.id] = newFile;\n validFilesToAdd.push(newFile);\n } catch (err) {\n errors.push(err);\n }\n }\n try {\n // need to run this separately because it's much more slow, so if we run it inside the for-loop it will be very slow\n // when many files are added\n _classPrivateFieldLooseBase(this, _restricter)[_restricter].validateAggregateRestrictions(Object.values(existingFiles), validFilesToAdd);\n } catch (err) {\n errors.push(err);\n\n // If we have any aggregate error, don't allow adding this batch\n return {\n nextFilesState: existingFiles,\n validFilesToAdd: [],\n errors\n };\n }\n return {\n nextFilesState,\n validFilesToAdd,\n errors\n };\n}\nfunction _updateTotalProgress2() {\n var _totalProgressPercent, _totalProgressPercent2;\n const totalProgress = _classPrivateFieldLooseBase(this, _calculateTotalProgress)[_calculateTotalProgress]();\n let totalProgressPercent = null;\n if (totalProgress != null) {\n totalProgressPercent = Math.round(totalProgress * 100);\n if (totalProgressPercent > 100) totalProgressPercent = 100;else if (totalProgressPercent < 0) totalProgressPercent = 0;\n }\n this.emit('progress', (_totalProgressPercent = totalProgressPercent) != null ? _totalProgressPercent : 0);\n this.setState({\n totalProgress: (_totalProgressPercent2 = totalProgressPercent) != null ? _totalProgressPercent2 : 0\n });\n}\nfunction _calculateTotalProgress2() {\n // calculate total progress, using the number of files currently uploading,\n // between 0 and 1 and sum of individual progress of each file\n const files = this.getFiles();\n\n // note: also includes files that have completed uploading:\n const filesInProgress = files.filter(file => {\n return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n });\n if (filesInProgress.length === 0) {\n return 0;\n }\n if (filesInProgress.every(file => file.progress.uploadComplete)) {\n // If every uploading file is complete, and we're still getting progress, it probably means\n // there's a bug somewhere in some progress reporting code (maybe not even our code)\n // and we're still getting progress, so let's just assume it means a 100% progress\n return 1;\n }\n const isSizedFile = file => file.progress.bytesTotal != null && file.progress.bytesTotal !== 0;\n const sizedFilesInProgress = filesInProgress.filter(isSizedFile);\n const unsizedFilesInProgress = filesInProgress.filter(file => !isSizedFile(file));\n if (sizedFilesInProgress.every(file => file.progress.uploadComplete) && unsizedFilesInProgress.length > 0 && !unsizedFilesInProgress.every(file => file.progress.uploadComplete)) {\n // we are done with uploading all files of known size, however\n // there is at least one file with unknown size still uploading,\n // and we cannot say anything about their progress\n // In any case, return null because it doesn't make any sense to show a progress\n return null;\n }\n const totalFilesSize = sizedFilesInProgress.reduce((acc, file) => {\n var _file$progress$bytesT;\n return acc + ((_file$progress$bytesT = file.progress.bytesTotal) != null ? _file$progress$bytesT : 0);\n }, 0);\n const totalUploadedSize = sizedFilesInProgress.reduce((acc, file) => acc + (file.progress.bytesUploaded || 0), 0);\n return totalFilesSize === 0 ? 0 : totalUploadedSize / totalFilesSize;\n}\nfunction _addListeners2() {\n // Type inference only works for inline functions so we have to type it again\n const errorHandler = (error, file, response) => {\n let errorMsg = error.message || 'Unknown error';\n if (error.details) {\n errorMsg += ` ${error.details}`;\n }\n this.setState({\n error: errorMsg\n });\n if (file != null && file.id in this.getState().files) {\n this.setFileState(file.id, {\n error: errorMsg,\n response\n });\n }\n };\n this.on('error', errorHandler);\n this.on('upload-error', (file, error, response) => {\n errorHandler(error, file, response);\n if (typeof error === 'object' && error.message) {\n var _file$name;\n this.log(error.message, 'error');\n const newError = new Error(this.i18n('failedToUpload', {\n file: (_file$name = file == null ? void 0 : file.name) != null ? _file$name : ''\n })); // we may want a new custom error here\n newError.isUserFacing = true; // todo maybe don't do this with all errors?\n newError.details = error.message;\n if (error.details) {\n newError.details += ` ${error.details}`;\n }\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([newError]);\n } else {\n _classPrivateFieldLooseBase(this, _informAndEmit)[_informAndEmit]([error]);\n }\n });\n let uploadStalledWarningRecentlyEmitted = null;\n this.on('upload-stalled', (error, files) => {\n const {\n message\n } = error;\n const details = files.map(file => file.meta.name).join(', ');\n if (!uploadStalledWarningRecentlyEmitted) {\n this.info({\n message,\n details\n }, 'warning', this.opts.infoTimeout);\n uploadStalledWarningRecentlyEmitted = setTimeout(() => {\n uploadStalledWarningRecentlyEmitted = null;\n }, this.opts.infoTimeout);\n }\n this.log(`${message} ${details}`.trim(), 'warning');\n });\n this.on('upload', () => {\n this.setState({\n error: null\n });\n });\n const onUploadStarted = files => {\n const filesFiltered = files.filter(file => {\n const exists = file != null && this.getFile(file.id);\n if (!exists) this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return exists;\n });\n const filesState = Object.fromEntries(filesFiltered.map(file => [file.id, {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n bytesUploaded: 0,\n bytesTotal: file.size\n }\n }]));\n this.patchFilesState(filesState);\n };\n this.on('upload-start', onUploadStarted);\n this.on('upload-progress', _classPrivateFieldLooseBase(this, _handleUploadProgress)[_handleUploadProgress]);\n this.on('upload-success', (file, uploadResp) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const currentProgress = this.getFile(file.id).progress;\n this.setFileState(file.id, {\n progress: {\n ...currentProgress,\n postprocess: _classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors].size > 0 ? {\n mode: 'indeterminate'\n } : undefined,\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal\n },\n response: uploadResp,\n uploadURL: uploadResp.uploadURL,\n isPaused: false\n });\n\n // Remote providers sometimes don't tell us the file size,\n // but we can know how many bytes we uploaded once the upload is complete.\n if (file.size == null) {\n this.setFileState(file.id, {\n size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n });\n }\n _classPrivateFieldLooseBase(this, _updateTotalProgressThrottled)[_updateTotalProgressThrottled]();\n });\n this.on('preprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getFile(file.id).progress,\n preprocess: progress\n }\n });\n });\n this.on('preprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.preprocess;\n this.setState({\n files\n });\n });\n this.on('postprocess-progress', (file, progress) => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n this.setFileState(file.id, {\n progress: {\n ...this.getState().files[file.id].progress,\n postprocess: progress\n }\n });\n });\n this.on('postprocess-complete', file => {\n if (file == null || !this.getFile(file.id)) {\n this.log(`Not setting progress for a file that has been removed: ${file == null ? void 0 : file.id}`);\n return;\n }\n const files = {\n ...this.getState().files\n };\n files[file.id] = {\n ...files[file.id],\n progress: {\n ...files[file.id].progress\n }\n };\n delete files[file.id].progress.postprocess;\n this.setState({\n files\n });\n });\n this.on('restored', () => {\n // Files may have changed--ensure progress is still accurate.\n _classPrivateFieldLooseBase(this, _updateTotalProgressThrottled)[_updateTotalProgressThrottled]();\n });\n\n // @ts-expect-error should fix itself when dashboard it typed (also this doesn't belong here)\n this.on('dashboard:file-edit-complete', file => {\n if (file) {\n _classPrivateFieldLooseBase(this, _checkRequiredMetaFieldsOnFile)[_checkRequiredMetaFieldsOnFile](file);\n }\n });\n\n // show informer if offline\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n window.addEventListener('offline', _classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus]);\n setTimeout(_classPrivateFieldLooseBase(this, _updateOnlineStatus)[_updateOnlineStatus], 3000);\n }\n}\nfunction _createUpload2(fileIDs, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n const {\n forceAllowNewUpload = false\n } = opts;\n const {\n allowNewUpload,\n currentUploads\n } = this.getState();\n if (!allowNewUpload && !forceAllowNewUpload) {\n throw new Error('Cannot create a new upload: already uploading.');\n }\n const uploadID = nanoid();\n this.emit('upload', uploadID, this.getFilesByIds(fileIDs));\n this.setState({\n allowNewUpload: this.opts.allowMultipleUploadBatches !== false && this.opts.allowMultipleUploads !== false,\n currentUploads: {\n ...currentUploads,\n [uploadID]: {\n fileIDs,\n step: 0,\n result: {}\n }\n }\n });\n return uploadID;\n}\nfunction _getUpload2(uploadID) {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n}\nfunction _removeUpload2(uploadID) {\n const currentUploads = {\n ...this.getState().currentUploads\n };\n delete currentUploads[uploadID];\n this.setState({\n currentUploads\n });\n}\nasync function _runUpload2(uploadID) {\n const getCurrentUpload = () => {\n const {\n currentUploads\n } = this.getState();\n return currentUploads[uploadID];\n };\n let currentUpload = getCurrentUpload();\n const steps = [..._classPrivateFieldLooseBase(this, _preProcessors)[_preProcessors], ..._classPrivateFieldLooseBase(this, _uploaders)[_uploaders], ..._classPrivateFieldLooseBase(this, _postProcessors)[_postProcessors]];\n try {\n for (let step = currentUpload.step || 0; step < steps.length; step++) {\n if (!currentUpload) {\n break;\n }\n const fn = steps[step];\n this.setState({\n currentUploads: {\n ...this.getState().currentUploads,\n [uploadID]: {\n ...currentUpload,\n step\n }\n }\n });\n const {\n fileIDs\n } = currentUpload;\n\n // TODO give this the `updatedUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n await fn(fileIDs, uploadID);\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n } catch (err) {\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n throw err;\n }\n\n // Set result data.\n if (currentUpload) {\n // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n // stuck in the postprocessing UI while the upload is fully complete.\n // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n // all, and never mark the postprocessing as complete. This is fine on its own but we\n // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n // before the postprocessing plugins can emit events.\n //\n // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n // postprocessing completion, we do it instead.\n currentUpload.fileIDs.forEach(fileID => {\n const file = this.getFile(fileID);\n if (file && file.progress.postprocess) {\n this.emit('postprocess-complete', file);\n }\n });\n const files = currentUpload.fileIDs.map(fileID => this.getFile(fileID));\n const successful = files.filter(file => !file.error);\n const failed = files.filter(file => file.error);\n this.addResultData(uploadID, {\n successful,\n failed,\n uploadID\n });\n\n // Update currentUpload value in case it was modified asynchronously.\n currentUpload = getCurrentUpload();\n }\n // Emit completion events.\n // This is in a separate function so that the `currentUploads` variable\n // always refers to the latest state. In the handler right above it refers\n // to an outdated object without the `.result` property.\n let result;\n if (currentUpload) {\n result = currentUpload.result;\n this.emit('complete', result);\n _classPrivateFieldLooseBase(this, _removeUpload)[_removeUpload](uploadID);\n }\n if (result == null) {\n this.log(`Not setting result for an upload that has been removed: ${uploadID}`);\n }\n return result;\n}\nUppy.VERSION = packageJson.version;\nexport default Uppy;","/* eslint-disable class-methods-use-this */\n\n/**\n * Core plugin logic that all plugins share.\n *\n * BasePlugin does not contain DOM rendering so it can be used for plugins\n * without a user interface.\n *\n * See `Plugin` for the extended version with Preact rendering for interfaces.\n */\n\nimport Translator from '@uppy/utils/lib/Translator';\n\n/**\n * DefinePluginOpts marks all of the passed AlwaysDefinedKeys as “required†or “always definedâ€.\n */\n\nexport default class BasePlugin {\n constructor(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts != null ? opts : {};\n }\n getPluginState() {\n const {\n plugins\n } = this.uppy.getState();\n return (plugins == null ? void 0 : plugins[this.id]) || {};\n }\n setPluginState(update) {\n const {\n plugins\n } = this.uppy.getState();\n this.uppy.setState({\n plugins: {\n ...plugins,\n [this.id]: {\n ...plugins[this.id],\n ...update\n }\n }\n });\n }\n setOptions(newOpts) {\n this.opts = {\n ...this.opts,\n ...newOpts\n };\n this.setPluginState(undefined); // so that UI re-renders with new options\n this.i18nInit();\n }\n i18nInit() {\n const translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = translator.translate.bind(translator);\n this.i18nArray = translator.translateArray.bind(translator);\n this.setPluginState(undefined); // so that UI re-renders and we see the updated locale\n }\n\n /**\n * Extendable methods\n * ==================\n * These methods are here to serve as an overview of the extendable methods as well as\n * making them not conditional in use, such as `if (this.afterUpdate)`.\n */\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n addTarget(plugin) {\n throw new Error(\"Extend the addTarget method to add your plugin to another plugin's target\");\n }\n install() {}\n uninstall() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n update(state) {}\n\n // Called after every state update, after everything's mounted. Debounced.\n afterUpdate() {}\n}","class UserFacingApiError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'UserFacingApiError';\n }\n}\nexport default UserFacingApiError;","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {...options};\n\t\toptions.onFailedAttempt ??= () => {};\n\t\toptions.shouldRetry ??= () => true;\n\t\toptions.retries ??= 10;\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tdecorateErrorWithCounts(error, attemptNumber, options);\n\n\t\t\t\t\tif (!(await options.shouldRetry(error))) {\n\t\t\t\t\t\toperation.stop();\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(error);\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","class NetworkError extends Error {\n constructor(error, xhr) {\n if (xhr === void 0) {\n xhr = null;\n }\n super(`This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.`);\n this.cause = error;\n this.isNetworkError = true;\n this.request = xhr;\n }\n}\nexport default NetworkError;","import NetworkError from './NetworkError.js';\n\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\nexport default function fetchWithNetworkError() {\n return fetch(...arguments).catch(err => {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n });\n}","export default function has(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}","import hasProperty from './hasProperty.js';\nclass ErrorWithCause extends Error {\n constructor(message, options) {\n super(message);\n this.cause = options == null ? void 0 : options.cause;\n if (this.cause && hasProperty(this.cause, 'isNetworkError')) {\n this.isNetworkError = this.cause.isNetworkError;\n } else {\n this.isNetworkError = false;\n }\n }\n}\nexport default ErrorWithCause;","export default function getSocketHost(url) {\n var _regex$exec;\n // get the host domain\n const regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n const host = (_regex$exec = regex.exec(url)) == null ? void 0 : _regex$exec[1];\n const socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n return `${socketProtocol}://${host}`;\n}","'use strict';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n this.name = 'AuthError';\n\n // we use a property because of instanceof is unsafe:\n // https://github.com/transloadit/uppy/pull/4619#discussion_r1406225982\n this.isAuthError = true;\n }\n}\nexport default AuthError;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport UserFacingApiError from '@uppy/utils/lib/UserFacingApiError';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport pRetry, { AbortError } from 'p-retry';\nimport fetchWithNetworkError from '@uppy/utils/lib/fetchWithNetworkError';\nimport ErrorWithCause from '@uppy/utils/lib/ErrorWithCause';\nimport getSocketHost from '@uppy/utils/lib/getSocketHost';\nimport AuthError from './AuthError.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.4.1\"\n};\n// Remove the trailing slash so we can always safely append /xyz.\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\nconst retryCount = 10; // set to a low number, like 2 to test manual user retries\nconst socketActivityTimeoutMs = 5 * 60 * 1000; // set to a low number like 10000 to test this\n\nexport const authErrorStatusCode = 401;\nclass HttpError extends Error {\n constructor(_ref) {\n let {\n statusCode,\n message\n } = _ref;\n super(message);\n this.name = 'HttpError';\n this.statusCode = statusCode;\n }\n}\nasync function handleJSONResponse(res) {\n if (res.status === authErrorStatusCode) {\n throw new AuthError();\n }\n if (res.ok) {\n return res.json();\n }\n let errMsg = `Failed request with status: ${res.status}. ${res.statusText}`;\n let errData;\n try {\n errData = await res.json();\n if (errData.message) errMsg = `${errMsg} message: ${errData.message}`;\n if (errData.requestId) errMsg = `${errMsg} request-Id: ${errData.requestId}`;\n } catch (cause) {\n // if the response contains invalid JSON, let's ignore the error data\n throw new Error(errMsg, {\n cause\n });\n }\n if (res.status >= 400 && res.status <= 499 && errData.message) {\n throw new UserFacingApiError(errData.message);\n }\n throw new HttpError({\n statusCode: res.status,\n message: errMsg\n });\n}\nfunction emitSocketProgress(uploader, progressData, file) {\n const {\n progress,\n bytesUploaded,\n bytesTotal\n } = progressData;\n if (progress) {\n var _file$progress$upload;\n uploader.uppy.log(`Upload progress: ${progress}`);\n uploader.uppy.emit('upload-progress', file, {\n uploadStarted: (_file$progress$upload = file.progress.uploadStarted) != null ? _file$progress$upload : 0,\n bytesUploaded,\n bytesTotal\n });\n }\n}\nvar _companionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionHeaders\");\nvar _getUrl = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUrl\");\nvar _requestSocketToken = /*#__PURE__*/_classPrivateFieldLooseKey(\"requestSocketToken\");\nvar _awaitRemoteFileUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"awaitRemoteFileUpload\");\nexport default class RequestClient {\n constructor(uppy, opts) {\n /**\n * This method will ensure a websocket for the specified file and returns a promise that resolves\n * when the file has finished downloading, or rejects if it fails.\n * It will retry if the websocket gets disconnected\n */\n Object.defineProperty(this, _awaitRemoteFileUpload, {\n value: _awaitRemoteFileUpload2\n });\n Object.defineProperty(this, _getUrl, {\n value: _getUrl2\n });\n Object.defineProperty(this, _companionHeaders, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requestSocketToken, {\n writable: true,\n value: async _ref2 => {\n var _file$remote;\n let {\n file,\n postBody,\n signal\n } = _ref2;\n if (((_file$remote = file.remote) == null ? void 0 : _file$remote.url) == null) {\n throw new Error('Cannot connect to an undefined URL');\n }\n const res = await this.post(file.remote.url, {\n ...file.remote.body,\n ...postBody\n }, {\n signal\n });\n return res.token;\n }\n });\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts.companionHeaders;\n }\n setCompanionHeaders(headers) {\n _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = headers;\n }\n [Symbol.for('uppy test: getCompanionHeaders')]() {\n return _classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders];\n }\n get hostname() {\n const {\n companion\n } = this.uppy.getState();\n const host = this.opts.companionUrl;\n return stripSlash(companion && companion[host] ? companion[host] : host);\n }\n async headers(emptyBody) {\n if (emptyBody === void 0) {\n emptyBody = false;\n }\n const defaultHeaders = {\n Accept: 'application/json',\n ...(emptyBody ? undefined : {\n // Passing those headers on requests with no data forces browsers to first make a preflight request.\n 'Content-Type': 'application/json'\n })\n };\n return {\n ...defaultHeaders,\n ..._classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders]\n };\n }\n onReceiveResponse(res) {\n const {\n headers\n } = res;\n const state = this.uppy.getState();\n const companion = state.companion || {};\n const host = this.opts.companionUrl;\n\n // Store the self-identified domain name for the Companion instance we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n this.uppy.setState({\n companion: {\n ...companion,\n [host]: headers.get('i-am')\n }\n });\n }\n }\n async request(_ref3) {\n let {\n path,\n method = 'GET',\n data,\n skipPostResponse,\n signal\n } = _ref3;\n try {\n const headers = await this.headers(!data);\n const response = await fetchWithNetworkError(_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path), {\n method,\n signal,\n headers,\n credentials: this.opts.companionCookiesRule || 'same-origin',\n body: data ? JSON.stringify(data) : null\n });\n if (!skipPostResponse) this.onReceiveResponse(response);\n return await handleJSONResponse(response);\n } catch (err) {\n // pass these through\n if (err.isAuthError || err.name === 'UserFacingApiError' || err.name === 'AbortError') throw err;\n throw new ErrorWithCause(`Could not ${method} ${_classPrivateFieldLooseBase(this, _getUrl)[_getUrl](path)}`, {\n cause: err\n });\n }\n }\n async get(path, options) {\n return this.request({\n ...options,\n path\n });\n }\n async post(path, data, options) {\n return this.request({\n ...options,\n path,\n method: 'POST',\n data\n });\n }\n async delete(path, data, options) {\n return this.request({\n ...options,\n path,\n method: 'DELETE',\n data\n });\n }\n\n /**\n * Remote uploading consists of two steps:\n * 1. #requestSocketToken which starts the download/upload in companion and returns a unique token for the upload.\n * Then companion will halt the upload until:\n * 2. #awaitRemoteFileUpload is called, which will open/ensure a websocket connection towards companion, with the\n * previously generated token provided. It returns a promise that will resolve/reject once the file has finished\n * uploading or is otherwise done (failed, canceled)\n */\n async uploadRemoteFile(file, reqBody, options) {\n var _this = this;\n try {\n const {\n signal,\n getQueue\n } = options || {};\n return await pRetry(async () => {\n var _this$uppy$getFile;\n // if we already have a serverToken, assume that we are resuming the existing server upload id\n const existingServerToken = (_this$uppy$getFile = this.uppy.getFile(file.id)) == null ? void 0 : _this$uppy$getFile.serverToken;\n if (existingServerToken != null) {\n this.uppy.log(`Connecting to exiting websocket ${existingServerToken}`);\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file,\n queue: getQueue(),\n signal\n });\n }\n const queueRequestSocketToken = getQueue().wrapPromiseFunction(async function () {\n try {\n return await _classPrivateFieldLooseBase(_this, _requestSocketToken)[_requestSocketToken](...arguments);\n } catch (outerErr) {\n // throwing AbortError will cause p-retry to stop retrying\n if (outerErr.isAuthError) throw new AbortError(outerErr);\n if (outerErr.cause == null) throw outerErr;\n const err = outerErr.cause;\n const isRetryableHttpError = () => [408, 409, 429, 418, 423].includes(err.statusCode) || err.statusCode >= 500 && err.statusCode <= 599 && ![501, 505].includes(err.statusCode);\n if (err.name === 'HttpError' && !isRetryableHttpError()) throw new AbortError(err);\n\n // p-retry will retry most other errors,\n // but it will not retry TypeError (except network error TypeErrors)\n throw err;\n }\n }, {\n priority: -1\n });\n const serverToken = await queueRequestSocketToken({\n file,\n postBody: reqBody,\n signal\n }).abortOn(signal);\n if (!this.uppy.getFile(file.id)) return undefined; // has file since been removed?\n\n this.uppy.setFileState(file.id, {\n serverToken\n });\n return _classPrivateFieldLooseBase(this, _awaitRemoteFileUpload)[_awaitRemoteFileUpload]({\n file: this.uppy.getFile(file.id),\n // re-fetching file because it might have changed in the meantime\n queue: getQueue(),\n signal\n });\n }, {\n retries: retryCount,\n signal,\n onFailedAttempt: err => this.uppy.log(`Retrying upload due to: ${err.message}`, 'warning')\n });\n } catch (err) {\n // this is a bit confusing, but note that an error with the `name` prop set to 'AbortError' (from AbortController)\n // is not the same as `p-retry` `AbortError`\n if (err.name === 'AbortError') {\n // The file upload was aborted, it’s not an error\n return undefined;\n }\n this.uppy.emit('upload-error', file, err);\n throw err;\n }\n }\n}\nfunction _getUrl2(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n return `${this.hostname}/${url}`;\n}\nasync function _awaitRemoteFileUpload2(_ref4) {\n let {\n file,\n queue,\n signal\n } = _ref4;\n let removeEventHandlers;\n const {\n capabilities\n } = this.uppy.getState();\n try {\n return await new Promise((resolve, reject) => {\n const token = file.serverToken;\n const host = getSocketHost(file.remote.companionUrl);\n let socket;\n let socketAbortController;\n let activityTimeout;\n let {\n isPaused\n } = file;\n const socketSend = (action, payload) => {\n if (socket == null || socket.readyState !== socket.OPEN) {\n var _socket;\n this.uppy.log(`Cannot send \"${action}\" to socket ${file.id} because the socket state was ${String((_socket = socket) == null ? void 0 : _socket.readyState)}`, 'warning');\n return;\n }\n socket.send(JSON.stringify({\n action,\n payload: payload != null ? payload : {}\n }));\n };\n function sendState() {\n if (!capabilities.resumableUploads) return;\n if (isPaused) socketSend('pause');else socketSend('resume');\n }\n const createWebsocket = async () => {\n if (socketAbortController) socketAbortController.abort();\n socketAbortController = new AbortController();\n const onFatalError = err => {\n var _socketAbortControlle;\n // Remove the serverToken so that a new one will be created for the retry.\n this.uppy.setFileState(file.id, {\n serverToken: null\n });\n (_socketAbortControlle = socketAbortController) == null || _socketAbortControlle.abort == null || _socketAbortControlle.abort();\n reject(err);\n };\n\n // todo instead implement the ability for users to cancel / retry *currently uploading files* in the UI\n function resetActivityTimeout() {\n clearTimeout(activityTimeout);\n if (isPaused) return;\n activityTimeout = setTimeout(() => onFatalError(new Error('Timeout waiting for message from Companion socket')), socketActivityTimeoutMs);\n }\n try {\n await queue.wrapPromiseFunction(async () => {\n const reconnectWebsocket = async () =>\n // eslint-disable-next-line promise/param-names\n new Promise((_, rejectSocket) => {\n socket = new WebSocket(`${host}/api/${token}`);\n resetActivityTimeout();\n socket.addEventListener('close', () => {\n socket = undefined;\n rejectSocket(new Error('Socket closed unexpectedly'));\n });\n socket.addEventListener('error', error => {\n var _socket2;\n this.uppy.log(`Companion socket error ${JSON.stringify(error)}, closing socket`, 'warning');\n (_socket2 = socket) == null || _socket2.close(); // will 'close' event to be emitted\n });\n socket.addEventListener('open', () => {\n sendState();\n });\n socket.addEventListener('message', e => {\n resetActivityTimeout();\n try {\n const {\n action,\n payload\n } = JSON.parse(e.data);\n switch (action) {\n case 'progress':\n {\n emitSocketProgress(this, payload, this.uppy.getFile(file.id));\n break;\n }\n case 'success':\n {\n var _payload$response, _payload$response$sta, _payload$response2, _socketAbortControlle2;\n // payload.response is sent from companion for xhr-upload (aka uploadMultipart in companion) and\n // s3 multipart (aka uploadS3Multipart)\n // but not for tus/transloadit (aka uploadTus)\n // responseText is a string which may or may not be in JSON format\n // this means that an upload destination of xhr or s3 multipart MUST respond with valid JSON\n // to companion, or the JSON.parse will crash\n const text = (_payload$response = payload.response) == null ? void 0 : _payload$response.responseText;\n this.uppy.emit('upload-success', this.uppy.getFile(file.id), {\n uploadURL: payload.url,\n status: (_payload$response$sta = (_payload$response2 = payload.response) == null ? void 0 : _payload$response2.status) != null ? _payload$response$sta : 200,\n body: text ? JSON.parse(text) : undefined\n });\n (_socketAbortControlle2 = socketAbortController) == null || _socketAbortControlle2.abort == null || _socketAbortControlle2.abort();\n resolve();\n break;\n }\n case 'error':\n {\n const {\n message\n } = payload.error;\n throw Object.assign(new Error(message), {\n cause: payload.error\n });\n }\n default:\n this.uppy.log(`Companion socket unknown action ${action}`, 'warning');\n }\n } catch (err) {\n onFatalError(err);\n }\n });\n const closeSocket = () => {\n this.uppy.log(`Closing socket ${file.id}`);\n clearTimeout(activityTimeout);\n if (socket) socket.close();\n socket = undefined;\n };\n socketAbortController.signal.addEventListener('abort', () => {\n closeSocket();\n });\n });\n await pRetry(reconnectWebsocket, {\n retries: retryCount,\n signal: socketAbortController.signal,\n onFailedAttempt: () => {\n if (socketAbortController.signal.aborted) return; // don't log in this case\n this.uppy.log(`Retrying websocket ${file.id}`);\n }\n });\n })().abortOn(socketAbortController.signal);\n } catch (err) {\n if (socketAbortController.signal.aborted) return;\n onFatalError(err);\n }\n };\n const pause = newPausedState => {\n if (!capabilities.resumableUploads) return;\n isPaused = newPausedState;\n if (socket) sendState();\n };\n const onFileRemove = targetFile => {\n var _socketAbortControlle3;\n if (!capabilities.individualCancellation) return;\n if (targetFile.id !== file.id) return;\n socketSend('cancel');\n (_socketAbortControlle3 = socketAbortController) == null || _socketAbortControlle3.abort == null || _socketAbortControlle3.abort();\n this.uppy.log(`upload ${file.id} was removed`);\n resolve();\n };\n const onCancelAll = () => {\n var _socketAbortControlle4;\n socketSend('cancel');\n (_socketAbortControlle4 = socketAbortController) == null || _socketAbortControlle4.abort == null || _socketAbortControlle4.abort();\n this.uppy.log(`upload ${file.id} was canceled`);\n resolve();\n };\n const onFilePausedChange = (targetFile, newPausedState) => {\n if ((targetFile == null ? void 0 : targetFile.id) !== file.id) return;\n pause(newPausedState);\n };\n const onPauseAll = () => pause(true);\n const onResumeAll = () => pause(false);\n this.uppy.on('file-removed', onFileRemove);\n this.uppy.on('cancel-all', onCancelAll);\n this.uppy.on('upload-pause', onFilePausedChange);\n this.uppy.on('pause-all', onPauseAll);\n this.uppy.on('resume-all', onResumeAll);\n removeEventHandlers = () => {\n this.uppy.off('file-removed', onFileRemove);\n this.uppy.off('cancel-all', onCancelAll);\n this.uppy.off('upload-pause', onFilePausedChange);\n this.uppy.off('pause-all', onPauseAll);\n this.uppy.off('resume-all', onResumeAll);\n };\n signal.addEventListener('abort', () => {\n var _socketAbortControlle5;\n (_socketAbortControlle5 = socketAbortController) == null || _socketAbortControlle5.abort();\n });\n createWebsocket();\n });\n } finally {\n // @ts-expect-error used before defined\n removeEventHandlers == null || removeEventHandlers();\n }\n}\nRequestClient.VERSION = packageJson.version;","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nvar _uppy = /*#__PURE__*/_classPrivateFieldLooseKey(\"uppy\");\nvar _events = /*#__PURE__*/_classPrivateFieldLooseKey(\"events\");\n/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nexport default class EventManager {\n constructor(uppy) {\n Object.defineProperty(this, _uppy, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _events, {\n writable: true,\n value: []\n });\n _classPrivateFieldLooseBase(this, _uppy)[_uppy] = uppy;\n }\n on(event, fn) {\n _classPrivateFieldLooseBase(this, _events)[_events].push([event, fn]);\n return _classPrivateFieldLooseBase(this, _uppy)[_uppy].on(event, fn);\n }\n remove() {\n for (const [event, fn] of _classPrivateFieldLooseBase(this, _events)[_events].splice(0)) {\n _classPrivateFieldLooseBase(this, _uppy)[_uppy].off(event, fn);\n }\n }\n onFilePause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === (file == null ? void 0 : file.id)) {\n cb(isPaused);\n }\n });\n }\n onFileRemove(fileID, cb) {\n this.on('file-removed', file => {\n if (fileID === file.id) cb(file.id);\n });\n }\n onPause(fileID, cb) {\n this.on('upload-pause', (file, isPaused) => {\n if (fileID === (file == null ? void 0 : file.id)) {\n // const isPaused = this.#uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n }\n onRetry(fileID, cb) {\n this.on('upload-retry', file => {\n if (fileID === (file == null ? void 0 : file.id)) {\n cb();\n }\n });\n }\n onRetryAll(fileID, cb) {\n this.on('retry-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onPauseAll(fileID, cb) {\n this.on('pause-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n onCancelAll(fileID, eventHandler) {\n var _this = this;\n this.on('cancel-all', function () {\n if (!_classPrivateFieldLooseBase(_this, _uppy)[_uppy].getFile(fileID)) return;\n eventHandler(...arguments);\n });\n }\n onResumeAll(fileID, cb) {\n this.on('resume-all', () => {\n if (!_classPrivateFieldLooseBase(this, _uppy)[_uppy].getFile(fileID)) return;\n cb();\n });\n }\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nfunction createCancelError(cause) {\n return new Error('Cancelled', {\n cause\n });\n}\nfunction abortOn(signal) {\n if (signal != null) {\n var _this$then;\n const abortPromise = () => this.abort(signal.reason);\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n const removeAbortListener = () => {\n signal.removeEventListener('abort', abortPromise);\n };\n (_this$then = this.then) == null || _this$then.call(this, removeAbortListener, removeAbortListener);\n }\n return this;\n}\nvar _activeRequests = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeRequests\");\nvar _queuedHandlers = /*#__PURE__*/_classPrivateFieldLooseKey(\"queuedHandlers\");\nvar _paused = /*#__PURE__*/_classPrivateFieldLooseKey(\"paused\");\nvar _pauseTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"pauseTimer\");\nvar _downLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"downLimit\");\nvar _upperLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"upperLimit\");\nvar _rateLimitingTimer = /*#__PURE__*/_classPrivateFieldLooseKey(\"rateLimitingTimer\");\nvar _call = /*#__PURE__*/_classPrivateFieldLooseKey(\"call\");\nvar _queueNext = /*#__PURE__*/_classPrivateFieldLooseKey(\"queueNext\");\nvar _next = /*#__PURE__*/_classPrivateFieldLooseKey(\"next\");\nvar _queue = /*#__PURE__*/_classPrivateFieldLooseKey(\"queue\");\nvar _dequeue = /*#__PURE__*/_classPrivateFieldLooseKey(\"dequeue\");\nvar _resume = /*#__PURE__*/_classPrivateFieldLooseKey(\"resume\");\nvar _increaseLimit = /*#__PURE__*/_classPrivateFieldLooseKey(\"increaseLimit\");\nexport class RateLimitedQueue {\n constructor(limit) {\n Object.defineProperty(this, _dequeue, {\n value: _dequeue2\n });\n Object.defineProperty(this, _queue, {\n value: _queue2\n });\n Object.defineProperty(this, _next, {\n value: _next2\n });\n Object.defineProperty(this, _queueNext, {\n value: _queueNext2\n });\n Object.defineProperty(this, _call, {\n value: _call2\n });\n Object.defineProperty(this, _activeRequests, {\n writable: true,\n value: 0\n });\n Object.defineProperty(this, _queuedHandlers, {\n writable: true,\n value: []\n });\n Object.defineProperty(this, _paused, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _pauseTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _downLimit, {\n writable: true,\n value: 1\n });\n Object.defineProperty(this, _upperLimit, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _rateLimitingTimer, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _resume, {\n writable: true,\n value: () => this.resume()\n });\n Object.defineProperty(this, _increaseLimit, {\n writable: true,\n value: () => {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused]) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 0);\n return;\n }\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = this.limit;\n this.limit = Math.ceil((_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] + _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]) / 2);\n for (let i = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit]; i <= this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n if (_classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] - _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] > 3) {\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], 2000);\n } else {\n _classPrivateFieldLooseBase(this, _downLimit)[_downLimit] = Math.floor(_classPrivateFieldLooseBase(this, _downLimit)[_downLimit] / 2);\n }\n }\n });\n if (typeof limit !== 'number' || limit === 0) {\n this.limit = Infinity;\n } else {\n this.limit = limit;\n }\n }\n run(fn, queueOptions) {\n if (!_classPrivateFieldLooseBase(this, _paused)[_paused] && _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] < this.limit) {\n return _classPrivateFieldLooseBase(this, _call)[_call](fn);\n }\n return _classPrivateFieldLooseBase(this, _queue)[_queue](fn, queueOptions);\n }\n wrapSyncFunction(fn, queueOptions) {\n var _this = this;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const queuedRequest = _this.run(() => {\n fn(...args);\n queueMicrotask(() => queuedRequest.done());\n return () => {};\n }, queueOptions);\n return {\n abortOn,\n abort() {\n queuedRequest.abort();\n }\n };\n };\n }\n wrapPromiseFunction(fn, queueOptions) {\n var _this2 = this;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n let queuedRequest;\n const outerPromise = new Promise((resolve, reject) => {\n queuedRequest = _this2.run(() => {\n let cancelError;\n let innerPromise;\n try {\n innerPromise = Promise.resolve(fn(...args));\n } catch (err) {\n innerPromise = Promise.reject(err);\n }\n innerPromise.then(result => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n resolve(result);\n }\n }, err => {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n reject(err);\n }\n });\n return cause => {\n cancelError = createCancelError(cause);\n };\n }, queueOptions);\n });\n outerPromise.abort = cause => {\n queuedRequest.abort(cause);\n };\n outerPromise.abortOn = abortOn;\n return outerPromise;\n };\n }\n resume() {\n _classPrivateFieldLooseBase(this, _paused)[_paused] = false;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n for (let i = 0; i < this.limit; i++) {\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n }\n /**\n * Freezes the queue for a while or indefinitely.\n *\n * @param {number | null } [duration] Duration for the pause to happen, in milliseconds.\n * If omitted, the queue won't resume automatically.\n */\n pause(duration) {\n if (duration === void 0) {\n duration = null;\n }\n _classPrivateFieldLooseBase(this, _paused)[_paused] = true;\n clearTimeout(_classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer]);\n if (duration != null) {\n _classPrivateFieldLooseBase(this, _pauseTimer)[_pauseTimer] = setTimeout(_classPrivateFieldLooseBase(this, _resume)[_resume], duration);\n }\n }\n\n /**\n * Pauses the queue for a duration, and lower the limit of concurrent requests\n * when the queue resumes. When the queue resumes, it tries to progressively\n * increase the limit in `this.#increaseLimit` until another call is made to\n * `this.rateLimit`.\n * Call this function when using the RateLimitedQueue for network requests and\n * the remote server responds with 429 HTTP code.\n *\n * @param {number} duration in milliseconds.\n */\n rateLimit(duration) {\n clearTimeout(_classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer]);\n this.pause(duration);\n if (this.limit > 1 && Number.isFinite(this.limit)) {\n _classPrivateFieldLooseBase(this, _upperLimit)[_upperLimit] = this.limit - 1;\n this.limit = _classPrivateFieldLooseBase(this, _downLimit)[_downLimit];\n _classPrivateFieldLooseBase(this, _rateLimitingTimer)[_rateLimitingTimer] = setTimeout(_classPrivateFieldLooseBase(this, _increaseLimit)[_increaseLimit], duration);\n }\n }\n get isPaused() {\n return _classPrivateFieldLooseBase(this, _paused)[_paused];\n }\n}\nfunction _call2(fn) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] += 1;\n let done = false;\n let cancelActive;\n try {\n cancelActive = fn();\n } catch (err) {\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n throw err;\n }\n return {\n abort: cause => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n cancelActive == null || cancelActive(cause);\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n },\n done: () => {\n if (done) return;\n done = true;\n _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] -= 1;\n _classPrivateFieldLooseBase(this, _queueNext)[_queueNext]();\n }\n };\n}\nfunction _queueNext2() {\n // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n // one by one without continuously _advancing_ it (and starting new tasks before immediately\n // aborting them)\n queueMicrotask(() => _classPrivateFieldLooseBase(this, _next)[_next]());\n}\nfunction _next2() {\n if (_classPrivateFieldLooseBase(this, _paused)[_paused] || _classPrivateFieldLooseBase(this, _activeRequests)[_activeRequests] >= this.limit) {\n return;\n }\n if (_classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].length === 0) {\n return;\n }\n\n // Dispatch the next request, and update the abort/done handlers\n // so that cancelling it does the Right Thing (and doesn't just try\n // to dequeue an already-running request).\n const next = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].shift();\n if (next == null) {\n throw new Error('Invariant violation: next is null');\n }\n const handler = _classPrivateFieldLooseBase(this, _call)[_call](next.fn);\n next.abort = handler.abort;\n next.done = handler.done;\n}\nfunction _queue2(fn, options) {\n const handler = {\n fn,\n priority: (options == null ? void 0 : options.priority) || 0,\n abort: () => {\n _classPrivateFieldLooseBase(this, _dequeue)[_dequeue](handler);\n },\n done: () => {\n throw new Error('Cannot mark a queued request as done: this indicates a bug');\n }\n };\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].findIndex(other => {\n return handler.priority > other.priority;\n });\n if (index === -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].push(handler);\n } else {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 0, handler);\n }\n return handler;\n}\nfunction _dequeue2(handler) {\n const index = _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].indexOf(handler);\n if (index !== -1) {\n _classPrivateFieldLooseBase(this, _queuedHandlers)[_queuedHandlers].splice(index, 1);\n }\n}\nexport const internalRateLimitedQueue = Symbol('__queue');","export function filterNonFailedFiles(files) {\n const hasError = file => 'error' in file && !!file.error;\n return files.filter(file => !hasError(file));\n}\n\n// Don't double-emit upload-started for Golden Retriever-restored files that were already started\nexport function filterFilesToEmitUploadStarted(files) {\n return files.filter(file => {\n var _file$progress;\n return !((_file$progress = file.progress) != null && _file$progress.uploadStarted) || !file.isRestored;\n });\n}","import hasOwnProperty from './hasProperty.js';\n/**\n * Little AbortController proxy module so we can swap out the implementation easily later.\n */\nexport const {\n AbortController\n} = globalThis;\nexport const {\n AbortSignal\n} = globalThis;\nexport const createAbortError = function (message, options) {\n if (message === void 0) {\n message = 'Aborted';\n }\n const err = new DOMException(message, 'AbortError');\n if (options != null && hasOwnProperty(options, 'cause')) {\n Object.defineProperty(err, 'cause', {\n // @ts-expect-error TS is drunk\n __proto__: null,\n configurable: true,\n writable: true,\n value: options.cause\n });\n }\n return err;\n};","export default function getAllowedMetaFields(fields, meta) {\n if (fields === true) {\n return Object.keys(meta);\n }\n if (Array.isArray(fields)) {\n return fields;\n }\n return [];\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { AbortController } from '@uppy/utils/lib/AbortController';\nconst MB = 1024 * 1024;\nconst defaultOptions = {\n getChunkSize(file) {\n return Math.ceil(file.size / 10000);\n },\n onProgress() {},\n onPartComplete() {},\n onSuccess() {},\n onError(err) {\n throw err;\n }\n};\nfunction ensureInt(value) {\n if (typeof value === 'string') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return parseInt(value, 10);\n }\n if (typeof value === 'number') {\n // @ts-expect-error TS is not able to recognize it's fine.\n return value;\n }\n throw new TypeError('Expected a number');\n}\nexport const pausingUploadReason = Symbol('pausing upload, not an actual error');\n\n/**\n * A MultipartUploader instance is used per file upload to determine whether a\n * upload should be done as multipart or as a regular S3 upload\n * (based on the user-provided `shouldUseMultipart` option value) and to manage\n * the chunk splitting.\n */\nvar _abortController = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortController\");\nvar _chunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunks\");\nvar _chunkState = /*#__PURE__*/_classPrivateFieldLooseKey(\"chunkState\");\nvar _data = /*#__PURE__*/_classPrivateFieldLooseKey(\"data\");\nvar _file = /*#__PURE__*/_classPrivateFieldLooseKey(\"file\");\nvar _uploadHasStarted = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadHasStarted\");\nvar _onError = /*#__PURE__*/_classPrivateFieldLooseKey(\"onError\");\nvar _onSuccess = /*#__PURE__*/_classPrivateFieldLooseKey(\"onSuccess\");\nvar _shouldUseMultipart = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldUseMultipart\");\nvar _isRestoring = /*#__PURE__*/_classPrivateFieldLooseKey(\"isRestoring\");\nvar _onReject = /*#__PURE__*/_classPrivateFieldLooseKey(\"onReject\");\nvar _maxMultipartParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"maxMultipartParts\");\nvar _minPartSize = /*#__PURE__*/_classPrivateFieldLooseKey(\"minPartSize\");\nvar _initChunks = /*#__PURE__*/_classPrivateFieldLooseKey(\"initChunks\");\nvar _createUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createUpload\");\nvar _resumeUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"resumeUpload\");\nvar _onPartProgress = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartProgress\");\nvar _onPartComplete = /*#__PURE__*/_classPrivateFieldLooseKey(\"onPartComplete\");\nvar _abortUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortUpload\");\nclass MultipartUploader {\n constructor(data, options) {\n var _this$options, _this$options$getChun;\n Object.defineProperty(this, _abortUpload, {\n value: _abortUpload2\n });\n Object.defineProperty(this, _resumeUpload, {\n value: _resumeUpload2\n });\n Object.defineProperty(this, _createUpload, {\n value: _createUpload2\n });\n // initChunks checks the user preference for using multipart uploads (opts.shouldUseMultipart)\n // and calculates the optimal part size. When using multipart part uploads every part except for the last has\n // to be at least 5 MB and there can be no more than 10K parts.\n // This means we sometimes need to change the preferred part size from the user in order to meet these requirements.\n Object.defineProperty(this, _initChunks, {\n value: _initChunks2\n });\n Object.defineProperty(this, _abortController, {\n writable: true,\n value: new AbortController()\n });\n Object.defineProperty(this, _chunks, {\n writable: true,\n value: []\n });\n Object.defineProperty(this, _chunkState, {\n writable: true,\n value: []\n });\n /**\n * The (un-chunked) data to upload.\n */\n Object.defineProperty(this, _data, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _file, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadHasStarted, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _onError, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onSuccess, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _shouldUseMultipart, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _isRestoring, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _onReject, {\n writable: true,\n value: err => (err == null ? void 0 : err.cause) === pausingUploadReason ? null : _classPrivateFieldLooseBase(this, _onError)[_onError](err)\n });\n Object.defineProperty(this, _maxMultipartParts, {\n writable: true,\n value: 10000\n });\n Object.defineProperty(this, _minPartSize, {\n writable: true,\n value: 5 * MB\n });\n Object.defineProperty(this, _onPartProgress, {\n writable: true,\n value: index => ev => {\n if (!ev.lengthComputable) return;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].uploaded = ensureInt(ev.loaded);\n const totalUploaded = _classPrivateFieldLooseBase(this, _chunkState)[_chunkState].reduce((n, c) => n + c.uploaded, 0);\n this.options.onProgress(totalUploaded, _classPrivateFieldLooseBase(this, _data)[_data].size);\n }\n });\n Object.defineProperty(this, _onPartComplete, {\n writable: true,\n value: index => etag => {\n // This avoids the net::ERR_OUT_OF_MEMORY in Chromium Browsers.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][index] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].etag = etag;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][index].done = true;\n const part = {\n PartNumber: index + 1,\n ETag: etag\n };\n this.options.onPartComplete(part);\n }\n });\n this.options = {\n ...defaultOptions,\n ...options\n };\n // Use default `getChunkSize` if it was null or something\n (_this$options$getChun = (_this$options = this.options).getChunkSize) != null ? _this$options$getChun : _this$options.getChunkSize = defaultOptions.getChunkSize;\n _classPrivateFieldLooseBase(this, _data)[_data] = data;\n _classPrivateFieldLooseBase(this, _file)[_file] = options.file;\n _classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess] = this.options.onSuccess;\n _classPrivateFieldLooseBase(this, _onError)[_onError] = this.options.onError;\n _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] = this.options.shouldUseMultipart;\n\n // When we are restoring an upload, we already have an UploadId and a Key. Otherwise\n // we need to call `createMultipartUpload` to get an `uploadId` and a `key`.\n // Non-multipart uploads are not restorable.\n _classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring] = options.uploadId && options.key;\n _classPrivateFieldLooseBase(this, _initChunks)[_initChunks]();\n }\n start() {\n if (_classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted]) {\n if (!_classPrivateFieldLooseBase(this, _abortController)[_abortController].signal.aborted) _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n this.options.companionComm.restoreUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], {\n uploadId: this.options.uploadId,\n key: this.options.key\n });\n _classPrivateFieldLooseBase(this, _resumeUpload)[_resumeUpload]();\n } else {\n _classPrivateFieldLooseBase(this, _createUpload)[_createUpload]();\n }\n }\n pause() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort(pausingUploadReason);\n // Swap it out for a new controller, because this instance may be resumed later.\n _classPrivateFieldLooseBase(this, _abortController)[_abortController] = new AbortController();\n }\n abort(opts) {\n if (opts != null && opts.really) _classPrivateFieldLooseBase(this, _abortUpload)[_abortUpload]();else this.pause();\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n [Symbol.for('uppy test: getChunkState')]() {\n return _classPrivateFieldLooseBase(this, _chunkState)[_chunkState];\n }\n}\nfunction _initChunks2() {\n const fileSize = _classPrivateFieldLooseBase(this, _data)[_data].size;\n const shouldUseMultipart = typeof _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart] === 'function' ? _classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart](_classPrivateFieldLooseBase(this, _file)[_file]) : Boolean(_classPrivateFieldLooseBase(this, _shouldUseMultipart)[_shouldUseMultipart]);\n if (shouldUseMultipart && fileSize > _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]) {\n // At least 5MB per request:\n let chunkSize = Math.max(this.options.getChunkSize(_classPrivateFieldLooseBase(this, _data)[_data]), // Math.max can take undefined but TS does not think so\n _classPrivateFieldLooseBase(this, _minPartSize)[_minPartSize]);\n let arraySize = Math.floor(fileSize / chunkSize);\n\n // At most 10k requests per file:\n if (arraySize > _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts]) {\n arraySize = _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n chunkSize = fileSize / _classPrivateFieldLooseBase(this, _maxMultipartParts)[_maxMultipartParts];\n }\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = Array(arraySize);\n for (let offset = 0, j = 0; offset < fileSize; offset += chunkSize, j++) {\n const end = Math.min(fileSize, offset + chunkSize);\n\n // Defer data fetching/slicing until we actually need the data, because it's slow if we have a lot of files\n const getData = () => {\n const i2 = offset;\n return _classPrivateFieldLooseBase(this, _data)[_data].slice(i2, end);\n };\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = {\n getData,\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](j),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](j),\n shouldUseMultipart\n };\n if (_classPrivateFieldLooseBase(this, _isRestoring)[_isRestoring]) {\n const size = offset + chunkSize > fileSize ? fileSize - offset : chunkSize;\n // setAsUploaded is called by listPart, to keep up-to-date the\n // quantity of data that is left to actually upload.\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j].setAsUploaded = () => {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks][j] = null;\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState][j].uploaded = size;\n };\n }\n }\n } else {\n _classPrivateFieldLooseBase(this, _chunks)[_chunks] = [{\n getData: () => _classPrivateFieldLooseBase(this, _data)[_data],\n onProgress: _classPrivateFieldLooseBase(this, _onPartProgress)[_onPartProgress](0),\n onComplete: _classPrivateFieldLooseBase(this, _onPartComplete)[_onPartComplete](0),\n shouldUseMultipart\n }];\n }\n _classPrivateFieldLooseBase(this, _chunkState)[_chunkState] = _classPrivateFieldLooseBase(this, _chunks)[_chunks].map(() => ({\n uploaded: 0\n }));\n}\nfunction _createUpload2() {\n this.options.companionComm.uploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n _classPrivateFieldLooseBase(this, _uploadHasStarted)[_uploadHasStarted] = true;\n}\nfunction _resumeUpload2() {\n this.options.companionComm.resumeUploadFile(_classPrivateFieldLooseBase(this, _file)[_file], _classPrivateFieldLooseBase(this, _chunks)[_chunks], _classPrivateFieldLooseBase(this, _abortController)[_abortController].signal).then(_classPrivateFieldLooseBase(this, _onSuccess)[_onSuccess], _classPrivateFieldLooseBase(this, _onReject)[_onReject]);\n}\nfunction _abortUpload2() {\n _classPrivateFieldLooseBase(this, _abortController)[_abortController].abort();\n this.options.companionComm.abortFileUpload(_classPrivateFieldLooseBase(this, _file)[_file]).catch(err => this.options.log(err));\n}\nexport default MultipartUploader;","import { createAbortError } from '@uppy/utils/lib/AbortController';\nexport function throwIfAborted(signal) {\n if (signal != null && signal.aborted) {\n throw createAbortError('The operation was aborted', {\n cause: signal.reason\n });\n }\n}","/**\n * Create a canonical request by concatenating the following strings, separated\n * by newline characters. This helps ensure that the signature that you\n * calculate and the signature that AWS calculates can match.\n *\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html#create-canonical-request\n *\n * @param param0\n * @param param0.method – The HTTP method.\n * @param param0.CanonicalUri – The URI-encoded version of the absolute\n * path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path\n * is empty, use a forward slash character (/).\n * @param param0.CanonicalQueryString – The URL-encoded query string\n * parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there\n * are empty parameters, append the equals sign to the parameter name before\n * encoding. After encoding, sort the parameters alphabetically by key name. If\n * there is no query string, use an empty string (\"\").\n * @param param0.SignedHeaders – The request headers,\n * that will be signed, and their values, separated by newline characters.\n * For the values, trim any leading or trailing spaces, convert sequential\n * spaces to a single space, and separate the values for a multi-value header\n * using commas. You must include the host header (HTTP/1.1), and any x-amz-*\n * headers in the signature. You can optionally include other standard headers\n * in the signature, such as content-type.\n * @param param0.HashedPayload – A string created using the payload in\n * the body of the HTTP request as input to a hash function. This string uses\n * lowercase hexadecimal characters. If the payload is empty, use an empty\n * string as the input to the hash function.\n */\nfunction createCanonicalRequest(_ref) {\n let {\n method = 'PUT',\n CanonicalUri = '/',\n CanonicalQueryString = '',\n SignedHeaders,\n HashedPayload\n } = _ref;\n const headerKeys = Object.keys(SignedHeaders).map(k => k.toLowerCase()).sort();\n return [method, CanonicalUri, CanonicalQueryString, ...headerKeys.map(k => `${k}:${SignedHeaders[k]}`), '', headerKeys.join(';'), HashedPayload].join('\\n');\n}\nconst ec = new TextEncoder();\nconst algorithm = {\n name: 'HMAC',\n hash: 'SHA-256'\n};\nasync function digest(data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.digest(algorithm.hash, ec.encode(data));\n}\nasync function generateHmacKey(secret) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.importKey('raw', typeof secret === 'string' ? ec.encode(secret) : secret, algorithm, false, ['sign']);\n}\nfunction arrayBufferToHexString(arrayBuffer) {\n const byteArray = new Uint8Array(arrayBuffer);\n let hexString = '';\n for (let i = 0; i < byteArray.length; i++) {\n hexString += byteArray[i].toString(16).padStart(2, '0');\n }\n return hexString;\n}\nasync function hash(key, data) {\n const {\n subtle\n } = globalThis.crypto;\n return subtle.sign(algorithm, await generateHmacKey(key), ec.encode(data));\n}\n\n/**\n * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n */\nexport default async function createSignedURL(_ref2) {\n let {\n accountKey,\n accountSecret,\n sessionToken,\n bucketName,\n Key,\n Region,\n expires,\n uploadId,\n partNumber\n } = _ref2;\n const Service = 's3';\n const host = `${Service}.${Region}.amazonaws.com`;\n /**\n * List of char out of `encodeURI()` is taken from ECMAScript spec.\n * Note that the `/` character is purposefully not included in list below.\n *\n * @see https://tc39.es/ecma262/#sec-encodeuri-uri\n */\n const CanonicalUri = `/${bucketName}/${encodeURI(Key).replace(/[;?:@&=+$,#!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)}`;\n const payload = 'UNSIGNED-PAYLOAD';\n const requestDateTime = new Date().toISOString().replace(/[-:]|\\.\\d+/g, ''); // YYYYMMDDTHHMMSSZ\n const date = requestDateTime.slice(0, 8); // YYYYMMDD\n const scope = `${date}/${Region}/${Service}/aws4_request`;\n const url = new URL(`https://${host}${CanonicalUri}`);\n // N.B.: URL search params needs to be added in the ASCII order\n url.searchParams.set('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');\n url.searchParams.set('X-Amz-Content-Sha256', payload);\n url.searchParams.set('X-Amz-Credential', `${accountKey}/${scope}`);\n url.searchParams.set('X-Amz-Date', requestDateTime);\n url.searchParams.set('X-Amz-Expires', expires);\n // We are signing on the client, so we expect there's going to be a session token:\n url.searchParams.set('X-Amz-Security-Token', sessionToken);\n url.searchParams.set('X-Amz-SignedHeaders', 'host');\n // Those two are present only for Multipart Uploads:\n if (partNumber) url.searchParams.set('partNumber', partNumber);\n if (uploadId) url.searchParams.set('uploadId', uploadId);\n url.searchParams.set('x-id', partNumber && uploadId ? 'UploadPart' : 'PutObject');\n\n // Step 1: Create a canonical request\n const canonical = createCanonicalRequest({\n CanonicalUri,\n CanonicalQueryString: url.search.slice(1),\n SignedHeaders: {\n host\n },\n HashedPayload: payload\n });\n\n // Step 2: Create a hash of the canonical request\n const hashedCanonical = arrayBufferToHexString(await digest(canonical));\n\n // Step 3: Create a string to sign\n const stringToSign = [`AWS4-HMAC-SHA256`,\n // The algorithm used to create the hash of the canonical request.\n requestDateTime,\n // The date and time used in the credential scope.\n scope,\n // The credential scope. This restricts the resulting signature to the specified Region and service.\n hashedCanonical // The hash of the canonical request.\n ].join('\\n');\n\n // Step 4: Calculate the signature\n const kDate = await hash(`AWS4${accountSecret}`, date);\n const kRegion = await hash(kDate, Region);\n const kService = await hash(kRegion, Service);\n const kSigning = await hash(kService, 'aws4_request');\n const signature = arrayBufferToHexString(await hash(kSigning, stringToSign));\n\n // Step 5: Add the signature to the request\n url.searchParams.set('X-Amz-Signature', signature);\n return url;\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { pausingUploadReason } from './MultipartUploader.js';\nimport { throwIfAborted } from './utils.js';\nfunction removeMetadataFromURL(urlString) {\n const urlObject = new URL(urlString);\n urlObject.search = '';\n urlObject.hash = '';\n return urlObject.href;\n}\nvar _abortMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"abortMultipartUpload\");\nvar _cache = /*#__PURE__*/_classPrivateFieldLooseKey(\"cache\");\nvar _createMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"createMultipartUpload\");\nvar _fetchSignature = /*#__PURE__*/_classPrivateFieldLooseKey(\"fetchSignature\");\nvar _getUploadParameters = /*#__PURE__*/_classPrivateFieldLooseKey(\"getUploadParameters\");\nvar _listParts = /*#__PURE__*/_classPrivateFieldLooseKey(\"listParts\");\nvar _previousRetryDelay = /*#__PURE__*/_classPrivateFieldLooseKey(\"previousRetryDelay\");\nvar _requests = /*#__PURE__*/_classPrivateFieldLooseKey(\"requests\");\nvar _retryDelays = /*#__PURE__*/_classPrivateFieldLooseKey(\"retryDelays\");\nvar _sendCompletionRequest = /*#__PURE__*/_classPrivateFieldLooseKey(\"sendCompletionRequest\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _uploadPartBytes = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadPartBytes\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _shouldRetry = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRetry\");\nvar _nonMultipartUpload = /*#__PURE__*/_classPrivateFieldLooseKey(\"nonMultipartUpload\");\nexport class HTTPCommunicationQueue {\n constructor(_requests2, options, setS3MultipartState, getFile) {\n Object.defineProperty(this, _nonMultipartUpload, {\n value: _nonMultipartUpload2\n });\n Object.defineProperty(this, _shouldRetry, {\n value: _shouldRetry2\n });\n Object.defineProperty(this, _abortMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cache, {\n writable: true,\n value: new WeakMap()\n });\n Object.defineProperty(this, _createMultipartUpload, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _fetchSignature, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getUploadParameters, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _listParts, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _previousRetryDelay, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _requests, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _retryDelays, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _sendCompletionRequest, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _uploadPartBytes, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldLooseBase(this, _requests)[_requests] = _requests2;\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState] = setS3MultipartState;\n _classPrivateFieldLooseBase(this, _getFile)[_getFile] = getFile;\n this.setOptions(options);\n }\n setOptions(options) {\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n if ('abortMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload] = requests.wrapPromiseFunction(options.abortMultipartUpload, {\n priority: 1\n });\n }\n if ('createMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload] = requests.wrapPromiseFunction(options.createMultipartUpload, {\n priority: -1\n });\n }\n if ('signPart' in options) {\n _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature] = requests.wrapPromiseFunction(options.signPart);\n }\n if ('listParts' in options) {\n _classPrivateFieldLooseBase(this, _listParts)[_listParts] = requests.wrapPromiseFunction(options.listParts);\n }\n if ('completeMultipartUpload' in options) {\n _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest] = requests.wrapPromiseFunction(options.completeMultipartUpload, {\n priority: 1\n });\n }\n if ('retryDelays' in options) {\n var _options$retryDelays;\n _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays] = (_options$retryDelays = options.retryDelays) != null ? _options$retryDelays : [];\n }\n if ('uploadPartBytes' in options) {\n _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes] = requests.wrapPromiseFunction(options.uploadPartBytes, {\n priority: Infinity\n });\n }\n if ('getUploadParameters' in options) {\n _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters] = requests.wrapPromiseFunction(options.getUploadParameters);\n }\n }\n async getUploadId(file, signal) {\n let cachedResult;\n // As the cache is updated asynchronously, there could be a race condition\n // where we just miss a new result so we loop here until we get nothing back,\n // at which point it's out turn to create a new cache entry.\n // eslint-disable-next-line no-cond-assign\n while ((cachedResult = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data)) != null) {\n try {\n return await cachedResult;\n } catch {\n // In case of failure, we want to ignore the cached error.\n // At this point, either there's a new cached value, or we'll exit the loop a create a new one.\n }\n }\n const promise = _classPrivateFieldLooseBase(this, _createMultipartUpload)[_createMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), signal);\n const abortPromise = () => {\n promise.abort(signal.reason);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n };\n signal.addEventListener('abort', abortPromise, {\n once: true\n });\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, promise);\n promise.then(async result => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, result);\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, result);\n }, () => {\n signal.removeEventListener('abort', abortPromise);\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n });\n return promise;\n }\n async abortFileUpload(file) {\n const result = _classPrivateFieldLooseBase(this, _cache)[_cache].get(file.data);\n if (result == null) {\n // If the createMultipartUpload request never was made, we don't\n // need to send the abortMultipartUpload request.\n return;\n }\n // Remove the cache entry right away for follow-up requests do not try to\n // use the soon-to-be aborted cached values.\n _classPrivateFieldLooseBase(this, _cache)[_cache].delete(file.data);\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, Object.create(null));\n let awaitedResult;\n try {\n awaitedResult = await result;\n } catch {\n // If the cached result rejects, there's nothing to abort.\n return;\n }\n await _classPrivateFieldLooseBase(this, _abortMultipartUpload)[_abortMultipartUpload](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), awaitedResult);\n }\n async uploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n try {\n const parts = await Promise.all(chunks.map((chunk, i) => this.uploadChunk(file, i + 1, chunk, signal)));\n throwIfAborted(signal);\n return await _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n } catch (err) {\n if ((err == null ? void 0 : err.cause) !== pausingUploadReason && (err == null ? void 0 : err.name) !== 'AbortError') {\n // We purposefully don't wait for the promise and ignore its status,\n // because we want the error `err` to bubble up ASAP to report it to the\n // user. A failure to abort is not that big of a deal anyway.\n this.abortFileUpload(file);\n }\n throw err;\n }\n }\n restoreUploadFile(file, uploadIdAndKey) {\n _classPrivateFieldLooseBase(this, _cache)[_cache].set(file.data, uploadIdAndKey);\n }\n async resumeUploadFile(file, chunks, signal) {\n throwIfAborted(signal);\n if (chunks.length === 1 && chunks[0] != null && !chunks[0].shouldUseMultipart) {\n return _classPrivateFieldLooseBase(this, _nonMultipartUpload)[_nonMultipartUpload](file, chunks[0], signal);\n }\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n throwIfAborted(signal);\n const alreadyUploadedParts = await _classPrivateFieldLooseBase(this, _listParts)[_listParts](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n uploadId,\n key,\n signal\n }, signal).abortOn(signal);\n throwIfAborted(signal);\n const parts = await Promise.all(chunks.map((chunk, i) => {\n const partNumber = i + 1;\n const alreadyUploadedInfo = alreadyUploadedParts.find(_ref => {\n let {\n PartNumber\n } = _ref;\n return PartNumber === partNumber;\n });\n if (alreadyUploadedInfo == null) {\n return this.uploadChunk(file, partNumber, chunk, signal);\n }\n // Already uploaded chunks are set to null. If we are restoring the upload, we need to mark it as already uploaded.\n chunk == null || chunk.setAsUploaded == null || chunk.setAsUploaded();\n return {\n PartNumber: partNumber,\n ETag: alreadyUploadedInfo.ETag\n };\n }));\n throwIfAborted(signal);\n return _classPrivateFieldLooseBase(this, _sendCompletionRequest)[_sendCompletionRequest](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n key,\n uploadId,\n parts,\n signal\n }, signal).abortOn(signal);\n }\n async uploadChunk(file, partNumber, chunk, signal) {\n throwIfAborted(signal);\n const {\n uploadId,\n key\n } = await this.getUploadId(file, signal);\n const signatureRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const chunkRetryIterator = _classPrivateFieldLooseBase(this, _retryDelays)[_retryDelays].values();\n const shouldRetrySignature = () => {\n const next = signatureRetryIterator.next();\n if (next == null || next.done) {\n return null;\n }\n return next.value;\n };\n for (;;) {\n throwIfAborted(signal);\n const chunkData = chunk.getData();\n const {\n onProgress,\n onComplete\n } = chunk;\n let signature;\n try {\n signature = await _classPrivateFieldLooseBase(this, _fetchSignature)[_fetchSignature](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n // Always defined for multipart uploads\n uploadId: uploadId,\n key,\n partNumber,\n body: chunkData,\n signal\n }).abortOn(signal);\n } catch (err) {\n const timeout = shouldRetrySignature();\n if (timeout == null || signal.aborted) {\n throw err;\n }\n await new Promise(resolve => setTimeout(resolve, timeout));\n // eslint-disable-next-line no-continue\n continue;\n }\n throwIfAborted(signal);\n try {\n return {\n PartNumber: partNumber,\n ...(await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature,\n body: chunkData,\n size: chunkData.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal))\n };\n } catch (err) {\n if (!(await _classPrivateFieldLooseBase(this, _shouldRetry)[_shouldRetry](err, chunkRetryIterator))) throw err;\n }\n }\n }\n}\nasync function _shouldRetry2(err, retryDelayIterator) {\n var _err$source;\n const requests = _classPrivateFieldLooseBase(this, _requests)[_requests];\n const status = err == null || (_err$source = err.source) == null ? void 0 : _err$source.status;\n\n // TODO: this retry logic is taken out of Tus. We should have a centralized place for retrying,\n // perhaps the rate limited queue, and dedupe all plugins with that.\n if (status == null) {\n return false;\n }\n if (status === 403 && err.message === 'Request has expired') {\n if (!requests.isPaused) {\n // We don't want to exhaust the retryDelayIterator as long as there are\n // more than one request in parallel, to give slower connection a chance\n // to catch up with the expiry set in Companion.\n if (requests.limit === 1 || _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] == null) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n // If there are more than 1 request done in parallel, the RLQ limit is\n // decreased and the failed request is requeued after waiting for a bit.\n // If there is only one request in parallel, the limit can't be\n // decreased, so we iterate over `retryDelayIterator` as we do for\n // other failures.\n // `#previousRetryDelay` caches the value so we can re-use it next time.\n _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay] = next.value;\n }\n // No need to stop the other requests, we just want to lower the limit.\n requests.rateLimit(0);\n await new Promise(resolve => setTimeout(resolve, _classPrivateFieldLooseBase(this, _previousRetryDelay)[_previousRetryDelay]));\n }\n } else if (status === 429) {\n // HTTP 429 Too Many Requests => to avoid the whole download to fail, pause all requests.\n if (!requests.isPaused) {\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n requests.rateLimit(next.value);\n }\n } else if (status > 400 && status < 500 && status !== 409) {\n // HTTP 4xx, the server won't send anything, it's doesn't make sense to retry\n return false;\n } else if (typeof navigator !== 'undefined' && navigator.onLine === false) {\n // The navigator is offline, let's wait for it to come back online.\n if (!requests.isPaused) {\n requests.pause();\n window.addEventListener('online', () => {\n requests.resume();\n }, {\n once: true\n });\n }\n } else {\n // Other error code means the request can be retried later.\n const next = retryDelayIterator.next();\n if (next == null || next.done) {\n return false;\n }\n await new Promise(resolve => setTimeout(resolve, next.value));\n }\n return true;\n}\nasync function _nonMultipartUpload2(file, chunk, signal) {\n var _ref3;\n const {\n method = 'POST',\n url,\n fields,\n headers\n } = await _classPrivateFieldLooseBase(this, _getUploadParameters)[_getUploadParameters](_classPrivateFieldLooseBase(this, _getFile)[_getFile](file), {\n signal\n }).abortOn(signal);\n let body;\n const data = chunk.getData();\n if (method.toUpperCase() === 'POST') {\n const formData = new FormData();\n Object.entries(fields).forEach(_ref2 => {\n let [key, value] = _ref2;\n return formData.set(key, value);\n });\n formData.set('file', data);\n body = formData;\n } else {\n body = data;\n }\n const {\n onProgress,\n onComplete\n } = chunk;\n const result = await _classPrivateFieldLooseBase(this, _uploadPartBytes)[_uploadPartBytes]({\n signature: {\n url,\n headers,\n method\n },\n body,\n size: data.size,\n onProgress,\n onComplete,\n signal\n }).abortOn(signal); // todo this doesn't make sense\n\n const key = fields == null ? void 0 : fields.key;\n if (!key) {\n console.error('Expected `fields.key` to be returend but the backend/Companion');\n }\n _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState](file, {\n key: key\n });\n return {\n ...result,\n location: (_ref3 = result.location) != null ? _ref3 : removeMetadataFromURL(url),\n bucket: fields == null ? void 0 : fields.bucket,\n key\n };\n}","function _classPrivateFieldLooseBase(e, t) { if (!{}.hasOwnProperty.call(e, t)) throw new TypeError(\"attempted to use private field on non-instance\"); return e; }\nvar id = 0;\nfunction _classPrivateFieldLooseKey(e) { return \"__private_\" + id++ + \"_\" + e; }\nimport { BasePlugin } from '@uppy/core';\nimport { RequestClient } from '@uppy/companion-client';\nimport EventManager from '@uppy/core/lib/EventManager.js';\nimport { RateLimitedQueue } from '@uppy/utils/lib/RateLimitedQueue';\nimport { filterNonFailedFiles, filterFilesToEmitUploadStarted } from '@uppy/utils/lib/fileFilters';\nimport { createAbortError } from '@uppy/utils/lib/AbortController';\nimport getAllowedMetaFields from '@uppy/utils/lib/getAllowedMetaFields';\nimport MultipartUploader from './MultipartUploader.js';\nimport { throwIfAborted } from './utils.js';\nimport createSignedURL from './createSignedURL.js';\nimport { HTTPCommunicationQueue } from './HTTPCommunicationQueue.js';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore We don't want TS to generate types for the package.json\nconst packageJson = {\n \"version\": \"4.2.2\"\n};\nfunction assertServerError(res) {\n if (res != null && res.error) {\n const error = new Error(res.message);\n Object.assign(error, res.error);\n throw error;\n }\n return res;\n}\n/**\n * Computes the expiry time for a request signed with temporary credentials. If\n * no expiration was provided, or an invalid value (e.g. in the past) is\n * provided, undefined is returned. This function assumes the client clock is in\n * sync with the remote server, which is a requirement for the signature to be\n * validated for AWS anyway.\n */\nfunction getExpiry(credentials) {\n const expirationDate = credentials.Expiration;\n if (expirationDate) {\n const timeUntilExpiry = Math.floor((new Date(expirationDate) - Date.now()) / 1000);\n if (timeUntilExpiry > 9) {\n return timeUntilExpiry;\n }\n }\n return undefined;\n}\nfunction getAllowedMetadata(_ref) {\n let {\n meta,\n allowedMetaFields,\n querify = false\n } = _ref;\n const metaFields = allowedMetaFields != null ? allowedMetaFields : Object.keys(meta);\n if (!meta) return {};\n return Object.fromEntries(metaFields.filter(key => meta[key] != null).map(key => {\n const realKey = querify ? `metadata[${key}]` : key;\n const value = String(meta[key]);\n return [realKey, value];\n }));\n}\nconst defaultOptions = {\n allowedMetaFields: true,\n limit: 6,\n getTemporarySecurityCredentials: false,\n // eslint-disable-next-line no-bitwise\n shouldUseMultipart: file =>\n // eslint-disable-next-line no-bitwise\n file.size >> 10 >> 10 > 100,\n retryDelays: [0, 1000, 3000, 5000]\n};\nvar _companionCommunicationQueue = /*#__PURE__*/_classPrivateFieldLooseKey(\"companionCommunicationQueue\");\nvar _client = /*#__PURE__*/_classPrivateFieldLooseKey(\"client\");\nvar _setClient = /*#__PURE__*/_classPrivateFieldLooseKey(\"setClient\");\nvar _assertHost = /*#__PURE__*/_classPrivateFieldLooseKey(\"assertHost\");\nvar _cachedTemporaryCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"cachedTemporaryCredentials\");\nvar _getTemporarySecurityCredentials = /*#__PURE__*/_classPrivateFieldLooseKey(\"getTemporarySecurityCredentials\");\nvar _setS3MultipartState = /*#__PURE__*/_classPrivateFieldLooseKey(\"setS3MultipartState\");\nvar _getFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"getFile\");\nvar _uploadLocalFile = /*#__PURE__*/_classPrivateFieldLooseKey(\"uploadLocalFile\");\nvar _getCompanionClientArgs = /*#__PURE__*/_classPrivateFieldLooseKey(\"getCompanionClientArgs\");\nvar _upload = /*#__PURE__*/_classPrivateFieldLooseKey(\"upload\");\nvar _setCompanionHeaders = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCompanionHeaders\");\nvar _setResumableUploadsCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"setResumableUploadsCapability\");\nvar _resetResumableCapability = /*#__PURE__*/_classPrivateFieldLooseKey(\"resetResumableCapability\");\nexport default class AwsS3Multipart extends BasePlugin {\n constructor(uppy, _opts) {\n var _rateLimitedQueue;\n super(uppy, {\n ...defaultOptions,\n uploadPartBytes: AwsS3Multipart.uploadPartBytes,\n createMultipartUpload: null,\n listParts: null,\n abortMultipartUpload: null,\n completeMultipartUpload: null,\n signPart: null,\n getUploadParameters: null,\n ..._opts\n });\n // We need the `as any` here because of the dynamic default options.\n // eslint-disable-next-line class-methods-use-this\n Object.defineProperty(this, _getCompanionClientArgs, {\n value: _getCompanionClientArgs2\n });\n Object.defineProperty(this, _uploadLocalFile, {\n value: _uploadLocalFile2\n });\n Object.defineProperty(this, _getTemporarySecurityCredentials, {\n value: _getTemporarySecurityCredentials2\n });\n Object.defineProperty(this, _assertHost, {\n value: _assertHost2\n });\n Object.defineProperty(this, _setClient, {\n value: _setClient2\n });\n Object.defineProperty(this, _companionCommunicationQueue, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _client, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _cachedTemporaryCredentials, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _setS3MultipartState, {\n writable: true,\n value: (file, _ref2) => {\n let {\n key,\n uploadId\n } = _ref2;\n const cFile = this.uppy.getFile(file.id);\n if (cFile == null) {\n // file was removed from store\n return;\n }\n this.uppy.setFileState(file.id, {\n s3Multipart: {\n ...cFile.s3Multipart,\n key,\n uploadId\n }\n });\n }\n });\n Object.defineProperty(this, _getFile, {\n writable: true,\n value: file => {\n return this.uppy.getFile(file.id) || file;\n }\n });\n Object.defineProperty(this, _upload, {\n writable: true,\n value: async fileIDs => {\n if (fileIDs.length === 0) return undefined;\n const files = this.uppy.getFilesByIds(fileIDs);\n const filesFiltered = filterNonFailedFiles(files);\n const filesToEmit = filterFilesToEmitUploadStarted(filesFiltered);\n this.uppy.emit('upload-start', filesToEmit);\n const promises = filesFiltered.map(file => {\n if (file.isRemote) {\n const getQueue = () => this.requests;\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](false);\n const controller = new AbortController();\n const removedHandler = removedFile => {\n if (removedFile.id === file.id) controller.abort();\n };\n this.uppy.on('file-removed', removedHandler);\n const uploadPromise = this.uppy.getRequestClientForFile(file).uploadRemoteFile(file, _classPrivateFieldLooseBase(this, _getCompanionClientArgs)[_getCompanionClientArgs](file), {\n signal: controller.signal,\n getQueue\n });\n this.requests.wrapSyncFunction(() => {\n this.uppy.off('file-removed', removedHandler);\n }, {\n priority: -1\n })();\n return uploadPromise;\n }\n return _classPrivateFieldLooseBase(this, _uploadLocalFile)[_uploadLocalFile](file);\n });\n const upload = await Promise.allSettled(promises);\n // After the upload is done, another upload may happen with only local files.\n // We reset the capability so that the next upload can use resumable uploads.\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n return upload;\n }\n });\n Object.defineProperty(this, _setCompanionHeaders, {\n writable: true,\n value: () => {\n var _classPrivateFieldLoo;\n (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _client)[_client]) == null || _classPrivateFieldLoo.setCompanionHeaders(this.opts.headers);\n }\n });\n Object.defineProperty(this, _setResumableUploadsCapability, {\n writable: true,\n value: boolean => {\n const {\n capabilities\n } = this.uppy.getState();\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n resumableUploads: boolean\n }\n });\n }\n });\n Object.defineProperty(this, _resetResumableCapability, {\n writable: true,\n value: () => {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n }\n });\n this.type = 'uploader';\n this.id = this.opts.id || 'AwsS3Multipart';\n _classPrivateFieldLooseBase(this, _setClient)[_setClient](_opts);\n const dynamicDefaultOptions = {\n createMultipartUpload: this.createMultipartUpload,\n listParts: this.listParts,\n abortMultipartUpload: this.abortMultipartUpload,\n completeMultipartUpload: this.completeMultipartUpload,\n signPart: _opts != null && _opts.getTemporarySecurityCredentials ? this.createSignedURL : this.signPart,\n getUploadParameters: _opts != null && _opts.getTemporarySecurityCredentials ? this.createSignedURL : this.getUploadParameters\n };\n for (const key of Object.keys(dynamicDefaultOptions)) {\n if (this.opts[key] == null) {\n this.opts[key] = dynamicDefaultOptions[key].bind(this);\n }\n }\n\n /**\n * Simultaneous upload limiting is shared across all uploads with this plugin.\n *\n * @type {RateLimitedQueue}\n */\n this.requests = (_rateLimitedQueue = this.opts.rateLimitedQueue) != null ? _rateLimitedQueue : new RateLimitedQueue(this.opts.limit);\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue] = new HTTPCommunicationQueue(this.requests, this.opts, _classPrivateFieldLooseBase(this, _setS3MultipartState)[_setS3MultipartState], _classPrivateFieldLooseBase(this, _getFile)[_getFile]);\n this.uploaders = Object.create(null);\n this.uploaderEvents = Object.create(null);\n }\n [Symbol.for('uppy test: getClient')]() {\n return _classPrivateFieldLooseBase(this, _client)[_client];\n }\n setOptions(newOptions) {\n _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue].setOptions(newOptions);\n super.setOptions(newOptions);\n _classPrivateFieldLooseBase(this, _setClient)[_setClient](newOptions);\n }\n\n /**\n * Clean up all references for a file's upload: the MultipartUploader instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n * This should be done when the user cancels the upload, not when the upload is completed or errored.\n */\n resetUploaderReferences(fileID, opts) {\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort({\n really: (opts == null ? void 0 : opts.abort) || false\n });\n this.uploaders[fileID] = null;\n }\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n }\n createMultipartUpload(file, signal) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('createMultipartUpload');\n throwIfAborted(signal);\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({\n meta: file.meta,\n allowedMetaFields\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].post('s3/multipart', {\n filename: file.name,\n type: file.type,\n metadata\n }, {\n signal\n }).then(assertServerError);\n }\n listParts(file, _ref3, oldSignal) {\n var _signal;\n let {\n key,\n uploadId,\n signal\n } = _ref3;\n (_signal = signal) != null ? _signal : signal = oldSignal; // eslint-disable-line no-param-reassign\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('listParts');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${encodeURIComponent(uploadId)}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n completeMultipartUpload(file, _ref4, oldSignal) {\n var _signal2;\n let {\n key,\n uploadId,\n parts,\n signal\n } = _ref4;\n (_signal2 = signal) != null ? _signal2 : signal = oldSignal; // eslint-disable-line no-param-reassign\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('completeMultipartUpload');\n throwIfAborted(signal);\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].post(`s3/multipart/${uploadIdEnc}/complete?key=${filename}`, {\n parts: parts.map(_ref5 => {\n let {\n ETag,\n PartNumber\n } = _ref5;\n return {\n ETag,\n PartNumber\n };\n })\n }, {\n signal\n }).then(assertServerError);\n }\n async createSignedURL(file, options) {\n const data = await _classPrivateFieldLooseBase(this, _getTemporarySecurityCredentials)[_getTemporarySecurityCredentials](options);\n const expires = getExpiry(data.credentials) || 604800; // 604 800 is the max value accepted by AWS.\n\n const {\n uploadId,\n key,\n partNumber\n } = options;\n\n // Return an object in the correct shape.\n return {\n method: 'PUT',\n expires,\n fields: {},\n url: `${await createSignedURL({\n accountKey: data.credentials.AccessKeyId,\n accountSecret: data.credentials.SecretAccessKey,\n sessionToken: data.credentials.SessionToken,\n expires,\n bucketName: data.bucket,\n Region: data.region,\n Key: key != null ? key : `${crypto.randomUUID()}-${file.name}`,\n uploadId,\n partNumber\n })}`,\n // Provide content type header required by S3\n headers: {\n 'Content-Type': file.type\n }\n };\n }\n signPart(file, _ref6) {\n let {\n uploadId,\n key,\n partNumber,\n signal\n } = _ref6;\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('signPart');\n throwIfAborted(signal);\n if (uploadId == null || key == null || partNumber == null) {\n throw new Error('Cannot sign without a key, an uploadId, and a partNumber');\n }\n const filename = encodeURIComponent(key);\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/multipart/${encodeURIComponent(uploadId)}/${partNumber}?key=${filename}`, {\n signal\n }).then(assertServerError);\n }\n abortMultipartUpload(file, _ref7) {\n let {\n key,\n uploadId,\n signal\n } = _ref7;\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('abortMultipartUpload');\n const filename = encodeURIComponent(key);\n const uploadIdEnc = encodeURIComponent(uploadId);\n return _classPrivateFieldLooseBase(this, _client)[_client].delete(`s3/multipart/${uploadIdEnc}?key=${filename}`, undefined, {\n signal\n }).then(assertServerError);\n }\n getUploadParameters(file, options) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('getUploadParameters');\n const {\n meta\n } = file;\n const {\n type,\n name: filename\n } = meta;\n const allowedMetaFields = getAllowedMetaFields(this.opts.allowedMetaFields, file.meta);\n const metadata = getAllowedMetadata({\n meta,\n allowedMetaFields,\n querify: true\n });\n const query = new URLSearchParams({\n filename,\n type,\n ...metadata\n });\n return _classPrivateFieldLooseBase(this, _client)[_client].get(`s3/params?${query}`, options);\n }\n static async uploadPartBytes(_ref8) {\n let {\n signature: {\n url,\n expires,\n headers,\n method = 'PUT'\n },\n body,\n size = body.size,\n onProgress,\n onComplete,\n signal\n } = _ref8;\n throwIfAborted(signal);\n if (url == null) {\n throw new Error('Cannot upload to an undefined URL');\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (headers) {\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n xhr.responseType = 'text';\n if (typeof expires === 'number') {\n xhr.timeout = expires * 1000;\n }\n function onabort() {\n xhr.abort();\n }\n function cleanup() {\n signal == null || signal.removeEventListener('abort', onabort);\n }\n signal == null || signal.addEventListener('abort', onabort);\n xhr.upload.addEventListener('progress', ev => {\n onProgress(ev);\n });\n xhr.addEventListener('abort', () => {\n cleanup();\n reject(createAbortError());\n });\n xhr.addEventListener('timeout', () => {\n cleanup();\n const error = new Error('Request has expired');\n error.source = {\n status: 403\n };\n reject(error);\n });\n xhr.addEventListener('load', () => {\n cleanup();\n if (xhr.status === 403 && xhr.responseText.includes('<Message>Request has expired</Message>')) {\n const error = new Error('Request has expired');\n error.source = xhr;\n reject(error);\n return;\n }\n if (xhr.status < 200 || xhr.status >= 300) {\n const error = new Error('Non 2xx');\n error.source = xhr;\n reject(error);\n return;\n }\n onProgress == null || onProgress({\n loaded: size,\n lengthComputable: true\n });\n\n // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples\n const arr = xhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/);\n // @ts-expect-error null is allowed to avoid inherited properties\n const headersMap = {\n __proto__: null\n };\n for (const line of arr) {\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n headersMap[header] = value;\n }\n const {\n etag,\n location\n } = headersMap;\n\n // More info bucket settings when this is not present:\n // https://github.com/transloadit/uppy/issues/5388#issuecomment-2464885562\n if (method.toUpperCase() === 'POST' && location == null) {\n // Not being able to read the Location header is not a fatal error.\n // eslint-disable-next-line no-console\n console.error('@uppy/aws-s3: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3/#setting-up-your-s3-bucket');\n }\n if (etag == null) {\n // eslint-disable-next-line no-console\n console.error('@uppy/aws-s3: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3/#setting-up-your-s3-bucket');\n return;\n }\n onComplete == null || onComplete(etag);\n resolve({\n ...headersMap,\n ETag: etag // keep capitalised ETag for backwards compatiblity\n });\n });\n xhr.addEventListener('error', ev => {\n cleanup();\n const error = new Error('Unknown error');\n error.source = ev.target;\n reject(error);\n });\n xhr.send(body);\n });\n }\n install() {\n _classPrivateFieldLooseBase(this, _setResumableUploadsCapability)[_setResumableUploadsCapability](true);\n this.uppy.addPreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.addUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.on('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n uninstall() {\n this.uppy.removePreProcessor(_classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]);\n this.uppy.removeUploader(_classPrivateFieldLooseBase(this, _upload)[_upload]);\n this.uppy.off('cancel-all', _classPrivateFieldLooseBase(this, _resetResumableCapability)[_resetResumableCapability]);\n }\n}\nfunction _setClient2(opts) {\n if (opts == null || !('endpoint' in opts || 'companionUrl' in opts || 'headers' in opts || 'companionHeaders' in opts || 'cookiesRule' in opts || 'companionCookiesRule' in opts)) return;\n if ('companionUrl' in opts && !('endpoint' in opts)) {\n this.uppy.log('`companionUrl` option has been removed in @uppy/aws-s3, use `endpoint` instead.', 'warning');\n }\n if ('companionHeaders' in opts && !('headers' in opts)) {\n this.uppy.log('`companionHeaders` option has been removed in @uppy/aws-s3, use `headers` instead.', 'warning');\n }\n if ('companionCookiesRule' in opts && !('cookiesRule' in opts)) {\n this.uppy.log('`companionCookiesRule` option has been removed in @uppy/aws-s3, use `cookiesRule` instead.', 'warning');\n }\n if ('endpoint' in opts) {\n _classPrivateFieldLooseBase(this, _client)[_client] = new RequestClient(this.uppy, {\n pluginId: this.id,\n provider: 'AWS',\n companionUrl: this.opts.endpoint,\n companionHeaders: this.opts.headers,\n companionCookiesRule: this.opts.cookiesRule\n });\n } else {\n if ('headers' in opts) {\n _classPrivateFieldLooseBase(this, _setCompanionHeaders)[_setCompanionHeaders]();\n }\n if ('cookiesRule' in opts) {\n _classPrivateFieldLooseBase(this, _client)[_client].opts.companionCookiesRule = opts.cookiesRule;\n }\n }\n}\nfunction _assertHost2(method) {\n if (!_classPrivateFieldLooseBase(this, _client)[_client]) {\n throw new Error(`Expected a \\`endpoint\\` option containing a URL, or if you are not using Companion, a custom \\`${method}\\` implementation.`);\n }\n}\nasync function _getTemporarySecurityCredentials2(options) {\n throwIfAborted(options == null ? void 0 : options.signal);\n if (_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] == null) {\n const {\n getTemporarySecurityCredentials\n } = this.opts;\n // We do not await it just yet, so concurrent calls do not try to override it:\n if (getTemporarySecurityCredentials === true) {\n _classPrivateFieldLooseBase(this, _assertHost)[_assertHost]('getTemporarySecurityCredentials');\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = _classPrivateFieldLooseBase(this, _client)[_client].get('s3/sts', options).then(assertServerError);\n } else {\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = getTemporarySecurityCredentials(options);\n }\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = await _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n setTimeout(() => {\n // At half the time left before expiration, we clear the cache. That's\n // an arbitrary tradeoff to limit the number of requests made to the\n // remote while limiting the risk of using an expired token in case the\n // clocks are not exactly synced.\n // The HTTP cache should be configured to ensure a client doesn't request\n // more tokens than it needs, but this timeout provides a second layer of\n // security in case the HTTP cache is disabled or misconfigured.\n _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials] = null;\n }, (getExpiry(_classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials].credentials) || 0) * 500);\n }\n return _classPrivateFieldLooseBase(this, _cachedTemporaryCredentials)[_cachedTemporaryCredentials];\n}\nfunction _uploadLocalFile2(file) {\n var _this = this;\n return new Promise((resolve, reject) => {\n const onProgress = (bytesUploaded, bytesTotal) => {\n var _latestFile$progress$;\n const latestFile = this.uppy.getFile(file.id);\n this.uppy.emit('upload-progress', latestFile, {\n uploadStarted: (_latestFile$progress$ = latestFile.progress.uploadStarted) != null ? _latestFile$progress$ : 0,\n bytesUploaded,\n bytesTotal\n });\n };\n const onError = err => {\n this.uppy.log(err);\n this.uppy.emit('upload-error', file, err);\n this.resetUploaderReferences(file.id);\n reject(err);\n };\n const onSuccess = result => {\n const uploadResp = {\n body: {\n ...result\n },\n status: 200,\n uploadURL: result.location\n };\n this.resetUploaderReferences(file.id);\n this.uppy.emit('upload-success', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), uploadResp);\n if (result.location) {\n this.uppy.log(`Download ${file.name} from ${result.location}`);\n }\n resolve();\n };\n const upload = new MultipartUploader(file.data, {\n // .bind to pass the file object to each handler.\n companionComm: _classPrivateFieldLooseBase(this, _companionCommunicationQueue)[_companionCommunicationQueue],\n log: function () {\n return _this.uppy.log(...arguments);\n },\n getChunkSize: this.opts.getChunkSize ? this.opts.getChunkSize.bind(this) : undefined,\n onProgress,\n onError,\n onSuccess,\n onPartComplete: part => {\n this.uppy.emit('s3-multipart:part-uploaded', _classPrivateFieldLooseBase(this, _getFile)[_getFile](file), part);\n },\n file,\n shouldUseMultipart: this.opts.shouldUseMultipart,\n ...file.s3Multipart\n });\n this.uploaders[file.id] = upload;\n const eventManager = new EventManager(this.uppy);\n this.uploaderEvents[file.id] = eventManager;\n eventManager.onFileRemove(file.id, removed => {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n resolve(`upload ${removed} was removed`);\n });\n eventManager.onCancelAll(file.id, () => {\n upload.abort();\n this.resetUploaderReferences(file.id, {\n abort: true\n });\n resolve(`upload ${file.id} was canceled`);\n });\n eventManager.onFilePause(file.id, isPaused => {\n if (isPaused) {\n upload.pause();\n } else {\n upload.start();\n }\n });\n eventManager.onPauseAll(file.id, () => {\n upload.pause();\n });\n eventManager.onResumeAll(file.id, () => {\n upload.start();\n });\n upload.start();\n });\n}\nfunction _getCompanionClientArgs2(file) {\n var _file$remote;\n return {\n ...((_file$remote = file.remote) == null ? void 0 : _file$remote.body),\n protocol: 's3-multipart',\n size: file.data.size,\n metadata: file.meta\n };\n}\nAwsS3Multipart.VERSION = packageJson.version;"],"names":["root","factory","module","__webpack_modules__","__unused_webpack_module","exports","__webpack_require__","constants_1","addChoice","_a","value","label","id","groupId","disabled","elementId","customProperties","placeholder","keyCode","filterChoices","results","activateChoices","active","clearChoices","addGroup","addItem","choiceId","removeItem","highlightItem","highlighted","clearAll","resetTo","state","setIsLoading","isLoading","__spreadArray","to","from","pack","i","l","ar","__importDefault","mod","deepmerge_1","fuse_js_1","choices_1","groups_1","items_1","misc_1","components_1","defaults_1","utils_1","reducers_1","store_1","templates_1","IS_IE11","USER_DEFAULTS","Choices","element","userConfig","_this","_","sourceArray","invalidConfigOptions","passedElement","re","data","elementDirection","documentDirection","splitValues","option","shouldDisable","callbackOnInit","item","runEvent","_b","_c","group","excludedId","preventInputFocus","preventInputBlur","valueOnly","values","selectedItems","itemValue","items","choiceValue","val","choicesArrayOrFetcher","replaceChoices","fetcher_1","resolve","err","groupOrChoice","choice","shouldSetInputWidth","stateChanged","shouldRenderChoices","shouldRenderItems","activeGroups","activeChoices","choiceListFragment","activePlaceholders","activeChoice","activeItems","canAddItem","notice","dropdownItem","itemListFragment","groups","choices","fragment","getGroupChoices","groupChoices","dropdownGroup","withinGroup","renderSelectedChoices","searchResultLimit","renderChoiceLimit","filter","appendChoice","shouldRender","rendererableChoices","acc","placeholderChoices","normalChoices","choiceLimit","sortedChoices","shouldSortItems","sorter","removeItemButton","addItemToFragment","listItem","placeholderChoice","itemId","itemToRemove","hasShiftKey","passedId","passedKeyCode","hasActiveDropdown","lastItem","hasHighlightedItems","setLoading","placeholderItem","searchFloor","searchChoices","hasUnactiveChoices","resultCount","isDuplicateValue","newValue","currentValue","haystack","needle","options","fuse","documentElement","event","hasFocusedInput","hasItems","keyString","wasPrintableChar","BACK_KEY","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","target","backKey","deleteKey","canShowDropdownNotice","wasRemovalKeyCode","userHasRemovedValue","canReactivateChoices","canSearch","ctrlKey","metaKey","hasCtrlDownKeyPressed","shouldHightlightAll","enterKey","targetWasButton","highlightedChoice","downKey","pageUpKey","pageDownKey","directionInt","skipKey","selectableChoiceIdentifier","nextEl","currentEl","touchWasWithinContainer","containerWasExactTarget","firstChoice","isOnScrollbar","dataset","clickWasWithinContainer","focusWasWithinContainer","focusActions","blurWasWithinContainer","hasHighlightedItems_1","blurActions","el","passedEl","highlightedChoices","_d","_e","_f","_g","passedValue","passedLabel","passedOptionId","isSelected","isDisabled","_h","choiceLabel","choiceElementId","valueKey","labelKey","addGroupChoices","isOptDisabled","template","args","_i","callbackOnCreateTemplates","userTemplates","hasSelectedChoice","firstEnabledChoiceIndex","index","shouldPreselect","itemType","handleType","foundChoice","placeholderOption","placeholderValue","Container","type","classNames","position","dropdownPos","shouldFlip","activeDescendantID","Dropdown","selector","dropdown_1","container_1","input_1","list_1","wrapped_input_1","wrapped_select_1","Input","preventPaste","setWidth","style","List","node","direction","listHeight","listScrollPosition","elementHeight","elementPos","destination","scrollPos","strength","easing","distance","choiceListScrollTop","continueAnimation","WrappedElement","origStyle","eventType","__extends","extendStatics","d","b","p","__","wrapped_element_1","WrappedInput","_super","delimiter","WrappedSelect","addOptionToFragment","optionData","maxItemCount","value1","value2","__createBinding","o","m","k","k2","desc","__exportStar","getRandomNumber","min","max","generateChars","length","generateId","prefix","getType","obj","isType","wrap","wrapper","getAdjacentEl","startEl","prop","sibling","isScrolledIntoView","parent","isVisible","sanitise","tmpEl","str","cleanedInput","firldChild","sortByAlpha","label2","sortByScore","a","scoreA","scoreB","dispatchEvent","customArgs","existsInArray","array","key","cloneObject","diff","aKeys","bKeys","parseCustomProperties","action","addChoiceAction","addItemAction_1","removeItemAction_1","filterChoicesAction_1","score","activateChoicesAction_1","addGroupAction","redux_1","loading_1","appReducer","rootReducer","passedState","addItemAction","newState","highlightItemAction_1","general","index_1","Store","onChange","isActive","hasActiveOptions","templates","dir","isSelectElement","isSelectOneElement","searchEnabled","passedElementType","labelId","containerOuter","div","containerInner","list","listSingle","listItems","allowHTML","button","highlightedState","itemSelectable","isPlaceholder","REMOVE_ITEM_TEXT","removeButton","groupHeading","itemDisabled","selectText","itemChoice","selectedState","input","inputCloned","inp","listDropdown","innerText","noResults","noChoices","classes","opt","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","prev","next","__webpack_exports__","Fuse","isArray","getTag","baseToString","result","toString","isString","isNumber","isBoolean","isObjectLike","isObject","isDefined","isBlank","INCORRECT_INDEX_TYPE","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","PATTERN_LENGTH_TOO_LARGE","MISSING_KEY_PROPERTY","name","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","keys","totalWeight","createKey","keyId","path","src","weight","getFn","createKeyPath","createKeyId","get","arr","deepGet","len","Config","SPACE","norm","mantissa","cache","numTokens","n","FuseIndex","fieldNormWeight","docs","records","idx","doc","docIndex","record","keyIndex","subRecords","stack","nestedArrIndex","subRecord","createIndex","myIndex","parseIndex","computeScore$1","pattern","errors","currentLocation","expectedLocation","ignoreLocation","accuracy","proximity","convertMaskToIndices","matchmask","minMatchCharLength","indices","start","end","match","MAX_BITS","search","text","patternAlphabet","location","threshold","findAllMatches","includeMatches","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","finish","bitArr","j","charMatch","createPatternAlphabet","char","BitapSearch","isCaseSensitive","addChunk","startIndex","remainder","allIndices","totalScore","hasMatches","alphabet","isMatch","BaseMatch","getMatch","exp","matches","ExactMatch","InverseExactMatch","PrefixExactMatch","InversePrefixExactMatch","SuffixExactMatch","InverseSuffixExactMatch","FuzzyMatch","IncludeMatch","searchers","searchersLen","SPACE_RE","OR_TOKEN","parseQuery","query","queryItem","found","searcher","token","MultiMatchSet","ExtendedSearch","numMatches","qLen","pLen","registeredSearchers","register","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","isPath","isLeaf","convertToExplicit","parse","auto","isQueryPath","computeScore","ignoreFieldNorm","transformMatches","transformScore","format","includeScore","transformers","transformer","predicate","limit","shouldSort","sortFn","expression","evaluate","res","child","resultMap","expResults","ActionTypes","applyMiddleware","bindActionCreators","combineReducers","compose","createStore","legacy_createStore","_typeof","_toPrimitive","hint","prim","_toPropertyKey","arg","_defineProperty","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","formatProdErrorMessage","code","$$observable","randomString","isPlainObject","proto","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","dispatch","listeners","replaceReducer","nextReducer","observable","_ref","outerSubscribe","observer","observeState","unsubscribe","assertReducerShape","reducers","initialState","reducerKeys","finalReducers","finalReducerKeys","shapeAssertionError","e","hasChanged","nextState","_key","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","actionCreators","boundActionCreators","_len","funcs","middlewares","store","_dispatch","middlewareAPI","chain","middleware","__webpack_module_cache__","moduleId","cachedModule","getter","definition","_scripts_choices__WEBPACK_IMPORTED_MODULE_0__","_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default","_classPrivateFieldLooseBase","t","_classPrivateFieldLooseKey","insertReplacement","rx","replacement","newParts","chunk","raw","interpolate","phrase","dollarRegex","dollarBillsYall","interpolated","defaultOnMissingKey","_onMissingKey","_apply","Translator","locales","_temp","onMissingKey","_apply2","string","plural","locale","prevLocale","namespaceEmitter","emitter","_fns","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","getListeners","emitAll","fn","one","keep","fns","out","urlAlphabet","nanoid","size","require$$0","now","now_1","require$$1","toNumber","require$$2","FUNC_ERROR_TEXT","nativeMax","nativeMin","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","debounce_1","throttle","throttle_1","packageJson","_callbacks","_publish","DefaultStore","_publish2","patch","prevState","getFileNameAndExtension","fullFileName","lastDot","mimeTypes","getFileType","file","_getFileNameAndExtens","fileExtension","encodeCharacter","character","encodeFilename","suffix","generateFileID","instanceId","hasFileStableId","getSafeFileId","fileType","supportsUploadProgress","userAgent","version","major","minor","getFileName","fileDescriptor","pad","number","getTimeStamp","date","hours","minutes","seconds","justErrorsLogger","debugLogger","_len2","_key2","_len3","_key3","_len4","_key4","prettierBytes","neg","num","units","exponent","unit","WildcardMatcher","separator","parts","ii","partsCount","testParts","wildcard","test","matcher","reMimePartSplit","mimeMatch","defaultOptions","RestrictionError","message","opts","_opts$isUserFacing","Restricter","getOpts","getI18n","_opts$restrictions","existingFiles","addingFiles","maxTotalFileSize","maxNumberOfFiles","f","totalFilesSize","total","_f$size","maxFileSize","minFileSize","allowedFileTypes","allowedFileTypesString","_file$name","addingFile","files","minNumberOfFiles","_file$name2","error","requiredMetaFields","missingFields","field","defaultUploadState","_plugins","_restricter","_storeUnsubscribe","_emitter","_preProcessors","_uploaders","_postProcessors","_informAndEmit","_checkRequiredMetaFieldsOnFile","_checkRequiredMetaFields","_assertNewUploadAllowed","_transformFile","_startIfAutoProceed","_checkAndUpdateFileState","_handleUploadProgress","_updateTotalProgress","_updateTotalProgressThrottled","_calculateTotalProgress","_addListeners","_updateOnlineStatus","_requestClientById","_createUpload","_getUpload","_removeUpload","_runUpload","Uppy","_opts","_runUpload2","_removeUpload2","_getUpload2","_createUpload2","_addListeners2","_calculateTotalProgress2","_updateTotalProgress2","_checkAndUpdateFileState2","_startIfAutoProceed2","_transformFile2","_assertNewUploadAllowed2","_checkRequiredMetaFields2","_checkRequiredMetaFieldsOnFile2","_informAndEmit2","ee","progress","fileInState","newProgress","defaultRestrictionOptions","merged","callback","plugin","filesWithNewState","existingFilesState","fileID","newFileState","translator","newOpts","defaultProgress","updatedFiles","capabilities","currentUploads","updatedMeta","newMeta","ids","filesObject","totalProgress","inProgressFiles","newFiles","startedFiles","uploadStartedFiles","pausedFiles","completeFiles","erroredFiles","inProgressNotPausedFiles","processingFiles","nextFilesState","validFilesToAdd","restrictionErrors","firstValidFileToAdd","fileDescriptors","nonRestrictionErrors","subError","fileIDs","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","uploadID","newFileIDs","stateUpdate","removedFileIDs","isPaused","updatedFile","filesToRetry","_provider","_window$navigator$onL","Plugin","msg","pluginId","existsPluginAlready","plugins","foundPlugin","method","instance","updatedState","info","duration","isComplexMessage","logger","client","requestClient","currentUpload","_classPrivateFieldLoo","onBeforeUploadResult","currentlyUploadingFiles","curr","waitingFileIDs","userFacingErrors","maxNumToShow","firstErrors","additionalErrors","details","success","allowNewUpload","fileDescriptorOrFile","fileName","meta","filesToAdd","fileToAdd","_existingFiles$newFil","newFile","isGhost","onBeforeFileAddedResult","_newFile$name","_totalProgressPercent","_totalProgressPercent2","totalProgressPercent","filesInProgress","isSizedFile","sizedFilesInProgress","unsizedFilesInProgress","_file$progress$bytesT","totalUploadedSize","errorHandler","response","errorMsg","newError","uploadStalledWarningRecentlyEmitted","onUploadStarted","filesFiltered","exists","filesState","uploadResp","currentProgress","forceAllowNewUpload","getCurrentUpload","steps","step","successful","failed","BasePlugin","uppy","update","UserFacingApiError","RetryOperation","timeouts","retry_operation","currentTime","timeout","self","timeoutOps","counts","mainError","mainErrorCount","count","attempt","random","methods","original","op","retry","objectToString","isError","errorMessages","isNetworkError","AbortError","decorateErrorWithCounts","attemptNumber","retriesLeft","pRetry","reject","operation","abortHandler","cleanUp","finalError","NetworkError","xhr","fetchWithNetworkError","has","ErrorWithCause","hasProperty","getSocketHost","url","_regex$exec","host","AuthError","stripSlash","retryCount","socketActivityTimeoutMs","authErrorStatusCode","HttpError","statusCode","handleJSONResponse","errMsg","errData","cause","emitSocketProgress","uploader","progressData","bytesUploaded","bytesTotal","_file$progress$upload","_companionHeaders","_getUrl","_requestSocketToken","_awaitRemoteFileUpload","RequestClient","_awaitRemoteFileUpload2","_getUrl2","_file$remote","postBody","signal","headers","companion","emptyBody","_ref3","skipPostResponse","reqBody","getQueue","_this$uppy$getFile","existingServerToken","serverToken","outerErr","isRetryableHttpError","_ref4","queue","removeEventHandlers","socket","socketAbortController","activityTimeout","socketSend","payload","_socket","sendState","createWebsocket","onFatalError","_socketAbortControlle","resetActivityTimeout","rejectSocket","_socket2","_payload$response","_payload$response$sta","_payload$response2","_socketAbortControlle2","closeSocket","pause","newPausedState","onFileRemove","targetFile","_socketAbortControlle3","onCancelAll","_socketAbortControlle4","onFilePausedChange","onPauseAll","onResumeAll","_socketAbortControlle5","_uppy","_events","EventManager","cb","eventHandler","createCancelError","abortOn","_this$then","abortPromise","removeAbortListener","_activeRequests","_queuedHandlers","_paused","_pauseTimer","_downLimit","_upperLimit","_rateLimitingTimer","_call","_queueNext","_next","_queue","_dequeue","_resume","_increaseLimit","RateLimitedQueue","_dequeue2","_queue2","_next2","_queueNext2","_call2","queueOptions","queuedRequest","_this2","outerPromise","cancelError","innerPromise","done","cancelActive","handler","other","filterNonFailedFiles","hasError","filterFilesToEmitUploadStarted","_file$progress","AbortController","createAbortError","hasOwnProperty","getAllowedMetaFields","fields","MB","ensureInt","pausingUploadReason","_abortController","_chunks","_chunkState","_data","_file","_uploadHasStarted","_onError","_onSuccess","_shouldUseMultipart","_isRestoring","_onReject","_maxMultipartParts","_minPartSize","_initChunks","_resumeUpload","_onPartProgress","_onPartComplete","_abortUpload","MultipartUploader","_this$options","_this$options$getChun","_abortUpload2","_resumeUpload2","_initChunks2","ev","totalUploaded","c","etag","part","fileSize","shouldUseMultipart","chunkSize","arraySize","offset","getData","i2","throwIfAborted","createCanonicalRequest","CanonicalUri","CanonicalQueryString","SignedHeaders","HashedPayload","headerKeys","ec","algorithm","digest","subtle","generateHmacKey","secret","arrayBufferToHexString","arrayBuffer","byteArray","hexString","hash","createSignedURL","accountKey","accountSecret","sessionToken","bucketName","Key","Region","expires","uploadId","partNumber","Service","requestDateTime","scope","canonical","hashedCanonical","stringToSign","kDate","kRegion","kService","kSigning","signature","removeMetadataFromURL","urlString","urlObject","_abortMultipartUpload","_cache","_createMultipartUpload","_fetchSignature","_getUploadParameters","_listParts","_previousRetryDelay","_requests","_retryDelays","_sendCompletionRequest","_setS3MultipartState","_uploadPartBytes","_getFile","_shouldRetry","_nonMultipartUpload","HTTPCommunicationQueue","_requests2","setS3MultipartState","getFile","_nonMultipartUpload2","_shouldRetry2","requests","_options$retryDelays","cachedResult","promise","awaitedResult","chunks","uploadIdAndKey","alreadyUploadedParts","alreadyUploadedInfo","PartNumber","signatureRetryIterator","chunkRetryIterator","shouldRetrySignature","chunkData","onProgress","onComplete","retryDelayIterator","_err$source","status","body","formData","assertServerError","getExpiry","credentials","expirationDate","timeUntilExpiry","getAllowedMetadata","allowedMetaFields","querify","metaFields","realKey","_companionCommunicationQueue","_client","_setClient","_assertHost","_cachedTemporaryCredentials","_getTemporarySecurityCredentials","_uploadLocalFile","_getCompanionClientArgs","_upload","_setCompanionHeaders","_setResumableUploadsCapability","_resetResumableCapability","AwsS3Multipart","_rateLimitedQueue","_getCompanionClientArgs2","_uploadLocalFile2","_getTemporarySecurityCredentials2","_assertHost2","_setClient2","cFile","filesToEmit","promises","controller","removedHandler","removedFile","uploadPromise","upload","boolean","dynamicDefaultOptions","newOptions","metadata","oldSignal","_signal","filename","_signal2","uploadIdEnc","_ref5","ETag","_ref6","_ref7","_ref8","onabort","cleanup","headersMap","line","header","getTemporarySecurityCredentials","_latestFile$progress$","latestFile","onError","onSuccess","eventManager","removed"],"mappings":"2RACC,SAA0CA,EAAMC,EAAS,CAExDC,EAAA,QAAiBD,EAAS,CAO3B,GAAE,OAAQ,UAAW,CACtB,OAAiB,UAAW,CAElB,IAAIE,EAAuB,CAE/B,IACC,SAASC,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAeA,EAAQ,gBAAkBA,EAAQ,cAAgBA,EAAQ,UAAY,OAC7F,IAAIE,EAAcD,EAAoB,GAAG,EACrCE,EAAY,SAAUC,EAAI,CAC5B,IAAIC,EAAQD,EAAG,MACbE,EAAQF,EAAG,MACXG,EAAKH,EAAG,GACRI,EAAUJ,EAAG,QACbK,EAAWL,EAAG,SACdM,EAAYN,EAAG,UACfO,GAAmBP,EAAG,iBACtBQ,GAAcR,EAAG,YACjBS,EAAUT,EAAG,QACf,MAAO,CACL,KAAMF,EAAY,aAAa,WAC/B,MAAOG,EACP,MAAOC,EACP,GAAIC,EACJ,QAASC,EACT,SAAUC,EACV,UAAWC,EACX,iBAAkBC,GAClB,YAAaC,GACb,QAASC,CACV,CACF,EACDb,EAAQ,UAAYG,EACpB,IAAIW,EAAgB,SAAUC,EAAS,CACrC,MAAO,CACL,KAAMb,EAAY,aAAa,eAC/B,QAASa,CACV,CACF,EACDf,EAAQ,cAAgBc,EACxB,IAAIE,EAAkB,SAAUC,EAAQ,CACtC,OAAIA,IAAW,SACbA,EAAS,IAEJ,CACL,KAAMf,EAAY,aAAa,iBAC/B,OAAQe,CACT,CACF,EACDjB,EAAQ,gBAAkBgB,EAC1B,IAAIE,EAAe,UAAY,CAC7B,MAAO,CACL,KAAMhB,EAAY,aAAa,aAChC,CACF,EACDF,EAAQ,aAAekB,CAEvB,EAEM,IACC,SAASnB,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,SAAW,OACnB,IAAIE,EAAcD,EAAoB,GAAG,EACrCkB,EAAW,SAAUf,EAAI,CAC3B,IAAIC,EAAQD,EAAG,MACbG,EAAKH,EAAG,GACRa,EAASb,EAAG,OACZK,EAAWL,EAAG,SAChB,MAAO,CACL,KAAMF,EAAY,aAAa,UAC/B,MAAOG,EACP,GAAIE,EACJ,OAAQU,EACR,SAAUR,CACX,CACF,EACDT,EAAQ,SAAWmB,CAEnB,EAEM,IACC,SAASpB,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,cAAgBA,EAAQ,WAAaA,EAAQ,QAAU,OAC/D,IAAIE,EAAcD,EAAoB,GAAG,EACrCmB,EAAU,SAAUhB,EAAI,CAC1B,IAAIC,EAAQD,EAAG,MACbE,EAAQF,EAAG,MACXG,EAAKH,EAAG,GACRiB,EAAWjB,EAAG,SACdI,EAAUJ,EAAG,QACbO,EAAmBP,EAAG,iBACtBQ,EAAcR,EAAG,YACjBS,GAAUT,EAAG,QACf,MAAO,CACL,KAAMF,EAAY,aAAa,SAC/B,MAAOG,EACP,MAAOC,EACP,GAAIC,EACJ,SAAUc,EACV,QAASb,EACT,iBAAkBG,EAClB,YAAaC,EACb,QAASC,EACV,CACF,EACDb,EAAQ,QAAUoB,EAClB,IAAIE,EAAa,SAAUf,EAAIc,EAAU,CACvC,MAAO,CACL,KAAMnB,EAAY,aAAa,YAC/B,GAAIK,EACJ,SAAUc,CACX,CACF,EACDrB,EAAQ,WAAasB,EACrB,IAAIC,EAAgB,SAAUhB,EAAIiB,EAAa,CAC7C,MAAO,CACL,KAAMtB,EAAY,aAAa,eAC/B,GAAIK,EACJ,YAAaiB,CACd,CACF,EACDxB,EAAQ,cAAgBuB,CAExB,EAEM,IACC,SAASxB,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAeA,EAAQ,QAAUA,EAAQ,SAAW,OAC5D,IAAIE,EAAcD,EAAoB,GAAG,EACrCwB,EAAW,UAAY,CACzB,MAAO,CACL,KAAMvB,EAAY,aAAa,SAChC,CACF,EACDF,EAAQ,SAAWyB,EACnB,IAAIC,EAAU,SAAUC,EAAO,CAC7B,MAAO,CACL,KAAMzB,EAAY,aAAa,SAC/B,MAAOyB,CACR,CACF,EACD3B,EAAQ,QAAU0B,EAClB,IAAIE,EAAe,SAAUC,EAAW,CACtC,MAAO,CACL,KAAM3B,EAAY,aAAa,eAC/B,UAAW2B,CACZ,CACF,EACD7B,EAAQ,aAAe4B,CAEvB,EAEM,IACC,SAAS7B,EAAyBC,EAASC,EAAqB,CAIvE,IAAI6B,EAAgB,MAAQ,KAAK,eAAiB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KAC1EE,GAAM,EAAEF,KAAKF,MACVI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGlB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CACxD,EACGK,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAIuC,EAAcF,EAAgBpC,EAAoB,GAAG,CAAC,EAEtDuC,EAAYH,EAAgBpC,EAAoB,GAAG,CAAC,EACpDwC,EAAYxC,EAAoB,GAAG,EACnCyC,EAAWzC,EAAoB,GAAG,EAClC0C,EAAU1C,EAAoB,GAAG,EACjC2C,EAAS3C,EAAoB,GAAG,EAChC4C,EAAe5C,EAAoB,GAAG,EACtCC,EAAcD,EAAoB,GAAG,EACrC6C,EAAa7C,EAAoB,GAAG,EACpC8C,EAAU9C,EAAoB,GAAG,EACjC+C,GAAa/C,EAAoB,GAAG,EACpCgD,GAAUZ,EAAgBpC,EAAoB,GAAG,CAAC,EAClDiD,EAAcb,EAAgBpC,EAAoB,GAAG,CAAC,EAEtDkD,EAAU,qBAAsB,SAAS,gBAAgB,OAAS,kBAAmB,SAAS,gBAAgB,MAC9GC,EAAgB,CAAE,EAKlBC,EAAuB,UAAY,CACrC,SAASA,EAAQC,EAASC,EAAY,CAChCD,IAAY,SACdA,EAAU,iBAERC,IAAe,SACjBA,EAAa,CAAE,GAEjB,IAAIC,EAAQ,KACRD,EAAW,YAAc,QAC3B,QAAQ,KAAK,qLAAqL,EAEpM,KAAK,OAAShB,EAAY,QAAQ,IAAI,CAACO,EAAW,eAAgBO,EAAQ,SAAS,QAASE,CAAU,EAGtG,CACE,WAAY,SAAUE,EAAGC,EAAa,CACpC,OAAO5B,EAAc,CAAA,EAAI4B,EAAa,EAAI,CAClD,CACA,CAAK,EACD,IAAIC,KAA2BZ,EAAQ,MAAM,KAAK,OAAQD,EAAW,cAAc,EAC/Ea,EAAqB,QACvB,QAAQ,KAAK,kCAAmCA,EAAqB,KAAK,IAAI,CAAC,EAEjF,IAAIC,EAAgB,OAAON,GAAY,SAAW,SAAS,cAAcA,CAAO,EAAIA,EACpF,GAAI,EAAEM,aAAyB,kBAAoBA,aAAyB,mBAC1E,MAAM,UAAU,qEAAqE,EAUvF,GARA,KAAK,eAAiBA,EAAc,OAAS1D,EAAY,UACzD,KAAK,oBAAsB0D,EAAc,OAAS1D,EAAY,gBAC9D,KAAK,yBAA2B0D,EAAc,OAAS1D,EAAY,qBACnE,KAAK,iBAAmB,KAAK,qBAAuB,KAAK,yBACzD,KAAK,OAAO,cAAgB,KAAK,0BAA4B,KAAK,OAAO,cACpE,CAAC,OAAQ,QAAQ,EAAE,SAAS,GAAG,OAAO,KAAK,OAAO,qBAAqB,CAAC,IAC3E,KAAK,OAAO,sBAAwB,QAElCqD,EAAW,eAAiB,OAAOA,EAAW,eAAkB,WAAY,CAC9E,IAAIM,EAAKN,EAAW,yBAAyB,OAASA,EAAW,cAAgB,IAAI,OAAOA,EAAW,aAAa,EACpH,KAAK,OAAO,cAAgBM,EAAG,KAAK,KAAKA,CAAE,CACjD,CAiCI,GAhCI,KAAK,eACP,KAAK,cAAgB,IAAIhB,EAAa,aAAa,CACjD,QAASe,EACT,WAAY,KAAK,OAAO,WACxB,UAAW,KAAK,OAAO,SAC/B,CAAO,EAED,KAAK,cAAgB,IAAIf,EAAa,cAAc,CAClD,QAASe,EACT,WAAY,KAAK,OAAO,WACxB,SAAU,SAAUE,EAAM,CACxB,OAAON,EAAM,WAAW,OAAOM,CAAI,CAC7C,CACA,CAAO,EAEH,KAAK,YAAc,GACnB,KAAK,OAAS,IAAIb,GAAQ,QAC1B,KAAK,cAAgBD,GAAW,aAChC,KAAK,cAAgBA,GAAW,aAChC,KAAK,WAAaA,GAAW,aAC7B,KAAK,cAAgB,GACrB,KAAK,WAAa,CAAC,CAAC,KAAK,OAAO,cAChC,KAAK,iBAAmB,GACxB,KAAK,mBAAqB,EAC1B,KAAK,QAAU,GACf,KAAK,kBAAoB,KAAK,0BAA2B,EACzD,KAAK,WAAcD,EAAQ,YAAY,KAAK,cAAc,QAAS,UAAU,EAK7E,KAAK,WAAa,KAAK,cAAc,IACjC,CAAC,KAAK,WAAY,CACpB,IAAIgB,EAAmB,OAAO,iBAAiB,KAAK,cAAc,OAAO,EAAE,UACvEC,EAAoB,OAAO,iBAAiB,SAAS,eAAe,EAAE,UACtED,IAAqBC,IACvB,KAAK,WAAaD,EAE1B,CAeI,GAdA,KAAK,SAAW,CACd,WAAY,aACb,EACG,KAAK,mBAEP,KAAK,cAAgB,KAAK,cAAc,aAExC,KAAK,eAAiB,KAAK,cAAc,SAG3C,KAAK,eAAiB,KAAK,OAAO,QAElC,KAAK,aAAe,KAAK,OAAO,MAE5B,KAAK,cAAc,OAAS,KAAK,eAAgB,CACnD,IAAIE,EAAc,KAAK,cAAc,MAAM,MAAM,KAAK,OAAO,SAAS,EACtE,KAAK,aAAe,KAAK,aAAa,OAAOA,CAAW,CAC9D,CA+BI,GA7BI,KAAK,cAAc,SACrB,KAAK,cAAc,QAAQ,QAAQ,SAAUC,EAAQ,CACnDV,EAAM,eAAe,KAAK,CACxB,MAAOU,EAAO,MACd,MAAOA,EAAO,UACd,SAAU,CAAC,CAACA,EAAO,SACnB,SAAUA,EAAO,UAAYA,EAAO,WAAW,SAC/C,YAAaA,EAAO,QAAU,IAAMA,EAAO,aAAa,aAAa,EACrE,oBAAsBnB,EAAQ,uBAAuBmB,EAAO,QAAQ,gBAAgB,CAC9F,CAAS,CACT,CAAO,EAEH,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,WAAa,KAAK,WAAW,KAAK,IAAI,EAC3C,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,YAAc,KAAK,YAAY,KAAK,IAAI,EAC7C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,gBAAkB,KAAK,gBAAgB,KAAK,IAAI,EACrD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAE3C,KAAK,cAAc,SAAU,CAC1B,KAAK,OAAO,QACf,QAAQ,KAAK,8DAA+D,CAC1E,QAASZ,CACnB,CAAS,EAEH,KAAK,YAAc,GACnB,MACN,CAEI,KAAK,KAAM,CACf,CACE,cAAO,eAAeD,EAAS,WAAY,CACzC,IAAK,UAAY,CACf,OAAO,OAAO,kBAAkB,CAC9B,IAAI,SAAU,CACZ,OAAOD,CACR,EACD,IAAI,WAAY,CACd,OAAOF,EAAY,OAC7B,CACA,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACDG,EAAQ,UAAU,KAAO,UAAY,CACnC,GAAI,MAAK,YAGT,MAAK,iBAAkB,EACvB,KAAK,gBAAiB,EACtB,KAAK,iBAAkB,EACvB,KAAK,OAAO,UAAU,KAAK,OAAO,EAClC,KAAK,QAAS,EACd,KAAK,mBAAoB,EACzB,IAAIc,EAAgB,CAAC,KAAK,OAAO,UAAY,KAAK,cAAc,QAAQ,aAAa,UAAU,EAC3FA,GACF,KAAK,QAAS,EAEhB,KAAK,YAAc,GACnB,IAAIC,EAAiB,KAAK,OAAO,eAE7BA,GAAkB,OAAOA,GAAmB,YAC9CA,EAAe,KAAK,IAAI,EAE3B,EACDf,EAAQ,UAAU,QAAU,UAAY,CACjC,KAAK,cAGV,KAAK,sBAAuB,EAC5B,KAAK,cAAc,OAAQ,EAC3B,KAAK,eAAe,OAAO,KAAK,cAAc,OAAO,EACrD,KAAK,WAAY,EACb,KAAK,mBACP,KAAK,cAAc,QAAU,KAAK,gBAEpC,KAAK,WAAaH,EAAY,QAC9B,KAAK,YAAc,GACpB,EACDG,EAAQ,UAAU,OAAS,UAAY,CACrC,OAAI,KAAK,cAAc,YACrB,KAAK,cAAc,OAAQ,EAEzB,KAAK,eAAe,aACtB,KAAK,mBAAoB,EACzB,KAAK,MAAM,OAAQ,EACnB,KAAK,eAAe,OAAQ,GAEvB,IACR,EACDA,EAAQ,UAAU,QAAU,UAAY,CACtC,OAAK,KAAK,cAAc,YACtB,KAAK,cAAc,QAAS,EAEzB,KAAK,eAAe,aACvB,KAAK,sBAAuB,EAC5B,KAAK,MAAM,QAAS,EACpB,KAAK,eAAe,QAAS,GAExB,IACR,EACDA,EAAQ,UAAU,cAAgB,SAAUgB,EAAMC,EAAU,CAI1D,GAHIA,IAAa,SACfA,EAAW,IAET,CAACD,GAAQ,CAACA,EAAK,GACjB,OAAO,KAET,IAAI9D,EAAK8D,EAAK,GACZjE,EAAKiE,EAAK,QACV7D,EAAUJ,IAAO,OAAS,GAAKA,EAC/BmE,EAAKF,EAAK,MACVhE,EAAQkE,IAAO,OAAS,GAAKA,EAC7BC,EAAKH,EAAK,MACV/D,EAAQkE,IAAO,OAAS,GAAKA,EAC3BC,EAAQjE,GAAW,EAAI,KAAK,OAAO,aAAaA,CAAO,EAAI,KAC/D,YAAK,OAAO,YAAamC,EAAQ,eAAepC,EAAI,EAAI,CAAC,EACrD+D,GACF,KAAK,cAAc,aAAapE,EAAY,OAAO,cAAe,CAChE,GAAIK,EACJ,MAAOF,EACP,MAAOC,EACP,WAAYmE,GAASA,EAAM,MAAQA,EAAM,MAAQ,IACzD,CAAO,EAEI,IACR,EACDpB,EAAQ,UAAU,gBAAkB,SAAUgB,EAAM,CAClD,GAAI,CAACA,GAAQ,CAACA,EAAK,GACjB,OAAO,KAET,IAAI9D,EAAK8D,EAAK,GACZjE,EAAKiE,EAAK,QACV7D,EAAUJ,IAAO,OAAS,GAAKA,EAC/BmE,EAAKF,EAAK,MACVhE,EAAQkE,IAAO,OAAS,GAAKA,EAC7BC,EAAKH,EAAK,MACV/D,EAAQkE,IAAO,OAAS,GAAKA,EAC3BC,EAAQjE,GAAW,EAAI,KAAK,OAAO,aAAaA,CAAO,EAAI,KAC/D,YAAK,OAAO,YAAamC,EAAQ,eAAepC,EAAI,EAAK,CAAC,EAC1D,KAAK,cAAc,aAAaL,EAAY,OAAO,cAAe,CAChE,GAAIK,EACJ,MAAOF,EACP,MAAOC,EACP,WAAYmE,GAASA,EAAM,MAAQA,EAAM,MAAQ,IACvD,CAAK,EACM,IACR,EACDpB,EAAQ,UAAU,aAAe,UAAY,CAC3C,IAAIG,EAAQ,KACZ,YAAK,OAAO,MAAM,QAAQ,SAAUa,EAAM,CACxC,OAAOb,EAAM,cAAca,CAAI,CACrC,CAAK,EACM,IACR,EACDhB,EAAQ,UAAU,eAAiB,UAAY,CAC7C,IAAIG,EAAQ,KACZ,YAAK,OAAO,MAAM,QAAQ,SAAUa,EAAM,CACxC,OAAOb,EAAM,gBAAgBa,CAAI,CACvC,CAAK,EACM,IACR,EACDhB,EAAQ,UAAU,yBAA2B,SAAUhD,EAAO,CAC5D,IAAImD,EAAQ,KACZ,YAAK,OAAO,YAAY,OAAO,SAAUa,EAAM,CAC7C,OAAOA,EAAK,QAAUhE,CAC5B,CAAK,EAAE,QAAQ,SAAUgE,EAAM,CACzB,OAAOb,EAAM,YAAYa,CAAI,CACnC,CAAK,EACM,IACR,EACDhB,EAAQ,UAAU,kBAAoB,SAAUqB,EAAY,CAC1D,IAAIlB,EAAQ,KACZ,YAAK,OAAO,YAAY,OAAO,SAAUpD,EAAI,CAC3C,IAAIG,EAAKH,EAAG,GACZ,OAAOG,IAAOmE,CACpB,CAAK,EAAE,QAAQ,SAAUL,EAAM,CACzB,OAAOb,EAAM,YAAYa,CAAI,CACnC,CAAK,EACM,IACR,EACDhB,EAAQ,UAAU,uBAAyB,SAAUiB,EAAU,CAC7D,IAAId,EAAQ,KACZ,OAAIc,IAAa,SACfA,EAAW,IAEb,KAAK,OAAO,uBAAuB,QAAQ,SAAUD,EAAM,CACzDb,EAAM,YAAYa,CAAI,EAGlBC,GACFd,EAAM,eAAea,EAAK,KAAK,CAEvC,CAAK,EACM,IACR,EACDhB,EAAQ,UAAU,aAAe,SAAUsB,EAAmB,CAC5D,IAAInB,EAAQ,KACZ,OAAI,KAAK,SAAS,SACT,MAET,sBAAsB,UAAY,CAChCA,EAAM,SAAS,KAAM,EACrBA,EAAM,eAAe,KAAKA,EAAM,SAAS,qBAAqB,EAC1D,CAACmB,GAAqBnB,EAAM,YAC9BA,EAAM,MAAM,MAAO,EAErBA,EAAM,cAAc,aAAatD,EAAY,OAAO,aAAc,EAAE,CAC1E,CAAK,EACM,KACR,EACDmD,EAAQ,UAAU,aAAe,SAAUuB,EAAkB,CAC3D,IAAIpB,EAAQ,KACZ,OAAK,KAAK,SAAS,UAGnB,sBAAsB,UAAY,CAChCA,EAAM,SAAS,KAAM,EACrBA,EAAM,eAAe,MAAO,EACxB,CAACoB,GAAoBpB,EAAM,aAC7BA,EAAM,MAAM,uBAAwB,EACpCA,EAAM,MAAM,KAAM,GAEpBA,EAAM,cAAc,aAAatD,EAAY,OAAO,aAAc,EAAE,CAC1E,CAAK,EACM,MAXE,IAYV,EACDmD,EAAQ,UAAU,SAAW,SAAUwB,EAAW,CAC5CA,IAAc,SAChBA,EAAY,IAEd,IAAIC,EAAS,KAAK,OAAO,YAAY,OAAO,SAAUC,EAAeV,EAAM,CACzE,IAAIW,EAAYH,EAAYR,EAAK,MAAQA,EACzC,OAAAU,EAAc,KAAKC,CAAS,EACrBD,CACR,EAAE,EAAE,EACL,OAAO,KAAK,oBAAsBD,EAAO,CAAC,EAAIA,CAC/C,EACDzB,EAAQ,UAAU,SAAW,SAAU4B,EAAO,CAC5C,IAAIzB,EAAQ,KACZ,OAAK,KAAK,aAGVyB,EAAM,QAAQ,SAAU5E,EAAO,CAC7B,OAAOmD,EAAM,iBAAiBnD,CAAK,CACzC,CAAK,EACM,MALE,IAMV,EACDgD,EAAQ,UAAU,iBAAmB,SAAUhD,EAAO,CACpD,IAAImD,EAAQ,KACZ,GAAI,CAAC,KAAK,aAAe,KAAK,eAC5B,OAAO,KAGT,IAAI0B,EAAc,MAAM,QAAQ7E,CAAK,EAAIA,EAAQ,CAACA,CAAK,EAEvD,OAAA6E,EAAY,QAAQ,SAAUC,EAAK,CACjC,OAAO3B,EAAM,4BAA4B2B,CAAG,CAClD,CAAK,EACM,IACR,EAgED9B,EAAQ,UAAU,WAAa,SAAU+B,EAAuB/E,EAAOC,EAAO+E,EAAgB,CAC5F,IAAI7B,EAAQ,KAaZ,GAZI4B,IAA0B,SAC5BA,EAAwB,CAAE,GAExB/E,IAAU,SACZA,EAAQ,SAENC,IAAU,SACZA,EAAQ,SAEN+E,IAAmB,SACrBA,EAAiB,IAEf,CAAC,KAAK,YACR,MAAM,IAAI,eAAe,gEAAgE,EAE3F,GAAI,CAAC,KAAK,iBACR,MAAM,IAAI,UAAU,mDAAmD,EAEzE,GAAI,OAAOhF,GAAU,UAAY,CAACA,EAChC,MAAM,IAAI,UAAU,mEAAmE,EAMzF,GAHIgF,GACF,KAAK,aAAc,EAEjB,OAAOD,GAA0B,WAAY,CAE/C,IAAIE,EAAYF,EAAsB,IAAI,EAC1C,GAAI,OAAO,SAAY,YAAcE,aAAqB,QAGxD,OAAO,IAAI,QAAQ,SAAUC,EAAS,CACpC,OAAO,sBAAsBA,CAAO,CAC9C,CAAS,EAAE,KAAK,UAAY,CAClB,OAAO/B,EAAM,oBAAoB,EAAI,CAC/C,CAAS,EAAE,KAAK,UAAY,CAClB,OAAO8B,CACjB,CAAS,EAAE,KAAK,SAAUxB,EAAM,CACtB,OAAON,EAAM,WAAWM,EAAMzD,EAAOC,EAAO+E,CAAc,CACpE,CAAS,EAAE,MAAM,SAAUG,EAAK,CACjBhC,EAAM,OAAO,QAChB,QAAQ,MAAMgC,CAAG,CAE7B,CAAS,EAAE,KAAK,UAAY,CAClB,OAAOhC,EAAM,oBAAoB,EAAK,CAChD,CAAS,EAAE,KAAK,UAAY,CAClB,OAAOA,CACjB,CAAS,EAGH,GAAI,CAAC,MAAM,QAAQ8B,CAAS,EAC1B,MAAM,IAAI,UAAU,4FAA4F,OAAO,OAAOA,CAAS,CAAC,EAG1I,OAAO,KAAK,WAAWA,EAAWjF,EAAOC,EAAO,EAAK,CAC3D,CACI,GAAI,CAAC,MAAM,QAAQ8E,CAAqB,EACtC,MAAM,IAAI,UAAU,oHAAoH,EAE1I,YAAK,eAAe,mBAAoB,EACxC,KAAK,cAAe,EACpBA,EAAsB,QAAQ,SAAUK,EAAe,CACrD,GAAIA,EAAc,QAChBjC,EAAM,UAAU,CACd,GAAIiC,EAAc,GAAK,SAAS,GAAG,OAAOA,EAAc,EAAE,EAAG,EAAE,EAAI,KACnE,MAAOA,EACP,SAAUpF,EACV,SAAUC,CACpB,CAAS,MACI,CACL,IAAIoF,EAASD,EACbjC,EAAM,WAAW,CACf,MAAOkC,EAAOrF,CAAK,EACnB,MAAOqF,EAAOpF,CAAK,EACnB,WAAY,CAAC,CAACoF,EAAO,SACrB,WAAY,CAAC,CAACA,EAAO,SACrB,YAAa,CAAC,CAACA,EAAO,YACtB,iBAAkBA,EAAO,gBACnC,CAAS,CACT,CACA,CAAK,EACD,KAAK,aAAc,EACZ,IACR,EACDrC,EAAQ,UAAU,aAAe,UAAY,CAC3C,YAAK,OAAO,YAAaZ,EAAU,cAAY,CAAG,EAC3C,IACR,EACDY,EAAQ,UAAU,WAAa,UAAY,CACzC,YAAK,OAAO,YAAaT,EAAO,UAAQ,CAAG,EACpC,IACR,EACDS,EAAQ,UAAU,WAAa,UAAY,CACzC,IAAIsC,EAAsB,CAAC,KAAK,oBAChC,YAAK,MAAM,MAAMA,CAAmB,EAChC,CAAC,KAAK,gBAAkB,KAAK,aAC/B,KAAK,aAAe,GACpB,KAAK,OAAO,YAAalD,EAAU,iBAAiB,EAAI,CAAC,GAEpD,IACR,EACDY,EAAQ,UAAU,QAAU,UAAY,CACtC,GAAI,MAAK,OAAO,YAGhB,MAAK,cAAgB,KAAK,OAAO,MACjC,IAAIuC,EAAe,KAAK,cAAc,UAAY,KAAK,WAAW,SAAW,KAAK,cAAc,SAAW,KAAK,WAAW,QAAU,KAAK,cAAc,QAAU,KAAK,WAAW,MAC9KC,EAAsB,KAAK,iBAC3BC,EAAoB,KAAK,cAAc,QAAU,KAAK,WAAW,MAChEF,IAGDC,GACF,KAAK,eAAgB,EAEnBC,GACF,KAAK,aAAc,EAErB,KAAK,WAAa,KAAK,eACxB,EACDzC,EAAQ,UAAU,eAAiB,UAAY,CAC7C,IAAIG,EAAQ,KACRpD,EAAK,KAAK,OACZ2F,EAAe3F,EAAG,aAClB4F,EAAgB5F,EAAG,cACjB6F,EAAqB,SAAS,uBAAwB,EAQ1D,GAPA,KAAK,WAAW,MAAO,EACnB,KAAK,OAAO,qBACd,sBAAsB,UAAY,CAChC,OAAOzC,EAAM,WAAW,YAAa,CAC7C,CAAO,EAGCuC,EAAa,QAAU,GAAK,CAAC,KAAK,aAAc,CAElD,IAAIG,EAAqBF,EAAc,OAAO,SAAUG,EAAc,CACpE,OAAOA,EAAa,cAAgB,IAAQA,EAAa,UAAY,EAC7E,CAAO,EACGD,EAAmB,QAAU,IAC/BD,EAAqB,KAAK,uBAAuBC,EAAoBD,CAAkB,GAEzFA,EAAqB,KAAK,sBAAsBF,EAAcC,EAAeC,CAAkB,CACrG,MAAeD,EAAc,QAAU,IACjCC,EAAqB,KAAK,uBAAuBD,EAAeC,CAAkB,GAGpF,GAAIA,EAAmB,YAAcA,EAAmB,WAAW,OAAS,EAAG,CAC7E,IAAIG,EAAc,KAAK,OAAO,YAC1BC,EAAa,KAAK,YAAYD,EAAa,KAAK,MAAM,KAAK,EAE/D,GAAIC,EAAW,SAEb,KAAK,WAAW,OAAOJ,CAAkB,EACzC,KAAK,iBAAkB,MAClB,CACL,IAAIK,EAAS,KAAK,aAAa,SAAUD,EAAW,MAAM,EAC1D,KAAK,WAAW,OAAOC,CAAM,CACrC,CACA,KAAW,CAEL,IAAIC,EAAe,OACfD,EAAS,OACT,KAAK,cACPA,EAAS,OAAO,KAAK,OAAO,eAAkB,WAAa,KAAK,OAAO,cAAa,EAAK,KAAK,OAAO,cACrGC,EAAe,KAAK,aAAa,SAAUD,EAAQ,YAAY,IAE/DA,EAAS,OAAO,KAAK,OAAO,eAAkB,WAAa,KAAK,OAAO,cAAa,EAAK,KAAK,OAAO,cACrGC,EAAe,KAAK,aAAa,SAAUD,EAAQ,YAAY,GAEjE,KAAK,WAAW,OAAOC,CAAY,CACzC,CACG,EACDlD,EAAQ,UAAU,aAAe,UAAY,CAC3C,IAAI+C,EAAc,KAAK,OAAO,aAAe,CAAE,EAC/C,KAAK,SAAS,MAAO,EAGrB,IAAII,EAAmB,KAAK,qBAAqBJ,CAAW,EAExDI,EAAiB,YACnB,KAAK,SAAS,OAAOA,CAAgB,CAExC,EACDnD,EAAQ,UAAU,sBAAwB,SAAUoD,EAAQC,EAASC,EAAU,CAC7E,IAAInD,EAAQ,KACRmD,IAAa,SACfA,EAAW,SAAS,uBAAwB,GAE9C,IAAIC,EAAkB,SAAUnC,EAAO,CACrC,OAAOiC,EAAQ,OAAO,SAAUhB,EAAQ,CACtC,OAAIlC,EAAM,oBACDkC,EAAO,UAAYjB,EAAM,GAE3BiB,EAAO,UAAYjB,EAAM,KAAOjB,EAAM,OAAO,wBAA0B,UAAY,CAACkC,EAAO,SAC1G,CAAO,CACF,EAED,OAAI,KAAK,OAAO,YACde,EAAO,KAAK,KAAK,OAAO,MAAM,EAEhCA,EAAO,QAAQ,SAAUhC,EAAO,CAC9B,IAAIoC,EAAeD,EAAgBnC,CAAK,EACxC,GAAIoC,EAAa,QAAU,EAAG,CAC5B,IAAIC,EAAgBtD,EAAM,aAAa,cAAeiB,CAAK,EAC3DkC,EAAS,YAAYG,CAAa,EAClCtD,EAAM,uBAAuBqD,EAAcF,EAAU,EAAI,CACjE,CACA,CAAK,EACMA,CACR,EACDtD,EAAQ,UAAU,uBAAyB,SAAUqD,EAASC,EAAUI,EAAa,CACnF,IAAIvD,EAAQ,KACRmD,IAAa,SACfA,EAAW,SAAS,uBAAwB,GAE1CI,IAAgB,SAClBA,EAAc,IAGhB,IAAI3G,EAAK,KAAK,OACZ4G,EAAwB5G,EAAG,sBAC3B6G,EAAoB7G,EAAG,kBACvB8G,EAAoB9G,EAAG,kBACrB+G,EAAS,KAAK,aAAepE,EAAQ,YAAc,KAAK,OAAO,OAC/DqE,EAAe,SAAU1B,GAAQ,CACnC,IAAI2B,GAAeL,IAA0B,OAASxD,EAAM,qBAAuB,CAACkC,GAAO,SAAW,GACtG,GAAI2B,GAAc,CAChB,IAAId,GAAe/C,EAAM,aAAa,SAAUkC,GAAQlC,EAAM,OAAO,cAAc,EACnFmD,EAAS,YAAYJ,EAAY,CACzC,CACK,EACGe,EAAsBZ,EACtBM,IAA0B,QAAU,CAAC,KAAK,sBAC5CM,EAAsBZ,EAAQ,OAAO,SAAUhB,GAAQ,CACrD,MAAO,CAACA,GAAO,QACvB,CAAO,GAGH,IAAInB,GAAK+C,EAAoB,OAAO,SAAUC,GAAK7B,GAAQ,CACvD,OAAIA,GAAO,YACT6B,GAAI,mBAAmB,KAAK7B,EAAM,EAElC6B,GAAI,cAAc,KAAK7B,EAAM,EAExB6B,EACf,EAAS,CACD,mBAAoB,CAAE,EACtB,cAAe,CAAA,CACvB,CAAO,EACDC,GAAqBjD,GAAG,mBACxBkD,GAAgBlD,GAAG,eAEjB,KAAK,OAAO,YAAc,KAAK,eACjCkD,GAAc,KAAKN,CAAM,EAE3B,IAAIO,GAAcJ,EAAoB,OAElCK,GAAgB,KAAK,oBAAsB7F,EAAcA,EAAc,GAAI0F,GAAoB,EAAI,EAAGC,GAAe,EAAI,EAAIA,GAC7H,KAAK,aACPC,GAAcT,EACLC,GAAqBA,EAAoB,GAAK,CAACH,IACxDW,GAAcR,GAGhB,QAAShF,GAAI,EAAGA,GAAIwF,GAAaxF,IAAK,EAChCyF,GAAczF,EAAC,GACjBkF,EAAaO,GAAczF,EAAC,CAAC,EAGjC,OAAOyE,CACR,EACDtD,EAAQ,UAAU,qBAAuB,SAAU4B,EAAO0B,EAAU,CAClE,IAAInD,EAAQ,KACRmD,IAAa,SACfA,EAAW,SAAS,uBAAwB,GAG9C,IAAIvG,EAAK,KAAK,OACZwH,EAAkBxH,EAAG,gBACrByH,EAASzH,EAAG,OACZ0H,EAAmB1H,EAAG,iBAEpBwH,GAAmB,CAAC,KAAK,qBAC3B3C,EAAM,KAAK4C,CAAM,EAEf,KAAK,eAEP,KAAK,cAAc,MAAQ5C,EAAM,IAAI,SAAU7E,EAAI,CACjD,IAAIC,EAAQD,EAAG,MACf,OAAOC,CACR,CAAA,EAAE,KAAK,KAAK,OAAO,SAAS,EAG7B,KAAK,cAAc,QAAU4E,EAE/B,IAAI8C,EAAoB,SAAU1D,EAAM,CAEtC,IAAI2D,EAAWxE,EAAM,aAAa,OAAQa,EAAMyD,CAAgB,EAEhEnB,EAAS,YAAYqB,CAAQ,CAC9B,EAED,OAAA/C,EAAM,QAAQ8C,CAAiB,EACxBpB,CACR,EACDtD,EAAQ,UAAU,eAAiB,SAAUhD,EAAO,CACvBA,GAAU,MAGrC,KAAK,cAAc,aAAaH,EAAY,OAAO,OAAQ,CACzD,MAAOG,CACb,CAAK,CACF,EACDgD,EAAQ,UAAU,yBAA2B,SAAU4E,EAAmB,CACxE,KAAK,SAAS,CACZ,MAAOA,EAAkB,MACzB,MAAOA,EAAkB,MACzB,SAAUA,EAAkB,GAC5B,QAASA,EAAkB,QAC3B,YAAaA,EAAkB,WACrC,CAAK,EACD,KAAK,eAAeA,EAAkB,KAAK,CAC5C,EACD5E,EAAQ,UAAU,oBAAsB,SAAU+C,EAAa9C,EAAS,CACtE,GAAI,GAAC8C,GAAe,CAAC9C,GAAW,CAAC,KAAK,OAAO,aAAe,CAAC,KAAK,OAAO,kBAGzE,KAAI4E,EAAS5E,EAAQ,YAAcA,EAAQ,WAAW,QAAQ,GAC1D6E,EAAeD,GAAU9B,EAAY,KAAK,SAAU/B,EAAM,CAC5D,OAAOA,EAAK,KAAO,SAAS6D,EAAQ,EAAE,CAC5C,CAAK,EACIC,IAIL,KAAK,YAAYA,CAAY,EAC7B,KAAK,eAAeA,EAAa,KAAK,EAClC,KAAK,qBAAuB,KAAK,OAAO,mBAC1C,KAAK,yBAAyB,KAAK,OAAO,iBAAiB,GAE9D,EACD9E,EAAQ,UAAU,kBAAoB,SAAU+C,EAAa9C,EAAS8E,EAAa,CACjF,IAAI5E,EAAQ,KAIZ,GAHI4E,IAAgB,SAClBA,EAAc,IAEZ,GAAChC,GAAe,CAAC9C,GAAW,CAAC,KAAK,OAAO,aAAe,KAAK,qBAGjE,KAAI+E,EAAW/E,EAAQ,QAAQ,GAI/B8C,EAAY,QAAQ,SAAU/B,EAAM,CAC9BA,EAAK,KAAO,SAAS,GAAG,OAAOgE,CAAQ,EAAG,EAAE,GAAK,CAAChE,EAAK,YACzDb,EAAM,cAAca,CAAI,EACf,CAAC+D,GAAe/D,EAAK,aAC9Bb,EAAM,gBAAgBa,CAAI,CAElC,CAAK,EAGD,KAAK,MAAM,MAAO,EACnB,EACDhB,EAAQ,UAAU,oBAAsB,SAAU+C,EAAa9C,EAAS,CACtE,GAAI,GAAC8C,GAAe,CAAC9C,GAIrB,KAAI/C,EAAK+C,EAAQ,QAAQ,GACrBoC,EAASnF,GAAM,KAAK,OAAO,cAAcA,CAAE,EAC/C,GAAKmF,EAGL,KAAI4C,EAAgBlC,EAAY,CAAC,GAAKA,EAAY,CAAC,EAAE,QAAUA,EAAY,CAAC,EAAE,QAAU,OACpFmC,EAAoB,KAAK,SAAS,SAMtC,GAJA7C,EAAO,QAAU4C,EACjB,KAAK,cAAc,aAAapI,EAAY,OAAO,OAAQ,CACzD,OAAQwF,CACd,CAAK,EACG,CAACA,EAAO,UAAY,CAACA,EAAO,SAAU,CACxC,IAAIW,EAAa,KAAK,YAAYD,EAAaV,EAAO,KAAK,EACvDW,EAAW,WACb,KAAK,SAAS,CACZ,MAAOX,EAAO,MACd,MAAOA,EAAO,MACd,SAAUA,EAAO,GACjB,QAASA,EAAO,QAChB,iBAAkBA,EAAO,iBACzB,YAAaA,EAAO,YACpB,QAASA,EAAO,OAC1B,CAAS,EACD,KAAK,eAAeA,EAAO,KAAK,EAExC,CACI,KAAK,WAAY,EAEb6C,GAAqB,KAAK,sBAC5B,KAAK,aAAa,EAAI,EACtB,KAAK,eAAe,MAAO,IAE9B,EACDlF,EAAQ,UAAU,iBAAmB,SAAU+C,EAAa,CAC1D,GAAI,GAAC,KAAK,OAAO,aAAe,CAACA,GAGjC,KAAIoC,EAAWpC,EAAYA,EAAY,OAAS,CAAC,EAC7CqC,EAAsBrC,EAAY,KAAK,SAAU/B,EAAM,CACzD,OAAOA,EAAK,WAClB,CAAK,EAGG,KAAK,OAAO,WAAa,CAACoE,GAAuBD,GACnD,KAAK,MAAM,MAAQA,EAAS,MAC5B,KAAK,MAAM,SAAU,EACrB,KAAK,YAAYA,CAAQ,EACzB,KAAK,eAAeA,EAAS,KAAK,IAE7BC,GAEH,KAAK,cAAcD,EAAU,EAAK,EAEpC,KAAK,uBAAuB,EAAI,GAEnC,EACDnF,EAAQ,UAAU,cAAgB,UAAY,CAC5C,KAAK,OAAO,YAAaT,EAAO,cAAc,EAAI,CAAC,CACpD,EACDS,EAAQ,UAAU,aAAe,UAAY,CAC3C,KAAK,OAAO,YAAaT,EAAO,cAAc,EAAK,CAAC,CACrD,EACDS,EAAQ,UAAU,oBAAsB,SAAUqF,EAAY,CACxDA,IAAe,SACjBA,EAAa,IAEf,IAAIC,EAAkB,KAAK,SAAS,SAAS,IAAI,OAAO,KAAK,OAAO,WAAW,WAAW,CAAC,EACvFD,GACF,KAAK,QAAS,EACd,KAAK,eAAe,gBAAiB,EACjC,KAAK,oBACFC,EAMHA,EAAgB,UAAY,KAAK,OAAO,aALxCA,EAAkB,KAAK,aAAa,cAAe,KAAK,OAAO,WAAW,EACtEA,GACF,KAAK,SAAS,OAAOA,CAAe,GAMxC,KAAK,MAAM,YAAc,KAAK,OAAO,cAGvC,KAAK,OAAQ,EACb,KAAK,eAAe,mBAAoB,EACpC,KAAK,oBACHA,IACFA,EAAgB,UAAY,KAAK,mBAAqB,IAGxD,KAAK,MAAM,YAAc,KAAK,mBAAqB,GAGxD,EACDtF,EAAQ,UAAU,cAAgB,SAAUhD,EAAO,CACjD,GAAK,KAAK,MAAM,WAGhB,KAAIqG,EAAU,KAAK,OAAO,QACtBtG,EAAK,KAAK,OACZwI,EAAcxI,EAAG,YACjByI,EAAgBzI,EAAG,cACjB0I,EAAqBpC,EAAQ,KAAK,SAAUxC,EAAQ,CACtD,MAAO,CAACA,EAAO,MACrB,CAAK,EAED,GAAI7D,IAAU,MAAQ,OAAOA,EAAU,KAAeA,EAAM,QAAUuI,EAAa,CACjF,IAAIG,EAAcF,EAAgB,KAAK,eAAexI,CAAK,EAAI,EAE/D,KAAK,cAAc,aAAaH,EAAY,OAAO,OAAQ,CACzD,MAAOG,EACP,YAAa0I,CACrB,CAAO,CACF,MAAUD,IAET,KAAK,aAAe,GACpB,KAAK,OAAO,YAAarG,EAAU,iBAAiB,EAAI,CAAC,GAE5D,EACDY,EAAQ,UAAU,YAAc,SAAU+C,EAAa/F,EAAO,CAC5D,IAAIgG,EAAa,GACbC,EAAS,OAAO,KAAK,OAAO,aAAgB,WAAa,KAAK,OAAO,YAAYjG,CAAK,EAAI,KAAK,OAAO,YAC1G,GAAI,CAAC,KAAK,oBAAqB,CAC7B,IAAI2I,KAAuBjG,EAAQ,eAAeqD,EAAa/F,CAAK,EAChE,KAAK,OAAO,aAAe,GAAK,KAAK,OAAO,cAAgB+F,EAAY,SAG1EC,EAAa,GACbC,EAAS,OAAO,KAAK,OAAO,aAAgB,WAAa,KAAK,OAAO,YAAY,KAAK,OAAO,YAAY,EAAI,KAAK,OAAO,aAEvH,CAAC,KAAK,OAAO,uBAAyB0C,GAAoB3C,IAC5DA,EAAa,GACbC,EAAS,OAAO,KAAK,OAAO,gBAAmB,WAAa,KAAK,OAAO,eAAejG,CAAK,EAAI,KAAK,OAAO,gBAE1G,KAAK,gBAAkB,KAAK,OAAO,UAAYgG,GAAc,OAAO,KAAK,OAAO,eAAkB,YAAc,CAAC,KAAK,OAAO,cAAchG,CAAK,IAClJgG,EAAa,GACbC,EAAS,OAAO,KAAK,OAAO,mBAAsB,WAAa,KAAK,OAAO,kBAAkBjG,CAAK,EAAI,KAAK,OAAO,kBAE1H,CACI,MAAO,CACL,SAAUgG,EACV,OAAQC,CACT,CACF,EACDjD,EAAQ,UAAU,eAAiB,SAAUhD,EAAO,CAClD,IAAI4I,EAAW,OAAO5I,GAAU,SAAWA,EAAM,KAAI,EAAKA,EACtD6I,EAAe,OAAO,KAAK,eAAkB,SAAW,KAAK,cAAc,OAAS,KAAK,cAC7F,GAAID,EAAS,OAAS,GAAKA,IAAa,GAAG,OAAOC,EAAc,GAAG,EACjE,MAAO,GAGT,IAAIC,EAAW,KAAK,OAAO,kBACvBC,EAASH,EACTI,EAAU,OAAO,OAAO,KAAK,OAAO,YAAa,CACnD,KAAMvH,EAAc,CAAE,EAAE,KAAK,OAAO,aAAc,EAAI,EACtD,eAAgB,EACtB,CAAK,EACGwH,EAAO,IAAI9G,EAAU,QAAQ2G,EAAUE,CAAO,EAC9CtI,EAAUuI,EAAK,OAAOF,CAAM,EAChC,YAAK,cAAgBH,EACrB,KAAK,mBAAqB,EAC1B,KAAK,aAAe,GACpB,KAAK,OAAO,YAAaxG,EAAU,eAAe1B,CAAO,CAAC,EACnDA,EAAQ,MAChB,EACDsC,EAAQ,UAAU,mBAAqB,UAAY,CACjD,IAAIkG,EAAkB,SAAS,gBAE/BA,EAAgB,iBAAiB,WAAY,KAAK,YAAa,EAAI,EACnE,KAAK,eAAe,QAAQ,iBAAiB,UAAW,KAAK,WAAY,EAAI,EAC7E,KAAK,eAAe,QAAQ,iBAAiB,YAAa,KAAK,aAAc,EAAI,EAEjFA,EAAgB,iBAAiB,QAAS,KAAK,SAAU,CACvD,QAAS,EACf,CAAK,EACDA,EAAgB,iBAAiB,YAAa,KAAK,aAAc,CAC/D,QAAS,EACf,CAAK,EACD,KAAK,SAAS,QAAQ,iBAAiB,YAAa,KAAK,aAAc,CACrE,QAAS,EACf,CAAK,EACG,KAAK,sBACP,KAAK,eAAe,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CACnE,QAAS,EACjB,CAAO,EACD,KAAK,eAAe,QAAQ,iBAAiB,OAAQ,KAAK,QAAS,CACjE,QAAS,EACjB,CAAO,GAEH,KAAK,MAAM,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CAC1D,QAAS,EACf,CAAK,EACD,KAAK,MAAM,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CAC1D,QAAS,EACf,CAAK,EACD,KAAK,MAAM,QAAQ,iBAAiB,OAAQ,KAAK,QAAS,CACxD,QAAS,EACf,CAAK,EACG,KAAK,MAAM,QAAQ,MACrB,KAAK,MAAM,QAAQ,KAAK,iBAAiB,QAAS,KAAK,aAAc,CACnE,QAAS,EACjB,CAAO,EAEH,KAAK,MAAM,kBAAmB,CAC/B,EACDlG,EAAQ,UAAU,sBAAwB,UAAY,CACpD,IAAIkG,EAAkB,SAAS,gBAC/BA,EAAgB,oBAAoB,WAAY,KAAK,YAAa,EAAI,EACtE,KAAK,eAAe,QAAQ,oBAAoB,UAAW,KAAK,WAAY,EAAI,EAChF,KAAK,eAAe,QAAQ,oBAAoB,YAAa,KAAK,aAAc,EAAI,EACpFA,EAAgB,oBAAoB,QAAS,KAAK,QAAQ,EAC1DA,EAAgB,oBAAoB,YAAa,KAAK,YAAY,EAClE,KAAK,SAAS,QAAQ,oBAAoB,YAAa,KAAK,YAAY,EACpE,KAAK,sBACP,KAAK,eAAe,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EACtE,KAAK,eAAe,QAAQ,oBAAoB,OAAQ,KAAK,OAAO,GAEtE,KAAK,MAAM,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EAC7D,KAAK,MAAM,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EAC7D,KAAK,MAAM,QAAQ,oBAAoB,OAAQ,KAAK,OAAO,EACvD,KAAK,MAAM,QAAQ,MACrB,KAAK,MAAM,QAAQ,KAAK,oBAAoB,QAAS,KAAK,YAAY,EAExE,KAAK,MAAM,qBAAsB,CAClC,EACDlG,EAAQ,UAAU,WAAa,SAAUmG,EAAO,CAC9C,IAAI3I,EAAU2I,EAAM,QAChBpD,EAAc,KAAK,OAAO,YAC1BqD,EAAkB,KAAK,MAAM,WAC7BlB,EAAoB,KAAK,SAAS,SAClCmB,EAAW,KAAK,SAAS,YAAa,EACtCC,EAAY,OAAO,aAAa9I,CAAO,EAEvC+I,EAAmB,eAAe,KAAKD,CAAS,EAChDE,EAAW3J,EAAY,UAAU,SACnC4J,EAAa5J,EAAY,UAAU,WACnC6J,EAAY7J,EAAY,UAAU,UAClC8J,GAAQ9J,EAAY,UAAU,MAC9B+J,GAAU/J,EAAY,UAAU,QAChCgK,GAAShK,EAAY,UAAU,OAC/BiK,GAAWjK,EAAY,UAAU,SACjCkK,GAAclK,EAAY,UAAU,YACpCmK,GAAgBnK,EAAY,UAAU,cAYxC,OAXI,CAAC,KAAK,gBAAkB,CAACqI,GAAqBqB,IAChD,KAAK,aAAc,EACd,KAAK,MAAM,aAMd,KAAK,MAAM,OAASJ,EAAM,IAAI,YAAa,IAGvC3I,EAAO,CACb,KAAKmJ,GACH,OAAO,KAAK,aAAaR,EAAOE,CAAQ,EAC1C,KAAKK,EACH,OAAO,KAAK,YAAYP,EAAOpD,EAAamC,CAAiB,EAC/D,KAAK0B,GACH,OAAO,KAAK,aAAa1B,CAAiB,EAC5C,KAAK2B,GACL,KAAKE,GACL,KAAKD,GACL,KAAKE,GACH,OAAO,KAAK,gBAAgBb,EAAOjB,CAAiB,EACtD,KAAKuB,EACL,KAAKD,EACH,OAAO,KAAK,aAAaL,EAAOpD,EAAaqD,CAAe,CAEpE,CACG,EACDpG,EAAQ,UAAU,SAAW,SAAUjD,EAAI,CACzC,IAAIkK,EAASlK,EAAG,OACdS,EAAUT,EAAG,QACXC,EAAQ,KAAK,MAAM,MACnB+F,EAAc,KAAK,OAAO,YAC1BC,EAAa,KAAK,YAAYD,EAAa/F,CAAK,EAChDkK,EAAUrK,EAAY,UAAU,SAClCsK,EAAYtK,EAAY,UAAU,WAGpC,GAAI,KAAK,eAAgB,CACvB,IAAIuK,EAAwBpE,EAAW,QAAUhG,EACjD,GAAIoK,EAAuB,CACzB,IAAIlE,EAAe,KAAK,aAAa,SAAUF,EAAW,MAAM,EAChE,KAAK,SAAS,QAAQ,UAAYE,EAAa,UAC/C,KAAK,aAAa,EAAI,CAC9B,MACQ,KAAK,aAAa,EAAI,CAE9B,KAAW,CACL,IAAImE,EAAoB7J,IAAY0J,GAAW1J,IAAY2J,EACvDG,GAAsBD,GAAqBJ,GAAU,CAACA,EAAO,MAC7DM,GAAuB,CAAC,KAAK,gBAAkB,KAAK,aACpDC,GAAY,KAAK,YAAcxE,EAAW,SAC1CsE,IAAuBC,IACzB,KAAK,aAAe,GACpB,KAAK,OAAO,YAAanI,EAAU,iBAAiB,EAAI,CAAC,GAChDoI,IACT,KAAK,cAAc,KAAK,MAAM,QAAQ,CAE9C,CACI,KAAK,WAAa,KAAK,OAAO,aAC/B,EACDxH,EAAQ,UAAU,aAAe,SAAUmG,EAAOE,EAAU,CAC1D,IAAIoB,EAAUtB,EAAM,QAClBuB,EAAUvB,EAAM,QACdwB,EAAwBF,GAAWC,EAEvC,GAAIC,GAAyBtB,EAAU,CACrC,KAAK,WAAa,GAClB,IAAIuB,EAAsB,KAAK,OAAO,aAAe,CAAC,KAAK,MAAM,OAAS,KAAK,MAAM,UAAY,SAAS,cACtGA,GACF,KAAK,aAAc,CAE3B,CACG,EACD5H,EAAQ,UAAU,YAAc,SAAUmG,EAAOpD,EAAamC,EAAmB,CAC/E,IAAI+B,EAASd,EAAM,OACf0B,EAAWhL,EAAY,UAAU,UACjCiL,EAAkBb,GAAUA,EAAO,aAAa,aAAa,EACjE,GAAI,KAAK,gBAAkBA,GAAUA,EAAO,MAAO,CACjD,IAAIjK,EAAQ,KAAK,MAAM,MACnBgG,EAAa,KAAK,YAAYD,EAAa/F,CAAK,EAChDgG,EAAW,WACb,KAAK,aAAa,EAAI,EACtB,KAAK,SAAS,CACZ,MAAOhG,CACjB,CAAS,EACD,KAAK,eAAeA,CAAK,EACzB,KAAK,WAAY,EAEzB,CAKI,GAJI8K,IACF,KAAK,oBAAoB/E,EAAakE,CAAM,EAC5Cd,EAAM,eAAgB,GAEpBjB,EAAmB,CACrB,IAAI6C,EAAoB,KAAK,SAAS,SAAS,IAAI,OAAO,KAAK,OAAO,WAAW,gBAAgB,CAAC,EAC9FA,IAEEhF,EAAY,CAAC,IACfA,EAAY,CAAC,EAAE,QAAU8E,GAG3B,KAAK,oBAAoB9E,EAAagF,CAAiB,GAEzD5B,EAAM,eAAgB,CAC5B,MAAe,KAAK,sBACd,KAAK,aAAc,EACnBA,EAAM,eAAgB,EAEzB,EACDnG,EAAQ,UAAU,aAAe,SAAUkF,EAAmB,CACxDA,IACF,KAAK,aAAa,EAAI,EACtB,KAAK,eAAe,MAAO,EAE9B,EACDlF,EAAQ,UAAU,gBAAkB,SAAUmG,EAAOjB,EAAmB,CACtE,IAAI1H,EAAU2I,EAAM,QAClBuB,EAAUvB,EAAM,QACd6B,EAAUnL,EAAY,UAAU,SAClCoL,EAAYpL,EAAY,UAAU,YAClCqL,EAAcrL,EAAY,UAAU,cAEtC,GAAIqI,GAAqB,KAAK,oBAAqB,CACjD,KAAK,aAAc,EACnB,KAAK,WAAa,GAClB,IAAIiD,EAAe3K,IAAYwK,GAAWxK,IAAY0K,EAAc,EAAI,GACpEE,EAAUV,GAAWlK,IAAY0K,GAAe1K,IAAYyK,EAC5DI,EAA6B,2BAC7BC,EAAS,OACb,GAAIF,EACED,EAAe,EACjBG,EAAS,KAAK,SAAS,QAAQ,cAAc,GAAG,OAAOD,EAA4B,eAAe,CAAC,EAEnGC,EAAS,KAAK,SAAS,QAAQ,cAAcD,CAA0B,MAEpE,CACL,IAAIE,GAAY,KAAK,SAAS,QAAQ,cAAc,IAAI,OAAO,KAAK,OAAO,WAAW,gBAAgB,CAAC,EACnGA,GACFD,KAAa5I,EAAQ,eAAe6I,GAAWF,EAA4BF,CAAY,EAEvFG,EAAS,KAAK,SAAS,QAAQ,cAAcD,CAA0B,CAEjF,CACUC,OAGO5I,EAAQ,oBAAoB4I,EAAQ,KAAK,WAAW,QAASH,CAAY,GAChF,KAAK,WAAW,qBAAqBG,EAAQH,CAAY,EAE3D,KAAK,iBAAiBG,CAAM,GAI9BnC,EAAM,eAAgB,CAC5B,CACG,EACDnG,EAAQ,UAAU,aAAe,SAAUmG,EAAOpD,EAAaqD,EAAiB,CAC9E,IAAIa,EAASd,EAAM,OAEf,CAAC,KAAK,qBAAuB,CAACc,EAAO,OAASb,IAChD,KAAK,iBAAiBrD,CAAW,EACjCoD,EAAM,eAAgB,EAEzB,EACDnG,EAAQ,UAAU,aAAe,UAAY,CACvC,KAAK,UACP,KAAK,QAAU,GAElB,EACDA,EAAQ,UAAU,YAAc,SAAUmG,EAAO,CAC/C,IAAIc,GAAUd,GAASA,EAAM,QAAQ,CAAC,GAAG,OACrCqC,EAA0B,KAAK,SAAW,KAAK,eAAe,QAAQ,SAASvB,CAAM,EACzF,GAAIuB,EAAyB,CAC3B,IAAIC,EAA0BxB,IAAW,KAAK,eAAe,SAAWA,IAAW,KAAK,eAAe,QACnGwB,IACE,KAAK,eACP,KAAK,MAAM,MAAO,EACT,KAAK,0BACd,KAAK,aAAc,GAIvBtC,EAAM,gBAAiB,CAC7B,CACI,KAAK,QAAU,EAChB,EAIDnG,EAAQ,UAAU,aAAe,SAAUmG,EAAO,CAChD,IAAIc,EAASd,EAAM,OACnB,GAAMc,aAAkB,YAIxB,IAAInH,GAAW,KAAK,WAAW,QAAQ,SAASmH,CAAM,EAAG,CAEvD,IAAIyB,EAAc,KAAK,WAAW,QAAQ,kBACtCC,EAAgB,KAAK,aAAe,MAAQxC,EAAM,SAAWuC,EAAY,YAAcvC,EAAM,QAAUuC,EAAY,WACvH,KAAK,iBAAmBC,CAC9B,CACI,GAAI1B,IAAW,KAAK,MAAM,QAG1B,KAAIjG,EAAOiG,EAAO,QAAQ,yCAAyC,EACnE,GAAIjG,aAAgB,YAAa,CAC/B,IAAI+D,EAAcoB,EAAM,SACpBpD,EAAc,KAAK,OAAO,YAC1B6F,EAAU5H,EAAK,QACf,WAAY4H,EACd,KAAK,oBAAoB7F,EAAa/B,CAAI,EACjC,SAAU4H,EACnB,KAAK,kBAAkB7F,EAAa/B,EAAM+D,CAAW,EAC5C,WAAY6D,GACrB,KAAK,oBAAoB7F,EAAa/B,CAAI,CAElD,CACImF,EAAM,eAAgB,GACvB,EAKDnG,EAAQ,UAAU,aAAe,SAAUjD,EAAI,CAC7C,IAAIkK,EAASlK,EAAG,OACZkK,aAAkB,aAAe,WAAYA,EAAO,SACtD,KAAK,iBAAiBA,CAAM,CAE/B,EACDjH,EAAQ,UAAU,SAAW,SAAUjD,EAAI,CACzC,IAAIkK,EAASlK,EAAG,OACZ8L,EAA0B,KAAK,eAAe,QAAQ,SAAS5B,CAAM,EACzE,GAAI4B,EACE,CAAC,KAAK,SAAS,UAAY,CAAC,KAAK,eAAe,WAC9C,KAAK,eACH,SAAS,gBAAkB,KAAK,MAAM,SACxC,KAAK,MAAM,MAAO,GAGpB,KAAK,aAAc,EACnB,KAAK,eAAe,MAAO,GAEpB,KAAK,qBAAuB5B,IAAW,KAAK,MAAM,SAAW,CAAC,KAAK,SAAS,QAAQ,SAASA,CAAM,GAC5G,KAAK,aAAc,MAEhB,CACL,IAAI7B,EAAsB,KAAK,OAAO,uBAAuB,OAAS,EAClEA,GACF,KAAK,eAAgB,EAEvB,KAAK,eAAe,iBAAkB,EACtC,KAAK,aAAa,EAAI,CAC5B,CACG,EACDpF,EAAQ,UAAU,SAAW,SAAUjD,EAAI,CACzC,IAAImE,EACAf,EAAQ,KACR8G,EAASlK,EAAG,OACZ+L,EAA0B7B,GAAU,KAAK,eAAe,QAAQ,SAASA,CAAM,EACnF,GAAK6B,EAGL,KAAIC,GAAgB7H,EAAK,CAAE,EAAEA,EAAGrE,EAAY,SAAS,EAAI,UAAY,CAC/DoK,IAAW9G,EAAM,MAAM,SACzBA,EAAM,eAAe,cAAe,CAEvC,EAAEe,EAAGrE,EAAY,eAAe,EAAI,UAAY,CAC/CsD,EAAM,eAAe,cAAe,EAChC8G,IAAW9G,EAAM,MAAM,SACzBA,EAAM,aAAa,EAAI,CAE1B,EAAEe,EAAGrE,EAAY,oBAAoB,EAAI,UAAY,CAChDoK,IAAW9G,EAAM,MAAM,UACzBA,EAAM,aAAa,EAAI,EAGvBA,EAAM,eAAe,cAAe,EAEvC,EAAEe,GACH6H,EAAa,KAAK,cAAc,QAAQ,IAAI,EAAG,EAChD,EACD/I,EAAQ,UAAU,QAAU,SAAUjD,EAAI,CACxC,IAAImE,EACAf,EAAQ,KACR8G,EAASlK,EAAG,OACZiM,EAAyB/B,GAAU,KAAK,eAAe,QAAQ,SAASA,CAAM,EAClF,GAAI+B,GAA0B,CAAC,KAAK,iBAAkB,CACpD,IAAIjG,EAAc,KAAK,OAAO,YAC1BkG,EAAwBlG,EAAY,KAAK,SAAU/B,EAAM,CAC3D,OAAOA,EAAK,WACpB,CAAO,EACGkI,GAAehI,EAAK,CAAE,EAAEA,EAAGrE,EAAY,SAAS,EAAI,UAAY,CAC9DoK,IAAW9G,EAAM,MAAM,UACzBA,EAAM,eAAe,iBAAkB,EACnC8I,GACF9I,EAAM,eAAgB,EAExBA,EAAM,aAAa,EAAI,EAE1B,EAAEe,EAAGrE,EAAY,eAAe,EAAI,UAAY,CAC/CsD,EAAM,eAAe,iBAAkB,GACnC8G,IAAW9G,EAAM,MAAM,SAAW8G,IAAW9G,EAAM,eAAe,SAAW,CAACA,EAAM,aACtFA,EAAM,aAAa,EAAI,CAE1B,EAAEe,EAAGrE,EAAY,oBAAoB,EAAI,UAAY,CAChDoK,IAAW9G,EAAM,MAAM,UACzBA,EAAM,eAAe,iBAAkB,EACvCA,EAAM,aAAa,EAAI,EACnB8I,GACF9I,EAAM,eAAgB,EAG3B,EAAEe,GACHgI,EAAY,KAAK,cAAc,QAAQ,IAAI,EAAG,CACpD,MAIM,KAAK,iBAAmB,GACxB,KAAK,MAAM,QAAQ,MAAO,CAE7B,EACDlJ,EAAQ,UAAU,aAAe,UAAY,CAC3C,KAAK,OAAO,YAAaT,EAAO,SAAS,KAAK,aAAa,CAAC,CAC7D,EACDS,EAAQ,UAAU,iBAAmB,SAAUmJ,EAAI,CACjD,IAAIhJ,EAAQ,KACRgJ,IAAO,SACTA,EAAK,MAEP,IAAI9F,EAAU,MAAM,KAAK,KAAK,SAAS,QAAQ,iBAAiB,0BAA0B,CAAC,EAC3F,GAAKA,EAAQ,OAGb,KAAI+F,EAAWD,EACXE,EAAqB,MAAM,KAAK,KAAK,SAAS,QAAQ,iBAAiB,IAAI,OAAO,KAAK,OAAO,WAAW,gBAAgB,CAAC,CAAC,EAE/HA,EAAmB,QAAQ,SAAUhH,EAAQ,CAC3CA,EAAO,UAAU,OAAOlC,EAAM,OAAO,WAAW,gBAAgB,EAChEkC,EAAO,aAAa,gBAAiB,OAAO,CAClD,CAAK,EACG+G,EACF,KAAK,mBAAqB/F,EAAQ,QAAQ+F,CAAQ,GAG9C/F,EAAQ,OAAS,KAAK,mBAExB+F,EAAW/F,EAAQ,KAAK,kBAAkB,EAG1C+F,EAAW/F,EAAQA,EAAQ,OAAS,CAAC,EAElC+F,IACHA,EAAW/F,EAAQ,CAAC,IAGxB+F,EAAS,UAAU,IAAI,KAAK,OAAO,WAAW,gBAAgB,EAC9DA,EAAS,aAAa,gBAAiB,MAAM,EAC7C,KAAK,cAAc,aAAavM,EAAY,OAAO,gBAAiB,CAClE,GAAIuM,CACV,CAAK,EACG,KAAK,SAAS,WAGhB,KAAK,MAAM,oBAAoBA,EAAS,EAAE,EAC1C,KAAK,eAAe,oBAAoBA,EAAS,EAAE,GAEtD,EACDpJ,EAAQ,UAAU,SAAW,SAAUjD,EAAI,CACzC,IAAIC,EAAQD,EAAG,MACbmE,EAAKnE,EAAG,MACRE,EAAQiE,IAAO,OAAS,KAAOA,EAC/BC,EAAKpE,EAAG,SACRiB,EAAWmD,IAAO,OAAS,GAAKA,EAChCmI,EAAKvM,EAAG,QACRI,EAAUmM,IAAO,OAAS,GAAKA,EAC/BC,EAAKxM,EAAG,iBACRO,EAAmBiM,IAAO,OAAS,CAAA,EAAKA,EACxCC,EAAKzM,EAAG,YACRQ,GAAciM,IAAO,OAAS,GAAQA,EACtCC,GAAK1M,EAAG,QACRS,GAAUiM,KAAO,OAAS,GAAKA,GAC7BC,GAAc,OAAO1M,GAAU,SAAWA,EAAM,KAAI,EAAKA,EACzD4E,GAAQ,KAAK,OAAO,MACpB+H,GAAc1M,GAASyM,GACvBE,GAAiB5L,GAAY,GAC7BoD,GAAQjE,GAAW,EAAI,KAAK,OAAO,aAAaA,CAAO,EAAI,KAC3DD,GAAK0E,GAAQA,GAAM,OAAS,EAAI,EAEhC,KAAK,OAAO,eACd8H,GAAc,KAAK,OAAO,aAAeA,GAAY,SAAU,GAG7D,KAAK,OAAO,cACdA,IAAe,KAAK,OAAO,YAAY,SAAU,GAEnD,KAAK,OAAO,YAAapK,EAAQ,SAAS,CACxC,MAAOoK,GACP,MAAOC,GACP,GAAIzM,GACJ,SAAU0M,GACV,QAASzM,EACT,iBAAkBG,EAClB,YAAaC,GACb,QAASC,EACf,CAAK,CAAC,EACE,KAAK,qBACP,KAAK,kBAAkBN,EAAE,EAG3B,KAAK,cAAc,aAAaL,EAAY,OAAO,QAAS,CAC1D,GAAIK,GACJ,MAAOwM,GACP,MAAOC,GACP,iBAAkBrM,EAClB,WAAY8D,IAASA,GAAM,MAAQA,GAAM,MAAQ,KACjD,QAAS5D,EACf,CAAK,CACF,EACDwC,EAAQ,UAAU,YAAc,SAAUgB,EAAM,CAC9C,IAAI9D,EAAK8D,EAAK,GACZhE,EAAQgE,EAAK,MACb/D,EAAQ+D,EAAK,MACb1D,EAAmB0D,EAAK,iBACxBhD,EAAWgD,EAAK,SAChB7D,EAAU6D,EAAK,QACbI,EAAQjE,GAAWA,GAAW,EAAI,KAAK,OAAO,aAAaA,CAAO,EAAI,KACtE,CAACD,GAAM,CAACc,IAGZ,KAAK,OAAO,YAAasB,EAAQ,YAAYpC,EAAIc,CAAQ,CAAC,EAC1D,KAAK,cAAc,aAAanB,EAAY,OAAO,WAAY,CAC7D,GAAIK,EACJ,MAAOF,EACP,MAAOC,EACP,iBAAkBK,EAClB,WAAY8D,GAASA,EAAM,MAAQA,EAAM,MAAQ,IACvD,CAAK,EACF,EACDpB,EAAQ,UAAU,WAAa,SAAUjD,EAAI,CAC3C,IAAIC,EAAQD,EAAG,MACbmE,EAAKnE,EAAG,MACRE,EAAQiE,IAAO,OAAS,KAAOA,EAC/BC,EAAKpE,EAAG,WACR8M,EAAa1I,IAAO,OAAS,GAAQA,EACrCmI,EAAKvM,EAAG,WACR+M,EAAaR,IAAO,OAAS,GAAQA,EACrCC,EAAKxM,EAAG,QACRI,EAAUoM,IAAO,OAAS,GAAKA,EAC/BC,EAAKzM,EAAG,iBACRO,GAAmBkM,IAAO,OAAS,CAAA,EAAKA,EACxCC,GAAK1M,EAAG,YACRQ,GAAckM,KAAO,OAAS,GAAQA,GACtCM,GAAKhN,EAAG,QACRS,GAAUuM,KAAO,OAAS,GAAKA,GACjC,GAAI,SAAO/M,EAAU,KAAeA,IAAU,MAI9C,KAAIqG,GAAU,KAAK,OAAO,QACtB2G,GAAc/M,GAASD,EACvBgB,GAAWqF,GAAUA,GAAQ,OAAS,EAAI,EAC1C4G,GAAkB,GAAG,OAAO,KAAK,QAAS,GAAG,EAAE,OAAO,KAAK,SAAS,WAAY,GAAG,EAAE,OAAOjM,EAAQ,EACxG,KAAK,OAAO,YAAaoB,EAAU,WAAW,CAC5C,GAAIpB,GACJ,QAASb,EACT,UAAW8M,GACX,MAAOjN,EACP,MAAOgN,GACP,SAAUF,EACV,iBAAkBxM,GAClB,YAAaC,GACb,QAASC,EACf,CAAK,CAAC,EACEqM,GACF,KAAK,SAAS,CACZ,MAAO7M,EACP,MAAOgN,GACP,SAAUhM,GACV,iBAAkBV,GAClB,YAAaC,GACb,QAASC,EACjB,CAAO,EAEJ,EACDwC,EAAQ,UAAU,UAAY,SAAUjD,EAAI,CAC1C,IAAIoD,EAAQ,KACRiB,EAAQrE,EAAG,MACbG,EAAKH,EAAG,GACRmE,EAAKnE,EAAG,SACRmN,EAAWhJ,IAAO,OAAS,QAAUA,EACrCC,EAAKpE,EAAG,SACRoN,EAAWhJ,IAAO,OAAS,QAAUA,EACnCqC,KAAmB9D,EAAQ,QAAQ,SAAU0B,CAAK,EAAIA,EAAM,QAAU,MAAM,KAAKA,EAAM,qBAAqB,QAAQ,CAAC,EACrHjE,EAAUD,GAAM,KAAK,MAAM,IAAI,KAAM,EAAC,QAAS,EAAG,KAAK,QAAQ,EAC/D4M,EAAa1I,EAAM,SAAWA,EAAM,SAAW,GACnD,GAAIoC,EAAc,CAChB,KAAK,OAAO,YAAanE,EAAS,UAAU,CAC1C,MAAO+B,EAAM,MACb,GAAIjE,EACJ,OAAQ,GACR,SAAU2M,CAClB,CAAO,CAAC,EACF,IAAIM,GAAkB,SAAU/H,GAAQ,CACtC,IAAIgI,GAAgBhI,GAAO,UAAYA,GAAO,YAAcA,GAAO,WAAW,SAC9ElC,EAAM,WAAW,CACf,MAAOkC,GAAO6H,CAAQ,EACtB,SAAWxK,EAAQ,QAAQ,SAAU2C,EAAM,EAAIA,GAAO8H,CAAQ,EAAI9H,GAAO,UACzE,WAAYA,GAAO,SACnB,WAAYgI,GACZ,QAASlN,EACT,iBAAkBkF,GAAO,iBACzB,YAAaA,GAAO,WAC9B,CAAS,CACF,EACDmB,EAAa,QAAQ4G,EAAe,CAC1C,MACM,KAAK,OAAO,YAAa/K,EAAS,UAAU,CAC1C,MAAO+B,EAAM,MACb,GAAIA,EAAM,GACV,OAAQ,GACR,SAAUA,EAAM,QACxB,CAAO,CAAC,CAEL,EACDpB,EAAQ,UAAU,aAAe,SAAUsK,EAAU,CAGnD,QAFIvN,EACAwN,EAAO,CAAE,EACJC,EAAK,EAAGA,EAAK,UAAU,OAAQA,IACtCD,EAAKC,EAAK,CAAC,EAAI,UAAUA,CAAE,EAE7B,OAAQzN,EAAK,KAAK,WAAWuN,CAAQ,GAAG,KAAK,MAAMvN,EAAI0B,EAAc,CAAC,KAAM,KAAK,MAAM,EAAG8L,EAAM,EAAK,CAAC,CACvG,EACDvK,EAAQ,UAAU,iBAAmB,UAAY,CAC/C,IAAIyK,EAA4B,KAAK,OAAO,0BACxCC,EAAgB,CAAE,EAClBD,GAA6B,OAAOA,GAA8B,aACpEC,EAAgBD,EAA0B,KAAK,KAAM/K,EAAQ,OAAO,GAEtE,KAAK,cAAiBR,EAAY,SAASW,EAAY,QAAS6K,CAAa,CAC9E,EACD1K,EAAQ,UAAU,gBAAkB,UAAY,CAC9C,KAAK,eAAiB,IAAIR,EAAa,UAAU,CAC/C,QAAS,KAAK,aAAa,iBAAkB,KAAK,WAAY,KAAK,iBAAkB,KAAK,oBAAqB,KAAK,OAAO,cAAe,KAAK,cAAc,QAAQ,KAAM,KAAK,OAAO,OAAO,EAC9L,WAAY,KAAK,OAAO,WACxB,KAAM,KAAK,cAAc,QAAQ,KACjC,SAAU,KAAK,OAAO,QAC5B,CAAK,EACD,KAAK,eAAiB,IAAIA,EAAa,UAAU,CAC/C,QAAS,KAAK,aAAa,gBAAgB,EAC3C,WAAY,KAAK,OAAO,WACxB,KAAM,KAAK,cAAc,QAAQ,KACjC,SAAU,KAAK,OAAO,QAC5B,CAAK,EACD,KAAK,MAAQ,IAAIA,EAAa,MAAM,CAClC,QAAS,KAAK,aAAa,QAAS,KAAK,iBAAiB,EAC1D,WAAY,KAAK,OAAO,WACxB,KAAM,KAAK,cAAc,QAAQ,KACjC,aAAc,CAAC,KAAK,OAAO,KACjC,CAAK,EACD,KAAK,WAAa,IAAIA,EAAa,KAAK,CACtC,QAAS,KAAK,aAAa,aAAc,KAAK,mBAAmB,CACvE,CAAK,EACD,KAAK,SAAW,IAAIA,EAAa,KAAK,CACpC,QAAS,KAAK,aAAa,WAAY,KAAK,mBAAmB,CACrE,CAAK,EACD,KAAK,SAAW,IAAIA,EAAa,SAAS,CACxC,QAAS,KAAK,aAAa,UAAU,EACrC,WAAY,KAAK,OAAO,WACxB,KAAM,KAAK,cAAc,QAAQ,IACvC,CAAK,CACF,EACDQ,EAAQ,UAAU,iBAAmB,UAAY,CAE/C,KAAK,cAAc,QAAS,EAE5B,KAAK,eAAe,KAAK,KAAK,cAAc,OAAO,EAEnD,KAAK,eAAe,KAAK,KAAK,eAAe,OAAO,EAChD,KAAK,oBACP,KAAK,MAAM,YAAc,KAAK,OAAO,wBAA0B,GACtD,KAAK,oBACd,KAAK,MAAM,YAAc,KAAK,kBAC9B,KAAK,MAAM,SAAU,GAEvB,KAAK,eAAe,QAAQ,YAAY,KAAK,eAAe,OAAO,EACnE,KAAK,eAAe,QAAQ,YAAY,KAAK,SAAS,OAAO,EAC7D,KAAK,eAAe,QAAQ,YAAY,KAAK,SAAS,OAAO,EACxD,KAAK,gBACR,KAAK,SAAS,QAAQ,YAAY,KAAK,WAAW,OAAO,EAEtD,KAAK,oBAEC,KAAK,OAAO,eACrB,KAAK,SAAS,QAAQ,aAAa,KAAK,MAAM,QAAS,KAAK,SAAS,QAAQ,UAAU,EAFvF,KAAK,eAAe,QAAQ,YAAY,KAAK,MAAM,OAAO,EAIxD,KAAK,mBACP,KAAK,mBAAqB,EAC1B,KAAK,aAAe,GACpB,KAAK,cAAe,EAChB,KAAK,cAAc,OACrB,KAAK,qBAAqB,KAAK,aAAa,EAE5C,KAAK,sBAAsB,KAAK,cAAc,EAEhD,KAAK,aAAc,GAEjB,KAAK,gBACP,KAAK,oBAAoB,KAAK,YAAY,CAE7C,EACDA,EAAQ,UAAU,qBAAuB,SAAUoD,EAAQ,CACzD,IAAIjD,EAAQ,KAERyE,EAAoB,KAAK,cAAc,kBACvCA,GAAqBA,EAAkB,YAAcA,EAAkB,WAAW,UAAY,UAChG,KAAK,WAAW,CACd,MAAOA,EAAkB,MACzB,MAAOA,EAAkB,UACzB,WAAYA,EAAkB,SAC9B,WAAYA,EAAkB,SAC9B,YAAa,EACrB,CAAO,EAEHxB,EAAO,QAAQ,SAAUhC,EAAO,CAC9B,OAAOjB,EAAM,UAAU,CACrB,MAAOiB,EACP,GAAIA,EAAM,IAAM,IACxB,CAAO,CACP,CAAK,CACF,EACDpB,EAAQ,UAAU,sBAAwB,SAAUqD,EAAS,CAC3D,IAAIlD,EAAQ,KAER,KAAK,OAAO,YACdkD,EAAQ,KAAK,KAAK,OAAO,MAAM,EAEjC,IAAIsH,EAAoBtH,EAAQ,KAAK,SAAUhB,EAAQ,CACrD,OAAOA,EAAO,QACpB,CAAK,EACGuI,EAA0BvH,EAAQ,UAAU,SAAUhB,EAAQ,CAChE,OAAOA,EAAO,WAAa,QAAa,CAACA,EAAO,QACtD,CAAK,EACDgB,EAAQ,QAAQ,SAAUhB,EAAQwI,EAAO,CACvC,IAAI9N,EAAKsF,EAAO,MACdrF,EAAQD,IAAO,OAAS,GAAKA,EAC7BE,EAAQoF,EAAO,MACf/E,EAAmB+E,EAAO,iBAC1B9E,EAAc8E,EAAO,YACvB,GAAIlC,EAAM,iBAER,GAAIkC,EAAO,QACTlC,EAAM,UAAU,CACd,MAAOkC,EACP,GAAIA,EAAO,IAAM,IAC7B,CAAW,MACI,CAOL,IAAIyI,GAAkB3K,EAAM,qBAAuB,CAACwK,GAAqBE,IAAUD,EAC/Ef,GAAaiB,GAAkB,GAAOzI,EAAO,SAC7CyH,GAAazH,EAAO,SACxBlC,EAAM,WAAW,CACf,MAAOnD,EACP,MAAOC,EACP,WAAY,CAAC,CAAC4M,GACd,WAAY,CAAC,CAACC,GACd,YAAa,CAAC,CAACvM,EACf,iBAAkBD,CAC9B,CAAW,CACX,MAEQ6C,EAAM,WAAW,CACf,MAAOnD,EACP,MAAOC,EACP,WAAY,CAAC,CAACoF,EAAO,SACrB,WAAY,CAAC,CAACA,EAAO,SACrB,YAAa,CAAC,CAACA,EAAO,YACtB,iBAAkB/E,CAC5B,CAAS,CAET,CAAK,CACF,EACD0C,EAAQ,UAAU,oBAAsB,SAAU4B,EAAO,CACvD,IAAIzB,EAAQ,KACZyB,EAAM,QAAQ,SAAUZ,EAAM,CACxB,OAAOA,GAAS,UAAYA,EAAK,OACnCb,EAAM,SAAS,CACb,MAAOa,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,GACf,iBAAkBA,EAAK,iBACvB,YAAaA,EAAK,WAC5B,CAAS,EAEC,OAAOA,GAAS,UAClBb,EAAM,SAAS,CACb,MAAOa,CACjB,CAAS,CAET,CAAK,CACF,EACDhB,EAAQ,UAAU,iBAAmB,SAAUgB,EAAM,CACnD,IAAIb,EAAQ,KACR4K,KAAerL,EAAQ,SAASsB,CAAI,EAAE,YAAa,EACnDgK,EAAa,CACf,OAAQ,UAAY,CACbhK,EAAK,QAKLb,EAAM,eAUTA,EAAM,SAAS,CACb,MAAOa,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,GACf,iBAAkBA,EAAK,iBACvB,YAAaA,EAAK,WAC9B,CAAW,EAfDb,EAAM,WAAW,CACf,MAAOa,EAAK,MACZ,MAAOA,EAAK,MACZ,WAAY,GACZ,WAAY,GACZ,iBAAkBA,EAAK,iBACvB,YAAaA,EAAK,WAC9B,CAAW,EAUJ,EACD,OAAQ,UAAY,CACbb,EAAM,eAQTA,EAAM,SAAS,CACb,MAAOa,CACnB,CAAW,EATDb,EAAM,WAAW,CACf,MAAOa,EACP,MAAOA,EACP,WAAY,GACZ,WAAY,EACxB,CAAW,CAMX,CACK,EACDgK,EAAWD,CAAQ,EAAG,CACvB,EACD/K,EAAQ,UAAU,4BAA8B,SAAUhD,EAAO,CAC/D,IAAImD,EAAQ,KACRkD,EAAU,KAAK,OAAO,QAEtB4H,EAAc5H,EAAQ,KAAK,SAAUhB,EAAQ,CAC/C,OAAOlC,EAAM,OAAO,cAAckC,EAAO,MAAOrF,CAAK,CAC3D,CAAK,EACGiO,GAAe,CAACA,EAAY,UAC9B,KAAK,SAAS,CACZ,MAAOA,EAAY,MACnB,MAAOA,EAAY,MACnB,SAAUA,EAAY,GACtB,QAASA,EAAY,QACrB,iBAAkBA,EAAY,iBAC9B,YAAaA,EAAY,YACzB,QAASA,EAAY,OAC7B,CAAO,CAEJ,EACDjL,EAAQ,UAAU,0BAA4B,UAAY,CACxD,GAAI,KAAK,kBAAoB,KAAK,cAAc,kBAAmB,CACjE,IAAIkL,EAAoB,KAAK,cAAc,kBAC3C,OAAOA,EAAoBA,EAAkB,KAAO,IAC1D,CACI,IAAInO,EAAK,KAAK,OACZQ,EAAcR,EAAG,YACjBoO,EAAmBpO,EAAG,iBACpB6L,EAAU,KAAK,cAAc,QAAQ,QACzC,GAAIrL,EAAa,CACf,GAAI4N,EACF,OAAOA,EAET,GAAIvC,EAAQ,YACV,OAAOA,EAAQ,WAEvB,CACI,OAAO,IACR,EACM5I,CACT,EAAG,EACHrD,EAAQ,QAAaqD,CAErB,EAEM,IACC,SAAStD,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAI+C,EAAU9C,EAAoB,GAAG,EACjCC,EAAcD,EAAoB,GAAG,EACrCwO,EAAyB,UAAY,CACvC,SAASA,EAAUrO,EAAI,CACrB,IAAIkD,EAAUlD,EAAG,QACfsO,EAAOtO,EAAG,KACVuO,EAAavO,EAAG,WAChBwO,EAAWxO,EAAG,SAChB,KAAK,QAAUkD,EACf,KAAK,WAAaqL,EAClB,KAAK,KAAOD,EACZ,KAAK,SAAWE,EAChB,KAAK,OAAS,GACd,KAAK,UAAY,GACjB,KAAK,WAAa,GAClB,KAAK,WAAa,GAClB,KAAK,UAAY,GACjB,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,CACzC,CACE,OAAAH,EAAU,UAAU,kBAAoB,UAAY,CAClD,KAAK,QAAQ,iBAAiB,QAAS,KAAK,QAAQ,EACpD,KAAK,QAAQ,iBAAiB,OAAQ,KAAK,OAAO,CACnD,EACDA,EAAU,UAAU,qBAAuB,UAAY,CACrD,KAAK,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EACvD,KAAK,QAAQ,oBAAoB,OAAQ,KAAK,OAAO,CACtD,EAKDA,EAAU,UAAU,WAAa,SAAUI,EAAa,CACtD,GAAI,OAAOA,GAAgB,SACzB,MAAO,GAIT,IAAIC,EAAa,GACjB,OAAI,KAAK,WAAa,OACpBA,EAAa,CAAC,OAAO,WAAW,gBAAgB,OAAOD,EAAc,EAAG,KAAK,CAAC,EAAE,QACvE,KAAK,WAAa,QAC3BC,EAAa,IAERA,CACR,EACDL,EAAU,UAAU,oBAAsB,SAAUM,EAAoB,CACtE,KAAK,QAAQ,aAAa,wBAAyBA,CAAkB,CACtE,EACDN,EAAU,UAAU,uBAAyB,UAAY,CACvD,KAAK,QAAQ,gBAAgB,uBAAuB,CACrD,EACDA,EAAU,UAAU,KAAO,SAAUI,EAAa,CAChD,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,SAAS,EACpD,KAAK,QAAQ,aAAa,gBAAiB,MAAM,EACjD,KAAK,OAAS,GACV,KAAK,WAAWA,CAAW,IAC7B,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,YAAY,EACvD,KAAK,UAAY,GAEpB,EACDJ,EAAU,UAAU,MAAQ,UAAY,CACtC,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,SAAS,EACvD,KAAK,QAAQ,aAAa,gBAAiB,OAAO,EAClD,KAAK,uBAAwB,EAC7B,KAAK,OAAS,GAEV,KAAK,YACP,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,YAAY,EAC1D,KAAK,UAAY,GAEpB,EACDA,EAAU,UAAU,MAAQ,UAAY,CACjC,KAAK,YACR,KAAK,QAAQ,MAAO,CAEvB,EACDA,EAAU,UAAU,cAAgB,UAAY,CAC9C,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,UAAU,CACtD,EACDA,EAAU,UAAU,iBAAmB,UAAY,CACjD,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,UAAU,CACzD,EACDA,EAAU,UAAU,OAAS,UAAY,CACvC,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,aAAa,EAC3D,KAAK,QAAQ,gBAAgB,eAAe,EACxC,KAAK,OAASvO,EAAY,iBAC5B,KAAK,QAAQ,aAAa,WAAY,GAAG,EAE3C,KAAK,WAAa,EACnB,EACDuO,EAAU,UAAU,QAAU,UAAY,CACxC,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,aAAa,EACxD,KAAK,QAAQ,aAAa,gBAAiB,MAAM,EAC7C,KAAK,OAASvO,EAAY,iBAC5B,KAAK,QAAQ,aAAa,WAAY,IAAI,EAE5C,KAAK,WAAa,EACnB,EACDuO,EAAU,UAAU,KAAO,SAAUnL,EAAS,IACxCP,EAAQ,MAAMO,EAAS,KAAK,OAAO,CACxC,EACDmL,EAAU,UAAU,OAAS,SAAUnL,EAAS,CAC1C,KAAK,QAAQ,aAEf,KAAK,QAAQ,WAAW,aAAaA,EAAS,KAAK,OAAO,EAE1D,KAAK,QAAQ,WAAW,YAAY,KAAK,OAAO,EAEnD,EACDmL,EAAU,UAAU,gBAAkB,UAAY,CAChD,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,YAAY,EACvD,KAAK,QAAQ,aAAa,YAAa,MAAM,EAC7C,KAAK,UAAY,EAClB,EACDA,EAAU,UAAU,mBAAqB,UAAY,CACnD,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,YAAY,EAC1D,KAAK,QAAQ,gBAAgB,WAAW,EACxC,KAAK,UAAY,EAClB,EACDA,EAAU,UAAU,SAAW,UAAY,CACzC,KAAK,WAAa,EACnB,EACDA,EAAU,UAAU,QAAU,UAAY,CACxC,KAAK,WAAa,EACnB,EACMA,CACT,EAAG,EACHzO,EAAQ,QAAayO,CAErB,EAEM,IACC,SAAS1O,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAIgP,EAAwB,UAAY,CACtC,SAASA,EAAS5O,EAAI,CACpB,IAAIkD,EAAUlD,EAAG,QACfsO,EAAOtO,EAAG,KACVuO,EAAavO,EAAG,WAClB,KAAK,QAAUkD,EACf,KAAK,WAAaqL,EAClB,KAAK,KAAOD,EACZ,KAAK,SAAW,EACpB,CACE,cAAO,eAAeM,EAAS,UAAW,wBAAyB,CAIjE,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,sBAAqB,EAAG,MAC7C,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACDA,EAAS,UAAU,SAAW,SAAUC,EAAU,CAChD,OAAO,KAAK,QAAQ,cAAcA,CAAQ,CAC3C,EAIDD,EAAS,UAAU,KAAO,UAAY,CACpC,YAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,WAAW,EACtD,KAAK,QAAQ,aAAa,gBAAiB,MAAM,EACjD,KAAK,SAAW,GACT,IACR,EAIDA,EAAS,UAAU,KAAO,UAAY,CACpC,YAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,WAAW,EACzD,KAAK,QAAQ,aAAa,gBAAiB,OAAO,EAClD,KAAK,SAAW,GACT,IACR,EACMA,CACT,EAAG,EACHhP,EAAQ,QAAagP,CAErB,EAEM,IACC,SAASjP,EAAyBC,EAASC,EAAqB,CAIvE,IAAIoC,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,cAAgBA,EAAQ,aAAeA,EAAQ,KAAOA,EAAQ,MAAQA,EAAQ,UAAYA,EAAQ,SAAW,OACrH,IAAIkP,EAAa7M,EAAgBpC,EAAoB,GAAG,CAAC,EACzDD,EAAQ,SAAWkP,EAAW,QAC9B,IAAIC,EAAc9M,EAAgBpC,EAAoB,GAAG,CAAC,EAC1DD,EAAQ,UAAYmP,EAAY,QAChC,IAAIC,EAAU/M,EAAgBpC,EAAoB,EAAE,CAAC,EACrDD,EAAQ,MAAQoP,EAAQ,QACxB,IAAIC,EAAShN,EAAgBpC,EAAoB,GAAG,CAAC,EACrDD,EAAQ,KAAOqP,EAAO,QACtB,IAAIC,EAAkBjN,EAAgBpC,EAAoB,GAAG,CAAC,EAC9DD,EAAQ,aAAesP,EAAgB,QACvC,IAAIC,EAAmBlN,EAAgBpC,EAAoB,GAAG,CAAC,EAC/DD,EAAQ,cAAgBuP,EAAiB,OAEzC,EAEM,GACC,SAASxP,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAI+C,EAAU9C,EAAoB,GAAG,EACjCC,EAAcD,EAAoB,GAAG,EACrCuP,EAAqB,UAAY,CACnC,SAASA,EAAMpP,EAAI,CACjB,IAAIkD,EAAUlD,EAAG,QACfsO,EAAOtO,EAAG,KACVuO,EAAavO,EAAG,WAChBqP,EAAerP,EAAG,aACpB,KAAK,QAAUkD,EACf,KAAK,KAAOoL,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAec,EACpB,KAAK,WAAa,KAAK,QAAQ,YAAY,SAAS,aAAa,EACjE,KAAK,WAAanM,EAAQ,SAC1B,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,CACzC,CACE,cAAO,eAAekM,EAAM,UAAW,cAAe,CACpD,IAAK,SAAU5O,EAAa,CAC1B,KAAK,QAAQ,YAAcA,CAC5B,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAe4O,EAAM,UAAW,QAAS,CAC9C,IAAK,UAAY,CACf,SAAWzM,EAAQ,UAAU,KAAK,QAAQ,KAAK,CAChD,EACD,IAAK,SAAU1C,EAAO,CACpB,KAAK,QAAQ,MAAQA,CACtB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAemP,EAAM,UAAW,WAAY,CACjD,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,KACrB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACDA,EAAM,UAAU,kBAAoB,UAAY,CAC9C,KAAK,QAAQ,iBAAiB,QAAS,KAAK,QAAQ,EACpD,KAAK,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CACpD,QAAS,EACf,CAAK,EACD,KAAK,QAAQ,iBAAiB,QAAS,KAAK,SAAU,CACpD,QAAS,EACf,CAAK,EACD,KAAK,QAAQ,iBAAiB,OAAQ,KAAK,QAAS,CAClD,QAAS,EACf,CAAK,CACF,EACDA,EAAM,UAAU,qBAAuB,UAAY,CACjD,KAAK,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EACvD,KAAK,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EACvD,KAAK,QAAQ,oBAAoB,QAAS,KAAK,QAAQ,EACvD,KAAK,QAAQ,oBAAoB,OAAQ,KAAK,OAAO,CACtD,EACDA,EAAM,UAAU,OAAS,UAAY,CACnC,KAAK,QAAQ,gBAAgB,UAAU,EACvC,KAAK,WAAa,EACnB,EACDA,EAAM,UAAU,QAAU,UAAY,CACpC,KAAK,QAAQ,aAAa,WAAY,EAAE,EACxC,KAAK,WAAa,EACnB,EACDA,EAAM,UAAU,MAAQ,UAAY,CAC7B,KAAK,YACR,KAAK,QAAQ,MAAO,CAEvB,EACDA,EAAM,UAAU,KAAO,UAAY,CAC7B,KAAK,YACP,KAAK,QAAQ,KAAM,CAEtB,EACDA,EAAM,UAAU,MAAQ,SAAUE,EAAU,CAC1C,OAAIA,IAAa,SACfA,EAAW,IAET,KAAK,QAAQ,QACf,KAAK,QAAQ,MAAQ,IAEnBA,GACF,KAAK,SAAU,EAEV,IACR,EAKDF,EAAM,UAAU,SAAW,UAAY,CAErC,IAAIpP,EAAK,KAAK,QACZuP,EAAQvP,EAAG,MACXC,EAAQD,EAAG,MACXQ,EAAcR,EAAG,YACnBuP,EAAM,SAAW,GAAG,OAAO/O,EAAY,OAAS,EAAG,IAAI,EACvD+O,EAAM,MAAQ,GAAG,OAAOtP,EAAM,OAAS,EAAG,IAAI,CAC/C,EACDmP,EAAM,UAAU,oBAAsB,SAAUT,EAAoB,CAClE,KAAK,QAAQ,aAAa,wBAAyBA,CAAkB,CACtE,EACDS,EAAM,UAAU,uBAAyB,UAAY,CACnD,KAAK,QAAQ,gBAAgB,uBAAuB,CACrD,EACDA,EAAM,UAAU,SAAW,UAAY,CACjC,KAAK,OAAStP,EAAY,iBAC5B,KAAK,SAAU,CAElB,EACDsP,EAAM,UAAU,SAAW,SAAUhG,EAAO,CACtC,KAAK,cACPA,EAAM,eAAgB,CAEzB,EACDgG,EAAM,UAAU,SAAW,UAAY,CACrC,KAAK,WAAa,EACnB,EACDA,EAAM,UAAU,QAAU,UAAY,CACpC,KAAK,WAAa,EACnB,EACMA,CACT,EAAG,EACHxP,EAAQ,QAAawP,CAErB,EAEM,IACC,SAASzP,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAIE,EAAcD,EAAoB,GAAG,EACrC2P,EAAoB,UAAY,CAClC,SAASA,EAAKxP,EAAI,CAChB,IAAIkD,EAAUlD,EAAG,QACjB,KAAK,QAAUkD,EACf,KAAK,UAAY,KAAK,QAAQ,UAC9B,KAAK,OAAS,KAAK,QAAQ,YAC/B,CACE,OAAAsM,EAAK,UAAU,MAAQ,UAAY,CACjC,KAAK,QAAQ,UAAY,EAC1B,EACDA,EAAK,UAAU,OAAS,SAAUC,EAAM,CACtC,KAAK,QAAQ,YAAYA,CAAI,CAC9B,EACDD,EAAK,UAAU,SAAW,SAAUX,EAAU,CAC5C,OAAO,KAAK,QAAQ,cAAcA,CAAQ,CAC3C,EACDW,EAAK,UAAU,YAAc,UAAY,CACvC,OAAO,KAAK,QAAQ,cAAe,CACpC,EACDA,EAAK,UAAU,YAAc,UAAY,CACvC,KAAK,QAAQ,UAAY,CAC1B,EACDA,EAAK,UAAU,qBAAuB,SAAUtM,EAASwM,EAAW,CAClE,IAAItM,EAAQ,KACZ,GAAKF,EAGL,KAAIyM,EAAa,KAAK,QAAQ,aAE1BC,EAAqB,KAAK,QAAQ,UAAYD,EAC9CE,EAAgB3M,EAAQ,aAExB4M,EAAa5M,EAAQ,UAAY2M,EAEjCE,EAAcL,EAAY,EAAI,KAAK,QAAQ,UAAYI,EAAaF,EAAqB1M,EAAQ,UACrG,sBAAsB,UAAY,CAChCE,EAAM,eAAe2M,EAAaL,CAAS,CACjD,CAAK,EACF,EACDF,EAAK,UAAU,YAAc,SAAUQ,EAAWC,EAAUF,EAAa,CACvE,IAAIG,GAAUH,EAAcC,GAAaC,EACrCE,EAAWD,EAAS,EAAIA,EAAS,EACrC,KAAK,QAAQ,UAAYF,EAAYG,CACtC,EACDX,EAAK,UAAU,UAAY,SAAUQ,EAAWC,EAAUF,EAAa,CACrE,IAAIG,GAAUF,EAAYD,GAAeE,EACrCE,EAAWD,EAAS,EAAIA,EAAS,EACrC,KAAK,QAAQ,UAAYF,EAAYG,CACtC,EACDX,EAAK,UAAU,eAAiB,SAAUO,EAAaL,EAAW,CAChE,IAAItM,EAAQ,KACR6M,EAAWnQ,EAAY,gBACvBsQ,EAAsB,KAAK,QAAQ,UACnCC,EAAoB,GACpBX,EAAY,GACd,KAAK,YAAYU,EAAqBH,EAAUF,CAAW,EACvDK,EAAsBL,IACxBM,EAAoB,MAGtB,KAAK,UAAUD,EAAqBH,EAAUF,CAAW,EACrDK,EAAsBL,IACxBM,EAAoB,KAGpBA,GACF,sBAAsB,UAAY,CAChCjN,EAAM,eAAe2M,EAAaL,CAAS,CACnD,CAAO,CAEJ,EACMF,CACT,EAAG,EACH5P,EAAQ,QAAa4P,CAErB,EAEM,IACC,SAAS7P,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAI+C,EAAU9C,EAAoB,GAAG,EACjCyQ,EAA8B,UAAY,CAC5C,SAASA,EAAetQ,EAAI,CAC1B,IAAIkD,EAAUlD,EAAG,QACfuO,EAAavO,EAAG,WAGlB,GAFA,KAAK,QAAUkD,EACf,KAAK,WAAaqL,EACd,EAAErL,aAAmB,mBAAqB,EAAEA,aAAmB,mBACjE,MAAM,IAAI,UAAU,wBAAwB,EAE9C,KAAK,WAAa,EACtB,CACE,cAAO,eAAeoN,EAAe,UAAW,WAAY,CAC1D,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,QAAQ,SAAW,QACxC,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAe,UAAW,MAAO,CACrD,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,GACrB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAe,UAAW,QAAS,CACvD,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,KACrB,EACD,IAAK,SAAUrQ,EAAO,CAEpB,KAAK,QAAQ,MAAQA,CACtB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACDqQ,EAAe,UAAU,QAAU,UAAY,CAE7C,KAAK,QAAQ,UAAU,IAAI,KAAK,WAAW,KAAK,EAChD,KAAK,QAAQ,OAAS,GAEtB,KAAK,QAAQ,SAAW,GAExB,IAAIC,EAAY,KAAK,QAAQ,aAAa,OAAO,EAC7CA,GACF,KAAK,QAAQ,aAAa,yBAA0BA,CAAS,EAE/D,KAAK,QAAQ,aAAa,cAAe,QAAQ,CAClD,EACDD,EAAe,UAAU,OAAS,UAAY,CAE5C,KAAK,QAAQ,UAAU,OAAO,KAAK,WAAW,KAAK,EACnD,KAAK,QAAQ,OAAS,GACtB,KAAK,QAAQ,gBAAgB,UAAU,EAEvC,IAAIC,EAAY,KAAK,QAAQ,aAAa,wBAAwB,EAC9DA,GACF,KAAK,QAAQ,gBAAgB,wBAAwB,EACrD,KAAK,QAAQ,aAAa,QAASA,CAAS,GAE5C,KAAK,QAAQ,gBAAgB,OAAO,EAEtC,KAAK,QAAQ,gBAAgB,aAAa,EAG1C,KAAK,QAAQ,MAAQ,KAAK,QAAQ,KACnC,EAEDD,EAAe,UAAU,OAAS,UAAY,CAC5C,KAAK,QAAQ,gBAAgB,UAAU,EACvC,KAAK,QAAQ,SAAW,GACxB,KAAK,WAAa,EACnB,EACDA,EAAe,UAAU,QAAU,UAAY,CAC7C,KAAK,QAAQ,aAAa,WAAY,EAAE,EACxC,KAAK,QAAQ,SAAW,GACxB,KAAK,WAAa,EACnB,EACDA,EAAe,UAAU,aAAe,SAAUE,EAAW9M,EAAM,IAC7Df,EAAQ,eAAe,KAAK,QAAS6N,EAAW9M,CAAI,CACzD,EACM4M,CACT,EAAG,EACH1Q,EAAQ,QAAa0Q,CAErB,EAEM,IACC,SAAS3Q,EAAyBC,EAASC,EAAqB,CAIvE,IAAI4Q,EAAY,MAAQ,KAAK,WAAa,UAAY,CACpD,IAAIC,EAAgB,SAAUC,EAAGC,EAAG,CAClC,OAAAF,EAAgB,OAAO,gBAAkB,CACvC,UAAW,CAAA,CACjB,YAAiB,OAAS,SAAUC,EAAGC,EAAG,CACpCD,EAAE,UAAYC,CACpB,GAAS,SAAUD,EAAGC,EAAG,CACnB,QAASC,KAAKD,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,IAAGF,EAAEE,CAAC,EAAID,EAAEC,CAAC,EAC5E,EACMH,EAAcC,EAAGC,CAAC,CAC1B,EACD,OAAO,SAAUD,EAAGC,EAAG,CACrB,GAAI,OAAOA,GAAM,YAAcA,IAAM,KAAM,MAAM,IAAI,UAAU,uBAAyB,OAAOA,CAAC,EAAI,+BAA+B,EACnIF,EAAcC,EAAGC,CAAC,EAClB,SAASE,GAAK,CACZ,KAAK,YAAcH,CACzB,CACIA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKE,EAAG,UAAYF,EAAE,UAAW,IAAIE,EAChF,CACH,EAAG,EACC7O,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAImR,EAAoB9O,EAAgBpC,EAAoB,GAAG,CAAC,EAC5DmR,EAA4B,SAAUC,EAAQ,CAChDR,EAAUO,EAAcC,CAAM,EAC9B,SAASD,EAAahR,EAAI,CACxB,IAAIkD,EAAUlD,EAAG,QACfuO,EAAavO,EAAG,WAChBkR,EAAYlR,EAAG,UACboD,EAAQ6N,EAAO,KAAK,KAAM,CAC5B,QAAS/N,EACT,WAAYqL,CACb,CAAA,GAAK,KACN,OAAAnL,EAAM,UAAY8N,EACX9N,CACX,CACE,cAAO,eAAe4N,EAAa,UAAW,QAAS,CACrD,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,KACrB,EACD,IAAK,SAAU/Q,EAAO,CACpB,KAAK,QAAQ,aAAa,QAASA,CAAK,EACxC,KAAK,QAAQ,MAAQA,CACtB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACM+Q,CACT,EAAED,EAAkB,OAAO,EAC3BnR,EAAQ,QAAaoR,CAErB,EAEM,IACC,SAASrR,EAAyBC,EAASC,EAAqB,CAIvE,IAAI4Q,EAAY,MAAQ,KAAK,WAAa,UAAY,CACpD,IAAIC,EAAgB,SAAUC,EAAGC,EAAG,CAClC,OAAAF,EAAgB,OAAO,gBAAkB,CACvC,UAAW,CAAA,CACjB,YAAiB,OAAS,SAAUC,EAAGC,EAAG,CACpCD,EAAE,UAAYC,CACpB,GAAS,SAAUD,EAAGC,EAAG,CACnB,QAASC,KAAKD,EAAO,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,IAAGF,EAAEE,CAAC,EAAID,EAAEC,CAAC,EAC5E,EACMH,EAAcC,EAAGC,CAAC,CAC1B,EACD,OAAO,SAAUD,EAAGC,EAAG,CACrB,GAAI,OAAOA,GAAM,YAAcA,IAAM,KAAM,MAAM,IAAI,UAAU,uBAAyB,OAAOA,CAAC,EAAI,+BAA+B,EACnIF,EAAcC,EAAGC,CAAC,EAClB,SAASE,GAAK,CACZ,KAAK,YAAcH,CACzB,CACIA,EAAE,UAAYC,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKE,EAAG,UAAYF,EAAE,UAAW,IAAIE,EAChF,CACH,EAAG,EACC7O,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAImR,EAAoB9O,EAAgBpC,EAAoB,GAAG,CAAC,EAC5DsR,EAA6B,SAAUF,EAAQ,CACjDR,EAAUU,EAAeF,CAAM,EAC/B,SAASE,EAAcnR,EAAI,CACzB,IAAIkD,EAAUlD,EAAG,QACfuO,EAAavO,EAAG,WAChBuN,EAAWvN,EAAG,SACZoD,EAAQ6N,EAAO,KAAK,KAAM,CAC5B,QAAS/N,EACT,WAAYqL,CACb,CAAA,GAAK,KACN,OAAAnL,EAAM,SAAWmK,EACVnK,CACX,CACE,cAAO,eAAe+N,EAAc,UAAW,oBAAqB,CAClE,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,cAAc,kBAAkB,GAEpD,KAAK,QAAQ,cAAc,qBAAqB,CACjD,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAc,UAAW,eAAgB,CAC7D,IAAK,UAAY,CACf,OAAO,MAAM,KAAK,KAAK,QAAQ,qBAAqB,UAAU,CAAC,CAChE,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAc,UAAW,UAAW,CACxD,IAAK,UAAY,CACf,OAAO,MAAM,KAAK,KAAK,QAAQ,OAAO,CACvC,EACD,IAAK,SAAUlI,EAAS,CACtB,IAAI7F,EAAQ,KACRmD,EAAW,SAAS,uBAAwB,EAC5C6K,EAAsB,SAAU1N,EAAM,CAExC,IAAII,EAASV,EAAM,SAASM,CAAI,EAEhC6C,EAAS,YAAYzC,CAAM,CAC5B,EAEDmF,EAAQ,QAAQ,SAAUoI,EAAY,CACpC,OAAOD,EAAoBC,CAAU,CAC7C,CAAO,EACD,KAAK,kBAAkB9K,CAAQ,CAChC,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD4K,EAAc,UAAU,kBAAoB,SAAU5K,EAAU,CAC9D,KAAK,QAAQ,UAAY,GACzB,KAAK,QAAQ,YAAYA,CAAQ,CAClC,EACM4K,CACT,EAAEJ,EAAkB,OAAO,EAC3BnR,EAAQ,QAAauR,CAErB,EAEM,IACC,SAASxR,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,gBAAkBA,EAAQ,qBAAuBA,EAAQ,gBAAkBA,EAAQ,UAAYA,EAAQ,UAAYA,EAAQ,aAAeA,EAAQ,OAAS,OACnKA,EAAQ,OAAS,CACf,aAAc,eACd,aAAc,eACd,OAAQ,SACR,OAAQ,SACR,OAAQ,SACR,QAAS,UACT,WAAY,aACZ,cAAe,gBACf,gBAAiB,kBACjB,gBAAiB,iBAClB,EACDA,EAAQ,aAAe,CACrB,WAAY,aACZ,eAAgB,iBAChB,iBAAkB,mBAClB,cAAe,gBACf,UAAW,YACX,SAAU,WACV,YAAa,cACb,eAAgB,iBAChB,UAAW,YACX,SAAU,WACV,eAAgB,gBACjB,EACDA,EAAQ,UAAY,CAClB,SAAU,GACV,WAAY,EACZ,UAAW,GACX,MAAO,GACP,QAAS,GACT,OAAQ,GACR,SAAU,GACV,YAAa,GACb,cAAe,EAChB,EACDA,EAAQ,UAAY,OACpBA,EAAQ,gBAAkB,aAC1BA,EAAQ,qBAAuB,kBAC/BA,EAAQ,gBAAkB,CAE1B,EAEM,IACC,SAASD,EAAyBC,EAASC,EAAqB,CAIvE,OAAO,eAAeD,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,eAAiBA,EAAQ,mBAAqB,OACtD,IAAI+C,EAAU9C,EAAoB,GAAG,EACrCD,EAAQ,mBAAqB,CAC3B,eAAgB,UAChB,eAAgB,iBAChB,MAAO,iBACP,YAAa,yBACb,KAAM,gBACN,UAAW,0BACX,WAAY,wBACZ,aAAc,0BACd,KAAM,gBACN,eAAgB,4BAChB,aAAc,0BACd,WAAY,wBACZ,YAAa,uBACb,MAAO,iBACP,aAAc,mBACd,OAAQ,kBACR,YAAa,YACb,WAAY,aACZ,UAAW,UACX,cAAe,cACf,iBAAkB,iBAClB,cAAe,cACf,aAAc,aACd,aAAc,aACd,UAAW,iBACX,UAAW,gBACZ,EACDA,EAAQ,eAAiB,CACvB,MAAO,CAAE,EACT,QAAS,CAAE,EACX,OAAQ,GACR,kBAAmB,GACnB,aAAc,GACd,SAAU,GACV,cAAe,KACf,YAAa,GACb,iBAAkB,GAClB,UAAW,GACX,UAAW,GACX,sBAAuB,GACvB,UAAW,IACX,MAAO,GACP,cAAe,GACf,cAAe,GACf,YAAa,EACb,kBAAmB,EACnB,aAAc,CAAC,QAAS,OAAO,EAC/B,SAAU,OACV,oBAAqB,GACrB,WAAY,GACZ,gBAAiB,GACjB,OAAQ+C,EAAQ,YAChB,YAAa,GACb,iBAAkB,KAClB,uBAAwB,KACxB,aAAc,KACd,YAAa,KACb,sBAAuB,OACvB,YAAa,aACb,cAAe,mBACf,cAAe,4BACf,eAAgB,kBAChB,eAAgB,kCAChB,kBAAmB,wDACnB,YAAa,SAAU1C,EAAO,CAC5B,MAAO,0BAA2B,UAAW0C,EAAQ,UAAU1C,CAAK,EAAG,OAAQ,CAChF,EACD,YAAa,SAAUqR,EAAc,CACnC,MAAO,QAAQ,OAAOA,EAAc,sBAAsB,CAC3D,EACD,cAAe,SAAUC,EAAQC,EAAQ,CACvC,OAAOD,IAAWC,CACnB,EACD,YAAa,CACX,aAAc,EACf,EACD,QAAS,GACT,eAAgB,KAChB,0BAA2B,KAC3B,WAAY5R,EAAQ,kBACrB,CAED,EAEM,GACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAKlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAKlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAASC,EAAqB,CAIvE,IAAI4R,EAAkB,MAAQ,KAAK,kBAAoB,OAAO,OAAS,SAAUC,EAAGC,EAAGC,EAAGC,EAAI,CACxFA,IAAO,SAAWA,EAAKD,GAC3B,IAAIE,EAAO,OAAO,yBAAyBH,EAAGC,CAAC,GAC3C,CAACE,IAAS,QAASA,EAAO,CAACH,EAAE,WAAaG,EAAK,UAAYA,EAAK,iBAClEA,EAAO,CACL,WAAY,GACZ,IAAK,UAAY,CACf,OAAOH,EAAEC,CAAC,CAClB,CACK,GAEH,OAAO,eAAeF,EAAGG,EAAIC,CAAI,CAClC,EAAG,SAAUJ,EAAGC,EAAGC,EAAGC,EAAI,CACrBA,IAAO,SAAWA,EAAKD,GAC3BF,EAAEG,CAAE,EAAIF,EAAEC,CAAC,CACb,GACIG,EAAe,MAAQ,KAAK,cAAgB,SAAUJ,EAAG/R,EAAS,CACpE,QAASiR,KAAKc,EAAOd,IAAM,WAAa,CAAC,OAAO,UAAU,eAAe,KAAKjR,EAASiR,CAAC,GAAGY,EAAgB7R,EAAS+R,EAAGd,CAAC,CACzH,EACD,OAAO,eAAejR,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHmS,EAAalS,EAAoB,EAAE,EAAGD,CAAO,EAC7CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,EAAE,EAAGD,CAAO,EAC7CmS,EAAalS,EAAoB,EAAE,EAAGD,CAAO,EAC7CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,EAC9CmS,EAAalS,EAAoB,GAAG,EAAGD,CAAO,CAE9C,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,GACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,GACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,CAEH,EAEM,IACC,SAASD,EAAyBC,EAAS,CAKlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,sBAAwBA,EAAQ,KAAOA,EAAQ,YAAcA,EAAQ,cAAgBA,EAAQ,cAAgBA,EAAQ,YAAcA,EAAQ,YAAcA,EAAQ,QAAUA,EAAQ,SAAWA,EAAQ,mBAAqBA,EAAQ,cAAgBA,EAAQ,KAAOA,EAAQ,OAASA,EAAQ,QAAUA,EAAQ,WAAaA,EAAQ,cAAgBA,EAAQ,gBAAkB,OACpX,IAAIoS,EAAkB,SAAUC,EAAKC,EAAK,CACxC,OAAO,KAAK,MAAM,KAAK,OAAQ,GAAIA,EAAMD,GAAOA,CAAG,CACpD,EACDrS,EAAQ,gBAAkBoS,EAC1B,IAAIG,EAAgB,SAAUC,EAAQ,CACpC,OAAO,MAAM,KAAK,CAChB,OAAQA,CACZ,EAAK,UAAY,CACb,SAAWxS,EAAQ,iBAAiB,EAAG,EAAE,EAAE,SAAS,EAAE,CAC1D,CAAG,EAAE,KAAK,EAAE,CACX,EACDA,EAAQ,cAAgBuS,EACxB,IAAIE,EAAa,SAAUnP,EAASoP,EAAQ,CAC1C,IAAInS,EAAK+C,EAAQ,IAAMA,EAAQ,MAAQ,GAAG,OAAOA,EAAQ,KAAM,GAAG,EAAE,UAAWtD,EAAQ,eAAe,CAAC,CAAC,MAASA,EAAQ,eAAe,CAAC,EACzI,OAAAO,EAAKA,EAAG,QAAQ,kBAAmB,EAAE,EACrCA,EAAK,GAAG,OAAOmS,EAAQ,GAAG,EAAE,OAAOnS,CAAE,EAC9BA,CACR,EACDP,EAAQ,WAAayS,EACrB,IAAIE,EAAU,SAAUC,EAAK,CAC3B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,EAAE,MAAM,EAAG,EAAE,CACvD,EACD5S,EAAQ,QAAU2S,EAClB,IAAIE,EAAS,SAAUnE,EAAMkE,EAAK,CAChC,OAA4BA,GAAQ,SAAY5S,EAAQ,SAAS4S,CAAG,IAAMlE,CAC3E,EACD1O,EAAQ,OAAS6S,EACjB,IAAIC,EAAO,SAAUxP,EAASyP,EAAS,CACrC,OAAIA,IAAY,SACdA,EAAU,SAAS,cAAc,KAAK,GAEpCzP,EAAQ,aACNA,EAAQ,YACVA,EAAQ,WAAW,aAAayP,EAASzP,EAAQ,WAAW,EAE5DA,EAAQ,WAAW,YAAYyP,CAAO,GAGnCA,EAAQ,YAAYzP,CAAO,CACnC,EACDtD,EAAQ,KAAO8S,EACf,IAAIE,EAAgB,SAAUC,EAAShE,EAAUa,EAAW,CACtDA,IAAc,SAChBA,EAAY,GAId,QAFIoD,EAAO,GAAG,OAAOpD,EAAY,EAAI,OAAS,WAAY,gBAAgB,EACtEqD,EAAUF,EAAQC,CAAI,EACnBC,GAAS,CACd,GAAIA,EAAQ,QAAQlE,CAAQ,EAC1B,OAAOkE,EAETA,EAAUA,EAAQD,CAAI,CAC1B,CACE,OAAOC,CACR,EACDnT,EAAQ,cAAgBgT,EACxB,IAAII,EAAqB,SAAU9P,EAAS+P,EAAQvD,EAAW,CAI7D,GAHIA,IAAc,SAChBA,EAAY,GAEV,CAACxM,EACH,MAAO,GAET,IAAIgQ,EACJ,OAAIxD,EAAY,EAEdwD,EAAYD,EAAO,UAAYA,EAAO,cAAgB/P,EAAQ,UAAYA,EAAQ,aAGlFgQ,EAAYhQ,EAAQ,WAAa+P,EAAO,UAEnCC,CACR,EACDtT,EAAQ,mBAAqBoT,EAC7B,IAAIG,EAAW,SAAUlT,EAAO,CAC9B,OAAI,OAAOA,GAAU,SACZA,EAEFA,EAAM,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,QAAQ,CACvG,EACDL,EAAQ,SAAWuT,EACnBvT,EAAQ,QAAU,UAAY,CAC5B,IAAIwT,EAAQ,SAAS,cAAc,KAAK,EACxC,OAAO,SAAUC,EAAK,CACpB,IAAIC,EAAeD,EAAI,KAAM,EAC7BD,EAAM,UAAYE,EAElB,QADIC,EAAaH,EAAM,SAAS,CAAC,EAC1BA,EAAM,YACXA,EAAM,YAAYA,EAAM,UAAU,EAEpC,OAAOG,CACR,CACH,EAAG,EACH,IAAIC,EAAc,SAAUxT,EAAImE,EAAI,CAClC,IAAIlE,EAAQD,EAAG,MACboE,EAAKpE,EAAG,MACRE,EAAQkE,IAAO,OAASnE,EAAQmE,EAC9BoN,EAASrN,EAAG,MACdoI,EAAKpI,EAAG,MACRsP,EAASlH,IAAO,OAASiF,EAASjF,EACpC,OAAOrM,EAAM,cAAcuT,EAAQ,GAAI,CACrC,YAAa,OACb,kBAAmB,GACnB,QAAS,EACb,CAAG,CACF,EACD7T,EAAQ,YAAc4T,EACtB,IAAIE,EAAc,SAAUC,EAAG/C,EAAG,CAChC,IAAI5Q,EAAK2T,EAAE,MACTC,EAAS5T,IAAO,OAAS,EAAIA,EAC3BmE,EAAKyM,EAAE,MACTiD,EAAS1P,IAAO,OAAS,EAAIA,EAC/B,OAAOyP,EAASC,CACjB,EACDjU,EAAQ,YAAc8T,EACtB,IAAII,EAAgB,SAAU5Q,EAASoL,EAAMyF,EAAY,CACnDA,IAAe,SACjBA,EAAa,MAEf,IAAI3K,EAAQ,IAAI,YAAYkF,EAAM,CAChC,OAAQyF,EACR,QAAS,GACT,WAAY,EAChB,CAAG,EACD,OAAO7Q,EAAQ,cAAckG,CAAK,CACnC,EACDxJ,EAAQ,cAAgBkU,EACxB,IAAIE,EAAgB,SAAUC,EAAOhU,EAAOiU,EAAK,CAC/C,OAAIA,IAAQ,SACVA,EAAM,SAEDD,EAAM,KAAK,SAAUhQ,EAAM,CAChC,OAAI,OAAOhE,GAAU,SACZgE,EAAKiQ,CAAG,IAAMjU,EAAM,KAAM,EAE5BgE,EAAKiQ,CAAG,IAAMjU,CACzB,CAAG,CACF,EACDL,EAAQ,cAAgBoU,EACxB,IAAIG,GAAc,SAAU3B,EAAK,CAC/B,OAAO,KAAK,MAAM,KAAK,UAAUA,CAAG,CAAC,CACtC,EACD5S,EAAQ,YAAcuU,GAItB,IAAIC,GAAO,SAAUT,EAAG/C,EAAG,CACzB,IAAIyD,EAAQ,OAAO,KAAKV,CAAC,EAAE,KAAM,EAC7BW,EAAQ,OAAO,KAAK1D,CAAC,EAAE,KAAM,EACjC,OAAOyD,EAAM,OAAO,SAAUvS,EAAG,CAC/B,OAAOwS,EAAM,QAAQxS,CAAC,EAAI,CAC9B,CAAG,CACF,EACDlC,EAAQ,KAAOwU,GACf,IAAIG,EAAwB,SAAUhU,EAAkB,CACtD,GAAI,OAAOA,EAAqB,IAC9B,GAAI,CACF,OAAO,KAAK,MAAMA,CAAgB,CACnC,MAAW,CACV,OAAOA,CACb,CAEE,MAAO,CAAE,CACV,EACDX,EAAQ,sBAAwB2U,CAEhC,EAEM,IACC,SAAS5U,EAAyBC,EAAS,CAIlD,IAAI8B,EAAgB,MAAQ,KAAK,eAAiB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KAC1EE,GAAM,EAAEF,KAAKF,MACVI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGlB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CACxD,EACD,OAAO,eAAehC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAe,OACvBA,EAAQ,aAAe,CAAE,EACzB,SAAS0G,EAAQ/E,EAAOiT,EAAQ,CAO9B,OANIjT,IAAU,SACZA,EAAQ3B,EAAQ,cAEd4U,IAAW,SACbA,EAAS,CAAE,GAELA,EAAO,KAAI,CACjB,IAAK,aACH,CACE,IAAIC,EAAkBD,EAClBlP,EAAS,CACX,GAAImP,EAAgB,GACpB,UAAWA,EAAgB,UAC3B,QAASA,EAAgB,QACzB,MAAOA,EAAgB,MACvB,MAAOA,EAAgB,OAASA,EAAgB,MAChD,SAAUA,EAAgB,UAAY,GACtC,SAAU,GACV,OAAQ,GACR,MAAO,KACP,iBAAkBA,EAAgB,iBAClC,YAAaA,EAAgB,aAAe,EAC7C,EAMD,OAAO/S,EAAcA,EAAc,GAAIH,EAAO,EAAI,EAAG,CAAC+D,CAAM,EAAG,EAAK,CAC5E,CACI,IAAK,WACH,CACE,IAAIoP,EAAkBF,EAGtB,OAAIE,EAAgB,SAAW,GACtBnT,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIlN,EAASkN,EACb,OAAIlN,EAAO,KAAO,SAAS,GAAG,OAAOoP,EAAgB,QAAQ,EAAG,EAAE,IAChEpP,EAAO,SAAW,IAEbA,CACnB,CAAW,EAEI/D,CACf,CACI,IAAK,cACH,CACE,IAAIoT,EAAqBH,EAGzB,OAAIG,EAAmB,UAAYA,EAAmB,SAAW,GACxDpT,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIlN,EAASkN,EACb,OAAIlN,EAAO,KAAO,SAAS,GAAG,OAAOqP,EAAmB,QAAQ,EAAG,EAAE,IACnErP,EAAO,SAAW,IAEbA,CACnB,CAAW,EAEI/D,CACf,CACI,IAAK,iBACH,CACE,IAAIqT,EAAwBJ,EAC5B,OAAOjT,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIlN,EAASkN,EAGb,OAAAlN,EAAO,OAASsP,EAAsB,QAAQ,KAAK,SAAU5U,EAAI,CAC/D,IAAIiE,GAAOjE,EAAG,KACZ6U,GAAQ7U,EAAG,MACb,OAAIiE,GAAK,KAAOqB,EAAO,IACrBA,EAAO,MAAQuP,GACR,IAEF,EACnB,CAAW,EACMvP,CACjB,CAAS,CACT,CACI,IAAK,mBACH,CACE,IAAIwP,EAA0BN,EAC9B,OAAOjT,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIlN,EAASkN,EACb,OAAAlN,EAAO,OAASwP,EAAwB,OACjCxP,CACjB,CAAS,CACT,CACI,IAAK,gBAED,OAAO1F,EAAQ,aAEnB,QAEI,OAAO2B,CAEf,CACA,CACA3B,EAAQ,QAAa0G,CAErB,EAEM,IACC,SAAS3G,EAAyBC,EAAS,CAIlD,IAAI8B,EAAgB,MAAQ,KAAK,eAAiB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KAC1EE,GAAM,EAAEF,KAAKF,MACVI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGlB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CACxD,EACD,OAAO,eAAehC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAe,OACvBA,EAAQ,aAAe,CAAE,EACzB,SAASyG,EAAO9E,EAAOiT,EAAQ,CAO7B,OANIjT,IAAU,SACZA,EAAQ3B,EAAQ,cAEd4U,IAAW,SACbA,EAAS,CAAE,GAELA,EAAO,KAAI,CACjB,IAAK,YACH,CACE,IAAIO,EAAiBP,EACrB,OAAO9S,EAAcA,EAAc,CAAA,EAAIH,EAAO,EAAI,EAAG,CAAC,CACpD,GAAIwT,EAAe,GACnB,MAAOA,EAAe,MACtB,OAAQA,EAAe,OACvB,SAAUA,EAAe,QAC1B,CAAA,EAAG,EAAK,CACjB,CACI,IAAK,gBAED,MAAO,CAAE,EAEb,QAEI,OAAOxT,CAEf,CACA,CACA3B,EAAQ,QAAayG,CAErB,EAEM,IACC,SAAS1G,EAAyBC,EAASC,EAAqB,CAIvE,IAAIoC,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAe,OACvB,IAAIoV,EAAUnV,EAAoB,GAAG,EACjC0C,EAAUN,EAAgBpC,EAAoB,EAAE,CAAC,EACjDyC,EAAWL,EAAgBpC,EAAoB,GAAG,CAAC,EACnDwC,EAAYJ,EAAgBpC,EAAoB,GAAG,CAAC,EACpDoV,EAAYhT,EAAgBpC,EAAoB,GAAG,CAAC,EACpD8C,EAAU9C,EAAoB,GAAG,EACrCD,EAAQ,aAAe,CACrB,OAAQ,CAAE,EACV,MAAO,CAAE,EACT,QAAS,CAAE,EACX,QAAS,EACV,EACD,IAAIsV,KAAiBF,EAAQ,iBAAiB,CAC5C,MAAOzS,EAAQ,QACf,OAAQD,EAAS,QACjB,QAASD,EAAU,QACnB,QAAS4S,EAAU,OACrB,CAAC,EACGE,EAAc,SAAUC,EAAaZ,EAAQ,CAC/C,IAAIjT,EAAQ6T,EAKZ,GAAIZ,EAAO,OAAS,YAClBjT,EAAQ3B,EAAQ,qBACP4U,EAAO,OAAS,WACzB,SAAW7R,EAAQ,aAAa6R,EAAO,KAAK,EAE9C,OAAOU,EAAW3T,EAAOiT,CAAM,CAChC,EACD5U,EAAQ,QAAauV,CAErB,EAEM,GACC,SAASxV,EAAyBC,EAAS,CAIlD,IAAI8B,EAAgB,MAAQ,KAAK,eAAiB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KAC1EE,GAAM,EAAEF,KAAKF,MACVI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGlB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CACxD,EACD,OAAO,eAAehC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAe,OACvBA,EAAQ,aAAe,CAAE,EACzB,SAASiF,EAAMtD,EAAOiT,EAAQ,CAO5B,OANIjT,IAAU,SACZA,EAAQ3B,EAAQ,cAEd4U,IAAW,SACbA,EAAS,CAAE,GAELA,EAAO,KAAI,CACjB,IAAK,WACH,CACE,IAAIa,EAAgBb,EAEhBc,EAAW5T,EAAcA,EAAc,CAAE,EAAEH,EAAO,EAAI,EAAG,CAAC,CAC5D,GAAI8T,EAAc,GAClB,SAAUA,EAAc,SACxB,QAASA,EAAc,QACvB,MAAOA,EAAc,MACrB,MAAOA,EAAc,MACrB,OAAQ,GACR,YAAa,GACb,iBAAkBA,EAAc,iBAChC,YAAaA,EAAc,aAAe,GAC1C,QAAS,IACV,CAAA,EAAG,EAAK,EACT,OAAOC,EAAS,IAAI,SAAU9C,EAAK,CACjC,IAAIvO,EAAOuO,EACX,OAAAvO,EAAK,YAAc,GACZA,CACjB,CAAS,CACT,CACI,IAAK,cAGD,OAAO1C,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIvO,EAAOuO,EACX,OAAIvO,EAAK,KAAOuQ,EAAO,KACrBvQ,EAAK,OAAS,IAETA,CACjB,CAAS,EAEL,IAAK,iBACH,CACE,IAAIsR,EAAwBf,EAC5B,OAAOjT,EAAM,IAAI,SAAUiR,EAAK,CAC9B,IAAIvO,EAAOuO,EACX,OAAIvO,EAAK,KAAOsR,EAAsB,KACpCtR,EAAK,YAAcsR,EAAsB,aAEpCtR,CACjB,CAAS,CACT,CACI,QAEI,OAAO1C,CAEf,CACA,CACA3B,EAAQ,QAAaiF,CAErB,EAEM,IACC,SAASlF,EAAyBC,EAAS,CAIlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACHA,EAAQ,aAAe,OACvBA,EAAQ,aAAe,GACvB,IAAI4V,EAAU,SAAUjU,EAAOiT,EAAQ,CAOrC,OANIjT,IAAU,SACZA,EAAQ3B,EAAQ,cAEd4U,IAAW,SACbA,EAAS,CAAE,GAELA,EAAO,KAAI,CACjB,IAAK,iBAED,OAAOA,EAAO,UAElB,QAEI,OAAOjT,CAEf,CACC,EACD3B,EAAQ,QAAa4V,CAErB,EAEM,IACC,SAAS7V,EAAyBC,EAASC,EAAqB,CAIvE,IAAI6B,EAAgB,MAAQ,KAAK,eAAiB,SAAUC,EAAIC,EAAMC,EAAM,CAC1E,GAAIA,GAAQ,UAAU,SAAW,EAAG,QAASC,EAAI,EAAGC,EAAIH,EAAK,OAAQI,EAAIF,EAAIC,EAAGD,KAC1EE,GAAM,EAAEF,KAAKF,MACVI,IAAIA,EAAK,MAAM,UAAU,MAAM,KAAKJ,EAAM,EAAGE,CAAC,GACnDE,EAAGF,CAAC,EAAIF,EAAKE,CAAC,GAGlB,OAAOH,EAAG,OAAOK,GAAM,MAAM,UAAU,MAAM,KAAKJ,CAAI,CAAC,CACxD,EACGK,EAAkB,MAAQ,KAAK,iBAAmB,SAAUC,EAAK,CACnE,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACZ,CACF,EACD,OAAO,eAAetC,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EAEH,IAAIoV,EAAUnV,EAAoB,GAAG,EACjC4V,EAAUxT,EAAgBpC,EAAoB,GAAG,CAAC,EAClD6V,EAAqB,UAAY,CACnC,SAASA,GAAQ,CACf,KAAK,UAAaV,EAAQ,aAAaS,EAAQ,QAAS,OAAO,8BAAgC,OAAO,6BAA4B,CAAE,CACxI,CAIE,OAAAC,EAAM,UAAU,UAAY,SAAUC,EAAU,CAC9C,KAAK,OAAO,UAAUA,CAAQ,CAC/B,EAIDD,EAAM,UAAU,SAAW,SAAUlB,EAAQ,CAC3C,KAAK,OAAO,SAASA,CAAM,CAC5B,EACD,OAAO,eAAekB,EAAM,UAAW,QAAS,CAI9C,IAAK,UAAY,CACf,OAAO,KAAK,OAAO,SAAU,CAC9B,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAM,UAAW,QAAS,CAI9C,IAAK,UAAY,CACf,OAAO,KAAK,MAAM,KACnB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAM,UAAW,cAAe,CAIpD,IAAK,UAAY,CACf,OAAO,KAAK,MAAM,OAAO,SAAUzR,EAAM,CACvC,OAAOA,EAAK,SAAW,EAC/B,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeyR,EAAM,UAAW,yBAA0B,CAI/D,IAAK,UAAY,CACf,OAAO,KAAK,MAAM,OAAO,SAAUzR,EAAM,CACvC,OAAOA,EAAK,QAAUA,EAAK,WACnC,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeyR,EAAM,UAAW,UAAW,CAIhD,IAAK,UAAY,CACf,OAAO,KAAK,MAAM,OACnB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAM,UAAW,gBAAiB,CAItD,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,OAAO,SAAUpQ,EAAQ,CAC3C,OAAOA,EAAO,SAAW,EACjC,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeoQ,EAAM,UAAW,oBAAqB,CAI1D,IAAK,UAAY,CACf,OAAO,KAAK,QAAQ,OAAO,SAAUpQ,EAAQ,CAC3C,OAAOA,EAAO,WAAa,EACnC,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeoQ,EAAM,UAAW,oBAAqB,CAI1D,IAAK,UAAY,CACf,OAAO,KAAK,kBAAkB,OAAO,SAAUpQ,EAAQ,CACrD,OAAOA,EAAO,cAAgB,EACtC,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeoQ,EAAM,UAAW,oBAAqB,CAI1D,IAAK,UAAY,CACf,OAAOhU,EAAc,GAAI,KAAK,QAAS,EAAI,EAAE,QAAS,EAAC,KAAK,SAAU4D,EAAQ,CAC5E,OAAOA,EAAO,cAAgB,EACtC,CAAO,CACF,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeoQ,EAAM,UAAW,SAAU,CAI/C,IAAK,UAAY,CACf,OAAO,KAAK,MAAM,MACnB,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EACD,OAAO,eAAeA,EAAM,UAAW,eAAgB,CAIrD,IAAK,UAAY,CACf,IAAI1V,EAAK,KACPqG,EAASrG,EAAG,OACZsG,EAAUtG,EAAG,QACf,OAAOqG,EAAO,OAAO,SAAUhC,EAAO,CACpC,IAAIuR,EAAWvR,EAAM,SAAW,IAAQA,EAAM,WAAa,GACvDwR,EAAmBvP,EAAQ,KAAK,SAAUhB,GAAQ,CACpD,OAAOA,GAAO,SAAW,IAAQA,GAAO,WAAa,EAC/D,CAAS,EACD,OAAOsQ,GAAYC,CACpB,EAAE,EAAE,CACN,EACD,WAAY,GACZ,aAAc,EAClB,CAAG,EAIDH,EAAM,UAAU,UAAY,UAAY,CACtC,OAAO,KAAK,MAAM,OACnB,EAIDA,EAAM,UAAU,cAAgB,SAAUvV,EAAI,CAC5C,OAAO,KAAK,cAAc,KAAK,SAAUmF,EAAQ,CAC/C,OAAOA,EAAO,KAAO,SAASnF,EAAI,EAAE,CAC1C,CAAK,CACF,EAIDuV,EAAM,UAAU,aAAe,SAAUvV,EAAI,CAC3C,OAAO,KAAK,OAAO,KAAK,SAAUkE,EAAO,CACvC,OAAOA,EAAM,KAAOlE,CAC1B,CAAK,CACF,EACMuV,CACT,EAAG,EACH9V,EAAQ,QAAa8V,CAErB,EAEM,IACC,SAAS/V,EAAyBC,EAAS,CAQlD,OAAO,eAAeA,EAAS,aAAe,CAC5C,MAAO,EACT,CAAG,EACH,IAAIkW,EAAY,CACd,eAAgB,SAAU9V,EAAI+V,EAAKC,EAAiBC,EAAoBC,EAAeC,EAAmBC,EAAS,CACjH,IAAIC,EAAiBrW,EAAG,WAAW,eAC/BsW,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CACrD,UAAWD,CACjB,CAAK,EACD,OAAAC,EAAI,QAAQ,KAAOH,EACfJ,IACFO,EAAI,IAAMP,GAERE,IACFK,EAAI,SAAW,GAEbN,IACFM,EAAI,aAAa,OAAQJ,EAAgB,WAAa,SAAS,EAC3DA,GACFI,EAAI,aAAa,oBAAqB,MAAM,GAGhDA,EAAI,aAAa,gBAAiB,MAAM,EACxCA,EAAI,aAAa,gBAAiB,OAAO,EACrCF,GACFE,EAAI,aAAa,kBAAmBF,CAAO,EAEtCE,CACR,EACD,eAAgB,SAAUtW,EAAI,CAC5B,IAAIuW,EAAiBvW,EAAG,WAAW,eACnC,OAAO,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CAClD,UAAWuW,CACjB,CAAK,CACF,EACD,SAAU,SAAUvW,EAAIiW,EAAoB,CAC1C,IAAI9R,EAAKnE,EAAG,WACVwW,EAAOrS,EAAG,KACVsS,EAAatS,EAAG,WAChBuS,EAAYvS,EAAG,UACjB,OAAO,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CAClD,UAAW,GAAG,OAAOqS,EAAM,GAAG,EAAE,OAAOP,EAAqBQ,EAAaC,CAAS,CACxF,CAAK,CACF,EACD,YAAa,SAAU1W,EAAIC,EAAO,CAChC,IAAIkE,EACAwS,EAAY3W,EAAG,UACjBQ,EAAcR,EAAG,WAAW,YAC9B,OAAO,OAAO,OAAO,SAAS,cAAc,KAAK,GAAImE,EAAK,CACxD,UAAW3D,CACjB,EAAO2D,EAAGwS,EAAY,YAAc,WAAW,EAAI1W,EAAOkE,EAAI,CAC3D,EACD,KAAM,SAAUnE,EAAImE,EAAIuD,EAAkB,CACxC,IAAItD,EAAImI,EACJoK,EAAY3W,EAAG,UACjBwM,EAAKxM,EAAG,WACRiE,EAAOuI,EAAG,KACVoK,EAASpK,EAAG,OACZqK,EAAmBrK,EAAG,iBACtBsK,EAAiBtK,EAAG,eACpBhM,EAAcgM,EAAG,YACfrM,GAAKgE,EAAG,GACVlE,GAAQkE,EAAG,MACXjE,EAAQiE,EAAG,MACX5D,EAAmB4D,EAAG,iBACtBtD,EAASsD,EAAG,OACZ9D,EAAW8D,EAAG,SACd/C,EAAc+C,EAAG,YACjB4S,EAAgB5S,EAAG,YACjBmS,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,GAAIlS,EAAK,CAC3D,UAAWH,CACjB,EAAOG,EAAGuS,EAAY,YAAc,WAAW,EAAIzW,EAAOkE,EAAI,EAiB1D,GAhBA,OAAO,OAAOkS,EAAI,QAAS,CACzB,KAAM,GACN,GAAInW,GACJ,MAAOF,GACP,iBAAkBM,CACxB,CAAK,EACGM,GACFyV,EAAI,aAAa,gBAAiB,MAAM,EAEtCjW,GACFiW,EAAI,aAAa,gBAAiB,MAAM,EAEtCS,GACFT,EAAI,UAAU,IAAI9V,CAAW,EAE/B8V,EAAI,UAAU,IAAIlV,EAAcyV,EAAmBC,CAAc,EAC7DpP,EAAkB,CAChBrH,GACFiW,EAAI,UAAU,OAAOQ,CAAc,EAErCR,EAAI,QAAQ,UAAY,GAExB,IAAIU,EAAmB,cACnBC,EAAe,OAAO,OAAO,SAAS,cAAc,QAAQ,GAAI1K,EAAK,CACvE,KAAM,SACN,UAAWqK,CACnB,EAASrK,EAAGoK,EAAY,YAAc,WAAW,EAAIK,EAAkBzK,EAAI,EACrE0K,EAAa,aAAa,aAAc,GAAG,OAAOD,EAAkB,KAAK,EAAE,OAAO/W,GAAO,GAAG,CAAC,EAC7FgX,EAAa,QAAQ,OAAS,GAC9BX,EAAI,YAAYW,CAAY,CAClC,CACI,OAAOX,CACR,EACD,WAAY,SAAUtW,EAAIiW,EAAoB,CAC5C,IAAIO,EAAOxW,EAAG,WAAW,KACrBsW,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CACrD,UAAWE,CACjB,CAAK,EACD,OAAKP,GACHK,EAAI,aAAa,uBAAwB,MAAM,EAEjDA,EAAI,aAAa,OAAQ,SAAS,EAC3BA,CACR,EACD,YAAa,SAAUtW,EAAImE,EAAI,CAC7B,IAAIC,EACAuS,EAAY3W,EAAG,UACjBuM,EAAKvM,EAAG,WACRqE,EAAQkI,EAAG,MACX2K,EAAe3K,EAAG,aAClB4K,EAAe5K,EAAG,aAChBpM,EAAKgE,EAAG,GACVlE,EAAQkE,EAAG,MACX9D,EAAW8D,EAAG,SACZmS,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,EAAG,CACrD,UAAW,GAAG,OAAOjS,EAAO,GAAG,EAAE,OAAOhE,EAAW8W,EAAe,EAAE,CAC1E,CAAK,EACD,OAAAb,EAAI,aAAa,OAAQ,OAAO,EAChC,OAAO,OAAOA,EAAI,QAAS,CACzB,MAAO,GACP,GAAInW,EACJ,MAAOF,CACb,CAAK,EACGI,GACFiW,EAAI,aAAa,gBAAiB,MAAM,EAE1CA,EAAI,YAAY,OAAO,OAAO,SAAS,cAAc,KAAK,GAAIlS,EAAK,CACjE,UAAW8S,CACjB,EAAO9S,EAAGuS,EAAY,YAAc,WAAW,EAAI1W,EAAOmE,GAAI,EACnDkS,CACR,EACD,OAAQ,SAAUtW,EAAImE,EAAIiT,EAAY,CACpC,IAAIhT,EACAuS,EAAY3W,EAAG,UACjBuM,EAAKvM,EAAG,WACRiE,EAAOsI,EAAG,KACV8K,EAAa9K,EAAG,WAChBuK,EAAiBvK,EAAG,eACpB+K,EAAgB/K,EAAG,cACnB4K,EAAe5K,EAAG,aAClB/L,EAAc+L,EAAG,YACfpM,GAAKgE,EAAG,GACVlE,GAAQkE,EAAG,MACXjE,EAAQiE,EAAG,MACX/D,EAAU+D,EAAG,QACb7D,EAAY6D,EAAG,UACf4I,EAAa5I,EAAG,SAChB2I,EAAa3I,EAAG,SAChB4S,EAAgB5S,EAAG,YACjBmS,EAAM,OAAO,OAAO,SAAS,cAAc,KAAK,GAAIlS,EAAK,CAC3D,GAAI9D,CACV,EAAO8D,EAAGuS,EAAY,YAAc,WAAW,EAAIzW,EAAOkE,EAAG,UAAY,GAAG,OAAOH,EAAM,GAAG,EAAE,OAAOoT,CAAU,EAAGjT,EAAI,EAClH,OAAI0I,GACFwJ,EAAI,UAAU,IAAIgB,CAAa,EAE7BP,GACFT,EAAI,UAAU,IAAI9V,CAAW,EAE/B8V,EAAI,aAAa,OAAQlW,GAAWA,EAAU,EAAI,WAAa,QAAQ,EACvE,OAAO,OAAOkW,EAAI,QAAS,CACzB,OAAQ,GACR,GAAInW,GACJ,MAAOF,GACP,WAAYmX,CAClB,CAAK,EACGrK,GACFuJ,EAAI,UAAU,IAAIa,CAAY,EAC9Bb,EAAI,QAAQ,eAAiB,GAC7BA,EAAI,aAAa,gBAAiB,MAAM,IAExCA,EAAI,UAAU,IAAIQ,CAAc,EAChCR,EAAI,QAAQ,iBAAmB,IAE1BA,CACR,EACD,MAAO,SAAUtW,EAAIoO,EAAkB,CACrC,IAAIjK,EAAKnE,EAAG,WACVuX,EAAQpT,EAAG,MACXqT,EAAcrT,EAAG,YACfsT,EAAM,OAAO,OAAO,SAAS,cAAc,OAAO,EAAG,CACvD,KAAM,SACN,KAAM,eACN,UAAW,GAAG,OAAOF,EAAO,GAAG,EAAE,OAAOC,CAAW,EACnD,aAAc,MACd,eAAgB,MAChB,WAAY,EAClB,CAAK,EACD,OAAAC,EAAI,aAAa,OAAQ,SAAS,EAClCA,EAAI,aAAa,oBAAqB,MAAM,EAC5CA,EAAI,aAAa,aAAcrJ,CAAgB,EACxCqJ,CACR,EACD,SAAU,SAAUzX,EAAI,CACtB,IAAImE,EAAKnE,EAAG,WACVwW,EAAOrS,EAAG,KACVuT,EAAevT,EAAG,aAChBmS,EAAM,SAAS,cAAc,KAAK,EACtC,OAAAA,EAAI,UAAU,IAAIE,EAAMkB,CAAY,EACpCpB,EAAI,aAAa,gBAAiB,OAAO,EAClCA,CACR,EACD,OAAQ,SAAUtW,EAAI2X,EAAWrJ,EAAM,CACrC,IAAInK,EACAwS,EAAY3W,EAAG,UACjBoE,EAAKpE,EAAG,WACRiE,EAAOG,EAAG,KACViT,EAAajT,EAAG,WAChBwT,EAAYxT,EAAG,UACfyT,EAAYzT,EAAG,UACbkK,IAAS,SACXA,EAAO,IAET,IAAIwJ,EAAU,CAAC7T,EAAMoT,CAAU,EAC/B,OAAI/I,IAAS,aACXwJ,EAAQ,KAAKD,CAAS,EACbvJ,IAAS,cAClBwJ,EAAQ,KAAKF,CAAS,EAEjB,OAAO,OAAO,SAAS,cAAc,KAAK,GAAIzT,EAAK,CAAE,EAAEA,EAAGwS,EAAY,YAAc,WAAW,EAAIgB,EAAWxT,EAAG,UAAY2T,EAAQ,KAAK,GAAG,EAAG3T,EAAI,CAC5J,EACD,OAAQ,SAAUnE,EAAI,CACpB,IAAIE,EAAQF,EAAG,MACbC,EAAQD,EAAG,MACXO,EAAmBP,EAAG,iBACtBa,EAASb,EAAG,OACZK,EAAWL,EAAG,SACZ+X,EAAM,IAAI,OAAO7X,EAAOD,EAAO,GAAOY,CAAM,EAChD,OAAIN,IACFwX,EAAI,QAAQ,iBAAmB,GAAG,OAAOxX,CAAgB,GAE3DwX,EAAI,SAAW,CAAC,CAAC1X,EACV0X,CACX,CACC,EACDnY,EAAQ,QAAakW,CAErB,EAEM,IACC,SAASrW,EAAQ,CAIxB,IAAIuY,EAAoB,SAA2B/X,EAAO,CACzD,OAAOgY,EAAgBhY,CAAK,GACxB,CAACiY,EAAUjY,CAAK,CACpB,EAED,SAASgY,EAAgBhY,EAAO,CAC/B,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAU,QACpC,CAEA,SAASiY,EAAUjY,EAAO,CACzB,IAAIkY,EAAc,OAAO,UAAU,SAAS,KAAKlY,CAAK,EAEtD,OAAOkY,IAAgB,mBACnBA,IAAgB,iBAChBC,EAAenY,CAAK,CACzB,CAGA,IAAIoY,EAAe,OAAO,QAAW,YAAc,OAAO,IACtDC,EAAqBD,EAAe,OAAO,IAAI,eAAe,EAAI,MAEtE,SAASD,EAAenY,EAAO,CAC9B,OAAOA,EAAM,WAAaqY,CAC3B,CAEA,SAASC,EAAYxT,EAAK,CACzB,OAAO,MAAM,QAAQA,CAAG,EAAI,CAAA,EAAK,CAAA,CAClC,CAEA,SAASyT,EAA8BvY,EAAOgJ,EAAS,CACtD,OAAQA,EAAQ,QAAU,IAASA,EAAQ,kBAAkBhJ,CAAK,EAC/DwY,GAAUF,EAAYtY,CAAK,EAAGA,EAAOgJ,CAAO,EAC5ChJ,CACJ,CAEA,SAASyY,EAAkBxO,EAAQyO,EAAQ1P,EAAS,CACnD,OAAOiB,EAAO,OAAOyO,CAAM,EAAE,IAAI,SAASzV,EAAS,CAClD,OAAOsV,EAA8BtV,EAAS+F,CAAO,CACrD,CAAA,CACF,CAEA,SAAS2P,EAAiB1E,EAAKjL,EAAS,CACvC,GAAI,CAACA,EAAQ,YACZ,OAAOwP,GAER,IAAII,EAAc5P,EAAQ,YAAYiL,CAAG,EACzC,OAAO,OAAO2E,GAAgB,WAAaA,EAAcJ,EAC1D,CAEA,SAASK,EAAgC5O,EAAQ,CAChD,OAAO,OAAO,sBACX,OAAO,sBAAsBA,CAAM,EAAE,OAAO,SAAS6O,EAAQ,CAC9D,OAAO7O,EAAO,qBAAqB6O,CAAM,CACzC,CAAA,EACC,CAAA,CACJ,CAEA,SAASC,EAAQ9O,EAAQ,CACxB,OAAO,OAAO,KAAKA,CAAM,EAAE,OAAO4O,EAAgC5O,CAAM,CAAC,CAC1E,CAEA,SAAS+O,EAAmBC,EAAQC,EAAU,CAC7C,GAAI,CACH,OAAOA,KAAYD,CACnB,MAAU,CACV,MAAO,EACT,CACA,CAGA,SAASE,EAAiBlP,EAAQgK,EAAK,CACtC,OAAO+E,EAAmB/O,EAAQgK,CAAG,GACjC,EAAE,OAAO,eAAe,KAAKhK,EAAQgK,CAAG,GACvC,OAAO,qBAAqB,KAAKhK,EAAQgK,CAAG,EAClD,CAEA,SAASmF,GAAYnP,EAAQyO,EAAQ1P,EAAS,CAC7C,IAAI8G,EAAc,CAAE,EACpB,OAAI9G,EAAQ,kBAAkBiB,CAAM,GACnC8O,EAAQ9O,CAAM,EAAE,QAAQ,SAASgK,EAAK,CACrCnE,EAAYmE,CAAG,EAAIsE,EAA8BtO,EAAOgK,CAAG,EAAGjL,CAAO,CACxE,CAAG,EAEF+P,EAAQL,CAAM,EAAE,QAAQ,SAASzE,EAAK,CACjCkF,EAAiBlP,EAAQgK,CAAG,IAI5B+E,EAAmB/O,EAAQgK,CAAG,GAAKjL,EAAQ,kBAAkB0P,EAAOzE,CAAG,CAAC,EAC3EnE,EAAYmE,CAAG,EAAI0E,EAAiB1E,EAAKjL,CAAO,EAAEiB,EAAOgK,CAAG,EAAGyE,EAAOzE,CAAG,EAAGjL,CAAO,EAEnF8G,EAAYmE,CAAG,EAAIsE,EAA8BG,EAAOzE,CAAG,EAAGjL,CAAO,EAExE,CAAE,EACM8G,CACR,CAEA,SAAS0I,GAAUvO,EAAQyO,EAAQ1P,EAAS,CAC3CA,EAAUA,GAAW,CAAE,EACvBA,EAAQ,WAAaA,EAAQ,YAAcyP,EAC3CzP,EAAQ,kBAAoBA,EAAQ,mBAAqB+O,EAGzD/O,EAAQ,8BAAgCuP,EAExC,IAAIc,EAAgB,MAAM,QAAQX,CAAM,EACpCY,EAAgB,MAAM,QAAQrP,CAAM,EACpCsP,EAA4BF,IAAkBC,EAElD,OAAKC,EAEMF,EACHrQ,EAAQ,WAAWiB,EAAQyO,EAAQ1P,CAAO,EAE1CoQ,GAAYnP,EAAQyO,EAAQ1P,CAAO,EAJnCuP,EAA8BG,EAAQ1P,CAAO,CAMtD,CAEAwP,GAAU,IAAM,SAAsBxE,EAAOhL,EAAS,CACrD,GAAI,CAAC,MAAM,QAAQgL,CAAK,EACvB,MAAM,IAAI,MAAM,mCAAmC,EAGpD,OAAOA,EAAM,OAAO,SAASwF,EAAMC,EAAM,CACxC,OAAOjB,GAAUgB,EAAMC,EAAMzQ,CAAO,CACtC,EAAI,CAAE,CAAA,CACL,EAED,IAAI9G,EAAcsW,GAElBhZ,EAAO,QAAU0C,CAGjB,EAEM,IACC,SAASxC,EAAyBga,EAAqB9Z,EAAqB,CAEnFA,EAAoB,EAAE8Z,CAAmB,EACpB9Z,EAAoB,EAAE8Z,EAAqB,CACzC,QAAW,UAAW,CAAE,OAAqBC,EAAK,CACzE,CAAsB,EAUtB,SAASC,EAAQ5Z,EAAO,CACtB,OAAQ,MAAM,QAEV,MAAM,QAAQA,CAAK,EADnB6Z,EAAO7Z,CAAK,IAAM,gBAExB,CAIA,SAAS8Z,EAAa9Z,EAAO,CAE3B,GAAI,OAAOA,GAAS,SAClB,OAAOA,EAET,IAAI+Z,EAAS/Z,EAAQ,GACrB,OAAO+Z,GAAU,KAAO,EAAI/Z,GAAS,KAAY,KAAO+Z,CAC1D,CAEA,SAASC,EAASha,EAAO,CACvB,OAAOA,GAAS,KAAO,GAAK8Z,EAAa9Z,CAAK,CAChD,CAEA,SAASia,EAASja,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CAEA,SAASka,EAASla,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CAGA,SAASma,EAAUna,EAAO,CACxB,OACEA,IAAU,IACVA,IAAU,IACToa,EAAapa,CAAK,GAAK6Z,EAAO7Z,CAAK,GAAK,kBAE7C,CAEA,SAASqa,EAASra,EAAO,CACvB,OAAO,OAAOA,GAAU,QAC1B,CAGA,SAASoa,EAAapa,EAAO,CAC3B,OAAOqa,EAASra,CAAK,GAAKA,IAAU,IACtC,CAEA,SAASsa,EAAUta,EAAO,CACxB,OAA8BA,GAAU,IAC1C,CAEA,SAASua,EAAQva,EAAO,CACtB,MAAO,CAACA,EAAM,OAAO,MACvB,CAIA,SAAS6Z,EAAO7Z,EAAO,CACrB,OAAOA,GAAS,KACZA,IAAU,OACR,qBACA,gBACF,OAAO,UAAU,SAAS,KAAKA,CAAK,CAC1C,CAIA,MAAMwa,EAAuB,yBAEvBC,GAAwCxG,GAC5C,yBAAyBA,CAAG,GAExByG,GAA4BzI,GAChC,iCAAiCA,CAAG,IAEhC0I,EAAwBC,GAAS,WAAWA,CAAI,mBAEhDC,EAA4B5G,GAChC,6BAA6BA,CAAG,+BAE5B6G,EAAS,OAAO,UAAU,eAEhC,MAAMC,CAAS,CACb,YAAYC,EAAM,CAChB,KAAK,MAAQ,CAAE,EACf,KAAK,QAAU,CAAE,EAEjB,IAAIC,EAAc,EAElBD,EAAK,QAAS/G,GAAQ,CACpB,IAAI1B,EAAM2I,EAAUjH,CAAG,EAEvBgH,GAAe1I,EAAI,OAEnB,KAAK,MAAM,KAAKA,CAAG,EACnB,KAAK,QAAQA,EAAI,EAAE,EAAIA,EAEvB0I,GAAe1I,EAAI,MACzB,CAAK,EAGD,KAAK,MAAM,QAAS0B,GAAQ,CAC1BA,EAAI,QAAUgH,CACpB,CAAK,CACL,CACE,IAAIE,EAAO,CACT,OAAO,KAAK,QAAQA,CAAK,CAC7B,CACE,MAAO,CACL,OAAO,KAAK,KAChB,CACE,QAAS,CACP,OAAO,KAAK,UAAU,KAAK,KAAK,CACpC,CACA,CAEA,SAASD,EAAUjH,EAAK,CACtB,IAAImH,EAAO,KACPlb,EAAK,KACLmb,EAAM,KACNC,EAAS,EACTC,EAAQ,KAEZ,GAAItB,EAAShG,CAAG,GAAK2F,EAAQ3F,CAAG,EAC9BoH,EAAMpH,EACNmH,EAAOI,EAAcvH,CAAG,EACxB/T,EAAKub,EAAYxH,CAAG,MACf,CACL,GAAI,CAAC6G,EAAO,KAAK7G,EAAK,MAAM,EAC1B,MAAM,IAAI,MAAM0G,EAAqB,MAAM,CAAC,EAG9C,MAAMC,EAAO3G,EAAI,KAGjB,GAFAoH,EAAMT,EAEFE,EAAO,KAAK7G,EAAK,QAAQ,IAC3BqH,EAASrH,EAAI,OAETqH,GAAU,GACZ,MAAM,IAAI,MAAMT,EAAyBD,CAAI,CAAC,EAIlDQ,EAAOI,EAAcZ,CAAI,EACzB1a,EAAKub,EAAYb,CAAI,EACrBW,EAAQtH,EAAI,KAChB,CAEE,MAAO,CAAE,KAAAmH,EAAM,GAAAlb,EAAI,OAAAob,EAAQ,IAAAD,EAAK,MAAAE,CAAK,CACvC,CAEA,SAASC,EAAcvH,EAAK,CAC1B,OAAO2F,EAAQ3F,CAAG,EAAIA,EAAMA,EAAI,MAAM,GAAG,CAC3C,CAEA,SAASwH,EAAYxH,EAAK,CACxB,OAAO2F,EAAQ3F,CAAG,EAAIA,EAAI,KAAK,GAAG,EAAIA,CACxC,CAEA,SAASyH,EAAInJ,EAAK6I,EAAM,CACtB,IAAI7E,EAAO,CAAE,EACToF,EAAM,GAEV,MAAMC,EAAU,CAACrJ,EAAK6I,EAAMvN,IAAU,CACpC,GAAKyM,EAAU/H,CAAG,EAGlB,GAAI,CAAC6I,EAAKvN,CAAK,EAEb0I,EAAK,KAAKhE,CAAG,MACR,CACL,IAAI0B,EAAMmH,EAAKvN,CAAK,EAEpB,MAAM7N,EAAQuS,EAAI0B,CAAG,EAErB,GAAI,CAACqG,EAAUta,CAAK,EAClB,OAKF,GACE6N,IAAUuN,EAAK,OAAS,IACvBnB,EAASja,CAAK,GAAKka,EAASla,CAAK,GAAKma,EAAUna,CAAK,GAEtDuW,EAAK,KAAKyD,EAASha,CAAK,CAAC,UAChB4Z,EAAQ5Z,CAAK,EAAG,CACzB2b,EAAM,GAEN,QAAS9Z,EAAI,EAAGga,EAAM7b,EAAM,OAAQ6B,EAAIga,EAAKha,GAAK,EAChD+Z,EAAQ5b,EAAM6B,CAAC,EAAGuZ,EAAMvN,EAAQ,CAAC,CAE3C,MAAiBuN,EAAK,QAEdQ,EAAQ5b,EAAOob,EAAMvN,EAAQ,CAAC,CAEtC,CACG,EAGD,OAAA+N,EAAQrJ,EAAK0H,EAASmB,CAAI,EAAIA,EAAK,MAAM,GAAG,EAAIA,EAAM,CAAC,EAEhDO,EAAMpF,EAAOA,EAAK,CAAC,CAC5B,CA6DA,IAAIuF,EAAS,CACX,GAhDmB,CAGnB,gBAAiB,GAEjB,aAAc,GAEd,KAAM,CAAE,EAER,WAAY,GAEZ,OAAQ,CAACpI,EAAG,IACVA,EAAE,QAAU,EAAE,MAASA,EAAE,IAAM,EAAE,IAAM,GAAK,EAAKA,EAAE,MAAQ,EAAE,MAAQ,GAAK,CAC7E,EAoCC,GA7DmB,CAInB,eAAgB,GAGhB,eAAgB,GAEhB,mBAAoB,CACrB,EAoDC,GAnCmB,CAEnB,SAAU,EAGV,UAAW,GAMX,SAAU,GACX,EAwBC,GAtBsB,CAEtB,kBAAmB,GAGnB,MAAOgI,EAIP,eAAgB,GAIhB,gBAAiB,GAEjB,gBAAiB,CAClB,CAOA,EAED,MAAMK,EAAQ,SAId,SAASC,EAAKV,EAAS,EAAGW,EAAW,EAAG,CACtC,MAAMC,EAAQ,IAAI,IACZxK,EAAI,KAAK,IAAI,GAAIuK,CAAQ,EAE/B,MAAO,CACL,IAAIjc,EAAO,CACT,MAAMmc,EAAYnc,EAAM,MAAM+b,CAAK,EAAE,OAErC,GAAIG,EAAM,IAAIC,CAAS,EACrB,OAAOD,EAAM,IAAIC,CAAS,EAI5B,MAAMH,EAAO,EAAI,KAAK,IAAIG,EAAW,GAAMb,CAAM,EAG3Cc,EAAI,WAAW,KAAK,MAAMJ,EAAOtK,CAAC,EAAIA,CAAC,EAE7C,OAAAwK,EAAM,IAAIC,EAAWC,CAAC,EAEfA,CACR,EACD,OAAQ,CACNF,EAAM,MAAO,CACnB,CACA,CACA,CAEA,MAAMG,CAAU,CACd,YAAY,CACV,MAAAd,EAAQO,EAAO,MACf,gBAAAQ,EAAkBR,EAAO,eAC1B,EAAG,GAAI,CACN,KAAK,KAAOE,EAAKM,EAAiB,CAAC,EACnC,KAAK,MAAQf,EACb,KAAK,UAAY,GAEjB,KAAK,gBAAiB,CAC1B,CACE,WAAWgB,EAAO,GAAI,CACpB,KAAK,KAAOA,CAChB,CACE,gBAAgBC,EAAU,GAAI,CAC5B,KAAK,QAAUA,CACnB,CACE,QAAQxB,EAAO,GAAI,CACjB,KAAK,KAAOA,EACZ,KAAK,SAAW,CAAE,EAClBA,EAAK,QAAQ,CAAC/G,EAAKwI,IAAQ,CACzB,KAAK,SAASxI,EAAI,EAAE,EAAIwI,CAC9B,CAAK,CACL,CACE,QAAS,CACH,KAAK,WAAa,CAAC,KAAK,KAAK,SAIjC,KAAK,UAAY,GAGbxC,EAAS,KAAK,KAAK,CAAC,CAAC,EACvB,KAAK,KAAK,QAAQ,CAACyC,EAAKC,IAAa,CACnC,KAAK,WAAWD,EAAKC,CAAQ,CACrC,CAAO,EAGD,KAAK,KAAK,QAAQ,CAACD,EAAKC,IAAa,CACnC,KAAK,WAAWD,EAAKC,CAAQ,CACrC,CAAO,EAGH,KAAK,KAAK,MAAO,EACrB,CAEE,IAAID,EAAK,CACP,MAAMD,EAAM,KAAK,KAAM,EAEnBxC,EAASyC,CAAG,EACd,KAAK,WAAWA,EAAKD,CAAG,EAExB,KAAK,WAAWC,EAAKD,CAAG,CAE9B,CAEE,SAASA,EAAK,CACZ,KAAK,QAAQ,OAAOA,EAAK,CAAC,EAG1B,QAAS5a,EAAI4a,EAAKZ,EAAM,KAAK,KAAM,EAAEha,EAAIga,EAAKha,GAAK,EACjD,KAAK,QAAQA,CAAC,EAAE,GAAK,CAE3B,CACE,uBAAuBmC,EAAMmX,EAAO,CAClC,OAAOnX,EAAK,KAAK,SAASmX,CAAK,CAAC,CACpC,CACE,MAAO,CACL,OAAO,KAAK,QAAQ,MACxB,CACE,WAAWuB,EAAKC,EAAU,CACxB,GAAI,CAACrC,EAAUoC,CAAG,GAAKnC,EAAQmC,CAAG,EAChC,OAGF,IAAIE,EAAS,CACX,EAAGF,EACH,EAAGC,EACH,EAAG,KAAK,KAAK,IAAID,CAAG,CACrB,EAED,KAAK,QAAQ,KAAKE,CAAM,CAC5B,CACE,WAAWF,EAAKC,EAAU,CACxB,IAAIC,EAAS,CAAE,EAAGD,EAAU,EAAG,CAAA,CAAI,EAGnC,KAAK,KAAK,QAAQ,CAAC1I,EAAK4I,IAAa,CACnC,IAAI7c,EAAQiU,EAAI,MAAQA,EAAI,MAAMyI,CAAG,EAAI,KAAK,MAAMA,EAAKzI,EAAI,IAAI,EAEjE,GAAKqG,EAAUta,CAAK,GAIpB,GAAI4Z,EAAQ5Z,CAAK,EAAG,CAClB,IAAI8c,EAAa,CAAE,EACnB,MAAMC,EAAQ,CAAC,CAAE,eAAgB,GAAI,MAAA/c,CAAK,CAAE,EAE5C,KAAO+c,EAAM,QAAQ,CACnB,KAAM,CAAE,eAAAC,EAAgB,MAAAhd,GAAU+c,EAAM,IAAK,EAE7C,GAAKzC,EAAUta,CAAK,EAIpB,GAAIia,EAASja,CAAK,GAAK,CAACua,EAAQva,CAAK,EAAG,CACtC,IAAIid,EAAY,CACd,EAAGjd,EACH,EAAGgd,EACH,EAAG,KAAK,KAAK,IAAIhd,CAAK,CACvB,EAED8c,EAAW,KAAKG,CAAS,CACrC,MAAqBrD,EAAQ5Z,CAAK,GACtBA,EAAM,QAAQ,CAACgE,EAAM2N,KAAM,CACzBoL,EAAM,KAAK,CACT,eAAgBpL,GAChB,MAAO3N,CACvB,CAAe,CACf,CAAa,CAEb,CACQ4Y,EAAO,EAAEC,CAAQ,EAAIC,CAC7B,SAAiB7C,EAASja,CAAK,GAAK,CAACua,EAAQva,CAAK,EAAG,CAC7C,IAAIid,EAAY,CACd,EAAGjd,EACH,EAAG,KAAK,KAAK,IAAIA,CAAK,CACvB,EAED4c,EAAO,EAAEC,CAAQ,EAAII,CAC7B,EACA,CAAK,EAED,KAAK,QAAQ,KAAKL,CAAM,CAC5B,CACE,QAAS,CACP,MAAO,CACL,KAAM,KAAK,KACX,QAAS,KAAK,OACpB,CACA,CACA,CAEA,SAASM,GACPlC,EACAuB,EACA,CAAE,MAAAhB,EAAQO,EAAO,MAAO,gBAAAQ,EAAkBR,EAAO,iBAAoB,CAAA,EACrE,CACA,MAAMqB,EAAU,IAAId,EAAU,CAAE,MAAAd,EAAO,gBAAAe,CAAe,CAAE,EACxD,OAAAa,EAAQ,QAAQnC,EAAK,IAAIE,CAAS,CAAC,EACnCiC,EAAQ,WAAWZ,CAAI,EACvBY,EAAQ,OAAQ,EACTA,CACT,CAEA,SAASC,GACP3Z,EACA,CAAE,MAAA8X,EAAQO,EAAO,MAAO,gBAAAQ,EAAkBR,EAAO,iBAAoB,CAAA,EACrE,CACA,KAAM,CAAE,KAAAd,EAAM,QAAAwB,CAAO,EAAK/Y,EACpB0Z,EAAU,IAAId,EAAU,CAAE,MAAAd,EAAO,gBAAAe,CAAe,CAAE,EACxD,OAAAa,EAAQ,QAAQnC,CAAI,EACpBmC,EAAQ,gBAAgBX,CAAO,EACxBW,CACT,CAEA,SAASE,GACPC,EACA,CACE,OAAAC,EAAS,EACT,gBAAAC,EAAkB,EAClB,iBAAAC,EAAmB,EACnB,SAAAvN,EAAW4L,EAAO,SAClB,eAAA4B,EAAiB5B,EAAO,cAC5B,EAAM,CAAA,EACJ,CACA,MAAM6B,EAAWJ,EAASD,EAAQ,OAElC,GAAII,EACF,OAAOC,EAGT,MAAMC,EAAY,KAAK,IAAIH,EAAmBD,CAAe,EAE7D,OAAKtN,EAKEyN,EAAWC,EAAY1N,EAHrB0N,EAAY,EAAMD,CAI7B,CAEA,SAASE,GACPC,EAAY,CAAE,EACdC,EAAqBjC,EAAO,mBAC5B,CACA,IAAIkC,EAAU,CAAE,EACZC,EAAQ,GACRC,EAAM,GACNrc,EAAI,EAER,QAASga,EAAMiC,EAAU,OAAQjc,EAAIga,EAAKha,GAAK,EAAG,CAChD,IAAIsc,EAAQL,EAAUjc,CAAC,EACnBsc,GAASF,IAAU,GACrBA,EAAQpc,EACC,CAACsc,GAASF,IAAU,KAC7BC,EAAMrc,EAAI,EACNqc,EAAMD,EAAQ,GAAKF,GACrBC,EAAQ,KAAK,CAACC,EAAOC,CAAG,CAAC,EAE3BD,EAAQ,GAEd,CAGE,OAAIH,EAAUjc,EAAI,CAAC,GAAKA,EAAIoc,GAASF,GACnCC,EAAQ,KAAK,CAACC,EAAOpc,EAAI,CAAC,CAAC,EAGtBmc,CACT,CAGA,MAAMI,GAAW,GAEjB,SAASC,GACPC,EACAhB,EACAiB,EACA,CACE,SAAAC,EAAW1C,EAAO,SAClB,SAAA5L,EAAW4L,EAAO,SAClB,UAAA2C,EAAY3C,EAAO,UACnB,eAAA4C,EAAiB5C,EAAO,eACxB,mBAAAiC,EAAqBjC,EAAO,mBAC5B,eAAA6C,EAAiB7C,EAAO,eACxB,eAAA4B,EAAiB5B,EAAO,cAC5B,EAAM,CAAA,EACJ,CACA,GAAIwB,EAAQ,OAASc,GACnB,MAAM,IAAI,MAAM1D,GAAyB0D,EAAQ,CAAC,EAGpD,MAAMQ,EAAatB,EAAQ,OAErBuB,EAAUP,EAAK,OAEfb,GAAmB,KAAK,IAAI,EAAG,KAAK,IAAIe,EAAUK,CAAO,CAAC,EAEhE,IAAIC,GAAmBL,EAEnBM,GAAetB,GAInB,MAAMuB,GAAiBjB,EAAqB,GAAKY,EAE3CM,GAAYD,GAAiB,MAAMH,CAAO,EAAI,CAAE,EAEtD,IAAIhR,GAGJ,MAAQA,GAAQyQ,EAAK,QAAQhB,EAASyB,EAAY,GAAK,IAAI,CACzD,IAAInK,GAAQyI,GAAeC,EAAS,CAClC,gBAAiBzP,GACjB,iBAAA4P,GACA,SAAAvN,EACA,eAAAwN,CACN,CAAK,EAKD,GAHAoB,GAAmB,KAAK,IAAIlK,GAAOkK,EAAgB,EACnDC,GAAelR,GAAQ+Q,EAEnBI,GAAgB,CAClB,IAAInd,GAAI,EACR,KAAOA,GAAI+c,GACTK,GAAUpR,GAAQhM,EAAC,EAAI,EACvBA,IAAK,CAEb,CACA,CAGEkd,GAAe,GAEf,IAAIG,GAAa,CAAE,EACfC,GAAa,EACbC,GAASR,EAAaC,EAE1B,MAAMQ,GAAO,GAAMT,EAAa,EAEhC,QAAS/c,GAAI,EAAGA,GAAI+c,EAAY/c,IAAK,EAAG,CAItC,IAAIyd,GAAS,EACTC,GAASH,GAEb,KAAOE,GAASC,IACAlC,GAAeC,EAAS,CACpC,OAAQzb,GACR,gBAAiB4b,GAAmB8B,GACpC,iBAAA9B,GACA,SAAAvN,EACA,eAAAwN,CACR,CAAO,GAEYoB,GACXQ,GAASC,GAETH,GAASG,GAGXA,GAAS,KAAK,OAAOH,GAASE,IAAU,EAAIA,EAAM,EAIpDF,GAASG,GAET,IAAItB,GAAQ,KAAK,IAAI,EAAGR,GAAmB8B,GAAS,CAAC,EACjDC,GAASd,EACTG,EACA,KAAK,IAAIpB,GAAmB8B,GAAQV,CAAO,EAAID,EAG/Ca,GAAS,MAAMD,GAAS,CAAC,EAE7BC,GAAOD,GAAS,CAAC,GAAK,GAAK3d,IAAK,EAEhC,QAAS6d,GAAIF,GAAQE,IAAKzB,GAAOyB,IAAK,EAAG,CACvC,IAAIlC,GAAkBkC,GAAI,EACtBC,GAAYpB,EAAgBD,EAAK,OAAOd,EAAe,CAAC,EAgB5D,GAdIwB,KAEFC,GAAUzB,EAAe,EAAI,CAAC,CAAC,CAACmC,IAIlCF,GAAOC,EAAC,GAAMD,GAAOC,GAAI,CAAC,GAAK,EAAK,GAAKC,GAGrC9d,KACF4d,GAAOC,EAAC,IACJR,GAAWQ,GAAI,CAAC,EAAIR,GAAWQ,EAAC,IAAM,EAAK,EAAIR,GAAWQ,GAAI,CAAC,GAGjED,GAAOC,EAAC,EAAIL,KACdF,GAAa9B,GAAeC,EAAS,CACnC,OAAQzb,GACR,gBAAA2b,GACA,iBAAAC,GACA,SAAAvN,EACA,eAAAwN,CACV,CAAS,EAIGyB,IAAcL,IAAkB,CAMlC,GAJAA,GAAmBK,GACnBJ,GAAevB,GAGXuB,IAAgBtB,GAClB,MAIFQ,GAAQ,KAAK,IAAI,EAAG,EAAIR,GAAmBsB,EAAY,CACjE,CAEA,CAWI,GARc1B,GAAeC,EAAS,CACpC,OAAQzb,GAAI,EACZ,gBAAiB4b,GACjB,iBAAAA,GACA,SAAAvN,EACA,eAAAwN,CACN,CAAK,EAEWoB,GACV,MAGFI,GAAaO,EACjB,CAEE,MAAM1F,GAAS,CACb,QAASgF,IAAgB,EAEzB,MAAO,KAAK,IAAI,KAAOI,EAAU,CAClC,EAED,GAAIH,GAAgB,CAClB,MAAMhB,GAAUH,GAAqBoB,GAAWlB,CAAkB,EAC7DC,GAAQ,OAEFW,IACT5E,GAAO,QAAUiE,IAFjBjE,GAAO,QAAU,EAIvB,CAEE,OAAOA,EACT,CAEA,SAAS6F,GAAsBtC,EAAS,CACtC,IAAI+B,EAAO,CAAE,EAEb,QAASxd,EAAI,EAAGga,EAAMyB,EAAQ,OAAQzb,EAAIga,EAAKha,GAAK,EAAG,CACrD,MAAMge,EAAOvC,EAAQ,OAAOzb,CAAC,EAC7Bwd,EAAKQ,CAAI,GAAKR,EAAKQ,CAAI,GAAK,GAAM,GAAMhE,EAAMha,EAAI,CACtD,CAEE,OAAOwd,CACT,CAEA,MAAMS,EAAY,CAChB,YACExC,EACA,CACE,SAAAkB,EAAW1C,EAAO,SAClB,UAAA2C,EAAY3C,EAAO,UACnB,SAAA5L,EAAW4L,EAAO,SAClB,eAAA6C,EAAiB7C,EAAO,eACxB,eAAA4C,EAAiB5C,EAAO,eACxB,mBAAAiC,EAAqBjC,EAAO,mBAC5B,gBAAAiE,EAAkBjE,EAAO,gBACzB,eAAA4B,EAAiB5B,EAAO,cAC9B,EAAQ,CAAA,EACJ,CAgBA,GAfA,KAAK,QAAU,CACb,SAAA0C,EACA,UAAAC,EACA,SAAAvO,EACA,eAAAyO,EACA,eAAAD,EACA,mBAAAX,EACA,gBAAAgC,EACA,eAAArC,CACD,EAED,KAAK,QAAUqC,EAAkBzC,EAAUA,EAAQ,YAAa,EAEhE,KAAK,OAAS,CAAE,EAEZ,CAAC,KAAK,QAAQ,OAChB,OAGF,MAAM0C,EAAW,CAAC1C,GAAS2C,KAAe,CACxC,KAAK,OAAO,KAAK,CACf,QAAA3C,GACA,SAAUsC,GAAsBtC,EAAO,EACvC,WAAA2C,EACR,CAAO,CACF,EAEKpE,EAAM,KAAK,QAAQ,OAEzB,GAAIA,EAAMuC,GAAU,CAClB,IAAIvc,GAAI,EACR,MAAMqe,GAAYrE,EAAMuC,GAClBF,GAAMrC,EAAMqE,GAElB,KAAOre,GAAIqc,IACT8B,EAAS,KAAK,QAAQ,OAAOne,GAAGuc,EAAQ,EAAGvc,EAAC,EAC5CA,IAAKuc,GAGP,GAAI8B,GAAW,CACb,MAAMD,GAAapE,EAAMuC,GACzB4B,EAAS,KAAK,QAAQ,OAAOC,EAAU,EAAGA,EAAU,CAC5D,CACA,MACMD,EAAS,KAAK,QAAS,CAAC,CAE9B,CAEE,SAAS1B,EAAM,CACb,KAAM,CAAE,gBAAAyB,EAAiB,eAAApB,CAAgB,EAAG,KAAK,QAOjD,GALKoB,IACHzB,EAAOA,EAAK,YAAa,GAIvB,KAAK,UAAYA,EAAM,CACzB,IAAIvE,GAAS,CACX,QAAS,GACT,MAAO,CACR,EAED,OAAI4E,IACF5E,GAAO,QAAU,CAAC,CAAC,EAAGuE,EAAK,OAAS,CAAC,CAAC,GAGjCvE,EACb,CAGI,KAAM,CACJ,SAAAyE,EACA,SAAAtO,EACA,UAAAuO,EACA,eAAAC,EACA,mBAAAX,EACA,eAAAL,CACD,EAAG,KAAK,QAET,IAAIyC,EAAa,CAAE,EACfC,EAAa,EACbC,GAAa,GAEjB,KAAK,OAAO,QAAQ,CAAC,CAAE,QAAA/C,GAAS,SAAAgD,GAAU,WAAAL,MAAiB,CACzD,KAAM,CAAE,QAAAM,GAAS,MAAA3L,GAAO,QAAAoJ,EAAO,EAAKK,GAAOC,EAAMhB,GAASgD,GAAU,CAClE,SAAU9B,EAAWyB,GACrB,SAAA/P,EACA,UAAAuO,EACA,eAAAC,EACA,mBAAAX,EACA,eAAAY,EACA,eAAAjB,CACR,CAAO,EAEG6C,KACFF,GAAa,IAGfD,GAAcxL,GAEV2L,IAAWvC,KACbmC,EAAa,CAAC,GAAGA,EAAY,GAAGnC,EAAO,EAE/C,CAAK,EAED,IAAIjE,GAAS,CACX,QAASsG,GACT,MAAOA,GAAaD,EAAa,KAAK,OAAO,OAAS,CACvD,EAED,OAAIC,IAAc1B,IAChB5E,GAAO,QAAUoG,GAGZpG,EACX,CACA,CAEA,MAAMyG,EAAU,CACd,YAAYlD,EAAS,CACnB,KAAK,QAAUA,CACnB,CACE,OAAO,aAAaA,EAAS,CAC3B,OAAOmD,GAASnD,EAAS,KAAK,UAAU,CAC5C,CACE,OAAO,cAAcA,EAAS,CAC5B,OAAOmD,GAASnD,EAAS,KAAK,WAAW,CAC7C,CACE,QAAiB,CAAA,CACnB,CAEA,SAASmD,GAASnD,EAASoD,EAAK,CAC9B,MAAMC,EAAUrD,EAAQ,MAAMoD,CAAG,EACjC,OAAOC,EAAUA,EAAQ,CAAC,EAAI,IAChC,CAIA,MAAMC,WAAmBJ,EAAU,CACjC,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,OACX,CACE,WAAW,YAAa,CACtB,MAAO,WACX,CACE,WAAW,aAAc,CACvB,MAAO,SACX,CACE,OAAOgB,EAAM,CACX,MAAMiC,EAAUjC,IAAS,KAAK,QAE9B,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAAC,EAAG,KAAK,QAAQ,OAAS,CAAC,CAC1C,CACA,CACA,CAIA,MAAMM,WAA0BL,EAAU,CACxC,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,eACX,CACE,WAAW,YAAa,CACtB,MAAO,WACX,CACE,WAAW,aAAc,CACvB,MAAO,SACX,CACE,OAAOgB,EAAM,CAEX,MAAMiC,EADQjC,EAAK,QAAQ,KAAK,OAAO,IACb,GAE1B,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAAC,EAAGjC,EAAK,OAAS,CAAC,CAClC,CACA,CACA,CAIA,MAAMwC,WAAyBN,EAAU,CACvC,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,cACX,CACE,WAAW,YAAa,CACtB,MAAO,YACX,CACE,WAAW,aAAc,CACvB,MAAO,UACX,CACE,OAAOgB,EAAM,CACX,MAAMiC,EAAUjC,EAAK,WAAW,KAAK,OAAO,EAE5C,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAAC,EAAG,KAAK,QAAQ,OAAS,CAAC,CAC1C,CACA,CACA,CAIA,MAAMQ,WAAgCP,EAAU,CAC9C,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,sBACX,CACE,WAAW,YAAa,CACtB,MAAO,aACX,CACE,WAAW,aAAc,CACvB,MAAO,WACX,CACE,OAAOgB,EAAM,CACX,MAAMiC,EAAU,CAACjC,EAAK,WAAW,KAAK,OAAO,EAE7C,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAAC,EAAGjC,EAAK,OAAS,CAAC,CAClC,CACA,CACA,CAIA,MAAM0C,WAAyBR,EAAU,CACvC,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,cACX,CACE,WAAW,YAAa,CACtB,MAAO,YACX,CACE,WAAW,aAAc,CACvB,MAAO,UACX,CACE,OAAOgB,EAAM,CACX,MAAMiC,EAAUjC,EAAK,SAAS,KAAK,OAAO,EAE1C,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAACjC,EAAK,OAAS,KAAK,QAAQ,OAAQA,EAAK,OAAS,CAAC,CAClE,CACA,CACA,CAIA,MAAM2C,WAAgCT,EAAU,CAC9C,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,sBACX,CACE,WAAW,YAAa,CACtB,MAAO,aACX,CACE,WAAW,aAAc,CACvB,MAAO,WACX,CACE,OAAOgB,EAAM,CACX,MAAMiC,EAAU,CAACjC,EAAK,SAAS,KAAK,OAAO,EAC3C,MAAO,CACL,QAAAiC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAS,CAAC,EAAGjC,EAAK,OAAS,CAAC,CAClC,CACA,CACA,CAEA,MAAM4C,WAAmBV,EAAU,CACjC,YACElD,EACA,CACE,SAAAkB,EAAW1C,EAAO,SAClB,UAAA2C,EAAY3C,EAAO,UACnB,SAAA5L,EAAW4L,EAAO,SAClB,eAAA6C,EAAiB7C,EAAO,eACxB,eAAA4C,EAAiB5C,EAAO,eACxB,mBAAAiC,EAAqBjC,EAAO,mBAC5B,gBAAAiE,EAAkBjE,EAAO,gBACzB,eAAA4B,EAAiB5B,EAAO,cAC9B,EAAQ,CAAA,EACJ,CACA,MAAMwB,CAAO,EACb,KAAK,aAAe,IAAIwC,GAAYxC,EAAS,CAC3C,SAAAkB,EACA,UAAAC,EACA,SAAAvO,EACA,eAAAyO,EACA,eAAAD,EACA,mBAAAX,EACA,gBAAAgC,EACA,eAAArC,CACN,CAAK,CACL,CACE,WAAW,MAAO,CAChB,MAAO,OACX,CACE,WAAW,YAAa,CACtB,MAAO,UACX,CACE,WAAW,aAAc,CACvB,MAAO,QACX,CACE,OAAOY,EAAM,CACX,OAAO,KAAK,aAAa,SAASA,CAAI,CAC1C,CACA,CAIA,MAAM6C,WAAqBX,EAAU,CACnC,YAAYlD,EAAS,CACnB,MAAMA,CAAO,CACjB,CACE,WAAW,MAAO,CAChB,MAAO,SACX,CACE,WAAW,YAAa,CACtB,MAAO,WACX,CACE,WAAW,aAAc,CACvB,MAAO,SACX,CACE,OAAOgB,EAAM,CACX,IAAIE,EAAW,EACX3Q,EAEJ,MAAMmQ,EAAU,CAAE,EACZY,EAAa,KAAK,QAAQ,OAGhC,MAAQ/Q,EAAQyQ,EAAK,QAAQ,KAAK,QAASE,CAAQ,GAAK,IACtDA,EAAW3Q,EAAQ+Q,EACnBZ,EAAQ,KAAK,CAACnQ,EAAO2Q,EAAW,CAAC,CAAC,EAGpC,MAAM+B,EAAU,CAAC,CAACvC,EAAQ,OAE1B,MAAO,CACL,QAAAuC,EACA,MAAOA,EAAU,EAAI,EACrB,QAAAvC,CACN,CACA,CACA,CAGA,MAAMoD,GAAY,CAChBR,GACAO,GACAL,GACAC,GACAE,GACAD,GACAH,GACAK,EACD,EAEKG,GAAeD,GAAU,OAGzBE,GAAW,qCACXC,GAAW,IAKjB,SAASC,GAAWlE,EAAStU,EAAU,GAAI,CACzC,OAAOsU,EAAQ,MAAMiE,EAAQ,EAAE,IAAKvd,GAAS,CAC3C,IAAIyd,EAAQzd,EACT,KAAI,EACJ,MAAMsd,EAAQ,EACd,OAAQtd,GAASA,GAAQ,CAAC,CAACA,EAAK,MAAM,EAErCtD,EAAU,CAAE,EAChB,QAASmB,EAAI,EAAGga,EAAM4F,EAAM,OAAQ5f,EAAIga,EAAKha,GAAK,EAAG,CACnD,MAAM6f,EAAYD,EAAM5f,CAAC,EAGzB,IAAI8f,EAAQ,GACRlF,EAAM,GACV,KAAO,CAACkF,GAAS,EAAElF,EAAM4E,IAAc,CACrC,MAAMO,EAAWR,GAAU3E,CAAG,EAC9B,IAAIoF,EAAQD,EAAS,aAAaF,CAAS,EACvCG,IACFnhB,EAAQ,KAAK,IAAIkhB,EAASC,EAAO7Y,CAAO,CAAC,EACzC2Y,EAAQ,GAElB,CAEM,GAAI,CAAAA,EAMJ,IADAlF,EAAM,GACC,EAAEA,EAAM4E,IAAc,CAC3B,MAAMO,EAAWR,GAAU3E,CAAG,EAC9B,IAAIoF,EAAQD,EAAS,cAAcF,CAAS,EAC5C,GAAIG,EAAO,CACTnhB,EAAQ,KAAK,IAAIkhB,EAASC,EAAO7Y,CAAO,CAAC,EACzC,KACV,CACA,CACA,CAEI,OAAOtI,CACR,CAAA,CACH,CAIA,MAAMohB,GAAgB,IAAI,IAAI,CAACZ,GAAW,KAAMC,GAAa,IAAI,CAAC,EA8BlE,MAAMY,EAAe,CACnB,YACEzE,EACA,CACE,gBAAAyC,EAAkBjE,EAAO,gBACzB,eAAA6C,EAAiB7C,EAAO,eACxB,mBAAAiC,EAAqBjC,EAAO,mBAC5B,eAAA4B,EAAiB5B,EAAO,eACxB,eAAA4C,EAAiB5C,EAAO,eACxB,SAAA0C,EAAW1C,EAAO,SAClB,UAAA2C,EAAY3C,EAAO,UACnB,SAAA5L,EAAW4L,EAAO,QACxB,EAAQ,CAAA,EACJ,CACA,KAAK,MAAQ,KACb,KAAK,QAAU,CACb,gBAAAiE,EACA,eAAApB,EACA,mBAAAZ,EACA,eAAAW,EACA,eAAAhB,EACA,SAAAc,EACA,UAAAC,EACA,SAAAvO,CACD,EAED,KAAK,QAAU6P,EAAkBzC,EAAUA,EAAQ,YAAa,EAChE,KAAK,MAAQkE,GAAW,KAAK,QAAS,KAAK,OAAO,CACtD,CAEE,OAAO,UAAUpe,EAAG4F,EAAS,CAC3B,OAAOA,EAAQ,iBACnB,CAEE,SAASsV,EAAM,CACb,MAAMmD,EAAQ,KAAK,MAEnB,GAAI,CAACA,EACH,MAAO,CACL,QAAS,GACT,MAAO,CACf,EAGI,KAAM,CAAE,eAAA9C,EAAgB,gBAAAoB,CAAiB,EAAG,KAAK,QAEjDzB,EAAOyB,EAAkBzB,EAAOA,EAAK,YAAa,EAElD,IAAI0D,EAAa,EACb7B,EAAa,CAAE,EACfC,EAAa,EAGjB,QAASve,EAAI,EAAGogB,EAAOR,EAAM,OAAQ5f,EAAIogB,EAAMpgB,GAAK,EAAG,CACrD,MAAMuf,EAAYK,EAAM5f,CAAC,EAGzBse,EAAW,OAAS,EACpB6B,EAAa,EAGb,QAAStC,EAAI,EAAGwC,GAAOd,EAAU,OAAQ1B,EAAIwC,GAAMxC,GAAK,EAAG,CACzD,MAAMkC,GAAWR,EAAU1B,CAAC,EACtB,CAAE,QAAAa,GAAS,QAAAvC,GAAS,MAAApJ,EAAO,EAAGgN,GAAS,OAAOtD,CAAI,EAExD,GAAIiC,IAGF,GAFAyB,GAAc,EACd5B,GAAcxL,GACV+J,EAAgB,CAClB,MAAMtQ,GAAOuT,GAAS,YAAY,KAC9BE,GAAc,IAAIzT,EAAI,EACxB8R,EAAa,CAAC,GAAGA,EAAY,GAAGnC,EAAO,EAEvCmC,EAAW,KAAKnC,EAAO,CAErC,MACe,CACLoC,EAAa,EACb4B,EAAa,EACb7B,EAAW,OAAS,EACpB,KACV,CACA,CAGM,GAAI6B,EAAY,CACd,IAAIjI,EAAS,CACX,QAAS,GACT,MAAOqG,EAAa4B,CACrB,EAED,OAAIrD,IACF5E,EAAO,QAAUoG,GAGZpG,CACf,CACA,CAGI,MAAO,CACL,QAAS,GACT,MAAO,CACb,CACA,CACA,CAEA,MAAMoI,GAAsB,CAAE,EAE9B,SAASC,MAAY7U,EAAM,CACzB4U,GAAoB,KAAK,GAAG5U,CAAI,CAClC,CAEA,SAAS8U,GAAe/E,EAAStU,EAAS,CACxC,QAASnH,EAAI,EAAGga,EAAMsG,GAAoB,OAAQtgB,EAAIga,EAAKha,GAAK,EAAG,CACjE,IAAIygB,EAAgBH,GAAoBtgB,CAAC,EACzC,GAAIygB,EAAc,UAAUhF,EAAStU,CAAO,EAC1C,OAAO,IAAIsZ,EAAchF,EAAStU,CAAO,CAE/C,CAEE,OAAO,IAAI8W,GAAYxC,EAAStU,CAAO,CACzC,CAEA,MAAMuZ,GAAkB,CACtB,IAAK,OACL,GAAI,KACL,EAEKC,GAAU,CACd,KAAM,QACN,QAAS,MACV,EAEKC,GAAgBhB,GACpB,CAAC,EAAEA,EAAMc,GAAgB,GAAG,GAAKd,EAAMc,GAAgB,EAAE,GAErDG,GAAUjB,GAAU,CAAC,CAACA,EAAMe,GAAQ,IAAI,EAExCG,GAAUlB,GACd,CAAC7H,EAAQ6H,CAAK,GAAKpH,EAASoH,CAAK,GAAK,CAACgB,GAAahB,CAAK,EAErDmB,GAAqBnB,IAAW,CACpC,CAACc,GAAgB,GAAG,EAAG,OAAO,KAAKd,CAAK,EAAE,IAAKxN,IAAS,CACtD,CAACA,CAAG,EAAGwN,EAAMxN,CAAG,CACpB,EAAI,CACJ,GAIA,SAAS4O,GAAMpB,EAAOzY,EAAS,CAAE,KAAA8Z,EAAO,EAAM,EAAG,GAAI,CACnD,MAAMrJ,EAAQgI,GAAU,CACtB,IAAIzG,EAAO,OAAO,KAAKyG,CAAK,EAE5B,MAAMsB,EAAcL,GAAOjB,CAAK,EAEhC,GAAI,CAACsB,GAAe/H,EAAK,OAAS,GAAK,CAACyH,GAAahB,CAAK,EACxD,OAAOhI,EAAKmJ,GAAkBnB,CAAK,CAAC,EAGtC,GAAIkB,GAAOlB,CAAK,EAAG,CACjB,MAAMxN,EAAM8O,EAActB,EAAMe,GAAQ,IAAI,EAAIxH,EAAK,CAAC,EAEhDsC,EAAUyF,EAActB,EAAMe,GAAQ,OAAO,EAAIf,EAAMxN,CAAG,EAEhE,GAAI,CAACgG,EAASqD,CAAO,EACnB,MAAM,IAAI,MAAM7C,GAAqCxG,CAAG,CAAC,EAG3D,MAAM1B,EAAM,CACV,MAAOkJ,EAAYxH,CAAG,EACtB,QAAAqJ,CACD,EAED,OAAIwF,IACFvQ,EAAI,SAAW8P,GAAe/E,EAAStU,CAAO,GAGzCuJ,CACb,CAEI,IAAI/C,EAAO,CACT,SAAU,CAAE,EACZ,SAAUwL,EAAK,CAAC,CACjB,EAED,OAAAA,EAAK,QAAS/G,GAAQ,CACpB,MAAMjU,EAAQyhB,EAAMxN,CAAG,EAEnB2F,EAAQ5Z,CAAK,GACfA,EAAM,QAASgE,GAAS,CACtBwL,EAAK,SAAS,KAAKiK,EAAKzV,CAAI,CAAC,CACvC,CAAS,CAET,CAAK,EAEMwL,CACR,EAED,OAAKiT,GAAahB,CAAK,IACrBA,EAAQmB,GAAkBnB,CAAK,GAG1BhI,EAAKgI,CAAK,CACnB,CAGA,SAASuB,GACPtiB,EACA,CAAE,gBAAAuiB,EAAkBnH,EAAO,eAAe,EAC1C,CACApb,EAAQ,QAASqZ,GAAW,CAC1B,IAAIqG,EAAa,EAEjBrG,EAAO,QAAQ,QAAQ,CAAC,CAAE,IAAA9F,EAAK,KAAA+H,EAAM,MAAApH,KAAY,CAC/C,MAAM0G,EAASrH,EAAMA,EAAI,OAAS,KAElCmM,GAAc,KAAK,IACjBxL,IAAU,GAAK0G,EAAS,OAAO,QAAU1G,GACxC0G,GAAU,IAAM2H,EAAkB,EAAIjH,EACxC,CACP,CAAK,EAEDjC,EAAO,MAAQqG,CACnB,CAAG,CACH,CAEA,SAAS8C,GAAiBnJ,EAAQtW,EAAM,CACtC,MAAMkd,EAAU5G,EAAO,QACvBtW,EAAK,QAAU,CAAE,EAEZ6W,EAAUqG,CAAO,GAItBA,EAAQ,QAASxC,GAAU,CACzB,GAAI,CAAC7D,EAAU6D,EAAM,OAAO,GAAK,CAACA,EAAM,QAAQ,OAC9C,OAGF,KAAM,CAAE,QAAAH,EAAS,MAAAhe,CAAK,EAAKme,EAE3B,IAAI5L,EAAM,CACR,QAAAyL,EACA,MAAAhe,CACD,EAEGme,EAAM,MACR5L,EAAI,IAAM4L,EAAM,IAAI,KAGlBA,EAAM,IAAM,KACd5L,EAAI,SAAW4L,EAAM,KAGvB1a,EAAK,QAAQ,KAAK8O,CAAG,CACzB,CAAG,CACH,CAEA,SAAS4Q,GAAepJ,EAAQtW,EAAM,CACpCA,EAAK,MAAQsW,EAAO,KACtB,CAEA,SAASqJ,GACP1iB,EACA6b,EACA,CACE,eAAAoC,EAAiB7C,EAAO,eACxB,aAAAuH,EAAevH,EAAO,YAC1B,EAAM,CAAA,EACJ,CACA,MAAMwH,EAAe,CAAE,EAEvB,OAAI3E,GAAgB2E,EAAa,KAAKJ,EAAgB,EAClDG,GAAcC,EAAa,KAAKH,EAAc,EAE3CziB,EAAQ,IAAKqZ,GAAW,CAC7B,KAAM,CAAE,IAAA0C,CAAG,EAAK1C,EAEVtW,EAAO,CACX,KAAM8Y,EAAKE,CAAG,EACd,SAAUA,CACX,EAED,OAAI6G,EAAa,QACfA,EAAa,QAASC,GAAgB,CACpCA,EAAYxJ,EAAQtW,CAAI,CAChC,CAAO,EAGIA,CACR,CAAA,CACH,CAEA,MAAMkW,EAAK,CACT,YAAY4C,EAAMvT,EAAU,CAAA,EAAI6E,EAAO,CACrC,KAAK,QAAU,CAAE,GAAGiO,EAAQ,GAAG9S,CAAS,EAGtC,KAAK,QAAQ,kBAIf,KAAK,UAAY,IAAI+R,EAAS,KAAK,QAAQ,IAAI,EAE/C,KAAK,cAAcwB,EAAM1O,CAAK,CAClC,CAEE,cAAc0O,EAAM1O,EAAO,CAGzB,GAFA,KAAK,MAAQ0O,EAET1O,GAAS,EAAEA,aAAiBwO,GAC9B,MAAM,IAAI,MAAM7B,CAAoB,EAGtC,KAAK,SACH3M,GACAqP,GAAY,KAAK,QAAQ,KAAM,KAAK,MAAO,CACzC,MAAO,KAAK,QAAQ,MACpB,gBAAiB,KAAK,QAAQ,eACtC,CAAO,CACP,CAEE,IAAIR,EAAK,CACFpC,EAAUoC,CAAG,IAIlB,KAAK,MAAM,KAAKA,CAAG,EACnB,KAAK,SAAS,IAAIA,CAAG,EACzB,CAEE,OAAO8G,EAAY,IAAoB,GAAO,CAC5C,MAAM9iB,EAAU,CAAE,EAElB,QAASmB,EAAI,EAAGga,EAAM,KAAK,MAAM,OAAQha,EAAIga,EAAKha,GAAK,EAAG,CACxD,MAAM6a,EAAM,KAAK,MAAM7a,CAAC,EACpB2hB,EAAU9G,EAAK7a,CAAC,IAClB,KAAK,SAASA,CAAC,EACfA,GAAK,EACLga,GAAO,EAEPnb,EAAQ,KAAKgc,CAAG,EAExB,CAEI,OAAOhc,CACX,CAEE,SAAS+b,EAAK,CACZ,KAAK,MAAM,OAAOA,EAAK,CAAC,EACxB,KAAK,SAAS,SAASA,CAAG,CAC9B,CAEE,UAAW,CACT,OAAO,KAAK,QAChB,CAEE,OAAOgF,EAAO,CAAE,MAAAgC,EAAQ,EAAE,EAAK,CAAA,EAAI,CACjC,KAAM,CACJ,eAAA9E,EACA,aAAA0E,EACA,WAAAK,EACA,OAAAC,EACA,gBAAAV,CACD,EAAG,KAAK,QAET,IAAIviB,EAAUuZ,EAASwH,CAAK,EACxBxH,EAAS,KAAK,MAAM,CAAC,CAAC,EACpB,KAAK,kBAAkBwH,CAAK,EAC5B,KAAK,kBAAkBA,CAAK,EAC9B,KAAK,eAAeA,CAAK,EAE7B,OAAAuB,GAAatiB,EAAS,CAAE,gBAAAuiB,EAAiB,EAErCS,GACFhjB,EAAQ,KAAKijB,CAAM,EAGjBzJ,EAASuJ,CAAK,GAAKA,EAAQ,KAC7B/iB,EAAUA,EAAQ,MAAM,EAAG+iB,CAAK,GAG3BL,GAAO1iB,EAAS,KAAK,MAAO,CACjC,eAAAie,EACA,aAAA0E,CACD,CAAA,CACL,CAEE,kBAAkB5B,EAAO,CACvB,MAAMG,EAAWS,GAAeZ,EAAO,KAAK,OAAO,EAC7C,CAAE,QAAAjF,GAAY,KAAK,SACnB9b,EAAU,CAAE,EAGlB,OAAA8b,EAAQ,QAAQ,CAAC,CAAE,EAAG8B,EAAM,EAAG7B,EAAK,EAAGT,KAAW,CAChD,GAAI,CAAC1B,EAAUgE,CAAI,EACjB,OAGF,KAAM,CAAE,QAAAiC,EAAS,MAAA3L,EAAO,QAAAoJ,CAAS,EAAG4D,EAAS,SAAStD,CAAI,EAEtDiC,GACF7f,EAAQ,KAAK,CACX,KAAM4d,EACN,IAAA7B,EACA,QAAS,CAAC,CAAE,MAAA7H,EAAO,MAAO0J,EAAM,KAAAtC,EAAM,QAAAgC,CAAS,CAAA,CACzD,CAAS,CAET,CAAK,EAEMtd,CACX,CAEE,eAAe+gB,EAAO,CAEpB,MAAMmC,EAAaf,GAAMpB,EAAO,KAAK,OAAO,EAEtCoC,EAAW,CAACrU,EAAMxL,EAAMyY,IAAQ,CACpC,GAAI,CAACjN,EAAK,SAAU,CAClB,KAAM,CAAE,MAAA2L,EAAO,SAAAyG,EAAQ,EAAKpS,EAEtBmR,GAAU,KAAK,aAAa,CAChC,IAAK,KAAK,UAAU,IAAIxF,CAAK,EAC7B,MAAO,KAAK,SAAS,uBAAuBnX,EAAMmX,CAAK,EACvD,SAAAyG,EACV,CAAS,EAED,OAAIjB,IAAWA,GAAQ,OACd,CACL,CACE,IAAAlE,EACA,KAAAzY,EACA,QAAA2c,EACd,CACA,EAGe,CAAA,CACf,CAEM,MAAMmD,EAAM,CAAE,EACd,QAASjiB,EAAI,EAAGga,GAAMrM,EAAK,SAAS,OAAQ3N,EAAIga,GAAKha,GAAK,EAAG,CAC3D,MAAMkiB,GAAQvU,EAAK,SAAS3N,CAAC,EACvBkY,GAAS8J,EAASE,GAAO/f,EAAMyY,CAAG,EACxC,GAAI1C,GAAO,OACT+J,EAAI,KAAK,GAAG/J,EAAM,UACTvK,EAAK,WAAa+S,GAAgB,IAC3C,MAAO,CAAA,CAEjB,CACM,OAAOuB,CACR,EAEKtH,EAAU,KAAK,SAAS,QACxBwH,EAAY,CAAE,EACdtjB,EAAU,CAAE,EAElB,OAAA8b,EAAQ,QAAQ,CAAC,CAAE,EAAGxY,EAAM,EAAGyY,KAAU,CACvC,GAAInC,EAAUtW,CAAI,EAAG,CACnB,IAAIigB,EAAaJ,EAASD,EAAY5f,EAAMyY,CAAG,EAE3CwH,EAAW,SAERD,EAAUvH,CAAG,IAChBuH,EAAUvH,CAAG,EAAI,CAAE,IAAAA,EAAK,KAAAzY,EAAM,QAAS,EAAI,EAC3CtD,EAAQ,KAAKsjB,EAAUvH,CAAG,CAAC,GAE7BwH,EAAW,QAAQ,CAAC,CAAE,QAAAtD,KAAc,CAClCqD,EAAUvH,CAAG,EAAE,QAAQ,KAAK,GAAGkE,CAAO,CAClD,CAAW,EAEX,CACA,CAAK,EAEMjgB,CACX,CAEE,kBAAkB+gB,EAAO,CACvB,MAAMG,EAAWS,GAAeZ,EAAO,KAAK,OAAO,EAC7C,CAAE,KAAAzG,EAAM,QAAAwB,CAAS,EAAG,KAAK,SACzB9b,EAAU,CAAE,EAGlB,OAAA8b,EAAQ,QAAQ,CAAC,CAAE,EAAGxY,EAAM,EAAGyY,KAAU,CACvC,GAAI,CAACnC,EAAUtW,CAAI,EACjB,OAGF,IAAI2c,EAAU,CAAE,EAGhB3F,EAAK,QAAQ,CAAC/G,EAAK4I,IAAa,CAC9B8D,EAAQ,KACN,GAAG,KAAK,aAAa,CACnB,IAAA1M,EACA,MAAOjQ,EAAK6Y,CAAQ,EACpB,SAAA+E,CACD,CAAA,CACF,CACT,CAAO,EAEGjB,EAAQ,QACVjgB,EAAQ,KAAK,CACX,IAAA+b,EACA,KAAAzY,EACA,QAAA2c,CACV,CAAS,CAET,CAAK,EAEMjgB,CACX,CACE,aAAa,CAAE,IAAAuT,EAAK,MAAAjU,EAAO,SAAA4hB,CAAQ,EAAI,CACrC,GAAI,CAACtH,EAAUta,CAAK,EAClB,MAAO,CAAA,EAGT,IAAI2gB,EAAU,CAAE,EAEhB,GAAI/G,EAAQ5Z,CAAK,EACfA,EAAM,QAAQ,CAAC,CAAE,EAAGse,EAAM,EAAG7B,EAAK,EAAGT,KAAW,CAC9C,GAAI,CAAC1B,EAAUgE,CAAI,EACjB,OAGF,KAAM,CAAE,QAAAiC,EAAS,MAAA3L,EAAO,QAAAoJ,CAAS,EAAG4D,EAAS,SAAStD,CAAI,EAEtDiC,GACFI,EAAQ,KAAK,CACX,MAAA/L,EACA,IAAAX,EACA,MAAOqK,EACP,IAAA7B,EACA,KAAAT,EACA,QAAAgC,CACZ,CAAW,CAEX,CAAO,MACI,CACL,KAAM,CAAE,EAAGM,EAAM,EAAGtC,CAAM,EAAGhc,EAEvB,CAAE,QAAAugB,EAAS,MAAA3L,EAAO,QAAAoJ,CAAS,EAAG4D,EAAS,SAAStD,CAAI,EAEtDiC,GACFI,EAAQ,KAAK,CAAE,MAAA/L,EAAO,IAAAX,EAAK,MAAOqK,EAAM,KAAAtC,EAAM,QAAAgC,EAAS,CAE/D,CAEI,OAAO2C,CACX,CACA,CAEAhH,GAAK,QAAU,QACfA,GAAK,YAAcuD,GACnBvD,GAAK,WAAayD,GAClBzD,GAAK,OAASmC,EAGZnC,GAAK,WAAakJ,GAIlBT,GAASL,EAAc,CAMzB,EAEM,IACC,SAASriB,EAAyBga,EAAqB9Z,EAAqB,CAGnFA,EAAoB,EAAE8Z,CAAmB,EAGzC9Z,EAAoB,EAAE8Z,EAAqB,CACzC,0BAA6B,UAAW,CAAE,OAAqBwK,CAAc,EAC7E,gBAAmB,UAAW,CAAE,OAAqBC,CAAkB,EACvE,mBAAsB,UAAW,CAAE,OAAqBC,CAAqB,EAC7E,gBAAmB,UAAW,CAAE,OAAqBC,CAAkB,EACvE,QAAW,UAAW,CAAE,OAAqBC,CAAU,EACvD,YAAe,UAAW,CAAE,OAAqBC,CAAc,EAC/D,mBAAsB,UAAW,CAAE,OAAqBC,EAAmB,CAC7E,CAAC,EAGD,SAASC,EAAQlS,EAAK,CACpB,0BAEA,OAAOkS,EAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUlS,EAAK,CAClG,OAAO,OAAOA,CACf,EAAG,SAAUA,EAAK,CACjB,OAAOA,GAAqB,OAAO,QAArB,YAA+BA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC5H,EAAKkS,EAAQlS,CAAG,CAChB,CAGA,SAASmS,EAAapN,EAAOqN,EAAM,CACjC,GAAIF,EAAQnN,CAAK,IAAM,UAAYA,IAAU,KAAM,OAAOA,EAC1D,IAAIsN,EAAOtN,EAAM,OAAO,WAAW,EACnC,GAAIsN,IAAS,OAAW,CACtB,IAAId,EAAMc,EAAK,KAAKtN,EAAOqN,CAAiB,EAC5C,GAAIF,EAAQX,CAAG,IAAM,SAAU,OAAOA,EACtC,MAAM,IAAI,UAAU,8CAA8C,CACtE,CACE,OAAQa,IAAS,SAAW,OAAS,QAAQrN,CAAK,CACpD,CAIA,SAASuN,EAAeC,EAAK,CAC3B,IAAI7Q,EAAMyQ,EAAaI,EAAK,QAAQ,EACpC,OAAOL,EAAQxQ,CAAG,IAAM,SAAWA,EAAM,OAAOA,CAAG,CACrD,CAGA,SAAS8Q,EAAgBxS,EAAK0B,EAAKjU,EAAO,CACxC,OAAAiU,EAAM4Q,EAAe5Q,CAAG,EACpBA,KAAO1B,EACT,OAAO,eAAeA,EAAK0B,EAAK,CAC9B,MAAOjU,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EAChB,CAAK,EAEDuS,EAAI0B,CAAG,EAAIjU,EAENuS,CACT,CAGA,SAASyS,EAAQ/L,EAAQgM,EAAgB,CACvC,IAAIjK,EAAO,OAAO,KAAK/B,CAAM,EAC7B,GAAI,OAAO,sBAAuB,CAChC,IAAIiM,EAAU,OAAO,sBAAsBjM,CAAM,EACjDgM,IAAmBC,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACzD,OAAO,OAAO,yBAAyBlM,EAAQkM,CAAG,EAAE,UAC1D,CAAK,GAAInK,EAAK,KAAK,MAAMA,EAAMkK,CAAO,CACtC,CACE,OAAOlK,CACT,CACA,SAASoK,EAAenb,EAAQ,CAC9B,QAASpI,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAI6W,EAAiB,UAAU7W,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAE,EACrDA,EAAI,EAAImjB,EAAQ,OAAOtM,CAAM,EAAG,EAAE,EAAE,QAAQ,SAAUzE,EAAK,CACzD8Q,EAAgB9a,EAAQgK,EAAKyE,EAAOzE,CAAG,CAAC,CAC9C,CAAK,EAAI,OAAO,0BAA4B,OAAO,iBAAiBhK,EAAQ,OAAO,0BAA0ByO,CAAM,CAAC,EAAIsM,EAAQ,OAAOtM,CAAM,CAAC,EAAE,QAAQ,SAAUzE,EAAK,CACjK,OAAO,eAAehK,EAAQgK,EAAK,OAAO,yBAAyByE,EAAQzE,CAAG,CAAC,CACrF,CAAK,CACL,CACE,OAAOhK,CACT,CAWA,SAASob,EAAuBC,EAAM,CACpC,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAO,iFAChG,CAGA,IAAIC,EAAgB,UAAY,CAC9B,OAAO,OAAO,QAAW,YAAc,OAAO,YAAc,cAC9D,EAAI,EAQAC,EAAe,UAAwB,CACzC,OAAO,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,CAClE,EAEGtB,EAAc,CAChB,KAAM,eAAiBsB,EAAc,EACrC,QAAS,kBAAoBA,EAAc,EAC3C,qBAAsB,UAAgC,CACpD,MAAO,+BAAiCA,EAAc,CAC1D,CACC,EAMD,SAASC,EAAclT,EAAK,CAC1B,GAAI,OAAOA,GAAQ,UAAYA,IAAQ,KAAM,MAAO,GAGpD,QAFImT,EAAQnT,EAEL,OAAO,eAAemT,CAAK,IAAM,MACtCA,EAAQ,OAAO,eAAeA,CAAK,EAGrC,OAAO,OAAO,eAAenT,CAAG,IAAMmT,CACxC,CAqFA,SAASnB,EAAYoB,EAASC,EAAgBC,EAAU,CACtD,IAAIC,EAEJ,GAAI,OAAOF,GAAmB,YAAc,OAAOC,GAAa,YAAc,OAAOA,GAAa,YAAc,OAAO,UAAU,CAAC,GAAM,WACtI,MAAM,IAAI,MAAcR,EAAuB,CAAC,CAAK,EAQvD,GALI,OAAOO,GAAmB,YAAc,OAAOC,EAAa,MAC9DA,EAAWD,EACXA,EAAiB,QAGf,OAAOC,EAAa,IAAa,CACnC,GAAI,OAAOA,GAAa,WACtB,MAAM,IAAI,MAAcR,EAAuB,CAAC,CAAK,EAGvD,OAAOQ,EAAStB,CAAW,EAAEoB,EAASC,CAAc,CACxD,CAEE,GAAI,OAAOD,GAAY,WACrB,MAAM,IAAI,MAAcN,EAAuB,CAAC,CAAK,EAGvD,IAAIU,EAAiBJ,EACjBK,EAAeJ,EACfK,EAAmB,CAAE,EACrBC,EAAgBD,EAChBE,EAAgB,GASpB,SAASC,GAA+B,CAClCF,IAAkBD,IACpBC,EAAgBD,EAAiB,MAAO,EAE9C,CAQE,SAASI,GAAW,CAClB,GAAIF,EACF,MAAM,IAAI,MAAcd,EAAuB,CAAC,CAAK,EAGvD,OAAOW,CACX,CA0BE,SAASM,GAAUC,GAAU,CAC3B,GAAI,OAAOA,IAAa,WACtB,MAAM,IAAI,MAAclB,EAAuB,CAAC,CAAK,EAGvD,GAAIc,EACF,MAAM,IAAI,MAAcd,EAAuB,CAAC,CAAK,EAGvD,IAAImB,GAAe,GACnB,OAAAJ,EAA8B,EAC9BF,EAAc,KAAKK,EAAQ,EACpB,UAAuB,CAC5B,GAAKC,GAIL,IAAIL,EACF,MAAM,IAAI,MAAcd,EAAuB,CAAC,CAAK,EAGvDmB,GAAe,GACfJ,EAA8B,EAC9B,IAAIvY,GAAQqY,EAAc,QAAQK,EAAQ,EAC1CL,EAAc,OAAOrY,GAAO,CAAC,EAC7BoY,EAAmB,KACpB,CACL,CA4BE,SAASQ,GAASlS,GAAQ,CACxB,GAAI,CAACkR,EAAclR,EAAM,EACvB,MAAM,IAAI,MAAc8Q,EAAuB,CAAC,CAAK,EAGvD,GAAI,OAAO9Q,GAAO,KAAS,IACzB,MAAM,IAAI,MAAc8Q,EAAuB,CAAC,CAAK,EAGvD,GAAIc,EACF,MAAM,IAAI,MAAcd,EAAuB,CAAC,CAAK,EAGvD,GAAI,CACFc,EAAgB,GAChBH,EAAeD,EAAeC,EAAczR,EAAM,CACxD,QAAc,CACR4R,EAAgB,EACtB,CAII,QAFIO,GAAYT,EAAmBC,EAE1BrkB,GAAI,EAAGA,GAAI6kB,GAAU,OAAQ7kB,KAAK,CACzC,IAAI0kB,GAAWG,GAAU7kB,EAAC,EAC1B0kB,GAAU,CAChB,CAEI,OAAOhS,EACX,CAaE,SAASoS,GAAeC,GAAa,CACnC,GAAI,OAAOA,IAAgB,WACzB,MAAM,IAAI,MAAcvB,EAAuB,EAAE,CAAK,EAGxDU,EAAiBa,GAKjBH,GAAS,CACP,KAAMvC,EAAY,OACxB,CAAK,CACL,CASE,SAAS2C,IAAa,CACpB,IAAIC,GAEAC,GAAiBT,GACrB,OAAOQ,GAAO,CASZ,UAAW,SAAmBE,GAAU,CACtC,GAAI,OAAOA,IAAa,UAAYA,KAAa,KAC/C,MAAM,IAAI,MAAc3B,EAAuB,EAAE,CAAK,EAGxD,SAAS4B,IAAe,CAClBD,GAAS,MACXA,GAAS,KAAKX,GAAU,CAEpC,CAEQY,GAAc,EACd,IAAIC,GAAcH,GAAeE,EAAY,EAC7C,MAAO,CACL,YAAaC,EACd,CACT,CACA,EAAOJ,GAAKvB,CAAY,EAAI,UAAY,CAClC,OAAO,IACb,EAAOuB,EACJ,CAKD,OAAAL,GAAS,CACP,KAAMvC,EAAY,IACtB,CAAG,EACM4B,EAAQ,CACb,SAAUW,GACV,UAAWH,GACX,SAAUD,EACV,eAAgBM,EACjB,EAAEb,EAAMP,CAAY,EAAIsB,GAAYf,CACvC,CAgCA,IAAItB,GAAqBD,EAkDzB,SAAS4C,GAAmBC,EAAU,CACpC,OAAO,KAAKA,CAAQ,EAAE,QAAQ,SAAUnT,EAAK,CAC3C,IAAI0R,EAAUyB,EAASnT,CAAG,EACtBoT,EAAe1B,EAAQ,OAAW,CACpC,KAAMzB,EAAY,IACxB,CAAK,EAED,GAAI,OAAOmD,EAAiB,IAC1B,MAAM,IAAI,MAAchC,EAAuB,EAAE,CAAK,EAGxD,GAAI,OAAOM,EAAQ,OAAW,CAC5B,KAAMzB,EAAY,qBAAoB,CACvC,CAAA,EAAM,IACL,MAAM,IAAI,MAAcmB,EAAuB,EAAE,CAAK,CAE5D,CAAG,CACH,CAmBA,SAAShB,EAAgB+C,EAAU,CAIjC,QAHIE,EAAc,OAAO,KAAKF,CAAQ,EAClCG,EAAgB,CAAE,EAEb1lB,EAAI,EAAGA,EAAIylB,EAAY,OAAQzlB,IAAK,CAC3C,IAAIoS,EAAMqT,EAAYzlB,CAAC,EAInB,OAAOulB,EAASnT,CAAG,GAAM,aAC3BsT,EAActT,CAAG,EAAImT,EAASnT,CAAG,EAEvC,CAEE,IAAIuT,EAAmB,OAAO,KAAKD,CAAa,EAO5CE,EAEJ,GAAI,CACFN,GAAmBI,CAAa,CACjC,OAAQG,EAAG,CACVD,EAAsBC,CAC1B,CAEE,OAAO,SAAqBpmB,EAAOiT,EAAQ,CAKzC,GAJIjT,IAAU,SACZA,EAAQ,CAAE,GAGRmmB,EACF,MAAMA,EAQR,QAHIE,EAAa,GACbC,GAAY,CAAE,EAETpa,GAAK,EAAGA,GAAKga,EAAiB,OAAQha,KAAM,CACnD,IAAIqa,GAAOL,EAAiBha,EAAE,EAC1BmY,GAAU4B,EAAcM,EAAI,EAC5BC,GAAsBxmB,EAAMumB,EAAI,EAChCE,GAAkBpC,GAAQmC,GAAqBvT,CAAM,EAEzD,GAAI,OAAOwT,GAAoB,IACZ,MAAAxT,GAAUA,EAAO,KAC5B,IAAI,MAAc8Q,EAAuB,EAAE,CAAK,EAGxDuC,GAAUC,EAAI,EAAIE,GAClBJ,EAAaA,GAAcI,KAAoBD,EACrD,CAEI,OAAAH,EAAaA,GAAcH,EAAiB,SAAW,OAAO,KAAKlmB,CAAK,EAAE,OACnEqmB,EAAaC,GAAYtmB,CACjC,CACH,CAEA,SAAS0mB,EAAkBC,EAAexB,EAAU,CAClD,OAAO,UAAY,CACjB,OAAOA,EAASwB,EAAc,MAAM,KAAM,SAAS,CAAC,CACrD,CACH,CAwBA,SAAS7D,EAAmB8D,EAAgBzB,EAAU,CACpD,GAAI,OAAOyB,GAAmB,WAC5B,OAAOF,EAAkBE,EAAgBzB,CAAQ,EAGnD,GAAI,OAAOyB,GAAmB,UAAYA,IAAmB,KAC3D,MAAM,IAAI,MAAc7C,EAAuB,EAAE,CAAK,EAGxD,IAAI8C,EAAsB,CAAE,EAE5B,QAASlU,KAAOiU,EAAgB,CAC9B,IAAID,EAAgBC,EAAejU,CAAG,EAElC,OAAOgU,GAAkB,aAC3BE,EAAoBlU,CAAG,EAAI+T,EAAkBC,EAAexB,CAAQ,EAE1E,CAEE,OAAO0B,CACT,CAYA,SAAS7D,GAAU,CACjB,QAAS8D,EAAO,UAAU,OAAQC,EAAQ,IAAI,MAAMD,CAAI,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IAChFQ,EAAMR,CAAI,EAAI,UAAUA,CAAI,EAG9B,OAAIQ,EAAM,SAAW,EACZ,SAAUvD,EAAK,CACpB,OAAOA,CACR,EAGCuD,EAAM,SAAW,EACZA,EAAM,CAAC,EAGTA,EAAM,OAAO,SAAU3U,EAAG/C,EAAG,CAClC,OAAO,UAAY,CACjB,OAAO+C,EAAE/C,EAAE,MAAM,OAAQ,SAAS,CAAC,CACpC,CACL,CAAG,CACH,CAmBA,SAASwT,GAAkB,CACzB,QAASiE,EAAO,UAAU,OAAQE,EAAc,IAAI,MAAMF,CAAI,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IACtFS,EAAYT,CAAI,EAAI,UAAUA,CAAI,EAGpC,OAAO,SAAUtD,EAAa,CAC5B,OAAO,UAAY,CACjB,IAAIgE,EAAQhE,EAAY,MAAM,OAAQ,SAAS,EAE3CiE,EAAY,UAAoB,CAClC,MAAM,IAAI,MAAcnD,EAAuB,EAAE,CAAK,CACvD,EAEGoD,EAAgB,CAClB,SAAUF,EAAM,SAChB,SAAU,UAAoB,CAC5B,OAAOC,EAAU,MAAM,OAAQ,SAAS,CAClD,CACO,EACGE,EAAQJ,EAAY,IAAI,SAAUK,EAAY,CAChD,OAAOA,EAAWF,CAAa,CACvC,CAAO,EACD,OAAAD,EAAYlE,EAAQ,MAAM,OAAQoE,CAAK,EAAEH,EAAM,QAAQ,EAChDnD,EAAeA,EAAe,CAAE,EAAEmD,CAAK,EAAG,CAAA,EAAI,CACnD,SAAUC,CAClB,CAAO,CACF,CACF,CACH,CAcO,CAEP,EAGcI,EAA2B,CAAE,EAGjC,SAAShpB,EAAoBipB,EAAU,CAEtC,IAAIC,EAAeF,EAAyBC,CAAQ,EACpD,GAAIC,IAAiB,OACpB,OAAOA,EAAa,QAGrB,IAAItpB,EAASopB,EAAyBC,CAAQ,EAAI,CAGjD,QAAS,CAAA,CACT,EAGD,OAAAppB,EAAoBopB,CAAQ,EAAE,KAAKrpB,EAAO,QAASA,EAAQA,EAAO,QAASI,CAAmB,EAGvFJ,EAAO,OACzB,EAIW,UAAW,CAEXI,EAAoB,EAAI,SAASJ,EAAQ,CACxC,IAAIupB,EAASvpB,GAAUA,EAAO,WAC7B,UAAW,CAAE,OAAOA,EAAO,OAAa,EACxC,UAAW,CAAE,OAAOA,CAAS,EAC9B,OAAAI,EAAoB,EAAEmpB,EAAQ,CAAE,EAAGA,CAAM,CAAE,EACpCA,CACP,CACZ,GAAa,EAGF,UAAW,CAEXnpB,EAAoB,EAAI,SAASD,EAASqpB,EAAY,CACrD,QAAQ/U,KAAO+U,EACXppB,EAAoB,EAAEopB,EAAY/U,CAAG,GAAK,CAACrU,EAAoB,EAAED,EAASsU,CAAG,GAC/E,OAAO,eAAetU,EAASsU,EAAK,CAAE,WAAY,GAAM,IAAK+U,EAAW/U,CAAG,EAAG,CAGhF,CACZ,EAAa,EAGF,UAAW,CACXrU,EAAoB,EAAI,SAAS2S,EAAKM,EAAM,CAAE,OAAO,OAAO,UAAU,eAAe,KAAKN,EAAKM,CAAI,CAAE,CAChH,EAAa,EAGF,UAAW,CAEXjT,EAAoB,EAAI,SAASD,EAAS,CACtC,OAAO,OAAW,KAAe,OAAO,aAC1C,OAAO,eAAeA,EAAS,OAAO,YAAa,CAAE,MAAO,SAAU,EAEvE,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,GAAM,CAC5D,CACZ,EAAa,EAGb,IAAI+Z,EAAsB,CAAE,EAE5B,OAAC,UAAW,CACS,IAAIuP,EAAgDrpB,EAAoB,GAAG,EACvEspB,EAAqEtpB,EAAoB,EAAEqpB,CAA6C,EACrFrpB,EAAoB,GAAG,EAExBA,EAAoB,GAAG,EACxBA,EAAoB,GAAG,EACtBA,EAAoB,GAAG,EAQrE8Z,EAAoB,QAAewP,GAEhE,EAAG,EACHxP,EAAsBA,EAAoB,QACzBA,CACP,EAAA,CAEV,CAAC,+CC5wND,SAASyP,GAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAK9E,SAAS4B,GAAkB5Q,EAAQ6Q,EAAIC,EAAa,CAClD,MAAMC,EAAW,CAAE,EACnB,OAAA/Q,EAAO,QAAQgR,GAKT,OAAOA,GAAU,SACZD,EAAS,KAAKC,CAAK,EAErBH,EAAG,OAAO,KAAK,EAAEG,CAAK,EAAE,QAAQ,CAACC,EAAK9nB,EAAG0U,IAAS,CACnDoT,IAAQ,IACVF,EAAS,KAAKE,CAAG,EAIf9nB,EAAI0U,EAAK,OAAS,GACpBkT,EAAS,KAAKD,CAAW,CAEjC,CAAK,CACF,EACMC,CACT,CAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUA,SAASG,GAAYC,EAAQ7gB,EAAS,CACpC,MAAM8gB,EAAc,MACdC,EAAkB,OACxB,IAAIC,EAAe,CAACH,CAAM,EAC1B,GAAI7gB,GAAW,KAAM,OAAOghB,EAC5B,UAAWlF,KAAO,OAAO,KAAK9b,CAAO,EACnC,GAAI8b,IAAQ,IAAK,CAIf,IAAI0E,EAAcxgB,EAAQ8b,CAAG,EACzB,OAAO0E,GAAgB,WACzBA,EAAcM,EAAY,OAAO,OAAO,EAAEN,EAAaO,CAAe,GAKxEC,EAAeV,GAAkBU,EAAc,IAAI,OAAO,OAAOlF,CAAG,MAAO,GAAG,EAAG0E,CAAW,CAClG,CAEE,OAAOQ,CACT,CACA,MAAMC,GAAsBhW,GAAO,CACjC,MAAM,IAAI,MAAM,mBAAmBA,CAAG,EAAE,CAC1C,EAaA,IAAIiW,GAA6Bb,GAA2B,cAAc,EACtEc,GAAsBd,GAA2B,OAAO,EAC7C,MAAMe,EAAW,CAC9B,YAAYC,EAASC,EAAO,CAC1B,GAAI,CACF,aAAAC,EAAeN,EACrB,EAAQK,IAAU,OAAS,CAAA,EAAKA,EAC5B,OAAO,eAAe,KAAMH,GAAQ,CAClC,MAAOK,EACb,CAAK,EACD,OAAO,eAAe,KAAMN,GAAe,CACzC,SAAU,GACV,MAAO,MACb,CAAK,EACD,KAAK,OAAS,CACZ,QAAS,CAAE,EACX,UAAU,EAAG,CACX,OAAI,IAAM,EACD,EAEF,CACf,CACK,EACG,MAAM,QAAQG,CAAO,EACvBA,EAAQ,QAAQlB,GAA4B,KAAMgB,EAAM,EAAEA,EAAM,EAAG,IAAI,EAEvEhB,GAA4B,KAAMgB,EAAM,EAAEA,EAAM,EAAEE,CAAO,EAE3DlB,GAA4B,KAAMe,EAAa,EAAEA,EAAa,EAAIK,CACtE,CAQE,UAAUtW,EAAKjL,EAAS,CACtB,OAAO,KAAK,eAAeiL,EAAKjL,CAAO,EAAE,KAAK,EAAE,CACpD,CAOE,eAAeiL,EAAKjL,EAAS,CAC3B,IAAIyhB,EAAS,KAAK,OAAO,QAAQxW,CAAG,EAMpC,GALIwW,GAAU,OACZtB,GAA4B,KAAMe,EAAa,EAAEA,EAAa,EAAEjW,CAAG,EACnEwW,EAASxW,GAEY,OAAOwW,GAAW,SACrB,CAClB,GAAIzhB,GAAW,OAAOA,EAAQ,YAAgB,IAAa,CACzD,MAAM0hB,EAAS,KAAK,OAAO,UAAU1hB,EAAQ,WAAW,EACxD,OAAO4gB,GAAYa,EAAOC,CAAM,EAAG1hB,CAAO,CAClD,CACM,MAAM,IAAI,MAAM,wFAAwF,CAC9G,CACI,GAAI,OAAOyhB,GAAW,SACpB,MAAM,IAAI,MAAM,yBAAyB,EAE3C,OAAOb,GAAYa,EAAQzhB,CAAO,CACtC,CACA,CACA,SAASwhB,GAAQG,EAAQ,CACvB,GAAI,EAAEA,GAAU,MAAQA,EAAO,SAC7B,OAEF,MAAMC,EAAa,KAAK,OACxB,OAAO,OAAO,KAAK,OAAQ,CACzB,QAAS,CACP,GAAGA,EAAW,QACd,GAAGD,EAAO,OACX,EACD,UAAWA,EAAO,WAAaC,EAAW,SAC9C,CAAG,CACH,0CC9IcC,GAAG,UAAmC,CAClD,IAAIC,EAAU,CAAA,EACVC,EAAOD,EAAQ,KAAO,CAAA,EAY1BA,EAAQ,KAAO,SAAe3hB,EAAO6hB,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAM,CACvE,IAAIC,EAASC,EAAapiB,CAAK,EAE3BmiB,EAAO,QACTE,EAAQriB,EAAOmiB,EAAQ,CAACN,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,CAAI,CAAC,CAEjE,EAWEP,EAAQ,GAAK,SAAa3hB,EAAOsiB,EAAI,CAC9BV,EAAK5hB,CAAK,IACb4hB,EAAK5hB,CAAK,EAAI,CAAA,GAGhB4hB,EAAK5hB,CAAK,EAAE,KAAKsiB,CAAE,CACvB,EAWEX,EAAQ,KAAO,SAAe3hB,EAAOsiB,EAAI,CACvC,SAASC,GAAO,CACdD,EAAG,MAAM,KAAM,SAAS,EACxBX,EAAQ,IAAI3hB,EAAOuiB,CAAG,CAC5B,CACI,KAAK,GAAGviB,EAAOuiB,CAAG,CACtB,EAaEZ,EAAQ,IAAM,SAAc3hB,EAAOsiB,EAAI,CACrC,IAAIE,EAAO,CAAA,EAEX,GAAIxiB,GAASsiB,EAAI,CACf,IAAIG,EAAM,KAAK,KAAKziB,CAAK,EACrBtH,EAAI,EACJC,EAAI8pB,EAAMA,EAAI,OAAS,EAE3B,IAAK/pB,EAAGA,EAAIC,EAAGD,IACT+pB,EAAI/pB,CAAC,IAAM4pB,GACbE,EAAK,KAAKC,EAAI/pB,CAAC,CAAC,CAG1B,CAEI8pB,EAAK,OAAS,KAAK,KAAKxiB,CAAK,EAAIwiB,EAAO,OAAO,KAAK,KAAKxiB,CAAK,CAClE,EAEE,SAASoiB,EAAc7D,EAAG,CACxB,IAAImE,EAAMd,EAAKrD,CAAC,EAAIqD,EAAKrD,CAAC,EAAI,CAAA,EAC1BjL,EAAMiL,EAAE,QAAQ,GAAG,EACnBna,EAAQkP,IAAQ,GAAM,CAACiL,CAAC,EAAI,CAACA,EAAE,UAAU,EAAGjL,CAAG,EAAGiL,EAAE,UAAUjL,EAAM,CAAC,CAAC,EAEtEzB,EAAO,OAAO,KAAK+P,CAAI,EACvBlpB,EAAI,EACJC,EAAIkZ,EAAK,OAEb,IAAKnZ,EAAGA,EAAIC,EAAGD,IAAK,CAClB,IAAIoS,EAAM+G,EAAKnZ,CAAC,EAKhB,GAJIoS,IAAQ,MACV4X,EAAMA,EAAI,OAAOd,EAAK9W,CAAG,CAAC,GAGxB1G,EAAK,SAAW,GAAKA,EAAK,CAAC,IAAM0G,EAAK,CACxC4X,EAAMA,EAAI,OAAOd,EAAK9W,CAAG,CAAC,EAC1B,KACR,CACA,CAEI,OAAO4X,CACX,CAEE,SAASL,EAAS9D,EAAGkE,EAAKre,EAAM,CAC9B,IAAI1L,EAAI,EACJC,EAAI8pB,EAAI,OAEZ,IAAK/pB,EAAGA,EAAIC,GACL8pB,EAAI/pB,CAAC,EADGA,IAEb+pB,EAAI/pB,CAAC,EAAE,MAAQ6lB,EACfkE,EAAI/pB,CAAC,EAAE,MAAM+pB,EAAI/pB,CAAC,EAAG0L,CAAI,CAE/B,CAEE,OAAOud,CACT,kCCvIA,IAAIgB,GACF,mEAWSC,GAAS,CAACC,EAAO,KAAO,CACjC,IAAI9rB,EAAK,GACL2B,EAAImqB,EAAO,EACf,KAAOnqB,KACL3B,GAAM4rB,GAAa,KAAK,OAAQ,EAAG,GAAM,CAAC,EAE5C,OAAO5rB,CACT,+CCnBA,IAAIZ,EAAO2sB,GAAkB,EAkBzBC,EAAM,UAAW,CACnB,OAAO5sB,EAAK,KAAK,IAAK,CACvB,EAED,OAAA6sB,GAAiBD,kDCtBjB,IAAI7R,EAAW4R,GAAqB,EAChCC,EAAME,GAAgB,EACtBC,EAAWC,GAAqB,EAGhCC,EAAkB,sBAGlBC,EAAY,KAAK,IACjBC,EAAY,KAAK,IAwDrB,SAASC,EAASC,EAAMC,EAAM5jB,EAAS,CACrC,IAAI6jB,EACAC,EACAC,EACAhT,EACAiT,EACAC,EACAC,EAAiB,EACjBC,EAAU,GACVC,EAAS,GACTC,EAAW,GAEf,GAAI,OAAOV,GAAQ,WACjB,MAAM,IAAI,UAAUJ,CAAe,EAErCK,EAAOP,EAASO,CAAI,GAAK,EACrBvS,EAASrR,CAAO,IAClBmkB,EAAU,CAAC,CAACnkB,EAAQ,QACpBokB,EAAS,YAAapkB,EACtB+jB,EAAUK,EAASZ,EAAUH,EAASrjB,EAAQ,OAAO,GAAK,EAAG4jB,CAAI,EAAIG,EACrEM,EAAW,aAAcrkB,EAAU,CAAC,CAACA,EAAQ,SAAWqkB,GAG1D,SAASC,EAAWC,EAAM,CACxB,IAAIhgB,EAAOsf,EACPW,EAAUV,EAEd,OAAAD,EAAWC,EAAW,OACtBI,EAAiBK,EACjBxT,EAAS4S,EAAK,MAAMa,EAASjgB,CAAI,EAC1BwM,CACX,CAEE,SAAS0T,GAAYF,EAAM,CAEzB,OAAAL,EAAiBK,EAEjBP,EAAU,WAAWU,EAAcd,CAAI,EAEhCO,EAAUG,EAAWC,CAAI,EAAIxT,CACxC,CAEE,SAAS4T,GAAcJ,EAAM,CAC3B,IAAIK,EAAoBL,EAAON,EAC3BY,EAAsBN,EAAOL,EAC7BY,EAAclB,EAAOgB,EAEzB,OAAOR,EACHX,EAAUqB,EAAaf,EAAUc,CAAmB,EACpDC,CACR,CAEE,SAASC,EAAaR,EAAM,CAC1B,IAAIK,EAAoBL,EAAON,EAC3BY,EAAsBN,EAAOL,EAKjC,OAAQD,IAAiB,QAAcW,GAAqBhB,GACzDgB,EAAoB,GAAOR,GAAUS,GAAuBd,CACnE,CAEE,SAASW,GAAe,CACtB,IAAIH,EAAOrB,EAAK,EAChB,GAAI6B,EAAaR,CAAI,EACnB,OAAOS,EAAaT,CAAI,EAG1BP,EAAU,WAAWU,EAAcC,GAAcJ,CAAI,CAAC,CAC1D,CAEE,SAASS,EAAaT,EAAM,CAK1B,OAJAP,EAAU,OAINK,GAAYR,EACPS,EAAWC,CAAI,GAExBV,EAAWC,EAAW,OACf/S,EACX,CAEE,SAASkU,GAAS,CACZjB,IAAY,QACd,aAAaA,CAAO,EAEtBE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAU,MACnD,CAEE,SAASkB,GAAQ,CACf,OAAOlB,IAAY,OAAYjT,EAASiU,EAAa9B,EAAG,CAAE,CAC9D,CAEE,SAASiC,GAAY,CACnB,IAAIZ,EAAOrB,EAAK,EACZkC,EAAaL,EAAaR,CAAI,EAMlC,GAJAV,EAAW,UACXC,EAAW,KACXG,EAAeM,EAEXa,EAAY,CACd,GAAIpB,IAAY,OACd,OAAOS,GAAYR,CAAY,EAEjC,GAAIG,EAEF,oBAAaJ,CAAO,EACpBA,EAAU,WAAWU,EAAcd,CAAI,EAChCU,EAAWL,CAAY,CAEtC,CACI,OAAID,IAAY,SACdA,EAAU,WAAWU,EAAcd,CAAI,GAElC7S,CACX,CACE,OAAAoU,EAAU,OAASF,EACnBE,EAAU,MAAQD,EACXC,CACT,CAEA,OAAAE,GAAiB3B,kDC9LjB,IAAIA,EAAWT,GAAqB,EAChC5R,EAAW+R,GAAqB,EAGhCG,EAAkB,sBA8CtB,SAAS+B,EAAS3B,EAAMC,EAAM5jB,EAAS,CACrC,IAAImkB,EAAU,GACVE,EAAW,GAEf,GAAI,OAAOV,GAAQ,WACjB,MAAM,IAAI,UAAUJ,CAAe,EAErC,OAAIlS,EAASrR,CAAO,IAClBmkB,EAAU,YAAankB,EAAU,CAAC,CAACA,EAAQ,QAAUmkB,EACrDE,EAAW,aAAcrkB,EAAU,CAAC,CAACA,EAAQ,SAAWqkB,GAEnDX,EAASC,EAAMC,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,CAChB,CAAG,CACH,CAEA,OAAAkB,GAAiBD,iCCpEjB,SAASnF,GAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAG9E,MAAM8G,GAAc,CAClB,QAAW,OACb,EACA,IAAIC,GAA0BpF,GAA2B,WAAW,EAChEqF,GAAwBrF,GAA2B,SAAS,EAIhE,MAAMsF,EAAa,CACjB,aAAc,CACZ,OAAO,eAAe,KAAMD,GAAU,CACpC,MAAOE,EACb,CAAK,EACD,KAAK,MAAQ,CAAE,EACf,OAAO,eAAe,KAAMH,GAAY,CACtC,SAAU,GACV,MAAO,IAAI,GACjB,CAAK,CACL,CACE,UAAW,CACT,OAAO,KAAK,KAChB,CACE,SAASI,EAAO,CACd,MAAMC,EAAY,CAChB,GAAG,KAAK,KACT,EACKlH,EAAY,CAChB,GAAG,KAAK,MACR,GAAGiH,CACJ,EACD,KAAK,MAAQjH,EACbuB,GAA4B,KAAMuF,EAAQ,EAAEA,EAAQ,EAAEI,EAAWlH,EAAWiH,CAAK,CACrF,CACE,UAAUtI,EAAU,CAClB4C,OAAAA,GAA4B,KAAMsF,EAAU,EAAEA,EAAU,EAAE,IAAIlI,CAAQ,EAC/D,IAAM,CACX4C,GAA4B,KAAMsF,EAAU,EAAEA,EAAU,EAAE,OAAOlI,CAAQ,CAC1E,CACL,CACA,CACA,SAASqI,IAAY,CACnB,QAASxG,EAAO,UAAU,OAAQ7a,EAAO,IAAI,MAAM6a,CAAI,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IAC/Eta,EAAKsa,CAAI,EAAI,UAAUA,CAAI,EAE7BsB,GAA4B,KAAMsF,EAAU,EAAEA,EAAU,EAAE,QAAQlI,GAAY,CAC5EA,EAAS,GAAGhZ,CAAI,CACpB,CAAG,CACH,CACAohB,GAAa,QAAUH,GAAY,QClDpB,SAASO,GAAwBC,EAAc,CAC5D,MAAMC,EAAUD,EAAa,YAAY,GAAG,EAE5C,OAAIC,IAAY,IAAMA,IAAYD,EAAa,OAAS,EAC/C,CACL,KAAMA,EACN,UAAW,MACZ,EAEI,CACL,KAAMA,EAAa,MAAM,EAAGC,CAAO,EACnC,UAAWD,EAAa,MAAMC,EAAU,CAAC,CAC1C,CACH,CCXA,MAAeC,GAAA,CACb,UAAW,KACX,GAAI,gBACJ,SAAU,gBACV,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,KAAM,aACN,IAAK,YACL,KAAM,aACN,KAAM,aACN,KAAM,YACN,IAAK,YACL,IAAK,WACL,IAAK,4BACL,IAAK,4BACL,IAAK,kBACL,IAAK,mBACL,IAAK,mBACL,IAAK,kBACL,MAAO,oBACP,IAAK,qBACL,KAAM,mDACN,KAAM,0EACN,IAAK,qBACL,KAAM,mDACN,KAAM,0EACN,IAAK,2BACL,KAAM,iDACN,IAAK,2BACL,IAAK,0BACL,IAAK,2BACL,IAAK,2BACL,KAAM,wDACN,KAAM,iDACN,KAAM,oEACN,IAAK,2BACL,KAAM,oDACN,KAAM,uEACN,IAAK,2BACL,IAAK,aACL,KAAM,aACN,KAAM,aACN,IAAK,aACL,IAAK,kBACL,IAAK,kBACL,KAAM,8BACN,IAAK,+BACL,IAAK,oBACL,GAAI,mBACJ,IAAK,+BACP,ECxDe,SAASC,GAAYC,EAAM,CACxC,IAAIC,EACJ,GAAID,EAAK,KAAM,OAAOA,EAAK,KAC3B,MAAME,EAAgBF,EAAK,MAAQC,EAAwBN,GAAwBK,EAAK,IAAI,EAAE,YAAc,KAAO,OAASC,EAAsB,YAAa,EAAG,KAClK,OAAIC,GAAiBA,KAAiBJ,GAE7BA,GAAUI,CAAa,EAGzB,0BACT,CCXA,SAASC,GAAgBC,EAAW,CAClC,OAAOA,EAAU,WAAW,CAAC,EAAE,SAAS,EAAE,CAC5C,CACA,SAASC,GAAe7U,EAAM,CAC5B,IAAI8U,EAAS,GACb,OAAO9U,EAAK,QAAQ,cAAe4U,IACjCE,GAAU,IAAIH,GAAgBC,CAAS,CAAC,GACjC,IACR,EAAIE,CACP,CAMe,SAASC,GAAeP,EAAMQ,EAAY,CAIvD,IAAI1vB,EAAK0vB,GAAc,OACvB,OAAI,OAAOR,EAAK,MAAS,WACvBlvB,GAAM,IAAIuvB,GAAeL,EAAK,KAAK,YAAa,CAAA,CAAC,IAE/CA,EAAK,OAAS,SAChBlvB,GAAM,IAAIkvB,EAAK,IAAI,IAEjBA,EAAK,MAAQ,OAAOA,EAAK,KAAK,cAAiB,WACjDlvB,GAAM,IAAIuvB,GAAeL,EAAK,KAAK,aAAa,YAAa,CAAA,CAAC,IAE5DA,EAAK,KAAK,OAAS,SACrBlvB,GAAM,IAAIkvB,EAAK,KAAK,IAAI,IAEtBA,EAAK,KAAK,eAAiB,SAC7BlvB,GAAM,IAAIkvB,EAAK,KAAK,YAAY,IAE3BlvB,CACT,CAIA,SAAS2vB,GAAgBT,EAAM,CAC7B,MAAI,CAACA,EAAK,UAAY,CAACA,EAAK,OAAe,GAEjB,IAAI,IAAI,CAAC,MAAO,UAAW,QAAS,WAAY,UAAU,CAAC,EAC5D,IAAIA,EAAK,OAAO,QAAQ,CACnD,CACO,SAASU,GAAcV,EAAMQ,EAAY,CAC9C,GAAIC,GAAgBT,CAAI,EAAG,OAAOA,EAAK,GACvC,MAAMW,EAAWZ,GAAYC,CAAI,EACjC,OAAOO,GAAe,CACpB,GAAGP,EACH,KAAMW,CACP,EAAEH,CAAU,CACf,CCnDe,SAASI,GAAuBC,EAAW,CAOxD,GALIA,GAAa,MAAQ,OAAO,UAAc,MAE5CA,EAAY,UAAU,WAGpB,CAACA,EAAW,MAAO,GACvB,MAAMve,EAAI,mBAAmB,KAAKue,CAAS,EAC3C,GAAI,CAACve,EAAG,MAAO,GAEf,MAAMwe,EADcxe,EAAE,CAAC,EACK,MAAM,IAAK,CAAC,EAClCye,EAAQ,SAASD,EAAQ,CAAC,EAAG,EAAE,EAC/BE,EAAQ,SAASF,EAAQ,CAAC,EAAG,EAAE,EAWrC,OANIC,EAAQ,IAAMA,IAAU,IAAMC,EAAQ,OAMtCD,EAAQ,IAAMA,IAAU,IAAMC,GAAS,KAM7C,CCjCe,SAASC,GAAYN,EAAUO,EAAgB,CAC5D,OAAIA,EAAe,KACVA,EAAe,KAEpBP,EAAS,MAAM,GAAG,EAAE,CAAC,IAAM,QACtB,GAAGA,EAAS,MAAM,GAAG,EAAE,CAAC,CAAC,IAAIA,EAAS,MAAM,GAAG,EAAE,CAAC,CAAC,GAErD,QACT,CCLA,SAASQ,GAAIC,EAAQ,CACnB,OAAOA,EAAS,GAAK,IAAIA,CAAM,GAAKA,EAAO,SAAU,CACvD,CAKe,SAASC,IAAe,CACrC,MAAMC,EAAO,IAAI,KACXC,EAAQJ,GAAIG,EAAK,SAAQ,CAAE,EAC3BE,EAAUL,GAAIG,EAAK,WAAU,CAAE,EAC/BG,EAAUN,GAAIG,EAAK,WAAU,CAAE,EACrC,MAAO,GAAGC,CAAK,IAAIC,CAAO,IAAIC,CAAO,EACvC,CCXA,MAAMC,GAAmB,CACvB,MAAO,IAAM,CAAE,EACf,KAAM,IAAM,CAAE,EACd,MAAO,UAAY,CACjB,QAAS1I,EAAO,UAAU,OAAQ7a,EAAO,IAAI,MAAM6a,CAAI,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IAC/Eta,EAAKsa,CAAI,EAAI,UAAUA,CAAI,EAE7B,OAAO,QAAQ,MAAM,WAAW4I,GAAY,CAAE,IAAK,GAAGljB,CAAI,CAC9D,CACA,EAIMwjB,GAAc,CAClB,MAAO,UAAY,CACjB,QAASC,EAAQ,UAAU,OAAQzjB,EAAO,IAAI,MAAMyjB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1jB,EAAK0jB,CAAK,EAAI,UAAUA,CAAK,EAE/B,OAAO,QAAQ,MAAM,WAAWR,GAAY,CAAE,IAAK,GAAGljB,CAAI,CAC3D,EACD,KAAM,UAAY,CAChB,QAAS2jB,EAAQ,UAAU,OAAQ3jB,EAAO,IAAI,MAAM2jB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF5jB,EAAK4jB,CAAK,EAAI,UAAUA,CAAK,EAE/B,OAAO,QAAQ,KAAK,WAAWV,GAAY,CAAE,IAAK,GAAGljB,CAAI,CAC1D,EACD,MAAO,UAAY,CACjB,QAAS6jB,EAAQ,UAAU,OAAQ7jB,EAAO,IAAI,MAAM6jB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9jB,EAAK8jB,CAAK,EAAI,UAAUA,CAAK,EAE/B,OAAO,QAAQ,MAAM,WAAWZ,GAAY,CAAE,IAAK,GAAGljB,CAAI,CAC9D,CACA,2CCpCA+jB,GAAiB,SAAuBha,EAAO,CAC3C,GAAI,OAAOA,GAAU,UAAY,OAAO,MAAMA,CAAK,EAC/C,MAAM,IAAI,UAAU,0BAA0B,OAAOA,CAAK,EAAE,EAEhE,MAAMia,EAAMja,EAAQ,EACpB,IAAIka,EAAM,KAAK,IAAIla,CAAK,EAIxB,GAHIia,IACAC,EAAM,CAACA,GAEPA,IAAQ,EACR,MAAO,MAEX,MAAMC,EAAQ,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EAC5DC,EAAW,KAAK,IAAI,KAAK,MAAM,KAAK,IAAIF,CAAG,EAAI,KAAK,IAAI,IAAI,CAAC,EAAGC,EAAM,OAAS,CAAC,EAChFzxB,EAAQ,OAAOwxB,EAAM,MAAQE,CAAQ,EACrCC,EAAOF,EAAMC,CAAQ,EAC3B,MAAO,GAAG1xB,GAAS,IAAMA,EAAQ,IAAM,EAAI,KAAK,MAAMA,CAAK,EAAIA,EAAM,QAAQ,CAAC,CAAC,IAAI2xB,CAAI,EAC1F,+ECYD,SAASC,EAAgBtT,EAAMuT,EAAW,CACxC,KAAK,KAAOvT,EAAOA,GAAQ,GAC3B,KAAK,QAAU,CAACA,EAAK,QAAQ,GAAG,EAChC,KAAK,UAAYuT,EACjB,KAAK,MAAQvT,EAAK,MAAMuT,CAAS,CACnC,CAEA,OAAAD,EAAgB,UAAU,MAAQ,SAASta,EAAO,CAChD,IAAIqJ,EAAU,GACVmR,EAAQ,KAAK,MACbC,EACAC,EAAaF,EAAM,OACnBG,EAEJ,GAAI,OAAO3a,GAAS,UAAYA,aAAiB,OAC/C,GAAI,CAAC,KAAK,SAAW,KAAK,MAAQA,EAChCqJ,EAAU,OACL,CAEL,IADAsR,GAAa3a,GAAS,IAAI,MAAM,KAAK,SAAS,EACzCya,EAAK,EAAGpR,GAAWoR,EAAKC,EAAYD,IACnCD,EAAMC,CAAE,IAAM,MAEPA,EAAKE,EAAU,OACxBtR,EAAUmR,EAAMC,CAAE,IAAME,EAAUF,CAAE,EAEpCpR,EAAU,IAKdA,EAAUA,GAAWsR,CAC3B,SAEW,OAAO3a,EAAM,QAAU,WAG9B,IAFAqJ,EAAU,CAAE,EAEPoR,EAAKza,EAAM,OAAQya,KAClB,KAAK,MAAMza,EAAMya,CAAE,CAAC,IACtBpR,EAAQA,EAAQ,MAAM,EAAIrJ,EAAMya,CAAE,WAI/B,OAAOza,GAAS,SAAU,CACjCqJ,EAAU,CAAE,EAEZ,QAAS1M,KAAOqD,EACV,KAAK,MAAMrD,CAAG,IAChB0M,EAAQ1M,CAAG,EAAIqD,EAAMrD,CAAG,EAGhC,CAEE,OAAO0M,CACR,EAEDuR,GAAiB,SAAS5T,EAAM6T,EAAMN,EAAW,CAC/C,IAAIO,EAAU,IAAIR,EAAgBtT,EAAMuT,GAAa,QAAQ,EAC7D,OAAI,OAAOM,EAAQ,IACVC,EAAQ,MAAMD,CAAI,EAGpBC,CACR,kDC5FD,IAAIF,EAAWjG,GAAmB,EAC9BoG,EAAkB,WAatB,OAAAC,GAAiB,SAASroB,EAAQqT,EAAS,CACzC,SAAS6U,EAAK7U,EAAS,CACrB,IAAIvD,EAASmY,EAAS5U,EAASrT,EAAQooB,CAAe,EAGtD,OAAOtY,GAAUA,EAAO,QAAU,CACtC,CAEE,OAAOuD,EAAU6U,EAAK7U,EAAQ,MAAM,GAAG,EAAE,CAAC,CAAC,EAAI6U,CAChD,iCCbKI,GAAiB,CACrB,YAAa,KACb,YAAa,KACb,iBAAkB,KAClB,iBAAkB,KAClB,iBAAkB,KAClB,iBAAkB,KAClB,mBAAoB,CAAA,CACtB,EACA,MAAMC,WAAyB,KAAM,CACnC,YAAYC,EAASC,EAAM,CACzB,IAAIC,EACJ,MAAMF,CAAO,EACb,KAAK,cAAgB,GACrB,KAAK,cAAgBE,EAAqBD,GAAQ,KAAO,OAASA,EAAK,eAAiB,KAAOC,EAAqB,GAChHD,GAAQ,MAAQA,EAAK,OACvB,KAAK,KAAOA,EAAK,KAEvB,CACA,CACA,MAAME,EAAW,CACf,YAAYC,EAASC,EAAS,CAC5B,KAAK,QAAUA,EACf,KAAK,QAAU,IAAM,CACnB,IAAIC,EACJ,MAAML,EAAOG,EAAS,EACtB,KAAME,EAAqBL,EAAK,eAAiB,KAAO,OAASK,EAAmB,mBAAqB,MAAQ,CAAC,MAAM,QAAQL,EAAK,aAAa,gBAAgB,EAChK,MAAM,IAAI,UAAU,kDAAkD,EAExE,OAAOA,CACR,CACL,CAGE,8BAA8BM,EAAeC,EAAa,CACxD,KAAM,CACJ,iBAAAC,EACA,iBAAAC,CACN,EAAQ,KAAK,QAAO,EAAG,aACnB,GAAIA,GACoBH,EAAc,OAAOI,GAAK,CAACA,EAAE,OAAO,EACxC,OAASH,EAAY,OAASE,EAC9C,MAAM,IAAIX,GAAiB,GAAG,KAAK,QAAO,EAAG,oBAAqB,CAChE,YAAaW,CACd,CAAA,CAAC,EAAE,EAGR,GAAID,EAAkB,CACpB,MAAMG,EAAiB,CAAC,GAAGL,EAAe,GAAGC,CAAW,EAAE,OAAO,CAACK,EAAOF,IAAM,CAC7E,IAAIG,EACJ,OAAOD,IAAUC,EAAUH,EAAE,OAAS,KAAOG,EAAU,EACxD,EAAE,CAAC,EACJ,GAAIF,EAAiBH,EACnB,MAAM,IAAIV,GAAiB,KAAK,QAAO,EAAG,uBAAwB,CAChE,YAAalB,GAAc4B,CAAgB,EAC3C,KAAM5B,GAAc+B,CAAc,CAC5C,CAAS,CAAC,CAEV,CACA,CACE,mBAAmBjE,EAAM,CACvB,KAAM,CACJ,YAAAoE,EACA,YAAAC,EACA,iBAAAC,CACN,EAAQ,KAAK,QAAO,EAAG,aACnB,GAAIA,GAcE,CAbsBA,EAAiB,KAAKrlB,GAE1CA,EAAK,SAAS,GAAG,EACd+gB,EAAK,KACHjR,GAAMiR,EAAK,KAAK,QAAQ,QAAS,EAAE,EAAG/gB,CAAI,EAD1B,GAKrBA,EAAK,CAAC,IAAM,KAAO+gB,EAAK,UACnBA,EAAK,UAAU,YAAa,IAAK/gB,EAAK,MAAM,CAAC,EAAE,YAAa,EAE9D,EACR,EACuB,CACtB,MAAMslB,EAAyBD,EAAiB,KAAK,IAAI,EACzD,MAAM,IAAIlB,GAAiB,KAAK,QAAO,EAAG,4BAA6B,CACrE,MAAOmB,CACjB,CAAS,EAAG,CACF,KAAAvE,CACV,CAAS,CACT,CAII,GAAIoE,GAAepE,EAAK,MAAQ,MAAQA,EAAK,KAAOoE,EAAa,CAC/D,IAAII,EACJ,MAAM,IAAIpB,GAAiB,KAAK,QAAO,EAAG,cAAe,CACvD,KAAMlB,GAAckC,CAAW,EAC/B,MAAOI,EAAaxE,EAAK,OAAS,KAAOwE,EAAa,KAAK,QAAO,EAAG,SAAS,CACtF,CAAO,EAAG,CACF,KAAAxE,CACR,CAAO,CACP,CAGI,GAAIqE,GAAerE,EAAK,MAAQ,MAAQA,EAAK,KAAOqE,EAClD,MAAM,IAAIjB,GAAiB,KAAK,QAAO,EAAG,eAAgB,CACxD,KAAMlB,GAAcmC,CAAW,CACvC,CAAO,EAAG,CACF,KAAArE,CACR,CAAO,CAEP,CACE,SAAS4D,EAAeC,EAAa,CACnCA,EAAY,QAAQY,GAAc,CAChC,KAAK,mBAAmBA,CAAU,CACxC,CAAK,EACD,KAAK,8BAA8Bb,EAAeC,CAAW,CACjE,CACE,yBAAyBa,EAAO,CAC9B,KAAM,CACJ,iBAAAC,CACN,EAAQ,KAAK,QAAO,EAAG,aACnB,GAAIA,GAAoB,OAAO,KAAKD,CAAK,EAAE,OAASC,EAClD,MAAM,IAAIvB,GAAiB,KAAK,QAAO,EAAG,0BAA2B,CACnE,YAAauB,CACrB,CAAO,CAAC,CAER,CACE,6BAA6B3E,EAAM,CACjC,IAAI4E,EACJ,MAAMC,EAAQ,IAAIzB,GAAiB,KAAK,QAAO,EAAG,iCAAkC,CAClF,UAAWwB,EAAc5E,EAAK,OAAS,KAAO4E,EAAc,KAAK,QAAO,EAAG,SAAS,CAC1F,CAAK,CAAC,EACI,CACJ,mBAAAE,CACN,EAAQ,KAAK,QAAO,EAAG,aACbC,EAAgB,CAAE,EACxB,UAAWC,KAASF,GACd,CAAC,OAAO,OAAO9E,EAAK,KAAMgF,CAAK,GAAKhF,EAAK,KAAKgF,CAAK,IAAM,KAC3DD,EAAc,KAAKC,CAAK,EAG5B,MAAO,CACL,cAAAD,EACA,MAAAF,CACD,CACL,CACA,CC3JA,MAAetJ,GAAA,CACb,QAAS,CACP,mBAAoB,CAClB,EAAG,6DACH,EAAG,2DACJ,EACD,kBAAmB,CACjB,EAAG,0CACH,EAAG,0CACJ,EACD,wBAAyB,CACvB,EAAG,kDACH,EAAG,kDACJ,EACD,qBAAsB,4EACtB,YAAa,kDACb,yBAA0B,+BAC1B,+BAAgC,8CAChC,aAAc,wDACd,0BAA2B,gCAC3B,mBAAoB,wBACpB,aAAc,iEACd,eAAgB,mCAChB,YAAa,yBACb,yBAA0B,kEAC1B,eAAgB,2BAChB,qBAAsB,yBACtB,oBAAqB,4BAErB,aAAc,oCACd,gBAAiB,sDACjB,QAAS,CACP,EAAG,wBACH,EAAG,uBACJ,EACD,wBAAyB,gCACzB,gBAAiB,sBACjB,OAAQ,SACR,OAAQ,UACR,MAAO,SACP,UAAW,aACX,WAAY,cACZ,OAAQ,SACR,YAAa,eACb,QAAS,aACT,aAAc,2BACd,sBAAuB,yDACvB,iBAAkB,2BAClB,iBAAkB,sBAClB,aAAc,oBACd,kBAAmB,kCACnB,OAAQ,SACR,YAAa,eACb,iBAAkB,wCAClB,cAAe,4BACf,mBAAoB,2CACpB,YAAa,CACX,EAAG,2CACH,EAAG,2CACJ,EACD,6BAA8B,sDAC9B,QAAS,UACT,WAAY,aAChB,CACA,EChEA,SAASxB,EAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAoB9E,MAAM8G,GAAc,CAClB,QAAW,OACb,EAsDM6F,GAAqB,CACzB,cAAe,EACf,eAAgB,GAChB,MAAO,KACP,eAAgB,IAClB,EAOA,IAAIC,GAAwBjL,GAA2B,SAAS,EAC5DkL,GAA2BlL,GAA2B,YAAY,EAClEmL,GAAiCnL,GAA2B,kBAAkB,EAC9EoL,GAAwBpL,GAA2B,SAAS,EAC5DqL,GAA8BrL,GAA2B,eAAe,EACxEsL,GAA0BtL,GAA2B,WAAW,EAChEuL,GAA+BvL,GAA2B,gBAAgB,EAC1EwL,GAA8BxL,GAA2B,eAAe,EACxEyL,GAA8CzL,GAA2B,+BAA+B,EACxG0L,GAAwC1L,GAA2B,yBAAyB,EAC5F2L,GAAuC3L,GAA2B,wBAAwB,EAC1F4L,GAA8B5L,GAA2B,eAAe,EACxE6L,GAAmC7L,GAA2B,oBAAoB,EAClF8L,GAAwC9L,GAA2B,yBAAyB,EAC5F+L,GAAqC/L,GAA2B,sBAAsB,EACtFgM,GAAoChM,GAA2B,qBAAqB,EACpFiM,GAA6CjM,GAA2B,8BAA8B,EACtGkM,GAAuClM,GAA2B,wBAAwB,EAC1FmM,GAA6BnM,GAA2B,cAAc,EACtEoM,GAAmCpM,GAA2B,oBAAoB,EAClFqM,GAAkCrM,GAA2B,mBAAmB,EAChFsM,GAA6BtM,GAA2B,cAAc,EACtEuM,GAA0BvM,GAA2B,WAAW,EAChEwM,GAA6BxM,GAA2B,cAAc,EACtEyM,GAA0BzM,GAA2B,WAAW,EAC7D,MAAM0M,EAAK,CAIhB,YAAYC,EAAO,CAIjB,OAAO,eAAe,KAAMF,GAAY,CACtC,MAAOG,EACb,CAAK,EAKD,OAAO,eAAe,KAAMJ,GAAe,CACzC,MAAOK,EACb,CAAK,EACD,OAAO,eAAe,KAAMN,GAAY,CACtC,MAAOO,EACb,CAAK,EAKD,OAAO,eAAe,KAAMR,GAAe,CACzC,MAAOS,EACb,CAAK,EAKD,OAAO,eAAe,KAAMZ,GAAe,CACzC,MAAOa,EACb,CAAK,EACD,OAAO,eAAe,KAAMd,GAAyB,CACnD,MAAOe,EACb,CAAK,EACD,OAAO,eAAe,KAAMjB,GAAsB,CAChD,MAAOkB,EACb,CAAK,EACD,OAAO,eAAe,KAAMpB,GAA0B,CACpD,MAAOqB,EACb,CAAK,EAED,OAAO,eAAe,KAAMtB,GAAqB,CAC/C,MAAOuB,EACb,CAAK,EAID,OAAO,eAAe,KAAMxB,GAAgB,CAC1C,MAAOyB,EACb,CAAK,EACD,OAAO,eAAe,KAAM1B,GAAyB,CACnD,MAAO2B,EACb,CAAK,EACD,OAAO,eAAe,KAAM5B,GAA0B,CACpD,MAAO6B,EACb,CAAK,EACD,OAAO,eAAe,KAAM9B,GAAgC,CAC1D,MAAO+B,EACb,CAAK,EACD,OAAO,eAAe,KAAMhC,GAAgB,CAC1C,MAAOiC,EACb,CAAK,EACD,OAAO,eAAe,KAAMxC,GAAU,CACpC,SAAU,GACV,MAAO,OAAO,OAAO,IAAI,CAC/B,CAAK,EACD,OAAO,eAAe,KAAMC,GAAa,CACvC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAmB,CAC7C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAU,CACpC,SAAU,GACV,MAAOsC,GAAE,CACf,CAAK,EACD,OAAO,eAAe,KAAMrC,GAAgB,CAC1C,SAAU,GACV,MAAO,IAAI,GACjB,CAAK,EACD,OAAO,eAAe,KAAMC,GAAY,CACtC,SAAU,GACV,MAAO,IAAI,GACjB,CAAK,EACD,OAAO,eAAe,KAAMC,GAAiB,CAC3C,SAAU,GACV,MAAO,IAAI,GACjB,CAAK,EACD,KAAK,qBAAuB,KAC5B,KAAK,WAAa,GAClB,OAAO,eAAe,KAAMQ,GAAuB,CACjD,SAAU,GACV,MAAO,CAAChG,EAAM4H,IAAa,CACzB,MAAMC,EAAc7H,EAAO,KAAK,QAAQA,EAAK,EAAE,EAAI,OACnD,GAAIA,GAAQ,MAAQ,CAAC6H,EAAa,CAChC,KAAK,IAAI,0DAA0D7H,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACV,CACQ,GAAI6H,EAAY,SAAS,aAAe,IAAK,CAC3C,KAAK,IAAI,mEAAmE7H,EAAK,EAAE,EAAE,EACrF,MACV,CACQ,MAAM8H,EAAc,CAClB,WAAYF,EAAS,WAErB,WAAYA,EAAS,YAAc,MAAQ,OAAO,SAASA,EAAS,UAAU,GAAKA,EAAS,WAAa,EAAI,KAAK,MAAMA,EAAS,cAAgBA,EAAS,WAAa,GAAG,EAAI,MAC/K,EACGC,EAAY,SAAS,eAAiB,KACxC,KAAK,aAAa7H,EAAK,GAAI,CACzB,SAAU,CACR,GAAG6H,EAAY,SACf,GAAGC,EACH,cAAeF,EAAS,aACtC,CACA,CAAW,EAED,KAAK,aAAa5H,EAAK,GAAI,CACzB,SAAU,CACR,GAAG6H,EAAY,SACf,GAAGC,CACjB,CACA,CAAW,EAEH/N,EAA4B,KAAMmM,EAA6B,EAAEA,EAA6B,EAAG,CACzG,CACA,CAAK,EAQD,OAAO,eAAe,KAAMA,GAA+B,CACzD,SAAU,GACV,MAAOhH,GAAS,IAAMnF,EAA4B,KAAMkM,EAAoB,EAAEA,EAAoB,EAAG,EAAE,IAAK,CAC1G,QAAS,GACT,SAAU,EACX,CAAA,CACP,CAAK,EACD,OAAO,eAAe,KAAMI,GAAqB,CAC/C,SAAU,GACV,MAAO,KAAK,mBAAmB,KAAK,IAAI,CAC9C,CAAK,EAWD,OAAO,eAAe,KAAMC,GAAoB,CAC9C,SAAU,GACV,MAAO,IAAI,GACjB,CAAK,EACD,KAAK,cAAgB/K,GACrB,MAAM4H,EAAiB,CACrB,GAAI,OACJ,YAAa,GACb,2BAA4B,GAC5B,MAAO,GACP,aAAc4E,GACd,KAAM,CAAE,EACR,kBAAmB,CAAC/H,EAAM0E,IAAU,CAAC,OAAO,OAAOA,EAAO1E,EAAK,EAAE,EACjE,eAAgB0E,GAASA,EACzB,MAAO,IAAInF,GACX,OAAQmC,GACR,YAAa,GACd,EACKsG,EAAS,CACb,GAAG7E,EACH,GAAGyD,CACJ,EAGD,KAAK,KAAO,CACV,GAAGoB,EACH,aAAc,CACZ,GAAG7E,EAAe,aAClB,GAAIyD,GAASA,EAAM,YAC3B,CACK,EAIGA,GAASA,EAAM,QAAUA,EAAM,MACjC,KAAK,IAAI,4KAA6K,SAAS,EACtLA,GAASA,EAAM,QACxB,KAAK,KAAK,OAASjF,IAErB,KAAK,IAAI,eAAegF,GAAK,OAAO,EAAE,EACtC,KAAK,SAAU,EACf,KAAK,MAAQ,KAAK,KAAK,MACvB,KAAK,SAAS,CACZ,GAAG1B,GACH,QAAS,CAAE,EACX,MAAO,CAAE,EACT,eAAgB,CAAE,EAClB,aAAc,CACZ,eAAgBrE,GAAwB,EACxC,uBAAwB,GACxB,iBAAkB,EACnB,EACD,KAAM,CACJ,GAAG,KAAK,KAAK,IACd,EACD,KAAM,CAAA,CACZ,CAAK,EACD7G,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAI,IAAI3B,GAAW,IAAM,KAAK,KAAM,IAAM,KAAK,IAAI,EAC7GzJ,EAA4B,KAAMqL,EAAiB,EAAEA,EAAiB,EAAI,KAAK,MAAM,UAAU,CAAC1F,EAAWlH,EAAWiH,IAAU,CAC9H,KAAK,KAAK,eAAgBC,EAAWlH,EAAWiH,CAAK,EACrD,KAAK,UAAUjH,CAAS,CAC9B,CAAK,EAGG,KAAK,KAAK,OAAS,OAAO,OAAW,MAGvC,OAAO,KAAK,KAAK,EAAE,EAAI,MAEzBuB,EAA4B,KAAMqM,EAAa,EAAEA,EAAa,EAAG,CACrE,CACE,KAAKrsB,EAAO,CACV,QAASif,EAAO,UAAU,OAAQ7a,EAAO,IAAI,MAAM6a,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IAClGta,EAAKsa,EAAO,CAAC,EAAI,UAAUA,CAAI,EAEjCsB,EAA4B,KAAMsL,EAAQ,EAAEA,EAAQ,EAAE,KAAKtrB,EAAO,GAAGoE,CAAI,CAC7E,CACE,GAAGpE,EAAOkuB,EAAU,CAClBlO,OAAAA,EAA4B,KAAMsL,EAAQ,EAAEA,EAAQ,EAAE,GAAGtrB,EAAOkuB,CAAQ,EACjE,IACX,CACE,KAAKluB,EAAOkuB,EAAU,CACpBlO,OAAAA,EAA4B,KAAMsL,EAAQ,EAAEA,EAAQ,EAAE,KAAKtrB,EAAOkuB,CAAQ,EACnE,IACX,CACE,IAAIluB,EAAOkuB,EAAU,CACnBlO,OAAAA,EAA4B,KAAMsL,EAAQ,EAAEA,EAAQ,EAAE,IAAItrB,EAAOkuB,CAAQ,EAClE,IACX,CAOE,UAAU/1B,EAAO,CACf,KAAK,eAAeg2B,GAAU,CAC5BA,EAAO,OAAOh2B,CAAK,CACzB,CAAK,CACL,CAKE,SAASutB,EAAO,CACd,KAAK,MAAM,SAASA,CAAK,CAC7B,CAKE,UAAW,CACT,OAAO,KAAK,MAAM,SAAU,CAChC,CACE,gBAAgB0I,EAAmB,CACjC,MAAMC,EAAqB,KAAK,SAAQ,EAAG,MAC3C,KAAK,SAAS,CACZ,MAAO,CACL,GAAGA,EACH,GAAG,OAAO,YAAY,OAAO,QAAQD,CAAiB,EAAE,IAAIzQ,GAAQ,CAClE,GAAI,CAAC2Q,EAAQC,CAAY,EAAI5Q,EAC7B,MAAO,CAAC2Q,EAAQ,CACd,GAAGD,EAAmBC,CAAM,EAC5B,GAAGC,CACf,CAAW,CACX,CAAS,CAAC,CACV,CACA,CAAK,CACL,CAKE,aAAaD,EAAQn2B,EAAO,CAC1B,GAAI,CAAC,KAAK,SAAU,EAAC,MAAMm2B,CAAM,EAC/B,MAAM,IAAI,MAAM,uBAAuBA,CAAM,qCAAqC,EAEpF,KAAK,gBAAgB,CACnB,CAACA,CAAM,EAAGn2B,CAChB,CAAK,CACL,CACE,UAAW,CACT,MAAMipB,EAAetW,GAAO,KAAK,IAAI,wBAAwBA,CAAG,GAAI,OAAO,EACrE0jB,EAAa,IAAIvN,GAAW,CAAC,KAAK,cAAe,KAAK,KAAK,MAAM,EAAG,CACxE,aAAAG,CACN,CAAK,EACD,KAAK,KAAOoN,EAAW,UAAU,KAAKA,CAAU,EAChD,KAAK,UAAYA,EAAW,eAAe,KAAKA,CAAU,EAC1D,KAAK,OAASA,EAAW,MAC7B,CACE,WAAWC,EAAS,CAClB,KAAK,KAAO,CACV,GAAG,KAAK,KACR,GAAGA,EACH,aAAc,CACZ,GAAG,KAAK,KAAK,aACb,GAAIA,GAAW,KAAO,OAASA,EAAQ,YAC/C,CACK,EACGA,EAAQ,MACV,KAAK,QAAQA,EAAQ,IAAI,EAE3B,KAAK,SAAU,EACXA,EAAQ,QACV,KAAK,eAAeN,GAAU,CAC5BA,EAAO,WAAWM,CAAO,CACjC,CAAO,EAIH,KAAK,SAAS,MAAS,CAC3B,CACE,eAAgB,CACd,MAAMC,EAAkB,CACtB,WAAY,EACZ,cAAe,GACf,eAAgB,GAChB,cAAe,IAChB,EACK/D,EAAQ,CACZ,GAAG,KAAK,WAAW,KACpB,EACKgE,EAAe,OAAO,OAAO,IAAI,EACvC,OAAO,KAAKhE,CAAK,EAAE,QAAQ2D,GAAU,CACnCK,EAAaL,CAAM,EAAI,CACrB,GAAG3D,EAAM2D,CAAM,EACf,SAAU,CACR,GAAG3D,EAAM2D,CAAM,EAAE,SACjB,GAAGI,CACJ,EAID,IAAK,OACL,YAAa,MACd,CACP,CAAK,EACD,KAAK,SAAS,CACZ,MAAOC,EACP,GAAGzD,EACT,CAAK,CACL,CACE,OAAQ,CACN,KAAM,CACJ,aAAA0D,EACA,eAAAC,CACN,EAAQ,KAAK,SAAU,EACnB,GAAI,OAAO,KAAKA,CAAc,EAAE,OAAS,GAAK,CAACD,EAAa,uBAC1D,MAAM,IAAI,MAAM,+EAA+E,EAEjG,KAAK,SAAS,CACZ,GAAG1D,GACH,MAAO,CAAA,CACb,CAAK,CACL,CACE,gBAAgB5I,EAAI,CAClBtC,EAA4B,KAAMuL,EAAc,EAAEA,EAAc,EAAE,IAAIjJ,CAAE,CAC5E,CACE,mBAAmBA,EAAI,CACrB,OAAOtC,EAA4B,KAAMuL,EAAc,EAAEA,EAAc,EAAE,OAAOjJ,CAAE,CACtF,CACE,iBAAiBA,EAAI,CACnBtC,EAA4B,KAAMyL,EAAe,EAAEA,EAAe,EAAE,IAAInJ,CAAE,CAC9E,CACE,oBAAoBA,EAAI,CACtB,OAAOtC,EAA4B,KAAMyL,EAAe,EAAEA,EAAe,EAAE,OAAOnJ,CAAE,CACxF,CACE,YAAYA,EAAI,CACdtC,EAA4B,KAAMwL,EAAU,EAAEA,EAAU,EAAE,IAAIlJ,CAAE,CACpE,CACE,eAAeA,EAAI,CACjB,OAAOtC,EAA4B,KAAMwL,EAAU,EAAEA,EAAU,EAAE,OAAOlJ,CAAE,CAC9E,CACE,QAAQhoB,EAAM,CACZ,MAAMw0B,EAAc,CAClB,GAAG,KAAK,SAAQ,EAAG,KACnB,GAAGx0B,CACJ,EACKq0B,EAAe,CACnB,GAAG,KAAK,WAAW,KACpB,EACD,OAAO,KAAKA,CAAY,EAAE,QAAQL,GAAU,CAC1CK,EAAaL,CAAM,EAAI,CACrB,GAAGK,EAAaL,CAAM,EACtB,KAAM,CACJ,GAAGK,EAAaL,CAAM,EAAE,KACxB,GAAGh0B,CACb,CACO,CACP,CAAK,EACD,KAAK,IAAI,kBAAkB,EAC3B,KAAK,IAAIA,CAAI,EACb,KAAK,SAAS,CACZ,KAAMw0B,EACN,MAAOH,CACb,CAAK,CACL,CACE,YAAYL,EAAQh0B,EAAM,CACxB,MAAMq0B,EAAe,CACnB,GAAG,KAAK,WAAW,KACpB,EACD,GAAI,CAACA,EAAaL,CAAM,EAAG,CACzB,KAAK,IAAI,gEAAgEA,CAAM,EAAE,EACjF,MACN,CACI,MAAMS,EAAU,CACd,GAAGJ,EAAaL,CAAM,EAAE,KACxB,GAAGh0B,CACJ,EACDq0B,EAAaL,CAAM,EAAI,CACrB,GAAGK,EAAaL,CAAM,EACtB,KAAMS,CACP,EACD,KAAK,SAAS,CACZ,MAAOJ,CACb,CAAK,CACL,CAKE,QAAQL,EAAQ,CACd,OAAO,KAAK,WAAW,MAAMA,CAAM,CACvC,CAKE,UAAW,CACT,KAAM,CACJ,MAAA3D,CACN,EAAQ,KAAK,SAAU,EACnB,OAAO,OAAO,OAAOA,CAAK,CAC9B,CACE,cAAcqE,EAAK,CACjB,OAAOA,EAAI,IAAIj4B,GAAM,KAAK,QAAQA,CAAE,CAAC,CACzC,CACE,0BAA2B,CACzB,KAAM,CACJ,MAAOk4B,EACP,cAAAC,EACA,MAAApE,CACN,EAAQ,KAAK,SAAU,EACbH,EAAQ,OAAO,OAAOsE,CAAW,EACjCE,EAAkB,CAAE,EACpBC,EAAW,CAAE,EACbC,EAAe,CAAE,EACjBC,EAAqB,CAAE,EACvBC,EAAc,CAAE,EAChBC,EAAgB,CAAE,EAClBC,EAAe,CAAE,EACjBC,EAA2B,CAAE,EAC7BC,EAAkB,CAAE,EAC1B,UAAW1J,KAAQ0E,EAAO,CACxB,KAAM,CACJ,SAAAkD,CACR,EAAU5H,EACA,CAAC4H,EAAS,gBAAkBA,EAAS,gBACvCsB,EAAgB,KAAKlJ,CAAI,EACpBA,EAAK,UACRyJ,EAAyB,KAAKzJ,CAAI,GAGjC4H,EAAS,eACZuB,EAAS,KAAKnJ,CAAI,GAEhB4H,EAAS,eAAiBA,EAAS,YAAcA,EAAS,cAC5DwB,EAAa,KAAKpJ,CAAI,EAEpB4H,EAAS,eACXyB,EAAmB,KAAKrJ,CAAI,EAE1BA,EAAK,UACPsJ,EAAY,KAAKtJ,CAAI,EAEnB4H,EAAS,gBACX2B,EAAc,KAAKvJ,CAAI,EAErBA,EAAK,OACPwJ,EAAa,KAAKxJ,CAAI,GAEpB4H,EAAS,YAAcA,EAAS,cAClC8B,EAAgB,KAAK1J,CAAI,CAEjC,CACI,MAAO,CACL,SAAAmJ,EACA,aAAAC,EACA,mBAAAC,EACA,YAAAC,EACA,cAAAC,EACA,aAAAC,EACA,gBAAAN,EACA,yBAAAO,EACA,gBAAAC,EACA,gBAAiBL,EAAmB,OAAS,EAC7C,cAAeJ,IAAkB,KAAOM,EAAc,SAAW7E,EAAM,QAAUgF,EAAgB,SAAW,EAC5G,aAAc,CAAC,CAAC7E,GAAS2E,EAAa,SAAW9E,EAAM,OACvD,YAAawE,EAAgB,SAAW,GAAKI,EAAY,SAAWJ,EAAgB,OACpF,mBAAoBA,EAAgB,OAAS,EAC7C,YAAaxE,EAAM,KAAK1E,GAAQA,EAAK,OAAO,CAC7C,CACL,CACE,qBAAqBA,EAAM0E,EAAO,CAC5BA,IAAU,SACZA,EAAQ,KAAK,SAAU,GAEzB,GAAI,CACF3K,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,SAAST,EAAO,CAAC1E,CAAI,CAAC,CACnF,OAAQjqB,EAAK,CACZ,OAAOA,CACb,CACI,OAAO,IACX,CACE,mBAAmBiqB,EAAM,CACvB,GAAI,CACFjG,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,mBAAmBnF,CAAI,CACpF,OAAQjqB,EAAK,CACZ,OAAOA,EAAI,OACjB,CACI,OAAO,IACX,CACE,8BAA8B2uB,EAAO,CACnC,MAAMd,EAAgB,KAAK,SAAU,EACrC,GAAI,CACF7J,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,8BAA8BvB,EAAec,CAAK,CAC/G,OAAQ3uB,EAAK,CACZ,OAAOA,EAAI,OACjB,CACI,OAAO,IACX,CACE,yBAAyBsyB,EAAQ,CAC/B,KAAM,CACJ,MAAA3D,CACN,EAAQ,KAAK,SAAU,EACnB,MAAI,GAAAA,EAAM2D,CAAM,GAAK,CAAC3D,EAAM2D,CAAM,EAAE,QAIxC,CAME,QAAQrI,EAAM,CACZjG,EAA4B,KAAM6L,EAAuB,EAAEA,EAAuB,EAAE5F,CAAI,EACxF,KAAM,CACJ,eAAA2J,EACA,gBAAAC,EACA,OAAAzb,CACN,EAAQ4L,EAA4B,KAAMgM,EAAwB,EAAEA,EAAwB,EAAE,CAAC/F,CAAI,CAAC,EAC1F6J,EAAoB1b,EAAO,OAAO0W,GAASA,EAAM,aAAa,EAEpE,GADA9K,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAEoE,CAAiB,EAC/E1b,EAAO,OAAS,EAAG,MAAMA,EAAO,CAAC,EACrC,KAAK,SAAS,CACZ,MAAOwb,CACb,CAAK,EACD,KAAM,CAACG,CAAmB,EAAIF,EAC9B,YAAK,KAAK,aAAcE,CAAmB,EAC3C,KAAK,KAAK,cAAeF,CAAe,EACxC,KAAK,IAAI,eAAeE,EAAoB,IAAI,KAAKA,EAAoB,EAAE,gBAAgBA,EAAoB,IAAI,EAAE,EACrH/P,EAA4B,KAAM+L,EAAmB,EAAEA,EAAmB,EAAG,EACtEgE,EAAoB,EAC/B,CASE,SAASC,EAAiB,CACxBhQ,EAA4B,KAAM6L,EAAuB,EAAEA,EAAuB,EAAG,EACrF,KAAM,CACJ,eAAA+D,EACA,gBAAAC,EACA,OAAAzb,CACN,EAAQ4L,EAA4B,KAAMgM,EAAwB,EAAEA,EAAwB,EAAEgE,CAAe,EACnGF,EAAoB1b,EAAO,OAAO0W,GAASA,EAAM,aAAa,EACpE9K,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAEoE,CAAiB,EACnF,MAAMG,EAAuB7b,EAAO,OAAO0W,GAAS,CAACA,EAAM,aAAa,EACxE,GAAImF,EAAqB,OAAS,EAAG,CACnC,IAAI3G,EAAU;AAAA,EAUd,GATA2G,EAAqB,QAAQC,GAAY,CACvC5G,GAAW;AAAA,KAAQ4G,EAAS,OAAO,EAC3C,CAAO,EACD,KAAK,KAAK,CACR,QAAS,KAAK,KAAK,qBAAsB,CACvC,YAAaD,EAAqB,MAC5C,CAAS,EACD,QAAS3G,CACV,EAAE,QAAS,KAAK,KAAK,WAAW,EAC7B,OAAO,gBAAmB,WAC5B,MAAM,IAAI,eAAe2G,EAAsB3G,CAAO,EACjD,CACL,MAAMttB,EAAM,IAAI,MAAMstB,CAAO,EAE7B,MAAAttB,EAAI,OAASi0B,EACPj0B,CACd,CACA,CAII,KAAK,SAAS,CACZ,MAAO4zB,CACb,CAAK,EACDC,EAAgB,QAAQ5J,GAAQ,CAC9B,KAAK,KAAK,aAAcA,CAAI,CAClC,CAAK,EACD,KAAK,KAAK,cAAe4J,CAAe,EACpCA,EAAgB,OAAS,EAC3B,KAAK,IAAI,kBAAkBA,EAAgB,MAAM,QAAQ,EAEzD,OAAO,OAAOA,CAAe,EAAE,QAAQ5J,GAAQ,CAC7C,KAAK,IAAI,eAAeA,EAAK,IAAI;AAAA,OAAUA,EAAK,EAAE;AAAA,SAAYA,EAAK,IAAI,EAAE,CACjF,CAAO,EAEC4J,EAAgB,OAAS,GAC3B7P,EAA4B,KAAM+L,EAAmB,EAAEA,EAAmB,EAAG,CAEnF,CACE,YAAYoE,EAAS,CACnB,KAAM,CACJ,MAAAxF,EACA,eAAAkE,CACN,EAAQ,KAAK,SAAU,EACbF,EAAe,CACnB,GAAGhE,CACJ,EACKyF,EAAiB,CACrB,GAAGvB,CACJ,EACKwB,EAAe,OAAO,OAAO,IAAI,EACvCF,EAAQ,QAAQ7B,GAAU,CACpB3D,EAAM2D,CAAM,IACd+B,EAAa/B,CAAM,EAAI3D,EAAM2D,CAAM,EACnC,OAAOK,EAAaL,CAAM,EAElC,CAAK,EAGD,SAASgC,EAAiBC,EAAc,CACtC,OAAOF,EAAaE,CAAY,IAAM,MAC5C,CACI,OAAO,KAAKH,CAAc,EAAE,QAAQI,GAAY,CAC9C,MAAMC,EAAa5B,EAAe2B,CAAQ,EAAE,QAAQ,OAAOF,CAAgB,EAG3E,GAAIG,EAAW,SAAW,EAAG,CAC3B,OAAOL,EAAeI,CAAQ,EAC9B,MACR,CACM,KAAM,CACJ,aAAA5B,CACR,EAAU,KAAK,SAAU,EACnB,GAAI6B,EAAW,SAAW5B,EAAe2B,CAAQ,EAAE,QAAQ,QAAU,CAAC5B,EAAa,uBACjF,MAAM,IAAI,MAAM,+EAA+E,EAEjGwB,EAAeI,CAAQ,EAAI,CACzB,GAAG3B,EAAe2B,CAAQ,EAC1B,QAASC,CACV,CACP,CAAK,EACD,MAAMC,EAAc,CAClB,eAAgBN,EAChB,MAAOzB,CACR,EAIG,OAAO,KAAKA,CAAY,EAAE,SAAW,IACvC+B,EAAY,eAAiB,GAC7BA,EAAY,MAAQ,KACpBA,EAAY,eAAiB,MAE/B,KAAK,SAASA,CAAW,EACzB1Q,EAA4B,KAAMmM,EAA6B,EAAEA,EAA6B,EAAG,EACjG,MAAMwE,EAAiB,OAAO,KAAKN,CAAY,EAC/CM,EAAe,QAAQrC,GAAU,CAC/B,KAAK,KAAK,eAAgB+B,EAAa/B,CAAM,CAAC,CACpD,CAAK,EACGqC,EAAe,OAAS,EAC1B,KAAK,IAAI,WAAWA,EAAe,MAAM,QAAQ,EAEjD,KAAK,IAAI,kBAAkBA,EAAe,KAAK,IAAI,CAAC,EAAE,CAE5D,CACE,WAAWrC,EAAQ,CACjB,KAAK,YAAY,CAACA,CAAM,CAAC,CAC7B,CACE,YAAYA,EAAQ,CAClB,GAAI,CAAC,KAAK,SAAU,EAAC,aAAa,kBAAoB,KAAK,QAAQA,CAAM,EAAE,SAAS,eAClF,OAEF,MAAMrI,EAAO,KAAK,QAAQqI,CAAM,EAE1BsC,EAAW,EADC3K,EAAK,UAAY,IAEnC,YAAK,aAAaqI,EAAQ,CACxB,SAAAsC,CACN,CAAK,EACD,KAAK,KAAK,eAAgB3K,EAAM2K,CAAQ,EACjCA,CACX,CACE,UAAW,CACT,MAAMjC,EAAe,CACnB,GAAG,KAAK,WAAW,KACpB,EAC8B,OAAO,KAAKA,CAAY,EAAE,OAAO1I,GACvD,CAAC0I,EAAa1I,CAAI,EAAE,SAAS,gBAAkB0I,EAAa1I,CAAI,EAAE,SAAS,aACnF,EACsB,QAAQA,GAAQ,CACrC,MAAM4K,EAAc,CAClB,GAAGlC,EAAa1I,CAAI,EACpB,SAAU,EACX,EACD0I,EAAa1I,CAAI,EAAI4K,CAC3B,CAAK,EACD,KAAK,SAAS,CACZ,MAAOlC,CACb,CAAK,EACD,KAAK,KAAK,WAAW,CACzB,CACE,WAAY,CACV,MAAMA,EAAe,CACnB,GAAG,KAAK,WAAW,KACpB,EAC8B,OAAO,KAAKA,CAAY,EAAE,OAAO1I,GACvD,CAAC0I,EAAa1I,CAAI,EAAE,SAAS,gBAAkB0I,EAAa1I,CAAI,EAAE,SAAS,aACnF,EACsB,QAAQA,GAAQ,CACrC,MAAM4K,EAAc,CAClB,GAAGlC,EAAa1I,CAAI,EACpB,SAAU,GACV,MAAO,IACR,EACD0I,EAAa1I,CAAI,EAAI4K,CAC3B,CAAK,EACD,KAAK,SAAS,CACZ,MAAOlC,CACb,CAAK,EACD,KAAK,KAAK,YAAY,CAC1B,CACE,UAAW,CACT,MAAMA,EAAe,CACnB,GAAG,KAAK,WAAW,KACpB,EACKmC,EAAe,OAAO,KAAKnC,CAAY,EAAE,OAAO1I,GAC7C0I,EAAa1I,CAAI,EAAE,KAC3B,EAcD,GAbA6K,EAAa,QAAQ7K,GAAQ,CAC3B,MAAM4K,EAAc,CAClB,GAAGlC,EAAa1I,CAAI,EACpB,SAAU,GACV,MAAO,IACR,EACD0I,EAAa1I,CAAI,EAAI4K,CAC3B,CAAK,EACD,KAAK,SAAS,CACZ,MAAOlC,EACP,MAAO,IACb,CAAK,EACD,KAAK,KAAK,YAAa,OAAO,OAAOA,CAAY,CAAC,EAC9CmC,EAAa,SAAW,EAC1B,OAAO,QAAQ,QAAQ,CACrB,WAAY,CAAE,EACd,OAAQ,CAAA,CAChB,CAAO,EAEH,MAAMN,EAAWxQ,EAA4B,KAAMwM,EAAa,EAAEA,EAAa,EAAEsE,EAAc,CAC7F,oBAAqB,EAC3B,CAAK,EACD,OAAO9Q,EAA4B,KAAM2M,EAAU,EAAEA,EAAU,EAAE6D,CAAQ,CAC7E,CACE,WAAY,CACV,KAAK,KAAK,YAAY,EACtB,KAAM,CACJ,MAAA7F,CACN,EAAQ,KAAK,SAAU,EACbwF,EAAU,OAAO,KAAKxF,CAAK,EAC7BwF,EAAQ,QACV,KAAK,YAAYA,CAAO,EAE1B,KAAK,SAASjF,EAAkB,CACpC,CACE,YAAYoD,EAAQ,CAClB,KAAK,aAAaA,EAAQ,CACxB,MAAO,KACP,SAAU,EAChB,CAAK,EACD,KAAK,KAAK,eAAgB,KAAK,QAAQA,CAAM,CAAC,EAC9C,MAAMkC,EAAWxQ,EAA4B,KAAMwM,EAAa,EAAEA,EAAa,EAAE,CAAC8B,CAAM,EAAG,CACzF,oBAAqB,EAC3B,CAAK,EACD,OAAOtO,EAA4B,KAAM2M,EAAU,EAAEA,EAAU,EAAE6D,CAAQ,CAC7E,CACE,QAAS,CACP,KAAK,eAAerC,GAAU,CAC5B,IAAI4C,GAEHA,EAAY5C,EAAO,WAAa,MAAQ4C,EAAU,QAAU,MAAQA,EAAU,OAAQ,CAC7F,CAAK,CACL,CAEE,CAAC,OAAO,IAAI,gCAAgC,CAAC,GAAI,CAC/C,OAAO/Q,EAA4B,KAAMkM,EAAoB,EAAEA,EAAoB,EAAG,CAC1F,CACE,oBAAqB,CACnB,IAAI8E,IACYA,EAAwB,OAAO,UAAU,SAAW,KAAOA,EAAwB,KAMjG,KAAK,KAAK,WAAW,EACjB,KAAK,aACP,KAAK,KAAK,aAAa,EACvB,KAAK,KAAK,KAAK,KAAK,qBAAqB,EAAG,UAAW,GAAI,EAC3D,KAAK,WAAa,MARpB,KAAK,KAAK,YAAY,EACtB,KAAK,KAAK,KAAK,KAAK,sBAAsB,EAAG,QAAS,CAAC,EACvD,KAAK,WAAa,GASxB,CACE,OAAQ,CACN,OAAO,KAAK,KAAK,EACrB,CAKE,IAAIC,EAAQ,CACV,GAAI,OAAOA,GAAW,WAAY,CAChC,MAAMC,EAAM,oCAAoCD,IAAW,KAAO,OAAS,OAAOA,CAAM,sEACxF,MAAM,IAAI,UAAUC,CAAG,CAC7B,CAGI,QAASrJ,EAAQ,UAAU,OAAQzjB,EAAO,IAAI,MAAMyjB,EAAQ,EAAIA,EAAQ,EAAI,CAAC,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG1jB,EAAK0jB,EAAQ,CAAC,EAAI,UAAUA,CAAK,EAEnC,MAAMqG,EAAS,IAAI8C,EAAO,KAAM,GAAG7sB,CAAI,EACjC+sB,EAAWhD,EAAO,GACxB,GAAI,CAACgD,EACH,MAAM,IAAI,MAAM,6BAA6B,EAE/C,GAAI,CAAChD,EAAO,KACV,MAAM,IAAI,MAAM,8BAA8B,EAEhD,MAAMiD,EAAsB,KAAK,UAAUD,CAAQ,EACnD,GAAIC,EAAqB,CACvB,MAAMF,EAAM,iCAAiCE,EAAoB,EAAE,qBAA0BD,CAAQ;AAAA,+CACrG,MAAM,IAAI,MAAMD,CAAG,CACzB,CAGI,OAAID,EAAO,SAET,KAAK,IAAI,SAASE,CAAQ,KAAKF,EAAO,OAAO,EAAE,EAE7C9C,EAAO,QAAQnO,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EACrEnL,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EAAEgD,EAAO,IAAI,EAAE,KAAKA,CAAM,EAE9EnO,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EAAEgD,EAAO,IAAI,EAAI,CAACA,CAAM,EAE9EA,EAAO,QAAS,EAChB,KAAK,KAAK,eAAgBA,CAAM,EACzB,IACX,CAKE,UAAUp3B,EAAI,CACZ,UAAWs6B,KAAW,OAAO,OAAOrR,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,CAAC,EAAG,CAC1F,MAAMmG,EAAcD,EAAQ,KAAKlD,GAAUA,EAAO,KAAOp3B,CAAE,EAC3D,GAAIu6B,GAAe,KAAM,OAAOA,CACtC,CAEA,CACE,CAAC,OAAO,IAAI,uBAAuB,CAAC,EAAEpsB,EAAM,CAC1C,OAAO8a,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EAAEjmB,CAAI,CACrE,CAME,eAAeqsB,EAAQ,CACrB,OAAO,OAAOvR,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQoG,CAAM,CAC/F,CAOE,aAAaC,EAAU,CACrB,KAAK,IAAI,mBAAmBA,EAAS,EAAE,EAAE,EACzC,KAAK,KAAK,gBAAiBA,CAAQ,EAC/BA,EAAS,WACXA,EAAS,UAAW,EAEtB,MAAMpkB,EAAO4S,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EAAEqG,EAAS,IAAI,EAI1E9sB,EAAQ0I,EAAK,UAAUvS,GAAQA,EAAK,KAAO22B,EAAS,EAAE,EACxD9sB,IAAU,IACZ0I,EAAK,OAAO1I,EAAO,CAAC,EAGtB,MAAM+sB,EAAe,CACnB,QAAS,CACP,GAHU,KAAK,SAAU,EAGhB,QACT,CAACD,EAAS,EAAE,EAAG,MACvB,CACK,EACD,KAAK,SAASC,CAAY,CAC9B,CAKE,SAAU,CACR,KAAK,IAAI,yBAAyB,KAAK,KAAK,EAAE,+CAA+C,EAC7F,KAAK,UAAW,EAChBzR,EAA4B,KAAMqL,EAAiB,EAAEA,EAAiB,EAAG,EACzE,KAAK,eAAe8C,GAAU,CAC5B,KAAK,aAAaA,CAAM,CAC9B,CAAK,EACG,OAAO,OAAW,KAAe,OAAO,sBAC1C,OAAO,oBAAoB,SAAUnO,EAA4B,KAAMsM,EAAmB,EAAEA,EAAmB,CAAC,EAChH,OAAO,oBAAoB,UAAWtM,EAA4B,KAAMsM,EAAmB,EAAEA,EAAmB,CAAC,EAEvH,CACE,UAAW,CACT,KAAM,CACJ,KAAAoF,CACN,EAAQ,KAAK,SAAU,EACnB,KAAK,SAAS,CACZ,KAAMA,EAAK,MAAM,CAAC,CACxB,CAAK,EACD,KAAK,KAAK,aAAa,CAC3B,CAME,KAAKpI,EAASpkB,EAAMysB,EAAU,CACxBzsB,IAAS,SACXA,EAAO,QAELysB,IAAa,SACfA,EAAW,KAEb,MAAMC,EAAmB,OAAOtI,GAAY,SAC5C,KAAK,SAAS,CACZ,KAAM,CAAC,GAAG,KAAK,SAAQ,EAAG,KAAM,CAC9B,KAAApkB,EACA,QAAS0sB,EAAmBtI,EAAQ,QAAUA,EAC9C,QAASsI,EAAmBtI,EAAQ,QAAU,IAC/C,CAAA,CACP,CAAK,EACD,WAAW,IAAM,KAAK,SAAQ,EAAIqI,CAAQ,EAC1C,KAAK,KAAK,cAAc,CAC5B,CAME,IAAIrI,EAASpkB,EAAM,CACjB,KAAM,CACJ,OAAA2sB,CACD,EAAG,KAAK,KACT,OAAQ3sB,EAAI,CACV,IAAK,QACH2sB,EAAO,MAAMvI,CAAO,EACpB,MACF,IAAK,UACHuI,EAAO,KAAKvI,CAAO,EACnB,MACF,QACEuI,EAAO,MAAMvI,CAAO,EACpB,KACR,CACA,CACE,sBAAsBvyB,EAAI+6B,EAAQ,CAChC9R,EAA4B,KAAMuM,EAAkB,EAAEA,EAAkB,EAAE,IAAIx1B,EAAI+6B,CAAM,CAC5F,CAGE,wBAAwB7L,EAAM,CAC5B,GAAI,CAACA,EAAK,OAAQ,MAAM,IAAI,MAAM,oDAAoDA,EAAK,EAAE,EAAE,EAC/F,MAAM8L,EAAgB/R,EAA4B,KAAMuM,EAAkB,EAAEA,EAAkB,EAAE,IAAItG,EAAK,OAAO,eAAe,EAC/H,GAAI8L,GAAiB,KAAM,MAAM,IAAI,MAAM,oBAAoB9L,EAAK,OAAO,eAAe,8BAA8BA,EAAK,EAAE,GAAG,EAClI,OAAO8L,CACX,CAKE,QAAQvB,EAAU,CAEhB,OADA,KAAK,IAAI,uCAAuCA,CAAQ,GAAG,EACtD,KAAK,SAAU,EAAC,eAAeA,CAAQ,EAIrCxQ,EAA4B,KAAM2M,EAAU,EAAEA,EAAU,EAAE6D,CAAQ,GAHvExQ,EAA4B,KAAM0M,EAAa,EAAEA,EAAa,EAAE8D,CAAQ,EACjE,QAAQ,OAAO,IAAI,MAAM,oBAAoB,CAAC,EAG3D,CACE,CAAC,OAAO,IAAI,yBAAyB,CAAC,GAAI,CAExC,OAAOxQ,EAA4B,KAAMwM,EAAa,EAAEA,EAAa,EAAE,GAAG,SAAS,CACvF,CAIE,cAAcgE,EAAUl2B,EAAM,CAC5B,GAAI,CAAC0lB,EAA4B,KAAMyM,EAAU,EAAEA,EAAU,EAAE+D,CAAQ,EAAG,CACxE,KAAK,IAAI,2DAA2DA,CAAQ,EAAE,EAC9E,MACN,CACI,KAAM,CACJ,eAAA3B,CACN,EAAQ,KAAK,SAAU,EACbmD,EAAgB,CACpB,GAAGnD,EAAe2B,CAAQ,EAC1B,OAAQ,CACN,GAAG3B,EAAe2B,CAAQ,EAAE,OAC5B,GAAGl2B,CACX,CACK,EACD,KAAK,SAAS,CACZ,eAAgB,CACd,GAAGu0B,EACH,CAAC2B,CAAQ,EAAGwB,CACpB,CACA,CAAK,CACL,CAIE,QAAS,CACP,IAAIC,GACGA,EAAwBjS,EAA4B,KAAMmL,EAAQ,EAAEA,EAAQ,EAAE,WAAgB,MAAQ8G,EAAsB,QACjI,KAAK,IAAI,oCAAqC,SAAS,EAEzD,GAAI,CACF,MAAAtH,CACN,EAAQ,KAAK,SAAU,EACnB,MAAMuH,EAAuB,KAAK,KAAK,eAAevH,CAAK,EAC3D,OAAIuH,IAAyB,GACpB,QAAQ,OAAO,IAAI,MAAM,+DAA+D,CAAC,GAE9FA,GAAwB,OAAOA,GAAyB,WAC1DvH,EAAQuH,EAGR,KAAK,SAAS,CACZ,MAAAvH,CACR,CAAO,GAEI,QAAQ,QAAS,EAAC,KAAK,IAAM3K,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,yBAAyBT,CAAK,CAAC,EAAE,MAAM3uB,GAAO,CAC5IgkB,MAAAA,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAE,CAAC1vB,CAAG,CAAC,EACjEA,CACZ,CAAK,EAAE,KAAK,IAAM,CACZ,GAAI,CAACgkB,EAA4B,KAAM4L,EAAwB,EAAEA,EAAwB,EAAEjB,CAAK,EAC9F,MAAM,IAAItB,GAAiB,KAAK,KAAK,0BAA0B,CAAC,CAExE,CAAK,EAAE,MAAMrtB,GAAO,CAId,MAAMA,CACZ,CAAK,EAAE,KAAK,IAAM,CACZ,KAAM,CACJ,eAAA6yB,CACR,EAAU,KAAK,SAAU,EAEbsD,EAA0B,OAAO,OAAOtD,CAAc,EAAE,QAAQuD,GAAQA,EAAK,OAAO,EACpFC,EAAiB,CAAE,EACzB,OAAO,KAAK1H,CAAK,EAAE,QAAQ2D,GAAU,CACnC,MAAMrI,EAAO,KAAK,QAAQqI,CAAM,EAE5B,CAACrI,EAAK,SAAS,eAAiBkM,EAAwB,QAAQ7D,CAAM,IAAM,IAC9E+D,EAAe,KAAKpM,EAAK,EAAE,CAErC,CAAO,EACD,MAAMuK,EAAWxQ,EAA4B,KAAMwM,EAAa,EAAEA,EAAa,EAAE6F,CAAc,EAC/F,OAAOrS,EAA4B,KAAM2M,EAAU,EAAEA,EAAU,EAAE6D,CAAQ,CAC/E,CAAK,EAAE,MAAMx0B,GAAO,CACd,WAAK,KAAK,QAASA,CAAG,EACtB,KAAK,IAAIA,EAAK,OAAO,EACfA,CACZ,CAAK,EACL,CACA,CACA,SAAS2xB,GAAgBvZ,EAAQ,CAC/B,UAAW0W,KAAS1W,EACd0W,EAAM,cACR,KAAK,KAAK,qBAAsBA,EAAM,KAAMA,CAAK,EAEjD,KAAK,KAAK,QAASA,EAAOA,EAAM,IAAI,EAEtC,KAAK,IAAIA,EAAO,SAAS,EAE3B,MAAMwH,EAAmBle,EAAO,OAAO0W,GAASA,EAAM,YAAY,EAG5DyH,EAAe,EACfC,EAAcF,EAAiB,MAAM,EAAGC,CAAY,EACpDE,EAAmBH,EAAiB,MAAMC,CAAY,EAC5DC,EAAY,QAAQ7V,GAAS,CAC3B,GAAI,CACF,QAAA2M,EACA,QAAAoJ,EAAU,EAChB,EAAQ/V,EACJ,KAAK,KAAK,CACR,QAAA2M,EACA,QAAAoJ,CACD,EAAE,QAAS,KAAK,KAAK,WAAW,CACrC,CAAG,EACGD,EAAiB,OAAS,GAC5B,KAAK,KAAK,CACR,QAAS,KAAK,KAAK,+BAAgC,CACjD,MAAOA,EAAiB,MACzB,CAAA,CACP,CAAK,CAEL,CACA,SAAS/E,GAAgCzH,EAAM,CAC7C,KAAM,CACJ,cAAA+E,EACA,MAAAF,CACJ,EAAM9K,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,6BAA6BnF,CAAI,EACjG,OAAI+E,EAAc,OAAS,GACzB,KAAK,aAAa/E,EAAK,GAAI,CACzB,0BAA2B+E,CACjC,CAAK,EACD,KAAK,IAAIF,EAAM,OAAO,EACtB,KAAK,KAAK,qBAAsB7E,EAAM6E,CAAK,EACpC,IAEF,EACT,CACA,SAAS2C,GAA0B9C,EAAO,CACxC,IAAIgI,EAAU,GACd,UAAW1M,KAAQ,OAAO,OAAO0E,CAAK,EAC/B3K,EAA4B,KAAM2L,EAA8B,EAAEA,EAA8B,EAAE1F,CAAI,IACzG0M,EAAU,IAGd,OAAOA,CACT,CACA,SAASnF,GAAyBvH,EAAM,CACtC,KAAM,CACJ,eAAA2M,CACJ,EAAM,KAAK,SAAU,EACnB,GAAIA,IAAmB,GAAO,CAC5B,MAAM9H,EAAQ,IAAIzB,GAAiB,KAAK,KAAK,oBAAoB,EAAG,CAClE,KAAApD,CACN,CAAK,EACDjG,MAAAA,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAE,CAACZ,CAAK,CAAC,EACnEA,CACV,CACA,CACA,SAASyC,GAAgBsF,EAAsB,CAI7C,MAAM5M,EAAO4M,aAAgC,KAAO,CAClD,KAAMA,EAAqB,KAC3B,KAAMA,EAAqB,KAC3B,KAAMA,EAAqB,KAC3B,KAAMA,CACV,EAAMA,EACEjM,EAAWZ,GAAYC,CAAI,EAC3B6M,EAAW5L,GAAYN,EAAUX,CAAI,EACrCE,EAAgBP,GAAwBkN,CAAQ,EAAE,UAClD/7B,EAAK4vB,GAAcV,EAAM,KAAK,MAAK,CAAE,EACrC8M,EAAO9M,EAAK,MAAQ,CAAE,EAC5B8M,EAAK,KAAOD,EACZC,EAAK,KAAOnM,EAGZ,MAAM/D,EAAO,OAAO,SAASoD,EAAK,KAAK,IAAI,EAAIA,EAAK,KAAK,KAAO,KAChE,MAAO,CACL,OAAQA,EAAK,QAAU,GACvB,GAAAlvB,EACA,KAAM+7B,EACN,UAAW3M,GAAiB,GAC5B,KAAM,CACJ,GAAG,KAAK,SAAQ,EAAG,KACnB,GAAG4M,CACJ,EACD,KAAMnM,EACN,KAAMX,EAAK,KACX,SAAU,CACR,WAAY,EACZ,cAAe,GACf,WAAYpD,EACZ,eAAgB,GAChB,cAAe,IAChB,EACD,KAAAA,EACA,QAAS,GACT,SAAUoD,EAAK,UAAY,GAC3B,OAAQA,EAAK,OACb,QAASA,EAAK,OACf,CACH,CACA,SAASqH,IAAuB,CAC1B,KAAK,KAAK,aAAe,CAAC,KAAK,uBACjC,KAAK,qBAAuB,WAAW,IAAM,CAC3C,KAAK,qBAAuB,KAC5B,KAAK,OAAM,EAAG,MAAMtxB,GAAO,CACpBA,EAAI,eACP,KAAK,IAAIA,EAAI,OAASA,EAAI,SAAWA,CAAG,CAElD,CAAO,CACF,EAAE,CAAC,EAER,CACA,SAASqxB,GAA0B2F,EAAY,CAC7C,KAAM,CACJ,MAAOnJ,CACX,EAAM,KAAK,SAAU,EAGb+F,EAAiB,CACrB,GAAG/F,CACJ,EACKgG,EAAkB,CAAE,EACpBzb,EAAS,CAAE,EACjB,UAAW6e,KAAaD,EACtB,GAAI,CACF,IAAIE,EACJ,IAAIC,EAAUnT,EAA4B,KAAM8L,EAAc,EAAEA,EAAc,EAAEmH,CAAS,EAMzF,MAAMG,GAAWF,EAAwBrJ,EAAcsJ,EAAQ,EAAE,IAAM,KAAO,OAASD,EAAsB,QACzGE,IAEFD,EAAU,CACR,GAFwBtJ,EAAcsJ,EAAQ,EAAE,EAGhD,QAAS,GACT,KAAMF,EAAU,IACjB,EACD,KAAK,IAAI,iDAAiDE,EAAQ,IAAI,KAAKA,EAAQ,EAAE,EAAE,GAEzF,MAAME,EAA0B,KAAK,KAAK,kBAAkBF,EAASvD,CAAc,EACnF,GAAI,CAACyD,GAA2B,KAAK,yBAAyBF,EAAQ,EAAE,EAAG,CACzE,IAAIG,EACJ,MAAM,IAAIjK,GAAiB,KAAK,KAAK,eAAgB,CACnD,UAAWiK,EAAgBH,EAAQ,OAAS,KAAOG,EAAgB,KAAK,KAAK,SAAS,CAChG,CAAS,EAAG,CACF,KAAML,CAChB,CAAS,CACT,CAGM,GAAII,IAA4B,IAAS,CAACD,EAExC,MAAM,IAAI/J,GAAiB,gEAAiE,CAC1F,aAAc,GACd,KAAM4J,CAChB,CAAS,EACQ,OAAOI,GAA4B,UAAYA,IAA4B,OACpFF,EAAUE,GAEZrT,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,mBAAmB+H,CAAO,EAGtFvD,EAAeuD,EAAQ,EAAE,EAAIA,EAC7BtD,EAAgB,KAAKsD,CAAO,CAC7B,OAAQn3B,EAAK,CACZoY,EAAO,KAAKpY,CAAG,CACrB,CAEE,GAAI,CAGFgkB,EAA4B,KAAMoL,EAAW,EAAEA,EAAW,EAAE,8BAA8B,OAAO,OAAOvB,CAAa,EAAGgG,CAAe,CACxI,OAAQ7zB,EAAK,CACZ,OAAAoY,EAAO,KAAKpY,CAAG,EAGR,CACL,eAAgB6tB,EAChB,gBAAiB,CAAE,EACnB,OAAAzV,CACD,CACL,CACE,MAAO,CACL,eAAAwb,EACA,gBAAAC,EACA,OAAAzb,CACD,CACH,CACA,SAASgZ,IAAwB,CAC/B,IAAImG,EAAuBC,EAC3B,MAAMtE,EAAgBlP,EAA4B,KAAMoM,EAAuB,EAAEA,EAAuB,EAAG,EAC3G,IAAIqH,EAAuB,KACvBvE,GAAiB,OACnBuE,EAAuB,KAAK,MAAMvE,EAAgB,GAAG,EACjDuE,EAAuB,IAAKA,EAAuB,IAAaA,EAAuB,IAAGA,EAAuB,IAEvH,KAAK,KAAK,YAAaF,EAAwBE,IAAyB,KAAOF,EAAwB,CAAC,EACxG,KAAK,SAAS,CACZ,eAAgBC,EAAyBC,IAAyB,KAAOD,EAAyB,CACtG,CAAG,CACH,CACA,SAASrG,IAA2B,CAMlC,MAAMuG,EAHQ,KAAK,SAAU,EAGC,OAAOzN,GAC5BA,EAAK,SAAS,eAAiBA,EAAK,SAAS,YAAcA,EAAK,SAAS,WACjF,EACD,GAAIyN,EAAgB,SAAW,EAC7B,MAAO,GAET,GAAIA,EAAgB,MAAMzN,GAAQA,EAAK,SAAS,cAAc,EAI5D,MAAO,GAET,MAAM0N,EAAc1N,GAAQA,EAAK,SAAS,YAAc,MAAQA,EAAK,SAAS,aAAe,EACvF2N,EAAuBF,EAAgB,OAAOC,CAAW,EACzDE,EAAyBH,EAAgB,OAAOzN,GAAQ,CAAC0N,EAAY1N,CAAI,CAAC,EAChF,GAAI2N,EAAqB,MAAM3N,GAAQA,EAAK,SAAS,cAAc,GAAK4N,EAAuB,OAAS,GAAK,CAACA,EAAuB,MAAM5N,GAAQA,EAAK,SAAS,cAAc,EAK7K,OAAO,KAET,MAAMiE,EAAiB0J,EAAqB,OAAO,CAAC71B,EAAKkoB,IAAS,CAChE,IAAI6N,EACJ,OAAO/1B,IAAQ+1B,EAAwB7N,EAAK,SAAS,aAAe,KAAO6N,EAAwB,EACpG,EAAE,CAAC,EACEC,EAAoBH,EAAqB,OAAO,CAAC71B,EAAKkoB,IAASloB,GAAOkoB,EAAK,SAAS,eAAiB,GAAI,CAAC,EAChH,OAAOiE,IAAmB,EAAI,EAAI6J,EAAoB7J,CACxD,CACA,SAASgD,IAAiB,CAExB,MAAM8G,EAAe,CAAClJ,EAAO7E,EAAMgO,IAAa,CAC9C,IAAIC,EAAWpJ,EAAM,SAAW,gBAC5BA,EAAM,UACRoJ,GAAY,IAAIpJ,EAAM,OAAO,IAE/B,KAAK,SAAS,CACZ,MAAOoJ,CACb,CAAK,EACGjO,GAAQ,MAAQA,EAAK,MAAM,KAAK,SAAU,EAAC,OAC7C,KAAK,aAAaA,EAAK,GAAI,CACzB,MAAOiO,EACP,SAAAD,CACR,CAAO,CAEJ,EACD,KAAK,GAAG,QAASD,CAAY,EAC7B,KAAK,GAAG,eAAgB,CAAC/N,EAAM6E,EAAOmJ,IAAa,CAEjD,GADAD,EAAalJ,EAAO7E,EAAMgO,CAAQ,EAC9B,OAAOnJ,GAAU,UAAYA,EAAM,QAAS,CAC9C,IAAIL,EACJ,KAAK,IAAIK,EAAM,QAAS,OAAO,EAC/B,MAAMqJ,EAAW,IAAI,MAAM,KAAK,KAAK,iBAAkB,CACrD,MAAO1J,EAAaxE,GAAQ,KAAO,OAASA,EAAK,OAAS,KAAOwE,EAAa,EAC/E,CAAA,CAAC,EACF0J,EAAS,aAAe,GACxBA,EAAS,QAAUrJ,EAAM,QACrBA,EAAM,UACRqJ,EAAS,SAAW,IAAIrJ,EAAM,OAAO,IAEvC9K,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAE,CAACyI,CAAQ,CAAC,CAClF,MACMnU,EAA4B,KAAM0L,EAAc,EAAEA,EAAc,EAAE,CAACZ,CAAK,CAAC,CAE/E,CAAG,EACD,IAAIsJ,EAAsC,KAC1C,KAAK,GAAG,iBAAkB,CAACtJ,EAAOH,IAAU,CAC1C,KAAM,CACJ,QAAArB,CACN,EAAQwB,EACE4H,EAAU/H,EAAM,IAAI1E,GAAQA,EAAK,KAAK,IAAI,EAAE,KAAK,IAAI,EACtDmO,IACH,KAAK,KAAK,CACR,QAAA9K,EACA,QAAAoJ,CACD,EAAE,UAAW,KAAK,KAAK,WAAW,EACnC0B,EAAsC,WAAW,IAAM,CACrDA,EAAsC,IAC9C,EAAS,KAAK,KAAK,WAAW,GAE1B,KAAK,IAAI,GAAG9K,CAAO,IAAIoJ,CAAO,GAAG,KAAM,EAAE,SAAS,CACtD,CAAG,EACD,KAAK,GAAG,SAAU,IAAM,CACtB,KAAK,SAAS,CACZ,MAAO,IACb,CAAK,CACL,CAAG,EACD,MAAM2B,EAAkB1J,GAAS,CAC/B,MAAM2J,EAAgB3J,EAAM,OAAO1E,GAAQ,CACzC,MAAMsO,EAAStO,GAAQ,MAAQ,KAAK,QAAQA,EAAK,EAAE,EACnD,OAAKsO,GAAQ,KAAK,IAAI,0DAA0DtO,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EAC1GsO,CACb,CAAK,EACKC,EAAa,OAAO,YAAYF,EAAc,IAAIrO,GAAQ,CAACA,EAAK,GAAI,CACxE,SAAU,CACR,cAAe,KAAK,IAAK,EACzB,eAAgB,GAChB,cAAe,EACf,WAAYA,EAAK,IACzB,CACK,CAAA,CAAC,CAAC,EACH,KAAK,gBAAgBuO,CAAU,CAChC,EACD,KAAK,GAAG,eAAgBH,CAAe,EACvC,KAAK,GAAG,kBAAmBrU,EAA4B,KAAMiM,EAAqB,EAAEA,EAAqB,CAAC,EAC1G,KAAK,GAAG,iBAAkB,CAAChG,EAAMwO,IAAe,CAC9C,GAAIxO,GAAQ,MAAQ,CAAC,KAAK,QAAQA,EAAK,EAAE,EAAG,CAC1C,KAAK,IAAI,0DAA0DA,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACN,CACI,MAAMyO,EAAkB,KAAK,QAAQzO,EAAK,EAAE,EAAE,SAC9C,KAAK,aAAaA,EAAK,GAAI,CACzB,SAAU,CACR,GAAGyO,EACH,YAAa1U,EAA4B,KAAMyL,EAAe,EAAEA,EAAe,EAAE,KAAO,EAAI,CAC1F,KAAM,eAChB,EAAY,OACJ,eAAgB,GAChB,WAAY,IACZ,cAAeiJ,EAAgB,UAChC,EACD,SAAUD,EACV,UAAWA,EAAW,UACtB,SAAU,EAChB,CAAK,EAIGxO,EAAK,MAAQ,MACf,KAAK,aAAaA,EAAK,GAAI,CACzB,KAAMwO,EAAW,eAAiBC,EAAgB,UAC1D,CAAO,EAEH1U,EAA4B,KAAMmM,EAA6B,EAAEA,EAA6B,EAAG,CACrG,CAAG,EACD,KAAK,GAAG,sBAAuB,CAAClG,EAAM4H,IAAa,CACjD,GAAI5H,GAAQ,MAAQ,CAAC,KAAK,QAAQA,EAAK,EAAE,EAAG,CAC1C,KAAK,IAAI,0DAA0DA,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACN,CACI,KAAK,aAAaA,EAAK,GAAI,CACzB,SAAU,CACR,GAAG,KAAK,QAAQA,EAAK,EAAE,EAAE,SACzB,WAAY4H,CACpB,CACA,CAAK,CACL,CAAG,EACD,KAAK,GAAG,sBAAuB5H,GAAQ,CACrC,GAAIA,GAAQ,MAAQ,CAAC,KAAK,QAAQA,EAAK,EAAE,EAAG,CAC1C,KAAK,IAAI,0DAA0DA,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACN,CACI,MAAM0E,EAAQ,CACZ,GAAG,KAAK,WAAW,KACpB,EACDA,EAAM1E,EAAK,EAAE,EAAI,CACf,GAAG0E,EAAM1E,EAAK,EAAE,EAChB,SAAU,CACR,GAAG0E,EAAM1E,EAAK,EAAE,EAAE,QAC1B,CACK,EACD,OAAO0E,EAAM1E,EAAK,EAAE,EAAE,SAAS,WAC/B,KAAK,SAAS,CACZ,MAAA0E,CACN,CAAK,CACL,CAAG,EACD,KAAK,GAAG,uBAAwB,CAAC1E,EAAM4H,IAAa,CAClD,GAAI5H,GAAQ,MAAQ,CAAC,KAAK,QAAQA,EAAK,EAAE,EAAG,CAC1C,KAAK,IAAI,0DAA0DA,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACN,CACI,KAAK,aAAaA,EAAK,GAAI,CACzB,SAAU,CACR,GAAG,KAAK,SAAU,EAAC,MAAMA,EAAK,EAAE,EAAE,SAClC,YAAa4H,CACrB,CACA,CAAK,CACL,CAAG,EACD,KAAK,GAAG,uBAAwB5H,GAAQ,CACtC,GAAIA,GAAQ,MAAQ,CAAC,KAAK,QAAQA,EAAK,EAAE,EAAG,CAC1C,KAAK,IAAI,0DAA0DA,GAAQ,KAAO,OAASA,EAAK,EAAE,EAAE,EACpG,MACN,CACI,MAAM0E,EAAQ,CACZ,GAAG,KAAK,WAAW,KACpB,EACDA,EAAM1E,EAAK,EAAE,EAAI,CACf,GAAG0E,EAAM1E,EAAK,EAAE,EAChB,SAAU,CACR,GAAG0E,EAAM1E,EAAK,EAAE,EAAE,QAC1B,CACK,EACD,OAAO0E,EAAM1E,EAAK,EAAE,EAAE,SAAS,YAC/B,KAAK,SAAS,CACZ,MAAA0E,CACN,CAAK,CACL,CAAG,EACD,KAAK,GAAG,WAAY,IAAM,CAExB3K,EAA4B,KAAMmM,EAA6B,EAAEA,EAA6B,EAAG,CACrG,CAAG,EAGD,KAAK,GAAG,+BAAgClG,GAAQ,CAC1CA,GACFjG,EAA4B,KAAM2L,EAA8B,EAAEA,EAA8B,EAAE1F,CAAI,CAE5G,CAAG,EAGG,OAAO,OAAW,KAAe,OAAO,mBAC1C,OAAO,iBAAiB,SAAUjG,EAA4B,KAAMsM,EAAmB,EAAEA,EAAmB,CAAC,EAC7G,OAAO,iBAAiB,UAAWtM,EAA4B,KAAMsM,EAAmB,EAAEA,EAAmB,CAAC,EAC9G,WAAWtM,EAA4B,KAAMsM,EAAmB,EAAEA,EAAmB,EAAG,GAAI,EAEhG,CACA,SAASW,GAAekD,EAAS5G,EAAM,CACjCA,IAAS,SACXA,EAAO,CAAE,GAGX,KAAM,CACJ,oBAAAoL,EAAsB,EAC1B,EAAMpL,EACE,CACJ,eAAAqJ,EACA,eAAA/D,CACJ,EAAM,KAAK,SAAU,EACnB,GAAI,CAAC+D,GAAkB,CAAC+B,EACtB,MAAM,IAAI,MAAM,gDAAgD,EAElE,MAAMnE,EAAW5N,GAAQ,EACzB,YAAK,KAAK,SAAU4N,EAAU,KAAK,cAAcL,CAAO,CAAC,EACzD,KAAK,SAAS,CACZ,eAAgB,KAAK,KAAK,6BAA+B,IAAS,KAAK,KAAK,uBAAyB,GACrG,eAAgB,CACd,GAAGtB,EACH,CAAC2B,CAAQ,EAAG,CACV,QAAAL,EACA,KAAM,EACN,OAAQ,CAAA,CAChB,CACA,CACA,CAAG,EACMK,CACT,CACA,SAASxD,GAAYwD,EAAU,CAC7B,KAAM,CACJ,eAAA3B,CACJ,EAAM,KAAK,SAAU,EACnB,OAAOA,EAAe2B,CAAQ,CAChC,CACA,SAASzD,GAAeyD,EAAU,CAChC,MAAM3B,EAAiB,CACrB,GAAG,KAAK,WAAW,cACpB,EACD,OAAOA,EAAe2B,CAAQ,EAC9B,KAAK,SAAS,CACZ,eAAA3B,CACJ,CAAG,CACH,CACA,eAAe/B,GAAY0D,EAAU,CACnC,MAAMoE,EAAmB,IAAM,CAC7B,KAAM,CACJ,eAAA/F,CACN,EAAQ,KAAK,SAAU,EACnB,OAAOA,EAAe2B,CAAQ,CAC/B,EACD,IAAIwB,EAAgB4C,EAAkB,EACtC,MAAMC,EAAQ,CAAC,GAAG7U,EAA4B,KAAMuL,EAAc,EAAEA,EAAc,EAAG,GAAGvL,EAA4B,KAAMwL,EAAU,EAAEA,EAAU,EAAG,GAAGxL,EAA4B,KAAMyL,EAAe,EAAEA,EAAe,CAAC,EACzN,GAAI,CACF,QAASqJ,EAAO9C,EAAc,MAAQ,EAAG8C,EAAOD,EAAM,QAC/C7C,EADuD8C,IAAQ,CAIpE,MAAMxS,EAAKuS,EAAMC,CAAI,EACrB,KAAK,SAAS,CACZ,eAAgB,CACd,GAAG,KAAK,SAAQ,EAAG,eACnB,CAACtE,CAAQ,EAAG,CACV,GAAGwB,EACH,KAAA8C,CACZ,CACA,CACA,CAAO,EACD,KAAM,CACJ,QAAA3E,CACR,EAAU6B,EAIJ,MAAM1P,EAAG6N,EAASK,CAAQ,EAG1BwB,EAAgB4C,EAAkB,CACxC,CACG,OAAQ54B,EAAK,CACZgkB,MAAAA,EAA4B,KAAM0M,EAAa,EAAEA,EAAa,EAAE8D,CAAQ,EAClEx0B,CACV,CAGE,GAAIg2B,EAAe,CAWjBA,EAAc,QAAQ,QAAQ1D,GAAU,CACtC,MAAMrI,EAAO,KAAK,QAAQqI,CAAM,EAC5BrI,GAAQA,EAAK,SAAS,aACxB,KAAK,KAAK,uBAAwBA,CAAI,CAE9C,CAAK,EACD,MAAM0E,EAAQqH,EAAc,QAAQ,IAAI1D,GAAU,KAAK,QAAQA,CAAM,CAAC,EAChEyG,EAAapK,EAAM,OAAO1E,GAAQ,CAACA,EAAK,KAAK,EAC7C+O,EAASrK,EAAM,OAAO1E,GAAQA,EAAK,KAAK,EAC9C,KAAK,cAAcuK,EAAU,CAC3B,WAAAuE,EACA,OAAAC,EACA,SAAAxE,CACN,CAAK,EAGDwB,EAAgB4C,EAAkB,CACtC,CAKE,IAAIhkB,EACJ,OAAIohB,IACFphB,EAASohB,EAAc,OACvB,KAAK,KAAK,WAAYphB,CAAM,EAC5BoP,EAA4B,KAAM0M,EAAa,EAAEA,EAAa,EAAE8D,CAAQ,GAEtE5f,GAAU,MACZ,KAAK,IAAI,2DAA2D4f,CAAQ,EAAE,EAEzE5f,CACT,CACAgc,GAAK,QAAUvH,GAAY,QC5vDZ,MAAM4P,EAAW,CAC9B,YAAYC,EAAM3L,EAAM,CACtB,KAAK,KAAO2L,EACZ,KAAK,KAAO3L,GAAsB,CAAE,CACxC,CACE,gBAAiB,CACf,KAAM,CACJ,QAAA8H,CACN,EAAQ,KAAK,KAAK,SAAU,EACxB,OAAQA,GAAW,KAAO,OAASA,EAAQ,KAAK,EAAE,IAAM,CAAE,CAC9D,CACE,eAAe8D,EAAQ,CACrB,KAAM,CACJ,QAAA9D,CACN,EAAQ,KAAK,KAAK,SAAU,EACxB,KAAK,KAAK,SAAS,CACjB,QAAS,CACP,GAAGA,EACH,CAAC,KAAK,EAAE,EAAG,CACT,GAAGA,EAAQ,KAAK,EAAE,EAClB,GAAG8D,CACb,CACA,CACA,CAAK,CACL,CACE,WAAW1G,EAAS,CAClB,KAAK,KAAO,CACV,GAAG,KAAK,KACR,GAAGA,CACJ,EACD,KAAK,eAAe,MAAS,EAC7B,KAAK,SAAU,CACnB,CACE,UAAW,CACT,MAAMD,EAAa,IAAIvN,GAAW,CAAC,KAAK,cAAe,KAAK,KAAK,OAAQ,KAAK,KAAK,MAAM,CAAC,EAC1F,KAAK,KAAOuN,EAAW,UAAU,KAAKA,CAAU,EAChD,KAAK,UAAYA,EAAW,eAAe,KAAKA,CAAU,EAC1D,KAAK,eAAe,MAAS,CACjC,CAUE,UAAUL,EAAQ,CAChB,MAAM,IAAI,MAAM,2EAA2E,CAC/F,CACE,SAAU,CAAA,CACV,WAAY,CAAA,CAGZ,OAAOh2B,EAAO,CAAA,CAGd,aAAc,CAAA,CAChB,CC5EA,MAAMi9B,WAA2B,KAAM,CACrC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,KAAO,oBAChB,CACA,oDCLA,SAASC,EAAeC,EAAUz1B,EAAS,CAErC,OAAOA,GAAY,YACrBA,EAAU,CAAE,QAASA,CAAS,GAGhC,KAAK,kBAAoB,KAAK,MAAM,KAAK,UAAUy1B,CAAQ,CAAC,EAC5D,KAAK,UAAYA,EACjB,KAAK,SAAWz1B,GAAW,CAAE,EAC7B,KAAK,cAAgBA,GAAWA,EAAQ,cAAgB,IACxD,KAAK,IAAM,KACX,KAAK,QAAU,CAAE,EACjB,KAAK,UAAY,EACjB,KAAK,kBAAoB,KACzB,KAAK,oBAAsB,KAC3B,KAAK,SAAW,KAChB,KAAK,gBAAkB,KACvB,KAAK,OAAS,KAEV,KAAK,SAAS,UAChB,KAAK,gBAAkB,KAAK,UAAU,MAAM,CAAC,EAEjD,CACA,OAAA01B,GAAiBF,EAEjBA,EAAe,UAAU,MAAQ,UAAW,CAC1C,KAAK,UAAY,EACjB,KAAK,UAAY,KAAK,kBAAkB,MAAM,CAAC,CACjD,EAEAA,EAAe,UAAU,KAAO,UAAW,CACrC,KAAK,UACP,aAAa,KAAK,QAAQ,EAExB,KAAK,QACP,aAAa,KAAK,MAAM,EAG1B,KAAK,UAAkB,CAAE,EACzB,KAAK,gBAAkB,IACxB,EAEDA,EAAe,UAAU,MAAQ,SAASr5B,EAAK,CAK7C,GAJI,KAAK,UACP,aAAa,KAAK,QAAQ,EAGxB,CAACA,EACH,MAAO,GAET,IAAIw5B,EAAc,IAAI,KAAM,EAAC,QAAS,EACtC,GAAIx5B,GAAOw5B,EAAc,KAAK,iBAAmB,KAAK,cACpD,YAAK,QAAQ,KAAKx5B,CAAG,EACrB,KAAK,QAAQ,QAAQ,IAAI,MAAM,iCAAiC,CAAC,EAC1D,GAGT,KAAK,QAAQ,KAAKA,CAAG,EAErB,IAAIy5B,EAAU,KAAK,UAAU,MAAO,EACpC,GAAIA,IAAY,OACd,GAAI,KAAK,gBAEP,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,CAAC,EAC9CA,EAAU,KAAK,gBAAgB,MAAM,EAAE,MAEvC,OAAO,GAIX,IAAIC,EAAO,KACX,YAAK,OAAS,WAAW,UAAW,CAClCA,EAAK,YAEDA,EAAK,sBACPA,EAAK,SAAW,WAAW,UAAW,CACpCA,EAAK,oBAAoBA,EAAK,SAAS,CAC/C,EAASA,EAAK,iBAAiB,EAErBA,EAAK,SAAS,OACdA,EAAK,SAAS,MAAO,GAI3BA,EAAK,IAAIA,EAAK,SAAS,CACxB,EAAED,CAAO,EAEN,KAAK,SAAS,OACd,KAAK,OAAO,MAAO,EAGhB,EACR,EAEDJ,EAAe,UAAU,QAAU,SAAS/S,EAAIqT,EAAY,CAC1D,KAAK,IAAMrT,EAEPqT,IACEA,EAAW,UACb,KAAK,kBAAoBA,EAAW,SAElCA,EAAW,KACb,KAAK,oBAAsBA,EAAW,KAI1C,IAAID,EAAO,KACP,KAAK,sBACP,KAAK,SAAW,WAAW,UAAW,CACpCA,EAAK,oBAAqB,CAChC,EAAOA,EAAK,iBAAiB,GAG3B,KAAK,gBAAkB,IAAI,KAAI,EAAG,QAAS,EAE3C,KAAK,IAAI,KAAK,SAAS,CACxB,EAEDL,EAAe,UAAU,IAAM,SAAS/S,EAAI,CAC1C,QAAQ,IAAI,0CAA0C,EACtD,KAAK,QAAQA,CAAE,CAChB,EAED+S,EAAe,UAAU,MAAQ,SAAS/S,EAAI,CAC5C,QAAQ,IAAI,4CAA4C,EACxD,KAAK,QAAQA,CAAE,CAChB,EAED+S,EAAe,UAAU,MAAQA,EAAe,UAAU,IAE1DA,EAAe,UAAU,OAAS,UAAW,CAC3C,OAAO,KAAK,OACb,EAEDA,EAAe,UAAU,SAAW,UAAW,CAC7C,OAAO,KAAK,SACb,EAEDA,EAAe,UAAU,UAAY,UAAW,CAC9C,GAAI,KAAK,QAAQ,SAAW,EAC1B,OAAO,KAOT,QAJIO,EAAS,CAAE,EACXC,EAAY,KACZC,EAAiB,EAEZp9B,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC5C,IAAIoyB,EAAQ,KAAK,QAAQpyB,CAAC,EACtB4wB,EAAUwB,EAAM,QAChBiL,GAASH,EAAOtM,CAAO,GAAK,GAAK,EAErCsM,EAAOtM,CAAO,EAAIyM,EAEdA,GAASD,IACXD,EAAY/K,EACZgL,EAAiBC,EAEvB,CAEE,OAAOF,CACR,uDCjKD,IAAIR,EAAiBvS,GAA4B,EAEjDtsB,EAAoB,UAAA,SAASqJ,EAAS,CACpC,IAAIy1B,EAAW9+B,EAAQ,SAASqJ,CAAO,EACvC,OAAO,IAAIw1B,EAAeC,EAAU,CAChC,QAASz1B,IAAYA,EAAQ,SAAWA,EAAQ,UAAY,KAC5D,MAAOA,GAAWA,EAAQ,MAC1B,aAAcA,GAAWA,EAAQ,YACvC,CAAG,CACF,EAEDrJ,EAAmB,SAAA,SAASqJ,EAAS,CACnC,GAAIA,aAAmB,MACrB,MAAO,CAAE,EAAC,OAAOA,CAAO,EAG1B,IAAI0pB,EAAO,CACT,QAAS,GACT,OAAQ,EACR,WAAY,EAAI,IAChB,WAAY,IACZ,UAAW,EACZ,EACD,QAASze,KAAOjL,EACd0pB,EAAKze,CAAG,EAAIjL,EAAQiL,CAAG,EAGzB,GAAIye,EAAK,WAAaA,EAAK,WACzB,MAAM,IAAI,MAAM,uCAAuC,EAIzD,QADI+L,EAAW,CAAE,EACR58B,EAAI,EAAGA,EAAI6wB,EAAK,QAAS7wB,IAChC48B,EAAS,KAAK,KAAK,cAAc58B,EAAG6wB,CAAI,CAAC,EAG3C,OAAI1pB,GAAWA,EAAQ,SAAW,CAACy1B,EAAS,QAC1CA,EAAS,KAAK,KAAK,cAAc58B,EAAG6wB,CAAI,CAAC,EAI3C+L,EAAS,KAAK,SAAS/qB,EAAE/C,EAAG,CAC1B,OAAO+C,EAAI/C,CACf,CAAG,EAEM8tB,CACR,EAED9+B,EAAA,cAAwB,SAASw/B,EAASzM,EAAM,CAC9C,IAAI0M,EAAU1M,EAAK,UACd,KAAK,OAAM,EAAK,EACjB,EAEAkM,EAAU,KAAK,MAAMQ,EAAS,KAAK,IAAI1M,EAAK,WAAY,CAAC,EAAI,KAAK,IAAIA,EAAK,OAAQyM,CAAO,CAAC,EAC/F,OAAAP,EAAU,KAAK,IAAIA,EAASlM,EAAK,UAAU,EAEpCkM,CACR,EAEDj/B,EAAA,KAAe,SAAS4S,EAAKvJ,EAASq2B,EAAS,CAM7C,GALIr2B,aAAmB,QACrBq2B,EAAUr2B,EACVA,EAAU,MAGR,CAACq2B,EAAS,CACZA,EAAU,CAAE,EACZ,QAASprB,KAAO1B,EACV,OAAOA,EAAI0B,CAAG,GAAM,YACtBorB,EAAQ,KAAKprB,CAAG,CAGxB,CAEE,QAASpS,EAAI,EAAGA,EAAIw9B,EAAQ,OAAQx9B,IAAK,CACvC,IAAI64B,EAAW2E,EAAQx9B,CAAC,EACpBy9B,EAAW/sB,EAAImoB,CAAM,EAEzBnoB,EAAImoB,CAAM,GAAI,SAAsB4E,EAAU,CAC5C,IAAIC,EAAW5/B,EAAQ,UAAUqJ,CAAO,EACpCuE,EAAW,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EAClD8pB,EAAW9pB,EAAK,IAAK,EAEzBA,EAAK,KAAK,SAASpI,EAAK,CAClBo6B,EAAG,MAAMp6B,CAAG,IAGZA,IACF,UAAU,CAAC,EAAIo6B,EAAG,UAAW,GAE/BlI,EAAS,MAAM,KAAM,SAAS,EACtC,CAAO,EAEDkI,EAAG,QAAQ,UAAW,CACpBD,EAAS,MAAM/sB,EAAKhF,CAAI,CAChC,CAAO,CACP,GAAM,KAAKgF,EAAK+sB,CAAQ,EACpB/sB,EAAImoB,CAAM,EAAE,QAAU1xB,CAC1B,qDClGAw2B,GAAiBvT,GAAsB,kCCAjCwT,GAAiB,OAAO,UAAU,SAElCC,GAAU1/B,GAASy/B,GAAe,KAAKz/B,CAAK,IAAM,iBAElD2/B,GAAgB,IAAI,IAAI,CAC7B,gBACA,kBACA,kDACA,iDACA,cACA,yBACA,eACA,YACD,CAAC,EAEc,SAASC,GAAe3L,EAAO,CAM7C,OALgBA,GACZyL,GAAQzL,CAAK,GACbA,EAAM,OAAS,aACf,OAAOA,EAAM,SAAY,SAQzBA,EAAM,UAAY,cACdA,EAAM,QAAU,OAGjB0L,GAAc,IAAI1L,EAAM,OAAO,EAT9B,EAUT,CC7BO,MAAM4L,WAAmB,KAAM,CACrC,YAAYpN,EAAS,CACpB,MAAO,EAEHA,aAAmB,OACtB,KAAK,cAAgBA,EACpB,CAAC,QAAAA,CAAO,EAAIA,IAEb,KAAK,cAAgB,IAAI,MAAMA,CAAO,EACtC,KAAK,cAAc,MAAQ,KAAK,OAGjC,KAAK,KAAO,aACZ,KAAK,QAAUA,CACjB,CACA,CAEA,MAAMqN,GAA0B,CAAC7L,EAAO8L,EAAe/2B,IAAY,CAElE,MAAMg3B,EAAch3B,EAAQ,SAAW+2B,EAAgB,GAEvD,OAAA9L,EAAM,cAAgB8L,EACtB9L,EAAM,YAAc+L,EACb/L,CACR,EAEe,eAAegM,GAAO3oB,EAAOtO,EAAS,CACpD,OAAO,IAAI,QAAQ,CAAC9D,EAASg7B,IAAW,CACvCl3B,EAAU,CAAC,GAAGA,CAAO,EACrBA,EAAQ,kBAARA,EAAQ,gBAAoB,IAAM,CAAE,GACpCA,EAAQ,cAARA,EAAQ,YAAgB,IAAM,IAC9BA,EAAQ,UAARA,EAAQ,QAAY,IAEpB,MAAMm3B,EAAYX,GAAM,UAAUx2B,CAAO,EAEnCo3B,EAAe,IAAM,OAC1BD,EAAU,KAAM,EAChBD,GAAOngC,EAAAiJ,EAAQ,SAAR,YAAAjJ,EAAgB,MAAM,CAC7B,EAEGiJ,EAAQ,QAAU,CAACA,EAAQ,OAAO,SACrCA,EAAQ,OAAO,iBAAiB,QAASo3B,EAAc,CAAC,KAAM,EAAI,CAAC,EAGpE,MAAMC,EAAU,IAAM,QACrBtgC,EAAAiJ,EAAQ,SAAR,MAAAjJ,EAAgB,oBAAoB,QAASqgC,GAC7CD,EAAU,KAAM,CAChB,EAEDA,EAAU,QAAQ,MAAMJ,GAAiB,CACxC,GAAI,CACH,MAAMhmB,EAAS,MAAMzC,EAAMyoB,CAAa,EACxCM,EAAS,EACTn7B,EAAQ6U,CAAM,CACd,OAAQka,EAAO,CACf,GAAI,CACH,GAAI,EAAEA,aAAiB,OACtB,MAAM,IAAI,UAAU,0BAA0BA,CAAK,kCAAkC,EAGtF,GAAIA,aAAiB4L,GACpB,MAAM5L,EAAM,cAGb,GAAIA,aAAiB,WAAa,CAAC2L,GAAe3L,CAAK,EACtD,MAAMA,EAYP,GATA6L,GAAwB7L,EAAO8L,EAAe/2B,CAAO,EAE/C,MAAMA,EAAQ,YAAYirB,CAAK,IACpCkM,EAAU,KAAM,EAChBD,EAAOjM,CAAK,GAGb,MAAMjrB,EAAQ,gBAAgBirB,CAAK,EAE/B,CAACkM,EAAU,MAAMlM,CAAK,EACzB,MAAMkM,EAAU,UAAW,CAE5B,OAAQG,EAAY,CACpBR,GAAwBQ,EAAYP,EAAe/2B,CAAO,EAC1Dq3B,EAAS,EACTH,EAAOI,CAAU,CACtB,CACA,CACA,CAAG,CACH,CAAE,CACF,CC3FA,MAAMC,WAAqB,KAAM,CAC/B,YAAYtM,EAAOuM,EAAK,CAClBA,IAAQ,SACVA,EAAM,MAER,MAAM,uGAAuG,EAC7G,KAAK,MAAQvM,EACb,KAAK,eAAiB,GACtB,KAAK,QAAUuM,CACnB,CACA,CCLe,SAASC,IAAwB,CAC9C,OAAO,MAAM,GAAG,SAAS,EAAE,MAAMt7B,GAAO,CACtC,MAAIA,EAAI,OAAS,aACTA,EAEA,IAAIo7B,GAAap7B,CAAG,CAEhC,CAAG,CACH,CCbe,SAASu7B,GAAIznB,EAAQhF,EAAK,CACvC,OAAO,OAAO,UAAU,eAAe,KAAKgF,EAAQhF,CAAG,CACzD,CCDA,MAAM0sB,WAAuB,KAAM,CACjC,YAAYlO,EAASzpB,EAAS,CAC5B,MAAMypB,CAAO,EACb,KAAK,MAAQzpB,GAAW,KAAO,OAASA,EAAQ,MAC5C,KAAK,OAAS43B,GAAY,KAAK,MAAO,gBAAgB,EACxD,KAAK,eAAiB,KAAK,MAAM,eAEjC,KAAK,eAAiB,EAE5B,CACA,CCXe,SAASC,GAAcC,EAAK,CACzC,IAAIC,EAGJ,MAAMC,GAAQD,EADA,yDACoB,KAAKD,CAAG,IAAM,KAAO,OAASC,EAAY,CAAC,EAE7E,MAAO,GADgB,cAAc,KAAKD,CAAG,EAAI,KAAO,KAChC,MAAME,CAAI,EACpC,CCLA,MAAMC,WAAkB,KAAM,CAC5B,aAAc,CACZ,MAAM,wBAAwB,EAC9B,KAAK,KAAO,YAIZ,KAAK,YAAc,EACvB,CACA,CCXA,SAAS9X,GAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAU9E,MAAM8G,GAAc,CAClB,QAAW,OACb,EAEA,SAAS0S,GAAWJ,EAAK,CACvB,OAAOA,EAAI,QAAQ,MAAO,EAAE,CAC9B,CACA,MAAMK,GAAa,GACbC,GAA0B,EAAI,GAAK,IAE5BC,GAAsB,IACnC,MAAMC,WAAkB,KAAM,CAC5B,YAAYxa,EAAM,CAChB,GAAI,CACF,WAAAya,EACA,QAAA9O,CACN,EAAQ3L,EACJ,MAAM2L,CAAO,EACb,KAAK,KAAO,YACZ,KAAK,WAAa8O,CACtB,CACA,CACA,eAAeC,GAAmB1d,EAAK,CACrC,GAAIA,EAAI,SAAWud,GACjB,MAAM,IAAIJ,GAEZ,GAAInd,EAAI,GACN,OAAOA,EAAI,KAAM,EAEnB,IAAI2d,EAAS,+BAA+B3d,EAAI,MAAM,KAAKA,EAAI,UAAU,GACrE4d,EACJ,GAAI,CACFA,EAAU,MAAM5d,EAAI,KAAM,EACtB4d,EAAQ,UAASD,EAAS,GAAGA,CAAM,aAAaC,EAAQ,OAAO,IAC/DA,EAAQ,YAAWD,EAAS,GAAGA,CAAM,gBAAgBC,EAAQ,SAAS,GAC3E,OAAQC,EAAO,CAEd,MAAM,IAAI,MAAMF,EAAQ,CACtB,MAAAE,CACN,CAAK,CACL,CACE,MAAI7d,EAAI,QAAU,KAAOA,EAAI,QAAU,KAAO4d,EAAQ,QAC9C,IAAInD,GAAmBmD,EAAQ,OAAO,EAExC,IAAIJ,GAAU,CAClB,WAAYxd,EAAI,OAChB,QAAS2d,CACb,CAAG,CACH,CACA,SAASG,GAAmBC,EAAUC,EAAc1S,EAAM,CACxD,KAAM,CACJ,SAAA4H,EACA,cAAA+K,EACA,WAAAC,CACJ,EAAMF,EACJ,GAAI9K,EAAU,CACZ,IAAIiL,EACJJ,EAAS,KAAK,IAAI,oBAAoB7K,CAAQ,EAAE,EAChD6K,EAAS,KAAK,KAAK,kBAAmBzS,EAAM,CAC1C,eAAgB6S,EAAwB7S,EAAK,SAAS,gBAAkB,KAAO6S,EAAwB,EACvG,cAAAF,EACA,WAAAC,CACN,CAAK,CACL,CACA,CACA,IAAIE,GAAiC7Y,GAA2B,kBAAkB,EAC9E8Y,GAAuB9Y,GAA2B,QAAQ,EAC1D+Y,GAAmC/Y,GAA2B,oBAAoB,EAClFgZ,GAAsChZ,GAA2B,uBAAuB,EAC7E,MAAMiZ,EAAc,CACjC,YAAYjE,EAAM3L,EAAM,CAMtB,OAAO,eAAe,KAAM2P,GAAwB,CAClD,MAAOE,EACb,CAAK,EACD,OAAO,eAAe,KAAMJ,GAAS,CACnC,MAAOK,EACb,CAAK,EACD,OAAO,eAAe,KAAMN,GAAmB,CAC7C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAME,GAAqB,CAC/C,SAAU,GACV,MAAO,MAAMtc,GAAS,CACpB,IAAI2c,EACJ,GAAI,CACF,KAAArT,EACA,SAAAsT,EACA,OAAAC,CACV,EAAY7c,EACJ,KAAM2c,EAAerT,EAAK,SAAW,KAAO,OAASqT,EAAa,MAAQ,KACxE,MAAM,IAAI,MAAM,oCAAoC,EAQtD,OANY,MAAM,KAAK,KAAKrT,EAAK,OAAO,IAAK,CAC3C,GAAGA,EAAK,OAAO,KACf,GAAGsT,CACb,EAAW,CACD,OAAAC,CACV,CAAS,GACU,KACnB,CACA,CAAK,EACD,KAAK,KAAOtE,EACZ,KAAK,KAAO3L,EACZ,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,EACzDvJ,GAA4B,KAAM+Y,EAAiB,EAAEA,EAAiB,EAAIxP,EAAK,gBACnF,CACE,oBAAoBkQ,EAAS,CAC3BzZ,GAA4B,KAAM+Y,EAAiB,EAAEA,EAAiB,EAAIU,CAC9E,CACE,CAAC,OAAO,IAAI,gCAAgC,CAAC,GAAI,CAC/C,OAAOzZ,GAA4B,KAAM+Y,EAAiB,EAAEA,EAAiB,CACjF,CACE,IAAI,UAAW,CACb,KAAM,CACJ,UAAAW,CACN,EAAQ,KAAK,KAAK,SAAU,EAClB7B,EAAO,KAAK,KAAK,aACvB,OAAOE,GAAW2B,GAAaA,EAAU7B,CAAI,EAAI6B,EAAU7B,CAAI,EAAIA,CAAI,CAC3E,CACE,MAAM,QAAQ8B,EAAW,CACvB,OAAIA,IAAc,SAChBA,EAAY,IASP,CACL,GARqB,CACrB,OAAQ,mBACR,GAAIA,EAAY,OAAY,CAE1B,eAAgB,kBACjB,CACF,EAGC,GAAG3Z,GAA4B,KAAM+Y,EAAiB,EAAEA,EAAiB,CAC1E,CACL,CACE,kBAAkBpe,EAAK,CACrB,KAAM,CACJ,QAAA8e,CACN,EAAQ9e,EAEE+e,EADQ,KAAK,KAAK,SAAU,EACV,WAAa,CAAE,EACjC7B,EAAO,KAAK,KAAK,aAGnB4B,EAAQ,IAAI,MAAM,GAAKA,EAAQ,IAAI,MAAM,IAAMC,EAAU7B,CAAI,GAC/D,KAAK,KAAK,SAAS,CACjB,UAAW,CACT,GAAG6B,EACH,CAAC7B,CAAI,EAAG4B,EAAQ,IAAI,MAAM,CACpC,CACA,CAAO,CAEP,CACE,MAAM,QAAQG,EAAO,CACnB,GAAI,CACF,KAAA3nB,EACA,OAAAsf,EAAS,MACT,KAAAj3B,EACA,iBAAAu/B,EACA,OAAAL,CACN,EAAQI,EACJ,GAAI,CACF,MAAMH,EAAU,MAAM,KAAK,QAAQ,CAACn/B,CAAI,EAClC25B,EAAW,MAAMqD,GAAsBtX,GAA4B,KAAMgZ,EAAO,EAAEA,EAAO,EAAE/mB,CAAI,EAAG,CACtG,OAAAsf,EACA,OAAAiI,EACA,QAAAC,EACA,YAAa,KAAK,KAAK,sBAAwB,cAC/C,KAAMn/B,EAAO,KAAK,UAAUA,CAAI,EAAI,IAC5C,CAAO,EACD,OAAKu/B,GAAkB,KAAK,kBAAkB5F,CAAQ,EAC/C,MAAMoE,GAAmBpE,CAAQ,CACzC,OAAQj4B,EAAK,CAEZ,MAAIA,EAAI,aAAeA,EAAI,OAAS,sBAAwBA,EAAI,OAAS,aAAoBA,EACvF,IAAIw7B,GAAe,aAAajG,CAAM,IAAIvR,GAA4B,KAAMgZ,EAAO,EAAEA,EAAO,EAAE/mB,CAAI,CAAC,GAAI,CAC3G,MAAOjW,CACf,CAAO,CACP,CACA,CACE,MAAM,IAAIiW,EAAMpS,EAAS,CACvB,OAAO,KAAK,QAAQ,CAClB,GAAGA,EACH,KAAAoS,CACN,CAAK,CACL,CACE,MAAM,KAAKA,EAAM3X,EAAMuF,EAAS,CAC9B,OAAO,KAAK,QAAQ,CAClB,GAAGA,EACH,KAAAoS,EACA,OAAQ,OACR,KAAA3X,CACN,CAAK,CACL,CACE,MAAM,OAAO2X,EAAM3X,EAAMuF,EAAS,CAChC,OAAO,KAAK,QAAQ,CAClB,GAAGA,EACH,KAAAoS,EACA,OAAQ,SACR,KAAA3X,CACN,CAAK,CACL,CAUE,MAAM,iBAAiB2rB,EAAM6T,EAASj6B,EAAS,CAC7C,IAAI7F,EAAQ,KACZ,GAAI,CACF,KAAM,CACJ,OAAAw/B,EACA,SAAAO,CACD,EAAGl6B,GAAW,CAAE,EACjB,OAAO,MAAMi3B,GAAO,SAAY,CAC9B,IAAIkD,EAEJ,MAAMC,GAAuBD,EAAqB,KAAK,KAAK,QAAQ/T,EAAK,EAAE,IAAM,KAAO,OAAS+T,EAAmB,YACpH,GAAIC,GAAuB,KACzB,YAAK,KAAK,IAAI,mCAAmCA,CAAmB,EAAE,EAC/Dja,GAA4B,KAAMkZ,EAAsB,EAAEA,EAAsB,EAAE,CACvF,KAAAjT,EACA,MAAO8T,EAAU,EACjB,OAAAP,CACZ,CAAW,EAoBH,MAAMU,EAAc,MAlBYH,IAAW,oBAAoB,gBAAkB,CAC/E,GAAI,CACF,OAAO,MAAM/Z,GAA4BhmB,EAAOi/B,EAAmB,EAAEA,EAAmB,EAAE,GAAG,SAAS,CACvG,OAAQkB,EAAU,CAEjB,GAAIA,EAAS,YAAa,MAAM,IAAIzD,GAAWyD,CAAQ,EACvD,GAAIA,EAAS,OAAS,KAAM,MAAMA,EAClC,MAAMn+B,EAAMm+B,EAAS,MACfC,EAAuB,IAAM,CAAC,IAAK,IAAK,IAAK,IAAK,GAAG,EAAE,SAASp+B,EAAI,UAAU,GAAKA,EAAI,YAAc,KAAOA,EAAI,YAAc,KAAO,CAAC,CAAC,IAAK,GAAG,EAAE,SAASA,EAAI,UAAU,EAC9K,MAAIA,EAAI,OAAS,aAAe,CAACo+B,EAAoB,EAAU,IAAI1D,GAAW16B,CAAG,EAI3EA,CAClB,CACA,EAAW,CACD,SAAU,EACpB,CAAS,EACiD,CAChD,KAAAiqB,EACA,SAAU6T,EACV,OAAAN,CACV,CAAS,EAAE,QAAQA,CAAM,EACjB,GAAK,KAAK,KAAK,QAAQvT,EAAK,EAAE,EAE9B,YAAK,KAAK,aAAaA,EAAK,GAAI,CAC9B,YAAAiU,CACV,CAAS,EACMla,GAA4B,KAAMkZ,EAAsB,EAAEA,EAAsB,EAAE,CACvF,KAAM,KAAK,KAAK,QAAQjT,EAAK,EAAE,EAE/B,MAAO8T,EAAU,EACjB,OAAAP,CACV,CAAS,CACT,EAAS,CACD,QAASxB,GACT,OAAAwB,EACA,gBAAiBx9B,GAAO,KAAK,KAAK,IAAI,2BAA2BA,EAAI,OAAO,GAAI,SAAS,CACjG,CAAO,CACF,OAAQA,EAAK,CAGZ,GAAIA,EAAI,OAAS,aAEf,OAEF,WAAK,KAAK,KAAK,eAAgBiqB,EAAMjqB,CAAG,EAClCA,CACZ,CACA,CACA,CACA,SAASq9B,GAAS1B,EAAK,CACrB,MAAI,kBAAkB,KAAKA,CAAG,EACrBA,EAEF,GAAG,KAAK,QAAQ,IAAIA,CAAG,EAChC,CACA,eAAeyB,GAAwBiB,EAAO,CAC5C,GAAI,CACF,KAAApU,EACA,MAAAqU,EACA,OAAAd,CACJ,EAAMa,EACAE,EACJ,KAAM,CACJ,aAAA3L,CACJ,EAAM,KAAK,KAAK,SAAU,EACxB,GAAI,CACF,OAAO,MAAM,IAAI,QAAQ,CAAC7yB,EAASg7B,IAAW,CAC5C,MAAMre,EAAQuN,EAAK,YACb4R,EAAOH,GAAczR,EAAK,OAAO,YAAY,EACnD,IAAIuU,EACAC,EACAC,EACA,CACF,SAAA9J,CACR,EAAU3K,EACJ,MAAM0U,EAAa,CAACvvB,EAAQwvB,IAAY,CACtC,GAAIJ,GAAU,MAAQA,EAAO,aAAeA,EAAO,KAAM,CACvD,IAAIK,EACJ,KAAK,KAAK,IAAI,gBAAgBzvB,CAAM,eAAe6a,EAAK,EAAE,iCAAiC,QAAQ4U,EAAUL,IAAW,KAAO,OAASK,EAAQ,UAAU,CAAC,GAAI,SAAS,EACxK,MACV,CACQL,EAAO,KAAK,KAAK,UAAU,CACzB,OAAApvB,EACA,QAASwvB,GAA4B,CAAA,CAC/C,CAAS,CAAC,CACH,EACD,SAASE,GAAY,CACdlM,EAAa,kBACJ+L,EAAV/J,EAAqB,QAAyB,QAAlB,CACxC,CACM,MAAMmK,EAAkB,SAAY,CAC9BN,GAAuBA,EAAsB,MAAO,EACxDA,EAAwB,IAAI,gBAC5B,MAAMO,EAAeh/B,GAAO,CAC1B,IAAIi/B,EAEJ,KAAK,KAAK,aAAahV,EAAK,GAAI,CAC9B,YAAa,IACzB,CAAW,GACAgV,EAAwBR,IAA0B,MAAQQ,EAAsB,OAAS,MAAQA,EAAsB,MAAO,EAC/HlE,EAAO/6B,CAAG,CACX,EAGD,SAASk/B,GAAuB,CAC9B,aAAaR,CAAe,EACxB,CAAA9J,IACJ8J,EAAkB,WAAW,IAAMM,EAAa,IAAI,MAAM,mDAAmD,CAAC,EAAG/C,EAAuB,EAClJ,CACQ,GAAI,CACF,MAAMqC,EAAM,oBAAoB,SAAY,CA4E1C,MAAMxD,GA3EqB,SAE3B,IAAI,QAAQ,CAAC78B,EAAGkhC,IAAiB,CAC/BX,EAAS,IAAI,UAAU,GAAG3C,CAAI,QAAQnf,CAAK,EAAE,EAC7CwiB,EAAsB,EACtBV,EAAO,iBAAiB,QAAS,IAAM,CACrCA,EAAS,OACTW,EAAa,IAAI,MAAM,4BAA4B,CAAC,CACpE,CAAe,EACDX,EAAO,iBAAiB,QAAS1P,GAAS,CACxC,IAAIsQ,EACJ,KAAK,KAAK,IAAI,0BAA0B,KAAK,UAAUtQ,CAAK,CAAC,mBAAoB,SAAS,GACzFsQ,EAAWZ,IAAW,MAAQY,EAAS,MAAK,CAC7D,CAAe,EACDZ,EAAO,iBAAiB,OAAQ,IAAM,CACpCM,EAAW,CAC3B,CAAe,EACDN,EAAO,iBAAiB,UAAWjc,GAAK,CACtC2c,EAAsB,EACtB,GAAI,CACF,KAAM,CACJ,OAAA9vB,EACA,QAAAwvB,CACD,EAAG,KAAK,MAAMrc,EAAE,IAAI,EACrB,OAAQnT,EAAM,CACZ,IAAK,WACH,CACEqtB,GAAmB,KAAMmC,EAAS,KAAK,KAAK,QAAQ3U,EAAK,EAAE,CAAC,EAC5D,KACxB,CACoB,IAAK,UACH,CACE,IAAIoV,EAAmBC,EAAuBC,EAAoBC,EAOlE,MAAMrmB,GAAQkmB,EAAoBT,EAAQ,WAAa,KAAO,OAASS,EAAkB,aACzF,KAAK,KAAK,KAAK,iBAAkB,KAAK,KAAK,QAAQpV,EAAK,EAAE,EAAG,CAC3D,UAAW2U,EAAQ,IACnB,QAASU,GAAyBC,EAAqBX,EAAQ,WAAa,KAAO,OAASW,EAAmB,SAAW,KAAOD,EAAwB,IACzJ,KAAMnmB,EAAO,KAAK,MAAMA,CAAI,EAAI,MAC1D,CAAyB,GACAqmB,EAAyBf,IAA0B,MAAQe,EAAuB,OAAS,MAAQA,EAAuB,MAAO,EAClIz/B,EAAS,EACT,KACxB,CACoB,IAAK,QACH,CACE,KAAM,CACJ,QAAAutB,CACD,EAAGsR,EAAQ,MACZ,MAAM,OAAO,OAAO,IAAI,MAAMtR,CAAO,EAAG,CACtC,MAAOsR,EAAQ,KACzC,CAAyB,CACzB,CACoB,QACE,KAAK,KAAK,IAAI,mCAAmCxvB,CAAM,GAAI,SAAS,CAC1F,CACiB,OAAQpP,EAAK,CACZg/B,EAAah/B,CAAG,CAClC,CACA,CAAe,EACD,MAAMy/B,EAAc,IAAM,CACxB,KAAK,KAAK,IAAI,kBAAkBxV,EAAK,EAAE,EAAE,EACzC,aAAayU,CAAe,EACxBF,GAAQA,EAAO,MAAO,EAC1BA,EAAS,MACV,EACDC,EAAsB,OAAO,iBAAiB,QAAS,IAAM,CAC3DgB,EAAa,CAC7B,CAAe,CACf,CAAa,EACgC,CAC/B,QAASzD,GACT,OAAQyC,EAAsB,OAC9B,gBAAiB,IAAM,CACjBA,EAAsB,OAAO,SACjC,KAAK,KAAK,IAAI,sBAAsBxU,EAAK,EAAE,EAAE,CAC7D,CACA,CAAa,CACF,CAAA,IAAI,QAAQwU,EAAsB,MAAM,CAC1C,OAAQz+B,EAAK,CACZ,GAAIy+B,EAAsB,OAAO,QAAS,OAC1CO,EAAah/B,CAAG,CAC1B,CACO,EACK0/B,EAAQC,GAAkB,CACzB/M,EAAa,mBAClBgC,EAAW+K,EACPnB,GAAQM,EAAW,EACxB,EACKc,EAAeC,GAAc,CACjC,IAAIC,EACClN,EAAa,wBACdiN,EAAW,KAAO5V,EAAK,KAC3B0U,EAAW,QAAQ,GAClBmB,EAAyBrB,IAA0B,MAAQqB,EAAuB,OAAS,MAAQA,EAAuB,MAAO,EAClI,KAAK,KAAK,IAAI,UAAU7V,EAAK,EAAE,cAAc,EAC7ClqB,EAAS,EACV,EACKggC,EAAc,IAAM,CACxB,IAAIC,EACJrB,EAAW,QAAQ,GAClBqB,EAAyBvB,IAA0B,MAAQuB,EAAuB,OAAS,MAAQA,EAAuB,MAAO,EAClI,KAAK,KAAK,IAAI,UAAU/V,EAAK,EAAE,eAAe,EAC9ClqB,EAAS,CACV,EACKkgC,EAAqB,CAACJ,EAAYF,IAAmB,EACpDE,GAAc,KAAO,OAASA,EAAW,MAAQ5V,EAAK,IAC3DyV,EAAMC,CAAc,CACrB,EACKO,GAAa,IAAMR,EAAM,EAAI,EAC7BS,GAAc,IAAMT,EAAM,EAAK,EACrC,KAAK,KAAK,GAAG,eAAgBE,CAAY,EACzC,KAAK,KAAK,GAAG,aAAcG,CAAW,EACtC,KAAK,KAAK,GAAG,eAAgBE,CAAkB,EAC/C,KAAK,KAAK,GAAG,YAAaC,EAAU,EACpC,KAAK,KAAK,GAAG,aAAcC,EAAW,EACtC5B,EAAsB,IAAM,CAC1B,KAAK,KAAK,IAAI,eAAgBqB,CAAY,EAC1C,KAAK,KAAK,IAAI,aAAcG,CAAW,EACvC,KAAK,KAAK,IAAI,eAAgBE,CAAkB,EAChD,KAAK,KAAK,IAAI,YAAaC,EAAU,EACrC,KAAK,KAAK,IAAI,aAAcC,EAAW,CACxC,EACD3C,EAAO,iBAAiB,QAAS,IAAM,CACrC,IAAI4C,GACHA,EAAyB3B,IAA0B,MAAQ2B,EAAuB,MAAO,CAClG,CAAO,EACDrB,EAAiB,CACvB,CAAK,CACL,QAAY,CAERR,GAAuB,MAAQA,EAAqB,CACxD,CACA,CACApB,GAAc,QAAU9T,GAAY,QCpfpC,SAASrF,GAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAC9E,IAAI8d,GAAqBnc,GAA2B,MAAM,EACtDoc,GAAuBpc,GAA2B,QAAQ,EAK/C,MAAMqc,EAAa,CAChC,YAAYrH,EAAM,CAChB,OAAO,eAAe,KAAMmH,GAAO,CACjC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAS,CACnC,SAAU,GACV,MAAO,CAAA,CACb,CAAK,EACDtc,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAInH,CACtD,CACE,GAAGl1B,EAAOsiB,EAAI,CACZtC,OAAAA,GAA4B,KAAMsc,EAAO,EAAEA,EAAO,EAAE,KAAK,CAACt8B,EAAOsiB,CAAE,CAAC,EAC7DtC,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAE,GAAGr8B,EAAOsiB,CAAE,CACvE,CACE,QAAS,CACP,SAAW,CAACtiB,EAAOsiB,CAAE,IAAKtC,GAA4B,KAAMsc,EAAO,EAAEA,EAAO,EAAE,OAAO,CAAC,EACpFtc,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAE,IAAIr8B,EAAOsiB,CAAE,CAEnE,CACE,YAAYgM,EAAQkO,EAAI,CACtB,KAAK,GAAG,eAAgB,CAACvW,EAAM2K,IAAa,CACtCtC,KAAYrI,GAAQ,KAAO,OAASA,EAAK,KAC3CuW,EAAG5L,CAAQ,CAEnB,CAAK,CACL,CACE,aAAatC,EAAQkO,EAAI,CACvB,KAAK,GAAG,eAAgBvW,GAAQ,CAC1BqI,IAAWrI,EAAK,IAAIuW,EAAGvW,EAAK,EAAE,CACxC,CAAK,CACL,CACE,QAAQqI,EAAQkO,EAAI,CAClB,KAAK,GAAG,eAAgB,CAACvW,EAAM2K,IAAa,CACtCtC,KAAYrI,GAAQ,KAAO,OAASA,EAAK,KAE3CuW,EAAG5L,CAAQ,CAEnB,CAAK,CACL,CACE,QAAQtC,EAAQkO,EAAI,CAClB,KAAK,GAAG,eAAgBvW,GAAQ,CAC1BqI,KAAYrI,GAAQ,KAAO,OAASA,EAAK,KAC3CuW,EAAI,CAEZ,CAAK,CACL,CACE,WAAWlO,EAAQkO,EAAI,CACrB,KAAK,GAAG,YAAa,IAAM,CACpBxc,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAE,QAAQ/N,CAAM,GACnEkO,EAAI,CACV,CAAK,CACL,CACE,WAAWlO,EAAQkO,EAAI,CACrB,KAAK,GAAG,YAAa,IAAM,CACpBxc,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAE,QAAQ/N,CAAM,GACnEkO,EAAI,CACV,CAAK,CACL,CACE,YAAYlO,EAAQmO,EAAc,CAChC,IAAIziC,EAAQ,KACZ,KAAK,GAAG,aAAc,UAAY,CAC3BgmB,GAA4BhmB,EAAOqiC,EAAK,EAAEA,EAAK,EAAE,QAAQ/N,CAAM,GACpEmO,EAAa,GAAG,SAAS,CAC/B,CAAK,CACL,CACE,YAAYnO,EAAQkO,EAAI,CACtB,KAAK,GAAG,aAAc,IAAM,CACrBxc,GAA4B,KAAMqc,EAAK,EAAEA,EAAK,EAAE,QAAQ/N,CAAM,GACnEkO,EAAI,CACV,CAAK,CACL,CACA,CClFA,SAASxc,EAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAC9E,SAASme,GAAkBlE,EAAO,CAChC,OAAO,IAAI,MAAM,YAAa,CAC5B,MAAAA,CACJ,CAAG,CACH,CACA,SAASmE,GAAQnD,EAAQ,CACvB,GAAIA,GAAU,KAAM,CAClB,IAAIoD,EACJ,MAAMC,EAAe,IAAM,KAAK,MAAMrD,EAAO,MAAM,EACnDA,EAAO,iBAAiB,QAASqD,EAAc,CAC7C,KAAM,EACZ,CAAK,EACD,MAAMC,EAAsB,IAAM,CAChCtD,EAAO,oBAAoB,QAASqD,CAAY,CACjD,GACAD,EAAa,KAAK,OAAS,MAAQA,EAAW,KAAK,KAAME,EAAqBA,CAAmB,CACtG,CACE,OAAO,IACT,CACA,IAAIC,GAA+B7c,GAA2B,gBAAgB,EAC1E8c,GAA+B9c,GAA2B,gBAAgB,EAC1E+c,GAAuB/c,GAA2B,QAAQ,EAC1Dgd,GAA2Bhd,GAA2B,YAAY,EAClEid,GAA0Bjd,GAA2B,WAAW,EAChEkd,GAA2Bld,GAA2B,YAAY,EAClEmd,GAAkCnd,GAA2B,mBAAmB,EAChFod,GAAqBpd,GAA2B,MAAM,EACtDqd,GAA0Brd,GAA2B,WAAW,EAChEsd,GAAqBtd,GAA2B,MAAM,EACtDud,GAAsBvd,GAA2B,OAAO,EACxDwd,GAAwBxd,GAA2B,SAAS,EAC5Dyd,GAAuBzd,GAA2B,QAAQ,EAC1D0d,GAA8B1d,GAA2B,eAAe,EACrE,MAAM2d,EAAiB,CAC5B,YAAYvjB,EAAO,CACjB,OAAO,eAAe,KAAMojB,GAAU,CACpC,MAAOI,EACb,CAAK,EACD,OAAO,eAAe,KAAML,GAAQ,CAClC,MAAOM,EACb,CAAK,EACD,OAAO,eAAe,KAAMP,GAAO,CACjC,MAAOQ,EACb,CAAK,EACD,OAAO,eAAe,KAAMT,GAAY,CACtC,MAAOU,EACb,CAAK,EACD,OAAO,eAAe,KAAMX,GAAO,CACjC,MAAOY,EACb,CAAK,EACD,OAAO,eAAe,KAAMnB,GAAiB,CAC3C,SAAU,GACV,MAAO,CACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAiB,CAC3C,SAAU,GACV,MAAO,CAAA,CACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAS,CACnC,SAAU,GACV,MAAO,EACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAa,CACvC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAY,CACtC,SAAU,GACV,MAAO,CACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAa,CACvC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAoB,CAC9C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMM,GAAS,CACnC,SAAU,GACV,MAAO,IAAM,KAAK,OAAM,CAC9B,CAAK,EACD,OAAO,eAAe,KAAMC,GAAgB,CAC1C,SAAU,GACV,MAAO,IAAM,CACX,GAAI5d,EAA4B,KAAMid,EAAO,EAAEA,EAAO,EAAG,CACvDjd,EAA4B,KAAMqd,EAAkB,EAAEA,EAAkB,EAAI,WAAWrd,EAA4B,KAAM4d,EAAc,EAAEA,EAAc,EAAG,CAAC,EAC3J,MACV,CACQ5d,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EAAI,KAAK,MACjE,KAAK,MAAQ,KAAK,MAAMnd,EAA4B,KAAMod,EAAW,EAAEA,EAAW,EAAIpd,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,GAAK,CAAC,EACpJ,QAASzkC,EAAIsnB,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EAAGzkC,GAAK,KAAK,MAAOA,IACvFsnB,EAA4B,KAAMud,EAAU,EAAEA,EAAU,EAAG,EAEzDvd,EAA4B,KAAMod,EAAW,EAAEA,EAAW,EAAIpd,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EAAI,EAC5Hnd,EAA4B,KAAMqd,EAAkB,EAAEA,EAAkB,EAAI,WAAWrd,EAA4B,KAAM4d,EAAc,EAAEA,EAAc,EAAG,GAAI,EAE9J5d,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EAAI,KAAK,MAAMnd,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EAAI,CAAC,CAE9I,CACA,CAAK,EACG,OAAO7iB,GAAU,UAAYA,IAAU,EACzC,KAAK,MAAQ,IAEb,KAAK,MAAQA,CAEnB,CACE,IAAIgI,EAAI6b,EAAc,CACpB,MAAI,CAACne,EAA4B,KAAMid,EAAO,EAAEA,EAAO,GAAKjd,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,EAAI,KAAK,MAC9H/c,EAA4B,KAAMsd,EAAK,EAAEA,EAAK,EAAEhb,CAAE,EAEpDtC,EAA4B,KAAMyd,EAAM,EAAEA,EAAM,EAAEnb,EAAI6b,CAAY,CAC7E,CACE,iBAAiB7b,EAAI6b,EAAc,CACjC,IAAInkC,EAAQ,KACZ,OAAO,UAAY,CACjB,QAASilB,EAAO,UAAU,OAAQ7a,EAAO,IAAI,MAAM6a,CAAI,EAAGP,EAAO,EAAGA,EAAOO,EAAMP,IAC/Eta,EAAKsa,CAAI,EAAI,UAAUA,CAAI,EAE7B,MAAM0f,EAAgBpkC,EAAM,IAAI,KAC9BsoB,EAAG,GAAGle,CAAI,EACV,eAAe,IAAMg6B,EAAc,MAAM,EAClC,IAAM,CAAE,GACdD,CAAY,EACf,MAAO,CACL,QAAAxB,GACA,OAAQ,CACNyB,EAAc,MAAO,CAC/B,CACO,CACF,CACL,CACE,oBAAoB9b,EAAI6b,EAAc,CACpC,IAAIE,EAAS,KACb,OAAO,UAAY,CACjB,QAASxW,EAAQ,UAAU,OAAQzjB,EAAO,IAAI,MAAMyjB,CAAK,EAAGC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF1jB,EAAK0jB,CAAK,EAAI,UAAUA,CAAK,EAE/B,IAAIsW,EACJ,MAAME,EAAe,IAAI,QAAQ,CAACviC,EAASg7B,IAAW,CACpDqH,EAAgBC,EAAO,IAAI,IAAM,CAC/B,IAAIE,EACAC,EACJ,GAAI,CACFA,EAAe,QAAQ,QAAQlc,EAAG,GAAGle,CAAI,CAAC,CAC3C,OAAQpI,EAAK,CACZwiC,EAAe,QAAQ,OAAOxiC,CAAG,CAC7C,CACU,OAAAwiC,EAAa,KAAK5tB,GAAU,CACtB2tB,EACFxH,EAAOwH,CAAW,GAElBH,EAAc,KAAM,EACpBriC,EAAQ6U,CAAM,EAEjB,EAAE5U,GAAO,CACJuiC,EACFxH,EAAOwH,CAAW,GAElBH,EAAc,KAAM,EACpBrH,EAAO/6B,CAAG,EAExB,CAAW,EACMw8B,GAAS,CACd+F,EAAc7B,GAAkBlE,CAAK,CACtC,CACF,EAAE2F,CAAY,CACvB,CAAO,EACD,OAAAG,EAAa,MAAQ9F,GAAS,CAC5B4F,EAAc,MAAM5F,CAAK,CAC1B,EACD8F,EAAa,QAAU3B,GAChB2B,CACR,CACL,CACE,QAAS,CACPte,EAA4B,KAAMid,EAAO,EAAEA,EAAO,EAAI,GACtD,aAAajd,EAA4B,KAAMkd,EAAW,EAAEA,EAAW,CAAC,EACxE,QAASxkC,EAAI,EAAGA,EAAI,KAAK,MAAOA,IAC9BsnB,EAA4B,KAAMud,EAAU,EAAEA,EAAU,EAAG,CAEjE,CAOE,MAAM5L,EAAU,CACVA,IAAa,SACfA,EAAW,MAEb3R,EAA4B,KAAMid,EAAO,EAAEA,EAAO,EAAI,GACtD,aAAajd,EAA4B,KAAMkd,EAAW,EAAEA,EAAW,CAAC,EACpEvL,GAAY,OACd3R,EAA4B,KAAMkd,EAAW,EAAEA,EAAW,EAAI,WAAWld,EAA4B,KAAM2d,EAAO,EAAEA,EAAO,EAAGhM,CAAQ,EAE5I,CAYE,UAAUA,EAAU,CAClB,aAAa3R,EAA4B,KAAMqd,EAAkB,EAAEA,EAAkB,CAAC,EACtF,KAAK,MAAM1L,CAAQ,EACf,KAAK,MAAQ,GAAK,OAAO,SAAS,KAAK,KAAK,IAC9C3R,EAA4B,KAAMod,EAAW,EAAEA,EAAW,EAAI,KAAK,MAAQ,EAC3E,KAAK,MAAQpd,EAA4B,KAAMmd,EAAU,EAAEA,EAAU,EACrEnd,EAA4B,KAAMqd,EAAkB,EAAEA,EAAkB,EAAI,WAAWrd,EAA4B,KAAM4d,EAAc,EAAEA,EAAc,EAAGjM,CAAQ,EAExK,CACE,IAAI,UAAW,CACb,OAAO3R,EAA4B,KAAMid,EAAO,EAAEA,EAAO,CAC7D,CACA,CACA,SAASiB,GAAO5b,EAAI,CAClBtC,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,GAAK,EACvE,IAAI0B,EAAO,GACPC,EACJ,GAAI,CACFA,EAAepc,EAAI,CACpB,OAAQtmB,EAAK,CACZgkB,MAAAA,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,GAAK,EACjE/gC,CACV,CACE,MAAO,CACL,MAAOw8B,GAAS,CACViG,IACJA,EAAO,GACPze,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,GAAK,EACvE2B,GAAgB,MAAQA,EAAalG,CAAK,EAC1CxY,EAA4B,KAAMud,EAAU,EAAEA,EAAU,EAAG,EAC5D,EACD,KAAM,IAAM,CACNkB,IACJA,EAAO,GACPze,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,GAAK,EACvE/c,EAA4B,KAAMud,EAAU,EAAEA,EAAU,EAAG,EACjE,CACG,CACH,CACA,SAASU,IAAc,CAIrB,eAAe,IAAMje,EAA4B,KAAMwd,EAAK,EAAEA,EAAK,GAAG,CACxE,CACA,SAASQ,IAAS,CAIhB,GAHIhe,EAA4B,KAAMid,EAAO,EAAEA,EAAO,GAAKjd,EAA4B,KAAM+c,EAAe,EAAEA,EAAe,GAAK,KAAK,OAGnI/c,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,SAAW,EACjF,OAMF,MAAM1sB,EAAO0P,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,MAAO,EACxF,GAAI1sB,GAAQ,KACV,MAAM,IAAI,MAAM,mCAAmC,EAErD,MAAMquB,EAAU3e,EAA4B,KAAMsd,EAAK,EAAEA,EAAK,EAAEhtB,EAAK,EAAE,EACvEA,EAAK,MAAQquB,EAAQ,MACrBruB,EAAK,KAAOquB,EAAQ,IACtB,CACA,SAASZ,GAAQzb,EAAIziB,EAAS,CAC5B,MAAM8+B,EAAU,CACd,GAAArc,EACA,UAAWziB,GAAW,KAAO,OAASA,EAAQ,WAAa,EAC3D,MAAO,IAAM,CACXmgB,EAA4B,KAAM0d,EAAQ,EAAEA,EAAQ,EAAEiB,CAAO,CAC9D,EACD,KAAM,IAAM,CACV,MAAM,IAAI,MAAM,4DAA4D,CAClF,CACG,EACKj6B,EAAQsb,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,UAAU4B,GACnFD,EAAQ,SAAWC,EAAM,QACjC,EACD,OAAIl6B,IAAU,GACZsb,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,KAAK2B,CAAO,EAEhF3e,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,OAAOt4B,EAAO,EAAGi6B,CAAO,EAEvFA,CACT,CACA,SAASb,GAAUa,EAAS,CAC1B,MAAMj6B,EAAQsb,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,QAAQ2B,CAAO,EAC7Fj6B,IAAU,IACZsb,EAA4B,KAAMgd,EAAe,EAAEA,EAAe,EAAE,OAAOt4B,EAAO,CAAC,CAEvF,CC9SO,SAASm6B,GAAqBlU,EAAO,CAC1C,MAAMmU,EAAW7Y,GAAQ,UAAWA,GAAQ,CAAC,CAACA,EAAK,MACnD,OAAO0E,EAAM,OAAO1E,GAAQ,CAAC6Y,EAAS7Y,CAAI,CAAC,CAC7C,CAGO,SAAS8Y,GAA+BpU,EAAO,CACpD,OAAOA,EAAM,OAAO1E,GAAQ,CAC1B,IAAI+Y,EACJ,MAAO,GAAGA,EAAiB/Y,EAAK,WAAa,MAAQ+Y,EAAe,gBAAkB,CAAC/Y,EAAK,UAChG,CAAG,CACH,CCPO,KAAM,CACXgZ,gBAAAA,EACF,EAAI,WAISC,GAAmB,SAAU5V,EAASzpB,EAAS,CACtDypB,IAAY,SACdA,EAAU,WAEZ,MAAMttB,EAAM,IAAI,aAAastB,EAAS,YAAY,EAClD,OAAIzpB,GAAW,MAAQs/B,GAAet/B,EAAS,OAAO,GACpD,OAAO,eAAe7D,EAAK,QAAS,CAElC,UAAW,KACX,aAAc,GACd,SAAU,GACV,MAAO6D,EAAQ,KACrB,CAAK,EAEI7D,CACT,ECzBe,SAASojC,GAAqBC,EAAQtM,EAAM,CACzD,OAAIsM,IAAW,GACN,OAAO,KAAKtM,CAAI,EAErB,MAAM,QAAQsM,CAAM,EACfA,EAEF,CAAE,CACX,CCRA,SAASrf,EAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAE9E,MAAM+gB,GAAK,KAAO,KACZlW,GAAiB,CACrB,aAAanD,EAAM,CACjB,OAAO,KAAK,KAAKA,EAAK,KAAO,GAAK,CACnC,EACD,YAAa,CAAE,EACf,gBAAiB,CAAE,EACnB,WAAY,CAAE,EACd,QAAQjqB,EAAK,CACX,MAAMA,CACV,CACA,EACA,SAASujC,GAAU1oC,EAAO,CACxB,GAAI,OAAOA,GAAU,SAEnB,OAAO,SAASA,EAAO,EAAE,EAE3B,GAAI,OAAOA,GAAU,SAEnB,OAAOA,EAET,MAAM,IAAI,UAAU,mBAAmB,CACzC,CACO,MAAM2oC,GAAsB,OAAO,qCAAqC,EAQ/E,IAAIC,GAAgCvf,GAA2B,iBAAiB,EAC5Ewf,GAAuBxf,GAA2B,QAAQ,EAC1Dyf,GAA2Bzf,GAA2B,YAAY,EAClE0f,GAAqB1f,GAA2B,MAAM,EACtD2f,GAAqB3f,GAA2B,MAAM,EACtD4f,GAAiC5f,GAA2B,kBAAkB,EAC9E6f,GAAwB7f,GAA2B,SAAS,EAC5D8f,GAA0B9f,GAA2B,WAAW,EAChE+f,GAAmC/f,GAA2B,oBAAoB,EAClFggB,GAA4BhgB,GAA2B,aAAa,EACpEigB,GAAyBjgB,GAA2B,UAAU,EAC9DkgB,GAAkClgB,GAA2B,mBAAmB,EAChFmgB,GAA4BngB,GAA2B,aAAa,EACpEogB,GAA2BpgB,GAA2B,YAAY,EAClEsM,GAA6BtM,GAA2B,cAAc,EACtEqgB,GAA6BrgB,GAA2B,cAAc,EACtEsgB,GAA+BtgB,GAA2B,gBAAgB,EAC1EugB,GAA+BvgB,GAA2B,gBAAgB,EAC1EwgB,GAA4BxgB,GAA2B,aAAa,EACxE,MAAMygB,EAAkB,CACtB,YAAYrmC,EAAMuF,EAAS,CACzB,IAAI+gC,EAAeC,EACnB,OAAO,eAAe,KAAMH,GAAc,CACxC,MAAOI,EACb,CAAK,EACD,OAAO,eAAe,KAAMP,GAAe,CACzC,MAAOQ,EACb,CAAK,EACD,OAAO,eAAe,KAAMvU,GAAe,CACzC,MAAOS,EACb,CAAK,EAKD,OAAO,eAAe,KAAMqT,GAAa,CACvC,MAAOU,EACb,CAAK,EACD,OAAO,eAAe,KAAMvB,GAAkB,CAC5C,SAAU,GACV,MAAO,IAAIR,EACjB,CAAK,EACD,OAAO,eAAe,KAAMS,GAAS,CACnC,SAAU,GACV,MAAO,CAAA,CACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAa,CACvC,SAAU,GACV,MAAO,CAAA,CACb,CAAK,EAID,OAAO,eAAe,KAAMC,GAAO,CACjC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAO,CACjC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAmB,CAC7C,SAAU,GACV,MAAO,EACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAU,CACpC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAY,CACtC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAqB,CAC/C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAc,CACxC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAW,CACrC,SAAU,GACV,MAAOnkC,IAAQA,GAAO,KAAO,OAASA,EAAI,SAAWwjC,GAAsB,KAAOxf,EAA4B,KAAM+f,EAAQ,EAAEA,EAAQ,EAAE/jC,CAAG,CACjJ,CAAK,EACD,OAAO,eAAe,KAAMokC,GAAoB,CAC9C,SAAU,GACV,MAAO,GACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAc,CACxC,SAAU,GACV,MAAO,EAAIf,EACjB,CAAK,EACD,OAAO,eAAe,KAAMkB,GAAiB,CAC3C,SAAU,GACV,MAAO97B,GAASu8B,GAAM,CACpB,GAAI,CAACA,EAAG,iBAAkB,OAC1BjhB,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAEj7B,CAAK,EAAE,SAAW66B,GAAU0B,EAAG,MAAM,EACjG,MAAMC,EAAgBlhB,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAE,OAAO,CAAC1sB,EAAGkuB,IAAMluB,EAAIkuB,EAAE,SAAU,CAAC,EACpH,KAAK,QAAQ,WAAWD,EAAelhB,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,EAAE,IAAI,CACnG,CACA,CAAK,EACD,OAAO,eAAe,KAAMa,GAAiB,CAC3C,SAAU,GACV,MAAO/7B,GAAS08B,GAAQ,CAEtBphB,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAEh7B,CAAK,EAAI,KAC7Dsb,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAEj7B,CAAK,EAAE,KAAO08B,EAC1EphB,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAEj7B,CAAK,EAAE,KAAO,GAC1E,MAAM28B,EAAO,CACX,WAAY38B,EAAQ,EACpB,KAAM08B,CACP,EACD,KAAK,QAAQ,eAAeC,CAAI,CACxC,CACA,CAAK,EACD,KAAK,QAAU,CACb,GAAGjY,GACH,GAAGvpB,CACJ,GAEAghC,GAAyBD,EAAgB,KAAK,SAAS,eAAiB,OAA+BA,EAAc,aAAexX,GAAe,cACpJpJ,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,EAAItlC,EAClD0lB,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,EAAIhgC,EAAQ,KAC1DmgB,EAA4B,KAAMggB,EAAU,EAAEA,EAAU,EAAI,KAAK,QAAQ,UACzEhgB,EAA4B,KAAM+f,EAAQ,EAAEA,EAAQ,EAAI,KAAK,QAAQ,QACrE/f,EAA4B,KAAMigB,EAAmB,EAAEA,EAAmB,EAAI,KAAK,QAAQ,mBAK3FjgB,EAA4B,KAAMkgB,EAAY,EAAEA,EAAY,EAAIrgC,EAAQ,UAAYA,EAAQ,IAC5FmgB,EAA4B,KAAMsgB,EAAW,EAAEA,EAAW,EAAG,CACjE,CACE,OAAQ,CACFtgB,EAA4B,KAAM8f,EAAiB,EAAEA,EAAiB,GACnE9f,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,OAAO,SAASzf,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,MAAMD,EAAmB,EAC1Lxf,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAI,IAAIR,GAC5Ejf,EAA4B,KAAMugB,EAAa,EAAEA,EAAa,EAAG,GACxDvgB,EAA4B,KAAMkgB,EAAY,EAAEA,EAAY,GACrE,KAAK,QAAQ,cAAc,kBAAkBlgB,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,EAAG,CAC5F,SAAU,KAAK,QAAQ,SACvB,IAAK,KAAK,QAAQ,GAC1B,CAAO,EACD7f,EAA4B,KAAMugB,EAAa,EAAEA,EAAa,EAAG,GAEjEvgB,EAA4B,KAAMwM,EAAa,EAAEA,EAAa,EAAG,CAEvE,CACE,OAAQ,CACNxM,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,MAAMD,EAAmB,EAE/Fxf,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAI,IAAIR,EAChF,CACE,MAAM1V,EAAM,CACNA,GAAQ,MAAQA,EAAK,OAAQvJ,EAA4B,KAAM0gB,EAAY,EAAEA,EAAY,EAAC,EAAQ,KAAK,MAAO,CACtH,CAGE,CAAC,OAAO,IAAI,0BAA0B,CAAC,GAAI,CACzC,OAAO1gB,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,CACrE,CACA,CACA,SAASqB,IAAe,CACtB,MAAMM,EAAWthB,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,EAAE,KAC3D2B,EAAqB,OAAOvhB,EAA4B,KAAMigB,EAAmB,EAAEA,EAAmB,GAAM,WAAajgB,EAA4B,KAAMigB,EAAmB,EAAEA,EAAmB,EAAEjgB,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,CAAC,EAAI,EAAQ7f,EAA4B,KAAMigB,EAAmB,EAAEA,EAAmB,EAChV,GAAIsB,GAAsBD,EAAWthB,EAA4B,KAAMqgB,EAAY,EAAEA,EAAY,EAAG,CAElG,IAAImB,EAAY,KAAK,IAAI,KAAK,QAAQ,aAAaxhB,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,CAAC,EAClG5f,EAA4B,KAAMqgB,EAAY,EAAEA,EAAY,CAAC,EACzDoB,EAAY,KAAK,MAAMH,EAAWE,CAAS,EAG3CC,EAAYzhB,EAA4B,KAAMogB,EAAkB,EAAEA,EAAkB,IACtFqB,EAAYzhB,EAA4B,KAAMogB,EAAkB,EAAEA,EAAkB,EACpFoB,EAAYF,EAAWthB,EAA4B,KAAMogB,EAAkB,EAAEA,EAAkB,GAEjGpgB,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAI,MAAM+B,CAAS,EACrE,QAASC,EAAS,EAAGnrB,EAAI,EAAGmrB,EAASJ,EAAUI,GAAUF,EAAWjrB,IAAK,CACvE,MAAMxB,EAAM,KAAK,IAAIusB,EAAUI,EAASF,CAAS,EAG3CG,EAAU,IAAM,CACpB,MAAMC,EAAKF,EACX,OAAO1hB,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,EAAE,MAAMgC,EAAI7sB,CAAG,CACrE,EAOD,GANAiL,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAEnpB,CAAC,EAAI,CACvD,QAAAorB,EACA,WAAY3hB,EAA4B,KAAMwgB,EAAe,EAAEA,EAAe,EAAEjqB,CAAC,EACjF,WAAYyJ,EAA4B,KAAMygB,EAAe,EAAEA,EAAe,EAAElqB,CAAC,EACjF,mBAAAgrB,CACD,EACGvhB,EAA4B,KAAMkgB,EAAY,EAAEA,EAAY,EAAG,CACjE,MAAMrd,EAAO6e,EAASF,EAAYF,EAAWA,EAAWI,EAASF,EAGjExhB,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAEnpB,CAAC,EAAE,cAAgB,IAAM,CAC3EyJ,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAEnpB,CAAC,EAAI,KACzDyJ,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAEppB,CAAC,EAAE,SAAWsM,CAC3E,CACT,CACA,CACA,MACI7C,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAI,CAAC,CACrD,QAAS,IAAM1f,EAA4B,KAAM4f,EAAK,EAAEA,EAAK,EAC7D,WAAY5f,EAA4B,KAAMwgB,EAAe,EAAEA,EAAe,EAAE,CAAC,EACjF,WAAYxgB,EAA4B,KAAMygB,EAAe,EAAEA,EAAe,EAAE,CAAC,EACjF,mBAAAc,CACN,CAAK,EAEHvhB,EAA4B,KAAM2f,EAAW,EAAEA,EAAW,EAAI3f,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAE,IAAI,KAAO,CAC3H,SAAU,CACd,EAAI,CACJ,CACA,SAASzS,IAAiB,CACxB,KAAK,QAAQ,cAAc,WAAWjN,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,EAAG7f,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAG1f,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,MAAM,EAAE,KAAKzf,EAA4B,KAAMggB,EAAU,EAAEA,EAAU,EAAGhgB,EAA4B,KAAMmgB,EAAS,EAAEA,EAAS,CAAC,EACjVngB,EAA4B,KAAM8f,EAAiB,EAAEA,EAAiB,EAAI,EAC5E,CACA,SAASiB,IAAiB,CACxB,KAAK,QAAQ,cAAc,iBAAiB/gB,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,EAAG7f,EAA4B,KAAM0f,EAAO,EAAEA,EAAO,EAAG1f,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,MAAM,EAAE,KAAKzf,EAA4B,KAAMggB,EAAU,EAAEA,EAAU,EAAGhgB,EAA4B,KAAMmgB,EAAS,EAAEA,EAAS,CAAC,CACzV,CACA,SAASW,IAAgB,CACvB9gB,EAA4B,KAAMyf,EAAgB,EAAEA,EAAgB,EAAE,MAAO,EAC7E,KAAK,QAAQ,cAAc,gBAAgBzf,EAA4B,KAAM6f,EAAK,EAAEA,EAAK,CAAC,EAAE,MAAM7jC,GAAO,KAAK,QAAQ,IAAIA,CAAG,CAAC,CAChI,CClQO,SAAS6lC,GAAerI,EAAQ,CACrC,GAAIA,GAAU,MAAQA,EAAO,QAC3B,MAAM0F,GAAiB,4BAA6B,CAClD,MAAO1F,EAAO,MACpB,CAAK,CAEL,CCwBA,SAASsI,GAAuBnkB,EAAM,CACpC,GAAI,CACF,OAAA4T,EAAS,MACT,aAAAwQ,EAAe,IACf,qBAAAC,EAAuB,GACvB,cAAAC,EACA,cAAAC,CACJ,EAAMvkB,EACJ,MAAMwkB,EAAa,OAAO,KAAKF,CAAa,EAAE,IAAIz5B,GAAKA,EAAE,YAAa,CAAA,EAAE,KAAM,EAC9E,MAAO,CAAC+oB,EAAQwQ,EAAcC,EAAsB,GAAGG,EAAW,IAAI35B,GAAK,GAAGA,CAAC,IAAIy5B,EAAcz5B,CAAC,CAAC,EAAE,EAAG,GAAI25B,EAAW,KAAK,GAAG,EAAGD,CAAa,EAAE,KAAK;AAAA,CAAI,CAC5J,CACA,MAAME,GAAK,IAAI,YACTC,GAAY,CAChB,KAAM,OACN,KAAM,SACR,EACA,eAAeC,GAAOhoC,EAAM,CAC1B,KAAM,CACJ,OAAAioC,CACD,EAAG,WAAW,OACf,OAAOA,EAAO,OAAOF,GAAU,KAAMD,GAAG,OAAO9nC,CAAI,CAAC,CACtD,CACA,eAAekoC,GAAgBC,EAAQ,CACrC,KAAM,CACJ,OAAAF,CACD,EAAG,WAAW,OACf,OAAOA,EAAO,UAAU,MAAO,OAAOE,GAAW,SAAWL,GAAG,OAAOK,CAAM,EAAIA,EAAQJ,GAAW,GAAO,CAAC,MAAM,CAAC,CACpH,CACA,SAASK,GAAuBC,EAAa,CAC3C,MAAMC,EAAY,IAAI,WAAWD,CAAW,EAC5C,IAAIE,EAAY,GAChB,QAASnqC,EAAI,EAAGA,EAAIkqC,EAAU,OAAQlqC,IACpCmqC,GAAaD,EAAUlqC,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EAExD,OAAOmqC,CACT,CACA,eAAeC,GAAKh4B,EAAKxQ,EAAM,CAC7B,KAAM,CACJ,OAAAioC,CACD,EAAG,WAAW,OACf,OAAOA,EAAO,KAAKF,GAAW,MAAMG,GAAgB13B,CAAG,EAAGs3B,GAAG,OAAO9nC,CAAI,CAAC,CAC3E,CAKe,eAAeyoC,GAAgBpmB,EAAO,CACnD,GAAI,CACF,WAAAqmB,EACA,cAAAC,EACA,aAAAC,EACA,WAAAC,EACA,IAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,WAAAC,CACJ,EAAM7mB,EACJ,MAAM8mB,EAAU,KACV5L,EAAO,GAAG4L,CAAO,IAAIJ,CAAM,iBAO3BtB,EAAe,IAAIoB,CAAU,IAAI,UAAUC,CAAG,EAAE,QAAQ,qBAAsBjC,GAAK,IAAIA,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAW,CAAE,EAAE,CAAC,GACpIvG,EAAU,mBACV8I,EAAkB,IAAI,OAAO,YAAa,EAAC,QAAQ,cAAe,EAAE,EACpEnc,EAAOmc,EAAgB,MAAM,EAAG,CAAC,EACjCC,EAAQ,GAAGpc,CAAI,IAAI8b,CAAM,IAAII,CAAO,gBACpC9L,EAAM,IAAI,IAAI,WAAWE,CAAI,GAAGkK,CAAY,EAAE,EAEpDpK,EAAI,aAAa,IAAI,kBAAmB,kBAAkB,EAC1DA,EAAI,aAAa,IAAI,uBAAwBiD,CAAO,EACpDjD,EAAI,aAAa,IAAI,mBAAoB,GAAGqL,CAAU,IAAIW,CAAK,EAAE,EACjEhM,EAAI,aAAa,IAAI,aAAc+L,CAAe,EAClD/L,EAAI,aAAa,IAAI,gBAAiB2L,CAAO,EAE7C3L,EAAI,aAAa,IAAI,uBAAwBuL,CAAY,EACzDvL,EAAI,aAAa,IAAI,sBAAuB,MAAM,EAE9C6L,GAAY7L,EAAI,aAAa,IAAI,aAAc6L,CAAU,EACzDD,GAAU5L,EAAI,aAAa,IAAI,WAAY4L,CAAQ,EACvD5L,EAAI,aAAa,IAAI,OAAQ6L,GAAcD,EAAW,aAAe,WAAW,EAGhF,MAAMK,EAAY9B,GAAuB,CACvC,aAAAC,EACA,qBAAsBpK,EAAI,OAAO,MAAM,CAAC,EACxC,cAAe,CACb,KAAAE,CACD,EACD,cAAe+C,CACnB,CAAG,EAGKiJ,EAAkBnB,GAAuB,MAAMJ,GAAOsB,CAAS,CAAC,EAGhEE,EAAe,CAAC,mBAEtBJ,EAEAC,EAEAE,CACF,EAAI,KAAK;AAAA,CAAI,EAGLE,GAAQ,MAAMjB,GAAK,OAAOG,CAAa,GAAI1b,CAAI,EAC/Cyc,GAAU,MAAMlB,GAAKiB,GAAOV,CAAM,EAClCY,EAAW,MAAMnB,GAAKkB,GAASP,CAAO,EACtCS,EAAW,MAAMpB,GAAKmB,EAAU,cAAc,EAC9CE,EAAYzB,GAAuB,MAAMI,GAAKoB,EAAUJ,CAAY,CAAC,EAG3E,OAAAnM,EAAI,aAAa,IAAI,kBAAmBwM,CAAS,EAC1CxM,CACT,CCtJA,SAAS3X,EAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAG9E,SAAS6lB,GAAsBC,EAAW,CACxC,MAAMC,EAAY,IAAI,IAAID,CAAS,EACnC,OAAAC,EAAU,OAAS,GACnBA,EAAU,KAAO,GACVA,EAAU,IACnB,CACA,IAAIC,GAAqCrkB,GAA2B,sBAAsB,EACtFskB,GAAsBtkB,GAA2B,OAAO,EACxDukB,GAAsCvkB,GAA2B,uBAAuB,EACxFwkB,GAA+BxkB,GAA2B,gBAAgB,EAC1EykB,GAAoCzkB,GAA2B,qBAAqB,EACpF0kB,GAA0B1kB,GAA2B,WAAW,EAChE2kB,GAAmC3kB,GAA2B,oBAAoB,EAClF4kB,GAAyB5kB,GAA2B,UAAU,EAC9D6kB,GAA4B7kB,GAA2B,aAAa,EACpE8kB,GAAsC9kB,GAA2B,uBAAuB,EACxF+kB,GAAoC/kB,GAA2B,qBAAqB,EACpFglB,GAAgChlB,GAA2B,iBAAiB,EAC5EilB,GAAwBjlB,GAA2B,SAAS,EAC5DklB,GAA4BllB,GAA2B,aAAa,EACpEmlB,GAAmCnlB,GAA2B,oBAAoB,EAC/E,MAAMolB,EAAuB,CAClC,YAAYC,EAAY1lC,EAAS2lC,EAAqBC,EAAS,CAC7D,OAAO,eAAe,KAAMJ,GAAqB,CAC/C,MAAOK,EACb,CAAK,EACD,OAAO,eAAe,KAAMN,GAAc,CACxC,MAAOO,EACb,CAAK,EACD,OAAO,eAAe,KAAMpB,GAAuB,CACjD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAQ,CAClC,SAAU,GACV,MAAO,IAAI,OACjB,CAAK,EACD,OAAO,eAAe,KAAMC,GAAwB,CAClD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAiB,CAC3C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAsB,CAChD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAY,CACtC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAqB,CAC/C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAW,CACrC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAc,CACxC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAwB,CAClD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAsB,CAChD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAkB,CAC5C,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAU,CACpC,SAAU,GACV,MAAO,MACb,CAAK,EACDnlB,EAA4B,KAAM8kB,EAAS,EAAEA,EAAS,EAAIS,EAC1DvlB,EAA4B,KAAMilB,EAAoB,EAAEA,EAAoB,EAAIO,EAChFxlB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAIM,EACxD,KAAK,WAAW5lC,CAAO,CAC3B,CACE,WAAWA,EAAS,CAClB,MAAM+lC,EAAW5lB,EAA4B,KAAM8kB,EAAS,EAAEA,EAAS,EAsBvE,GArBI,yBAA0BjlC,IAC5BmgB,EAA4B,KAAMukB,EAAqB,EAAEA,EAAqB,EAAIqB,EAAS,oBAAoB/lC,EAAQ,qBAAsB,CAC3I,SAAU,CAClB,CAAO,GAEC,0BAA2BA,IAC7BmgB,EAA4B,KAAMykB,EAAsB,EAAEA,EAAsB,EAAImB,EAAS,oBAAoB/lC,EAAQ,sBAAuB,CAC9I,SAAU,EAClB,CAAO,GAEC,aAAcA,IAChBmgB,EAA4B,KAAM0kB,EAAe,EAAEA,EAAe,EAAIkB,EAAS,oBAAoB/lC,EAAQ,QAAQ,GAEjH,cAAeA,IACjBmgB,EAA4B,KAAM4kB,EAAU,EAAEA,EAAU,EAAIgB,EAAS,oBAAoB/lC,EAAQ,SAAS,GAExG,4BAA6BA,IAC/BmgB,EAA4B,KAAMglB,EAAsB,EAAEA,EAAsB,EAAIY,EAAS,oBAAoB/lC,EAAQ,wBAAyB,CAChJ,SAAU,CAClB,CAAO,GAEC,gBAAiBA,EAAS,CAC5B,IAAIgmC,EACJ7lB,EAA4B,KAAM+kB,EAAY,EAAEA,EAAY,GAAKc,EAAuBhmC,EAAQ,cAAgB,KAAOgmC,EAAuB,CAAE,CACtJ,CACQ,oBAAqBhmC,IACvBmgB,EAA4B,KAAMklB,EAAgB,EAAEA,EAAgB,EAAIU,EAAS,oBAAoB/lC,EAAQ,gBAAiB,CAC5H,SAAU,GAClB,CAAO,GAEC,wBAAyBA,IAC3BmgB,EAA4B,KAAM2kB,EAAoB,EAAEA,EAAoB,EAAIiB,EAAS,oBAAoB/lC,EAAQ,mBAAmB,EAE9I,CACE,MAAM,YAAYomB,EAAMuT,EAAQ,CAC9B,IAAIsM,EAKJ,MAAQA,EAAe9lB,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,IAAIve,EAAK,IAAI,IAAM,MAC1F,GAAI,CACF,OAAO,MAAM6f,CACrB,MAAc,CAGd,CAEI,MAAMC,EAAU/lB,EAA4B,KAAMykB,EAAsB,EAAEA,EAAsB,EAAEzkB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAGuT,CAAM,EAC/JqD,EAAe,IAAM,CACzBkJ,EAAQ,MAAMvM,EAAO,MAAM,EAC3BxZ,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,OAAOve,EAAK,IAAI,CACnE,EACD,OAAAuT,EAAO,iBAAiB,QAASqD,EAAc,CAC7C,KAAM,EACZ,CAAK,EACD7c,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,IAAIve,EAAK,KAAM8f,CAAO,EACxEA,EAAQ,KAAK,MAAMn1B,GAAU,CAC3B4oB,EAAO,oBAAoB,QAASqD,CAAY,EAChD7c,EAA4B,KAAMilB,EAAoB,EAAEA,EAAoB,EAAEhf,EAAMrV,CAAM,EAC1FoP,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,IAAIve,EAAK,KAAMrV,CAAM,CAC7E,EAAO,IAAM,CACP4oB,EAAO,oBAAoB,QAASqD,CAAY,EAChD7c,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,OAAOve,EAAK,IAAI,CACxE,CAAK,EACM8f,CACX,CACE,MAAM,gBAAgB9f,EAAM,CAC1B,MAAMrV,EAASoP,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,IAAIve,EAAK,IAAI,EAC9E,GAAIrV,GAAU,KAGZ,OAIFoP,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,OAAOve,EAAK,IAAI,EAClEjG,EAA4B,KAAMilB,EAAoB,EAAEA,EAAoB,EAAEhf,EAAM,OAAO,OAAO,IAAI,CAAC,EACvG,IAAI+f,EACJ,GAAI,CACFA,EAAgB,MAAMp1B,CAC5B,MAAY,CAEN,MACN,CACI,MAAMoP,EAA4B,KAAMukB,EAAqB,EAAEA,EAAqB,EAAEvkB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG+f,CAAa,CACpK,CACE,MAAM,WAAW/f,EAAMggB,EAAQzM,EAAQ,CAErC,GADAqI,GAAerI,CAAM,EACjByM,EAAO,SAAW,GAAK,CAACA,EAAO,CAAC,EAAE,mBACpC,OAAOjmB,EAA4B,KAAMqlB,EAAmB,EAAEA,EAAmB,EAAEpf,EAAMggB,EAAO,CAAC,EAAGzM,CAAM,EAE5G,KAAM,CACJ,SAAA+J,EACA,IAAAz4B,CACD,EAAG,MAAM,KAAK,YAAYmb,EAAMuT,CAAM,EACvCqI,GAAerI,CAAM,EACrB,GAAI,CACF,MAAM7Q,EAAQ,MAAM,QAAQ,IAAIsd,EAAO,IAAI,CAAC1lB,EAAO7nB,IAAM,KAAK,YAAYutB,EAAMvtB,EAAI,EAAG6nB,EAAOiZ,CAAM,CAAC,CAAC,EACtG,OAAAqI,GAAerI,CAAM,EACd,MAAMxZ,EAA4B,KAAMglB,EAAsB,EAAEA,EAAsB,EAAEhlB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG,CAC1J,IAAAnb,EACA,SAAAy4B,EACA,MAAA5a,EACA,OAAA6Q,CACR,EAASA,CAAM,EAAE,QAAQA,CAAM,CAC1B,OAAQx9B,EAAK,CACZ,MAAKA,GAAO,KAAO,OAASA,EAAI,SAAWwjC,KAAwBxjC,GAAO,KAAO,OAASA,EAAI,QAAU,cAItG,KAAK,gBAAgBiqB,CAAI,EAErBjqB,CACZ,CACA,CACE,kBAAkBiqB,EAAMigB,EAAgB,CACtClmB,EAA4B,KAAMwkB,EAAM,EAAEA,EAAM,EAAE,IAAIve,EAAK,KAAMigB,CAAc,CACnF,CACE,MAAM,iBAAiBjgB,EAAMggB,EAAQzM,EAAQ,CAE3C,GADAqI,GAAerI,CAAM,EACjByM,EAAO,SAAW,GAAKA,EAAO,CAAC,GAAK,MAAQ,CAACA,EAAO,CAAC,EAAE,mBACzD,OAAOjmB,EAA4B,KAAMqlB,EAAmB,EAAEA,EAAmB,EAAEpf,EAAMggB,EAAO,CAAC,EAAGzM,CAAM,EAE5G,KAAM,CACJ,SAAA+J,EACA,IAAAz4B,CACD,EAAG,MAAM,KAAK,YAAYmb,EAAMuT,CAAM,EACvCqI,GAAerI,CAAM,EACrB,MAAM2M,EAAuB,MAAMnmB,EAA4B,KAAM4kB,EAAU,EAAEA,EAAU,EAAE5kB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG,CACxJ,SAAAsd,EACA,IAAAz4B,EACA,OAAA0uB,CACN,EAAOA,CAAM,EAAE,QAAQA,CAAM,EACzBqI,GAAerI,CAAM,EACrB,MAAM7Q,EAAQ,MAAM,QAAQ,IAAIsd,EAAO,IAAI,CAAC1lB,EAAO7nB,IAAM,CACvD,MAAM8qC,EAAa9qC,EAAI,EACjB0tC,EAAsBD,EAAqB,KAAKxoB,GAAQ,CAC5D,GAAI,CACF,WAAA0oB,CACV,EAAY1oB,EACJ,OAAO0oB,IAAe7C,CAC9B,CAAO,EACD,OAAI4C,GAAuB,KAClB,KAAK,YAAYngB,EAAMud,EAAYjjB,EAAOiZ,CAAM,GAGzDjZ,GAAS,MAAQA,EAAM,eAAiB,MAAQA,EAAM,cAAe,EAC9D,CACL,WAAYijB,EACZ,KAAM4C,EAAoB,IAC3B,EACP,CAAK,CAAC,EACF,OAAAvE,GAAerI,CAAM,EACdxZ,EAA4B,KAAMglB,EAAsB,EAAEA,EAAsB,EAAEhlB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG,CACpJ,IAAAnb,EACA,SAAAy4B,EACA,MAAA5a,EACA,OAAA6Q,CACN,EAAOA,CAAM,EAAE,QAAQA,CAAM,CAC7B,CACE,MAAM,YAAYvT,EAAMud,EAAYjjB,EAAOiZ,EAAQ,CACjDqI,GAAerI,CAAM,EACrB,KAAM,CACJ,SAAA+J,EACA,IAAAz4B,CACD,EAAG,MAAM,KAAK,YAAYmb,EAAMuT,CAAM,EACjC8M,EAAyBtmB,EAA4B,KAAM+kB,EAAY,EAAEA,EAAY,EAAE,OAAQ,EAC/FwB,EAAqBvmB,EAA4B,KAAM+kB,EAAY,EAAEA,EAAY,EAAE,OAAQ,EAC3FyB,EAAuB,IAAM,CACjC,MAAMl2B,EAAOg2B,EAAuB,KAAM,EAC1C,OAAIh2B,GAAQ,MAAQA,EAAK,KAChB,KAEFA,EAAK,KACb,EACD,OAAS,CACPuxB,GAAerI,CAAM,EACrB,MAAMiN,EAAYlmB,EAAM,QAAS,EAC3B,CACJ,WAAAmmB,EACA,WAAAC,CACR,EAAUpmB,EACJ,IAAI4jB,EACJ,GAAI,CACFA,EAAY,MAAMnkB,EAA4B,KAAM0kB,EAAe,EAAEA,EAAe,EAAE1kB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG,CAEjJ,SAAUsd,EACV,IAAAz4B,EACA,WAAA04B,EACA,KAAMiD,EACN,OAAAjN,CACV,CAAS,EAAE,QAAQA,CAAM,CAClB,OAAQx9B,EAAK,CACZ,MAAMy5B,EAAU+Q,EAAsB,EACtC,GAAI/Q,GAAW,MAAQ+D,EAAO,QAC5B,MAAMx9B,EAER,MAAM,IAAI,QAAQD,GAAW,WAAWA,EAAS05B,CAAO,CAAC,EAEzD,QACR,CACMoM,GAAerI,CAAM,EACrB,GAAI,CACF,MAAO,CACL,WAAYgK,EACZ,GAAI,MAAMxjB,EAA4B,KAAMklB,EAAgB,EAAEA,EAAgB,EAAE,CAC9E,UAAAf,EACA,KAAMsC,EACN,KAAMA,EAAU,KAChB,WAAAC,EACA,WAAAC,EACA,OAAAnN,CACZ,CAAW,EAAE,QAAQA,CAAM,CAClB,CACF,OAAQx9B,EAAK,CACZ,GAAI,CAAE,MAAMgkB,EAA4B,KAAMolB,EAAY,EAAEA,EAAY,EAAEppC,EAAKuqC,CAAkB,EAAI,MAAMvqC,CACnH,CACA,CACA,CACA,CACA,eAAe2pC,GAAc3pC,EAAK4qC,EAAoB,CACpD,IAAIC,EACJ,MAAMjB,EAAW5lB,EAA4B,KAAM8kB,EAAS,EAAEA,EAAS,EACjEgC,EAAS9qC,GAAO,OAAS6qC,EAAc7qC,EAAI,SAAW,KAAO,OAAS6qC,EAAY,OAIxF,GAAIC,GAAU,KACZ,MAAO,GAET,GAAIA,IAAW,KAAO9qC,EAAI,UAAY,uBACpC,GAAI,CAAC4pC,EAAS,SAAU,CAItB,GAAIA,EAAS,QAAU,GAAK5lB,EAA4B,KAAM6kB,EAAmB,EAAEA,EAAmB,GAAK,KAAM,CAC/G,MAAMv0B,EAAOs2B,EAAmB,KAAM,EACtC,GAAIt2B,GAAQ,MAAQA,EAAK,KACvB,MAAO,GAQT0P,EAA4B,KAAM6kB,EAAmB,EAAEA,EAAmB,EAAIv0B,EAAK,KAC3F,CAEMs1B,EAAS,UAAU,CAAC,EACpB,MAAM,IAAI,QAAQ7pC,GAAW,WAAWA,EAASikB,EAA4B,KAAM6kB,EAAmB,EAAEA,EAAmB,CAAC,CAAC,CACnI,UACaiC,IAAW,KAEpB,GAAI,CAAClB,EAAS,SAAU,CACtB,MAAMt1B,EAAOs2B,EAAmB,KAAM,EACtC,GAAIt2B,GAAQ,MAAQA,EAAK,KACvB,MAAO,GAETs1B,EAAS,UAAUt1B,EAAK,KAAK,CACnC,MACS,IAAIw2B,EAAS,KAAOA,EAAS,KAAOA,IAAW,IAEpD,MAAO,GACF,GAAI,OAAO,UAAc,KAAe,UAAU,SAAW,GAE7DlB,EAAS,WACZA,EAAS,MAAO,EAChB,OAAO,iBAAiB,SAAU,IAAM,CACtCA,EAAS,OAAQ,CACzB,EAAS,CACD,KAAM,EACd,CAAO,OAEE,CAEL,MAAMt1B,EAAOs2B,EAAmB,KAAM,EACtC,GAAIt2B,GAAQ,MAAQA,EAAK,KACvB,MAAO,GAET,MAAM,IAAI,QAAQvU,GAAW,WAAWA,EAASuU,EAAK,KAAK,CAAC,CAChE,EACE,MAAO,EACT,CACA,eAAeo1B,GAAqBzf,EAAM1F,EAAOiZ,EAAQ,CACvD,IAAII,EACJ,KAAM,CACJ,OAAArI,EAAS,OACT,IAAAoG,EACA,OAAA0H,EACA,QAAA5F,CACD,EAAG,MAAMzZ,EAA4B,KAAM2kB,EAAoB,EAAEA,EAAoB,EAAE3kB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAG,CACnJ,OAAAuT,CACJ,CAAG,EAAE,QAAQA,CAAM,EACjB,IAAIuN,EACJ,MAAMzsC,EAAOimB,EAAM,QAAS,EAC5B,GAAIgR,EAAO,YAAa,IAAK,OAAQ,CACnC,MAAMyV,EAAW,IAAI,SACrB,OAAO,QAAQ3H,CAAM,EAAE,QAAQ1iB,GAAS,CACtC,GAAI,CAAC7R,EAAKjU,CAAK,EAAI8lB,EACnB,OAAOqqB,EAAS,IAAIl8B,EAAKjU,CAAK,CACpC,CAAK,EACDmwC,EAAS,IAAI,OAAQ1sC,CAAI,EACzBysC,EAAOC,CACX,MACID,EAAOzsC,EAET,KAAM,CACJ,WAAAosC,EACA,WAAAC,CACJ,EAAMpmB,EACE3P,EAAS,MAAMoP,EAA4B,KAAMklB,EAAgB,EAAEA,EAAgB,EAAE,CACzF,UAAW,CACT,IAAAvN,EACA,QAAA8B,EACA,OAAAlI,CACD,EACD,KAAAwV,EACA,KAAMzsC,EAAK,KACX,WAAAosC,EACA,WAAAC,EACA,OAAAnN,CACJ,CAAG,EAAE,QAAQA,CAAM,EAEX1uB,EAAMu0B,GAAU,KAAO,OAASA,EAAO,IAC7C,OAAKv0B,GACH,QAAQ,MAAM,gEAAgE,EAEhFkV,EAA4B,KAAMilB,EAAoB,EAAEA,EAAoB,EAAEhf,EAAM,CAClF,IAAKnb,CACT,CAAG,EACM,CACL,GAAG8F,EACH,UAAWgpB,EAAQhpB,EAAO,WAAa,KAAOgpB,EAAQwK,GAAsBzM,CAAG,EAC/E,OAAQ0H,GAAU,KAAO,OAASA,EAAO,OACzC,IAAAv0B,CACD,CACH,CC/aA,SAASkV,EAA4BzB,EAAG0B,EAAG,CAAE,GAAI,CAAC,CAAA,EAAG,eAAe,KAAK1B,EAAG0B,CAAC,EAAG,MAAM,IAAI,UAAU,gDAAgD,EAAG,OAAO1B,CAAE,CAChK,IAAIxnB,GAAK,EACT,SAASmpB,GAA2B3B,EAAG,CAAE,MAAO,aAAexnB,KAAO,IAAMwnB,CAAE,CAc9E,MAAM8G,GAAc,CAClB,QAAW,OACb,EACA,SAAS4hB,GAAkBtsB,EAAK,CAC9B,GAAIA,GAAO,MAAQA,EAAI,MAAO,CAC5B,MAAMmQ,EAAQ,IAAI,MAAMnQ,EAAI,OAAO,EACnC,aAAO,OAAOmQ,EAAOnQ,EAAI,KAAK,EACxBmQ,CACV,CACE,OAAOnQ,CACT,CAQA,SAASusB,GAAUC,EAAa,CAC9B,MAAMC,EAAiBD,EAAY,WACnC,GAAIC,EAAgB,CAClB,MAAMC,EAAkB,KAAK,OAAO,IAAI,KAAKD,CAAc,EAAI,KAAK,IAAK,GAAI,GAAI,EACjF,GAAIC,EAAkB,EACpB,OAAOA,CAEb,CAEA,CACA,SAASC,GAAmB3pB,EAAM,CAChC,GAAI,CACF,KAAAoV,EACA,kBAAAwU,EACA,QAAAC,EAAU,EACd,EAAM7pB,EACJ,MAAM8pB,EAAaF,GAAgD,OAAO,KAAKxU,CAAI,EACnF,OAAKA,EACE,OAAO,YAAY0U,EAAW,OAAO38B,GAAOioB,EAAKjoB,CAAG,GAAK,IAAI,EAAE,IAAIA,GAAO,CAC/E,MAAM48B,EAAUF,EAAU,YAAY18B,CAAG,IAAMA,EACzCjU,EAAQ,OAAOk8B,EAAKjoB,CAAG,CAAC,EAC9B,MAAO,CAAC48B,EAAS7wC,CAAK,CAC1B,CAAG,CAAC,EALgB,CAAE,CAMtB,CACA,MAAMuyB,GAAiB,CACrB,kBAAmB,GACnB,MAAO,EACP,gCAAiC,GAEjC,mBAAoBnD,GAEpBA,EAAK,MAAQ,IAAM,GAAK,IACxB,YAAa,CAAC,EAAG,IAAM,IAAM,GAAI,CACnC,EACA,IAAI0hB,GAA4CznB,GAA2B,6BAA6B,EACpG0nB,GAAuB1nB,GAA2B,QAAQ,EAC1D2nB,GAA0B3nB,GAA2B,WAAW,EAChE4nB,GAA2B5nB,GAA2B,YAAY,EAClE6nB,GAA2C7nB,GAA2B,4BAA4B,EAClG8nB,GAAgD9nB,GAA2B,iCAAiC,EAC5G+kB,GAAoC/kB,GAA2B,qBAAqB,EACpFilB,GAAwBjlB,GAA2B,SAAS,EAC5D+nB,GAAgC/nB,GAA2B,iBAAiB,EAC5EgoB,GAAuChoB,GAA2B,wBAAwB,EAC1FioB,GAAuBjoB,GAA2B,QAAQ,EAC1DkoB,GAAoCloB,GAA2B,qBAAqB,EACpFmoB,GAA8CnoB,GAA2B,+BAA+B,EACxGooB,GAAyCpoB,GAA2B,0BAA0B,EACnF,MAAMqoB,WAAuBtT,EAAW,CACrD,YAAYC,EAAMrI,EAAO,CACvB,IAAI2b,EACJ,MAAMtT,EAAM,CACV,GAAG9L,GACH,gBAAiBmf,GAAe,gBAChC,sBAAuB,KACvB,UAAW,KACX,qBAAsB,KACtB,wBAAyB,KACzB,SAAU,KACV,oBAAqB,KACrB,GAAG1b,CACT,CAAK,EAGD,OAAO,eAAe,KAAMqb,GAAyB,CACnD,MAAOO,EACb,CAAK,EACD,OAAO,eAAe,KAAMR,GAAkB,CAC5C,MAAOS,EACb,CAAK,EACD,OAAO,eAAe,KAAMV,GAAkC,CAC5D,MAAOW,EACb,CAAK,EACD,OAAO,eAAe,KAAMb,GAAa,CACvC,MAAOc,EACb,CAAK,EACD,OAAO,eAAe,KAAMf,GAAY,CACtC,MAAOgB,EACb,CAAK,EACD,OAAO,eAAe,KAAMlB,GAA8B,CACxD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMC,GAAS,CACnC,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAMG,GAA6B,CACvD,SAAU,GACV,MAAO,MACb,CAAK,EACD,OAAO,eAAe,KAAM9C,GAAsB,CAChD,SAAU,GACV,MAAO,CAAChf,EAAMtJ,IAAU,CACtB,GAAI,CACF,IAAA7R,EACA,SAAAy4B,CACV,EAAY5mB,EACJ,MAAMmsB,EAAQ,KAAK,KAAK,QAAQ7iB,EAAK,EAAE,EACnC6iB,GAAS,MAIb,KAAK,KAAK,aAAa7iB,EAAK,GAAI,CAC9B,YAAa,CACX,GAAG6iB,EAAM,YACT,IAAAh+B,EACA,SAAAy4B,CACZ,CACA,CAAS,CACT,CACA,CAAK,EACD,OAAO,eAAe,KAAM4B,GAAU,CACpC,SAAU,GACV,MAAOlf,GACE,KAAK,KAAK,QAAQA,EAAK,EAAE,GAAKA,CAE7C,CAAK,EACD,OAAO,eAAe,KAAMkiB,GAAS,CACnC,SAAU,GACV,MAAO,MAAMhY,GAAW,CACtB,GAAIA,EAAQ,SAAW,EAAG,OAC1B,MAAMxF,EAAQ,KAAK,KAAK,cAAcwF,CAAO,EACvCmE,EAAgBuK,GAAqBlU,CAAK,EAC1Coe,EAAchK,GAA+BzK,CAAa,EAChE,KAAK,KAAK,KAAK,eAAgByU,CAAW,EAC1C,MAAMC,EAAW1U,EAAc,IAAIrO,GAAQ,CACzC,GAAIA,EAAK,SAAU,CACjB,MAAM8T,EAAW,IAAM,KAAK,SAC5B/Z,EAA4B,KAAMqoB,EAA8B,EAAEA,EAA8B,EAAE,EAAK,EACvG,MAAMY,EAAa,IAAI,gBACjBC,EAAiBC,GAAe,CAChCA,EAAY,KAAOljB,EAAK,IAAIgjB,EAAW,MAAO,CACnD,EACD,KAAK,KAAK,GAAG,eAAgBC,CAAc,EAC3C,MAAME,EAAgB,KAAK,KAAK,wBAAwBnjB,CAAI,EAAE,iBAAiBA,EAAMjG,EAA4B,KAAMkoB,EAAuB,EAAEA,EAAuB,EAAEjiB,CAAI,EAAG,CAC9K,OAAQgjB,EAAW,OACnB,SAAAlP,CACd,CAAa,EACD,YAAK,SAAS,iBAAiB,IAAM,CACnC,KAAK,KAAK,IAAI,eAAgBmP,CAAc,CAC1D,EAAe,CACD,SAAU,EACxB,CAAa,EAAG,EACGE,CACnB,CACU,OAAOppB,EAA4B,KAAMioB,EAAgB,EAAEA,EAAgB,EAAEhiB,CAAI,CAC3F,CAAS,EACKojB,EAAS,MAAM,QAAQ,WAAWL,CAAQ,EAGhD,OAAAhpB,EAA4B,KAAMqoB,EAA8B,EAAEA,EAA8B,EAAE,EAAI,EAC/FgB,CACf,CACA,CAAK,EACD,OAAO,eAAe,KAAMjB,GAAsB,CAChD,SAAU,GACV,MAAO,IAAM,CACX,IAAInW,GACHA,EAAwBjS,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,IAAM,MAAQ3V,EAAsB,oBAAoB,KAAK,KAAK,OAAO,CAC5J,CACA,CAAK,EACD,OAAO,eAAe,KAAMoW,GAAgC,CAC1D,SAAU,GACV,MAAOiB,GAAW,CAChB,KAAM,CACJ,aAAA1a,CACV,EAAY,KAAK,KAAK,SAAU,EACxB,KAAK,KAAK,SAAS,CACjB,aAAc,CACZ,GAAGA,EACH,iBAAkB0a,CAC9B,CACA,CAAS,CACT,CACA,CAAK,EACD,OAAO,eAAe,KAAMhB,GAA2B,CACrD,SAAU,GACV,MAAO,IAAM,CACXtoB,EAA4B,KAAMqoB,EAA8B,EAAEA,EAA8B,EAAE,EAAI,CAC9G,CACA,CAAK,EACD,KAAK,KAAO,WACZ,KAAK,GAAK,KAAK,KAAK,IAAM,iBAC1BroB,EAA4B,KAAM6nB,EAAU,EAAEA,EAAU,EAAEhb,CAAK,EAC/D,MAAM0c,EAAwB,CAC5B,sBAAuB,KAAK,sBAC5B,UAAW,KAAK,UAChB,qBAAsB,KAAK,qBAC3B,wBAAyB,KAAK,wBAC9B,SAAU1c,GAAS,MAAQA,EAAM,gCAAkC,KAAK,gBAAkB,KAAK,SAC/F,oBAAqBA,GAAS,MAAQA,EAAM,gCAAkC,KAAK,gBAAkB,KAAK,mBAC3G,EACD,UAAW/hB,KAAO,OAAO,KAAKy+B,CAAqB,EAC7C,KAAK,KAAKz+B,CAAG,GAAK,OACpB,KAAK,KAAKA,CAAG,EAAIy+B,EAAsBz+B,CAAG,EAAE,KAAK,IAAI,GASzD,KAAK,UAAY09B,EAAoB,KAAK,KAAK,mBAAqB,KAAOA,EAAoB,IAAI3K,GAAiB,KAAK,KAAK,KAAK,EACnI7d,EAA4B,KAAM2nB,EAA4B,EAAEA,EAA4B,EAAI,IAAIrC,GAAuB,KAAK,SAAU,KAAK,KAAMtlB,EAA4B,KAAMilB,EAAoB,EAAEA,EAAoB,EAAGjlB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,CAAC,EACzR,KAAK,UAAY,OAAO,OAAO,IAAI,EACnC,KAAK,eAAiB,OAAO,OAAO,IAAI,CAC5C,CACE,CAAC,OAAO,IAAI,sBAAsB,CAAC,GAAI,CACrC,OAAOnlB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,CAC7D,CACE,WAAW4B,EAAY,CACrBxpB,EAA4B,KAAM2nB,EAA4B,EAAEA,EAA4B,EAAE,WAAW6B,CAAU,EACnH,MAAM,WAAWA,CAAU,EAC3BxpB,EAA4B,KAAM6nB,EAAU,EAAEA,EAAU,EAAE2B,CAAU,CACxE,CASE,wBAAwBlb,EAAQ/E,EAAM,CAChC,KAAK,UAAU+E,CAAM,IACvB,KAAK,UAAUA,CAAM,EAAE,MAAM,CAC3B,QAAS/E,GAAQ,KAAO,OAASA,EAAK,QAAU,EACxD,CAAO,EACD,KAAK,UAAU+E,CAAM,EAAI,MAEvB,KAAK,eAAeA,CAAM,IAC5B,KAAK,eAAeA,CAAM,EAAE,OAAQ,EACpC,KAAK,eAAeA,CAAM,EAAI,KAEpC,CACE,sBAAsBrI,EAAMuT,EAAQ,CAClCxZ,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,uBAAuB,EACnFjG,GAAerI,CAAM,EACrB,MAAM+N,EAAoBnI,GAAqB,KAAK,KAAK,kBAAmBnZ,EAAK,IAAI,EAC/EwjB,EAAWnC,GAAmB,CAClC,KAAMrhB,EAAK,KACX,kBAAAshB,CACN,CAAK,EACD,OAAOvnB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,KAAK,eAAgB,CAC9E,SAAU3hB,EAAK,KACf,KAAMA,EAAK,KACX,SAAAwjB,CACN,EAAO,CACD,OAAAjQ,CACN,CAAK,EAAE,KAAKyN,EAAiB,CAC7B,CACE,UAAUhhB,EAAM2T,EAAO8P,EAAW,CAChC,IAAIC,EACJ,GAAI,CACF,IAAA7+B,EACA,SAAAy4B,EACA,OAAA/J,CACN,EAAQI,GACH+P,EAAUnQ,IAAW,OAAiBA,EAASkQ,GAChD1pB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,WAAW,EACvEjG,GAAerI,CAAM,EACrB,MAAMoQ,EAAW,mBAAmB9+B,CAAG,EACvC,OAAOkV,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,IAAI,gBAAgB,mBAAmBrE,CAAQ,CAAC,QAAQqG,CAAQ,GAAI,CAC7H,OAAApQ,CACN,CAAK,EAAE,KAAKyN,EAAiB,CAC7B,CACE,wBAAwBhhB,EAAMoU,EAAOqP,EAAW,CAC9C,IAAIG,EACJ,GAAI,CACF,IAAA/+B,EACA,SAAAy4B,EACA,MAAA5a,EACA,OAAA6Q,CACN,EAAQa,GACHwP,EAAWrQ,IAAW,OAAkBA,EAASkQ,GAClD1pB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,yBAAyB,EACrFjG,GAAerI,CAAM,EACrB,MAAMoQ,EAAW,mBAAmB9+B,CAAG,EACjCg/B,EAAc,mBAAmBvG,CAAQ,EAC/C,OAAOvjB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,KAAK,gBAAgBkC,CAAW,iBAAiBF,CAAQ,GAAI,CACtH,MAAOjhB,EAAM,IAAIohB,GAAS,CACxB,GAAI,CACF,KAAAC,EACA,WAAA3D,CACV,EAAY0D,EACJ,MAAO,CACL,KAAAC,EACA,WAAA3D,CACD,CACF,CAAA,CACP,EAAO,CACD,OAAA7M,CACN,CAAK,EAAE,KAAKyN,EAAiB,CAC7B,CACE,MAAM,gBAAgBhhB,EAAMpmB,EAAS,CACnC,MAAMvF,EAAO,MAAM0lB,EAA4B,KAAMgoB,EAAgC,EAAEA,EAAgC,EAAEnoC,CAAO,EAC1HyjC,EAAU4D,GAAU5sC,EAAK,WAAW,GAAK,OAEzC,CACJ,SAAAipC,EACA,IAAAz4B,EACA,WAAA04B,CACN,EAAQ3jC,EAGJ,MAAO,CACL,OAAQ,MACR,QAAAyjC,EACA,OAAQ,CAAE,EACV,IAAK,GAAG,MAAMP,GAAgB,CAC5B,WAAYzoC,EAAK,YAAY,YAC7B,cAAeA,EAAK,YAAY,gBAChC,aAAcA,EAAK,YAAY,aAC/B,QAAAgpC,EACA,WAAYhpC,EAAK,OACjB,OAAQA,EAAK,OACb,IAAKwQ,GAAoB,GAAG,OAAO,YAAY,IAAImb,EAAK,IAAI,GAC5D,SAAAsd,EACA,WAAAC,CACD,CAAA,CAAC,GAEF,QAAS,CACP,eAAgBvd,EAAK,IAC7B,CACK,CACL,CACE,SAASA,EAAMgkB,EAAO,CACpB,GAAI,CACF,SAAA1G,EACA,IAAAz4B,EACA,WAAA04B,EACA,OAAAhK,CACN,EAAQyQ,EAGJ,GAFAjqB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,UAAU,EACtEjG,GAAerI,CAAM,EACjB+J,GAAY,MAAQz4B,GAAO,MAAQ04B,GAAc,KACnD,MAAM,IAAI,MAAM,0DAA0D,EAE5E,MAAMoG,EAAW,mBAAmB9+B,CAAG,EACvC,OAAOkV,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,IAAI,gBAAgB,mBAAmBrE,CAAQ,CAAC,IAAIC,CAAU,QAAQoG,CAAQ,GAAI,CAC3I,OAAApQ,CACN,CAAK,EAAE,KAAKyN,EAAiB,CAC7B,CACE,qBAAqBhhB,EAAMikB,EAAO,CAChC,GAAI,CACF,IAAAp/B,EACA,SAAAy4B,EACA,OAAA/J,CACN,EAAQ0Q,EACJlqB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,sBAAsB,EAClF,MAAM8B,EAAW,mBAAmB9+B,CAAG,EACjCg/B,EAAc,mBAAmBvG,CAAQ,EAC/C,OAAOvjB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,OAAO,gBAAgBkC,CAAW,QAAQF,CAAQ,GAAI,OAAW,CAC1H,OAAApQ,CACN,CAAK,EAAE,KAAKyN,EAAiB,CAC7B,CACE,oBAAoBhhB,EAAMpmB,EAAS,CACjCmgB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,qBAAqB,EACjF,KAAM,CACJ,KAAA/U,CACN,EAAQ9M,EACE,CACJ,KAAA/gB,EACA,KAAM0kC,CACZ,EAAQ7W,EACEwU,EAAoBnI,GAAqB,KAAK,KAAK,kBAAmBnZ,EAAK,IAAI,EAC/EwjB,EAAWnC,GAAmB,CAClC,KAAAvU,EACA,kBAAAwU,EACA,QAAS,EACf,CAAK,EACKjvB,EAAQ,IAAI,gBAAgB,CAChC,SAAAsxB,EACA,KAAA1kC,EACA,GAAGukC,CACT,CAAK,EACD,OAAOzpB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,IAAI,aAAatvB,CAAK,GAAIzY,CAAO,CAChG,CACE,aAAa,gBAAgBsqC,EAAO,CAClC,GAAI,CACF,UAAW,CACT,IAAAxS,EACA,QAAA2L,EACA,QAAA7J,EACA,OAAAlI,EAAS,KACV,EACD,KAAAwV,EACA,KAAAlkB,EAAOkkB,EAAK,KACZ,WAAAL,EACA,WAAAC,EACA,OAAAnN,CACN,EAAQ2Q,EAEJ,GADAtI,GAAerI,CAAM,EACjB7B,GAAO,KACT,MAAM,IAAI,MAAM,mCAAmC,EAErD,OAAO,IAAI,QAAQ,CAAC57B,EAASg7B,IAAW,CACtC,MAAMM,EAAM,IAAI,eAChBA,EAAI,KAAK9F,EAAQoG,EAAK,EAAI,EACtB8B,GACF,OAAO,KAAKA,CAAO,EAAE,QAAQ3uB,GAAO,CAClCusB,EAAI,iBAAiBvsB,EAAK2uB,EAAQ3uB,CAAG,CAAC,CAChD,CAAS,EAEHusB,EAAI,aAAe,OACf,OAAOiM,GAAY,WACrBjM,EAAI,QAAUiM,EAAU,KAE1B,SAAS8G,GAAU,CACjB/S,EAAI,MAAO,CACnB,CACM,SAASgT,GAAU,CACjB7Q,GAAU,MAAQA,EAAO,oBAAoB,QAAS4Q,CAAO,CACrE,CACM5Q,GAAU,MAAQA,EAAO,iBAAiB,QAAS4Q,CAAO,EAC1D/S,EAAI,OAAO,iBAAiB,WAAY4J,GAAM,CAC5CyF,EAAWzF,CAAE,CACrB,CAAO,EACD5J,EAAI,iBAAiB,QAAS,IAAM,CAClCgT,EAAS,EACTtT,EAAOmI,GAAgB,CAAE,CACjC,CAAO,EACD7H,EAAI,iBAAiB,UAAW,IAAM,CACpCgT,EAAS,EACT,MAAMvf,EAAQ,IAAI,MAAM,qBAAqB,EAC7CA,EAAM,OAAS,CACb,OAAQ,GACT,EACDiM,EAAOjM,CAAK,CACpB,CAAO,EACDuM,EAAI,iBAAiB,OAAQ,IAAM,CAEjC,GADAgT,EAAS,EACLhT,EAAI,SAAW,KAAOA,EAAI,aAAa,SAAS,wCAAwC,EAAG,CAC7F,MAAMvM,EAAQ,IAAI,MAAM,qBAAqB,EAC7CA,EAAM,OAASuM,EACfN,EAAOjM,CAAK,EACZ,MACV,CACQ,GAAIuM,EAAI,OAAS,KAAOA,EAAI,QAAU,IAAK,CACzC,MAAMvM,EAAQ,IAAI,MAAM,SAAS,EACjCA,EAAM,OAASuM,EACfN,EAAOjM,CAAK,EACZ,MACV,CACQ4b,GAAc,MAAQA,EAAW,CAC/B,OAAQ7jB,EACR,iBAAkB,EAC5B,CAAS,EAGD,MAAMrQ,EAAM6kB,EAAI,sBAAqB,EAAG,KAAM,EAAC,MAAM,SAAS,EAExDiT,EAAa,CACjB,UAAW,IACZ,EACD,UAAWC,KAAQ/3B,EAAK,CACtB,MAAMmW,GAAQ4hB,EAAK,MAAM,IAAI,EACvBC,GAAS7hB,GAAM,MAAO,EACtB9xB,EAAQ8xB,GAAM,KAAK,IAAI,EAC7B2hB,EAAWE,EAAM,EAAI3zC,CAC/B,CACQ,KAAM,CACJ,KAAAuqC,EACA,SAAA/rB,CACV,EAAYi1B,EASJ,GALI/Y,EAAO,YAAW,IAAO,QAAUlc,GAAY,MAGjD,QAAQ,MAAM,mLAAmL,EAE/L+rB,GAAQ,KAAM,CAEhB,QAAQ,MAAM,+KAA+K,EAC7L,MACV,CACQuF,GAAc,MAAQA,EAAWvF,CAAI,EACrCrlC,EAAQ,CACN,GAAGuuC,EACH,KAAMlJ,CAChB,CAAS,CACT,CAAO,EACD/J,EAAI,iBAAiB,QAAS4J,GAAM,CAClCoJ,EAAS,EACT,MAAMvf,EAAQ,IAAI,MAAM,eAAe,EACvCA,EAAM,OAASmW,EAAG,OAClBlK,EAAOjM,CAAK,CACpB,CAAO,EACDuM,EAAI,KAAK0P,CAAI,CACnB,CAAK,CACL,CACE,SAAU,CACR/mB,EAA4B,KAAMqoB,EAA8B,EAAEA,EAA8B,EAAE,EAAI,EACtG,KAAK,KAAK,gBAAgBroB,EAA4B,KAAMooB,EAAoB,EAAEA,EAAoB,CAAC,EACvG,KAAK,KAAK,YAAYpoB,EAA4B,KAAMmoB,EAAO,EAAEA,EAAO,CAAC,EACzE,KAAK,KAAK,GAAG,aAAcnoB,EAA4B,KAAMsoB,EAAyB,EAAEA,EAAyB,CAAC,CACtH,CACE,WAAY,CACV,KAAK,KAAK,mBAAmBtoB,EAA4B,KAAMooB,EAAoB,EAAEA,EAAoB,CAAC,EAC1G,KAAK,KAAK,eAAepoB,EAA4B,KAAMmoB,EAAO,EAAEA,EAAO,CAAC,EAC5E,KAAK,KAAK,IAAI,aAAcnoB,EAA4B,KAAMsoB,EAAyB,EAAEA,EAAyB,CAAC,CACvH,CACA,CACA,SAASO,GAAYtf,EAAM,CACrBA,GAAQ,MAAQ,EAAE,aAAcA,GAAQ,iBAAkBA,GAAQ,YAAaA,GAAQ,qBAAsBA,GAAQ,gBAAiBA,GAAQ,yBAA0BA,KACxK,iBAAkBA,GAAQ,EAAE,aAAcA,IAC5C,KAAK,KAAK,IAAI,kFAAmF,SAAS,EAExG,qBAAsBA,GAAQ,EAAE,YAAaA,IAC/C,KAAK,KAAK,IAAI,qFAAsF,SAAS,EAE3G,yBAA0BA,GAAQ,EAAE,gBAAiBA,IACvD,KAAK,KAAK,IAAI,6FAA8F,SAAS,EAEnH,aAAcA,EAChBvJ,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAI,IAAIzO,GAAc,KAAK,KAAM,CACjF,SAAU,KAAK,GACf,SAAU,MACV,aAAc,KAAK,KAAK,SACxB,iBAAkB,KAAK,KAAK,QAC5B,qBAAsB,KAAK,KAAK,WACtC,CAAK,GAEG,YAAa5P,GACfvJ,EAA4B,KAAMooB,EAAoB,EAAEA,EAAoB,EAAG,EAE7E,gBAAiB7e,IACnBvJ,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,KAAK,qBAAuBre,EAAK,cAG3F,CACA,SAASqf,GAAarX,EAAQ,CAC5B,GAAI,CAACvR,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EACrD,MAAM,IAAI,MAAM,kGAAkGrW,CAAM,oBAAoB,CAEhJ,CACA,eAAeoX,GAAkC9oC,EAAS,CAExD,GADAgiC,GAAehiC,GAAW,KAAO,OAASA,EAAQ,MAAM,EACpDmgB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,GAAK,KAAM,CACvG,KAAM,CACJ,gCAAA0C,CACD,EAAG,KAAK,KAELA,IAAoC,IACtCzqB,EAA4B,KAAM8nB,EAAW,EAAEA,EAAW,EAAE,iCAAiC,EAC7F9nB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAAI/nB,EAA4B,KAAM4nB,EAAO,EAAEA,EAAO,EAAE,IAAI,SAAU/nC,CAAO,EAAE,KAAKonC,EAAiB,GAE/LjnB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAAI0C,EAAgC5qC,CAAO,EAEvImgB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAAI,MAAM/nB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAC9L,WAAW,IAAM,CAQf/nB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAAI,IAC/F,GAAGb,GAAUlnB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,EAAE,WAAW,GAAK,GAAK,GAAG,CACtI,CACE,OAAO/nB,EAA4B,KAAM+nB,EAA2B,EAAEA,EAA2B,CACnG,CACA,SAASW,GAAkBziB,EAAM,CAC/B,IAAIjsB,EAAQ,KACZ,OAAO,IAAI,QAAQ,CAAC+B,EAASg7B,IAAW,CACtC,MAAM2P,EAAa,CAAC9N,EAAeC,IAAe,CAChD,IAAI6R,EACJ,MAAMC,EAAa,KAAK,KAAK,QAAQ1kB,EAAK,EAAE,EAC5C,KAAK,KAAK,KAAK,kBAAmB0kB,EAAY,CAC5C,eAAgBD,EAAwBC,EAAW,SAAS,gBAAkB,KAAOD,EAAwB,EAC7G,cAAA9R,EACA,WAAAC,CACR,CAAO,CACF,EACK+R,EAAU5uC,GAAO,CACrB,KAAK,KAAK,IAAIA,CAAG,EACjB,KAAK,KAAK,KAAK,eAAgBiqB,EAAMjqB,CAAG,EACxC,KAAK,wBAAwBiqB,EAAK,EAAE,EACpC8Q,EAAO/6B,CAAG,CACX,EACK6uC,EAAYj6B,GAAU,CAC1B,MAAM6jB,EAAa,CACjB,KAAM,CACJ,GAAG7jB,CACJ,EACD,OAAQ,IACR,UAAWA,EAAO,QACnB,EACD,KAAK,wBAAwBqV,EAAK,EAAE,EACpC,KAAK,KAAK,KAAK,iBAAkBjG,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAGwO,CAAU,EACpG7jB,EAAO,UACT,KAAK,KAAK,IAAI,YAAYqV,EAAK,IAAI,SAASrV,EAAO,QAAQ,EAAE,EAE/D7U,EAAS,CACV,EACKstC,EAAS,IAAI1I,GAAkB1a,EAAK,KAAM,CAE9C,cAAejG,EAA4B,KAAM2nB,EAA4B,EAAEA,EAA4B,EAC3G,IAAK,UAAY,CACf,OAAO3tC,EAAM,KAAK,IAAI,GAAG,SAAS,CACnC,EACD,aAAc,KAAK,KAAK,aAAe,KAAK,KAAK,aAAa,KAAK,IAAI,EAAI,OAC3E,WAAA0sC,EACA,QAAAkE,EACA,UAAAC,EACA,eAAgBxJ,GAAQ,CACtB,KAAK,KAAK,KAAK,6BAA8BrhB,EAA4B,KAAMmlB,EAAQ,EAAEA,EAAQ,EAAElf,CAAI,EAAGob,CAAI,CAC/G,EACD,KAAApb,EACA,mBAAoB,KAAK,KAAK,mBAC9B,GAAGA,EAAK,WACd,CAAK,EACD,KAAK,UAAUA,EAAK,EAAE,EAAIojB,EAC1B,MAAMyB,EAAe,IAAIvO,GAAa,KAAK,IAAI,EAC/C,KAAK,eAAetW,EAAK,EAAE,EAAI6kB,EAC/BA,EAAa,aAAa7kB,EAAK,GAAI8kB,GAAW,CAC5C1B,EAAO,MAAO,EACd,KAAK,wBAAwBpjB,EAAK,GAAI,CACpC,MAAO,EACf,CAAO,EACDlqB,EAAQ,UAAUgvC,CAAO,cAAc,CAC7C,CAAK,EACDD,EAAa,YAAY7kB,EAAK,GAAI,IAAM,CACtCojB,EAAO,MAAO,EACd,KAAK,wBAAwBpjB,EAAK,GAAI,CACpC,MAAO,EACf,CAAO,EACDlqB,EAAQ,UAAUkqB,EAAK,EAAE,eAAe,CAC9C,CAAK,EACD6kB,EAAa,YAAY7kB,EAAK,GAAI2K,GAAY,CACxCA,EACFyY,EAAO,MAAO,EAEdA,EAAO,MAAO,CAEtB,CAAK,EACDyB,EAAa,WAAW7kB,EAAK,GAAI,IAAM,CACrCojB,EAAO,MAAO,CACpB,CAAK,EACDyB,EAAa,YAAY7kB,EAAK,GAAI,IAAM,CACtCojB,EAAO,MAAO,CACpB,CAAK,EACDA,EAAO,MAAO,CAClB,CAAG,CACH,CACA,SAASZ,GAAyBxiB,EAAM,CACtC,IAAIqT,EACJ,MAAO,CACL,IAAKA,EAAerT,EAAK,SAAW,KAAO,OAASqT,EAAa,KACjE,SAAU,eACV,KAAMrT,EAAK,KAAK,KAChB,SAAUA,EAAK,IAChB,CACH,CACAsiB,GAAe,QAAUljB,GAAY","x_google_ignoreList":[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]}