@aquera/nile-elements 1.2.8-beta-1.1 → 1.2.8-beta-1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +5 -0
  2. package/demo/index.html +33 -93
  3. package/demo/nxtgen.css +0 -6
  4. package/demo/variables.css +0 -4
  5. package/dist/index.js +411 -699
  6. package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
  7. package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
  8. package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
  9. package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
  10. package/dist/nile-calendar/nile-calendar.css.esm.js +46 -234
  11. package/dist/nile-calendar/nile-calendar.esm.js +106 -220
  12. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  13. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  14. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  15. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  16. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +32 -18
  17. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  18. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  19. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  20. package/dist/nile-virtual-select/nile-virtual-select.esm.js +3 -3
  21. package/dist/src/nile-calendar/nile-calendar.css.js +44 -232
  22. package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
  23. package/dist/src/nile-calendar/nile-calendar.d.ts +0 -15
  24. package/dist/src/nile-calendar/nile-calendar.js +101 -340
  25. package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
  26. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +30 -16
  27. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  28. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +1 -0
  29. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +12 -0
  30. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  31. package/dist/src/nile-virtual-select/nile-virtual-select.js +19 -1
  32. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  33. package/dist/src/version.js +2 -2
  34. package/dist/src/version.js.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +1 -1
  37. package/src/nile-calendar/nile-calendar.css.ts +44 -232
  38. package/src/nile-calendar/nile-calendar.ts +115 -369
  39. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +30 -16
  40. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +12 -0
  41. package/src/nile-virtual-select/nile-virtual-select.ts +26 -2
  42. package/vscode-html-custom-data.json +27 -47
