{"version":3,"file":"index.mjs","sources":["../../src/autocomplete/BaseAutoComplete.vue","../../src/autocomplete/AutoComplete.vue","../../src/autocomplete/AutoComplete.vue?vue&type=template&id=337ae7a8&lang.js"],"sourcesContent":["<script>\nimport BaseInput from '@primevue/core/baseinput';\nimport AutoCompleteStyle from 'primevue/autocomplete/style';\n\nexport default {\n    name: 'BaseAutoComplete',\n    extends: BaseInput,\n    props: {\n        suggestions: {\n            type: Array,\n            default: null\n        },\n        optionLabel: null,\n        optionDisabled: null,\n        optionGroupLabel: null,\n        optionGroupChildren: null,\n        scrollHeight: {\n            type: String,\n            default: '14rem'\n        },\n        dropdown: {\n            type: Boolean,\n            default: false\n        },\n        dropdownMode: {\n            type: String,\n            default: 'blank'\n        },\n        multiple: {\n            type: Boolean,\n            default: false\n        },\n        loading: {\n            type: Boolean,\n            default: false\n        },\n        placeholder: {\n            type: String,\n            default: null\n        },\n        dataKey: {\n            type: String,\n            default: null\n        },\n        minLength: {\n            type: Number,\n            default: 1\n        },\n        delay: {\n            type: Number,\n            default: 300\n        },\n        appendTo: {\n            type: [String, Object],\n            default: 'body'\n        },\n        forceSelection: {\n            type: Boolean,\n            default: false\n        },\n        completeOnFocus: {\n            type: Boolean,\n            default: false\n        },\n        showClear: {\n            type: Boolean,\n            default: false\n        },\n        inputId: {\n            type: String,\n            default: null\n        },\n        inputStyle: {\n            type: Object,\n            default: null\n        },\n        inputClass: {\n            type: [String, Object],\n            default: null\n        },\n        panelStyle: {\n            type: Object,\n            default: null\n        },\n        panelClass: {\n            type: [String, Object],\n            default: null\n        },\n        overlayStyle: {\n            type: Object,\n            default: null\n        },\n        overlayClass: {\n            type: [String, Object],\n            default: null\n        },\n        dropdownIcon: {\n            type: String,\n            default: null\n        },\n        dropdownClass: {\n            type: [String, Object],\n            default: null\n        },\n        loader: {\n            type: String,\n            default: null\n        },\n        loadingIcon: {\n            type: String,\n            default: null\n        },\n        removeTokenIcon: {\n            type: String,\n            default: null\n        },\n        chipIcon: {\n            type: String,\n            default: null\n        },\n        virtualScrollerOptions: {\n            type: Object,\n            default: null\n        },\n        autoOptionFocus: {\n            type: Boolean,\n            default: false\n        },\n        selectOnFocus: {\n            type: Boolean,\n            default: false\n        },\n        focusOnHover: {\n            type: Boolean,\n            default: true\n        },\n        searchLocale: {\n            type: String,\n            default: undefined\n        },\n        searchMessage: {\n            type: String,\n            default: null\n        },\n        selectionMessage: {\n            type: String,\n            default: null\n        },\n        emptySelectionMessage: {\n            type: String,\n            default: null\n        },\n        emptySearchMessage: {\n            type: String,\n            default: null\n        },\n        showEmptyMessage: {\n            type: Boolean,\n            default: true\n        },\n        tabindex: {\n            type: Number,\n            default: 0\n        },\n        typeahead: {\n            type: Boolean,\n            default: true\n        },\n        ariaLabel: {\n            type: String,\n            default: null\n        },\n        ariaLabelledby: {\n            type: String,\n            default: null\n        }\n    },\n    style: AutoCompleteStyle,\n    provide() {\n        return {\n            $pcAutoComplete: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n        <InputText\n            v-if=\"!multiple\"\n            ref=\"focusInput\"\n            :id=\"inputId\"\n            type=\"text\"\n            :name=\"$formName\"\n            :class=\"[cx('pcInputText'), inputClass]\"\n            :style=\"inputStyle\"\n            :defaultValue=\"inputValue\"\n            :placeholder=\"placeholder\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            :fluid=\"$fluid\"\n            :disabled=\"disabled\"\n            :size=\"size\"\n            :invalid=\"invalid\"\n            :variant=\"variant\"\n            autocomplete=\"off\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            aria-autocomplete=\"list\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"overlayVisible ? panelId : undefined\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @input=\"onInput\"\n            @change=\"onChange\"\n            :unstyled=\"unstyled\"\n            :data-p-has-dropdown=\"dropdown\"\n            :pt=\"ptm('pcInputText')\"\n        />\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <TimesIcon :class=\"[cx('clearIcon')]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" />\n        </slot>\n        <ul\n            v-if=\"multiple\"\n            ref=\"multiContainer\"\n            :class=\"cx('inputMultiple')\"\n            tabindex=\"-1\"\n            role=\"listbox\"\n            aria-orientation=\"horizontal\"\n            :aria-activedescendant=\"focused ? focusedMultipleOptionId : undefined\"\n            @focus=\"onMultipleContainerFocus\"\n            @blur=\"onMultipleContainerBlur\"\n            @keydown=\"onMultipleContainerKeyDown\"\n            :data-p-has-dropdown=\"dropdown\"\n            :data-p=\"inputMultipleDataP\"\n            v-bind=\"ptm('inputMultiple')\"\n        >\n            <li\n                v-for=\"(option, i) of d_value\"\n                :key=\"`${i}_${getOptionLabel(option)}`\"\n                :id=\"$id + '_multiple_option_' + i\"\n                :class=\"cx('chipItem', { i })\"\n                role=\"option\"\n                :aria-label=\"getOptionLabel(option)\"\n                :aria-selected=\"true\"\n                :aria-setsize=\"d_value.length\"\n                :aria-posinset=\"i + 1\"\n                v-bind=\"ptm('chipItem')\"\n            >\n                <slot name=\"chip\" :class=\"cx('pcChip')\" :value=\"option\" :index=\"i\" :removeCallback=\"(event) => removeOption(event, i)\" v-bind=\"ptm('pcChip')\">\n                    <!-- TODO: removetokenicon and removeTokenIcon  deprecated since v4.0. Use chipicon slot and chipIcon prop-->\n                    <Chip\n                        :class=\"cx('pcChip')\"\n                        :label=\"getOptionLabel(option)\"\n                        :removeIcon=\"chipIcon || removeTokenIcon\"\n                        removable\n                        :unstyled=\"unstyled\"\n                        @remove=\"removeOption($event, i)\"\n                        :data-p-focused=\"focusedMultipleOptionIndex === i\"\n                        :pt=\"ptm('pcChip')\"\n                    >\n                        <template #removeicon>\n                            <slot :name=\"$slots.chipicon ? 'chipicon' : 'removetokenicon'\" :class=\"cx('chipIcon')\" :index=\"i\" :removeCallback=\"(event) => removeOption(event, i)\" />\n                        </template>\n                    </Chip>\n                </slot>\n            </li>\n            <li :class=\"cx('inputChip')\" role=\"option\" v-bind=\"ptm('inputChip')\">\n                <input\n                    ref=\"focusInput\"\n                    :id=\"inputId\"\n                    type=\"text\"\n                    :style=\"inputStyle\"\n                    :class=\"inputClass\"\n                    :placeholder=\"placeholder\"\n                    :tabindex=\"!disabled ? tabindex : -1\"\n                    :disabled=\"disabled\"\n                    autocomplete=\"off\"\n                    role=\"combobox\"\n                    :aria-label=\"ariaLabel\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    aria-haspopup=\"listbox\"\n                    aria-autocomplete=\"list\"\n                    :aria-expanded=\"overlayVisible\"\n                    :aria-controls=\"$id + '_list'\"\n                    :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                    :aria-invalid=\"invalid || undefined\"\n                    @focus=\"onFocus\"\n                    @blur=\"onBlur\"\n                    @keydown=\"onKeyDown\"\n                    @input=\"onInput\"\n                    @change=\"onChange\"\n                    v-bind=\"ptm('input')\"\n                />\n            </li>\n        </ul>\n        <slot v-if=\"searching || loading\" :class=\"cx('loader')\" :name=\"$slots.loader ? 'loader' : 'loadingicon'\">\n            <i v-if=\"loader || loadingIcon\" :class=\"['pi-spin', cx('loader'), loader, loadingIcon]\" aria-hidden=\"true\" :data-p-has-dropdown=\"dropdown\" v-bind=\"ptm('loader')\" />\n            <SpinnerIcon v-else-if=\"loading\" :class=\"cx('loader')\" spin aria-hidden=\"true\" :data-p-has-dropdown=\"dropdown\" v-bind=\"ptm('loader')\" />\n        </slot>\n        <slot :name=\"$slots.dropdown ? 'dropdown' : 'dropdownbutton'\" :toggleCallback=\"(event) => onDropdownClick(event)\">\n            <button\n                v-if=\"dropdown\"\n                ref=\"dropdownButton\"\n                type=\"button\"\n                :class=\"[cx('dropdown'), dropdownClass]\"\n                :disabled=\"disabled\"\n                aria-haspopup=\"listbox\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"panelId\"\n                @click=\"onDropdownClick\"\n                v-bind=\"ptm('dropdown')\"\n            >\n                <slot name=\"dropdownicon\" :class=\"dropdownIcon\">\n                    <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"dropdownIcon\" v-bind=\"ptm('dropdownIcon')\" />\n                </slot>\n            </button>\n        </slot>\n        <span v-if=\"typeahead\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSearchResult')\" :data-p-hidden-accessible=\"true\">\n            {{ searchResultMessageText }}\n        </span>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :id=\"panelId\"\n                    :class=\"[cx('overlay'), panelClass, overlayClass]\"\n                    :style=\"{ ...panelStyle, ...overlayStyle }\"\n                    @click=\"onOverlayClick\"\n                    @keydown=\"onOverlayKeyDown\"\n                    :data-p=\"overlayDataP\"\n                    v-bind=\"ptm('overlay')\"\n                >\n                    <slot name=\"header\" :value=\"d_value\" :suggestions=\"visibleOptions\"></slot>\n                    <div :class=\"cx('listContainer')\" :style=\"{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :style=\"{ height: scrollHeight }\" :items=\"visibleOptions\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"$id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" :aria-label=\"listAriaLabel\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('option', { option, i, getItemOptions })\"\n                                            role=\"option\"\n                                            :aria-label=\"getOptionLabel(option)\"\n                                            :aria-selected=\"isSelected(option)\"\n                                            :aria-disabled=\"isOptionDisabled(option)\"\n                                            :aria-setsize=\"ariaSetSize\"\n                                            :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n                                            @click=\"onOptionSelect($event, option)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                            v-bind=\"getPTOptions(option, getItemOptions, i, 'option')\"\n                                        >\n                                            <slot name=\"option\" :option=\"option\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionLabel(option) }}</slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"showEmptyMessage && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"empty\">{{ searchResultMessageText }}</slot>\n                                    </li>\n                                </ul>\n                            </template>\n                            <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n                                <slot name=\"loader\" :options=\"options\"></slot>\n                            </template>\n                        </VirtualScroller>\n                    </div>\n                    <slot name=\"footer\" :value=\"d_value\" :suggestions=\"visibleOptions\"></slot>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ selectedMessageText }}\n                    </span>\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { absolutePosition, addStyle, findSingle, focus, getOuterWidth, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport Chip from 'primevue/chip';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseAutoComplete from './BaseAutoComplete.vue';\n\nexport default {\n    name: 'AutoComplete',\n    extends: BaseAutoComplete,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur', 'item-select', 'item-unselect', 'option-select', 'option-unselect', 'dropdown-click', 'clear', 'complete', 'before-show', 'before-hide', 'show', 'hide'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    resizeListener: null,\n    scrollHandler: null,\n    overlay: null,\n    virtualScroller: null,\n    searchTimeout: null,\n    dirty: false,\n    startRangeIndex: -1,\n    data() {\n        return {\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            focusedMultipleOptionIndex: -1,\n            overlayVisible: false,\n            searching: false\n        };\n    },\n    watch: {\n        suggestions() {\n            if (this.searching) {\n                this.show();\n                this.focusedOptionIndex = this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n                this.searching = false;\n                !this.showEmptyMessage && this.visibleOptions.length === 0 && this.hide();\n            }\n\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.autoUpdateModel();\n    },\n    updated() {\n        if (this.overlayVisible) {\n            this.alignOverlay();\n        }\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        getOptionIndex(index, fn) {\n            return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n        },\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return option; // TODO: The 'optionValue' properties can be added.\n        },\n        getOptionRenderKey(option, index) {\n            return (this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option)) + '_' + index;\n        },\n        getPTOptions(option, itemOptions, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option,\n                    index,\n                    selected: this.isSelected(option),\n                    focused: this.focusedOptionIndex === this.getOptionIndex(index, itemOptions),\n                    disabled: this.isOptionDisabled(option)\n                }\n            });\n        },\n        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        isOptionGroup(option) {\n            return this.optionGroupLabel && option.optionGroup && option.group;\n        },\n        getOptionGroupLabel(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupLabel);\n        },\n        getOptionGroupChildren(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupChildren);\n        },\n        getAriaPosInset(index) {\n            return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.dirty = true;\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n            isFocus && focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.dirty = isFocus;\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n\n                isFocus && focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput?.$el);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            if (!this.dirty && this.completeOnFocus) {\n                this.search(event, event.target.value, 'focus');\n            }\n\n            this.dirty = true;\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n                this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.dirty = false;\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.$emit('blur', event);\n            this.formField.onBlur?.();\n        },\n        onKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'PageDown':\n                    this.onPageDownKey(event);\n                    break;\n\n                case 'PageUp':\n                    this.onPageUpKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    this.onShiftKey(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onInput(event) {\n            if (this.typeahead) {\n                if (this.searchTimeout) {\n                    clearTimeout(this.searchTimeout);\n                }\n\n                let query = event.target.value;\n\n                if (!this.multiple) {\n                    this.updateModel(event, query);\n                }\n\n                if (query.length === 0) {\n                    this.searching = false;\n                    this.hide();\n                    this.$emit('clear');\n                } else {\n                    if (query.length >= this.minLength) {\n                        this.focusedOptionIndex = -1;\n\n                        this.searchTimeout = setTimeout(() => {\n                            this.search(event, query, 'input');\n                        }, this.delay);\n                    } else {\n                        this.searching = false;\n                        this.hide();\n                    }\n                }\n            }\n        },\n        onChange(event) {\n            if (this.forceSelection) {\n                let valid = false;\n\n                // when forceSelection is on, prevent called twice onOptionSelect()\n                if (this.visibleOptions && !this.multiple) {\n                    let value = this.multiple ? this.$refs.focusInput.value : this.$refs.focusInput?.$el?.value;\n                    const matchedValue = this.visibleOptions.find((option) => this.isOptionMatched(option, value || ''));\n\n                    if (matchedValue !== undefined) {\n                        valid = true;\n                        !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);\n                    }\n                }\n\n                if (!valid) {\n                    if (this.multiple) {\n                        this.$refs.focusInput.value = '';\n                    } else {\n                        const inputEl = this.$refs.focusInput?.$el;\n                        inputEl && (inputEl.value = '');\n                    }\n                    this.$emit('clear');\n                    !this.multiple && this.updateModel(event, null);\n                }\n            }\n        },\n        onMultipleContainerFocus() {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n        },\n        onMultipleContainerBlur() {\n            this.focusedMultipleOptionIndex = -1;\n            this.focused = false;\n        },\n        onMultipleContainerKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowLeft':\n                    this.onArrowLeftKeyOnMultiple(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKeyOnMultiple(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKeyOnMultiple(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onContainerClick(event) {\n            this.clicked = true;\n\n            if (this.disabled || this.searching || this.loading || this.isDropdownClicked(event)) {\n                return;\n            }\n\n            if (!this.overlay || !this.overlay.contains(event.target)) {\n                focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n            }\n        },\n        onDropdownClick(event) {\n            let query = undefined;\n\n            if (this.overlayVisible) {\n                this.hide(true);\n            } else {\n                let target = this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el;\n\n                focus(target);\n                query = target.value;\n\n                if (this.dropdownMode === 'blank') this.search(event, '', 'dropdown');\n                else if (this.dropdownMode === 'current') this.search(event, query, 'dropdown');\n            }\n\n            this.$emit('dropdown-click', { originalEvent: event, query });\n        },\n        onOptionSelect(event, option, isHide = true) {\n            const value = this.getOptionValue(option);\n\n            if (this.multiple) {\n                this.$refs.focusInput.value = '';\n\n                if (!this.isSelected(option)) {\n                    this.updateModel(event, [...(this.d_value || []), value]);\n                }\n            } else {\n                this.updateModel(event, value);\n            }\n\n            this.$emit('item-select', { originalEvent: event, value: option });\n            this.$emit('option-select', { originalEvent: event, value: option });\n\n            isHide && this.hide(true);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\n            }\n        },\n        onOptionSelectRange(event, start = -1, end = -1) {\n            start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n            end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n            if (start !== -1 && end !== -1) {\n                const rangeStart = Math.min(start, end);\n                const rangeEnd = Math.max(start, end);\n                const value = this.visibleOptions\n                    .slice(rangeStart, rangeEnd + 1)\n                    .filter((option) => this.isValidOption(option))\n                    .filter((option) => !this.isSelected(option))\n                    .map((option) => this.getOptionValue(option));\n\n                this.updateModel(event, [...(this.d_value || []), ...value]);\n            }\n        },\n        onClearClick(event) {\n            this.updateModel(event, null);\n            this.$emit('clear');\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                return;\n            }\n\n            const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n            if (this.multiple && event.shiftKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (!this.overlayVisible) {\n                return;\n            }\n\n            if (event.altKey) {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                if (this.multiple && event.shiftKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event) {\n            const target = event.currentTarget;\n\n            this.focusedOptionIndex = -1;\n\n            if (this.multiple) {\n                if (isEmpty(target.value) && this.$filled) {\n                    focus(this.$refs.multiContainer);\n                    this.focusedMultipleOptionIndex = this.d_value.length;\n                } else {\n                    event.stopPropagation(); // To prevent onArrowLeftKeyOnMultiple method\n                }\n            }\n        },\n        onArrowRightKey(event) {\n            this.focusedOptionIndex = -1;\n\n            this.multiple && event.stopPropagation(); // To prevent onArrowRightKeyOnMultiple method\n        },\n        onHomeKey(event) {\n            const { currentTarget } = event;\n            const len = currentTarget.value.length;\n            const metaKey = event.metaKey || event.ctrlKey;\n            const optionIndex = this.findFirstOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n            }\n\n            currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);\n            this.focusedOptionIndex = -1;\n\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            const { currentTarget } = event;\n            const len = currentTarget.value.length;\n            const metaKey = event.metaKey || event.ctrlKey;\n            const optionIndex = this.findLastOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n            }\n\n            currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);\n            this.focusedOptionIndex = -1;\n\n            event.preventDefault();\n        },\n        onPageUpKey(event) {\n            this.scrollInView(0);\n            event.preventDefault();\n        },\n        onPageDownKey(event) {\n            this.scrollInView(this.visibleOptions.length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.typeahead) {\n                if (this.multiple) {\n                    if (event.target.value.trim()) {\n                        this.updateModel(event, [...(this.d_value || []), event.target.value.trim()]);\n                        this.$refs.focusInput.value = '';\n                    }\n\n                    event.preventDefault();\n                }\n            } else {\n                if (!this.overlayVisible) {\n                    this.focusedOptionIndex = -1; // reset\n                    this.onArrowDownKey(event);\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        if (this.multiple && event.shiftKey) {\n                            this.onOptionSelectRange(event, this.focusedOptionIndex);\n                        } else {\n                            this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                        }\n\n                        event.preventDefault();\n                    }\n\n                    this.hide();\n                }\n            }\n        },\n        onSpaceKey(event) {\n            if (!this.autoOptionFocus && this.focusedOptionIndex !== -1) {\n                this.onEnterKey(event);\n            }\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedOptionIndex !== -1) {\n                this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n            }\n\n            this.overlayVisible && this.hide();\n        },\n        onShiftKey() {\n            this.startRangeIndex = this.focusedOptionIndex;\n        },\n        onBackspaceKey(event) {\n            if (this.multiple) {\n                if (isNotEmpty(this.d_value) && !this.$refs.focusInput.value) {\n                    const removedValue = this.d_value[this.d_value.length - 1];\n                    const newValue = this.d_value.slice(0, -1);\n\n                    this.writeValue(newValue, event);\n                    this.$emit('item-unselect', { originalEvent: event, value: removedValue });\n                    this.$emit('option-unselect', { originalEvent: event, value: removedValue });\n                }\n\n                event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method\n            }\n        },\n        onArrowLeftKeyOnMultiple() {\n            this.focusedMultipleOptionIndex = this.focusedMultipleOptionIndex < 1 ? 0 : this.focusedMultipleOptionIndex - 1;\n        },\n        onArrowRightKeyOnMultiple() {\n            this.focusedMultipleOptionIndex++;\n\n            if (this.focusedMultipleOptionIndex > this.d_value.length - 1) {\n                this.focusedMultipleOptionIndex = -1;\n                focus(this.$refs.focusInput);\n            }\n        },\n        onBackspaceKeyOnMultiple(event) {\n            if (this.focusedMultipleOptionIndex !== -1) {\n                this.removeOption(event, this.focusedMultipleOptionIndex);\n            }\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0' });\n            this.alignOverlay();\n\n            // Issue: #7508\n            this.$attrSelector && el.setAttribute(this.$attrSelector, '');\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave(el) {\n            el.style.pointerEvents = 'none';\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            let target = this.multiple ? this.$refs.multiContainer : this.$refs.focusInput.$el;\n\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, target);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(target) + 'px';\n                absolutePosition(this.overlay, target);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.overlay && this.isOutsideClicked(event)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        isOutsideClicked(event) {\n            return !this.overlay.contains(event.target) && !this.isInputClicked(event) && !this.isDropdownClicked(event);\n        },\n        isInputClicked(event) {\n            if (this.multiple) return event.target === this.$refs.multiContainer || this.$refs.multiContainer.contains(event.target);\n            else return event.target === this.$refs.focusInput.$el;\n        },\n        isDropdownClicked(event) {\n            return this.$refs.dropdownButton ? event.target === this.$refs.dropdownButton || this.$refs.dropdownButton.contains(event.target) : false;\n        },\n        isOptionMatched(option, value) {\n            return this.isValidOption(option) && this.getOptionLabel(option)?.toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);\n        },\n        isValidOption(option) {\n            return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n        },\n        isValidSelectedOption(option) {\n            return this.isValidOption(option) && this.isSelected(option);\n        },\n        isEquals(value1, value2) {\n            return equals(value1, value2, this.equalityKey);\n        },\n        isSelected(option) {\n            const optionValue = this.getOptionValue(option);\n\n            return this.multiple ? (this.d_value || []).some((value) => this.isEquals(value, optionValue)) : this.isEquals(this.d_value, this.getOptionValue(option));\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n        },\n        findPrevOptionIndex(index) {\n            const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        },\n        findSelectedOptionIndex() {\n            return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n        },\n        search(event, query, source) {\n            //allow empty string but not undefined or null\n            if (query === undefined || query === null) {\n                return;\n            }\n\n            //do not search blank values on input change\n            if (source === 'input' && query.trim().length === 0) {\n                return;\n            }\n\n            this.searching = true;\n            this.$emit('complete', { originalEvent: event, query });\n        },\n        removeOption(event, index) {\n            const removedOption = this.d_value[index];\n            const value = this.d_value.filter((_, i) => i !== index).map((option) => this.getOptionValue(option));\n\n            this.updateModel(event, value);\n            this.$emit('item-unselect', { originalEvent: event, value: removedOption });\n            this.$emit('option-unselect', { originalEvent: event, value: removedOption });\n            this.dirty = true;\n            focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index], false);\n                }\n            }\n        },\n        scrollInView(index = -1) {\n            this.$nextTick(() => {\n                const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n                const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n                if (element) {\n                    element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\n                } else if (!this.virtualScrollerDisabled) {\n                    this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.selectOnFocus && this.autoOptionFocus && !this.$filled) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n                this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex], false);\n            }\n        },\n        updateModel(event, value) {\n            this.writeValue(value, event);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                result.push({ optionGroup: option, group: true, index });\n\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        listRef(el, contentRef) {\n            this.list = el;\n            contentRef && contentRef(el); // For VirtualScroller\n        },\n        virtualScrollerRef(el) {\n            this.virtualScroller = el;\n        },\n        findNextSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n        },\n        findPrevSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n        },\n        findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n            let matchedOptionIndex = -1;\n\n            if (this.$filled) {\n                if (firstCheckUp) {\n                    matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n                    matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n                } else {\n                    matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n                    matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n                }\n            }\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        }\n    },\n    computed: {\n        visibleOptions() {\n            return this.optionGroupLabel ? this.flatOptions(this.suggestions) : this.suggestions || [];\n        },\n        inputValue() {\n            if (this.$filled) {\n                if (typeof this.d_value === 'object') {\n                    const label = this.getOptionLabel(this.d_value);\n\n                    return label != null ? label : this.d_value;\n                } else {\n                    return this.d_value;\n                }\n            } else {\n                return '';\n            }\n        },\n        // @deprecated use $filled instead.\n        hasSelectedOption() {\n            return this.$filled;\n        },\n        equalityKey() {\n            // @todo: The 'optionValue' properties can be added.\n            return this.dataKey;\n        },\n        searchResultMessageText() {\n            return isNotEmpty(this.visibleOptions) && this.overlayVisible ? this.searchMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptySearchMessageText;\n        },\n        searchMessageText() {\n            return this.searchMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptySearchMessageText() {\n            return this.emptySearchMessage || this.$primevue.config.locale.emptySearchMessage || '';\n        },\n        selectionMessageText() {\n            return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n        },\n        emptySelectionMessageText() {\n            return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n        },\n        selectedMessageText() {\n            return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.d_value.length : '1') : this.emptySelectionMessageText;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        },\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n        },\n        focusedMultipleOptionId() {\n            return this.focusedMultipleOptionIndex !== -1 ? `${this.$id}_multiple_option_${this.focusedMultipleOptionIndex}` : null;\n        },\n        isClearIconVisible() {\n            return this.showClear && this.$filled && !this.disabled && !this.loading;\n        },\n        ariaSetSize() {\n            return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        panelId() {\n            return this.$id + '_panel';\n        },\n        containerDataP() {\n            return cn({\n                fluid: this.$fluid\n            });\n        },\n        overlayDataP() {\n            return cn({\n                ['portal-' + this.appendTo]: 'portal-' + this.appendTo\n            });\n        },\n        inputMultipleDataP() {\n            return cn({\n                invalid: this.$invalid,\n                disabled: this.disabled,\n                focus: this.focused,\n                fluid: this.$fluid,\n                filled: this.$variant === 'filled',\n                empty: !this.$filled,\n                [this.size]: this.size\n            });\n        }\n    },\n    components: {\n        InputText,\n        VirtualScroller,\n        Portal,\n        Chip,\n        ChevronDownIcon,\n        SpinnerIcon,\n        TimesIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n","<template>\n    <div ref=\"container\" :class=\"cx('root')\" :style=\"sx('root')\" @click=\"onContainerClick\" :data-p=\"containerDataP\" v-bind=\"ptmi('root')\">\n        <InputText\n            v-if=\"!multiple\"\n            ref=\"focusInput\"\n            :id=\"inputId\"\n            type=\"text\"\n            :name=\"$formName\"\n            :class=\"[cx('pcInputText'), inputClass]\"\n            :style=\"inputStyle\"\n            :defaultValue=\"inputValue\"\n            :placeholder=\"placeholder\"\n            :tabindex=\"!disabled ? tabindex : -1\"\n            :fluid=\"$fluid\"\n            :disabled=\"disabled\"\n            :size=\"size\"\n            :invalid=\"invalid\"\n            :variant=\"variant\"\n            autocomplete=\"off\"\n            role=\"combobox\"\n            :aria-label=\"ariaLabel\"\n            :aria-labelledby=\"ariaLabelledby\"\n            aria-haspopup=\"listbox\"\n            aria-autocomplete=\"list\"\n            :aria-expanded=\"overlayVisible\"\n            :aria-controls=\"overlayVisible ? panelId : undefined\"\n            :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n            @focus=\"onFocus\"\n            @blur=\"onBlur\"\n            @keydown=\"onKeyDown\"\n            @input=\"onInput\"\n            @change=\"onChange\"\n            :unstyled=\"unstyled\"\n            :data-p-has-dropdown=\"dropdown\"\n            :pt=\"ptm('pcInputText')\"\n        />\n        <slot v-if=\"isClearIconVisible\" name=\"clearicon\" :class=\"cx('clearIcon')\" :clearCallback=\"onClearClick\">\n            <TimesIcon :class=\"[cx('clearIcon')]\" @click=\"onClearClick\" v-bind=\"ptm('clearIcon')\" />\n        </slot>\n        <ul\n            v-if=\"multiple\"\n            ref=\"multiContainer\"\n            :class=\"cx('inputMultiple')\"\n            tabindex=\"-1\"\n            role=\"listbox\"\n            aria-orientation=\"horizontal\"\n            :aria-activedescendant=\"focused ? focusedMultipleOptionId : undefined\"\n            @focus=\"onMultipleContainerFocus\"\n            @blur=\"onMultipleContainerBlur\"\n            @keydown=\"onMultipleContainerKeyDown\"\n            :data-p-has-dropdown=\"dropdown\"\n            :data-p=\"inputMultipleDataP\"\n            v-bind=\"ptm('inputMultiple')\"\n        >\n            <li\n                v-for=\"(option, i) of d_value\"\n                :key=\"`${i}_${getOptionLabel(option)}`\"\n                :id=\"$id + '_multiple_option_' + i\"\n                :class=\"cx('chipItem', { i })\"\n                role=\"option\"\n                :aria-label=\"getOptionLabel(option)\"\n                :aria-selected=\"true\"\n                :aria-setsize=\"d_value.length\"\n                :aria-posinset=\"i + 1\"\n                v-bind=\"ptm('chipItem')\"\n            >\n                <slot name=\"chip\" :class=\"cx('pcChip')\" :value=\"option\" :index=\"i\" :removeCallback=\"(event) => removeOption(event, i)\" v-bind=\"ptm('pcChip')\">\n                    <!-- TODO: removetokenicon and removeTokenIcon  deprecated since v4.0. Use chipicon slot and chipIcon prop-->\n                    <Chip\n                        :class=\"cx('pcChip')\"\n                        :label=\"getOptionLabel(option)\"\n                        :removeIcon=\"chipIcon || removeTokenIcon\"\n                        removable\n                        :unstyled=\"unstyled\"\n                        @remove=\"removeOption($event, i)\"\n                        :data-p-focused=\"focusedMultipleOptionIndex === i\"\n                        :pt=\"ptm('pcChip')\"\n                    >\n                        <template #removeicon>\n                            <slot :name=\"$slots.chipicon ? 'chipicon' : 'removetokenicon'\" :class=\"cx('chipIcon')\" :index=\"i\" :removeCallback=\"(event) => removeOption(event, i)\" />\n                        </template>\n                    </Chip>\n                </slot>\n            </li>\n            <li :class=\"cx('inputChip')\" role=\"option\" v-bind=\"ptm('inputChip')\">\n                <input\n                    ref=\"focusInput\"\n                    :id=\"inputId\"\n                    type=\"text\"\n                    :style=\"inputStyle\"\n                    :class=\"inputClass\"\n                    :placeholder=\"placeholder\"\n                    :tabindex=\"!disabled ? tabindex : -1\"\n                    :disabled=\"disabled\"\n                    autocomplete=\"off\"\n                    role=\"combobox\"\n                    :aria-label=\"ariaLabel\"\n                    :aria-labelledby=\"ariaLabelledby\"\n                    aria-haspopup=\"listbox\"\n                    aria-autocomplete=\"list\"\n                    :aria-expanded=\"overlayVisible\"\n                    :aria-controls=\"$id + '_list'\"\n                    :aria-activedescendant=\"focused ? focusedOptionId : undefined\"\n                    :aria-invalid=\"invalid || undefined\"\n                    @focus=\"onFocus\"\n                    @blur=\"onBlur\"\n                    @keydown=\"onKeyDown\"\n                    @input=\"onInput\"\n                    @change=\"onChange\"\n                    v-bind=\"ptm('input')\"\n                />\n            </li>\n        </ul>\n        <slot v-if=\"searching || loading\" :class=\"cx('loader')\" :name=\"$slots.loader ? 'loader' : 'loadingicon'\">\n            <i v-if=\"loader || loadingIcon\" :class=\"['pi-spin', cx('loader'), loader, loadingIcon]\" aria-hidden=\"true\" :data-p-has-dropdown=\"dropdown\" v-bind=\"ptm('loader')\" />\n            <SpinnerIcon v-else-if=\"loading\" :class=\"cx('loader')\" spin aria-hidden=\"true\" :data-p-has-dropdown=\"dropdown\" v-bind=\"ptm('loader')\" />\n        </slot>\n        <slot :name=\"$slots.dropdown ? 'dropdown' : 'dropdownbutton'\" :toggleCallback=\"(event) => onDropdownClick(event)\">\n            <button\n                v-if=\"dropdown\"\n                ref=\"dropdownButton\"\n                type=\"button\"\n                :class=\"[cx('dropdown'), dropdownClass]\"\n                :disabled=\"disabled\"\n                aria-haspopup=\"listbox\"\n                :aria-expanded=\"overlayVisible\"\n                :aria-controls=\"panelId\"\n                @click=\"onDropdownClick\"\n                v-bind=\"ptm('dropdown')\"\n            >\n                <slot name=\"dropdownicon\" :class=\"dropdownIcon\">\n                    <component :is=\"dropdownIcon ? 'span' : 'ChevronDownIcon'\" :class=\"dropdownIcon\" v-bind=\"ptm('dropdownIcon')\" />\n                </slot>\n            </button>\n        </slot>\n        <span v-if=\"typeahead\" role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSearchResult')\" :data-p-hidden-accessible=\"true\">\n            {{ searchResultMessageText }}\n        </span>\n        <Portal :appendTo=\"appendTo\">\n            <transition name=\"p-anchored-overlay\" @enter=\"onOverlayEnter\" @after-enter=\"onOverlayAfterEnter\" @leave=\"onOverlayLeave\" @after-leave=\"onOverlayAfterLeave\" v-bind=\"ptm('transition')\">\n                <div\n                    v-if=\"overlayVisible\"\n                    :ref=\"overlayRef\"\n                    :id=\"panelId\"\n                    :class=\"[cx('overlay'), panelClass, overlayClass]\"\n                    :style=\"{ ...panelStyle, ...overlayStyle }\"\n                    @click=\"onOverlayClick\"\n                    @keydown=\"onOverlayKeyDown\"\n                    :data-p=\"overlayDataP\"\n                    v-bind=\"ptm('overlay')\"\n                >\n                    <slot name=\"header\" :value=\"d_value\" :suggestions=\"visibleOptions\"></slot>\n                    <div :class=\"cx('listContainer')\" :style=\"{ 'max-height': virtualScrollerDisabled ? scrollHeight : '' }\" v-bind=\"ptm('listContainer')\">\n                        <VirtualScroller :ref=\"virtualScrollerRef\" v-bind=\"virtualScrollerOptions\" :style=\"{ height: scrollHeight }\" :items=\"visibleOptions\" :tabindex=\"-1\" :disabled=\"virtualScrollerDisabled\" :pt=\"ptm('virtualScroller')\">\n                            <template v-slot:content=\"{ styleClass, contentRef, items, getItemOptions, contentStyle, itemSize }\">\n                                <ul :ref=\"(el) => listRef(el, contentRef)\" :id=\"$id + '_list'\" :class=\"[cx('list'), styleClass]\" :style=\"contentStyle\" role=\"listbox\" :aria-label=\"listAriaLabel\" v-bind=\"ptm('list')\">\n                                    <template v-for=\"(option, i) of items\" :key=\"getOptionRenderKey(option, getOptionIndex(i, getItemOptions))\">\n                                        <li\n                                            v-if=\"isOptionGroup(option)\"\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('optionGroup')\"\n                                            role=\"option\"\n                                            v-bind=\"ptm('optionGroup')\"\n                                        >\n                                            <slot name=\"optiongroup\" :option=\"option.optionGroup\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionGroupLabel(option.optionGroup) }}</slot>\n                                        </li>\n                                        <li\n                                            v-else\n                                            :id=\"$id + '_' + getOptionIndex(i, getItemOptions)\"\n                                            v-ripple\n                                            :style=\"{ height: itemSize ? itemSize + 'px' : undefined }\"\n                                            :class=\"cx('option', { option, i, getItemOptions })\"\n                                            role=\"option\"\n                                            :aria-label=\"getOptionLabel(option)\"\n                                            :aria-selected=\"isSelected(option)\"\n                                            :aria-disabled=\"isOptionDisabled(option)\"\n                                            :aria-setsize=\"ariaSetSize\"\n                                            :aria-posinset=\"getAriaPosInset(getOptionIndex(i, getItemOptions))\"\n                                            @click=\"onOptionSelect($event, option)\"\n                                            @mousemove=\"onOptionMouseMove($event, getOptionIndex(i, getItemOptions))\"\n                                            :data-p-selected=\"isSelected(option)\"\n                                            :data-p-focused=\"focusedOptionIndex === getOptionIndex(i, getItemOptions)\"\n                                            :data-p-disabled=\"isOptionDisabled(option)\"\n                                            v-bind=\"getPTOptions(option, getItemOptions, i, 'option')\"\n                                        >\n                                            <slot name=\"option\" :option=\"option\" :index=\"getOptionIndex(i, getItemOptions)\">{{ getOptionLabel(option) }}</slot>\n                                        </li>\n                                    </template>\n                                    <li v-if=\"showEmptyMessage && (!items || (items && items.length === 0))\" :class=\"cx('emptyMessage')\" role=\"option\" v-bind=\"ptm('emptyMessage')\">\n                                        <slot name=\"empty\">{{ searchResultMessageText }}</slot>\n                                    </li>\n                                </ul>\n                            </template>\n                            <template v-if=\"$slots.loader\" v-slot:loader=\"{ options }\">\n                                <slot name=\"loader\" :options=\"options\"></slot>\n                            </template>\n                        </VirtualScroller>\n                    </div>\n                    <slot name=\"footer\" :value=\"d_value\" :suggestions=\"visibleOptions\"></slot>\n                    <span role=\"status\" aria-live=\"polite\" class=\"p-hidden-accessible\" v-bind=\"ptm('hiddenSelectedMessage')\" :data-p-hidden-accessible=\"true\">\n                        {{ selectedMessageText }}\n                    </span>\n                </div>\n            </transition>\n        </Portal>\n    </div>\n</template>\n\n<script>\nimport { cn } from '@primeuix/utils';\nimport { absolutePosition, addStyle, findSingle, focus, getOuterWidth, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { equals, findLastIndex, isEmpty, isNotEmpty, resolveFieldData } from '@primeuix/utils/object';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { ConnectedOverlayScrollHandler } from '@primevue/core/utils';\nimport ChevronDownIcon from '@primevue/icons/chevrondown';\nimport SpinnerIcon from '@primevue/icons/spinner';\nimport TimesIcon from '@primevue/icons/times';\nimport Chip from 'primevue/chip';\nimport InputText from 'primevue/inputtext';\nimport OverlayEventBus from 'primevue/overlayeventbus';\nimport Portal from 'primevue/portal';\nimport Ripple from 'primevue/ripple';\nimport VirtualScroller from 'primevue/virtualscroller';\nimport BaseAutoComplete from './BaseAutoComplete.vue';\n\nexport default {\n    name: 'AutoComplete',\n    extends: BaseAutoComplete,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur', 'item-select', 'item-unselect', 'option-select', 'option-unselect', 'dropdown-click', 'clear', 'complete', 'before-show', 'before-hide', 'show', 'hide'],\n    inject: {\n        $pcFluid: { default: null }\n    },\n    outsideClickListener: null,\n    resizeListener: null,\n    scrollHandler: null,\n    overlay: null,\n    virtualScroller: null,\n    searchTimeout: null,\n    dirty: false,\n    startRangeIndex: -1,\n    data() {\n        return {\n            clicked: false,\n            focused: false,\n            focusedOptionIndex: -1,\n            focusedMultipleOptionIndex: -1,\n            overlayVisible: false,\n            searching: false\n        };\n    },\n    watch: {\n        suggestions() {\n            if (this.searching) {\n                this.show();\n                this.focusedOptionIndex = this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n                this.searching = false;\n                !this.showEmptyMessage && this.visibleOptions.length === 0 && this.hide();\n            }\n\n            this.autoUpdateModel();\n        }\n    },\n    mounted() {\n        this.autoUpdateModel();\n    },\n    updated() {\n        if (this.overlayVisible) {\n            this.alignOverlay();\n        }\n    },\n    beforeUnmount() {\n        this.unbindOutsideClickListener();\n        this.unbindResizeListener();\n\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        if (this.overlay) {\n            ZIndex.clear(this.overlay);\n            this.overlay = null;\n        }\n    },\n    methods: {\n        getOptionIndex(index, fn) {\n            return this.virtualScrollerDisabled ? index : fn && fn(index)['index'];\n        },\n        getOptionLabel(option) {\n            return this.optionLabel ? resolveFieldData(option, this.optionLabel) : option;\n        },\n        getOptionValue(option) {\n            return option; // TODO: The 'optionValue' properties can be added.\n        },\n        getOptionRenderKey(option, index) {\n            return (this.dataKey ? resolveFieldData(option, this.dataKey) : this.getOptionLabel(option)) + '_' + index;\n        },\n        getPTOptions(option, itemOptions, index, key) {\n            return this.ptm(key, {\n                context: {\n                    option,\n                    index,\n                    selected: this.isSelected(option),\n                    focused: this.focusedOptionIndex === this.getOptionIndex(index, itemOptions),\n                    disabled: this.isOptionDisabled(option)\n                }\n            });\n        },\n        isOptionDisabled(option) {\n            return this.optionDisabled ? resolveFieldData(option, this.optionDisabled) : false;\n        },\n        isOptionGroup(option) {\n            return this.optionGroupLabel && option.optionGroup && option.group;\n        },\n        getOptionGroupLabel(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupLabel);\n        },\n        getOptionGroupChildren(optionGroup) {\n            return resolveFieldData(optionGroup, this.optionGroupChildren);\n        },\n        getAriaPosInset(index) {\n            return (this.optionGroupLabel ? index - this.visibleOptions.slice(0, index).filter((option) => this.isOptionGroup(option)).length : index) + 1;\n        },\n        show(isFocus) {\n            this.$emit('before-show');\n            this.dirty = true;\n            this.overlayVisible = true;\n            this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n            isFocus && focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n        },\n        hide(isFocus) {\n            const _hide = () => {\n                this.$emit('before-hide');\n                this.dirty = isFocus;\n                this.overlayVisible = false;\n                this.clicked = false;\n                this.focusedOptionIndex = -1;\n\n                isFocus && focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput?.$el);\n            };\n\n            setTimeout(() => {\n                _hide();\n            }, 0); // For ScreenReaders\n        },\n        onFocus(event) {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            if (!this.dirty && this.completeOnFocus) {\n                this.search(event, event.target.value, 'focus');\n            }\n\n            this.dirty = true;\n            this.focused = true;\n\n            if (this.overlayVisible) {\n                this.focusedOptionIndex = this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : this.overlayVisible && this.autoOptionFocus ? this.findFirstFocusedOptionIndex() : -1;\n                this.scrollInView(this.focusedOptionIndex);\n            }\n\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.dirty = false;\n            this.focused = false;\n            this.focusedOptionIndex = -1;\n            this.$emit('blur', event);\n            this.formField.onBlur?.();\n        },\n        onKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowDown':\n                    this.onArrowDownKey(event);\n                    break;\n\n                case 'ArrowUp':\n                    this.onArrowUpKey(event);\n                    break;\n\n                case 'ArrowLeft':\n                    this.onArrowLeftKey(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKey(event);\n                    break;\n\n                case 'Home':\n                    this.onHomeKey(event);\n                    break;\n\n                case 'End':\n                    this.onEndKey(event);\n                    break;\n\n                case 'PageDown':\n                    this.onPageDownKey(event);\n                    break;\n\n                case 'PageUp':\n                    this.onPageUpKey(event);\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                    this.onEnterKey(event);\n                    break;\n\n                case 'Space':\n                    this.onSpaceKey(event);\n                    break;\n\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                case 'Tab':\n                    this.onTabKey(event);\n                    break;\n\n                case 'ShiftLeft':\n                case 'ShiftRight':\n                    this.onShiftKey(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n\n            this.clicked = false;\n        },\n        onInput(event) {\n            if (this.typeahead) {\n                if (this.searchTimeout) {\n                    clearTimeout(this.searchTimeout);\n                }\n\n                let query = event.target.value;\n\n                if (!this.multiple) {\n                    this.updateModel(event, query);\n                }\n\n                if (query.length === 0) {\n                    this.searching = false;\n                    this.hide();\n                    this.$emit('clear');\n                } else {\n                    if (query.length >= this.minLength) {\n                        this.focusedOptionIndex = -1;\n\n                        this.searchTimeout = setTimeout(() => {\n                            this.search(event, query, 'input');\n                        }, this.delay);\n                    } else {\n                        this.searching = false;\n                        this.hide();\n                    }\n                }\n            }\n        },\n        onChange(event) {\n            if (this.forceSelection) {\n                let valid = false;\n\n                // when forceSelection is on, prevent called twice onOptionSelect()\n                if (this.visibleOptions && !this.multiple) {\n                    let value = this.multiple ? this.$refs.focusInput.value : this.$refs.focusInput?.$el?.value;\n                    const matchedValue = this.visibleOptions.find((option) => this.isOptionMatched(option, value || ''));\n\n                    if (matchedValue !== undefined) {\n                        valid = true;\n                        !this.isSelected(matchedValue) && this.onOptionSelect(event, matchedValue);\n                    }\n                }\n\n                if (!valid) {\n                    if (this.multiple) {\n                        this.$refs.focusInput.value = '';\n                    } else {\n                        const inputEl = this.$refs.focusInput?.$el;\n                        inputEl && (inputEl.value = '');\n                    }\n                    this.$emit('clear');\n                    !this.multiple && this.updateModel(event, null);\n                }\n            }\n        },\n        onMultipleContainerFocus() {\n            if (this.disabled) {\n                // For ScreenReaders\n                return;\n            }\n\n            this.focused = true;\n        },\n        onMultipleContainerBlur() {\n            this.focusedMultipleOptionIndex = -1;\n            this.focused = false;\n        },\n        onMultipleContainerKeyDown(event) {\n            if (this.disabled) {\n                event.preventDefault();\n\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowLeft':\n                    this.onArrowLeftKeyOnMultiple(event);\n                    break;\n\n                case 'ArrowRight':\n                    this.onArrowRightKeyOnMultiple(event);\n                    break;\n\n                case 'Backspace':\n                    this.onBackspaceKeyOnMultiple(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onContainerClick(event) {\n            this.clicked = true;\n\n            if (this.disabled || this.searching || this.loading || this.isDropdownClicked(event)) {\n                return;\n            }\n\n            if (!this.overlay || !this.overlay.contains(event.target)) {\n                focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n            }\n        },\n        onDropdownClick(event) {\n            let query = undefined;\n\n            if (this.overlayVisible) {\n                this.hide(true);\n            } else {\n                let target = this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el;\n\n                focus(target);\n                query = target.value;\n\n                if (this.dropdownMode === 'blank') this.search(event, '', 'dropdown');\n                else if (this.dropdownMode === 'current') this.search(event, query, 'dropdown');\n            }\n\n            this.$emit('dropdown-click', { originalEvent: event, query });\n        },\n        onOptionSelect(event, option, isHide = true) {\n            const value = this.getOptionValue(option);\n\n            if (this.multiple) {\n                this.$refs.focusInput.value = '';\n\n                if (!this.isSelected(option)) {\n                    this.updateModel(event, [...(this.d_value || []), value]);\n                }\n            } else {\n                this.updateModel(event, value);\n            }\n\n            this.$emit('item-select', { originalEvent: event, value: option });\n            this.$emit('option-select', { originalEvent: event, value: option });\n\n            isHide && this.hide(true);\n        },\n        onOptionMouseMove(event, index) {\n            if (this.focusOnHover) {\n                this.changeFocusedOptionIndex(event, index);\n            }\n        },\n        onOptionSelectRange(event, start = -1, end = -1) {\n            start === -1 && (start = this.findNearestSelectedOptionIndex(end, true));\n            end === -1 && (end = this.findNearestSelectedOptionIndex(start));\n\n            if (start !== -1 && end !== -1) {\n                const rangeStart = Math.min(start, end);\n                const rangeEnd = Math.max(start, end);\n                const value = this.visibleOptions\n                    .slice(rangeStart, rangeEnd + 1)\n                    .filter((option) => this.isValidOption(option))\n                    .filter((option) => !this.isSelected(option))\n                    .map((option) => this.getOptionValue(option));\n\n                this.updateModel(event, [...(this.d_value || []), ...value]);\n            }\n        },\n        onClearClick(event) {\n            this.updateModel(event, null);\n            this.$emit('clear');\n        },\n        onOverlayClick(event) {\n            OverlayEventBus.emit('overlay-click', {\n                originalEvent: event,\n                target: this.$el\n            });\n        },\n        onOverlayKeyDown(event) {\n            switch (event.code) {\n                case 'Escape':\n                    this.onEscapeKey(event);\n                    break;\n\n                default:\n                    break;\n            }\n        },\n        onArrowDownKey(event) {\n            if (!this.overlayVisible) {\n                return;\n            }\n\n            const optionIndex = this.focusedOptionIndex !== -1 ? this.findNextOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findFirstOptionIndex() : this.findFirstFocusedOptionIndex();\n\n            if (this.multiple && event.shiftKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n            }\n\n            this.changeFocusedOptionIndex(event, optionIndex);\n\n            event.preventDefault();\n        },\n        onArrowUpKey(event) {\n            if (!this.overlayVisible) {\n                return;\n            }\n\n            if (event.altKey) {\n                if (this.focusedOptionIndex !== -1) {\n                    this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                }\n\n                this.overlayVisible && this.hide();\n                event.preventDefault();\n            } else {\n                const optionIndex = this.focusedOptionIndex !== -1 ? this.findPrevOptionIndex(this.focusedOptionIndex) : this.clicked ? this.findLastOptionIndex() : this.findLastFocusedOptionIndex();\n\n                if (this.multiple && event.shiftKey) {\n                    this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n                }\n\n                this.changeFocusedOptionIndex(event, optionIndex);\n\n                event.preventDefault();\n            }\n        },\n        onArrowLeftKey(event) {\n            const target = event.currentTarget;\n\n            this.focusedOptionIndex = -1;\n\n            if (this.multiple) {\n                if (isEmpty(target.value) && this.$filled) {\n                    focus(this.$refs.multiContainer);\n                    this.focusedMultipleOptionIndex = this.d_value.length;\n                } else {\n                    event.stopPropagation(); // To prevent onArrowLeftKeyOnMultiple method\n                }\n            }\n        },\n        onArrowRightKey(event) {\n            this.focusedOptionIndex = -1;\n\n            this.multiple && event.stopPropagation(); // To prevent onArrowRightKeyOnMultiple method\n        },\n        onHomeKey(event) {\n            const { currentTarget } = event;\n            const len = currentTarget.value.length;\n            const metaKey = event.metaKey || event.ctrlKey;\n            const optionIndex = this.findFirstOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, optionIndex, this.startRangeIndex);\n            }\n\n            currentTarget.setSelectionRange(0, event.shiftKey ? len : 0);\n            this.focusedOptionIndex = -1;\n\n            event.preventDefault();\n        },\n        onEndKey(event) {\n            const { currentTarget } = event;\n            const len = currentTarget.value.length;\n            const metaKey = event.metaKey || event.ctrlKey;\n            const optionIndex = this.findLastOptionIndex();\n\n            if (this.multiple && event.shiftKey && metaKey) {\n                this.onOptionSelectRange(event, this.startRangeIndex, optionIndex);\n            }\n\n            currentTarget.setSelectionRange(event.shiftKey ? 0 : len, len);\n            this.focusedOptionIndex = -1;\n\n            event.preventDefault();\n        },\n        onPageUpKey(event) {\n            this.scrollInView(0);\n            event.preventDefault();\n        },\n        onPageDownKey(event) {\n            this.scrollInView(this.visibleOptions.length - 1);\n            event.preventDefault();\n        },\n        onEnterKey(event) {\n            if (!this.typeahead) {\n                if (this.multiple) {\n                    if (event.target.value.trim()) {\n                        this.updateModel(event, [...(this.d_value || []), event.target.value.trim()]);\n                        this.$refs.focusInput.value = '';\n                    }\n\n                    event.preventDefault();\n                }\n            } else {\n                if (!this.overlayVisible) {\n                    this.focusedOptionIndex = -1; // reset\n                    this.onArrowDownKey(event);\n                } else {\n                    if (this.focusedOptionIndex !== -1) {\n                        if (this.multiple && event.shiftKey) {\n                            this.onOptionSelectRange(event, this.focusedOptionIndex);\n                        } else {\n                            this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n                        }\n\n                        event.preventDefault();\n                    }\n\n                    this.hide();\n                }\n            }\n        },\n        onSpaceKey(event) {\n            if (!this.autoOptionFocus && this.focusedOptionIndex !== -1) {\n                this.onEnterKey(event);\n            }\n        },\n        onEscapeKey(event) {\n            this.overlayVisible && this.hide(true);\n            event.preventDefault();\n        },\n        onTabKey(event) {\n            if (this.focusedOptionIndex !== -1) {\n                this.onOptionSelect(event, this.visibleOptions[this.focusedOptionIndex]);\n            }\n\n            this.overlayVisible && this.hide();\n        },\n        onShiftKey() {\n            this.startRangeIndex = this.focusedOptionIndex;\n        },\n        onBackspaceKey(event) {\n            if (this.multiple) {\n                if (isNotEmpty(this.d_value) && !this.$refs.focusInput.value) {\n                    const removedValue = this.d_value[this.d_value.length - 1];\n                    const newValue = this.d_value.slice(0, -1);\n\n                    this.writeValue(newValue, event);\n                    this.$emit('item-unselect', { originalEvent: event, value: removedValue });\n                    this.$emit('option-unselect', { originalEvent: event, value: removedValue });\n                }\n\n                event.stopPropagation(); // To prevent onBackspaceKeyOnMultiple method\n            }\n        },\n        onArrowLeftKeyOnMultiple() {\n            this.focusedMultipleOptionIndex = this.focusedMultipleOptionIndex < 1 ? 0 : this.focusedMultipleOptionIndex - 1;\n        },\n        onArrowRightKeyOnMultiple() {\n            this.focusedMultipleOptionIndex++;\n\n            if (this.focusedMultipleOptionIndex > this.d_value.length - 1) {\n                this.focusedMultipleOptionIndex = -1;\n                focus(this.$refs.focusInput);\n            }\n        },\n        onBackspaceKeyOnMultiple(event) {\n            if (this.focusedMultipleOptionIndex !== -1) {\n                this.removeOption(event, this.focusedMultipleOptionIndex);\n            }\n        },\n        onOverlayEnter(el) {\n            ZIndex.set('overlay', el, this.$primevue.config.zIndex.overlay);\n\n            addStyle(el, { position: 'absolute', top: '0' });\n            this.alignOverlay();\n\n            // Issue: #7508\n            this.$attrSelector && el.setAttribute(this.$attrSelector, '');\n        },\n        onOverlayAfterEnter() {\n            this.bindOutsideClickListener();\n            this.bindScrollListener();\n            this.bindResizeListener();\n\n            this.$emit('show');\n        },\n        onOverlayLeave(el) {\n            el.style.pointerEvents = 'none';\n            this.unbindOutsideClickListener();\n            this.unbindScrollListener();\n            this.unbindResizeListener();\n\n            this.$emit('hide');\n            this.overlay = null;\n        },\n        onOverlayAfterLeave(el) {\n            ZIndex.clear(el);\n        },\n        alignOverlay() {\n            let target = this.multiple ? this.$refs.multiContainer : this.$refs.focusInput.$el;\n\n            if (this.appendTo === 'self') {\n                relativePosition(this.overlay, target);\n            } else {\n                this.overlay.style.minWidth = getOuterWidth(target) + 'px';\n                absolutePosition(this.overlay, target);\n            }\n        },\n        bindOutsideClickListener() {\n            if (!this.outsideClickListener) {\n                this.outsideClickListener = (event) => {\n                    if (this.overlayVisible && this.overlay && this.isOutsideClicked(event)) {\n                        this.hide();\n                    }\n                };\n\n                document.addEventListener('click', this.outsideClickListener, true);\n            }\n        },\n        unbindOutsideClickListener() {\n            if (this.outsideClickListener) {\n                document.removeEventListener('click', this.outsideClickListener, true);\n                this.outsideClickListener = null;\n            }\n        },\n        bindScrollListener() {\n            if (!this.scrollHandler) {\n                this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, () => {\n                    if (this.overlayVisible) {\n                        this.hide();\n                    }\n                });\n            }\n\n            this.scrollHandler.bindScrollListener();\n        },\n        unbindScrollListener() {\n            if (this.scrollHandler) {\n                this.scrollHandler.unbindScrollListener();\n            }\n        },\n        bindResizeListener() {\n            if (!this.resizeListener) {\n                this.resizeListener = () => {\n                    if (this.overlayVisible && !isTouchDevice()) {\n                        this.hide();\n                    }\n                };\n\n                window.addEventListener('resize', this.resizeListener);\n            }\n        },\n        unbindResizeListener() {\n            if (this.resizeListener) {\n                window.removeEventListener('resize', this.resizeListener);\n                this.resizeListener = null;\n            }\n        },\n        isOutsideClicked(event) {\n            return !this.overlay.contains(event.target) && !this.isInputClicked(event) && !this.isDropdownClicked(event);\n        },\n        isInputClicked(event) {\n            if (this.multiple) return event.target === this.$refs.multiContainer || this.$refs.multiContainer.contains(event.target);\n            else return event.target === this.$refs.focusInput.$el;\n        },\n        isDropdownClicked(event) {\n            return this.$refs.dropdownButton ? event.target === this.$refs.dropdownButton || this.$refs.dropdownButton.contains(event.target) : false;\n        },\n        isOptionMatched(option, value) {\n            return this.isValidOption(option) && this.getOptionLabel(option)?.toLocaleLowerCase(this.searchLocale) === value.toLocaleLowerCase(this.searchLocale);\n        },\n        isValidOption(option) {\n            return isNotEmpty(option) && !(this.isOptionDisabled(option) || this.isOptionGroup(option));\n        },\n        isValidSelectedOption(option) {\n            return this.isValidOption(option) && this.isSelected(option);\n        },\n        isEquals(value1, value2) {\n            return equals(value1, value2, this.equalityKey);\n        },\n        isSelected(option) {\n            const optionValue = this.getOptionValue(option);\n\n            return this.multiple ? (this.d_value || []).some((value) => this.isEquals(value, optionValue)) : this.isEquals(this.d_value, this.getOptionValue(option));\n        },\n        findFirstOptionIndex() {\n            return this.visibleOptions.findIndex((option) => this.isValidOption(option));\n        },\n        findLastOptionIndex() {\n            return findLastIndex(this.visibleOptions, (option) => this.isValidOption(option));\n        },\n        findNextOptionIndex(index) {\n            const matchedOptionIndex = index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n        },\n        findPrevOptionIndex(index) {\n            const matchedOptionIndex = index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        },\n        findSelectedOptionIndex() {\n            return this.$filled ? this.visibleOptions.findIndex((option) => this.isValidSelectedOption(option)) : -1;\n        },\n        findFirstFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findFirstOptionIndex() : selectedIndex;\n        },\n        findLastFocusedOptionIndex() {\n            const selectedIndex = this.findSelectedOptionIndex();\n\n            return selectedIndex < 0 ? this.findLastOptionIndex() : selectedIndex;\n        },\n        search(event, query, source) {\n            //allow empty string but not undefined or null\n            if (query === undefined || query === null) {\n                return;\n            }\n\n            //do not search blank values on input change\n            if (source === 'input' && query.trim().length === 0) {\n                return;\n            }\n\n            this.searching = true;\n            this.$emit('complete', { originalEvent: event, query });\n        },\n        removeOption(event, index) {\n            const removedOption = this.d_value[index];\n            const value = this.d_value.filter((_, i) => i !== index).map((option) => this.getOptionValue(option));\n\n            this.updateModel(event, value);\n            this.$emit('item-unselect', { originalEvent: event, value: removedOption });\n            this.$emit('option-unselect', { originalEvent: event, value: removedOption });\n            this.dirty = true;\n            focus(this.multiple ? this.$refs.focusInput : this.$refs.focusInput.$el);\n        },\n        changeFocusedOptionIndex(event, index) {\n            if (this.focusedOptionIndex !== index) {\n                this.focusedOptionIndex = index;\n                this.scrollInView();\n\n                if (this.selectOnFocus) {\n                    this.onOptionSelect(event, this.visibleOptions[index], false);\n                }\n            }\n        },\n        scrollInView(index = -1) {\n            this.$nextTick(() => {\n                const id = index !== -1 ? `${this.$id}_${index}` : this.focusedOptionId;\n                const element = findSingle(this.list, `li[id=\"${id}\"]`);\n\n                if (element) {\n                    element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });\n                } else if (!this.virtualScrollerDisabled) {\n                    this.virtualScroller && this.virtualScroller.scrollToIndex(index !== -1 ? index : this.focusedOptionIndex);\n                }\n            });\n        },\n        autoUpdateModel() {\n            if (this.selectOnFocus && this.autoOptionFocus && !this.$filled) {\n                this.focusedOptionIndex = this.findFirstFocusedOptionIndex();\n                this.onOptionSelect(null, this.visibleOptions[this.focusedOptionIndex], false);\n            }\n        },\n        updateModel(event, value) {\n            this.writeValue(value, event);\n            this.$emit('change', { originalEvent: event, value });\n        },\n        flatOptions(options) {\n            return (options || []).reduce((result, option, index) => {\n                result.push({ optionGroup: option, group: true, index });\n\n                const optionGroupChildren = this.getOptionGroupChildren(option);\n\n                optionGroupChildren && optionGroupChildren.forEach((o) => result.push(o));\n\n                return result;\n            }, []);\n        },\n        overlayRef(el) {\n            this.overlay = el;\n        },\n        listRef(el, contentRef) {\n            this.list = el;\n            contentRef && contentRef(el); // For VirtualScroller\n        },\n        virtualScrollerRef(el) {\n            this.virtualScroller = el;\n        },\n        findNextSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index < this.visibleOptions.length - 1 ? this.visibleOptions.slice(index + 1).findIndex((option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n        },\n        findPrevSelectedOptionIndex(index) {\n            const matchedOptionIndex = this.$filled && index > 0 ? findLastIndex(this.visibleOptions.slice(0, index), (option) => this.isValidSelectedOption(option)) : -1;\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n        },\n        findNearestSelectedOptionIndex(index, firstCheckUp = false) {\n            let matchedOptionIndex = -1;\n\n            if (this.$filled) {\n                if (firstCheckUp) {\n                    matchedOptionIndex = this.findPrevSelectedOptionIndex(index);\n                    matchedOptionIndex = matchedOptionIndex === -1 ? this.findNextSelectedOptionIndex(index) : matchedOptionIndex;\n                } else {\n                    matchedOptionIndex = this.findNextSelectedOptionIndex(index);\n                    matchedOptionIndex = matchedOptionIndex === -1 ? this.findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n                }\n            }\n\n            return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n        }\n    },\n    computed: {\n        visibleOptions() {\n            return this.optionGroupLabel ? this.flatOptions(this.suggestions) : this.suggestions || [];\n        },\n        inputValue() {\n            if (this.$filled) {\n                if (typeof this.d_value === 'object') {\n                    const label = this.getOptionLabel(this.d_value);\n\n                    return label != null ? label : this.d_value;\n                } else {\n                    return this.d_value;\n                }\n            } else {\n                return '';\n            }\n        },\n        // @deprecated use $filled instead.\n        hasSelectedOption() {\n            return this.$filled;\n        },\n        equalityKey() {\n            // @todo: The 'optionValue' properties can be added.\n            return this.dataKey;\n        },\n        searchResultMessageText() {\n            return isNotEmpty(this.visibleOptions) && this.overlayVisible ? this.searchMessageText.replaceAll('{0}', this.visibleOptions.length) : this.emptySearchMessageText;\n        },\n        searchMessageText() {\n            return this.searchMessage || this.$primevue.config.locale.searchMessage || '';\n        },\n        emptySearchMessageText() {\n            return this.emptySearchMessage || this.$primevue.config.locale.emptySearchMessage || '';\n        },\n        selectionMessageText() {\n            return this.selectionMessage || this.$primevue.config.locale.selectionMessage || '';\n        },\n        emptySelectionMessageText() {\n            return this.emptySelectionMessage || this.$primevue.config.locale.emptySelectionMessage || '';\n        },\n        selectedMessageText() {\n            return this.$filled ? this.selectionMessageText.replaceAll('{0}', this.multiple ? this.d_value.length : '1') : this.emptySelectionMessageText;\n        },\n        listAriaLabel() {\n            return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.listLabel : undefined;\n        },\n        focusedOptionId() {\n            return this.focusedOptionIndex !== -1 ? `${this.$id}_${this.focusedOptionIndex}` : null;\n        },\n        focusedMultipleOptionId() {\n            return this.focusedMultipleOptionIndex !== -1 ? `${this.$id}_multiple_option_${this.focusedMultipleOptionIndex}` : null;\n        },\n        isClearIconVisible() {\n            return this.showClear && this.$filled && !this.disabled && !this.loading;\n        },\n        ariaSetSize() {\n            return this.visibleOptions.filter((option) => !this.isOptionGroup(option)).length;\n        },\n        virtualScrollerDisabled() {\n            return !this.virtualScrollerOptions;\n        },\n        panelId() {\n            return this.$id + '_panel';\n        },\n        containerDataP() {\n            return cn({\n                fluid: this.$fluid\n            });\n        },\n        overlayDataP() {\n            return cn({\n                ['portal-' + this.appendTo]: 'portal-' + this.appendTo\n            });\n        },\n        inputMultipleDataP() {\n            return cn({\n                invalid: this.$invalid,\n                disabled: this.disabled,\n                focus: this.focused,\n                fluid: this.$fluid,\n                filled: this.$variant === 'filled',\n                empty: !this.$filled,\n                [this.size]: this.size\n            });\n        }\n    },\n    components: {\n        InputText,\n        VirtualScroller,\n        Portal,\n        Chip,\n        ChevronDownIcon,\n        SpinnerIcon,\n        TimesIcon\n    },\n    directives: {\n        ripple: Ripple\n    }\n};\n</script>\n"],"names":["name","BaseInput","props","suggestions","type","Array","optionLabel","optionDisabled","optionGroupLabel","optionGroupChildren","scrollHeight","String","dropdown","Boolean","dropdownMode","multiple","loading","placeholder","dataKey","minLength","Number","delay","appendTo","Object","forceSelection","completeOnFocus","showClear","inputId","inputStyle","inputClass","panelStyle","panelClass","overlayStyle","overlayClass","dropdownIcon","dropdownClass","loader","loadingIcon","removeTokenIcon","chipIcon","virtualScrollerOptions","autoOptionFocus","selectOnFocus","focusOnHover","searchLocale","undefined","searchMessage","selectionMessage","emptySelectionMessage","emptySearchMessage","showEmptyMessage","tabindex","typeahead","ariaLabel","ariaLabelledby","style","AutoCompleteStyle","provide","$pcAutoComplete","$parentInstance","BaseAutoComplete","inheritAttrs","emits","inject","$pcFluid","outsideClickListener","resizeListener","scrollHandler","overlay","virtualScroller","searchTimeout","dirty","startRangeIndex","data","clicked","focused","focusedOptionIndex","focusedMultipleOptionIndex","overlayVisible","searching","watch","show","findFirstFocusedOptionIndex","visibleOptions","length","hide","autoUpdateModel","mounted","updated","alignOverlay","beforeUnmount","unbindOutsideClickListener","unbindResizeListener","destroy","ZIndex","clear","methods","getOptionIndex","index","fn","virtualScrollerDisabled","getOptionLabel","option","resolveFieldData","getOptionValue","getOptionRenderKey","getPTOptions","itemOptions","key","ptm","context","selected","isSelected","disabled","isOptionDisabled","isOptionGroup","optionGroup","group","getOptionGroupLabel","getOptionGroupChildren","getAriaPosInset","_this","slice","filter","isFocus","$emit","focus","$refs","focusInput","$el","_this2","_hide","_this2$$refs$focusInp","setTimeout","onFocus","event","search","target","value","scrollInView","onBlur","_this$formField$onBlu","_this$formField","formField","call","onKeyDown","preventDefault","code","onArrowDownKey","onArrowUpKey","onArrowLeftKey","onArrowRightKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onEnterKey","onSpaceKey","onEscapeKey","onTabKey","onShiftKey","onBackspaceKey","onInput","_this3","clearTimeout","query","updateModel","onChange","_this4","valid","_this$$refs$focusInpu","matchedValue","find","isOptionMatched","onOptionSelect","_this$$refs$focusInpu2","inputEl","onMultipleContainerFocus","onMultipleContainerBlur","onMultipleContainerKeyDown","onArrowLeftKeyOnMultiple","onArrowRightKeyOnMultiple","onBackspaceKeyOnMultiple","onContainerClick","isDropdownClicked","contains","onDropdownClick","originalEvent","isHide","arguments","concat","_toConsumableArray","d_value","onOptionMouseMove","changeFocusedOptionIndex","onOptionSelectRange","_this5","start","end","findNearestSelectedOptionIndex","rangeStart","Math","min","rangeEnd","max","isValidOption","map","onClearClick","onOverlayClick","OverlayEventBus","emit","onOverlayKeyDown","optionIndex","findNextOptionIndex","findFirstOptionIndex","shiftKey","altKey","findPrevOptionIndex","findLastOptionIndex","findLastFocusedOptionIndex","currentTarget","isEmpty","$filled","multiContainer","stopPropagation","len","metaKey","ctrlKey","setSelectionRange","trim","isNotEmpty","removedValue","newValue","writeValue","removeOption","onOverlayEnter","el","set","$primevue","config","zIndex","addStyle","position","top","$attrSelector","setAttribute","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","onOverlayLeave","pointerEvents","unbindScrollListener","onOverlayAfterLeave","relativePosition","minWidth","getOuterWidth","absolutePosition","_this6","isOutsideClicked","document","addEventListener","removeEventListener","_this7","ConnectedOverlayScrollHandler","container","_this8","isTouchDevice","window","isInputClicked","dropdownButton","_this$getOptionLabel","toLocaleLowerCase","isValidSelectedOption","isEquals","value1","value2","equals","equalityKey","_this9","optionValue","some","_this0","findIndex","_this1","findLastIndex","_this10","matchedOptionIndex","_this11","findSelectedOptionIndex","_this12","selectedIndex","source","_this13","removedOption","_","i","_this14","$nextTick","id","$id","focusedOptionId","element","findSingle","list","scrollIntoView","block","inline","scrollToIndex","flatOptions","options","_this15","reduce","result","push","forEach","o","overlayRef","listRef","contentRef","virtualScrollerRef","findNextSelectedOptionIndex","_this16","findPrevSelectedOptionIndex","_this17","firstCheckUp","computed","inputValue","_typeof","label","hasSelectedOption","searchResultMessageText","searchMessageText","replaceAll","emptySearchMessageText","locale","selectionMessageText","emptySelectionMessageText","selectedMessageText","listAriaLabel","aria","listLabel","focusedMultipleOptionId","isClearIconVisible","ariaSetSize","_this18","panelId","containerDataP","cn","fluid","$fluid","overlayDataP","_defineProperty","inputMultipleDataP","invalid","$invalid","filled","$variant","empty","size","components","InputText","VirtualScroller","Portal","Chip","ChevronDownIcon","SpinnerIcon","TimesIcon","directives","ripple","Ripple","_openBlock","_createElementBlock","_mergeProps","ref","_ctx","cx","sx","onClick","$options","apply","ptmi","_createBlock","_component_InputText","$formName","_normalizeClass","defaultValue","variant","autocomplete","role","$data","onKeydown","unstyled","pt","_renderSlot","$slots","clearCallback","_createVNode","_component_TimesIcon","_Fragment","_renderList","removeCallback","ref_for","_component_Chip","removeIcon","removable","onRemove","$event","removeicon","chipicon","_createElementVNode","_hoisted_4","_hoisted_5","_component_SpinnerIcon","spin","toggleCallback","_resolveDynamicComponent","_component_Portal","_Transition","onEnter","onAfterEnter","onLeave","onAfterLeave","_objectSpread","_component_VirtualScroller","items","content","_withCtx","_ref","styleClass","getItemOptions","contentStyle","itemSize","height","_withDirectives","onMousemove","_createTextVNode","_toDisplayString","_ref2"],"mappings":";;;;;;;;;;;;;;;;;;AAIA,eAAe;AACXA,EAAAA,IAAI,EAAE,kBAAkB;AACxB,EAAA,SAAA,EAASC,SAAS;AAClBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,WAAW,EAAE;AACTC,MAAAA,IAAI,EAAEC,KAAK;MACX,SAAA,EAAS;KACZ;AACDC,IAAAA,WAAW,EAAE,IAAI;AACjBC,IAAAA,cAAc,EAAE,IAAI;AACpBC,IAAAA,gBAAgB,EAAE,IAAI;AACtBC,IAAAA,mBAAmB,EAAE,IAAI;AACzBC,IAAAA,YAAY,EAAE;AACVN,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDC,IAAAA,QAAQ,EAAE;AACNR,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDC,IAAAA,YAAY,EAAE;AACVV,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDI,IAAAA,QAAQ,EAAE;AACNX,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDG,IAAAA,OAAO,EAAE;AACLZ,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDI,IAAAA,WAAW,EAAE;AACTb,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDO,IAAAA,OAAO,EAAE;AACLd,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDQ,IAAAA,SAAS,EAAE;AACPf,MAAAA,IAAI,EAAEgB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDC,IAAAA,KAAK,EAAE;AACHjB,MAAAA,IAAI,EAAEgB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDE,IAAAA,QAAQ,EAAE;AACNlB,MAAAA,IAAI,EAAE,CAACO,MAAM,EAAEY,MAAM,CAAC;MACtB,SAAA,EAAS;KACZ;AACDC,IAAAA,cAAc,EAAE;AACZpB,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDY,IAAAA,eAAe,EAAE;AACbrB,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDa,IAAAA,SAAS,EAAE;AACPtB,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDc,IAAAA,OAAO,EAAE;AACLvB,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDiB,IAAAA,UAAU,EAAE;AACRxB,MAAAA,IAAI,EAAEmB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDM,IAAAA,UAAU,EAAE;AACRzB,MAAAA,IAAI,EAAE,CAACO,MAAM,EAAEY,MAAM,CAAC;MACtB,SAAA,EAAS;KACZ;AACDO,IAAAA,UAAU,EAAE;AACR1B,MAAAA,IAAI,EAAEmB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDQ,IAAAA,UAAU,EAAE;AACR3B,MAAAA,IAAI,EAAE,CAACO,MAAM,EAAEY,MAAM,CAAC;MACtB,SAAA,EAAS;KACZ;AACDS,IAAAA,YAAY,EAAE;AACV5B,MAAAA,IAAI,EAAEmB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDU,IAAAA,YAAY,EAAE;AACV7B,MAAAA,IAAI,EAAE,CAACO,MAAM,EAAEY,MAAM,CAAC;MACtB,SAAA,EAAS;KACZ;AACDW,IAAAA,YAAY,EAAE;AACV9B,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDwB,IAAAA,aAAa,EAAE;AACX/B,MAAAA,IAAI,EAAE,CAACO,MAAM,EAAEY,MAAM,CAAC;MACtB,SAAA,EAAS;KACZ;AACDa,IAAAA,MAAM,EAAE;AACJhC,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACD0B,IAAAA,WAAW,EAAE;AACTjC,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACD2B,IAAAA,eAAe,EAAE;AACblC,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACD4B,IAAAA,QAAQ,EAAE;AACNnC,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACD6B,IAAAA,sBAAsB,EAAE;AACpBpC,MAAAA,IAAI,EAAEmB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDkB,IAAAA,eAAe,EAAE;AACbrC,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACD6B,IAAAA,aAAa,EAAE;AACXtC,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACD8B,IAAAA,YAAY,EAAE;AACVvC,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACD+B,IAAAA,YAAY,EAAE;AACVxC,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAASkC;KACZ;AACDC,IAAAA,aAAa,EAAE;AACX1C,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDoC,IAAAA,gBAAgB,EAAE;AACd3C,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDqC,IAAAA,qBAAqB,EAAE;AACnB5C,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDsC,IAAAA,kBAAkB,EAAE;AAChB7C,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACDuC,IAAAA,gBAAgB,EAAE;AACd9C,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDsC,IAAAA,QAAQ,EAAE;AACN/C,MAAAA,IAAI,EAAEgB,MAAM;MACZ,SAAA,EAAS;KACZ;AACDgC,IAAAA,SAAS,EAAE;AACPhD,MAAAA,IAAI,EAAES,OAAO;MACb,SAAA,EAAS;KACZ;AACDwC,IAAAA,SAAS,EAAE;AACPjD,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;KACZ;AACD2C,IAAAA,cAAc,EAAE;AACZlD,MAAAA,IAAI,EAAEO,MAAM;MACZ,SAAA,EAAS;AACb;GACH;AACD4C,EAAAA,KAAK,EAAEC,iBAAiB;EACxBC,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,OAAO;AACHC,MAAAA,eAAe,EAAE,IAAI;AACrBC,MAAAA,eAAe,EAAE;KACpB;AACL,EAAA;AACJ,CAAC;;;;;;;;;;;;AC0CD,aAAe;AACX3D,EAAAA,IAAI,EAAE,cAAc;AACpB,EAAA,SAAA,EAAS4D,QAAgB;AACzBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;AAC3LC,EAAAA,MAAM,EAAE;AACJC,IAAAA,QAAQ,EAAE;MAAE,SAAA,EAAS;AAAK;GAC7B;AACDC,EAAAA,oBAAoB,EAAE,IAAI;AAC1BC,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,eAAe,EAAE,IAAI;AACrBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,KAAK,EAAE,KAAK;EACZC,eAAe,EAAE,EAAE;EACnBC,IAAI,EAAA,SAAJA,IAAIA,GAAG;IACH,OAAO;AACHC,MAAAA,OAAO,EAAE,KAAK;AACdC,MAAAA,OAAO,EAAE,KAAK;MACdC,kBAAkB,EAAE,EAAE;MACtBC,0BAA0B,EAAE,EAAE;AAC9BC,MAAAA,cAAc,EAAE,KAAK;AACrBC,MAAAA,SAAS,EAAE;KACd;EACL,CAAC;AACDC,EAAAA,KAAK,EAAE;IACH7E,WAAW,EAAA,SAAXA,WAAWA,GAAG;MACV,IAAI,IAAI,CAAC4E,SAAS,EAAE;QAChB,IAAI,CAACE,IAAI,EAAE;AACX,QAAA,IAAI,CAACL,kBAAiB,GAAI,IAAI,CAACE,cAAa,IAAK,IAAI,CAACrC,kBAAkB,IAAI,CAACyC,2BAA2B,EAAC,GAAI,EAAE;QAC/G,IAAI,CAACH,SAAQ,GAAI,KAAK;AACtB,QAAA,CAAC,IAAI,CAAC7B,gBAAe,IAAK,IAAI,CAACiC,cAAc,CAACC,MAAK,KAAM,CAAA,IAAK,IAAI,CAACC,IAAI,EAAE;AAC7E,MAAA;MAEA,IAAI,CAACC,eAAe,EAAE;AAC1B,IAAA;GACH;EACDC,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,IAAI,CAACD,eAAe,EAAE;EAC1B,CAAC;EACDE,OAAO,EAAA,SAAPA,OAAOA,GAAG;IACN,IAAI,IAAI,CAACV,cAAc,EAAE;MACrB,IAAI,CAACW,YAAY,EAAE;AACvB,IAAA;EACJ,CAAC;EACDC,aAAa,EAAA,SAAbA,aAAaA,GAAG;IACZ,IAAI,CAACC,0BAA0B,EAAE;IACjC,IAAI,CAACC,oBAAoB,EAAE;IAE3B,IAAI,IAAI,CAACzB,aAAa,EAAE;AACpB,MAAA,IAAI,CAACA,aAAa,CAAC0B,OAAO,EAAE;MAC5B,IAAI,CAAC1B,gBAAgB,IAAI;AAC7B,IAAA;IAEA,IAAI,IAAI,CAACC,OAAO,EAAE;AACd0B,MAAAA,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC3B,OAAO,CAAC;MAC1B,IAAI,CAACA,OAAM,GAAI,IAAI;AACvB,IAAA;EACJ,CAAC;AACD4B,EAAAA,OAAO,EAAE;AACLC,IAAAA,cAAc,WAAdA,cAAcA,CAACC,KAAK,EAAEC,EAAE,EAAE;AACtB,MAAA,OAAO,IAAI,CAACC,uBAAsB,GAAIF,KAAI,GAAIC,EAAC,IAAKA,EAAE,CAACD,KAAK,CAAC,CAAC,OAAO,CAAC;IAC1E,CAAC;AACDG,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACC,MAAM,EAAE;AACnB,MAAA,OAAO,IAAI,CAAChG,WAAU,GAAIiG,gBAAgB,CAACD,MAAM,EAAE,IAAI,CAAChG,WAAW,CAAA,GAAIgG,MAAM;IACjF,CAAC;AACDE,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACF,MAAM,EAAE;MACnB,OAAOA,MAAM,CAAA;IACjB,CAAC;AACDG,IAAAA,kBAAkB,WAAlBA,kBAAkBA,CAACH,MAAM,EAAEJ,KAAK,EAAE;MAC9B,OAAO,CAAC,IAAI,CAAChF,OAAM,GAAIqF,gBAAgB,CAACD,MAAM,EAAE,IAAI,CAACpF,OAAO,CAAA,GAAI,IAAI,CAACmF,cAAc,CAACC,MAAM,CAAC,IAAI,GAAE,GAAIJ,KAAK;IAC9G,CAAC;IACDQ,YAAY,EAAA,SAAZA,YAAYA,CAACJ,MAAM,EAAEK,WAAW,EAAET,KAAK,EAAEU,GAAG,EAAE;AAC1C,MAAA,OAAO,IAAI,CAACC,GAAG,CAACD,GAAG,EAAE;AACjBE,QAAAA,OAAO,EAAE;AACLR,UAAAA,MAAM,EAANA,MAAM;AACNJ,UAAAA,KAAK,EAALA,KAAK;AACLa,UAAAA,QAAQ,EAAE,IAAI,CAACC,UAAU,CAACV,MAAM,CAAC;AACjC3B,UAAAA,OAAO,EAAE,IAAI,CAACC,kBAAiB,KAAM,IAAI,CAACqB,cAAc,CAACC,KAAK,EAAES,WAAW,CAAC;AAC5EM,UAAAA,QAAQ,EAAE,IAAI,CAACC,gBAAgB,CAACZ,MAAM;AAC1C;AACJ,OAAC,CAAC;IACN,CAAC;AACDY,IAAAA,gBAAgB,EAAA,SAAhBA,gBAAgBA,CAACZ,MAAM,EAAE;AACrB,MAAA,OAAO,IAAI,CAAC/F,cAAa,GAAIgG,gBAAgB,CAACD,MAAM,EAAE,IAAI,CAAC/F,cAAc,IAAI,KAAK;IACtF,CAAC;AACD4G,IAAAA,aAAa,EAAA,SAAbA,aAAaA,CAACb,MAAM,EAAE;MAClB,OAAO,IAAI,CAAC9F,gBAAe,IAAK8F,MAAM,CAACc,WAAU,IAAKd,MAAM,CAACe,KAAK;IACtE,CAAC;AACDC,IAAAA,mBAAmB,EAAA,SAAnBA,mBAAmBA,CAACF,WAAW,EAAE;AAC7B,MAAA,OAAOb,gBAAgB,CAACa,WAAW,EAAE,IAAI,CAAC5G,gBAAgB,CAAC;IAC/D,CAAC;AACD+G,IAAAA,sBAAsB,EAAA,SAAtBA,sBAAsBA,CAACH,WAAW,EAAE;AAChC,MAAA,OAAOb,gBAAgB,CAACa,WAAW,EAAE,IAAI,CAAC3G,mBAAmB,CAAC;IAClE,CAAC;AACD+G,IAAAA,eAAe,EAAA,SAAfA,eAAeA,CAACtB,KAAK,EAAE;AAAA,MAAA,IAAAuB,KAAA,GAAA,IAAA;MACnB,OAAO,CAAC,IAAI,CAACjH,gBAAe,GAAI0F,KAAI,GAAI,IAAI,CAACf,cAAc,CAACuC,KAAK,CAAC,CAAC,EAAExB,KAAK,CAAC,CAACyB,MAAM,CAAC,UAACrB,MAAM,EAAA;AAAA,QAAA,OAAKmB,KAAI,CAACN,aAAa,CAACb,MAAM,CAAC;AAAA,MAAA,CAAA,CAAC,CAAClB,MAAK,GAAIc,KAAK,IAAI,CAAC;IAClJ,CAAC;AACDjB,IAAAA,IAAI,EAAA,SAAJA,IAAIA,CAAC2C,OAAO,EAAE;AACV,MAAA,IAAI,CAACC,KAAK,CAAC,aAAa,CAAC;MACzB,IAAI,CAACtD,KAAI,GAAI,IAAI;MACjB,IAAI,CAACO,iBAAiB,IAAI;MAC1B,IAAI,CAACF,kBAAiB,GAAI,IAAI,CAACA,kBAAiB,KAAM,EAAC,GAAI,IAAI,CAACA,kBAAiB,GAAI,IAAI,CAACnC,eAAc,GAAI,IAAI,CAACyC,2BAA2B,EAAC,GAAI,EAAE;MACnJ0C,OAAM,IAAKE,KAAK,CAAC,IAAI,CAAC/G,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACC,UAAS,GAAI,IAAI,CAACD,KAAK,CAACC,UAAU,CAACC,GAAG,CAAC;IACvF,CAAC;AACD5C,IAAAA,IAAI,EAAA,SAAJA,IAAIA,CAACuC,OAAO,EAAE;AAAA,MAAA,IAAAM,MAAA,GAAA,IAAA;AACV,MAAA,IAAMC,KAAI,GAAI,SAARA,KAAIA,GAAU;AAAA,QAAA,IAAAC,qBAAA;AAChBF,QAAAA,MAAI,CAACL,KAAK,CAAC,aAAa,CAAC;QACzBK,MAAI,CAAC3D,KAAI,GAAIqD,OAAO;QACpBM,MAAI,CAACpD,cAAa,GAAI,KAAK;QAC3BoD,MAAI,CAACxD,UAAU,KAAK;AACpBwD,QAAAA,MAAI,CAACtD,kBAAiB,GAAI,EAAE;QAE5BgD,WAAWE,KAAK,CAACI,MAAI,CAACnH,QAAO,GAAImH,MAAI,CAACH,KAAK,CAACC,UAAS,GAAA,CAAAI,qBAAA,GAAIF,MAAI,CAACH,KAAK,CAACC,UAAU,MAAA,IAAA,IAAAI,qBAAA,KAAA,MAAA,GAAA,MAAA,GAArBA,qBAAA,CAAuBH,GAAG,CAAC;MACxF,CAAC;AAEDI,MAAAA,UAAU,CAAC,YAAM;AACbF,QAAAA,KAAK,EAAE;AACX,MAAA,CAAC,EAAE,CAAC,CAAC,CAAA;IACT,CAAC;AACDG,IAAAA,OAAO,EAAA,SAAPA,OAAOA,CAACC,KAAK,EAAE;MACX,IAAI,IAAI,CAACtB,QAAQ,EAAE;AACf;AACA,QAAA;AACJ,MAAA;MAEA,IAAI,CAAC,IAAI,CAAC1C,KAAI,IAAK,IAAI,CAAC9C,eAAe,EAAE;AACrC,QAAA,IAAI,CAAC+G,MAAM,CAACD,KAAK,EAAEA,KAAK,CAACE,MAAM,CAACC,KAAK,EAAE,OAAO,CAAC;AACnD,MAAA;MAEA,IAAI,CAACnE,KAAI,GAAI,IAAI;MACjB,IAAI,CAACI,OAAM,GAAI,IAAI;MAEnB,IAAI,IAAI,CAACG,cAAc,EAAE;AACrB,QAAA,IAAI,CAACF,kBAAiB,GAAI,IAAI,CAACA,kBAAiB,KAAM,EAAC,GAAI,IAAI,CAACA,qBAAqB,IAAI,CAACE,cAAa,IAAK,IAAI,CAACrC,eAAc,GAAI,IAAI,CAACyC,2BAA2B,EAAC,GAAI,EAAE;AAC1K,QAAA,IAAI,CAACyD,YAAY,CAAC,IAAI,CAAC/D,kBAAkB,CAAC;AAC9C,MAAA;AAEA,MAAA,IAAI,CAACiD,KAAK,CAAC,OAAO,EAAEU,KAAK,CAAC;IAC9B,CAAC;AACDK,IAAAA,MAAM,EAAA,SAANA,MAAMA,CAACL,KAAK,EAAE;MAAA,IAAAM,qBAAA,EAAAC,eAAA;MACV,IAAI,CAACvE,KAAI,GAAI,KAAK;MAClB,IAAI,CAACI,UAAU,KAAK;AACpB,MAAA,IAAI,CAACC,kBAAiB,GAAI,EAAE;AAC5B,MAAA,IAAI,CAACiD,KAAK,CAAC,MAAM,EAAEU,KAAK,CAAC;AACzB,MAAA,CAAAM,qBAAA,GAAA,CAAAC,eAAA,GAAA,IAAI,CAACC,SAAS,EAACH,MAAM,MAAA,IAAA,IAAAC,qBAAA,eAArBA,qBAAA,CAAAG,IAAA,CAAAF,eAAwB,CAAC;IAC7B,CAAC;AACDG,IAAAA,SAAS,EAAA,SAATA,SAASA,CAACV,KAAK,EAAE;MACb,IAAI,IAAI,CAACtB,QAAQ,EAAE;QACfsB,KAAK,CAACW,cAAc,EAAE;AAEtB,QAAA;AACJ,MAAA;MAEA,QAAQX,KAAK,CAACY,IAAI;AACd,QAAA,KAAK,WAAW;AACZ,UAAA,IAAI,CAACC,cAAc,CAACb,KAAK,CAAC;AAC1B,UAAA;AAEJ,QAAA,KAAK,SAAS;AACV,UAAA,IAAI,CAACc,YAAY,CAACd,KAAK,CAAC;AACxB,UAAA;AAEJ,QAAA,KAAK,WAAW;AACZ,UAAA,IAAI,CAACe,cAAc,CAACf,KAAK,CAAC;AAC1B,UAAA;AAEJ,QAAA,KAAK,YAAY;AACb,UAAA,IAAI,CAACgB,eAAe,CAAChB,KAAK,CAAC;AAC3B,UAAA;AAEJ,QAAA,KAAK,MAAM;AACP,UAAA,IAAI,CAACiB,SAAS,CAACjB,KAAK,CAAC;AACrB,UAAA;AAEJ,QAAA,KAAK,KAAK;AACN,UAAA,IAAI,CAACkB,QAAQ,CAAClB,KAAK,CAAC;AACpB,UAAA;AAEJ,QAAA,KAAK,UAAU;AACX,UAAA,IAAI,CAACmB,aAAa,CAACnB,KAAK,CAAC;AACzB,UAAA;AAEJ,QAAA,KAAK,QAAQ;AACT,UAAA,IAAI,CAACoB,WAAW,CAACpB,KAAK,CAAC;AACvB,UAAA;AAEJ,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,aAAa;AACd,UAAA,IAAI,CAACqB,UAAU,CAACrB,KAAK,CAAC;AACtB,UAAA;AAEJ,QAAA,KAAK,OAAO;AACR,UAAA,IAAI,CAACsB,UAAU,CAACtB,KAAK,CAAC;AACtB,UAAA;AAEJ,QAAA,KAAK,QAAQ;AACT,UAAA,IAAI,CAACuB,WAAW,CAACvB,KAAK,CAAC;AACvB,UAAA;AAEJ,QAAA,KAAK,KAAK;AACN,UAAA,IAAI,CAACwB,QAAQ,CAACxB,KAAK,CAAC;AACpB,UAAA;AAEJ,QAAA,KAAK,WAAW;AAChB,QAAA,KAAK,YAAY;AACb,UAAA,IAAI,CAACyB,UAAU,CAACzB,KAAK,CAAC;AACtB,UAAA;AAEJ,QAAA,KAAK,WAAW;AACZ,UAAA,IAAI,CAAC0B,cAAc,CAAC1B,KAAK,CAAC;AAC1B,UAAA;AAIR;MAEA,IAAI,CAAC7D,UAAU,KAAK;IACxB,CAAC;AACDwF,IAAAA,OAAO,EAAA,SAAPA,OAAOA,CAAC3B,KAAK,EAAE;AAAA,MAAA,IAAA4B,MAAA,GAAA,IAAA;MACX,IAAI,IAAI,CAAC/G,SAAS,EAAE;QAChB,IAAI,IAAI,CAACkB,aAAa,EAAE;AACpB8F,UAAAA,YAAY,CAAC,IAAI,CAAC9F,aAAa,CAAC;AACpC,QAAA;AAEA,QAAA,IAAI+F,KAAI,GAAI9B,KAAK,CAACE,MAAM,CAACC,KAAK;AAE9B,QAAA,IAAI,CAAC,IAAI,CAAC3H,QAAQ,EAAE;AAChB,UAAA,IAAI,CAACuJ,WAAW,CAAC/B,KAAK,EAAE8B,KAAK,CAAC;AAClC,QAAA;AAEA,QAAA,IAAIA,KAAK,CAACjF,MAAK,KAAM,CAAC,EAAE;UACpB,IAAI,CAACL,SAAQ,GAAI,KAAK;UACtB,IAAI,CAACM,IAAI,EAAE;AACX,UAAA,IAAI,CAACwC,KAAK,CAAC,OAAO,CAAC;AACvB,QAAA,CAAA,MAAO;AACH,UAAA,IAAIwC,KAAK,CAACjF,MAAK,IAAK,IAAI,CAACjE,SAAS,EAAE;AAChC,YAAA,IAAI,CAACyD,kBAAiB,GAAI,EAAE;AAE5B,YAAA,IAAI,CAACN,aAAY,GAAI+D,UAAU,CAAC,YAAM;cAClC8B,MAAI,CAAC3B,MAAM,CAACD,KAAK,EAAE8B,KAAK,EAAE,OAAO,CAAC;AACtC,YAAA,CAAC,EAAE,IAAI,CAAChJ,KAAK,CAAC;AAClB,UAAA,CAAA,MAAO;YACH,IAAI,CAAC0D,SAAQ,GAAI,KAAK;YACtB,IAAI,CAACM,IAAI,EAAE;AACf,UAAA;AACJ,QAAA;AACJ,MAAA;IACJ,CAAC;AACDkF,IAAAA,QAAQ,EAAA,SAARA,QAAQA,CAAChC,KAAK,EAAE;AAAA,MAAA,IAAAiC,MAAA,GAAA,IAAA;MACZ,IAAI,IAAI,CAAChJ,cAAc,EAAE;QACrB,IAAIiJ,KAAI,GAAI,KAAK;;AAEjB;QACA,IAAI,IAAI,CAACtF,kBAAkB,CAAC,IAAI,CAACpE,QAAQ,EAAE;AAAA,UAAA,IAAA2J,qBAAA;AACvC,UAAA,IAAIhC,KAAI,GAAI,IAAI,CAAC3H,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACC,UAAU,CAACU,iCAAQ,IAAI,CAACX,KAAK,CAACC,UAAU,MAAA,IAAA,IAAA0C,qBAAA,gBAAAA,qBAAA,GAArBA,qBAAA,CAAuBzC,GAAG,MAAA,IAAA,IAAAyC,qBAAA,KAAA,MAAA,GAAA,MAAA,GAA1BA,qBAAA,CAA4BhC,KAAK;UAC3F,IAAMiC,eAAe,IAAI,CAACxF,cAAc,CAACyF,IAAI,CAAC,UAACtE,MAAM,EAAA;YAAA,OAAKkE,MAAI,CAACK,eAAe,CAACvE,MAAM,EAAEoC,KAAI,IAAK,EAAE,CAAC;UAAA,CAAA,CAAC;UAEpG,IAAIiC,iBAAiB9H,SAAS,EAAE;AAC5B4H,YAAAA,KAAI,GAAI,IAAI;AACZ,YAAA,CAAC,IAAI,CAACzD,UAAU,CAAC2D,YAAY,CAAA,IAAK,IAAI,CAACG,cAAc,CAACvC,KAAK,EAAEoC,YAAY,CAAC;AAC9E,UAAA;AACJ,QAAA;QAEA,IAAI,CAACF,KAAK,EAAE;UACR,IAAI,IAAI,CAAC1J,QAAQ,EAAE;AACf,YAAA,IAAI,CAACgH,KAAK,CAACC,UAAU,CAACU,KAAI,GAAI,EAAE;AACpC,UAAA,CAAA,MAAO;AAAA,YAAA,IAAAqC,sBAAA;AACH,YAAA,IAAMC,oCAAU,IAAI,CAACjD,KAAK,CAACC,UAAU,MAAA,IAAA,IAAA+C,sBAAA,KAAA,MAAA,GAAA,MAAA,GAArBA,sBAAA,CAAuB9C,GAAG;AAC1C+C,YAAAA,YAAYA,OAAO,CAACtC,KAAI,GAAI,EAAE,CAAC;AACnC,UAAA;AACA,UAAA,IAAI,CAACb,KAAK,CAAC,OAAO,CAAC;UACnB,CAAC,IAAI,CAAC9G,YAAY,IAAI,CAACuJ,WAAW,CAAC/B,KAAK,EAAE,IAAI,CAAC;AACnD,QAAA;AACJ,MAAA;IACJ,CAAC;IACD0C,wBAAwB,EAAA,SAAxBA,wBAAwBA,GAAG;MACvB,IAAI,IAAI,CAAChE,QAAQ,EAAE;AACf;AACA,QAAA;AACJ,MAAA;MAEA,IAAI,CAACtC,OAAM,GAAI,IAAI;IACvB,CAAC;IACDuG,uBAAuB,EAAA,SAAvBA,uBAAuBA,GAAG;AACtB,MAAA,IAAI,CAACrG,0BAAyB,GAAI,EAAE;MACpC,IAAI,CAACF,UAAU,KAAK;IACxB,CAAC;AACDwG,IAAAA,0BAA0B,EAAA,SAA1BA,0BAA0BA,CAAC5C,KAAK,EAAE;MAC9B,IAAI,IAAI,CAACtB,QAAQ,EAAE;QACfsB,KAAK,CAACW,cAAc,EAAE;AAEtB,QAAA;AACJ,MAAA;MAEA,QAAQX,KAAK,CAACY,IAAI;AACd,QAAA,KAAK,WAAW;AACZ,UAAA,IAAI,CAACiC,wBAAwB,CAAC7C,KAAK,CAAC;AACpC,UAAA;AAEJ,QAAA,KAAK,YAAY;AACb,UAAA,IAAI,CAAC8C,yBAAyB,CAAC9C,KAAK,CAAC;AACrC,UAAA;AAEJ,QAAA,KAAK,WAAW;AACZ,UAAA,IAAI,CAAC+C,wBAAwB,CAAC/C,KAAK,CAAC;AACpC,UAAA;AAIR;IACJ,CAAC;AACDgD,IAAAA,gBAAgB,EAAA,SAAhBA,gBAAgBA,CAAChD,KAAK,EAAE;MACpB,IAAI,CAAC7D,OAAM,GAAI,IAAI;AAEnB,MAAA,IAAI,IAAI,CAACuC,QAAO,IAAK,IAAI,CAAClC,aAAa,IAAI,CAAC/D,OAAM,IAAK,IAAI,CAACwK,iBAAiB,CAACjD,KAAK,CAAC,EAAE;AAClF,QAAA;AACJ,MAAA;AAEA,MAAA,IAAI,CAAC,IAAI,CAACnE,OAAM,IAAK,CAAC,IAAI,CAACA,OAAO,CAACqH,QAAQ,CAAClD,KAAK,CAACE,MAAM,CAAC,EAAE;AACvDX,QAAAA,KAAK,CAAC,IAAI,CAAC/G,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACC,UAAS,GAAI,IAAI,CAACD,KAAK,CAACC,UAAU,CAACC,GAAG,CAAC;AAC5E,MAAA;IACJ,CAAC;AACDyD,IAAAA,eAAe,EAAA,SAAfA,eAAeA,CAACnD,KAAK,EAAE;MACnB,IAAI8B,KAAI,GAAIxH,SAAS;MAErB,IAAI,IAAI,CAACiC,cAAc,EAAE;AACrB,QAAA,IAAI,CAACO,IAAI,CAAC,IAAI,CAAC;AACnB,MAAA,CAAA,MAAO;AACH,QAAA,IAAIoD,MAAK,GAAI,IAAI,CAAC1H,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACC,UAAS,GAAI,IAAI,CAACD,KAAK,CAACC,UAAU,CAACC,GAAG;QAE9EH,KAAK,CAACW,MAAM,CAAC;QACb4B,KAAI,GAAI5B,MAAM,CAACC,KAAK;AAEpB,QAAA,IAAI,IAAI,CAAC5H,YAAW,KAAM,OAAO,EAAE,IAAI,CAAC0H,MAAM,CAACD,KAAK,EAAE,EAAE,EAAE,UAAU,CAAC,CAAA,KAChE,IAAI,IAAI,CAACzH,iBAAiB,SAAS,EAAE,IAAI,CAAC0H,MAAM,CAACD,KAAK,EAAE8B,KAAK,EAAE,UAAU,CAAC;AACnF,MAAA;AAEA,MAAA,IAAI,CAACxC,KAAK,CAAC,gBAAgB,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAE8B,QAAAA,KAAI,EAAJA;AAAM,OAAC,CAAC;IACjE,CAAC;AACDS,IAAAA,cAAc,WAAdA,cAAcA,CAACvC,KAAK,EAAEjC,MAAM,EAAiB;AAAA,MAAA,IAAfsF,MAAK,GAAAC,SAAA,CAAAzG,MAAA,GAAA,CAAA,IAAAyG,SAAA,CAAA,CAAA,CAAA,KAAAhJ,SAAA,GAAAgJ,SAAA,CAAA,CAAA,CAAA,GAAI,IAAI;AACvC,MAAA,IAAMnD,KAAI,GAAI,IAAI,CAAClC,cAAc,CAACF,MAAM,CAAC;MAEzC,IAAI,IAAI,CAACvF,QAAQ,EAAE;AACf,QAAA,IAAI,CAACgH,KAAK,CAACC,UAAU,CAACU,KAAI,GAAI,EAAE;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC1B,UAAU,CAACV,MAAM,CAAC,EAAE;AAC1B,UAAA,IAAI,CAACgE,WAAW,CAAC/B,KAAK,EAAA,EAAA,CAAAuD,MAAA,CAAAC,kBAAA,CAAO,IAAI,CAACC,OAAM,IAAK,EAAE,CAAA,EAAA,CAAGtD,KAAK,EAAC,CAAC;AAC7D,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,IAAI,CAAC4B,WAAW,CAAC/B,KAAK,EAAEG,KAAK,CAAC;AAClC,MAAA;AAEA,MAAA,IAAI,CAACb,KAAK,CAAC,aAAa,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAEG,QAAAA,KAAK,EAAEpC;AAAO,OAAC,CAAC;AAClE,MAAA,IAAI,CAACuB,KAAK,CAAC,eAAe,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAEG,QAAAA,KAAK,EAAEpC;AAAO,OAAC,CAAC;AAEpEsF,MAAAA,UAAU,IAAI,CAACvG,IAAI,CAAC,IAAI,CAAC;IAC7B,CAAC;AACD4G,IAAAA,iBAAiB,WAAjBA,iBAAiBA,CAAC1D,KAAK,EAAErC,KAAK,EAAE;MAC5B,IAAI,IAAI,CAACvD,YAAY,EAAE;AACnB,QAAA,IAAI,CAACuJ,wBAAwB,CAAC3D,KAAK,EAAErC,KAAK,CAAC;AAC/C,MAAA;IACJ,CAAC;AACDiG,IAAAA,mBAAmB,EAAA,SAAnBA,mBAAmBA,CAAC5D,KAAK,EAAwB;AAAA,MAAA,IAAA6D,MAAA,GAAA,IAAA;AAAA,MAAA,IAAtBC,KAAI,GAAAR,SAAA,CAAAzG,MAAA,GAAA,CAAA,IAAAyG,SAAA,CAAA,CAAA,CAAA,KAAAhJ,SAAA,GAAAgJ,SAAA,CAAA,CAAA,CAAA,GAAI,EAAE;AAAA,MAAA,IAAES,0EAAM,EAAE;AAC3CD,MAAAA,KAAI,KAAM,EAAC,KAAMA,KAAI,GAAI,IAAI,CAACE,8BAA8B,CAACD,GAAG,EAAE,IAAI,CAAC,CAAC;AACxEA,MAAAA,GAAE,KAAM,EAAC,KAAMA,GAAE,GAAI,IAAI,CAACC,8BAA8B,CAACF,KAAK,CAAC,CAAC;MAEhE,IAAIA,KAAI,KAAM,MAAMC,GAAE,KAAM,EAAE,EAAE;QAC5B,IAAME,aAAaC,IAAI,CAACC,GAAG,CAACL,KAAK,EAAEC,GAAG,CAAC;QACvC,IAAMK,QAAO,GAAIF,IAAI,CAACG,GAAG,CAACP,KAAK,EAAEC,GAAG,CAAC;AACrC,QAAA,IAAM5D,KAAI,GAAI,IAAI,CAACvD,cAAa,CAC3BuC,KAAK,CAAC8E,UAAU,EAAEG,QAAO,GAAI,CAAC,CAAA,CAC9BhF,MAAM,CAAC,UAACrB,MAAM,EAAA;AAAA,UAAA,OAAK8F,MAAI,CAACS,aAAa,CAACvG,MAAM,CAAC;AAAA,QAAA,CAAA,CAAA,CAC7CqB,MAAM,CAAC,UAACrB,MAAM,EAAA;AAAA,UAAA,OAAK,CAAC8F,MAAI,CAACpF,UAAU,CAACV,MAAM,CAAC;AAAA,QAAA,CAAA,CAAA,CAC3CwG,GAAG,CAAC,UAACxG,MAAM,EAAA;AAAA,UAAA,OAAK8F,MAAI,CAAC5F,cAAc,CAACF,MAAM,CAAC;QAAA,CAAA,CAAC;AAEjD,QAAA,IAAI,CAACgE,WAAW,CAAC/B,KAAK,EAAA,EAAA,CAAAuD,MAAA,CAAAC,kBAAA,CAAO,IAAI,CAACC,OAAM,IAAK,EAAE,CAAA,EAAAD,kBAAA,CAAMrD,KAAK,EAAC,CAAC;AAChE,MAAA;IACJ,CAAC;AACDqE,IAAAA,YAAY,EAAA,SAAZA,YAAYA,CAACxE,KAAK,EAAE;AAChB,MAAA,IAAI,CAAC+B,WAAW,CAAC/B,KAAK,EAAE,IAAI,CAAC;AAC7B,MAAA,IAAI,CAACV,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;AACDmF,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACzE,KAAK,EAAE;AAClB0E,MAAAA,eAAe,CAACC,IAAI,CAAC,eAAe,EAAE;AAClCvB,QAAAA,aAAa,EAAEpD,KAAK;QACpBE,MAAM,EAAE,IAAI,CAACR;AACjB,OAAC,CAAC;IACN,CAAC;AACDkF,IAAAA,gBAAgB,EAAA,SAAhBA,gBAAgBA,CAAC5E,KAAK,EAAE;MACpB,QAAQA,KAAK,CAACY,IAAI;AACd,QAAA,KAAK,QAAQ;AACT,UAAA,IAAI,CAACW,WAAW,CAACvB,KAAK,CAAC;AACvB,UAAA;AAIR;IACJ,CAAC;AACDa,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACb,KAAK,EAAE;AAClB,MAAA,IAAI,CAAC,IAAI,CAACzD,cAAc,EAAE;AACtB,QAAA;AACJ,MAAA;AAEA,MAAA,IAAMsI,WAAU,GAAI,IAAI,CAACxI,uBAAuB,KAAK,IAAI,CAACyI,mBAAmB,CAAC,IAAI,CAACzI,kBAAkB,CAAA,GAAI,IAAI,CAACF,OAAM,GAAI,IAAI,CAAC4I,oBAAoB,EAAC,GAAI,IAAI,CAACpI,2BAA2B,EAAE;AAExL,MAAA,IAAI,IAAI,CAACnE,QAAO,IAAKwH,KAAK,CAACgF,QAAQ,EAAE;QACjC,IAAI,CAACpB,mBAAmB,CAAC5D,KAAK,EAAE,IAAI,CAAC/D,eAAe,EAAE4I,WAAW,CAAC;AACtE,MAAA;AAEA,MAAA,IAAI,CAAClB,wBAAwB,CAAC3D,KAAK,EAAE6E,WAAW,CAAC;MAEjD7E,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDG,IAAAA,YAAY,EAAA,SAAZA,YAAYA,CAACd,KAAK,EAAE;AAChB,MAAA,IAAI,CAAC,IAAI,CAACzD,cAAc,EAAE;AACtB,QAAA;AACJ,MAAA;MAEA,IAAIyD,KAAK,CAACiF,MAAM,EAAE;AACd,QAAA,IAAI,IAAI,CAAC5I,kBAAiB,KAAM,EAAE,EAAE;AAChC,UAAA,IAAI,CAACkG,cAAc,CAACvC,KAAK,EAAE,IAAI,CAACpD,cAAc,CAAC,IAAI,CAACP,kBAAkB,CAAC,CAAC;AAC5E,QAAA;AAEA,QAAA,IAAI,CAACE,cAAa,IAAK,IAAI,CAACO,IAAI,EAAE;QAClCkD,KAAK,CAACW,cAAc,EAAE;AAC1B,MAAA,CAAA,MAAO;AACH,QAAA,IAAMkE,WAAU,GAAI,IAAI,CAACxI,kBAAiB,KAAM,EAAC,GAAI,IAAI,CAAC6I,mBAAmB,CAAC,IAAI,CAAC7I,kBAAkB,CAAA,GAAI,IAAI,CAACF,UAAU,IAAI,CAACgJ,mBAAmB,KAAK,IAAI,CAACC,0BAA0B,EAAE;AAEtL,QAAA,IAAI,IAAI,CAAC5M,QAAO,IAAKwH,KAAK,CAACgF,QAAQ,EAAE;UACjC,IAAI,CAACpB,mBAAmB,CAAC5D,KAAK,EAAE6E,WAAW,EAAE,IAAI,CAAC5I,eAAe,CAAC;AACtE,QAAA;AAEA,QAAA,IAAI,CAAC0H,wBAAwB,CAAC3D,KAAK,EAAE6E,WAAW,CAAC;QAEjD7E,KAAK,CAACW,cAAc,EAAE;AAC1B,MAAA;IACJ,CAAC;AACDI,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACf,KAAK,EAAE;AAClB,MAAA,IAAME,MAAK,GAAIF,KAAK,CAACqF,aAAa;AAElC,MAAA,IAAI,CAAChJ,kBAAiB,GAAI,EAAE;MAE5B,IAAI,IAAI,CAAC7D,QAAQ,EAAE;QACf,IAAI8M,OAAO,CAACpF,MAAM,CAACC,KAAK,CAAA,IAAK,IAAI,CAACoF,OAAO,EAAE;AACvChG,UAAAA,KAAK,CAAC,IAAI,CAACC,KAAK,CAACgG,cAAc,CAAC;AAChC,UAAA,IAAI,CAAClJ,0BAAyB,GAAI,IAAI,CAACmH,OAAO,CAAC5G,MAAM;AACzD,QAAA,CAAA,MAAO;AACHmD,UAAAA,KAAK,CAACyF,eAAe,EAAE,CAAA;AAC3B,QAAA;AACJ,MAAA;IACJ,CAAC;AACDzE,IAAAA,eAAe,EAAA,SAAfA,eAAeA,CAAChB,KAAK,EAAE;AACnB,MAAA,IAAI,CAAC3D,kBAAiB,GAAI,EAAE;MAE5B,IAAI,CAAC7D,QAAO,IAAKwH,KAAK,CAACyF,eAAe,EAAE,CAAA;IAC5C,CAAC;AACDxE,IAAAA,SAAS,EAAA,SAATA,SAASA,CAACjB,KAAK,EAAE;AACb,MAAA,IAAQqF,aAAY,GAAMrF,KAAK,CAAvBqF,aAAY;AACpB,MAAA,IAAMK,GAAE,GAAIL,aAAa,CAAClF,KAAK,CAACtD,MAAM;MACtC,IAAM8I,UAAU3F,KAAK,CAAC2F,WAAW3F,KAAK,CAAC4F,OAAO;AAC9C,MAAA,IAAMf,WAAU,GAAI,IAAI,CAACE,oBAAoB,EAAE;MAE/C,IAAI,IAAI,CAACvM,YAAYwH,KAAK,CAACgF,QAAO,IAAKW,OAAO,EAAE;QAC5C,IAAI,CAAC/B,mBAAmB,CAAC5D,KAAK,EAAE6E,WAAW,EAAE,IAAI,CAAC5I,eAAe,CAAC;AACtE,MAAA;AAEAoJ,MAAAA,aAAa,CAACQ,iBAAiB,CAAC,CAAC,EAAE7F,KAAK,CAACgF,QAAO,GAAIU,GAAE,GAAI,CAAC,CAAC;AAC5D,MAAA,IAAI,CAACrJ,kBAAiB,GAAI,EAAE;MAE5B2D,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDO,IAAAA,QAAQ,EAAA,SAARA,QAAQA,CAAClB,KAAK,EAAE;AACZ,MAAA,IAAQqF,aAAY,GAAMrF,KAAK,CAAvBqF,aAAY;AACpB,MAAA,IAAMK,GAAE,GAAIL,aAAa,CAAClF,KAAK,CAACtD,MAAM;MACtC,IAAM8I,UAAU3F,KAAK,CAAC2F,WAAW3F,KAAK,CAAC4F,OAAO;AAC9C,MAAA,IAAMf,cAAc,IAAI,CAACM,mBAAmB,EAAE;MAE9C,IAAI,IAAI,CAAC3M,YAAYwH,KAAK,CAACgF,QAAO,IAAKW,OAAO,EAAE;QAC5C,IAAI,CAAC/B,mBAAmB,CAAC5D,KAAK,EAAE,IAAI,CAAC/D,eAAe,EAAE4I,WAAW,CAAC;AACtE,MAAA;AAEAQ,MAAAA,aAAa,CAACQ,iBAAiB,CAAC7F,KAAK,CAACgF,QAAO,GAAI,CAAA,GAAIU,GAAG,EAAEA,GAAG,CAAC;AAC9D,MAAA,IAAI,CAACrJ,kBAAiB,GAAI,EAAE;MAE5B2D,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDS,IAAAA,WAAW,EAAA,SAAXA,WAAWA,CAACpB,KAAK,EAAE;AACf,MAAA,IAAI,CAACI,YAAY,CAAC,CAAC,CAAC;MACpBJ,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDQ,IAAAA,aAAa,EAAA,SAAbA,aAAaA,CAACnB,KAAK,EAAE;MACjB,IAAI,CAACI,YAAY,CAAC,IAAI,CAACxD,cAAc,CAACC,MAAK,GAAI,CAAC,CAAC;MACjDmD,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDU,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACrB,KAAK,EAAE;AACd,MAAA,IAAI,CAAC,IAAI,CAACnF,SAAS,EAAE;QACjB,IAAI,IAAI,CAACrC,QAAQ,EAAE;UACf,IAAIwH,KAAK,CAACE,MAAM,CAACC,KAAK,CAAC2F,IAAI,EAAE,EAAE;YAC3B,IAAI,CAAC/D,WAAW,CAAC/B,KAAK,EAAA,EAAA,CAAAuD,MAAA,CAAAC,kBAAA,CAAO,IAAI,CAACC,OAAM,IAAK,EAAE,CAAA,EAAA,CAAGzD,KAAK,CAACE,MAAM,CAACC,KAAK,CAAC2F,IAAI,EAAE,CAAA,CAAC,CAAC;AAC7E,YAAA,IAAI,CAACtG,KAAK,CAACC,UAAU,CAACU,KAAI,GAAI,EAAE;AACpC,UAAA;UAEAH,KAAK,CAACW,cAAc,EAAE;AAC1B,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,IAAI,CAAC,IAAI,CAACpE,cAAc,EAAE;AACtB,UAAA,IAAI,CAACF,qBAAqB,EAAE,CAAA;AAC5B,UAAA,IAAI,CAACwE,cAAc,CAACb,KAAK,CAAC;AAC9B,QAAA,CAAA,MAAO;AACH,UAAA,IAAI,IAAI,CAAC3D,kBAAiB,KAAM,EAAE,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC7D,QAAO,IAAKwH,KAAK,CAACgF,QAAQ,EAAE;cACjC,IAAI,CAACpB,mBAAmB,CAAC5D,KAAK,EAAE,IAAI,CAAC3D,kBAAkB,CAAC;AAC5D,YAAA,CAAA,MAAO;AACH,cAAA,IAAI,CAACkG,cAAc,CAACvC,KAAK,EAAE,IAAI,CAACpD,cAAc,CAAC,IAAI,CAACP,kBAAkB,CAAC,CAAC;AAC5E,YAAA;YAEA2D,KAAK,CAACW,cAAc,EAAE;AAC1B,UAAA;UAEA,IAAI,CAAC7D,IAAI,EAAE;AACf,QAAA;AACJ,MAAA;IACJ,CAAC;AACDwE,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACtB,KAAK,EAAE;MACd,IAAI,CAAC,IAAI,CAAC9F,eAAc,IAAK,IAAI,CAACmC,kBAAiB,KAAM,EAAE,EAAE;AACzD,QAAA,IAAI,CAACgF,UAAU,CAACrB,KAAK,CAAC;AAC1B,MAAA;IACJ,CAAC;AACDuB,IAAAA,WAAW,EAAA,SAAXA,WAAWA,CAACvB,KAAK,EAAE;MACf,IAAI,CAACzD,cAAa,IAAK,IAAI,CAACO,IAAI,CAAC,IAAI,CAAC;MACtCkD,KAAK,CAACW,cAAc,EAAE;IAC1B,CAAC;AACDa,IAAAA,QAAQ,EAAA,SAARA,QAAQA,CAACxB,KAAK,EAAE;AACZ,MAAA,IAAI,IAAI,CAAC3D,kBAAiB,KAAM,EAAE,EAAE;AAChC,QAAA,IAAI,CAACkG,cAAc,CAACvC,KAAK,EAAE,IAAI,CAACpD,cAAc,CAAC,IAAI,CAACP,kBAAkB,CAAC,CAAC;AAC5E,MAAA;AAEA,MAAA,IAAI,CAACE,cAAa,IAAK,IAAI,CAACO,IAAI,EAAE;IACtC,CAAC;IACD2E,UAAU,EAAA,SAAVA,UAAUA,GAAG;AACT,MAAA,IAAI,CAACxF,kBAAkB,IAAI,CAACI,kBAAkB;IAClD,CAAC;AACDqF,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAAC1B,KAAK,EAAE;MAClB,IAAI,IAAI,CAACxH,QAAQ,EAAE;AACf,QAAA,IAAIuN,UAAU,CAAC,IAAI,CAACtC,OAAO,CAAA,IAAK,CAAC,IAAI,CAACjE,KAAK,CAACC,UAAU,CAACU,KAAK,EAAE;AAC1D,UAAA,IAAM6F,YAAW,GAAI,IAAI,CAACvC,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC5G,MAAK,GAAI,CAAC,CAAC;AAC1D,UAAA,IAAMoJ,QAAO,GAAI,IAAI,CAACxC,OAAO,CAACtE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAE1C,UAAA,IAAI,CAAC+G,UAAU,CAACD,QAAQ,EAAEjG,KAAK,CAAC;AAChC,UAAA,IAAI,CAACV,KAAK,CAAC,eAAe,EAAE;AAAE8D,YAAAA,aAAa,EAAEpD,KAAK;AAAEG,YAAAA,KAAK,EAAE6F;AAAa,WAAC,CAAC;AAC1E,UAAA,IAAI,CAAC1G,KAAK,CAAC,iBAAiB,EAAE;AAAE8D,YAAAA,aAAa,EAAEpD,KAAK;AAAEG,YAAAA,KAAK,EAAE6F;AAAa,WAAC,CAAC;AAChF,QAAA;AAEAhG,QAAAA,KAAK,CAACyF,eAAe,EAAE,CAAA;AAC3B,MAAA;IACJ,CAAC;IACD5C,wBAAwB,EAAA,SAAxBA,wBAAwBA,GAAG;AACvB,MAAA,IAAI,CAACvG,6BAA6B,IAAI,CAACA,0BAAyB,GAAI,CAAA,GAAI,IAAI,IAAI,CAACA,0BAAyB,GAAI,CAAC;IACnH,CAAC;IACDwG,yBAAyB,EAAA,SAAzBA,yBAAyBA,GAAG;MACxB,IAAI,CAACxG,0BAA0B,EAAE;MAEjC,IAAI,IAAI,CAACA,0BAAyB,GAAI,IAAI,CAACmH,OAAO,CAAC5G,MAAK,GAAI,CAAC,EAAE;AAC3D,QAAA,IAAI,CAACP,0BAAyB,GAAI,EAAE;AACpCiD,QAAAA,KAAK,CAAC,IAAI,CAACC,KAAK,CAACC,UAAU,CAAC;AAChC,MAAA;IACJ,CAAC;AACDsD,IAAAA,wBAAwB,EAAA,SAAxBA,wBAAwBA,CAAC/C,KAAK,EAAE;AAC5B,MAAA,IAAI,IAAI,CAAC1D,0BAAyB,KAAM,EAAE,EAAE;QACxC,IAAI,CAAC6J,YAAY,CAACnG,KAAK,EAAE,IAAI,CAAC1D,0BAA0B,CAAC;AAC7D,MAAA;IACJ,CAAC;AACD8J,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACC,EAAE,EAAE;AACf9I,MAAAA,MAAM,CAAC+I,GAAG,CAAC,SAAS,EAAED,EAAE,EAAE,IAAI,CAACE,SAAS,CAACC,MAAM,CAACC,MAAM,CAAC5K,OAAO,CAAC;MAE/D6K,QAAQ,CAACL,EAAE,EAAE;AAAEM,QAAAA,QAAQ,EAAE,UAAU;AAAEC,QAAAA,GAAG,EAAE;AAAI,OAAC,CAAC;MAChD,IAAI,CAAC1J,YAAY,EAAE;;AAEnB;AACA,MAAA,IAAI,CAAC2J,aAAY,IAAKR,EAAE,CAACS,YAAY,CAAC,IAAI,CAACD,aAAa,EAAE,EAAE,CAAC;IACjE,CAAC;IACDE,mBAAmB,EAAA,SAAnBA,mBAAmBA,GAAG;MAClB,IAAI,CAACC,wBAAwB,EAAE;MAC/B,IAAI,CAACC,kBAAkB,EAAE;MACzB,IAAI,CAACC,kBAAkB,EAAE;AAEzB,MAAA,IAAI,CAAC5H,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;AACD6H,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACd,EAAE,EAAE;AACfA,MAAAA,EAAE,CAACrL,KAAK,CAACoM,aAAY,GAAI,MAAM;MAC/B,IAAI,CAAChK,0BAA0B,EAAE;MACjC,IAAI,CAACiK,oBAAoB,EAAE;MAC3B,IAAI,CAAChK,oBAAoB,EAAE;AAE3B,MAAA,IAAI,CAACiC,KAAK,CAAC,MAAM,CAAC;MAClB,IAAI,CAACzD,OAAM,GAAI,IAAI;IACvB,CAAC;AACDyL,IAAAA,mBAAmB,EAAA,SAAnBA,mBAAmBA,CAACjB,EAAE,EAAE;AACpB9I,MAAAA,MAAM,CAACC,KAAK,CAAC6I,EAAE,CAAC;IACpB,CAAC;IACDnJ,YAAY,EAAA,SAAZA,YAAYA,GAAG;AACX,MAAA,IAAIgD,MAAK,GAAI,IAAI,CAAC1H,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACgG,iBAAiB,IAAI,CAAChG,KAAK,CAACC,UAAU,CAACC,GAAG;AAElF,MAAA,IAAI,IAAI,CAAC3G,QAAO,KAAM,MAAM,EAAE;AAC1BwO,QAAAA,gBAAgB,CAAC,IAAI,CAAC1L,OAAO,EAAEqE,MAAM,CAAC;AAC1C,MAAA,CAAA,MAAO;AACH,QAAA,IAAI,CAACrE,OAAO,CAACb,KAAK,CAACwM,QAAO,GAAIC,aAAa,CAACvH,MAAM,IAAI,IAAI;AAC1DwH,QAAAA,gBAAgB,CAAC,IAAI,CAAC7L,OAAO,EAAEqE,MAAM,CAAC;AAC1C,MAAA;IACJ,CAAC;IACD8G,wBAAwB,EAAA,SAAxBA,wBAAwBA,GAAG;AAAA,MAAA,IAAAW,MAAA,GAAA,IAAA;AACvB,MAAA,IAAI,CAAC,IAAI,CAACjM,oBAAoB,EAAE;AAC5B,QAAA,IAAI,CAACA,oBAAmB,GAAI,UAACsE,KAAK,EAAK;AACnC,UAAA,IAAI2H,MAAI,CAACpL,cAAa,IAAKoL,MAAI,CAAC9L,OAAM,IAAK8L,MAAI,CAACC,gBAAgB,CAAC5H,KAAK,CAAC,EAAE;YACrE2H,MAAI,CAAC7K,IAAI,EAAE;AACf,UAAA;QACJ,CAAC;QAED+K,QAAQ,CAACC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACpM,oBAAoB,EAAE,IAAI,CAAC;AACvE,MAAA;IACJ,CAAC;IACD0B,0BAA0B,EAAA,SAA1BA,0BAA0BA,GAAG;MACzB,IAAI,IAAI,CAAC1B,oBAAoB,EAAE;QAC3BmM,QAAQ,CAACE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACrM,oBAAoB,EAAE,IAAI,CAAC;QACtE,IAAI,CAACA,oBAAmB,GAAI,IAAI;AACpC,MAAA;IACJ,CAAC;IACDuL,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;AAAA,MAAA,IAAAe,MAAA,GAAA,IAAA;AACjB,MAAA,IAAI,CAAC,IAAI,CAACpM,aAAa,EAAE;AACrB,QAAA,IAAI,CAACA,aAAY,GAAI,IAAIqM,6BAA6B,CAAC,IAAI,CAACzI,KAAK,CAAC0I,SAAS,EAAE,YAAM;UAC/E,IAAIF,MAAI,CAACzL,cAAc,EAAE;YACrByL,MAAI,CAAClL,IAAI,EAAE;AACf,UAAA;AACJ,QAAA,CAAC,CAAC;AACN,MAAA;AAEA,MAAA,IAAI,CAAClB,aAAa,CAACqL,kBAAkB,EAAE;IAC3C,CAAC;IACDI,oBAAoB,EAAA,SAApBA,oBAAoBA,GAAG;MACnB,IAAI,IAAI,CAACzL,aAAa,EAAE;AACpB,QAAA,IAAI,CAACA,aAAa,CAACyL,oBAAoB,EAAE;AAC7C,MAAA;IACJ,CAAC;IACDH,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;AAAA,MAAA,IAAAiB,MAAA,GAAA,IAAA;AACjB,MAAA,IAAI,CAAC,IAAI,CAACxM,cAAc,EAAE;QACtB,IAAI,CAACA,iBAAiB,YAAM;UACxB,IAAIwM,MAAI,CAAC5L,cAAa,IAAK,CAAC6L,aAAa,EAAE,EAAE;YACzCD,MAAI,CAACrL,IAAI,EAAE;AACf,UAAA;QACJ,CAAC;QAEDuL,MAAM,CAACP,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACnM,cAAc,CAAC;AAC1D,MAAA;IACJ,CAAC;IACD0B,oBAAoB,EAAA,SAApBA,oBAAoBA,GAAG;MACnB,IAAI,IAAI,CAAC1B,cAAc,EAAE;QACrB0M,MAAM,CAACN,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAACpM,cAAc,CAAC;QACzD,IAAI,CAACA,iBAAiB,IAAI;AAC9B,MAAA;IACJ,CAAC;AACDiM,IAAAA,gBAAgB,EAAA,SAAhBA,gBAAgBA,CAAC5H,KAAK,EAAE;MACpB,OAAO,CAAC,IAAI,CAACnE,OAAO,CAACqH,QAAQ,CAAClD,KAAK,CAACE,MAAM,KAAK,CAAC,IAAI,CAACoI,cAAc,CAACtI,KAAK,KAAK,CAAC,IAAI,CAACiD,iBAAiB,CAACjD,KAAK,CAAC;IAChH,CAAC;AACDsI,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAACtI,KAAK,EAAE;AAClB,MAAA,IAAI,IAAI,CAACxH,QAAQ,EAAE,OAAOwH,KAAK,CAACE,WAAW,IAAI,CAACV,KAAK,CAACgG,cAAa,IAAK,IAAI,CAAChG,KAAK,CAACgG,cAAc,CAACtC,QAAQ,CAAClD,KAAK,CAACE,MAAM,CAAC,CAAA,KACnH,OAAOF,KAAK,CAACE,MAAK,KAAM,IAAI,CAACV,KAAK,CAACC,UAAU,CAACC,GAAG;IAC1D,CAAC;AACDuD,IAAAA,iBAAiB,EAAA,SAAjBA,iBAAiBA,CAACjD,KAAK,EAAE;AACrB,MAAA,OAAO,IAAI,CAACR,KAAK,CAAC+I,cAAa,GAAIvI,KAAK,CAACE,MAAK,KAAM,IAAI,CAACV,KAAK,CAAC+I,cAAa,IAAK,IAAI,CAAC/I,KAAK,CAAC+I,cAAc,CAACrF,QAAQ,CAAClD,KAAK,CAACE,MAAM,CAAA,GAAI,KAAK;IAC7I,CAAC;AACDoC,IAAAA,eAAe,WAAfA,eAAeA,CAACvE,MAAM,EAAEoC,KAAK,EAAE;AAAA,MAAA,IAAAqI,oBAAA;AAC3B,MAAA,OAAO,IAAI,CAAClE,aAAa,CAACvG,MAAM,CAAA,IAAK,CAAA,CAAAyK,oBAAA,OAAI,CAAC1K,cAAc,CAACC,MAAM,CAAC,MAAA,IAAA,IAAAyK,oBAAA,KAAA,MAAA,GAAA,MAAA,GAA3BA,oBAAA,CAA6BC,iBAAiB,CAAC,IAAI,CAACpO,YAAY,CAAA,MAAM8F,KAAK,CAACsI,iBAAiB,CAAC,IAAI,CAACpO,YAAY,CAAC;IACzJ,CAAC;AACDiK,IAAAA,aAAa,EAAA,SAAbA,aAAaA,CAACvG,MAAM,EAAE;AAClB,MAAA,OAAOgI,UAAU,CAAChI,MAAM,KAAK,EAAE,IAAI,CAACY,gBAAgB,CAACZ,MAAM,KAAK,IAAI,CAACa,aAAa,CAACb,MAAM,CAAC,CAAC;IAC/F,CAAC;AACD2K,IAAAA,qBAAqB,EAAA,SAArBA,qBAAqBA,CAAC3K,MAAM,EAAE;AAC1B,MAAA,OAAO,IAAI,CAACuG,aAAa,CAACvG,MAAM,CAAA,IAAK,IAAI,CAACU,UAAU,CAACV,MAAM,CAAC;IAChE,CAAC;AACD4K,IAAAA,QAAQ,WAARA,QAAQA,CAACC,MAAM,EAAEC,MAAM,EAAE;MACrB,OAAOC,MAAM,CAACF,MAAM,EAAEC,MAAM,EAAE,IAAI,CAACE,WAAW,CAAC;IACnD,CAAC;AACDtK,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACV,MAAM,EAAE;AAAA,MAAA,IAAAiL,MAAA,GAAA,IAAA;AACf,MAAA,IAAMC,WAAU,GAAI,IAAI,CAAChL,cAAc,CAACF,MAAM,CAAC;AAE/C,MAAA,OAAO,IAAI,CAACvF,QAAO,GAAI,CAAC,IAAI,CAACiL,WAAW,EAAE,EAAEyF,IAAI,CAAC,UAAC/I,KAAK,EAAA;AAAA,QAAA,OAAK6I,MAAI,CAACL,QAAQ,CAACxI,KAAK,EAAE8I,WAAW,CAAC;AAAA,MAAA,CAAA,CAAA,GAAI,IAAI,CAACN,QAAQ,CAAC,IAAI,CAAClF,OAAO,EAAE,IAAI,CAACxF,cAAc,CAACF,MAAM,CAAC,CAAC;IAC7J,CAAC;IACDgH,oBAAoB,EAAA,SAApBA,oBAAoBA,GAAG;AAAA,MAAA,IAAAoE,MAAA,GAAA,IAAA;AACnB,MAAA,OAAO,IAAI,CAACvM,cAAc,CAACwM,SAAS,CAAC,UAACrL,MAAM,EAAA;AAAA,QAAA,OAAKoL,MAAI,CAAC7E,aAAa,CAACvG,MAAM,CAAC;MAAA,CAAA,CAAC;IAChF,CAAC;IACDoH,mBAAmB,EAAA,SAAnBA,mBAAmBA,GAAG;AAAA,MAAA,IAAAkE,MAAA,GAAA,IAAA;AAClB,MAAA,OAAOC,aAAa,CAAC,IAAI,CAAC1M,cAAc,EAAE,UAACmB,MAAM,EAAA;AAAA,QAAA,OAAKsL,MAAI,CAAC/E,aAAa,CAACvG,MAAM,CAAC;MAAA,CAAA,CAAC;IACrF,CAAC;AACD+G,IAAAA,mBAAmB,EAAA,SAAnBA,mBAAmBA,CAACnH,KAAK,EAAE;AAAA,MAAA,IAAA4L,OAAA,GAAA,IAAA;MACvB,IAAMC,kBAAiB,GAAI7L,KAAI,GAAI,IAAI,CAACf,cAAc,CAACC,MAAK,GAAI,CAAA,GAAI,IAAI,CAACD,cAAc,CAACuC,KAAK,CAACxB,KAAI,GAAI,CAAC,CAAC,CAACyL,SAAS,CAAC,UAACrL,MAAM,EAAA;AAAA,QAAA,OAAKwL,OAAI,CAACjF,aAAa,CAACvG,MAAM,CAAC;MAAA,CAAA,CAAA,GAAI,EAAE;MAE/J,OAAOyL,kBAAiB,GAAI,EAAC,GAAIA,kBAAiB,GAAI7L,KAAI,GAAI,CAAA,GAAIA,KAAK;IAC3E,CAAC;AACDuH,IAAAA,mBAAmB,EAAA,SAAnBA,mBAAmBA,CAACvH,KAAK,EAAE;AAAA,MAAA,IAAA8L,OAAA,GAAA,IAAA;MACvB,IAAMD,kBAAiB,GAAI7L,KAAI,GAAI,CAAA,GAAI2L,aAAa,CAAC,IAAI,CAAC1M,cAAc,CAACuC,KAAK,CAAC,CAAC,EAAExB,KAAK,CAAC,EAAE,UAACI,MAAM,EAAA;AAAA,QAAA,OAAK0L,OAAI,CAACnF,aAAa,CAACvG,MAAM,CAAC;MAAA,CAAA,CAAA,GAAI,EAAE;AAEtI,MAAA,OAAOyL,kBAAiB,GAAI,KAAKA,kBAAiB,GAAI7L,KAAK;IAC/D,CAAC;IACD+L,uBAAuB,EAAA,SAAvBA,uBAAuBA,GAAG;AAAA,MAAA,IAAAC,OAAA,GAAA,IAAA;MACtB,OAAO,IAAI,CAACpE,UAAU,IAAI,CAAC3I,cAAc,CAACwM,SAAS,CAAC,UAACrL,MAAM,EAAA;AAAA,QAAA,OAAK4L,OAAI,CAACjB,qBAAqB,CAAC3K,MAAM,CAAC;MAAA,CAAA,CAAA,GAAI,EAAE;IAC5G,CAAC;IACDpB,2BAA2B,EAAA,SAA3BA,2BAA2BA,GAAG;AAC1B,MAAA,IAAMiN,gBAAgB,IAAI,CAACF,uBAAuB,EAAE;MAEpD,OAAOE,aAAY,GAAI,CAAA,GAAI,IAAI,CAAC7E,oBAAoB,EAAC,GAAI6E,aAAa;IAC1E,CAAC;IACDxE,0BAA0B,EAAA,SAA1BA,0BAA0BA,GAAG;AACzB,MAAA,IAAMwE,gBAAgB,IAAI,CAACF,uBAAuB,EAAE;MAEpD,OAAOE,aAAY,GAAI,CAAA,GAAI,IAAI,CAACzE,mBAAmB,EAAC,GAAIyE,aAAa;IACzE,CAAC;IACD3J,MAAM,EAAA,SAANA,MAAMA,CAACD,KAAK,EAAE8B,KAAK,EAAE+H,MAAM,EAAE;AACzB;AACA,MAAA,IAAI/H,KAAI,KAAMxH,SAAQ,IAAKwH,KAAI,KAAM,IAAI,EAAE;AACvC,QAAA;AACJ,MAAA;;AAEA;AACA,MAAA,IAAI+H,MAAK,KAAM,OAAM,IAAK/H,KAAK,CAACgE,IAAI,EAAE,CAACjJ,MAAK,KAAM,CAAC,EAAE;AACjD,QAAA;AACJ,MAAA;MAEA,IAAI,CAACL,SAAQ,GAAI,IAAI;AACrB,MAAA,IAAI,CAAC8C,KAAK,CAAC,UAAU,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAE8B,QAAAA,KAAI,EAAJA;AAAM,OAAC,CAAC;IAC3D,CAAC;AACDqE,IAAAA,YAAY,WAAZA,YAAYA,CAACnG,KAAK,EAAErC,KAAK,EAAE;AAAA,MAAA,IAAAmM,OAAA,GAAA,IAAA;AACvB,MAAA,IAAMC,aAAY,GAAI,IAAI,CAACtG,OAAO,CAAC9F,KAAK,CAAC;MACzC,IAAMwC,KAAI,GAAI,IAAI,CAACsD,OAAO,CAACrE,MAAM,CAAC,UAAC4K,CAAC,EAAEC,CAAC,EAAA;QAAA,OAAKA,CAAA,KAAMtM,KAAK;AAAA,MAAA,CAAA,CAAC,CAAC4G,GAAG,CAAC,UAACxG,MAAM,EAAA;AAAA,QAAA,OAAK+L,OAAI,CAAC7L,cAAc,CAACF,MAAM,CAAC;MAAA,CAAA,CAAC;AAErG,MAAA,IAAI,CAACgE,WAAW,CAAC/B,KAAK,EAAEG,KAAK,CAAC;AAC9B,MAAA,IAAI,CAACb,KAAK,CAAC,eAAe,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAEG,QAAAA,KAAK,EAAE4J;AAAc,OAAC,CAAC;AAC3E,MAAA,IAAI,CAACzK,KAAK,CAAC,iBAAiB,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAEG,QAAAA,KAAK,EAAE4J;AAAc,OAAC,CAAC;MAC7E,IAAI,CAAC/N,KAAI,GAAI,IAAI;AACjBuD,MAAAA,KAAK,CAAC,IAAI,CAAC/G,QAAO,GAAI,IAAI,CAACgH,KAAK,CAACC,UAAS,GAAI,IAAI,CAACD,KAAK,CAACC,UAAU,CAACC,GAAG,CAAC;IAC5E,CAAC;AACDiE,IAAAA,wBAAwB,WAAxBA,wBAAwBA,CAAC3D,KAAK,EAAErC,KAAK,EAAE;AACnC,MAAA,IAAI,IAAI,CAACtB,kBAAiB,KAAMsB,KAAK,EAAE;QACnC,IAAI,CAACtB,kBAAiB,GAAIsB,KAAK;QAC/B,IAAI,CAACyC,YAAY,EAAE;QAEnB,IAAI,IAAI,CAACjG,aAAa,EAAE;AACpB,UAAA,IAAI,CAACoI,cAAc,CAACvC,KAAK,EAAE,IAAI,CAACpD,cAAc,CAACe,KAAK,CAAC,EAAE,KAAK,CAAC;AACjE,QAAA;AACJ,MAAA;IACJ,CAAC;IACDyC,YAAY,EAAA,SAAZA,YAAYA,GAAa;AAAA,MAAA,IAAA8J,OAAA,GAAA,IAAA;AAAA,MAAA,IAAZvM,4EAAQ,EAAE;MACnB,IAAI,CAACwM,SAAS,CAAC,YAAM;AACjB,QAAA,IAAMC,EAAC,GAAIzM,KAAI,KAAM,EAAC,MAAA4F,MAAA,CAAO2G,OAAI,CAACG,GAAG,OAAA9G,MAAA,CAAI5F,KAAK,CAAA,GAAKuM,OAAI,CAACI,eAAe;AACvE,QAAA,IAAMC,OAAM,GAAIC,UAAU,CAACN,OAAI,CAACO,IAAI,EAAA,UAAA,CAAAlH,MAAA,CAAY6G,EAAE,EAAA,KAAA,CAAI,CAAC;AAEvD,QAAA,IAAIG,OAAO,EAAE;AACTA,UAAAA,OAAO,CAACG,kBAAkBH,OAAO,CAACG,cAAc,CAAC;AAAEC,YAAAA,KAAK,EAAE,SAAS;AAAEC,YAAAA,MAAM,EAAE;AAAQ,WAAC,CAAC;AAC3F,QAAA,CAAA,MAAO,IAAI,CAACV,OAAI,CAACrM,uBAAuB,EAAE;AACtCqM,UAAAA,OAAI,CAACpO,eAAc,IAAKoO,OAAI,CAACpO,eAAe,CAAC+O,aAAa,CAAClN,UAAU,EAAC,GAAIA,KAAI,GAAIuM,OAAI,CAAC7N,kBAAkB,CAAC;AAC9G,QAAA;AACJ,MAAA,CAAC,CAAC;IACN,CAAC;IACDU,eAAe,EAAA,SAAfA,eAAeA,GAAG;AACd,MAAA,IAAI,IAAI,CAAC5C,aAAY,IAAK,IAAI,CAACD,eAAc,IAAK,CAAC,IAAI,CAACqL,OAAO,EAAE;AAC7D,QAAA,IAAI,CAAClJ,kBAAiB,GAAI,IAAI,CAACM,2BAA2B,EAAE;AAC5D,QAAA,IAAI,CAAC4F,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC3F,cAAc,CAAC,IAAI,CAACP,kBAAkB,CAAC,EAAE,KAAK,CAAC;AAClF,MAAA;IACJ,CAAC;AACD0F,IAAAA,WAAW,WAAXA,WAAWA,CAAC/B,KAAK,EAAEG,KAAK,EAAE;AACtB,MAAA,IAAI,CAAC+F,UAAU,CAAC/F,KAAK,EAAEH,KAAK,CAAC;AAC7B,MAAA,IAAI,CAACV,KAAK,CAAC,QAAQ,EAAE;AAAE8D,QAAAA,aAAa,EAAEpD,KAAK;AAAEG,QAAAA,KAAI,EAAJA;AAAM,OAAC,CAAC;IACzD,CAAC;AACD2K,IAAAA,WAAW,EAAA,SAAXA,WAAWA,CAACC,OAAO,EAAE;AAAA,MAAA,IAAAC,OAAA,GAAA,IAAA;AACjB,MAAA,OAAO,CAACD,OAAM,IAAK,EAAE,EAAEE,MAAM,CAAC,UAACC,MAAM,EAAEnN,MAAM,EAAEJ,KAAK,EAAK;QACrDuN,MAAM,CAACC,IAAI,CAAC;AAAEtM,UAAAA,WAAW,EAAEd,MAAM;AAAEe,UAAAA,KAAK,EAAE,IAAI;AAAEnB,UAAAA,KAAI,EAAJA;AAAM,SAAC,CAAC;AAExD,QAAA,IAAMzF,mBAAkB,GAAI8S,OAAI,CAAChM,sBAAsB,CAACjB,MAAM,CAAC;AAE/D7F,QAAAA,mBAAkB,IAAKA,mBAAmB,CAACkT,OAAO,CAAC,UAACC,CAAC,EAAA;AAAA,UAAA,OAAKH,MAAM,CAACC,IAAI,CAACE,CAAC,CAAC;QAAA,CAAA,CAAC;AAEzE,QAAA,OAAOH,MAAM;MACjB,CAAC,EAAE,EAAE,CAAC;IACV,CAAC;AACDI,IAAAA,UAAU,EAAA,SAAVA,UAAUA,CAACjF,EAAE,EAAE;MACX,IAAI,CAACxK,OAAM,GAAIwK,EAAE;IACrB,CAAC;AACDkF,IAAAA,OAAO,WAAPA,OAAOA,CAAClF,EAAE,EAAEmF,UAAU,EAAE;MACpB,IAAI,CAACf,IAAG,GAAIpE,EAAE;AACdmF,MAAAA,UAAS,IAAKA,UAAU,CAACnF,EAAE,CAAC;IAChC,CAAC;AACDoF,IAAAA,kBAAkB,EAAA,SAAlBA,kBAAkBA,CAACpF,EAAE,EAAE;MACnB,IAAI,CAACvK,eAAc,GAAIuK,EAAE;IAC7B,CAAC;AACDqF,IAAAA,2BAA2B,EAAA,SAA3BA,2BAA2BA,CAAC/N,KAAK,EAAE;AAAA,MAAA,IAAAgO,OAAA,GAAA,IAAA;AAC/B,MAAA,IAAMnC,qBAAqB,IAAI,CAACjE,WAAW5H,KAAI,GAAI,IAAI,CAACf,cAAc,CAACC,SAAS,CAAA,GAAI,IAAI,CAACD,cAAc,CAACuC,KAAK,CAACxB,KAAI,GAAI,CAAC,CAAC,CAACyL,SAAS,CAAC,UAACrL,MAAM,EAAA;AAAA,QAAA,OAAK4N,OAAI,CAACjD,qBAAqB,CAAC3K,MAAM,CAAC;MAAA,CAAA,CAAA,GAAI,EAAE;AAEvL,MAAA,OAAOyL,kBAAiB,GAAI,EAAC,GAAIA,kBAAiB,GAAI7L,KAAI,GAAI,CAAA,GAAI,EAAE;IACxE,CAAC;AACDiO,IAAAA,2BAA2B,EAAA,SAA3BA,2BAA2BA,CAACjO,KAAK,EAAE;AAAA,MAAA,IAAAkO,OAAA,GAAA,IAAA;MAC/B,IAAMrC,kBAAiB,GAAI,IAAI,CAACjE,OAAM,IAAK5H,KAAI,GAAI,CAAA,GAAI2L,aAAa,CAAC,IAAI,CAAC1M,cAAc,CAACuC,KAAK,CAAC,CAAC,EAAExB,KAAK,CAAC,EAAE,UAACI,MAAM,EAAA;AAAA,QAAA,OAAK8N,OAAI,CAACnD,qBAAqB,CAAC3K,MAAM,CAAC;MAAA,CAAA,CAAA,GAAI,EAAE;MAE9J,OAAOyL,kBAAiB,GAAI,EAAC,GAAIA,kBAAiB,GAAI,EAAE;IAC5D,CAAC;AACDxF,IAAAA,8BAA8B,EAAA,SAA9BA,8BAA8BA,CAACrG,KAAK,EAAwB;AAAA,MAAA,IAAtBmO,YAAW,GAAAxI,SAAA,CAAAzG,MAAA,GAAA,CAAA,IAAAyG,SAAA,CAAA,CAAA,CAAA,KAAAhJ,SAAA,GAAAgJ,SAAA,CAAA,CAAA,CAAA,GAAI,KAAK;MACtD,IAAIkG,kBAAiB,GAAI,EAAE;MAE3B,IAAI,IAAI,CAACjE,OAAO,EAAE;AACd,QAAA,IAAIuG,YAAY,EAAE;AACdtC,UAAAA,kBAAiB,GAAI,IAAI,CAACoC,2BAA2B,CAACjO,KAAK,CAAC;AAC5D6L,UAAAA,qBAAqBA,kBAAiB,KAAM,EAAC,GAAI,IAAI,CAACkC,2BAA2B,CAAC/N,KAAK,CAAA,GAAI6L,kBAAkB;AACjH,QAAA,CAAA,MAAO;AACHA,UAAAA,kBAAiB,GAAI,IAAI,CAACkC,2BAA2B,CAAC/N,KAAK,CAAC;AAC5D6L,UAAAA,qBAAqBA,kBAAiB,KAAM,EAAC,GAAI,IAAI,CAACoC,2BAA2B,CAACjO,KAAK,CAAA,GAAI6L,kBAAkB;AACjH,QAAA;AACJ,MAAA;AAEA,MAAA,OAAOA,kBAAiB,GAAI,KAAKA,kBAAiB,GAAI7L,KAAK;AAC/D,IAAA;GACH;AACDoO,EAAAA,QAAQ,EAAE;IACNnP,cAAc,EAAA,SAAdA,cAAcA,GAAG;AACb,MAAA,OAAO,IAAI,CAAC3E,gBAAe,GAAI,IAAI,CAAC6S,WAAW,CAAC,IAAI,CAAClT,WAAW,CAAA,GAAI,IAAI,CAACA,eAAe,EAAE;IAC9F,CAAC;IACDoU,UAAU,EAAA,SAAVA,UAAUA,GAAG;MACT,IAAI,IAAI,CAACzG,OAAO,EAAE;AACd,QAAA,IAAI0G,SAAA,CAAO,IAAI,CAACxI,OAAM,CAAA,KAAM,QAAQ,EAAE;UAClC,IAAMyI,KAAI,GAAI,IAAI,CAACpO,cAAc,CAAC,IAAI,CAAC2F,OAAO,CAAC;UAE/C,OAAOyI,SAAS,IAAG,GAAIA,KAAI,GAAI,IAAI,CAACzI,OAAO;AAC/C,QAAA,CAAA,MAAO;UACH,OAAO,IAAI,CAACA,OAAO;AACvB,QAAA;AACJ,MAAA,CAAA,MAAO;AACH,QAAA,OAAO,EAAE;AACb,MAAA;IACJ,CAAC;AACD;IACA0I,iBAAiB,EAAA,SAAjBA,iBAAiBA,GAAG;MAChB,OAAO,IAAI,CAAC5G,OAAO;IACvB,CAAC;IACDwD,WAAW,EAAA,SAAXA,WAAWA,GAAG;AACV;MACA,OAAO,IAAI,CAACpQ,OAAO;IACvB,CAAC;IACDyT,uBAAuB,EAAA,SAAvBA,uBAAuBA,GAAG;AACtB,MAAA,OAAOrG,UAAU,CAAC,IAAI,CAACnJ,cAAc,CAAA,IAAK,IAAI,CAACL,cAAa,GAAI,IAAI,CAAC8P,iBAAiB,CAACC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC1P,cAAc,CAACC,MAAM,CAAA,GAAI,IAAI,CAAC0P,sBAAsB;IACtK,CAAC;IACDF,iBAAiB,EAAA,SAAjBA,iBAAiBA,GAAG;AAChB,MAAA,OAAO,IAAI,CAAC9R,iBAAiB,IAAI,CAACgM,SAAS,CAACC,MAAM,CAACgG,MAAM,CAACjS,aAAY,IAAK,EAAE;IACjF,CAAC;IACDgS,sBAAsB,EAAA,SAAtBA,sBAAsBA,GAAG;AACrB,MAAA,OAAO,IAAI,CAAC7R,kBAAiB,IAAK,IAAI,CAAC6L,SAAS,CAACC,MAAM,CAACgG,MAAM,CAAC9R,sBAAsB,EAAE;IAC3F,CAAC;IACD+R,oBAAoB,EAAA,SAApBA,oBAAoBA,GAAG;AACnB,MAAA,OAAO,IAAI,CAACjS,oBAAoB,IAAI,CAAC+L,SAAS,CAACC,MAAM,CAACgG,MAAM,CAAChS,gBAAe,IAAK,EAAE;IACvF,CAAC;IACDkS,yBAAyB,EAAA,SAAzBA,yBAAyBA,GAAG;AACxB,MAAA,OAAO,IAAI,CAACjS,qBAAoB,IAAK,IAAI,CAAC8L,SAAS,CAACC,MAAM,CAACgG,MAAM,CAAC/R,yBAAyB,EAAE;IACjG,CAAC;IACDkS,mBAAmB,EAAA,SAAnBA,mBAAmBA,GAAG;MAClB,OAAO,IAAI,CAACpH,OAAM,GAAI,IAAI,CAACkH,oBAAoB,CAACH,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC9T,QAAO,GAAI,IAAI,CAACiL,OAAO,CAAC5G,MAAK,GAAI,GAAG,CAAA,GAAI,IAAI,CAAC6P,yBAAyB;IACjJ,CAAC;IACDE,aAAa,EAAA,SAAbA,aAAaA,GAAG;MACZ,OAAO,IAAI,CAACrG,SAAS,CAACC,MAAM,CAACgG,MAAM,CAACK,IAAG,GAAI,IAAI,CAACtG,SAAS,CAACC,MAAM,CAACgG,MAAM,CAACK,IAAI,CAACC,YAAYxS,SAAS;IACtG,CAAC;IACDgQ,eAAe,EAAA,SAAfA,eAAeA,GAAG;AACd,MAAA,OAAO,IAAI,CAACjO,kBAAiB,KAAM,EAAC,MAAAkH,MAAA,CAAO,IAAI,CAAC8G,GAAG,OAAA9G,MAAA,CAAI,IAAI,CAAClH,kBAAkB,IAAK,IAAI;IAC3F,CAAC;IACD0Q,uBAAuB,EAAA,SAAvBA,uBAAuBA,GAAG;AACtB,MAAA,OAAO,IAAI,CAACzQ,0BAAyB,KAAM,eAAQ,IAAI,CAAC+N,GAAG,uBAAA9G,MAAA,CAAoB,IAAI,CAACjH,0BAA0B,IAAK,IAAI;IAC3H,CAAC;IACD0Q,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;AACjB,MAAA,OAAO,IAAI,CAAC7T,SAAQ,IAAK,IAAI,CAACoM,OAAM,IAAK,CAAC,IAAI,CAAC7G,QAAO,IAAK,CAAC,IAAI,CAACjG,OAAO;IAC5E,CAAC;IACDwU,WAAW,EAAA,SAAXA,WAAWA,GAAG;AAAA,MAAA,IAAAC,OAAA,GAAA,IAAA;AACV,MAAA,OAAO,IAAI,CAACtQ,cAAc,CAACwC,MAAM,CAAC,UAACrB,MAAM,EAAA;AAAA,QAAA,OAAK,CAACmP,OAAI,CAACtO,aAAa,CAACb,MAAM,CAAC;AAAA,MAAA,CAAA,CAAC,CAAClB,MAAM;IACrF,CAAC;IACDgB,uBAAuB,EAAA,SAAvBA,uBAAuBA,GAAG;MACtB,OAAO,CAAC,IAAI,CAAC5D,sBAAsB;IACvC,CAAC;IACDkT,OAAO,EAAA,SAAPA,OAAOA,GAAG;AACN,MAAA,OAAO,IAAI,CAAC9C,GAAE,GAAI,QAAQ;IAC9B,CAAC;IACD+C,cAAc,EAAA,SAAdA,cAAcA,GAAG;AACb,MAAA,OAAOC,EAAE,CAAC;QACNC,KAAK,EAAE,IAAI,CAACC;AAChB,OAAC,CAAC;IACN,CAAC;IACDC,YAAY,EAAA,SAAZA,YAAYA,GAAG;AACX,MAAA,OAAOH,EAAE,CAAAI,iBAAA,CAAA,EAAA,EACJ,SAAQ,GAAI,IAAI,CAAC1U,QAAQ,EAAG,SAAQ,GAAI,IAAI,CAACA,QAAO,CACxD,CAAC;IACN,CAAC;IACD2U,kBAAkB,EAAA,SAAlBA,kBAAkBA,GAAG;MACjB,OAAOL,EAAE,CAAAI,iBAAA,CAAA;QACLE,OAAO,EAAE,IAAI,CAACC,QAAQ;QACtBlP,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvBa,KAAK,EAAE,IAAI,CAACnD,OAAO;QACnBkR,KAAK,EAAE,IAAI,CAACC,MAAM;AAClBM,QAAAA,MAAM,EAAE,IAAI,CAACC,QAAO,KAAM,QAAQ;QAClCC,KAAK,EAAE,CAAC,IAAI,CAACxI;OAAO,EACnB,IAAI,CAACyI,IAAI,EAAG,IAAI,CAACA,IAAG,CACxB,CAAC;AACN,IAAA;GACH;AACDC,EAAAA,UAAU,EAAE;AACRC,IAAAA,SAAS,EAATA,SAAS;AACTC,IAAAA,eAAe,EAAfA,eAAe;AACfC,IAAAA,MAAM,EAANA,MAAM;AACNC,IAAAA,IAAI,EAAJA,IAAI;AACJC,IAAAA,eAAe,EAAfA,eAAe;AACfC,IAAAA,WAAW,EAAXA,WAAW;AACXC,IAAAA,SAAQ,EAARA;GACH;AACDC,EAAAA,UAAU,EAAE;AACRC,IAAAA,MAAM,EAAEC;AACZ;AACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ECxnCG,OAAAC,SAAA,EAAA,EAAAC,kBAAA,CA6MK,OA7MLC,UAAA,CA6MK;AA7MAC,IAAAA,GAAG,EAAC,WAAU;AAAG,IAAA,OAAA,EAAOC,IAAA,CAAAC,EAAE,CAAA,MAAA,CAAA;AAAWjU,IAAAA,KAAK,EAAEgU,IAAA,CAAAE,EAAE,CAAA,MAAA,CAAA;IAAWC,OAAK;aAAEC,QAAA,CAAApM,gBAAA,IAAAoM,QAAA,CAAApM,gBAAA,CAAAqM,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAgB;AAAA,IAAA,CAAA,CAAA;IAAG,QAAM,EAAE8L,QAAA,CAAAhC;KAAwB4B,IAAA,CAAAM,IAAI,CAAA,MAAA,CAAA,CAAA,EAAA,EAE7GN,IAAA,CAAAxW,QAAQ,iBADnB+W,WAAA,CAiCCC,oBAAA,EAAA;;AA/BGT,IAAAA,GAAG,EAAC,YAAW;IACd3E,EAAE,EAAE4E,IAAA,CAAA5V,OAAO;AACZvB,IAAAA,IAAI,EAAC,MAAK;IACTJ,IAAI,EAAEuX,IAAA,CAAAS,SAAS;AACf,IAAA,OAAA,EAAKC,cAAA,CAAA,CAAGV,IAAA,CAAAC,EAAE,CAAA,aAAA,CAAA,EAAiBD,IAAA,CAAA1V,UAAU,CAAA,CAAA;AACrC0B,IAAAA,KAAK,iBAAEgU,IAAA,CAAA3V,UAAU,CAAA;IACjBsW,YAAY,EAAEP,QAAA,CAAApD,UAAU;IACxBtT,WAAW,EAAEsW,IAAA,CAAAtW,WAAW;IACxBkC,QAAQ,EAAA,CAAGoU,IAAA,CAAAtQ,QAAO,GAAIsQ,IAAA,CAAApU,QAAO,GAAA,EAAA;IAC7B0S,KAAK,EAAE0B,IAAA,CAAAzB,MAAM;IACb7O,QAAQ,EAAEsQ,IAAA,CAAAtQ,QAAQ;IAClBsP,IAAI,EAAEgB,IAAA,CAAAhB,IAAI;IACVL,OAAO,EAAEqB,IAAA,CAAArB,OAAO;IAChBiC,OAAO,EAAEZ,IAAA,CAAAY,OAAO;AACjBC,IAAAA,YAAY,EAAC,KAAI;AACjBC,IAAAA,IAAI,EAAC,UAAS;IACb,YAAU,EAAEd,IAAA,CAAAlU,SAAS;IACrB,iBAAe,EAAEkU,IAAA,CAAAjU,cAAc;AAChC,IAAA,eAAa,EAAC,SAAQ;AACtB,IAAA,mBAAiB,EAAC,MAAK;IACtB,eAAa,EAAEgV,KAAA,CAAAxT,cAAc;IAC7B,eAAa,EAAEwT,KAAA,CAAAxT,cAAa,GAAI6S,QAAA,CAAAjC,OAAM,GAAI7S,SAAS;IACnD,uBAAqB,EAAEyV,KAAA,CAAA3T,OAAM,GAAIgT,QAAA,CAAA9E,eAAc,GAAIhQ,SAAS;IAC5DyF,OAAK,EAAEqP,QAAA,CAAArP,OAAO;IACdM,MAAI,EAAE+O,QAAA,CAAA/O,MAAM;IACZ2P,SAAO,EAAEZ,QAAA,CAAA1O,SAAS;IAClBiB,OAAK,EAAEyN,QAAA,CAAAzN,OAAO;IACdK,QAAM,EAAEoN,QAAA,CAAApN,QAAQ;IAChBiO,QAAQ,EAAEjB,IAAA,CAAAiB,QAAQ;IAClB,qBAAmB,EAAEjB,IAAA,CAAA3W,QAAQ;AAC7B6X,IAAAA,EAAE,EAAElB,IAAA,CAAA1Q,GAAG,CAAA,aAAA;6WAEA8Q,QAAA,CAAApC,kBAAkB,GAA9BmD,UAAA,CAEMnB,IAAA,CAAAoB,MAAA,EAAA,WAAA,EAAA;;IAF4C,OAAA,iBAAOpB,IAAA,CAAAC,EAAE,CAAA,WAAA,CAAA,CAAA;IAAgBoB,aAAa,EAAEjB,QAAA,CAAA5K;KAA1F,YAAA;AAAA,IAAA,OAEM,CADF8L,WAAA,CAAuFC,sBAAvFzB,UAAA,CAAuF;AAA3E,MAAA,OAAA,GAAQE,IAAA,CAAAC,EAAE,CAAA,WAAA,CAAA,CAAA;MAAiBE,OAAK,EAAEC,QAAA,CAAA5K;OAAsBwK,IAAA,CAAA1Q,GAAG,CAAA,WAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,CAAA;qCAGjE0Q,IAAA,CAAAxW,QAAQ,IADlBoW,SAAA,EAAA,EAAAC,kBAAA,CAyEI,MAzEJC,UAAA,CAyEI;;AAvEAC,IAAAA,GAAG,EAAC,gBAAe;AAClB,IAAA,OAAA,EAAOC,IAAA,CAAAC,EAAE,CAAA,eAAA,CAAA;AACVrU,IAAAA,QAAQ,EAAC,IAAG;AACZkV,IAAAA,IAAI,EAAC,SAAQ;AACb,IAAA,kBAAgB,EAAC,YAAW;IAC3B,uBAAqB,EAAEC,KAAA,CAAA3T,OAAM,GAAIgT,QAAA,CAAArC,uBAAsB,GAAIzS,SAAS;IACpEyF,OAAK;aAAEqP,QAAA,CAAA1M,wBAAA,IAAA0M,QAAA,CAAA1M,wBAAA,CAAA2M,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAwB;AAAA,IAAA,CAAA,CAAA;IAC/BjD,MAAI;aAAE+O,QAAA,CAAAzM,uBAAA,IAAAyM,QAAA,CAAAzM,uBAAA,CAAA0M,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAuB;AAAA,IAAA,CAAA,CAAA;IAC7B0M,SAAO;aAAEZ,QAAA,CAAAxM,0BAAA,IAAAwM,QAAA,CAAAxM,0BAAA,CAAAyM,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAA0B;AAAA,IAAA,CAAA,CAAA;IACnC,qBAAmB,EAAE0L,IAAA,CAAA3W,QAAQ;IAC7B,QAAM,EAAE+W,QAAA,CAAA1B;KACDsB,IAAA,CAAA1Q,GAAG,CAAA,eAAA,CAAA,CAAA,EAAA,EAEXsQ,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,CA6BI2B,QAAA,EAAA,IAAA,EAAAC,UAAA,CA5BsBzB,IAAA,CAAAvL,OAAO,EAAA,UAArB1F,MAAM,EAAEkM,CAAC,EAAA;IADrB,OAAA2E,SAAA,EAAA,EAAAC,kBAAA,CA6BI,MA7BJC,UAAA,CA6BI;AA3BCzQ,MAAAA,GAAG,EAAA,EAAA,CAAAkF,MAAA,CAAK0G,CAAC,EAAA,GAAA,CAAA,CAAA1G,MAAA,CAAI6L,QAAA,CAAAtR,cAAc,CAACC,MAAM,CAAA,CAAA;AAClCqM,MAAAA,EAAE,EAAE4E,IAAA,CAAA3E,GAAE,GAAA,mBAAA,GAA0BJ,CAAC;AACjC,MAAA,OAAA,EAAO+E,IAAA,CAAAC,EAAE,CAAA,UAAA,EAAA;AAAehF,QAAAA,CAAA,EAAAA;AAAA,OAAA,CAAA;AACzB6F,MAAAA,IAAI,EAAC,QAAO;AACX,MAAA,YAAU,EAAEV,QAAA,CAAAtR,cAAc,CAACC,MAAM,CAAA;AACjC,MAAA,eAAa,EAAE,IAAI;AACnB,MAAA,cAAY,EAAEiR,IAAA,CAAAvL,OAAO,CAAC5G,MAAM;MAC5B,eAAa,EAAEoN,CAAA,GAAA;;;OACR+E,IAAA,CAAA1Q,GAAG,CAAA,UAAA,CAAA,CAAA,EAAA,CAEX6R,UAAA,CAgBMnB,qBAhBNF,UAAA,CAgBM;AAhBa,MAAA,OAAA,EAAOE,IAAA,CAAAC,EAAE,CAAA,QAAA,CAAA;AAAa9O,MAAAA,KAAK,EAAEpC,MAAM;AAAGJ,MAAAA,KAAK,EAAEsM,CAAC;AAAGyG,MAAAA,cAAc,WAAdA,cAAcA,CAAG1Q,KAAK,EAAA;AAAA,QAAA,OAAKoP,qBAAY,CAACpP,KAAK,EAAEiK,CAAC,CAAA;AAAA,MAAA;AAAW,KAAA,EAAA;AAAA0G,MAAAA,OAAA,EAAA;KAAA,EAAA3B,IAAA,CAAA1Q,GAAG,aAAlI,YAAA;AAAA,MAAA,OAgBM,CAdFgS,WAAA,CAaMM,eAAA,EAAA;QAZD,OAAA,iBAAO5B,IAAA,CAAAC,EAAE,CAAA,QAAA,CAAA,CAAA;AACT/C,QAAAA,KAAK,EAAEkD,QAAA,CAAAtR,cAAc,CAACC,MAAM,CAAA;AAC5B8S,QAAAA,UAAU,EAAE7B,IAAA,CAAAhV,QAAO,IAAKgV,IAAA,CAAAjV,eAAe;AACxC+W,QAAAA,SAAQ,EAAR,EAAQ;QACPb,QAAQ,EAAEjB,IAAA,CAAAiB,QAAQ;AAClBc,QAAAA,QAAM,EAAA,SAANA,QAAMA,CAAAC,MAAA,EAAA;AAAA,UAAA,OAAE5B,QAAA,CAAAjJ,YAAY,CAAC6K,MAAM,EAAE/G,CAAC,CAAA;QAAA,CAAA;AAC9B,QAAA,gBAAc,EAAE8F,KAAA,CAAAzT,0BAAyB,KAAM2N,CAAC;AAChDiG,QAAAA,EAAE,EAAElB,IAAA,CAAA1Q,GAAG,CAAA,QAAA;;QAEG2S,UAAU,UACjB,YAAA;AAAA,UAAA,OAAuJ,CAAvJd,UAAA,CAAuJnB,IAAA,CAAAoB,MAAA,EAA1IpB,IAAA,CAAAoB,MAAM,CAACc,QAAO,GAAA,UAAA,GAAA,iBAAA,EAAA;YAAqC,OAAA,iBAAOlC,IAAA,CAAAC,EAAE,CAAA,UAAA,CAAA,CAAA;AAAetR,YAAAA,KAAK,EAAEsM,CAAC;AAAGyG,YAAAA,cAAc,WAAdA,cAAcA,CAAG1Q,KAAK,EAAA;AAAA,cAAA,OAAKoP,qBAAY,CAACpP,KAAK,EAAEiK,CAAC,CAAA;AAAA,YAAA;;;;;;aAKnKkH,kBAAA,CA2BI,MA3BJrC,UAAA,CA2BI;AA3BC,IAAA,OAAA,EAAOE,IAAA,CAAAC,EAAE,CAAA,WAAA,CAAA;AAAea,IAAAA,IAAI,EAAC;KAAiBd,IAAA,CAAA1Q,GAAG,CAAA,WAAA,CAAA,CAAA,EAAA,CAClD6S,kBAAA,CAyBC,SAzBDrC,UAAA,CAyBC;AAxBGC,IAAAA,GAAG,EAAC,YAAW;IACd3E,EAAE,EAAE4E,IAAA,CAAA5V,OAAO;AACZvB,IAAAA,IAAI,EAAC,MAAK;IACTmD,KAAK,EAAEgU,IAAA,CAAA3V,UAAU;IACjB,OAAA,EAAO2V,IAAA,CAAA1V,UAAU;IACjBZ,WAAW,EAAEsW,IAAA,CAAAtW,WAAW;IACxBkC,QAAQ,EAAA,CAAGoU,IAAA,CAAAtQ,QAAO,GAAIsQ,IAAA,CAAApU,QAAO,GAAA,EAAA;IAC7B8D,QAAQ,EAAEsQ,IAAA,CAAAtQ,QAAQ;AACnBmR,IAAAA,YAAY,EAAC,KAAI;AACjBC,IAAAA,IAAI,EAAC,UAAS;IACb,YAAU,EAAEd,IAAA,CAAAlU,SAAS;IACrB,iBAAe,EAAEkU,IAAA,CAAAjU,cAAc;AAChC,IAAA,eAAa,EAAC,SAAQ;AACtB,IAAA,mBAAiB,EAAC,MAAK;IACtB,eAAa,EAAEgV,KAAA,CAAAxT,cAAc;AAC7B,IAAA,eAAa,EAAEyS,IAAA,CAAA3E,GAAE,GAAA,OAAA;IACjB,uBAAqB,EAAE0F,KAAA,CAAA3T,OAAM,GAAIgT,QAAA,CAAA9E,eAAc,GAAIhQ,SAAS;AAC5D,IAAA,cAAY,EAAE0U,IAAA,CAAArB,OAAM,IAAKrT,SAAS;IAClCyF,OAAK;aAAEqP,QAAA,CAAArP,OAAA,IAAAqP,QAAA,CAAArP,OAAA,CAAAsP,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAO;AAAA,IAAA,CAAA,CAAA;IACdjD,MAAI;aAAE+O,QAAA,CAAA/O,MAAA,IAAA+O,QAAA,CAAA/O,MAAA,CAAAgP,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAM;AAAA,IAAA,CAAA,CAAA;IACZ0M,SAAO;aAAEZ,QAAA,CAAA1O,SAAA,IAAA0O,QAAA,CAAA1O,SAAA,CAAA2O,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAS;AAAA,IAAA,CAAA,CAAA;IAClB3B,OAAK;aAAEyN,QAAA,CAAAzN,OAAA,IAAAyN,QAAA,CAAAzN,OAAA,CAAA0N,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAO;AAAA,IAAA,CAAA,CAAA;IACdtB,QAAM;aAAEoN,QAAA,CAAApN,QAAA,IAAAoN,QAAA,CAAApN,QAAA,CAAAqN,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAQ;IAAA,CAAA;KACT0L,IAAA,CAAA1Q,GAAG,CAAA,OAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA8S,UAAA,CAAA,0DAIXrB,KAAA,CAAAvT,SAAQ,IAAKwS,IAAA,CAAAvW,OAAO,GAAhC0X,UAAA,CAGMnB,IAAA,CAAAoB,MAAA,EAHyDpB,IAAA,CAAAoB,MAAM,CAACvW,MAAK,GAAA,QAAA,GAAA,aAAA,EAAA;;AAAxC,IAAA,OAAA,iBAAOmV,IAAA,CAAAC,EAAE,CAAA,QAAA,CAAA;KAA5C,YAAA;AAAA,IAAA,OAGM,CAFOD,IAAA,CAAAnV,MAAK,IAAKmV,IAAA,CAAAlV,WAAW,IAA9B8U,SAAA,EAAA,EAAAC,kBAAA,CAAmK,KAAnKC,UAAA,CAAmK;;AAAlI,MAAA,OAAA,EAAK,CAAA,SAAA,EAAcE,IAAA,CAAAC,EAAE,CAAA,QAAA,CAAA,EAAYD,IAAA,CAAAnV,MAAM,EAAEmV,IAAA,CAAAlV,WAAW,CAAA;AAAG,MAAA,aAAW,EAAC,MAAK;MAAG,qBAAmB,EAAEkV,IAAA,CAAA3W;OAAkB2W,IAAA,CAAA1Q,GAAG,CAAA,QAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA+S,UAAA,CAAA,IAC9HrC,IAAA,CAAAvW,OAAO,IAA/BmW,SAAA,EAAA,EAAAW,WAAA,CAAuI+B,wBAAvIxC,UAAA,CAAuI;;AAArG,MAAA,OAAA,EAAOE,IAAA,CAAAC,EAAE,CAAA,QAAA,CAAA;AAAYsC,MAAAA,IAAG,EAAH,EAAG;AAAE,MAAA,aAAW,EAAC,MAAK;MAAG,qBAAmB,EAAEvC,IAAA,CAAA3W;OAAkB2W,IAAA,CAAA1Q,GAAG,CAAA,QAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,CAAA;qCAE9H6R,UAAA,CAiBMnB,IAAA,CAAAoB,MAAA,EAjBOpB,IAAA,CAAAoB,MAAM,CAAC/X,QAAO,GAAA,UAAA,GAAA,gBAAA,EAAA;AAAoCmZ,IAAAA,cAAc,EAAA,SAAdA,cAAcA,CAAGxR,KAAK,EAAA;AAAA,MAAA,OAAKoP,QAAA,CAAAjM,eAAe,CAACnD,KAAK,CAAA;AAAA,IAAA;KAA/G,YAAA;AAAA,IAAA,OAiBM,CAfQgP,IAAA,CAAA3W,QAAQ,IADlBuW,SAAA,EAAA,EAAAC,kBAAA,CAeQ,UAfRC,UAAA,CAeQ;;AAbJC,MAAAA,GAAG,EAAC,gBAAe;AACnBlX,MAAAA,IAAI,EAAC,QAAO;MACX,OAAA,EAAK,CAAGmX,IAAA,CAAAC,EAAE,CAAA,UAAA,CAAA,EAAcD,IAAA,CAAApV,aAAa,CAAA;MACrC8E,QAAQ,EAAEsQ,IAAA,CAAAtQ,QAAQ;AACnB,MAAA,eAAa,EAAC,SAAQ;MACrB,eAAa,EAAEqR,KAAA,CAAAxT,cAAc;MAC7B,eAAa,EAAE6S,QAAA,CAAAjC,OAAO;MACtBgC,OAAK;eAAEC,QAAA,CAAAjM,eAAA,IAAAiM,QAAA,CAAAjM,eAAA,CAAAkM,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAe;MAAA,CAAA;OACf0L,IAAA,CAAA1Q,GAAG,CAAA,UAAA,CAAA,CAAA,EAAA,CAEX6R,UAAA,CAEMnB,IAAA,CAAAoB,MAAA,EAAA,cAAA,EAAA;AAFqB,MAAA,OAAA,iBAAOpB,IAAA,CAAArV,YAAY;OAA9C,YAAA;AAAA,MAAA,OAEM,eADF4V,WAAA,CAA+GkC,uBAAA,CAA/FzC,iBAAW,GAAA,MAAA,GAAA,iBAAA,CAAA,EAA3BF,UAAA,CAA+G;AAAnD,QAAA,OAAA,EAAOE,IAAA,CAAArV;AAAY,OAAA,EAAUqV,IAAA,CAAA1Q,GAAG,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,OAAA,CAAA,CAAA;;MAI5F0Q,IAAA,CAAAnU,SAAS,IAArB+T,SAAA,EAAA,EAAAC,kBAAA,CAEM,QAFNC,UAAA,CAEM;;AAFiBgB,IAAAA,IAAI,EAAC,QAAO;AAAE,IAAA,WAAS,EAAC,QAAO;IAAE,OAAA,EAAM;AAA8B,GAAA,EAAAd,IAAA,CAAA1Q,GAAG,CAAA,oBAAA,CAAA,EAAA;AAAyB,IAAA,0BAAwB,EAAE;sBAC3I8Q,QAAA,CAAAhD,uBAAsB,CAAA,EAAA,EAAA,CAAA,kCAE7BkE,WAAA,CAmEQoB,iBAAA,EAAA;IAnEC3Y,QAAQ,EAAEiW,IAAA,CAAAjW;AAAQ,GAAA,EAAA;uBACvB,YAAA;AAAA,MAAA,OAiEY,CAjEZuX,WAAA,CAiEYqB,YAjEZ7C,UAAA,CAiEY;AAjEArX,QAAAA,IAAI,EAAC,oBAAmB;QAAGma,OAAK,EAAExC,QAAA,CAAAhJ,cAAc;QAAGyL,YAAW,EAAEzC,QAAA,CAAArI,mBAAmB;QAAG+K,OAAK,EAAE1C,QAAA,CAAAjI,cAAc;QAAG4K,YAAW,EAAE3C,QAAA,CAAA9H;SAA6B0H,IAAA,CAAA1Q,GAAG,CAAA,YAAA,CAAA,CAAA,EAAA;2BACnK,YAAA;AAAA,UAAA,OA+DK,CA9DKyR,KAAA,CAAAxT,cAAc,IADxBqS,SAAA,EAAA,EAAAC,kBAAA,CA+DK,OA/DLC,UAAA,CA+DK;;YA7DAC,GAAG,EAAEK,QAAA,CAAA9D,UAAU;YACflB,EAAE,EAAEgF,QAAA,CAAAjC,OAAO;AACX,YAAA,OAAA,EAAK,CAAG6B,IAAA,CAAAC,EAAE,CAAA,SAAA,CAAA,EAAaD,IAAA,CAAAxV,UAAU,EAAEwV,IAAA,CAAAtV,YAAY,CAAA;AAC/CsB,YAAAA,KAAK,EAAAgX,aAAA,CAAAA,aAAA,CAAA,EAAA,EAAOhD,IAAA,CAAAzV,UAAU,CAAA,EAAKyV,IAAA,CAAAvV;YAC3B0V,OAAK;qBAAEC,QAAA,CAAA3K,cAAA,IAAA2K,QAAA,CAAA3K,cAAA,CAAA4K,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAc;AAAA,YAAA,CAAA,CAAA;YACrB0M,SAAO;qBAAEZ,QAAA,CAAAxK,gBAAA,IAAAwK,QAAA,CAAAxK,gBAAA,CAAAyK,KAAA,CAAAD,QAAA,EAAA9L,SAAA,CAAgB;AAAA,YAAA,CAAA,CAAA;YACzB,QAAM,EAAE8L,QAAA,CAAA5B;aACDwB,IAAA,CAAA1Q,GAAG,CAAA,SAAA,CAAA,CAAA,EAAA,CAEX6R,UAAA,CAAyEnB,IAAA,CAAAoB,MAAA,EAAA,QAAA,EAAA;YAApDjQ,KAAK,EAAE6O,IAAA,CAAAvL,OAAO;YAAG7L,WAAW,EAAEwX,QAAA,CAAAxS;cACnDuU,kBAAA,CA8CK,OA9CLrC,UAAA,CA8CK;AA9CC,YAAA,OAAA,EAAOE,IAAA,CAAAC,EAAE,CAAA,eAAA,CAAA;AAAoBjU,YAAAA,KAAK,EAAA;cAAA,YAAA,EAAkBoU,QAAA,CAAAvR,uBAAsB,GAAImR,IAAA,CAAA7W,YAAW,GAAA;AAAA;aAAkB6W,IAAA,CAAA1Q,GAAG,CAAA,eAAA,CAAA,CAAA,EAAA,CAChHgS,WAAA,CA4CiB2B,4BA5CjBnD,UAAA,CA4CiB;YA5CCC,GAAG,EAAEK,QAAA,CAAA3D;aAA4BuD,IAAA,CAAA/U,sBAAsB,EAAA;AAAGe,YAAAA,KAAK;sBAAYgU,IAAA,CAAA7W;aAAW;YAAM+Z,KAAK,EAAE9C,QAAA,CAAAxS,cAAc;YAAGhC,QAAQ,EAAE,EAAE;YAAG8D,QAAQ,EAAE0Q,QAAA,CAAAvR,uBAAuB;AAAGqS,YAAAA,EAAE,EAAElB,IAAA,CAAA1Q,GAAG,CAAA,iBAAA;;AAC3K6T,YAAAA,OAAO,EAAAC,OAAA,CACpB,UAAAC,IAAA,EAAA;AAAA,cAAA,IADwBC,UAAU,GAAAD,IAAA,CAAVC,UAAU;gBAAE9G,UAAU,GAAA6G,IAAA,CAAV7G,UAAU;gBAAE0G,KAAK,GAAAG,IAAA,CAALH,KAAK;gBAAEK,cAAc,GAAAF,IAAA,CAAdE,cAAc;gBAAEC,YAAY,GAAAH,IAAA,CAAZG,YAAY;gBAAEC,QAAO,GAAAJ,IAAA,CAAPI,QAAO;AAAA,cAAA,OAAA,CAC5FtB,kBAAA,CAqCI,MArCJrC,UAAA,CAqCI;AArCCC,gBAAAA,GAAG,WAAHA,GAAGA,CAAG1I,EAAE,EAAA;AAAA,kBAAA,OAAK+I,gBAAO,CAAC/I,EAAE,EAAEmF,UAAU,CAAA;AAAA,gBAAA,CAAA;AAAIpB,gBAAAA,EAAE,EAAE4E,IAAA,CAAA3E,GAAE,GAAA,OAAA;gBAAc,OAAA,EAAK,CAAG2E,IAAA,CAAAC,EAAE,CAAA,MAAA,CAAA,EAAUqD,UAAU,CAAA;AAAItX,gBAAAA,KAAK,EAAEwX,YAAY;AAAE1C,gBAAAA,IAAI,EAAC;gBAAW,YAAU,EAAEV,QAAA,CAAAxC;iBAAuBoC,IAAA,CAAA1Q,GAAG,CAAA,MAAA,CAAA,CAAA,EAAA,EACzKsQ,SAAA,CAAA,IAAA,CAAA,EAAAC,kBAAA,CAgCU2B,QAAA,EAAA,IAAA,EAAAC,UAAA,CAhCsByB,KAAK,EAAA,UAAnBnU,MAAM,EAAEkM,CAAC,EAAA;;AAAkB5L,kBAAAA,GAAA,EAAA+Q,QAAA,CAAAlR,kBAAkB,CAACH,MAAM,EAAEqR,uBAAc,CAACnF,CAAC,EAAEsI,cAAc,CAAA;oBAE1FnD,QAAA,CAAAxQ,aAAa,CAACb,MAAM,CAAA,IAD9B6Q,SAAA,EAAA,EAAAC,kBAAA,CASI,MATJC,UAAA,CASI;;AAPC1E,kBAAAA,EAAE,EAAE4E,IAAA,CAAA3E,YAAY+E,uBAAc,CAACnF,CAAC,EAAEsI,cAAc,CAAA;AAChDvX,kBAAAA,KAAK,EAAA;AAAA0X,oBAAAA,MAAA,EAAYD,QAAO,GAAIA,QAAO,UAAWnY;mBAAQ;AACtD,kBAAA,OAAA,EAAO0U,IAAA,CAAAC,EAAE,CAAA,aAAA,CAAA;AACVa,kBAAAA,IAAI,EAAC;;;mBACGd,IAAA,CAAA1Q,GAAG,CAAA,aAAA,CAAA,CAAA,EAAA,CAEX6R,UAAA,CAAoJnB,IAAA,CAAAoB,MAAA,EAAA,aAAA,EAAA;kBAA1HrS,MAAM,EAAEA,MAAM,CAACc,WAAW;AAAGlB,kBAAAA,KAAK,EAAEyR,QAAA,CAAA1R,cAAc,CAACuM,CAAC,EAAEsI,cAAc;mBAA9F,YAAA;AAAA,kBAAA,OAAoJ,iCAAhDnD,QAAA,CAAArQ,mBAAmB,CAAChB,MAAM,CAACc,WAAW,CAAA,CAAA,EAAA,CAAA,CAAA;wCAE9I8T,cAAA,EAAA/D,SAAA,EAAA,EAAAC,kBAAA,CAoBI,MApBJC,UAAA,CAoBI;;AAlBC1E,kBAAAA,EAAE,EAAE4E,IAAA,CAAA3E,YAAY+E,uBAAc,CAACnF,CAAC,EAAEsI,cAAc,CAAA;AAEhDvX,kBAAAA,KAAK,EAAA;AAAA0X,oBAAAA,MAAA,EAAYD,QAAO,GAAIA,QAAO,UAAWnY;mBAAQ;AACtD,kBAAA,OAAA,EAAO0U,IAAA,CAAAC,EAAE,CAAA,QAAA,EAAA;AAAalR,oBAAAA,MAAM,EAANA,MAAM;AAAEkM,oBAAAA,CAAC,EAADA,CAAC;AAAEsI,oBAAAA,cAAa,EAAbA;AAAa,mBAAA,CAAA;AAC/CzC,kBAAAA,IAAI,EAAC,QAAO;AACX,kBAAA,YAAU,EAAEV,QAAA,CAAAtR,cAAc,CAACC,MAAM,CAAA;AACjC,kBAAA,eAAa,EAAEqR,QAAA,CAAA3Q,UAAU,CAACV,MAAM,CAAA;AAChC,kBAAA,eAAa,EAAEqR,QAAA,CAAAzQ,gBAAgB,CAACZ,MAAM,CAAA;kBACtC,cAAY,EAAEqR,QAAA,CAAAnC,WAAW;AACzB,kBAAA,eAAa,EAAEmC,QAAA,CAAAnQ,eAAe,CAACmQ,uBAAc,CAACnF,CAAC,EAAEsI,cAAc,CAAA,CAAA;AAC/DpD,kBAAAA,OAAK,EAAA,SAALA,OAAKA,CAAA6B,MAAA,EAAA;AAAA,oBAAA,OAAE5B,QAAA,CAAA7M,cAAc,CAACyO,MAAM,EAAEjT,MAAM,CAAA;kBAAA,CAAA;AACpC6U,kBAAAA,WAAS,EAAA,SAATA,WAASA,CAAA5B,MAAA,EAAA;AAAA,oBAAA,OAAE5B,0BAAiB,CAAC4B,MAAM,EAAE5B,QAAA,CAAA1R,cAAc,CAACuM,CAAC,EAAEsI,cAAc,CAAA,CAAA;kBAAA,CAAA;AACrE,kBAAA,iBAAe,EAAEnD,QAAA,CAAA3Q,UAAU,CAACV,MAAM,CAAA;AAClC,kBAAA,gBAAc,EAAEgS,KAAA,CAAA1T,kBAAiB,KAAM+S,uBAAc,CAACnF,CAAC,EAAEsI,cAAc,CAAA;AACvE,kBAAA,iBAAe,EAAEnD,QAAA,CAAAzQ,gBAAgB,CAACZ,MAAM;AACjC,iBAAA,EAAA;AAAA4S,kBAAAA,OAAA,EAAA;iBAAA,EAAAvB,QAAA,CAAAjR,YAAY,CAACJ,MAAM,EAAEwU,cAAc,EAAEtI,CAAC,EAAA,QAAA,CAAA,CAAA,EAAA,CAE9CkG,UAAA,CAAkHnB,IAAA,CAAAoB,MAAA,EAAA,QAAA,EAAA;AAA7FrS,kBAAAA,MAAM,EAAEA,MAAM;AAAGJ,kBAAAA,KAAK,EAAEyR,QAAA,CAAA1R,cAAc,CAACuM,CAAC,EAAEsI,cAAc;mBAA7E,YAAA;AAAA,kBAAA,OAAkH,CAA/BM,eAAA,CAAAC,eAAA,CAAA1D,QAAA,CAAAtR,cAAc,CAACC,MAAM,CAAA,CAAA,EAAA,CAAA,CAAA;;yBAGtGiR,IAAA,CAAArU,gBAAe,MAAOuX,KAAI,IAAMA,KAAI,IAAKA,KAAK,CAACrV,MAAK,KAAA,CAAA,CAAA,IAA9D+R,SAAA,EAAA,EAAAC,kBAAA,CAEI,MAFJC,UAAA,CAEI;;AAFsE,gBAAA,OAAA,EAAOE,IAAA,CAAAC,EAAE,CAAA,cAAA,CAAA;AAAkBa,gBAAAA,IAAI,EAAC;iBAAiBd,IAAA,CAAA1Q,GAAG,CAAA,cAAA,CAAA,CAAA,EAAA,CAC1H6R,UAAA,CAAsDnB,0BAAtD,YAAA;AAAA,gBAAA,OAAsD,iCAAhCI,QAAA,CAAAhD,uBAAsB,CAAA,EAAA,CAAA,CAAA;;;;cAIxC4C,IAAA,CAAAoB,MAAM,CAACvW,MAAM;kBAAS,QAAM;AACxC+D,YAAAA,EAAA,EAAAwU,OAAA,CAAA,UAAAW,KAAA,EAAA;AAAA,cAAA,IAD4ChI,OAAM,GAAAgI,KAAA,CAANhI,OAAM;cAAA,OAAA,CAClDoF,UAAA,CAA6CnB,IAAA,CAAAoB,MAAA,EAAA,QAAA,EAAA;AAAxBrF,gBAAAA,OAAO,EAAEA;AAAO,eAAA,CAAA;;;8EAIjDoF,UAAA,CAAyEnB,IAAA,CAAAoB,MAAA,EAAA,QAAA,EAAA;YAApDjQ,KAAK,EAAE6O,IAAA,CAAAvL,OAAO;YAAG7L,WAAW,EAAEwX,QAAA,CAAAxS;cACnDuU,kBAAA,CAEM,QAFNrC,UAAA,CAEM;AAFAgB,YAAAA,IAAI,EAAC,QAAO;AAAE,YAAA,WAAS,EAAC,QAAO;YAAE,OAAA,EAAM;AAA8B,WAAA,EAAAd,IAAA,CAAA1Q,GAAG,CAAA,uBAAA,CAAA,EAAA;AAA4B,YAAA,0BAAwB,EAAE;8BAC7H8Q,QAAA,CAAAzC;;;;;;;;;;;;;"}