@@ -1 +1 @@
1
- {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isServer as s}from\"lit-html/is-server.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t{constructor(t,{target:i,config:h,callback:e,skipInitial:o}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==i&&this.t.add(i??t),this.l=h,this.o=o??this.o,this.callback=e,s||(window.ResizeObserver?(this.u=new ResizeObserver((s=>{this.handleChanges(s),this.h.requestUpdate()})),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(s){this.value=this.callback?.(s,this.u)}hostConnected(){for(const s of this.t)this.observe(s)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(s){this.t.add(s),this.u.observe(s,this.l),this.i=!0,this.h.requestUpdate()}unobserve(s){this.t.delete(s),this.u.unobserve(s)}disconnect(){this.u.disconnect()}}export{t as ResizeController};\n//# sourceMappingURL=resize-controller.js.map\n"," /**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n LitElement,\n html,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-virtual-select.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query, state } from 'lit/decorators.js';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\n\n/**\n * Nile Virtual Select component.\n *\n * @tag nile-virtual-select\n *\n */\n\n/**\n * @summary Virtual select component for handling large datasets with virtual scrolling.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the select's menu opens.\n * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event nile-hide - Emitted when the select's menu closes.\n * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.\n * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n\n /** The name of the select, submitted as a name/value pair with form data. */\n @property() name = '';\n\n /** Array of all option items for virtual scrolling */\n @property({ type: Array }) data: any = [];\n\n /** Original unfiltered option items for search functionality */\n @state() private originalOptionItems: any = [];\n\n /**\n * The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n */\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n /** The default value of the form control. Primarily used for resetting the form control. */\n @defaultValue() defaultValue: string | string[] = '';\n\n /** The select's size. */\n @property() size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Placeholder text to show as a hint when the select is empty. */\n @property() placeholder = 'Select...';\n\n /** Enable automatic resizing of tags area */\n @property({ type: Boolean }) autoResize = false;\n\n /** Current search value */\n @state() searchValue: string = '';\n\n /** Enable search functionality */\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n @property({ attribute: 'max-options-visible', type: Number })\n maxOptionsVisible = 3;\n\n @state() oldMaxOptionsVisible: number = 1;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n\n\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (changedProperties.has('autoResize')) {\n const tagsDiv = this.shadowRoot?.querySelector('.select__tags') as HTMLElement;\n if (this.autoResize && tagsDiv) {\n this.resizeController.observe(tagsDiv);\n } else if (tagsDiv) {\n this.resizeController.unobserve(tagsDiv);\n }\n }\n }\n\n private initializeComponent(): void {\n this.open = false;\n this.emit('nile-init');\n }\n\n /**\n * Get display text for an item using renderItemConfig\n */\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) {\n return this.renderItemConfig.getDisplayText(item);\n }\n // Fallback to basic display\n return item?.label || item?.name || item?.toString() || '';\n }\n\n /**\n * Get value for an item using renderItemConfig or fallback to item.value\n */\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) {\n return this.renderItemConfig.getValue(item);\n }\n return item?.value || item;\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n \n private anchorVisibilityObservers: IntersectionObserver[] = [];\n private getScrollableAncestors(element: HTMLElement): HTMLElement[] {\n const scrollables: HTMLElement[] = [];\n let parent = element.parentElement;\n while (parent) {\n const style = getComputedStyle(parent);\n const canScroll =\n /(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);\n if (canScroll) {\n scrollables.push(parent);\n }\n parent = parent.parentElement;\n }\n return scrollables;\n }\n \n private handleDocumentVisibilityChange = (): void => {\n if (!this.enableTabClose) return;\n if (document.visibilityState === 'hidden' && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n name: this.name,\n });\n }\n };\n \n private setupAnchorVisibilityObserver(): void {\n if (!this.enableVisibilityEffect) return;\n \n this.cleanupAnchorVisibilityObserver();\n \n const combobox = this.combobox;\n if (!combobox) return;\n \n const scrollContainers = [...this.getScrollableAncestors(this), null];\n \n scrollContainers.forEach((rootContainer) => {\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n name: this.name,\n root: rootContainer,\n });\n return; \n }\n }\n },\n {\n root: rootContainer,\n threshold: 0.1, \n }\n );\n \n observer.observe(combobox);\n this.anchorVisibilityObservers.push(observer);\n });\n \n if (this.enableTabClose) {\n document.addEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n }\n \n private cleanupAnchorVisibilityObserver(): void {\n this.anchorVisibilityObservers.forEach((o) => o.disconnect());\n this.anchorVisibilityObservers = [];\n \n document.removeEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n \n \n \n\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private resizeController = new ResizeController(this, {\n callback: (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('select__tags')) {\n this.calculateTotalWidthOfTags();\n }\n }\n }\n });\n\n private shouldIgnoreComboboxClick(event: MouseEvent): boolean {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n return this.disabled || isIconButton;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (this.isEnterOrSpaceKey(event)) {\n event.preventDefault();\n this.open = !this.open;\n }\n }\n\n private handleClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n }\n\n private clearSelection(): void {\n const oldValue = this.value;\n this.value = this.multiple ? [] : '';\n this.selectionChanged();\n\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-clear');\n });\n }\n\n private handleClearMouseDown(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n private handleOptionClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n\n if (this.shouldBlockValueChange(option)) {\n return;\n }\n\n const oldValue = this.value;\n this.oldValue = oldValue;\n\n if (option && !option.disabled) {\n this.handleOptionSelection(option);\n }\n }\n\n private shouldBlockValueChange(option: Element | null): boolean {\n if (this.blockValueChange && option) {\n this.emit('nile-block-change', { value: (option as any)?.value, name: this.name });\n this.hide();\n return true;\n }\n return false;\n }\n\n private handleOptionSelection(option: Element): void {\n const optionValue = (option as any).value;\n \n if (this.multiple) {\n this.toggleOptionSelection(optionValue);\n } else {\n this.setSelectedOptions(optionValue);\n }\n\n this.updateComplete.then(() =>\n this.displayInput.focus({ preventScroll: true })\n );\n\n if (this.value !== this.oldValue) {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n });\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private setSelectedOptions(optionValue: string): void {\n this.value = optionValue;\n this.selectionChanged();\n }\n\n private toggleOptionSelection(optionValue: string): void {\n const currentValues = Array.isArray(this.value) ? this.value : [];\n \n if (currentValues.includes(optionValue)) {\n this.value = currentValues.filter(v => v !== optionValue);\n } else {\n this.value = [...currentValues, optionValue];\n }\n \n this.selectionChanged();\n }\n\n private handleTagRemove(event: NileRemoveEvent, option: VirtualOption): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.removeTagFromSelection(option);\n this.emitTagRemovalEvent(option);\n }\n }\n\n private removeTagFromSelection(option: VirtualOption): void {\n let currentValue = this.value;\n if (!Array.isArray(currentValue)) {\n currentValue = currentValue ? [currentValue] : [];\n }\n const newValue = currentValue.filter((v: string) => v !== option.value);\n this.value = newValue;\n this.selectionChanged();\n }\n\n private emitTagRemovalEvent(option: VirtualOption): void {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n });\n }\n\n private selectionChanged(): void {\n const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;\n this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(\n this.value, \n itemsToSearch, \n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length <= 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n \n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n await this.handleOpen();\n this.showListbox = true;\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n this.popup.active = true;\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n \n if (this.enableVisibilityEffect) {\n this.setupAnchorVisibilityObserver();\n }\n\n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.cleanupAnchorVisibilityObserver();\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n exportparts=\"tag__content\"\n >\n ${this.renderCustomSelect(hasCustomSelect)}\n ${this.renderCombobox(hasCustomSelect, hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n `;\n }\n\n private renderCustomSelect(hasCustomSelect: boolean): TemplateResult {\n return hasCustomSelect\n ? html`<slot\n slot=\"anchor\"\n name=\"custom-select\"\n class=\"custom-select\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n ></slot>`\n : html``;\n }\n\n private renderCombobox(hasCustomSelect: boolean, hasClearIcon: boolean): TemplateResult {\n return html`\n <div\n part=\"combobox\"\n class=${classMap({\n select__combobox: true,\n 'select__hide-default': hasCustomSelect,\n })}\n slot=\"anchor\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n >\n ${this.renderPrefix()}\n ${this.renderDisplayInput()}\n ${this.renderTags()}\n ${this.renderValueInput()}\n ${this.renderClearButton(hasClearIcon)}\n ${this.renderSuffix()}\n ${this.renderExpandIcon()}\n </div>\n `;\n }\n\n private renderPrefix(): TemplateResult {\n return html`\n <slot\n part=\"prefix\"\n name=\"prefix\"\n class=${classMap({\n select__prefix: true,\n multiple: this.multiple,\n })}\n ></slot>\n `;\n }\n\n private renderDisplayInput(): TemplateResult {\n return html`\n <input\n part=\"display-input\"\n class=\"select__display-input\"\n type=\"text\"\n placeholder=${this.placeholder}\n .disabled=${this.disabled}\n .value=${this.displayLabel}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n readonly\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n role=\"combobox\"\n tabindex=\"0\"\n />\n `;\n }\n\n private renderTags(): TemplateResult {\n return this.multiple\n ? html`\n <div part=\"tags\" class=\"select__tags\">\n ${this.selectedOptions.map((option, index) => {\n if (\n index < this.maxOptionsVisible ||\n this.maxOptionsVisible <= 0\n ) {\n const classes = {\n select__invisible:\n index + 1 > this.oldMaxOptionsVisible &&\n this.maxOptionsVisible === Infinity,\n };\n return html`\n <nile-tag\n class=${classMap(classes)}\n part=\"tag\"\n exportparts=\"\n base:tag__base,\n content:tag__content,\n remove-button:tag__remove-button,\n remove-button__base:tag__remove-button__base\n \"\n ?pill=${this.pill}\n size=${this.size}\n removable\n @nile-remove=${(event: NileRemoveEvent) =>\n this.handleTagRemove(event, option)}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `;\n } else if (index === this.maxOptionsVisible) {\n return html`\n <span class=\"select__tags-count\"\n >+${this.selectedOptions.length - index} More\n </span>\n `;\n } else {\n return null;\n }\n })}\n </div>\n `\n : html``;\n }\n\n private renderValueInput(): TemplateResult {\n return html`\n <input\n class=\"select__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value)\n ? this.value.join(', ')\n : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n `;\n }\n\n private renderClearButton(hasClearIcon: boolean): TemplateResult {\n return hasClearIcon\n ? html`\n <button\n part=\"clear-button\"\n class=\"select__clear\"\n type=\"button\"\n aria-label=\"clearEntry\"\n @mousedown=${this.handleClearMouseDown}\n @click=${this.handleClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon name=\"var(--nile-icon-close, var(--ng-icon-x-close))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\"></nile-icon>\n </slot>\n </button>\n `\n : html``;\n }\n\n private renderSuffix(): TemplateResult {\n return html`\n <slot\n part=\"suffix\"\n name=\"suffix\"\n class=${classMap({\n select__suffix: true,\n })}\n ></slot>\n `;\n }\n\n private renderExpandIcon(): TemplateResult {\n return html`\n <slot\n name=\"expand-icon\"\n part=\"expand-icon\"\n class=\"select__expand-icon\"\n >\n <nile-icon library=\"system\" name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n &nbsp; Show Selected</nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n >\n Clear All\n </span>\n `\n : ``}\n </div>\n `\n : html``;\n }\n\n private renderHelpText(hasHelpText: boolean, hasErrorMessage: boolean): TemplateResult {\n return html`\n ${hasHelpText\n ? html` <nile-form-help-text>${this.helpText}</nile-form-help-text> `\n : ``}\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}\n `;\n }\n\n getVirtualizedContent(): TemplateResult {\n return VirtualSelectRenderer.getVirtualizedContent(\n this.data,\n this.searchEnabled,\n this.getDisplayText.bind(this),\n this.value,\n this.multiple,\n this.renderItemConfig?.getDisplayText,\n this.renderItemConfig?.getValue,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this)\n );\n }\n\n nileInput(value: any): void {\n this.emit('nile-input', value);\n }\n\n nileChange(value: any): void {\n this.emit('nile-change', value);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => {\n this.formControlController.updateValidity();\n });\n }\n\n private calculateWidthOfSelectTagsDiv(): number | null {\n if (this.shadowRoot) {\n const selectTagsDiv = this.shadowRoot.querySelector('.select__tags') as HTMLElement;\n if (selectTagsDiv) {\n const width = selectTagsDiv.offsetWidth;\n return width - 70;\n }\n }\n return null;\n }\n\n private calculateTotalWidthOfTags(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.maxOptionsVisible = Infinity;\n setTimeout(() => {\n let widths: number[] = [];\n if (this.shadowRoot) {\n const tags = this.shadowRoot.querySelectorAll('nile-tag');\n tags.forEach(tag => {\n if (tag instanceof HTMLElement) {\n widths.push(tag.offsetWidth);\n }\n });\n }\n if (this.value.length !== widths.length) {\n return;\n }\n\n let sum = widths.reduce(\n (accumulator, currentValue) => accumulator + currentValue,\n 0\n );\n const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();\n if (!widthOfSelectTagsDiv) {\n return;\n }\n\n let summ = 0;\n let lastindex = 0;\n\n for (let i = 0; i < widths.length; i++) {\n summ += widths[i];\n\n if (summ > widthOfSelectTagsDiv) {\n lastindex = i;\n break;\n }\n }\n this.maxOptionsVisible = lastindex;\n }, 1);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\n }\n}\n\nsetDefaultAnimation('select.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('select.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileVirtualSelect;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-virtual-select': NileVirtualSelect;\n }\n}\n"],"names":["t","x","o","i","target","h","config","e","callback","skipInitial","this","Set","add","l","window","ResizeObserver","u","s","handleChanges","requestUpdate","addController","console","warn","_createClass","key","value","hostConnected","_iterator","_createForOfIteratorHelper","_step","n","done","observe","err","f","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","hostUpdated","stop","unobserve","_export","NileVirtualSelect","k","constructor","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","size","placeholder","autoResize","searchValue","searchEnabled","enableVisibilityEffect","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","maxOptionsVisible","oldMaxOptionsVisible","enableTabClose","showListbox","wasShowSelectedCheckedOnClose","anchorVisibilityObservers","handleDocumentVisibilityChange","document","visibilityState","hide","emit","visible","reason","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator2","entry","_step2","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","_u","get","_this$valueInput","valueInput","validity","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","cleanupPortalAppend","updated","changedProperties","has","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","getDisplayText","item","_this$renderItemConfi","renderItemConfig","toString","getItemValue","getValue","getSearchText","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","addEventListener","removeEventListener","handleFocus","handleBlur","getScrollableAncestors","element","scrollables","parent","parentElement","style","getComputedStyle","test","overflow","overflowY","overflowX","push","setupAnchorVisibilityObserver","cleanupAnchorVisibilityObserver","combobox","concat","_toConsumableArray","forEach","rootContainer","observer","IntersectionObserver","_step3","_iterator3","isIntersecting","root","threshold","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","handleFooterClick","toggleShowSelected","_this$selectedOptions","selectedValues","Array","isArray","filter","itemValue","some","val","String","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","_this7","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","_this$renderItemConfi4","_this$originalOptionI","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","filterVirtualOptions","_this9$shadowRoot","virtualized","remove","handleScroll","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","_this$renderItemConfi5","_this11","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_g","_callee3$","_context4","stopAnimations","active","getAnimation","dir","keyframes","options","animateTo","_callee4","_g2","_callee4$","_context5","_callee5","_callee5$","_context6","waitForEvent","_callee6","_callee6$","_context7","abrupt","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","render","hasLabelSlot","hasLabelSuffixSlot","hasCustomSelect","hasLabel","hasClearIcon","isPlaceholderVisible","hasHelpText","hasErrorMessage","html","_templateObject","_taggedTemplateLiteral","classMap","renderLabel","renderFormControlInput","_templateObject2","_templateObject3","_templateObject4","renderPopup","renderHelpText","_templateObject5","select","ifDefined","renderCustomSelect","renderCombobox","renderListbox","_templateObject6","_templateObject7","_templateObject8","_templateObject9","select__combobox","renderPrefix","renderDisplayInput","renderTags","renderValueInput","renderClearButton","renderSuffix","renderExpandIcon","_templateObject10","select__prefix","_templateObject11","_templateObject12","map","index","classes","select__invisible","Infinity","_templateObject13","_templateObject14","_templateObject15","_templateObject16","join","_templateObject17","_templateObject18","_templateObject19","select__suffix","_templateObject20","_templateObject21","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","tag","HTMLElement","widthOfSelectTagsDiv","summ","lastindex","_resetScrollPosition","_callee7","_callee7$","_context8","NileElement","styles","__decorate","prototype","state","property","type","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"nile-virtual-select.cjs.js","sources":["../../../../node_modules/@lit-labs/observers/resize-controller.js","../../../src/nile-virtual-select/nile-virtual-select.ts"],"sourcesContent":["import{isServer as s}from\"lit-html/is-server.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class t{constructor(t,{target:i,config:h,callback:e,skipInitial:o}){this.t=new Set,this.o=!1,this.i=!1,this.h=t,null!==i&&this.t.add(i??t),this.l=h,this.o=o??this.o,this.callback=e,s||(window.ResizeObserver?(this.u=new ResizeObserver((s=>{this.handleChanges(s),this.h.requestUpdate()})),t.addController(this)):console.warn(\"ResizeController error: browser does not support ResizeObserver.\"))}handleChanges(s){this.value=this.callback?.(s,this.u)}hostConnected(){for(const s of this.t)this.observe(s)}hostDisconnected(){this.disconnect()}async hostUpdated(){!this.o&&this.i&&this.handleChanges([]),this.i=!1}observe(s){this.t.add(s),this.u.observe(s,this.l),this.i=!0,this.h.requestUpdate()}unobserve(s){this.t.delete(s),this.u.unobserve(s)}disconnect(){this.u.disconnect()}}export{t as ResizeController};\n//# sourceMappingURL=resize-controller.js.map\n"," /**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n import {\n LitElement,\n html,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-virtual-select.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { query, state } from 'lit/decorators.js';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport {\n getAnimation,\n setDefaultAnimation,\n} from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NileOption from '../nile-option/nile-option';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport type { VirtualOption, NileRemoveEvent, RenderItemConfig } from './types.js';\nimport { VirtualSelectSelectionManager } from './selection-manager.js';\nimport { VirtualSelectSearchManager } from './search-manager.js';\nimport { VirtualSelectRenderer } from './renderer.js';\nimport { PortalManager } from './portal-manager.js';\nimport { ResizeController } from '@lit-labs/observers/resize-controller.js';\n\n/**\n * Nile Virtual Select component.\n *\n * @tag nile-virtual-select\n *\n */\n\n/**\n * @summary Virtual select component for handling large datasets with virtual scrolling.\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the select's menu opens.\n * @event nile-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event nile-hide - Emitted when the select's menu closes.\n * @event nile-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event nile-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event nile-search - Emitted when the user types in the search input. The event payload includes the search query for backend search functionality.\n * @event nile-scroll - Emitted when the user scrolls within the virtualized container. The event payload includes scroll position information.\n * @event nile-scroll-start - Emitted when the user starts scrolling within the virtualized container.\n * @event nile-scroll-end - Emitted when the user stops scrolling and reaches the bottom of the virtualized container (debounced).\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart footer - The footer container with show selected and clear all options.\n */\n\n@customElement('nile-virtual-select')\nexport class NileVirtualSelect extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(\n this,\n 'help-text',\n 'label'\n );\n private readonly portalManager = new PortalManager(this);\n\n @query('.select') popup: NilePopup;\n @query('.select__combobox') combobox: HTMLElement;\n @query('.select__display-input') displayInput: HTMLInputElement;\n @query('.select__value-input') valueInput: HTMLInputElement;\n @query('.virtualized') virtualizedContainer: HTMLElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: VirtualOption[] = [];\n @state() oldValue: string | string[] = '';\n \n private scrollTimeout: number | undefined;\n private scrolling = false;\n\n /** The name of the select, submitted as a name/value pair with form data. */\n @property() name = '';\n\n /** Array of all option items for virtual scrolling */\n @property({ type: Array }) data: any = [];\n\n /** Original unfiltered option items for search functionality */\n @state() private originalOptionItems: any = [];\n\n /**\n * The current value of the select. When `multiple` is enabled, the value will be an array of selected values.\n */\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n /** The default value of the form control. Primarily used for resetting the form control. */\n @defaultValue() defaultValue: string | string[] = '';\n\n /** The select's size. */\n @property() size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Placeholder text to show as a hint when the select is empty. */\n @property() placeholder = 'Select...';\n\n /** Enable automatic resizing of tags area */\n @property({ type: Boolean }) autoResize = false;\n\n /** Current search value */\n @state() searchValue: string = '';\n\n /** Enable search functionality */\n @property({ type: Boolean, reflect: true }) searchEnabled = false;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n\n /** Search input placeholder */\n @property({attribute:'internal-search-placeholder'}) internalSearchPlaceHolder = 'Search...';\n\n /** Disable local search filtering */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** Show loading state */\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** Show loading state using nile-loader */\n @property({ type: Boolean, reflect: true, attribute: true }) loading = false;\n\n /** Allows more than one option to be selected. */\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n /** Help text */\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n /** Error message */\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n /** Sets the input to a warning state */\n @property({ type: Boolean }) warning = false;\n\n /** Sets the input to an error state */\n @property({ type: Boolean }) error = false;\n\n /** Sets the input to a success state */\n @property({ type: Boolean }) success = false;\n\n /** Disables the select control. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Adds a clear button when the select is not empty. */\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n /** The select's open state. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.\n */\n @property({ type: Boolean }) hoist = false;\n\n /** Draws a filled select. */\n @property({ type: Boolean, reflect: true }) filled = false;\n\n /** Draws a pill-style select with rounded edges. */\n @property({ type: Boolean, reflect: true }) pill = false;\n\n /** The select's label. If you need to display HTML, use the `label` slot instead. */\n @property() label = '';\n\n /**\n * The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\n * inside of the viewport.\n */\n @property({ reflect: true }) placement: 'top' | 'bottom' = 'bottom';\n\n /**\n * By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\n * to place the form control outside of a form and associate it with the form that has this `id`. The form must be in\n * the same document or shadow root for this to work.\n */\n @property({ reflect: true }) form = '';\n\n /** The select's required attribute. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /** Show no results message */\n @property({ type: Boolean }) showNoResults: boolean = false;\n\n /** No results message */\n @property({ type: String }) noResultsMessage: string = 'No results found';\n\n /** Show selected options only */\n @property({ type: Boolean }) showSelected = false;\n\n /** Enhanced configuration for rendering items with support for display text, value, and search text */\n @property({ attribute:false}) renderItemConfig?: RenderItemConfig;\n\n /** Block value change events */\n @property({ type: Boolean, reflect: true }) blockValueChange = false;\n\n /** Disable width synchronization */\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** \n * When true, the listbox will be appended to the document body instead of the parent container.\n * This is useful when the parent has overflow: hidden, clip-path, or transform applied.\n */\n @property({ type: Boolean, reflect: true }) portal = false;\n\n /**\n * The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\n * indicate the number of additional items that are selected. Set to 0 to remove the limit.\n */\n @property({ attribute: 'max-options-visible', type: Number })\n maxOptionsVisible = 3;\n\n @state() oldMaxOptionsVisible: number = 1;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n\n\n @state() showListbox: boolean = false;\n @state() private wasShowSelectedCheckedOnClose: boolean = false;\n\n /** Gets the validity state object */\n get validity() {\n return this.valueInput?.validity;\n }\n\n /** Gets the validation message */\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeComponent();\n this.setupEventListeners();\n \n this.updateComplete.then(() => {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n // Clear any pending scroll timeout to prevent memory leaks\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n // Clean up body append elements\n this.portalManager.cleanupPortalAppend();\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if(changedProperties.has('value')) {\n this.selectionChanged();\n }\n if (changedProperties.has('autoResize')) {\n const tagsDiv = this.shadowRoot?.querySelector('.select__tags') as HTMLElement;\n if (this.autoResize && tagsDiv) {\n this.resizeController.observe(tagsDiv);\n } else if (tagsDiv) {\n this.resizeController.unobserve(tagsDiv);\n }\n }\n }\n\n private initializeComponent(): void {\n this.open = false;\n this.emit('nile-init');\n }\n\n /**\n * Get display text for an item using renderItemConfig\n */\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) {\n return this.renderItemConfig.getDisplayText(item);\n }\n // Fallback to basic display\n return item?.label || item?.name || item?.toString() || '';\n }\n\n /**\n * Get value for an item using renderItemConfig or fallback to item.value\n */\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) {\n return this.renderItemConfig.getValue(item);\n }\n return item?.value || item;\n }\n\n /**\n * Get search text for an item using renderItemConfig or fallback to display text\n */\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) {\n return this.renderItemConfig.getSearchText(item);\n }\n return this.getDisplayText(item);\n }\n\n private setupEventListeners(): void {\n this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n this.handleWindowError = this.handleWindowError.bind(this);\n this.handleWindowResize = this.handleWindowResize.bind(this);\n this.handleWindowScroll = this.handleWindowScroll.bind(this);\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n \n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n private handleFocus(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n }\n\n private handleBlur(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n }\n\n \n private anchorVisibilityObservers: IntersectionObserver[] = [];\n private getScrollableAncestors(element: HTMLElement): HTMLElement[] {\n const scrollables: HTMLElement[] = [];\n let parent = element.parentElement;\n while (parent) {\n const style = getComputedStyle(parent);\n const canScroll =\n /(auto|scroll)/.test(style.overflow + style.overflowY + style.overflowX);\n if (canScroll) {\n scrollables.push(parent);\n }\n parent = parent.parentElement;\n }\n return scrollables;\n }\n \n private handleDocumentVisibilityChange = (): void => {\n if (!this.enableTabClose) return;\n if (document.visibilityState === 'hidden' && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n name: this.name,\n });\n }\n };\n \n private setupAnchorVisibilityObserver(): void {\n if (!this.enableVisibilityEffect) return;\n \n this.cleanupAnchorVisibilityObserver();\n \n const combobox = this.combobox;\n if (!combobox) return;\n \n const scrollContainers = [...this.getScrollableAncestors(this), null];\n \n scrollContainers.forEach((rootContainer) => {\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting && this.open) {\n this.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n name: this.name,\n root: rootContainer,\n });\n return; \n }\n }\n },\n {\n root: rootContainer,\n threshold: 0.1, \n }\n );\n \n observer.observe(combobox);\n this.anchorVisibilityObservers.push(observer);\n });\n \n if (this.enableTabClose) {\n document.addEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n }\n \n private cleanupAnchorVisibilityObserver(): void {\n this.anchorVisibilityObservers.forEach((o) => o.disconnect());\n this.anchorVisibilityObservers = [];\n \n document.removeEventListener(\n 'visibilitychange',\n this.handleDocumentVisibilityChange\n );\n }\n \n \n \n\n\n private handleDocumentFocusIn(event: FocusEvent): void {\n if (!this.open) return; \n const path = event.composedPath(); \n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n\n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n }\n\n private handleDocumentKeyDown(event: KeyboardEvent): void {\n if (this.shouldIgnoreKeyPress(event)) {\n return;\n }\n\n if (this.isEscapeKey(event)) {\n this.handleEscapeKey(event);\n }\n\n if (this.isEnterOrSpaceKey(event)) {\n this.handleEnterOrSpaceKey(event);\n }\n }\n\n private shouldIgnoreKeyPress(event: KeyboardEvent): boolean {\n const target = event.target as HTMLElement;\n const isClearButton = target.closest('.select__clear') !== null;\n const isIconButton = target.closest('nile-icon-button') !== null;\n return isClearButton || isIconButton;\n }\n\n private isEscapeKey(event: KeyboardEvent): boolean {\n return event.key === 'Escape' && this.open;\n }\n\n private handleEscapeKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n\n private isEnterOrSpaceKey(event: KeyboardEvent): boolean {\n return event.key === 'Enter' || event.key === ' ';\n }\n\n private handleEnterOrSpaceKey(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n if (!this.open) {\n this.show();\n return;\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private handleDocumentMouseDown = (event: MouseEvent): void => {\n if (!this.open) return; \n \n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortalAppend = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n \n if (!hitSelf && !hitPopup && !hitPortalAppend) {\n this.hide();\n }\n };\n\n /**\n * This is a workaround for an error in the Lit Labs virtualizer.\n * Since there are no specific guidelines available to fix the issue,\n * we are catching only the error message related to the virtualizer.\n */\n private handleWindowError = (event: ErrorEvent): void => {\n const errorMessage = event.error?.message || event.message || '';\n if (errorMessage.includes('Cannot read properties of null (reading \\'insertBefore\\')')) {\n event.preventDefault();\n return;\n }\n };\n\n private handleWindowResize = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleWindowScroll = (): void => {\n this.portalManager.updatePortalAppendPosition();\n };\n\n private handleFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions?.length === 0) {\n return;\n }\n this.showSelected = !this.showSelected;\n\n if (this.showSelected) {\n this.searchValue = \"\";\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n this.data = this.originalOptionItems.filter((item: any) => {\n const itemValue = this.getItemValue(item);\n return selectedValues.some(val => String(val) === String(itemValue));\n });\n } else {\n this.data = [...this.originalOptionItems];\n }\n\n // Reset measured height when show selected toggles (content height may change)\n this.portalManager.resetMeasuredHeight();\n\n this.requestUpdate();\n this.repaintOptionsContainer();\n }\n\n private unSelectAll(): void {\n this.showSelected = false;\n this.value = this.multiple ? [] : '';\n this.data = [...this.originalOptionItems];\n this.selectionChanged();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.multiple ? this.value : '', name: this.name });\n this.resetScrollPosition();\n }\n\n private handleLabelClick(): void {\n this.displayInput.focus();\n this.hide();\n }\n\n private handleComboboxMouseDown(event: MouseEvent): void {\n if (this.shouldIgnoreComboboxClick(event)) {\n return;\n }\n\n event.preventDefault();\n this.displayInput.focus({ preventScroll: true });\n this.open = !this.open;\n }\n\n private resizeController = new ResizeController(this, {\n callback: (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n if (entry.target.classList.contains('select__tags')) {\n this.calculateTotalWidthOfTags();\n }\n }\n }\n });\n\n private shouldIgnoreComboboxClick(event: MouseEvent): boolean {\n const path = event.composedPath();\n const isIconButton = path.some(\n el =>\n el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button'\n );\n return this.disabled || isIconButton;\n }\n\n private handleComboboxKeyDown(event: KeyboardEvent): void {\n if (this.isEnterOrSpaceKey(event)) {\n event.preventDefault();\n this.open = !this.open;\n }\n }\n\n private handleClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.clearSelection();\n }\n\n private clearSelection(): void {\n const oldValue = this.value;\n this.value = this.multiple ? [] : '';\n this.selectionChanged();\n\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-clear');\n });\n }\n\n private handleClearMouseDown(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n private handleOptionClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const option = target.closest('nile-option');\n\n if (this.shouldBlockValueChange(option)) {\n return;\n }\n\n const oldValue = this.value;\n this.oldValue = oldValue;\n\n if (option && !option.disabled) {\n this.handleOptionSelection(option);\n }\n }\n\n private shouldBlockValueChange(option: Element | null): boolean {\n if (this.blockValueChange && option) {\n this.emit('nile-block-change', { value: (option as any)?.value, name: this.name });\n this.hide();\n return true;\n }\n return false;\n }\n\n private handleOptionSelection(option: Element): void {\n const optionValue = (option as any).value;\n \n if (this.multiple) {\n this.toggleOptionSelection(optionValue);\n } else {\n this.setSelectedOptions(optionValue);\n }\n\n this.updateComplete.then(() =>\n this.displayInput.focus({ preventScroll: true })\n );\n\n if (this.value !== this.oldValue) {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n });\n }\n\n if (!this.multiple) {\n this.hide();\n this.displayInput.focus({ preventScroll: true });\n }\n }\n\n private setSelectedOptions(optionValue: string): void {\n this.value = optionValue;\n this.selectionChanged();\n }\n\n private toggleOptionSelection(optionValue: string): void {\n const currentValues = Array.isArray(this.value) ? this.value : [];\n \n if (currentValues.includes(optionValue)) {\n this.value = currentValues.filter(v => v !== optionValue);\n } else {\n this.value = [...currentValues, optionValue];\n }\n \n this.selectionChanged();\n }\n\n private handleTagRemove(event: NileRemoveEvent, option: VirtualOption): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.removeTagFromSelection(option);\n this.emitTagRemovalEvent(option);\n }\n }\n\n private removeTagFromSelection(option: VirtualOption): void {\n let currentValue = this.value;\n if (!Array.isArray(currentValue)) {\n currentValue = currentValue ? [currentValue] : [];\n }\n const newValue = currentValue.filter((v: string) => v !== option.value);\n this.value = newValue;\n this.selectionChanged();\n }\n\n private emitTagRemovalEvent(option: VirtualOption): void {\n this.updateComplete.then(() => {\n this.nileInput({ value: this.value, name: this.name });\n this.nileChange({ value: this.value, name: this.name });\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n });\n }\n\n private selectionChanged(): void {\n const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;\n this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(\n this.value, \n itemsToSearch, \n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue\n );\n\n if (this.multiple) {\n if (this.placeholder && this.value.length === 0) {\n this.displayLabel = '';\n } else {\n this.displayLabel = this.selectedOptions.length + ' selected';\n }\n } else {\n const currentValue = Array.isArray(this.value) ? this.value[0] : this.value;\n const label = this.selectedOptions[0]?.getTextLabel();\n this.displayLabel = label ? label : currentValue ?? '';\n }\n\n this.updateValidity();\n\n if (this.selectedOptions.length === 0) {\n this.showSelected = false;\n if(this.originalOptionItems?.length > 0 && !this.searchValue) {\n this.data = [...this.originalOptionItems];\n }\n this.repaintOptionsContainer();\n }\n\n this.calculateTotalWidthOfTags();\n }\n \n\n handleSearchFocus(): void {\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchBlur(): void {\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n }\n\n handleSearchChange(e: any): void {\n this.searchValue = e.detail.value;\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n }\n \n this.emit('nile-search', { \n query: this.searchValue,\n name: this.name \n });\n \n if (!this.disableLocalSearch) {\n this.filterVirtualOptions(this.searchValue);\n this.repaintOptionsContainer();\n \n // Reset measured height when search changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n }\n }\n \n repaintOptionsContainer() {\n this.resetScrollPosition();\n this.updateComplete.then(() => {\n const virtualized = this.shadowRoot?.querySelector('.virtualized') as HTMLElement;\n if (virtualized) {\n if (this.data.length <= 5) {\n virtualized.classList.add('no-scroll');\n } else {\n virtualized.classList.remove('no-scroll');\n }\n }\n });\n }\n\n handleScroll(e: Event): void {\n if(this.showSelected) {\n return;\n }\n\n const target = e.target as HTMLElement;\n \n this.emit('nile-scroll', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name\n });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n if (this.scrolling) {\n this.scrolling = false;\n }\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom && !this.searchValue) {\n this.emit('nile-scroll-end', {\n scrollTop: target.scrollTop,\n scrollLeft: target.scrollLeft,\n name: this.name,\n isAtBottom: true\n });\n }\n }\n\n filterVirtualOptions(searchValue: string): void {\n const result = VirtualSelectSearchManager.filterVirtualOptions(\n searchValue,\n this.originalOptionItems,\n this.data,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getSearchText\n );\n if (this.portal) {\n this.portalManager.updatePortalAppendPosition();\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this.resetScrollPosition();\n });\n });\n } else {\n this.resetScrollPosition();\n }\n this.data = result.filteredItems;\n this.showNoResults = result.showNoResults;\n this.showSelected = false;\n this.requestUpdate();\n }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n \n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.selectionChanged();\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && this.open && !this.showSelected && !this.searchValue) {\n this.originalOptionItems = [...this.data];\n }\n this.selectionChanged();\n // Show no results message when data is empty and not loading\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n this.requestUpdate();\n \n // Reset measured height when data changes (content height may change)\n this.portalManager.resetMeasuredHeight();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('renderItemConfig', { waitUntilFirstUpdate: true })\n handleRenderItemConfigChange(): void {\n if (this.value && this.data.length > 0) {\n this.selectionChanged();\n this.requestUpdate();\n }\n }\n\n @watch('optionsLoading', { waitUntilFirstUpdate: true })\n handleOptionsLoadingChange(): void {\n // Show no results message when loading stops and there are no results\n if (!this.optionsLoading && this.data.length === 0) {\n this.showNoResults = true;\n }\n this.requestUpdate();\n \n // Update body append content if it's active\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePortalAppendPosition();\n }\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalAppendChange(): void {\n if (this.open) {\n if (this.portal) {\n this.portalManager.setupPortalAppend();\n } else {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.showListbox = true;\n await this.updateComplete;\n await this.handleOpen();\n \n if (this.portal) {\n this.portalManager.setupPortalAppend();\n }\n } else {\n await this.handleClose();\n this.showListbox = false;\n \n if (this.portal) {\n this.portalManager.cleanupPortalAppend();\n }\n }\n }\n\n private async handleOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.showNoResults = !this.data?.length;\n\n await stopAnimations(this);\n \n // Hide popup initially to prevent flickering during positioning calculation\n // This allows content to be measured while invisible\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n \n this.popup.active = true;\n \n // Wait for positioning to complete before showing the popup\n await new Promise(resolve => requestAnimationFrame(resolve));\n // Wait for next frame to allow Floating UI to calculate position\n await new Promise(resolve => requestAnimationFrame(resolve));\n \n // Show popup after positioning is calculated\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'select.show', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n\n if (this.wasShowSelectedCheckedOnClose) {\n this.showSelected = false;\n this.data = [...this.originalOptionItems];\n this.wasShowSelectedCheckedOnClose = false;\n }\n \n if (this.enableVisibilityEffect) {\n this.setupAnchorVisibilityObserver();\n }\n\n this.filterVirtualOptions(\"\");\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async handleClose(): Promise<void> {\n this.cleanupAnchorVisibilityObserver();\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n this.wasShowSelectedCheckedOnClose = this.showSelected;\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'select.hide', {\n dir: 'ltr',\n });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n \n // Reset visibility style when closing\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n this.searchValue = '';\n \n // Reset measured height when popup closes (content may change on next open)\n this.portalManager.resetMeasuredHeight();\n \n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open || this.disabled) {\n this.open = false;\n return undefined;\n }\n\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n checkValidity(): boolean {\n return this.valueInput.checkValidity();\n }\n\n getForm(): HTMLFormElement | null {\n return this.formControlController.getForm();\n }\n\n reportValidity(): boolean {\n return this.valueInput.reportValidity();\n }\n\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void {\n this.displayInput.focus(options);\n }\n\n blur(): void {\n this.displayInput.blur();\n }\n\n onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasHelpTextSlot = this.hasSlotController.test('help-text');\n const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');\n const hasCustomSelect = this.hasSlotController.test('custom-select');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasClearIcon =\n this.clearable && !this.disabled && this.value.length > 0;\n const isPlaceholderVisible = !!this.placeholder && this.value.length === 0;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n ${this.renderLabel(hasLabel, hasLabelSuffixSlot)}\n ${this.renderFormControlInput(hasCustomSelect, hasClearIcon, isPlaceholderVisible, hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderLabel(hasLabel: boolean, hasLabelSuffixSlot: boolean): TemplateResult {\n return html`\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n ${hasLabelSuffixSlot ? html` <slot name=\"label-suffix\"></slot> ` : ``}\n `;\n }\n\n private renderFormControlInput(\n hasCustomSelect: boolean, \n hasClearIcon: boolean, \n isPlaceholderVisible: boolean, \n hasHelpText: boolean, \n hasErrorMessage: boolean\n ): TemplateResult {\n return html`\n <div part=\"form-control-input\" class=\"form-control-input\">\n ${this.renderPopup(hasCustomSelect, hasClearIcon, isPlaceholderVisible)}\n ${this.renderHelpText(hasHelpText, hasErrorMessage)}\n </div>\n `;\n }\n\n private renderPopup(hasCustomSelect: boolean, hasClearIcon: boolean, isPlaceholderVisible: boolean): TemplateResult {\n return html`\n <nile-popup\n class=${classMap({\n select: true,\n 'select--warning': this.warning,\n 'select--error': this.error,\n 'select--success': this.success,\n 'select--standard': true,\n 'select--filled': this.filled,\n 'select--pill': this.pill,\n 'select--open': this.open,\n 'select--disabled': this.disabled,\n 'select--multiple': this.multiple,\n 'select--focused': this.hasFocus,\n 'select--placeholder-visible': isPlaceholderVisible,\n 'select--top': this.placement === 'top',\n 'select--bottom': this.placement === 'bottom',\n 'select--small': this.size === 'small',\n 'select--medium': this.size === 'medium',\n 'select--large': this.size === 'large',\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n exportparts=\"tag__content\"\n >\n ${this.renderCustomSelect(hasCustomSelect)}\n ${this.renderCombobox(hasCustomSelect, hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n `;\n }\n\n private renderCustomSelect(hasCustomSelect: boolean): TemplateResult {\n return hasCustomSelect\n ? html`<slot\n slot=\"anchor\"\n name=\"custom-select\"\n class=\"custom-select\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n ></slot>`\n : html``;\n }\n\n private renderCombobox(hasCustomSelect: boolean, hasClearIcon: boolean): TemplateResult {\n return html`\n <div\n part=\"combobox\"\n class=${classMap({\n select__combobox: true,\n 'select__hide-default': hasCustomSelect,\n })}\n slot=\"anchor\"\n @keydown=${this.handleComboboxKeyDown}\n @mousedown=${this.handleComboboxMouseDown}\n >\n ${this.renderPrefix()}\n ${this.renderDisplayInput()}\n ${this.renderTags()}\n ${this.renderValueInput()}\n ${this.renderClearButton(hasClearIcon)}\n ${this.renderSuffix()}\n ${this.renderExpandIcon()}\n </div>\n `;\n }\n\n private renderPrefix(): TemplateResult {\n return html`\n <slot\n part=\"prefix\"\n name=\"prefix\"\n class=${classMap({\n select__prefix: true,\n multiple: this.multiple,\n })}\n ></slot>\n `;\n }\n\n private renderDisplayInput(): TemplateResult {\n return html`\n <input\n part=\"display-input\"\n class=\"select__display-input\"\n type=\"text\"\n placeholder=${this.placeholder}\n .disabled=${this.disabled}\n .value=${this.displayLabel}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n readonly\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n role=\"combobox\"\n tabindex=\"0\"\n />\n `;\n }\n\n private renderTags(): TemplateResult {\n return this.multiple\n ? html`\n <div part=\"tags\" class=\"select__tags\">\n ${this.selectedOptions.map((option, index) => {\n if (\n index < this.maxOptionsVisible ||\n this.maxOptionsVisible <= 0\n ) {\n const classes = {\n select__invisible:\n index + 1 > this.oldMaxOptionsVisible &&\n this.maxOptionsVisible === Infinity,\n };\n return html`\n <nile-tag\n class=${classMap(classes)}\n part=\"tag\"\n exportparts=\"\n base:tag__base,\n content:tag__content,\n remove-button:tag__remove-button,\n remove-button__base:tag__remove-button__base\n \"\n ?pill=${this.pill}\n size=${this.size}\n removable\n @nile-remove=${(event: NileRemoveEvent) =>\n this.handleTagRemove(event, option)}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `;\n } else if (index === this.maxOptionsVisible) {\n return html`\n <span class=\"select__tags-count\"\n >+${this.selectedOptions.length - index} More\n </span>\n `;\n } else {\n return null;\n }\n })}\n </div>\n `\n : html``;\n }\n\n private renderValueInput(): TemplateResult {\n return html`\n <input\n class=\"select__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value)\n ? this.value.join(', ')\n : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n `;\n }\n\n private renderClearButton(hasClearIcon: boolean): TemplateResult {\n return hasClearIcon\n ? html`\n <button\n part=\"clear-button\"\n class=\"select__clear\"\n type=\"button\"\n aria-label=\"clearEntry\"\n @mousedown=${this.handleClearMouseDown}\n @click=${this.handleClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon name=\"var(--nile-icon-close, var(--ng-icon-x-close))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" library=\"system\"></nile-icon>\n </slot>\n </button>\n `\n : html``;\n }\n\n private renderSuffix(): TemplateResult {\n return html`\n <slot\n part=\"suffix\"\n name=\"suffix\"\n class=${classMap({\n select__suffix: true,\n })}\n ></slot>\n `;\n }\n\n private renderExpandIcon(): TemplateResult {\n return html`\n <slot\n name=\"expand-icon\"\n part=\"expand-icon\"\n class=\"select__expand-icon\"\n >\n <nile-icon library=\"system\" name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"></nile-icon>\n </slot>\n `;\n }\n\n private renderListbox(): TemplateResult {\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"select__listbox ${this.searchEnabled\n ? 'select__search-enabled '\n : ''} ${this.portal ? 'select__portal-append-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.handleOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n >\n ${this.renderSearch()}\n ${this.renderLoader()}\n ${this.getVirtualizedContent()}\n ${this.renderFooter()}\n </div>\n `;\n }\n\n private renderSearch(): TemplateResult {\n return this.searchEnabled\n ? html`\n <div part=\"search\" class=\"select__search\">\n <nile-input\n size=\"small\"\n clearable\n .value=${this.searchValue}\n placeholder=\"${this.internalSearchPlaceHolder}\"\n @nile-input=${this.handleSearchChange}\n @nile-focus=${this.handleSearchFocus}\n @nile-change=\"${this.onInputChange}\"\n >\n <nile-icon name=\"var(--nile-icon-search, var(--ng-icon-search-lg))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" slot=\"suffix\"> </nile-icon>\n </nile-input>\n </div>\n `\n : html``;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`\n <span part=\"loader\" class=\"virtual-select-loader\">\n <nile-loader size=\"sm\"></nile-loader>\n </span>\n `;\n }\n \n if (this.optionsLoading) {\n return html`\n <span part=\"loader\" class=\"select__loader\">\n <nile-icon\n class=\"select__loader--icon\"\n name=\"button-loading-blue\"\n ></nile-icon>\n </span>\n `;\n }\n \n return html``;\n }\n\n private renderFooter(): TemplateResult {\n return this.multiple\n ? html`\n <div\n part=\"footer\"\n class=\"select__footer ${this.loading ? 'loading' : ''}\"\n @click=\"${this.handleFooterClick}\"\n >\n <span\n @click=\"${this.toggleShowSelected}\"\n style=\"cursor: pointer;\"\n >\n <nile-checkbox\n ?disabled=\"${this.selectedOptions.length === 0}\"\n ?checked=\"${this.showSelected}\"\n >\n &nbsp; Show Selected</nile-checkbox\n >\n </span>\n ${this.selectedOptions.length !== 0\n ? html`\n <span\n class=\"select__clear\"\n @click=\"${this.unSelectAll}\"\n >\n Clear All\n </span>\n `\n : ``}\n </div>\n `\n : html``;\n }\n\n private renderHelpText(hasHelpText: boolean, hasErrorMessage: boolean): TemplateResult {\n return html`\n ${hasHelpText\n ? html` <nile-form-help-text>${this.helpText}</nile-form-help-text> `\n : ``}\n ${hasErrorMessage\n ? html`\n <nile-form-error-message\n >${this.errorMessage}</nile-form-error-message\n >\n `\n : ``}\n `;\n }\n\n getVirtualizedContent(): TemplateResult {\n return VirtualSelectRenderer.getVirtualizedContent(\n this.data,\n this.searchEnabled,\n this.getDisplayText.bind(this),\n this.value,\n this.multiple,\n this.renderItemConfig?.getDisplayText,\n this.renderItemConfig?.getValue,\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.handleScroll.bind(this)\n );\n }\n\n nileInput(value: any): void {\n this.emit('nile-input', value);\n }\n\n nileChange(value: any): void {\n this.emit('nile-change', value);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => {\n this.formControlController.updateValidity();\n });\n }\n\n private calculateWidthOfSelectTagsDiv(): number | null {\n if (this.shadowRoot) {\n const selectTagsDiv = this.shadowRoot.querySelector('.select__tags') as HTMLElement;\n if (selectTagsDiv) {\n const width = selectTagsDiv.offsetWidth;\n return width - 70;\n }\n }\n return null;\n }\n\n private calculateTotalWidthOfTags(): void {\n if (this.maxOptionsVisible !== Infinity) {\n this.oldMaxOptionsVisible = this.maxOptionsVisible;\n }\n\n this.maxOptionsVisible = Infinity;\n setTimeout(() => {\n let widths: number[] = [];\n if (this.shadowRoot) {\n const tags = this.shadowRoot.querySelectorAll('nile-tag');\n tags.forEach(tag => {\n if (tag instanceof HTMLElement) {\n widths.push(tag.offsetWidth);\n }\n });\n }\n if (this.value.length !== widths.length) {\n return;\n }\n\n let sum = widths.reduce(\n (accumulator, currentValue) => accumulator + currentValue,\n 0\n );\n const widthOfSelectTagsDiv = this.calculateWidthOfSelectTagsDiv();\n if (!widthOfSelectTagsDiv) {\n return;\n }\n\n let summ = 0;\n let lastindex = 0;\n\n for (let i = 0; i < widths.length; i++) {\n summ += widths[i];\n\n if (summ > widthOfSelectTagsDiv) {\n lastindex = i;\n break;\n }\n }\n this.maxOptionsVisible = lastindex;\n }, 1);\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\n }\n}\n\nsetDefaultAnimation('select.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('select.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileVirtualSelect;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-virtual-select': NileVirtualSelect;\n }\n}\n\n"],"names":["t","x","o","i","target","h","config","e","callback","skipInitial","this","Set","add","l","window","ResizeObserver","u","s","handleChanges","requestUpdate","addController","console","warn","_createClass","key","value","hostConnected","_iterator","_step","n","done","observe","err","f","hostDisconnected","disconnect","_hostUpdated","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","next","stop","hostUpdated","unobserve","_export","NileVirtualSelect","k","constructor","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","PortalManager","hasFocus","displayLabel","selectedOptions","oldValue","scrolling","name","data","originalOptionItems","defaultValue","size","placeholder","autoResize","searchValue","searchEnabled","enableVisibilityEffect","internalSearchPlaceHolder","disableLocalSearch","optionsLoading","loading","multiple","helpText","errorMessage","warning","error","success","disabled","clearable","open","hoist","filled","pill","label","placement","form","required","showNoResults","noResultsMessage","showSelected","blockValueChange","noWidthSync","portal","maxOptionsVisible","oldMaxOptionsVisible","enableTabClose","showListbox","wasShowSelectedCheckedOnClose","anchorVisibilityObservers","handleDocumentVisibilityChange","document","visibilityState","hide","emit","visible","reason","handleDocumentMouseDown","event","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortalAppend","portalContainerElement","handleWindowError","message","preventDefault","handleWindowResize","updatePortalAppendPosition","handleWindowScroll","resizeController","ResizeController","entries","_iterator2","_step2","entry","classList","contains","calculateTotalWidthOfTags","_this2","_inherits","_u","get","validity","_this$valueInput","valueInput","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","super","initializeComponent","setupEventListeners","updateComplete","then","length","selectionChanged","disconnectedCallback","removeOpenListeners","scrollTimeout","clearTimeout","undefined","cleanupPortalAppend","updated","changedProperties","has","_this$shadowRoot","tagsDiv","shadowRoot","querySelector","getDisplayText","item","_this$renderItemConfi","renderItemConfig","toString","getItemValue","getValue","getSearchText","handleDocumentFocusIn","bind","handleDocumentKeyDown","addOpenListeners","addEventListener","removeEventListener","handleFocus","handleBlur","getScrollableAncestors","element","scrollables","parent","parentElement","style","getComputedStyle","test","overflow","overflowY","overflowX","push","setupAnchorVisibilityObserver","cleanupAnchorVisibilityObserver","combobox","concat","_toConsumableArray","forEach","rootContainer","observer","IntersectionObserver","_iterator3","_step3","isIntersecting","root","threshold","shouldIgnoreKeyPress","isEscapeKey","handleEscapeKey","isEnterOrSpaceKey","handleEnterOrSpaceKey","isClearButton","closest","isIconButton","stopPropagation","displayInput","focus","preventScroll","stopImmediatePropagation","show","handleFooterClick","toggleShowSelected","_this$selectedOptions","selectedValues","Array","isArray","filter","itemValue","some","val","String","resetMeasuredHeight","repaintOptionsContainer","unSelectAll","resetScrollPosition","handleLabelClick","handleComboboxMouseDown","shouldIgnoreComboboxClick","el","Element","tagName","toLowerCase","handleComboboxKeyDown","handleClearClick","clearSelection","nileInput","nileChange","handleClearMouseDown","handleOptionClick","option","shouldBlockValueChange","handleOptionSelection","_this7","optionValue","toggleOptionSelection","setSelectedOptions","currentValues","v","handleTagRemove","removeTagFromSelection","emitTagRemovalEvent","currentValue","newValue","removedtagvalue","itemsToSearch","VirtualSelectSelectionManager","createVirtualOptionsFromValues","_this$selectedOptions2","getTextLabel","updateValidity","handleSearchFocus","handleSearchBlur","handleSearchChange","detail","query","filterVirtualOptions","_this9$shadowRoot","virtualized","remove","handleScroll","_this10","scrollTop","scrollLeft","setTimeout","Math","ceil","floor","scrollHeight","offsetHeight","isAtBottom","result","VirtualSelectSearchManager","requestAnimationFrame","filteredItems","handleInvalid","setValidity","emitInvalidEvent","handleDisabledChange","handleOpenChange","handleValueChange","handleDataChange","handleRenderItemConfigChange","handleOptionsLoadingChange","handlePortalAppendChange","setupPortalAppend","_handleOpenChange","_callee2","_callee2$","_context3","handleOpen","handleClose","_callee3","_this$data","_this$popup","_this$popup2","_h","_callee3$","_context4","stopAnimations","visibility","active","Promise","resolve","getAnimation","dir","animateTo","keyframes","options","_callee4","_this$popup3","_h2","_callee4$","_context5","_callee5","_callee5$","_context6","waitForEvent","_callee6","_callee6$","_context7","abrupt","checkValidity","getForm","reportValidity","setCustomValidity","blur","onInputChange","render","hasLabelSlot","hasLabelSuffixSlot","hasCustomSelect","hasLabel","hasClearIcon","isPlaceholderVisible","hasHelpText","hasErrorMessage","html","_templateObject","_taggedTemplateLiteral","classMap","renderLabel","renderFormControlInput","_templateObject2","_templateObject3","_templateObject4","renderPopup","renderHelpText","_templateObject5","select","ifDefined","renderCustomSelect","renderCombobox","renderListbox","_templateObject6","_templateObject7","_templateObject8","_templateObject9","select__combobox","renderPrefix","renderDisplayInput","renderTags","renderValueInput","renderClearButton","renderSuffix","renderExpandIcon","_templateObject10","select__prefix","_templateObject11","_templateObject12","map","index","classes","select__invisible","Infinity","_templateObject13","_templateObject14","_templateObject15","_templateObject16","join","_templateObject17","_templateObject18","_templateObject19","select__suffix","_templateObject20","_templateObject21","renderSearch","renderLoader","getVirtualizedContent","renderFooter","_templateObject22","_templateObject23","_templateObject24","_templateObject25","_templateObject26","_templateObject27","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","VirtualSelectRenderer","calculateWidthOfSelectTagsDiv","selectTagsDiv","offsetWidth","widths","querySelectorAll","tag","HTMLElement","widthOfSelectTagsDiv","summ","lastindex","_resetScrollPosition","_callee7","_callee7$","_context8","NileElement","styles","__decorate","prototype","state","property","type","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","watch","waitUntilFirstUpdate","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":";;;;AAKG,eAAMA,CAAE,yBAAA,SAAAC,EAAYD,CAAAA,CAAAA,IAAAA,CAA4CE,KAAAA,KAAAA,SAAlCC,CAAAA,CAAAA,CAAAA,IAAAA,CAAPC,MAAOD,CAASE,CAAAA,CAAAA,IAAAA,CAAPC,MAAOD,CAAWE,CAAAA,CAAAA,IAAAA,CAATC,QAASD,CAAcL,CAAAA,CAAAA,IAAAA,CAAZO,WAAYP,CAAAA,eAAAA,MAAAA,CAAAA,EAAIQ,KAAKV,CAAE,CAAA,GAAIW,CAAAA,GAAID,CAAAA,CAAAA,CAAAA,IAAAA,CAAKR,CAAE,CAAA,CAAA,CAAA,CAAGQ,IAAKP,CAAAA,CAAAA,CAAAA,CAAE,CAAGO,CAAAA,IAAAA,CAAKL,CAAEL,CAAAA,CAAAA,CAAE,IAAOG,GAAAA,CAAAA,EAAGO,IAAKV,CAAAA,CAAAA,CAAEY,IAAIT,CAAGH,SAAHG,CAAGH,UAAHG,CAAGH,CAAAA,CAAAA,CAAAA,CAAGU,IAAKG,CAAAA,CAAAA,CAAER,CAAEK,CAAAA,IAAAA,CAAKR,CAAEA,CAAAA,CAAAA,SAAAA,CAAAA,UAAAA,CAAAA,CAAGQ,IAAKR,CAAAA,CAAAA,CAAEQ,IAAKF,CAAAA,QAAAA,CAASD,CAAMO,CAAAA,MAAAA,CAAOC,cAAgBL,EAAAA,IAAAA,CAAKM,EAAE,GAAID,CAAAA,cAAAA,CAAgBE,SAAAA,CAAIP,CAAAA,CAAAA,KAAAA,CAAKQ,aAAcD,CAAAA,CAAAA,CAAAA,CAAGP,KAAKL,CAAAA,CAAAA,CAAEc,eAAgB,EAAGnB,CAAAA,CAAAA,CAAAA,CAAEoB,aAAcV,CAAAA,IAAAA,CAAAA,EAAOW,OAAQC,CAAAA,IAAAA,CAAK,kEAAoE,CAAA,EAAC,OAAAC,YAAA,CAAAtB,CAAA,GAAAuB,GAAA,iBAAAC,KAAA,UAAAP,aAAAA,CAAcD,CAAAA,CAAAA,KAAAA,cAAAA,CAAGP,IAAKe,CAAAA,KAAAA,EAAAA,cAAAA,CAAMf,IAAKF,CAAAA,QAAAA,UAAAA,cAAAA,iBAALE,cAAAA,CAAAA,IAAAA,KAAKF,CAAWS,CAAEP,CAAAA,IAAAA,CAAKM,CAAE,CAAA,EAAC,GAAAQ,GAAA,iBAAAC,KAAA,UAAAC,aAAAA,CAAAA,CAAAA,KAAAA,SAAAA,CAAAA,0BAAAA,CAA+BhB,IAAAA,CAAKV,aAApB,IAAA2B,SAAA,CAAAV,CAAA,KAAAW,KAAA,CAAAD,SAAA,CAAAE,CAAA,IAAAC,IAAA,EAAsBpB,IAAZO,CAAAA,EAAKP,CAAAA,KAAAA,CAAAA,KAAAA,CAAOA,IAAKqB,CAAAA,OAAAA,CAAQd,EAAE,CAAA,CAAA,CAAA,OAAAe,GAAA,EAAAL,SAAA,CAAApB,CAAA,CAAAyB,GAAA,WAAAL,SAAA,CAAAM,CAAA,KAAC,GAAAT,GAAA,oBAAAC,KAAA,UAAAS,gBAAAA,CAAAA,CAAAA,CAAmBxB,IAAKyB,CAAAA,UAAAA,CAAAA,CAAY,EAAC,GAAAX,GAAA,eAAAC,KAAA,gBAAAW,YAAA,CAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,UAAAC,QAAA,SAAAF,mBAAA,GAAAG,IAAA,UAAAC,SAAAC,SAAA,iBAAAA,SAAA,CAAAC,IAAA,CAAAD,SAAA,CAAAE,IAAA,SAAqBnC,CAAAA,IAAAA,CAAKR,CAAGQ,EAAAA,IAAAA,CAAKP,CAAGO,EAAAA,IAAAA,CAAKQ,cAAc,EAAIR,CAAAA,CAAAA,IAAAA,CAAKP,CAAE,CAAA,CAAA,CAAE,yBAAAwC,SAAA,CAAAG,IAAA,MAAAN,OAAA,QAAC,WAAtE,CAAAO,WAAMA,CAAAA,SAAAA,YAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAN,CAAAA,WAAMA,OAAAA,GAAAA,WAAAA,KAAAA,CAAgE,SAAAhB,OAAAA,CAAQd,CAAAA,CAAAA,CAAGP,IAAKV,CAAAA,CAAAA,CAAEY,GAAIK,CAAAA,CAAAA,CAAAA,CAAGP,IAAKM,CAAAA,CAAAA,CAAEe,OAAQd,CAAAA,CAAAA,CAAEP,KAAKG,CAAGH,CAAAA,CAAAA,IAAAA,CAAKP,CAAE,CAAA,CAAA,CAAA,CAAGO,IAAKL,CAAAA,CAAAA,CAAEc,aAAe,CAAA,CAAA,EAAC,GAAAK,GAAA,aAAAC,KAAA,UAAAuB,SAAAA,CAAU/B,CAAAA,CAAAA,CAAGP,IAAKV,CAAAA,CAAAA,UAASiB,CAAAA,CAAAA,CAAAA,CAAGP,IAAKM,CAAAA,CAAAA,CAAEgC,UAAU/B,CAAE,CAAA,EAAC,GAAAO,GAAA,cAAAC,KAAA,UAAAU,UAAAA,CAAAA,CAAAA,CAAazB,IAAKM,CAAAA,CAAAA,CAAEmB,UAAY,CAAA,CAAA,EAAA,SAAAc,OAAA,KC8F1vBC,CAAAA,uBAAAA,EAAAA,EAAN,SAAAC,EAAA,CAAAC,KAAAA,MAAAA,CAAAA,eAAAA,MAAAA,CAAAA,sCAGY1C,MAAAA,CAAA2C,qBAAwB,CAAA,GAAIC,CAAAA,CAAsB5C,CAAAA,sBAAAA,CAAAA,MAAAA,EAAM,CACvE6C,mBAAAA,CAAqB,CAAC,WAAA,CAAa,YAEpB7C,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAiB8C,iBAAG,CAAA,GAAIC,CAAAA,CACvC/C,CAAAA,sBAAAA,CAAAA,MAAAA,EACA,WACA,CAAA,OAAA,CAAA,CAEeA,MAAAA,CAAAgD,aAAgB,CAAA,GAAIC,CAAAA,CAAcjD,CAAAA,sBAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAQlCA,MAAAA,CAAQkD,QAAAA,CAAAA,CAAG,CACnBlD,CAAAA,MAAAA,CAAYmD,YAAG,CAAA,EAAA,CACfnD,MAAAA,CAAeoD,eAAAA,CAAoB,EACnCpD,CAAAA,MAAAA,CAAQqD,QAAsB,CAAA,EAAA,CAG/BrD,MAAAA,CAASsD,SAAG,CAAA,CAAA,CAAA,CAGRtD,MAAAA,CAAIuD,IAAAA,CAAG,EAGQvD,CAAAA,MAAAA,CAAIwD,IAAQ,CAAA,EAAA,CAGtBxD,MAAAA,CAAmByD,mBAAQ,CAAA,EAAA,CAW5CzD,MAAAA,CAAKe,KAAAA,CAAsB,EAGXf,CAAAA,MAAAA,CAAY0D,YAAsB,CAAA,EAAA,CAGtC1D,MAAAA,CAAI2D,IAAiC,CAAA,QAAA,CAGrC3D,MAAAA,CAAW4D,WAAAA,CAAG,WAGK5D,CAAAA,MAAAA,CAAU6D,UAAG,CAAA,CAAA,CAAA,CAGnC7D,MAAAA,CAAW8D,WAAAA,CAAW,EAGa9D,CAAAA,MAAAA,CAAa+D,aAAG,CAAA,CAAA,CAAA,CAEC/D,MAAAA,CAAsBgE,sBAAAA,CAAAA,CAAG,EAGjChE,MAAAA,CAAyBiE,yBAAAA,CAAG,WAGrCjE,CAAAA,MAAAA,CAAkBkE,kBAAG,CAAA,CAAA,CAAA,CAGrBlE,MAAAA,CAAcmE,cAAAA,CAAAA,CAAG,EAGAnE,MAAAA,CAAOoE,OAAAA,CAAAA,CAAG,CAG3BpE,CAAAA,MAAAA,CAAQqE,QAAG,CAAA,CAAA,CAAA,CAGFrE,MAAAA,CAAQsE,QAAAA,CAAG,GAGPtE,MAAAA,CAAYuE,YAAAA,CAAG,EAG3CvE,CAAAA,MAAAA,CAAOwE,OAAG,CAAA,CAAA,CAAA,CAGVxE,MAAAA,CAAKyE,KAAAA,CAAAA,CAAG,CAGRzE,CAAAA,MAAAA,CAAO0E,OAAG,CAAA,CAAA,CAAA,CAGK1E,MAAAA,CAAQ2E,QAAAA,CAAAA,CAAG,CAGX3E,CAAAA,MAAAA,CAAS4E,WAAG,CAGZ5E,CAAAA,MAAAA,CAAI6E,IAAG,CAAA,CAAA,CAAA,CAMtB7E,MAAAA,CAAK8E,KAAAA,CAAAA,CAAG,CAGO9E,CAAAA,MAAAA,CAAM+E,QAAG,CAGT/E,CAAAA,MAAAA,CAAIgF,IAAG,CAAA,CAAA,CAAA,CAGvChF,MAAAA,CAAKiF,KAAAA,CAAG,EAMSjF,CAAAA,MAAAA,CAASkF,UAAqB,QAO9BlF,CAAAA,MAAAA,CAAImF,IAAG,CAAA,EAAA,CAGQnF,MAAAA,CAAQoF,QAAAA,CAAAA,CAAG,CAG1BpF,CAAAA,MAAAA,CAAaqF,aAAY,CAAA,CAAA,CAAA,CAG1BrF,MAAAA,CAAgBsF,gBAAAA,CAAW,kBAG1BtF,CAAAA,MAAAA,CAAYuF,YAAG,CAAA,CAAA,CAAA,CAMAvF,MAAAA,CAAgBwF,gBAAG,CAAA,CAAA,CAAA,CAGnBxF,MAAAA,CAAWyF,WAAAA,CAAAA,CAAG,CAMdzF,CAAAA,MAAAA,CAAM0F,MAAG,CAAA,CAAA,CAAA,CAOrD1F,MAAAA,CAAiB2F,iBAAAA,CAAG,CAEX3F,CAAAA,MAAAA,CAAoB4F,oBAAW,CAAA,CAAA,CAEqB5F,MAAAA,CAAc6F,cAAAA,CAAAA,CAAG,EAGrE7F,MAAAA,CAAW8F,WAAAA,CAAAA,CAAY,CACf9F,CAAAA,MAAAA,CAA6B+F,6BAAY,CAAA,CAAA,CAAA,CA8HjD/F,MAAAA,CAAyBgG,yBAAAA,CAA2B,EAgBpDhG,CAAAA,MAAAA,CAA8BiG,8BAAG,CAAA,UAAA,CAClCjG,MAAAA,CAAK6F,cAAAA,EACuB,QAA7BK,GAAAA,QAAAA,CAASC,iBAAgCnG,MAAAA,CAAK6E,IAAAA,GAChD7E,MAAAA,CAAKoG,IAAAA,CAAAA,CAAAA,CACLpG,MAAAA,CAAKqG,IAAAA,CAAK,wBAA0B,CAAA,CAClCC,SAAS,CACTC,CAAAA,MAAAA,CAAQ,iBACRhD,CAAAA,IAAAA,CAAMvD,MAAAA,CAAKuD,IAAAA,CAAAA,CAAAA,CAEd,EA4HIvD,CAAAA,MAAAA,CAAAwG,wBAA2BC,SAAAA,CACjC,CAAA,CAAA,GAAA,CAAKzG,MAAAA,CAAK6E,IAAAA,CAAM,OAEhB,GAAM6B,CAAAA,CAAOD,CAAAA,CAAAA,CAAME,YACbC,CAAAA,CAAAA,CAAAA,CAAAA,CAAWF,CAAKG,CAAAA,QAAAA,CAAAA,sBAAAA,CAAAA,MAAAA,CAChBC,CAAAA,CAAAA,CAAAA,CAAW9G,MAAAA,CAAK+G,KAAAA,EAASL,EAAKG,QAAS7G,CAAAA,MAAAA,CAAK+G,KAC5CC,CAAAA,CAAAA,CAAAA,CAAkBhH,MAAAA,CAAK0F,MAAAA,EAAU1F,MAAAA,CAAKgD,aAAAA,CAAciE,sBAA0BP,EAAAA,CAAAA,CAAKG,QAAS7G,CAAAA,MAAAA,CAAKgD,aAAciE,CAAAA,sBAAAA,CAAAA,CAEhHL,CAAYE,EAAAA,CAAAA,EAAaE,GAC5BhH,MAAAA,CAAKoG,IAAAA,CAAAA,CACN,EAQKpG,CAAAA,MAAAA,CAAAkH,iBAAqBT,CAAAA,SAAAA,CAAAA,CAAAA,KAAAA,QAAAA,CAAAA,CACNA,EAAAA,QAAAA,CAAAA,CAAMhC,CAAAA,KAAAA,UAAAA,QAAAA,iBAANgC,QAAAA,CAAaU,OAAWV,GAAAA,CAAAA,CAAMU,OAAW,EAAA,EAAA,EAC7CN,QAAS,CAAA,yDAAA,CAAA,EACxBJ,CAAMW,CAAAA,cAAAA,CAAAA,CAEP,GAGKpH,MAAAA,CAAkBqH,kBAAAA,CAAG,UAC3BrH,CAAAA,MAAAA,CAAKgD,aAAcsE,CAAAA,0BAAAA,CAAAA,CAA4B,EAGzCtH,CAAAA,MAAAA,CAAkBuH,mBAAG,UAC3BvH,CAAAA,MAAAA,CAAKgD,aAAcsE,CAAAA,0BAAAA,CAAAA,CAA4B,EA2DzCtH,CAAAA,MAAAA,CAAAwH,gBAAmB,CAAA,GAAIC,CAAAA,iCAAuB,CACpD3H,QAAW4H,CAAAA,QAAX5H,CAAAA,QAAW4H,CAAAA,CAAAA,CAAAA,KAAAA,UAAAA,CAAAA,0BAAAA,CACWA,CAAAA,EAAAA,MAAAA,KAApB,IAAAC,UAAA,CAAApH,CAAA,KAAAqH,MAAA,CAAAD,UAAA,CAAAxG,CAAA,IAAAC,IAAA,EACMyG,IADKA,CAAAA,EAASH,CAAAA,MAAAA,CAAAA,KAAAA,CACdG,EAAMnI,CAAAA,MAAAA,CAAOoI,SAAUC,CAAAA,QAAAA,CAAS,cAClC/H,CAAAA,EAAAA,MAAAA,CAAKgI,yBAER,CAAA,CAAA,CAAA,CAAA,OAAA1G,GAAA,EAAAqG,UAAA,CAAA9H,CAAA,CAAAyB,GAAA,WAAAqG,UAAA,CAAApG,CAAA,KAAA,CAAA,CA09BN,QAAA0G,MAAA,EA10CCC,SAAA,CAAAzF,CAAA,CAAA0F,EAAA,SAAAtH,YAAA,CAAA4B,CAAA,GAAA3B,GAAA,YAAAsH,GAAA,UAAAA,IAAA,CAAIC,KAAAA,gBAAAA,CACF,OAAAC,gBAAA,CAAOtI,IAAAA,CAAKuI,UAAYF,UAAAA,gBAAAA,iBAAjBrI,gBAAAA,CAAiBqI,QACzB,EAGD,GAAAvH,GAAA,qBAAAsH,GAAA,UAAAA,IAAA,CACE,KAAAI,qBAAA,CAAAC,iBAAA,CAAA,OAAAD,qBAAA,EAAAC,iBAAA,CAAOzI,IAAKuI,CAAAA,UAAAA,UAAAA,iBAAAA,iBAALvI,iBAAAA,CAAiB0I,iBAAqB,UAAAF,qBAAA,UAAAA,qBAAA,CAAA,EAC9C,EAED,GAAA1H,GAAA,qBAAAC,KAAA,UAAA4H,iBAAAA,CAAAA,kBACEC,aAAAA,CAAAA,CAAAA,iCACA5I,IAAK6I,CAAAA,mBAAAA,CAAAA,CAAAA,CACL7I,IAAK8I,CAAAA,mBAAAA,CAAAA,CAAAA,CAEL9I,IAAK+I,CAAAA,cAAAA,CAAeC,IAAK,CAAA,UAAA,CACnBhJ,MAAKe,CAAAA,KAAAA,EAASf,MAAKwD,CAAAA,IAAAA,CAAKyF,MAAS,CAAA,CAAA,EACnCjJ,OAAKkJ,gBACN,CAAA,CAAA,EAAA,CAEJ,EAED,GAAApI,GAAA,wBAAAC,KAAA,UAAAoI,oBAAAA,CAAAA,CACEnJ,CAAAA,IAAAA,CAAKoJ,mBAEDpJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKqJ,gBACPC,YAAatJ,CAAAA,IAAAA,CAAKqJ,aAClBrJ,CAAAA,CAAAA,IAAAA,CAAKqJ,aAAgBE,CAAAA,IAAAA,EAAAA,CAAAA,CAGvBvJ,IAAKgD,CAAAA,aAAAA,CAAcwG,qBACpB,EAES,GAAA1I,GAAA,WAAAC,KAAA,UAAA0I,OAAAA,CAAQC,CAAAA,CAAAA,CAId,GAHGA,CAAAA,CAAkBC,GAAI,CAAA,OAAA,CAAA,EACtB3J,IAAKkJ,CAAAA,gBAAAA,CAAAA,CAAAA,CAEJQ,CAAkBC,CAAAA,GAAAA,CAAI,YAAe,CAAA,CAAA,KAAAC,gBAAA,CACvC,GAAMC,CAAAA,GAAAA,EAAAA,gBAAAA,CAAU7J,KAAK8J,UAAYC,UAAAA,gBAAAA,iBAAjB/J,gBAAAA,CAAiB+J,aAAAA,CAAc,eAC3C/J,CAAAA,CAAAA,IAAAA,CAAK6D,UAAcgG,EAAAA,GAAAA,CACrB7J,IAAKwH,CAAAA,gBAAAA,CAAiBnG,QAAQwI,GACrBA,CAAAA,CAAAA,GAAAA,EACT7J,IAAKwH,CAAAA,gBAAAA,CAAiBlF,SAAUuH,CAAAA,GAAAA,CAEnC,EACJ,CAEO,GAAA/I,GAAA,uBAAAC,KAAA,UAAA8H,mBAAAA,CAAAA,CACN7I,CAAAA,IAAAA,CAAK6E,IAAO,CAAA,CAAA,CAAA,CACZ7E,IAAKqG,CAAAA,IAAAA,CAAK,WACX,CAAA,EAKO,GAAAvF,GAAA,kBAAAC,KAAA,UAAAiJ,cAAAA,CAAeC,CACrB,CAAA,KAAAC,qBAAA,CAAA,MAAIlK,CAAAA,qBAAAA,KAAKmK,CAAAA,gBAAAA,UAAAA,qBAAAA,WAALnK,qBAAAA,CAAuBgK,cAClBhK,CAAAA,IAAAA,CAAKmK,iBAAiBH,cAAeC,CAAAA,CAAAA,CAAAA,CAGvCA,CAAAA,CAAMhF,SAANgF,CAAMhF,iBAANgF,CAAMhF,CAAAA,KAAAA,IAASgF,CAAM1G,SAAN0G,CAAM1G,iBAAN0G,CAAM1G,CAAAA,IAAAA,IAAQ0G,CAAMG,SAANH,CAAMG,iBAANH,CAAMG,CAAAA,QAAAA,CAAAA,CAAAA,GAAc,EACzD,EAKO,GAAAtJ,GAAA,gBAAAC,KAAA,UAAAsJ,YAAAA,CAAaJ,CAAAA,CAAAA,KAAAA,sBAAAA,CACnB,MAAIjK,CAAAA,sBAAAA,KAAAA,CAAKmK,gBAAkBG,UAAAA,sBAAAA,WAAvBtK,sBAAAA,CAAuBsK,QAAAA,CAClBtK,KAAKmK,gBAAiBG,CAAAA,QAAAA,CAASL,CAEjCA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,iBAAAA,CAAAA,CAAMlJ,KAASkJ,GAAAA,CACvB,EAKO,GAAAnJ,GAAA,iBAAAC,KAAA,UAAAwJ,aAAAA,CAAcN,CAAAA,CAAAA,KAAAA,sBAAAA,CACpB,MAAIjK,CAAAA,sBAAAA,KAAAA,CAAKmK,gBAAkBI,UAAAA,sBAAAA,WAAvBvK,sBAAAA,CAAuBuK,aAAAA,CAClBvK,IAAKmK,CAAAA,gBAAAA,CAAiBI,cAAcN,CAEtCjK,CAAAA,CAAAA,IAAAA,CAAKgK,cAAeC,CAAAA,CAAAA,CAC5B,EAEO,GAAAnJ,GAAA,uBAAAC,KAAA,UAAA+H,mBAAAA,CAAAA,CACN9I,CAAAA,IAAAA,CAAKwK,qBAAwBxK,CAAAA,IAAAA,CAAKwK,qBAAsBC,CAAAA,IAAAA,CAAKzK,IAC7DA,CAAAA,CAAAA,IAAAA,CAAK0K,qBAAwB1K,CAAAA,IAAAA,CAAK0K,sBAAsBD,IAAKzK,CAAAA,IAAAA,CAAAA,CAC7DA,IAAKwG,CAAAA,uBAAAA,CAA0BxG,IAAKwG,CAAAA,uBAAAA,CAAwBiE,IAAKzK,CAAAA,IAAAA,CAAAA,CACjEA,IAAKkH,CAAAA,iBAAAA,CAAoBlH,IAAKkH,CAAAA,iBAAAA,CAAkBuD,IAAKzK,CAAAA,IAAAA,CAAAA,CACrDA,IAAKqH,CAAAA,kBAAAA,CAAqBrH,KAAKqH,kBAAmBoD,CAAAA,IAAAA,CAAKzK,IACvDA,CAAAA,CAAAA,IAAAA,CAAKuH,kBAAqBvH,CAAAA,IAAAA,CAAKuH,kBAAmBkD,CAAAA,IAAAA,CAAKzK,KACxD,EAEO,GAAAc,GAAA,oBAAAC,KAAA,UAAA4J,gBAAAA,CAAAA,CACNzE,CAAAA,QAAAA,CAAS0E,gBAAiB,CAAA,SAAA,CAAW5K,IAAKwK,CAAAA,qBAAAA,CAAAA,CAC1CtE,SAAS0E,gBAAiB,CAAA,SAAA,CAAW5K,IAAK0K,CAAAA,qBAAAA,CAAAA,CAC1CxE,QAAS0E,CAAAA,gBAAAA,CAAiB,WAAa5K,CAAAA,IAAAA,CAAKwG,uBAC5CpG,CAAAA,CAAAA,MAAAA,CAAOwK,gBAAiB,CAAA,OAAA,CAAS5K,IAAKkH,CAAAA,iBAAAA,CAAAA,CAElClH,IAAK0F,CAAAA,MAAAA,GACPtF,OAAOwK,gBAAiB,CAAA,QAAA,CAAU5K,IAAKqH,CAAAA,kBAAAA,CAAAA,CACvCjH,MAAOwK,CAAAA,gBAAAA,CAAiB,QAAU5K,CAAAA,IAAAA,CAAKuH,kBAAoB,CAAA,CAAA,CAAA,CAAA,CAE9D,EAEO,GAAAzG,GAAA,uBAAAC,KAAA,UAAAqI,mBAAAA,CAAAA,CACNlD,CAAAA,QAAAA,CAAS2E,mBAAoB,CAAA,SAAA,CAAW7K,KAAKwK,qBAC7CtE,CAAAA,CAAAA,QAAAA,CAAS2E,mBAAoB,CAAA,SAAA,CAAW7K,IAAK0K,CAAAA,qBAAAA,CAAAA,CAC7CxE,QAAS2E,CAAAA,mBAAAA,CAAoB,WAAa7K,CAAAA,IAAAA,CAAKwG,uBAC/CpG,CAAAA,CAAAA,MAAAA,CAAOyK,mBAAoB,CAAA,OAAA,CAAS7K,IAAKkH,CAAAA,iBAAAA,CAAAA,CACzC9G,OAAOyK,mBAAoB,CAAA,QAAA,CAAU7K,IAAKqH,CAAAA,kBAAAA,CAAAA,CAC1CjH,MAAOyK,CAAAA,mBAAAA,CAAoB,QAAU7K,CAAAA,IAAAA,CAAKuH,oBAAoB,CAC/D,CAAA,EAEO,GAAAzG,GAAA,eAAAC,KAAA,UAAA+J,WAAAA,CAAAA,CAAAA,CACN9K,IAAKkD,CAAAA,QAAAA,CAAAA,CAAW,CAChBlD,CAAAA,IAAAA,CAAKqG,KAAK,YACX,CAAA,EAEO,GAAAvF,GAAA,cAAAC,KAAA,UAAAgK,UAAAA,CAAAA,CAAAA,CACN/K,IAAKkD,CAAAA,QAAAA,CAAAA,CAAW,CAChBlD,CAAAA,IAAAA,CAAKqG,IAAK,CAAA,WAAA,CACX,EAIQ,GAAAvF,GAAA,0BAAAC,KAAA,UAAAiK,sBAAAA,CAAuBC,CAAAA,CAAAA,CAC7B,GAAMC,CAAAA,CAAAA,CAA6B,GACnC,GAAIC,CAAAA,CAAAA,CAASF,CAAQG,CAAAA,aAAAA,CACrB,KAAOD,CAAAA,EAAQ,CACb,GAAME,CAAAA,GAAQC,CAAAA,gBAAAA,CAAiBH,CAE7B,CAAA,CAAA,eAAA,CAAgBI,IAAKF,CAAAA,GAAAA,CAAMG,QAAWH,CAAAA,GAAAA,CAAMI,UAAYJ,GAAMK,CAAAA,SAAAA,CAAAA,EAE9DR,CAAYS,CAAAA,IAAAA,CAAKR,CAEnBA,CAAAA,CAAAA,CAAAA,CAASA,CAAOC,CAAAA,aACjB,EACD,MAAOF,CAAAA,CACR,EAcO,GAAApK,GAAA,iCAAAC,KAAA,UAAA6K,6BAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACN,GAAK5L,CAAAA,IAAAA,CAAKgE,uBAAwB,OAElChE,IAAAA,CAAK6L,+BAEL,CAAA,CAAA,CAAA,GAAMC,CAAAA,CAAW9L,CAAAA,IAAAA,CAAK8L,QACtB,CAAA,GAAA,CAAKA,EAAU,OAEU,GAAAC,MAAA,CAAAC,kBAAA,CAAIhM,IAAKgL,CAAAA,sBAAAA,CAAuBhL,IAAO,CAAA,GAAA,IAAA,GAE/CiM,OAASC,CAAAA,SAAAA,CAAAA,CAAAA,CACxB,GAAMC,CAAAA,CAAW,CAAA,GAAIC,CAAAA,oBAClB1E,CAAAA,SAAAA,CAAAA,CAAAA,KAAAA,UAAAA,CAAAA,0BAAAA,CACqBA,CAAAA,EAAAA,MAAAA,KAApB,IAAA2E,UAAA,CAAA9L,CAAA,KAAA+L,MAAA,CAAAD,UAAA,CAAAlL,CAAA,IAAAC,IAAA,EACE,IADSyG,CAAAA,EAASH,CAAAA,MAAAA,CAAAA,KAAAA,CAClB,GAAKG,CAAAA,EAAAA,CAAM0E,cAAkBvM,EAAAA,MAAAA,CAAK6E,IAQhC,CAAA,MAPA7E,CAAAA,MAAKoG,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,IACLpG,CAAAA,OAAKqG,IAAK,CAAA,wBAAA,CAA0B,CAClCC,OAAAA,CAAAA,CAAS,CACTC,CAAAA,MAAAA,CAAQ,oBACRhD,CAAAA,IAAAA,CAAMvD,OAAKuD,IACXiJ,CAAAA,IAAAA,CAAMN,CAIX,CAAA,CAAA,CAAA,CAAA,OAAA5K,GAAA,EAAA+K,UAAA,CAAAxM,CAAA,CAAAyB,GAAA,WAAA+K,UAAA,CAAA9K,CAAA,KAAA,CAEH,CACEiL,IAAAA,CAAMN,CACNO,CAAAA,SAAAA,CAAW,KAIfN,CAAS9K,CAAAA,OAAAA,CAAQyK,CACjB9L,CAAAA,CAAAA,MAAAA,CAAKgG,yBAA0B2F,CAAAA,IAAAA,CAAKQ,CAAS,CAAA,EAAA,CAAA,CAG3CnM,IAAK6F,CAAAA,cAAAA,EACPK,QAAS0E,CAAAA,gBAAAA,CACP,kBACA5K,CAAAA,IAAAA,CAAKiG,8BAGV,CAAA,EAEO,GAAAnF,GAAA,mCAAAC,KAAA,UAAA8K,+BAAAA,CAAAA,CACN7L,CAAAA,IAAAA,CAAKgG,yBAA0BiG,CAAAA,OAAAA,CAASzM,SAAAA,CAAMA,QAAAA,CAAAA,CAAAA,CAAEiC,UAChDzB,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,IAAAA,CAAKgG,0BAA4B,EAEjCE,CAAAA,QAAAA,CAAS2E,mBACP,CAAA,kBAAA,CACA7K,IAAKiG,CAAAA,8BAAAA,CAER,EAMM,GAAAnF,GAAA,yBAAAC,KAAA,UAAAyJ,qBAAAA,CAAsB/D,CAC5B,CAAA,CAAA,GAAA,CAAKzG,IAAK6E,CAAAA,IAAAA,CAAM,OAChB,GAAM6B,CAAAA,CAAOD,CAAAA,CAAAA,CAAME,YACbC,CAAAA,CAAAA,CAAAA,CAAAA,CAAWF,CAAKG,CAAAA,QAAAA,CAAS7G,IACzB8G,CAAAA,CAAAA,CAAAA,CAAW9G,IAAK+G,CAAAA,KAAAA,EAASL,EAAKG,QAAS7G,CAAAA,IAAAA,CAAK+G,KAC5CC,CAAAA,CAAAA,CAAAA,CAAkBhH,IAAK0F,CAAAA,MAAAA,EAAU1F,IAAKgD,CAAAA,aAAAA,CAAciE,sBAA0BP,EAAAA,CAAAA,CAAKG,QAAS7G,CAAAA,IAAAA,CAAKgD,aAAciE,CAAAA,sBAAAA,CAAAA,CAEhHL,CAAYE,EAAAA,CAAAA,EAAaE,GAC5BhH,IAAKoG,CAAAA,IAAAA,CAAAA,CAER,EAEO,GAAAtF,GAAA,yBAAAC,KAAA,UAAA2J,qBAAAA,CAAsBjE,CAAAA,CAAAA,CACxBzG,IAAK0M,CAAAA,oBAAAA,CAAqBjG,CAI1BzG,CAAAA,GAAAA,IAAAA,CAAK2M,WAAYlG,CAAAA,CAAAA,CAAAA,EACnBzG,IAAK4M,CAAAA,eAAAA,CAAgBnG,CAGnBzG,CAAAA,CAAAA,IAAAA,CAAK6M,kBAAkBpG,CACzBzG,CAAAA,EAAAA,IAAAA,CAAK8M,qBAAsBrG,CAAAA,CAAAA,CAAAA,CAE9B,EAEO,GAAA3F,GAAA,wBAAAC,KAAA,UAAA2L,oBAAAA,CAAqBjG,CAAAA,CAAAA,CAC3B,GAAM/G,CAAAA,CAAS+G,CAAAA,CAAAA,CAAM/G,MACfqN,CAAAA,CAAAA,CAAqD,IAArCrN,GAAAA,CAAAA,CAAOsN,OAAQ,CAAA,gBAAA,CAAA,CAC/BC,EAAsD,IAAvCvN,GAAAA,CAAAA,CAAOsN,OAAQ,CAAA,kBAAA,CAAA,CACpC,MAAOD,CAAAA,CAAAA,EAAiBE,CACzB,EAEO,GAAAnM,GAAA,eAAAC,KAAA,UAAA4L,WAAAA,CAAYlG,CAClB,CAAA,CAAA,MAAqB,QAAdA,GAAAA,CAAAA,CAAM3F,GAAoBd,EAAAA,IAAAA,CAAK6E,IACvC,EAEO,GAAA/D,GAAA,mBAAAC,KAAA,UAAA6L,eAAAA,CAAgBnG,CAAAA,CAAAA,CACtBA,CAAMW,CAAAA,cAAAA,CAAAA,CAAAA,CACNX,CAAMyG,CAAAA,eAAAA,CAAAA,CAAAA,CACNlN,KAAKoG,IACLpG,CAAAA,CAAAA,CAAAA,IAAAA,CAAKmN,YAAaC,CAAAA,KAAAA,CAAM,CAAEC,aAAAA,CAAAA,CAAe,CAC1C,CAAA,CAAA,EAEO,GAAAvM,GAAA,qBAAAC,KAAA,UAAA8L,iBAAAA,CAAkBpG,CAAAA,CAAAA,CACxB,MAAqB,OAAA,GAAdA,CAAM3F,CAAAA,GAAAA,EAAiC,GAAd2F,GAAAA,CAAAA,CAAM3F,GACvC,EAEO,GAAAA,GAAA,yBAAAC,KAAA,UAAA+L,qBAAAA,CAAsBrG,CAC5BA,CAAAA,CAAAA,CAAAA,CAAMW,cACNX,CAAAA,CAAAA,CAAAA,CAAAA,CAAM6G,2BAEDtN,IAAK6E,CAAAA,IAAAA,CAKL7E,IAAKqE,CAAAA,QAAAA,GACRrE,IAAKoG,CAAAA,IAAAA,CAAAA,CAAAA,CACLpG,IAAKmN,CAAAA,YAAAA,CAAaC,MAAM,CAAEC,aAAAA,CAAAA,CAAe,CANzCrN,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKuN,IAQR,CAAA,CAAA,EAoCO,GAAAzM,GAAA,qBAAAC,KAAA,UAAAyM,iBAAAA,CAAkB/G,GACxBA,CAAMyG,CAAAA,eAAAA,CAAAA,CAAAA,CACNzG,CAAMW,CAAAA,cAAAA,CAAAA,CACP,EAEO,GAAAtG,GAAA,sBAAAC,KAAA,UAAA0M,kBAAAA,CAAmBhH,CAAAA,CAAAA,KAAAA,qBAAAA,CAAAA,MAAAA,MAGzB,GAFAA,CAAAA,CAAMyG,eACNzG,CAAAA,CAAAA,CAAAA,CAAAA,CAAMW,cAC+B,CAAA,CAAA,CAAA,CAAA,KAAAsG,qBAAA,CAAjC1N,IAAKoD,CAAAA,eAAAA,UAAAA,qBAAAA,iBAALpD,qBAAAA,CAAsBiJ,QAA1B,CAKA,GAFAjJ,IAAKuF,CAAAA,YAAAA,CAAAA,CAAgBvF,IAAKuF,CAAAA,YAAAA,CAEtBvF,IAAKuF,CAAAA,YAAAA,CAAc,CACrBvF,IAAAA,CAAK8D,WAAc,CAAA,EAAA,CACnB,GAAM6J,CAAAA,GAAAA,CAAiBC,KAAMC,CAAAA,OAAAA,CAAQ7N,KAAKe,KAASf,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ,CAAA,CAACf,IAAKe,CAAAA,KAAAA,CAAAA,CACtEf,IAAKwD,CAAAA,IAAAA,CAAOxD,IAAKyD,CAAAA,mBAAAA,CAAoBqK,MAAQ7D,CAAAA,SAAAA,CAAAA,CAAAA,CAC3C,GAAM8D,CAAAA,CAAAA,CAAY/N,MAAKqK,CAAAA,YAAAA,CAAaJ,GACpC,MAAO0D,CAAAA,GAAAA,CAAeK,IAAKC,CAAAA,SAAAA,CAAAA,QAAOC,CAAAA,MAAOD,CAAAA,CAAAA,CAAAA,GAASC,MAAOH,CAAAA,CAAAA,CAAAA,EAAAA,CAAW,GAEvE,EACC/N,IAAAA,KAAAA,CAAKwD,IAAO,CAAAwI,kBAAA,CAAIhM,IAAKyD,CAAAA,mBAAAA,CAAAA,CAIvBzD,IAAKgD,CAAAA,aAAAA,CAAcmL,sBAEnBnO,IAAKS,CAAAA,aAAAA,CAAAA,CAAAA,CACLT,IAAKoO,CAAAA,uBAAAA,CAAAA,CAlBJ,EAmBF,CAEO,GAAAtN,GAAA,eAAAC,KAAA,UAAAsN,WAAAA,CAAAA,CAAAA,CACNrO,IAAKuF,CAAAA,YAAAA,CAAAA,CAAe,CACpBvF,CAAAA,IAAAA,CAAKe,KAAQf,CAAAA,IAAAA,CAAKqE,QAAW,CAAA,EAAA,CAAK,GAClCrE,IAAKwD,CAAAA,IAAAA,CAAAA,kBAAAA,CAAWxD,IAAAA,CAAKyD,mBACrBzD,CAAAA,CAAAA,IAAAA,CAAKkJ,gBACLlJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKqG,KAAK,aAAe,CAAA,CAAEtF,KAAOf,CAAAA,IAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,IAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CACzDvD,KAAKqG,IAAK,CAAA,YAAA,CAAc,CAAEtF,KAAAA,CAAOf,IAAKqE,CAAAA,QAAAA,CAAWrE,IAAKe,CAAAA,KAAAA,CAAQ,EAAIwC,CAAAA,IAAAA,CAAMvD,IAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAC7EvD,IAAKsO,CAAAA,mBAAAA,CAAAA,CACN,EAEO,GAAAxN,GAAA,oBAAAC,KAAA,UAAAwN,gBAAAA,CAAAA,EACNvO,IAAKmN,CAAAA,YAAAA,CAAaC,KAClBpN,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,IACN,CAAA,CAAA,EAEO,GAAAtF,GAAA,2BAAAC,KAAA,UAAAyN,uBAAAA,CAAwB/H,GAC1BzG,IAAKyO,CAAAA,yBAAAA,CAA0BhI,CAInCA,CAAAA,GAAAA,CAAAA,CAAMW,cACNpH,CAAAA,CAAAA,CAAAA,IAAAA,CAAKmN,YAAaC,CAAAA,KAAAA,CAAM,CAAEC,aAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CACzCrN,IAAK6E,CAAAA,IAAAA,CAAAA,CAAQ7E,IAAK6E,CAAAA,IAAAA,CACnB,EAYO,GAAA/D,GAAA,6BAAAC,KAAA,UAAA0N,yBAAAA,CAA0BhI,CAAAA,CAAAA,CAChC,GACMwG,CAAAA,CAAAA,CADOxG,CAAME,CAAAA,YAAAA,CAAAA,CAAAA,CACOqH,IACxBU,CAAAA,SAAAA,CAAAA,QACEA,CAAAA,YAAcC,CAAAA,OAAwC,EAAA,kBAAA,GAA7BD,CAAGE,CAAAA,OAAAA,CAAQC,WAExC,CAAA,CAAA,EAAA,CAAA,CAAA,MAAO7O,KAAK2E,CAAAA,QAAAA,EAAYsI,CACzB,EAEO,GAAAnM,GAAA,yBAAAC,KAAA,UAAA+N,qBAAAA,CAAsBrI,CACxBzG,CAAAA,CAAAA,IAAAA,CAAK6M,iBAAkBpG,CAAAA,CAAAA,CAAAA,GACzBA,EAAMW,cACNpH,CAAAA,CAAAA,CAAAA,IAAAA,CAAK6E,IAAQ7E,CAAAA,CAAAA,IAAAA,CAAK6E,IAErB,CAAA,EAEO,GAAA/D,GAAA,oBAAAC,KAAA,UAAAgO,gBAAAA,CAAiBtI,CACvBA,CAAAA,CAAAA,CAAAA,CAAMyG,eACNlN,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgP,cACN,CAAA,CAAA,EAEO,GAAAlO,GAAA,kBAAAC,KAAA,UAAAiO,cAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACWhP,KAAKe,KACtBf,CAAAA,IAAAA,CAAKe,KAAQf,CAAAA,IAAAA,CAAKqE,QAAW,CAAA,EAAA,CAAK,EAClCrE,CAAAA,IAAAA,CAAKkJ,mBAELlJ,IAAK+I,CAAAA,cAAAA,CAAeC,IAAK,CAAA,UAAA,CACvBhJ,MAAKiP,CAAAA,SAAAA,CAAU,CAAElO,KAAAA,CAAOf,OAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,MAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAC/CvD,MAAKkP,CAAAA,UAAAA,CAAW,CAAEnO,KAAAA,CAAOf,MAAKe,CAAAA,KAAAA,CAAOwC,IAAMvD,CAAAA,MAAAA,CAAKuD,IAChDvD,CAAAA,CAAAA,CAAAA,MAAAA,CAAKqG,IAAK,CAAA,YAAA,CAAa,GAE1B,EAEO,GAAAvF,GAAA,wBAAAC,KAAA,UAAAoO,oBAAAA,CAAqB1I,CAAAA,CAAAA,CAC3BA,CAAMyG,CAAAA,eAAAA,CAAAA,CACP,EAEO,GAAApM,GAAA,qBAAAC,KAAA,UAAAqO,iBAAAA,CAAkB3I,CAAAA,CAAAA,CACxB,GACM4I,CAAAA,CAAAA,CADS5I,CAAM/G,CAAAA,MAAAA,CACCsN,OAAQ,CAAA,aAAA,CAAA,CAE9B,GAAIhN,IAAKsP,CAAAA,sBAAAA,CAAuBD,CAC9B,CAAA,CAAA,OAGF,GAAMhM,CAAAA,CAAAA,CAAWrD,IAAKe,CAAAA,KAAAA,CACtBf,IAAKqD,CAAAA,QAAAA,CAAWA,CAEZgM,CAAAA,CAAAA,EAAAA,CAAWA,CAAO1K,CAAAA,QAAAA,EACpB3E,IAAKuP,CAAAA,qBAAAA,CAAsBF,EAE9B,EAEO,GAAAvO,GAAA,0BAAAC,KAAA,UAAAuO,sBAAAA,CAAuBD,CAAAA,CAAAA,CAC7B,MAAIrP,EAAAA,CAAAA,IAAAA,CAAKwF,gBAAoB6J,EAAAA,CAAAA,CAAAA,CAAAA,GAC3BrP,KAAKqG,IAAK,CAAA,mBAAA,CAAqB,CAAEtF,KAAAA,CAAQsO,CAAgBtO,SAAhBsO,CAAgBtO,iBAAhBsO,CAAgBtO,CAAAA,KAAAA,CAAOwC,IAAMvD,CAAAA,IAAAA,CAAKuD,OAC3EvD,IAAKoG,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CACE,CAGV,CAAA,EAEO,GAAAtF,GAAA,yBAAAC,KAAA,UAAAwO,qBAAAA,CAAsBF,CAC5B,CAAA,KAAAG,MAAA,MAAA,GAAMC,CAAAA,CAAeJ,CAAAA,CAAAA,CAAetO,KAEhCf,CAAAA,IAAAA,CAAKqE,QACPrE,CAAAA,IAAAA,CAAK0P,qBAAsBD,CAAAA,CAAAA,CAAAA,CAE3BzP,KAAK2P,kBAAmBF,CAAAA,CAAAA,CAAAA,CAG1BzP,IAAK+I,CAAAA,cAAAA,CAAeC,IAAK,CAAA,iBACvBhJ,CAAAA,MAAKmN,CAAAA,YAAAA,CAAaC,KAAM,CAAA,CAAEC,aAAe,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAGvCrN,IAAKe,CAAAA,KAAAA,GAAUf,IAAKqD,CAAAA,QAAAA,EACtBrD,KAAK+I,cAAeC,CAAAA,IAAAA,CAAK,UACvBhJ,CAAAA,MAAAA,CAAKiP,SAAU,CAAA,CAAElO,KAAOf,CAAAA,MAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,MAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAC/CvD,MAAKkP,CAAAA,UAAAA,CAAW,CAAEnO,KAAAA,CAAOf,OAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,MAAKuD,CAAAA,IAAAA,CAAAA,CAAO,EAItDvD,CAAAA,CAAAA,IAAAA,CAAKqE,QACRrE,GAAAA,IAAAA,CAAKoG,OACLpG,IAAKmN,CAAAA,YAAAA,CAAaC,KAAM,CAAA,CAAEC,aAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAE5C,EAEO,GAAAvM,GAAA,sBAAAC,KAAA,UAAA4O,kBAAAA,CAAmBF,CACzBzP,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ0O,CAAAA,CAAAA,CACbzP,IAAKkJ,CAAAA,gBAAAA,CAAAA,CACN,EAEO,GAAApI,GAAA,yBAAAC,KAAA,UAAA2O,qBAAAA,CAAsBD,CAAAA,CAAAA,CAC5B,GAAMG,CAAAA,CAAAA,CAAgBhC,KAAMC,CAAAA,OAAAA,CAAQ7N,IAAKe,CAAAA,KAAAA,CAAAA,CAASf,KAAKe,KAAQ,CAAA,EAAA,CAE3D6O,CAAc/I,CAAAA,QAAAA,CAAS4I,CACzBzP,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ6O,CAAAA,CAAAA,CAAc9B,OAAO+B,SAAAA,CAAKA,QAAAA,CAAAA,CAAAA,GAAMJ,CAE7CzP,EAAAA,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ,IAAAgL,MAAA,CAAAC,kBAAA,CAAI4D,CAAeH,GAAAA,CAAAA,EAAAA,CAGlCzP,KAAKkJ,gBACN,CAAA,CAAA,EAEO,GAAApI,GAAA,mBAAAC,KAAA,UAAA+O,eAAAA,CAAgBrJ,CAAwB4I,CAAAA,CAAAA,CAAAA,CAC9C5I,CAAMyG,CAAAA,eAAAA,CAAAA,CAAAA,CAEDlN,IAAK2E,CAAAA,QAAAA,GACR3E,IAAK+P,CAAAA,sBAAAA,CAAuBV,CAC5BrP,CAAAA,CAAAA,IAAAA,CAAKgQ,mBAAoBX,CAAAA,CAAAA,CAAAA,CAE5B,EAEO,GAAAvO,GAAA,0BAAAC,KAAA,UAAAgP,sBAAAA,CAAuBV,CAC7B,CAAA,CAAA,GAAIY,CAAAA,CAAejQ,CAAAA,IAAAA,CAAKe,KACnB6M,CAAAA,KAAAA,CAAMC,QAAQoC,CACjBA,CAAAA,GAAAA,CAAAA,CAAeA,CAAe,CAAA,CAACA,CAAgB,CAAA,CAAA,EAAA,CAAA,CAEjD,GAAMC,CAAAA,CAAAA,CAAWD,EAAanC,MAAQ+B,CAAAA,SAAAA,CAAAA,QAAcA,CAAAA,CAAMR,GAAAA,CAAAA,CAAOtO,KACjEf,EAAAA,CAAAA,CAAAA,IAAAA,CAAKe,KAAQmP,CAAAA,CAAAA,CACblQ,IAAKkJ,CAAAA,gBAAAA,CAAAA,CACN,EAEO,GAAApI,GAAA,uBAAAC,KAAA,UAAAiP,mBAAAA,CAAoBX,CAAAA,CAAAA,KAAAA,MAAAA,MAC1BrP,IAAK+I,CAAAA,cAAAA,CAAeC,KAAK,UACvBhJ,CAAAA,MAAAA,CAAKiP,SAAU,CAAA,CAAElO,KAAOf,CAAAA,MAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,MAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAC/CvD,MAAKkP,CAAAA,UAAAA,CAAW,CAAEnO,KAAAA,CAAOf,MAAKe,CAAAA,KAAAA,CAAOwC,KAAMvD,MAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAChDvD,MAAKqG,CAAAA,IAAAA,CAAK,iBAAmB,CAAA,CAAEtF,KAAOf,CAAAA,MAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,MAAKuD,CAAAA,IAAAA,CAAM4M,eAAiBd,CAAAA,CAAAA,CAAOtO,KAAQ,CAAA,CAAA,EAAA,CAEtG,EAEO,GAAAD,GAAA,oBAAAC,KAAA,UAAAmI,gBAAAA,CAAAA,CAAAA,KAAAA,sBAAAA,CAAAA,qBAAAA,CACN,GAAMkH,CAAAA,CAAAA,CAAgBpQ,IAAKyD,CAAAA,mBAAAA,CAAoBwF,MAAS,CAAA,CAAA,CAAIjJ,KAAKyD,mBAAsBzD,CAAAA,IAAAA,CAAKwD,IAQ5F,CAAA,GAPAxD,IAAKoD,CAAAA,eAAAA,CAAkBiN,CAA8BC,CAAAA,8BAAAA,CACnDtQ,KAAKe,KACLqP,CAAAA,CAAAA,CACApQ,IAAKgK,CAAAA,cAAAA,CAAeS,IAAKzK,CAAAA,IAAAA,CAAAA,EAAAA,sBAAAA,CACzBA,IAAKmK,CAAAA,gBAAAA,UAAAA,sBAAAA,iBAALnK,sBAAAA,CAAuBsK,QAGrBtK,CAAAA,CAAAA,IAAAA,CAAKqE,QACHrE,CAAAA,IAAAA,CAAK4D,WAAqC,EAAA,CAAA,GAAtB5D,IAAKe,CAAAA,KAAAA,CAAMkI,OACjCjJ,IAAKmD,CAAAA,YAAAA,CAAe,EAEpBnD,CAAAA,IAAAA,CAAKmD,YAAenD,CAAAA,IAAAA,CAAKoD,eAAgB6F,CAAAA,MAAAA,CAAS,gBAE/C,KAAAsH,sBAAA,CACL,GAAMN,CAAAA,GAAerC,CAAAA,KAAAA,CAAMC,OAAQ7N,CAAAA,IAAAA,CAAKe,KAASf,CAAAA,CAAAA,IAAAA,CAAKe,MAAM,CAAKf,CAAAA,CAAAA,IAAAA,CAAKe,KAChEkE,CAAAA,GAAAA,EAAAA,sBAAAA,CAAQjF,IAAKoD,CAAAA,eAAAA,CAAgB,CAAIoN,CAAAA,UAAAA,sBAAAA,iBAAzBxQ,sBAAAA,CAAyBwQ,YAAAA,CAAAA,CAAAA,CACvCxQ,IAAKmD,CAAAA,YAAAA,CAAe8B,GAAgBgL,GAAAA,GAAAA,SAAAA,GAAAA,UAAAA,GAAAA,CAAgB,EACrD,CAAA,EAEDjQ,IAAKyQ,CAAAA,cAAAA,CAAAA,CAAAA,CAE+B,IAAhCzQ,IAAKoD,CAAAA,eAAAA,CAAgB6F,MACvBjJ,GAAAA,IAAAA,CAAKuF,YAAe,CAAA,CAAA,CAAA,CACjBvF,EAAAA,qBAAAA,KAAKyD,CAAAA,mBAAAA,UAAAA,qBAAAA,iBAALzD,qBAAAA,CAA0BiJ,QAAS,CAAMjJ,EAAAA,CAAAA,IAAAA,CAAK8D,WAC7C9D,GAAAA,IAAAA,CAAKwD,IAAO,CAAAwI,kBAAA,CAAIhM,IAAKyD,CAAAA,mBAAAA,CAAAA,CAAAA,CAEzBzD,KAAKoO,uBAGPpO,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgI,yBACN,CAAA,CAAA,EAGD,GAAAlH,GAAA,qBAAAC,KAAA,UAAA2P,iBAAAA,CAAAA,CAAAA,CACExK,QAAS2E,CAAAA,mBAAAA,CAAoB,SAAW7K,CAAAA,IAAAA,CAAK0K,qBAC9C,CAAA,EAED,GAAA5J,GAAA,oBAAAC,KAAA,UAAA4P,gBAAAA,CAAAA,CAAAA,CACEzK,QAAS0E,CAAAA,gBAAAA,CAAiB,UAAW5K,IAAK0K,CAAAA,qBAAAA,CAC3C,EAED,GAAA5J,GAAA,sBAAAC,KAAA,UAAA6P,kBAAAA,CAAmB/Q,CAAAA,CAAAA,CACjBG,IAAK8D,CAAAA,WAAAA,CAAcjE,CAAEgR,CAAAA,MAAAA,CAAO9P,KACxBf,CAAAA,IAAAA,CAAK0F,MACP1F,EAAAA,IAAAA,CAAKgD,aAAcsE,CAAAA,0BAAAA,CAAAA,CAAAA,CAGrBtH,KAAKqG,IAAK,CAAA,aAAA,CAAe,CACvByK,KAAAA,CAAO9Q,IAAK8D,CAAAA,WAAAA,CACZP,IAAMvD,CAAAA,IAAAA,CAAKuD,IAGRvD,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkE,kBACRlE,GAAAA,IAAAA,CAAK+Q,oBAAqB/Q,CAAAA,IAAAA,CAAK8D,WAC/B9D,CAAAA,CAAAA,IAAAA,CAAKoO,0BAGPpO,IAAKgD,CAAAA,aAAAA,CAAcmL,mBAEpB,CAAA,CAAA,CAAA,EAED,GAAArN,GAAA,2BAAAC,KAAA,UAAAqN,uBAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACIpO,IAAKsO,CAAAA,mBAAAA,CAAAA,CAAAA,CACLtO,KAAK+I,cAAeC,CAAAA,IAAAA,CAAK,UACvB,KAAAgI,iBAAA,CAAA,GAAMC,CAAAA,CAAcjR,EAAAA,iBAAAA,CAAAA,MAAAA,CAAK8J,UAAYC,UAAAA,iBAAAA,iBAAjB/J,iBAAAA,CAAiB+J,aAAAA,CAAc,gBAC/CkH,CACEjR,GAAAA,MAAAA,CAAKwD,IAAKyF,CAAAA,MAAAA,EAAU,CACtBgI,CAAAA,CAAAA,CAAYnJ,SAAU5H,CAAAA,GAAAA,CAAI,WAE1B+Q,CAAAA,CAAAA,CAAAA,CAAYnJ,SAAUoJ,CAAAA,MAAAA,CAAO,WAEhC,CAAA,CAAA,EAAA,CAEN,EAED,GAAApQ,GAAA,gBAAAC,KAAA,UAAAoQ,YAAAA,CAAatR,CACX,CAAA,KAAAuR,OAAA,MAAA,GAAGpR,IAAKuF,CAAAA,YAAAA,CACN,OAGF,GAAM7F,CAAAA,CAASG,CAAAA,CAAAA,CAAEH,OAEjBM,IAAKqG,CAAAA,IAAAA,CAAK,aAAe,CAAA,CACvBgL,SAAW3R,CAAAA,CAAAA,CAAO2R,SAClBC,CAAAA,UAAAA,CAAY5R,EAAO4R,UACnB/N,CAAAA,IAAAA,CAAMvD,IAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CAGRvD,IAAKsD,CAAAA,SAAAA,GACRtD,IAAKsD,CAAAA,SAAAA,CAAAA,CAAY,CACjBtD,CAAAA,IAAAA,CAAKqG,IAAK,CAAA,mBAAA,CAAqB,CAC7BgL,SAAAA,CAAW3R,CAAO2R,CAAAA,SAAAA,CAClBC,WAAY5R,CAAO4R,CAAAA,UAAAA,CACnB/N,IAAMvD,CAAAA,IAAAA,CAAKuD,IAIf+F,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAatJ,IAAKqJ,CAAAA,aAAAA,CAAAA,CAClBrJ,KAAKqJ,aAAgBjJ,CAAAA,MAAAA,CAAOmR,UAAW,CAAA,UAAA,CACjCvR,OAAKsD,CAAAA,SAAAA,GACPtD,OAAKsD,CAAAA,SAAAA,CAAAA,CAAY,EAClB,EACA,CAAA,GAAA,CAAA,CAEgBkO,IAAKC,CAAAA,IAAAA,CAAK/R,CAAO2R,CAAAA,SAAAA,CAAAA,EAAcG,IAAKE,CAAAA,KAAAA,CAAMhS,CAAOiS,CAAAA,YAAAA,CAAejS,CAAOkS,CAAAA,YAAAA,CAAAA,EAAAA,CACvE5R,IAAK8D,CAAAA,WAAAA,EACpB9D,IAAKqG,CAAAA,IAAAA,CAAK,kBAAmB,CAC3BgL,SAAAA,CAAW3R,CAAO2R,CAAAA,SAAAA,CAClBC,UAAY5R,CAAAA,CAAAA,CAAO4R,UACnB/N,CAAAA,IAAAA,CAAMvD,IAAKuD,CAAAA,IAAAA,CACXsO,UAAY,CAAA,CAAA,CAAA,CAAA,CAGnB,EAED,GAAA/Q,GAAA,wBAAAC,KAAA,UAAAgQ,oBAAAA,CAAqBjN,CAAAA,CAAAA,KAAAA,sBAAAA,CAAAA,OAAAA,MACnB,GAAMgO,CAAAA,CAASC,CAAAA,CAAAA,CAA2BhB,oBACxCjN,CAAAA,CAAAA,CACA9D,IAAKyD,CAAAA,mBAAAA,CACLzD,IAAKwD,CAAAA,IAAAA,CACLxD,IAAKgK,CAAAA,cAAAA,CAAeS,IAAKzK,CAAAA,IAAAA,CAAAA,EAAAA,sBAAAA,CACzBA,IAAKmK,CAAAA,gBAAAA,UAAAA,sBAAAA,iBAALnK,sBAAAA,CAAuBuK,aAErBvK,CAAAA,CAAAA,IAAAA,CAAK0F,QACP1F,IAAKgD,CAAAA,aAAAA,CAAcsE,0BACnBtH,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+I,cAAeC,CAAAA,IAAAA,CAAK,UACvBgJ,CAAAA,qBAAAA,CAAsB,WAClBhS,OAAKsO,CAAAA,mBAAAA,CAAAA,CAAqB,EAC1B,CAAA,EAAA,CAAA,EAGNtO,IAAKsO,CAAAA,mBAAAA,CAAAA,CAAAA,CAEPtO,IAAKwD,CAAAA,IAAAA,CAAOsO,EAAOG,aACnBjS,CAAAA,IAAAA,CAAKqF,aAAgByM,CAAAA,CAAAA,CAAOzM,aAC5BrF,CAAAA,IAAAA,CAAKuF,YAAe,CAAA,CAAA,CAAA,CACpBvF,IAAKS,CAAAA,aAAAA,CAAAA,CACN,EAEO,GAAAK,GAAA,iBAAAC,KAAA,UAAAmR,aAAAA,CAAczL,CAAAA,CAAAA,CACpBzG,IAAK2C,CAAAA,qBAAAA,CAAsBwP,aAAY,CACvCnS,CAAAA,CAAAA,IAAAA,CAAK2C,qBAAsByP,CAAAA,gBAAAA,CAAiB3L,CAC7C,CAAA,EAGD,GAAA3F,GAAA,wBAAAC,KAAA,UAAAsR,oBAAAA,CAAAA,CAAAA,CACMrS,IAAK2E,CAAAA,QAAAA,GACP3E,IAAK6E,CAAAA,IAAAA,CAAAA,CAAO,CACZ7E,CAAAA,IAAAA,CAAKsS,gBAER,CAAA,CAAA,CAAA,EAID,GAAAxR,GAAA,qBAAAC,KAAA,UAAAwR,iBAAAA,CAAAA,CACEvS,CAAAA,IAAAA,CAAKkJ,gBACLlJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKS,aAGDT,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0F,MAAU1F,EAAAA,IAAAA,CAAKgD,aAAciE,CAAAA,sBAAAA,EACpCjH,IAAKgD,CAAAA,aAAAA,CAAcsE,0BAEtB,CAAA,CAAA,EAGD,GAAAxG,GAAA,oBAAAC,KAAA,UAAAyR,gBAAAA,CAAAA,CAAAA,CACMxS,KAAKwD,IAAKyF,CAAAA,MAAAA,CAAS,CAAKjJ,EAAAA,IAAAA,CAAK6E,IAAS7E,EAAAA,CAAAA,IAAAA,CAAKuF,YAAiBvF,EAAAA,CAAAA,IAAAA,CAAK8D,cACnE9D,IAAKyD,CAAAA,mBAAAA,CAAAA,kBAAAA,CAA0BzD,IAAAA,CAAKwD,IAEtCxD,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkJ,gBAEAlJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAKmE,gBAAmBnE,IAAKoE,CAAAA,OAAAA,EAAgC,CAArBpE,GAAAA,IAAAA,CAAKwD,IAAKyF,CAAAA,MAAAA,CAE5CjJ,IAAKwD,CAAAA,IAAAA,CAAKyF,MAAS,CAAA,CAAA,GAC5BjJ,IAAKqF,CAAAA,aAAAA,CAAAA,CAAgB,CAFrBrF,CAAAA,CAAAA,IAAAA,CAAKqF,aAAgB,CAAA,CAAA,CAAA,CAIvBrF,KAAKS,aAGLT,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgD,aAAcmL,CAAAA,mBAAAA,CAAAA,CAAAA,CAGfnO,IAAK0F,CAAAA,MAAAA,EAAU1F,IAAKgD,CAAAA,aAAAA,CAAciE,sBACpCjH,EAAAA,IAAAA,CAAKgD,aAAcsE,CAAAA,0BAAAA,CAAAA,CAEtB,EAGD,GAAAxG,GAAA,gCAAAC,KAAA,UAAA0R,4BAAAA,CAAAA,CACMzS,CAAAA,IAAAA,CAAKe,OAASf,IAAKwD,CAAAA,IAAAA,CAAKyF,MAAS,CAAA,CAAA,GACnCjJ,IAAKkJ,CAAAA,gBAAAA,CAAAA,CAAAA,CACLlJ,IAAKS,CAAAA,aAAAA,CAAAA,CAAAA,CAER,EAGD,GAAAK,GAAA,8BAAAC,KAAA,UAAA2R,0BAAAA,CAAAA,CAEO1S,CAAAA,IAAAA,CAAKmE,cAAuC,EAAA,CAAA,GAArBnE,IAAKwD,CAAAA,IAAAA,CAAKyF,SACpCjJ,IAAKqF,CAAAA,aAAAA,CAAAA,CAAgB,CAEvBrF,CAAAA,CAAAA,IAAAA,CAAKS,aAGDT,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0F,MAAU1F,EAAAA,IAAAA,CAAKgD,cAAciE,sBACpCjH,EAAAA,IAAAA,CAAKgD,aAAcsE,CAAAA,0BAAAA,CAAAA,CAEtB,EAGD,GAAAxG,GAAA,4BAAAC,KAAA,UAAA4R,wBAAAA,CAAAA,CACM3S,CAAAA,IAAAA,CAAK6E,OACH7E,IAAK0F,CAAAA,MAAAA,CACP1F,IAAKgD,CAAAA,aAAAA,CAAc4P,iBAEnB5S,CAAAA,CAAAA,CAAAA,IAAAA,CAAKgD,aAAcwG,CAAAA,mBAAAA,CAAAA,CAAAA,CAGxB,EAGK,GAAA1I,GAAA,oBAAAC,KAAA,gBAAA8R,iBAAA,CAAAlR,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,UAAAiR,SAAA,SAAAlR,mBAAA,GAAAG,IAAA,UAAAgR,UAAAC,SAAA,iBAAAA,SAAA,CAAA9Q,IAAA,CAAA8Q,SAAA,CAAA7Q,IAAA,cACAnC,IAAAA,CAAK6E,IAAS7E,EAAAA,CAAAA,IAAAA,CAAK2E,QACrB3E,GAAAA,SAAAA,CAAAA,IAAAA,UAAAA,IAAAA,CAAK8F,aAAc,CACb9F,CAAAA,SAAAA,CAAAA,IAAAA,SAAAA,KAAAA,CAAK+I,cACL/I,QAAAA,SAAAA,CAAAA,IAAAA,SAAAA,KAAAA,CAAKiT,UAEPjT,CAAAA,CAAAA,QAAAA,IAAAA,CAAK0F,MACP1F,EAAAA,IAAAA,CAAKgD,cAAc4P,iBAGf5S,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,IAAAA,iBAAAA,SAAAA,CAAAA,IAAAA,UAAAA,KAAAA,CAAKkT,WACXlT,CAAAA,CAAAA,SAAAA,IAAAA,CAAK8F,WAAc,CAAA,CAAA,CAAA,CAEf9F,IAAK0F,CAAAA,MAAAA,EACP1F,KAAKgD,aAAcwG,CAAAA,mBAAAA,CAAAA,CAAAA,0BAAAA,SAAAA,CAAAA,IAAAA,MAAAA,QAAAA,QAKjB,WAnBF,CAAA8I,gBAAAA,CAAAA,SAAAA,iBAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAA,CAAAA,gBAAAA,OAAAA,GAAAA,cAAAA,KAAAA,gBAAAA,WAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAmBE,SAAAa,SAAA,MAAAC,UAAA,CAAAC,WAAA,CAAAC,YAAA,KAAAC,EAAA,CAAA9T,CAAA,CAAAc,CAAA,QAAAqB,mBAAA,GAAAG,IAAA,UAAAyR,UAAAC,SAAA,iBAAAA,SAAA,CAAAvR,IAAA,CAAAuR,SAAA,CAAAtR,IAAA,SACNnC,IAAAA,CAAKqG,IAAK,CAAA,WAAA,CAAa,CAAEtF,KAAAA,CAAOf,IAAKe,CAAAA,KAAAA,CAAOwC,IAAMvD,CAAAA,IAAAA,CAAKuD,IACvDvD,CAAAA,CAAAA,CAAAA,IAAAA,CAAK2K,mBACL3K,IAAKqF,CAAAA,aAAAA,CAAAA,GAAAA,UAAAA,CAAiBrF,IAAKwD,CAAAA,IAAAA,UAAAA,UAAAA,WAALxD,UAAAA,CAAWiJ,MAE3ByK,EAAAA,SAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAe1T,IAIjBA,CAAAA,QAAAA,CAAAA,WAAAA,KAAAA,CAAK+G,qCAAL/G,WAAAA,CAAY+G,KACd/G,GAAAA,IAAAA,CAAK+G,KAAMA,CAAAA,KAAAA,CAAMsE,KAAMsI,CAAAA,UAAAA,CAAa,QAGtC3T,CAAAA,CAAAA,IAAAA,CAAK+G,MAAM6M,MAAS,CAAA,CAAA,CAAA,CAAAH,SAAA,CAAAtR,IAAA,SAGd,IAAI0R,CAAAA,OAAAA,CAAQC,SAAAA,CAAW9B,QAAAA,CAAAA,qBAAAA,CAAsB8B,CAE7C,CAAA,EAAA,CAAA,QAAAL,SAAA,CAAAtR,IAAA,UAAA,IAAI0R,CAAAA,OAAQC,CAAAA,SAAAA,CAAAA,QAAW9B,CAAAA,qBAAsB8B,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,SAG/C9T,EAAAA,YAAAA,KAAK+G,CAAAA,KAAAA,UAAAA,YAAAA,iBAAL/G,YAAAA,CAAY+G,KACd/G,IAAAA,IAAAA,CAAK+G,MAAMA,KAAMsE,CAAAA,KAAAA,CAAMsI,UAAa,CAAA,EAAA,CAAA,CAAAJ,EAAA,CAGPQ,CAAAA,CAAa/T,IAAM,CAAA,aAAA,CAAe,CAC/DgU,GAAAA,CAAK,KAEDC,CAAAA,CAAAA,CAHEC,CAASC,CAAAA,EAAAA,CAAXD,SAAAA,CAAaC,CAAYJ,CAAAA,EAAAA,CAAdI,OAAAA,CAAAA,SAAAA,CAAAA,IAAAA,UAGXF,CAAAA,CAAAA,CAAUjU,KAAK+G,KAAMA,CAAAA,KAAAA,CAAOmN,CAAWC,CAAAA,CAAAA,CAAAA,SAEzCnU,IAAK+F,CAAAA,6BAAAA,GACP/F,IAAKuF,CAAAA,YAAAA,CAAAA,CAAe,CACpBvF,CAAAA,IAAAA,CAAKwD,IAAO,CAAAwI,kBAAA,CAAIhM,IAAKyD,CAAAA,mBAAAA,CAAAA,CACrBzD,IAAK+F,CAAAA,6BAAAA,CAAAA,CAAgC,GAGnC/F,IAAKgE,CAAAA,sBAAAA,EACPhE,IAAK4L,CAAAA,6BAAAA,CAAAA,CAAAA,CAGP5L,IAAK+Q,CAAAA,oBAAAA,CAAqB,EAC1B/Q,CAAAA,CAAAA,IAAAA,CAAKsO,sBACLtO,IAAKqG,CAAAA,IAAAA,CAAK,iBAAmB,CAAA,CAAEtF,KAAOf,CAAAA,IAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,KAAKuD,IAC9D,CAAA,CAAA,0BAAAkQ,SAAA,CAAArR,IAAA,MAAA+Q,QAAA,QAEO,WA7CA,CAAAF,UAAMA,CAAAA,SAAAA,WAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAN,CAAAA,UAAMA,OAAAA,GAAAA,eAAAA,KAAAA,gBAAAA,YAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CA6CN,SAAAmB,SAAA,MAAAC,YAAA,KAAAC,GAAA,CAAA7U,CAAA,CAAAc,CAAA,QAAAqB,mBAAA,GAAAG,IAAA,UAAAwS,UAAAC,SAAA,iBAAAA,SAAA,CAAAtS,IAAA,CAAAsS,SAAA,CAAArS,IAAA,SACNnC,IAAK6L,CAAAA,+BAAAA,CAAAA,CAAAA,CACL7L,IAAKqG,CAAAA,IAAAA,CAAK,WAAa,CAAA,CAAEtF,KAAOf,CAAAA,IAAAA,CAAKe,KAAOwC,CAAAA,IAAAA,CAAMvD,IAAKuD,CAAAA,IAAAA,CAAAA,CAAAA,CACvDvD,KAAKoJ,mBAELpJ,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+F,6BAAgC/F,CAAAA,IAAAA,CAAKuF,YAEpCmO,CAAAA,SAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAe1T,IACrB,CAAA,QAAAsU,GAAA,CAA+BP,CAAAA,CAAa/T,IAAM,CAAA,aAAA,CAAe,CAC/DgU,GAAAA,CAAK,QADCE,CAASC,CAAAA,GAAAA,CAAXD,UAAaC,CAAYJ,CAAAA,GAAAA,CAAdI,OAAAA,CAAAA,SAAAA,CAAAA,IAAAA,SAGXF,CAAAA,CAAUjU,CAAAA,IAAAA,CAAK+G,KAAMA,CAAAA,KAAAA,CAAOmN,CAAWC,CAAAA,CAAAA,CAAAA,QAC7CnU,IAAK+G,CAAAA,KAAAA,CAAM6M,MAAS,CAAA,CAAA,CAAA,CAGhB5T,CAAAA,YAAAA,KAAK+G,CAAAA,KAAAA,UAAAA,YAAAA,WAAL/G,YAAAA,CAAY+G,KACd/G,GAAAA,IAAAA,CAAK+G,KAAMA,CAAAA,KAAAA,CAAMsE,MAAMsI,UAAa,CAAA,EAAA,CAAA,CAGtC3T,IAAK8D,CAAAA,WAAAA,CAAc,EAGnB9D,CAAAA,IAAAA,CAAKgD,aAAcmL,CAAAA,mBAAAA,CAAAA,CAAAA,CAEnBnO,KAAKqG,IAAK,CAAA,iBAAA,CAAmB,CAAEtF,KAAAA,CAAOf,IAAKe,CAAAA,KAAAA,CAAOwC,IAAMvD,CAAAA,IAAAA,CAAKuD,MAC9D,0BAAAiR,SAAA,CAAApS,IAAA,MAAAgS,QAAA,QAED,WA3BclB,CAAAA,WAAAA,CAAAA,SAAAA,YAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,WAAAA,OAAAA,GAAAA,QAAAA,KAAAA,gBAAAA,KAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CA2Bd,SAAAuB,SAAA,SAAA7S,mBAAA,GAAAG,IAAA,UAAA2S,UAAAC,SAAA,iBAAAA,SAAA,CAAAzS,IAAA,CAAAyS,SAAA,CAAAxS,IAAA,cACE,CAAInC,IAAK6E,CAAAA,IAAAA,EAAAA,CAAQ7E,IAAK2E,CAAAA,QAAAA,GAAAA,SAAAA,CAAAA,IAAAA,iBAAAA,SAAAA,CAAAA,MAAAA,WAKtB3E,IAAAA,CAAK6E,IAAO,CAAA,CAAA,CAAA,CACL+P,CAAa5U,CAAAA,IAAAA,CAAM,iBALxBA,CAAAA,UAAAA,IAAAA,CAAK6E,MAAO,CAMf,yBAAA8P,SAAA,CAAAvS,IAAA,MAAAqS,QAAA,QAED,WAVA,CAAAlH,IAAMA,CAAAA,SAAAA,KAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAN,CAAAA,IAAMA,OAAAA,GAAAA,QAAAA,KAAAA,gBAAAA,KAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAUN,SAAAsH,SAAA,SAAAjT,mBAAA,GAAAG,IAAA,UAAA+S,UAAAC,SAAA,iBAAAA,SAAA,CAAA7S,IAAA,CAAA6S,SAAA,CAAA5S,IAAA,cACOnC,IAAAA,CAAK6E,IAAQ7E,EAAAA,CAAAA,IAAAA,CAAK2E,QAMvB,GAAAoQ,SAAA,CAAA5S,IAAA,iBAAA4S,SAAA,CAAAC,MAAA,WADAhV,IAAK6E,CAAAA,IAAAA,CAAAA,CAAO,CACL+P,CAAAA,CAAAA,CAAa5U,IAAM,CAAA,iBAAA,CAAA,UALxBA,KAAK6E,IAAO,CAAA,CAAA,CAMf,yBAAAkQ,SAAA,CAAA3S,IAAA,MAAAyS,QAAA,QAED,WAVMzO,CAAAA,IAAAA,CAAAA,SAAAA,KAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,IAAAA,OAAAA,GAAAA,iBAAAA,KAAAA,CAUN,SAAA6O,aAAAA,CAAAA,CACE,CAAA,MAAOjV,KAAKuI,CAAAA,UAAAA,CAAW0M,aACxB,CAAA,CAAA,EAED,GAAAnU,GAAA,WAAAC,KAAA,UAAAmU,OAAAA,CAAAA,CAAAA,CACE,MAAOlV,KAAAA,CAAK2C,qBAAsBuS,CAAAA,OAAAA,CAAAA,CACnC,EAED,GAAApU,GAAA,kBAAAC,KAAA,UAAAoU,cAAAA,CAAAA,CAAAA,CACE,MAAOnV,KAAAA,CAAKuI,UAAW4M,CAAAA,cAAAA,CAAAA,CACxB,EAED,GAAArU,GAAA,qBAAAC,KAAA,UAAAqU,iBAAAA,CAAkBjO,CAChBnH,CAAAA,CAAAA,IAAAA,CAAKuI,UAAW6M,CAAAA,iBAAAA,CAAkBjO,CAClCnH,CAAAA,CAAAA,IAAAA,CAAK2C,qBAAsB8N,CAAAA,cAAAA,CAAAA,CAC5B,EAED,GAAA3P,GAAA,SAAAC,KAAA,UAAAqM,KAAAA,CAAM+G,CACJnU,CAAAA,CAAAA,IAAAA,CAAKmN,YAAaC,CAAAA,KAAAA,CAAM+G,CACzB,CAAA,EAED,GAAArT,GAAA,QAAAC,KAAA,UAAAsU,IAAAA,CAAAA,CAAAA,CACErV,IAAKmN,CAAAA,YAAAA,CAAakI,IACnB,CAAA,CAAA,EAED,GAAAvU,GAAA,iBAAAC,KAAA,UAAAuU,aAAAA,CAAc7O,GACZA,CAAMyG,CAAAA,eAAAA,CAAAA,CACP,EAED,GAAApM,GAAA,UAAAC,KAAA,UAAAwU,MAAAA,CAAAA,CACE,CAAA,GAAMC,CAAAA,CAAexV,CAAAA,IAAAA,CAAK8C,kBAAkByI,IAAK,CAAA,OAAA,CAAA,CACzBvL,IAAK8C,CAAAA,iBAAAA,CAAkByI,IAAK,CAAA,WAAA,CAAA,CACpD,GAAMkK,CAAAA,CAAAA,CAAqBzV,KAAK8C,iBAAkByI,CAAAA,IAAAA,CAAK,cACjDmK,CAAAA,CAAAA,CAAAA,CAAkB1V,IAAK8C,CAAAA,iBAAAA,CAAkByI,IAAK,CAAA,eAAA,CAAA,CAC9CoK,CAAW3V,CAAAA,CAAAA,CAAAA,IAAAA,CAAKiF,KAAiBuQ,EAAAA,CAAAA,CAAAA,CAAAA,CACjCI,CACJ5V,CAAAA,IAAAA,CAAK4E,SAAc5E,EAAAA,CAAAA,IAAAA,CAAK2E,UAAY3E,IAAKe,CAAAA,KAAAA,CAAMkI,MAAS,CAAA,CAAA,CACpD4M,CAAyB7V,CAAAA,CAAAA,CAAAA,IAAAA,CAAK4D,WAAqC,EAAA,CAAA,GAAtB5D,KAAKe,KAAMkI,CAAAA,MAAAA,CACxD6M,CAAgB9V,CAAAA,CAAAA,CAAAA,IAAAA,CAAKsE,QACrByR,CAAAA,CAAAA,CAAAA,CAAAA,CAAoB/V,IAAKuE,CAAAA,YAAAA,CAE/B,MAAOyR,CAAAA,CAAI,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA,6HAGCC,CAAAA,CAAS,CACf,cAAgB,CAAA,CAAA,CAAA,CAChB,qBAAqC,CAAA,OAAA,GAAdnW,KAAK2D,IAC5B,CAAA,sBAAA,CAAsC,QAAd3D,GAAAA,IAAAA,CAAK2D,KAC7B,qBAAqC,CAAA,OAAA,GAAd3D,KAAK2D,IAC5B,CAAA,yBAAA,CAA2BgS,EAC3B,6BAA+BG,CAAAA,CAAAA,CAAAA,CAAAA,CAG/B9V,IAAAA,CAAKoW,YAAYT,CAAUF,CAAAA,CAAAA,CAAAA,CAC3BzV,IAAAA,CAAKqW,sBAAuBX,CAAAA,CAAAA,CAAiBE,CAAcC,CAAAA,CAAAA,CAAsBC,CAAaC,CAAAA,CAAAA,CAAAA,EAGrG,CAEO,GAAAjV,GAAA,eAAAC,KAAA,UAAAqV,WAAAA,CAAYT,CAAmBF,CAAAA,CAAAA,CAAAA,CACrC,MAAOO,CAAAA,CAAI,CAAAM,gBAAA,GAAAA,gBAAA,CAAAJ,sBAAA,0PAKOP,CAAAA,CAAW,OAAU,CAAA,MAAA,CAC1B3V,IAAKuO,CAAAA,gBAAAA,CAEOvO,IAAKiF,CAAAA,KAAAA,CAG1BwQ,CAAAA,CAAqBO,CAAI,CAAAO,gBAAA,GAAAA,gBAAA,CAAAL,sBAAA,8CAAwC,EAAA,EAEtE,CAEO,GAAApV,GAAA,0BAAAC,KAAA,UAAAsV,sBAAAA,CACNX,CACAE,CAAAA,CAAAA,CACAC,EACAC,CACAC,CAAAA,CAAAA,CAAAA,CAEA,MAAOC,CAAAA,CAAI,CAAAQ,gBAAA,GAAAA,gBAAA,CAAAN,sBAAA,4HAELlW,IAAKyW,CAAAA,WAAAA,CAAYf,EAAiBE,CAAcC,CAAAA,CAAAA,CAAAA,CAChD7V,IAAAA,CAAK0W,eAAeZ,CAAaC,CAAAA,CAAAA,CAAAA,EAGxC,CAEO,GAAAjV,GAAA,eAAAC,KAAA,UAAA0V,WAAAA,CAAYf,CAAAA,CAA0BE,CAAuBC,CAAAA,CAAAA,CAAAA,CACnE,MAAOG,CAAAA,CAAI,CAAAW,gBAAA,GAAAA,gBAAA,CAAAT,sBAAA,+VAECC,CAAS,CAAA,CACfS,MAAQ,CAAA,CAAA,CAAA,CACR,iBAAmB5W,CAAAA,IAAAA,CAAKwE,QACxB,eAAiBxE,CAAAA,IAAAA,CAAKyE,KACtB,CAAA,iBAAA,CAAmBzE,IAAK0E,CAAAA,OAAAA,CACxB,oBAAoB,CACpB,CAAA,gBAAA,CAAkB1E,IAAK+E,CAAAA,MAAAA,CACvB,cAAgB/E,CAAAA,IAAAA,CAAKgF,KACrB,cAAgBhF,CAAAA,IAAAA,CAAK6E,IACrB,CAAA,kBAAA,CAAoB7E,IAAK2E,CAAAA,QAAAA,CACzB,mBAAoB3E,IAAKqE,CAAAA,QAAAA,CACzB,iBAAmBrE,CAAAA,IAAAA,CAAKkD,QACxB,CAAA,6BAAA,CAA+B2S,EAC/B,aAAkC,CAAA,KAAA,GAAnB7V,IAAKkF,CAAAA,SAAAA,CACpB,gBAAqC,CAAA,QAAA,GAAnBlF,KAAKkF,SACvB,CAAA,eAAA,CAA+B,OAAdlF,GAAAA,IAAAA,CAAK2D,IACtB,CAAA,gBAAA,CAAgC,WAAd3D,IAAK2D,CAAAA,IAAAA,CACvB,eAA+B,CAAA,OAAA,GAAd3D,IAAK2D,CAAAA,IAAAA,CAAAA,CAAAA,CAEZ3D,IAAKkF,CAAAA,SAAAA,CACNlF,IAAK0F,CAAAA,MAAAA,EAAoB1F,IAAK8E,CAAAA,KAAAA,CAAhB,OAAkC,CAAA,UAAA,EAElD9E,IAAK0F,CAAAA,MAAAA,EACJ1F,IAAK0F,CAAAA,MAAAA,CACRmR,CAAW7W,CAAAA,IAAAA,CAAKyF,gBAAwB8D,EAAV,CAAA,OAAA,CAAA,CAKnCvJ,IAAAA,CAAK8W,kBAAmBpB,CAAAA,CAAAA,CAAAA,CACxB1V,IAAAA,CAAK+W,eAAerB,CAAiBE,CAAAA,CAAAA,CAAAA,CACrC5V,IAAK8F,CAAAA,WAAAA,CAAc9F,IAAKgX,CAAAA,aAAAA,CAAAA,CAAAA,CAAkBhB,CAAI,CAAAiB,gBAAA,GAAAA,gBAAA,CAAAf,sBAAA,QAAA,EAGrD,CAEO,GAAApV,GAAA,sBAAAC,KAAA,UAAA+V,kBAAAA,CAAmBpB,CACzB,CAAA,CAAA,MAAOA,CAAAA,EACHM,CAAI,CAAAkB,gBAAA,GAAAA,gBAAA,CAAAhB,sBAAA,iLAISlW,IAAK8O,CAAAA,qBAAAA,CACH9O,IAAKwO,CAAAA,uBAAAA,EAEpBwH,CAAI,CAAAmB,gBAAA,GAAAA,gBAAA,CAAAjB,sBAAA,QACT,EAEO,GAAApV,GAAA,kBAAAC,KAAA,UAAAgW,cAAAA,CAAerB,CAA0BE,CAAAA,CAAAA,CAAAA,CAC/C,MAAOI,CAAAA,CAAI,CAAAoB,gBAAA,GAAAA,gBAAA,CAAAlB,sBAAA,iQAGCC,CAAS,CAAA,CACfkB,gBAAkB,CAAA,CAAA,CAAA,CAClB,sBAAwB3B,CAAAA,CAAAA,CAAAA,CAAAA,CAGf1V,IAAK8O,CAAAA,qBAAAA,CACH9O,IAAKwO,CAAAA,uBAAAA,CAEhBxO,IAAKsX,CAAAA,YAAAA,CAAAA,CAAAA,CACLtX,IAAKuX,CAAAA,kBAAAA,CAAAA,CAAAA,CACLvX,IAAKwX,CAAAA,UAAAA,CAAAA,CAAAA,CACLxX,IAAKyX,CAAAA,gBAAAA,CAAAA,CAAAA,CACLzX,IAAAA,CAAK0X,iBAAkB9B,CAAAA,CAAAA,CAAAA,CACvB5V,IAAK2X,CAAAA,YAAAA,CAAAA,CAAAA,CACL3X,IAAK4X,CAAAA,gBAAAA,CAAAA,CAAAA,EAGZ,CAEO,GAAA9W,GAAA,gBAAAC,KAAA,UAAAuW,YAAAA,CAAAA,CACN,CAAA,MAAOtB,CAAAA,CAAI,CAAA6B,iBAAA,GAAAA,iBAAA,CAAA3B,sBAAA,gHAICC,CAAAA,CAAS,CACf2B,cAAAA,CAAAA,CAAgB,CAChBzT,CAAAA,QAAAA,CAAUrE,IAAKqE,CAAAA,QAAAA,CAAAA,CAAAA,EAItB,CAEO,GAAAvD,GAAA,sBAAAC,KAAA,UAAAwW,kBAAAA,CAAAA,CACN,CAAA,MAAOvB,CAAAA,CAAI,CAAA+B,iBAAA,GAAAA,iBAAA,CAAA7B,sBAAA,kjBAKOlW,IAAK4D,CAAAA,WAAAA,CACP5D,IAAK2E,CAAAA,QAAAA,CACR3E,IAAKmD,CAAAA,YAAAA,CAMEnD,IAAAA,CAAK6E,KAAO,MAAS,CAAA,OAAA,CAGrB7E,IAAAA,CAAK2E,SAAW,MAAS,CAAA,OAAA,EAM9C,CAEO,GAAA7D,GAAA,cAAAC,KAAA,UAAAyW,UAAAA,CAAAA,CAAAA,KAAAA,OAAAA,MACN,MAAOxX,KAAAA,CAAKqE,SACR2R,CAAI,CAAAgC,iBAAA,GAAAA,iBAAA,CAAA9B,sBAAA,2GAEElW,IAAKoD,CAAAA,eAAAA,CAAgB6U,GAAI,CAAA,SAAC5I,CAAQ6I,CAAAA,CAAAA,CAAAA,CAClC,GACEA,CAAQlY,CAAAA,OAAAA,CAAK2F,iBACb3F,EAAAA,OAAAA,CAAK2F,iBAAqB,EAAA,CAAA,CAC1B,CACA,GAAMwS,CAAAA,EAAAA,CAAU,CACdC,iBAAAA,CACEF,CAAQ,CAAA,CAAA,CAAIlY,OAAK4F,CAAAA,oBAAAA,EACjB5F,OAAK2F,CAAAA,iBAAAA,GAAsB0S,CAE/B,CAAA,CAAA,CAAA,CAAA,MAAOrC,CAAAA,CAAI,CAAAsC,iBAAA,GAAAA,iBAAA,CAAApC,sBAAA,8lBAECC,CAASgC,CAAAA,EAAAA,CAAAA,CAQTnY,OAAKgF,CAAAA,IAAAA,CACNhF,OAAK2D,CAAAA,IAAAA,CAEI8C,SAAAA,CACdzG,QAAAA,CAAAA,OAAAA,CAAK8P,gBAAgBrJ,CAAO4I,CAAAA,CAAAA,CAAAA,GAE5BA,CAAOmB,CAAAA,YAAAA,CAAAA,CAAAA,EAGd,CAAM,MAAI0H,CAAAA,CAAAA,GAAUlY,OAAK2F,CAAAA,iBAAAA,CACjBqQ,CAAI,CAAAuC,iBAAA,GAAAA,iBAAA,CAAArC,sBAAA,2IAEHlW,OAAAA,CAAKoD,gBAAgB6F,MAASiP,CAAAA,CAAAA,EAI/B,IACR,EAAA,CAAA,EAIPlC,CAAI,CAAAwC,iBAAA,GAAAA,iBAAA,CAAAtC,sBAAA,QACT,EAEO,GAAApV,GAAA,oBAAAC,KAAA,UAAA0W,gBAAAA,CAAAA,CAAAA,KAAAA,OAAAA,MACN,MAAOzB,CAAAA,CAAI,CAAAyC,iBAAA,GAAAA,iBAAA,CAAAvC,sBAAA,uQAIKlW,IAAK2E,CAAAA,QAAAA,CACL3E,IAAKoF,CAAAA,QAAAA,CACRwI,KAAAA,CAAMC,QAAQ7N,IAAKe,CAAAA,KAAAA,CAAAA,CACxBf,KAAKe,KAAM2X,CAAAA,IAAAA,CAAK,MAChB1Y,IAAKe,CAAAA,KAAAA,CAGA,iBAAMf,CAAAA,OAAKoN,CAAAA,KAAAA,CAAAA,CAAAA,GACTpN,IAAKkS,CAAAA,aAAAA,EAGrB,CAEO,GAAApR,GAAA,qBAAAC,KAAA,UAAA2W,iBAAAA,CAAkB9B,CACxB,CAAA,CAAA,MAAOA,CAAAA,EACHI,CAAI,CAAA2C,iBAAA,GAAAA,iBAAA,CAAAzC,sBAAA,uhBAMalW,IAAKmP,CAAAA,oBAAAA,CACTnP,IAAK+O,CAAAA,gBAAAA,EAQlBiH,CAAI,CAAA4C,iBAAA,GAAAA,iBAAA,CAAA1C,sBAAA,QACT,EAEO,GAAApV,GAAA,gBAAAC,KAAA,UAAA4W,YAAAA,CAAAA,CAAAA,CACN,MAAO3B,CAAAA,CAAI,CAAA6C,iBAAA,GAAAA,iBAAA,CAAA3C,sBAAA,gHAICC,CAAAA,CAAS,CACf2C,cAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,EAIvB,CAEO,GAAAhY,GAAA,oBAAAC,KAAA,UAAA6W,gBAAAA,CAAAA,CACN,CAAA,MAAO5B,CAAAA,CAAI,CAAA+C,iBAAA,GAAAA,iBAAA,CAAA7C,sBAAA,iVASZ,CAEO,GAAApV,GAAA,iBAAAC,KAAA,UAAAiW,aAAAA,CAAAA,CACN,CAAA,MAAOhB,CAAAA,CAAI,CAAAgD,iBAAA,GAAAA,iBAAA,CAAA9C,sBAAA,8XAISlW,IAAAA,CAAK6E,KAAO,MAAS,CAAA,OAAA,CACd7E,IAAAA,CAAKqE,SAAW,MAAS,CAAA,OAAA,CAGvBrE,IAAAA,CAAK+D,aAC1B,CAAA,yBAAA,CACA,EAAM/D,CAAAA,IAAAA,CAAK0F,OAAS,8BAAiC,CAAA,EAAA,CAE9C1F,IAAKoP,CAAAA,iBAAAA,CACRpP,IAAAA,CAAK0F,OAAS,gBAAmB,CAAA,EAAA,CAEvC1F,IAAKiZ,CAAAA,YAAAA,CAAAA,CAAAA,CACLjZ,IAAKkZ,CAAAA,YAAAA,CAAAA,CAAAA,CACLlZ,IAAKmZ,CAAAA,qBAAAA,CAAAA,CAAAA,CACLnZ,IAAKoZ,CAAAA,YAAAA,CAAAA,CAAAA,EAGZ,CAEO,GAAAtY,GAAA,gBAAAC,KAAA,UAAAkY,YAAAA,CAAAA,CAAAA,CACN,MAAOjZ,KAAAA,CAAK+D,cACRiS,CAAI,CAAAqD,iBAAA,GAAAA,iBAAA,CAAAnD,sBAAA,8iBAKWlW,IAAK8D,CAAAA,WAAAA,CACC9D,IAAKiE,CAAAA,yBAAAA,CACNjE,IAAK4Q,CAAAA,kBAAAA,CACL5Q,IAAK0Q,CAAAA,iBAAAA,CACH1Q,IAAKsV,CAAAA,aAAAA,EAM3BU,CAAI,CAAAsD,iBAAA,GAAAA,iBAAA,CAAApD,sBAAA,QACT,EAEO,GAAApV,GAAA,gBAAAC,KAAA,UAAAmY,YAAAA,CAAAA,EACN,MAAIlZ,KAAAA,CAAKoE,QACA4R,CAAI,CAAAuD,iBAAA,GAAAA,iBAAA,CAAArD,sBAAA,qJAOTlW,IAAAA,CAAKmE,eACA6R,CAAI,CAAAwD,iBAAA,GAAAA,iBAAA,CAAAtD,sBAAA,gOAUNF,CAAI,CAAAyD,iBAAA,GAAAA,iBAAA,CAAAvD,sBAAA,QACZ,EAEO,GAAApV,GAAA,gBAAAC,KAAA,UAAAqY,YAAAA,CAAAA,EACN,MAAOpZ,KAAAA,CAAKqE,SACR2R,CAAI,CAAA0D,iBAAA,GAAAA,iBAAA,CAAAxD,sBAAA,8eAGwBlW,IAAAA,CAAKoE,QAAU,SAAY,CAAA,EAAA,CACzCpE,IAAKwN,CAAAA,iBAAAA,CAGHxN,IAAKyN,CAAAA,kBAAAA,CAIgC,CAAA,GAAhCzN,KAAKoD,eAAgB6F,CAAAA,MAAAA,CACtBjJ,IAAKuF,CAAAA,YAAAA,CAKa,CAAhCvF,GAAAA,IAAAA,CAAKoD,eAAgB6F,CAAAA,MAAAA,CACnB+M,CAAI,CAAA2D,iBAAA,GAAAA,iBAAA,CAAAzD,sBAAA,mNAGUlW,IAAKqO,CAAAA,WAAAA,EAKnB,EAAA,EAGR2H,CAAI,CAAA4D,iBAAA,GAAAA,iBAAA,CAAA1D,sBAAA,QACT,EAEO,GAAApV,GAAA,kBAAAC,KAAA,UAAA2V,cAAAA,CAAeZ,CAAsBC,CAAAA,CAAAA,CAAAA,CAC3C,MAAOC,CAAAA,CAAI,CAAA6D,iBAAA,GAAAA,iBAAA,CAAA3D,sBAAA,oCACPJ,CACEE,CAAAA,CAAI,CAAA8D,iBAAA,GAAAA,iBAAA,CAAA5D,sBAAA,wDAAyBlW,IAAAA,CAAKsE,QAClC,EAAA,EAAA,CACFyR,CAAAA,CACEC,CAAI,CAAA+D,iBAAA,GAAAA,iBAAA,CAAA7D,sBAAA,sHAEGlW,IAAKuE,CAAAA,YAAAA,EAGZ,EAAA,EAEP,CAED,GAAAzD,GAAA,yBAAAC,KAAA,UAAAoY,qBAAAA,CAAAA,oDACE,MAAOa,CAAAA,CAAAA,CAAsBb,sBAC3BnZ,IAAKwD,CAAAA,IAAAA,CACLxD,KAAK+D,aACL/D,CAAAA,IAAAA,CAAKgK,eAAeS,IAAKzK,CAAAA,IAAAA,CAAAA,CACzBA,KAAKe,KACLf,CAAAA,IAAAA,CAAKqE,iCACLrE,IAAKmK,CAAAA,gBAAAA,UAAAA,sBAAAA,iBAALnK,sBAAAA,CAAuBgK,cACvBhK,EAAAA,sBAAAA,CAAAA,IAAAA,CAAKmK,gBAAkBG,UAAAA,sBAAAA,iBAAvBtK,sBAAAA,CAAuBsK,QAAAA,CACvBtK,KAAKqF,aACLrF,CAAAA,IAAAA,CAAKsF,iBACLtF,IAAKmE,CAAAA,cAAAA,EAAkBnE,KAAKoE,OAC5BpE,CAAAA,IAAAA,CAAKmR,YAAa1G,CAAAA,IAAAA,CAAKzK,IAE1B,CAAA,CAAA,EAED,GAAAc,GAAA,aAAAC,KAAA,UAAAkO,SAAAA,CAAUlO,CAAAA,CAAAA,CACRf,KAAKqG,IAAK,CAAA,YAAA,CAActF,EACzB,EAED,GAAAD,GAAA,cAAAC,KAAA,UAAAmO,UAAAA,CAAWnO,CAAAA,CAAAA,CACTf,IAAKqG,CAAAA,IAAAA,CAAK,cAAetF,CAC1B,CAAA,EAEO,GAAAD,GAAA,kBAAAC,KAAA,UAAA0P,cAAAA,CAAAA,CACNzQ,KAAAA,OAAAA,MAAAA,IAAAA,CAAK+I,eAAeC,IAAK,CAAA,UAAA,CACvBhJ,OAAK2C,CAAAA,qBAAAA,CAAsB8N,cAAgB,CAAA,CAAA,EAAA,CAE9C,EAEO,GAAA3P,GAAA,iCAAAC,KAAA,UAAAkZ,6BAAAA,CAAAA,CAAAA,CACN,GAAIja,IAAK8J,CAAAA,UAAAA,CAAY,CACnB,GAAMoQ,CAAAA,GAAAA,CAAgBla,IAAK8J,CAAAA,UAAAA,CAAWC,aAAc,CAAA,eAAA,CAAA,CACpD,GAAImQ,GAAe,CAAA,CAEjB,MADcA,CAAAA,GAAcC,CAAAA,WAAAA,CACb,EAChB,EACF,CACD,MAAO,KACR,EAEO,GAAArZ,GAAA,6BAAAC,KAAA,UAAAiH,yBAAAA,CAAAA,mBACFhI,IAAK2F,CAAAA,iBAAAA,GAAsB0S,MAC7BrY,IAAK4F,CAAAA,oBAAAA,CAAuB5F,KAAK2F,iBAGnC3F,CAAAA,CAAAA,IAAAA,CAAK2F,iBAAoB0S,CAAAA,CAAAA,CAAAA,CAAAA,CACzB9G,UAAW,CAAA,UAAA,CACT,GAAI6I,CAAAA,CAAmB,CAAA,EAAA,CACvB,GAAIpa,OAAK8J,CAAAA,UAAAA,CAAY,CACN9J,OAAK8J,CAAAA,UAAAA,CAAWuQ,iBAAiB,UACzCpO,CAAAA,CAAAA,OAAAA,CAAQqO,SAAAA,GACPA,CAAeC,WAAAA,CAAAA,WAAAA,EACjBH,EAAOzO,IAAK2O,CAAAA,CAAAA,CAAIH,YACjB,EAEJ,CAAA,EACD,GAAIna,OAAAA,CAAKe,KAAMkI,CAAAA,MAAAA,GAAWmR,EAAOnR,MAC/B,CAAA,OAOF,GAAMuR,CAAAA,CAAuBxa,CAAAA,OAAAA,CAAKia,gCAClC,GAAKO,CAAAA,CAAAA,CACH,OAGF,GAAIC,CAAAA,CAAO,CAAA,CAAA,CACPC,EAAY,CAEhB,CAAA,IAAK,GAAIjb,CAAAA,EAAI,CAAA,CAAA,CAAGA,GAAI2a,CAAOnR,CAAAA,MAAAA,CAAQxJ,EAGjC,EAAA,CAAA,GAFAgb,CAAQL,EAAAA,CAAAA,CAAO3a,IAEXgb,CAAOD,CAAAA,CAAAA,CAAsB,CAC/BE,CAAYjb,CAAAA,EAAAA,CACZ,MACD,CAEHO,OAAAA,CAAK2F,iBAAoB+U,CAAAA,CAAS,EACjC,CAAA,CAAA,CACJ,EAEO,GAAA5Z,GAAA,uBAAAC,KAAA,gBAAA4Z,oBAAA,CAAAhZ,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,UAAA+Y,SAAA,SAAAhZ,mBAAA,GAAAG,IAAA,UAAA8Y,UAAAC,SAAA,iBAAAA,SAAA,CAAA5Y,IAAA,CAAA4Y,SAAA,CAAA3Y,IAAA,SAAA2Y,SAAA,CAAA3Y,IAAA,SACAnC,MAAKgD,aAAcsL,CAAAA,mBAAAA,CAAAA,CAC1B,yBAAAwM,SAAA,CAAA1Y,IAAA,MAAAwY,QAAA,mBAFatM,CAAAA,mBAAAA,CAAAA,SAAAA,oBAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,mBAAAA,UAx/CuByM,CAAAA,GAC9BvY,CAAMwY,CAAAA,MAAAA,CAAmBA,CAYdC,CAAAA,CAAAA,CAAA,CAAjBnK,CAAAA,CAAM,YAA4BtO,CAAA0Y,CAAAA,SAAAA,CAAA,YAAA,EACPD,CAAAA,CAAAA,CAAAA,CAAA,CAA3BnK,CAAM,CAAA,mBAAA,CAAA,CAAA,CAA2CtO,CAAA0Y,CAAAA,SAAAA,CAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CACjBD,EAAA,CAAhCnK,CAAAA,CAAM,2BAAyDtO,CAAA0Y,CAAAA,SAAAA,CAAA,mBAAA,EACjCD,CAAAA,CAAAA,CAAAA,CAAA,CAA9BnK,CAAAA,CAAM,sBAAqDtO,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,YAAA,CAAA,IAAA,EAAA,CAAA,CACrCD,EAAA,CAAtBnK,CAAAA,CAAM,iBAAkDtO,CAAA0Y,CAAAA,SAAAA,CAAA,2BAAA,EAExCD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAAiC3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CACzBD,EAAA,CAARE,CAAAA,CAAAA,CAAAA,CAAAA,CAA0B3Y,CAAA0Y,CAAAA,SAAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,CAClBD,EAAA,CAARE,CAAAA,CAAAA,CAAAA,CAAAA,CAA8C3Y,EAAA0Y,SAAA,CAAA,iBAAA,CAAA,IAAA,IACtCD,CAAA,CAAA,CAARE,CAAyC3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,UAAA,CAAA,IAAA,IAM9BD,CAAA,CAAA,CAAXG,KAAqB5Y,CAAA0Y,CAAAA,SAAAA,CAAA,WAAA,EAGKD,CAAAA,CAAAA,CAAAA,CAAA,CAA1BG,CAAAA,CAAS,CAAEC,IAAAA,CAAMzN,SAAwBpL,CAAA0Y,CAAAA,SAAAA,CAAA,WAAA,EAGzBD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAA8C3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,qBAAA,CAAA,IAAA,EAW/CD,CAAAA,CAAAA,CAAAA,CAAA,CANCG,CAAS,CAAA,CACRE,UAAW,CACTC,aAAAA,CAAgBxa,QAAhBwa,CAAAA,aAAAA,CAAgBxa,SAAkBA,CAAAA,CAAMya,CAAAA,KAAAA,CAAM,GAC9CC,CAAAA,GAAAA,WAAAA,CAAc1a,QAAd0a,CAAAA,WAAAA,CAAc1a,CAAoBA,QAAAA,CAAAA,CAAAA,CAAM2X,KAAK,GAGnBlW,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAGdD,EAAA,CAAfvX,CAAAA,CAAAA,CAAAA,CAAAA,CAAoDlB,CAAA0Y,CAAAA,SAAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,CAGzCD,EAAA,CAAXG,CAAAA,CAAAA,CAAAA,CAAAA,CAAyD5Y,EAAA0Y,SAAA,CAAA,MAAA,CAAA,IAAA,IAG9CD,CAAA,CAAA,CAAXG,CAAqC5Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,aAAA,CAAA,IAAA,IAGPD,CAAA,CAAA,CAA5BG,EAAS,CAAEC,IAAAA,CAAMK,WAA8BlZ,CAAA0Y,CAAAA,SAAAA,CAAA,YAAA,CAAA,IAAA,EAAA,CAAA,CAGzCD,CAAA,CAAA,CAARE,KAAiC3Y,CAAA0Y,CAAAA,SAAAA,CAAA,kBAAA,EAGUD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8BnZ,EAAA0Y,SAAA,CAAA,eAAA,CAAA,IAAA,IAELD,CAAA,CAAA,CAA5DG,EAAS,CAAEC,IAAAA,CAAMK,OAASC,CAAAA,OAAAA,CAAAA,CAAS,CAAMC,CAAAA,SAAAA,CAAAA,CAAW,KAAuCpZ,CAAA0Y,CAAAA,SAAAA,CAAA,6BAAA,EAGvCD,CAAAA,CAAAA,CAAAA,CAAA,CAApDG,CAAS,CAAA,CAACQ,SAAU,CAAA,6BAAA,CAAA,CAAA,CAAA,CAAwEpZ,CAAA0Y,CAAAA,SAAAA,CAAA,gCAAA,EAGjDD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEC,KAAMK,OAASC,CAAAA,OAAAA,CAAAA,CAAS,CAAmCnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,oBAAA,CAAA,IAAA,IAG3BD,CAAA,CAAA,CAA3CG,EAAS,CAAEC,IAAAA,CAAMK,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+BnZ,CAAA0Y,CAAAA,SAAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,CAAA,CAGND,EAAA,CAA5DG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAAMC,CAAAA,SAAAA,CAAAA,CAAW,CAAwBpZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,SAAA,CAAA,IAAA,IAGjCD,CAAA,CAAA,CAA3CG,EAAS,CAAEC,IAAAA,CAAMK,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyBnZ,CAAA0Y,CAAAA,SAAAA,CAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CAGRD,EAAA,CAApDG,CAAAA,CAAS,CAAEQ,SAAW,CAAA,WAAA,CAAaD,SAAS,CAAsBnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CAGVD,EAAA,CAAxDG,CAAAA,CAAS,CAAEQ,SAAW,CAAA,eAAA,CAAiBD,SAAS,CAA0BnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,cAAA,CAAA,IAAA,EAG9CD,CAAAA,CAAAA,CAAAA,CAAA,CAA5BG,CAAS,CAAA,CAAEC,KAAMK,OAA2BlZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,SAAA,CAAA,IAAA,EAAA,CAAA,CAGhBD,CAAA,CAAA,CAA5BG,CAAS,CAAA,CAAEC,KAAMK,OAAyBlZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAGdD,EAAA,CAA5BG,CAAAA,CAAS,CAAEC,IAAAA,CAAMK,OAA2BlZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,SAAA,CAAA,IAAA,EAAA,CAAA,CAGDD,EAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyBnZ,CAAA0Y,CAAAA,SAAAA,CAAA,eAAA,EAGjBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEC,KAAMK,OAASC,CAAAA,OAAAA,CAAAA,CAAS,CAA0BnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,WAAA,CAAA,IAAA,IAGlBD,CAAA,CAAA,CAA3CG,EAAS,CAAEC,IAAAA,CAAMK,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqBnZ,CAAA0Y,CAAAA,SAAAA,CAAA,MAAA,CAAA,IAAA,EAAA,CAAA,CAM5BD,EAAA,CAA5BG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAyBlZ,EAAA0Y,SAAA,CAAA,OAAA,CAAA,IAAA,EAGCD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAAuBnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,QAAA,CAAA,IAAA,EAAA,CAAA,CAGfD,EAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAAqBnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,MAAA,CAAA,IAAA,EAAA,CAAA,CAG7CD,CAAA,CAAA,CAAXG,CAAsB5Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAMMD,EAAA,CAA5BG,CAAAA,CAAS,CAAEO,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+CnZ,CAAA0Y,CAAAA,SAAAA,CAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAOvCD,EAAA,CAA5BG,CAAAA,CAAS,CAAEO,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkBnZ,EAAA0Y,SAAA,CAAA,MAAA,CAAA,IAAA,EAGKD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAAyBnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CAGhCD,CAAA,CAAA,CAA5BG,CAAS,CAAA,CAAEC,KAAMK,OAA0ClZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAGhCD,EAAA,CAA3BG,CAAAA,CAAS,CAAEC,IAAAA,CAAMnN,MAAwD1L,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,kBAAA,CAAA,IAAA,EAAA,CAAA,CAG7CD,EAAA,CAA5BG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAgClZ,CAAA0Y,CAAAA,SAAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,CAGpBD,EAAA,CAA7BG,CAAAA,CAAS,CAAEQ,SAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4CpZ,EAAA0Y,SAAA,CAAA,kBAAA,CAAA,IAAA,EAGtBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAAiCnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,kBAAA,CAAA,IAAA,EAAA,CAAA,CAGzBD,EAAA,CAA3CG,CAAAA,CAAS,CAAEC,IAAMK,CAAAA,OAAAA,CAASC,SAAS,CAA4BnZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CAMpBD,CAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEC,KAAMK,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAuBnZ,CAAA0Y,CAAAA,SAAAA,CAAA,aAAA,EAO3DD,CAAAA,CAAAA,CAAAA,CAAA,CADCG,CAAAA,CAAS,CAAEQ,SAAAA,CAAW,sBAAuBP,IAAMQ,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAC9BrZ,EAAA0Y,SAAA,CAAA,mBAAA,CAAA,IAAA,IAEbD,CAAA,CAAA,CAARE,CAAyC3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,sBAAA,CAAA,IAAA,IAEmBD,CAAA,CAAA,CAA5DG,EAAS,CAAEC,IAAAA,CAAMK,QAASC,OAAS,CAAA,CAAA,CAAA,CAAMC,SAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+BpZ,CAAA0Y,CAAAA,SAAAA,CAAA,qBAAA,EAG3ED,CAAAA,CAAAA,CAAAA,CAAA,CAARE,CAAqC3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CACrBD,CAAA,CAAA,CAAhBE,CAA+D3Y,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,+BAAA,CAAA,IAAA,EAAA,CAAA,CA8oBhED,EAAA,CADCa,CAAAA,CAAM,WAAY,CAAEC,oBAAAA,CAAAA,CAAsB,CAM1CvZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,sBAAA,CAAA,MAIDD,CAAA,CAAA,CADCa,EAAM,OAAS,CAAA,CAAEC,sBAAsB,CASvCvZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,SAAA,CAAA,mBAAA,CAAA,IAGDD,CAAAA,CAAAA,CAAAA,CAAA,CADCa,CAAM,CAAA,MAAA,CAAQ,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAqBtCvZ,EAAA0Y,SAAA,CAAA,kBAAA,CAAA,IAGDD,CAAAA,CAAAA,CAAAA,CAAA,CADCa,CAAAA,CAAM,mBAAoB,CAAEC,oBAAAA,CAAAA,CAAsB,KAMlDvZ,CAAA0Y,CAAAA,SAAAA,CAAA,+BAAA,IAGDD,CAAAA,CAAAA,CAAAA,CAAA,CADCa,CAAAA,CAAM,gBAAkB,CAAA,CAAEC,sBAAsB,CAYhDvZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA0Y,UAAA,4BAAA,CAAA,IAAA,CAAA,CAGDD,EAAA,CADCa,CAAAA,CAAM,QAAU,CAAA,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CASxCvZ,EAAA0Y,SAAA,CAAA,0BAAA,CAAA,MAGKD,CAAA,CAAA,CADLa,EAAM,MAAQ,CAAA,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAkBtCvZ,CAAA0Y,CAAAA,SAAAA,CAAA,mBAAA,IAz5BU1Y,CAAAA,CAAAA,OAAAA,KAAAA,CAAAA,CAAiByY,EAAA,CAD7Be,CAAAA,CAAc,wBACFxZ,CA6/CbyZ,CAAAA,EAAAA,CAAAA,CAAoB,aAAe,CAAA,CACjC/H,SAAW,CAAA,CACT,CAAEgI,OAAS,CAAA,CAAA,CAAGC,MAAO,EACrB,CAAA,CAAA,CAAED,QAAS,CAAGC,CAAAA,KAAAA,CAAO,CAEvBhI,CAAAA,CAAAA,CAAAA,OAAAA,CAAS,CAAEiI,QAAAA,CAAU,IAAKC,MAAQ,CAAA,MAAA,CAAA,CAAA,CAAA,CAGpCJ,EAAoB,aAAe,CAAA,CACjC/H,UAAW,CACT,CAAEgI,OAAS,CAAA,CAAA,CAAGC,KAAO,CAAA,CAAA,CAAA,CACrB,CAAED,OAAS,CAAA,CAAA,CAAGC,MAAO,EAEvBhI,CAAAA,CAAAA,CAAAA,OAAAA,CAAS,CAAEiI,QAAU,CAAA,GAAA,CAAKC,MAAQ,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA","x_google_ignoreList":[0]}