@ardium-ui/ui 2.3.0 → 2.3.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ardium-ui-ui.mjs","sources":["../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.directives.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.html","../../../projects/ui/src/lib/inputs/simple-input/simple-input.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/types/button.types.ts","../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.html","../../../projects/ui/src/lib/star/star-input/star-input.module.ts","../../../projects/ui/src/lib/statebox/statebox.component.ts","../../../projects/ui/src/lib/statebox/statebox.component.html","../../../projects/ui/src/lib/statebox/statebox.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.types.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.directive.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/color/color-display/color-display.types.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.html","../../../projects/ui/src/lib/color/color-display/color-display.module.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.directive.ts","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.html","../../../projects/ui/src/lib/star/star-display/star-display.module.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.html","../../../projects/ui/src/lib/tabber/tabber.component.ts","../../../projects/ui/src/lib/tabber/tabber.component.html","../../../projects/ui/src/lib/tabber/tabber.module.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/_internal/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-ui-ui.ts"],"sourcesContent":["export const SimpleOneAxisAlignment = {\n Left: 'left',\n Right: 'right',\n} as const;\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\n\nexport const OneAxisAlignment = {\n Left: 'left',\n Middle: 'middle',\n Right: 'right',\n} as const;\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\n","/**\n * The color of the component.\n *\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\n */\nexport const ComponentColor = {\n /**\n * The app's standard text color.\n */\n None: 'none',\n /**\n * The app's primary color.\n */\n Primary: 'primary',\n /**\n * The app's secondary color.\n */\n Secondary: 'secondary',\n /**\n * The app's warning color. Usually some shade of yellow.\n */\n Warning: 'warn',\n /**\n * The app's danger color. Usually some shade of red.\n */\n Danger: 'danger',\n /**\n * The app's success color. Usually some shade of green or lime.\n */\n Success: 'success',\n /**\n * The app's info color. Usually some shade of blue or light blue.\n */\n Info: 'info',\n} as const;\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\n\nexport const SimpleComponentColor = {\n ...ComponentColor,\n /**\n * The current color set by css.\n */\n CurrentColor: 'currentColor',\n} as const;\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\n","//! appearances\nexport const OutlinedAppearance = {\n /**\n * No background with solid border.\n */\n Outlined: 'outlined',\n} as const;\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\n\nexport const PanelAppearance = {\n /**\n * Filled with a background color, with slight shadow.\n */\n Raised: 'raised',\n} as const;\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\n\nexport const FormElementAppearance = {\n ...OutlinedAppearance,\n /**\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\n */\n Transparent: 'transparent',\n /**\n * Slighthly darker/lighter background with rounded but transparent border.\n */\n Filled: 'filled',\n} as const;\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\n\nexport const DecorationElementAppearance = {\n Outlined: 'outlined',\n OutlinedStrong: 'outlined-strong',\n Filled: 'filled',\n} as const;\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\n\n//! variants\nexport const PanelVariant = {\n /**\n * Slightly rounded corners.\n */\n Rounded: 'rounded',\n /**\n * Sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\n\nexport const FormElementVariant = {\n ...PanelVariant,\n /**\n * Fully rounded corners - pill shaped.\n */\n Pill: 'pill',\n} as const;\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\n","import { Directive, HostBinding, Input, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive()\r\nexport abstract class _DisablableComponentBase {\r\n //! no value arguments\r\n /**\r\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coearcible into a boolean.\r\n */\r\n readonly readonly = input<any, boolean>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n /**\r\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coearcible into a boolean.\r\n */\r\n readonly disabled = signal<boolean>(false);\r\n @Input('disabled')\r\n set _disabled(v: any) {\r\n this.disabled.set(coerceBooleanProperty(v));\r\n }\r\n\r\n @HostBinding('attr.readonly')\r\n @HostBinding('class.ard-readonly')\r\n get _readonlyHostAttribute(): boolean {\r\n return this.readonly();\r\n }\r\n @HostBinding('attr.disabled')\r\n @HostBinding('class.ard-disabled')\r\n get _disabledHostAttribute(): boolean {\r\n return this.disabled();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\r\n\r\n@Component({\r\n selector: 'ard-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumChipComponent extends _DisablableComponentBase {\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, QueryList, ViewChildren, computed, input, output } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _DisablableComponentBase } from './disablable-component';\r\n\r\n@Directive()\r\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\r\n //! make the component focusable programmatically\r\n @ViewChildren('focusableElement')\r\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n /**\r\n * Focuses the correct element in the component.\r\n */\r\n public focus(): void {\r\n this._focusableElement?.first?.nativeElement.focus();\r\n }\r\n /**\r\n * Focuses the first of all available elements in the component.\r\n */\r\n public focusFirst(): void {\r\n this.focus();\r\n }\r\n /**\r\n * Focuses the last of all available elements in the component.\r\n */\r\n public focusLast(): void {\r\n this._focusableElement?.last?.nativeElement.focus();\r\n }\r\n /**\r\n * Blurs all focusable elements in the component.\r\n */\r\n public blur(): void {\r\n this._focusableElement?.forEach(el => el.nativeElement.blur());\r\n }\r\n\r\n //! tabindex\r\n /**\r\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\r\n */\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<any, number>(0, { alias: 'tabIndex', transform: v => coerceNumberProperty(v) });\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `focus` events.\r\n */\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n /**\r\n * The event emitter responsible for firing `blur` events.\r\n */\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! focus event handlers\r\n /**\r\n * Whether the component is currently focused.\r\n */\r\n public isFocused = false;\r\n\r\n /**\r\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\r\n * @param event The focus event to emit.\r\n */\r\n onFocus(event: FocusEvent) {\r\n this.isFocused = true;\r\n this.focusEvent.emit(event);\r\n }\r\n /**\r\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\r\n * @param event The focus event to emit.\r\n */\r\n onBlur(event: FocusEvent) {\r\n this.isFocused = false;\r\n this.blurEvent.emit(event);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { _FocusableComponentBase } from './focusable-component';\r\n\r\n/**\r\n * Common code for components, which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n protected _onChangeRegistered!: (_: any) => void;\r\n protected _onTouchedRegistered!: () => void;\r\n /**\r\n * Registers a function to handle touched state. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedRegistered = fn;\r\n }\r\n /**\r\n * Registers a function to handle value change. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChangeRegistered = fn;\r\n }\r\n /**\r\n * Sets the component's disabled state. Required by ControlValueAccessor.\r\n * @param isDisabled the new disabled state.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n abstract writeValue(v: any): void; //* abstract\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n protected abstract _emitChange(): void; //* abstract\r\n\r\n //! event handlers\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this._onTouchedRegistered?.();\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n/**\r\n * Common code for components, which only operate on the \"selected\" state.\r\n */\r\n@Directive()\r\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n writeValue(v: any): void {\r\n this._selected = v;\r\n }\r\n //emitter function\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n this._onChangeRegistered?.(this.selected());\r\n\r\n if (this.selected()) this.selectEvent.emit(null);\r\n else this.unselectEvent.emit(null);\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<null>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<null>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selected();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n this.selected.set(false);\r\n this._emitChange();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\r\n\r\n@Component({\r\n selector: 'ard-selectable-chip',\r\n templateUrl: './selectable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly DEFAULTS = {\r\n chipTitle: 'Select',\r\n };\r\n\r\n readonly chipTitle = input<string>(this.DEFAULTS.chipTitle);\r\n readonly hideSelectionIcon = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n [class.ard-chip-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [title]=\"chipTitle()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-chip-selection-icon\"\r\n role=\"img\"\r\n ></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { Component } from '@angular/core';\r\nimport { _FocusableComponentBase } from './../focusable-component';\r\n\r\n@Component({\r\n selector: 'ard-clear-button',\r\n templateUrl: './clear-button.component.html',\r\n styleUrls: ['./clear-button.component.scss'],\r\n})\r\nexport class _ClearButtonComponent extends _FocusableComponentBase {}\r\n","<button\r\n #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n type=\"button\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-clear-btn\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-deletable-chip',\r\n templateUrl: './deletable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\r\n readonly DEFAULTS = {\r\n deleteButtonTitle: 'Delete',\r\n };\r\n\r\n readonly deleteButtonTitle = input<string>(this.DEFAULTS.deleteButtonTitle);\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly deleteEvent = output<MouseEvent>({ alias: 'delete' });\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-clear-button\r\n [title]=\"deleteButtonTitle()\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n ></ard-clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { _ClearButtonComponent } from './clear-button.component';\n\n@NgModule({\n declarations: [_ClearButtonComponent],\n imports: [CommonModule],\n exports: [_ClearButtonComponent],\n})\nexport class _ClearButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumChipComponent } from './chip.component';\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\n\n@NgModule({\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n imports: [CommonModule, _ClearButtonModule],\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n})\nexport class ArdiumChipModule {}\n","export type ScrollAlignment = 'top' | 'bottom' | 'middle';\n\nexport const DropdownPanelAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\n\nexport const DropdownPanelVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n SharpConnected: 'sharp ard-connected',\n} as const;\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\r\n\r\n@Component({\r\n selector: 'ard-dropdown-panel',\r\n templateUrl: './dropdown-panel.component.html',\r\n styleUrls: ['./dropdown-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-open]': 'isOpen()',\r\n },\r\n})\r\nexport class ArdiumDropdownPanelComponent implements AfterViewChecked {\r\n private readonly _scrollElementRef = viewChild<ElementRef<HTMLElement>>('scroll');\r\n private readonly _scrollEl = computed(() => this._scrollElementRef()?.nativeElement);\r\n\r\n //! options\r\n readonly panelId = input<string>();\r\n readonly headerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly filterValue = input<Nullable<string>>();\r\n\r\n //! appearance\r\n readonly appearance = input<DropdownPanelAppearance>(DropdownPanelAppearance.Raised);\r\n readonly variant = input<DropdownPanelVariant>(DropdownPanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [`ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! states\r\n readonly isOpen = input.required<boolean>();\r\n\r\n //! output events\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n //! event handlers\r\n onScroll() {\r\n const start = this._scrollTop;\r\n const end = this._scrollBottom;\r\n this.scrollEvent.emit({ start, end });\r\n\r\n if (end === this._scrollEl()?.scrollHeight) {\r\n this.scrollToEndEvent.emit();\r\n }\r\n }\r\n\r\n //! hooks\r\n ngAfterViewChecked(): void {\r\n if (!this._currentScrollToDirection) return;\r\n\r\n const recent = this._scrollEl()?.querySelector<HTMLElement>('.ard-option-highlighted-recent');\r\n if (!recent) return;\r\n\r\n const isInView = this._isElementInView(recent);\r\n if (!isInView) {\r\n this._scrollToElement(recent, this._currentScrollToDirection);\r\n }\r\n\r\n this._currentScrollToDirection = null;\r\n }\r\n\r\n //! scroll position\r\n private get _scrollTop(): number {\r\n return this._scrollEl()?.scrollTop ?? 0;\r\n }\r\n private set _scrollTop(value: number) {\r\n const el = this._scrollEl();\r\n if (!el) return;\r\n el.scrollTop = value;\r\n }\r\n private get _scrollBottom(): number {\r\n return this._scrollTop + (this._scrollEl()?.getBoundingClientRect().height ?? 0);\r\n }\r\n\r\n //! scroll to element methods\r\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'middle'): void {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n switch (alignTo) {\r\n case 'top':\r\n this._scrollTop += elementRect.top - parentContentRect.top;\r\n break;\r\n case 'bottom':\r\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\r\n break;\r\n case 'middle':\r\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\r\n break;\r\n }\r\n }\r\n\r\n private _currentScrollToDirection: ScrollAlignment | null = null;\r\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\r\n this._currentScrollToDirection = direction;\r\n }\r\n private _isElementInView(el: HTMLElement): boolean {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return true;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\r\n }\r\n private _getContentRect(el: HTMLElement): DOMRect {\r\n const elRect = el.getBoundingClientRect();\r\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\r\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\r\n const topPadd = paddings[0] ?? 0;\r\n const rightPadd = paddings[1] ?? topPadd;\r\n const bottomPadd = paddings[2] ?? topPadd;\r\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\r\n\r\n return new DOMRect(\r\n elRect.x + leftPadd,\r\n elRect.y + topPadd,\r\n elRect.width - leftPadd - rightPadd,\r\n elRect.height - topPadd - bottomPadd\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"ard-dropdown-panel-container\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (headerTemplate()) {\r\n <div class=\"ard-dropdown-header\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <div\r\n #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId()\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (footerTemplate()) {\r\n <div class=\"ard-dropdown-footer\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n declarations: [ArdiumDropdownPanelComponent],\n imports: [CommonModule],\n exports: [ArdiumDropdownPanelComponent],\n})\nexport class ArdiumDropdownPanelModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\r\nimport { AddCustomFn } from '../../select/select.types';\r\nimport { ArdItemGroupMap, ArdOption, ArdOptionGroup, CompareWithFn, GroupByFn, SearchFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n groupLabelFrom: string;\r\n groupDisabledFrom: string;\r\n childrenFrom: string;\r\n [key: string]: any;\r\n}\r\nexport interface ItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<Nullable<boolean>>;\r\n readonly groupLabelFrom: Signal<Nullable<string | GroupByFn>>;\r\n readonly groupDisabledFrom: Signal<Nullable<string>>;\r\n readonly childrenFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly itemsAlreadyGrouped: Signal<Nullable<boolean>>;\r\n readonly hideSelected: Signal<boolean>;\r\n readonly searchCaseSensitive: Signal<boolean>;\r\n readonly searchFn: Signal<SearchFn>;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly sortMultipleValues: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly addCustom: Signal<boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class ItemStorage {\r\n private readonly _groups = signal<ArdItemGroupMap>(this._createEmptyGroupMap());\r\n private readonly _items = signal<ArdOption[]>([]);\r\n private readonly _filteredItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedGroups = signal<ArdOptionGroup[]>([]);\r\n private readonly _recentlyHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n private readonly _selectedItems = signal<ArdOption[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: ItemStorageHost) {}\r\n\r\n readonly groups = computed(() =>\r\n Array.from(this._groups().entries())\r\n .map(([, group]) => group)\r\n .filter(group => group.children().length)\r\n );\r\n readonly items = this._items.asReadonly();\r\n readonly filteredItems = this._filteredItems.asReadonly();\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n\r\n readonly selectedItems = computed(() => {\r\n if (this._ardParentComp.sortMultipleValues()) {\r\n return this._selectedItems().sort((a, b) => {\r\n return a.index() - b.index();\r\n });\r\n }\r\n return this._selectedItems();\r\n });\r\n readonly lastSelectedItem = computed(() => this._filteredItems().last(1, item => !item.disabled()));\r\n\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n private _itemsToValue(items: ArdOption[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n readonly isNoItemsToSelect = computed(() => this._items().length === this._selectedItems().length);\r\n readonly isNoItemsFound = computed(() => this._filteredItems().length === 0);\r\n readonly isAnyItemSelected = computed(() => this._selectedItems().length > 0);\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n readonly isItemLimitReached = computed(\r\n () =>\r\n this._ardParentComp.multiselectable() &&\r\n isDefined(this._ardParentComp.maxSelectedItems()) &&\r\n this._ardParentComp.maxSelectedItems()! <= this.selectedItems().length\r\n );\r\n\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (this._ardParentComp.groupLabelFrom() && this._ardParentComp.itemsAlreadyGrouped()) {\r\n const newItems = [];\r\n for (const group of items) {\r\n let children: any[];\r\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\r\n newItems.push(...children);\r\n }\r\n items = newItems;\r\n }\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n //add all items to filter array\r\n this._filteredItems.set(this._items());\r\n\r\n //add items to groups\r\n this._populateGroups();\r\n\r\n //write value if it was\r\n const toWrite = this._valueToWriteAfterItemsLoad();\r\n if (toWrite !== undefined) {\r\n this.handleWriteValue(toWrite);\r\n }\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _addSingleItem(item: any): ArdOption {\r\n const isItemPrimitive = isPrimitive(item);\r\n //map a primitive item to a usable object\r\n if (isItemPrimitive) {\r\n item = this._primitiveItemsMapFn(item);\r\n }\r\n //map the item to create data bindings\r\n const ardOption = this._setItemsMapFn(item, (this._items().last()?.index() ?? 0) + 1, isItemPrimitive);\r\n\r\n //push the item into all items\r\n this._items.update(v => [...v, ardOption]);\r\n\r\n //add item to groups\r\n this._populateGroups();\r\n\r\n return ardOption;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\r\n //determine groupBy (groupLabel) path\r\n const groupBy = this._ardParentComp.groupLabelFrom() ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\r\n\r\n //get group label from object\r\n let groupName: any;\r\n if (typeof groupBy === 'string') {\r\n groupName = resolvePath(group, groupBy);\r\n } else {\r\n groupName = groupBy(group);\r\n }\r\n\r\n //determine group children path\r\n const childrenPath = this._ardParentComp.childrenFrom() ?? this._ardParentComp.DEFAULTS.childrenFrom;\r\n\r\n //get group children\r\n let groupItems: any = resolvePath(group, childrenPath);\r\n\r\n //return empty array if groupItems is not an array or is empty\r\n if (!isArray(groupItems) || groupItems.length === 0) return [[], false];\r\n\r\n //check if the array is an array of primitives, and map it if needed\r\n const areItemsPrimitive = false;\r\n if (any(groupItems, isPrimitive)) {\r\n groupItems = groupItems.map(this._primitiveItemsMapFn);\r\n }\r\n //add group name to every child\r\n groupItems = groupItems.map((item: any) => {\r\n item.$ardgroup = groupName;\r\n return item;\r\n });\r\n\r\n return [groupItems, areItemsPrimitive];\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n group: signal(undefined),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //get groups\r\n let group: any = undefined;\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n if (groupBy) {\r\n if (rawItemData.$ardgroup) {\r\n group = rawItemData.$ardgroup;\r\n } else {\r\n if (typeof groupBy === 'string') {\r\n group = resolvePath(rawItemData, groupBy);\r\n } else {\r\n group = groupBy(rawItemData);\r\n }\r\n }\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n group: signal(group),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n private _populateGroups(): void {\r\n this._groups.set(this._createEmptyGroupMap());\r\n\r\n for (const item of this._filteredItems()) {\r\n if (this._ardParentComp.hideSelected() && item.selected()) continue;\r\n\r\n this._addToGroup(item);\r\n }\r\n }\r\n private _addToGroup(item: ArdOption): void {\r\n const groupKey = item.group();\r\n const targetGroup = this._groups().get(groupKey);\r\n //create new group if needed\r\n if (!targetGroup) {\r\n this._groups.update(v => {\r\n const map = new Map(v);\r\n map.set(groupKey, {\r\n label: signal(String(groupKey ?? '')),\r\n children: signal([item]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n });\r\n return map;\r\n });\r\n return;\r\n }\r\n targetGroup.children.update(v => [...v, item]);\r\n }\r\n private _createEmptyGroupMap(): ArdItemGroupMap {\r\n return new Map([\r\n [\r\n undefined,\r\n {\r\n label: signal(''),\r\n children: signal([]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n },\r\n ],\r\n ]) as ArdItemGroupMap;\r\n }\r\n private _isWriteValueValid(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n private readonly _valueToWriteAfterItemsLoad = signal<any>(undefined);\r\n private readonly _wasValueWriteDeferred = signal<boolean>(false);\r\n handleWriteValue(ngModel: any[]): void {\r\n //defer writing the value if no options are yet loaded\r\n if (!this._wasValueWriteDeferred() && this._items().length === 0) {\r\n this._valueToWriteAfterItemsLoad.set(ngModel);\r\n return;\r\n }\r\n\r\n this.clearAllSelected();\r\n\r\n if (!this._isWriteValueValid(ngModel)) {\r\n return;\r\n }\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n findItemByValue(valueToFind: any): ArdOption | undefined {\r\n let findBy: (item: ArdOption) => boolean;\r\n if (this._ardParentComp.compareWith()) {\r\n findBy = item => this._ardParentComp.compareWith()!(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n async addCustomOption(value: string, fn: AddCustomFn<any> | AddCustomFn<Promise<any>>): Promise<ArdOption> {\r\n const fnResult = fn(value);\r\n\r\n let optionValue = fnResult;\r\n if (isPromise(optionValue)) optionValue = await optionValue;\r\n\r\n const newOptionObj = this._addSingleItem(optionValue);\r\n\r\n return newOptionObj;\r\n }\r\n\r\n clearAllSelected(repopulateGroups = false): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n const removedItemValues = this._itemsToValue(this._selectedItems());\r\n this._selectedItems.set([]);\r\n\r\n if (repopulateGroups && this._ardParentComp.hideSelected()) this._populateGroups();\r\n\r\n return removedItemValues;\r\n }\r\n clearLastSelected(): ArdOption {\r\n const item = this._selectedItems().last();\r\n if (!item) return item;\r\n this.unselectItem(item);\r\n return item;\r\n }\r\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this.clearAllSelected(false);\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n this._selectedItems.update(v => [...v, item]);\r\n itemsSelected.push(item);\r\n }\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n unselectItem(...items: ArdOption[]): any[] {\r\n for (const item of items) {\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n clearAllHighlights(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n for (const group of this._highlightedGroups()) {\r\n group.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n this._highlightedGroups.set([]);\r\n }\r\n highlightGroup(group: ArdOptionGroup): ArdOption {\r\n this.clearAllHighlights();\r\n group.highlighted.set(true);\r\n this.highlightItem(...group.children());\r\n return group.children().first();\r\n }\r\n highlightSingleItem(item: ArdOption): ArdOption | null {\r\n if (!item || item.disabled()) return null;\r\n this.clearAllHighlights();\r\n return this.highlightItem(item);\r\n }\r\n highlightItem(...items: ArdOption[]): ArdOption {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n unhighlightItem(...items: ArdOption[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n highlightFirstItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.first());\r\n }\r\n highlightLastItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.last());\r\n }\r\n private _getHiglightableItems(): ArdOption[] {\r\n let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());\r\n if (this._ardParentComp.hideSelected()) {\r\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected());\r\n }\r\n return itemsToHighlight;\r\n }\r\n highlightAllItems(): void {\r\n this.highlightItem(...this._getHiglightableItems());\r\n }\r\n private _clearRecentlyHighlighted(): void {\r\n if (this._recentlyHighlightedItem()) {\r\n this._recentlyHighlightedItem()!.highlighted_recently.set(false);\r\n }\r\n }\r\n setRecentlyHighlighted(item: ArdOption): void {\r\n this._clearRecentlyHighlighted();\r\n item.highlighted_recently.set(true);\r\n this._recentlyHighlightedItem.set(item);\r\n }\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const highlightableItems = this._getHiglightableItems();\r\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInFiltered + offset;\r\n if (nextItemIndex >= highlightableItems.length) {\r\n nextItemIndex -= highlightableItems.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += highlightableItems.length;\r\n }\r\n const itemToHighlight = highlightableItems[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n filter(filterTerm: string): any[] {\r\n if (!filterTerm) {\r\n return this._itemsToValue(this.resetFiltered());\r\n }\r\n if (!this._ardParentComp.searchCaseSensitive()) {\r\n filterTerm = filterTerm.toLocaleLowerCase();\r\n }\r\n\r\n const searchFn = this._ardParentComp.searchFn();\r\n const newFilteredItems = this._items().filter(item => searchFn(filterTerm, item));\r\n this._filteredItems.set(newFilteredItems);\r\n\r\n this._populateGroups();\r\n\r\n if (!this.isNoItemsFound) this.highlightFirstItem();\r\n else this.clearAllHighlights();\r\n\r\n return this._itemsToValue(newFilteredItems);\r\n }\r\n resetFiltered(): ArdOption[] {\r\n if (this._filteredItems().length === this._items().length) return this._items();\r\n\r\n let newFilteredItems = this._items();\r\n if (this._ardParentComp.hideSelected() && this.isAnyItemSelected()) {\r\n newFilteredItems = newFilteredItems.filter(item => !item.selected());\r\n }\r\n this._populateGroups();\r\n return newFilteredItems;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-option',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n readonly value = input<any>(undefined);\r\n\r\n readonly hasImplicitValue = computed<boolean>(() => this.value() === undefined);\r\n\r\n readonly label = input<Nullable<string>>(undefined);\r\n\r\n get labelOrInnerHtml(): string {\r\n return this.label() ?? (this.elementRef.nativeElement.innerHTML || '').trim();\r\n }\r\n\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! state change listener\r\n readonly stateChange$ = new Subject<{\r\n value: any;\r\n oldValue?: string;\r\n disabled: boolean;\r\n label?: Nullable<string>;\r\n }>();\r\n\r\n private _previousLabel: Nullable<string>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['disabled']) {\r\n this.stateChange$.next({\r\n value: this.value(),\r\n disabled: changes['disabled'].currentValue,\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.label() !== this._previousLabel) {\r\n let oldValue = this.value();\r\n if (this.hasImplicitValue()) oldValue = this._previousLabel;\r\n\r\n this._previousLabel = this.label();\r\n\r\n this.stateChange$.next({\r\n value: this.value(),\r\n oldValue,\r\n disabled: this.disabled(),\r\n label: this.label(),\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChange$.complete();\r\n }\r\n}\r\n","import { ArdOption, SearchFn } from './types/item-storage.types';\r\n\r\nexport function searchInString(searchTerm: string, toSearch: any) {\r\n if (toSearch === undefined) return false;\r\n return String(toSearch).toLocaleLowerCase().indexOf(searchTerm) !== -1;\r\n}\r\nexport const searchFunctions: {\r\n byLabel: SearchFn;\r\n byValue: SearchFn;\r\n byGroup: SearchFn;\r\n byLabelAndGroup: SearchFn;\r\n byLabelAndValue: SearchFn;\r\n byLabelAndGroupAndValue: SearchFn;\r\n} = {\r\n /**\r\n * Determines if the item should appear in the search results, based on the label only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabel: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.label());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the value only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byValue: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.value());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the group only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byGroup: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.group());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and group.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) || (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item))\r\n );\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\r\n return searchFunctions.byLabel(searchTerm, item) || searchFunctions.byValue(searchTerm, item);\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label, group, and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) ||\r\n (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)) ||\r\n searchFunctions.byGroup(searchTerm, item)\r\n );\r\n },\r\n};\r\n","import { Signal, WritableSignal } from '@angular/core';\r\nimport { Nullable } from './utility.types';\r\n\r\n/**\r\n```typescript\r\ninterface OptionContext {\r\n $implicit: ArdOption;\r\n item: ArdOption;\r\n itemData: any;\r\n}\r\n```\r\n */\r\nexport interface OptionContext<T extends ArdSimplestStorageItem> {\r\n $implicit: T;\r\n item: T;\r\n itemData: any;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n label: string;\r\n value: any;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdSimplestStorageItem {\r\n readonly itemData: WritableSignal<any>;\r\n readonly index: Signal<number>;\r\n readonly value: WritableSignal<any>;\r\n readonly label: WritableSignal<string>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n}\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n readonly group?: any;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n highlighted?: boolean;\r\n highlighted_recently?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOption extends ArdOptionSimple {\r\n readonly group: Signal<any>;\r\n readonly highlighted_recently: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdItemGroup {\r\n label: string;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n children: ArdOption[];\r\n}\r\n```\r\n */\r\nexport interface ArdOptionGroup {\r\n readonly label: WritableSignal<string>;\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly children: WritableSignal<ArdOption[]>;\r\n}\r\n\r\nexport const ArdPanelPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\r\n\r\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\r\n\r\nexport type GroupByFn = (item: any) => any;\r\nexport type SearchFn = (searchTerm: string, item: ArdOption) => boolean;\r\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdOption, OptionContext } from '../types/item-storage.types';\r\nimport {\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-prefix-tmp]' })\r\nexport class ArdSelectPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-suffix-tmp]' })\r\nexport class ArdSelectSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-tmp]' })\r\nexport class ArdValueTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-chip-tmp]' })\r\nexport class ArdValueChipTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-option-tmp]' })\r\nexport class ArdOptionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOption>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\r\nexport class ArdOptgroupTemplateDirective {\r\n constructor(public template: TemplateRef<GroupContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdSelectPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<PlaceholderContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\r\nexport class ArdLoadingSpinnerTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\r\n})\r\nexport class ArdLoadingPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\r\nexport class ArdDropdownHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\r\nexport class ArdDropdownFooterTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\r\nexport class ArdNoItemsFoundTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\r\nexport class ArdAddCustomTemplateDirective {\r\n constructor(public template: TemplateRef<CustomOptionContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\r\nexport class ArdItemLimitReachedTemplateDirective {\r\n constructor(public template: TemplateRef<ItemLimitContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\r\nexport class ArdItemDisplayLimitTemplateDirective {\r\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\nexport class ArdFormFieldPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\nexport class ArdFormFieldSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\n\r\n@Component({\r\n selector: 'ard-form-field-frame',\r\n templateUrl: './form-field-frame.component.html',\r\n styleUrls: ['./form-field-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\r\n //! focused state\r\n @Input() override isFocused = false;\r\n\r\n //! appearance\r\n /**\r\n * The appearance of the component, aka the styling.\r\n */\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n /**\r\n * The variant of the component, aka the shape.\r\n */\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n /**\r\n * Whether to use the compact styling or not.\r\n */\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.isFocused ? 'ard-focused' : 'ard-unfocused',\r\n ].join(' ')\r\n );\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'prefixTemplate' });\r\n readonly suffixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'suffixTemplate' });\r\n readonly prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);\r\n}\r\n","<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n Signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\r\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\r\nimport { ItemStorage, ItemStorageHost } from '../_internal/item-storages/dropdown-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\r\nimport { ArdiumOptionComponent } from '../option/option.component';\r\nimport { searchFunctions } from '../search-functions';\r\nimport { ArdOption, ArdOptionGroup, ArdPanelPosition, GroupByFn, OptionContext, SearchFn } from '../types/item-storage.types';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\nimport {\r\n AddCustomFn,\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n StatsContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n@Component({\r\n selector: 'ard-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectComponent\r\n extends _NgModelComponentBase\r\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor, ItemStorageHost\r\n{\r\n readonly _componentId: string = '000';\r\n //! public constants\r\n readonly itemStorage = new ItemStorage(this);\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n groupLabelFrom: 'group',\r\n groupDisabledFrom: 'disabled',\r\n childrenFrom: 'children',\r\n searchFn: searchFunctions.byLabel,\r\n clearButtonTitle: 'Clear',\r\n noItemsFoundText: 'No items found.',\r\n loadingPlaceholderText: 'Loading...',\r\n };\r\n\r\n //! privates\r\n private _items: any[] | null = [];\r\n private readonly _isMouseBeingUsed = signal<boolean>(false);\r\n private readonly _searchBarFocused = signal<boolean>(false);\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n //! publics\r\n readonly searchTerm = signal<string>('');\r\n isItemsInputUsed = false;\r\n\r\n //! binding-related inputs\r\n //value/label/disabled/group/pre-grouped children paths\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n //! group-related inputs\r\n readonly groupLabelFrom = input<Nullable<string | GroupByFn>>(undefined);\r\n readonly groupDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly childrenFrom = input<Nullable<string>>(undefined);\r\n //! settings\r\n readonly placeholder = input<string>('Select item');\r\n readonly searchPlaceholder = input<string>('Search...');\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly dropdownPosition = input<ArdPanelPosition>(ArdPanelPosition.Auto);\r\n //! template-related settings\r\n readonly noItemsFoundText = input<string>(this.DEFAULTS.noItemsFoundText);\r\n readonly loadingPlaceholderText = input<string>(this.DEFAULTS.loadingPlaceholderText);\r\n //! search-related options\r\n readonly searchInputId = input<Nullable<string>>(undefined);\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n //! other inputs\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly inputProps = input<Record<string, any>>({});\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n //! boolean settings\r\n readonly itemsAlreadyGrouped = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //should the value that the \"disabledFrom\" path lead to be inverted?\r\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly noGroupActions = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoHighlightFirst = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepOpen = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideSelected = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly noBackspaceClear = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly sortMultipleValues = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchCaseSensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepSearchAfterSelect = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! number inputs\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n readonly itemDisplayLimit = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n //! function inputs\r\n readonly searchFn = input<SearchFn>(this.DEFAULTS.searchFn);\r\n readonly compareWith = input<Nullable<SearchFn>>(undefined);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance, variant handled in ard-form-field-frame component\r\n this.compact() ? 'ard-compact' : '',\r\n this.multiselectable() ? 'ard-multiselect' : 'ard-singleselect',\r\n this.clearable() ? 'ard-clearable' : '',\r\n this.searchable() ? 'ard-searchable' : '',\r\n this.filtered() ? 'ard-filtered' : '',\r\n this.touched() ? 'ard-touched' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n @HostBinding('class.ard-group-items')\r\n get _groupItemsHostAttribute() {\r\n return this.groupLabelFrom();\r\n }\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: string | any[] | null) {\r\n this.isItemsInputUsed = true;\r\n if (value === null) {\r\n value = [];\r\n this.isItemsInputUsed = false;\r\n } else if (isAnyString(value)) {\r\n value = coerceArrayProperty(value);\r\n }\r\n const printErrors = this.itemStorage.setItems(value);\r\n if (printErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n @ContentChildren(ArdiumOptionComponent)\r\n optionComponents!: QueryList<ArdiumOptionComponent>;\r\n\r\n private _setItemsFromComponents() {\r\n const handleOptionChange = () => {\r\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\r\n merge(...this.optionComponents.map(option => option.stateChange$))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(option => {\r\n setTimeout(() => {\r\n const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);\r\n if (item) {\r\n item.disabled.set(option.disabled);\r\n item.label.set(option.label || item.label());\r\n item.value.set(option.value);\r\n item.itemData.set({\r\n label: option.label || item.label(),\r\n value: option.value,\r\n disabled: option.disabled,\r\n });\r\n }\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n };\r\n this.optionComponents.changes\r\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\r\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\r\n if (options.length === 0) return;\r\n setTimeout(() => {\r\n this.items = options.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n disabled: option.disabled,\r\n }));\r\n handleOptionChange();\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n }\r\n\r\n //! attribute and/or class setters/getters\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly filtered = computed<boolean>(() => this.searchable() && this.searchTerm() !== '');\r\n\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! custom options\r\n private _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\r\n\r\n readonly addCustom = input<\r\n false | AddCustomFn<any> | AddCustomFn<Promise<any>>,\r\n string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>\r\n >(false, {\r\n transform: v => {\r\n if (isFunction(v)) {\r\n return v;\r\n }\r\n //coerce the value into a boolean\r\n //if \"true\", use the default function. Otherwise, just set to \"false\".\r\n return coerceBooleanProperty(v) && this._defaultAddCustomFn;\r\n },\r\n });\r\n readonly shouldShowAddCustom = computed<boolean>(\r\n () => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound()\r\n );\r\n\r\n async addCustomOption(value: string) {\r\n const ac = this.addCustom();\r\n if (!ac) return;\r\n\r\n const newOptionObj = await this.itemStorage.addCustomOption(value, ac);\r\n\r\n this.selectItem(newOptionObj);\r\n }\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this._disabled = state;\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.handleWriteValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n private _onTouched(): void {\r\n this.touched.set(true);\r\n this._onTouchedRegistered?.();\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n //if is a string, coerce it into array of strings\r\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\r\n //if it is not a string and not an array, just put it in an array\r\n else if (!isArray(newValue)) newValue = [newValue];\r\n\r\n this.writeValue(newValue);\r\n }\r\n get value(): Signal<any[]> {\r\n return this.itemStorage.value;\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly failedToAddEvent = output<any[]>({ alias: 'failedToAdd' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n readonly searchEvent = output<{\r\n search: string;\r\n matching: any[];\r\n }>({ alias: 'search' });\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n //! view children\r\n readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\r\n readonly dropdownPanel = viewChild<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n //! templates\r\n readonly optionTemplate = contentChild(ArdOptionTemplateDirective);\r\n readonly optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);\r\n readonly valueTemplate = contentChild(ArdValueTemplateDirective);\r\n readonly placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);\r\n readonly loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);\r\n readonly loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);\r\n readonly dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);\r\n readonly dropdownFooterTemplate = contentChild(ArdDropdownFooterTemplateDirective);\r\n readonly noItemsFoundTemplate = contentChild(ArdNoItemsFoundTemplateDirective);\r\n readonly addCustomTemplate = contentChild(ArdAddCustomTemplateDirective);\r\n readonly itemLimitReachedTemplate = contentChild(ArdItemLimitReachedTemplateDirective);\r\n readonly itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);\r\n\r\n readonly prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);\r\n\r\n //! context providers\r\n getValueContext(item: ArdOption): ValueContext {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n unselect: () => {\r\n this.unselectItem(item);\r\n },\r\n };\r\n }\r\n readonly getStatsContext = computed(\r\n (): StatsContext => ({\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getSearchContext = computed(\r\n (): SearchContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getPlaceholderContext = computed((): PlaceholderContext => {\r\n const placeholder = this.placeholderForCurrentContext();\r\n return {\r\n placeholder,\r\n $implicit: placeholder,\r\n };\r\n });\r\n readonly getCustomOptionContext = computed(\r\n (): CustomOptionContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n })\r\n );\r\n getGroupContext(group: ArdOptionGroup): GroupContext {\r\n return {\r\n $implicit: group,\r\n group,\r\n selectedChildren: group.children().filter(v => v.selected()).length,\r\n totalChildren: group.children().length,\r\n };\r\n }\r\n getOptionContext(item: ArdOption): OptionContext<ArdOption> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n readonly getItemLimitContext = computed(\r\n (): ItemLimitContext => ({\r\n totalItems: this.totalItems(),\r\n selectedItems: this.itemStorage.selectedItems().length,\r\n itemLimit: this.maxSelectedItems(),\r\n })\r\n );\r\n readonly getItemDisplayLimitContext = computed((): ItemDisplayLimitContext => {\r\n const selectedItems = this.itemStorage.selectedItems().length;\r\n return {\r\n totalItems: this.totalItems(),\r\n selectedItems,\r\n itemLimit: this.maxSelectedItems(),\r\n overflowCount: selectedItems - (this.itemDisplayLimit() ?? 0),\r\n };\r\n });\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n //! dropdown overlay\r\n @ViewChild('dropdownHost', { read: ElementRef })\r\n dropdownHost!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropdownTemplate', { read: TemplateRef })\r\n dropdownTemplate!: TemplateRef<any>;\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n this.setOverlaySize();\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n setOverlaySize(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n //! hooks\r\n ngOnInit(): void {\r\n this._setSearchInputAttributes();\r\n }\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.isItemsInputUsed) {\r\n this._setItemsFromComponents();\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //fire items load handler when loading is set to false\r\n if (changes['loading']) {\r\n if (changes['loading'].currentValue === false) {\r\n this._onItemsLoad();\r\n }\r\n }\r\n }\r\n private _onItemsLoad() {\r\n if (!this._searchBarFocused) return;\r\n this.open();\r\n }\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string, errorCode: string): void {\r\n console.warn(\r\n `ARD-WA000${errorCode}: Skipped using [${str}] property bound to <ard-select>, as some provided items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom', '5a');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom', '5b');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom', '5c');\r\n }\r\n if (this.groupLabelFrom()) {\r\n makeWarning('groupLabelFrom', '5d');\r\n }\r\n if (this.groupDisabledFrom()) {\r\n makeWarning('groupDisabledFrom', '5e');\r\n }\r\n if (this.childrenFrom()) {\r\n makeWarning('childrenFrom', '5f');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled', '5g');\r\n }\r\n }\r\n\r\n //! getters\r\n readonly firstHighlightedItem = computed<ArdOption | undefined>(() => this.itemStorage.highlightedItems()?.first());\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());\r\n readonly shouldDisplayValue = computed<boolean>(\r\n () => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable())\r\n );\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && (this.itemStorage.isAnyItemSelected() || this.searchTerm() !== '')\r\n );\r\n readonly itemsToDisplay = computed<IterableIterator<ArdOptionGroup>>(() => this.itemStorage.groups().values());\r\n readonly shouldShowNoItemsFound = computed<boolean>(\r\n () => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom()\r\n );\r\n readonly totalItems = computed<number>(() => this.itemStorage.items().length);\r\n readonly foundItems = computed<number | undefined>(() =>\r\n this.searchable() ? this.itemStorage.filteredItems().length : undefined\r\n );\r\n readonly shouldShowItemDisplayLimit = computed<boolean>(\r\n () =>\r\n this.multiselectable() &&\r\n this.itemDisplayLimit() !== Infinity &&\r\n this.itemStorage.selectedItems().length > this.itemDisplayLimit()\r\n );\r\n readonly isInputElementReadonly = computed<boolean>(\r\n () => !this.addCustom() && (!this.searchable() || this.itemStorage.isItemLimitReached())\r\n );\r\n\r\n isValueWithinDisplayLimit(i: number): boolean {\r\n return !this.multiselectable() || this.itemDisplayLimit() === Infinity || i < this.itemDisplayLimit();\r\n }\r\n readonly placeholderForCurrentContext = computed<string>(() => {\r\n if (this.searchPlaceholder() && this.searchable() && (this._searchBarFocused() || this._isClickedWithin()))\r\n return this.searchPlaceholder();\r\n return this.placeholder();\r\n });\r\n\r\n //! search input event handlers\r\n filter(filterTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(filterTerm);\r\n const matching = this.itemStorage.filter(filterTerm);\r\n if (!suppressSearchEvent) this.searchEvent.emit({ search: filterTerm, matching });\r\n this.open();\r\n }\r\n onSearchInputFocus(): void {\r\n this._searchBarFocused.set(true);\r\n }\r\n onSearchInputBlur(): void {\r\n if (!this._searchBarFocused()) return;\r\n\r\n this._onTouched();\r\n\r\n this._searchBarFocused.set(false);\r\n }\r\n //! item selection handlers\r\n toggleItem(item: ArdOption): void {\r\n if (item.selected()) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOption[]): void {\r\n const [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) {\r\n this.removeEvent.emit(unselected);\r\n }\r\n if (failedToSelect.length > 0) {\r\n this.failedToAddEvent.emit(failedToSelect);\r\n }\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n\r\n this.focus();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch(true);\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n if (unselected.length > 0 || selected.length > 0) {\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOption[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n this.removeEvent.emit(unselected);\r\n this._emitChange();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n this.focus();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n private _clearAllItems(): void {\r\n const cleared = this.itemStorage.clearAllSelected(true);\r\n\r\n this.focus();\r\n\r\n this.clearEvent.emit();\r\n this.removeEvent.emit(cleared);\r\n this._emitChange();\r\n }\r\n private _clearLastItem(): void {\r\n const clearedValue = this.itemStorage.clearLastSelected().value();\r\n\r\n this.focus();\r\n\r\n this.removeEvent.emit([clearedValue]);\r\n this._emitChange();\r\n }\r\n //! highligh-related\r\n onMouseMove() {\r\n this._isMouseBeingUsed.set(true);\r\n }\r\n onGroupMouseover(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n this.itemStorage.highlightGroup(group);\r\n }\r\n onItemMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n //! click handlers\r\n private readonly _isClickedWithin = signal<boolean>(false);\r\n onItemClick(option: ArdOption, event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.clearable()) this.toggleItem(option);\r\n else this.selectItem(option);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n onGroupClick(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n if (group.children().every(o => o.selected)) {\r\n this.unselectItem(...group.children());\r\n return;\r\n }\r\n this.selectItem(...group.children());\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n handleClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.searchTerm()) {\r\n this._clearSearch();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n handleDropdownArrowClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n this.toggle();\r\n }\r\n handleOutsideClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n handleAnywhereClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n if (!this._searchBarFocused()) {\r\n this.focus();\r\n }\r\n\r\n if (this.searchable()) {\r\n this.open();\r\n } else {\r\n this.toggle();\r\n }\r\n }\r\n @HostListener('mouseup')\r\n onMouseup(): void {\r\n this._isClickedWithin.set(false);\r\n }\r\n //! dropdown state handlers\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.isOpen()) return;\r\n\r\n this.isOpen.set(true);\r\n if (this.autoHighlightFirst()) this.itemStorage.highlightFirstItem();\r\n\r\n this._createOverlay();\r\n this.focus();\r\n\r\n this.openEvent.emit();\r\n this.detectChanges();\r\n }\r\n close(): void {\r\n if (!this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n\r\n this._onTouched();\r\n this.closeEvent.emit();\r\n this._cd.markForCheck();\r\n }\r\n //! ChangeDetectorRef\r\n detectChanges(): void {\r\n if (!(this._cd as any).destroyed) {\r\n this._cd.detectChanges();\r\n }\r\n }\r\n //! search\r\n private _clearSearch(suppressSearchEvent = false): void {\r\n this._setSearch('', suppressSearchEvent);\r\n }\r\n private _setSearch(searchTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(searchTerm);\r\n this.filter(searchTerm, suppressSearchEvent);\r\n }\r\n private _setSearchInputAttributes() {\r\n const input = this.searchInput()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Space': {\r\n this._onSpacePress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n case 'Backspace':\r\n case 'Delete': {\r\n this._onBackspaceOrDeletePress(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._onCtrlAPress();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private async _onEnterPress(event: KeyboardEvent) {\r\n event.preventDefault();\r\n let shouldClose = true;\r\n\r\n //select the currently highlighted option\r\n if (this.isOpen() && this.firstHighlightedItem()) {\r\n if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {\r\n this.unselectItem(...this.itemStorage.highlightedItems());\r\n } else {\r\n this.selectItem(...this.itemStorage.highlightedItems());\r\n }\r\n }\r\n //add a custom option\r\n else if (this.isOpen() && this.shouldShowAddCustom()) {\r\n await this.addCustomOption(this.searchTerm());\r\n }\r\n //in case of no action, open the dropdown (or keep it open)\r\n else shouldClose = false;\r\n\r\n if (!this.keepOpen() && shouldClose) {\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n private _onSpacePress(event: KeyboardEvent): void {\r\n if (this.isOpen()) return;\r\n\r\n event.preventDefault();\r\n this.open();\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.open();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== 0 && this.searchInput()?.nativeElement.selectionStart !== 0)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== this.searchTerm().length &&\r\n this.searchInput()?.nativeElement.selectionStart !== this.searchTerm().length)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\r\n if (this.searchTerm() || !this.clearable() || this.noBackspaceClear() || !this.itemStorage.isAnyItemSelected()) return;\r\n\r\n event.preventDefault();\r\n if (this.multiselectable() && this.itemStorage.selectedItems().length > 1) {\r\n this._clearLastItem();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n private _onCtrlAPress(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index()) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n <ng-template\r\n *ngIf=\"isValueWithinDisplayLimit($index)\"\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n <!-- TODO check if can remove div -->\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-simple-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [ardInnerHTML]=\"group.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index()\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span\r\n [ardInnerHTML]=\"option.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@NgModule({\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n})\nexport class ArdiumFormFieldFrameModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArdiumChipModule } from './../chip/chip.module';\n\nimport { ArdiumClickOutsideEventModule, ArdiumInnerHTMLModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\nimport { ArdiumSelectComponent } from './select.component';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\n\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n ArdiumDropdownPanelModule,\n ArdiumChipModule,\n ArdiumClickOutsideEventModule,\n _ClearButtonModule,\n ArdiumInnerHTMLModule,\n ],\n exports: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumOptionComponent } from './option.component';\n\n@NgModule({\n declarations: [ArdiumOptionComponent],\n imports: [CommonModule],\n exports: [ArdiumOptionComponent],\n})\nexport class ArdiumOptionModule {}\n","export type ArdTransformerFn = (\r\n currentText: string,\r\n previousText: string,\r\n caretPos: number\r\n) => { text: string; caretPos: number };\r\n\r\ninterface IRegExpTransformer {\r\n apply: ArdTransformerFn;\r\n}\r\nexport class RegExpTransformer implements IRegExpTransformer {\r\n constructor(\r\n public regex: RegExp,\r\n public replace = '',\r\n public caretModif = 0\r\n ) {}\r\n\r\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\r\n let text = currentText;\r\n if (text && this.regex) {\r\n let safetySwitch = 0;\r\n while (text.match(this.regex)) {\r\n //prevent infinite loop\r\n if (safetySwitch > 999) {\r\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\r\n break;\r\n }\r\n //apply regex\r\n const lengthBefore = text.length;\r\n text = text.replace(this.regex, this.replace);\r\n const lengthAfter = text.length;\r\n //fix caret pos\r\n caretPos = caretPos + (lengthAfter - lengthBefore);\r\n //for infinite loop prevention\r\n safetySwitch++;\r\n }\r\n }\r\n return { text, caretPos };\r\n }\r\n}\r\n\r\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toUpperCase(), caretPos };\r\n};\r\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toLowerCase(), caretPos };\r\n};\r\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\r\n [/[^0-9,.-]/],\r\n [/,/, '.'],\r\n [/(.+)-/, '$1'],\r\n [/\\.(.*)\\./, '$1.'],\r\n [/^(-?)\\./, '$10.'],\r\n ];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nexport const ArdTransformer = {\r\n ToUpper: toUpper,\r\n ToLower: toLower,\r\n Integer: int,\r\n Float: float,\r\n} as const;\r\n","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull, isNumber } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\r\n\r\nexport interface SimpleInputModelHost {\r\n readonly maxLength: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class SimpleInputModel {\r\n constructor(protected readonly _ardHostCmp: SimpleInputModelHost) {}\r\n\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-simple-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n //constraints\r\n v = this._applyLengthTransformer(v);\r\n //update view\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n clear(): void {\r\n this.value.set(null);\r\n this._updateInputElement();\r\n }\r\n\r\n _updateInputElement() {\r\n const el = this._ardHostCmp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n el.value = this.stringValue();\r\n }\r\n get caretPos(): number {\r\n return this._ardHostCmp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue.length;\r\n }\r\n set caretPos(pos: number) {\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n //! constraints\r\n protected _applyLengthTransformer(v: string | null): string | null {\r\n const max = this._ardHostCmp.maxLength();\r\n if (!isDefined(max)) return v;\r\n if (!v || v.length <= max) return v;\r\n\r\n v = v.substring(0, max);\r\n this.caretPos = max;\r\n return v;\r\n }\r\n}\r\nexport interface InputModelHost extends SimpleInputModelHost {\r\n charlist: Signal<RegExp | undefined>;\r\n}\r\nexport class InputModel extends SimpleInputModel {\r\n constructor(protected override readonly _ardHostCmp: InputModelHost) {\r\n super(_ardHostCmp);\r\n }\r\n protected override _writeValue(v: string | null): boolean {\r\n //transformers\r\n if (v) {\r\n let prev = this.stringValue();\r\n v = this._applyAllowOrDenylistTransformer(v, prev);\r\n prev = this.stringValue();\r\n v = this._applyLengthTransformer(v);\r\n }\r\n const oldVal = this.value();\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n\r\n setSelection(from: number | null, to: number | null): void;\r\n setSelection(from: number | null, to?: number | null): void {\r\n to = to ?? this.value()?.length ?? Infinity;\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(from, to);\r\n }\r\n //* constraints\r\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\r\n const charlist = this._ardHostCmp.charlist();\r\n if (!charlist || !v) return v;\r\n const { text, caretPos } = new RegExpTransformer(charlist).apply(v, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n}\r\n\r\nexport interface NumberInputModelHost {\r\n readonly max: Signal<number>;\r\n readonly min: Signal<number>;\r\n readonly allowFloat: Signal<boolean>;\r\n readonly inputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class NumberInputModel {\r\n constructor(protected readonly _ardHostCmp: NumberInputModelHost) {}\r\n\r\n //! value setters/getters\r\n protected readonly _value = signal<string | null>(null);\r\n readonly value = this._value.asReadonly();\r\n readonly stringValue = computed(() => this._value() ?? '');\r\n readonly numberValue = computed(() => (this._value() === null ? null : Number(this._value())));\r\n\r\n setValue(v: string | number | null): void {\r\n const stringV = isNumber(v) ? String(v) : v;\r\n this._value.set(stringV);\r\n this._updateInputEl();\r\n }\r\n\r\n private _updateInputEl(): void {\r\n const stringV = this.stringValue();\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n if (!el) return;\r\n\r\n const caretPos = this.caretPos;\r\n el.value = stringV;\r\n this.caretPos = caretPos;\r\n }\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0070: Trying to set <ard-number-input>'s value to \"${typeof v}\", expected string, number, or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n v = String(v);\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | number | null): boolean {\r\n //constraints\r\n if (v) {\r\n v = this._removeDecimalPlaces(v);\r\n v = this._applyNumberConstraint(v);\r\n v = this._applyMinMaxConstraints(v);\r\n }\r\n //update view\r\n const oldVal = this._value();\r\n this.setValue(v);\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this._value());\r\n }\r\n\r\n //! input element methods\r\n get caretPos(): number {\r\n return this._ardHostCmp.inputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n el?.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _removeDecimalPlaces(v: string | number | null): string | number {\r\n if (!v) return '';\r\n if (this._ardHostCmp.allowFloat()) return v;\r\n\r\n let num = isNumber(v) ? v : Number(v);\r\n\r\n if (!isNumber(v) && v.match(/[.,].+/)) {\r\n num = Number(v);\r\n }\r\n if (!isNaN(num)) return Math.round(num);\r\n return v;\r\n }\r\n private _applyNumberConstraint(v: string | number): string {\r\n if (!v) return '';\r\n\r\n const transformerFn = this._ardHostCmp.allowFloat() ? ArdTransformer.Float : ArdTransformer.Integer;\r\n const { text, caretPos } = transformerFn(String(v), this.stringValue(), this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyMinMaxConstraints(v: string): string {\r\n if (!v) return '';\r\n\r\n const numericValue = Number(v);\r\n if (numericValue > this._ardHostCmp.max()) return this._ardHostCmp.max().toString();\r\n if (numericValue < this._ardHostCmp.min()) return this._ardHostCmp.min().toString();\r\n return v;\r\n }\r\n}\r\n\r\nexport function escapeAndCreateRegex(str: string, flags?: string, negated = true): RegExp {\r\n str = str.replace(/([\\]]+)/g, '\\\\$1');\r\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdSimpleInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-prefix-tmp]' })\nexport class ArdSimpleInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-suffix-tmp]' })\nexport class ArdSimpleInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { SimpleOneAxisAlignment } from './../../types/alignment.types';\r\nimport { SimpleInputModel, SimpleInputModelHost } from './../input-utils';\r\nimport {\r\n ArdSimpleInputPlaceholderTemplateDirective,\r\n ArdSimpleInputPrefixTemplateDirective,\r\n ArdSimpleInputSuffixTemplateDirective,\r\n} from './simple-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-simple-input',\r\n templateUrl: './simple-input.component.html',\r\n styleUrls: ['./simple-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSimpleInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSimpleInputComponent\r\n extends _NgModelComponentBase\r\n implements SimpleInputModelHost, ControlValueAccessor, AfterViewInit\r\n{\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new SimpleInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>(undefined);\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdSimpleInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSimpleInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdSimpleInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => Boolean(this.placeholder()) && !this.inputModel.value());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.clearable() ? 'ard-clearable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! number attribute setters/getters\r\n readonly maxLength = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! no-value attribute setters/getters\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel.value();\r\n }\r\n readonly valueChange = output<string | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string | null>({ alias: 'input' });\r\n readonly changeEvent = output<string | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this._onChangeRegistered?.(this.value);\r\n this.inputEvent.emit(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n this.changeEvent.emit(this.inputModel.value());\r\n }\r\n // clear button\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel.value())\r\n );\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit(event);\r\n this.focus();\r\n }\r\n\r\n //! copy event\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-simple-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSimpleInputComponent } from './simple-input.component';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\n exports: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSimpleInputModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, isDefined, isPrimitive } from 'simple-bool';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface SimplestItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n}\r\nexport interface SimplestItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\r\n}\r\n\r\nexport class SimplestItemStorage {\r\n private readonly _items = signal<ArdSimplestStorageItem[]>([]);\r\n private readonly _highlightedItem = signal<Nullable<ArdSimplestStorageItem>>(null);\r\n\r\n constructor(private readonly _ardParentComp: SimplestItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * The currently highlighted item.\r\n */\r\n readonly highlightedItem = this._highlightedItem.asReadonly();\r\n /**\r\n * True if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => isDefined(this._highlightedItem()));\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n\r\n /**\r\n * Selects the given item.\r\n * @param items The item to select.\r\n * @returns The value of the selected item.\r\n */\r\n selectItem(item: ArdSimplestStorageItem): any {\r\n return item.value;\r\n }\r\n selectCurrent(): any {\r\n const hi = this._highlightedItem();\r\n if (!hi) return undefined;\r\n return this.selectItem(hi);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightCurrent(): void {\r\n const hi = this._highlightedItem();\r\n if (hi) {\r\n hi.highlighted.set(false);\r\n }\r\n this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights a given item.\r\n * @param item The item to be highlighted.\r\n */\r\n highlightItem(item: ArdSimplestStorageItem): void {\r\n this.unhighlightCurrent();\r\n\r\n item.highlighted.set(true);\r\n\r\n this._highlightedItem.set(item);\r\n }\r\n /**\r\n * Unhighlights a given item.\r\n * @param item The item to be unhighlighted.\r\n */\r\n unhighlightItem(item: ArdSimplestStorageItem): void {\r\n item.highlighted.set(false);\r\n\r\n if (this._highlightedItem()?.index() === item.index()) this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().first();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().last();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\r\n const currentItem = this._highlightedItem();\r\n if (!currentItem) {\r\n return this.highlightFirstItem();\r\n }\r\n const items = this._items();\r\n const currentIndexInItems = items.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= items.length) {\r\n nextItemIndex -= items.length;\r\n } else if (nextItemIndex < 0) {\r\n nextItemIndex += items.length;\r\n }\r\n const itemToHighlight = items[nextItemIndex];\r\n\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdSimplestStorageItem, OptionContext } from '../../types/item-storage.types';\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suggestion-tmp]' })\r\nexport class ArdSuggestionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdSimplestStorageItem>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-loading-tmp]' })\r\nexport class ArdInputLoadingTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isString } from 'simple-bool';\r\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ArdiumSimpleInputComponent } from '../simple-input/simple-input.component';\r\nimport { OptionContext } from './../../types/item-storage.types';\r\nimport { InputModel, InputModelHost, escapeAndCreateRegex } from './../input-utils';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@Component({\r\n selector: 'ard-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumInputComponent\r\n extends ArdiumSimpleInputComponent\r\n implements InputModelHost, SimplestItemStorageHost, AfterViewInit\r\n{\r\n private readonly element!: HTMLElement;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private scrollStrategyOpts: ScrollStrategyOptions\r\n ) {\r\n super();\r\n\r\n this.element = viewContainerRef.element.nativeElement;\r\n }\r\n\r\n override readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n suggestionsLoadingText: 'Loading...',\r\n };\r\n //! input view\r\n protected override readonly inputModel = new InputModel(this);\r\n\r\n //! allowlist/denylist of characters\r\n //use standard string for denylist, prepend with ^ for allowlist\r\n readonly charlistFromInput = input<RegExp | undefined, string>(undefined, {\r\n alias: 'charlist',\r\n transform: v => {\r\n if (!isString(v)) {\r\n throw new Error('ARD-FT0033: [charlist] must be a non-empty string, got \"\".');\r\n }\r\n const negated = v.startsWith('^');\r\n return escapeAndCreateRegex(v, '', !negated);\r\n },\r\n });\r\n readonly charlistCaseInsensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly charlist = computed<RegExp | undefined>(() => {\r\n const c = this.charlistFromInput();\r\n if (!this.charlistCaseInsensitive() || !c) {\r\n return c;\r\n }\r\n return new RegExp(c.source, 'i');\r\n });\r\n\r\n //! autocomplete\r\n readonly autocomplete = input<Nullable<string>>(undefined);\r\n\r\n readonly shouldDisplayAutocomplete = computed<boolean>(() => !this.disabled() && Boolean(this.autocomplete()));\r\n\r\n //autocomplete event\r\n readonly acceptAutocompleteEvent = output({ alias: 'acceptAutocomplete' });\r\n\r\n //! prefix & suffix\r\n override readonly prefixTemplate = contentChild(ArdInputPrefixTemplateDirective);\r\n override readonly suffixTemplate = contentChild(ArdInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n override readonly placeholderTemplate = contentChild(ArdInputPlaceholderTemplateDirective);\r\n\r\n //! suggestions\r\n readonly suggestionStorage = new SimplestItemStorage(this);\r\n\r\n readonly valueFrom = input<Nullable<string>>(undefined, { alias: 'suggValueFrom' });\r\n readonly labelFrom = input<Nullable<string>>(undefined, { alias: 'suggLabelFrom' });\r\n\r\n readonly acceptSuggestionEvent = output<any>({ alias: 'acceptSuggestion' });\r\n\r\n readonly suggestionItems = this.suggestionStorage.items;\r\n\r\n @Input()\r\n set suggestions(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.suggestionStorage.setItems(value);\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n this.suggestionStorage.highlightFirstItem();\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string): void {\r\n console.warn(\r\n `ARD-WA0031: Skipped using [${str}] property bound to <ard-input>, as some provided suggestion items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n }\r\n\r\n private readonly _suggestionDropdowOpen = signal<boolean>(false);\r\n\r\n readonly shouldDisplaySuggestions = computed(\r\n () => !this.disabled() && (this.suggestionItems().length > 0 || this.areSuggestionsLoading()) && this._suggestionDropdowOpen()\r\n );\r\n\r\n readonly areSuggestionsLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly suggestionsLoadingText = input<string>(this.DEFAULTS.suggestionsLoadingText);\r\n\r\n readonly suggestionTemplate = contentChild(ArdSuggestionTemplateDirective);\r\n readonly suggestionLoadingTemplate = contentChild(ArdInputLoadingTemplateDirective);\r\n\r\n //! suggestions overlay\r\n readonly dropdownHost = viewChild<ElementRef<HTMLDivElement>>('suggestionsHost');\r\n readonly dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });\r\n\r\n private dropdownOverlay!: OverlayRef;\r\n\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost()!)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ])\r\n .withPush(false);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate()!, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n\r\n this.setOverlaySize();\r\n }\r\n\r\n setOverlaySize(): void {\r\n const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect?.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n getOptionContext(item: ArdSimplestStorageItem): OptionContext<ArdSimplestStorageItem> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData,\r\n };\r\n }\r\n\r\n //! suggestion-highligh-related\r\n private _isMouseBeingUsed = false;\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this._isMouseBeingUsed = true;\r\n }\r\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.highlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.unhighlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n //! suggestion selection\r\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._selectSuggestion(item);\r\n }\r\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\r\n const selected = this.suggestionStorage.selectItem(item);\r\n this.writeValue(selected ?? '');\r\n\r\n this.acceptSuggestionEvent.emit(selected);\r\n\r\n //important to do those two things in this exact order\r\n this.focus();\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n handleSuggestionClickOutside(event: MouseEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (this.element.contains(target)) return;\r\n\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n //! suggestion appearance\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! focus override\r\n override onFocus(event: FocusEvent): void {\r\n this._suggestionDropdowOpen.set(true);\r\n if (!this.suggestionStorage.highlightedItem()) this.suggestionStorage.highlightFirstItem();\r\n\r\n super.onFocus(event);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onTabOrEnterPress(event);\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Tab': {\r\n this._onTabOrEnterPress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplayAutocomplete()) return;\r\n event.preventDefault();\r\n\r\n this.onInput(this.autocomplete() ?? '');\r\n this.acceptAutocompleteEvent.emit();\r\n }\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n const item = this.suggestionStorage.highlightedItem();\r\n if (!item) return;\r\n\r\n event.preventDefault();\r\n this._selectSuggestion(item);\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(+1);\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(-1);\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumInputComponent } from './input.component';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n _ClearButtonModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumInputModule {}\r\n","export const DigitInputShape = {\r\n Square: 'square',\r\n Rectangle: 'rectangle',\r\n} as const;\r\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\r\n\r\nexport const TransformType = {\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\r\n\r\nexport const DigitInputPrimitiveOption = {\r\n Number: 'number',\r\n Letter: 'letter',\r\n Alphanumeric: 'alphanumeric',\r\n Special: 'special',\r\n} as const;\r\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\r\n\r\nexport interface DigitInputAcceptObject {\r\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\r\n transform?: TransformType | null;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputStaticObject {\r\n static: string;\r\n}\r\n\r\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\r\n\r\nexport type DigitInputConfig = (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\r\n","import { ElementRef, Signal } from '@angular/core';\r\n\r\nexport interface DigitInputConfigData {\r\n type: DigitInputConfigDataType;\r\n char?: string;\r\n index?: number;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputModelHost {\r\n readonly inputs: Signal<readonly ElementRef<HTMLInputElement>[]>;\r\n}\r\n\r\nexport const DigitInputConfigDataType = {\r\n Input: 'input',\r\n Static: 'static',\r\n} as const;\r\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\r\n\r\nexport function _sanitizeRegExpString(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n","import { computed, effect, signal } from '@angular/core';\r\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\r\nimport {\r\n DigitInputAcceptObject,\r\n DigitInputConfig,\r\n DigitInputOption,\r\n DigitInputPrimitiveOption,\r\n TransformType,\r\n} from './digit-input.types';\r\nimport { DigitInputConfigData, DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\r\n\r\nexport class DigitInputModel {\r\n constructor(private _ardHost: DigitInputModelHost) {\r\n //set the value array to be the same length\r\n effect(\r\n () => {\r\n const length = this.configArrayData().length;\r\n\r\n this.value.update(arr => {\r\n if (!arr) return new Array(length).fill(null);\r\n if (arr.length >= length) return arr.slice(0, length);\r\n return [...arr, ...new Array(length - arr.length).fill(null)];\r\n });\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private readonly _configArray = signal<DigitInputOption[]>([]);\r\n\r\n readonly configArrayData = computed<DigitInputConfigData[]>(() => {\r\n let inputIndex = 0;\r\n return this._configArray().map(v => {\r\n if ('static' in v) {\r\n return {\r\n type: DigitInputConfigDataType.Static,\r\n char: v.static,\r\n };\r\n }\r\n return {\r\n type: DigitInputConfigDataType.Input,\r\n index: inputIndex++,\r\n };\r\n });\r\n });\r\n\r\n private readonly _configArrayNoStatics = computed<DigitInputAcceptObject[]>(\r\n () => this._configArray().filter(v => !('static' in v)) as DigitInputAcceptObject[]\r\n );\r\n\r\n readonly isConfigDefined = computed((): boolean => this._configArray().length > 0);\r\n\r\n readonly value = signal<(string | null)[] | null>(null);\r\n\r\n readonly stringValue = computed(\r\n (): string =>\r\n this.value()\r\n ?.map(v => v ?? ' ')\r\n .join('')\r\n .trimEnd() ?? ''\r\n );\r\n\r\n readonly isValueFull = computed((): boolean => this.value()?.filter(v => v).length === this._configArrayNoStatics().length);\r\n\r\n isDefinedAtIndex(index: number): boolean {\r\n return !!this.value()?.[index];\r\n }\r\n\r\n writeValue(v: any): boolean {\r\n if (!isArray(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), expected string or array of strings.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n const vArray = coerceArrayProperty(v);\r\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\r\n if (problemIndex !== -1) {\r\n throw new Error(\r\n `ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element \"${vArray[problemIndex]}\" at index ${problemIndex} does not match those requirements.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n private _writeValue(v: string[] | null): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v && v.map(el => el || null));\r\n this.validateValueAndUpdate();\r\n this._updateInputElements();\r\n return oldVal !== v;\r\n }\r\n\r\n private _updateInputElements() {\r\n const value = this.value ?? [];\r\n let i = 0;\r\n for (const inputEl of this._ardHost.inputs()) {\r\n inputEl.nativeElement.value = value()?.[i] ?? '';\r\n i++;\r\n }\r\n }\r\n\r\n //! setting config\r\n setConfig(config: DigitInputConfig): void {\r\n this._setConfig(config);\r\n this.validateValueAndUpdate();\r\n }\r\n private _setConfig(config: DigitInputConfig): void {\r\n //map a number to ready objects\r\n let configAsNumber = isAnyString(config) ? Number(config) : null;\r\n if (isNumber(config) || isNumber(configAsNumber)) {\r\n configAsNumber = isNumber(config) ? config : configAsNumber!;\r\n this._configArray.set(new Array(configAsNumber).fill({ accept: (str: string) => /[0-9]/.test(str) }));\r\n return;\r\n }\r\n //map a string to an array\r\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\r\n if (isAnyString(config)) {\r\n configArr = coerceArrayProperty(config);\r\n } else {\r\n configArr = config;\r\n }\r\n //map array to ready objects\r\n this._configArray.set(\r\n configArr.map((v, i) => {\r\n if (!isAnyString(v)) {\r\n if ('accept' in v && !isFunction(v.accept)) {\r\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\r\n v.accept = str => regExp.test(str);\r\n }\r\n return v;\r\n }\r\n\r\n switch (v) {\r\n case DigitInputPrimitiveOption.Number:\r\n return { accept: str => /[0-9]/.test(str) };\r\n case DigitInputPrimitiveOption.Letter:\r\n return { accept: str => /[a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Alphanumeric:\r\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Special:\r\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\r\n\r\n default:\r\n if (configArr.length === 1) {\r\n throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\r\n }\r\n throw new Error(`ARD-NF0043B: Found invalid string \"${v}\" in <ard-digit-input>'s config at index ${i}`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n //! validate against the config\r\n validateInputAndSetValue(input: string, index: number): false | [boolean, string | null] {\r\n if (index < 0 || index > this._configArrayNoStatics().length) return false;\r\n\r\n let v = this.value();\r\n //prepare the value array if does not exist\r\n if (!v) {\r\n this.value.set([]);\r\n }\r\n v = [];\r\n //prepare the characters before the current one (to be used in validation)\r\n const before = this.stringValue().charAt(index);\r\n\r\n //remove the old character from the input element\r\n if (before && input.length > 1 && input.match(before)) {\r\n input = input.replace(before, '');\r\n }\r\n //use only the first or last character (error safety)\r\n const firstChar = input.charAt(0);\r\n const lastChar = input.charAt(input.length - 1);\r\n input = firstChar === before ? lastChar : firstChar;\r\n\r\n //validate and transform, if necessary\r\n const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics()[index]);\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n const newVal = inputChar ?? before;\r\n inputEl.nativeElement.value = newVal ?? '';\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newVal || null;\r\n return newArr;\r\n });\r\n //return changes marker and validated value\r\n return [newVal !== before, inputChar];\r\n }\r\n validateValueAndUpdate(): void {\r\n const v = this.value();\r\n if (!v) return;\r\n\r\n let before = '';\r\n const newValue: (string | null)[] = [];\r\n for (let i = 0; i < Math.min(this._configArrayNoStatics().length, v.length); i++) {\r\n const char = v[i];\r\n before += char ?? ' ';\r\n\r\n if (!char) {\r\n newValue.push(char);\r\n continue;\r\n }\r\n const config = this._configArrayNoStatics()[i];\r\n\r\n const newChar = this._validateSingleChar(char, before, config);\r\n newValue.push(newChar);\r\n }\r\n this.value.set(newValue);\r\n }\r\n private _validateSingleChar(char: string | null, before: string, config: DigitInputAcceptObject): string | null {\r\n if (config.readonly) {\r\n throw new Error(\r\n `ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\r\n );\r\n }\r\n if (!isFunction(config.accept)) {\r\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\r\n config.accept = str => regExp.test(str);\r\n }\r\n if (!char) return char;\r\n\r\n const canAccept = config.accept(char, before);\r\n if (!canAccept) return null;\r\n\r\n if (config.transform) {\r\n if (config.transform === TransformType.Lowercase) {\r\n return char.toLowerCase();\r\n }\r\n if (config.transform === TransformType.Uppercase) {\r\n return char.toUpperCase();\r\n }\r\n console.warn(\r\n `ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\r\n );\r\n }\r\n return char;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { DigitInputModel } from './digit-input.model';\r\nimport { DigitInputConfig, DigitInputShape } from './digit-input.types';\r\nimport { DigitInputModelHost } from './digit-input.utils';\r\n\r\n@Component({\r\n selector: 'ard-digit-input',\r\n templateUrl: './digit-input.component.html',\r\n styleUrls: ['./digit-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDigitInputComponent extends _NgModelComponentBase implements ControlValueAccessor, DigitInputModelHost {\r\n //! inputs ref\r\n readonly inputs = viewChildren<ElementRef<HTMLInputElement>>('input');\r\n\r\n //! data model\r\n private readonly model = new DigitInputModel(this);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly shape = input<DigitInputShape>(DigitInputShape.Square);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-shape-${this.shape()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! model access points\r\n readonly config = input.required<void, DigitInputConfig>({\r\n transform: v => this.model.setConfig(v),\r\n });\r\n readonly configArrayData = this.model.configArrayData;\r\n\r\n private _oldConfigArrayDataLength = -1;\r\n readonly configArrayDataEffect = effect(() => {\r\n if (this.configArrayData().length === this._oldConfigArrayDataLength) return;\r\n\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n this._emitChange();\r\n });\r\n\r\n isInputEmpty(index: number): boolean {\r\n return !this.model.isDefinedAtIndex(index);\r\n }\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any): void {\r\n this._writeValue(v);\r\n }\r\n private _writeValue(v: any): boolean {\r\n return this.model.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n readonly outputAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @Input()\r\n set value(v: string | (string | null)[] | null) {\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<string | (string | null)[] | null>();\r\n\r\n readonly stringValue = this.model.stringValue;\r\n\r\n readonly emittableValue = computed((): string | (string | null)[] | null => {\r\n if (this.outputAsString()) return this.model.stringValue();\r\n return this.model.value();\r\n });\r\n\r\n //! event emitters\r\n readonly finishedValue = output<string | (string | null)[] | null>();\r\n\r\n readonly focusIndexEvent = output<number>({ alias: 'focusIndex' });\r\n readonly blurIndexEvent = output<number>({ alias: 'blurIndex' });\r\n\r\n //! event handlers\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n const value = event.clipboardData?.getData('text');\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!value) return;\r\n\r\n const maxLength = this.inputs().length - index;\r\n value\r\n .slice(0, maxLength)\r\n .split('')\r\n .forEach((char, i) => {\r\n this.model.validateInputAndSetValue(char, index + i);\r\n });\r\n this.focusByIndex(index - 1 + Math.min(value.length, maxLength));\r\n }\r\n onInput(event: Event, index: number): void {\r\n this._updateSingleInputValue((event.target as HTMLInputElement).value, index);\r\n this.focusByIndex(index + 1);\r\n }\r\n private _updateSingleInputValue(value: string, index: number): void {\r\n const valueChanged = this.model.validateInputAndSetValue(value, index);\r\n if (!valueChanged || !valueChanged[0]) return;\r\n\r\n this._emitChange();\r\n\r\n if (this.model.isValueFull()) {\r\n this.blur();\r\n }\r\n }\r\n focusByIndex(index: number): boolean;\r\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\r\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\r\n if (index < 0 || index >= this.inputs().length) return false;\r\n const nextEl = this.inputs()[index]?.nativeElement;\r\n if (!nextEl) return false;\r\n\r\n nextEl.focus();\r\n if (tryFocusingNext && direction && document.activeElement !== nextEl) {\r\n return this.focusByIndex(index + direction);\r\n }\r\n return document.activeElement === nextEl;\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent, index: number): void {\r\n this.focusIndexEvent.emit(index);\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent, index: number): void {\r\n this.blurIndexEvent.emit(index);\r\n this.onBlur(event);\r\n }\r\n protected _emitChange(): void {\r\n const v = this.emittableValue();\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n if (this.model.isValueFull()) {\r\n this.finishedValue.emit(v);\r\n }\r\n }\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.focusByIndex(index - 1, true, -1);\r\n return;\r\n case 'ArrowRight':\r\n this.focusByIndex(index + 1, true, +1);\r\n return;\r\n case 'Home':\r\n this.focusByIndex(0, true, 1);\r\n return;\r\n case 'End':\r\n this.focusByIndex(this.inputs.length - 1, true, -1);\r\n return;\r\n case 'Backspace':\r\n case 'Delete':\r\n this._updateSingleInputValue('', index);\r\n this.focusByIndex(index - 1, true, -1);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDigitInputComponent } from './digit-input.component';\n\n@NgModule({\n declarations: [ArdiumDigitInputComponent],\n imports: [CommonModule],\n exports: [ArdiumDigitInputComponent],\n})\nexport class ArdiumDigitInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Directive({\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\n})\nexport class ArdPasswordInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\nexport class ArdPasswordInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\nexport class ArdPasswordInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\nexport class ArdPasswordInputRevealButtonTemplateDirective {\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'icon',\n})\nexport class ArdiumIconPipe implements PipeTransform {\n transform(value: string): string {\n value = value.trim().toLowerCase();\n value = value.replace(/[ -]/g, '_');\n return value;\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\r\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\r\n\r\ntype GradeNumber = -25 | 0 | 200;\r\ntype GradeString = '-25' | '0' | '200';\r\n\r\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\r\ntype OpticalSizeString = '20' | '24' | '40' | '48';\r\n\r\n@Component({\r\n selector: 'ard-icon',\r\n templateUrl: `./icon.component.html`,\r\n styleUrls: ['./icon.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n readonly icon = input<Nullable<string>>(undefined);\r\n\r\n readonly filled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly weight = input<WeightNumber | undefined, Nullable<WeightNumber | WeightString>>(400, {\r\n transform: v => coerceNumberProperty(v, 400) as WeightNumber,\r\n });\r\n readonly grade = input<GradeNumber | undefined, Nullable<GradeNumber | GradeString>>(0, {\r\n transform: v => coerceNumberProperty(v, 0) as GradeNumber,\r\n });\r\n readonly opticalSize = input<OpticalSizeNumber | undefined, Nullable<OpticalSizeNumber | OpticalSizeString>>(40, {\r\n transform: v => coerceNumberProperty(v, 40) as OpticalSizeNumber,\r\n });\r\n\r\n readonly fontVariationSettings = computed<string>(() => {\r\n //map values to different properties defined by google icons\r\n const propObject = {\r\n FILL: isDefined(this.filled()) ? Number(this.filled()) : undefined,\r\n wght: this.weight(),\r\n GRAD: this.grade(),\r\n opsz: this.opticalSize(),\r\n };\r\n //map the object to an array of strings\r\n const propObjectAsArray = Object.entries(propObject) //object to array\r\n .filter(v => isDefined(v[1])) //filter undefined values\r\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\r\n .flat(); //flatten\r\n\r\n //create the final string only if any of the properties are defined\r\n return propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', propObjectAsArray.join(', ')].join('');\r\n });\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.icon() && !this.contentWrapper()?.nativeElement.innerText) {\r\n console.warn(`ARD-FT9000: Using <ard-icon> without specifying the [icon] field.`);\r\n }\r\n }\r\n}\r\n","<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Component({\r\n selector: 'ard-password-input',\r\n templateUrl: './password-input.component.html',\r\n styleUrls: ['./password-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumPasswordInputComponent extends _NgModelComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n ngOnInit(): void {\r\n this._setInputAttributes();\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdPasswordInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdPasswordInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdPasswordInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.value());\r\n\r\n //! revealing\r\n readonly revealable = input<boolean, any>(true, { transform: v => coerceBooleanProperty(v) });\r\n readonly holdToReveal = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoHideTimeoutMs = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly revealed = model<boolean>(false);\r\n\r\n private _hideTimeout: NodeJS.Timeout | null = null;\r\n toggleReveal(newState = !this.revealed()): void {\r\n this.revealed.set(newState);\r\n\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n const timeout = this.autoHideTimeoutMs();\r\n if (timeout && newState) {\r\n this._hideTimeout = setTimeout(() => this.revealed.set(false), timeout);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n }\r\n\r\n readonly revealTemplate = contentChild(ArdPasswordInputRevealButtonTemplateDirective);\r\n\r\n readonly revealButtonContext = computed(\r\n (): PasswordInputRevealButtonContext => ({\r\n $implicit: this.revealed(),\r\n })\r\n );\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.revealable() ? 'ard-revealable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!isAnyString(v) && isDefined(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-password-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n return;\r\n }\r\n this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null | undefined): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n return oldVal !== v;\r\n }\r\n //! value two-way binding\r\n readonly value = model<Nullable<string>>();\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this._writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value();\r\n this._onChangeRegistered?.(v);\r\n }\r\n //focus, blur, change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n const textInputEl = this.textInputEl();\r\n const v = this.value();\r\n if (\r\n v &&\r\n textInputEl &&\r\n //does the selection cover the entire input\r\n ((textInputEl.nativeElement.selectionStart === 0 &&\r\n textInputEl.nativeElement.selectionEnd === textInputEl.nativeElement.value.length) ||\r\n //or is zero-wide\r\n textInputEl.nativeElement.selectionStart === textInputEl.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', v);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()?.nativeElement;\r\n if (!input) return;\r\n\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconComponent } from './icon.component';\nimport { ArdiumIconPipe } from './icon.pipe';\n\n@NgModule({\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\n imports: [CommonModule],\n exports: [ArdiumIconComponent, ArdiumIconPipe],\n})\nexport class ArdiumIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumPasswordInputComponent } from './password-input.component';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\n exports: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n})\nexport class ArdiumPasswordInputModule {}\n","\r\n\r\nexport const ButtonType = {\r\n Button: 'button',\r\n Submit: 'submit',\r\n Reset: 'reset',\r\n} as const;\r\nexport type ButtonType = typeof ButtonType[keyof typeof ButtonType];","/**\n * General button appearance. Controls which parts of the button can be colored.\n *\n * @see {@link ButtonColoringMode}\n */\nexport const ButtonAppearance = {\n /**\n * No border and no background. Text and icon are colored.\n */\n Transparent: 'transparent',\n /**\n * No border, but with text shadow. Text, icon, and background are colored.\n */\n Raised: 'raised',\n /**\n * No border, but with text shadow. White background. Text and icon are colored.\n */\n RaisedStrong: 'raised-strong',\n /**\n * White background. Text and icon are colored.\n */\n Outlined: 'outlined',\n /**\n * White background. Text, icon, and border may be colored.\n *\n * Background becomes colored on hover/focus.\n */\n OutlinedStrong: 'outlined-strong',\n /**\n * No border. Text, icon, and background are colored.\n */\n Flat: 'flat',\n} as const;\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\n\nexport const ButtonVariant = {\n /**\n * Basic, rectangular button.\n */\n Rounded: 'rounded',\n /**\n * Pill-shaped button.\n */\n Pill: 'pill',\n /**\n * Basic, rectangular button with sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\n\n/**\n * **F**loating **A**ction **B**utton size.\n */\nexport const FABSize = {\n Standard: 'standard',\n Small: 'small',\n} as const;\nexport type FABSize = (typeof FABSize)[keyof typeof FABSize];\n","import { Directive, Signal, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\n@Directive()\r\nexport abstract class _ButtonBase extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! button settings\r\n readonly appearance = input<ButtonAppearance>(ButtonAppearance.Raised);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n abstract readonly ngClasses: Signal<string>;\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumButtonComponent extends _ButtonBase {\r\n readonly icon = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(ButtonVariant.Rounded);\r\n readonly alignIcon = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.alignIcon()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.vertical() ? 'ard-button-vertical' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n #buttonElement\r\n class=\"ard-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (icon()) {\r\n <div class=\"ard-button-icon\">\r\n {{ icon() }}\r\n </div>\r\n }\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ArdiumButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumButtonComponent],\n})\nexport class ArdiumButtonModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdNumberInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';\r\nimport { OneAxisAlignment } from '../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\r\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-number-input',\r\n templateUrl: './number-input.component.html',\r\n styleUrls: ['./number-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumNumberInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, NumberInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new NumberInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._setInputAttributes();\r\n this._wasViewInit = true;\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !!this.placeholder() && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string => {\r\n return [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n `ard-quick-change-${this.noButtons}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ');\r\n });\r\n\r\n readonly buttonVariant = computed((): ButtonVariant => {\r\n if (this.variant() === FormElementVariant.Rounded) return ButtonVariant.Rounded;\r\n if (this.variant() === FormElementVariant.Pill) return ButtonVariant.Pill;\r\n if (this.variant() === FormElementVariant.Sharp) return ButtonVariant.Sharp;\r\n return ButtonVariant.Rounded;\r\n });\r\n readonly buttonAppearance = computed<ButtonAppearance>(() => {\r\n if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {\r\n return ButtonAppearance.Outlined;\r\n }\r\n return ButtonAppearance.Transparent;\r\n });\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = '0';\r\n @Input()\r\n set value(v: string | number | null) {\r\n if (typeof v === 'number') v = v.toString();\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<number | null>();\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n const v = this.inputModel.numberValue();\r\n this.valueChange.emit(v);\r\n this._onChangeRegistered?.(v);\r\n });\r\n }\r\n\r\n //! event emitters\r\n readonly inputEvent = output<number | null>({ alias: 'input' });\r\n readonly changeEvent = output<number | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n readonly quickChangeEvent = output<{\r\n readonly direction: 1 | -1;\r\n readonly value: number;\r\n }>({ alias: 'quickChange' });\r\n\r\n //! min/max and number type\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n readonly allowFloat = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! incerement/decrement buttons\r\n readonly noButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly stepSize = input<number, any>(1, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, 1);\r\n if (newValue === 0) throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got \"${newValue}\".`);\r\n return newValue;\r\n },\r\n });\r\n\r\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\r\n let num = this.inputModel.numberValue();\r\n if (!num) num = 0;\r\n\r\n if (direction === 1 && num >= this.max()) return;\r\n if (direction === -1 && num <= this.min()) return;\r\n\r\n if (event) event.stopPropagation();\r\n\r\n const newValue = num + this.stepSize() * direction;\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n const newValuePrecise = roundToPrecision(newValue, 9);\r\n\r\n this.writeValue(newValuePrecise);\r\n this.quickChangeEvent.emit({ direction, value: newValuePrecise });\r\n this._emitChange();\r\n\r\n this._focusInputIfCantQuickChange();\r\n }\r\n private _focusInputIfCantQuickChange(): void {\r\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\r\n }\r\n\r\n canIncrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num < this.max();\r\n }\r\n canDecrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num > this.min();\r\n }\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this.inputEvent.emit(this.inputModel.numberValue());\r\n this._emitChange();\r\n }\r\n\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n //change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.numberValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.inputEl()?.nativeElement.selectionStart === 0 &&\r\n this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', String(this.value));\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.inputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHoldEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumNumberInputComponent } from './number-input.component';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\n\n@NgModule({\n declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],\n exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n})\nexport class ArdiumNumberInputModule {}\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _FileInputComponentBase extends _NgModelComponentBase implements OnInit, AfterViewInit {\r\n abstract readonly componentId: string;\r\n\r\n readonly fileInputEl = viewChild<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n readonly name = input<string>('');\r\n\r\n ngOnInit(): void {\r\n if (!(window.File && window.FileReader && window.Blob)) {\r\n console.error(\r\n new Error(`ARD-${this.componentId}0: Cannot use Ardium UI file features because this browser does not support them!`)\r\n );\r\n }\r\n }\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n this._updateElementValue();\r\n }\r\n\r\n //! appearance\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly multiple = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly blockAfterUpload = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n get shouldBeBlocked(): boolean {\r\n return this.blockAfterUpload() && isDefined(this.value);\r\n }\r\n\r\n //! value\r\n protected _value: File[] | null = null;\r\n @Input()\r\n get value(): File[] | null {\r\n return this._value;\r\n }\r\n set value(v: File | File[] | null) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<File[] | null>();\r\n readonly changeEvent = output<File[] | null>({ alias: 'change' });\r\n readonly dragFilesEvent = output<File[] | null>({ alias: 'dragFiles' });\r\n\r\n protected _valueBeforeInit: File[] | null = null;\r\n writeValue(v: File | File[] | null): void {\r\n this._writeValue(v, false);\r\n }\r\n protected _writeValue(v: File | File[] | null, emitEvents = true): void {\r\n if (v instanceof File) {\r\n v = [v];\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._value = v;\r\n\r\n if (this._wasViewInit) this._updateElementValue();\r\n\r\n if (emitEvents) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n openBrowseDialog(): void {\r\n this.fileInputEl()?.nativeElement.click();\r\n }\r\n\r\n //! temporary value\r\n //for drag event handling\r\n protected _draggedFiles: number | null = null;\r\n\r\n //! view state\r\n readonly currentViewState = signal<'idle' | 'dragover' | 'uploaded'>('idle');\r\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\r\n\r\n //! event handlers\r\n onDragover(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.shouldBeBlocked) {\r\n if (!event.dataTransfer) return;\r\n\r\n event.dataTransfer.dropEffect = 'none';\r\n return;\r\n }\r\n if (this.currentViewState() === 'dragover') return;\r\n\r\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\r\n\r\n if (!this._draggedFiles) return;\r\n\r\n this._beforeDragoverState = this.currentViewState() as 'idle' | 'uploaded';\r\n this.currentViewState.set('dragover');\r\n }\r\n onDragleave(): void {\r\n if (this.shouldBeBlocked) return;\r\n if (this.currentViewState() !== 'dragover') return;\r\n\r\n this.currentViewState.set(this._beforeDragoverState);\r\n }\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.shouldBeBlocked) return;\r\n\r\n const filelist = event.dataTransfer?.files;\r\n if (!filelist) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.from(filelist);\r\n if (!files) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._writeValue(files);\r\n }\r\n onInputChange(): void {\r\n const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);\r\n if (files.length === 0) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n this._writeValue(files);\r\n this.currentViewState.set('uploaded');\r\n }\r\n\r\n //! helpers\r\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\r\n if (!data) return null;\r\n\r\n return Array.from(data.items).filter(item => item.kind === 'file').length;\r\n }\r\n\r\n protected _updateElementValue(): void {\r\n const v = this.value;\r\n\r\n const inputEl = this.fileInputEl()?.nativeElement;\r\n if (!inputEl) return;\r\n if (!v) {\r\n inputEl.files = null;\r\n return;\r\n }\r\n\r\n const dataTransfer = new DataTransfer();\r\n for (const file of v) {\r\n dataTransfer.items.add(file);\r\n }\r\n inputEl.files = dataTransfer.files;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\n})\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-drop-area',\r\n templateUrl: './file-drop-area.component.html',\r\n styleUrls: ['./file-drop-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase implements OnInit {\r\n readonly componentId = '010';\r\n\r\n //! appearance\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-variant-${this.variant()}`, `ard-color-${this.color()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! triggering file dialog\r\n protected _wasMousedownOnElement: true | null = null;\r\n onMousedown(): void {\r\n this._wasMousedownOnElement = true;\r\n }\r\n onMouseup(): void {\r\n if (!this._wasMousedownOnElement) return;\r\n this._wasMousedownOnElement = null;\r\n\r\n this.openBrowseDialog();\r\n }\r\n\r\n //! templates\r\n @ContentChild(ArdiumFileDropAreaIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"ard-file-drop-area\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n (dragleave)=\"onDragleave()\"\r\n (dragover)=\"onDragover($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n }\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'dragover'\"\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n ></ng-template>\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'uploaded'\"\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<input\r\n #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n <span *ngIf=\"!multiple\">Drag & Drop a file</span>\r\n <span *ngIf=\"multiple\">Drag & Drop files</span>\r\n here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n (click)=\"browse()\"\r\n >Browse files</ard-button\r\n >\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-dragover-text\"> here to upload. </span>\r\n @if (amount > 1 && !multiple()) {\r\n <strong class=\"ard-file-drop-area-dragover-warning\"> Only the first file will be uploaded! </strong>\r\n }\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n @for (file of files; track $index) {\r\n <div class=\"ard-file-drop-area-file\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext: true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumClickOutsideEventModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFilesizePipeModule,\r\n} from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n ArdiumFilesizePipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileDropAreaModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from '../../color/color-picker/color-picker.types';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdColorInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-prefix-tmp]' })\nexport class ArdColorInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-suffix-tmp]' })\nexport class ArdColorInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n//! picker directives\n@Directive({\n selector: 'ard-color-input > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorInputShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-hue-indicator-tmp]' })\nexport class ArdColorInputHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorInputOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorInputColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n\n//! action buttons\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-action-buttons-tmp]',\n})\nexport class ArdColorInputActionButtonsTemplateDirective {\n constructor(public template: TemplateRef<ColorInputActionButtonsContext>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdFileInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\nexport class ArdFileInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\nexport class ArdFileInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\nexport class ArdiumFileInputIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileInputDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileInputUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdColorInputPlaceholderTemplateDirective } from '../../inputs/color-input/color-input.directives';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n} from './file-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly componentId = '011';\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! placeholder\r\n readonly placeholder = input<string>('');\r\n\r\n //! root element classes\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-state-${this.currentViewState()}`, this.value ? 'ard-has-value' : ''].join(' ')\r\n );\r\n\r\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n placeholderTemplate?: TemplateRef<any>;\r\n\r\n get shouldDisplayPlaceholder(): boolean {\r\n return Boolean(this.placeholder()) && !this.value;\r\n }\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n get shouldShowClearButton(): boolean {\r\n return this.clearable() && !this.disabled() && Boolean(this.value);\r\n }\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.clear();\r\n this.focus();\r\n }\r\n\r\n //! clear function\r\n clear(): void {\r\n if (!this.clearable()) return;\r\n\r\n this.writeValue(null);\r\n this._emitChange();\r\n this.clearEvent.emit();\r\n }\r\n\r\n readonly clearEvent = output();\r\n\r\n //! state\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! prefix & suffix\r\n @ContentChild(ArdFileInputPrefixTemplateDirective, { read: TemplateRef })\r\n prefixTemplate?: TemplateRef<any>;\r\n @ContentChild(ArdFileInputSuffixTemplateDirective, { read: TemplateRef })\r\n suffixTemplate?: TemplateRef<any>;\r\n //! templates\r\n @ContentChild(ArdiumFileInputIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileInputDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileInputUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFileInputComponent } from './file-input.component';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumFileInputComponent],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule],\n exports: [ArdiumFileInputComponent],\n})\nexport class ArdiumFileInputModule {}\n","export const CaseTransformerType = {\n NoChange: 'nochange',\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\n","import { isAnyString, isDefined, isNull } from 'simple-bool';\r\nimport { RegExpTransformer } from './input-transformers';\r\nimport { CaseTransformerType } from './input-types';\r\nimport { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\nexport interface HexInputModelHost {\r\n readonly case: Signal<CaseTransformerType>;\r\n readonly maxDigits: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class HexInputModel {\r\n constructor(protected readonly _hostComp: HexInputModelHost) {}\r\n\r\n //! value setters/getters\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n //value with the hash sign\r\n readonly hashSignValue = computed<string>(() => '#' + this.stringValue());\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0160: Trying to set <ard-hex-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n //normalize the value\r\n v = v ?? '';\r\n if (typeof v === 'string') v = v.replace('#', '');\r\n\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n //constraints\r\n if (v) {\r\n v = this._applyCharactersConstraint(v);\r\n v = this._applyDigitsConstraint(v, oldVal ?? '');\r\n v = this._applyCaseTransformer(v);\r\n }\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n clear(): void {\r\n this._writeValue(null);\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n\r\n //! input element methods\r\n _updateInputElement() {\r\n const el = this._hostComp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n const caretPos = this.caretPos;\r\n el.value = this.stringValue();\r\n this.caretPos = caretPos;\r\n }\r\n get caretPos(): number {\r\n return this._hostComp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n this._hostComp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\r\n private _applyCharactersConstraint(v: string): string {\r\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyDigitsConstraint(v: string, prev: string): string {\r\n const maxLength = this._hostComp.maxDigits();\r\n if (!isDefined(maxLength)) return v;\r\n if (v.length <= maxLength) return v;\r\n if (v.length < prev.length) return v;\r\n\r\n let firstChangeIndex = 0;\r\n while (\r\n firstChangeIndex < v.length &&\r\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) === prev.charAt(firstChangeIndex)) &&\r\n firstChangeIndex <= maxLength\r\n ) {\r\n firstChangeIndex++;\r\n }\r\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\r\n\r\n const overflow = v.length - maxLength;\r\n this.caretPos -= overflow;\r\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\r\n }\r\n private _applyCaseTransformer(v: string): string {\r\n if (this._hostComp.case() === CaseTransformerType.Uppercase) return v.toUpperCase();\r\n if (this._hostComp.case() === CaseTransformerType.Lowercase) return v.toLowerCase();\r\n return v;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdHexInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\nexport class ArdHexInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\nexport class ArdHexInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { HexInputModel, HexInputModelHost } from '../hex-input.model';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-hex-input',\r\n templateUrl: './hex-input.component.html',\r\n styleUrls: ['./hex-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumHexInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, HexInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new HexInputModel(this);\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdHexInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdHexInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdHexInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed((): boolean => Boolean(this.placeholder()) && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly case = input<CaseTransformerType>(CaseTransformerType.NoChange);\r\n\r\n readonly maxDigits = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly hideHash = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly showHash = computed(() => !this.hideHash());\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel?.value())\r\n );\r\n\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit();\r\n this.focus();\r\n }\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel?.hashSignValue();\r\n }\r\n readonly valueChange = output<string>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string>({ alias: 'input' });\r\n readonly changeEvent = output<string>({ alias: 'change' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string, event: Event): void {\r\n event.stopPropagation();\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.inputEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onChange(event: Event): void {\r\n this._emitChange();\r\n event.stopPropagation();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n this._emitChange();\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n <div\r\n class=\"ard-hash-container\"\r\n *ngIf=\"showHash\"\r\n >\r\n #\r\n </div>\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumHexInputComponent } from './hex-input.component';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\r\n exports: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumHexInputModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRadioComponent extends _BooleanComponentBase {\r\n protected readonly _changeDetector = inject(ChangeDetectorRef);\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n readonly value = input<any>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-radio-${this.selected() ? 'selected' : 'unselected'}`].join(' ')\r\n );\r\n\r\n //! event handlers\r\n onMousedown(): void {\r\n this.focus();\r\n }\r\n onMouseup(): void {\r\n this.focus();\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n\r\n //! radio-group access points\r\n readonly name = signal<string | null>(null);\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-radio\"\r\n type=\"button\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId()\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name()\"\r\n [id]=\"htmlId()\"\r\n [checked]=\"selected()\"\r\n #radio\r\n/>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OutputRefSubscription,\r\n ViewEncapsulation,\r\n contentChildren,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@Component({\r\n selector: 'ard-radio-group',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n role: 'radiogroup',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRadioGroupComponent extends _NgModelComponentBase implements AfterContentInit, OnDestroy {\r\n private readonly _radios = contentChildren<ArdiumRadioComponent>(ArdiumRadioComponent, { descendants: true });\r\n\r\n readonly htmlId = input<string>('');\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.name();\r\n this._updateRadioButtonNames();\r\n });\r\n effect(() => {\r\n this.selected();\r\n this._checkSelectedRadioButton();\r\n });\r\n effect(() => {\r\n const radios = this._radios();\r\n if (!radios) return;\r\n \r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n this._destroyChildSubscriptions();\r\n\r\n //sub to child component events\r\n for (const radio of radios) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n //! value\r\n @Input()\r\n get value(): any | undefined {\r\n return this.selected()?.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (this.value !== v) {\r\n if (!this._isContentInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n\r\n this._findRadioByValue(v);\r\n }\r\n setTimeout(() => {\r\n this._updateRadiosByValue();\r\n }, 0);\r\n }\r\n\r\n private _findRadioByValue(v: any): void {\r\n if (!this._radios) return;\r\n\r\n this.selected.set(this._radios().find(radio => v === radio.value()) ?? null);\r\n }\r\n\r\n /** Updates all child radios depending on the currently selected radio. */\r\n private _updateRadiosByValue(): void {\r\n if (!this._isContentInit) return;\r\n\r\n this._radios().forEach(radio => {\r\n radio.selected.set(this.value === radio.value());\r\n radio.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * The currently selected radio button. If set to a new radio button, the radio group value\r\n * will be updated to match the new selected button.\r\n */\r\n readonly selected = model<Nullable<ArdiumRadioComponent>>(null);\r\n\r\n private _checkSelectedRadioButton() {\r\n const s = this.selected();\r\n if (s && !s.selected()) {\r\n s.selected.set(true);\r\n s.markForCheck();\r\n }\r\n }\r\n\r\n //! name\r\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\r\n readonly name = input<string>(crypto.randomUUID());\r\n\r\n private _updateRadioButtonNames(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.name.set(this.name());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n //! update handlers\r\n private _handleBlurEvents(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n private _handleFocusEvents(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\r\n this.writeValue(selected.value());\r\n\r\n this._emitChange();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! hooks\r\n private _childEventSubs: OutputRefSubscription[] = [];\r\n private _isContentInit = false;\r\n ngAfterContentInit(): void {\r\n this._isContentInit = true;\r\n\r\n if (this._valueBeforeInit !== undefined) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n //sub to child component events\r\n for (const radio of this._radios()) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroyChildSubscriptions();\r\n }\r\n private _destroyChildSubscriptions(): void {\r\n for (const sub of this._childEventSubs) {\r\n sub.unsubscribe();\r\n }\r\n this._childEventSubs = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@NgModule({\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n imports: [CommonModule],\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n})\nexport class ArdiumRadioModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';\r\nimport { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n}\r\nexport interface SimpleItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly isValueRequired: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class SimpleItemStorage {\r\n private readonly _items = signal<ArdOptionSimple[]>([]);\r\n private readonly _highlightedItems = signal<ArdOptionSimple[]>([]);\r\n private readonly _selectedItems = signal<ArdOptionSimple[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: SimpleItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = this._selectedItems.asReadonly();\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this._selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const msi = this._ardParentComp.maxSelectedItems();\r\n if (!this._ardParentComp.multiselectable() || !isDefined(msi)) {\r\n return false;\r\n }\r\n return msi <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: unknown[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (items.some(isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param ngModel The value of the ngModel to set.\r\n */\r\n writeValue(ngModel: any[]): void {\r\n this._forceUnselectAll();\r\n\r\n if (!this._validateWriteValue(ngModel)) return;\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n /**\r\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\r\n *\r\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\r\n * 1. The parent component defines the `compareWith` property.\r\n * 2. The ngModel value item is an object (or array).\r\n * 3. The parent component has a defined `valueFrom` property.\r\n * @param ngModel The value of ngModel to validate.\r\n * @returns true if all items are valid, otherwise false.\r\n */\r\n private _validateWriteValue(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith()) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-FT${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\r\n let findBy: (item: ArdOptionSimple) => boolean;\r\n const cmpFn = this._ardParentComp.compareWith();\r\n if (isDefined(cmpFn)) {\r\n findBy = item => cmpFn(valueToFind, item.value());\r\n } else {\r\n findBy = item => item.value() === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this.value();\r\n\r\n if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {\r\n this._selectedItems().first().selected.set(true);\r\n ret.splice(0, 1);\r\n }\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this._itemsToValue(this._selectedItems());\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @param items A rest operator array of item objects to be selected.\r\n * @returns A tuple containing three arrays, all mapped to only their values:\r\n * - An array of items selected,\r\n * - An array of items unselected,\r\n * - An array of items failed to select due to the limit.\r\n */\r\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this._forceUnselectAll();\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected: ArdOptionSimple[] = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n this._selectedItems.update(v => [...v, ...itemsSelected]);\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n *\r\n * @param items A rest operator array of item objects to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...items: ArdOptionSimple[]): any[] {\r\n let skippedItem = false;\r\n for (const item of items) {\r\n if (this._ardParentComp.isValueRequired() && !skippedItem) {\r\n skippedItem = true;\r\n continue;\r\n }\r\n\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\r\n if (!item || item.disabled()) return null;\r\n this.unhighlightAll();\r\n return this.highlightItem(item);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of items to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of items to be unhighlighted.\r\n */\r\n unhighlightItem(...items: ArdOptionSimple[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems();\r\n\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n /**\r\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n * @returns An array of all highlightable items.\r\n */\r\n private readonly highlightableItems = computed(() => this._items().filter(item => !item.disabled()));\r\n}\r\n","import { ChangeDetectorRef, Directive, HostBinding, HostListener, Input, computed, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _SelectableListComponentBase\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, SimpleItemStorageHost\r\n{\r\n //! public constants\r\n readonly itemStorage = new SimpleItemStorage(this);\r\n readonly htmlId = crypto.randomUUID();\r\n readonly element!: HTMLElement;\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n\r\n abstract readonly _componentId: string;\r\n abstract readonly _componentName: string;\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n //! binding-related inputs\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items(): any[] {\r\n return this.itemStorage.items();\r\n }\r\n set items(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.itemStorage.setItems(value);\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n private _printPrimitiveWarnings() {\r\n const makeWarning = (str: string): void => {\r\n console.warn(\r\n `ARD-WA${this._componentId} Skipped using [${str}] property bound to <ard-${this._componentName}>, as some provided items are of primitive type`\r\n );\r\n };\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled');\r\n }\r\n }\r\n\r\n //! multiselectable\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('attr.multiple')\r\n @HostBinding('class.ard-multiselect')\r\n get _multiselectableHostAttribute() {\r\n return this.multiselectable();\r\n }\r\n\r\n readonly singleselectable = computed(() => !this.multiselectable());\r\n\r\n //! require value\r\n readonly requireValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isValueRequired = computed(() => this.requireValue() || !this.multiselectable());\r\n\r\n @HostBinding('class.ard-require-value')\r\n get _requireValueHostAttribute() {\r\n return this.requireValue();\r\n }\r\n\r\n //! coerced properties\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this.disabled.set(state);\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.writeValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n\r\n //! change & touch event emitters\r\n readonly touched = signal<boolean>(false);\r\n\r\n @HostBinding('class.ard-touched')\r\n get _touchedHostAttribute(): boolean {\r\n return this.touched();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected _onTouched(): void {\r\n if (this.touched()) return;\r\n\r\n this._onTouchedRegistered?.();\r\n this.touched.set(true);\r\n }\r\n\r\n //! focus & blur handlers\r\n private readonly lastBlurTimestamp = signal<Nullable<number>>(undefined);\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n const lbt = this.lastBlurTimestamp();\r\n if (this.touched() || !lbt || lbt + 1 < Date.now()) return;\r\n this.lastBlurTimestamp.set(null);\r\n\r\n this._onTouched();\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n if (!this.touched()) this.lastBlurTimestamp.set(Date.now());\r\n }\r\n\r\n //! getters\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.itemStorage.highlightedItems());\r\n readonly firstHighlightedItem = computed<Nullable<ArdOptionSimple>>(() => this.highlightedItems()?.first());\r\n readonly isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());\r\n\r\n //! context providers\r\n getOptionContext(item: ArdOptionSimple): OptionContext<ArdOptionSimple> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n if (!Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\r\n this.writeValue(newValue);\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n\r\n //! item selection handlers\r\n toggleItem(item: ArdOptionSimple): void {\r\n if (item.selected()) {\r\n if (this.singleselectable()) return;\r\n\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOptionSimple[]): void {\r\n const [selected, unselected] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOptionSimple[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n \r\n this._emitChange();\r\n }\r\n\r\n //! highligh-related\r\n\r\n readonly isMouseBeingUsed = signal<boolean>(false);\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this.isMouseBeingUsed.set(true);\r\n }\r\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n\r\n //! click handlers\r\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.toggleItem(option);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter': {\r\n this._toggleHighlightedItems(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._highlightNext(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._highlightPrevious(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._highlightFirst(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._highlightLast(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._highlightAll();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private _toggleHighlightedItems(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n\r\n const highlightedItems = this.highlightedItems();\r\n\r\n if (highlightedItems.every(item => item.selected)) {\r\n this.unselectItem(...highlightedItems);\r\n } else {\r\n this.selectItem(...highlightedItems);\r\n }\r\n }\r\n private _highlightPrevious(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n }\r\n private _highlightNext(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n }\r\n private _highlightFirst(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n private _highlightLast(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightLastItem();\r\n }\r\n private _highlightAll(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: 'ng-template[ard-segm-option-tmp]' })\r\nexport class ArdSegmentOptionTemplateDirective {\r\n constructor(readonly template: TemplateRef<any>) {}\r\n}\r\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\n\nexport const SegmentVariant = {\n ...FormElementVariant,\n RoundedConnected: 'rounded-connected',\n SharpConnected: 'sharp-connected',\n PillConnected: 'pill-connected',\n} as const;\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\n\nexport const SegmentAppearance = {\n ...FormElementAppearance,\n FilledStrong: 'filled-strong',\n OutlinedStrong: 'outlined-strong',\n} as const;\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple } from '../types/item-storage.types';\r\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\ninterface SegmentRow {\r\n options: ArdOptionSimple[];\r\n isNotFull?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-segment',\r\n templateUrl: './segment.component.html',\r\n styleUrls: ['./segment.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost, AfterContentInit {\r\n override readonly _componentId: string = '104';\r\n override readonly _componentName: string = 'segment';\r\n\r\n //! appearance\r\n readonly appearance = input<SegmentAppearance>(SegmentAppearance.Outlined);\r\n readonly variant = input<SegmentVariant>(SegmentVariant.RoundedConnected);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly iconBased = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n this.iconBased() ? 'ard-icon-based' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.itemRows().length > 1 ? 'ard-multirow' : 'ard-singlerow',\r\n ].join(' ')\r\n );\r\n\r\n //! coerced properties\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerRow = input<number, any>(Infinity, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, Infinity);\r\n if (newValue === 0) throw new Error(`ARD-FT1040a: Cannot set <ard-segment>'s [itemsPerRow] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT1040b: Cannot set <ard-segment>'s [itemsPerRow] to a negative value, got \"${newValue}\".`);\r\n if (newValue % 1 !== 0) {\r\n const roundedValue = Math.round(newValue) || 1; // round to nearest int, but never round to zero\r\n console.warn(\r\n new Error(\r\n `ARD-WA1040c: Cannot set <ard-segment>'s [itemsPerRow] to a non-interger value, got \"${newValue}\". The value was rounded to \"${roundedValue}\".`\r\n )\r\n );\r\n return Math.ceil(newValue);\r\n }\r\n return newValue;\r\n },\r\n });\r\n get itemsInActualRow(): number {\r\n return this.itemsPerRow() === Infinity ? this.items.length : this.itemsPerRow();\r\n }\r\n\r\n //! option template\r\n readonly optionTemplate = contentChild(ArdSegmentOptionTemplateDirective);\r\n\r\n //! lifecycle hooks\r\n ngAfterContentInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n\r\n //! item row getters\r\n readonly itemRows = computed<SegmentRow[]>(() => {\r\n const itemRows: SegmentRow[] = [];\r\n let currentRow: ArdOptionSimple[] = [];\r\n //get all rows\r\n for (const item of this.items) {\r\n //add item\r\n currentRow.push(item);\r\n\r\n //push if item amount reached the limit\r\n if (this.itemsPerRow() && currentRow.length === this.itemsPerRow()) {\r\n itemRows.push({ options: currentRow });\r\n currentRow = [];\r\n }\r\n }\r\n //push the last row if it is not empty\r\n if (currentRow.length !== 0) {\r\n itemRows.push({\r\n options: currentRow,\r\n isNotFull: Boolean(this.itemsPerRow()),\r\n });\r\n }\r\n return itemRows;\r\n });\r\n\r\n //! focus handler override\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n if (this.itemStorage.isAnyItemHighlighted()) return;\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n this.itemStorage.unhighlightAll();\r\n }\r\n}\r\n","<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSegmentComponent } from './segment.component';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\n\n@NgModule({\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n})\nexport class ArdiumSegmentModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { SliderTooltipContext } from './slider.types';\n\n@Directive({\n selector: 'ng-template[ard-slider-tooltip-tmp]',\n})\nexport class ArdSliderTooltipDirective {\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\n}\n","export interface SliderTooltipContext {\r\n value: string | number;\r\n $implicit: string | number;\r\n}\r\n\r\nexport const SliderTooltipBehavior = {\r\n Always: 'always',\r\n Auto: 'auto',\r\n Never: 'never',\r\n} as const;\r\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\r\n\r\nexport const SliderDecorationPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n} as const;\r\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\r\n\r\nexport interface SliderLabelObject {\r\n label: string | number;\r\n for: number;\r\n}\r\nexport interface _InternalSliderLabelObject {\r\n label: string;\r\n positionPercent: string;\r\n}\r\n\r\nexport interface SliderRange<T = number> {\r\n low: T;\r\n high: T;\r\n}\r\n\r\nexport type SliderTooltipFormatFn = (value: number) => string | number;\r\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n ViewContainerRef,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\r\nimport { isDefined, isObject } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\nimport {\r\n SliderDecorationPosition,\r\n SliderLabelObject,\r\n SliderTooltipBehavior,\r\n SliderTooltipFormatFn,\r\n _InternalSliderLabelObject,\r\n} from './slider.types';\r\n\r\n@Directive()\r\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n public readonly elementRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n protected readonly document = inject(DOCUMENT);\r\n protected readonly renderer = inject(Renderer2);\r\n protected readonly overlay = inject(Overlay);\r\n protected readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n protected readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n readonly noTooltip = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tooltipFormat = input<Nullable<SliderTooltipFormatFn>>();\r\n\r\n protected abstract _updateTooltipValue(): void;\r\n\r\n //! min, max, step sizes\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly step = input<number, any>(1, {\r\n transform: v => {\r\n const step = coerceNumberProperty(v, 1);\r\n if (step === 0) {\r\n throw new Error(`ARD-FT${this.componentId}0a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);\r\n }\r\n if (step < 0) {\r\n throw new Error(`ARD-FT${this.componentId}0b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`);\r\n }\r\n return step;\r\n },\r\n });\r\n\r\n readonly shiftMultiplier = input<number, any>(5, { transform: v => coerceNumberProperty(v, 1) });\r\n\r\n protected readonly _stepSizeComputed = computed<number>(() => this.step() / Math.abs(this.min() - this.max()));\r\n\r\n //! value ticks\r\n readonly showValueTicks = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly percentStepSize = computed<number>(() => this._stepSizeComputed() * 100);\r\n\r\n protected readonly _tickArray = computed<string[]>(() => {\r\n const newArr: number[] = [];\r\n\r\n let positionPercentCumulative = 0;\r\n while (positionPercentCumulative < 100) {\r\n newArr.push(positionPercentCumulative);\r\n positionPercentCumulative += this._stepSizeComputed() * 100;\r\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\r\n }\r\n newArr.push(100);\r\n\r\n return newArr.map(v => `${v}%`);\r\n });\r\n\r\n //! labels\r\n readonly labelPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Bottom);\r\n\r\n readonly labelObjects = input<_InternalSliderLabelObject[], SliderLabelObject[] | number[] | null>([], {\r\n alias: 'labels',\r\n transform: val => {\r\n if (!isDefined(val) || val.length === 0) {\r\n return [];\r\n }\r\n return val.map(this._numberLabelArrayMapFn).map(label => {\r\n const v = this._clampValue(label.for);\r\n return {\r\n label: String(label.label),\r\n positionPercent: `${this._valueToPercent(v) * 100}%`,\r\n };\r\n });\r\n },\r\n });\r\n\r\n protected _numberLabelArrayMapFn(val: SliderLabelObject | number): SliderLabelObject {\r\n if (isObject(val)) return val;\r\n return {\r\n label: val,\r\n for: val,\r\n };\r\n }\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-color-${this.color()}`,\r\n `ard-labels-${this.labelPosition()}`,\r\n `ard-tooltip-${this.tooltipPosition()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! determining transition\r\n readonly sliderTransition = computed(() => {\r\n const x = this._totalSteps();\r\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\r\n //capped at y=80\r\n //this specific graph is chosen because it looks the best in my opinion\r\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\r\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\r\n\r\n if (formulaResultRounded < 0) return '0';\r\n\r\n const transitionDuration = Math.min(80, formulaResultRounded);\r\n return transitionDuration + 'ms';\r\n });\r\n private readonly _totalSteps = computed<number>(() => (this.max() - this.min()) / this.step());\r\n\r\n //! value input & output\r\n //! abstract here\r\n protected abstract _value: T;\r\n @Input()\r\n set value(newValue: T) {\r\n this.writeValue(newValue);\r\n }\r\n get value(): T {\r\n return this._value;\r\n }\r\n readonly valueChange = output<T>();\r\n\r\n //! writeValue\r\n //! abstract here\r\n abstract override writeValue(v: any): void; //* abstact\r\n //! methods for programmatic manipulation\r\n abstract reset(): void;\r\n\r\n protected _offset(offset: number, hasShift: boolean, handleId = 1): void {\r\n const stepSize = this._stepSizeComputed() * (hasShift ? this.shiftMultiplier() : 1);\r\n let newPercent = this._positionPercent[handleId - 1] + stepSize * offset;\r\n newPercent = this._clampPercentValue(newPercent);\r\n this._setValueFromPercent(newPercent);\r\n }\r\n\r\n //! helper methods\r\n protected _clampValue(v: number): number {\r\n //clamp between min and max\r\n v = Math.min(v, this.max());\r\n v = Math.max(v, this.min());\r\n //round to the nearest step\r\n v -= this.min();\r\n v = roundToMultiple(v, this.step());\r\n v += this.min();\r\n return v;\r\n }\r\n protected _valueToPercent(v: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n return (v - this.min()) / minMaxDifference;\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! tooltip\r\n readonly tooltipTemplate = contentChild(ArdSliderTooltipDirective);\r\n\r\n readonly tooltipPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Top);\r\n readonly tooltipBehavior = input<SliderTooltipBehavior>(SliderTooltipBehavior.Auto);\r\n\r\n //! event handlers\r\n protected readonly _grabbedHandleId = signal<null | number>(null);\r\n protected _shouldCheckForMovement = false;\r\n protected _bodyHasClass = false;\r\n\r\n readonly isSliderHandleGrabbed = computed(() => !!this._grabbedHandleId());\r\n\r\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId = 1): void {\r\n this._grabbedHandleId.set(handleId);\r\n this._shouldCheckForMovement = true;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n @HostListener('document:pointerup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onPointerUp(): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._grabbedHandleId.set(null);\r\n this._shouldCheckForMovement = false;\r\n if (this._bodyHasClass) {\r\n this._bodyHasClass = false;\r\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n //! position calculators\r\n protected _positionPercent: [number] | [number, number] = [0];\r\n getHandlePosition(handleId = 1): string {\r\n return this._positionPercent[handleId - 1] * 100 + '%';\r\n }\r\n protected _setValueFromPercent(percent: number, handleId: number | null = 1): void {\r\n if (!handleId) return;\r\n if (this._positionPercent[handleId - 1] === percent) return;\r\n this._positionPercent[handleId - 1] = percent;\r\n this._value = this._percentValueToValue(percent, handleId);\r\n\r\n this._updateTooltipValue();\r\n\r\n this._emitChange();\r\n }\r\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number | null): void {\r\n const percent = this._getPercentValueFromEvent(event);\r\n this._setValueFromPercent(percent, handleId);\r\n }\r\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\r\n\r\n protected _getElementRect(): DOMRect {\r\n return this.elementRef()!.nativeElement.getBoundingClientRect();\r\n }\r\n protected _clampPercentValue(percent: number): number {\r\n //clamp between 0 and 1\r\n percent = Math.min(percent, 1);\r\n percent = Math.max(percent, 0);\r\n //round to the nearest step\r\n percent = roundToMultiple(percent, this._stepSizeComputed());\r\n return percent;\r\n }\r\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\r\n const rect = this._getElementRect();\r\n let position: number;\r\n if (event instanceof MouseEvent) {\r\n position = event.clientX;\r\n } else {\r\n position = event.targetTouches[0].clientX;\r\n }\r\n const percent = (position - rect.left) / rect.width;\r\n return this._clampPercentValue(percent);\r\n }\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft': {\r\n this._decrement(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._increment(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _decrement(event: KeyboardEvent, steps = 1): void {\r\n this._offset(-steps, event.shiftKey);\r\n }\r\n protected _increment(event: KeyboardEvent, steps = 1): void {\r\n this._offset(+steps, event.shiftKey);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { _AbstractSlider } from './abstract-slider';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Component({\r\n selector: 'ard-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\r\n readonly componentId = '105';\r\n readonly componentName = 'slider';\r\n\r\n //! value input & output\r\n protected _value = 0;\r\n\r\n //! tooltip updater\r\n _tooltipValue = String(this.value);\r\n\r\n protected _updateTooltipValue(): void {\r\n let v: string | number = this._value;\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) v = formatFn(v);\r\n this._tooltipValue = String(v);\r\n }\r\n\r\n getTooltipContext(): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue,\r\n $implicit: this._tooltipValue,\r\n };\r\n }\r\n\r\n //! writeValue\r\n writeValue(v: any): void {\r\n v = Number(v);\r\n if (isNaN(v)) {\r\n this.reset();\r\n return;\r\n }\r\n v = this._clampValue(v);\r\n this._value = v;\r\n this._positionPercent[0] = this._valueToPercent(v);\r\n this._updateTooltipValue();\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = 0;\r\n this._positionPercent[0] = 0;\r\n }\r\n increment(steps = 1): void {\r\n this._offset(steps, false);\r\n }\r\n decrement(steps = 1): void {\r\n this._offset(-steps, false);\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._writeValueFromEvent(event);\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n return roundToPrecision(newVal, 9);\r\n }\r\n}\r\n","<div\r\n class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{ width: getHandlePosition(1) }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed()\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext()\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumSliderComponent } from './slider.component';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n imports: [CommonModule, OverlayModule],\r\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n})\r\nexport class ArdiumSliderModule {}\r\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit, ViewEncapsulation, signal } from '@angular/core';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { _AbstractSlider } from '../abstract-slider';\r\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\r\n\r\n@Component({\r\n selector: 'ard-range-slider',\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\r\n readonly componentId = '106';\r\n readonly componentName = 'range-slider';\r\n\r\n protected _value: SliderRange = { low: -Infinity, high: Infinity };\r\n\r\n ngOnInit(): void {\r\n if (this._value.low !== -Infinity && this._value.high !== Infinity) return;\r\n\r\n this.writeValue({ low: this.min(), high: this.max() });\r\n }\r\n\r\n //! writeValue\r\n private _isValidObject(v: any): v is SliderRange {\r\n return isObject(v) && isNumber(v['low']) && isNumber(v['high']);\r\n }\r\n private _isValidTuple(v: any): v is [number, number] {\r\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;\r\n }\r\n private _arrayValueToObjectValue(v: [number, number]): SliderRange {\r\n return { low: v[0], high: v[1] };\r\n }\r\n private _normalizeSliderRange(v: SliderRange): SliderRange {\r\n if (v.low <= v.high) return v;\r\n return { low: v.high, high: v.low };\r\n }\r\n writeValue(v: any): void {\r\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\r\n this.reset();\r\n return;\r\n }\r\n let low = -Infinity;\r\n let high = Infinity;\r\n if (this._isValidObject(v)) {\r\n low = v.low;\r\n high = v.high;\r\n } else if (this._isValidTuple(v)) {\r\n low = v[0];\r\n high = v[1];\r\n }\r\n const lowClamped = this._clampValue(low);\r\n const highClamped = this._clampValue(high);\r\n const value: SliderRange = this._arrayValueToObjectValue([lowClamped, highClamped]);\r\n this._value = value;\r\n this._positionPercent[0] = this._valueToPercent(lowClamped);\r\n this._positionPercent[1] = this._valueToPercent(highClamped);\r\n this._updateTooltipValue();\r\n }\r\n override get value(): SliderRange {\r\n return this._normalizeSliderRange(this._value);\r\n }\r\n override set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n //! tooltip updater\r\n _tooltipValue: SliderRange<string | number> = this.value;\r\n\r\n protected _updateTooltipValue(): void {\r\n const v: SliderRange<string | number> = Object.create(this._value);\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) {\r\n v.low = formatFn(v.low as number);\r\n v.high = formatFn(v.high as number);\r\n }\r\n this._tooltipValue = v;\r\n }\r\n\r\n getTooltipContext(type: 'low' | 'high'): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue[type],\r\n $implicit: this._tooltipValue[type],\r\n };\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = { low: -Infinity, high: Infinity };\r\n this._positionPercent[0] = 0;\r\n this._positionPercent[1] = 1;\r\n }\r\n\r\n //! track overlay getters\r\n get trackOverlayLeft(): string {\r\n return Math.min(...this._positionPercent) * 100 + '%';\r\n }\r\n get trackOverlayWidth(): string {\r\n return Math.abs(this._positionPercent[0] - this._positionPercent[1]!) * 100 + '%';\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n this._writeValueFromEvent(event, this._grabbedHandleId());\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n let newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n newVal = roundToPrecision(newVal, 9);\r\n\r\n const newValObj = { low: this._value.low, high: this._value.high };\r\n if (handleId === 1) {\r\n newValObj.low = newVal;\r\n } else {\r\n newValObj.high = newVal;\r\n }\r\n return newValObj;\r\n }\r\n\r\n //! handle focus monitors\r\n readonly currentHandle = signal<1 | 2 | null>(null);\r\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\r\n this.onFocus(event);\r\n\r\n this.currentHandle.set(handleId);\r\n }\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this.currentHandle.set(null);\r\n }\r\n}\r\n","<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('low')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('high')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [ArdiumRangeSliderComponent],\n imports: [CommonModule],\n exports: [ArdiumRangeSliderComponent],\n})\nexport class ArdiumRangeSliderModule {}\n","export const ClickStrategy = {\r\n Noop: 'noop',\r\n Default: 'default',\r\n} as const;\r\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\r\n\r\n/**\r\n * Represents an array type that must contain at least one element.\r\n *\r\n * @template T - The type of elements in the array.\r\n */\r\nexport type NonEmptyArray<T> = [T, ...T[]];\r\n\r\nexport type Nullable<T> = T | undefined | null;\r\n","import { SimpleComponentColor } from '../types/colors.types';\n\nexport const StarFillMode = {\n /**\n * The star is not filled, just an outline.\n */\n None: 'none',\n /**\n * Half of the star is filled.\n */\n Half: 'half',\n /**\n * The star is fully filled.\n */\n Filled: 'filled',\n} as const;\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\n\nexport const StarColor = {\n ...SimpleComponentColor,\n /**\n * THe app's color set for all stars. Usually gold or yellow-gold.\n */\n Star: 'star',\n} as const;\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { StarColor, StarFillMode } from './star.types';\r\n\r\n@Component({\r\n selector: 'ard-star',\r\n templateUrl: './star.component.html',\r\n styleUrls: ['./star.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n readonly fill = input<StarFillMode>(StarFillMode.Filled);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.fill()}`].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-star\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ClickStrategy } from '../../types/utility.types';\r\nimport { StarColor } from '../star.types';\r\nimport { StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-button',\r\n templateUrl: './star-button.component.html',\r\n styleUrls: ['./star-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly clickStrategy = input<ClickStrategy>(ClickStrategy.Default);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n readonly starFillState = computed<StarFillMode>(() => (this.selected() ? StarFillMode.Filled : StarFillMode.None));\r\n\r\n onClick(): void {\r\n if (this.clickStrategy() === ClickStrategy.Noop) return;\r\n this.toggleSelected();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-star-button\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-star\r\n [fill]=\"starFillState()\"\r\n [color]=\"color()\"\r\n ></ard-star>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarComponent } from './star.component';\n\n@NgModule({\n declarations: [ArdiumStarComponent],\n imports: [CommonModule],\n exports: [ArdiumStarComponent],\n})\nexport class ArdiumStarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarButtonComponent } from './star-button.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarButtonComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarButtonComponent],\n})\nexport class ArdiumStarButtonModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\r\nimport { _NgModelComponentBase } from './../../_internal/ngmodel-component';\r\nimport { StarColor } from './../star.types';\r\n\r\ninterface StarInputObject {\r\n filled: boolean;\r\n isInValue: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-star-input',\r\n templateUrl: './star-input.component.html',\r\n styleUrls: ['./star-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarInputComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n //! events\r\n readonly changeEvent = output<number>({ alias: 'change' });\r\n readonly highlightEvent = output<number>({ alias: 'highlight' });\r\n\r\n readonly value = model<number>(0);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const hi = this._highlightedStarIndex();\r\n if (hi !== null) {\r\n this.highlightEvent.emit(hi);\r\n }\r\n });\r\n effect(() => {\r\n this.value(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! stars\r\n readonly max = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly starButtonInstances = viewChildren<ArdiumStarButtonComponent>('starButton');\r\n private readonly _highlightedStarIndex = signal<number | null>(null);\r\n\r\n readonly starArray = computed<StarInputObject[]>(() => {\r\n const v = this.value();\r\n const max = this.max();\r\n const hi = Math.round(this._highlightedStarIndex() ?? -1);\r\n\r\n const arr = new Array(max);\r\n for (let i = 0; i < max; i++) {\r\n if (i <= hi) {\r\n arr[i] = { filled: true, isInValue: true };\r\n continue;\r\n }\r\n if (i < v) {\r\n arr[i] = { filled: hi === -1, isInValue: true };\r\n continue;\r\n }\r\n arr[i] = { filled: false, isInValue: false };\r\n }\r\n return arr;\r\n });\r\n\r\n //! ControlValueAccessor's writeValue\r\n writeValue(v: number): void {\r\n this.value.set(v);\r\n }\r\n onStarClick(index: number): void {\r\n this.value.set(index + 1);\r\n }\r\n onStarHighlight(index: number): void {\r\n this._highlightedStarIndex.set(index);\r\n }\r\n setDisplayToValue() {\r\n this._highlightedStarIndex.set(null);\r\n }\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.value());\r\n this.changeEvent.emit(this.value());\r\n }\r\n\r\n //* focus handlers\r\n private _isFocusEventSuppressed = false;\r\n private _isBlurEventSuppressed = false;\r\n private _currentFocusIndex: number | null = null;\r\n onStarButtonFocus(index: number, event: FocusEvent) {\r\n this._currentFocusIndex = index;\r\n if (this._isFocusEventSuppressed) {\r\n this._isFocusEventSuppressed = false;\r\n return;\r\n }\r\n this.focusEvent.emit(event);\r\n }\r\n onStarButtonBlur(event: FocusEvent): void {\r\n this._currentFocusIndex = null;\r\n if (this._isBlurEventSuppressed) {\r\n this._isBlurEventSuppressed = false;\r\n return;\r\n }\r\n this.blurEvent.emit(event);\r\n }\r\n focusStarButtonByIndex(index: number): void {\r\n if (!this.starButtonInstances()) return;\r\n this.starButtonInstances()[index]!.focus();\r\n }\r\n focusNextStarButton(offset: number): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n\r\n let nextIndex = this._currentFocusIndex + offset;\r\n nextIndex = Math.min(nextIndex, this.max() - 1);\r\n nextIndex = Math.max(nextIndex, 0);\r\n\r\n this.focusStarButtonByIndex(nextIndex);\r\n }\r\n private _suppressFocusEvents(): void {\r\n this._isFocusEventSuppressed = true;\r\n this._isBlurEventSuppressed = true;\r\n }\r\n\r\n override focus(): void {\r\n this.focusStarButtonByIndex(0);\r\n }\r\n override blur(): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n this.starButtonInstances()[this._currentFocusIndex]!.blur();\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Tab': {\r\n this._onTabPress();\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._onArrowRightPress(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._onArrowLeftPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(+1);\r\n }\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(-1);\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(0);\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this._onTabPress();\r\n }\r\n private _onTabPress(): void {\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n}\r\n","<div\r\n class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses()\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n @for (object of starArray(); track $index) {\r\n <ard-star-button\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!object.isInValue\"\r\n [color]=\"object.isInValue ? color() : 'none'\"\r\n clickStrategy=\"noop\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick($index)\"\r\n (focus)=\"onStarButtonFocus($index, $event)\"\r\n (blur)=\"onStarButtonBlur($event)\"\r\n (mouseenter)=\"onStarHighlight($index)\"\r\n [tabIndex]=\"tabIndex()\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumStarButtonModule } from '../star-button/star-button.module';\nimport { ArdiumStarInputComponent } from './star-input.component';\n\n@NgModule({\n declarations: [ArdiumStarInputComponent],\n imports: [CommonModule, ArdiumStarButtonModule],\n exports: [ArdiumStarInputComponent],\n})\nexport class ArdiumStarInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './../_internal/ngmodel-component';\r\nimport { ArdiumStarButtonComponent } from './../star/star-button/star-button.component';\r\nimport { StateboxState, StateboxValue, _StateboxInternalState } from './statebox.types';\r\n\r\nconst DEFAULT_STATES: StateboxState[] = [\r\n { value: false, color: 'none' },\r\n { value: true, color: 'secondary', icon: 'check_box', filled: true },\r\n];\r\n\r\n@Component({\r\n selector: 'ard-statebox',\r\n templateUrl: './statebox.component.html',\r\n styleUrls: ['./statebox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStateboxComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly states = input<StateboxState[]>(DEFAULT_STATES);\r\n readonly _states = computed(() => this.states().map(this._stateMapFn));\r\n readonly _defaultState = computed(() => this._states()[0]);\r\n\r\n readonly manualStateHandling = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n this.wrapperClasses(),\r\n this.internalState().useCustomColor ? 'ard-color-custom' : `ard-color-${this.internalState().color}`,\r\n this.internalState().filled ? 'ard-statebox-filled' : '',\r\n this.internalState().keepFrame ? 'ard-statebox-keep-frame' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly changeEvent = output<StateboxValue>({ alias: 'change' });\r\n readonly clickEvent = output<MouseEvent>({ alias: 'click' });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.state(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! state handlers\r\n readonly state = model<StateboxValue>(this._defaultState().value);\r\n private readonly _stateIndex = computed<number>(() => {\r\n const v = this.state();\r\n const foundStateIndex = this._states().findIndex(state => state.value === v);\r\n return foundStateIndex === -1 ? 0 : foundStateIndex;\r\n });\r\n readonly internalState = computed<_StateboxInternalState>(() => this._states()[this._stateIndex()]);\r\n\r\n writeValue(v: StateboxValue) {\r\n this.state.set(v);\r\n }\r\n\r\n //! change handlers\r\n private _stateMapFn(state: StateboxState): _StateboxInternalState {\r\n let display: string;\r\n let displayAsIcon = false;\r\n let keepFrame = true;\r\n\r\n if (state.icon) {\r\n display = state.icon;\r\n displayAsIcon = true;\r\n keepFrame = false;\r\n } else if (state.character) {\r\n display = state.character.substring(0, 1);\r\n } else {\r\n display = '';\r\n }\r\n return {\r\n value: state.value,\r\n display,\r\n displayAsIcon,\r\n color: state.color ?? state.customColor ?? 'none',\r\n useCustomColor: state.color ? false : true,\r\n colorOnCustom: state.colorOnCustom,\r\n filled: state.filled ?? false,\r\n keepFrame: state.keepFrame ?? keepFrame,\r\n };\r\n }\r\n\r\n //! event handlers\r\n onClick(event: MouseEvent) {\r\n if (this.manualStateHandling()) {\r\n this.clickEvent.emit(event);\r\n return;\r\n }\r\n\r\n let newIndex = this._stateIndex() + 1;\r\n if (newIndex >= this._states().length) {\r\n newIndex = 0;\r\n }\r\n this.state.set(this._states()[newIndex].value);\r\n }\r\n\r\n protected _emitChange() {\r\n const s = this.state();\r\n this._onChangeRegistered?.(s);\r\n this.changeEvent.emit(s);\r\n }\r\n\r\n readonly ngStyle = computed<Record<string, any>>(() => {\r\n let customColor = null;\r\n const state = this.internalState();\r\n if (state.useCustomColor) {\r\n customColor = state.color;\r\n }\r\n return {\r\n '--ard-custom-color': customColor,\r\n '--ard-on-custom-color': state.colorOnCustom ?? '#fff',\r\n };\r\n });\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-statebox\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"onClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"ngStyle()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (internalState().keepFrame) {\r\n <div class=\"ard-statebox-frame\"></div>\r\n }\r\n <div [class]=\"internalState().displayAsIcon ? 'ard-statebox-icon' : 'ard-statebox-character'\">\r\n {{ internalState().display }}\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStateboxComponent } from './statebox.component';\n\n@NgModule({\n declarations: [ArdiumStateboxComponent],\n imports: [CommonModule],\n exports: [ArdiumStateboxComponent],\n})\nexport class ArdiumStateboxModule {}\n","export const ArdSlideToggleAppearance = {\r\n Raised: 'raised',\r\n Contained: 'contained',\r\n} as const;\r\nexport type ArdSlideToggleAppearance = (typeof ArdSlideToggleAppearance)[keyof typeof ArdSlideToggleAppearance];\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\n@Component({\r\n selector: 'ard-slide-toggle',\r\n templateUrl: './slide-toggle.component.html',\r\n styleUrls: ['./slide-toggle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClass = input<string | undefined | null>(undefined);\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly appearance = input<ArdSlideToggleAppearance>(ArdSlideToggleAppearance.Raised);\r\n readonly icon = input<string | undefined | null>(undefined);\r\n readonly selectedIcon = input<string | undefined | null>(undefined);\r\n readonly unselectedIcon = input<string | undefined | null>(undefined);\r\n\r\n readonly ngClasses = computed(() => {\r\n return [`ard-color-${this.color()}`, `ard-appearance-${this.appearance()}`, this.wrapperClass() ?? ''].join(' ');\r\n });\r\n}\r\n","<button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n [ariaChecked]=\"selected()\"\r\n class=\"ard-slide-toggle\"\r\n [class.ard-slide-toggle-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (selectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\">{{ selectedIcon() ?? icon() }}</div>\r\n } @if (unselectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\">{{ unselectedIcon() ?? icon() }}</div>\r\n }\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\n\n@NgModule({\n declarations: [ArdiumSlideToggleComponent],\n imports: [CommonModule],\n exports: [ArdiumSlideToggleComponent],\n})\nexport class ArdiumSlideToggleModule {}\n","export const CheckboxState = {\n Unselected: 'unselected',\n Indeterminate: 'indeterminate',\n Selected: 'selected',\n} as const;\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { CheckboxState } from './checkbox.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n readonly htmlId = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly unselectedColor = input<SimpleComponentColor>(SimpleComponentColor.None);\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-color-${this.color()}`,\r\n `ard-unselected-color-${this.unselectedColor()}`,\r\n `ard-checkbox-${this.state()}`,\r\n ].join(' ')\r\n );\r\n\r\n //override the \"selected\" setter, so it changes the state too.\r\n override set _selected(v: any) {\r\n const selected = coerceBooleanProperty(v);\r\n this.selected.set(selected);\r\n this.state.set(selected ? CheckboxState.Selected : CheckboxState.Unselected);\r\n }\r\n\r\n readonly state = model<CheckboxState>(CheckboxState.Unselected);\r\n\r\n //! click action\r\n toggleState() {\r\n let newState: CheckboxState = CheckboxState.Unselected;\r\n if (this.state() === CheckboxState.Unselected) {\r\n newState = CheckboxState.Selected;\r\n }\r\n this.state.set(newState);\r\n this.selected.set(this.state() === CheckboxState.Selected);\r\n\r\n this._emitChange();\r\n }\r\n}\r\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [id]=\"htmlId()\"\r\n [ariaChecked]=\"selected()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-selected\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-indeterminate\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-unselected\"></div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [ArdiumCheckboxComponent],\n imports: [CommonModule],\n exports: [ArdiumCheckboxComponent],\n})\nexport class ArdiumCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { FABSize } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-fab',\r\n templateUrl: './fab.component.html',\r\n styleUrls: ['./fab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFabComponent extends _ButtonBase {\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n \r\n //! appearance\r\n readonly size = input<FABSize>(FABSize.Standard);\r\n\r\n readonly extended = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-fab-size-${this.size()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.extended() ? 'ard-fab-extended' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-fab\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-button-content\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFabComponent } from './fab.component';\n\n@NgModule({\n declarations: [ArdiumFabComponent],\n imports: [CommonModule],\n exports: [ArdiumFabComponent],\n})\nexport class ArdiumFabModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-appearance-transparent',\r\n `ard-color-${this.disabled() ? ComponentColor.None : this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-icon-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumIconButtonComponent } from './icon-button.component';\n\n@NgModule({\n declarations: [ArdiumIconButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumIconButtonComponent],\n})\nexport class ArdiumIconButtonModule {}\n","export const CheckboxListAlignType = {\n LeftClumped: 'left-clumped',\n LeftSplit: 'left-split',\n RightSplit: 'right-split',\n RightClumped: 'right-clumped',\n} as const;\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple, CompareWithFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { CheckboxListAlignType } from './checkbox-list.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox-list',\r\n templateUrl: './checkbox-list.component.html',\r\n styleUrls: ['./checkbox-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n // static values. Not meant to be changed.\r\n readonly multiselectable = signal<true>(true);\r\n readonly isValueRequired = signal<false>(false);\r\n readonly _componentId = '300';\r\n readonly _componentName = 'checkbox-list';\r\n\r\n private readonly _itemStorage = new SimpleItemStorage(this);\r\n\r\n readonly valueFrom = input<string>(this.DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this.DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this.DEFAULTS.disabledFrom);\r\n\r\n @Input()\r\n set items(v: any[]) {\r\n this._itemStorage.setItems(v);\r\n }\r\n get items(): ArdOptionSimple[] {\r\n return this._itemStorage.items();\r\n }\r\n\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<CheckboxListAlignType>(CheckboxListAlignType.LeftClumped);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! value\r\n @Input()\r\n get value(): any {\r\n return this._itemStorage.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (!this._isViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this._itemStorage.writeValue(v);\r\n }\r\n\r\n private _isViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onItemHighlight(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemFocus(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemBlur(): void {\r\n this._itemStorage.unhighlightAll();\r\n }\r\n selectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.selectItem(v);\r\n this._emitChange();\r\n }\r\n unselectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.unselectItem(v);\r\n this._emitChange();\r\n }\r\n toggleItem(v: ArdOptionSimple): void {\r\n if (v.selected()) {\r\n this.unselectItem(v);\r\n return;\r\n }\r\n this.selectItem(v);\r\n }\r\n}\r\n","<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index()) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index()\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\n\n@NgModule({\n declarations: [ArdiumCheckboxListComponent],\n imports: [CommonModule, ArdiumCheckboxModule],\n exports: [ArdiumCheckboxListComponent],\n})\nexport class ArdiumCheckboxListModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSpinnerComponent {\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n}\r\n","<svg\r\n class=\"ard-spinner\"\r\n [ngClass]=\"ngClasses()\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <circle\r\n class=\"ard-spinner-circle\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n ></circle>\r\n</svg>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [ArdiumSpinnerComponent],\n imports: [CommonModule],\n exports: [ArdiumSpinnerComponent],\n})\nexport class ArdiumSpinnerModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressBarValueContext } from './progress-bar.types';\n\n@Directive({ selector: 'ard-progress-bar > ng-template[ard-value-tmp]' })\nexport class ArdProgressBarValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressBarValueContext>) {}\n}\n","export interface ProgressBarValueContext {\r\n value: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressBarSize = {\r\n Default: 'default',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\r\n\r\nexport const ProgressBarAppearance = {\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\r\n\r\nexport const ProgressBarVariant = {\r\n Sharp: 'sharp',\r\n Pill: 'pill',\r\n} as const;\r\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\r\n\r\nexport const ProgressBarMode = {\r\n Determinate: 'determinate',\r\n Indeterminate: 'indeterminate',\r\n Buffer: 'buffer',\r\n Query: 'query',\r\n} as const;\r\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarValueContext, ProgressBarVariant } from './progress-bar.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressBarComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n readonly bufferValue = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressBarVariant>(ProgressBarVariant.Pill);\r\n readonly size = input<ProgressBarSize>(ProgressBarSize.Default);\r\n readonly mode = input<ProgressBarMode>(ProgressBarMode.Determinate);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-progress-bar__size-${this.size()}`,\r\n `ard-progress-bar__mode-${this.mode()}`,\r\n this.hideValue() ? 'ard-progress-bar__hide-value' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! error detection\r\n constructor() {\r\n effect(() => {\r\n if (this.mode() === ProgressBarMode.Buffer && this.size() === ProgressBarSize.Auto) {\r\n console.error(\r\n new Error(\r\n `ARD-NF4010: Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! bar styling\r\n readonly cssVariables = computed<string>(() => {\r\n if (this.mode() === ProgressBarMode.Indeterminate || this.mode() === ProgressBarMode.Query) {\r\n return '--ard-_progress-bar-main: 0;';\r\n }\r\n const mainVariable = `--ard-_progress-bar-main: ${this.value()}%;`;\r\n if (this.mode() === ProgressBarMode.Buffer) {\r\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue()}%;`;\r\n }\r\n return mainVariable;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressBarValueTemplateDirective, { read: TemplateRef })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressBarValueContext>(() => ({\r\n value: this.value(),\r\n $implicit: this.value(),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-bar\"\r\n role=\"progressbar\"\r\n [style]=\"cssVariables()\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n <div class=\"ard-progress-bar__value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value * 100 | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\n\n@NgModule({\n declarations: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n})\nexport class ArdiumProgressBarModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressCircleValueContext } from './progress-circle.types';\n\n@Directive({ selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\nexport class ArdProgressCircleValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\n}\n","export interface ProgressCircleValueContext {\r\n value: number;\r\n percentValue: number;\r\n max: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressCircleAppearance = {\r\n Transparent: 'transparent',\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\r\n\r\nexport const ProgressCircleVariant = {\r\n Full: 'full',\r\n Ring: 'ring',\r\n} as const;\r\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\r\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressCircleComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly percentValue = computed<number>(() => (this.value() / this.max()) * 100);\r\n\r\n //! appearance\r\n readonly appearance = input<ProgressCircleAppearance>(ProgressCircleAppearance.Transparent);\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressCircleVariant>(ProgressCircleVariant.Full);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly reverse = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-progress-circle-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.hideValue() ? 'ard-progress-circle-hide-value' : '',\r\n this.reverse() ? 'ard-progress-circle-reversed' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly fillPercentVariable = computed<string>(() => {\r\n const fillAmount = this.reverse() ? 100 - this.percentValue() : this.percentValue();\r\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressCircleValueTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressCircleValueContext>(() => ({\r\n value: this.value(),\r\n percentValue: Math.round(this.percentValue()),\r\n max: this.max(),\r\n $implicit: Math.round(this.percentValue()),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-circle\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div\r\n class=\"ard-progress-circle-overlay\"\r\n [style]=\"fillPercentVariable()\"\r\n ></div>\r\n <div class=\"ard-progress-circle-value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\n\n@NgModule({\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n})\nexport class ArdiumProgressCircleModule {}\n","export const BadgeSize = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\n\nexport const BadgePosition = {\n AboveBefore: 'above-before',\n AboveAfter: 'above-after',\n BelowBefore: 'below-before',\n BelowAfter: 'below-after',\n Before: 'before',\n After: 'after',\n Above: 'above',\n Below: 'below',\n} as const;\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\n","import { AfterViewInit, Directive, ElementRef, OnChanges, OnDestroy, Renderer2, computed, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\n@Directive({\r\n selector: '[ardBadge]',\r\n})\r\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _renderer: Renderer2\r\n ) {}\r\n\r\n readonly text = input<string>('', { alias: 'ardBadge' });\r\n\r\n readonly color = input<ComponentColor>(ComponentColor.Primary, { alias: 'ardBadgeColor' });\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Pill, { alias: 'ardBadgeVariant' });\r\n readonly size = input<BadgeSize>(BadgeSize.Medium, { alias: 'ardBadgeSize' });\r\n\r\n readonly position = input<BadgePosition, BadgePosition>(BadgePosition.AboveAfter, {\r\n alias: 'ardBadgePosition',\r\n transform: v => {\r\n switch (v) {\r\n case BadgePosition.Before:\r\n return BadgePosition.AboveBefore;\r\n case BadgePosition.After:\r\n case BadgePosition.Above:\r\n return BadgePosition.AboveAfter;\r\n case BadgePosition.Below:\r\n return BadgePosition.BelowAfter;\r\n\r\n default:\r\n return v;\r\n }\r\n },\r\n });\r\n\r\n readonly ariaLabel = input<string>('', { alias: 'ardBadgeAriaLabel' });\r\n\r\n readonly hidden = input<boolean, any>(false, { alias: 'ardBadgeHidden', transform: v => coerceBooleanProperty(v) });\r\n readonly overlap = input<boolean, any>(false, { alias: 'ardBadgeOverlap', transform: v => coerceBooleanProperty(v) });\r\n\r\n private readonly _elementClasses = computed(() =>\r\n [\r\n 'ard-badge',\r\n `ard-color-${this.color()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-badge-size-${this.size()}`,\r\n `ard-badge-position-${this.position()}`,\r\n this.hidden() ? 'ard-badge-hidden' : '',\r\n this.overlap() ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\r\n ].join(' ')\r\n );\r\n\r\n private _createBadgeElement(): HTMLElement {\r\n try {\r\n const R = this._renderer;\r\n const element = R.createElement('div') as HTMLDivElement;\r\n R.setAttribute(element, 'class', this._elementClasses());\r\n R.setAttribute(element, 'aria-label', this.ariaLabel());\r\n\r\n if (this.text()) {\r\n const textHost = R.createElement('div') as HTMLDivElement;\r\n R.addClass(textHost, 'ard-badge-content');\r\n\r\n const text = R.createText(this.text());\r\n R.appendChild(textHost, text);\r\n R.appendChild(element, textHost);\r\n }\r\n\r\n return element;\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n error.message = 'ARD-FT4030: An unknown error has occured while rendering ardBadge: ' + error.message;\r\n throw error;\r\n }\r\n throw new Error(`ARD-FT4030: An unknown error has occured while rendering ardBadge: ` + error);\r\n }\r\n }\r\n\r\n private readonly _badgeElement = signal<Nullable<HTMLElement>>(undefined);\r\n ngOnChanges(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n const element = this._createBadgeElement();\r\n this._badgeElement.set(element);\r\n this._renderer.appendChild(this._elRef.nativeElement, element);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._renderer.addClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n ngOnDestroy(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n this._renderer.removeClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumBadgeDirective } from './badge.directive';\n\n@NgModule({\n declarations: [ArdiumBadgeDirective],\n imports: [CommonModule],\n exports: [ArdiumBadgeDirective],\n})\nexport class ArdiumBadgeModule {}\n","export const ColorDisplayAppearance = {\n Rounded: 'rounded with-border',\n Circle: 'circle with-border',\n Sharp: 'sharp with-border',\n RoundedBorderless: 'rounded',\n CircleBorderless: 'circle',\n SharpBorderless: 'sharp',\n} as const;\nexport type ColorDisplayAppearance = (typeof ColorDisplayAppearance)[keyof typeof ColorDisplayAppearance];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport * as Color from 'color';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ColorDisplayAppearance } from './color-display.types';\r\n\r\n@Component({\r\n selector: 'ard-color-display',\r\n templateUrl: './color-display.component.html',\r\n styleUrls: ['./color-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumColorDisplayComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly withLabel = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<ColorDisplayAppearance>(ColorDisplayAppearance.Rounded);\r\n\r\n get ngClasses(): string {\r\n const apprncParts = this.appearance().split(' ');\r\n return `ard-appearance-${apprncParts[0]} ${apprncParts[1] ? 'ard-with-border' : ''}`;\r\n }\r\n\r\n //! color\r\n readonly color = input<Nullable<string>, any>(undefined, { transform: v => Color(v).hex() });\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.color()) console.warn(`ARD-WA3000: Using <ard-color-display> without specifying the [color] field.`);\r\n }\r\n}\r\n","<div\r\n class=\"ard-color-display-wrapper\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div\r\n class=\"ard-color-display\"\r\n [title]=\"color()\"\r\n [style]=\"{ background: color() }\"\r\n ></div>\r\n <span\r\n class=\"ard-color-display-label\"\r\n *ngIf=\"withLabel\"\r\n >{{ color() }}</span\r\n >\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumColorDisplayComponent } from './color-display.component';\n\n@NgModule({\n declarations: [ArdiumColorDisplayComponent],\n imports: [CommonModule],\n exports: [ArdiumColorDisplayComponent],\n})\nexport class ArdiumColorDisplayModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { keyToString } from 'key-display-names';\n\n@Pipe({\n name: 'kbd',\n})\nexport class ArdiumKbdPipe implements PipeTransform {\n transform(value: string, useShort?: boolean): string {\n return keyToString(value, useShort);\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd',\r\n templateUrl: './kbd.component.html',\r\n styleUrls: ['./kbd.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.key() && !this.contentWrapper()!.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5030: Using <ard-kbd> without specifying the [key] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly key = input<string>('');\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance()}`].join(' '));\r\n}\r\n","<kbd\r\n class=\"ard-kbd\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n {{ key() || contentWrapper()?.nativeElement?.innerText || '' | kbd: !full() }}\r\n</kbd>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { computed, Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Directive({\r\n selector: '[ardKbd]',\r\n})\r\nexport class ArdiumKbdDirective {\r\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n readonly renderer: Renderer2 = inject(Renderer2);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled, { alias: 'ardKbdAppearance' });\r\n\r\n readonly ngClasses = computed<string[]>(() => ['ard-kbd', `ard-appearance-${this.appearance()}`]);\r\n\r\n constructor() {\r\n effect(() => {\r\n const classes = this.ngClasses();\r\n this.updateClasses(classes);\r\n });\r\n }\r\n\r\n private updateClasses(classes: string[]): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n const previousClasses = element.className.split(' ').filter(cls => cls.startsWith('ard-appearance-'));\r\n previousClasses.forEach(cls => this.renderer.removeClass(element, cls));\r\n\r\n classes.forEach(cls => {\r\n this.renderer.addClass(element, cls);\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumKbdComponent } from './kbd.component';\nimport { ArdiumKbdDirective } from './kbd.directive';\nimport { ArdiumKbdPipe } from './kbd.pipe';\n\n@NgModule({\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\n imports: [CommonModule],\n exports: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\n})\nexport class ArdiumKbdModule {}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd-shortcut',\r\n templateUrl: './kbd-shortcut.component.html',\r\n styleUrls: ['./kbd-shortcut.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.keys() && !this.contentWrapper()?.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5040: Using <ard-kbd-shortcut> without specifying the [keys] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly splitRegex = /[+ ]/;\r\n\r\n readonly keys = input<Nullable<string[]>, Nullable<string | string[]>>(undefined, {\r\n transform: v => {\r\n //assign from string\r\n if (typeof v === 'string') {\r\n return v.split(this.splitRegex);\r\n }\r\n //assign undefined or array\r\n return v && [...v];\r\n },\r\n });\r\n\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance}`].join(' '));\r\n}\r\n","<div\r\n class=\"ard-kbd-shortcut\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n @for (key of keys() ?? contentWrapper()?.nativeElement?.innerText?.split(splitRegex); track $index) {\r\n @if ($index !== 0) {\r\n <span>+</span>\r\n }\r\n <ard-kbd\r\n [appearance]=\"appearance()\"\r\n [full]=\"full()\"\r\n [key]=\"key\"\r\n />\r\n }\r\n</div>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-shortcut-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\n\n@NgModule({\n declarations: [ArdiumKbdShortcutComponent],\n imports: [CommonModule, ArdiumKbdModule],\n exports: [ArdiumKbdShortcutComponent],\n})\nexport class ArdiumKbdShortcutModule {}\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\n\nexport const PaginationAlign = {\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Split: 'split',\n} as const;\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\n\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\n","import { TemplateRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\nimport { NonEmptyArray } from '../types/utility.types';\nimport { CheckboxState } from '../checkbox/checkbox.types';\n\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\n\nexport interface _GenericColumn {\n header: string | { template: string | TemplateRef<unknown> };\n cellClass?: string;\n}\n\nexport interface TableDataColumn extends _GenericColumn {\n dataSource: DataSource;\n template?: string | TemplateRef<unknown>;\n sortable?: boolean;\n sortFn?: (columnAData: any, columnBData: any) => number;\n highlight?: boolean | ComponentColor;\n width?: string | number;\n minWidth?: string | number;\n isRowHeader?: boolean;\n}\nexport interface TableSubheader extends _GenericColumn {\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\n}\n\nexport const SortType = {\n Ascending: 'ascending',\n Descending: 'descending',\n} as const;\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n//! contexts\nexport interface TableSubheaderContext {\n $implicit: string;\n header: string;\n}\nexport interface TableHeaderContext extends TableSubheaderContext {\n sortable: boolean;\n sortType: SortType | null;\n onTriggerSort: (event?: MouseEvent) => void;\n onTriggerResetSort: (event?: MouseEvent) => void;\n}\nexport interface TableCheckboxContext {\n $implicit: boolean;\n selected: boolean;\n disabled: boolean;\n onChange: (event: MouseEvent) => void;\n}\nexport interface TableHeaderCheckboxContext {\n $implicit: CheckboxState;\n state: CheckboxState;\n onChange: () => void;\n}\nexport interface TableCaptionContext {\n $implicit: string;\n}\n\n//! appearance-related\nexport const TableAppearance = {\n Strong: 'strong',\n Light: 'light',\n Colorless: 'colorless',\n} as const;\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\n\nexport const TableVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\n\nexport const TablePaginationStrategy = {\n Noop: 'noop',\n Slice: 'slice',\n} as const;\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\n\nexport const TableAlignType = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n CenterLeft: 'center-left',\n Center: 'center-center',\n CenterRight: 'center-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\n","import { TableDataColumn, TableSubheader } from './table.types';\n\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\n return 'children' in v;\n}\n\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\n return cols.every(col => !isTableSubheader(col));\n}\n\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\n const diff = arr.length - destArr.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n destArr.push([]);\n }\n }\n for (let row = 0; row < arr.length; row++) {\n destArr[row] = [...destArr[row], ...arr[row]];\n }\n}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\r\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\r\n\r\nexport class ArdTableRow {\r\n private readonly _itemData = signal<any>(undefined);\r\n readonly itemData = this._itemData.asReadonly();\r\n\r\n private readonly _index = signal<number>(-1);\r\n readonly index = this._index.asReadonly();\r\n\r\n private readonly _isEmpty = signal<boolean>(false);\r\n readonly isEmpty = this._isEmpty.asReadonly();\r\n\r\n private readonly _data = signal<any[]>([]);\r\n readonly data = this._data.asReadonly();\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n readonly dataColumns = this._dataColumns.asReadonly();\r\n\r\n private readonly _class = signal<string>('');\r\n readonly class = this._class.asReadonly();\r\n\r\n readonly disabled = signal<boolean>(false);\r\n readonly bold = signal<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n\r\n constructor(\r\n itemData: any,\r\n index: number,\r\n data: any[],\r\n dataColumns: TableDataColumn[],\r\n disabled: boolean,\r\n bold: boolean,\r\n isEmpty = false\r\n ) {\r\n this._itemData.set(itemData);\r\n this._index.set(index);\r\n this._data.set(data);\r\n this._dataColumns.set(dataColumns);\r\n this.disabled.set(disabled);\r\n this.bold.set(bold);\r\n this._isEmpty.set(isEmpty);\r\n }\r\n static newEmptyCell(index: number) {\r\n return new ArdTableRow(null, index, [], [], false, false, true);\r\n }\r\n}\r\nexport interface TableItemStorageHostDefaults {\r\n readonly rowDisabledFrom: string;\r\n readonly rowBoldFrom: string;\r\n}\r\nexport interface TableItemStorageHost {\r\n readonly rowDisabledFrom: Signal<Nullable<string>>;\r\n readonly rowBoldFrom: Signal<Nullable<string>>;\r\n readonly invertRowDisabled: Signal<Nullable<boolean>>;\r\n readonly invertRowBold: Signal<Nullable<boolean>>;\r\n readonly data: Signal<Nullable<any>>[];\r\n readonly DEFAULTS: TableItemStorageHostDefaults;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly treatDataSourceAsString: Signal<Nullable<boolean>>;\r\n\r\n readonly paginated: Signal<boolean>;\r\n readonly paginationStrategy: Signal<TablePaginationStrategy>;\r\n readonly itemsPerPage: Signal<number>;\r\n readonly page: Signal<number>;\r\n}\r\nexport class HeaderCell {\r\n readonly cell = signal<TableDataColumn | TableSubheader>(undefined as any);\r\n readonly colspan = signal<number>(1);\r\n readonly rowspan = signal<number>(1);\r\n\r\n constructor(cell: TableDataColumn | TableSubheader, colspan = 1, rowspan = 1) {\r\n this.cell.set(cell);\r\n this.colspan.set(colspan);\r\n this.rowspan.set(rowspan);\r\n }\r\n\r\n get width(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.width);\r\n }\r\n get minWidth(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.minWidth);\r\n }\r\n /**\r\n * Thransforms a numeric width into a CSS string if needed. Pure function.\r\n * @param width the width to be converted.\r\n * @returns The width expressed as a CSS-compatible string or null.\r\n */\r\n private _getWidth(width: string | number | undefined): string | null {\r\n if (!width) return null;\r\n if (typeof width === 'number') return `${width}px`;\r\n return width;\r\n }\r\n}\r\n\r\nexport class TableItemStorage {\r\n private readonly _items = signal<ArdTableRow[]>([]);\r\n private readonly _sortedItems = signal<ArdTableRow[]>([]);\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n private readonly _headerCells = signal<HeaderCell[][]>([]);\r\n\r\n constructor(private readonly _ardParentComp: TableItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n readonly sortedItems = this._sortedItems.asReadonly();\r\n /**\r\n * Gets items based on the current pagination state.\r\n */\r\n readonly paginatedItems = computed(() => {\r\n if (!this._ardParentComp.paginated() || this._ardParentComp.paginationStrategy() === TablePaginationStrategy.Noop) {\r\n return this.sortedItems();\r\n }\r\n const page = this._ardParentComp.page();\r\n const IPP = this._ardParentComp.itemsPerPage();\r\n const itemsStart = (page - 1) * IPP;\r\n const itemsEnd = page * IPP;\r\n return this.sortedItems().slice(itemsStart, itemsEnd);\r\n });\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.selected()));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.highlighted()));\r\n /**\r\n * Gets all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n */\r\n readonly highlightableItems = computed<ArdTableRow[]>(() => this._items().filter(item => !item.disabled()));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdTableRow[]): any[] {\r\n return items.map(item => item.itemData());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Checks if any item in the table is selected.\r\n * @returns A boolean value indicating if any item is selected.\r\n */\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n /**\r\n * Checks if all items in the table are selected.\r\n * @returns A boolean value indicating if all items are selected.\r\n */\r\n readonly areAllSelected = computed(() => this.selectedItems().length === this._items().filter(item => !item.disabled()).length);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const max = this._ardParentComp.maxSelectedItems();\r\n if (!isDefined(max)) {\r\n return false;\r\n }\r\n return max <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Gets the header cells of the table.\r\n * @returns a 2D array of header cells.\r\n */\r\n readonly headerCells = this._headerCells.asReadonly();\r\n /**\r\n * Checks if the table has defined columns.\r\n * @returns a boolean value indicating if the table has defined columns.\r\n */\r\n readonly hasDefinedColumns = computed(() => this._dataColumns().length > 0);\r\n\r\n //! setting columns\r\n /**\r\n * Sets the columns of the table.\r\n * @param cols an array of table data columns or table subheaders.\r\n */\r\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\r\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\r\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\r\n this._headerCells.set(this._filterHeaderCells(headerCells));\r\n this._dataColumns.set(this._extractDataSources(cols));\r\n }\r\n /**\r\n * Filters out null values from the header cells array. Pure function.\r\n * @param cells a 2D array of header cells or null values.\r\n * @returns a 2D array of header cells without null values and empty arrays.\r\n */\r\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i] = cells[i].filter(v => v !== null);\r\n }\r\n return cells.filter(row => row.length) as HeaderCell[][];\r\n }\r\n /**\r\n * Extracts the data sources from the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns an array of table data columns.\r\n */\r\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\r\n const dataColumns: TableDataColumn[] = [];\r\n\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n dataColumns.push(col);\r\n continue;\r\n }\r\n dataColumns.push(...this._extractDataSources(col.children));\r\n }\r\n\r\n return dataColumns;\r\n }\r\n /**\r\n * Gets the maximum nesting level of the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns the maximum nesting level as a number.\r\n */\r\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\r\n if (areAllDataColumns(cols)) return 1;\r\n let max = 1;\r\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\r\n const height = 1 + this._getHeaderMaxNesting(col.children);\r\n if (height > max) max = height;\r\n }\r\n return max;\r\n }\r\n /**\r\n * Maps the columns tree to a 2D array of header cells or null values. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @param maxNesting the maximum nesting level of the columns array.\r\n * @param currentNesting the current nesting level of the columns array.\r\n * @returns a 2D array of header cells or null values.\r\n */\r\n private _mapColumnsToArray(\r\n cols: (TableDataColumn | TableSubheader)[],\r\n maxNesting: number,\r\n currentNesting: number\r\n ): (HeaderCell | null)[][] {\r\n if (areAllDataColumns(cols)) {\r\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\r\n }\r\n const headerCells: (HeaderCell | null)[][] = [[]];\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\r\n continue;\r\n }\r\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\r\n const height = childCells.length - 1;\r\n const width = childCells[1].length;\r\n for (let i = 0; i < height; i++) {\r\n headerCells.push([null]);\r\n }\r\n headerCells[0].push(new HeaderCell(col, width, 1));\r\n for (let i = 0; i < width - 1; i++) {\r\n headerCells[0].push(null);\r\n }\r\n merge2dArrays(headerCells, childCells);\r\n }\r\n return headerCells;\r\n }\r\n\r\n //! setting items\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n */\r\n setItems(items: any[]): void {\r\n if (!this.hasDefinedColumns()) return;\r\n\r\n const mappedItems = items.map((item, i) => this._setItemsMapFn(item, i));\r\n this._items.set(mappedItems);\r\n this._sortedItems.set(mappedItems);\r\n }\r\n /**\r\n * Maps raw item data to an {@link ArdTableRow} object.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\r\n * @private\r\n */\r\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\r\n //get data\r\n const [data, dataColumns] = this._getRowData(rawItemData, index);\r\n\r\n //get bold\r\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom() ?? this._ardParentComp.DEFAULTS.rowBoldFrom;\r\n let bold = resolvePath(rawItemData, rowBoldFromPath);\r\n if (this._ardParentComp.invertRowBold()) {\r\n bold = !bold;\r\n }\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.rowDisabledFrom() ?? this._ardParentComp.DEFAULTS.rowDisabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertRowDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n return new ArdTableRow(rawItemData, index, data, dataColumns, disabled, bold);\r\n }\r\n /**\r\n * Retrieves data for a row based on data columns configuration.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {any[]} Returns an array containing the row data.\r\n * @private\r\n */\r\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\r\n const data: any[] = [];\r\n const _cols = this._dataColumns();\r\n for (let i = 0; i < _cols.length; i++) {\r\n const dataColumn = _cols[i];\r\n const sourcePath = dataColumn.dataSource;\r\n\r\n if (typeof sourcePath === 'string') {\r\n if (this._ardParentComp.treatDataSourceAsString()) {\r\n data.push(rawItemData[sourcePath]);\r\n continue;\r\n }\r\n data.push(resolvePath(rawItemData, sourcePath));\r\n continue;\r\n }\r\n if (sourcePath.type === 'autocount') {\r\n data.push(index + 1);\r\n continue;\r\n }\r\n if (sourcePath.type === 'checkbox') {\r\n data.push({ _ardCheckbox: true, index });\r\n continue;\r\n }\r\n const sourceString = typeof sourcePath === 'object' ? JSON.stringify(sourcePath) : sourcePath;\r\n throw new Error(`ARD-FT5052: Unexpected data source \"${sourceString}\" at index ${i}.`);\r\n }\r\n return [data, this._dataColumns()];\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param indexes The value of the ngModel to set.\r\n */\r\n writeValue(indexes: number[]): void {\r\n this._forceUnselectAll();\r\n this.selectItem(...indexes);\r\n }\r\n\r\n //! selecting items\r\n /**\r\n * Checks if an item with the given index is selected.\r\n *\r\n * @param {number} index The index of the item to check.\r\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\r\n */\r\n isItemSelected(index: number): boolean {\r\n return this.selectedItems().some(item => item.index() === index);\r\n }\r\n /**\r\n * Selects all items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @returns a tuple containing two arrays:\r\n * * An array of items selected.\r\n * * An array of items failed to select.\r\n */\r\n selectAll(): [any[], any[]] {\r\n return this.selectItem(...this._items().map(v => v.index()));\r\n }\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n *\r\n * @param indexes A rest operator array of item indexes to be selected.\r\n * @returns a tuple containing two arrays:\r\n * - An array of items selected.\r\n * - An array of items failed to select.\r\n */\r\n selectItem(...indexes: number[]): [any[], any[]] {\r\n const itemsToBeSelected = this._items().filter(item => !item.disabled() && indexes.includes(item.index()));\r\n if (this.isItemLimitReached()) {\r\n return [[], this._itemsToValue(itemsToBeSelected)];\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n let itemsLeftUntilLimit = (this._ardParentComp.maxSelectedItems() ?? Infinity) - this.selectedItems().length;\r\n for (const item of itemsToBeSelected) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (itemsLeftUntilLimit <= 0) {\r\n break;\r\n }\r\n itemsLeftUntilLimit--;\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n\r\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n * Unselects one or multiple items.\r\n * @param items A rest operator array of item indexes to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...indexes: number[]): any[] {\r\n const itemsToBeUnselected = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of itemsToBeUnselected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(itemsToBeUnselected);\r\n }\r\n\r\n //! highlighting items\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n const highlighted = this.highlightedItems();\r\n for (const item of highlighted) {\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The index of the item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(index: number): ArdTableRow | null {\r\n this.unhighlightAll();\r\n return this.highlightItem(index);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of item indexes to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...indexes: number[]): ArdTableRow {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of item indexes to be unhighlighted.\r\n */\r\n unhighlightItem(...indexes: number[]): void {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems().map(v => v.index());\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(nextItemIndex);\r\n }\r\n return this.highlightItem(nextItemIndex);\r\n }\r\n return this.highlightSingleItem(nextItemIndex);\r\n }\r\n\r\n //! sorting\r\n private _currentSortColumn: number | null = null;\r\n private _currentSortType: SortType | null = null;\r\n\r\n toggleCurrentSortColumn(column: number): void {\r\n if (this._currentSortColumn === column) {\r\n if (this._currentSortType === SortType.Ascending) {\r\n this._currentSortType = SortType.Descending;\r\n } else {\r\n this._currentSortType = SortType.Ascending;\r\n }\r\n this._generateSortedRows(true);\r\n return;\r\n }\r\n this._currentSortColumn = column;\r\n this._currentSortType = SortType.Ascending;\r\n this._generateSortedRows();\r\n }\r\n resetSort(): void {\r\n this._currentSortColumn = null;\r\n this._currentSortType = null;\r\n this._sortedItems.set([...this.items()]);\r\n }\r\n getColumnSortType(column: number): SortType | null {\r\n if (this._currentSortColumn === column) {\r\n return this._currentSortType;\r\n }\r\n return null;\r\n }\r\n private _generateSortedRows(justReverse?: boolean): void {\r\n if (justReverse) {\r\n this._sortedItems().reverse();\r\n return;\r\n }\r\n const sortColumnIndex = this._currentSortColumn;\r\n if (isNull(sortColumnIndex) || !this._currentSortType) {\r\n this._sortedItems.set(this.items());\r\n return;\r\n }\r\n const sortColumn = this._dataColumns()[sortColumnIndex];\r\n if (!sortColumn) {\r\n throw new Error(\r\n `ARD-IS5059: Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium UI bug, please report it to the creators.`\r\n );\r\n }\r\n\r\n const direction = this._currentSortType === SortType.Ascending ? 1 : -1;\r\n const sortFn =\r\n sortColumn.sortFn ??\r\n ((a, b) => {\r\n if (a > b) return direction;\r\n if (a < b) return -1 * direction;\r\n return 0;\r\n });\r\n\r\n this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));\r\n }\r\n}\r\n","import { Directive, TemplateRef, input } from '@angular/core';\r\nimport { PaginationContext } from '../_internal/models/pagination.model';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-tmp]' })\r\nexport class ArdiumTableTemplateDirective {\r\n readonly name = input.required<Nullable<string>>({ alias: 'ard-table-tmp' });\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\r\nexport class ArdiumTableCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\r\n})\r\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\r\nexport class ArdiumTableCaptionTemplateDirective {\r\n constructor(public template: TemplateRef<TableCaptionContext>) {}\r\n}\r\n\r\n//! paginations\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\r\nexport class ArdiumTablePaginationTemplateDirective {\r\n constructor(public template: TemplateRef<PaginationContext>) {}\r\n}\r\n","import { ModelSignal, Signal, computed } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\n\r\nexport interface PaginationModelHost {\r\n readonly componentId: string;\r\n readonly totalItems: Signal<number>;\r\n readonly options: Signal<number[] | { value: number; label: string }[]>;\r\n readonly itemsPerPage: ModelSignal<number>;\r\n readonly page: ModelSignal<number>;\r\n}\r\n\r\nexport interface PaginationCurrentItemsContext {\r\n readonly currentItemsFirst: number;\r\n readonly currentItemsLast: number;\r\n readonly totalItems: number;\r\n readonly totalPages: number;\r\n readonly page: number;\r\n}\r\n\r\nexport interface PaginationContext extends PaginationCurrentItemsContext {\r\n readonly itemsPerPageOptions: number[] | { value: number; label: string }[];\r\n readonly itemsPerPage: number;\r\n readonly onItemsPerPageChange: (newValue: number) => void;\r\n readonly firstPageDisabled: boolean;\r\n readonly prevPageDisabled: boolean;\r\n readonly nextPageDisabled: boolean;\r\n readonly lastPageDisabled: boolean;\r\n readonly onPageChange: (newPage: number) => void;\r\n}\r\n\r\nexport class PaginationModel {\r\n constructor(private readonly _ardHostCmp: PaginationModelHost) {}\r\n\r\n readonly isTotalItemsDefined = computed<boolean>(() => isDefined(this._ardHostCmp.totalItems()));\r\n\r\n readonly lastPageNum = computed<number | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return Math.ceil(total / this._ardHostCmp.itemsPerPage());\r\n });\r\n readonly isLastPage = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this.lastPageNum() === this._ardHostCmp.page();\r\n });\r\n readonly itemsOnCurrentPage = computed<[number, number] | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return [\r\n Math.min(total, (this._ardHostCmp.page() - 1) * this._ardHostCmp.itemsPerPage() + 1),\r\n Math.min(total, this._ardHostCmp.page() * this._ardHostCmp.itemsPerPage()),\r\n ];\r\n });\r\n\r\n //! action disabled states\r\n readonly firstPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === 1;\r\n });\r\n readonly lastPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === this.lastPageNum();\r\n });\r\n\r\n //! current page\r\n setPage(v: number): void {\r\n this._ardHostCmp.page.set(v);\r\n }\r\n getPage(): number {\r\n return this._ardHostCmp.page();\r\n }\r\n goToFirstPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(1);\r\n return 1;\r\n }\r\n goToPrevPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() - 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToNextPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() + 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToLastPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this.lastPageNum()!);\r\n return this._ardHostCmp.page();\r\n }\r\n\r\n //! context\r\n readonly getCurrentItemsContext = computed<PaginationCurrentItemsContext>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total)\r\n throw new Error(`ARD-FT${this._ardHostCmp.componentId}90: Cannot use pagination model without defining total items first.`);\r\n\r\n const pageItems = this.itemsOnCurrentPage()!;\r\n return {\r\n totalPages: this.lastPageNum()!,\r\n totalItems: total,\r\n page: this._ardHostCmp.page(),\r\n currentItemsFirst: pageItems[0],\r\n currentItemsLast: pageItems[1],\r\n };\r\n });\r\n readonly getPartialContext = computed<Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'>>(() => {\r\n return {\r\n ...this.getCurrentItemsContext(),\r\n itemsPerPageOptions: this._ardHostCmp.options(),\r\n itemsPerPage: this._ardHostCmp.itemsPerPage(),\r\n firstPageDisabled: this.firstPageDisabled(),\r\n prevPageDisabled: this.firstPageDisabled(),\r\n nextPageDisabled: this.lastPageDisabled(),\r\n lastPageDisabled: this.lastPageDisabled(),\r\n };\r\n });\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, input, model, output } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { PaginationModel } from '../_internal/models/pagination.model';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-pagination',\r\n templateUrl: './table-pagination.component.html',\r\n styleUrls: ['./table-pagination.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\r\n readonly componentId = '506';\r\n\r\n private readonly _pagination = new PaginationModel(this);\r\n\r\n //! main settings\r\n readonly totalItems = input.required<number>();\r\n readonly options = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly itemsPerPageChangeEvent = output<number>({ alias: 'itemsPerPageChange' });\r\n readonly pageChangeEvent = output<number>({ alias: 'pageChange' });\r\n\r\n ngOnInit(): void {\r\n if (this._pagination.isTotalItemsDefined()) return;\r\n throw new Error('ARD-FT5060: Table pagination requires [totalItems] to be defined.');\r\n }\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<PaginationAlign>(PaginationAlign.Split);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! miscellaneous\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n //! contexts\r\n readonly getCurrentItemsContext = this._pagination.getCurrentItemsContext;\r\n\r\n readonly firstPageDisabled = this._pagination.firstPageDisabled;\r\n readonly lastPageDisabled = this._pagination.lastPageDisabled;\r\n\r\n //! methods\r\n onItemsPerPageChange(newValue: number): void {\r\n if (this.isLoading()) return;\r\n if (newValue === this.itemsPerPage()) return;\r\n this.itemsPerPage.set(newValue);\r\n this.itemsPerPageChangeEvent.emit(this.itemsPerPage());\r\n this._emitPageEvent();\r\n }\r\n\r\n private _emitPageEvent(): void {\r\n this.pageChangeEvent.emit(this.page());\r\n }\r\n onPageChange(newPage: number): void {\r\n if (this.isLoading()) return;\r\n if (newPage === this.page()) return;\r\n this._pagination.setPage(newPage);\r\n this._emitPageEvent();\r\n }\r\n onFirstPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToFirstPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onPrevPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToPrevPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onNextPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToNextPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onLastPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToLastPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n}\r\n","<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n input,\r\n model,\r\n output,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined, isNumber } from 'simple-bool';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\nimport {\r\n TableAlignType,\r\n TableAppearance,\r\n TableCaptionContext,\r\n TableCheckboxContext,\r\n TableDataColumn,\r\n TableHeaderCheckboxContext,\r\n TableHeaderContext,\r\n TablePaginationStrategy,\r\n TableSubheader,\r\n TableSubheaderContext,\r\n TableVariant,\r\n} from './table.types';\r\nimport { isTableSubheader } from './utils';\r\n\r\n@Component({\r\n selector: 'ard-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit, OnChanges {\r\n private readonly _itemStorage = new TableItemStorage(this);\r\n\r\n readonly DEFAULTS = {\r\n rowDisabledFrom: 'disabled',\r\n rowBoldFrom: 'bold',\r\n };\r\n\r\n readonly rowDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly rowBoldFrom = input<Nullable<string>>(undefined);\r\n readonly invertRowDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly invertRowBold = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selectableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly clickableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly loadingProgress = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) }); //TODO add progress bar\r\n\r\n //! appearance\r\n readonly appearance = input<TableAppearance>(TableAppearance.Strong);\r\n readonly variant = input<TableVariant>(TableVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<TableAlignType>(TableAlignType.CenterLeft);\r\n readonly headerAlign = input<TableAlignType>(TableAlignType.CenterLeft);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly zebra = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly stickyHeader = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n `ard-header-align-${this.headerAlign()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.zebra() ? 'ard-zebra-table' : '',\r\n this.selectableRows() ? 'ard-selectable-rows' : '',\r\n this.stickyHeader() ? 'ard-sticky-header' : '',\r\n this.isLoading() ? 'ard-table-loading' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! pagination\r\n readonly paginated = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Noop);\r\n readonly paginationOptions = input<\r\n number[] | { value: number; label: string }[],\r\n number[] | { value: number; label: string }[]\r\n >([10, 25, 50], {\r\n transform: v => {\r\n return v.filter(el => {\r\n const opt = isNumber(el) ? el : el.value;\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n return false;\r\n }\r\n return true;\r\n }) as number[] | { value: number; label: string }[];\r\n },\r\n });\r\n readonly totalItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly isDefinedTotalItems = computed(\r\n () => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems())\r\n );\r\n readonly canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());\r\n\r\n //! print errors if needed\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5051: value of \"${ipp}\" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! item storage getters\r\n readonly headerCells = computed(() => this._itemStorage.headerCells());\r\n\r\n readonly dataRows = computed(() => {\r\n const items: ArdTableRow[] = this._itemStorage.paginatedItems();\r\n\r\n if (!this.pageFillRemaining()) return items;\r\n if (!this.isDefinedTotalItems()) {\r\n throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using \"slice\" pagination strategy.');\r\n }\r\n if (this.page() === 1) return items;\r\n\r\n const ipp = this.itemsPerPage();\r\n for (let i = items.length; i < ipp; i++) {\r\n items.push(ArdTableRow.newEmptyCell(i));\r\n }\r\n return items;\r\n });\r\n\r\n //! columns/data setters\r\n @Input()\r\n set columns(v: (TableDataColumn | TableSubheader)[]) {\r\n this._itemStorage.setColumns(v);\r\n }\r\n private _data: any[] = [];\r\n @Input()\r\n set data(v: any[]) {\r\n this._data = v;\r\n this._itemStorage.setItems(v);\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n readonly treatDataSourceAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly _suppressErrors = input<boolean>(false);\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild<ArdiumTableCheckboxTemplateDirective, TemplateRef<TableCheckboxContext>>(\r\n ArdiumTableCheckboxTemplateDirective,\r\n {\r\n read: TemplateRef<TableCheckboxContext>,\r\n }\r\n );\r\n readonly headerCheckboxTemplate = contentChild<\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n TemplateRef<TableHeaderCheckboxContext>\r\n >(ArdiumTableHeaderCheckboxTemplateDirective, {\r\n read: TemplateRef<TableHeaderCheckboxContext>,\r\n });\r\n readonly captionTemplate = contentChild<ArdiumTableCaptionTemplateDirective, TemplateRef<TableCaptionContext>>(\r\n ArdiumTableCaptionTemplateDirective,\r\n {\r\n read: TemplateRef<TableCaptionContext>,\r\n }\r\n );\r\n\r\n private _itemTemplates: Record<string, TemplateRef<any>> = {};\r\n readonly templateChildren = contentChildren<ArdiumTableTemplateDirective>(ArdiumTableTemplateDirective);\r\n\r\n ngAfterContentInit(): void {\r\n const templates = Array.from(this.templateChildren());\r\n for (const instance of templates) {\r\n const name = instance.name();\r\n if (!name) {\r\n console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));\r\n continue;\r\n }\r\n this._itemTemplates[name] = instance.template;\r\n }\r\n }\r\n\r\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\r\n if (typeof tmp === 'string') return undefined;\r\n return this.getCellTemplate(tmp.template);\r\n }\r\n getHeaderCheckboxColor(): SimpleComponentColor {\r\n if (this.appearance() === TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\r\n return this.color();\r\n }\r\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\r\n //return undefined\r\n if (!tmp) return undefined;\r\n //return template, if it is one\r\n if (tmp instanceof TemplateRef) return tmp;\r\n //check if the name can be found\r\n if (!(tmp in this._itemTemplates)) {\r\n console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named \"${tmp}\"`));\r\n return undefined;\r\n }\r\n //return the template\r\n return this._itemTemplates[tmp];\r\n }\r\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\r\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\r\n const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;\r\n const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;\r\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\r\n }\r\n\r\n //! click & hover handlers\r\n onCheckboxClick(index: number): void {\r\n this.toggleRowSelected(index);\r\n }\r\n onRowClick(row: ArdTableRow, event: MouseEvent): void {\r\n if (this.clickableRows()) {\r\n event.stopPropagation();\r\n this.clickRowEvent.emit(row.itemData());\r\n return;\r\n }\r\n if (this.selectableRows()) {\r\n event.stopPropagation();\r\n this.toggleRowSelected(row.index());\r\n return;\r\n }\r\n }\r\n onRowMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onRowMouseEnter(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.highlightSingleItem(index);\r\n }\r\n onRowMouseLeave(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.unhighlightItem(index);\r\n }\r\n\r\n //! select handlers\r\n /**\r\n * Toggles the selection state of a row in the table.\r\n * @param selected a boolean value indicating if the row is currently selected.\r\n * @param index the index of the row in the table.\r\n */\r\n toggleRowSelected(index: number): void {\r\n if (this._itemStorage.isItemSelected(index)) {\r\n const unselected = this._itemStorage.unselectItem(index);\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectItem(index);\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n /**\r\n * Toggles the selection state of all rows in the table.\r\n */\r\n toggleAllRowsSelected(): void {\r\n if (this._itemStorage.areAllSelected()) {\r\n const unselected = this._itemStorage.unselectAll();\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectAll();\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n private _emitSelect(): void {\r\n const v = this._itemStorage.value();\r\n this.selectedRowsChangeEvent.emit(v);\r\n }\r\n isCellCheckbox(cell: any): boolean {\r\n return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;\r\n }\r\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n if (typeof dataCell.dataSource === 'string') return false;\r\n return dataCell.dataSource.type === 'checkbox';\r\n }\r\n isHeaderCellSortable(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n return dataCell.sortable ?? false;\r\n }\r\n\r\n readonly selectedRowsChangeEvent = output<any[]>({ alias: 'selectedRowsChange' });\r\n readonly failedSelectRowEvent = output<any[]>({ alias: 'failedSelectRow' });\r\n readonly selectRowEvent = output<any[]>({ alias: 'selectRow' });\r\n readonly unselectRowEvent = output<any[]>({ alias: 'unselectRow' });\r\n readonly clickRowEvent = output<any>({ alias: 'clickRow' });\r\n\r\n //! contexts\r\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\r\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\r\n if (typeof cell.header !== 'string') return null;\r\n if (isTableSubheader(cell))\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n };\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n sortable: cell.sortable ?? false,\r\n sortType: this._itemStorage.getColumnSortType(index),\r\n onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),\r\n onTriggerResetSort: (event?: Event) => {\r\n this._itemStorage.resetSort();\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n },\r\n };\r\n }\r\n readonly getHeaderCheckboxContext = computed<TableHeaderCheckboxContext>(() => {\r\n let state: CheckboxState = CheckboxState.Unselected;\r\n if (this._itemStorage.isAnyItemSelected()) {\r\n state = CheckboxState.Indeterminate;\r\n if (this._itemStorage.areAllSelected()) {\r\n state = CheckboxState.Selected;\r\n }\r\n }\r\n return {\r\n $implicit: state,\r\n state,\r\n onChange: () => {\r\n this.toggleAllRowsSelected();\r\n },\r\n };\r\n });\r\n getCheckboxContext(index: number): TableCheckboxContext {\r\n const item = this._itemStorage.items().find(v => v.index() === index)!;\r\n const selected = item.selected();\r\n return {\r\n $implicit: selected,\r\n selected: selected,\r\n disabled: item.disabled(),\r\n onChange: () => {\r\n this.onCheckboxClick(index);\r\n },\r\n };\r\n }\r\n}\r\n","<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) { @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n } }\r\n </tr>\r\n } }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumSelectModule } from '../select/select.module';\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumTablePaginationComponent],\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumTablePaginationComponent],\n})\nexport class ArdiumTablePaginationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableComponent } from './table.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule],\n exports: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n})\nexport class ArdiumTableModule {}\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { TableDataColumn, TablePaginationStrategy } from '../table/table.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-from-csv',\r\n templateUrl: './table-from-csv.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableFromCsvComponent implements AfterContentInit, OnChanges {\r\n readonly selectableRows = input<any>();\r\n readonly maxSelectedItems = input<any>();\r\n readonly clickableRows = input<any>();\r\n\r\n readonly isLoading = input<any>();\r\n readonly loadingProgress = input<any>();\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly appearance = input<any>();\r\n readonly variant = input<any>();\r\n readonly color = input<any>();\r\n readonly align = input<any>();\r\n readonly headerAlign = input<any>();\r\n\r\n readonly compact = input<any>();\r\n readonly zebra = input<any>();\r\n readonly stickyHeader = input<any>();\r\n\r\n //! pagination\r\n readonly paginated = input<any>();\r\n\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Slice);\r\n\r\n readonly paginationOptions = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly totalItems = input<any>();\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<any>();\r\n readonly paginationDisabled = input<any>();\r\n readonly useFirstLastButtons = input<any>();\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5071: value of \"${ipp}\" in <ard-table-from-csv>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['paginationOptions']) {\r\n const options = changes['paginationOptions'].currentValue.map((v: number | { value: number; label: string }) =>\r\n typeof v === 'number' ? v : v.value\r\n ) as number[];\r\n for (const opt of options) {\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5072: each item of <ard-table-from-csv>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(\r\n `ARD-FT5073a: <ard-table-from-csv>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`\r\n );\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5073b: value of <ard-table-from-csv>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! data\r\n readonly separator = input<string>(',');\r\n\r\n readonly data = input<{ headers: TableDataColumn[]; dataRows: any[] } | null, string>(null, {\r\n transform: v => {\r\n if (!this._isCsvValid(v)) return null;\r\n const lines = v.split('\\n');\r\n const headers = this._convertCsvToHeaders(lines.shift()!);\r\n const dataRows = this._convertCsvToArray(lines, headers);\r\n return { headers, dataRows };\r\n },\r\n });\r\n private readonly _isDataOkay = computed(() => this.data() !== null);\r\n\r\n readonly headers = computed(() => this.data()?.headers ?? []);\r\n readonly dataRows = computed(() => this.data()?.dataRows ?? []);\r\n\r\n ngAfterContentInit(): void {\r\n if (!this._isDataOkay()) {\r\n console.error(new Error(`ARD-FT5070: Expected <ard-table-from-csv>'s [data] attribute to be a non-empty string, got \"\".`));\r\n }\r\n }\r\n\r\n private _isCsvValid(csv: string): boolean {\r\n return csv.length > 1;\r\n }\r\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\r\n const headers = line.split(this.separator());\r\n return headers.map(header => {\r\n header = header.trim();\r\n return {\r\n header,\r\n dataSource: header,\r\n };\r\n });\r\n }\r\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\r\n const dataRows: Record<string, any>[] = [];\r\n\r\n for (const line of lines) {\r\n const lineArr = line.split(this.separator());\r\n\r\n const obj: Record<string, any> = {};\r\n for (let i = 0; i < headers.length; i++) {\r\n const source = headers[i].dataSource as string;\r\n obj[source] = lineArr[i]?.trim() ?? '';\r\n }\r\n dataRows.push(obj);\r\n }\r\n return dataRows;\r\n }\r\n}\r\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers()\"\r\n [data]=\"dataRows()\"\r\n [selectableRows]=\"selectableRows()\"\r\n [maxSelectedItems]=\"maxSelectedItems()\"\r\n [clickableRows]=\"clickableRows()\"\r\n [isLoading]=\"isLoading()\"\r\n [loadingProgress]=\"loadingProgress()\"\r\n [caption]=\"caption()\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n [align]=\"align()\"\r\n [headerAlign]=\"headerAlign()\"\r\n [compact]=\"compact()\"\r\n [zebra]=\"zebra()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [paginated]=\"paginated()\"\r\n [paginationStrategy]=\"paginationStrategy()\"\r\n [totalItems]=\"totalItems()\"\r\n [paginationColor]=\"paginationColor()\"\r\n [paginationAlign]=\"paginationAlign()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n [pageFillRemaining]=\"pageFillRemaining()\"\r\n [paginationDisabled]=\"paginationDisabled()\"\r\n [useFirstLastButtons]=\"useFirstLastButtons()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n/>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\nimport { ArdiumTableModule } from './../table/table.module';\n\n@NgModule({\n declarations: [ArdiumTableFromCsvComponent],\n imports: [CommonModule, ArdiumTableModule],\n exports: [ArdiumTableFromCsvComponent],\n})\nexport class ArdiumTableFromCsvModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isArray } from 'simple-bool';\r\nimport { StarColor, StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-display',\r\n templateUrl: './star-display.component.html',\r\n styleUrls: ['./star-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarDisplayComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n //! stars\r\n readonly max = input<number, any>(5, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly value = input<number | StarFillMode[], string | number | StarFillMode[]>(0, {\r\n transform: v => {\r\n if (isArray(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v, 0);\r\n },\r\n });\r\n\r\n readonly starArray = computed<StarFillMode[]>(() => {\r\n let v = this.value();\r\n let newArr: StarFillMode[];\r\n\r\n // pad the array with non-filled stars and return it\r\n if (isArray(v)) {\r\n newArr = [...v];\r\n while (newArr.length < this.max()) {\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n }\r\n\r\n // create an array from a numeric value\r\n newArr = [];\r\n while (newArr.length < this.max()) {\r\n v--;\r\n if (v + 1 >= 1) {\r\n newArr.push(StarFillMode.Filled);\r\n continue;\r\n }\r\n if (Math.round(v + 1) === 1) {\r\n newArr.push(StarFillMode.Half);\r\n continue;\r\n }\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n });\r\n}\r\n","<div\r\n class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (fillMode of starArray(); track $index) {\r\n <ard-star\r\n [fill]=\"fillMode\"\r\n [color]=\"color()\"\r\n />\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarDisplayComponent } from './star-display.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarDisplayComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarDisplayComponent],\n})\nexport class ArdiumStarDisplayModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabComponent {\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selected = signal<boolean>(false);\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n\r\n setSelected(state: boolean): void {\r\n this.selected.set(state);\r\n this._emitChange();\r\n }\r\n\r\n @HostBinding('class.ard-tab-selected')\r\n get _selectedHostAttribute() {\r\n return this.selected();\r\n }\r\n\r\n private _emitChange(): void {\r\n this.selectedChange.emit(this.selected());\r\n }\r\n\r\n readonly focused = signal<boolean>(false);\r\n\r\n readonly _label = input<string | null>(null, { alias: 'label' });\r\n readonly label = computed(() => this._label() ?? this.tabId());\r\n\r\n readonly tabId = input.required<string>();\r\n\r\n readonly focusEvent = output<void>();\r\n readonly blurEvent = output<void>();\r\n readonly selectedChange = output<boolean>();\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@Component({\r\n selector: 'ard-tabber',\r\n templateUrl: './tabber.component.html',\r\n styleUrl: './tabber.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabberComponent implements AfterContentInit {\r\n public readonly tabs = contentChildren(ArdiumTabComponent, { descendants: true });\r\n\r\n readonly currentTab = signal<ArdiumTabComponent | null>(null);\r\n readonly currentFocusedTab = signal<ArdiumTabComponent | null>(null);\r\n\r\n ngAfterContentInit(): void {\r\n let selectedCmp: ArdiumTabComponent | null = null;\r\n for (const cmp of this.tabs()) {\r\n if (cmp.selected()) {\r\n // ensure only one tab is selected\r\n if (selectedCmp) {\r\n cmp.selected.set(false);\r\n }\r\n\r\n selectedCmp = cmp;\r\n }\r\n\r\n cmp.focusEvent.subscribe(() => {\r\n this.focusEvent.emit(cmp.tabId());\r\n });\r\n cmp.blurEvent.subscribe(() => {\r\n this.blurEvent.emit(cmp.tabId());\r\n });\r\n cmp.selectedChange.subscribe(isSelected => {\r\n if (!isSelected) return;\r\n this.changeTab.emit(cmp.tabId());\r\n });\r\n }\r\n\r\n if (!selectedCmp) {\r\n selectedCmp = this.tabs()[0] ?? null;\r\n\r\n if (selectedCmp) {\r\n selectedCmp.selected.set(true);\r\n }\r\n }\r\n\r\n this.currentTab.set(selectedCmp);\r\n }\r\n\r\n onTabClick(tab: ArdiumTabComponent): void {\r\n const curr = this.currentTab();\r\n if (curr) {\r\n curr.selected.set(false);\r\n curr.selectedChange.emit(false);\r\n }\r\n this.currentTab.set(tab);\r\n\r\n tab.selected.set(true);\r\n tab.selectedChange.emit(true);\r\n }\r\n onTabFocus(tab: ArdiumTabComponent): void {\r\n tab.focusEvent.emit();\r\n tab.focused.set(true);\r\n\r\n this.currentFocusedTab.set(tab);\r\n }\r\n onTabBlur(tab: ArdiumTabComponent): void {\r\n tab.blurEvent.emit();\r\n tab.focused.set(false);\r\n\r\n this.currentFocusedTab.set(null);\r\n }\r\n\r\n readonly focusEvent = output<string>({ alias: 'focus' });\r\n readonly blurEvent = output<string>({ alias: 'blur' });\r\n readonly changeTab = output<string>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! tab container settings\r\n readonly stretchTabs = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformTabWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly tabAlignment = input<OneAxisAlignment>(OneAxisAlignment.Left);\r\n\r\n readonly tabContainerClasses = computed(() =>\r\n [\r\n this.uniformTabWidths() && !this.stretchTabs() ? 'ard-uniform-tab-widths' : '',\r\n this.stretchTabs() ? 'ard-stretch-tabs' : '',\r\n this.stretchTabs() ? '' : `ard-tab-align-${this.tabAlignment()}`,\r\n ].join(' ')\r\n );\r\n\r\n //! other\r\n readonly tabIndex = input<number | string>(0);\r\n}\r\n","<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumTabberComponent } from './tabber.component';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTabberComponent, ArdiumTabComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumTabberComponent, ArdiumTabComponent],\r\n})\r\nexport class ArdiumTabberModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\n\r\n@Component({\r\n selector: 'ard-card-header',\r\n templateUrl: 'card-header.template.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardHeaderComponent {}\r\n\r\n@Directive({ selector: 'ard-card-subtitle, [ard-card-subtitle]' })\r\nexport class ArdiumCardSubtitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-title, [ard-card-title]' })\r\nexport class ArdiumCardTitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-avatar]' })\r\nexport class ArdiumCardAvatarDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-content, [ard-card-content]' })\r\nexport class ArdiumCardContentDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-image]' })\r\nexport class ArdiumCardImageDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-action-buttons, [ard-card-action-buttons]' })\r\nexport class ArdiumCardActionButtonsDirective {\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Right);\r\n\r\n readonly alignClass = computed(() => `ard-card-action-buttons ard-align-${this.align()}`);\r\n\r\n @HostBinding('class')\r\n get _alignClassHostAttribute() {\r\n return this.alignClass();\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-footer, [ard-card-footer]' })\r\nexport class ArdiumCardFooterDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\r\n }\r\n}\r\n","<ng-content select=\"[ard-card-avatar]\" />\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"\r\n />\r\n</div>\r\n<ng-content />\r\n","export const CardAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\n\nexport const CardVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\n@Directive({ selector: '[ard-card]' })\r\nexport class ArdiumCardDirective {\r\n //! appearance\r\n readonly appearance = input<CardAppearance>(CardAppearance.Raised);\r\n readonly variant = input<CardVariant>(CardVariant.Rounded);\r\n\r\n readonly ngClasses = computed(() =>\r\n ['ard-card', `ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`].join(' ')\r\n );\r\n\r\n @HostBinding('class')\r\n get _ngClassesHostAttribute() {\r\n return this.ngClasses();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ard-card',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n ArdiumCardActionButtonsDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardFooterDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardImageDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardTitleDirective,\n} from './card.children';\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\n\n@NgModule({\n declarations: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n imports: [CommonModule],\n exports: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n})\nexport class ArdiumCardModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-divider',\r\n template: '',\r\n styleUrls: ['./divider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDividerComponent {\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('class.ard-divider-vertical')\r\n get _verticalHostAttribute() {\r\n return this.vertical();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDividerComponent } from './divider.component';\n\n@NgModule({\n declarations: [ArdiumDividerComponent],\n imports: [CommonModule],\n exports: [ArdiumDividerComponent],\n})\nexport class ArdiumDividerModule {}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumModalComponent {\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n //! appearance\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-variant-${this.variant()}`, `ard-appearance-${this.appearance()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! heading\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n private readonly open = signal<boolean>(false);\r\n @Input({ alias: 'open' })\r\n set _open(v: any) {\r\n this.open.set(coerceBooleanProperty(v));\r\n if (this.open()) this._openOverlay();\r\n else this._destroyOverlay();\r\n }\r\n\r\n readonly openChange = output<boolean>();\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! overlay handling\r\n readonly modalTemplate = viewChild('modalTemplate', { read: TemplateRef });\r\n\r\n private _modalOverlay?: OverlayRef;\r\n\r\n private _openOverlay(): void {\r\n const strategy = this.overlay.position().global();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this._modalOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.modalTemplate()!, this.viewContainerRef);\r\n this._modalOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this._modalOverlay) return;\r\n\r\n this.openChange.emit(false);\r\n this.closeEvent.emit();\r\n this._modalOverlay.dispose();\r\n delete this._modalOverlay;\r\n }\r\n\r\n //! events\r\n onBackdropClick(): void {\r\n if (this.disableBackdropClose()) return;\r\n this._destroyOverlay();\r\n }\r\n onCloseButtonClick(): void {\r\n this._destroyOverlay();\r\n }\r\n}\r\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div\r\n class=\"ard-modal\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"ard-modal ard-modal-backdrop\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n cdkTrapFocus\r\n [class.ard-modal-no-heading-text]=\"!heading\"\r\n [class.ard-modal-has-close-button]=\"!this.noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{ heading() }}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button\r\n class=\"ard-modal-close-button\"\r\n color=\"none\"\r\n [compact]=\"compact()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <ard-icon>close</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumModalComponent } from './modal.component';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumIconModule } from '../icon/icon.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [ArdiumModalComponent],\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\n exports: [ArdiumModalComponent],\n})\nexport class ArdiumModalModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { DialogButtonsContext } from './dialog.types';\n\n@Directive({ selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\nexport class ArdDialogButtonsTemplateDirective {\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\r\nimport { DialogButtonsContext, DialogResult } from './dialog.types';\r\n\r\n@Component({\r\n selector: 'ard-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDialogComponent {\r\n //! appearance\r\n //all handled by modal component\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! heading\r\n //all handled by modal component\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n //all handled by modal component\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n //all handled by modal component\r\n readonly open = model<boolean>(false);\r\n\r\n readonly closeEvent = output<DialogResult>({ alias: 'close' });\r\n readonly confirmEvent = output<void>({ alias: 'confirm' });\r\n readonly rejectEvent = output<void>({ alias: 'reject' });\r\n\r\n //! button settings\r\n readonly confirmButtonText = input<string>('Confirm');\r\n readonly confirmButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly confirmButtonAppearance = input<ButtonAppearance>(ButtonAppearance.RaisedStrong);\r\n readonly rejectButtonText = input<string>('Cancel');\r\n readonly rejectButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly rejectButtonAppearance = input<ButtonAppearance>(ButtonAppearance.Transparent);\r\n\r\n readonly noRejectButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly canConfirm = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n onConfirmClick() {\r\n if (!this.canConfirm()) return;\r\n\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('confirm');\r\n this.confirmEvent.emit();\r\n }, 0);\r\n }\r\n onRejectClick() {\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('reject');\r\n this.rejectEvent.emit();\r\n }, 0);\r\n }\r\n onModalClose() {\r\n this.closeEvent.emit('close');\r\n }\r\n\r\n //! templates\r\n readonly buttonsTemplate = contentChild(ArdDialogButtonsTemplateDirective);\r\n\r\n readonly getButtonsContext = computed<DialogButtonsContext>(() => {\r\n return {\r\n confirmButton: {\r\n text: this.confirmButtonText(),\r\n color: this.confirmButtonColor(),\r\n appearance: this.confirmButtonAppearance(),\r\n },\r\n rejectButton: {\r\n enabled: !this.noRejectButton(),\r\n text: this.rejectButtonText(),\r\n color: this.rejectButtonColor(),\r\n appearance: this.rejectButtonAppearance(),\r\n },\r\n canConfirm: this.canConfirm(),\r\n onConfirm: () => this.onConfirmClick(),\r\n onReject: () => this.onRejectClick(),\r\n dialogAppearance: this.appearance(),\r\n dialogVariant: this.variant(),\r\n dialogCompact: this.compact(),\r\n };\r\n });\r\n}\r\n","<ard-modal\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [heading]=\"heading()\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [(open)]=\"open\"\r\n (close)=\"onModalClose()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n <ng-template\r\n #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {\r\n <ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>\r\n }\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate()?.template ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</ard-modal>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDialogComponent } from './dialog.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumModalModule } from '../modal/modal.module';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\n\n@NgModule({\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n})\nexport class ArdiumDialogModule {}\n","import { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\nexport const DialogResult = {\r\n Confirm: 'confirm',\r\n Reject: 'reject',\r\n Close: 'close',\r\n} as const;\r\nexport type DialogResult = (typeof DialogResult)[keyof typeof DialogResult];\r\n\r\nexport interface DialogButtonsContext {\r\n confirmButton: {\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n rejectButton: {\r\n enabled: boolean;\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n canConfirm: boolean;\r\n onConfirm: () => void;\r\n onReject: () => void;\r\n dialogAppearance: PanelAppearance;\r\n dialogVariant: PanelVariant;\r\n dialogCompact: boolean;\r\n}\r\n","interface IQueue {\n readonly length: number;\n}\n\nexport class Queue<T = unknown> implements IQueue {\n private head?: QueueItem<T>;\n private tail?: QueueItem<T>;\n\n push(item: T): void {\n if (!this.tail) return this.pushFront(item);\n this.tail!.next = new QueueItem(item);\n this.tail = this.tail!.next!;\n }\n pushFront(item: T): void {\n this.head = new QueueItem(item, this.head);\n if (!this.tail) this.tail = this.head;\n }\n pop(): T | undefined {\n const head = this.head;\n if (!head) return;\n //replace head with the next item\n this.head = head.next;\n //delete the tail if there are no next items\n if (!this.head) this.tail = undefined;\n\n return head.value;\n }\n peek(): T | undefined {\n return this.head?.value;\n }\n clear(): void {\n this.head = undefined;\n this.tail = undefined;\n }\n get length(): number {\n let length = 0;\n let currentNode = this.head;\n while (currentNode) {\n length++;\n currentNode = currentNode.next;\n }\n return length;\n }\n isEmpty(): boolean {\n return !this.head;\n }\n toArray(): T[] {\n const array: T[] = [];\n let currentNode = this.head;\n while (currentNode) {\n array.push(currentNode.value);\n currentNode = currentNode.next;\n }\n return array;\n }\n}\n\nexport class QueueItem<T> {\n constructor(\n public value: T,\n public next?: QueueItem<T>\n ) {}\n}\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\r\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\r\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\r\n\r\nexport class _ArdSnackbarRefInternal<T> {\r\n constructor(\r\n public component: ComponentType<T>,\r\n public options: Required<ArdSnackbarOptions>,\r\n dismiss: (withAction?: boolean) => void\r\n ) {\r\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\r\n }\r\n\r\n readonly publicRef!: ArdSnackbarRef<T>;\r\n\r\n timeout!: any;\r\n overlay!: OverlayRef;\r\n\r\n private readonly _onOpen = new Subject<void>();\r\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\r\n\r\n markAsOpened() {\r\n this._onOpen.next();\r\n this._onOpen.complete();\r\n }\r\n markAsStartingToClose() {\r\n this._onCloseStart.next(true);\r\n this._onCloseStart.complete();\r\n }\r\n}\r\nexport class ArdSnackbarRef<T = unknown> {\r\n constructor(\r\n private readonly dismiss: (withAction?: boolean) => void,\r\n private readonly _onOpen: Subject<void>,\r\n private readonly _onCloseStart: BehaviorSubject<boolean>\r\n ) {}\r\n\r\n private readonly _onClose = new Subject<boolean>();\r\n public readonly onOpen = this._onOpen.asObservable();\r\n public readonly onClose = this._onClose.asObservable();\r\n public readonly onCloseStart = this._onCloseStart.asObservable();\r\n\r\n public instance!: T;\r\n\r\n close(withAction = false): void {\r\n if (this.isClosed) return;\r\n this.dismiss(withAction);\r\n this.markAsClosed();\r\n }\r\n\r\n markAsClosed(withAction = false): void {\r\n if (this.isClosed) return;\r\n this._onClose.next(withAction);\r\n this._onClose.complete();\r\n this._isClosed = true;\r\n }\r\n\r\n private _isClosed = false;\r\n public get isClosed(): boolean {\r\n return this._isClosed;\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ArdSnackbarAlignment = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\r\n\r\nexport const ArdSnackbarOriginRelation = {\r\n Inside: 'inside',\r\n Outside: 'outside',\r\n} as const;\r\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\r\n\r\nexport const ArdSnackbarQueueHandling = {\r\n Default: 'default',\r\n Skip: 'skip',\r\n Overwrite: 'overwrite',\r\n} as const;\r\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\r\n\r\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\r\n\r\nexport const ArdSnackbarType = {\r\n None: 'none',\r\n Danger: 'danger',\r\n Warning: 'warn',\r\n Success: 'success',\r\n Info: 'info',\r\n} as const;\r\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\r\n\r\nexport interface ArdSnackbarData {\r\n message: string;\r\n action?: string;\r\n}\r\n\r\nexport interface ArdSnackbarOptions {\r\n data?: ArdSnackbarData;\r\n placement?: {\r\n align?: ArdSnackbarAlignment;\r\n origin?: ArdSnackbarOrigin;\r\n originRelation?: ArdSnackbarOriginRelation;\r\n };\r\n duration?: number;\r\n color?: ComponentColor;\r\n type?: ArdSnackbarType;\r\n queueHandling?: ArdSnackbarQueueHandling;\r\n panelClass?: string | string[];\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\r\nimport { ArdSnackbarType } from './snackbar.types';\r\n\r\n@Component({\r\n selector: 'ard-simple-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styles: ``,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\r\n standalone: true,\r\n})\r\nexport class _ArdSimpleSnackbarComponent {\r\n public readonly snackbarRef = inject(ArdSnackbarRef);\r\n public readonly data = inject(ARD_SNACKBAR_DATA);\r\n public readonly color = inject(ARD_SNACKBAR_COLOR);\r\n public readonly type = inject(ARD_SNACKBAR_TYPE);\r\n\r\n public readonly typeIcon = this._getTypeIcon();\r\n\r\n closeWithAction(): void {\r\n this.snackbarRef.close(true);\r\n }\r\n\r\n get hasAction(): boolean {\r\n return isDefined(this.data.action);\r\n }\r\n\r\n private _getTypeIcon(): string | null {\r\n switch (this.type) {\r\n case ArdSnackbarType.Danger:\r\n return 'error';\r\n case ArdSnackbarType.Warning:\r\n return 'warning';\r\n case ArdSnackbarType.Success:\r\n return 'check_circle';\r\n case ArdSnackbarType.Info:\r\n return 'info';\r\n }\r\n return null;\r\n }\r\n\r\n get colorClass(): string {\r\n return `ard-color-${this.color}`;\r\n }\r\n}\r\n","<div\r\n class=\"ard-snackbar\"\r\n [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\"\r\n [class]=\"colorClass\"\r\n>\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button\r\n class=\"ard-snackbar-action\"\r\n appearance=\"transparent\"\r\n lightColoring\r\n [color]=\"color\"\r\n (click)=\"closeWithAction()\"\r\n >{{ data.action }}</ard-button\r\n >\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\nimport { ArdSnackbarAlignment, ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling } from './snackbar.types';\n\nexport const _DEFAULT_OPTIONS_STATIC = {\n placement: {\n align: ArdSnackbarAlignment.BottomCenter,\n origin: document.body,\n originRelation: ArdSnackbarOriginRelation.Inside,\n },\n duration: 5000,\n queueHandling: ArdSnackbarQueueHandling.Default,\n panelClass: [],\n data: { message: null },\n} as unknown as Required<ArdSnackbarOptions>;\n\nexport const ARD_SNACKBAR_DEFAULT_OPTIONS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-default-options', {\n factory: () => ({ ..._DEFAULT_OPTIONS_STATIC }),\n});\n\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\n factory: () => 150,\n});\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { isArray, isDefined } from 'simple-bool';\r\nimport { Queue } from '../_internal/queue';\r\nimport {\r\n ARD_SNACKBAR_COLOR,\r\n ARD_SNACKBAR_DATA,\r\n ARD_SNACKBAR_TYPE,\r\n ArdSnackbarRef,\r\n _ArdSnackbarRefInternal,\r\n} from './snackbar-ref';\r\nimport { _ArdSimpleSnackbarComponent } from './snackbar.component';\r\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULT_OPTIONS, _DEFAULT_OPTIONS_STATIC } from './snackbar.token';\r\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ArdiumSnackbarService implements OnDestroy {\r\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\r\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\r\n\r\n private readonly _defaultOptionsStatic = _DEFAULT_OPTIONS_STATIC;\r\n private readonly _defaultOptions = inject(ARD_SNACKBAR_DEFAULT_OPTIONS);\r\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n\r\n //! public methods for creating new snackbars\r\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbarComponent> {\r\n options.data = {\r\n message,\r\n action: action ?? options.data?.action,\r\n };\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\r\n mergedOptions.data.message = message;\r\n mergedOptions.data.action = action;\r\n }\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbarComponent, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(options.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n //! handling adding new snackbars to queue\r\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\r\n const isNotOpen = !isDefined(this._openedSnackbar);\r\n if (handling === ArdSnackbarQueueHandling.Default) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n this._snackbarQueue.push(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n }\r\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\r\n this._snackbarQueue.pushFront(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n } else {\r\n this.dismissCurrent(false);\r\n //it is opened automatically within the dismiss method\r\n }\r\n }\r\n }\r\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\r\n // merge placement\r\n if (options.placement) {\r\n options.placement = {\r\n ...this._defaultOptionsStatic.placement,\r\n ...this._defaultOptions.placement,\r\n ...options.placement,\r\n };\r\n } else {\r\n options.placement = this._defaultOptions.placement ?? this._defaultOptionsStatic.placement;\r\n }\r\n // merge data\r\n if (options.data) {\r\n options.data = {\r\n ...this._defaultOptionsStatic.data,\r\n ...this._defaultOptions.data,\r\n ...options.data,\r\n };\r\n } else {\r\n options.data = this._defaultOptions.data ?? this._defaultOptionsStatic.data;\r\n }\r\n return {\r\n ...this._defaultOptionsStatic,\r\n ...this._defaultOptions,\r\n ...options,\r\n } as Required<ArdSnackbarOptions>;\r\n }\r\n //! opening snackbars\r\n private _openNext() {\r\n const sb = this._snackbarQueue.pop();\r\n if (!sb) return;\r\n this._openedSnackbar = sb;\r\n const overlay = this._createOverlay(sb.options);\r\n sb.overlay = overlay;\r\n\r\n const injector = this._createInjector(sb.options, sb.publicRef);\r\n const portal = new ComponentPortal(sb.component, undefined, injector);\r\n const componentRef = overlay.attach(portal);\r\n sb.publicRef.instance = componentRef.instance;\r\n sb.markAsOpened();\r\n\r\n this._openedSnackbar = sb;\r\n\r\n const duration =\r\n sb.options.duration === Infinity || sb.options.duration <= 0\r\n ? 2_147_483_647 //maximum duration for setTimeout\r\n : sb.options.duration;\r\n\r\n sb.timeout = setTimeout(() => {\r\n this.dismissCurrent(false);\r\n }, duration);\r\n }\r\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\r\n let x!: 'start' | 'center' | 'end';\r\n let originY!: 'top' | 'center' | 'bottom';\r\n let overlayY!: 'top' | 'center' | 'bottom';\r\n let overlayY2!: 'top' | 'center' | 'bottom';\r\n\r\n //horizontal alignments\r\n if (options.placement?.align?.match('left')) {\r\n x = 'start';\r\n } else if (options.placement?.align?.match('right')) {\r\n x = 'end';\r\n } else {\r\n x = 'center';\r\n }\r\n // vertical alignments\r\n if (options.placement?.align?.match('bottom')) {\r\n originY = 'bottom';\r\n overlayY = 'bottom';\r\n overlayY2 = 'top';\r\n } else {\r\n originY = 'top';\r\n overlayY = 'top';\r\n overlayY2 = 'bottom';\r\n }\r\n\r\n let origin = options.placement!.origin;\r\n if (!origin) {\r\n console.error(\r\n new Error(`ARD-NF7021: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`)\r\n );\r\n origin = document.body;\r\n }\r\n\r\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions([\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: isInside ? overlayY : overlayY2,\r\n },\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: !isInside ? overlayY : overlayY2,\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n hasBackdrop: false,\r\n panelClass: options.panelClass,\r\n });\r\n\r\n return this._overlay.create(config);\r\n }\r\n\r\n //! public actions\r\n dismissCurrent(withAction?: boolean) {\r\n const sb = this._openedSnackbar;\r\n if (!sb) {\r\n console.warn(new Error(`ARD-WA7020: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\r\n return;\r\n }\r\n\r\n sb.markAsStartingToClose();\r\n\r\n setTimeout(() => {\r\n sb.overlay?.dispose();\r\n this._openedSnackbar = undefined;\r\n sb.publicRef.markAsClosed(withAction);\r\n clearTimeout(sb.timeout);\r\n\r\n this._openNext();\r\n }, this._animationLength);\r\n }\r\n\r\n //! public queue methods\r\n getQueue(): ArdSnackbarRef<unknown>[] {\r\n return this._snackbarQueue.toArray().map(v => v.publicRef);\r\n }\r\n clearQueue(): void {\r\n this._snackbarQueue.clear();\r\n }\r\n\r\n /**\r\n * @deprecated Internal implementation detail, do not use directly.\r\n */\r\n ngOnDestroy(): void {\r\n this._snackbarQueue.clear();\r\n this.dismissCurrent(false);\r\n }\r\n\r\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\r\n return Injector.create({\r\n parent: this._injector,\r\n providers: [\r\n { provide: ArdSnackbarRef, useValue: snackbarRef },\r\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\r\n {\r\n provide: ARD_SNACKBAR_TYPE,\r\n useValue: options.type ?? ArdSnackbarType.None,\r\n },\r\n {\r\n provide: ARD_SNACKBAR_COLOR,\r\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of Ardium UI\r\n */\r\nimport 'first-last';\r\n\r\n//! component group 0 - inputs and selects\r\nexport * from './lib/select'; // 000\r\nexport * from './lib/option'; // 001\r\nexport * from './lib/inputs/simple-input'; // 002\r\nexport * from './lib/inputs/input'; // 003\r\nexport * from './lib/inputs/digit-input'; // 004\r\nexport * from './lib/inputs/password-input'; // 005\r\n// export * from './lib/inputs/color-input'; // 006\r\nexport * from './lib/inputs/number-input'; // 007\r\nexport * from './lib/file-inputs/file-drop-area'; // 010\r\nexport * from './lib/file-inputs/file-input'; // 011\r\nexport * from './lib/inputs/hex-input'; // 016\r\n\r\n//! component group 1 - small forms-related components\r\nexport * from './lib/radio'; // 103\r\nexport * from './lib/segment'; // 104\r\nexport * from './lib/slider'; // 105 & 106\r\nexport * from './lib/star/star-button'; // 107\r\nexport * from './lib/star/star-input'; // 108\r\nexport * from './lib/statebox'; // 109\r\nexport * from './lib/slide-toggle';\r\nexport * from './lib/checkbox';\r\nexport * from './lib/buttons/general-button.types';\r\nexport * from './lib/buttons/button';\r\nexport * from './lib/buttons/fab';\r\nexport * from './lib/buttons/icon-button';\r\nexport * from './lib/chip';\r\n\r\n//! component group 2 - pickers\r\n// export * from './lib/calendar'; // 200 & (future: 201)\r\n// export * from './lib/color/color-picker'; // 202\r\n\r\n//! component group 3 - lists\r\nexport * from './lib/checkbox-list'; // 300\r\n\r\n//! component group 4 - state display components\r\nexport * from './lib/spinner'; // 400\r\nexport * from './lib/progress-bar'; // 401\r\nexport * from './lib/progress-circle'; // 402\r\nexport * from './lib/badge'; // 403\r\n\r\n//! component group 5 - data display components\r\nexport * from './lib/form-field-frame'; // 500\r\nexport * from './lib/dropdown-panel'; // 501\r\nexport * from './lib/color/color-display'; // 502\r\nexport * from './lib/kbd'; // 503\r\nexport * from './lib/kbd-shortcut'; // 504\r\nexport * from './lib/table'; // 505\r\nexport * from './lib/table-pagination'; // 506\r\nexport * from './lib/table-from-csv'; // 507\r\nexport * from './lib/star'; // 508\r\nexport * from './lib/star/star-display'; // 509\r\n\r\n//! component group 6 - layout components\r\nexport * from './lib/tabber'; // 600\r\nexport * from './lib/card';\r\nexport * from './lib/divider';\r\n\r\n//! component group 7 - popups\r\nexport * from './lib/modal'; // 700\r\nexport * from './lib/dialog'; // 701\r\nexport * from './lib/snackbar'; // 702\r\n\r\n//! component group 9 - other\r\nexport * from './lib/icon'; // 900\r\n\r\n//! types\r\nexport * from './lib/types/alignment.types';\r\nexport * from './lib/types/colors.types';\r\nexport * from './lib/types/theming.types';\r\nexport * from './lib/types/utility.types';\r\nexport * from './lib/types/item-storage.types';\r\n\r\n//! miscellaneous\r\nexport { searchInString, searchFunctions as ArdSearchFunction } from './lib/search-functions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2._ClearButtonComponent","i2.ArdiumFormFieldFrameComponent","i3.ArdiumDropdownPanelComponent","i4.ArdiumDeletableChipComponent","i5","i6._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1","i2","i4._ClearButtonComponent","i5.ArdiumDropdownPanelComponent","i6","i1.ArdiumIconPipe","i3.ArdiumIconComponent","i3.ArdiumButtonComponent","i2.ArdiumButtonComponent","i3._ClearButtonComponent","i4.ArdiumIconComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i2.ArdiumCheckboxComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i2.ArdiumSelectComponent","i3.ArdiumIconButtonComponent","i3.ArdiumTablePaginationComponent","i1.ArdiumTableComponent","i2.ArdiumIconButtonComponent","i4","i3.ArdiumModalComponent","i1.ArdiumButtonComponent","i2.ArdiumIconComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ardium-ui-ui.mjs","sources":["../../../projects/ui/src/lib/types/alignment.types.ts","../../../projects/ui/src/lib/types/colors.types.ts","../../../projects/ui/src/lib/types/theming.types.ts","../../../projects/ui/src/lib/_internal/disablable-component.ts","../../../projects/ui/src/lib/chip/chip.component.ts","../../../projects/ui/src/lib/chip/chip.component.html","../../../projects/ui/src/lib/_internal/focusable-component.ts","../../../projects/ui/src/lib/_internal/ngmodel-component.ts","../../../projects/ui/src/lib/_internal/boolean-component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.ts","../../../projects/ui/src/lib/chip/selectable-chip/selectable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.ts","../../../projects/ui/src/lib/_internal/clear-button/clear-button.component.html","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.ts","../../../projects/ui/src/lib/chip/deletable-chip/deletable-chip.component.html","../../../projects/ui/src/lib/_internal/clear-button/clear-button.module.ts","../../../projects/ui/src/lib/chip/chip.module.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.types.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.ts","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.component.html","../../../projects/ui/src/lib/dropdown-panel/dropdown-panel.module.ts","../../../projects/ui/src/lib/_internal/item-storages/dropdown-item-storage.ts","../../../projects/ui/src/lib/option/option.component.ts","../../../projects/ui/src/lib/search-functions.ts","../../../projects/ui/src/lib/types/item-storage.types.ts","../../../projects/ui/src/lib/select/select.directive.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.directives.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.ts","../../../projects/ui/src/lib/form-field-frame/form-field-frame.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/form-field-frame/form-field-frame.module.ts","../../../projects/ui/src/lib/select/select.module.ts","../../../projects/ui/src/lib/option/option.module.ts","../../../projects/ui/src/lib/inputs/input-transformers.ts","../../../projects/ui/src/lib/inputs/input-utils.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.directives.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.ts","../../../projects/ui/src/lib/inputs/simple-input/simple-input.component.html","../../../projects/ui/src/lib/inputs/simple-input/simple-input.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simplest-item-storage.ts","../../../projects/ui/src/lib/inputs/input/input.directives.ts","../../../projects/ui/src/lib/inputs/input/input.component.ts","../../../projects/ui/src/lib/inputs/input/input.component.html","../../../projects/ui/src/lib/inputs/input/input.module.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.types.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.utils.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.model.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.ts","../../../projects/ui/src/lib/inputs/digit-input/digit-input.component.html","../../../projects/ui/src/lib/inputs/digit-input/digit-input.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.directives.ts","../../../projects/ui/src/lib/icon/icon.pipe.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/inputs/password-input/password-input.component.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.component.html","../../../projects/ui/src/lib/icon/icon.module.ts","../../../projects/ui/src/lib/inputs/password-input/password-input.module.ts","../../../projects/ui/src/lib/types/button.types.ts","../../../projects/ui/src/lib/buttons/general-button.types.ts","../../../projects/ui/src/lib/buttons/_button-base.ts","../../../projects/ui/src/lib/buttons/button/button.component.ts","../../../projects/ui/src/lib/buttons/button/button.component.html","../../../projects/ui/src/lib/buttons/button/button.module.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.directives.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.ts","../../../projects/ui/src/lib/inputs/number-input/number-input.component.html","../../../projects/ui/src/lib/inputs/number-input/number-input.module.ts","../../../projects/ui/src/lib/file-inputs/file-input-base.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.directives.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.ts","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.component.html","../../../projects/ui/src/lib/file-inputs/file-drop-area/file-drop-area.module.ts","../../../projects/ui/src/lib/inputs/color-input/color-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.directives.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.ts","../../../projects/ui/src/lib/file-inputs/file-input/file-input.component.html","../../../projects/ui/src/lib/file-inputs/file-input/file-input.module.ts","../../../projects/ui/src/lib/inputs/input-types.ts","../../../projects/ui/src/lib/inputs/hex-input.model.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.directives.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.ts","../../../projects/ui/src/lib/inputs/hex-input/hex-input.component.html","../../../projects/ui/src/lib/inputs/hex-input/hex-input.module.ts","../../../projects/ui/src/lib/radio/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio/radio.component.html","../../../projects/ui/src/lib/radio/radio-group.component.ts","../../../projects/ui/src/lib/radio/radio.module.ts","../../../projects/ui/src/lib/_internal/item-storages/simple-item-storage.ts","../../../projects/ui/src/lib/_internal/selectable-list-component.ts","../../../projects/ui/src/lib/segment/segment.directives.ts","../../../projects/ui/src/lib/segment/segment.types.ts","../../../projects/ui/src/lib/segment/segment.component.ts","../../../projects/ui/src/lib/segment/segment.component.html","../../../projects/ui/src/lib/segment/segment.module.ts","../../../projects/ui/src/lib/slider/slider.directive.ts","../../../projects/ui/src/lib/slider/slider.types.ts","../../../projects/ui/src/lib/slider/abstract-slider.ts","../../../projects/ui/src/lib/slider/slider.component.ts","../../../projects/ui/src/lib/slider/slider.component.html","../../../projects/ui/src/lib/slider/slider.module.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.ts","../../../projects/ui/src/lib/slider/range-slider/range-slider.component.html","../../../projects/ui/src/lib/slider/range-slider/range-slider.module.ts","../../../projects/ui/src/lib/types/utility.types.ts","../../../projects/ui/src/lib/star/star.types.ts","../../../projects/ui/src/lib/star/star.component.ts","../../../projects/ui/src/lib/star/star.component.html","../../../projects/ui/src/lib/star/star-button/star-button.component.ts","../../../projects/ui/src/lib/star/star-button/star-button.component.html","../../../projects/ui/src/lib/star/star.module.ts","../../../projects/ui/src/lib/star/star-button/star-button.module.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.ts","../../../projects/ui/src/lib/star/star-input/star-input.component.html","../../../projects/ui/src/lib/star/star-input/star-input.module.ts","../../../projects/ui/src/lib/statebox/statebox.component.ts","../../../projects/ui/src/lib/statebox/statebox.component.html","../../../projects/ui/src/lib/statebox/statebox.module.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.types.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/ui/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/ui/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/ui/src/lib/checkbox/checkbox.types.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/checkbox/checkbox.module.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.ts","../../../projects/ui/src/lib/buttons/fab/fab.component.html","../../../projects/ui/src/lib/buttons/fab/fab.module.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.ts","../../../projects/ui/src/lib/buttons/icon-button/icon-button.component.html","../../../projects/ui/src/lib/buttons/icon-button/icon-button.module.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.types.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.ts","../../../projects/ui/src/lib/checkbox-list/checkbox-list.component.html","../../../projects/ui/src/lib/checkbox-list/checkbox-list.module.ts","../../../projects/ui/src/lib/spinner/spinner.component.ts","../../../projects/ui/src/lib/spinner/spinner.component.html","../../../projects/ui/src/lib/spinner/spinner.module.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.directive.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.types.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.ts","../../../projects/ui/src/lib/progress-bar/progress-bar.component.html","../../../projects/ui/src/lib/progress-bar/progress-bar.module.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.directive.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.types.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.ts","../../../projects/ui/src/lib/progress-circle/progress-circle.component.html","../../../projects/ui/src/lib/progress-circle/progress-circle.module.ts","../../../projects/ui/src/lib/badge/badge.types.ts","../../../projects/ui/src/lib/badge/badge.directive.ts","../../../projects/ui/src/lib/badge/badge.module.ts","../../../projects/ui/src/lib/color/color-display/color-display.types.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.ts","../../../projects/ui/src/lib/color/color-display/color-display.component.html","../../../projects/ui/src/lib/color/color-display/color-display.module.ts","../../../projects/ui/src/lib/kbd/kbd.pipe.ts","../../../projects/ui/src/lib/kbd/kbd.component.ts","../../../projects/ui/src/lib/kbd/kbd.component.html","../../../projects/ui/src/lib/kbd/kbd.directive.ts","../../../projects/ui/src/lib/kbd/kbd.module.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.ts","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.component.html","../../../projects/ui/src/lib/kbd-shortcut/kbd-shortcut.module.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.types.ts","../../../projects/ui/src/lib/table/table.types.ts","../../../projects/ui/src/lib/table/utils.ts","../../../projects/ui/src/lib/table/table-item-storage.ts","../../../projects/ui/src/lib/table/table.directives.ts","../../../projects/ui/src/lib/_internal/models/pagination.model.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.ts","../../../projects/ui/src/lib/table-pagination/table-pagination.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/table-pagination/table-pagination.module.ts","../../../projects/ui/src/lib/table/table.module.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.ts","../../../projects/ui/src/lib/table-from-csv/table-from-csv.component.html","../../../projects/ui/src/lib/table-from-csv/table-from-csv.module.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.ts","../../../projects/ui/src/lib/star/star-display/star-display.component.html","../../../projects/ui/src/lib/star/star-display/star-display.module.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.ts","../../../projects/ui/src/lib/tabber/tab/tab.component.html","../../../projects/ui/src/lib/tabber/tabber.component.ts","../../../projects/ui/src/lib/tabber/tabber.component.html","../../../projects/ui/src/lib/tabber/tabber.module.ts","../../../projects/ui/src/lib/card/card.children.ts","../../../projects/ui/src/lib/card/card-header.template.html","../../../projects/ui/src/lib/card/card.types.ts","../../../projects/ui/src/lib/card/card.component.ts","../../../projects/ui/src/lib/card/card.module.ts","../../../projects/ui/src/lib/divider/divider.component.ts","../../../projects/ui/src/lib/divider/divider.module.ts","../../../projects/ui/src/lib/modal/modal.component.ts","../../../projects/ui/src/lib/modal/modal.component.html","../../../projects/ui/src/lib/modal/modal.module.ts","../../../projects/ui/src/lib/dialog/dialog.directives.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/dialog/dialog.module.ts","../../../projects/ui/src/lib/dialog/dialog.types.ts","../../../projects/ui/src/lib/_internal/queue.ts","../../../projects/ui/src/lib/snackbar/snackbar-ref.ts","../../../projects/ui/src/lib/snackbar/snackbar.types.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.ts","../../../projects/ui/src/lib/snackbar/snackbar.component.html","../../../projects/ui/src/lib/snackbar/snackbar.token.ts","../../../projects/ui/src/lib/snackbar/snackbar.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/ardium-ui-ui.ts"],"sourcesContent":["export const SimpleOneAxisAlignment = {\n Left: 'left',\n Right: 'right',\n} as const;\nexport type SimpleOneAxisAlignment = (typeof SimpleOneAxisAlignment)[keyof typeof SimpleOneAxisAlignment];\n\nexport const OneAxisAlignment = {\n Left: 'left',\n Middle: 'middle',\n Right: 'right',\n} as const;\nexport type OneAxisAlignment = (typeof OneAxisAlignment)[keyof typeof OneAxisAlignment];\n","/**\n * The color of the component.\n *\n * @see {@link ButtonColoringMode} to set what part of the component should be colored.\n */\nexport const ComponentColor = {\n /**\n * The app's standard text color.\n */\n None: 'none',\n /**\n * The app's primary color.\n */\n Primary: 'primary',\n /**\n * The app's secondary color.\n */\n Secondary: 'secondary',\n /**\n * The app's warning color. Usually some shade of yellow.\n */\n Warning: 'warn',\n /**\n * The app's danger color. Usually some shade of red.\n */\n Danger: 'danger',\n /**\n * The app's success color. Usually some shade of green or lime.\n */\n Success: 'success',\n /**\n * The app's info color. Usually some shade of blue or light blue.\n */\n Info: 'info',\n} as const;\nexport type ComponentColor = (typeof ComponentColor)[keyof typeof ComponentColor];\n\nexport const SimpleComponentColor = {\n ...ComponentColor,\n /**\n * The current color set by css.\n */\n CurrentColor: 'currentColor',\n} as const;\nexport type SimpleComponentColor = (typeof SimpleComponentColor)[keyof typeof SimpleComponentColor];\n","//! appearances\nexport const OutlinedAppearance = {\n /**\n * No background with solid border.\n */\n Outlined: 'outlined',\n} as const;\nexport type OutlinedAppearance = (typeof OutlinedAppearance)[keyof typeof OutlinedAppearance];\n\nexport const PanelAppearance = {\n /**\n * Filled with a background color, with slight shadow.\n */\n Raised: 'raised',\n} as const;\nexport type PanelAppearance = (typeof PanelAppearance)[keyof typeof PanelAppearance];\n\nexport const FormElementAppearance = {\n ...OutlinedAppearance,\n /**\n * No background and no border. Useful for when trying to create a component that uses another component inside its borders.\n */\n Transparent: 'transparent',\n /**\n * Slighthly darker/lighter background with rounded but transparent border.\n */\n Filled: 'filled',\n} as const;\nexport type FormElementAppearance = (typeof FormElementAppearance)[keyof typeof FormElementAppearance];\n\nexport const DecorationElementAppearance = {\n Outlined: 'outlined',\n OutlinedStrong: 'outlined-strong',\n Filled: 'filled',\n} as const;\nexport type DecorationElementAppearance = (typeof DecorationElementAppearance)[keyof typeof DecorationElementAppearance];\n\n//! variants\nexport const PanelVariant = {\n /**\n * Slightly rounded corners.\n */\n Rounded: 'rounded',\n /**\n * Sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type PanelVariant = (typeof PanelVariant)[keyof typeof PanelVariant];\n\nexport const FormElementVariant = {\n ...PanelVariant,\n /**\n * Fully rounded corners - pill shaped.\n */\n Pill: 'pill',\n} as const;\nexport type FormElementVariant = (typeof FormElementVariant)[keyof typeof FormElementVariant];\n","import { Directive, HostBinding, Input, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Directive()\r\nexport abstract class _DisablableComponentBase {\r\n //! no value arguments\r\n /**\r\n * Whether the component is read-only. Defines the `readonly` host attribute and `ard-readonly` host class. Coearcible into a boolean.\r\n */\r\n readonly readonly = input<any, boolean>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n /**\r\n * Whether the component is disabled. Defines the `disabled` host attribute and `ard-disabled` host class. Coearcible into a boolean.\r\n */\r\n readonly disabled = signal<boolean>(false);\r\n @Input('disabled')\r\n set _disabled(v: any) {\r\n this.disabled.set(coerceBooleanProperty(v));\r\n }\r\n\r\n @HostBinding('attr.readonly')\r\n @HostBinding('class.ard-readonly')\r\n get _readonlyHostAttribute(): boolean {\r\n return this.readonly();\r\n }\r\n @HostBinding('attr.disabled')\r\n @HostBinding('class.ard-disabled')\r\n get _disabledHostAttribute(): boolean {\r\n return this.disabled();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { _DisablableComponentBase } from './../_internal/disablable-component';\r\n\r\n@Component({\r\n selector: 'ard-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumChipComponent extends _DisablableComponentBase {\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, QueryList, ViewChildren, computed, input, output } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _DisablableComponentBase } from './disablable-component';\r\n\r\n@Directive()\r\nexport abstract class _FocusableComponentBase extends _DisablableComponentBase {\r\n //! make the component focusable programmatically\r\n @ViewChildren('focusableElement')\r\n private readonly _focusableElement!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n /**\r\n * Focuses the correct element in the component.\r\n */\r\n public focus(): void {\r\n this._focusableElement?.first?.nativeElement.focus();\r\n }\r\n /**\r\n * Focuses the first of all available elements in the component.\r\n */\r\n public focusFirst(): void {\r\n this.focus();\r\n }\r\n /**\r\n * Focuses the last of all available elements in the component.\r\n */\r\n public focusLast(): void {\r\n this._focusableElement?.last?.nativeElement.focus();\r\n }\r\n /**\r\n * Blurs all focusable elements in the component.\r\n */\r\n public blur(): void {\r\n this._focusableElement?.forEach(el => el.nativeElement.blur());\r\n }\r\n\r\n //! tabindex\r\n /**\r\n * The component's overall tab index. If the component is disabled, it is always `-1`. Coercible into a number, defaults to `0`.\r\n */\r\n readonly tabIndex = computed(() => (this.disabled() ? -1 : this._tabIndex()));\r\n readonly _tabIndex = input<any, number>(0, { alias: 'tabIndex', transform: v => coerceNumberProperty(v) });\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `focus` events.\r\n */\r\n readonly focusEvent = output<FocusEvent>({ alias: 'focus' });\r\n /**\r\n * The event emitter responsible for firing `blur` events.\r\n */\r\n readonly blurEvent = output<FocusEvent>({ alias: 'blur' });\r\n\r\n //! focus event handlers\r\n /**\r\n * Whether the component is currently focused.\r\n */\r\n public isFocused = false;\r\n\r\n /**\r\n * Function to handle when an element is focused. Sets `isFocused` and fires the `focus` event.\r\n * @param event The focus event to emit.\r\n */\r\n onFocus(event: FocusEvent) {\r\n this.isFocused = true;\r\n this.focusEvent.emit(event);\r\n }\r\n /**\r\n * Function to handle when an element is blurred. Sets `isFocused` and fires the `blur` event.\r\n * @param event The focus event to emit.\r\n */\r\n onBlur(event: FocusEvent) {\r\n this.isFocused = false;\r\n this.blurEvent.emit(event);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { _FocusableComponentBase } from './focusable-component';\r\n\r\n/**\r\n * Common code for components, which implement the ControlValueAccessor.\r\n *\r\n * **Warning**: `writeValue` function should be implemented on the child component!\r\n */\r\n@Directive()\r\nexport abstract class _NgModelComponentBase extends _FocusableComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n protected _onChangeRegistered!: (_: any) => void;\r\n protected _onTouchedRegistered!: () => void;\r\n /**\r\n * Registers a function to handle touched state. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouchedRegistered = fn;\r\n }\r\n /**\r\n * Registers a function to handle value change. Required by ControlValueAccessor.\r\n * @param fn The function to register.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChangeRegistered = fn;\r\n }\r\n /**\r\n * Sets the component's disabled state. Required by ControlValueAccessor.\r\n * @param isDisabled the new disabled state.\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n abstract writeValue(v: any): void; //* abstract\r\n\r\n /**\r\n * Writes the a new value into the component. Required by ControlValueAccessor.\r\n * @abstract\r\n * @param v The new value to write.\r\n */\r\n protected abstract _emitChange(): void; //* abstract\r\n\r\n //! event handlers\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this._onTouchedRegistered?.();\r\n }\r\n}\r\n","import { Directive, HostBinding, Input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n/**\r\n * Common code for components, which only operate on the \"selected\" state.\r\n */\r\n@Directive()\r\nexport abstract class _BooleanComponentBase extends _NgModelComponentBase implements ControlValueAccessor {\r\n //! control value accessor\r\n writeValue(v: any): void {\r\n this._selected = v;\r\n }\r\n //emitter function\r\n /**\r\n * Emits all select-state-related events.\r\n */\r\n protected _emitChange() {\r\n this._onChangeRegistered?.(this.selected());\r\n\r\n if (this.selected()) this.selectEvent.emit(null);\r\n else this.unselectEvent.emit(null);\r\n\r\n this.selectedChange.emit(this.selected());\r\n this.changeEvent.emit(this.selected());\r\n }\r\n\r\n //! events\r\n /**\r\n * The event emitter responsible for firing `select` events. Fired when the `selected` state is set to true.\r\n */\r\n readonly selectEvent = output<null>({ alias: 'select' });\r\n /**\r\n * The event emitter responsible for firing `unselect` events. Fired when the `selected` state is set to false.\r\n */\r\n readonly unselectEvent = output<null>({ alias: 'unselect' });\r\n /**\r\n * The event emitter responsible for firing `change` events. Fired when the `selected` state is changed.\r\n */\r\n readonly changeEvent = output<boolean>({ alias: 'change' });\r\n\r\n //! [(selected)] two-way binding\r\n // can be set using a no-value argument\r\n readonly selected = signal<boolean>(false);\r\n /**\r\n * The selection state of the component. Coercible into a boolean.\r\n */\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n @HostBinding('attr.selected')\r\n @HostBinding('class.ard-selected')\r\n get _selectedHostAttribute(): boolean {\r\n return this.selected();\r\n }\r\n /**\r\n * The event emitter responsible for firing `selectedChange` events. Fired when the `selected` state is changed.\r\n */\r\n readonly selectedChange = output<boolean>();\r\n\r\n /**\r\n * Toggles the selected state. Emits all appropriate events.\r\n */\r\n toggleSelected() {\r\n this.selected.update(v => !v);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Sets the state to \"selected\". Emits all appropriate events only if the state changes.\r\n */\r\n select() {\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n /**\r\n * Sets the state to \"unselected\". Emits all appropriate events only if the state changes.\r\n */\r\n unselect() {\r\n this.selected.set(false);\r\n this._emitChange();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _BooleanComponentBase } from './../../_internal/boolean-component';\r\n\r\n@Component({\r\n selector: 'ard-selectable-chip',\r\n templateUrl: './selectable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectableChipComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly DEFAULTS = {\r\n chipTitle: 'Select',\r\n };\r\n\r\n readonly chipTitle = input<string>(this.DEFAULTS.chipTitle);\r\n readonly hideSelectionIcon = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"ard-chip-wrapper ard-chip-selectable\"\r\n [class.ard-chip-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [title]=\"chipTitle()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-chip-selection-icon\"\r\n role=\"img\"\r\n ></div>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { Component } from '@angular/core';\r\nimport { _FocusableComponentBase } from './../focusable-component';\r\n\r\n@Component({\r\n selector: 'ard-clear-button',\r\n templateUrl: './clear-button.component.html',\r\n styleUrls: ['./clear-button.component.scss'],\r\n})\r\nexport class _ClearButtonComponent extends _FocusableComponentBase {}\r\n","<button\r\n #focusableElement\r\n class=\"ard-clear-btn-wrapper\"\r\n type=\"button\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-clear-btn\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n</button>\r\n","import { ChangeDetectionStrategy, Component, computed, forwardRef, input, output, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { DecorationElementAppearance, FormElementVariant } from '../../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-deletable-chip',\r\n templateUrl: './deletable-chip.component.html',\r\n styleUrls: ['../chip.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDeletableChipComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDeletableChipComponent extends _FocusableComponentBase {\r\n readonly DEFAULTS = {\r\n deleteButtonTitle: 'Delete',\r\n };\r\n\r\n readonly deleteButtonTitle = input<string>(this.DEFAULTS.deleteButtonTitle);\r\n\r\n //! appearance\r\n readonly contentAlignment = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n readonly appearance = input<DecorationElementAppearance>(DecorationElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-chip-align-${this.contentAlignment()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly deleteEvent = output<MouseEvent>({ alias: 'delete' });\r\n}\r\n","<div\r\n class=\"ard-chip-wrapper ard-chip-deletable\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-clear-button\r\n [title]=\"deleteButtonTitle()\"\r\n (click)=\"deleteEvent.emit($event)\"\r\n [tabIndex]=\"tabIndex()\"\r\n ></ard-clear-button>\r\n <div class=\"ard-chip-content-wrapper\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { _ClearButtonComponent } from './clear-button.component';\n\n@NgModule({\n declarations: [_ClearButtonComponent],\n imports: [CommonModule],\n exports: [_ClearButtonComponent],\n})\nexport class _ClearButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumChipComponent } from './chip.component';\nimport { ArdiumSelectableChipComponent } from './selectable-chip/selectable-chip.component';\nimport { ArdiumDeletableChipComponent } from './deletable-chip/deletable-chip.component';\nimport { _ClearButtonModule } from '../_internal/clear-button/clear-button.module';\n\n@NgModule({\n declarations: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n imports: [CommonModule, _ClearButtonModule],\n exports: [ArdiumChipComponent, ArdiumSelectableChipComponent, ArdiumDeletableChipComponent],\n})\nexport class ArdiumChipModule {}\n","export type ScrollAlignment = 'top' | 'bottom' | 'middle';\n\nexport const DropdownPanelAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type DropdownPanelAppearance = (typeof DropdownPanelAppearance)[keyof typeof DropdownPanelAppearance];\n\nexport const DropdownPanelVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n SharpConnected: 'sharp ard-connected',\n} as const;\nexport type DropdownPanelVariant = (typeof DropdownPanelVariant)[keyof typeof DropdownPanelVariant];\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant, ScrollAlignment } from './dropdown-panel.types';\r\n\r\n@Component({\r\n selector: 'ard-dropdown-panel',\r\n templateUrl: './dropdown-panel.component.html',\r\n styleUrls: ['./dropdown-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.ard-open]': 'isOpen()',\r\n },\r\n})\r\nexport class ArdiumDropdownPanelComponent implements AfterViewChecked {\r\n private readonly _scrollElementRef = viewChild<ElementRef<HTMLElement>>('scroll');\r\n private readonly _scrollEl = computed(() => this._scrollElementRef()?.nativeElement);\r\n\r\n //! options\r\n readonly panelId = input<string>();\r\n readonly headerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly footerTemplate = input<TemplateRef<any> | null>(null);\r\n readonly filterValue = input<Nullable<string>>();\r\n\r\n //! appearance\r\n readonly appearance = input<DropdownPanelAppearance>(DropdownPanelAppearance.Raised);\r\n readonly variant = input<DropdownPanelVariant>(DropdownPanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [`ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! states\r\n readonly isOpen = input.required<boolean>();\r\n\r\n //! output events\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n\r\n //! event handlers\r\n onScroll() {\r\n const start = this._scrollTop;\r\n const end = this._scrollBottom;\r\n this.scrollEvent.emit({ start, end });\r\n\r\n if (end === this._scrollEl()?.scrollHeight) {\r\n this.scrollToEndEvent.emit();\r\n }\r\n }\r\n\r\n //! hooks\r\n ngAfterViewChecked(): void {\r\n if (!this._currentScrollToDirection) return;\r\n\r\n const recent = this._scrollEl()?.querySelector<HTMLElement>('.ard-option-highlighted-recent');\r\n if (!recent) return;\r\n\r\n const isInView = this._isElementInView(recent);\r\n if (!isInView) {\r\n this._scrollToElement(recent, this._currentScrollToDirection);\r\n }\r\n\r\n this._currentScrollToDirection = null;\r\n }\r\n\r\n //! scroll position\r\n private get _scrollTop(): number {\r\n return this._scrollEl()?.scrollTop ?? 0;\r\n }\r\n private set _scrollTop(value: number) {\r\n const el = this._scrollEl();\r\n if (!el) return;\r\n el.scrollTop = value;\r\n }\r\n private get _scrollBottom(): number {\r\n return this._scrollTop + (this._scrollEl()?.getBoundingClientRect().height ?? 0);\r\n }\r\n\r\n //! scroll to element methods\r\n private _scrollToElement(el: HTMLElement, alignTo: ScrollAlignment = 'middle'): void {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n\r\n switch (alignTo) {\r\n case 'top':\r\n this._scrollTop += elementRect.top - parentContentRect.top;\r\n break;\r\n case 'bottom':\r\n this._scrollTop += elementRect.bottom - parentContentRect.bottom;\r\n break;\r\n case 'middle':\r\n this._scrollTop += (elementRect.top + elementRect.bottom) / 2 - parentContentRect.top - parentContentRect.height / 2;\r\n break;\r\n }\r\n }\r\n\r\n private _currentScrollToDirection: ScrollAlignment | null = null;\r\n scrollToRecentlyHighlighted(direction: ScrollAlignment): void {\r\n this._currentScrollToDirection = direction;\r\n }\r\n private _isElementInView(el: HTMLElement): boolean {\r\n const scrollEl = this._scrollEl();\r\n if (!scrollEl) return true;\r\n\r\n const parentContentRect = this._getContentRect(scrollEl);\r\n const elementRect = el.getBoundingClientRect();\r\n return elementRect.bottom < parentContentRect.bottom && elementRect.top > parentContentRect.top;\r\n }\r\n private _getContentRect(el: HTMLElement): DOMRect {\r\n const elRect = el.getBoundingClientRect();\r\n const elPadding = window.getComputedStyle(el).getPropertyValue('padding');\r\n const paddings = elPadding.split(' ').map(v => (v ? parseFloat(v) : null));\r\n const topPadd = paddings[0] ?? 0;\r\n const rightPadd = paddings[1] ?? topPadd;\r\n const bottomPadd = paddings[2] ?? topPadd;\r\n const leftPadd = paddings[3] ?? rightPadd ?? topPadd;\r\n\r\n return new DOMRect(\r\n elRect.x + leftPadd,\r\n elRect.y + topPadd,\r\n elRect.width - leftPadd - rightPadd,\r\n elRect.height - topPadd - bottomPadd\r\n );\r\n }\r\n}\r\n","<div\r\n class=\"ard-dropdown-panel-container\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (headerTemplate()) {\r\n <div class=\"ard-dropdown-header\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <div\r\n #scroll\r\n class=\"ard-dropdown-panel-content\"\r\n [attr.id]=\"panelId()\"\r\n (scroll)=\"onScroll()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (footerTemplate()) {\r\n <div class=\"ard-dropdown-footer\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDropdownPanelComponent } from './dropdown-panel.component';\n\n@NgModule({\n declarations: [ArdiumDropdownPanelComponent],\n imports: [CommonModule],\n exports: [ArdiumDropdownPanelComponent],\n})\nexport class ArdiumDropdownPanelModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, evaluate, isArray, isDefined, isObject, isPrimitive, isPromise } from 'simple-bool';\r\nimport { AddCustomFn } from '../../select/select.types';\r\nimport { ArdItemGroupMap, ArdOption, ArdOptionGroup, CompareWithFn, GroupByFn, SearchFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n groupLabelFrom: string;\r\n groupDisabledFrom: string;\r\n childrenFrom: string;\r\n [key: string]: any;\r\n}\r\nexport interface ItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<Nullable<boolean>>;\r\n readonly groupLabelFrom: Signal<Nullable<string | GroupByFn>>;\r\n readonly groupDisabledFrom: Signal<Nullable<string>>;\r\n readonly childrenFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly itemsAlreadyGrouped: Signal<Nullable<boolean>>;\r\n readonly hideSelected: Signal<boolean>;\r\n readonly searchCaseSensitive: Signal<boolean>;\r\n readonly searchFn: Signal<SearchFn>;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly sortMultipleValues: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly addCustom: Signal<boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class ItemStorage {\r\n private readonly _groups = signal<ArdItemGroupMap>(this._createEmptyGroupMap());\r\n private readonly _items = signal<ArdOption[]>([]);\r\n private readonly _filteredItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedItems = signal<ArdOption[]>([]);\r\n private readonly _highlightedGroups = signal<ArdOptionGroup[]>([]);\r\n private readonly _recentlyHighlightedItem = signal<Nullable<ArdOption>>(undefined);\r\n private readonly _selectedItems = signal<ArdOption[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: ItemStorageHost) {}\r\n\r\n readonly groups = computed(() =>\r\n Array.from(this._groups().entries())\r\n .map(([, group]) => group)\r\n .filter(group => group.children().length)\r\n );\r\n readonly items = this._items.asReadonly();\r\n readonly filteredItems = this._filteredItems.asReadonly();\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n\r\n readonly selectedItems = computed(() => {\r\n if (this._ardParentComp.sortMultipleValues()) {\r\n return this._selectedItems().sort((a, b) => {\r\n return a.index() - b.index();\r\n });\r\n }\r\n return this._selectedItems();\r\n });\r\n readonly lastSelectedItem = computed(() => this._filteredItems().last(1, item => !item.disabled()));\r\n\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n private _itemsToValue(items: ArdOption[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n readonly isNoItemsToSelect = computed(() => this._items().length === this._selectedItems().length);\r\n readonly isNoItemsFound = computed(() => this._filteredItems().length === 0);\r\n readonly isAnyItemSelected = computed(() => this._selectedItems().length > 0);\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n readonly isItemLimitReached = computed(\r\n () =>\r\n this._ardParentComp.multiselectable() &&\r\n isDefined(this._ardParentComp.maxSelectedItems()) &&\r\n this._ardParentComp.maxSelectedItems()! <= this.selectedItems().length\r\n );\r\n\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (this._ardParentComp.groupLabelFrom() && this._ardParentComp.itemsAlreadyGrouped()) {\r\n const newItems = [];\r\n for (const group of items) {\r\n let children: any[];\r\n [children, areItemsPrimitive] = this._ungroupAlreadyGroupedItems(group);\r\n newItems.push(...children);\r\n }\r\n items = newItems;\r\n }\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n //add all items to filter array\r\n this._filteredItems.set(this._items());\r\n\r\n //add items to groups\r\n this._populateGroups();\r\n\r\n //write value if it was\r\n const toWrite = this._valueToWriteAfterItemsLoad();\r\n if (toWrite !== undefined) {\r\n this.handleWriteValue(toWrite);\r\n }\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _addSingleItem(item: any): ArdOption {\r\n const isItemPrimitive = isPrimitive(item);\r\n //map a primitive item to a usable object\r\n if (isItemPrimitive) {\r\n item = this._primitiveItemsMapFn(item);\r\n }\r\n //map the item to create data bindings\r\n const ardOption = this._setItemsMapFn(item, (this._items().last()?.index() ?? 0) + 1, isItemPrimitive);\r\n\r\n //push the item into all items\r\n this._items.update(v => [...v, ardOption]);\r\n\r\n //add item to groups\r\n this._populateGroups();\r\n\r\n return ardOption;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _ungroupAlreadyGroupedItems<T extends object>(group: T): [any[], boolean] {\r\n //determine groupBy (groupLabel) path\r\n const groupBy = this._ardParentComp.groupLabelFrom() ?? this._ardParentComp.DEFAULTS.groupLabelFrom;\r\n\r\n //get group label from object\r\n let groupName: any;\r\n if (typeof groupBy === 'string') {\r\n groupName = resolvePath(group, groupBy);\r\n } else {\r\n groupName = groupBy(group);\r\n }\r\n\r\n //determine group children path\r\n const childrenPath = this._ardParentComp.childrenFrom() ?? this._ardParentComp.DEFAULTS.childrenFrom;\r\n\r\n //get group children\r\n let groupItems: any = resolvePath(group, childrenPath);\r\n\r\n //return empty array if groupItems is not an array or is empty\r\n if (!isArray(groupItems) || groupItems.length === 0) return [[], false];\r\n\r\n //check if the array is an array of primitives, and map it if needed\r\n const areItemsPrimitive = false;\r\n if (any(groupItems, isPrimitive)) {\r\n groupItems = groupItems.map(this._primitiveItemsMapFn);\r\n }\r\n //add group name to every child\r\n groupItems = groupItems.map((item: any) => {\r\n item.$ardgroup = groupName;\r\n return item;\r\n });\r\n\r\n return [groupItems, areItemsPrimitive];\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOption {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n group: signal(undefined),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //get groups\r\n let group: any = undefined;\r\n const groupBy = this._ardParentComp.groupLabelFrom();\r\n if (groupBy) {\r\n if (rawItemData.$ardgroup) {\r\n group = rawItemData.$ardgroup;\r\n } else {\r\n if (typeof groupBy === 'string') {\r\n group = resolvePath(rawItemData, groupBy);\r\n } else {\r\n group = groupBy(rawItemData);\r\n }\r\n }\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n group: signal(group),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n highlighted_recently: signal(false),\r\n };\r\n }\r\n private _populateGroups(): void {\r\n this._groups.set(this._createEmptyGroupMap());\r\n\r\n for (const item of this._filteredItems()) {\r\n if (this._ardParentComp.hideSelected() && item.selected()) continue;\r\n\r\n this._addToGroup(item);\r\n }\r\n }\r\n private _addToGroup(item: ArdOption): void {\r\n const groupKey = item.group();\r\n const targetGroup = this._groups().get(groupKey);\r\n //create new group if needed\r\n if (!targetGroup) {\r\n this._groups.update(v => {\r\n const map = new Map(v);\r\n map.set(groupKey, {\r\n label: signal(String(groupKey ?? '')),\r\n children: signal([item]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n });\r\n return map;\r\n });\r\n return;\r\n }\r\n targetGroup.children.update(v => [...v, item]);\r\n }\r\n private _createEmptyGroupMap(): ArdItemGroupMap {\r\n return new Map([\r\n [\r\n undefined,\r\n {\r\n label: signal(''),\r\n children: signal([]),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n },\r\n ],\r\n ]) as ArdItemGroupMap;\r\n }\r\n private _isWriteValueValid(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n private readonly _valueToWriteAfterItemsLoad = signal<any>(undefined);\r\n private readonly _wasValueWriteDeferred = signal<boolean>(false);\r\n handleWriteValue(ngModel: any[]): void {\r\n //defer writing the value if no options are yet loaded\r\n if (!this._wasValueWriteDeferred() && this._items().length === 0) {\r\n this._valueToWriteAfterItemsLoad.set(ngModel);\r\n return;\r\n }\r\n\r\n this.clearAllSelected();\r\n\r\n if (!this._isWriteValueValid(ngModel)) {\r\n return;\r\n }\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n findItemByValue(valueToFind: any): ArdOption | undefined {\r\n let findBy: (item: ArdOption) => boolean;\r\n if (this._ardParentComp.compareWith()) {\r\n findBy = item => this._ardParentComp.compareWith()!(valueToFind, item.value);\r\n } else {\r\n findBy = item => item.value === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n async addCustomOption(value: string, fn: AddCustomFn<any> | AddCustomFn<Promise<any>>): Promise<ArdOption> {\r\n const fnResult = fn(value);\r\n\r\n let optionValue = fnResult;\r\n if (isPromise(optionValue)) optionValue = await optionValue;\r\n\r\n const newOptionObj = this._addSingleItem(optionValue);\r\n\r\n return newOptionObj;\r\n }\r\n\r\n clearAllSelected(repopulateGroups = false): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n const removedItemValues = this._itemsToValue(this._selectedItems());\r\n this._selectedItems.set([]);\r\n\r\n if (repopulateGroups && this._ardParentComp.hideSelected()) this._populateGroups();\r\n\r\n return removedItemValues;\r\n }\r\n clearLastSelected(): ArdOption {\r\n const item = this._selectedItems().last();\r\n if (!item) return item;\r\n this.unselectItem(item);\r\n return item;\r\n }\r\n selectItem(...items: ArdOption[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this.clearAllSelected(false);\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n this._selectedItems.update(v => [...v, item]);\r\n itemsSelected.push(item);\r\n }\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n unselectItem(...items: ArdOption[]): any[] {\r\n for (const item of items) {\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n if (this._ardParentComp.hideSelected()) {\r\n this._populateGroups();\r\n }\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n clearAllHighlights(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n for (const group of this._highlightedGroups()) {\r\n group.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n this._highlightedGroups.set([]);\r\n }\r\n highlightGroup(group: ArdOptionGroup): ArdOption {\r\n this.clearAllHighlights();\r\n group.highlighted.set(true);\r\n this.highlightItem(...group.children());\r\n return group.children().first();\r\n }\r\n highlightSingleItem(item: ArdOption): ArdOption | null {\r\n if (!item || item.disabled()) return null;\r\n this.clearAllHighlights();\r\n return this.highlightItem(item);\r\n }\r\n highlightItem(...items: ArdOption[]): ArdOption {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n unhighlightItem(...items: ArdOption[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n highlightFirstItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.first());\r\n }\r\n highlightLastItem(): ArdOption | null {\r\n this.clearAllHighlights();\r\n const itemsToHighlight = this._getHiglightableItems();\r\n return this.highlightSingleItem(itemsToHighlight.last());\r\n }\r\n private _getHiglightableItems(): ArdOption[] {\r\n let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());\r\n if (this._ardParentComp.hideSelected()) {\r\n itemsToHighlight = itemsToHighlight.filter(item => !item.selected());\r\n }\r\n return itemsToHighlight;\r\n }\r\n highlightAllItems(): void {\r\n this.highlightItem(...this._getHiglightableItems());\r\n }\r\n private _clearRecentlyHighlighted(): void {\r\n if (this._recentlyHighlightedItem()) {\r\n this._recentlyHighlightedItem()!.highlighted_recently.set(false);\r\n }\r\n }\r\n setRecentlyHighlighted(item: ArdOption): void {\r\n this._clearRecentlyHighlighted();\r\n item.highlighted_recently.set(true);\r\n this._recentlyHighlightedItem.set(item);\r\n }\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOption | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const highlightableItems = this._getHiglightableItems();\r\n const currentIndexInFiltered = highlightableItems.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInFiltered + offset;\r\n if (nextItemIndex >= highlightableItems.length) {\r\n nextItemIndex -= highlightableItems.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += highlightableItems.length;\r\n }\r\n const itemToHighlight = highlightableItems[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n filter(filterTerm: string): any[] {\r\n if (!filterTerm) {\r\n return this._itemsToValue(this.resetFiltered());\r\n }\r\n if (!this._ardParentComp.searchCaseSensitive()) {\r\n filterTerm = filterTerm.toLocaleLowerCase();\r\n }\r\n\r\n const searchFn = this._ardParentComp.searchFn();\r\n const newFilteredItems = this._items().filter(item => searchFn(filterTerm, item));\r\n this._filteredItems.set(newFilteredItems);\r\n\r\n this._populateGroups();\r\n\r\n if (!this.isNoItemsFound) this.highlightFirstItem();\r\n else this.clearAllHighlights();\r\n\r\n return this._itemsToValue(newFilteredItems);\r\n }\r\n resetFiltered(): ArdOption[] {\r\n if (this._filteredItems().length === this._items().length) return this._items();\r\n\r\n let newFilteredItems = this._items();\r\n if (this._ardParentComp.hideSelected() && this.isAnyItemSelected()) {\r\n newFilteredItems = newFilteredItems.filter(item => !item.selected());\r\n }\r\n this._populateGroups();\r\n return newFilteredItems;\r\n }\r\n}\r\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { Subject } from 'rxjs';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-option',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumOptionComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n readonly value = input<any>(undefined);\r\n\r\n readonly hasImplicitValue = computed<boolean>(() => this.value() === undefined);\r\n\r\n readonly label = input<Nullable<string>>(undefined);\r\n\r\n get labelOrInnerHtml(): string {\r\n return this.label() ?? (this.elementRef.nativeElement.innerHTML || '').trim();\r\n }\r\n\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! state change listener\r\n readonly stateChange$ = new Subject<{\r\n value: any;\r\n oldValue?: string;\r\n disabled: boolean;\r\n label?: Nullable<string>;\r\n }>();\r\n\r\n private _previousLabel: Nullable<string>;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['disabled']) {\r\n this.stateChange$.next({\r\n value: this.value(),\r\n disabled: changes['disabled'].currentValue,\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.label() !== this._previousLabel) {\r\n let oldValue = this.value();\r\n if (this.hasImplicitValue()) oldValue = this._previousLabel;\r\n\r\n this._previousLabel = this.label();\r\n\r\n this.stateChange$.next({\r\n value: this.value(),\r\n oldValue,\r\n disabled: this.disabled(),\r\n label: this.label(),\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChange$.complete();\r\n }\r\n}\r\n","import { ArdOption, SearchFn } from './types/item-storage.types';\r\n\r\nexport function searchInString(searchTerm: string, toSearch: any) {\r\n if (toSearch === undefined) return false;\r\n return String(toSearch).toLocaleLowerCase().indexOf(searchTerm) !== -1;\r\n}\r\nexport const searchFunctions: {\r\n byLabel: SearchFn;\r\n byValue: SearchFn;\r\n byGroup: SearchFn;\r\n byLabelAndGroup: SearchFn;\r\n byLabelAndValue: SearchFn;\r\n byLabelAndGroupAndValue: SearchFn;\r\n} = {\r\n /**\r\n * Determines if the item should appear in the search results, based on the label only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabel: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.label());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the value only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byValue: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.value());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the group only.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byGroup: (searchTerm: string, item: ArdOption) => {\r\n return searchInString(searchTerm, item.group());\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and group.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroup: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) || (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item))\r\n );\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndValue: (searchTerm: string, item: ArdOption) => {\r\n return searchFunctions.byLabel(searchTerm, item) || searchFunctions.byValue(searchTerm, item);\r\n },\r\n /**\r\n * Determines if the item should appear in the search results, based on the label, group, and value.\r\n * @param searchTerm The term to search by.\r\n * @param item The `ArdOption` item to search in.\r\n * @returns `true` if the item matches the search term, otherwise `false`.\r\n */\r\n byLabelAndGroupAndValue: (searchTerm: string, item: ArdOption) => {\r\n return (\r\n searchFunctions.byLabel(searchTerm, item) ||\r\n (item.label() !== item.value() && searchFunctions.byValue(searchTerm, item)) ||\r\n searchFunctions.byGroup(searchTerm, item)\r\n );\r\n },\r\n};\r\n","import { Signal, WritableSignal } from '@angular/core';\r\nimport { Nullable } from './utility.types';\r\n\r\n/**\r\n```typescript\r\ninterface OptionContext {\r\n $implicit: ArdOption;\r\n item: ArdOption;\r\n itemData: any;\r\n}\r\n```\r\n */\r\nexport interface OptionContext<T extends ArdSimplestStorageItem> {\r\n $implicit: T;\r\n item: T;\r\n itemData: any;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n label: string;\r\n value: any;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdSimplestStorageItem {\r\n readonly itemData: WritableSignal<any>;\r\n readonly index: Signal<number>;\r\n readonly value: WritableSignal<any>;\r\n readonly label: WritableSignal<string>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOptionSimple extends ArdSimplestStorageItem {\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n}\r\n/**\r\n```typescript\r\ninterface ArdOption {\r\n readonly itemData: any;\r\n readonly index: number;\r\n readonly label: string;\r\n readonly value: any;\r\n readonly group?: any;\r\n disabled?: boolean;\r\n selected?: boolean;\r\n highlighted?: boolean;\r\n highlighted_recently?: boolean;\r\n}\r\n```\r\n */\r\nexport interface ArdOption extends ArdOptionSimple {\r\n readonly group: Signal<any>;\r\n readonly highlighted_recently: WritableSignal<Nullable<boolean>>;\r\n}\r\n\r\n/**\r\n```typescript\r\ninterface ArdItemGroup {\r\n label: string;\r\n disabled?: boolean;\r\n highlighted?: boolean;\r\n selected?: boolean;\r\n children: ArdOption[];\r\n}\r\n```\r\n */\r\nexport interface ArdOptionGroup {\r\n readonly label: WritableSignal<string>;\r\n readonly disabled: WritableSignal<Nullable<boolean>>;\r\n readonly highlighted: WritableSignal<Nullable<boolean>>;\r\n readonly selected: WritableSignal<Nullable<boolean>>;\r\n readonly children: WritableSignal<ArdOption[]>;\r\n}\r\n\r\nexport const ArdPanelPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ArdPanelPosition = (typeof ArdPanelPosition)[keyof typeof ArdPanelPosition];\r\n\r\nexport type ArdItemGroupMap = Map<any, ArdOptionGroup>;\r\n\r\nexport type GroupByFn = (item: any) => any;\r\nexport type SearchFn = (searchTerm: string, item: ArdOption) => boolean;\r\nexport type CompareWithFn = (value: any, optionValue: any) => boolean;\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdOption, OptionContext } from '../types/item-storage.types';\r\nimport {\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n//public (exported)\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-prefix-tmp]' })\r\nexport class ArdSelectPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-suffix-tmp]' })\r\nexport class ArdSelectSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-tmp]' })\r\nexport class ArdValueTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-value-chip-tmp]' })\r\nexport class ArdValueChipTemplateDirective {\r\n constructor(public template: TemplateRef<ValueContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-option-tmp]' })\r\nexport class ArdOptionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdOption>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-optgroup-tmp]' })\r\nexport class ArdOptgroupTemplateDirective {\r\n constructor(public template: TemplateRef<GroupContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdSelectPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<PlaceholderContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-loading-spinner-tmp]' })\r\nexport class ArdLoadingSpinnerTemplateDirective {\r\n constructor(public template: TemplateRef<null>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-select > ng-template[ard-loading-placeholder-tmp]',\r\n})\r\nexport class ArdLoadingPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-header-tmp]' })\r\nexport class ArdDropdownHeaderTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-dropdown-footer-tmp]' })\r\nexport class ArdDropdownFooterTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-no-items-found-tmp]' })\r\nexport class ArdNoItemsFoundTemplateDirective {\r\n constructor(public template: TemplateRef<SearchContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-add-custom-tmp]' })\r\nexport class ArdAddCustomTemplateDirective {\r\n constructor(public template: TemplateRef<CustomOptionContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-limit-reached-tmp]' })\r\nexport class ArdItemLimitReachedTemplateDirective {\r\n constructor(public template: TemplateRef<ItemLimitContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' })\r\nexport class ArdItemDisplayLimitTemplateDirective {\r\n constructor(public template: TemplateRef<ItemDisplayLimitContext>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-prefix-tmp]' })\nexport class ArdFormFieldPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-form-field-frame > ng-template[ard-suffix-tmp]' })\nexport class ArdFormFieldSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\r\n\r\n@Component({\r\n selector: 'ard-form-field-frame',\r\n templateUrl: './form-field-frame.component.html',\r\n styleUrls: ['./form-field-frame.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {\r\n //! focused state\r\n @Input() override isFocused = false;\r\n\r\n //! appearance\r\n /**\r\n * The appearance of the component, aka the styling.\r\n */\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n /**\r\n * The variant of the component, aka the shape.\r\n */\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n /**\r\n * Whether to use the compact styling or not.\r\n */\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.isFocused ? 'ard-focused' : 'ard-unfocused',\r\n ].join(' ')\r\n );\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'prefixTemplate' });\r\n readonly suffixTemplateInput = input<Nullable<TemplateRef<any>>>(undefined, { alias: 'suffixTemplate' });\r\n readonly prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);\r\n}\r\n","<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n Signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { Subject, merge, startWith, takeUntil } from 'rxjs';\r\nimport { isAnyString, isArray, isFunction } from 'simple-bool';\r\nimport { ItemStorage, ItemStorageHost } from '../_internal/item-storages/dropdown-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ArdiumDropdownPanelComponent } from '../dropdown-panel/dropdown-panel.component';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../dropdown-panel/dropdown-panel.types';\r\nimport { ArdiumOptionComponent } from '../option/option.component';\r\nimport { searchFunctions } from '../search-functions';\r\nimport { ArdOption, ArdOptionGroup, ArdPanelPosition, GroupByFn, OptionContext, SearchFn } from '../types/item-storage.types';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { FormElementVariant } from './../types/theming.types';\r\nimport {\r\n ArdAddCustomTemplateDirective,\r\n ArdDropdownFooterTemplateDirective,\r\n ArdDropdownHeaderTemplateDirective,\r\n ArdItemDisplayLimitTemplateDirective,\r\n ArdItemLimitReachedTemplateDirective,\r\n ArdLoadingPlaceholderTemplateDirective,\r\n ArdLoadingSpinnerTemplateDirective,\r\n ArdNoItemsFoundTemplateDirective,\r\n ArdOptgroupTemplateDirective,\r\n ArdOptionTemplateDirective,\r\n ArdSelectPlaceholderTemplateDirective,\r\n ArdSelectPrefixTemplateDirective,\r\n ArdSelectSuffixTemplateDirective,\r\n ArdValueTemplateDirective,\r\n} from './select.directive';\r\nimport {\r\n AddCustomFn,\r\n CustomOptionContext,\r\n GroupContext,\r\n ItemDisplayLimitContext,\r\n ItemLimitContext,\r\n PlaceholderContext,\r\n SearchContext,\r\n StatsContext,\r\n ValueContext,\r\n} from './select.types';\r\n\r\n@Component({\r\n selector: 'ard-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSelectComponent\r\n extends _NgModelComponentBase\r\n implements OnChanges, AfterViewInit, AfterContentInit, OnInit, OnDestroy, ControlValueAccessor, ItemStorageHost\r\n{\r\n readonly _componentId: string = '000';\r\n //! public constants\r\n readonly itemStorage = new ItemStorage(this);\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n groupLabelFrom: 'group',\r\n groupDisabledFrom: 'disabled',\r\n childrenFrom: 'children',\r\n searchFn: searchFunctions.byLabel,\r\n clearButtonTitle: 'Clear',\r\n noItemsFoundText: 'No items found.',\r\n loadingPlaceholderText: 'Loading...',\r\n };\r\n\r\n //! privates\r\n private _items: any[] | null = [];\r\n private readonly _isMouseBeingUsed = signal<boolean>(false);\r\n private readonly _searchBarFocused = signal<boolean>(false);\r\n private readonly _destroy$ = new Subject<void>();\r\n\r\n //! publics\r\n readonly searchTerm = signal<string>('');\r\n isItemsInputUsed = false;\r\n\r\n //! binding-related inputs\r\n //value/label/disabled/group/pre-grouped children paths\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n //! group-related inputs\r\n readonly groupLabelFrom = input<Nullable<string | GroupByFn>>(undefined);\r\n readonly groupDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly childrenFrom = input<Nullable<string>>(undefined);\r\n //! settings\r\n readonly placeholder = input<string>('Select item');\r\n readonly searchPlaceholder = input<string>('Search...');\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly dropdownPosition = input<ArdPanelPosition>(ArdPanelPosition.Auto);\r\n //! template-related settings\r\n readonly noItemsFoundText = input<string>(this.DEFAULTS.noItemsFoundText);\r\n readonly loadingPlaceholderText = input<string>(this.DEFAULTS.loadingPlaceholderText);\r\n //! search-related options\r\n readonly searchInputId = input<Nullable<string>>(undefined);\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n //! other inputs\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly inputProps = input<Record<string, any>>({});\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n //! boolean settings\r\n readonly itemsAlreadyGrouped = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //should the value that the \"disabledFrom\" path lead to be inverted?\r\n //useful when the property is e.g. \"active\", which is the oposite of \"disabled\"\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly noGroupActions = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoHighlightFirst = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepOpen = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly hideSelected = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly noBackspaceClear = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly sortMultipleValues = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchCaseSensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly keepSearchAfterSelect = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! number inputs\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n readonly itemDisplayLimit = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n //! function inputs\r\n readonly searchFn = input<SearchFn>(this.DEFAULTS.searchFn);\r\n readonly compareWith = input<Nullable<SearchFn>>(undefined);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n //appearance, variant handled in ard-form-field-frame component\r\n this.compact() ? 'ard-compact' : '',\r\n this.multiselectable() ? 'ard-multiselect' : 'ard-singleselect',\r\n this.clearable() ? 'ard-clearable' : '',\r\n this.searchable() ? 'ard-searchable' : '',\r\n this.filtered() ? 'ard-filtered' : '',\r\n this.touched() ? 'ard-touched' : '',\r\n this.isOpen() ? 'ard-dropdown-open' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n this._searchBarFocused() ? 'ard-select-focused' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n @HostBinding('class.ard-group-items')\r\n get _groupItemsHostAttribute() {\r\n return this.groupLabelFrom();\r\n }\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items() {\r\n return this._items;\r\n }\r\n set items(value: string | any[] | null) {\r\n this.isItemsInputUsed = true;\r\n if (value === null) {\r\n value = [];\r\n this.isItemsInputUsed = false;\r\n } else if (isAnyString(value)) {\r\n value = coerceArrayProperty(value);\r\n }\r\n const printErrors = this.itemStorage.setItems(value);\r\n if (printErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n @ContentChildren(ArdiumOptionComponent)\r\n optionComponents!: QueryList<ArdiumOptionComponent>;\r\n\r\n private _setItemsFromComponents() {\r\n const handleOptionChange = () => {\r\n const changedOrDestroyed = merge(this.optionComponents.changes, this._destroy$);\r\n merge(...this.optionComponents.map(option => option.stateChange$))\r\n .pipe(takeUntil(changedOrDestroyed))\r\n .subscribe(option => {\r\n setTimeout(() => {\r\n const item = this.itemStorage.findItemByValue(option.oldValue ?? option.value);\r\n if (item) {\r\n item.disabled.set(option.disabled);\r\n item.label.set(option.label || item.label());\r\n item.value.set(option.value);\r\n item.itemData.set({\r\n label: option.label || item.label(),\r\n value: option.value,\r\n disabled: option.disabled,\r\n });\r\n }\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n };\r\n this.optionComponents.changes\r\n .pipe(startWith(this.optionComponents), takeUntil(this._destroy$))\r\n .subscribe((options: QueryList<ArdiumOptionComponent>) => {\r\n if (options.length === 0) return;\r\n setTimeout(() => {\r\n this.items = options.map(option => ({\r\n value: option.value,\r\n label: option.label,\r\n disabled: option.disabled,\r\n }));\r\n handleOptionChange();\r\n this.detectChanges();\r\n }, 0);\r\n });\r\n }\r\n\r\n //! attribute and/or class setters/getters\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly searchable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly filtered = computed<boolean>(() => this.searchable() && this.searchTerm() !== '');\r\n\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! custom options\r\n private _defaultAddCustomFn: AddCustomFn<any> = (value: string) => value;\r\n\r\n readonly addCustom = input<\r\n false | AddCustomFn<any> | AddCustomFn<Promise<any>>,\r\n string | boolean | AddCustomFn<any> | AddCustomFn<Promise<any>>\r\n >(false, {\r\n transform: v => {\r\n if (isFunction(v)) {\r\n return v;\r\n }\r\n //coerce the value into a boolean\r\n //if \"true\", use the default function. Otherwise, just set to \"false\".\r\n return coerceBooleanProperty(v) && this._defaultAddCustomFn;\r\n },\r\n });\r\n readonly shouldShowAddCustom = computed<boolean>(\r\n () => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound()\r\n );\r\n\r\n async addCustomOption(value: string) {\r\n const ac = this.addCustom();\r\n if (!ac) return;\r\n\r\n const newOptionObj = await this.itemStorage.addCustomOption(value, ac);\r\n\r\n this.selectItem(newOptionObj);\r\n }\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this._disabled = state;\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.handleWriteValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n //! change & touch event emitters\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n private _onTouched(): void {\r\n this.touched.set(true);\r\n this._onTouchedRegistered?.();\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n //if is a string, coerce it into array of strings\r\n if (isAnyString(newValue)) newValue = coerceArrayProperty(newValue);\r\n //if it is not a string and not an array, just put it in an array\r\n else if (!isArray(newValue)) newValue = [newValue];\r\n\r\n this.writeValue(newValue);\r\n }\r\n get value(): Signal<any[]> {\r\n return this.itemStorage.value;\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly failedToAddEvent = output<any[]>({ alias: 'failedToAdd' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n readonly openEvent = output<void>({ alias: 'open' });\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n readonly scrollEvent = output<{\r\n start: number;\r\n end: number;\r\n }>({ alias: 'scroll' });\r\n readonly scrollToEndEvent = output({ alias: 'scrollToEnd' });\r\n readonly searchEvent = output<{\r\n search: string;\r\n matching: any[];\r\n }>({ alias: 'search' });\r\n\r\n readonly isOpen = model<boolean>(false);\r\n\r\n //! view children\r\n readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\r\n readonly dropdownPanel = viewChild<ArdiumDropdownPanelComponent>(ArdiumDropdownPanelComponent);\r\n\r\n //! templates\r\n readonly optionTemplate = contentChild(ArdOptionTemplateDirective);\r\n readonly optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);\r\n readonly valueTemplate = contentChild(ArdValueTemplateDirective);\r\n readonly placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);\r\n readonly loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);\r\n readonly loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);\r\n readonly dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);\r\n readonly dropdownFooterTemplate = contentChild(ArdDropdownFooterTemplateDirective);\r\n readonly noItemsFoundTemplate = contentChild(ArdNoItemsFoundTemplateDirective);\r\n readonly addCustomTemplate = contentChild(ArdAddCustomTemplateDirective);\r\n readonly itemLimitReachedTemplate = contentChild(ArdItemLimitReachedTemplateDirective);\r\n readonly itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);\r\n\r\n readonly prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);\r\n\r\n //! context providers\r\n getValueContext(item: ArdOption): ValueContext {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n unselect: () => {\r\n this.unselectItem(item);\r\n },\r\n };\r\n }\r\n readonly getStatsContext = computed(\r\n (): StatsContext => ({\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getSearchContext = computed(\r\n (): SearchContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n totalItems: this.totalItems(),\r\n foundItems: this.foundItems(),\r\n })\r\n );\r\n readonly getPlaceholderContext = computed((): PlaceholderContext => {\r\n const placeholder = this.placeholderForCurrentContext();\r\n return {\r\n placeholder,\r\n $implicit: placeholder,\r\n };\r\n });\r\n readonly getCustomOptionContext = computed(\r\n (): CustomOptionContext => ({\r\n $implicit: this.searchTerm(),\r\n searchTerm: this.searchTerm(),\r\n })\r\n );\r\n getGroupContext(group: ArdOptionGroup): GroupContext {\r\n return {\r\n $implicit: group,\r\n group,\r\n selectedChildren: group.children().filter(v => v.selected()).length,\r\n totalChildren: group.children().length,\r\n };\r\n }\r\n getOptionContext(item: ArdOption): OptionContext<ArdOption> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n readonly getItemLimitContext = computed(\r\n (): ItemLimitContext => ({\r\n totalItems: this.totalItems(),\r\n selectedItems: this.itemStorage.selectedItems().length,\r\n itemLimit: this.maxSelectedItems(),\r\n })\r\n );\r\n readonly getItemDisplayLimitContext = computed((): ItemDisplayLimitContext => {\r\n const selectedItems = this.itemStorage.selectedItems().length;\r\n return {\r\n totalItems: this.totalItems(),\r\n selectedItems,\r\n itemLimit: this.maxSelectedItems(),\r\n overflowCount: selectedItems - (this.itemDisplayLimit() ?? 0),\r\n };\r\n });\r\n\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly _cd = inject(ChangeDetectorRef);\r\n private readonly overlay = inject(Overlay);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n\r\n //! dropdown overlay\r\n @ViewChild('dropdownHost', { read: ElementRef })\r\n dropdownHost!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dropdownTemplate', { read: TemplateRef })\r\n dropdownTemplate!: TemplateRef<any>;\r\n\r\n private dropdownOverlay?: OverlayRef;\r\n\r\n private _createOverlay(): void {\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n this.setOverlaySize();\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n this.dropdownOverlay.dispose();\r\n delete this.dropdownOverlay;\r\n }\r\n\r\n setOverlaySize(): void {\r\n if (!this.dropdownOverlay) return;\r\n\r\n const rect = this.dropdownHost.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n //! hooks\r\n ngOnInit(): void {\r\n this._setSearchInputAttributes();\r\n }\r\n ngOnDestroy() {\r\n this._destroy$.next();\r\n this._destroy$.complete();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.isItemsInputUsed) {\r\n this._setItemsFromComponents();\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n //fire items load handler when loading is set to false\r\n if (changes['loading']) {\r\n if (changes['loading'].currentValue === false) {\r\n this._onItemsLoad();\r\n }\r\n }\r\n }\r\n private _onItemsLoad() {\r\n if (!this._searchBarFocused) return;\r\n this.open();\r\n }\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string, errorCode: string): void {\r\n console.warn(\r\n `ARD-WA000${errorCode}: Skipped using [${str}] property bound to <ard-select>, as some provided items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom', '5a');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom', '5b');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom', '5c');\r\n }\r\n if (this.groupLabelFrom()) {\r\n makeWarning('groupLabelFrom', '5d');\r\n }\r\n if (this.groupDisabledFrom()) {\r\n makeWarning('groupDisabledFrom', '5e');\r\n }\r\n if (this.childrenFrom()) {\r\n makeWarning('childrenFrom', '5f');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled', '5g');\r\n }\r\n }\r\n\r\n //! getters\r\n readonly firstHighlightedItem = computed<ArdOption | undefined>(() => this.itemStorage.highlightedItems()?.first());\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());\r\n readonly shouldDisplayValue = computed<boolean>(\r\n () => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable())\r\n );\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && (this.itemStorage.isAnyItemSelected() || this.searchTerm() !== '')\r\n );\r\n readonly itemsToDisplay = computed<IterableIterator<ArdOptionGroup>>(() => this.itemStorage.groups().values());\r\n readonly shouldShowNoItemsFound = computed<boolean>(\r\n () => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom()\r\n );\r\n readonly totalItems = computed<number>(() => this.itemStorage.items().length);\r\n readonly foundItems = computed<number | undefined>(() =>\r\n this.searchable() ? this.itemStorage.filteredItems().length : undefined\r\n );\r\n readonly shouldShowItemDisplayLimit = computed<boolean>(\r\n () =>\r\n this.multiselectable() &&\r\n this.itemDisplayLimit() !== Infinity &&\r\n this.itemStorage.selectedItems().length > this.itemDisplayLimit()\r\n );\r\n readonly isInputElementReadonly = computed<boolean>(\r\n () => !this.addCustom() && (!this.searchable() || this.itemStorage.isItemLimitReached())\r\n );\r\n\r\n isValueWithinDisplayLimit(i: number): boolean {\r\n return !this.multiselectable() || this.itemDisplayLimit() === Infinity || i < this.itemDisplayLimit();\r\n }\r\n readonly placeholderForCurrentContext = computed<string>(() => {\r\n if (this.searchPlaceholder() && this.searchable() && (this._searchBarFocused() || this._isClickedWithin()))\r\n return this.searchPlaceholder();\r\n return this.placeholder();\r\n });\r\n\r\n //! search input event handlers\r\n filter(filterTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(filterTerm);\r\n const matching = this.itemStorage.filter(filterTerm);\r\n if (!suppressSearchEvent) this.searchEvent.emit({ search: filterTerm, matching });\r\n this.open();\r\n }\r\n onSearchInputFocus(): void {\r\n this._searchBarFocused.set(true);\r\n }\r\n onSearchInputBlur(): void {\r\n if (!this._searchBarFocused()) return;\r\n\r\n this._onTouched();\r\n\r\n this._searchBarFocused.set(false);\r\n }\r\n //! item selection handlers\r\n toggleItem(item: ArdOption): void {\r\n if (item.selected()) {\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOption[]): void {\r\n const [selected, unselected, failedToSelect] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) {\r\n this.removeEvent.emit(unselected);\r\n }\r\n if (failedToSelect.length > 0) {\r\n this.failedToAddEvent.emit(failedToSelect);\r\n }\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n\r\n this.focus();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch(true);\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n if (unselected.length > 0 || selected.length > 0) {\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOption[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n this.removeEvent.emit(unselected);\r\n this._emitChange();\r\n if (!this.keepSearchAfterSelect()) this._clearSearch();\r\n\r\n this.focus();\r\n\r\n if (!this.keepOpen() || this.itemStorage.isNoItemsToSelect()) {\r\n this.close();\r\n }\r\n }\r\n private _clearAllItems(): void {\r\n const cleared = this.itemStorage.clearAllSelected(true);\r\n\r\n this.focus();\r\n\r\n this.clearEvent.emit();\r\n this.removeEvent.emit(cleared);\r\n this._emitChange();\r\n }\r\n private _clearLastItem(): void {\r\n const clearedValue = this.itemStorage.clearLastSelected().value();\r\n\r\n this.focus();\r\n\r\n this.removeEvent.emit([clearedValue]);\r\n this._emitChange();\r\n }\r\n //! highligh-related\r\n onMouseMove() {\r\n this._isMouseBeingUsed.set(true);\r\n }\r\n onGroupMouseover(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n this.itemStorage.highlightGroup(group);\r\n }\r\n onItemMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onItemMouseEnter(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOption, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed()) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n //! click handlers\r\n private readonly _isClickedWithin = signal<boolean>(false);\r\n onItemClick(option: ArdOption, event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.clearable()) this.toggleItem(option);\r\n else this.selectItem(option);\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n onGroupClick(group: ArdOptionGroup): void {\r\n if (!this.multiselectable() || this.noGroupActions()) return;\r\n if (group.children().every(o => o.selected)) {\r\n this.unselectItem(...group.children());\r\n return;\r\n }\r\n this.selectItem(...group.children());\r\n\r\n this._isClickedWithin.set(true);\r\n }\r\n handleClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (this.searchTerm()) {\r\n this._clearSearch();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n handleDropdownArrowClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n this.toggle();\r\n }\r\n handleOutsideClick(event: MouseEvent): void {\r\n if (!this.isOpen()) return;\r\n const target = event.target as HTMLElement;\r\n if (this.elementRef.nativeElement.contains(target)) return;\r\n\r\n this.close();\r\n }\r\n handleAnywhereClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target.tagName !== 'INPUT') {\r\n event.preventDefault();\r\n }\r\n\r\n this._isClickedWithin.set(true);\r\n\r\n if (!this._searchBarFocused()) {\r\n this.focus();\r\n }\r\n\r\n if (this.searchable()) {\r\n this.open();\r\n } else {\r\n this.toggle();\r\n }\r\n }\r\n @HostListener('mouseup')\r\n onMouseup(): void {\r\n this._isClickedWithin.set(false);\r\n }\r\n //! dropdown state handlers\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n this.open();\r\n }\r\n open(): void {\r\n if (this.disabled() || this.isOpen()) return;\r\n\r\n this.isOpen.set(true);\r\n if (this.autoHighlightFirst()) this.itemStorage.highlightFirstItem();\r\n\r\n this._createOverlay();\r\n this.focus();\r\n\r\n this.openEvent.emit();\r\n this.detectChanges();\r\n }\r\n close(): void {\r\n if (!this.isOpen()) return;\r\n\r\n this.isOpen.set(false);\r\n\r\n this._destroyOverlay();\r\n\r\n this._onTouched();\r\n this.closeEvent.emit();\r\n this._cd.markForCheck();\r\n }\r\n //! ChangeDetectorRef\r\n detectChanges(): void {\r\n if (!(this._cd as any).destroyed) {\r\n this._cd.detectChanges();\r\n }\r\n }\r\n //! search\r\n private _clearSearch(suppressSearchEvent = false): void {\r\n this._setSearch('', suppressSearchEvent);\r\n }\r\n private _setSearch(searchTerm: string, suppressSearchEvent = false): void {\r\n this.searchTerm.set(searchTerm);\r\n this.filter(searchTerm, suppressSearchEvent);\r\n }\r\n private _setSearchInputAttributes() {\r\n const input = this.searchInput()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, attributes[key]);\r\n }\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Space': {\r\n this._onSpacePress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n case 'Backspace':\r\n case 'Delete': {\r\n this._onBackspaceOrDeletePress(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._onCtrlAPress();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private async _onEnterPress(event: KeyboardEvent) {\r\n event.preventDefault();\r\n let shouldClose = true;\r\n\r\n //select the currently highlighted option\r\n if (this.isOpen() && this.firstHighlightedItem()) {\r\n if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {\r\n this.unselectItem(...this.itemStorage.highlightedItems());\r\n } else {\r\n this.selectItem(...this.itemStorage.highlightedItems());\r\n }\r\n }\r\n //add a custom option\r\n else if (this.isOpen() && this.shouldShowAddCustom()) {\r\n await this.addCustomOption(this.searchTerm());\r\n }\r\n //in case of no action, open the dropdown (or keep it open)\r\n else shouldClose = false;\r\n\r\n if (!this.keepOpen() && shouldClose) {\r\n this.itemStorage.clearAllHighlights();\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n private _onSpacePress(event: KeyboardEvent): void {\r\n if (this.isOpen()) return;\r\n\r\n event.preventDefault();\r\n this.open();\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.open();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.isOpen()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n if (recentlyHighlighted) {\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n }\r\n\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== 0 && this.searchInput()?.nativeElement.selectionStart !== 0)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightFirstItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('top');\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n if (\r\n !this.isOpen() ||\r\n (this.searchInput()?.nativeElement.selectionEnd !== this.searchTerm().length &&\r\n this.searchInput()?.nativeElement.selectionStart !== this.searchTerm().length)\r\n )\r\n return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed.set(false);\r\n\r\n const recentlyHighlighted = this.itemStorage.highlightLastItem();\r\n if (!recentlyHighlighted) return;\r\n\r\n this.itemStorage.setRecentlyHighlighted(recentlyHighlighted);\r\n this.dropdownPanel()?.scrollToRecentlyHighlighted('bottom');\r\n }\r\n private _onBackspaceOrDeletePress(event: KeyboardEvent): void {\r\n if (this.searchTerm() || !this.clearable() || this.noBackspaceClear() || !this.itemStorage.isAnyItemSelected()) return;\r\n\r\n event.preventDefault();\r\n if (this.multiselectable() && this.itemStorage.selectedItems().length > 1) {\r\n this._clearLastItem();\r\n return;\r\n }\r\n this._clearAllItems();\r\n }\r\n private _onCtrlAPress(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index()) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n <ng-template\r\n *ngIf=\"isValueWithinDisplayLimit($index)\"\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div\r\n [ardInnerHTML]=\"item.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></div>\r\n <!-- TODO check if can remove div -->\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-simple-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [ardInnerHTML]=\"group.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index()\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span\r\n [ardInnerHTML]=\"option.label()\"\r\n [ardEscapeInnerHTML]=\"isItemsInputUsed\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFormFieldFrameComponent } from './form-field-frame.component';\nimport { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';\n\n@NgModule({\n declarations: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumFormFieldFrameComponent, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective],\n})\nexport class ArdiumFormFieldFrameModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ArdiumChipModule } from './../chip/chip.module';\n\nimport { ArdiumClickOutsideEventModule, ArdiumInnerHTMLModule } from '@ardium-ui/devkit';\nimport { ArdiumDropdownPanelModule } from '../dropdown-panel/dropdown-panel.module';\nimport { ArdiumSelectComponent } from './select.component';\nimport {\n ArdAddCustomTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdOptionTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdValueTemplateDirective,\n} from './select.directive';\n\nimport { _ClearButtonModule } from './../_internal/clear-button/clear-button.module';\nimport { ArdiumFormFieldFrameModule } from '../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n imports: [\n CommonModule,\n ArdiumFormFieldFrameModule,\n ArdiumDropdownPanelModule,\n ArdiumChipModule,\n ArdiumClickOutsideEventModule,\n _ClearButtonModule,\n ArdiumInnerHTMLModule,\n ],\n exports: [\n ArdiumSelectComponent,\n //tempalate directives\n ArdOptionTemplateDirective,\n ArdOptgroupTemplateDirective,\n ArdValueTemplateDirective,\n ArdSelectPlaceholderTemplateDirective,\n ArdLoadingSpinnerTemplateDirective,\n ArdLoadingPlaceholderTemplateDirective,\n ArdDropdownHeaderTemplateDirective,\n ArdDropdownFooterTemplateDirective,\n ArdNoItemsFoundTemplateDirective,\n ArdValueChipTemplateDirective,\n ArdItemLimitReachedTemplateDirective,\n ArdItemDisplayLimitTemplateDirective,\n ArdAddCustomTemplateDirective,\n ArdSelectPrefixTemplateDirective,\n ArdSelectSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumOptionComponent } from './option.component';\n\n@NgModule({\n declarations: [ArdiumOptionComponent],\n imports: [CommonModule],\n exports: [ArdiumOptionComponent],\n})\nexport class ArdiumOptionModule {}\n","export type ArdTransformerFn = (\r\n currentText: string,\r\n previousText: string,\r\n caretPos: number\r\n) => { text: string; caretPos: number };\r\n\r\ninterface IRegExpTransformer {\r\n apply: ArdTransformerFn;\r\n}\r\nexport class RegExpTransformer implements IRegExpTransformer {\r\n constructor(\r\n public regex: RegExp,\r\n public replace = '',\r\n public caretModif = 0\r\n ) {}\r\n\r\n apply(currentText: string, previousText: string, caretPos: number): { text: string; caretPos: number } {\r\n let text = currentText;\r\n if (text && this.regex) {\r\n let safetySwitch = 0;\r\n while (text.match(this.regex)) {\r\n //prevent infinite loop\r\n if (safetySwitch > 999) {\r\n console.error(this, new Error('Possible infinite loop in the above RegExpTransformer. Exited after 1000 iterations.'));\r\n break;\r\n }\r\n //apply regex\r\n const lengthBefore = text.length;\r\n text = text.replace(this.regex, this.replace);\r\n const lengthAfter = text.length;\r\n //fix caret pos\r\n caretPos = caretPos + (lengthAfter - lengthBefore);\r\n //for infinite loop prevention\r\n safetySwitch++;\r\n }\r\n }\r\n return { text, caretPos };\r\n }\r\n}\r\n\r\nconst toUpper: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toUpperCase(), caretPos };\r\n};\r\nconst toLower: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n return { text: currentText.toLowerCase(), caretPos };\r\n};\r\nconst int: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [[/[^0-9-]/], [/(.+)-/, '$1']];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nconst float: ArdTransformerFn = (currentText: string, previousText: string, caretPos: number) => {\r\n const regexes: ([RegExp] | [RegExp, string] | [RegExp, string, number])[] = [\r\n [/[^0-9,.-]/],\r\n [/,/, '.'],\r\n [/(.+)-/, '$1'],\r\n [/\\.(.*)\\./, '$1.'],\r\n [/^(-?)\\./, '$10.'],\r\n ];\r\n let obj = { text: currentText, caretPos };\r\n for (const arr of regexes) {\r\n const [regex, replace, caretModif] = arr;\r\n obj = new RegExpTransformer(regex, replace, caretModif).apply(obj.text, previousText, obj.caretPos);\r\n }\r\n return obj;\r\n};\r\nexport const ArdTransformer = {\r\n ToUpper: toUpper,\r\n ToLower: toLower,\r\n Integer: int,\r\n Float: float,\r\n} as const;\r\n","import { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { isAnyString, isDefined, isNull, isNumber } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTransformer, RegExpTransformer } from './input-transformers';\r\n\r\nexport interface SimpleInputModelHost {\r\n readonly maxLength: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class SimpleInputModel {\r\n constructor(protected readonly _ardHostCmp: SimpleInputModelHost) {}\r\n\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-simple-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n //constraints\r\n v = this._applyLengthTransformer(v);\r\n //update view\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n clear(): void {\r\n this.value.set(null);\r\n this._updateInputElement();\r\n }\r\n\r\n _updateInputElement() {\r\n const el = this._ardHostCmp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n el.value = this.stringValue();\r\n }\r\n get caretPos(): number {\r\n return this._ardHostCmp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue.length;\r\n }\r\n set caretPos(pos: number) {\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n //! constraints\r\n protected _applyLengthTransformer(v: string | null): string | null {\r\n const max = this._ardHostCmp.maxLength();\r\n if (!isDefined(max)) return v;\r\n if (!v || v.length <= max) return v;\r\n\r\n v = v.substring(0, max);\r\n this.caretPos = max;\r\n return v;\r\n }\r\n}\r\nexport interface InputModelHost extends SimpleInputModelHost {\r\n charlist: Signal<RegExp | undefined>;\r\n}\r\nexport class InputModel extends SimpleInputModel {\r\n constructor(protected override readonly _ardHostCmp: InputModelHost) {\r\n super(_ardHostCmp);\r\n }\r\n protected override _writeValue(v: string | null): boolean {\r\n //transformers\r\n if (v) {\r\n let prev = this.stringValue();\r\n v = this._applyAllowOrDenylistTransformer(v, prev);\r\n prev = this.stringValue();\r\n v = this._applyLengthTransformer(v);\r\n }\r\n const oldVal = this.value();\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n\r\n setSelection(from: number | null, to: number | null): void;\r\n setSelection(from: number | null, to?: number | null): void {\r\n to = to ?? this.value()?.length ?? Infinity;\r\n this._ardHostCmp.textInputEl()?.nativeElement.setSelectionRange(from, to);\r\n }\r\n //* constraints\r\n protected _applyAllowOrDenylistTransformer(v: string, prev: string): string {\r\n const charlist = this._ardHostCmp.charlist();\r\n if (!charlist || !v) return v;\r\n const { text, caretPos } = new RegExpTransformer(charlist).apply(v, prev, this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n}\r\n\r\nexport interface NumberInputModelHost {\r\n readonly max: Signal<number>;\r\n readonly min: Signal<number>;\r\n readonly allowFloat: Signal<boolean>;\r\n readonly inputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class NumberInputModel {\r\n constructor(protected readonly _ardHostCmp: NumberInputModelHost) {}\r\n\r\n //! value setters/getters\r\n protected readonly _value = signal<string | null>(null);\r\n readonly value = this._value.asReadonly();\r\n readonly stringValue = computed(() => this._value() ?? '');\r\n readonly numberValue = computed(() => (this._value() === null ? null : Number(this._value())));\r\n\r\n setValue(v: string | number | null): void {\r\n const stringV = isNumber(v) ? String(v) : v;\r\n this._value.set(stringV);\r\n this._updateInputEl();\r\n }\r\n\r\n private _updateInputEl(): void {\r\n const stringV = this.stringValue();\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n if (!el) return;\r\n\r\n const caretPos = this.caretPos;\r\n el.value = stringV;\r\n this.caretPos = caretPos;\r\n }\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0070: Trying to set <ard-number-input>'s value to \"${typeof v}\", expected string, number, or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n v = String(v);\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | number | null): boolean {\r\n //constraints\r\n if (v) {\r\n v = this._removeDecimalPlaces(v);\r\n v = this._applyNumberConstraint(v);\r\n v = this._applyMinMaxConstraints(v);\r\n }\r\n //update view\r\n const oldVal = this._value();\r\n this.setValue(v);\r\n return oldVal !== v;\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this._value());\r\n }\r\n\r\n //! input element methods\r\n get caretPos(): number {\r\n return this._ardHostCmp.inputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n const el = this._ardHostCmp.inputEl()?.nativeElement;\r\n el?.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _removeDecimalPlaces(v: string | number | null): string | number {\r\n if (!v) return '';\r\n if (this._ardHostCmp.allowFloat()) return v;\r\n\r\n let num = isNumber(v) ? v : Number(v);\r\n\r\n if (!isNumber(v) && v.match(/[.,].+/)) {\r\n num = Number(v);\r\n }\r\n if (!isNaN(num)) return Math.round(num);\r\n return v;\r\n }\r\n private _applyNumberConstraint(v: string | number): string {\r\n if (!v) return '';\r\n\r\n const transformerFn = this._ardHostCmp.allowFloat() ? ArdTransformer.Float : ArdTransformer.Integer;\r\n const { text, caretPos } = transformerFn(String(v), this.stringValue(), this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyMinMaxConstraints(v: string): string {\r\n if (!v) return '';\r\n\r\n const numericValue = Number(v);\r\n if (numericValue > this._ardHostCmp.max()) return this._ardHostCmp.max().toString();\r\n if (numericValue < this._ardHostCmp.min()) return this._ardHostCmp.min().toString();\r\n return v;\r\n }\r\n}\r\n\r\nexport function escapeAndCreateRegex(str: string, flags?: string, negated = true): RegExp {\r\n str = str.replace(/([\\]]+)/g, '\\\\$1');\r\n return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdSimpleInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-prefix-tmp]' })\nexport class ArdSimpleInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-simple-input > ng-template[ard-suffix-tmp]' })\nexport class ArdSimpleInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { SimpleOneAxisAlignment } from './../../types/alignment.types';\r\nimport { SimpleInputModel, SimpleInputModelHost } from './../input-utils';\r\nimport {\r\n ArdSimpleInputPlaceholderTemplateDirective,\r\n ArdSimpleInputPrefixTemplateDirective,\r\n ArdSimpleInputSuffixTemplateDirective,\r\n} from './simple-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-simple-input',\r\n templateUrl: './simple-input.component.html',\r\n styleUrls: ['./simple-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSimpleInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSimpleInputComponent\r\n extends _NgModelComponentBase\r\n implements SimpleInputModelHost, ControlValueAccessor, AfterViewInit\r\n{\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new SimpleInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>(undefined);\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdSimpleInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdSimpleInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdSimpleInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => Boolean(this.placeholder()) && !this.inputModel.value());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.clearable() ? 'ard-clearable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! number attribute setters/getters\r\n readonly maxLength = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! no-value attribute setters/getters\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel.value();\r\n }\r\n readonly valueChange = output<string | null>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string | null>({ alias: 'input' });\r\n readonly changeEvent = output<string | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this._onChangeRegistered?.(this.value);\r\n this.inputEvent.emit(this.value);\r\n this.valueChange.emit(this.value);\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n this.changeEvent.emit(this.inputModel.value());\r\n }\r\n // clear button\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel.value())\r\n );\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit(event);\r\n this.focus();\r\n }\r\n\r\n //! copy event\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-simple-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSimpleInputComponent } from './simple-input.component';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport {\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n} from './simple-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\n\n@NgModule({\n declarations: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n imports: [CommonModule, _ClearButtonModule, ArdiumFormFieldFrameModule],\n exports: [\n ArdiumSimpleInputComponent,\n ArdSimpleInputPlaceholderTemplateDirective,\n ArdSimpleInputPrefixTemplateDirective,\n ArdSimpleInputSuffixTemplateDirective,\n ],\n})\nexport class ArdiumSimpleInputModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { any, isDefined, isPrimitive } from 'simple-bool';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface SimplestItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n}\r\nexport interface SimplestItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly DEFAULTS: SimplestItemStorageHostDefaults;\r\n}\r\n\r\nexport class SimplestItemStorage {\r\n private readonly _items = signal<ArdSimplestStorageItem[]>([]);\r\n private readonly _highlightedItem = signal<Nullable<ArdSimplestStorageItem>>(null);\r\n\r\n constructor(private readonly _ardParentComp: SimplestItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * The currently highlighted item.\r\n */\r\n readonly highlightedItem = this._highlightedItem.asReadonly();\r\n /**\r\n * True if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => isDefined(this._highlightedItem()));\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `suggValueFrom` and `suggLabelFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: any[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (any(items, isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdSimplestStorageItem {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n\r\n /**\r\n * Selects the given item.\r\n * @param items The item to select.\r\n * @returns The value of the selected item.\r\n */\r\n selectItem(item: ArdSimplestStorageItem): any {\r\n return item.value;\r\n }\r\n selectCurrent(): any {\r\n const hi = this._highlightedItem();\r\n if (!hi) return undefined;\r\n return this.selectItem(hi);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightCurrent(): void {\r\n const hi = this._highlightedItem();\r\n if (hi) {\r\n hi.highlighted.set(false);\r\n }\r\n this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights a given item.\r\n * @param item The item to be highlighted.\r\n */\r\n highlightItem(item: ArdSimplestStorageItem): void {\r\n this.unhighlightCurrent();\r\n\r\n item.highlighted.set(true);\r\n\r\n this._highlightedItem.set(item);\r\n }\r\n /**\r\n * Unhighlights a given item.\r\n * @param item The item to be unhighlighted.\r\n */\r\n unhighlightItem(item: ArdSimplestStorageItem): void {\r\n item.highlighted.set(false);\r\n\r\n if (this._highlightedItem()?.index() === item.index()) this._highlightedItem.set(null);\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().first();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdSimplestStorageItem | null {\r\n if (!this._items().length) return null;\r\n\r\n this.unhighlightCurrent();\r\n\r\n const itemToHighlight = this._items().last();\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number): ArdSimplestStorageItem | null {\r\n const currentItem = this._highlightedItem();\r\n if (!currentItem) {\r\n return this.highlightFirstItem();\r\n }\r\n const items = this._items();\r\n const currentIndexInItems = items.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= items.length) {\r\n nextItemIndex -= items.length;\r\n } else if (nextItemIndex < 0) {\r\n nextItemIndex += items.length;\r\n }\r\n const itemToHighlight = items[nextItemIndex];\r\n\r\n this.highlightItem(itemToHighlight);\r\n\r\n return itemToHighlight;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\nimport { ArdSimplestStorageItem, OptionContext } from '../../types/item-storage.types';\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suggestion-tmp]' })\r\nexport class ArdSuggestionTemplateDirective {\r\n constructor(public template: TemplateRef<OptionContext<ArdSimplestStorageItem>>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-placeholder-tmp]' })\r\nexport class ArdInputPlaceholderTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-loading-tmp]' })\r\nexport class ArdInputLoadingTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-prefix-tmp]' })\r\nexport class ArdInputPrefixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-input > ng-template[ard-suffix-tmp]' })\r\nexport class ArdInputSuffixTemplateDirective {\r\n constructor(public template: TemplateRef<undefined>) {}\r\n}\r\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isString } from 'simple-bool';\r\nimport { SimplestItemStorage, SimplestItemStorageHost } from '../../_internal/item-storages/simplest-item-storage';\r\nimport { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel/dropdown-panel.types';\r\nimport { ArdSimplestStorageItem } from '../../types/item-storage.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ArdiumSimpleInputComponent } from '../simple-input/simple-input.component';\r\nimport { OptionContext } from './../../types/item-storage.types';\r\nimport { InputModel, InputModelHost, escapeAndCreateRegex } from './../input-utils';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@Component({\r\n selector: 'ard-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumInputComponent\r\n extends ArdiumSimpleInputComponent\r\n implements InputModelHost, SimplestItemStorageHost, AfterViewInit\r\n{\r\n private readonly element!: HTMLElement;\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private overlay: Overlay,\r\n private scrollStrategyOpts: ScrollStrategyOptions\r\n ) {\r\n super();\r\n\r\n this.element = viewContainerRef.element.nativeElement;\r\n }\r\n\r\n override readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n suggestionsLoadingText: 'Loading...',\r\n };\r\n //! input view\r\n protected override readonly inputModel = new InputModel(this);\r\n\r\n //! allowlist/denylist of characters\r\n //use standard string for denylist, prepend with ^ for allowlist\r\n readonly charlistFromInput = input<RegExp | undefined, string>(undefined, {\r\n alias: 'charlist',\r\n transform: v => {\r\n if (!isString(v)) {\r\n throw new Error('ARD-FT0033: [charlist] must be a non-empty string, got \"\".');\r\n }\r\n const negated = v.startsWith('^');\r\n return escapeAndCreateRegex(v, '', !negated);\r\n },\r\n });\r\n readonly charlistCaseInsensitive = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly charlist = computed<RegExp | undefined>(() => {\r\n const c = this.charlistFromInput();\r\n if (!this.charlistCaseInsensitive() || !c) {\r\n return c;\r\n }\r\n return new RegExp(c.source, 'i');\r\n });\r\n\r\n //! autocomplete\r\n readonly autocomplete = input<Nullable<string>>(undefined);\r\n\r\n readonly shouldDisplayAutocomplete = computed<boolean>(() => !this.disabled() && Boolean(this.autocomplete()));\r\n\r\n //autocomplete event\r\n readonly acceptAutocompleteEvent = output({ alias: 'acceptAutocomplete' });\r\n\r\n //! prefix & suffix\r\n override readonly prefixTemplate = contentChild(ArdInputPrefixTemplateDirective);\r\n override readonly suffixTemplate = contentChild(ArdInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n override readonly placeholderTemplate = contentChild(ArdInputPlaceholderTemplateDirective);\r\n\r\n //! suggestions\r\n readonly suggestionStorage = new SimplestItemStorage(this);\r\n\r\n readonly valueFrom = input<Nullable<string>>(undefined, { alias: 'suggValueFrom' });\r\n readonly labelFrom = input<Nullable<string>>(undefined, { alias: 'suggLabelFrom' });\r\n\r\n readonly acceptSuggestionEvent = output<any>({ alias: 'acceptSuggestion' });\r\n\r\n readonly suggestionItems = this.suggestionStorage.items;\r\n\r\n @Input()\r\n set suggestions(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.suggestionStorage.setItems(value);\r\n\r\n this._suggestionDropdowOpen.set(true);\r\n this.suggestionStorage.highlightFirstItem();\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n\r\n private _printPrimitiveWarnings() {\r\n function makeWarning(str: string): void {\r\n console.warn(\r\n `ARD-WA0031: Skipped using [${str}] property bound to <ard-input>, as some provided suggestion items are of primitive type`\r\n );\r\n }\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n }\r\n\r\n private readonly _suggestionDropdowOpen = signal<boolean>(false);\r\n\r\n readonly shouldDisplaySuggestions = computed(\r\n () => !this.disabled() && (this.suggestionItems().length > 0 || this.areSuggestionsLoading()) && this._suggestionDropdowOpen()\r\n );\r\n\r\n readonly areSuggestionsLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly suggestionsLoadingText = input<string>(this.DEFAULTS.suggestionsLoadingText);\r\n\r\n readonly suggestionTemplate = contentChild(ArdSuggestionTemplateDirective);\r\n readonly suggestionLoadingTemplate = contentChild(ArdInputLoadingTemplateDirective);\r\n\r\n //! suggestions overlay\r\n readonly dropdownHost = viewChild<ElementRef<HTMLDivElement>>('suggestionsHost');\r\n readonly dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });\r\n\r\n private dropdownOverlay!: OverlayRef;\r\n\r\n override ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n const strategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.dropdownHost()!)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n } as ConnectedPosition,\r\n ])\r\n .withPush(false);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this.dropdownOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate()!, this.viewContainerRef);\r\n this.dropdownOverlay.attach(portal);\r\n\r\n this.setOverlaySize();\r\n }\r\n\r\n setOverlaySize(): void {\r\n const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();\r\n this.dropdownOverlay.updateSize({ width: rect?.width });\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n this.setOverlaySize();\r\n }\r\n\r\n getOptionContext(item: ArdSimplestStorageItem): OptionContext<ArdSimplestStorageItem> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData,\r\n };\r\n }\r\n\r\n //! suggestion-highligh-related\r\n private _isMouseBeingUsed = false;\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this._isMouseBeingUsed = true;\r\n }\r\n onSuggestionMouseEnter(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.highlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n onSuggestionMouseLeave(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n if (!this._isMouseBeingUsed) return;\r\n this.suggestionStorage.unhighlightItem(item);\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n //! suggestion selection\r\n selectSuggestion(item: ArdSimplestStorageItem, event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n this._selectSuggestion(item);\r\n }\r\n private _selectSuggestion(item: ArdSimplestStorageItem): void {\r\n const selected = this.suggestionStorage.selectItem(item);\r\n this.writeValue(selected ?? '');\r\n\r\n this.acceptSuggestionEvent.emit(selected);\r\n\r\n //important to do those two things in this exact order\r\n this.focus();\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n handleSuggestionClickOutside(event: MouseEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n\r\n const target = event.target as HTMLElement;\r\n if (this.element.contains(target)) return;\r\n\r\n this._suggestionDropdowOpen.set(false);\r\n }\r\n //! suggestion appearance\r\n readonly dropdownAppearance = input<Nullable<DropdownPanelAppearance>>(undefined);\r\n readonly dropdownAppearanceOrDefault = computed(() => {\r\n if (this.dropdownAppearance()) return this.dropdownAppearance()!;\r\n if (this.appearance() === FormElementAppearance.Outlined) return DropdownPanelAppearance.Outlined;\r\n return DropdownPanelAppearance.Raised;\r\n });\r\n readonly dropdownVariant = input<Nullable<DropdownPanelVariant>>(undefined);\r\n readonly dropdownVariantOrDefault = computed(() => {\r\n if (this.dropdownVariant()) return this.dropdownVariant()!;\r\n const variant = this.variant();\r\n if (variant === FormElementVariant.Pill) return DropdownPanelVariant.Rounded;\r\n return variant;\r\n });\r\n\r\n //! focus override\r\n override onFocus(event: FocusEvent): void {\r\n this._suggestionDropdowOpen.set(true);\r\n if (!this.suggestionStorage.highlightedItem()) this.suggestionStorage.highlightFirstItem();\r\n\r\n super.onFocus(event);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Enter': {\r\n this._onTabOrEnterPress(event);\r\n this._onEnterPress(event);\r\n return;\r\n }\r\n case 'Tab': {\r\n this._onTabOrEnterPress(event);\r\n return;\r\n }\r\n case 'ArrowDown': {\r\n this._onArrowDownPress(event);\r\n return;\r\n }\r\n case 'ArrowUp': {\r\n this._onArrowUpPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _onTabOrEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplayAutocomplete()) return;\r\n event.preventDefault();\r\n\r\n this.onInput(this.autocomplete() ?? '');\r\n this.acceptAutocompleteEvent.emit();\r\n }\r\n private _onEnterPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n const item = this.suggestionStorage.highlightedItem();\r\n if (!item) return;\r\n\r\n event.preventDefault();\r\n this._selectSuggestion(item);\r\n }\r\n private _onArrowDownPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(+1);\r\n }\r\n private _onArrowUpPress(event: KeyboardEvent): void {\r\n if (!this.shouldDisplaySuggestions()) return;\r\n event.preventDefault();\r\n\r\n this._isMouseBeingUsed = false;\r\n\r\n this.suggestionStorage.highlightNextItem(-1);\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index()) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected()\"\r\n [class.ard-option-highlighted]=\"item.highlighted()\"\r\n [attr.aria-selected]=\"item.selected()\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumClickOutsideEventModule } from '@ardium-ui/devkit';\r\nimport { ArdiumDropdownPanelModule } from '../../dropdown-panel/dropdown-panel.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumInputComponent } from './input.component';\r\nimport {\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ArdSuggestionTemplateDirective,\r\n} from './input.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumFormFieldFrameModule,\r\n _ClearButtonModule,\r\n ArdiumDropdownPanelModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumInputComponent,\r\n ArdSuggestionTemplateDirective,\r\n ArdInputPlaceholderTemplateDirective,\r\n ArdInputLoadingTemplateDirective,\r\n ArdInputPrefixTemplateDirective,\r\n ArdInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumInputModule {}\r\n","export const DigitInputShape = {\r\n Square: 'square',\r\n Rectangle: 'rectangle',\r\n} as const;\r\nexport type DigitInputShape = (typeof DigitInputShape)[keyof typeof DigitInputShape];\r\n\r\nexport const TransformType = {\r\n Uppercase: 'uppercase',\r\n Lowercase: 'lowercase',\r\n} as const;\r\nexport type TransformType = (typeof TransformType)[keyof typeof TransformType];\r\n\r\nexport const DigitInputPrimitiveOption = {\r\n Number: 'number',\r\n Letter: 'letter',\r\n Alphanumeric: 'alphanumeric',\r\n Special: 'special',\r\n} as const;\r\nexport type DigitInputPrimitiveOption = (typeof DigitInputPrimitiveOption)[keyof typeof DigitInputPrimitiveOption];\r\n\r\nexport interface DigitInputAcceptObject {\r\n accept: string | RegExp | ((char: string, charsBefore: string) => boolean);\r\n transform?: TransformType | null;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputStaticObject {\r\n static: string;\r\n}\r\n\r\nexport type DigitInputOption = DigitInputAcceptObject | DigitInputStaticObject;\r\n\r\nexport type DigitInputConfig = (DigitInputPrimitiveOption | DigitInputOption)[] | string | number;\r\n","import { ElementRef, Signal } from '@angular/core';\r\n\r\nexport interface DigitInputConfigData {\r\n type: DigitInputConfigDataType;\r\n char?: string;\r\n index?: number;\r\n readonly?: boolean;\r\n}\r\nexport interface DigitInputModelHost {\r\n readonly inputs: Signal<readonly ElementRef<HTMLInputElement>[]>;\r\n}\r\n\r\nexport const DigitInputConfigDataType = {\r\n Input: 'input',\r\n Static: 'static',\r\n} as const;\r\nexport type DigitInputConfigDataType = (typeof DigitInputConfigDataType)[keyof typeof DigitInputConfigDataType];\r\n\r\nexport function _sanitizeRegExpString(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n","import { computed, effect, signal } from '@angular/core';\r\nimport { coerceArrayProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';\r\nimport {\r\n DigitInputAcceptObject,\r\n DigitInputConfig,\r\n DigitInputOption,\r\n DigitInputPrimitiveOption,\r\n TransformType,\r\n} from './digit-input.types';\r\nimport { DigitInputConfigData, DigitInputConfigDataType, DigitInputModelHost, _sanitizeRegExpString } from './digit-input.utils';\r\n\r\nexport class DigitInputModel {\r\n constructor(private _ardHost: DigitInputModelHost) {\r\n //set the value array to be the same length\r\n effect(\r\n () => {\r\n const length = this.configArrayData().length;\r\n\r\n this.value.update(arr => {\r\n if (!arr) return new Array(length).fill(null);\r\n if (arr.length >= length) return arr.slice(0, length);\r\n return [...arr, ...new Array(length - arr.length).fill(null)];\r\n });\r\n },\r\n { allowSignalWrites: true }\r\n );\r\n }\r\n\r\n private readonly _configArray = signal<DigitInputOption[]>([]);\r\n\r\n readonly configArrayData = computed<DigitInputConfigData[]>(() => {\r\n let inputIndex = 0;\r\n return this._configArray().map(v => {\r\n if ('static' in v) {\r\n return {\r\n type: DigitInputConfigDataType.Static,\r\n char: v.static,\r\n };\r\n }\r\n return {\r\n type: DigitInputConfigDataType.Input,\r\n index: inputIndex++,\r\n };\r\n });\r\n });\r\n\r\n private readonly _configArrayNoStatics = computed<DigitInputAcceptObject[]>(\r\n () => this._configArray().filter(v => !('static' in v)) as DigitInputAcceptObject[]\r\n );\r\n\r\n readonly isConfigDefined = computed((): boolean => this._configArray().length > 0);\r\n\r\n readonly value = signal<(string | null)[] | null>(null);\r\n\r\n readonly stringValue = computed(\r\n (): string =>\r\n this.value()\r\n ?.map(v => v ?? ' ')\r\n .join('')\r\n .trimEnd() ?? ''\r\n );\r\n\r\n readonly isValueFull = computed((): boolean => this.value()?.filter(v => v).length === this._configArrayNoStatics().length);\r\n\r\n isDefinedAtIndex(index: number): boolean {\r\n return !!this.value()?.[index];\r\n }\r\n\r\n writeValue(v: any): boolean {\r\n if (!isArray(v) && !isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-digit-input>'s value to \"${v}\" (of type ${typeof v}), expected string or array of strings.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n const vArray = coerceArrayProperty(v);\r\n const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);\r\n if (problemIndex !== -1) {\r\n throw new Error(\r\n `ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element \"${vArray[problemIndex]}\" at index ${problemIndex} does not match those requirements.`\r\n );\r\n }\r\n return this._writeValue(vArray);\r\n }\r\n private _writeValue(v: string[] | null): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v && v.map(el => el || null));\r\n this.validateValueAndUpdate();\r\n this._updateInputElements();\r\n return oldVal !== v;\r\n }\r\n\r\n private _updateInputElements() {\r\n const value = this.value ?? [];\r\n let i = 0;\r\n for (const inputEl of this._ardHost.inputs()) {\r\n inputEl.nativeElement.value = value()?.[i] ?? '';\r\n i++;\r\n }\r\n }\r\n\r\n //! setting config\r\n setConfig(config: DigitInputConfig): void {\r\n this._setConfig(config);\r\n this.validateValueAndUpdate();\r\n }\r\n private _setConfig(config: DigitInputConfig): void {\r\n //map a number to ready objects\r\n let configAsNumber = isAnyString(config) ? Number(config) : null;\r\n if (isNumber(config) || isNumber(configAsNumber)) {\r\n configAsNumber = isNumber(config) ? config : configAsNumber!;\r\n this._configArray.set(new Array(configAsNumber).fill({ accept: (str: string) => /[0-9]/.test(str) }));\r\n return;\r\n }\r\n //map a string to an array\r\n let configArr: string[] | Exclude<DigitInputConfig, number | string>;\r\n if (isAnyString(config)) {\r\n configArr = coerceArrayProperty(config);\r\n } else {\r\n configArr = config;\r\n }\r\n //map array to ready objects\r\n this._configArray.set(\r\n configArr.map((v, i) => {\r\n if (!isAnyString(v)) {\r\n if ('accept' in v && !isFunction(v.accept)) {\r\n const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);\r\n v.accept = str => regExp.test(str);\r\n }\r\n return v;\r\n }\r\n\r\n switch (v) {\r\n case DigitInputPrimitiveOption.Number:\r\n return { accept: str => /[0-9]/.test(str) };\r\n case DigitInputPrimitiveOption.Letter:\r\n return { accept: str => /[a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Alphanumeric:\r\n return { accept: str => /[0-9a-zA-Z]/.test(str) };\r\n case DigitInputPrimitiveOption.Special:\r\n return { accept: str => /[!@#$%^&*-_=+/\\\\.,]/.test(str) };\r\n\r\n default:\r\n if (configArr.length === 1) {\r\n throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got \"${v}\"`);\r\n }\r\n throw new Error(`ARD-NF0043B: Found invalid string \"${v}\" in <ard-digit-input>'s config at index ${i}`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n //! validate against the config\r\n validateInputAndSetValue(input: string, index: number): false | [boolean, string | null] {\r\n if (index < 0 || index > this._configArrayNoStatics().length) return false;\r\n\r\n let v = this.value();\r\n //prepare the value array if does not exist\r\n if (!v) {\r\n this.value.set([]);\r\n }\r\n v = [];\r\n //prepare the characters before the current one (to be used in validation)\r\n const before = this.stringValue().charAt(index);\r\n\r\n //remove the old character from the input element\r\n if (before && input.length > 1 && input.match(before)) {\r\n input = input.replace(before, '');\r\n }\r\n //use only the first or last character (error safety)\r\n const firstChar = input.charAt(0);\r\n const lastChar = input.charAt(input.length - 1);\r\n input = firstChar === before ? lastChar : firstChar;\r\n\r\n //validate and transform, if necessary\r\n const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics()[index]);\r\n\r\n //get the corresponding HTML input element\r\n const inputEl = this._ardHost.inputs()[index];\r\n if (!inputEl) {\r\n throw new Error(\r\n \"ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.\"\r\n );\r\n }\r\n //update the input element and value array\r\n const newVal = inputChar ?? before;\r\n inputEl.nativeElement.value = newVal ?? '';\r\n\r\n this.value.update(arr => {\r\n if (!arr) arr = [];\r\n const newArr = [...arr];\r\n newArr[index] = newVal || null;\r\n return newArr;\r\n });\r\n //return changes marker and validated value\r\n return [newVal !== before, inputChar];\r\n }\r\n validateValueAndUpdate(): void {\r\n const v = this.value();\r\n if (!v) return;\r\n\r\n let before = '';\r\n const newValue: (string | null)[] = [];\r\n for (let i = 0; i < Math.min(this._configArrayNoStatics().length, v.length); i++) {\r\n const char = v[i];\r\n before += char ?? ' ';\r\n\r\n if (!char) {\r\n newValue.push(char);\r\n continue;\r\n }\r\n const config = this._configArrayNoStatics()[i];\r\n\r\n const newChar = this._validateSingleChar(char, before, config);\r\n newValue.push(newChar);\r\n }\r\n this.value.set(newValue);\r\n }\r\n private _validateSingleChar(char: string | null, before: string, config: DigitInputAcceptObject): string | null {\r\n if (config.readonly) {\r\n throw new Error(\r\n `ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`\r\n );\r\n }\r\n if (!isFunction(config.accept)) {\r\n const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);\r\n config.accept = str => regExp.test(str);\r\n }\r\n if (!char) return char;\r\n\r\n const canAccept = config.accept(char, before);\r\n if (!canAccept) return null;\r\n\r\n if (config.transform) {\r\n if (config.transform === TransformType.Lowercase) {\r\n return char.toLowerCase();\r\n }\r\n if (config.transform === TransformType.Uppercase) {\r\n return char.toUpperCase();\r\n }\r\n console.warn(\r\n `ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's \"transform\" property. Ardium UI was able to handle this issue, but please report it to the creators.`\r\n );\r\n }\r\n return char;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { DigitInputModel } from './digit-input.model';\r\nimport { DigitInputConfig, DigitInputShape } from './digit-input.types';\r\nimport { DigitInputModelHost } from './digit-input.utils';\r\n\r\n@Component({\r\n selector: 'ard-digit-input',\r\n templateUrl: './digit-input.component.html',\r\n styleUrls: ['./digit-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumDigitInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumDigitInputComponent extends _NgModelComponentBase implements ControlValueAccessor, DigitInputModelHost {\r\n //! inputs ref\r\n readonly inputs = viewChildren<ElementRef<HTMLInputElement>>('input');\r\n\r\n //! data model\r\n private readonly model = new DigitInputModel(this);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly shape = input<DigitInputShape>(DigitInputShape.Square);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-shape-${this.shape()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! model access points\r\n readonly config = input.required<void, DigitInputConfig>({\r\n transform: v => this.model.setConfig(v),\r\n });\r\n readonly configArrayData = this.model.configArrayData;\r\n\r\n private _oldConfigArrayDataLength = -1;\r\n readonly configArrayDataEffect = effect(() => {\r\n if (this.configArrayData().length === this._oldConfigArrayDataLength) return;\r\n\r\n this._oldConfigArrayDataLength = this.configArrayData().length;\r\n this._emitChange();\r\n });\r\n\r\n isInputEmpty(index: number): boolean {\r\n return !this.model.isDefinedAtIndex(index);\r\n }\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any): void {\r\n this._writeValue(v);\r\n }\r\n private _writeValue(v: any): boolean {\r\n return this.model.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n readonly outputAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @Input()\r\n set value(v: string | (string | null)[] | null) {\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<string | (string | null)[] | null>();\r\n\r\n readonly stringValue = this.model.stringValue;\r\n\r\n readonly emittableValue = computed((): string | (string | null)[] | null => {\r\n if (this.outputAsString()) return this.model.stringValue();\r\n return this.model.value();\r\n });\r\n\r\n //! event emitters\r\n readonly finishedValue = output<string | (string | null)[] | null>();\r\n\r\n readonly focusIndexEvent = output<number>({ alias: 'focusIndex' });\r\n readonly blurIndexEvent = output<number>({ alias: 'blurIndex' });\r\n\r\n //! event handlers\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n const value = event.clipboardData?.getData('text');\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (!value) return;\r\n\r\n const maxLength = this.inputs().length - index;\r\n value\r\n .slice(0, maxLength)\r\n .split('')\r\n .forEach((char, i) => {\r\n this.model.validateInputAndSetValue(char, index + i);\r\n });\r\n this.focusByIndex(index - 1 + Math.min(value.length, maxLength));\r\n }\r\n onInput(event: Event, index: number): void {\r\n this._updateSingleInputValue((event.target as HTMLInputElement).value, index);\r\n this.focusByIndex(index + 1);\r\n }\r\n private _updateSingleInputValue(value: string, index: number): void {\r\n const valueChanged = this.model.validateInputAndSetValue(value, index);\r\n if (!valueChanged || !valueChanged[0]) return;\r\n\r\n this._emitChange();\r\n\r\n if (this.model.isValueFull()) {\r\n this.blur();\r\n }\r\n }\r\n focusByIndex(index: number): boolean;\r\n focusByIndex(index: number, tryFocusingNext: boolean, direction: 1 | -1): boolean;\r\n focusByIndex(index: number, tryFocusingNext?: boolean, direction?: 1 | -1): boolean {\r\n if (index < 0 || index >= this.inputs().length) return false;\r\n const nextEl = this.inputs()[index]?.nativeElement;\r\n if (!nextEl) return false;\r\n\r\n nextEl.focus();\r\n if (tryFocusingNext && direction && document.activeElement !== nextEl) {\r\n return this.focusByIndex(index + direction);\r\n }\r\n return document.activeElement === nextEl;\r\n }\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent, index: number): void {\r\n this.focusIndexEvent.emit(index);\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent, index: number): void {\r\n this.blurIndexEvent.emit(index);\r\n this.onBlur(event);\r\n }\r\n protected _emitChange(): void {\r\n const v = this.emittableValue();\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n if (this.model.isValueFull()) {\r\n this.finishedValue.emit(v);\r\n }\r\n }\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n this.focusByIndex(index - 1, true, -1);\r\n return;\r\n case 'ArrowRight':\r\n this.focusByIndex(index + 1, true, +1);\r\n return;\r\n case 'Home':\r\n this.focusByIndex(0, true, 1);\r\n return;\r\n case 'End':\r\n this.focusByIndex(this.inputs.length - 1, true, -1);\r\n return;\r\n case 'Backspace':\r\n case 'Delete':\r\n this._updateSingleInputValue('', index);\r\n this.focusByIndex(index - 1, true, -1);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDigitInputComponent } from './digit-input.component';\n\n@NgModule({\n declarations: [ArdiumDigitInputComponent],\n imports: [CommonModule],\n exports: [ArdiumDigitInputComponent],\n})\nexport class ArdiumDigitInputModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { PasswordInputRevealButtonContext } from './password-input.types';\n\n@Directive({\n selector: 'ard-password-input > ng-template[ard-placeholder-tmp]',\n})\nexport class ArdPasswordInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-prefix-tmp]' })\nexport class ArdPasswordInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-suffix-tmp]' })\nexport class ArdPasswordInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-password-input > ng-template[ard-reveal-tmp]' })\nexport class ArdPasswordInputRevealButtonTemplateDirective {\n constructor(public template: TemplateRef<PasswordInputRevealButtonContext>) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'icon',\n})\nexport class ArdiumIconPipe implements PipeTransform {\n transform(value: string): string {\n value = value.trim().toLowerCase();\n value = value.replace(/[ -]/g, '_');\n return value;\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\ntype WeightNumber = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\r\ntype WeightString = '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';\r\n\r\ntype GradeNumber = -25 | 0 | 200;\r\ntype GradeString = '-25' | '0' | '200';\r\n\r\ntype OpticalSizeNumber = 20 | 24 | 40 | 48;\r\ntype OpticalSizeString = '20' | '24' | '40' | '48';\r\n\r\n@Component({\r\n selector: 'ard-icon',\r\n templateUrl: `./icon.component.html`,\r\n styleUrls: ['./icon.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n readonly icon = input<Nullable<string>>(undefined);\r\n\r\n readonly filled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly weight = input<WeightNumber | undefined, Nullable<WeightNumber | WeightString>>(400, {\r\n transform: v => coerceNumberProperty(v, 400) as WeightNumber,\r\n });\r\n readonly grade = input<GradeNumber | undefined, Nullable<GradeNumber | GradeString>>(0, {\r\n transform: v => coerceNumberProperty(v, 0) as GradeNumber,\r\n });\r\n readonly opticalSize = input<OpticalSizeNumber | undefined, Nullable<OpticalSizeNumber | OpticalSizeString>>(40, {\r\n transform: v => coerceNumberProperty(v, 40) as OpticalSizeNumber,\r\n });\r\n\r\n readonly fontVariationSettings = computed<string>(() => {\r\n //map values to different properties defined by google icons\r\n const propObject = {\r\n FILL: isDefined(this.filled()) ? Number(this.filled()) : undefined,\r\n wght: this.weight(),\r\n GRAD: this.grade(),\r\n opsz: this.opticalSize(),\r\n };\r\n //map the object to an array of strings\r\n const propObjectAsArray = Object.entries(propObject) //object to array\r\n .filter(v => isDefined(v[1])) //filter undefined values\r\n .map(v => `\"${v[0]}\" ${v[1]}`) //map key-value pairs to strings\r\n .flat(); //flatten\r\n\r\n //create the final string only if any of the properties are defined\r\n return propObjectAsArray.length === 0 ? '' : ['font-variation-settings: ', propObjectAsArray.join(', ')].join('');\r\n });\r\n\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.icon() && !this.contentWrapper()?.nativeElement.innerText) {\r\n console.warn(`ARD-FT9000: Using <ard-icon> without specifying the [icon] field.`);\r\n }\r\n }\r\n}\r\n","<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isAnyString, isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport {\r\n ArdPasswordInputPlaceholderTemplateDirective,\r\n ArdPasswordInputPrefixTemplateDirective,\r\n ArdPasswordInputRevealButtonTemplateDirective,\r\n ArdPasswordInputSuffixTemplateDirective,\r\n} from './password-input.directives';\r\nimport { PasswordInputRevealButtonContext } from './password-input.types';\r\n\r\n@Component({\r\n selector: 'ard-password-input',\r\n templateUrl: './password-input.component.html',\r\n styleUrls: ['./password-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumPasswordInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumPasswordInputComponent extends _NgModelComponentBase implements ControlValueAccessor, OnInit, OnDestroy {\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n ngOnInit(): void {\r\n this._setInputAttributes();\r\n }\r\n\r\n readonly placeholder = input<string>('');\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdPasswordInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdPasswordInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholderTemplate = contentChild(ArdPasswordInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.value());\r\n\r\n //! revealing\r\n readonly revealable = input<boolean, any>(true, { transform: v => coerceBooleanProperty(v) });\r\n readonly holdToReveal = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly autoHideTimeoutMs = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly revealed = model<boolean>(false);\r\n\r\n private _hideTimeout: NodeJS.Timeout | null = null;\r\n toggleReveal(newState = !this.revealed()): void {\r\n this.revealed.set(newState);\r\n\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n const timeout = this.autoHideTimeoutMs();\r\n if (timeout && newState) {\r\n this._hideTimeout = setTimeout(() => this.revealed.set(false), timeout);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._hideTimeout) {\r\n clearTimeout(this._hideTimeout);\r\n }\r\n }\r\n\r\n readonly revealTemplate = contentChild(ArdPasswordInputRevealButtonTemplateDirective);\r\n\r\n readonly revealButtonContext = computed(\r\n (): PasswordInputRevealButtonContext => ({\r\n $implicit: this.revealed(),\r\n })\r\n );\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.revealable() ? 'ard-revealable' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!isAnyString(v) && isDefined(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(\r\n `ARD-WA0020: Trying to set <ard-password-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`\r\n )\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n return;\r\n }\r\n this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null | undefined): boolean {\r\n const oldVal = this.value();\r\n this.value.set(v);\r\n return oldVal !== v;\r\n }\r\n //! value two-way binding\r\n readonly value = model<Nullable<string>>();\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this._writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value();\r\n this._onChangeRegistered?.(v);\r\n }\r\n //focus, blur, change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n const textInputEl = this.textInputEl();\r\n const v = this.value();\r\n if (\r\n v &&\r\n textInputEl &&\r\n //does the selection cover the entire input\r\n ((textInputEl.nativeElement.selectionStart === 0 &&\r\n textInputEl.nativeElement.selectionEnd === textInputEl.nativeElement.value.length) ||\r\n //or is zero-wide\r\n textInputEl.nativeElement.selectionStart === textInputEl.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', v);\r\n event.preventDefault();\r\n }\r\n }\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()?.nativeElement;\r\n if (!input) return;\r\n\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex()),\r\n ...this.inputAttrs(),\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconComponent } from './icon.component';\nimport { ArdiumIconPipe } from './icon.pipe';\n\n@NgModule({\n declarations: [ArdiumIconComponent, ArdiumIconPipe],\n imports: [CommonModule],\n exports: [ArdiumIconComponent, ArdiumIconPipe],\n})\nexport class ArdiumIconModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumPasswordInputComponent } from './password-input.component';\nimport {\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n} from './password-input.directives';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n imports: [CommonModule, ArdiumFormFieldFrameModule, ArdiumIconModule],\n exports: [\n ArdiumPasswordInputComponent,\n ArdPasswordInputPlaceholderTemplateDirective,\n ArdPasswordInputPrefixTemplateDirective,\n ArdPasswordInputSuffixTemplateDirective,\n ArdPasswordInputRevealButtonTemplateDirective,\n ],\n})\nexport class ArdiumPasswordInputModule {}\n","\r\n\r\nexport const ButtonType = {\r\n Button: 'button',\r\n Submit: 'submit',\r\n Reset: 'reset',\r\n} as const;\r\nexport type ButtonType = typeof ButtonType[keyof typeof ButtonType];","/**\n * General button appearance. Controls which parts of the button can be colored.\n *\n * @see {@link ButtonColoringMode}\n */\nexport const ButtonAppearance = {\n /**\n * No border and no background. Text and icon are colored.\n */\n Transparent: 'transparent',\n /**\n * No border, but with text shadow. Text, icon, and background are colored.\n */\n Raised: 'raised',\n /**\n * No border, but with text shadow. White background. Text and icon are colored.\n */\n RaisedStrong: 'raised-strong',\n /**\n * White background. Text and icon are colored.\n */\n Outlined: 'outlined',\n /**\n * White background. Text, icon, and border may be colored.\n *\n * Background becomes colored on hover/focus.\n */\n OutlinedStrong: 'outlined-strong',\n /**\n * No border. Text, icon, and background are colored.\n */\n Flat: 'flat',\n} as const;\nexport type ButtonAppearance = (typeof ButtonAppearance)[keyof typeof ButtonAppearance];\n\nexport const ButtonVariant = {\n /**\n * Basic, rectangular button.\n */\n Rounded: 'rounded',\n /**\n * Pill-shaped button.\n */\n Pill: 'pill',\n /**\n * Basic, rectangular button with sharp corners.\n */\n Sharp: 'sharp',\n} as const;\nexport type ButtonVariant = (typeof ButtonVariant)[keyof typeof ButtonVariant];\n\n/**\n * **F**loating **A**ction **B**utton size.\n */\nexport const FABSize = {\n Standard: 'standard',\n Small: 'small',\n} as const;\nexport type FABSize = (typeof FABSize)[keyof typeof FABSize];\n","import { Directive, Signal, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ButtonAppearance } from './general-button.types';\r\n\r\n@Directive()\r\nexport abstract class _ButtonBase extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! button settings\r\n readonly appearance = input<ButtonAppearance>(ButtonAppearance.Raised);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n abstract readonly ngClasses: Signal<string>;\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleOneAxisAlignment } from '../../types/alignment.types';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { ButtonVariant } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumButtonComponent extends _ButtonBase {\r\n readonly icon = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly variant = input<ButtonVariant>(ButtonVariant.Rounded);\r\n readonly alignIcon = input<SimpleOneAxisAlignment>(SimpleOneAxisAlignment.Left);\r\n\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.alignIcon()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.vertical() ? 'ard-button-vertical' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n #buttonElement\r\n class=\"ard-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (icon()) {\r\n <div class=\"ard-button-icon\">\r\n {{ icon() }}\r\n </div>\r\n }\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ArdiumButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumButtonComponent],\n})\nexport class ArdiumButtonModule {}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdNumberInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n effect,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';\r\nimport { OneAxisAlignment } from '../../types/alignment.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { NumberInputModel, NumberInputModelHost } from '../input-utils';\r\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-number-input',\r\n templateUrl: './number-input.component.html',\r\n styleUrls: ['./number-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumNumberInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumNumberInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, NumberInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly inputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new NumberInputModel(this);\r\n private _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._setInputAttributes();\r\n this._wasViewInit = true;\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed<boolean>(() => !!this.placeholder() && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly alignText = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed((): string => {\r\n return [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-text-align-${this.alignText()}`,\r\n `ard-quick-change-${this.noButtons}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ');\r\n });\r\n\r\n readonly buttonVariant = computed((): ButtonVariant => {\r\n if (this.variant() === FormElementVariant.Rounded) return ButtonVariant.Rounded;\r\n if (this.variant() === FormElementVariant.Pill) return ButtonVariant.Pill;\r\n if (this.variant() === FormElementVariant.Sharp) return ButtonVariant.Sharp;\r\n return ButtonVariant.Rounded;\r\n });\r\n readonly buttonAppearance = computed<ButtonAppearance>(() => {\r\n if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {\r\n return ButtonAppearance.Outlined;\r\n }\r\n return ButtonAppearance.Transparent;\r\n });\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = '0';\r\n @Input()\r\n set value(v: string | number | null) {\r\n if (typeof v === 'number') v = v.toString();\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n readonly valueChange = output<number | null>();\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n const v = this.inputModel.numberValue();\r\n this.valueChange.emit(v);\r\n this._onChangeRegistered?.(v);\r\n });\r\n }\r\n\r\n //! event emitters\r\n readonly inputEvent = output<number | null>({ alias: 'input' });\r\n readonly changeEvent = output<number | null>({ alias: 'change' });\r\n readonly clearEvent = output<MouseEvent>({ alias: 'clear' });\r\n readonly quickChangeEvent = output<{\r\n readonly direction: 1 | -1;\r\n readonly value: number;\r\n }>({ alias: 'quickChange' });\r\n\r\n //! min/max and number type\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });\r\n\r\n readonly allowFloat = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! incerement/decrement buttons\r\n readonly noButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly stepSize = input<number, any>(1, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, 1);\r\n if (newValue === 0) throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got \"${newValue}\".`);\r\n return newValue;\r\n },\r\n });\r\n\r\n onQuickChangeButtonClick(direction: 1 | -1, event?: MouseEvent): void {\r\n let num = this.inputModel.numberValue();\r\n if (!num) num = 0;\r\n\r\n if (direction === 1 && num >= this.max()) return;\r\n if (direction === -1 && num <= this.min()) return;\r\n\r\n if (event) event.stopPropagation();\r\n\r\n const newValue = num + this.stepSize() * direction;\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n const newValuePrecise = roundToPrecision(newValue, 9);\r\n\r\n this.writeValue(newValuePrecise);\r\n this.quickChangeEvent.emit({ direction, value: newValuePrecise });\r\n this._emitChange();\r\n\r\n this._focusInputIfCantQuickChange();\r\n }\r\n private _focusInputIfCantQuickChange(): void {\r\n if (!this.canDecrement() || !this.canIncrement()) this.focus();\r\n }\r\n\r\n canIncrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num < this.max();\r\n }\r\n canDecrement(): boolean {\r\n const num = this.inputModel.numberValue();\r\n return !isDefined(num) || num > this.min();\r\n }\r\n\r\n //! event handlers\r\n onInput(newVal: string): void {\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n this.inputEvent.emit(this.inputModel.numberValue());\r\n this._emitChange();\r\n }\r\n\r\n //focus, blur, change\r\n onFocusMaster(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n onBlurMaster(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n //change\r\n onChange(event: Event): void {\r\n event.stopPropagation();\r\n this._emitChange();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.numberValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n // copy\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.inputEl()?.nativeElement.selectionStart === 0 &&\r\n this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', String(this.value));\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.inputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup()\"\r\n>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >\r\n -\r\n </ard-button>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template\r\n #defaultPlaceholderTemplate\r\n let-plchldr\r\n >\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n @if (!noButtons()) {\r\n <ard-button\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant()\"\r\n [appearance]=\"buttonAppearance()\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >\r\n +\r\n </ard-button>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumHoldEventModule } from '@ardium-ui/devkit';\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\nimport { ArdiumNumberInputComponent } from './number-input.component';\nimport { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';\n\n@NgModule({\n declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],\n exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],\n})\nexport class ArdiumNumberInputModule {}\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n input,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { isDefined } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _FileInputComponentBase extends _NgModelComponentBase implements OnInit, AfterViewInit {\r\n abstract readonly componentId: string;\r\n\r\n readonly fileInputEl = viewChild<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n readonly name = input<string>('');\r\n\r\n ngOnInit(): void {\r\n if (!(window.File && window.FileReader && window.Blob)) {\r\n console.error(\r\n new Error(`ARD-${this.componentId}0: Cannot use Ardium UI file features because this browser does not support them!`)\r\n );\r\n }\r\n }\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n\r\n this._updateElementValue();\r\n }\r\n\r\n //! appearance\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly multiple = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly blockAfterUpload = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n get shouldBeBlocked(): boolean {\r\n return this.blockAfterUpload() && isDefined(this.value);\r\n }\r\n\r\n //! value\r\n protected _value: File[] | null = null;\r\n @Input()\r\n get value(): File[] | null {\r\n return this._value;\r\n }\r\n set value(v: File | File[] | null) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<File[] | null>();\r\n readonly changeEvent = output<File[] | null>({ alias: 'change' });\r\n readonly dragFilesEvent = output<File[] | null>({ alias: 'dragFiles' });\r\n\r\n protected _valueBeforeInit: File[] | null = null;\r\n writeValue(v: File | File[] | null): void {\r\n this._writeValue(v, false);\r\n }\r\n protected _writeValue(v: File | File[] | null, emitEvents = true): void {\r\n if (v instanceof File) {\r\n v = [v];\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._value = v;\r\n\r\n if (this._wasViewInit) this._updateElementValue();\r\n\r\n if (emitEvents) {\r\n this._emitChange();\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n openBrowseDialog(): void {\r\n this.fileInputEl()?.nativeElement.click();\r\n }\r\n\r\n //! temporary value\r\n //for drag event handling\r\n protected _draggedFiles: number | null = null;\r\n\r\n //! view state\r\n readonly currentViewState = signal<'idle' | 'dragover' | 'uploaded'>('idle');\r\n private _beforeDragoverState: 'idle' | 'uploaded' = 'idle';\r\n\r\n //! event handlers\r\n onDragover(event: DragEvent): void {\r\n event.preventDefault();\r\n if (this.shouldBeBlocked) {\r\n if (!event.dataTransfer) return;\r\n\r\n event.dataTransfer.dropEffect = 'none';\r\n return;\r\n }\r\n if (this.currentViewState() === 'dragover') return;\r\n\r\n this._draggedFiles = this._countDragenterFiles(event.dataTransfer);\r\n\r\n if (!this._draggedFiles) return;\r\n\r\n this._beforeDragoverState = this.currentViewState() as 'idle' | 'uploaded';\r\n this.currentViewState.set('dragover');\r\n }\r\n onDragleave(): void {\r\n if (this.shouldBeBlocked) return;\r\n if (this.currentViewState() !== 'dragover') return;\r\n\r\n this.currentViewState.set(this._beforeDragoverState);\r\n }\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n\r\n if (this.shouldBeBlocked) return;\r\n\r\n const filelist = event.dataTransfer?.files;\r\n if (!filelist) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n const files = Array.from(filelist);\r\n if (!files) {\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n\r\n this.currentViewState.set('uploaded');\r\n this._writeValue(files);\r\n }\r\n onInputChange(): void {\r\n const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);\r\n if (files.length === 0) {\r\n this._writeValue(null);\r\n this.currentViewState.set('idle');\r\n return;\r\n }\r\n this._writeValue(files);\r\n this.currentViewState.set('uploaded');\r\n }\r\n\r\n //! helpers\r\n protected _countDragenterFiles(data: DataTransfer | null): number | null {\r\n if (!data) return null;\r\n\r\n return Array.from(data.items).filter(item => item.kind === 'file').length;\r\n }\r\n\r\n protected _updateElementValue(): void {\r\n const v = this.value;\r\n\r\n const inputEl = this.fileInputEl()?.nativeElement;\r\n if (!inputEl) return;\r\n if (!v) {\r\n inputEl.files = null;\r\n return;\r\n }\r\n\r\n const dataTransfer = new DataTransfer();\r\n for (const file of v) {\r\n dataTransfer.items.add(file);\r\n }\r\n inputEl.files = dataTransfer.files;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-idle-content-tmp]',\n})\nexport class ArdiumFileDropAreaIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileDropAreaDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-drop-area > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileDropAreaUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-drop-area',\r\n templateUrl: './file-drop-area.component.html',\r\n styleUrls: ['./file-drop-area.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFileDropAreaComponent extends _FileInputComponentBase implements OnInit {\r\n readonly componentId = '010';\r\n\r\n //! appearance\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-variant-${this.variant()}`, `ard-color-${this.color()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! triggering file dialog\r\n protected _wasMousedownOnElement: true | null = null;\r\n onMousedown(): void {\r\n this._wasMousedownOnElement = true;\r\n }\r\n onMouseup(): void {\r\n if (!this._wasMousedownOnElement) return;\r\n this._wasMousedownOnElement = null;\r\n\r\n this.openBrowseDialog();\r\n }\r\n\r\n //! templates\r\n @ContentChild(ArdiumFileDropAreaIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileDropAreaUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"ard-file-drop-area\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n (dragleave)=\"onDragleave()\"\r\n (dragover)=\"onDragover($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-file-drop-area-outline\">\r\n <div class=\"ard-file-drop-area-content\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n }\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'dragover'\"\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n ></ng-template>\r\n <ng-template\r\n *ngIf=\"currentViewState() === 'uploaded'\"\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n<input\r\n #fileInput\r\n class=\"ard-file-drop-area-input-element\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <ard-icon class=\"ard-file-drop-area-icon\">upload</ard-icon>\r\n <strong class=\"ard-file-drop-area-drop-text\">\r\n <span *ngIf=\"!multiple\">Drag & Drop a file</span>\r\n <span *ngIf=\"multiple\">Drag & Drop files</span>\r\n here\r\n </strong>\r\n <span class=\"ard-file-drop-area-or-text\">or</span>\r\n <ard-button\r\n class=\"ard-file-drop-area-browse-button\"\r\n appearance=\"transparent\"\r\n [compact]=\"compact()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n (click)=\"browse()\"\r\n >Browse files</ard-button\r\n >\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-drop-area-dragover-text\">Drop </span>\r\n <span class=\"ard-file-drop-area-dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-dragover-text\"> here to upload. </span>\r\n @if (amount > 1 && !multiple()) {\r\n <strong class=\"ard-file-drop-area-dragover-warning\"> Only the first file will be uploaded! </strong>\r\n }\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-drop-area-uploaded-container\">\r\n <div class=\"ard-file-drop-area-uploaded-message\">\r\n <span class=\"ard-file-drop-area-uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-drop-area-uploaded-text\"> uploaded.</span>\r\n </div>\r\n <div class=\"ard-file-drop-area-uploaded-files\">\r\n @for (file of files; track $index) {\r\n <div class=\"ard-file-drop-area-file\">\r\n <ard-icon>draft</ard-icon>\r\n <div class=\"ard-file-drop-area-file-info\">\r\n <span class=\"ard-file-drop-area-filename\">\r\n <span class=\"ard-file-drop-area-filename-name\">{{ file | filename }}</span>\r\n <span class=\"ard-file-drop-area-filename-ext\">{{ file | fileext: true }}</span>\r\n </span>\r\n <span class=\"ard-file-drop-area-filesize\">{{ file.size | filesize }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n ArdiumClickOutsideEventModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFilesizePipeModule,\r\n} from '@ardium-ui/devkit';\r\nimport { ArdiumButtonModule } from '../../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../../icon/icon.module';\r\nimport { ArdiumFileDropAreaComponent } from './file-drop-area.component';\r\nimport {\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n} from './file-drop-area.directives';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ArdiumButtonModule,\r\n ArdiumIconModule,\r\n ArdiumFilesizePipeModule,\r\n ArdiumFilenamePipeModule,\r\n ArdiumFileextPipeModule,\r\n ArdiumClickOutsideEventModule,\r\n ],\r\n exports: [\r\n ArdiumFileDropAreaComponent,\r\n ArdiumFileDropAreaIdleContentTemplateDirective,\r\n ArdiumFileDropAreaDragoverContentTemplateDirective,\r\n ArdiumFileDropAreaUploadedContentTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumFileDropAreaModule {}\r\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ColorPickerColorReferenceContext, ColorPickerIndicatorContext } from '../../color/color-picker/color-picker.types';\nimport { ColorInputActionButtonsContext } from './color-input.types';\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdColorInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-prefix-tmp]' })\nexport class ArdColorInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-suffix-tmp]' })\nexport class ArdColorInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n//! picker directives\n@Directive({\n selector: 'ard-color-input > ng-template[ard-shade-indicator-tmp]',\n})\nexport class ArdColorInputShadeIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({ selector: 'ard-color-input > ng-template[ard-hue-indicator-tmp]' })\nexport class ArdColorInputHueIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-opacity-indicator-tmp]',\n})\nexport class ArdColorInputOpacityIndicatorTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerIndicatorContext>) {}\n}\n\n@Directive({\n selector: 'ard-color-input > ng-template[ard-color-reference-tmp]',\n})\nexport class ArdColorInputColorReferenceTemplateDirective {\n constructor(public template: TemplateRef<ColorPickerColorReferenceContext>) {}\n}\n\n//! action buttons\n@Directive({\n selector: 'ard-color-picker > ng-template[ard-action-buttons-tmp]',\n})\nexport class ArdColorInputActionButtonsTemplateDirective {\n constructor(public template: TemplateRef<ColorInputActionButtonsContext>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { FileInputBrowseContext, FileInputFilesContext } from '../file-input-types';\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdFileInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-prefix-tmp]' })\nexport class ArdFileInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-suffix-tmp]' })\nexport class ArdFileInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-file-input > ng-template[ard-idle-content-tmp]' })\nexport class ArdiumFileInputIdleContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputBrowseContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dragover-content-tmp]',\n})\nexport class ArdiumFileInputDragoverContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n\n@Directive({\n selector: 'ard-file-input > ng-template[ard-dropped-content-tmp]',\n})\nexport class ArdiumFileInputUploadedContentTemplateDirective {\n constructor(public template: TemplateRef<FileInputFilesContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ArdColorInputPlaceholderTemplateDirective } from '../../inputs/color-input/color-input.directives';\r\nimport { ComponentColor } from '../../types/colors.types';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { _FileInputComponentBase } from '../file-input-base';\r\nimport { FileInputBrowseContext, FileInputFileAmountContext, FileInputFilesContext } from '../file-input-types';\r\nimport {\r\n ArdFileInputPrefixTemplateDirective,\r\n ArdFileInputSuffixTemplateDirective,\r\n ArdiumFileInputDragoverContentTemplateDirective,\r\n ArdiumFileInputIdleContentTemplateDirective,\r\n ArdiumFileInputUploadedContentTemplateDirective,\r\n} from './file-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-file-input',\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['./file-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumFileInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumFileInputComponent extends _FileInputComponentBase {\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly componentId = '011';\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! placeholder\r\n readonly placeholder = input<string>('');\r\n\r\n //! root element classes\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-state-${this.currentViewState()}`, this.value ? 'ard-has-value' : ''].join(' ')\r\n );\r\n\r\n @ContentChild(ArdColorInputPlaceholderTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n placeholderTemplate?: TemplateRef<any>;\r\n\r\n get shouldDisplayPlaceholder(): boolean {\r\n return Boolean(this.placeholder()) && !this.value;\r\n }\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n get shouldShowClearButton(): boolean {\r\n return this.clearable() && !this.disabled() && Boolean(this.value);\r\n }\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.clear();\r\n this.focus();\r\n }\r\n\r\n //! clear function\r\n clear(): void {\r\n if (!this.clearable()) return;\r\n\r\n this.writeValue(null);\r\n this._emitChange();\r\n this.clearEvent.emit();\r\n }\r\n\r\n readonly clearEvent = output();\r\n\r\n //! state\r\n readonly touched = signal<boolean>(false);\r\n\r\n //! prefix & suffix\r\n @ContentChild(ArdFileInputPrefixTemplateDirective, { read: TemplateRef })\r\n prefixTemplate?: TemplateRef<any>;\r\n @ContentChild(ArdFileInputSuffixTemplateDirective, { read: TemplateRef })\r\n suffixTemplate?: TemplateRef<any>;\r\n //! templates\r\n @ContentChild(ArdiumFileInputIdleContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n idleTemplate: TemplateRef<FileInputBrowseContext> | null = null;\r\n @ContentChild(ArdiumFileInputDragoverContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n dragoverTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n @ContentChild(ArdiumFileInputUploadedContentTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n uploadedTemplate: TemplateRef<FileInputFilesContext> | null = null;\r\n\r\n getIdleContext(): FileInputBrowseContext {\r\n return {\r\n browse: () => {\r\n this.openBrowseDialog();\r\n },\r\n };\r\n }\r\n getDragoverContext(): FileInputFileAmountContext {\r\n return {\r\n amount: this._draggedFiles!,\r\n };\r\n }\r\n getUploadedContext(): FileInputFilesContext {\r\n const files = this.value!;\r\n return {\r\n $implicit: files,\r\n amount: files.length,\r\n files,\r\n };\r\n }\r\n}\r\n","<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate\"\r\n [suffixTemplate]=\"suffixTemplate\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n (change)=\"onInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFileInputComponent } from './file-input.component';\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\nimport { ArdiumIconModule } from '../../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumFileInputComponent],\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule, ArdiumIconModule],\n exports: [ArdiumFileInputComponent],\n})\nexport class ArdiumFileInputModule {}\n","export const CaseTransformerType = {\n NoChange: 'nochange',\n Uppercase: 'uppercase',\n Lowercase: 'lowercase',\n} as const;\nexport type CaseTransformerType = (typeof CaseTransformerType)[keyof typeof CaseTransformerType];\n","import { isAnyString, isDefined, isNull } from 'simple-bool';\r\nimport { RegExpTransformer } from './input-transformers';\r\nimport { CaseTransformerType } from './input-types';\r\nimport { ElementRef, Signal, computed, signal } from '@angular/core';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\nexport interface HexInputModelHost {\r\n readonly case: Signal<CaseTransformerType>;\r\n readonly maxDigits: Signal<Nullable<number>>;\r\n readonly textInputEl: Signal<ElementRef<HTMLInputElement> | undefined>;\r\n}\r\nexport class HexInputModel {\r\n constructor(protected readonly _hostComp: HexInputModelHost) {}\r\n\r\n //! value setters/getters\r\n readonly value = signal<string | null>(null);\r\n readonly stringValue = computed<string>(() => this.value() ?? '');\r\n //value with the hash sign\r\n readonly hashSignValue = computed<string>(() => '#' + this.stringValue());\r\n\r\n //! write value handlers\r\n writeValue(v: any): boolean {\r\n if (!isAnyString(v) && !isNull(v)) {\r\n //warn when using non-string/non-null value\r\n console.warn(\r\n new Error(`ARD-WA0160: Trying to set <ard-hex-input>'s value to \"${v}\" (of type ${typeof v}), expected string or null.`)\r\n );\r\n //normalize the value\r\n v = v?.toString?.() ?? String(v);\r\n }\r\n //normalize the value\r\n v = v ?? '';\r\n if (typeof v === 'string') v = v.replace('#', '');\r\n\r\n return this._writeValue(v);\r\n }\r\n protected _writeValue(v: string | null): boolean {\r\n const oldVal = this.value();\r\n //constraints\r\n if (v) {\r\n v = this._applyCharactersConstraint(v);\r\n v = this._applyDigitsConstraint(v, oldVal ?? '');\r\n v = this._applyCaseTransformer(v);\r\n }\r\n //update view\r\n this.value.set(v);\r\n this._updateInputElement();\r\n return oldVal !== v;\r\n }\r\n clear(): void {\r\n this._writeValue(null);\r\n }\r\n rewriteValueAfterHostUpdate(): void {\r\n this._writeValue(this.value());\r\n }\r\n\r\n //! input element methods\r\n _updateInputElement() {\r\n const el = this._hostComp.textInputEl()?.nativeElement;\r\n if (!el) return;\r\n const caretPos = this.caretPos;\r\n el.value = this.stringValue();\r\n this.caretPos = caretPos;\r\n }\r\n get caretPos(): number {\r\n return this._hostComp.textInputEl()?.nativeElement.selectionEnd ?? this.stringValue().length;\r\n }\r\n set caretPos(pos: number) {\r\n this._hostComp.textInputEl()?.nativeElement.setSelectionRange(pos, pos);\r\n }\r\n\r\n //! constraints\r\n private _charactersRegexTransformer = new RegExpTransformer(/[^0-9a-f]/i, '');\r\n private _applyCharactersConstraint(v: string): string {\r\n const { text, caretPos } = this._charactersRegexTransformer.apply(v, '', this.caretPos);\r\n this.caretPos = caretPos;\r\n return text;\r\n }\r\n private _applyDigitsConstraint(v: string, prev: string): string {\r\n const maxLength = this._hostComp.maxDigits();\r\n if (!isDefined(maxLength)) return v;\r\n if (v.length <= maxLength) return v;\r\n if (v.length < prev.length) return v;\r\n\r\n let firstChangeIndex = 0;\r\n while (\r\n firstChangeIndex < v.length &&\r\n (!prev.charAt(firstChangeIndex) || v.charAt(firstChangeIndex) === prev.charAt(firstChangeIndex)) &&\r\n firstChangeIndex <= maxLength\r\n ) {\r\n firstChangeIndex++;\r\n }\r\n if (firstChangeIndex > maxLength) return v.substring(0, maxLength);\r\n\r\n const overflow = v.length - maxLength;\r\n this.caretPos -= overflow;\r\n return v.substring(0, firstChangeIndex) + v.substring(firstChangeIndex + overflow);\r\n }\r\n private _applyCaseTransformer(v: string): string {\r\n if (this._hostComp.case() === CaseTransformerType.Uppercase) return v.toUpperCase();\r\n if (this._hostComp.case() === CaseTransformerType.Lowercase) return v.toLowerCase();\r\n return v;\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: 'ard-hex-input > ng-template[ard-placeholder-tmp]' })\nexport class ArdHexInputPlaceholderTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-prefix-tmp]' })\nexport class ArdHexInputPrefixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n\n@Directive({ selector: 'ard-hex-input ng-template[ard-suffix-tmp]' })\nexport class ArdHexInputSuffixTemplateDirective {\n constructor(public template: TemplateRef<undefined>) {}\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n Input,\r\n output,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from '../../_internal/ngmodel-component';\r\nimport { FormElementAppearance, FormElementVariant } from '../../types/theming.types';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { HexInputModel, HexInputModelHost } from '../hex-input.model';\r\nimport { CaseTransformerType } from '../input-types';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\n\r\n@Component({\r\n selector: 'ard-hex-input',\r\n templateUrl: './hex-input.component.html',\r\n styleUrls: ['./hex-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumHexInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumHexInputComponent\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, HexInputModelHost, AfterViewInit\r\n{\r\n //! input view\r\n readonly textInputEl = viewChild<ElementRef<HTMLInputElement>>('textInput');\r\n\r\n protected readonly inputModel = new HexInputModel(this);\r\n protected _wasViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._wasViewInit = true;\r\n this._setInputAttributes();\r\n //set the value\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n delete this._valueBeforeInit;\r\n }\r\n }\r\n\r\n readonly DEFAULTS = {\r\n clearButtonTitle: 'Clear',\r\n };\r\n\r\n readonly inputId = input<Nullable<string>>();\r\n\r\n //! prefix & suffix\r\n readonly prefixTemplate = contentChild(ArdHexInputPrefixTemplateDirective);\r\n readonly suffixTemplate = contentChild(ArdHexInputSuffixTemplateDirective);\r\n\r\n //! placeholder\r\n readonly placeholder = input<Nullable<string>>();\r\n\r\n readonly placeholderTemplate = contentChild(ArdHexInputPlaceholderTemplateDirective);\r\n\r\n readonly shouldDisplayPlaceholder = computed((): boolean => Boolean(this.placeholder()) && !this.inputModel.stringValue());\r\n\r\n //! appearance\r\n //all handled in ard-form-field-frame component\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Outlined);\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! settings\r\n readonly case = input<CaseTransformerType>(CaseTransformerType.NoChange);\r\n\r\n readonly maxDigits = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly hideHash = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly showHash = computed(() => !this.hideHash());\r\n\r\n //! clear button\r\n readonly clearable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly clearButtonTitle = input<string>(this.DEFAULTS.clearButtonTitle);\r\n\r\n readonly shouldShowClearButton = computed<boolean>(\r\n () => this.clearable() && !this.disabled() && Boolean(this.inputModel?.value())\r\n );\r\n\r\n onClearButtonClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.inputModel.clear();\r\n this._emitChange();\r\n this._emitInput();\r\n this.clearEvent.emit();\r\n this.focus();\r\n }\r\n\r\n //! other inputs\r\n readonly inputAttrs = input<Record<string, any>>({});\r\n\r\n //! control value accessor's write value implementation\r\n writeValue(v: any) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.inputModel.writeValue(v);\r\n }\r\n\r\n //! value two-way binding\r\n protected _valueBeforeInit?: string | null = null;\r\n @Input()\r\n set value(v: string | null) {\r\n if (!this._wasViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this.writeValue(v);\r\n }\r\n get value(): string | null {\r\n return this.inputModel?.hashSignValue();\r\n }\r\n readonly valueChange = output<string>();\r\n\r\n //! event emitters\r\n readonly inputEvent = output<string>({ alias: 'input' });\r\n readonly changeEvent = output<string>({ alias: 'change' });\r\n readonly clearEvent = output<void>({ alias: 'clear' });\r\n\r\n //! event handlers\r\n onInput(newVal: string, event: Event): void {\r\n event.stopPropagation();\r\n const valueHasChanged = this.inputModel.writeValue(newVal);\r\n if (!valueHasChanged) return;\r\n this._emitInput();\r\n }\r\n protected _emitInput(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.inputEvent.emit(v);\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onChange(event: Event): void {\r\n this._emitChange();\r\n event.stopPropagation();\r\n }\r\n protected _emitChange(): void {\r\n const v = this.inputModel.hashSignValue();\r\n this.changeEvent.emit(v);\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n this._emitChange();\r\n }\r\n\r\n //smart focus\r\n onMouseup(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.type === 'Range') return;\r\n\r\n this.focus();\r\n }\r\n\r\n onCopy(event: ClipboardEvent): void {\r\n if (\r\n this.value &&\r\n //does the selection cover the entire input\r\n ((this.textInputEl()?.nativeElement.selectionStart === 0 &&\r\n this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||\r\n //or is zero-wide\r\n this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)\r\n ) {\r\n event.clipboardData?.setData('text/plain', this.value);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n //! helpers\r\n protected _setInputAttributes() {\r\n const input = this.textInputEl()!.nativeElement;\r\n const attributes: Record<string, string> = {\r\n type: 'text',\r\n autocorrect: 'off',\r\n autocapitalize: 'off',\r\n autocomplete: 'off',\r\n tabindex: String(this.tabIndex),\r\n ...this.inputAttrs,\r\n };\r\n\r\n for (const key of Object.keys(attributes)) {\r\n input.setAttribute(key, String(attributes[key]));\r\n }\r\n }\r\n}\r\n","<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n <div\r\n class=\"ard-hash-container\"\r\n *ngIf=\"showHash\"\r\n >\r\n #\r\n </div>\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumHexInputComponent } from './hex-input.component';\r\nimport {\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n} from './hex-input.directives';\r\nimport { _ClearButtonModule } from '../../_internal/clear-button/clear-button.module';\r\nimport { ArdiumFormFieldFrameModule } from '../../form-field-frame/form-field-frame.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n imports: [CommonModule, ArdiumFormFieldFrameModule, _ClearButtonModule],\r\n exports: [\r\n ArdiumHexInputComponent,\r\n ArdHexInputPlaceholderTemplateDirective,\r\n ArdHexInputPrefixTemplateDirective,\r\n ArdHexInputSuffixTemplateDirective,\r\n ],\r\n})\r\nexport class ArdiumHexInputModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRadioComponent extends _BooleanComponentBase {\r\n protected readonly _changeDetector = inject(ChangeDetectorRef);\r\n\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n readonly value = input<any>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [`ard-color-${this.color()}`, `ard-radio-${this.selected() ? 'selected' : 'unselected'}`].join(' ')\r\n );\r\n\r\n //! event handlers\r\n onMousedown(): void {\r\n this.focus();\r\n }\r\n onMouseup(): void {\r\n this.focus();\r\n this.selected.set(true);\r\n this._emitChange();\r\n }\r\n\r\n //! radio-group access points\r\n readonly name = signal<string | null>(null);\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n class=\"ard-radio\"\r\n type=\"button\"\r\n [ngClass]=\"ngClasses()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (mousedown)=\"onMousedown()\"\r\n (mouseup)=\"onMouseup()\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-radio-circles\">\r\n <div class=\"ard-radio-outer-circle\"></div>\r\n <div class=\"ard-radio-inner-circle\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </div>\r\n <label [for]=\"htmlId()\">\r\n <ng-content></ng-content>\r\n </label>\r\n</button>\r\n\r\n<input\r\n class=\"ard-radio-input-element\"\r\n type=\"radio\"\r\n [name]=\"name()\"\r\n [id]=\"htmlId()\"\r\n [checked]=\"selected()\"\r\n #radio\r\n/>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OutputRefSubscription,\r\n ViewEncapsulation,\r\n contentChildren,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdiumRadioComponent } from './radio/radio.component';\r\n\r\n@Component({\r\n selector: 'ard-radio-group',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n role: 'radiogroup',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumRadioGroupComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumRadioGroupComponent extends _NgModelComponentBase implements AfterContentInit, OnDestroy {\r\n private readonly _radios = contentChildren<ArdiumRadioComponent>(ArdiumRadioComponent, { descendants: true });\r\n\r\n readonly htmlId = input<string>('');\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n effect(() => {\r\n this.name();\r\n this._updateRadioButtonNames();\r\n });\r\n effect(() => {\r\n this.selected();\r\n this._checkSelectedRadioButton();\r\n });\r\n effect(() => {\r\n const radios = this._radios();\r\n if (!radios) return;\r\n \r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n this._destroyChildSubscriptions();\r\n\r\n //sub to child component events\r\n for (const radio of radios) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n })\r\n }\r\n\r\n //! value\r\n @Input()\r\n get value(): any | undefined {\r\n return this.selected()?.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (this.value !== v) {\r\n if (!this._isContentInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n\r\n this._findRadioByValue(v);\r\n }\r\n setTimeout(() => {\r\n this._updateRadiosByValue();\r\n }, 0);\r\n }\r\n\r\n private _findRadioByValue(v: any): void {\r\n if (!this._radios) return;\r\n\r\n this.selected.set(this._radios().find(radio => v === radio.value()) ?? null);\r\n }\r\n\r\n /** Updates all child radios depending on the currently selected radio. */\r\n private _updateRadiosByValue(): void {\r\n if (!this._isContentInit) return;\r\n\r\n this._radios().forEach(radio => {\r\n radio.selected.set(this.value === radio.value());\r\n radio.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * The currently selected radio button. If set to a new radio button, the radio group value\r\n * will be updated to match the new selected button.\r\n */\r\n readonly selected = model<Nullable<ArdiumRadioComponent>>(null);\r\n\r\n private _checkSelectedRadioButton() {\r\n const s = this.selected();\r\n if (s && !s.selected()) {\r\n s.selected.set(true);\r\n s.markForCheck();\r\n }\r\n }\r\n\r\n //! name\r\n /** Name of the radio button group. All radio buttons inside this group will use this name. */\r\n readonly name = input<string>(crypto.randomUUID());\r\n\r\n private _updateRadioButtonNames(): void {\r\n if (this._radios()) {\r\n this._radios().forEach(radio => {\r\n radio.name.set(this.name());\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n //! update handlers\r\n private _handleBlurEvents(event: FocusEvent): void {\r\n this.onBlur(event);\r\n }\r\n private _handleFocusEvents(event: FocusEvent): void {\r\n this.onFocus(event);\r\n }\r\n private _handleChangeEvents(selected: ArdiumRadioComponent): void {\r\n this.writeValue(selected.value());\r\n\r\n this._emitChange();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! hooks\r\n private _childEventSubs: OutputRefSubscription[] = [];\r\n private _isContentInit = false;\r\n ngAfterContentInit(): void {\r\n this._isContentInit = true;\r\n\r\n if (this._valueBeforeInit !== undefined) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n\r\n setTimeout(() => {\r\n this._updateRadioButtonNames();\r\n }, 0);\r\n\r\n //sub to child component events\r\n for (const radio of this._radios()) {\r\n this._childEventSubs.push(\r\n radio.blurEvent.subscribe(v => {\r\n this._handleBlurEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.focusEvent.subscribe(v => {\r\n this._handleFocusEvents(v);\r\n })\r\n );\r\n this._childEventSubs.push(\r\n radio.selectedChange.subscribe((v: boolean) => {\r\n if (!v) return;\r\n this._handleChangeEvents(radio);\r\n })\r\n );\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this._destroyChildSubscriptions();\r\n }\r\n private _destroyChildSubscriptions(): void {\r\n for (const sub of this._childEventSubs) {\r\n sub.unsubscribe();\r\n }\r\n this._childEventSubs = [];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumRadioGroupComponent } from './radio-group.component';\nimport { ArdiumRadioComponent } from './radio/radio.component';\n\n@NgModule({\n declarations: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n imports: [CommonModule],\n exports: [ArdiumRadioGroupComponent, ArdiumRadioComponent],\n})\nexport class ArdiumRadioModule {}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isObject, isPrimitive } from 'simple-bool';\r\nimport { ArdOptionSimple, CompareWithFn } from '../../types/item-storage.types';\r\nimport { Nullable } from '../../types/utility.types';\r\n\r\nexport interface ItemStorageHostDefaults {\r\n valueFrom: string;\r\n labelFrom: string;\r\n disabledFrom: string;\r\n}\r\nexport interface SimpleItemStorageHost {\r\n readonly valueFrom: Signal<Nullable<string>>;\r\n readonly labelFrom: Signal<Nullable<string>>;\r\n readonly disabledFrom: Signal<Nullable<string>>;\r\n readonly invertDisabled: Signal<boolean>;\r\n readonly DEFAULTS: ItemStorageHostDefaults;\r\n readonly compareWith: Signal<Nullable<CompareWithFn>>;\r\n readonly multiselectable: Signal<boolean>;\r\n readonly isValueRequired: Signal<boolean>;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly _componentId: string;\r\n}\r\n\r\nexport class SimpleItemStorage {\r\n private readonly _items = signal<ArdOptionSimple[]>([]);\r\n private readonly _highlightedItems = signal<ArdOptionSimple[]>([]);\r\n private readonly _selectedItems = signal<ArdOptionSimple[]>([]);\r\n\r\n constructor(private readonly _ardParentComp: SimpleItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = this._highlightedItems.asReadonly();\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = this._selectedItems.asReadonly();\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this._selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdOptionSimple[]): any[] {\r\n return items.map(item => item.value());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this._highlightedItems().length > 0);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const msi = this._ardParentComp.maxSelectedItems();\r\n if (!this._ardParentComp.multiselectable() || !isDefined(msi)) {\r\n return false;\r\n }\r\n return msi <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n * @returns true if at least one of the items is of primitive type, otherwise false.\r\n */\r\n setItems(items: unknown[]): boolean {\r\n let areItemsPrimitive = false;\r\n if (items.some(isPrimitive)) {\r\n items = items.map(this._primitiveItemsMapFn);\r\n areItemsPrimitive = true;\r\n }\r\n\r\n this._items.set(\r\n items.map((item, index) => {\r\n return this._setItemsMapFn(item, index, areItemsPrimitive);\r\n })\r\n );\r\n\r\n return areItemsPrimitive;\r\n }\r\n private _primitiveItemsMapFn<T>(item: T): { value: T } {\r\n return { value: item };\r\n }\r\n private _setItemsMapFn(rawItemData: any, index: number, areItemsPrimitive: boolean): ArdOptionSimple {\r\n if (areItemsPrimitive) {\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(rawItemData.value),\r\n label: signal(rawItemData.value?.toString?.() ?? String(rawItemData.value)),\r\n disabled: signal(false),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n //get value\r\n const valuePath =\r\n this._ardParentComp.valueFrom() ?? this._ardParentComp.labelFrom() ?? this._ardParentComp.DEFAULTS.valueFrom;\r\n const value = resolvePath(rawItemData, valuePath);\r\n\r\n //get label\r\n const labelPath =\r\n this._ardParentComp.labelFrom() ?? this._ardParentComp.valueFrom() ?? this._ardParentComp.DEFAULTS.labelFrom;\r\n const label = resolvePath(rawItemData, labelPath) ?? value;\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.disabledFrom() ?? this._ardParentComp.DEFAULTS.disabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n //return\r\n return {\r\n itemData: signal(rawItemData),\r\n index: signal(index),\r\n value: signal(value),\r\n label: signal(label?.toString?.() ?? String(label)),\r\n disabled: signal(disabled),\r\n selected: signal(false),\r\n highlighted: signal(false),\r\n };\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param ngModel The value of the ngModel to set.\r\n */\r\n writeValue(ngModel: any[]): void {\r\n this._forceUnselectAll();\r\n\r\n if (!this._validateWriteValue(ngModel)) return;\r\n\r\n const selectItemByValue = (value: any) => {\r\n const item = this.findItemByValue(value);\r\n\r\n if (item) {\r\n this.selectItem(item);\r\n return;\r\n }\r\n console.warn(\r\n `ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${value?.toString?.() || String(value)}.`\r\n );\r\n };\r\n\r\n for (const modelValue of ngModel) {\r\n selectItemByValue(modelValue);\r\n }\r\n }\r\n /**\r\n * Validates that all values of the value to be written are able to be accurately compared against the storage items.\r\n *\r\n * An item from the ngModel array is considered valid if it is a primitive value, or if all of the below points are met:\r\n * 1. The parent component defines the `compareWith` property.\r\n * 2. The ngModel value item is an object (or array).\r\n * 3. The parent component has a defined `valueFrom` property.\r\n * @param ngModel The value of ngModel to validate.\r\n * @returns true if all items are valid, otherwise false.\r\n */\r\n private _validateWriteValue(ngModel: any[]): boolean {\r\n return ngModel.every(item => {\r\n if (!isDefined(this._ardParentComp.compareWith()) && isObject(item) && this._ardParentComp.valueFrom()) {\r\n console.warn(\r\n `ARD-FT${this._ardParentComp._componentId}0: Setting object(${JSON.stringify(\r\n item\r\n )}) as your model with [valueFrom] is not allowed unless [compareWith] is used.`\r\n );\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n findItemByValue(valueToFind: any): ArdOptionSimple | undefined {\r\n let findBy: (item: ArdOptionSimple) => boolean;\r\n const cmpFn = this._ardParentComp.compareWith();\r\n if (isDefined(cmpFn)) {\r\n findBy = item => cmpFn(valueToFind, item.value());\r\n } else {\r\n findBy = item => item.value() === valueToFind;\r\n }\r\n return this._items().find(item => findBy(item));\r\n }\r\n\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this.value();\r\n\r\n if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {\r\n this._selectedItems().first().selected.set(true);\r\n ret.splice(0, 1);\r\n }\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n for (const item of this._selectedItems()) {\r\n item.selected.set(false);\r\n }\r\n\r\n const ret = this._itemsToValue(this._selectedItems());\r\n\r\n this._selectedItems.set([]);\r\n\r\n return ret;\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @param items A rest operator array of item objects to be selected.\r\n * @returns A tuple containing three arrays, all mapped to only their values:\r\n * - An array of items selected,\r\n * - An array of items unselected,\r\n * - An array of items failed to select due to the limit.\r\n */\r\n selectItem(...items: ArdOptionSimple[]): [any[], any[], any[]] {\r\n if (this.isItemLimitReached()) {\r\n return [[], [], this._itemsToValue(items)];\r\n }\r\n let unselected = [];\r\n if (!this._ardParentComp.multiselectable()) {\r\n unselected = this._forceUnselectAll();\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected: ArdOptionSimple[] = [];\r\n for (const item of items) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (this.isItemLimitReached()) {\r\n break;\r\n }\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n this._selectedItems.update(v => [...v, ...itemsSelected]);\r\n\r\n const itemsFailedToSelect = items.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n *\r\n * @param items A rest operator array of item objects to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...items: ArdOptionSimple[]): any[] {\r\n let skippedItem = false;\r\n for (const item of items) {\r\n if (this._ardParentComp.isValueRequired() && !skippedItem) {\r\n skippedItem = true;\r\n continue;\r\n }\r\n\r\n if (!item.selected()) continue;\r\n item.selected.set(false);\r\n }\r\n this._selectedItems.update(v => v.filter(v => v.selected()));\r\n\r\n return this._itemsToValue(items);\r\n }\r\n\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n for (const item of this._highlightedItems()) {\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.set([]);\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(item: ArdOptionSimple): ArdOptionSimple | null {\r\n if (!item || item.disabled()) return null;\r\n this.unhighlightAll();\r\n return this.highlightItem(item);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of items to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...items: ArdOptionSimple[]): ArdOptionSimple {\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n this._highlightedItems.update(v => [...v, ...items]);\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of items to be unhighlighted.\r\n */\r\n unhighlightItem(...items: ArdOptionSimple[]): void {\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n this._highlightedItems.update(v => v.filter(v => v.highlighted()));\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdOptionSimple | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems();\r\n\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdOptionSimple | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift && this._ardParentComp.multiselectable()) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(currentItem);\r\n }\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n return this.highlightSingleItem(itemToHighlight);\r\n }\r\n /**\r\n * Finds all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n * @returns An array of all highlightable items.\r\n */\r\n private readonly highlightableItems = computed(() => this._items().filter(item => !item.disabled()));\r\n}\r\n","import { ChangeDetectorRef, Directive, HostBinding, HostListener, Input, computed, input, output, signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { coerceArrayProperty, coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdOptionSimple, CompareWithFn, OptionContext } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from './item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from './ngmodel-component';\r\n\r\n@Directive()\r\nexport abstract class _SelectableListComponentBase\r\n extends _NgModelComponentBase\r\n implements ControlValueAccessor, SimpleItemStorageHost\r\n{\r\n //! public constants\r\n readonly itemStorage = new SimpleItemStorage(this);\r\n readonly htmlId = crypto.randomUUID();\r\n readonly element!: HTMLElement;\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n\r\n abstract readonly _componentId: string;\r\n abstract readonly _componentName: string;\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n //! binding-related inputs\r\n readonly valueFrom = input<Nullable<string>>(undefined);\r\n readonly labelFrom = input<Nullable<string>>(undefined);\r\n readonly disabledFrom = input<Nullable<string>>(undefined);\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n //! items setter/getter\r\n @Input()\r\n get items(): any[] {\r\n return this.itemStorage.items();\r\n }\r\n set items(value: any) {\r\n if (!Array.isArray(value)) value = coerceArrayProperty(value);\r\n\r\n const shouldPrintErrors = this.itemStorage.setItems(value);\r\n\r\n if (shouldPrintErrors) {\r\n this._printPrimitiveWarnings();\r\n }\r\n }\r\n private _printPrimitiveWarnings() {\r\n const makeWarning = (str: string): void => {\r\n console.warn(\r\n `ARD-WA${this._componentId} Skipped using [${str}] property bound to <ard-${this._componentName}>, as some provided items are of primitive type`\r\n );\r\n };\r\n if (this.valueFrom()) {\r\n makeWarning('valueFrom');\r\n }\r\n if (this.labelFrom()) {\r\n makeWarning('labelFrom');\r\n }\r\n if (this.disabledFrom()) {\r\n makeWarning('disabledFrom');\r\n }\r\n if (this.invertDisabled()) {\r\n makeWarning('invertDisabled');\r\n }\r\n }\r\n\r\n //! multiselectable\r\n readonly multiselectable = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('attr.multiple')\r\n @HostBinding('class.ard-multiselect')\r\n get _multiselectableHostAttribute() {\r\n return this.multiselectable();\r\n }\r\n\r\n readonly singleselectable = computed(() => !this.multiselectable());\r\n\r\n //! require value\r\n readonly requireValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isValueRequired = computed(() => this.requireValue() || !this.multiselectable());\r\n\r\n @HostBinding('class.ard-require-value')\r\n get _requireValueHostAttribute() {\r\n return this.requireValue();\r\n }\r\n\r\n //! coerced properties\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n //! control value accessor\r\n //override the writeValue and setDisabledState defined in _NgModelComponent\r\n override setDisabledState(state: boolean): void {\r\n this.disabled.set(state);\r\n this._cd.markForCheck();\r\n }\r\n writeValue(ngModel: any[]): void {\r\n this.itemStorage.writeValue(ngModel);\r\n this._cd.markForCheck();\r\n }\r\n\r\n //! change & touch event emitters\r\n readonly touched = signal<boolean>(false);\r\n\r\n @HostBinding('class.ard-touched')\r\n get _touchedHostAttribute(): boolean {\r\n return this.touched();\r\n }\r\n\r\n protected _emitChange(): void {\r\n const value = this.itemStorage.value();\r\n this._onChangeRegistered?.(value);\r\n this.changeEvent.emit(value);\r\n this.valueChange.emit(value);\r\n }\r\n protected _onTouched(): void {\r\n if (this.touched()) return;\r\n\r\n this._onTouchedRegistered?.();\r\n this.touched.set(true);\r\n }\r\n\r\n //! focus & blur handlers\r\n private readonly lastBlurTimestamp = signal<Nullable<number>>(undefined);\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n const lbt = this.lastBlurTimestamp();\r\n if (this.touched() || !lbt || lbt + 1 < Date.now()) return;\r\n this.lastBlurTimestamp.set(null);\r\n\r\n this._onTouched();\r\n }\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n if (!this.touched()) this.lastBlurTimestamp.set(Date.now());\r\n }\r\n\r\n //! getters\r\n readonly highlightedItems = computed<ArdOptionSimple[]>(() => this.itemStorage.highlightedItems());\r\n readonly firstHighlightedItem = computed<Nullable<ArdOptionSimple>>(() => this.highlightedItems()?.first());\r\n readonly isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());\r\n\r\n //! context providers\r\n getOptionContext(item: ArdOptionSimple): OptionContext<ArdOptionSimple> {\r\n return {\r\n $implicit: item,\r\n item,\r\n itemData: item.itemData(),\r\n };\r\n }\r\n\r\n //! value input & output\r\n @Input()\r\n set value(newValue: any) {\r\n if (!Array.isArray(newValue)) newValue = coerceArrayProperty(newValue);\r\n this.writeValue(newValue);\r\n }\r\n readonly valueChange = output<any[]>();\r\n\r\n //! output events\r\n readonly changeEvent = output<any[]>({ alias: 'change' });\r\n readonly addEvent = output<any[]>({ alias: 'add' });\r\n readonly removeEvent = output<any[]>({ alias: 'remove' });\r\n\r\n //! item selection handlers\r\n toggleItem(item: ArdOptionSimple): void {\r\n if (item.selected()) {\r\n if (this.singleselectable()) return;\r\n\r\n this.unselectItem(item);\r\n return;\r\n }\r\n this.selectItem(item);\r\n }\r\n selectItem(...items: ArdOptionSimple[]): void {\r\n const [selected, unselected] = this.itemStorage.selectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n\r\n if (selected.length > 0) {\r\n this.addEvent.emit(selected);\r\n this._emitChange();\r\n }\r\n }\r\n unselectItem(...items: ArdOptionSimple[]): void {\r\n const unselected = this.itemStorage.unselectItem(...items);\r\n\r\n if (unselected.length > 0) this.removeEvent.emit(unselected);\r\n \r\n this._emitChange();\r\n }\r\n\r\n //! highligh-related\r\n\r\n readonly isMouseBeingUsed = signal<boolean>(false);\r\n @HostListener('mousemove')\r\n onMouseMove() {\r\n this.isMouseBeingUsed.set(true);\r\n }\r\n onItemMouseEnter(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.highlightSingleItem(option);\r\n event.stopPropagation();\r\n }\r\n onItemMouseLeave(option: ArdOptionSimple, event: MouseEvent): void {\r\n if (!this.isMouseBeingUsed) return;\r\n this.itemStorage.unhighlightItem(option);\r\n event.stopPropagation();\r\n }\r\n\r\n //! click handlers\r\n onItemClick(option: ArdOptionSimple, event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.toggleItem(option);\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Space':\r\n case 'Enter': {\r\n this._toggleHighlightedItems(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._highlightNext(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._highlightPrevious(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._highlightFirst(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._highlightLast(event);\r\n return;\r\n }\r\n case 'KeyA': {\r\n if (event.ctrlKey) {\r\n this._highlightAll();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n private _toggleHighlightedItems(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n\r\n const highlightedItems = this.highlightedItems();\r\n\r\n if (highlightedItems.every(item => item.selected)) {\r\n this.unselectItem(...highlightedItems);\r\n } else {\r\n this.selectItem(...highlightedItems);\r\n }\r\n }\r\n private _highlightPrevious(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(-1, event.shiftKey);\r\n }\r\n private _highlightNext(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightNextItem(+1, event.shiftKey);\r\n }\r\n private _highlightFirst(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n private _highlightLast(event: KeyboardEvent): void {\r\n if (!this.isFocused) return;\r\n\r\n event.preventDefault();\r\n this.isMouseBeingUsed.set(false);\r\n\r\n this.itemStorage.highlightLastItem();\r\n }\r\n private _highlightAll(): void {\r\n this.itemStorage.highlightAllItems();\r\n }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({ selector: 'ng-template[ard-segm-option-tmp]' })\r\nexport class ArdSegmentOptionTemplateDirective {\r\n constructor(readonly template: TemplateRef<any>) {}\r\n}\r\n","import { FormElementAppearance, FormElementVariant } from '../types/theming.types';\n\nexport const SegmentVariant = {\n ...FormElementVariant,\n RoundedConnected: 'rounded-connected',\n SharpConnected: 'sharp-connected',\n PillConnected: 'pill-connected',\n} as const;\nexport type SegmentVariant = (typeof SegmentVariant)[keyof typeof SegmentVariant];\n\nexport const SegmentAppearance = {\n ...FormElementAppearance,\n FilledStrong: 'filled-strong',\n OutlinedStrong: 'outlined-strong',\n} as const;\nexport type SegmentAppearance = (typeof SegmentAppearance)[keyof typeof SegmentAppearance];\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { _SelectableListComponentBase } from '../_internal/selectable-list-component';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple } from '../types/item-storage.types';\r\nimport { SimpleItemStorageHost } from './../_internal/item-storages/simple-item-storage';\r\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\r\nimport { SegmentAppearance, SegmentVariant } from './segment.types';\r\n\r\ninterface SegmentRow {\r\n options: ArdOptionSimple[];\r\n isNotFull?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-segment',\r\n templateUrl: './segment.component.html',\r\n styleUrls: ['./segment.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSegmentComponent extends _SelectableListComponentBase implements SimpleItemStorageHost, AfterContentInit {\r\n override readonly _componentId: string = '104';\r\n override readonly _componentName: string = 'segment';\r\n\r\n //! appearance\r\n readonly appearance = input<SegmentAppearance>(SegmentAppearance.Outlined);\r\n readonly variant = input<SegmentVariant>(SegmentVariant.RoundedConnected);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Middle);\r\n\r\n readonly iconBased = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n this.iconBased() ? 'ard-icon-based' : '',\r\n this.compact() ? 'ard-compact' : '',\r\n this.itemRows().length > 1 ? 'ard-multirow' : 'ard-singlerow',\r\n ].join(' ')\r\n );\r\n\r\n //! coerced properties\r\n readonly autoFocus = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerRow = input<number, any>(Infinity, {\r\n transform: v => {\r\n const newValue = coerceNumberProperty(v, Infinity);\r\n if (newValue === 0) throw new Error(`ARD-FT1040a: Cannot set <ard-segment>'s [itemsPerRow] to 0.`);\r\n if (newValue < 0)\r\n throw new Error(`ARD-FT1040b: Cannot set <ard-segment>'s [itemsPerRow] to a negative value, got \"${newValue}\".`);\r\n if (newValue % 1 !== 0) {\r\n const roundedValue = Math.round(newValue) || 1; // round to nearest int, but never round to zero\r\n console.warn(\r\n new Error(\r\n `ARD-WA1040c: Cannot set <ard-segment>'s [itemsPerRow] to a non-interger value, got \"${newValue}\". The value was rounded to \"${roundedValue}\".`\r\n )\r\n );\r\n return Math.ceil(newValue);\r\n }\r\n return newValue;\r\n },\r\n });\r\n get itemsInActualRow(): number {\r\n return this.itemsPerRow() === Infinity ? this.items.length : this.itemsPerRow();\r\n }\r\n\r\n //! option template\r\n readonly optionTemplate = contentChild(ArdSegmentOptionTemplateDirective);\r\n\r\n //! lifecycle hooks\r\n ngAfterContentInit(): void {\r\n if (this.autoFocus()) {\r\n this.focus();\r\n }\r\n }\r\n\r\n //! item row getters\r\n readonly itemRows = computed<SegmentRow[]>(() => {\r\n const itemRows: SegmentRow[] = [];\r\n let currentRow: ArdOptionSimple[] = [];\r\n //get all rows\r\n for (const item of this.items) {\r\n //add item\r\n currentRow.push(item);\r\n\r\n //push if item amount reached the limit\r\n if (this.itemsPerRow() && currentRow.length === this.itemsPerRow()) {\r\n itemRows.push({ options: currentRow });\r\n currentRow = [];\r\n }\r\n }\r\n //push the last row if it is not empty\r\n if (currentRow.length !== 0) {\r\n itemRows.push({\r\n options: currentRow,\r\n isNotFull: Boolean(this.itemsPerRow()),\r\n });\r\n }\r\n return itemRows;\r\n });\r\n\r\n //! focus handler override\r\n override onFocus(event: FocusEvent): void {\r\n super.onFocus(event);\r\n\r\n if (this.itemStorage.isAnyItemHighlighted()) return;\r\n\r\n this.itemStorage.highlightFirstItem();\r\n }\r\n\r\n override onBlur(event: FocusEvent): void {\r\n super.onBlur(event);\r\n\r\n this.itemStorage.unhighlightAll();\r\n }\r\n}\r\n","<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled() || (isItemLimitReached() && !option.selected())\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [ariaSelected]=\"option.selected()\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label() }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSegmentComponent } from './segment.component';\nimport { ArdSegmentOptionTemplateDirective } from './segment.directives';\n\n@NgModule({\n declarations: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumSegmentComponent, ArdSegmentOptionTemplateDirective],\n})\nexport class ArdiumSegmentModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { SliderTooltipContext } from './slider.types';\n\n@Directive({\n selector: 'ng-template[ard-slider-tooltip-tmp]',\n})\nexport class ArdSliderTooltipDirective {\n constructor(public template: TemplateRef<SliderTooltipContext>) {}\n}\n","export interface SliderTooltipContext {\r\n value: string | number;\r\n $implicit: string | number;\r\n}\r\n\r\nexport const SliderTooltipBehavior = {\r\n Always: 'always',\r\n Auto: 'auto',\r\n Never: 'never',\r\n} as const;\r\nexport type SliderTooltipBehavior = (typeof SliderTooltipBehavior)[keyof typeof SliderTooltipBehavior];\r\n\r\nexport const SliderDecorationPosition = {\r\n Top: 'top',\r\n Bottom: 'bottom',\r\n} as const;\r\nexport type SliderDecorationPosition = (typeof SliderDecorationPosition)[keyof typeof SliderDecorationPosition];\r\n\r\nexport interface SliderLabelObject {\r\n label: string | number;\r\n for: number;\r\n}\r\nexport interface _InternalSliderLabelObject {\r\n label: string;\r\n positionPercent: string;\r\n}\r\n\r\nexport interface SliderRange<T = number> {\r\n low: T;\r\n high: T;\r\n}\r\n\r\nexport type SliderTooltipFormatFn = (value: number) => string | number;\r\n","import { Overlay, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n ViewContainerRef,\r\n computed,\r\n contentChild,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { roundToMultiple, roundToPrecision } from 'more-rounding';\r\nimport { isDefined, isObject } from 'simple-bool';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\nimport {\r\n SliderDecorationPosition,\r\n SliderLabelObject,\r\n SliderTooltipBehavior,\r\n SliderTooltipFormatFn,\r\n _InternalSliderLabelObject,\r\n} from './slider.types';\r\n\r\n@Directive()\r\nexport abstract class _AbstractSlider<T> extends _NgModelComponentBase {\r\n abstract readonly componentId: string;\r\n abstract readonly componentName: string;\r\n\r\n public readonly elementRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n protected readonly document = inject(DOCUMENT);\r\n protected readonly renderer = inject(Renderer2);\r\n protected readonly overlay = inject(Overlay);\r\n protected readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n protected readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n readonly noTooltip = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly tooltipFormat = input<Nullable<SliderTooltipFormatFn>>();\r\n\r\n protected abstract _updateTooltipValue(): void;\r\n\r\n //! min, max, step sizes\r\n readonly min = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly step = input<number, any>(1, {\r\n transform: v => {\r\n const step = coerceNumberProperty(v, 1);\r\n if (step === 0) {\r\n throw new Error(`ARD-FT${this.componentId}0a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);\r\n }\r\n if (step < 0) {\r\n throw new Error(`ARD-FT${this.componentId}0b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`);\r\n }\r\n return step;\r\n },\r\n });\r\n\r\n readonly shiftMultiplier = input<number, any>(5, { transform: v => coerceNumberProperty(v, 1) });\r\n\r\n protected readonly _stepSizeComputed = computed<number>(() => this.step() / Math.abs(this.min() - this.max()));\r\n\r\n //! value ticks\r\n readonly showValueTicks = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly percentStepSize = computed<number>(() => this._stepSizeComputed() * 100);\r\n\r\n protected readonly _tickArray = computed<string[]>(() => {\r\n const newArr: number[] = [];\r\n\r\n let positionPercentCumulative = 0;\r\n while (positionPercentCumulative < 100) {\r\n newArr.push(positionPercentCumulative);\r\n positionPercentCumulative += this._stepSizeComputed() * 100;\r\n positionPercentCumulative = roundToPrecision(positionPercentCumulative, 6);\r\n }\r\n newArr.push(100);\r\n\r\n return newArr.map(v => `${v}%`);\r\n });\r\n\r\n //! labels\r\n readonly labelPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Bottom);\r\n\r\n readonly labelObjects = input<_InternalSliderLabelObject[], SliderLabelObject[] | number[] | null>([], {\r\n alias: 'labels',\r\n transform: val => {\r\n if (!isDefined(val) || val.length === 0) {\r\n return [];\r\n }\r\n return val.map(this._numberLabelArrayMapFn).map(label => {\r\n const v = this._clampValue(label.for);\r\n return {\r\n label: String(label.label),\r\n positionPercent: `${this._valueToPercent(v) * 100}%`,\r\n };\r\n });\r\n },\r\n });\r\n\r\n protected _numberLabelArrayMapFn(val: SliderLabelObject | number): SliderLabelObject {\r\n if (isObject(val)) return val;\r\n return {\r\n label: val,\r\n for: val,\r\n };\r\n }\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-color-${this.color()}`,\r\n `ard-labels-${this.labelPosition()}`,\r\n `ard-tooltip-${this.tooltipPosition()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! determining transition\r\n readonly sliderTransition = computed(() => {\r\n const x = this._totalSteps();\r\n //this is determined using this graph: https://www.geogebra.org/calculator/nqgnhpap\r\n //capped at y=80\r\n //this specific graph is chosen because it looks the best in my opinion\r\n const formulaResult = (20 * (x + 200)) / (x + 20) - 80;\r\n const formulaResultRounded = roundToPrecision(formulaResult, 3);\r\n\r\n if (formulaResultRounded < 0) return '0';\r\n\r\n const transitionDuration = Math.min(80, formulaResultRounded);\r\n return transitionDuration + 'ms';\r\n });\r\n private readonly _totalSteps = computed<number>(() => (this.max() - this.min()) / this.step());\r\n\r\n //! value input & output\r\n //! abstract here\r\n protected abstract _value: T;\r\n @Input()\r\n set value(newValue: T) {\r\n this.writeValue(newValue);\r\n }\r\n get value(): T {\r\n return this._value;\r\n }\r\n readonly valueChange = output<T>();\r\n\r\n //! writeValue\r\n //! abstract here\r\n abstract override writeValue(v: any): void; //* abstact\r\n //! methods for programmatic manipulation\r\n abstract reset(): void;\r\n\r\n protected _offset(offset: number, hasShift: boolean, handleId = 1): void {\r\n const stepSize = this._stepSizeComputed() * (hasShift ? this.shiftMultiplier() : 1);\r\n let newPercent = this._positionPercent[handleId - 1] + stepSize * offset;\r\n newPercent = this._clampPercentValue(newPercent);\r\n this._setValueFromPercent(newPercent);\r\n }\r\n\r\n //! helper methods\r\n protected _clampValue(v: number): number {\r\n //clamp between min and max\r\n v = Math.min(v, this.max());\r\n v = Math.max(v, this.min());\r\n //round to the nearest step\r\n v -= this.min();\r\n v = roundToMultiple(v, this.step());\r\n v += this.min();\r\n return v;\r\n }\r\n protected _valueToPercent(v: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n return (v - this.min()) / minMaxDifference;\r\n }\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n //! tooltip\r\n readonly tooltipTemplate = contentChild(ArdSliderTooltipDirective);\r\n\r\n readonly tooltipPosition = input<SliderDecorationPosition>(SliderDecorationPosition.Top);\r\n readonly tooltipBehavior = input<SliderTooltipBehavior>(SliderTooltipBehavior.Auto);\r\n\r\n //! event handlers\r\n protected readonly _grabbedHandleId = signal<null | number>(null);\r\n protected _shouldCheckForMovement = false;\r\n protected _bodyHasClass = false;\r\n\r\n readonly isSliderHandleGrabbed = computed(() => !!this._grabbedHandleId());\r\n\r\n abstract onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n onPointerDownOnHandle(event: MouseEvent | TouchEvent, handleId = 1): void {\r\n this._grabbedHandleId.set(handleId);\r\n this._shouldCheckForMovement = true;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n abstract onPointerMove(event: MouseEvent | TouchEvent): void; //* abstact\r\n\r\n @HostListener('document:pointerup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onPointerUp(): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._grabbedHandleId.set(null);\r\n this._shouldCheckForMovement = false;\r\n if (this._bodyHasClass) {\r\n this._bodyHasClass = false;\r\n this.renderer.removeClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n }\r\n\r\n //! position calculators\r\n protected _positionPercent: [number] | [number, number] = [0];\r\n getHandlePosition(handleId = 1): string {\r\n return this._positionPercent[handleId - 1] * 100 + '%';\r\n }\r\n protected _setValueFromPercent(percent: number, handleId: number | null = 1): void {\r\n if (!handleId) return;\r\n if (this._positionPercent[handleId - 1] === percent) return;\r\n this._positionPercent[handleId - 1] = percent;\r\n this._value = this._percentValueToValue(percent, handleId);\r\n\r\n this._updateTooltipValue();\r\n\r\n this._emitChange();\r\n }\r\n protected _writeValueFromEvent(event: MouseEvent | TouchEvent, handleId?: number | null): void {\r\n const percent = this._getPercentValueFromEvent(event);\r\n this._setValueFromPercent(percent, handleId);\r\n }\r\n protected abstract _percentValueToValue(percent: number, handleId?: number): T; //* abstact\r\n\r\n protected _getElementRect(): DOMRect {\r\n return this.elementRef()!.nativeElement.getBoundingClientRect();\r\n }\r\n protected _clampPercentValue(percent: number): number {\r\n //clamp between 0 and 1\r\n percent = Math.min(percent, 1);\r\n percent = Math.max(percent, 0);\r\n //round to the nearest step\r\n percent = roundToMultiple(percent, this._stepSizeComputed());\r\n return percent;\r\n }\r\n protected _getPercentValueFromEvent(event: MouseEvent | TouchEvent): number {\r\n const rect = this._getElementRect();\r\n let position: number;\r\n if (event instanceof MouseEvent) {\r\n position = event.clientX;\r\n } else {\r\n position = event.targetTouches[0].clientX;\r\n }\r\n const percent = (position - rect.left) / rect.width;\r\n return this._clampPercentValue(percent);\r\n }\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'ArrowLeft': {\r\n this._decrement(event);\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._increment(event);\r\n return;\r\n }\r\n }\r\n }\r\n protected _decrement(event: KeyboardEvent, steps = 1): void {\r\n this._offset(-steps, event.shiftKey);\r\n }\r\n protected _increment(event: KeyboardEvent, steps = 1): void {\r\n this._offset(+steps, event.shiftKey);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, HostListener, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { _AbstractSlider } from './abstract-slider';\r\nimport { SliderTooltipContext } from './slider.types';\r\n\r\n@Component({\r\n selector: 'ard-slider',\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSliderComponent extends _AbstractSlider<number> {\r\n readonly componentId = '105';\r\n readonly componentName = 'slider';\r\n\r\n //! value input & output\r\n protected _value = 0;\r\n\r\n //! tooltip updater\r\n _tooltipValue = String(this.value);\r\n\r\n protected _updateTooltipValue(): void {\r\n let v: string | number = this._value;\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) v = formatFn(v);\r\n this._tooltipValue = String(v);\r\n }\r\n\r\n getTooltipContext(): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue,\r\n $implicit: this._tooltipValue,\r\n };\r\n }\r\n\r\n //! writeValue\r\n writeValue(v: any): void {\r\n v = Number(v);\r\n if (isNaN(v)) {\r\n this.reset();\r\n return;\r\n }\r\n v = this._clampValue(v);\r\n this._value = v;\r\n this._positionPercent[0] = this._valueToPercent(v);\r\n this._updateTooltipValue();\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = 0;\r\n this._positionPercent[0] = 0;\r\n }\r\n increment(steps = 1): void {\r\n this._offset(steps, false);\r\n }\r\n decrement(steps = 1): void {\r\n this._offset(-steps, false);\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n this._writeValueFromEvent(event);\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number): number {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n const newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n return roundToPrecision(newVal, 9);\r\n }\r\n}\r\n","<div\r\n class=\"ard-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{ width: getHandlePosition(1) }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed()\"\r\n (pointerdown)=\"onPointerDownOnHandle($event)\"\r\n (touchstart)=\"onPointerDownOnHandle($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext()\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ArdiumSliderComponent } from './slider.component';\r\nimport { ArdSliderTooltipDirective } from './slider.directive';\r\n\r\n@NgModule({\r\n declarations: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n imports: [CommonModule, OverlayModule],\r\n exports: [ArdiumSliderComponent, ArdSliderTooltipDirective],\r\n})\r\nexport class ArdiumSliderModule {}\r\n","import { ChangeDetectionStrategy, Component, HostListener, OnInit, ViewEncapsulation, signal } from '@angular/core';\r\nimport { roundToPrecision } from 'more-rounding';\r\nimport { isNumber, isObject } from 'simple-bool';\r\nimport { _AbstractSlider } from '../abstract-slider';\r\nimport { SliderRange, SliderTooltipContext } from '../slider.types';\r\n\r\n@Component({\r\n selector: 'ard-range-slider',\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumRangeSliderComponent extends _AbstractSlider<SliderRange> implements OnInit {\r\n readonly componentId = '106';\r\n readonly componentName = 'range-slider';\r\n\r\n protected _value: SliderRange = { low: -Infinity, high: Infinity };\r\n\r\n ngOnInit(): void {\r\n if (this._value.low !== -Infinity && this._value.high !== Infinity) return;\r\n\r\n this.writeValue({ low: this.min(), high: this.max() });\r\n }\r\n\r\n //! writeValue\r\n private _isValidObject(v: any): v is SliderRange {\r\n return isObject(v) && isNumber(v['low']) && isNumber(v['high']);\r\n }\r\n private _isValidTuple(v: any): v is [number, number] {\r\n return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;\r\n }\r\n private _arrayValueToObjectValue(v: [number, number]): SliderRange {\r\n return { low: v[0], high: v[1] };\r\n }\r\n private _normalizeSliderRange(v: SliderRange): SliderRange {\r\n if (v.low <= v.high) return v;\r\n return { low: v.high, high: v.low };\r\n }\r\n writeValue(v: any): void {\r\n if (!this._isValidObject(v) && !this._isValidTuple(v)) {\r\n this.reset();\r\n return;\r\n }\r\n let low = -Infinity;\r\n let high = Infinity;\r\n if (this._isValidObject(v)) {\r\n low = v.low;\r\n high = v.high;\r\n } else if (this._isValidTuple(v)) {\r\n low = v[0];\r\n high = v[1];\r\n }\r\n const lowClamped = this._clampValue(low);\r\n const highClamped = this._clampValue(high);\r\n const value: SliderRange = this._arrayValueToObjectValue([lowClamped, highClamped]);\r\n this._value = value;\r\n this._positionPercent[0] = this._valueToPercent(lowClamped);\r\n this._positionPercent[1] = this._valueToPercent(highClamped);\r\n this._updateTooltipValue();\r\n }\r\n override get value(): SliderRange {\r\n return this._normalizeSliderRange(this._value);\r\n }\r\n override set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n //! tooltip updater\r\n _tooltipValue: SliderRange<string | number> = this.value;\r\n\r\n protected _updateTooltipValue(): void {\r\n const v: SliderRange<string | number> = Object.create(this._value);\r\n const formatFn = this.tooltipFormat();\r\n if (formatFn) {\r\n v.low = formatFn(v.low as number);\r\n v.high = formatFn(v.high as number);\r\n }\r\n this._tooltipValue = v;\r\n }\r\n\r\n getTooltipContext(type: 'low' | 'high'): SliderTooltipContext {\r\n return {\r\n value: this._tooltipValue[type],\r\n $implicit: this._tooltipValue[type],\r\n };\r\n }\r\n\r\n //! methods for programmatic manipulation\r\n reset(): void {\r\n this._value = { low: -Infinity, high: Infinity };\r\n this._positionPercent[0] = 0;\r\n this._positionPercent[1] = 1;\r\n }\r\n\r\n //! track overlay getters\r\n get trackOverlayLeft(): string {\r\n return Math.min(...this._positionPercent) * 100 + '%';\r\n }\r\n get trackOverlayWidth(): string {\r\n return Math.abs(this._positionPercent[0] - this._positionPercent[1]!) * 100 + '%';\r\n }\r\n\r\n //! event handlers\r\n onTrackHitboxPointerDown(event: MouseEvent | TouchEvent): void {\r\n this._writeValueFromEvent(event);\r\n this.onPointerDownOnHandle(event);\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onPointerMove(event: MouseEvent | TouchEvent): void {\r\n if (!this._shouldCheckForMovement) return;\r\n if (!this._bodyHasClass) {\r\n this._bodyHasClass = true;\r\n this.renderer.addClass(this.document.body, 'ard-prevent-touch-actions');\r\n }\r\n this._writeValueFromEvent(event, this._grabbedHandleId());\r\n }\r\n\r\n //! position calculators\r\n protected _percentValueToValue(percent: number, handleId: number): SliderRange {\r\n const minMaxDifference = Math.abs(this.min() - this.max());\r\n let newVal = percent * minMaxDifference + this.min();\r\n //round to 9 decimal places to avoid floating point arithmetic errors\r\n //9 is an arbitrary number that just works well. ¯\\_(ツ)_/¯\r\n newVal = roundToPrecision(newVal, 9);\r\n\r\n const newValObj = { low: this._value.low, high: this._value.high };\r\n if (handleId === 1) {\r\n newValObj.low = newVal;\r\n } else {\r\n newValObj.high = newVal;\r\n }\r\n return newValObj;\r\n }\r\n\r\n //! handle focus monitors\r\n readonly currentHandle = signal<1 | 2 | null>(null);\r\n onHandleFocus(event: FocusEvent, handleId: 1 | 2) {\r\n this.onFocus(event);\r\n\r\n this.currentHandle.set(handleId);\r\n }\r\n override onBlur(event: FocusEvent) {\r\n super.onBlur(event);\r\n this.currentHandle.set(null);\r\n }\r\n}\r\n","<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('low')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('high')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumRangeSliderComponent } from './range-slider.component';\n\n@NgModule({\n declarations: [ArdiumRangeSliderComponent],\n imports: [CommonModule],\n exports: [ArdiumRangeSliderComponent],\n})\nexport class ArdiumRangeSliderModule {}\n","export const ClickStrategy = {\r\n Noop: 'noop',\r\n Default: 'default',\r\n} as const;\r\nexport type ClickStrategy = (typeof ClickStrategy)[keyof typeof ClickStrategy];\r\n\r\n/**\r\n * Represents an array type that must contain at least one element.\r\n *\r\n * @template T - The type of elements in the array.\r\n */\r\nexport type NonEmptyArray<T> = [T, ...T[]];\r\n\r\nexport type Nullable<T> = T | undefined | null;\r\n","import { SimpleComponentColor } from '../types/colors.types';\n\nexport const StarFillMode = {\n /**\n * The star is not filled, just an outline.\n */\n None: 'none',\n /**\n * Half of the star is filled.\n */\n Half: 'half',\n /**\n * The star is fully filled.\n */\n Filled: 'filled',\n} as const;\nexport type StarFillMode = (typeof StarFillMode)[keyof typeof StarFillMode];\n\nexport const StarColor = {\n ...SimpleComponentColor,\n /**\n * THe app's color set for all stars. Usually gold or yellow-gold.\n */\n Star: 'star',\n} as const;\nexport type StarColor = (typeof StarColor)[keyof typeof StarColor];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { StarColor, StarFillMode } from './star.types';\r\n\r\n@Component({\r\n selector: 'ard-star',\r\n templateUrl: './star.component.html',\r\n styleUrls: ['./star.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n readonly fill = input<StarFillMode>(StarFillMode.Filled);\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.fill()}`].join(' ')\r\n );\r\n}\r\n","<div\r\n class=\"ard-star\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { _BooleanComponentBase } from '../../_internal/boolean-component';\r\nimport { ClickStrategy } from '../../types/utility.types';\r\nimport { StarColor } from '../star.types';\r\nimport { StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-button',\r\n templateUrl: './star-button.component.html',\r\n styleUrls: ['./star-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarButtonComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly clickStrategy = input<ClickStrategy>(ClickStrategy.Default);\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n readonly starFillState = computed<StarFillMode>(() => (this.selected() ? StarFillMode.Filled : StarFillMode.None));\r\n\r\n onClick(): void {\r\n if (this.clickStrategy() === ClickStrategy.Noop) return;\r\n this.toggleSelected();\r\n }\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-star-button\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"onClick()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-star\r\n [fill]=\"starFillState()\"\r\n [color]=\"color()\"\r\n ></ard-star>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarComponent } from './star.component';\n\n@NgModule({\n declarations: [ArdiumStarComponent],\n imports: [CommonModule],\n exports: [ArdiumStarComponent],\n})\nexport class ArdiumStarModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarButtonComponent } from './star-button.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarButtonComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarButtonComponent],\n})\nexport class ArdiumStarButtonModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { ArdiumStarButtonComponent } from '../star-button/star-button.component';\r\nimport { _NgModelComponentBase } from './../../_internal/ngmodel-component';\r\nimport { StarColor } from './../star.types';\r\n\r\ninterface StarInputObject {\r\n filled: boolean;\r\n isInValue: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ard-star-input',\r\n templateUrl: './star-input.component.html',\r\n styleUrls: ['./star-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStarInputComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));\r\n\r\n //! events\r\n readonly changeEvent = output<number>({ alias: 'change' });\r\n readonly highlightEvent = output<number>({ alias: 'highlight' });\r\n\r\n readonly value = model<number>(0);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const hi = this._highlightedStarIndex();\r\n if (hi !== null) {\r\n this.highlightEvent.emit(hi);\r\n }\r\n });\r\n effect(() => {\r\n this.value(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! stars\r\n readonly max = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly starButtonInstances = viewChildren<ArdiumStarButtonComponent>('starButton');\r\n private readonly _highlightedStarIndex = signal<number | null>(null);\r\n\r\n readonly starArray = computed<StarInputObject[]>(() => {\r\n const v = this.value();\r\n const max = this.max();\r\n const hi = Math.round(this._highlightedStarIndex() ?? -1);\r\n\r\n const arr = new Array(max);\r\n for (let i = 0; i < max; i++) {\r\n if (i <= hi) {\r\n arr[i] = { filled: true, isInValue: true };\r\n continue;\r\n }\r\n if (i < v) {\r\n arr[i] = { filled: hi === -1, isInValue: true };\r\n continue;\r\n }\r\n arr[i] = { filled: false, isInValue: false };\r\n }\r\n return arr;\r\n });\r\n\r\n //! ControlValueAccessor's writeValue\r\n writeValue(v: number): void {\r\n this.value.set(v);\r\n }\r\n onStarClick(index: number): void {\r\n this.value.set(index + 1);\r\n }\r\n onStarHighlight(index: number): void {\r\n this._highlightedStarIndex.set(index);\r\n }\r\n setDisplayToValue() {\r\n this._highlightedStarIndex.set(null);\r\n }\r\n protected _emitChange(): void {\r\n this._onChangeRegistered?.(this.value());\r\n this.changeEvent.emit(this.value());\r\n }\r\n\r\n //* focus handlers\r\n private _isFocusEventSuppressed = false;\r\n private _isBlurEventSuppressed = false;\r\n private _currentFocusIndex: number | null = null;\r\n onStarButtonFocus(index: number, event: FocusEvent) {\r\n this._currentFocusIndex = index;\r\n if (this._isFocusEventSuppressed) {\r\n this._isFocusEventSuppressed = false;\r\n return;\r\n }\r\n this.focusEvent.emit(event);\r\n }\r\n onStarButtonBlur(event: FocusEvent): void {\r\n this._currentFocusIndex = null;\r\n if (this._isBlurEventSuppressed) {\r\n this._isBlurEventSuppressed = false;\r\n return;\r\n }\r\n this.blurEvent.emit(event);\r\n }\r\n focusStarButtonByIndex(index: number): void {\r\n if (!this.starButtonInstances()) return;\r\n this.starButtonInstances()[index]!.focus();\r\n }\r\n focusNextStarButton(offset: number): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n\r\n let nextIndex = this._currentFocusIndex + offset;\r\n nextIndex = Math.min(nextIndex, this.max() - 1);\r\n nextIndex = Math.max(nextIndex, 0);\r\n\r\n this.focusStarButtonByIndex(nextIndex);\r\n }\r\n private _suppressFocusEvents(): void {\r\n this._isFocusEventSuppressed = true;\r\n this._isBlurEventSuppressed = true;\r\n }\r\n\r\n override focus(): void {\r\n this.focusStarButtonByIndex(0);\r\n }\r\n override blur(): void {\r\n if (!this.starButtonInstances() || this._currentFocusIndex === null) return;\r\n this.starButtonInstances()[this._currentFocusIndex]!.blur();\r\n }\r\n\r\n //! key press handlers\r\n @HostListener('keydown', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n switch (event.code) {\r\n case 'Tab': {\r\n this._onTabPress();\r\n return;\r\n }\r\n case 'ArrowRight': {\r\n this._onArrowRightPress(event);\r\n return;\r\n }\r\n case 'ArrowLeft': {\r\n this._onArrowLeftPress(event);\r\n return;\r\n }\r\n case 'Home': {\r\n this._onHomePress(event);\r\n return;\r\n }\r\n case 'End': {\r\n this._onEndPress(event);\r\n return;\r\n }\r\n }\r\n }\r\n private _onArrowRightPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(+1);\r\n }\r\n private _onArrowLeftPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusNextStarButton(-1);\r\n }\r\n private _onHomePress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this.focusStarButtonByIndex(0);\r\n }\r\n private _onEndPress(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this._suppressFocusEvents();\r\n this._onTabPress();\r\n }\r\n private _onTabPress(): void {\r\n this.focusStarButtonByIndex(this.max() - 1);\r\n }\r\n}\r\n","<div\r\n class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses()\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n @for (object of starArray(); track $index) {\r\n <ard-star-button\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!object.isInValue\"\r\n [color]=\"object.isInValue ? color() : 'none'\"\r\n clickStrategy=\"noop\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick($index)\"\r\n (focus)=\"onStarButtonFocus($index, $event)\"\r\n (blur)=\"onStarButtonBlur($event)\"\r\n (mouseenter)=\"onStarHighlight($index)\"\r\n [tabIndex]=\"tabIndex()\"\r\n />\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumStarButtonModule } from '../star-button/star-button.module';\nimport { ArdiumStarInputComponent } from './star-input.component';\n\n@NgModule({\n declarations: [ArdiumStarInputComponent],\n imports: [CommonModule, ArdiumStarButtonModule],\n exports: [ArdiumStarInputComponent],\n})\nexport class ArdiumStarInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _NgModelComponentBase } from './../_internal/ngmodel-component';\r\nimport { ArdiumStarButtonComponent } from './../star/star-button/star-button.component';\r\nimport { StateboxState, StateboxValue, _StateboxInternalState } from './statebox.types';\r\n\r\nconst DEFAULT_STATES: StateboxState[] = [\r\n { value: false, color: 'none' },\r\n { value: true, color: 'secondary', icon: 'check_box', filled: true },\r\n];\r\n\r\n@Component({\r\n selector: 'ard-statebox',\r\n templateUrl: './statebox.component.html',\r\n styleUrls: ['./statebox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumStarButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumStateboxComponent extends _NgModelComponentBase implements ControlValueAccessor {\r\n readonly states = input<StateboxState[]>(DEFAULT_STATES);\r\n readonly _states = computed(() => this.states().map(this._stateMapFn));\r\n readonly _defaultState = computed(() => this._states()[0]);\r\n\r\n readonly manualStateHandling = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n this.wrapperClasses(),\r\n this.internalState().useCustomColor ? 'ard-color-custom' : `ard-color-${this.internalState().color}`,\r\n this.internalState().filled ? 'ard-statebox-filled' : '',\r\n this.internalState().keepFrame ? 'ard-statebox-keep-frame' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! events\r\n readonly changeEvent = output<StateboxValue>({ alias: 'change' });\r\n readonly clickEvent = output<MouseEvent>({ alias: 'click' });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n this.state(); // let the effect know when to fire\r\n this._emitChange();\r\n });\r\n }\r\n\r\n //! state handlers\r\n readonly state = model<StateboxValue>(this._defaultState().value);\r\n private readonly _stateIndex = computed<number>(() => {\r\n const v = this.state();\r\n const foundStateIndex = this._states().findIndex(state => state.value === v);\r\n return foundStateIndex === -1 ? 0 : foundStateIndex;\r\n });\r\n readonly internalState = computed<_StateboxInternalState>(() => this._states()[this._stateIndex()]);\r\n\r\n writeValue(v: StateboxValue) {\r\n this.state.set(v);\r\n }\r\n\r\n //! change handlers\r\n private _stateMapFn(state: StateboxState): _StateboxInternalState {\r\n let display: string;\r\n let displayAsIcon = false;\r\n let keepFrame = true;\r\n\r\n if (state.icon) {\r\n display = state.icon;\r\n displayAsIcon = true;\r\n keepFrame = false;\r\n } else if (state.character) {\r\n display = state.character.substring(0, 1);\r\n } else {\r\n display = '';\r\n }\r\n return {\r\n value: state.value,\r\n display,\r\n displayAsIcon,\r\n color: state.color ?? state.customColor ?? 'none',\r\n useCustomColor: state.color ? false : true,\r\n colorOnCustom: state.colorOnCustom,\r\n filled: state.filled ?? false,\r\n keepFrame: state.keepFrame ?? keepFrame,\r\n };\r\n }\r\n\r\n //! event handlers\r\n onClick(event: MouseEvent) {\r\n if (this.manualStateHandling()) {\r\n this.clickEvent.emit(event);\r\n return;\r\n }\r\n\r\n let newIndex = this._stateIndex() + 1;\r\n if (newIndex >= this._states().length) {\r\n newIndex = 0;\r\n }\r\n this.state.set(this._states()[newIndex].value);\r\n }\r\n\r\n protected _emitChange() {\r\n const s = this.state();\r\n this._onChangeRegistered?.(s);\r\n this.changeEvent.emit(s);\r\n }\r\n\r\n readonly ngStyle = computed<Record<string, any>>(() => {\r\n let customColor = null;\r\n const state = this.internalState();\r\n if (state.useCustomColor) {\r\n customColor = state.color;\r\n }\r\n return {\r\n '--ard-custom-color': customColor,\r\n '--ard-on-custom-color': state.colorOnCustom ?? '#fff',\r\n };\r\n });\r\n}\r\n","<button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-statebox\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"onClick($event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"ngStyle()\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (internalState().keepFrame) {\r\n <div class=\"ard-statebox-frame\"></div>\r\n }\r\n <div [class]=\"internalState().displayAsIcon ? 'ard-statebox-icon' : 'ard-statebox-character'\">\r\n {{ internalState().display }}\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStateboxComponent } from './statebox.component';\n\n@NgModule({\n declarations: [ArdiumStateboxComponent],\n imports: [CommonModule],\n exports: [ArdiumStateboxComponent],\n})\nexport class ArdiumStateboxModule {}\n","export const ArdSlideToggleAppearance = {\r\n Raised: 'raised',\r\n Contained: 'contained',\r\n} as const;\r\nexport type ArdSlideToggleAppearance = (typeof ArdSlideToggleAppearance)[keyof typeof ArdSlideToggleAppearance];\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { ArdSlideToggleAppearance } from './slide-toggle.types';\r\n\r\n@Component({\r\n selector: 'ard-slide-toggle',\r\n templateUrl: './slide-toggle.component.html',\r\n styleUrls: ['./slide-toggle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumSlideToggleComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumSlideToggleComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClass = input<string | undefined | null>(undefined);\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly appearance = input<ArdSlideToggleAppearance>(ArdSlideToggleAppearance.Raised);\r\n readonly icon = input<string | undefined | null>(undefined);\r\n readonly selectedIcon = input<string | undefined | null>(undefined);\r\n readonly unselectedIcon = input<string | undefined | null>(undefined);\r\n\r\n readonly ngClasses = computed(() => {\r\n return [`ard-color-${this.color()}`, `ard-appearance-${this.appearance()}`, this.wrapperClass() ?? ''].join(' ');\r\n });\r\n}\r\n","<button\r\n type=\"button\"\r\n role=\"checkbox\"\r\n [ariaChecked]=\"selected()\"\r\n class=\"ard-slide-toggle\"\r\n [class.ard-slide-toggle-selected]=\"selected()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (click)=\"toggleSelected()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slide-toggle-track\">\r\n <div class=\"ard-slide-toggle-track-overlay\"></div>\r\n </div>\r\n <div class=\"ard-slide-toggle-handle\">\r\n <div class=\"ard-focus-overlay\"></div>\r\n @if (selectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-selected\">{{ selectedIcon() ?? icon() }}</div>\r\n } @if (unselectedIcon() ?? icon()) {\r\n <div class=\"ard-slide-toggle-icon ard-icon-for-unselected\">{{ unselectedIcon() ?? icon() }}</div>\r\n }\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSlideToggleComponent } from './slide-toggle.component';\n\n@NgModule({\n declarations: [ArdiumSlideToggleComponent],\n imports: [CommonModule],\n exports: [ArdiumSlideToggleComponent],\n})\nexport class ArdiumSlideToggleModule {}\n","export const CheckboxState = {\n Unselected: 'unselected',\n Indeterminate: 'indeterminate',\n Selected: 'selected',\n} as const;\nexport type CheckboxState = (typeof CheckboxState)[keyof typeof CheckboxState];\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { _BooleanComponentBase } from './../_internal/boolean-component';\r\nimport { CheckboxState } from './checkbox.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ArdiumCheckboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ArdiumCheckboxComponent extends _BooleanComponentBase implements ControlValueAccessor {\r\n readonly wrapperClasses = input<string>('');\r\n readonly htmlId = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly unselectedColor = input<SimpleComponentColor>(SimpleComponentColor.None);\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n this.wrapperClasses(),\r\n `ard-color-${this.color()}`,\r\n `ard-unselected-color-${this.unselectedColor()}`,\r\n `ard-checkbox-${this.state()}`,\r\n ].join(' ')\r\n );\r\n\r\n //override the \"selected\" setter, so it changes the state too.\r\n override set _selected(v: any) {\r\n const selected = coerceBooleanProperty(v);\r\n this.selected.set(selected);\r\n this.state.set(selected ? CheckboxState.Selected : CheckboxState.Unselected);\r\n }\r\n\r\n readonly state = model<CheckboxState>(CheckboxState.Unselected);\r\n\r\n //! click action\r\n toggleState() {\r\n let newState: CheckboxState = CheckboxState.Unselected;\r\n if (this.state() === CheckboxState.Unselected) {\r\n newState = CheckboxState.Selected;\r\n }\r\n this.state.set(newState);\r\n this.selected.set(this.state() === CheckboxState.Selected);\r\n\r\n this._emitChange();\r\n }\r\n}\r\n","<button\r\n class=\"ard-checkbox\"\r\n role=\"checkbox\"\r\n type=\"button\"\r\n [id]=\"htmlId()\"\r\n [ariaChecked]=\"selected()\"\r\n [tabindex]=\"tabIndex()\"\r\n [ngClass]=\"ngClasses()\"\r\n (click)=\"toggleState()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-selected\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-indeterminate\"></div>\r\n <div class=\"ard-checkbox-icon ard-icon-for-unselected\"></div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [ArdiumCheckboxComponent],\n imports: [CommonModule],\n exports: [ArdiumCheckboxComponent],\n})\nexport class ArdiumCheckboxModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { _ButtonBase } from '../_button-base';\r\nimport { FABSize } from '../general-button.types';\r\n\r\n@Component({\r\n selector: 'ard-fab',\r\n templateUrl: './fab.component.html',\r\n styleUrls: ['./fab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumFabComponent extends _ButtonBase {\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n \r\n //! appearance\r\n readonly size = input<FABSize>(FABSize.Standard);\r\n\r\n readonly extended = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-fab-size-${this.size()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.extended() ? 'ard-fab-extended' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-fab\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div\r\n class=\"ard-button-content\"\r\n #content\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumFabComponent } from './fab.component';\n\n@NgModule({\n declarations: [ArdiumFabComponent],\n imports: [CommonModule],\n exports: [ArdiumFabComponent],\n})\nexport class ArdiumFabModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../../_internal/focusable-component';\r\nimport { ButtonType } from '../../types/button.types';\r\nimport { ComponentColor } from '../../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumIconButtonComponent extends _FocusableComponentBase {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n readonly type = input<ButtonType>(ButtonType.Button);\r\n\r\n //! button settings\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly lightColoring = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n 'ard-appearance-transparent',\r\n `ard-color-${this.disabled() ? ComponentColor.None : this.color()}`,\r\n this.lightColoring() ? `ard-light-coloring` : '',\r\n this.compact() ? 'ard-compact' : '',\r\n ].join(' ')\r\n );\r\n}\r\n","<button\r\n class=\"ard-icon-button\"\r\n [type]=\"type()\"\r\n [ngClass]=\"ngClasses()\"\r\n [tabindex]=\"tabIndex()\"\r\n (focus)=\"focusEvent.emit($event)\"\r\n (blur)=\"blurEvent.emit($event)\"\r\n>\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</button>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumIconButtonComponent } from './icon-button.component';\n\n@NgModule({\n declarations: [ArdiumIconButtonComponent],\n imports: [CommonModule],\n exports: [ArdiumIconButtonComponent],\n})\nexport class ArdiumIconButtonModule {}\n","export const CheckboxListAlignType = {\n LeftClumped: 'left-clumped',\n LeftSplit: 'left-split',\n RightSplit: 'right-split',\n RightClumped: 'right-clumped',\n} as const;\nexport type CheckboxListAlignType = (typeof CheckboxListAlignType)[keyof typeof CheckboxListAlignType];\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleItemStorage, SimpleItemStorageHost } from '../_internal/item-storages/simple-item-storage';\r\nimport { _NgModelComponentBase } from '../_internal/ngmodel-component';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdOptionSimple, CompareWithFn } from '../types/item-storage.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { CheckboxListAlignType } from './checkbox-list.types';\r\n\r\n@Component({\r\n selector: 'ard-checkbox-list',\r\n templateUrl: './checkbox-list.component.html',\r\n styleUrls: ['./checkbox-list.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCheckboxListComponent extends _NgModelComponentBase implements SimpleItemStorageHost, AfterViewInit {\r\n readonly htmlId = input<string>(crypto.randomUUID());\r\n\r\n @HostBinding('attr.id')\r\n get _htmlIdHostAttribute() {\r\n return this.htmlId();\r\n }\r\n\r\n readonly DEFAULTS = {\r\n valueFrom: 'value',\r\n labelFrom: 'label',\r\n disabledFrom: 'disabled',\r\n };\r\n // static values. Not meant to be changed.\r\n readonly multiselectable = signal<true>(true);\r\n readonly isValueRequired = signal<false>(false);\r\n readonly _componentId = '300';\r\n readonly _componentName = 'checkbox-list';\r\n\r\n private readonly _itemStorage = new SimpleItemStorage(this);\r\n\r\n readonly valueFrom = input<string>(this.DEFAULTS.valueFrom);\r\n readonly labelFrom = input<string>(this.DEFAULTS.labelFrom);\r\n readonly disabledFrom = input<string>(this.DEFAULTS.disabledFrom);\r\n\r\n @Input()\r\n set items(v: any[]) {\r\n this._itemStorage.setItems(v);\r\n }\r\n get items(): ArdOptionSimple[] {\r\n return this._itemStorage.items();\r\n }\r\n\r\n readonly compareWith = input<Nullable<CompareWithFn>>(undefined);\r\n\r\n readonly invertDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly maxSelectedItems = input<number, any>(Infinity, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<CheckboxListAlignType>(CheckboxListAlignType.LeftClumped);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! value\r\n @Input()\r\n get value(): any {\r\n return this._itemStorage.value();\r\n }\r\n set value(v: any) {\r\n this.writeValue(v);\r\n }\r\n\r\n readonly valueChange = output<any>();\r\n readonly changeEvent = output<any>({ alias: 'change' });\r\n\r\n private _valueBeforeInit: any;\r\n writeValue(v: any): void {\r\n if (!this._isViewInit) {\r\n this._valueBeforeInit = v;\r\n return;\r\n }\r\n this._itemStorage.writeValue(v);\r\n }\r\n\r\n private _isViewInit = false;\r\n ngAfterViewInit(): void {\r\n this._isViewInit = true;\r\n\r\n if (this._valueBeforeInit) {\r\n this.writeValue(this._valueBeforeInit);\r\n }\r\n }\r\n\r\n protected _emitChange(): void {\r\n const v = this.value;\r\n this._onChangeRegistered?.(v);\r\n this.changeEvent.emit(v);\r\n this.valueChange.emit(v);\r\n }\r\n\r\n onItemHighlight(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemFocus(v: ArdOptionSimple): void {\r\n this._itemStorage.highlightSingleItem(v);\r\n }\r\n onItemBlur(): void {\r\n this._itemStorage.unhighlightAll();\r\n }\r\n selectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.selectItem(v);\r\n this._emitChange();\r\n }\r\n unselectItem(v: ArdOptionSimple): void {\r\n this._itemStorage.unselectItem(v);\r\n this._emitChange();\r\n }\r\n toggleItem(v: ArdOptionSimple): void {\r\n if (v.selected()) {\r\n this.unselectItem(v);\r\n return;\r\n }\r\n this.selectItem(v);\r\n }\r\n}\r\n","<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index()) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index()\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumCheckboxListComponent } from './checkbox-list.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\n\n@NgModule({\n declarations: [ArdiumCheckboxListComponent],\n imports: [CommonModule, ArdiumCheckboxModule],\n exports: [ArdiumCheckboxListComponent],\n})\nexport class ArdiumCheckboxListModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\n\r\n@Component({\r\n selector: 'ard-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumSpinnerComponent {\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n\r\n readonly ngClasses = computed((): string => [`ard-color-${this.color()}`].join(' '));\r\n}\r\n","<svg\r\n class=\"ard-spinner\"\r\n [ngClass]=\"ngClasses()\"\r\n viewBox=\"0 0 100 100\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n>\r\n <circle\r\n class=\"ard-spinner-circle\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n r=\"20\"\r\n ></circle>\r\n</svg>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumSpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [ArdiumSpinnerComponent],\n imports: [CommonModule],\n exports: [ArdiumSpinnerComponent],\n})\nexport class ArdiumSpinnerModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressBarValueContext } from './progress-bar.types';\n\n@Directive({ selector: 'ard-progress-bar > ng-template[ard-value-tmp]' })\nexport class ArdProgressBarValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressBarValueContext>) {}\n}\n","export interface ProgressBarValueContext {\r\n value: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressBarSize = {\r\n Default: 'default',\r\n Auto: 'auto',\r\n} as const;\r\nexport type ProgressBarSize = (typeof ProgressBarSize)[keyof typeof ProgressBarSize];\r\n\r\nexport const ProgressBarAppearance = {\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressBarAppearance = (typeof ProgressBarAppearance)[keyof typeof ProgressBarAppearance];\r\n\r\nexport const ProgressBarVariant = {\r\n Sharp: 'sharp',\r\n Pill: 'pill',\r\n} as const;\r\nexport type ProgressBarVariant = (typeof ProgressBarVariant)[keyof typeof ProgressBarVariant];\r\n\r\nexport const ProgressBarMode = {\r\n Determinate: 'determinate',\r\n Indeterminate: 'indeterminate',\r\n Buffer: 'buffer',\r\n Query: 'query',\r\n} as const;\r\nexport type ProgressBarMode = (typeof ProgressBarMode)[keyof typeof ProgressBarMode];\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n input,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\r\nimport { ProgressBarMode, ProgressBarSize, ProgressBarValueContext, ProgressBarVariant } from './progress-bar.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrls: ['./progress-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressBarComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n readonly bufferValue = input<number, any>(0, { transform: v => coerceNumberProperty(v) });\r\n\r\n //! appearance\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressBarVariant>(ProgressBarVariant.Pill);\r\n readonly size = input<ProgressBarSize>(ProgressBarSize.Default);\r\n readonly mode = input<ProgressBarMode>(ProgressBarMode.Determinate);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-progress-bar__size-${this.size()}`,\r\n `ard-progress-bar__mode-${this.mode()}`,\r\n this.hideValue() ? 'ard-progress-bar__hide-value' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! error detection\r\n constructor() {\r\n effect(() => {\r\n if (this.mode() === ProgressBarMode.Buffer && this.size() === ProgressBarSize.Auto) {\r\n console.error(\r\n new Error(\r\n `ARD-NF4010: Forbidden param combination in <ard-progress-bar>: cannot use 'mode=\"buffer\"' and 'size=\"auto\"' at the same time.`\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n //! bar styling\r\n readonly cssVariables = computed<string>(() => {\r\n if (this.mode() === ProgressBarMode.Indeterminate || this.mode() === ProgressBarMode.Query) {\r\n return '--ard-_progress-bar-main: 0;';\r\n }\r\n const mainVariable = `--ard-_progress-bar-main: ${this.value()}%;`;\r\n if (this.mode() === ProgressBarMode.Buffer) {\r\n return mainVariable + `--ard-_progress-bar-buffer: ${this.bufferValue()}%;`;\r\n }\r\n return mainVariable;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressBarValueTemplateDirective, { read: TemplateRef })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressBarValueContext>(() => ({\r\n value: this.value(),\r\n $implicit: this.value(),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-bar\"\r\n role=\"progressbar\"\r\n [style]=\"cssVariables()\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-bar__background\"></div>\r\n <div class=\"ard-progress-bar__overlay-buffer\"></div>\r\n <div class=\"ard-progress-bar__overlay\"></div>\r\n <div class=\"ard-progress-bar__value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value * 100 | number: '1.0-0' }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressBarComponent } from './progress-bar.component';\nimport { ArdProgressBarValueTemplateDirective } from './progress-bar.directive';\n\n@NgModule({\n declarations: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressBarComponent, ArdProgressBarValueTemplateDirective],\n})\nexport class ArdiumProgressBarModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { ProgressCircleValueContext } from './progress-circle.types';\n\n@Directive({ selector: 'ard-progress-circle > ng-template[ard-value-tmp]' })\nexport class ArdProgressCircleValueTemplateDirective {\n constructor(public template: TemplateRef<ProgressCircleValueContext>) {}\n}\n","export interface ProgressCircleValueContext {\r\n value: number;\r\n percentValue: number;\r\n max: number;\r\n $implicit: number;\r\n}\r\n\r\nexport const ProgressCircleAppearance = {\r\n Transparent: 'transparent',\r\n Colorless: 'colorless',\r\n Colored: 'colored',\r\n} as const;\r\nexport type ProgressCircleAppearance = (typeof ProgressCircleAppearance)[keyof typeof ProgressCircleAppearance];\r\n\r\nexport const ProgressCircleVariant = {\r\n Full: 'full',\r\n Ring: 'ring',\r\n} as const;\r\nexport type ProgressCircleVariant = (typeof ProgressCircleVariant)[keyof typeof ProgressCircleVariant];\r\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { SimpleComponentColor } from '../types/colors.types';\r\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\r\nimport { ProgressCircleAppearance, ProgressCircleValueContext, ProgressCircleVariant } from './progress-circle.types';\r\n\r\n@Component({\r\n selector: 'ard-progress-circle',\r\n templateUrl: './progress-circle.component.html',\r\n styleUrls: ['./progress-circle.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumProgressCircleComponent {\r\n readonly value = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) });\r\n readonly max = input<number, any>(100, { transform: v => coerceNumberProperty(v, 100) });\r\n\r\n readonly percentValue = computed<number>(() => (this.value() / this.max()) * 100);\r\n\r\n //! appearance\r\n readonly appearance = input<ProgressCircleAppearance>(ProgressCircleAppearance.Transparent);\r\n readonly color = input<SimpleComponentColor>(SimpleComponentColor.Primary);\r\n readonly variant = input<ProgressCircleVariant>(ProgressCircleVariant.Full);\r\n\r\n readonly hideValue = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly reverse = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed<string>(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-progress-circle-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n this.hideValue() ? 'ard-progress-circle-hide-value' : '',\r\n this.reverse() ? 'ard-progress-circle-reversed' : '',\r\n ].join(' ')\r\n );\r\n\r\n readonly fillPercentVariable = computed<string>(() => {\r\n const fillAmount = this.reverse() ? 100 - this.percentValue() : this.percentValue();\r\n return `--ard-_progress-circle-fill-amount: ${fillAmount}%`;\r\n });\r\n\r\n //! templates\r\n @ContentChild(ArdProgressCircleValueTemplateDirective, {\r\n read: TemplateRef,\r\n })\r\n valueTemplate?: TemplateRef<any>;\r\n\r\n readonly getValueContext = computed<ProgressCircleValueContext>(() => ({\r\n value: this.value(),\r\n percentValue: Math.round(this.percentValue()),\r\n max: this.max(),\r\n $implicit: Math.round(this.percentValue()),\r\n }));\r\n}\r\n","<div\r\n class=\"ard-progress-circle\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-progress-circle-background\"></div>\r\n <div\r\n class=\"ard-progress-circle-overlay\"\r\n [style]=\"fillPercentVariable()\"\r\n ></div>\r\n <div class=\"ard-progress-circle-value\">\r\n <ng-template\r\n #defaultValueTemplate\r\n let-value\r\n >\r\n {{ value }}%\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"getValueContext()\"\r\n ></ng-template>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumProgressCircleComponent } from './progress-circle.component';\nimport { ArdProgressCircleValueTemplateDirective } from './progress-circle.directive';\n\n@NgModule({\n declarations: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n imports: [CommonModule],\n exports: [ArdiumProgressCircleComponent, ArdProgressCircleValueTemplateDirective],\n})\nexport class ArdiumProgressCircleModule {}\n","export const BadgeSize = {\n Small: 'small',\n Medium: 'medium',\n Large: 'large',\n} as const;\nexport type BadgeSize = (typeof BadgeSize)[keyof typeof BadgeSize];\n\nexport const BadgePosition = {\n AboveBefore: 'above-before',\n AboveAfter: 'above-after',\n BelowBefore: 'below-before',\n BelowAfter: 'below-after',\n Before: 'before',\n After: 'after',\n Above: 'above',\n Below: 'below',\n} as const;\nexport type BadgePosition = (typeof BadgePosition)[keyof typeof BadgePosition];\n","import { AfterViewInit, Directive, ElementRef, OnChanges, OnDestroy, Renderer2, computed, input, signal } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { FormElementVariant } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { BadgePosition, BadgeSize } from './badge.types';\r\n\r\n@Directive({\r\n selector: '[ardBadge]',\r\n})\r\nexport class ArdiumBadgeDirective implements OnChanges, AfterViewInit, OnDestroy {\r\n constructor(\r\n private _elRef: ElementRef,\r\n private _renderer: Renderer2\r\n ) {}\r\n\r\n readonly text = input<string>('', { alias: 'ardBadge' });\r\n\r\n readonly color = input<ComponentColor>(ComponentColor.Primary, { alias: 'ardBadgeColor' });\r\n readonly variant = input<FormElementVariant>(FormElementVariant.Pill, { alias: 'ardBadgeVariant' });\r\n readonly size = input<BadgeSize>(BadgeSize.Medium, { alias: 'ardBadgeSize' });\r\n\r\n readonly position = input<BadgePosition, BadgePosition>(BadgePosition.AboveAfter, {\r\n alias: 'ardBadgePosition',\r\n transform: v => {\r\n switch (v) {\r\n case BadgePosition.Before:\r\n return BadgePosition.AboveBefore;\r\n case BadgePosition.After:\r\n case BadgePosition.Above:\r\n return BadgePosition.AboveAfter;\r\n case BadgePosition.Below:\r\n return BadgePosition.BelowAfter;\r\n\r\n default:\r\n return v;\r\n }\r\n },\r\n });\r\n\r\n readonly ariaLabel = input<string>('', { alias: 'ardBadgeAriaLabel' });\r\n\r\n readonly hidden = input<boolean, any>(false, { alias: 'ardBadgeHidden', transform: v => coerceBooleanProperty(v) });\r\n readonly overlap = input<boolean, any>(false, { alias: 'ardBadgeOverlap', transform: v => coerceBooleanProperty(v) });\r\n\r\n private readonly _elementClasses = computed(() =>\r\n [\r\n 'ard-badge',\r\n `ard-color-${this.color()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-badge-size-${this.size()}`,\r\n `ard-badge-position-${this.position()}`,\r\n this.hidden() ? 'ard-badge-hidden' : '',\r\n this.overlap() ? 'ard-badge-overlap' : 'ard-badge-no-overlap',\r\n ].join(' ')\r\n );\r\n\r\n private _createBadgeElement(): HTMLElement {\r\n try {\r\n const R = this._renderer;\r\n const element = R.createElement('div') as HTMLDivElement;\r\n R.setAttribute(element, 'class', this._elementClasses());\r\n R.setAttribute(element, 'aria-label', this.ariaLabel());\r\n\r\n if (this.text()) {\r\n const textHost = R.createElement('div') as HTMLDivElement;\r\n R.addClass(textHost, 'ard-badge-content');\r\n\r\n const text = R.createText(this.text());\r\n R.appendChild(textHost, text);\r\n R.appendChild(element, textHost);\r\n }\r\n\r\n return element;\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n error.message = 'ARD-FT4030: An unknown error has occured while rendering ardBadge: ' + error.message;\r\n throw error;\r\n }\r\n throw new Error(`ARD-FT4030: An unknown error has occured while rendering ardBadge: ` + error);\r\n }\r\n }\r\n\r\n private readonly _badgeElement = signal<Nullable<HTMLElement>>(undefined);\r\n ngOnChanges(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n const element = this._createBadgeElement();\r\n this._badgeElement.set(element);\r\n this._renderer.appendChild(this._elRef.nativeElement, element);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._renderer.addClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n ngOnDestroy(): void {\r\n if (this._badgeElement()) {\r\n this._renderer.removeChild(this._elRef.nativeElement, this._badgeElement());\r\n }\r\n this._renderer.removeClass(this._elRef.nativeElement, 'ard-badge-host');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumBadgeDirective } from './badge.directive';\n\n@NgModule({\n declarations: [ArdiumBadgeDirective],\n imports: [CommonModule],\n exports: [ArdiumBadgeDirective],\n})\nexport class ArdiumBadgeModule {}\n","export const ColorDisplayAppearance = {\n Rounded: 'rounded with-border',\n Circle: 'circle with-border',\n Sharp: 'sharp with-border',\n RoundedBorderless: 'rounded',\n CircleBorderless: 'circle',\n SharpBorderless: 'sharp',\n} as const;\nexport type ColorDisplayAppearance = (typeof ColorDisplayAppearance)[keyof typeof ColorDisplayAppearance];\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport * as Color from 'color';\r\nimport { Nullable } from '../../types/utility.types';\r\nimport { ColorDisplayAppearance } from './color-display.types';\r\n\r\n@Component({\r\n selector: 'ard-color-display',\r\n templateUrl: './color-display.component.html',\r\n styleUrls: ['./color-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumColorDisplayComponent implements AfterViewInit {\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly withLabel = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<ColorDisplayAppearance>(ColorDisplayAppearance.Rounded);\r\n\r\n get ngClasses(): string {\r\n const apprncParts = this.appearance().split(' ');\r\n return `ard-appearance-${apprncParts[0]} ${apprncParts[1] ? 'ard-with-border' : ''}`;\r\n }\r\n\r\n //! color\r\n readonly color = input<Nullable<string>, any>(undefined, { transform: v => Color(v).hex() });\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.color()) console.warn(`ARD-WA3000: Using <ard-color-display> without specifying the [color] field.`);\r\n }\r\n}\r\n","<div\r\n class=\"ard-color-display-wrapper\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div\r\n class=\"ard-color-display\"\r\n [title]=\"color()\"\r\n [style]=\"{ background: color() }\"\r\n ></div>\r\n <span\r\n class=\"ard-color-display-label\"\r\n *ngIf=\"withLabel\"\r\n >{{ color() }}</span\r\n >\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumColorDisplayComponent } from './color-display.component';\n\n@NgModule({\n declarations: [ArdiumColorDisplayComponent],\n imports: [CommonModule],\n exports: [ArdiumColorDisplayComponent],\n})\nexport class ArdiumColorDisplayModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { keyToString } from 'key-display-names';\n\n@Pipe({\n name: 'kbd',\n})\nexport class ArdiumKbdPipe implements PipeTransform {\n transform(value: string, useShort?: boolean): string {\n return keyToString(value, useShort);\n }\n}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd',\r\n templateUrl: './kbd.component.html',\r\n styleUrls: ['./kbd.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.key() && !this.contentWrapper()!.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5030: Using <ard-kbd> without specifying the [key] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly key = input<string>('');\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance()}`].join(' '));\r\n}\r\n","<kbd\r\n class=\"ard-kbd\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n {{ key() || contentWrapper()?.nativeElement?.innerText || '' | kbd: !full() }}\r\n</kbd>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { computed, Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';\r\nimport { FormElementAppearance } from './../types/theming.types';\r\n\r\n@Directive({\r\n selector: '[ardKbd]',\r\n})\r\nexport class ArdiumKbdDirective {\r\n readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\r\n readonly renderer: Renderer2 = inject(Renderer2);\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled, { alias: 'ardKbdAppearance' });\r\n\r\n readonly ngClasses = computed<string[]>(() => ['ard-kbd', `ard-appearance-${this.appearance()}`]);\r\n\r\n constructor() {\r\n effect(() => {\r\n const classes = this.ngClasses();\r\n this.updateClasses(classes);\r\n });\r\n }\r\n\r\n private updateClasses(classes: string[]): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n const previousClasses = element.className.split(' ').filter(cls => cls.startsWith('ard-appearance-'));\r\n previousClasses.forEach(cls => this.renderer.removeClass(element, cls));\r\n\r\n classes.forEach(cls => {\r\n this.renderer.addClass(element, cls);\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumKbdComponent } from './kbd.component';\nimport { ArdiumKbdDirective } from './kbd.directive';\nimport { ArdiumKbdPipe } from './kbd.pipe';\n\n@NgModule({\n declarations: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\n imports: [CommonModule],\n exports: [ArdiumKbdComponent, ArdiumKbdPipe, ArdiumKbdDirective],\n})\nexport class ArdiumKbdModule {}\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceArrayProperty, coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { FormElementAppearance } from '../types/theming.types';\r\nimport { Nullable } from '../types/utility.types';\r\n\r\n@Component({\r\n selector: 'ard-kbd-shortcut',\r\n templateUrl: './kbd-shortcut.component.html',\r\n styleUrls: ['./kbd-shortcut.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumKbdShortcutComponent implements AfterViewInit {\r\n readonly contentWrapper = viewChild<ElementRef<HTMLElement>>('contentWrapperEl');\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.keys() && !this.contentWrapper()?.nativeElement.innerText) {\r\n throw new Error(`ARD-FT5040: Using <ard-kbd-shortcut> without specifying the [keys] field is not allowed.`);\r\n }\r\n }\r\n\r\n readonly splitRegex = /[+, ]/;\r\n readonly keys = input<Nullable<string[]>, Nullable<string | string[]>>(undefined, {\r\n transform: v => coerceArrayProperty(v, this.splitRegex),\r\n });\r\n\r\n readonly full = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! appearance\r\n readonly appearance = input<FormElementAppearance>(FormElementAppearance.Filled);\r\n\r\n readonly ngClasses = computed<string>(() => [`ard-appearance-${this.appearance}`].join(' '));\r\n}\r\n","<div\r\n class=\"ard-kbd-shortcut\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n @for (key of keys() ?? contentWrapper()?.nativeElement?.innerText?.split(splitRegex); track $index) {\r\n @if ($index !== 0) {\r\n <span>+</span>\r\n }\r\n <ard-kbd\r\n [appearance]=\"appearance()\"\r\n [full]=\"full()\"\r\n [key]=\"key\"\r\n />\r\n }\r\n</div>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-kbd-shortcut-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumKbdShortcutComponent } from './kbd-shortcut.component';\nimport { ArdiumKbdModule } from '../kbd/kbd.module';\n\n@NgModule({\n declarations: [ArdiumKbdShortcutComponent],\n imports: [CommonModule, ArdiumKbdModule],\n exports: [ArdiumKbdShortcutComponent],\n})\nexport class ArdiumKbdShortcutModule {}\n","import { PaginationCurrentItemsContext } from '../_internal/models/pagination.model';\n\nexport const PaginationAlign = {\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Split: 'split',\n} as const;\nexport type PaginationAlign = (typeof PaginationAlign)[keyof typeof PaginationAlign];\n\nexport type CurrentItemsFormatFn = (context: PaginationCurrentItemsContext) => string;\n","import { TemplateRef } from '@angular/core';\nimport { ComponentColor } from '../types/colors.types';\nimport { NonEmptyArray } from '../types/utility.types';\nimport { CheckboxState } from '../checkbox/checkbox.types';\n\nexport type DataSource = string | { type: 'checkbox' | 'autocount' };\n\nexport interface _GenericColumn {\n header: string | { template: string | TemplateRef<unknown> };\n cellClass?: string;\n}\n\nexport interface TableDataColumn extends _GenericColumn {\n dataSource: DataSource;\n template?: string | TemplateRef<unknown>;\n sortable?: boolean;\n sortFn?: (columnAData: any, columnBData: any) => number;\n highlight?: boolean | ComponentColor;\n width?: string | number;\n minWidth?: string | number;\n isRowHeader?: boolean;\n}\nexport interface TableSubheader extends _GenericColumn {\n children: NonEmptyArray<TableSubheader | TableDataColumn>;\n}\n\nexport const SortType = {\n Ascending: 'ascending',\n Descending: 'descending',\n} as const;\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n//! contexts\nexport interface TableSubheaderContext {\n $implicit: string;\n header: string;\n}\nexport interface TableHeaderContext extends TableSubheaderContext {\n sortable: boolean;\n sortType: SortType | null;\n onTriggerSort: (event?: MouseEvent) => void;\n onTriggerResetSort: (event?: MouseEvent) => void;\n}\nexport interface TableCheckboxContext {\n $implicit: boolean;\n selected: boolean;\n disabled: boolean;\n onChange: (event: MouseEvent) => void;\n}\nexport interface TableHeaderCheckboxContext {\n $implicit: CheckboxState;\n state: CheckboxState;\n onChange: () => void;\n}\nexport interface TableCaptionContext {\n $implicit: string;\n}\n\n//! appearance-related\nexport const TableAppearance = {\n Strong: 'strong',\n Light: 'light',\n Colorless: 'colorless',\n} as const;\nexport type TableAppearance = (typeof TableAppearance)[keyof typeof TableAppearance];\n\nexport const TableVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type TableVariant = (typeof TableVariant)[keyof typeof TableVariant];\n\nexport const TablePaginationStrategy = {\n Noop: 'noop',\n Slice: 'slice',\n} as const;\nexport type TablePaginationStrategy = (typeof TablePaginationStrategy)[keyof typeof TablePaginationStrategy];\n\nexport const TableAlignType = {\n TopLeft: 'top-left',\n TopCenter: 'top-center',\n TopRight: 'top-right',\n CenterLeft: 'center-left',\n Center: 'center-center',\n CenterRight: 'center-right',\n BottomLeft: 'bottom-left',\n BottomCenter: 'bottom-center',\n BottomRight: 'bottom-right',\n} as const;\nexport type TableAlignType = (typeof TableAlignType)[keyof typeof TableAlignType];\n","import { TableDataColumn, TableSubheader } from './table.types';\n\nexport function isTableSubheader(v: TableDataColumn | TableSubheader): v is TableSubheader {\n return 'children' in v;\n}\n\nexport function areAllDataColumns(cols: (TableDataColumn | TableSubheader)[]): boolean {\n return cols.every(col => !isTableSubheader(col));\n}\n\nexport function merge2dArrays<T>(destArr: T[][], arr: T[][]): void {\n const diff = arr.length - destArr.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n destArr.push([]);\n }\n }\n for (let row = 0; row < arr.length; row++) {\n destArr[row] = [...destArr[row], ...arr[row]];\n }\n}\n","import { Signal, computed, signal } from '@angular/core';\r\nimport { resolvePath } from 'resolve-object-path';\r\nimport { evaluate, isDefined, isNull } from 'simple-bool';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { SortType, TableDataColumn, TablePaginationStrategy, TableSubheader } from './table.types';\r\nimport { areAllDataColumns, isTableSubheader, merge2dArrays } from './utils';\r\n\r\nexport class ArdTableRow {\r\n private readonly _itemData = signal<any>(undefined);\r\n readonly itemData = this._itemData.asReadonly();\r\n\r\n private readonly _index = signal<number>(-1);\r\n readonly index = this._index.asReadonly();\r\n\r\n private readonly _isEmpty = signal<boolean>(false);\r\n readonly isEmpty = this._isEmpty.asReadonly();\r\n\r\n private readonly _data = signal<any[]>([]);\r\n readonly data = this._data.asReadonly();\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n readonly dataColumns = this._dataColumns.asReadonly();\r\n\r\n private readonly _class = signal<string>('');\r\n readonly class = this._class.asReadonly();\r\n\r\n readonly disabled = signal<boolean>(false);\r\n readonly bold = signal<boolean>(false);\r\n readonly selected = signal<boolean>(false);\r\n readonly highlighted = signal<boolean>(false);\r\n\r\n constructor(\r\n itemData: any,\r\n index: number,\r\n data: any[],\r\n dataColumns: TableDataColumn[],\r\n disabled: boolean,\r\n bold: boolean,\r\n isEmpty = false\r\n ) {\r\n this._itemData.set(itemData);\r\n this._index.set(index);\r\n this._data.set(data);\r\n this._dataColumns.set(dataColumns);\r\n this.disabled.set(disabled);\r\n this.bold.set(bold);\r\n this._isEmpty.set(isEmpty);\r\n }\r\n static newEmptyCell(index: number) {\r\n return new ArdTableRow(null, index, [], [], false, false, true);\r\n }\r\n}\r\nexport interface TableItemStorageHostDefaults {\r\n readonly rowDisabledFrom: string;\r\n readonly rowBoldFrom: string;\r\n}\r\nexport interface TableItemStorageHost {\r\n readonly rowDisabledFrom: Signal<Nullable<string>>;\r\n readonly rowBoldFrom: Signal<Nullable<string>>;\r\n readonly invertRowDisabled: Signal<Nullable<boolean>>;\r\n readonly invertRowBold: Signal<Nullable<boolean>>;\r\n readonly data: Signal<Nullable<any>>[];\r\n readonly DEFAULTS: TableItemStorageHostDefaults;\r\n readonly maxSelectedItems: Signal<Nullable<number>>;\r\n readonly treatDataSourceAsString: Signal<Nullable<boolean>>;\r\n\r\n readonly paginated: Signal<boolean>;\r\n readonly paginationStrategy: Signal<TablePaginationStrategy>;\r\n readonly itemsPerPage: Signal<number>;\r\n readonly page: Signal<number>;\r\n}\r\nexport class HeaderCell {\r\n readonly cell = signal<TableDataColumn | TableSubheader>(undefined as any);\r\n readonly colspan = signal<number>(1);\r\n readonly rowspan = signal<number>(1);\r\n\r\n constructor(cell: TableDataColumn | TableSubheader, colspan = 1, rowspan = 1) {\r\n this.cell.set(cell);\r\n this.colspan.set(colspan);\r\n this.rowspan.set(rowspan);\r\n }\r\n\r\n get width(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.width);\r\n }\r\n get minWidth(): string | null {\r\n const cell = this.cell();\r\n if (isTableSubheader(cell)) return null;\r\n return this._getWidth(cell.minWidth);\r\n }\r\n /**\r\n * Thransforms a numeric width into a CSS string if needed. Pure function.\r\n * @param width the width to be converted.\r\n * @returns The width expressed as a CSS-compatible string or null.\r\n */\r\n private _getWidth(width: string | number | undefined): string | null {\r\n if (!width) return null;\r\n if (typeof width === 'number') return `${width}px`;\r\n return width;\r\n }\r\n}\r\n\r\nexport class TableItemStorage {\r\n private readonly _items = signal<ArdTableRow[]>([]);\r\n private readonly _sortedItems = signal<ArdTableRow[]>([]);\r\n\r\n private readonly _dataColumns = signal<TableDataColumn[]>([]);\r\n private readonly _headerCells = signal<HeaderCell[][]>([]);\r\n\r\n constructor(private readonly _ardParentComp: TableItemStorageHost) {}\r\n\r\n /**\r\n * Gets all items.\r\n */\r\n readonly items = this._items.asReadonly();\r\n readonly sortedItems = this._sortedItems.asReadonly();\r\n /**\r\n * Gets items based on the current pagination state.\r\n */\r\n readonly paginatedItems = computed(() => {\r\n if (!this._ardParentComp.paginated() || this._ardParentComp.paginationStrategy() === TablePaginationStrategy.Noop) {\r\n return this.sortedItems();\r\n }\r\n const page = this._ardParentComp.page();\r\n const IPP = this._ardParentComp.itemsPerPage();\r\n const itemsStart = (page - 1) * IPP;\r\n const itemsEnd = page * IPP;\r\n return this.sortedItems().slice(itemsStart, itemsEnd);\r\n });\r\n /**\r\n * Gets all currently selected items.\r\n */\r\n readonly selectedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.selected()));\r\n /**\r\n * Gets all currently highlighted items.\r\n */\r\n readonly highlightedItems = computed<ArdTableRow[]>(() => this.items().filter(item => item.highlighted()));\r\n /**\r\n * Gets all highlightable items. An item is considered highlightable if it is **not** disabled.\r\n */\r\n readonly highlightableItems = computed<ArdTableRow[]>(() => this._items().filter(item => !item.disabled()));\r\n /**\r\n * Gets the values of the currently selected items.\r\n */\r\n readonly value = computed(() => this._itemsToValue(this.selectedItems()));\r\n /**\r\n * Maps an array of items into their values.\r\n * @param items The items to convert to value.\r\n * @returns An array of item values.\r\n */\r\n private _itemsToValue(items: ArdTableRow[]): any[] {\r\n return items.map(item => item.itemData());\r\n }\r\n\r\n /**\r\n * Returns true if at least one item is highlighted, otherwise false.\r\n */\r\n readonly isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);\r\n /**\r\n * Checks if any item in the table is selected.\r\n * @returns A boolean value indicating if any item is selected.\r\n */\r\n readonly isAnyItemSelected = computed(() => this.selectedItems().length > 0);\r\n /**\r\n * Checks if all items in the table are selected.\r\n * @returns A boolean value indicating if all items are selected.\r\n */\r\n readonly areAllSelected = computed(() => this.selectedItems().length === this._items().filter(item => !item.disabled()).length);\r\n /**\r\n * Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.\r\n *\r\n * **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.\r\n */\r\n readonly isItemLimitReached = computed(() => {\r\n const max = this._ardParentComp.maxSelectedItems();\r\n if (!isDefined(max)) {\r\n return false;\r\n }\r\n return max <= this.selectedItems().length;\r\n });\r\n\r\n /**\r\n * Gets the header cells of the table.\r\n * @returns a 2D array of header cells.\r\n */\r\n readonly headerCells = this._headerCells.asReadonly();\r\n /**\r\n * Checks if the table has defined columns.\r\n * @returns a boolean value indicating if the table has defined columns.\r\n */\r\n readonly hasDefinedColumns = computed(() => this._dataColumns().length > 0);\r\n\r\n //! setting columns\r\n /**\r\n * Sets the columns of the table.\r\n * @param cols an array of table data columns or table subheaders.\r\n */\r\n setColumns(cols: (TableDataColumn | TableSubheader)[]): void {\r\n const maxNestingLevel = this._getHeaderMaxNesting(cols);\r\n const headerCells = this._mapColumnsToArray(cols, maxNestingLevel, 0);\r\n this._headerCells.set(this._filterHeaderCells(headerCells));\r\n this._dataColumns.set(this._extractDataSources(cols));\r\n }\r\n /**\r\n * Filters out null values from the header cells array. Pure function.\r\n * @param cells a 2D array of header cells or null values.\r\n * @returns a 2D array of header cells without null values and empty arrays.\r\n */\r\n private _filterHeaderCells(cells: (HeaderCell | null)[][]): HeaderCell[][] {\r\n for (let i = 0; i < cells.length; i++) {\r\n cells[i] = cells[i].filter(v => v !== null);\r\n }\r\n return cells.filter(row => row.length) as HeaderCell[][];\r\n }\r\n /**\r\n * Extracts the data sources from the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns an array of table data columns.\r\n */\r\n private _extractDataSources(cols: (TableDataColumn | TableSubheader)[]): TableDataColumn[] {\r\n const dataColumns: TableDataColumn[] = [];\r\n\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n dataColumns.push(col);\r\n continue;\r\n }\r\n dataColumns.push(...this._extractDataSources(col.children));\r\n }\r\n\r\n return dataColumns;\r\n }\r\n /**\r\n * Gets the maximum nesting level of the columns array. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @returns the maximum nesting level as a number.\r\n */\r\n private _getHeaderMaxNesting(cols: (TableDataColumn | TableSubheader)[]): number {\r\n if (areAllDataColumns(cols)) return 1;\r\n let max = 1;\r\n for (const col of cols.filter(v => isTableSubheader(v)) as TableSubheader[]) {\r\n const height = 1 + this._getHeaderMaxNesting(col.children);\r\n if (height > max) max = height;\r\n }\r\n return max;\r\n }\r\n /**\r\n * Maps the columns tree to a 2D array of header cells or null values. Pure function.\r\n * @param cols an array of table data columns or table subheaders.\r\n * @param maxNesting the maximum nesting level of the columns array.\r\n * @param currentNesting the current nesting level of the columns array.\r\n * @returns a 2D array of header cells or null values.\r\n */\r\n private _mapColumnsToArray(\r\n cols: (TableDataColumn | TableSubheader)[],\r\n maxNesting: number,\r\n currentNesting: number\r\n ): (HeaderCell | null)[][] {\r\n if (areAllDataColumns(cols)) {\r\n return [cols.map(col => new HeaderCell(col, 1, maxNesting - currentNesting))];\r\n }\r\n const headerCells: (HeaderCell | null)[][] = [[]];\r\n for (const col of cols) {\r\n if (!isTableSubheader(col)) {\r\n headerCells[0].push(new HeaderCell(col, 1, maxNesting - currentNesting));\r\n continue;\r\n }\r\n const childCells: (HeaderCell | null)[][] = [[], ...this._mapColumnsToArray(col.children, maxNesting, currentNesting + 1)];\r\n const height = childCells.length - 1;\r\n const width = childCells[1].length;\r\n for (let i = 0; i < height; i++) {\r\n headerCells.push([null]);\r\n }\r\n headerCells[0].push(new HeaderCell(col, width, 1));\r\n for (let i = 0; i < width - 1; i++) {\r\n headerCells[0].push(null);\r\n }\r\n merge2dArrays(headerCells, childCells);\r\n }\r\n return headerCells;\r\n }\r\n\r\n //! setting items\r\n /**\r\n * Sets the component's items. Takes into account the values defined by the parent component for `rowDisabledFrom`, `rowBoldFrom`, and `rowHighlightedFrom`.\r\n * @param items An array of items to be set as the component's items.\r\n */\r\n setItems(items: any[]): void {\r\n if (!this.hasDefinedColumns()) return;\r\n\r\n const mappedItems = items.map((item, i) => this._setItemsMapFn(item, i));\r\n this._items.set(mappedItems);\r\n this._sortedItems.set(mappedItems);\r\n }\r\n /**\r\n * Maps raw item data to an {@link ArdTableRow} object.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {ArdTableRow} Returns an ArdTableRow object with mapped properties.\r\n * @private\r\n */\r\n private _setItemsMapFn(rawItemData: any, index: number): ArdTableRow {\r\n //get data\r\n const [data, dataColumns] = this._getRowData(rawItemData, index);\r\n\r\n //get bold\r\n const rowBoldFromPath = this._ardParentComp.rowBoldFrom() ?? this._ardParentComp.DEFAULTS.rowBoldFrom;\r\n let bold = resolvePath(rawItemData, rowBoldFromPath);\r\n if (this._ardParentComp.invertRowBold()) {\r\n bold = !bold;\r\n }\r\n\r\n //get disabled\r\n const disabledPath = this._ardParentComp.rowDisabledFrom() ?? this._ardParentComp.DEFAULTS.rowDisabledFrom;\r\n let disabled = evaluate(resolvePath(rawItemData, disabledPath));\r\n if (this._ardParentComp.invertRowDisabled()) {\r\n disabled = !disabled;\r\n }\r\n\r\n return new ArdTableRow(rawItemData, index, data, dataColumns, disabled, bold);\r\n }\r\n /**\r\n * Retrieves data for a row based on data columns configuration.\r\n *\r\n * @param {any} rawItemData - The raw data of the item.\r\n * @param {number} index - The index of the item.\r\n * @returns {any[]} Returns an array containing the row data.\r\n * @private\r\n */\r\n private _getRowData(rawItemData: any, index: number): [any[], TableDataColumn[]] {\r\n const data: any[] = [];\r\n const _cols = this._dataColumns();\r\n for (let i = 0; i < _cols.length; i++) {\r\n const dataColumn = _cols[i];\r\n const sourcePath = dataColumn.dataSource;\r\n\r\n if (typeof sourcePath === 'string') {\r\n if (this._ardParentComp.treatDataSourceAsString()) {\r\n data.push(rawItemData[sourcePath]);\r\n continue;\r\n }\r\n data.push(resolvePath(rawItemData, sourcePath));\r\n continue;\r\n }\r\n if (sourcePath.type === 'autocount') {\r\n data.push(index + 1);\r\n continue;\r\n }\r\n if (sourcePath.type === 'checkbox') {\r\n data.push({ _ardCheckbox: true, index });\r\n continue;\r\n }\r\n const sourceString = typeof sourcePath === 'object' ? JSON.stringify(sourcePath) : sourcePath;\r\n throw new Error(`ARD-FT5052: Unexpected data source \"${sourceString}\" at index ${i}.`);\r\n }\r\n return [data, this._dataColumns()];\r\n }\r\n /**\r\n * Writes a new value to the item storage. Selects the correct items based on the provided values, warning the user if the value is not found.\r\n * @param indexes The value of the ngModel to set.\r\n */\r\n writeValue(indexes: number[]): void {\r\n this._forceUnselectAll();\r\n this.selectItem(...indexes);\r\n }\r\n\r\n //! selecting items\r\n /**\r\n * Checks if an item with the given index is selected.\r\n *\r\n * @param {number} index The index of the item to check.\r\n * @returns {boolean} _true_ if the item is selected, otherwise _false_.\r\n */\r\n isItemSelected(index: number): boolean {\r\n return this.selectedItems().some(item => item.index() === index);\r\n }\r\n /**\r\n * Selects all items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n * @returns a tuple containing two arrays:\r\n * * An array of items selected.\r\n * * An array of items failed to select.\r\n */\r\n selectAll(): [any[], any[]] {\r\n return this.selectItem(...this._items().map(v => v.index()));\r\n }\r\n /**\r\n * Unselects all selected items.\r\n *\r\n * If the parent component requires at least one value to be selected at all times, the first selected items is left selected.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n unselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Unselects all selected items, no matter what the component settings are.\r\n * @returns An array of items cleared, mapped to only their values.\r\n */\r\n private _forceUnselectAll(): any[] {\r\n const selected = this.selectedItems();\r\n for (const item of selected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(selected);\r\n }\r\n /**\r\n * Selects one or multiple items.\r\n *\r\n * Accounts for the limit of concurrently selected items defined by the parent component.\r\n *\r\n * @param indexes A rest operator array of item indexes to be selected.\r\n * @returns a tuple containing two arrays:\r\n * - An array of items selected.\r\n * - An array of items failed to select.\r\n */\r\n selectItem(...indexes: number[]): [any[], any[]] {\r\n const itemsToBeSelected = this._items().filter(item => !item.disabled() && indexes.includes(item.index()));\r\n if (this.isItemLimitReached()) {\r\n return [[], this._itemsToValue(itemsToBeSelected)];\r\n }\r\n\r\n let itemsSelectedCount = 0;\r\n const itemsSelected = [];\r\n let itemsLeftUntilLimit = (this._ardParentComp.maxSelectedItems() ?? Infinity) - this.selectedItems().length;\r\n for (const item of itemsToBeSelected) {\r\n itemsSelectedCount++;\r\n if (item.selected()) continue;\r\n if (itemsLeftUntilLimit <= 0) {\r\n break;\r\n }\r\n itemsLeftUntilLimit--;\r\n item.selected.set(true);\r\n itemsSelected.push(item);\r\n }\r\n\r\n const itemsFailedToSelect = itemsToBeSelected.slice(itemsSelectedCount - 1);\r\n return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsFailedToSelect)];\r\n }\r\n /**\r\n * Unselects one or multiple items.\r\n * @param items A rest operator array of item indexes to be unselected.\r\n * @returns An array of items unselected, mapped to only their values.\r\n */\r\n unselectItem(...indexes: number[]): any[] {\r\n const itemsToBeUnselected = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of itemsToBeUnselected) {\r\n item.selected.set(false);\r\n }\r\n\r\n return this._itemsToValue(itemsToBeUnselected);\r\n }\r\n\r\n //! highlighting items\r\n /**\r\n * Unhighlights all currently highlighted items.\r\n */\r\n unhighlightAll(): void {\r\n const highlighted = this.highlightedItems();\r\n for (const item of highlighted) {\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.\r\n * @param item The index of the item to be highlighted.\r\n * @returns The highlighted item.\r\n */\r\n highlightSingleItem(index: number): ArdTableRow | null {\r\n this.unhighlightAll();\r\n return this.highlightItem(index);\r\n }\r\n /**\r\n * Highlights all given items.\r\n * @param items A rest operator array of item indexes to be highlighted.\r\n * @returns The last highlighted item.\r\n */\r\n highlightItem(...indexes: number[]): ArdTableRow {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n item.highlighted.set(true);\r\n }\r\n return items.last();\r\n }\r\n /**\r\n * Unhighlights all given items.\r\n * @param items A rest operator array of item indexes to be unhighlighted.\r\n */\r\n unhighlightItem(...indexes: number[]): void {\r\n const items = this._items().filter(item => indexes.includes(item.index()));\r\n for (const item of items) {\r\n if (!item || !item.highlighted()) return;\r\n\r\n item.highlighted.set(false);\r\n }\r\n }\r\n /**\r\n * Highlights the first item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightFirstItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().first().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights the last item out of all items.\r\n * @returns The highlighted item.\r\n */\r\n highlightLastItem(): ArdTableRow | null {\r\n this.unhighlightAll();\r\n\r\n const itemToHighlight = this.highlightableItems().last().index();\r\n return this.highlightItem(itemToHighlight);\r\n }\r\n /**\r\n * Highlights all non-disabled items.\r\n */\r\n highlightAllItems(): void {\r\n const itemsToHighlight = this.highlightableItems().map(v => v.index());\r\n this.highlightItem(...itemsToHighlight);\r\n }\r\n /**\r\n * Highlights the next non-disabled item defined by the offset amount.\r\n *\r\n * If `hasShift` is set to true, all originally highlighted items are kept. Otherwise, all original items are unselected.\r\n * @param offset The amount of items to offset the highlight by.\r\n * @param hasShift Whether the user has the shift key pressed.\r\n * @returns The item highlighted.\r\n */\r\n highlightNextItem(offset: number, hasShift?: boolean): ArdTableRow | null {\r\n if (!this.isAnyItemHighlighted()) {\r\n return this.highlightFirstItem();\r\n }\r\n const currentItem = this.highlightedItems().last();\r\n const itemsWithoutDisabled = this._items().filter(\r\n item => !item.disabled() && (!this.isItemLimitReached() || item.selected())\r\n );\r\n const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index() === currentItem.index());\r\n\r\n let nextItemIndex = currentIndexInItems + offset;\r\n if (nextItemIndex >= itemsWithoutDisabled.length) {\r\n nextItemIndex -= itemsWithoutDisabled.length;\r\n }\r\n if (nextItemIndex < 0) {\r\n nextItemIndex += itemsWithoutDisabled.length;\r\n }\r\n const itemToHighlight = itemsWithoutDisabled[nextItemIndex];\r\n\r\n if (hasShift) {\r\n if (itemToHighlight.highlighted()) {\r\n this.unhighlightItem(nextItemIndex);\r\n }\r\n return this.highlightItem(nextItemIndex);\r\n }\r\n return this.highlightSingleItem(nextItemIndex);\r\n }\r\n\r\n //! sorting\r\n private _currentSortColumn: number | null = null;\r\n private _currentSortType: SortType | null = null;\r\n\r\n toggleCurrentSortColumn(column: number): void {\r\n if (this._currentSortColumn === column) {\r\n if (this._currentSortType === SortType.Ascending) {\r\n this._currentSortType = SortType.Descending;\r\n } else {\r\n this._currentSortType = SortType.Ascending;\r\n }\r\n this._generateSortedRows(true);\r\n return;\r\n }\r\n this._currentSortColumn = column;\r\n this._currentSortType = SortType.Ascending;\r\n this._generateSortedRows();\r\n }\r\n resetSort(): void {\r\n this._currentSortColumn = null;\r\n this._currentSortType = null;\r\n this._sortedItems.set([...this.items()]);\r\n }\r\n getColumnSortType(column: number): SortType | null {\r\n if (this._currentSortColumn === column) {\r\n return this._currentSortType;\r\n }\r\n return null;\r\n }\r\n private _generateSortedRows(justReverse?: boolean): void {\r\n if (justReverse) {\r\n this._sortedItems().reverse();\r\n return;\r\n }\r\n const sortColumnIndex = this._currentSortColumn;\r\n if (isNull(sortColumnIndex) || !this._currentSortType) {\r\n this._sortedItems.set(this.items());\r\n return;\r\n }\r\n const sortColumn = this._dataColumns()[sortColumnIndex];\r\n if (!sortColumn) {\r\n throw new Error(\r\n `ARD-IS5059: Encountered an issue in <ard-table>: could not find the column with index ${sortColumnIndex}. This is most likely an Ardium UI bug, please report it to the creators.`\r\n );\r\n }\r\n\r\n const direction = this._currentSortType === SortType.Ascending ? 1 : -1;\r\n const sortFn =\r\n sortColumn.sortFn ??\r\n ((a, b) => {\r\n if (a > b) return direction;\r\n if (a < b) return -1 * direction;\r\n return 0;\r\n });\r\n\r\n this._sortedItems.set([...this.items()].sort((a, b) => sortFn(a.data()[sortColumnIndex], b.data()[sortColumnIndex])));\r\n }\r\n}\r\n","import { Directive, TemplateRef, input } from '@angular/core';\r\nimport { PaginationContext } from '../_internal/models/pagination.model';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { TableCaptionContext, TableCheckboxContext } from './table.types';\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-tmp]' })\r\nexport class ArdiumTableTemplateDirective {\r\n readonly name = input.required<Nullable<string>>({ alias: 'ard-table-tmp' });\r\n\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-checkbox-tmp]' })\r\nexport class ArdiumTableCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({\r\n selector: 'ard-table > ng-template[ard-table-header-checkbox-tmp]',\r\n})\r\nexport class ArdiumTableHeaderCheckboxTemplateDirective {\r\n constructor(public template: TemplateRef<TableCheckboxContext>) {}\r\n}\r\n\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-caption-tmp]' })\r\nexport class ArdiumTableCaptionTemplateDirective {\r\n constructor(public template: TemplateRef<TableCaptionContext>) {}\r\n}\r\n\r\n//! paginations\r\n@Directive({ selector: 'ard-table > ng-template[ard-table-pagination-tmp]' })\r\nexport class ArdiumTablePaginationTemplateDirective {\r\n constructor(public template: TemplateRef<PaginationContext>) {}\r\n}\r\n","import { ModelSignal, Signal, computed } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\n\r\nexport interface PaginationModelHost {\r\n readonly componentId: string;\r\n readonly totalItems: Signal<number>;\r\n readonly options: Signal<number[] | { value: number; label: string }[]>;\r\n readonly itemsPerPage: ModelSignal<number>;\r\n readonly page: ModelSignal<number>;\r\n}\r\n\r\nexport interface PaginationCurrentItemsContext {\r\n readonly currentItemsFirst: number;\r\n readonly currentItemsLast: number;\r\n readonly totalItems: number;\r\n readonly totalPages: number;\r\n readonly page: number;\r\n}\r\n\r\nexport interface PaginationContext extends PaginationCurrentItemsContext {\r\n readonly itemsPerPageOptions: number[] | { value: number; label: string }[];\r\n readonly itemsPerPage: number;\r\n readonly onItemsPerPageChange: (newValue: number) => void;\r\n readonly firstPageDisabled: boolean;\r\n readonly prevPageDisabled: boolean;\r\n readonly nextPageDisabled: boolean;\r\n readonly lastPageDisabled: boolean;\r\n readonly onPageChange: (newPage: number) => void;\r\n}\r\n\r\nexport class PaginationModel {\r\n constructor(private readonly _ardHostCmp: PaginationModelHost) {}\r\n\r\n readonly isTotalItemsDefined = computed<boolean>(() => isDefined(this._ardHostCmp.totalItems()));\r\n\r\n readonly lastPageNum = computed<number | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return Math.ceil(total / this._ardHostCmp.itemsPerPage());\r\n });\r\n readonly isLastPage = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this.lastPageNum() === this._ardHostCmp.page();\r\n });\r\n readonly itemsOnCurrentPage = computed<[number, number] | null>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total) return null;\r\n return [\r\n Math.min(total, (this._ardHostCmp.page() - 1) * this._ardHostCmp.itemsPerPage() + 1),\r\n Math.min(total, this._ardHostCmp.page() * this._ardHostCmp.itemsPerPage()),\r\n ];\r\n });\r\n\r\n //! action disabled states\r\n readonly firstPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === 1;\r\n });\r\n readonly lastPageDisabled = computed<boolean>(() => {\r\n return !isDefined(this._ardHostCmp.totalItems()) || this._ardHostCmp.page() === this.lastPageNum();\r\n });\r\n\r\n //! current page\r\n setPage(v: number): void {\r\n this._ardHostCmp.page.set(v);\r\n }\r\n getPage(): number {\r\n return this._ardHostCmp.page();\r\n }\r\n goToFirstPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(1);\r\n return 1;\r\n }\r\n goToPrevPage(): number | null {\r\n if (this.firstPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() - 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToNextPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this._ardHostCmp.page() + 1);\r\n return this._ardHostCmp.page();\r\n }\r\n goToLastPage(): number | null {\r\n if (this.lastPageDisabled()) return null;\r\n this.setPage(this.lastPageNum()!);\r\n return this._ardHostCmp.page();\r\n }\r\n\r\n //! context\r\n readonly getCurrentItemsContext = computed<PaginationCurrentItemsContext>(() => {\r\n const total = this._ardHostCmp.totalItems();\r\n if (!total)\r\n throw new Error(`ARD-FT${this._ardHostCmp.componentId}90: Cannot use pagination model without defining total items first.`);\r\n\r\n const pageItems = this.itemsOnCurrentPage()!;\r\n return {\r\n totalPages: this.lastPageNum()!,\r\n totalItems: total,\r\n page: this._ardHostCmp.page(),\r\n currentItemsFirst: pageItems[0],\r\n currentItemsLast: pageItems[1],\r\n };\r\n });\r\n readonly getPartialContext = computed<Omit<PaginationContext, 'onItemsPerPageChange' | 'onPageChange'>>(() => {\r\n return {\r\n ...this.getCurrentItemsContext(),\r\n itemsPerPageOptions: this._ardHostCmp.options(),\r\n itemsPerPage: this._ardHostCmp.itemsPerPage(),\r\n firstPageDisabled: this.firstPageDisabled(),\r\n prevPageDisabled: this.firstPageDisabled(),\r\n nextPageDisabled: this.lastPageDisabled(),\r\n lastPageDisabled: this.lastPageDisabled(),\r\n };\r\n });\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation, computed, input, model, output } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { PaginationModel } from '../_internal/models/pagination.model';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from './table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-pagination',\r\n templateUrl: './table-pagination.component.html',\r\n styleUrls: ['./table-pagination.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTablePaginationComponent extends _FocusableComponentBase implements OnInit {\r\n readonly componentId = '506';\r\n\r\n private readonly _pagination = new PaginationModel(this);\r\n\r\n //! main settings\r\n readonly totalItems = input.required<number>();\r\n readonly options = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly itemsPerPageChangeEvent = output<number>({ alias: 'itemsPerPageChange' });\r\n readonly pageChangeEvent = output<number>({ alias: 'pageChange' });\r\n\r\n ngOnInit(): void {\r\n if (this._pagination.isTotalItemsDefined()) return;\r\n throw new Error('ARD-FT5060: Table pagination requires [totalItems] to be defined.');\r\n }\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<PaginationAlign>(PaginationAlign.Split);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! miscellaneous\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n //! contexts\r\n readonly getCurrentItemsContext = this._pagination.getCurrentItemsContext;\r\n\r\n readonly firstPageDisabled = this._pagination.firstPageDisabled;\r\n readonly lastPageDisabled = this._pagination.lastPageDisabled;\r\n\r\n //! methods\r\n onItemsPerPageChange(newValue: number): void {\r\n if (this.isLoading()) return;\r\n if (newValue === this.itemsPerPage()) return;\r\n this.itemsPerPage.set(newValue);\r\n this.itemsPerPageChangeEvent.emit(this.itemsPerPage());\r\n this._emitPageEvent();\r\n }\r\n\r\n private _emitPageEvent(): void {\r\n this.pageChangeEvent.emit(this.page());\r\n }\r\n onPageChange(newPage: number): void {\r\n if (this.isLoading()) return;\r\n if (newPage === this.page()) return;\r\n this._pagination.setPage(newPage);\r\n this._emitPageEvent();\r\n }\r\n onFirstPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToFirstPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onPrevPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToPrevPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onNextPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToNextPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n onLastPage(): void {\r\n if (this.isLoading()) return;\r\n const newPage = this._pagination.goToLastPage();\r\n if (!newPage) return;\r\n this._emitPageEvent();\r\n }\r\n}\r\n","<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n input,\r\n model,\r\n output,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isDefined, isNumber } from 'simple-bool';\r\nimport { _FocusableComponentBase } from '../_internal/focusable-component';\r\nimport { CheckboxState } from '../checkbox/checkbox.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\nimport { ComponentColor, SimpleComponentColor } from '../types/colors.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ArdTableRow, HeaderCell, TableItemStorage, TableItemStorageHost } from './table-item-storage';\r\nimport {\r\n ArdiumTableCaptionTemplateDirective,\r\n ArdiumTableCheckboxTemplateDirective,\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n ArdiumTableTemplateDirective,\r\n} from './table.directives';\r\nimport {\r\n TableAlignType,\r\n TableAppearance,\r\n TableCaptionContext,\r\n TableCheckboxContext,\r\n TableDataColumn,\r\n TableHeaderCheckboxContext,\r\n TableHeaderContext,\r\n TablePaginationStrategy,\r\n TableSubheader,\r\n TableSubheaderContext,\r\n TableVariant,\r\n} from './table.types';\r\nimport { isTableSubheader } from './utils';\r\n\r\n@Component({\r\n selector: 'ard-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableComponent extends _FocusableComponentBase implements TableItemStorageHost, AfterContentInit, OnChanges {\r\n private readonly _itemStorage = new TableItemStorage(this);\r\n\r\n readonly DEFAULTS = {\r\n rowDisabledFrom: 'disabled',\r\n rowBoldFrom: 'bold',\r\n };\r\n\r\n readonly rowDisabledFrom = input<Nullable<string>>(undefined);\r\n readonly rowBoldFrom = input<Nullable<string>>(undefined);\r\n readonly invertRowDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly invertRowBold = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selectableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly maxSelectedItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n\r\n readonly clickableRows = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly isLoading = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly loadingProgress = input<number, any>(0, { transform: v => coerceNumberProperty(v, 0) }); //TODO add progress bar\r\n\r\n //! appearance\r\n readonly appearance = input<TableAppearance>(TableAppearance.Strong);\r\n readonly variant = input<TableVariant>(TableVariant.Rounded);\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n readonly align = input<TableAlignType>(TableAlignType.CenterLeft);\r\n readonly headerAlign = input<TableAlignType>(TableAlignType.CenterLeft);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly zebra = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly stickyHeader = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [\r\n `ard-appearance-${this.appearance()}`,\r\n `ard-variant-${this.variant()}`,\r\n `ard-color-${this.color()}`,\r\n `ard-align-${this.align()}`,\r\n `ard-header-align-${this.headerAlign()}`,\r\n this.compact() ? 'ard-compact' : '',\r\n this.zebra() ? 'ard-zebra-table' : '',\r\n this.selectableRows() ? 'ard-selectable-rows' : '',\r\n this.stickyHeader() ? 'ard-sticky-header' : '',\r\n this.isLoading() ? 'ard-table-loading' : '',\r\n ].join(' ')\r\n );\r\n\r\n //! pagination\r\n readonly paginated = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Noop);\r\n readonly paginationOptions = input<\r\n number[] | { value: number; label: string }[],\r\n number[] | { value: number; label: string }[]\r\n >([10, 25, 50], {\r\n transform: v => {\r\n return v.filter(el => {\r\n const opt = isNumber(el) ? el : el.value;\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5052: each item of <ard-table>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n return false;\r\n }\r\n return true;\r\n }) as number[] | { value: number; label: string }[];\r\n },\r\n });\r\n readonly totalItems = input<Nullable<number>, any>(undefined, { transform: v => coerceNumberProperty(v, undefined) });\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly paginationDisabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly useFirstLastButtons = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n readonly isDefinedTotalItems = computed(\r\n () => this.paginationStrategy() !== TablePaginationStrategy.Noop || isDefined(this.totalItems())\r\n );\r\n readonly canDisplayPagination = computed(() => this.paginated() && this.isDefinedTotalItems());\r\n\r\n //! print errors if needed\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5051: value of \"${ipp}\" in <ard-table>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(`ARD-FT5053a: <ard-table>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`);\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5053b: value of <ard-table>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! item storage getters\r\n readonly headerCells = computed(() => this._itemStorage.headerCells());\r\n\r\n readonly dataRows = computed(() => {\r\n const items: ArdTableRow[] = this._itemStorage.paginatedItems();\r\n\r\n if (!this.pageFillRemaining()) return items;\r\n if (!this.isDefinedTotalItems()) {\r\n throw new Error('ARD-FT5050: <ard-table> requires [totalItems] to be defined when using \"slice\" pagination strategy.');\r\n }\r\n if (this.page() === 1) return items;\r\n\r\n const ipp = this.itemsPerPage();\r\n for (let i = items.length; i < ipp; i++) {\r\n items.push(ArdTableRow.newEmptyCell(i));\r\n }\r\n return items;\r\n });\r\n\r\n //! columns/data setters\r\n @Input()\r\n set columns(v: (TableDataColumn | TableSubheader)[]) {\r\n this._itemStorage.setColumns(v);\r\n }\r\n private _data: any[] = [];\r\n @Input()\r\n set data(v: any[]) {\r\n this._data = v;\r\n this._itemStorage.setItems(v);\r\n }\r\n get data(): any[] {\r\n return this._data;\r\n }\r\n\r\n readonly treatDataSourceAsString = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly _suppressErrors = input<boolean>(false);\r\n\r\n //! templates\r\n readonly checkboxTemplate = contentChild<ArdiumTableCheckboxTemplateDirective, TemplateRef<TableCheckboxContext>>(\r\n ArdiumTableCheckboxTemplateDirective,\r\n {\r\n read: TemplateRef<TableCheckboxContext>,\r\n }\r\n );\r\n readonly headerCheckboxTemplate = contentChild<\r\n ArdiumTableHeaderCheckboxTemplateDirective,\r\n TemplateRef<TableHeaderCheckboxContext>\r\n >(ArdiumTableHeaderCheckboxTemplateDirective, {\r\n read: TemplateRef<TableHeaderCheckboxContext>,\r\n });\r\n readonly captionTemplate = contentChild<ArdiumTableCaptionTemplateDirective, TemplateRef<TableCaptionContext>>(\r\n ArdiumTableCaptionTemplateDirective,\r\n {\r\n read: TemplateRef<TableCaptionContext>,\r\n }\r\n );\r\n\r\n private _itemTemplates: Record<string, TemplateRef<any>> = {};\r\n readonly templateChildren = contentChildren<ArdiumTableTemplateDirective>(ArdiumTableTemplateDirective);\r\n\r\n ngAfterContentInit(): void {\r\n const templates = Array.from(this.templateChildren());\r\n for (const instance of templates) {\r\n const name = instance.name();\r\n if (!name) {\r\n console.error(new Error('ARD-FT5054: [ard-table-tmp] requires a value to be specified.'));\r\n continue;\r\n }\r\n this._itemTemplates[name] = instance.template;\r\n }\r\n }\r\n\r\n getHeaderTemplate(tmp: string | { template: string | TemplateRef<any> }): TemplateRef<any> | undefined {\r\n if (typeof tmp === 'string') return undefined;\r\n return this.getCellTemplate(tmp.template);\r\n }\r\n getHeaderCheckboxColor(): SimpleComponentColor {\r\n if (this.appearance() === TableAppearance.Strong) return SimpleComponentColor.CurrentColor;\r\n return this.color();\r\n }\r\n getCellTemplate(tmp?: string | TemplateRef<any>): TemplateRef<any> | undefined {\r\n //return undefined\r\n if (!tmp) return undefined;\r\n //return template, if it is one\r\n if (tmp instanceof TemplateRef) return tmp;\r\n //check if the name can be found\r\n if (!(tmp in this._itemTemplates)) {\r\n console.error(new Error(`ARD-NF5055: <ard-table> error: cannot find template named \"${tmp}\"`));\r\n return undefined;\r\n }\r\n //return the template\r\n return this._itemTemplates[tmp];\r\n }\r\n getCellStyle(cell: TableDataColumn | TableSubheader): string {\r\n if (isTableSubheader(cell)) return 'width:unset;min-width:unset';\r\n const width = typeof cell.width === 'number' ? `${cell.width}px` : cell.width;\r\n const minWidth = typeof cell.minWidth === 'number' ? `${cell.minWidth}px` : cell.minWidth;\r\n return [`width:${width ?? 'unset'}`, `min-width:${minWidth ?? 'unset'}`].join(';');\r\n }\r\n\r\n //! click & hover handlers\r\n onCheckboxClick(index: number): void {\r\n this.toggleRowSelected(index);\r\n }\r\n onRowClick(row: ArdTableRow, event: MouseEvent): void {\r\n if (this.clickableRows()) {\r\n event.stopPropagation();\r\n this.clickRowEvent.emit(row.itemData());\r\n return;\r\n }\r\n if (this.selectableRows()) {\r\n event.stopPropagation();\r\n this.toggleRowSelected(row.index());\r\n return;\r\n }\r\n }\r\n onRowMouseOver(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n onRowMouseEnter(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.highlightSingleItem(index);\r\n }\r\n onRowMouseLeave(index: number, event: MouseEvent): void {\r\n if (!this.selectableRows() && !this.clickableRows()) return;\r\n event.stopPropagation();\r\n this._itemStorage.unhighlightItem(index);\r\n }\r\n\r\n //! select handlers\r\n /**\r\n * Toggles the selection state of a row in the table.\r\n * @param selected a boolean value indicating if the row is currently selected.\r\n * @param index the index of the row in the table.\r\n */\r\n toggleRowSelected(index: number): void {\r\n if (this._itemStorage.isItemSelected(index)) {\r\n const unselected = this._itemStorage.unselectItem(index);\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectItem(index);\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n /**\r\n * Toggles the selection state of all rows in the table.\r\n */\r\n toggleAllRowsSelected(): void {\r\n if (this._itemStorage.areAllSelected()) {\r\n const unselected = this._itemStorage.unselectAll();\r\n if (unselected.length) this.unselectRowEvent.emit(unselected);\r\n } else {\r\n const [selected, failed] = this._itemStorage.selectAll();\r\n if (selected.length) this.selectRowEvent.emit(selected);\r\n if (failed.length) this.failedSelectRowEvent.emit(failed);\r\n }\r\n this._emitSelect();\r\n }\r\n private _emitSelect(): void {\r\n const v = this._itemStorage.value();\r\n this.selectedRowsChangeEvent.emit(v);\r\n }\r\n isCellCheckbox(cell: any): boolean {\r\n return typeof cell === 'object' && '_ardCheckbox' in cell && 'index' in cell;\r\n }\r\n isHeaderCellCheckbox(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n if (typeof dataCell.dataSource === 'string') return false;\r\n return dataCell.dataSource.type === 'checkbox';\r\n }\r\n isHeaderCellSortable(cell: HeaderCell): boolean {\r\n const dataCell = cell.cell();\r\n if (isTableSubheader(dataCell)) return false;\r\n return dataCell.sortable ?? false;\r\n }\r\n\r\n readonly selectedRowsChangeEvent = output<any[]>({ alias: 'selectedRowsChange' });\r\n readonly failedSelectRowEvent = output<any[]>({ alias: 'failedSelectRow' });\r\n readonly selectRowEvent = output<any[]>({ alias: 'selectRow' });\r\n readonly unselectRowEvent = output<any[]>({ alias: 'unselectRow' });\r\n readonly clickRowEvent = output<any>({ alias: 'clickRow' });\r\n\r\n //! contexts\r\n getHeaderContext(cell: TableDataColumn, index: number): TableHeaderContext | null;\r\n getHeaderContext(cell: TableSubheader, index: number): TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null;\r\n getHeaderContext(cell: TableDataColumn | TableSubheader, index: number): TableHeaderContext | TableSubheaderContext | null {\r\n if (typeof cell.header !== 'string') return null;\r\n if (isTableSubheader(cell))\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n };\r\n return {\r\n $implicit: cell.header,\r\n header: cell.header,\r\n sortable: cell.sortable ?? false,\r\n sortType: this._itemStorage.getColumnSortType(index),\r\n onTriggerSort: () => this._itemStorage.toggleCurrentSortColumn(index),\r\n onTriggerResetSort: (event?: Event) => {\r\n this._itemStorage.resetSort();\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n },\r\n };\r\n }\r\n readonly getHeaderCheckboxContext = computed<TableHeaderCheckboxContext>(() => {\r\n let state: CheckboxState = CheckboxState.Unselected;\r\n if (this._itemStorage.isAnyItemSelected()) {\r\n state = CheckboxState.Indeterminate;\r\n if (this._itemStorage.areAllSelected()) {\r\n state = CheckboxState.Selected;\r\n }\r\n }\r\n return {\r\n $implicit: state,\r\n state,\r\n onChange: () => {\r\n this.toggleAllRowsSelected();\r\n },\r\n };\r\n });\r\n getCheckboxContext(index: number): TableCheckboxContext {\r\n const item = this._itemStorage.items().find(v => v.index() === index)!;\r\n const selected = item.selected();\r\n return {\r\n $implicit: selected,\r\n selected: selected,\r\n disabled: item.disabled(),\r\n onChange: () => {\r\n this.onCheckboxClick(index);\r\n },\r\n };\r\n }\r\n}\r\n","<table\r\n class=\"ard-table\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @if (caption()) {\r\n <caption class=\"ard-table__caption\">\r\n <div class=\"ard-table__caption-container\">\r\n <ng-template\r\n #defaultCaptionTemplate\r\n let-captionText\r\n >\r\n {{ captionText }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"captionTemplate() ?? defaultCaptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: caption() }\"\r\n />\r\n </div>\r\n </caption>\r\n }\r\n <thead class=\"ard-table__header\">\r\n @for (row of headerCells(); track $index) {\r\n <tr class=\"ard-table__header-row\">\r\n @for (cell of row; track $index) {\r\n <th\r\n class=\"ard-table__header-cell\"\r\n [ngClass]=\"cell.cell().cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isHeaderCellCheckbox(cell)\"\r\n [attr.colspan]=\"cell.colspan()\"\r\n [attr.rowspan]=\"cell.rowspan()\"\r\n [scope]=\"cell.colspan() > 1 ? 'colgroup' : 'col'\"\r\n >\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [class.ard-table__sortable]=\"isHeaderCellSortable(cell)\"\r\n [style.width]=\"cell.width\"\r\n [style.minWidth]=\"cell.minWidth\"\r\n >\r\n @if (isHeaderCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultHeaderCheckboxTemplate\r\n let-state\r\n let-onChange=\"onChange\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [state]=\"state\"\r\n [color]=\"getHeaderCheckboxColor()\"\r\n unselectedColor=\"currentColor\"\r\n (change)=\"onChange()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"headerCheckboxTemplate() ?? defaultHeaderCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderCheckboxContext()\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultHeaderCellTemplate\r\n let-content\r\n let-sortable=\"sortable\"\r\n let-sortType=\"sortType\"\r\n let-onTriggerSort=\"onTriggerSort\"\r\n let-onTriggerResetSort=\"onTriggerResetSort\"\r\n >\r\n <div\r\n class=\"ard-table__header-template-container\"\r\n [class.ard-sortable]=\"sortable\"\r\n [class.ard-nonsortable]=\"!sortable\"\r\n >\r\n @if (sortable) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-table__header-content-container\"\r\n (click)=\"onTriggerSort($event)\"\r\n [tabindex]=\"tabIndex()\"\r\n (keydown.Esc)=\"onTriggerResetSort($event)\"\r\n >\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n @if (sortType !== null) {\r\n <div class=\"ard-table__header-sort-icon\">\r\n @if (sortType === 'ascending') {\r\n <ard-icon>south</ard-icon>\r\n } @else if (sortType === 'descending') {\r\n <ard-icon>north</ard-icon>\r\n }\r\n </div>\r\n }\r\n </button>\r\n } @else {\r\n <div class=\"ard-table__header-content-container\">\r\n <div class=\"ard-table__header-content\">{{ content }}</div>\r\n </div>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getHeaderTemplate(cell.cell().header) ?? defaultHeaderCellTemplate\"\r\n [ngTemplateOutletContext]=\"getHeaderContext(cell.cell(), $index)\"\r\n />\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n </thead>\r\n <tbody class=\"ard-table__body\">\r\n @for (row of dataRows(); track $index) { @if (row.isEmpty()) {\r\n <tr class=\"ard-table__empty-row\">\r\n <td\r\n class=\"ard-table__empty-cell\"\r\n colspan=\"9999\"\r\n ></td>\r\n </tr>\r\n } @else {\r\n <tr\r\n class=\"ard-table__body-row\"\r\n [class.ard-table__selected-row]=\"row.selected()\"\r\n [class.ard-table__highlighted-row]=\"row.highlighted()\"\r\n [class.ard-table__disabled-row]=\"row.disabled()\"\r\n [class.ard-table__bold-row]=\"row.bold()\"\r\n (click)=\"onRowClick(row, $event)\"\r\n (mouseover)=\"onRowMouseOver($event)\"\r\n (mouseenter)=\"onRowMouseEnter(row.index(), $event)\"\r\n (mouseleave)=\"onRowMouseLeave(row.index(), $event)\"\r\n >\r\n @for (cell of row.data(); track $index) {\r\n <ng-template #cellTmp>\r\n <div\r\n class=\"ard-table__cell-container\"\r\n [style]=\"getCellStyle(row.dataColumns()[$index])\"\r\n >\r\n @if (isCellCheckbox(cell)) {\r\n <ng-template\r\n #defaultCheckboxTemplate\r\n let-isChecked\r\n let-onChange=\"onChange\"\r\n let-disabled=\"disabled\"\r\n >\r\n <ard-checkbox\r\n [tabIndex]=\"isLoading() ? -1 : tabIndex()\"\r\n [selected]=\"isChecked\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange()\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"checkboxTemplate() ?? defaultCheckboxTemplate\"\r\n [ngTemplateOutletContext]=\"getCheckboxContext(row.index())\"\r\n />\r\n } @else {\r\n <ng-template\r\n #defaultCellTemplate\r\n let-content\r\n >\r\n {{ content }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"getCellTemplate(row.dataColumns()[$index].template) ?? defaultCellTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: cell }\"\r\n />\r\n }\r\n </div>\r\n </ng-template>\r\n @if (!row.dataColumns()[$index].isRowHeader) {\r\n <td\r\n class=\"ard-table__body-cell\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </td>\r\n } @else {\r\n <th\r\n class=\"ard-table__body-cell ard-table__row-header\"\r\n scope=\"row\"\r\n [ngClass]=\"row.dataColumns()[$index].cellClass\"\r\n [class.ard-table__checkbox-cell]=\"isCellCheckbox(cell)\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"cellTmp\"></ng-template>\r\n </th>\r\n } }\r\n </tr>\r\n } }\r\n </tbody>\r\n @if (canDisplayPagination()) {\r\n <tfoot class=\"ard-table__foot\">\r\n <tr class=\"ard-table__foot-row\">\r\n <td\r\n class=\"ard-table__pagination-cell\"\r\n colspan=\"9999\"\r\n >\r\n <ard-table-pagination\r\n [options]=\"paginationOptions()\"\r\n [totalItems]=\"totalItems()!\"\r\n [disabled]=\"paginationDisabled()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n [align]=\"paginationAlign()\"\r\n [isLoading]=\"isLoading()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n />\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n</table>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumSelectModule } from '../select/select.module';\nimport { ArdiumTablePaginationComponent } from './table-pagination.component';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [ArdiumTablePaginationComponent],\n imports: [CommonModule, ArdiumSelectModule, ArdiumIconButtonModule, ArdiumIconModule],\n exports: [ArdiumTablePaginationComponent],\n})\nexport class ArdiumTablePaginationModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableComponent } from './table.component';\nimport { ArdiumCheckboxModule } from '../checkbox/checkbox.module';\nimport { ArdiumTablePaginationModule } from '../table-pagination/table-pagination.module';\nimport {\n ArdiumTableCaptionTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ArdiumTableTemplateDirective,\n} from './table.directives';\nimport { ArdiumIconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n imports: [CommonModule, ArdiumCheckboxModule, ArdiumTablePaginationModule, ArdiumIconModule],\n exports: [\n ArdiumTableComponent,\n ArdiumTableTemplateDirective,\n ArdiumTableCheckboxTemplateDirective,\n ArdiumTableHeaderCheckboxTemplateDirective,\n ArdiumTableCaptionTemplateDirective,\n ArdiumTablePaginationTemplateDirective,\n ],\n})\nexport class ArdiumTableModule {}\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n model,\r\n} from '@angular/core';\r\nimport { TableDataColumn, TablePaginationStrategy } from '../table/table.types';\r\nimport { Nullable } from '../types/utility.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { CurrentItemsFormatFn, PaginationAlign } from '../table-pagination/table-pagination.types';\r\n\r\n@Component({\r\n selector: 'ard-table-from-csv',\r\n templateUrl: './table-from-csv.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTableFromCsvComponent implements AfterContentInit, OnChanges {\r\n readonly selectableRows = input<any>();\r\n readonly maxSelectedItems = input<any>();\r\n readonly clickableRows = input<any>();\r\n\r\n readonly isLoading = input<any>();\r\n readonly loadingProgress = input<any>();\r\n\r\n readonly caption = input<Nullable<string>>(undefined);\r\n\r\n readonly appearance = input<any>();\r\n readonly variant = input<any>();\r\n readonly color = input<any>();\r\n readonly align = input<any>();\r\n readonly headerAlign = input<any>();\r\n\r\n readonly compact = input<any>();\r\n readonly zebra = input<any>();\r\n readonly stickyHeader = input<any>();\r\n\r\n //! pagination\r\n readonly paginated = input<any>();\r\n\r\n readonly paginationStrategy = input<TablePaginationStrategy>(TablePaginationStrategy.Slice);\r\n\r\n readonly paginationOptions = input<number[] | { value: number; label: string }[]>([10, 25, 50]);\r\n readonly totalItems = input<any>();\r\n readonly paginationColor = input<ComponentColor>(ComponentColor.None);\r\n readonly paginationAlign = input<PaginationAlign>(PaginationAlign.Split);\r\n readonly itemsPerPageText = input<string>('Items per page:');\r\n readonly currentItemsFormatFn = input<CurrentItemsFormatFn>(\r\n ({ currentItemsFirst, currentItemsLast, totalItems }) => `${currentItemsFirst} – ${currentItemsLast} of ${totalItems}`\r\n );\r\n\r\n readonly pageFillRemaining = input<any>();\r\n readonly paginationDisabled = input<any>();\r\n readonly useFirstLastButtons = input<any>();\r\n\r\n readonly itemsPerPage = model<number>(50);\r\n readonly page = model<number>(1);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['itemsPerPage']) {\r\n const ipp = changes['itemsPerPage'].currentValue;\r\n const options =\r\n (changes['paginationOptions']?.currentValue as number[] | { value: number; label: string }[]) ||\r\n (this.paginationOptions() as number[] | { value: number; label: string }[]);\r\n if (!options.find(v => (typeof v === 'number' ? v === ipp : v.value === ipp))) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5071: value of \"${ipp}\" in <ard-table-from-csv>'s [itemsPerPage] does not appear in [paginationOptions] array [${options\r\n .map(v => (typeof v === 'number' ? v : v.value))\r\n .join(', ')}]`\r\n )\r\n );\r\n }\r\n }\r\n if (changes['paginationOptions']) {\r\n const options = changes['paginationOptions'].currentValue.map((v: number | { value: number; label: string }) =>\r\n typeof v === 'number' ? v : v.value\r\n ) as number[];\r\n for (const opt of options) {\r\n if (opt <= 0 || opt % 1 !== 0) {\r\n console.error(\r\n new Error(\r\n `ARD-NF5072: each item of <ard-table-from-csv>'s [paginationOptions] must be a positive integer. The \"${opt}\" option will be ignored.`\r\n )\r\n );\r\n }\r\n }\r\n }\r\n if (changes['page']) {\r\n const page = changes['page'].currentValue as number;\r\n if (page === 0) {\r\n throw new Error(\r\n `ARD-FT5073a: <ard-table-from-csv>'s [page] uses 1-indexed numbering system. The value 0 is not accepted.`\r\n );\r\n } else if (page < 0 || page % 1 !== 0) {\r\n throw new Error(`ARD-FT5073b: value of <ard-table-from-csv>'s [page] must be a positive integer, got \"${page}\".`);\r\n }\r\n }\r\n }\r\n\r\n //! data\r\n readonly separator = input<string>(',');\r\n\r\n readonly data = input<{ headers: TableDataColumn[]; dataRows: any[] } | null, string>(null, {\r\n transform: v => {\r\n if (!this._isCsvValid(v)) return null;\r\n const lines = v.split('\\n');\r\n const headers = this._convertCsvToHeaders(lines.shift()!);\r\n const dataRows = this._convertCsvToArray(lines, headers);\r\n return { headers, dataRows };\r\n },\r\n });\r\n private readonly _isDataOkay = computed(() => this.data() !== null);\r\n\r\n readonly headers = computed(() => this.data()?.headers ?? []);\r\n readonly dataRows = computed(() => this.data()?.dataRows ?? []);\r\n\r\n ngAfterContentInit(): void {\r\n if (!this._isDataOkay()) {\r\n console.error(new Error(`ARD-FT5070: Expected <ard-table-from-csv>'s [data] attribute to be a non-empty string, got \"\".`));\r\n }\r\n }\r\n\r\n private _isCsvValid(csv: string): boolean {\r\n return csv.length > 1;\r\n }\r\n private _convertCsvToHeaders(line: string): TableDataColumn[] {\r\n const headers = line.split(this.separator());\r\n return headers.map(header => {\r\n header = header.trim();\r\n return {\r\n header,\r\n dataSource: header,\r\n };\r\n });\r\n }\r\n private _convertCsvToArray(lines: string[], headers: TableDataColumn[]): any[] {\r\n const dataRows: Record<string, any>[] = [];\r\n\r\n for (const line of lines) {\r\n const lineArr = line.split(this.separator());\r\n\r\n const obj: Record<string, any> = {};\r\n for (let i = 0; i < headers.length; i++) {\r\n const source = headers[i].dataSource as string;\r\n obj[source] = lineArr[i]?.trim() ?? '';\r\n }\r\n dataRows.push(obj);\r\n }\r\n return dataRows;\r\n }\r\n}\r\n","<ard-table\r\n treatDataSourceAsString\r\n [columns]=\"headers()\"\r\n [data]=\"dataRows()\"\r\n [selectableRows]=\"selectableRows()\"\r\n [maxSelectedItems]=\"maxSelectedItems()\"\r\n [clickableRows]=\"clickableRows()\"\r\n [isLoading]=\"isLoading()\"\r\n [loadingProgress]=\"loadingProgress()\"\r\n [caption]=\"caption()\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [color]=\"color()\"\r\n [align]=\"align()\"\r\n [headerAlign]=\"headerAlign()\"\r\n [compact]=\"compact()\"\r\n [zebra]=\"zebra()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [paginated]=\"paginated()\"\r\n [paginationStrategy]=\"paginationStrategy()\"\r\n [totalItems]=\"totalItems()\"\r\n [paginationColor]=\"paginationColor()\"\r\n [paginationAlign]=\"paginationAlign()\"\r\n [itemsPerPageText]=\"itemsPerPageText()\"\r\n [currentItemsFormatFn]=\"currentItemsFormatFn()\"\r\n [pageFillRemaining]=\"pageFillRemaining()\"\r\n [paginationDisabled]=\"paginationDisabled()\"\r\n [useFirstLastButtons]=\"useFirstLastButtons()\"\r\n [(itemsPerPage)]=\"itemsPerPage\"\r\n [(page)]=\"page\"\r\n/>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumTableFromCsvComponent } from './table-from-csv.component';\nimport { ArdiumTableModule } from './../table/table.module';\n\n@NgModule({\n declarations: [ArdiumTableFromCsvComponent],\n imports: [CommonModule, ArdiumTableModule],\n exports: [ArdiumTableFromCsvComponent],\n})\nexport class ArdiumTableFromCsvModule {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { coerceNumberProperty } from '@ardium-ui/devkit';\r\nimport { isArray } from 'simple-bool';\r\nimport { StarColor, StarFillMode } from './../star.types';\r\n\r\n@Component({\r\n selector: 'ard-star-display',\r\n templateUrl: './star-display.component.html',\r\n styleUrls: ['./star-display.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumStarDisplayComponent {\r\n readonly wrapperClasses = input<string>('');\r\n\r\n //! appearance\r\n readonly color = input<StarColor>(StarColor.Star);\r\n\r\n readonly ngClasses = computed<string>(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));\r\n\r\n //! stars\r\n readonly max = input<number, any>(5, { transform: v => coerceNumberProperty(v, 0) });\r\n\r\n readonly value = input<number | StarFillMode[], string | number | StarFillMode[]>(0, {\r\n transform: v => {\r\n if (isArray(v)) {\r\n return v;\r\n }\r\n return coerceNumberProperty(v, 0);\r\n },\r\n });\r\n\r\n readonly starArray = computed<StarFillMode[]>(() => {\r\n let v = this.value();\r\n let newArr: StarFillMode[];\r\n\r\n // pad the array with non-filled stars and return it\r\n if (isArray(v)) {\r\n newArr = [...v];\r\n while (newArr.length < this.max()) {\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n }\r\n\r\n // create an array from a numeric value\r\n newArr = [];\r\n while (newArr.length < this.max()) {\r\n v--;\r\n if (v + 1 >= 1) {\r\n newArr.push(StarFillMode.Filled);\r\n continue;\r\n }\r\n if (Math.round(v + 1) === 1) {\r\n newArr.push(StarFillMode.Half);\r\n continue;\r\n }\r\n newArr.push(StarFillMode.None);\r\n }\r\n return newArr;\r\n });\r\n}\r\n","<div\r\n class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (fillMode of starArray(); track $index) {\r\n <ard-star\r\n [fill]=\"fillMode\"\r\n [color]=\"color()\"\r\n />\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumStarDisplayComponent } from './star-display.component';\nimport { ArdiumStarModule } from '../star.module';\n\n@NgModule({\n declarations: [ArdiumStarDisplayComponent],\n imports: [CommonModule, ArdiumStarModule],\n exports: [ArdiumStarDisplayComponent],\n})\nexport class ArdiumStarDisplayModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabComponent {\r\n readonly disabled = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly selected = signal<boolean>(false);\r\n @Input('selected')\r\n set _selected(v: any) {\r\n this.selected.set(coerceBooleanProperty(v));\r\n }\r\n\r\n setSelected(state: boolean): void {\r\n this.selected.set(state);\r\n this._emitChange();\r\n }\r\n\r\n @HostBinding('class.ard-tab-selected')\r\n get _selectedHostAttribute() {\r\n return this.selected();\r\n }\r\n\r\n private _emitChange(): void {\r\n this.selectedChange.emit(this.selected());\r\n }\r\n\r\n readonly focused = signal<boolean>(false);\r\n\r\n readonly _label = input<string | null>(null, { alias: 'label' });\r\n readonly label = computed(() => this._label() ?? this.tabId());\r\n\r\n readonly tabId = input.required<string>();\r\n\r\n readonly focusEvent = output<void>();\r\n readonly blurEvent = output<void>();\r\n readonly selectedChange = output<boolean>();\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n computed,\r\n contentChildren,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@Component({\r\n selector: 'ard-tabber',\r\n templateUrl: './tabber.component.html',\r\n styleUrl: './tabber.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumTabberComponent implements AfterContentInit {\r\n public readonly tabs = contentChildren(ArdiumTabComponent, { descendants: true });\r\n\r\n readonly currentTab = signal<ArdiumTabComponent | null>(null);\r\n readonly currentFocusedTab = signal<ArdiumTabComponent | null>(null);\r\n\r\n ngAfterContentInit(): void {\r\n let selectedCmp: ArdiumTabComponent | null = null;\r\n for (const cmp of this.tabs()) {\r\n if (cmp.selected()) {\r\n // ensure only one tab is selected\r\n if (selectedCmp) {\r\n cmp.selected.set(false);\r\n }\r\n\r\n selectedCmp = cmp;\r\n }\r\n\r\n cmp.focusEvent.subscribe(() => {\r\n this.focusEvent.emit(cmp.tabId());\r\n });\r\n cmp.blurEvent.subscribe(() => {\r\n this.blurEvent.emit(cmp.tabId());\r\n });\r\n cmp.selectedChange.subscribe(isSelected => {\r\n if (!isSelected) return;\r\n this.changeTab.emit(cmp.tabId());\r\n });\r\n }\r\n\r\n if (!selectedCmp) {\r\n selectedCmp = this.tabs()[0] ?? null;\r\n\r\n if (selectedCmp) {\r\n selectedCmp.selected.set(true);\r\n }\r\n }\r\n\r\n this.currentTab.set(selectedCmp);\r\n }\r\n\r\n onTabClick(tab: ArdiumTabComponent): void {\r\n const curr = this.currentTab();\r\n if (curr) {\r\n curr.selected.set(false);\r\n curr.selectedChange.emit(false);\r\n }\r\n this.currentTab.set(tab);\r\n\r\n tab.selected.set(true);\r\n tab.selectedChange.emit(true);\r\n }\r\n onTabFocus(tab: ArdiumTabComponent): void {\r\n tab.focusEvent.emit();\r\n tab.focused.set(true);\r\n\r\n this.currentFocusedTab.set(tab);\r\n }\r\n onTabBlur(tab: ArdiumTabComponent): void {\r\n tab.blurEvent.emit();\r\n tab.focused.set(false);\r\n\r\n this.currentFocusedTab.set(null);\r\n }\r\n\r\n readonly focusEvent = output<string>({ alias: 'focus' });\r\n readonly blurEvent = output<string>({ alias: 'blur' });\r\n readonly changeTab = output<string>();\r\n\r\n //! appearance\r\n readonly color = input<ComponentColor>(ComponentColor.Primary);\r\n\r\n readonly ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));\r\n\r\n //! tab container settings\r\n readonly stretchTabs = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly uniformTabWidths = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly tabAlignment = input<OneAxisAlignment>(OneAxisAlignment.Left);\r\n\r\n readonly tabContainerClasses = computed(() =>\r\n [\r\n this.uniformTabWidths() && !this.stretchTabs() ? 'ard-uniform-tab-widths' : '',\r\n this.stretchTabs() ? 'ard-stretch-tabs' : '',\r\n this.stretchTabs() ? '' : `ard-tab-align-${this.tabAlignment()}`,\r\n ].join(' ')\r\n );\r\n\r\n //! other\r\n readonly tabIndex = input<number | string>(0);\r\n}\r\n","<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tab of tabs(); track tab) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tab.tabId()\"\r\n [class.ard-tab-active]=\"tab === currentTab()\"\r\n [class.ard-tab-focused]=\"tab === currentFocusedTab()\"\r\n (click)=\"!tab.selected() && onTabClick(tab)\"\r\n (focus)=\"onTabFocus(tab)\"\r\n (blur)=\"onTabBlur(tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ArdiumTabberComponent } from './tabber.component';\r\nimport { ArdiumTabComponent } from './tab/tab.component';\r\n\r\n@NgModule({\r\n declarations: [ArdiumTabberComponent, ArdiumTabComponent],\r\n imports: [CommonModule],\r\n exports: [ArdiumTabberComponent, ArdiumTabComponent],\r\n})\r\nexport class ArdiumTabberModule {}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n input,\r\n} from '@angular/core';\r\nimport { OneAxisAlignment } from '../types/alignment.types';\r\n\r\n@Component({\r\n selector: 'ard-card-header',\r\n templateUrl: 'card-header.template.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardHeaderComponent {}\r\n\r\n@Directive({ selector: 'ard-card-subtitle, [ard-card-subtitle]' })\r\nexport class ArdiumCardSubtitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-subtitle');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-title, [ard-card-title]' })\r\nexport class ArdiumCardTitleDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-title');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-avatar]' })\r\nexport class ArdiumCardAvatarDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-avatar');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-content, [ard-card-content]' })\r\nexport class ArdiumCardContentDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-content');\r\n }\r\n}\r\n\r\n@Directive({ selector: '[ard-card-image]' })\r\nexport class ArdiumCardImageDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-image');\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-action-buttons, [ard-card-action-buttons]' })\r\nexport class ArdiumCardActionButtonsDirective {\r\n readonly align = input<OneAxisAlignment>(OneAxisAlignment.Right);\r\n\r\n readonly alignClass = computed(() => `ard-card-action-buttons ard-align-${this.align()}`);\r\n\r\n @HostBinding('class')\r\n get _alignClassHostAttribute() {\r\n return this.alignClass();\r\n }\r\n}\r\n\r\n@Directive({ selector: 'ard-card-footer, [ard-card-footer]' })\r\nexport class ArdiumCardFooterDirective {\r\n constructor(renderer: Renderer2, hostElement: ElementRef) {\r\n renderer.addClass(hostElement.nativeElement, 'ard-card-footer');\r\n }\r\n}\r\n","<ng-content select=\"[ard-card-avatar]\" />\r\n<div class=\"ard-card-header-title-container\">\r\n <ng-content\r\n select=\"ard-card-title, ard-card-subtitle,\r\n [ard-card-title], [ard-card-subtitle]\"\r\n />\r\n</div>\r\n<ng-content />\r\n","export const CardAppearance = {\n Outlined: 'outlined',\n Raised: 'raised',\n} as const;\nexport type CardAppearance = (typeof CardAppearance)[keyof typeof CardAppearance];\n\nexport const CardVariant = {\n Rounded: 'rounded',\n Sharp: 'sharp',\n} as const;\nexport type CardVariant = (typeof CardVariant)[keyof typeof CardVariant];\n","import { ChangeDetectionStrategy, Component, Directive, HostBinding, ViewEncapsulation, computed, input } from '@angular/core';\r\nimport { CardAppearance, CardVariant } from './card.types';\r\n\r\n@Directive({ selector: '[ard-card]' })\r\nexport class ArdiumCardDirective {\r\n //! appearance\r\n readonly appearance = input<CardAppearance>(CardAppearance.Raised);\r\n readonly variant = input<CardVariant>(CardVariant.Rounded);\r\n\r\n readonly ngClasses = computed(() =>\r\n ['ard-card', `ard-appearance-${this.appearance()}`, `ard-variant-${this.variant()}`].join(' ')\r\n );\r\n\r\n @HostBinding('class')\r\n get _ngClassesHostAttribute() {\r\n return this.ngClasses();\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ard-card',\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumCardComponent extends ArdiumCardDirective {}\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n ArdiumCardActionButtonsDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardFooterDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardImageDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardTitleDirective,\n} from './card.children';\nimport { ArdiumCardComponent, ArdiumCardDirective } from './card.component';\n\n@NgModule({\n declarations: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n imports: [CommonModule],\n exports: [\n ArdiumCardComponent,\n ArdiumCardDirective,\n ArdiumCardHeaderComponent,\n ArdiumCardTitleDirective,\n ArdiumCardSubtitleDirective,\n ArdiumCardAvatarDirective,\n ArdiumCardContentDirective,\n ArdiumCardImageDirective,\n ArdiumCardActionButtonsDirective,\n ArdiumCardFooterDirective,\n ],\n})\nexport class ArdiumCardModule {}\n","import { ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation, input } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\n\r\n@Component({\r\n selector: 'ard-divider',\r\n template: '',\r\n styleUrls: ['./divider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDividerComponent {\r\n readonly vertical = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n @HostBinding('class.ard-divider-vertical')\r\n get _verticalHostAttribute() {\r\n return this.vertical();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDividerComponent } from './divider.component';\n\n@NgModule({\n declarations: [ArdiumDividerComponent],\n imports: [CommonModule],\n exports: [ArdiumDividerComponent],\n})\nexport class ArdiumDividerModule {}\n","import { Overlay, OverlayConfig, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\n@Component({\r\n selector: 'ard-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumModalComponent {\r\n private readonly overlay = inject(Overlay);\r\n private readonly scrollStrategyOpts = inject(ScrollStrategyOptions);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n\r\n //! appearance\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n readonly ngClasses = computed(() =>\r\n [`ard-variant-${this.variant()}`, `ard-appearance-${this.appearance()}`, this.compact() ? 'ard-compact' : ''].join(' ')\r\n );\r\n\r\n //! heading\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n private readonly open = signal<boolean>(false);\r\n @Input({ alias: 'open' })\r\n set _open(v: any) {\r\n this.open.set(coerceBooleanProperty(v));\r\n if (this.open()) this._openOverlay();\r\n else this._destroyOverlay();\r\n }\r\n\r\n readonly openChange = output<boolean>();\r\n readonly closeEvent = output<void>({ alias: 'close' });\r\n\r\n //! overlay handling\r\n readonly modalTemplate = viewChild('modalTemplate', { read: TemplateRef });\r\n\r\n private _modalOverlay?: OverlayRef;\r\n\r\n private _openOverlay(): void {\r\n const strategy = this.overlay.position().global();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n scrollStrategy: this.scrollStrategyOpts.block(),\r\n hasBackdrop: false,\r\n });\r\n\r\n this._modalOverlay = this.overlay.create(config);\r\n\r\n const portal = new TemplatePortal(this.modalTemplate()!, this.viewContainerRef);\r\n this._modalOverlay.attach(portal);\r\n }\r\n private _destroyOverlay(): void {\r\n if (!this._modalOverlay) return;\r\n\r\n this.openChange.emit(false);\r\n this.closeEvent.emit();\r\n this._modalOverlay.dispose();\r\n delete this._modalOverlay;\r\n }\r\n\r\n //! events\r\n onBackdropClick(): void {\r\n if (this.disableBackdropClose()) return;\r\n this._destroyOverlay();\r\n }\r\n onCloseButtonClick(): void {\r\n this._destroyOverlay();\r\n }\r\n}\r\n","<ng-template #modalTemplate>\r\n @if (noBackdrop()) {\r\n <div\r\n class=\"ard-modal\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"ard-modal ard-modal-backdrop\"\r\n [ngClass]=\"ngClasses\"\r\n (click)=\"onBackdropClick()\"\r\n >\r\n <ng-template [ngTemplateOutlet]=\"_modalInsidePanel\"></ng-template>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #_modalInsidePanel>\r\n <div\r\n class=\"ard-modal-panel\"\r\n cdkTrapFocus\r\n [class.ard-modal-no-heading-text]=\"!heading\"\r\n [class.ard-modal-has-close-button]=\"!this.noCloseButton()\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <div class=\"ard-modal-heading\">\r\n <div class=\"ard-modal-heading-text\">{{ heading() }}</div>\r\n @if (!noCloseButton()) {\r\n <ard-icon-button\r\n class=\"ard-modal-close-button\"\r\n color=\"none\"\r\n [compact]=\"compact()\"\r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <ard-icon>close</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n <div class=\"ard-modal-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumModalComponent } from './modal.component';\nimport { ArdiumIconButtonModule } from '../buttons/icon-button/icon-button.module';\nimport { ArdiumIconModule } from '../icon/icon.module';\nimport { A11yModule } from '@angular/cdk/a11y';\n\n@NgModule({\n declarations: [ArdiumModalComponent],\n imports: [CommonModule, ArdiumIconButtonModule, ArdiumIconModule, A11yModule],\n exports: [ArdiumModalComponent],\n})\nexport class ArdiumModalModule {}\n","import { Directive, TemplateRef } from '@angular/core';\nimport { DialogButtonsContext } from './dialog.types';\n\n@Directive({ selector: 'ard-dialog > ng-template[ard-buttons-tmp]' })\nexport class ArdDialogButtonsTemplateDirective {\n constructor(public template: TemplateRef<DialogButtonsContext>) {}\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n computed,\r\n contentChild,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\nimport { coerceBooleanProperty } from '@ardium-ui/devkit';\r\nimport { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\r\nimport { DialogButtonsContext, DialogResult } from './dialog.types';\r\n\r\n@Component({\r\n selector: 'ard-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrl: './dialog.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ArdiumDialogComponent {\r\n //! appearance\r\n //all handled by modal component\r\n readonly appearance = input<PanelAppearance>(PanelAppearance.Raised);\r\n readonly variant = input<PanelVariant>(PanelVariant.Rounded);\r\n\r\n readonly compact = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! heading\r\n //all handled by modal component\r\n readonly heading = input<string>('');\r\n\r\n readonly noCloseButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! options\r\n //all handled by modal component\r\n readonly noBackdrop = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly disableBackdropClose = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n //! open state handling\r\n //all handled by modal component\r\n readonly open = model<boolean>(false);\r\n\r\n readonly closeEvent = output<DialogResult>({ alias: 'close' });\r\n readonly confirmEvent = output<void>({ alias: 'confirm' });\r\n readonly rejectEvent = output<void>({ alias: 'reject' });\r\n\r\n //! button settings\r\n readonly confirmButtonText = input<string>('Confirm');\r\n readonly confirmButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly confirmButtonAppearance = input<ButtonAppearance>(ButtonAppearance.RaisedStrong);\r\n readonly rejectButtonText = input<string>('Cancel');\r\n readonly rejectButtonColor = input<ComponentColor>(ComponentColor.Primary);\r\n readonly rejectButtonAppearance = input<ButtonAppearance>(ButtonAppearance.Transparent);\r\n\r\n readonly noRejectButton = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n readonly canConfirm = input<boolean, any>(false, { transform: v => coerceBooleanProperty(v) });\r\n\r\n onConfirmClick() {\r\n if (!this.canConfirm()) return;\r\n\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('confirm');\r\n this.confirmEvent.emit();\r\n }, 0);\r\n }\r\n onRejectClick() {\r\n this.open.set(false);\r\n setTimeout(() => {\r\n this.closeEvent.emit('reject');\r\n this.rejectEvent.emit();\r\n }, 0);\r\n }\r\n onModalClose() {\r\n this.closeEvent.emit('close');\r\n }\r\n\r\n //! templates\r\n readonly buttonsTemplate = contentChild(ArdDialogButtonsTemplateDirective);\r\n\r\n readonly getButtonsContext = computed<DialogButtonsContext>(() => {\r\n return {\r\n confirmButton: {\r\n text: this.confirmButtonText(),\r\n color: this.confirmButtonColor(),\r\n appearance: this.confirmButtonAppearance(),\r\n },\r\n rejectButton: {\r\n enabled: !this.noRejectButton(),\r\n text: this.rejectButtonText(),\r\n color: this.rejectButtonColor(),\r\n appearance: this.rejectButtonAppearance(),\r\n },\r\n canConfirm: this.canConfirm(),\r\n onConfirm: () => this.onConfirmClick(),\r\n onReject: () => this.onRejectClick(),\r\n dialogAppearance: this.appearance(),\r\n dialogVariant: this.variant(),\r\n dialogCompact: this.compact(),\r\n };\r\n });\r\n}\r\n","<ard-modal\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [heading]=\"heading()\"\r\n [noCloseButton]=\"noCloseButton()\"\r\n [noBackdrop]=\"noBackdrop()\"\r\n [disableBackdropClose]=\"disableBackdropClose()\"\r\n [(open)]=\"open\"\r\n (close)=\"onModalClose()\"\r\n>\r\n <div class=\"ard-dialog-container\">\r\n <div class=\"ard-dialog-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ard-dialog-buttons\">\r\n <ng-template\r\n #defaultButtonsTemplate\r\n let-confirmButton=\"confirmButton\"\r\n let-rejectButton=\"rejectButton\"\r\n let-canConfirm=\"canConfirm\"\r\n let-onConfirm=\"onConfirm\"\r\n let-onReject=\"onReject\"\r\n let-dialogVariant=\"dialogVariant\"\r\n let-dialogCompact=\"dialogCompact\"\r\n >\r\n <div class=\"ard-dialog-buttons-container\">\r\n @if (rejectButton.enabled) {\r\n <ard-button\r\n [color]=\"rejectButton.color\"\r\n [appearance]=\"rejectButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onReject()\"\r\n >\r\n {{ rejectButton.text }}\r\n </ard-button>\r\n }\r\n <ard-button\r\n [color]=\"confirmButton.color\"\r\n [appearance]=\"confirmButton.appearance\"\r\n [variant]=\"dialogVariant\"\r\n [compact]=\"dialogCompact\"\r\n (click)=\"onConfirm()\"\r\n [disabled]=\"!canConfirm\"\r\n >\r\n {{ confirmButton.text }}\r\n </ard-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"buttonsTemplate()?.template ?? defaultButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"getButtonsContext()\"\r\n ></ng-template>\r\n </div>\r\n </div>\r\n</ard-modal>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ArdiumDialogComponent } from './dialog.component';\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\nimport { ArdiumModalModule } from '../modal/modal.module';\nimport { ArdDialogButtonsTemplateDirective } from './dialog.directives';\n\n@NgModule({\n declarations: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n imports: [CommonModule, ArdiumButtonModule, ArdiumModalModule],\n exports: [ArdiumDialogComponent, ArdDialogButtonsTemplateDirective],\n})\nexport class ArdiumDialogModule {}\n","import { ButtonAppearance } from '../buttons/general-button.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\nimport { PanelAppearance, PanelVariant } from '../types/theming.types';\r\n\r\nexport const DialogResult = {\r\n Confirm: 'confirm',\r\n Reject: 'reject',\r\n Close: 'close',\r\n} as const;\r\nexport type DialogResult = (typeof DialogResult)[keyof typeof DialogResult];\r\n\r\nexport interface DialogButtonsContext {\r\n confirmButton: {\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n rejectButton: {\r\n enabled: boolean;\r\n text: string;\r\n color: ComponentColor;\r\n appearance: ButtonAppearance;\r\n };\r\n canConfirm: boolean;\r\n onConfirm: () => void;\r\n onReject: () => void;\r\n dialogAppearance: PanelAppearance;\r\n dialogVariant: PanelVariant;\r\n dialogCompact: boolean;\r\n}\r\n","interface IQueue {\n readonly length: number;\n}\n\nexport class Queue<T = unknown> implements IQueue {\n private head?: QueueItem<T>;\n private tail?: QueueItem<T>;\n\n push(item: T): void {\n if (!this.tail) return this.pushFront(item);\n this.tail!.next = new QueueItem(item);\n this.tail = this.tail!.next!;\n }\n pushFront(item: T): void {\n this.head = new QueueItem(item, this.head);\n if (!this.tail) this.tail = this.head;\n }\n pop(): T | undefined {\n const head = this.head;\n if (!head) return;\n //replace head with the next item\n this.head = head.next;\n //delete the tail if there are no next items\n if (!this.head) this.tail = undefined;\n\n return head.value;\n }\n peek(): T | undefined {\n return this.head?.value;\n }\n clear(): void {\n this.head = undefined;\n this.tail = undefined;\n }\n get length(): number {\n let length = 0;\n let currentNode = this.head;\n while (currentNode) {\n length++;\n currentNode = currentNode.next;\n }\n return length;\n }\n isEmpty(): boolean {\n return !this.head;\n }\n toArray(): T[] {\n const array: T[] = [];\n let currentNode = this.head;\n while (currentNode) {\n array.push(currentNode.value);\n currentNode = currentNode.next;\n }\n return array;\n }\n}\n\nexport class QueueItem<T> {\n constructor(\n public value: T,\n public next?: QueueItem<T>\n ) {}\n}\n","import { ComponentType } from '@angular/cdk/portal';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ArdSnackbarData, ArdSnackbarOptions, ArdSnackbarType } from './snackbar.types';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ARD_SNACKBAR_DATA = new InjectionToken<ArdSnackbarData>('ArdSnackbarData');\r\nexport const ARD_SNACKBAR_COLOR = new InjectionToken<ComponentColor>('ArdSnackbarColor');\r\nexport const ARD_SNACKBAR_TYPE = new InjectionToken<ArdSnackbarType>('ArdSnackbarType');\r\n\r\nexport class _ArdSnackbarRefInternal<T> {\r\n constructor(\r\n public component: ComponentType<T>,\r\n public options: Required<ArdSnackbarOptions>,\r\n dismiss: (withAction?: boolean) => void\r\n ) {\r\n this.publicRef = new ArdSnackbarRef(dismiss, this._onOpen, this._onCloseStart);\r\n }\r\n\r\n readonly publicRef!: ArdSnackbarRef<T>;\r\n\r\n timeout!: any;\r\n overlay!: OverlayRef;\r\n\r\n private readonly _onOpen = new Subject<void>();\r\n private readonly _onCloseStart = new BehaviorSubject<boolean>(false);\r\n\r\n markAsOpened() {\r\n this._onOpen.next();\r\n this._onOpen.complete();\r\n }\r\n markAsStartingToClose() {\r\n this._onCloseStart.next(true);\r\n this._onCloseStart.complete();\r\n }\r\n}\r\nexport class ArdSnackbarRef<T = unknown> {\r\n constructor(\r\n private readonly dismiss: (withAction?: boolean) => void,\r\n private readonly _onOpen: Subject<void>,\r\n private readonly _onCloseStart: BehaviorSubject<boolean>\r\n ) {}\r\n\r\n private readonly _onClose = new Subject<boolean>();\r\n public readonly onOpen = this._onOpen.asObservable();\r\n public readonly onClose = this._onClose.asObservable();\r\n public readonly onCloseStart = this._onCloseStart.asObservable();\r\n\r\n public instance!: T;\r\n\r\n close(withAction = false): void {\r\n if (this.isClosed) return;\r\n this.dismiss(withAction);\r\n this.markAsClosed();\r\n }\r\n\r\n markAsClosed(withAction = false): void {\r\n if (this.isClosed) return;\r\n this._onClose.next(withAction);\r\n this._onClose.complete();\r\n this._isClosed = true;\r\n }\r\n\r\n private _isClosed = false;\r\n public get isClosed(): boolean {\r\n return this._isClosed;\r\n }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\nexport const ArdSnackbarAlignment = {\r\n TopLeft: 'top-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n BottomLeft: 'bottom-left',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n} as const;\r\nexport type ArdSnackbarAlignment = (typeof ArdSnackbarAlignment)[keyof typeof ArdSnackbarAlignment];\r\n\r\nexport const ArdSnackbarOriginRelation = {\r\n Inside: 'inside',\r\n Outside: 'outside',\r\n} as const;\r\nexport type ArdSnackbarOriginRelation = (typeof ArdSnackbarOriginRelation)[keyof typeof ArdSnackbarOriginRelation];\r\n\r\nexport const ArdSnackbarQueueHandling = {\r\n Default: 'default',\r\n Skip: 'skip',\r\n Overwrite: 'overwrite',\r\n} as const;\r\nexport type ArdSnackbarQueueHandling = (typeof ArdSnackbarQueueHandling)[keyof typeof ArdSnackbarQueueHandling];\r\n\r\nexport type ArdSnackbarOrigin<T = any> = HTMLElement | ElementRef<T>;\r\n\r\nexport const ArdSnackbarType = {\r\n None: 'none',\r\n Danger: 'danger',\r\n Warning: 'warn',\r\n Success: 'success',\r\n Info: 'info',\r\n} as const;\r\nexport type ArdSnackbarType = (typeof ArdSnackbarType)[keyof typeof ArdSnackbarType];\r\n\r\nexport interface ArdSnackbarData {\r\n message: string;\r\n action?: string;\r\n}\r\n\r\nexport interface ArdSnackbarOptions {\r\n data?: ArdSnackbarData;\r\n placement?: {\r\n align?: ArdSnackbarAlignment;\r\n origin?: ArdSnackbarOrigin;\r\n originRelation?: ArdSnackbarOriginRelation;\r\n };\r\n duration?: number;\r\n color?: ComponentColor;\r\n type?: ArdSnackbarType;\r\n queueHandling?: ArdSnackbarQueueHandling;\r\n panelClass?: string | string[];\r\n}\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { isDefined } from 'simple-bool';\r\nimport { ArdiumButtonModule } from '../buttons/button/button.module';\r\nimport { ArdiumIconModule } from '../icon/icon.module';\r\nimport { ARD_SNACKBAR_COLOR, ARD_SNACKBAR_DATA, ARD_SNACKBAR_TYPE, ArdSnackbarRef } from './snackbar-ref';\r\nimport { ArdSnackbarType } from './snackbar.types';\r\n\r\n@Component({\r\n selector: 'ard-simple-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styles: ``,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [ArdiumButtonModule, AsyncPipe, ArdiumIconModule],\r\n standalone: true,\r\n})\r\nexport class _ArdSimpleSnackbarComponent {\r\n public readonly snackbarRef = inject(ArdSnackbarRef);\r\n public readonly data = inject(ARD_SNACKBAR_DATA);\r\n public readonly color = inject(ARD_SNACKBAR_COLOR);\r\n public readonly type = inject(ARD_SNACKBAR_TYPE);\r\n\r\n public readonly typeIcon = this._getTypeIcon();\r\n\r\n closeWithAction(): void {\r\n this.snackbarRef.close(true);\r\n }\r\n\r\n get hasAction(): boolean {\r\n return isDefined(this.data.action);\r\n }\r\n\r\n private _getTypeIcon(): string | null {\r\n switch (this.type) {\r\n case ArdSnackbarType.Danger:\r\n return 'error';\r\n case ArdSnackbarType.Warning:\r\n return 'warning';\r\n case ArdSnackbarType.Success:\r\n return 'check_circle';\r\n case ArdSnackbarType.Info:\r\n return 'info';\r\n }\r\n return null;\r\n }\r\n\r\n get colorClass(): string {\r\n return `ard-color-${this.color}`;\r\n }\r\n}\r\n","<div\r\n class=\"ard-snackbar\"\r\n [class.ard-snackbar-closing]=\"snackbarRef.onCloseStart | async\"\r\n [class]=\"colorClass\"\r\n>\r\n <div class=\"ard-snackbar-content\">\r\n @if (typeIcon) {\r\n <ard-icon filled>{{ typeIcon }}</ard-icon>\r\n }\r\n <div class=\"ard-snackbar-message\">{{ data.message }}</div>\r\n </div>\r\n @if (data.action) {\r\n <ard-button\r\n class=\"ard-snackbar-action\"\r\n appearance=\"transparent\"\r\n lightColoring\r\n [color]=\"color\"\r\n (click)=\"closeWithAction()\"\r\n >{{ data.action }}</ard-button\r\n >\r\n }\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\nimport { ArdSnackbarAlignment, ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling } from './snackbar.types';\n\nexport const _DEFAULT_OPTIONS_STATIC = {\n placement: {\n align: ArdSnackbarAlignment.BottomCenter,\n origin: document.body,\n originRelation: ArdSnackbarOriginRelation.Inside,\n },\n duration: 5000,\n queueHandling: ArdSnackbarQueueHandling.Default,\n panelClass: [],\n data: { message: null },\n} as unknown as Required<ArdSnackbarOptions>;\n\nexport const ARD_SNACKBAR_DEFAULT_OPTIONS = new InjectionToken<Required<ArdSnackbarOptions>>('ard-snackbar-default-options', {\n factory: () => ({ ..._DEFAULT_OPTIONS_STATIC }),\n});\n\nexport const ARD_SNACKBAR_ANIMATION_LENGTH = new InjectionToken<number>('ard-snackbar-animation-length', {\n factory: () => 150,\n});\n","import { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, OnDestroy, inject } from '@angular/core';\r\nimport { isArray, isDefined } from 'simple-bool';\r\nimport { Queue } from '../_internal/queue';\r\nimport {\r\n ARD_SNACKBAR_COLOR,\r\n ARD_SNACKBAR_DATA,\r\n ARD_SNACKBAR_TYPE,\r\n ArdSnackbarRef,\r\n _ArdSnackbarRefInternal,\r\n} from './snackbar-ref';\r\nimport { _ArdSimpleSnackbarComponent } from './snackbar.component';\r\nimport { ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DEFAULT_OPTIONS, _DEFAULT_OPTIONS_STATIC } from './snackbar.token';\r\nimport { ArdSnackbarOptions, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarType } from './snackbar.types';\r\nimport { ComponentColor } from '../types/colors.types';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ArdiumSnackbarService implements OnDestroy {\r\n private readonly _snackbarQueue = new Queue<_ArdSnackbarRefInternal<unknown>>();\r\n private _openedSnackbar?: _ArdSnackbarRefInternal<unknown>;\r\n\r\n private readonly _defaultOptionsStatic = _DEFAULT_OPTIONS_STATIC;\r\n private readonly _defaultOptions = inject(ARD_SNACKBAR_DEFAULT_OPTIONS);\r\n private readonly _animationLength = inject(ARD_SNACKBAR_ANIMATION_LENGTH);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n\r\n //! public methods for creating new snackbars\r\n open(message: string, action?: string, options: ArdSnackbarOptions = {}): ArdSnackbarRef<_ArdSimpleSnackbarComponent> {\r\n options.data = {\r\n message,\r\n action: action ?? options.data?.action,\r\n };\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n if (typeof mergedOptions.data === 'object' && !isArray(mergedOptions.data)) {\r\n mergedOptions.data.message = message;\r\n mergedOptions.data.action = action;\r\n }\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(_ArdSimpleSnackbarComponent, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(mergedOptions.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n openFromComponent<T>(component: ComponentType<T>, options: ArdSnackbarOptions): ArdSnackbarRef<T> {\r\n const mergedOptions = this._mergeOptions(options);\r\n\r\n const internalRef = new _ArdSnackbarRefInternal(component, mergedOptions, (withAction?: boolean) =>\r\n this.dismissCurrent(withAction)\r\n );\r\n\r\n this._handleQueue(options.queueHandling!, internalRef);\r\n return internalRef.publicRef;\r\n }\r\n //! handling adding new snackbars to queue\r\n private _handleQueue<T>(handling: ArdSnackbarQueueHandling, ref: _ArdSnackbarRefInternal<T>) {\r\n const isNotOpen = !isDefined(this._openedSnackbar);\r\n if (handling === ArdSnackbarQueueHandling.Default) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n this._snackbarQueue.push(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n }\r\n } else if (handling === ArdSnackbarQueueHandling.Skip || handling === ArdSnackbarQueueHandling.Overwrite) {\r\n const wasEmpty = this._snackbarQueue.isEmpty();\r\n if (!wasEmpty && handling === ArdSnackbarQueueHandling.Overwrite) this._snackbarQueue.clear();\r\n this._snackbarQueue.pushFront(ref);\r\n if (wasEmpty && isNotOpen) {\r\n this._openNext();\r\n } else {\r\n this.dismissCurrent(false);\r\n //it is opened automatically within the dismiss method\r\n }\r\n }\r\n }\r\n private _mergeOptions(options: ArdSnackbarOptions): Required<ArdSnackbarOptions> {\r\n // merge placement\r\n if (options.placement) {\r\n options.placement = {\r\n ...this._defaultOptionsStatic.placement,\r\n ...this._defaultOptions.placement,\r\n ...options.placement,\r\n };\r\n } else {\r\n options.placement = this._defaultOptions.placement ?? this._defaultOptionsStatic.placement;\r\n }\r\n // merge data\r\n if (options.data) {\r\n options.data = {\r\n ...this._defaultOptionsStatic.data,\r\n ...this._defaultOptions.data,\r\n ...options.data,\r\n };\r\n } else {\r\n options.data = this._defaultOptions.data ?? this._defaultOptionsStatic.data;\r\n }\r\n return {\r\n ...this._defaultOptionsStatic,\r\n ...this._defaultOptions,\r\n ...options,\r\n } as Required<ArdSnackbarOptions>;\r\n }\r\n //! opening snackbars\r\n private _openNext() {\r\n const sb = this._snackbarQueue.pop();\r\n if (!sb) return;\r\n this._openedSnackbar = sb;\r\n const overlay = this._createOverlay(sb.options);\r\n sb.overlay = overlay;\r\n\r\n const injector = this._createInjector(sb.options, sb.publicRef);\r\n const portal = new ComponentPortal(sb.component, undefined, injector);\r\n const componentRef = overlay.attach(portal);\r\n sb.publicRef.instance = componentRef.instance;\r\n sb.markAsOpened();\r\n\r\n this._openedSnackbar = sb;\r\n\r\n const duration =\r\n sb.options.duration === Infinity || sb.options.duration <= 0\r\n ? 2_147_483_647 //maximum duration for setTimeout\r\n : sb.options.duration;\r\n\r\n sb.timeout = setTimeout(() => {\r\n this.dismissCurrent(false);\r\n }, duration);\r\n }\r\n private _createOverlay(options: ArdSnackbarOptions): OverlayRef {\r\n let x!: 'start' | 'center' | 'end';\r\n let originY!: 'top' | 'center' | 'bottom';\r\n let overlayY!: 'top' | 'center' | 'bottom';\r\n let overlayY2!: 'top' | 'center' | 'bottom';\r\n\r\n //horizontal alignments\r\n if (options.placement?.align?.match('left')) {\r\n x = 'start';\r\n } else if (options.placement?.align?.match('right')) {\r\n x = 'end';\r\n } else {\r\n x = 'center';\r\n }\r\n // vertical alignments\r\n if (options.placement?.align?.match('bottom')) {\r\n originY = 'bottom';\r\n overlayY = 'bottom';\r\n overlayY2 = 'top';\r\n } else {\r\n originY = 'top';\r\n overlayY = 'top';\r\n overlayY2 = 'bottom';\r\n }\r\n\r\n let origin = options.placement!.origin;\r\n if (!origin) {\r\n console.error(\r\n new Error(`ARD-NF7021: trying to open a snackbar, but the origin is undefined. Using \"document.body\" instead.`)\r\n );\r\n origin = document.body;\r\n }\r\n\r\n const isInside = options.placement?.originRelation === ArdSnackbarOriginRelation.Inside;\r\n const strategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions([\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: isInside ? overlayY : overlayY2,\r\n },\r\n {\r\n originX: x,\r\n originY,\r\n overlayX: x,\r\n overlayY: !isInside ? overlayY : overlayY2,\r\n },\r\n ]);\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: strategy,\r\n hasBackdrop: false,\r\n panelClass: options.panelClass,\r\n });\r\n\r\n return this._overlay.create(config);\r\n }\r\n\r\n //! public actions\r\n dismissCurrent(withAction?: boolean) {\r\n const sb = this._openedSnackbar;\r\n if (!sb) {\r\n console.warn(new Error(`ARD-WA7020: trying to dismiss the current snackbar, but no snackbar is currently opened.`));\r\n return;\r\n }\r\n\r\n sb.markAsStartingToClose();\r\n\r\n setTimeout(() => {\r\n sb.overlay?.dispose();\r\n this._openedSnackbar = undefined;\r\n sb.publicRef.markAsClosed(withAction);\r\n clearTimeout(sb.timeout);\r\n\r\n this._openNext();\r\n }, this._animationLength);\r\n }\r\n\r\n //! public queue methods\r\n getQueue(): ArdSnackbarRef<unknown>[] {\r\n return this._snackbarQueue.toArray().map(v => v.publicRef);\r\n }\r\n clearQueue(): void {\r\n this._snackbarQueue.clear();\r\n }\r\n\r\n /**\r\n * @deprecated Internal implementation detail, do not use directly.\r\n */\r\n ngOnDestroy(): void {\r\n this._snackbarQueue.clear();\r\n this.dismissCurrent(false);\r\n }\r\n\r\n private _createInjector<T>(options: ArdSnackbarOptions, snackbarRef: ArdSnackbarRef<T>): Injector {\r\n return Injector.create({\r\n parent: this._injector,\r\n providers: [\r\n { provide: ArdSnackbarRef, useValue: snackbarRef },\r\n { provide: ARD_SNACKBAR_DATA, useValue: options.data },\r\n {\r\n provide: ARD_SNACKBAR_TYPE,\r\n useValue: options.type ?? ArdSnackbarType.None,\r\n },\r\n {\r\n provide: ARD_SNACKBAR_COLOR,\r\n useValue: options.color ?? (options.type !== ArdSnackbarType.None ? options.type : null) ?? ComponentColor.Secondary,\r\n },\r\n ],\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of Ardium UI\r\n */\r\nimport 'first-last';\r\n\r\n//! component group 0 - inputs and selects\r\nexport * from './lib/select'; // 000\r\nexport * from './lib/option'; // 001\r\nexport * from './lib/inputs/simple-input'; // 002\r\nexport * from './lib/inputs/input'; // 003\r\nexport * from './lib/inputs/digit-input'; // 004\r\nexport * from './lib/inputs/password-input'; // 005\r\n// export * from './lib/inputs/color-input'; // 006\r\nexport * from './lib/inputs/number-input'; // 007\r\nexport * from './lib/file-inputs/file-drop-area'; // 010\r\nexport * from './lib/file-inputs/file-input'; // 011\r\nexport * from './lib/inputs/hex-input'; // 016\r\n\r\n//! component group 1 - small forms-related components\r\nexport * from './lib/radio'; // 103\r\nexport * from './lib/segment'; // 104\r\nexport * from './lib/slider'; // 105 & 106\r\nexport * from './lib/star/star-button'; // 107\r\nexport * from './lib/star/star-input'; // 108\r\nexport * from './lib/statebox'; // 109\r\nexport * from './lib/slide-toggle';\r\nexport * from './lib/checkbox';\r\nexport * from './lib/buttons/general-button.types';\r\nexport * from './lib/buttons/button';\r\nexport * from './lib/buttons/fab';\r\nexport * from './lib/buttons/icon-button';\r\nexport * from './lib/chip';\r\n\r\n//! component group 2 - pickers\r\n// export * from './lib/calendar'; // 200 & (future: 201)\r\n// export * from './lib/color/color-picker'; // 202\r\n\r\n//! component group 3 - lists\r\nexport * from './lib/checkbox-list'; // 300\r\n\r\n//! component group 4 - state display components\r\nexport * from './lib/spinner'; // 400\r\nexport * from './lib/progress-bar'; // 401\r\nexport * from './lib/progress-circle'; // 402\r\nexport * from './lib/badge'; // 403\r\n\r\n//! component group 5 - data display components\r\nexport * from './lib/form-field-frame'; // 500\r\nexport * from './lib/dropdown-panel'; // 501\r\nexport * from './lib/color/color-display'; // 502\r\nexport * from './lib/kbd'; // 503\r\nexport * from './lib/kbd-shortcut'; // 504\r\nexport * from './lib/table'; // 505\r\nexport * from './lib/table-pagination'; // 506\r\nexport * from './lib/table-from-csv'; // 507\r\nexport * from './lib/star'; // 508\r\nexport * from './lib/star/star-display'; // 509\r\n\r\n//! component group 6 - layout components\r\nexport * from './lib/tabber'; // 600\r\nexport * from './lib/card';\r\nexport * from './lib/divider';\r\n\r\n//! component group 7 - popups\r\nexport * from './lib/modal'; // 700\r\nexport * from './lib/dialog'; // 701\r\nexport * from './lib/snackbar'; // 702\r\n\r\n//! component group 9 - other\r\nexport * from './lib/icon'; // 900\r\n\r\n//! types\r\nexport * from './lib/types/alignment.types';\r\nexport * from './lib/types/colors.types';\r\nexport * from './lib/types/theming.types';\r\nexport * from './lib/types/utility.types';\r\nexport * from './lib/types/item-storage.types';\r\n\r\n//! miscellaneous\r\nexport { searchInString, searchFunctions as ArdSearchFunction } from './lib/search-functions';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2._ClearButtonComponent","i2.ArdiumFormFieldFrameComponent","i3.ArdiumDropdownPanelComponent","i4.ArdiumDeletableChipComponent","i5","i6._ClearButtonComponent","i3.ArdiumFormFieldFrameComponent","i1","i2","i4._ClearButtonComponent","i5.ArdiumDropdownPanelComponent","i6","i1.ArdiumIconPipe","i3.ArdiumIconComponent","i3.ArdiumButtonComponent","i2.ArdiumButtonComponent","i3._ClearButtonComponent","i4.ArdiumIconComponent","i2.ArdiumStarComponent","i2.ArdiumStarButtonComponent","i2.ArdiumCheckboxComponent","i2.ArdiumKbdPipe","i2.ArdiumKbdComponent","i2.ArdiumSelectComponent","i3.ArdiumIconButtonComponent","i3.ArdiumTablePaginationComponent","i1.ArdiumTableComponent","i2.ArdiumIconButtonComponent","i4","i3.ArdiumModalComponent","i1.ArdiumButtonComponent","i2.ArdiumIconComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAa,MAAA,sBAAsB,GAAG;AACpC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,gBAAgB,GAAG;AAC9B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;;;ACThB;;;;AAIG;AACU,MAAA,cAAc,GAAG;AAC5B;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;AACZ;;AAEG;AACH,IAAA,OAAO,EAAE,SAAS;AAClB;;AAEG;AACH,IAAA,SAAS,EAAE,WAAW;AACtB;;AAEG;AACH,IAAA,OAAO,EAAE,MAAM;AACf;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;AAChB;;AAEG;AACH,IAAA,OAAO,EAAE,SAAS;AAClB;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;EACH;AAGE,MAAA,oBAAoB,GAAG;AAClC,IAAA,GAAG,cAAc;AACjB;;AAEG;AACH,IAAA,YAAY,EAAE,cAAc;;;AC1C9B;AACa,MAAA,kBAAkB,GAAG;AAChC;;AAEG;AACH,IAAA,QAAQ,EAAE,UAAU;EACX;AAGE,MAAA,eAAe,GAAG;AAC7B;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;EACP;AAGE,MAAA,qBAAqB,GAAG;AACnC,IAAA,GAAG,kBAAkB;AACrB;;AAEG;AACH,IAAA,WAAW,EAAE,aAAa;AAC1B;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;EACP;AAGE,MAAA,2BAA2B,GAAG;AACzC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,MAAM,EAAE,QAAQ;EACP;AAGX;AACa,MAAA,YAAY,GAAG;AAC1B;;AAEG;AACH,IAAA,OAAO,EAAE,SAAS;AAClB;;AAEG;AACH,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,kBAAkB,GAAG;AAChC,IAAA,GAAG,YAAY;AACf;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;;;MCnDQ,wBAAwB,CAAA;AAD9C,IAAA,WAAA,GAAA;;AAGE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE7F;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAgB5C,KAAA;IAfC,IACI,SAAS,CAAC,CAAM,EAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AAED,IAAA,IAEI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;AACD,IAAA,IAEI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;8GAzBmB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;8BAaJ,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,UAAU,CAAA;gBAOb,sBAAsB,EAAA,CAAA;sBAFzB,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,WAAW;uBAAC,oBAAoB,CAAA;gBAM7B,sBAAsB,EAAA,CAAA;sBAFzB,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,WAAW;uBAAC,oBAAoB,CAAA;;;ACZ7B,MAAO,mBAAoB,SAAQ,wBAAwB,CAAA;AAPjE,IAAA,WAAA,GAAA;;;AASW,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA8B,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA;AAC3C,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,KAAA;8GArBY,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,03BCdhC,yOASA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,iBAGL,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yOAAA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,CAAA;;;AEP3C,MAAgB,uBAAwB,SAAQ,wBAAwB,CAAA;AAD9E,IAAA,WAAA,GAAA;;;AAgCE;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACrE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAG3G;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D;;AAEG;QACM,IAAS,CAAA,SAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;;AAG3D;;AAEG;QACI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAkB1B,KAAA;AAhEC;;AAEG;IACI,KAAK,GAAA;QACV,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;KACtD;AACD;;AAEG;IACI,UAAU,GAAA;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AACD;;AAEG;IACI,SAAS,GAAA;QACd,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;KACrD;AACD;;AAEG;IACI,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;KAChE;AAyBD;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AACD;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAiB,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;8GApEmB,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;8BAIS,iBAAiB,EAAA,CAAA;sBADjC,YAAY;uBAAC,kBAAkB,CAAA;;;ACHlC;;;;AAIG;AAEG,MAAgB,qBAAsB,SAAQ,uBAAuB,CAAA;AAIzE;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;KAChC;AACD;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;KAC/B;AACD;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KAC/B;;AAiBQ,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC;KAC/B;8GA5CmB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C,SAAS;;;ACJV;;AAEG;AAEG,MAAgB,qBAAsB,SAAQ,qBAAqB,CAAA;AADzE,IAAA,WAAA,GAAA;;;AAqBE;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzD;;AAEG;QACM,IAAa,CAAA,aAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAC7D;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,MAAM,CAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;;;AAInD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAa3C;;AAEG;QACM,IAAc,CAAA,cAAA,GAAG,MAAM,EAAW,CAAC;AAwB7C,KAAA;;AAzEC,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACpB;;AAED;;AAEG;IACO,WAAW,GAAA;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAC5C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACxC;AAmBD;;AAEG;IACH,IACI,SAAS,CAAC,CAAM,EAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AACD,IAAA,IAEI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;AAMD;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AACD;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;8GA1EmB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C,SAAS;8BAyCJ,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,UAAU,CAAA;gBAMb,sBAAsB,EAAA,CAAA;sBAFzB,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,WAAW;uBAAC,oBAAoB,CAAA;;;AC/B7B,MAAO,6BAA8B,SAAQ,qBAAqB,CAAA;AAdxE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,SAAS,EAAE,QAAQ;SACpB,CAAC;QAEO,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAG7F,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA8B,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA;AAC3C,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,KAAA;8GA5BY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAR7B,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBH,+iBAoBA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAdzC,SAAS;+BACE,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,+iBAAA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,CAAA;;;AEZG,MAAO,qBAAsB,SAAQ,uBAAuB,CAAA;8GAArD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+ECRlC,oTAaA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDLa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,oTAAA,EAAA,CAAA;;;AEkBxB,MAAO,4BAA6B,SAAQ,uBAAuB,CAAA;AAdzE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,iBAAiB,EAAE,QAAQ;SAC5B,CAAC;QAEO,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;;AAGnE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA8B,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA;AAC3C,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;QAGO,IAAW,CAAA,WAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChE,KAAA;8GA9BY,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAR5B,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBH,wZAcA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;+BACE,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC3D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wZAAA,EAAA,MAAA,EAAA,CAAA,2QAAA,CAAA,EAAA,CAAA;;;MEXU,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCIY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAJZ,YAAA,EAAA,CAAA,mBAAmB,EAAE,6BAA6B,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CACrF,YAAY,EAAE,kBAAkB,CAChC,EAAA,OAAA,EAAA,CAAA,mBAAmB,EAAE,6BAA6B,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAE/E,gBAAgB,EAAA,OAAA,EAAA,CAHjB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG/B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,4BAA4B,CAAC;AAChG,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,4BAA4B,CAAC;AAC5F,iBAAA,CAAA;;;ACTY,MAAA,uBAAuB,GAAG;AACrC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,MAAM,EAAE,QAAQ;EACP;AAGE,MAAA,oBAAoB,GAAG;AAClC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,cAAc,EAAE,qBAAqB;;;MCe1B,4BAA4B,CAAA;AAVzC,IAAA,WAAA,GAAA;AAWmB,QAAA,IAAA,CAAA,iBAAiB,GAAG,SAAS,CAA0B,QAAQ,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,aAAa,CAAC,CAAC;;QAG5E,IAAO,CAAA,OAAA,GAAG,KAAK,EAAU,CAAC;AAC1B,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA0B,IAAI,CAAC,CAAC;QACtD,IAAW,CAAA,WAAA,GAAG,KAAK,EAAoB,CAAC;;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA0B,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAC5E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAEpE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA,EAAE,eAAe,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACxH,CAAC;;AAGO,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAW,CAAC;;QAGnC,IAAW,CAAA,WAAA,GAAG,MAAM,CAG1B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACf,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QA8DrD,IAAyB,CAAA,yBAAA,GAA2B,IAAI,CAAC;AA4BlE,KAAA;;IAvFC,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAEtC,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE;AAC1C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SAC9B;KACF;;IAGD,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,yBAAyB;YAAE,OAAO;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAc,gCAAgC,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAC/D;AAED,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;KACvC;;AAGD,IAAA,IAAY,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;KACzC;IACD,IAAY,UAAU,CAAC,KAAa,EAAA;AAClC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAChB,QAAA,EAAE,CAAC,SAAS,GAAG,KAAK,CAAC;KACtB;AACD,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;KAClF;;AAGO,IAAA,gBAAgB,CAAC,EAAe,EAAE,OAAA,GAA2B,QAAQ,EAAA;AAC3E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAE/C,QAAQ,OAAO;AACb,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;gBAC3D,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;gBACjE,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,GAAG,iBAAiB,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrH,MAAM;SACT;KACF;AAGD,IAAA,2BAA2B,CAAC,SAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;KAC5C;AACO,IAAA,gBAAgB,CAAC,EAAe,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;QAE3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAC/C,QAAA,OAAO,WAAW,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;KACjG;AACO,IAAA,eAAe,CAAC,EAAe,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAC1C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,OAAO,CAAC;AAErD,QAAA,OAAO,IAAI,OAAO,CAChB,MAAM,CAAC,CAAC,GAAG,QAAQ,EACnB,MAAM,CAAC,CAAC,GAAG,OAAO,EAClB,MAAM,CAAC,KAAK,GAAG,QAAQ,GAAG,SAAS,EACnC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,UAAU,CACrC,CAAC;KACH;8GArHU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,22CC1BzC,6zBA+BA,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDLa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;+BACE,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA,EAAA,QAAA,EAAA,6zBAAA,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,CAAA;;;MEfU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAJrB,YAAA,EAAA,CAAA,4BAA4B,CACjC,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAH1B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;oBAC5C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,iBAAA,CAAA;;;MC6BY,WAAW,CAAA;AAStB,IAAA,WAAA,CAA6B,cAA+B,EAAA;QAA/B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAiB;QAR3C,IAAO,CAAA,OAAA,GAAG,MAAM,CAAkB,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAsB,SAAS,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAc,EAAE,CAAC,CAAC;AAIjD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;aACjC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC;AACzB,aAAA,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAC5C,CAAC;AACO,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AAEvD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAE;AAC5C,gBAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;oBACzC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC/B,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;QACM,IAAgB,CAAA,gBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE3F,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAKjE,IAAiB,CAAA,iBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;AAC1F,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAkB,CAAA,kBAAA,GAAG,QAAQ,CACpC,MACE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;AACrC,YAAA,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CACzE,CAAC;AA+Me,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAM,SAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;KAnPD;AAsBxD,IAAA,aAAa,CAAC,KAAkB,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACxC;AAaD,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,EAAE;YACrF,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,YAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACzB,gBAAA,IAAI,QAAe,CAAC;gBACpB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;AACxE,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;aAC5B;YACD,KAAK,GAAG,QAAQ,CAAC;SAClB;AACD,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7C,iBAAiB,GAAG,IAAI,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;SAC5D,CAAC,CACH,CAAC;;QAGF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;;QAGvC,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnD,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;SAChC;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AACO,IAAA,cAAc,CAAC,IAAS,EAAA;AAC9B,QAAA,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;;QAE1C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACxC;;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;;AAGvG,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;;QAG3C,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,OAAO,SAAS,CAAC;KAClB;AACO,IAAA,oBAAoB,CAAI,IAAO,EAAA;AACrC,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACxB;AACO,IAAA,2BAA2B,CAAmB,KAAQ,EAAA;;AAE5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;;AAGpG,QAAA,IAAI,SAAc,CAAC;AACnB,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACzC;aAAM;AACL,YAAA,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;SAC5B;;AAGD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;;QAGrG,IAAI,UAAU,GAAQ,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;;QAGvD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;QAGxE,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YAChC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACxD;;QAED,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACxC,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;KACxC;AACO,IAAA,cAAc,CAAC,WAAgB,EAAE,KAAa,EAAE,iBAA0B,EAAA;QAChF,IAAI,iBAAiB,EAAE;YACrB,OAAO;AACL,gBAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;AAChC,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3E,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,gBAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;AAC1B,gBAAA,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;AACxB,gBAAA,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC;aACpC,CAAC;SACH;;QAED,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;QAGlD,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC;;AAG3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrG,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE;YACxC,QAAQ,GAAG,CAAC,QAAQ,CAAC;SACtB;;QAGD,IAAI,KAAK,GAAQ,SAAS,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QACrD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,WAAW,CAAC,SAAS,EAAE;AACzB,gBAAA,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;aAC/B;iBAAM;AACL,gBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,oBAAA,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;iBAC3C;qBAAM;AACL,oBAAA,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;iBAC9B;aACF;SACF;;QAGD,OAAO;AACL,YAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC1B,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,YAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC;SACpC,CAAC;KACH;IACO,eAAe,GAAA;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAEpE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACxB;KACF;AACO,IAAA,WAAW,CAAC,IAAe,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;QAEjD,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAG;AACtB,gBAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,gBAAA,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAChB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACrC,oBAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,oBAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;AAC3B,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,GAAG,CAAC;AACb,aAAC,CAAC,CAAC;YACH,OAAO;SACR;AACD,QAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KAChD;IACO,oBAAoB,GAAA;QAC1B,OAAO,IAAI,GAAG,CAAC;AACb,YAAA;gBACE,SAAS;AACT,gBAAA;AACE,oBAAA,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AACjB,oBAAA,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;AACpB,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,oBAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA,CAAoB,CAAC;KACvB;AACO,IAAA,kBAAkB,CAAC,OAAc,EAAA;AACvC,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,IAAG;YAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE;AACpG,gBAAA,OAAO,CAAC,IAAI,CACV,SAAS,IAAI,CAAC,cAAc,CAAC,YAAY,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAC1E,IAAI,CACL,CAAA,6EAAA,CAA+E,CACjF,CAAC;AACF,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;AAGD,IAAA,gBAAgB,CAAC,OAAc,EAAA;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;YACrC,OAAO;SACR;AAED,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAU,KAAI;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO;aACR;YACD,OAAO,CAAC,IAAI,CACV,CAAA,MAAA,EAAS,IAAI,CAAC,cAAc,CAAC,YAAY,CAAuC,oCAAA,EAAA,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAG,CAAA,CAAA,CACxH,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;YAChC,iBAAiB,CAAC,UAAU,CAAC,CAAC;SAC/B;KACF;AACD,IAAA,eAAe,CAAC,WAAgB,EAAA;AAC9B,QAAA,IAAI,MAAoC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE;AACrC,YAAA,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9E;aAAM;YACL,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;SAC7C;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KACjD;AACD,IAAA,MAAM,eAAe,CAAC,KAAa,EAAE,EAAgD,EAAA;AACnF,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAE3B,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,IAAI,SAAS,CAAC,WAAW,CAAC;YAAE,WAAW,GAAG,MAAM,WAAW,CAAC;QAE5D,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAEtD,QAAA,OAAO,YAAY,CAAC;KACrB;IAED,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,EAAA;QACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAI,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAEnF,QAAA,OAAO,iBAAiB,CAAC;KAC1B;IACD,iBAAiB,GAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;IACD,UAAU,CAAC,GAAG,KAAkB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,YAAA,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE;AAC1C,YAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SAC3C;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,kBAAkB,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAC9B,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,MAAM;aACP;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9C,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAChE,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;KACjG;IACD,YAAY,CAAC,GAAG,KAAkB,EAAA;AAChC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE7D,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAClC;IAED,kBAAkB,GAAA;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7C,YAAA,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC9B;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KACjC;AACD,IAAA,cAAc,CAAC,KAAqB,EAAA;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;KACjC;AACD,IAAA,mBAAmB,CAAC,IAAe,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;QAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,aAAa,CAAC,GAAG,KAAkB,EAAA;AACjC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;IACD,eAAe,CAAC,GAAG,KAAkB,EAAA;AACnC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAO;AAEvC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KACpE;IACD,kBAAkB,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;KAC3D;IACD,iBAAiB,GAAA;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;KAC1D;IACO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE;AACtC,YAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtE;AACD,QAAA,OAAO,gBAAgB,CAAC;KACzB;IACD,iBAAiB,GAAA;QACf,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;KACrD;IACO,yBAAyB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;YACnC,IAAI,CAAC,wBAAwB,EAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAClE;KACF;AACD,IAAA,sBAAsB,CAAC,IAAe,EAAA;QACpC,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACzC;IACD,iBAAiB,CAAC,MAAc,EAAE,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC;AACnD,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAE1G,QAAA,IAAI,aAAa,GAAG,sBAAsB,GAAG,MAAM,CAAC;AACpD,QAAA,IAAI,aAAa,IAAI,kBAAkB,CAAC,MAAM,EAAE;AAC9C,YAAA,aAAa,IAAI,kBAAkB,CAAC,MAAM,CAAC;SAC5C;AACD,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,aAAa,IAAI,kBAAkB,CAAC,MAAM,CAAC;SAC5C;AACD,QAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAE1D,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE;AACrD,YAAA,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAClD;AACD,IAAA,MAAM,CAAC,UAAkB,EAAA;QACvB,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,EAAE;AAC9C,YAAA,UAAU,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SAC7C;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE1C,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;;YAC/C,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE/B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;KAC7C;IACD,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAEhF,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAClE,YAAA,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtE;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,OAAO,gBAAgB,CAAC;KACzB;AACF;;MChfY,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;AAOmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC;AAErD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAM,SAAS,CAAC,CAAC;AAE9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAU,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,CAAC,CAAC;AAEvE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAM3C,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGpF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAK/B,CAAC;AAgCN,KAAA;AA5CC,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;KAC/E;AAcD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY;AAC3C,aAAA,CAAC,CAAC;SACJ;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE;AACxC,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAAE,gBAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AAE5D,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEnC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACnB,QAAQ;AACR,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,aAAA,CAAC,CAAC;SACJ;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;8GApDU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ocAJtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAI1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;ACpBe,SAAA,cAAc,CAAC,UAAkB,EAAE,QAAa,EAAA;IAC9D,IAAI,QAAQ,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK,CAAC;AACzC,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AACY,MAAA,eAAe,GAOxB;AACF;;;;;AAKG;AACH,IAAA,OAAO,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;QAC/C,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjD;AACD;;;;;AAKG;AACH,IAAA,OAAO,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;QAC/C,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjD;AACD;;;;;AAKG;AACH,IAAA,OAAO,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;QAC/C,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjD;AACD;;;;;AAKG;AACH,IAAA,eAAe,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;AACvD,QAAA,QACE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EACzH;KACH;AACD;;;;;AAKG;AACH,IAAA,eAAe,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;AACvD,QAAA,OAAO,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAC/F;AACD;;;;;AAKG;AACH,IAAA,uBAAuB,EAAE,CAAC,UAAkB,EAAE,IAAe,KAAI;QAC/D,QACE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AACzC,aAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC5E,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EACzC;KACH;;;ACqBU,MAAA,gBAAgB,GAAG;AAC9B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;;;ACrFd;MAGa,gCAAgC,CAAA;AAC3C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,0CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,CAAA;;MAMtD,gCAAgC,CAAA;AAC3C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,0CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,CAAA;;MAMtD,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,QAAmC,EAAA;QAAnC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA2B;KAAI;8GAD/C,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,yCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,CAAA;;MAMrD,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAmB,QAAmC,EAAA;QAAnC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA2B;KAAI;8GAD/C,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,SAAS;mBAAC,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;;MAM1D,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAmB,QAA+C,EAAA;QAA/C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAuC;KAAI;8GAD3D,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,0CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;mBAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,CAAA;;MAMtD,4BAA4B,CAAA;AACvC,IAAA,WAAA,CAAmB,QAAmC,EAAA;QAAnC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA2B;KAAI;8GAD/C,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,4CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,QAAQ,EAAE,4CAA4C,EAAE,CAAA;;MAMxD,qCAAqC,CAAA;AAChD,IAAA,WAAA,CAAmB,QAAyC,EAAA;QAAzC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiC;KAAI;8GADrD,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArC,qCAAqC,EAAA,QAAA,EAAA,+CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD,SAAS;mBAAC,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAA;;MAM3D,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAmB,QAA2B,EAAA;QAA3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;KAAI;8GADvC,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAA;;MAQ/D,sCAAsC,CAAA;AACjD,IAAA,WAAA,CAAmB,QAAoC,EAAA;QAApC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;KAAI;8GADhD,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtC,sCAAsC,EAAA,QAAA,EAAA,uDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAHlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uDAAuD;AAClE,iBAAA,CAAA;;MAMY,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAmB,QAAoC,EAAA;QAApC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;KAAI;8GADhD,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAA;;MAM/D,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAmB,QAAoC,EAAA;QAApC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;KAAI;8GADhD,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAA;;MAM/D,gCAAgC,CAAA;AAC3C,IAAA,WAAA,CAAmB,QAAoC,EAAA;QAApC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA4B;KAAI;8GADhD,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;MAM9D,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAmB,QAA0C,EAAA;QAA1C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkC;KAAI;8GADtD,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7B,6BAA6B,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,SAAS;mBAAC,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;;MAM1D,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAAuC,EAAA;QAAvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA+B;KAAI;8GADnD,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,sDAAsD,EAAE,CAAA;;MAMlE,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAA8C,EAAA;QAA9C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsC;KAAI;8GAD1D,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,sDAAsD,EAAE,CAAA;;;MCnFlE,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,oDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAA;;MAMhE,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,oDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAA;;;ACgBvE,MAAO,6BAA8B,SAAQ,uBAAuB,CAAA;AAP1E,IAAA,WAAA,GAAA;;;QASoB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;AAGpC;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACnF;;AAEG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAEzE;;AAEG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;YAC/B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,SAAS,GAAG,aAAa,GAAG,eAAe;AACjD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;QAGO,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAA6B,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAChG,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAA6B,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAChG,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,mCAAmC,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,mCAAmC,CAAC,CAAC;AAC7E,KAAA;8GAjCY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EA+BD,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,EACnC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,uFCvD5E,uuBAmBA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,iBAGjB,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uuBAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,CAAA;8BAI7B,SAAS,EAAA,CAAA;sBAA1B,KAAK;;;AEgEF,MAAO,qBACX,SAAQ,qBAAqB,CAAA;AAf/B,IAAA,WAAA,GAAA;;QAkBW,IAAY,CAAA,YAAA,GAAW,KAAK,CAAC;;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,YAAY,EAAE,UAAU;AACxB,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,iBAAiB,EAAE,UAAU;AAC7B,YAAA,YAAY,EAAE,UAAU;YACxB,QAAQ,EAAE,eAAe,CAAC,OAAO;AACjC,YAAA,gBAAgB,EAAE,OAAO;AACzB,YAAA,gBAAgB,EAAE,iBAAiB;AACnC,YAAA,sBAAsB,EAAE,YAAY;SACrC,CAAC;;QAGM,IAAM,CAAA,MAAA,GAAiB,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;QACzC,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;;;AAIhB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;;AAElD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA+B,SAAS,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;;AAElD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,aAAa,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAS,WAAW,CAAC,CAAC;QAC/C,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;;QAElE,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;;AAE7E,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;QAC5C,IAAM,CAAA,MAAA,GAAG,KAAK,CAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAI/F,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1F,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/F,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGjG,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAc,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvG,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAc,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;;QAGvG,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;;AAGnD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAEhE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;;YAEE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,eAAe,EAAE,GAAG,iBAAiB,GAAG,kBAAkB;YAC/D,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,EAAE;YACvC,IAAI,CAAC,UAAU,EAAE,GAAG,gBAAgB,GAAG,EAAE;YACzC,IAAI,CAAC,QAAQ,EAAE,GAAG,cAAc,GAAG,EAAE;YACrC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE,GAAG,mBAAmB,GAAG,EAAE;YACxC,IAAI,CAAC,iBAAiB,EAAE,GAAG,oBAAoB,GAAG,EAAE;YACpD,IAAI,CAAC,iBAAiB,EAAE,GAAG,oBAAoB,GAAG,EAAE;AACrD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AAEO,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAoC,SAAS,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAAC,MAAK;YACnD,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAG,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,qBAAqB,CAAC,QAAQ;gBAAE,OAAO,uBAAuB,CAAC,QAAQ,CAAC;YAClG,OAAO,uBAAuB,CAAC,MAAM,CAAC;AACxC,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiC,SAAS,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;YAChD,IAAI,IAAI,CAAC,eAAe,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAG,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,YAAA,IAAI,OAAO,KAAK,kBAAkB,CAAC,IAAI;gBAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;AAC7E,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC,CAAC;;AAoEM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3F,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAU,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAElF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;AAGlC,QAAA,IAAA,CAAA,mBAAmB,GAAqB,CAAC,KAAa,KAAK,KAAK,CAAC;AAEhE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAGxB,KAAK,EAAE;YACP,SAAS,EAAE,CAAC,IAAG;AACb,gBAAA,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;AACjB,oBAAA,OAAO,CAAC,CAAC;iBACV;;;gBAGD,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC;aAC7D;AACF,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CACtG,CAAC;QA8CO,IAAW,CAAA,WAAA,GAAG,MAAM,EAAS,CAAC;;QAG9B,IAAW,CAAA,WAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3D,IAAW,CAAA,WAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9C,IAAS,CAAA,SAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAU,CAAA,UAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9C,IAAW,CAAA,WAAA,GAAG,MAAM,CAG1B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACf,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QACpD,IAAW,CAAA,WAAA,GAAG,MAAM,CAG1B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEf,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;AAG/B,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,aAAa,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAA+B,4BAA4B,CAAC,CAAC;;AAGtF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,qCAAqC,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAC,sCAAsC,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AACtE,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,6BAA6B,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,wBAAwB,GAAG,YAAY,CAAC,oCAAoC,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,wBAAwB,GAAG,YAAY,CAAC,oCAAoC,CAAC,CAAC;AAE9E,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAahE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CACjC,OAAqB;AACnB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC,CACH,CAAC;AACO,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAClC,OAAsB;AACpB,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC,CACH,CAAC;AACO,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAyB;AACjE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACxD,OAAO;gBACL,WAAW;AACX,gBAAA,SAAS,EAAE,WAAW;aACvB,CAAC;AACJ,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CACxC,OAA4B;AAC1B,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC,CACH,CAAC;AAgBO,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CACrC,OAAyB;AACvB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM;AACtD,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACnC,SAAA,CAAC,CACH,CAAC;AACO,QAAA,IAAA,CAAA,0BAA0B,GAAG,QAAQ,CAAC,MAA8B;YAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;YAC9D,OAAO;AACL,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC7B,aAAa;AACb,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE;gBAClC,aAAa,EAAE,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;aAC9D,CAAC;AACJ,SAAC,CAAC,CAAC;AAEc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;;AAwH3D,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAwB,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3G,IAAwB,CAAA,wBAAA,GAAG,QAAQ,CAAU,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChH,IAAkB,CAAA,kBAAA,GAAG,QAAQ,CACpC,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAC7F,CAAC;AACO,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CACjH,CAAC;AACO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAmC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QACtG,IAAsB,CAAA,sBAAA,GAAG,QAAQ,CACxC,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAC5F,CAAC;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;QACrE,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAqB,MACjD,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,SAAS,CACxE,CAAC;QACO,IAA0B,CAAA,0BAAA,GAAG,QAAQ,CAC5C,MACE,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CACpE,CAAC;QACO,IAAsB,CAAA,sBAAA,GAAG,QAAQ,CACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CACzF,CAAC;AAKO,QAAA,IAAA,CAAA,4BAA4B,GAAG,QAAQ,CAAS,MAAK;YAC5D,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxG,gBAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAClC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;;AAsGc,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AA2Q5D,KAAA;AAzwBC,IAAA,IACI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;KAC9B;;AAGD,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,KAAK,GAAG,EAAE,CAAC;AACX,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;AAAM,aAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAKO,uBAAuB,GAAA;QAC7B,MAAM,kBAAkB,GAAG,MAAK;AAC9B,YAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/D,iBAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;iBACnC,SAAS,CAAC,MAAM,IAAG;gBAClB,UAAU,CAAC,MAAK;AACd,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/E,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;4BAChB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;4BACnC,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,yBAAA,CAAC,CAAC;qBACJ;oBACD,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB,EAAE,CAAC,CAAC,CAAC;AACR,aAAC,CAAC,CAAC;AACP,SAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAC1B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjE,aAAA,SAAS,CAAC,CAAC,OAAyC,KAAI;AACvD,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACjC,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;oBAClC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,iBAAA,CAAC,CAAC,CAAC;AACJ,gBAAA,kBAAkB,EAAE,CAAC;gBACrB,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB,EAAE,CAAC,CAAC,CAAC;AACR,SAAC,CAAC,CAAC;KACN;IA+BD,MAAM,eAAe,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAEhB,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;KAC/B;;;AAIQ,IAAA,gBAAgB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AACD,IAAA,UAAU,CAAC,OAAc,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;IAES,WAAW,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IACO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC;KAC/B;;IAGD,IACI,KAAK,CAAC,QAAa,EAAA;;QAErB,IAAI,WAAW,CAAC,QAAQ,CAAC;AAAE,YAAA,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;;AAE/D,aAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAAE,YAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC3B;AACD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;;AA6CD,IAAA,eAAe,CAAC,IAAe,EAAA;QAC7B,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACzB;SACF,CAAC;KACH;AA4BD,IAAA,eAAe,CAAC,KAAqB,EAAA;QACnC,OAAO;AACL,YAAA,SAAS,EAAE,KAAK;YAChB,KAAK;AACL,YAAA,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM;AACnE,YAAA,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;SACvC,CAAC;KACH;AACD,IAAA,gBAAgB,CAAC,IAAe,EAAA;QAC9B,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC;KACH;IAgCO,cAAc,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO;AAC1B,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AAChB,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/C,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEnD,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACO,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;AAElC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAElC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACxD;IAGD,cAAc,GAAA;QACZ,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IACD,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;IACD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;AACD,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAEhC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;gBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;SACF;KACF;IACO,YAAY,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACO,uBAAuB,GAAA;AAC7B,QAAA,SAAS,WAAW,CAAC,GAAW,EAAE,SAAiB,EAAA;YACjD,OAAO,CAAC,IAAI,CACV,CAAA,SAAA,EAAY,SAAS,CAAoB,iBAAA,EAAA,GAAG,CAAgF,8EAAA,CAAA,CAC7H,CAAC;SACH;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAChC;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAChC;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SACnC;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SACrC;AACD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,YAAA,WAAW,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SACnC;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SACrC;KACF;AA6BD,IAAA,yBAAyB,CAAC,CAAS,EAAA;AACjC,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACvG;;AAQD,IAAA,MAAM,CAAC,UAAkB,EAAE,mBAAmB,GAAG,KAAK,EAAA;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,mBAAmB;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClC;IACD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO;QAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACnC;;AAED,IAAA,UAAU,CAAC,IAAe,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;IACD,UAAU,CAAC,GAAG,KAAkB,EAAA;AAC9B,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;AAErF,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;AACD,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE3D,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE;gBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;AACD,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IACD,YAAY,CAAC,GAAG,KAAkB,EAAA;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvD,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE;YAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;IACO,cAAc,GAAA;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACO,cAAc,GAAA;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC;QAElE,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClC;AACD,IAAA,gBAAgB,CAAC,KAAqB,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACxC;AACD,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACD,gBAAgB,CAAC,MAAiB,EAAE,KAAiB,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACD,gBAAgB,CAAC,MAAiB,EAAE,KAAiB,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAGD,WAAW,CAAC,MAAiB,EAAE,KAAiB,EAAA;QAC9C,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AACD,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO;AAC7D,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;YAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvC,OAAO;SACR;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AACD,IAAA,sBAAsB,CAAC,KAAiB,EAAA;QACtC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AACD,IAAA,wBAAwB,CAAC,KAAiB,EAAA;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AACD,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;AAC3B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;QAE3D,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AACD,IAAA,mBAAmB,CAAC,KAAiB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;AAC3C,QAAA,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;YAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;aAAM;YACL,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAClC;;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;SACR;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IACD,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;AAE7C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAErE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;AAE3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAE,IAAI,CAAC,GAAW,CAAC,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B;KACF;;IAEO,YAAY,CAAC,mBAAmB,GAAG,KAAK,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;KAC1C;AACO,IAAA,UAAU,CAAC,UAAkB,EAAE,mBAAmB,GAAG,KAAK,EAAA;AAChE,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;KAC9C;IACO,yBAAyB,GAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC;AAChD,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;YACnB,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACzC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1C;KACF;;AAID,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO;aACR;YACD,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO;aACR;YACD,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO;aACR;YACD,KAAK,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO;aACR;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO;aACR;YACD,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,OAAO;aACR;AACD,YAAA,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,OAAO;iBACR;aACF;SACF;KACF;IACO,MAAM,aAAa,CAAC,KAAoB,EAAA;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,WAAW,GAAG,IAAI,CAAC;;QAGvB,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACxF,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;aAC3D;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;aACzD;SACF;;aAEI,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACpD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC/C;;;YAEI,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM;YACL,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;AACO,IAAA,aAAa,CAAC,KAAoB,EAAA;QACxC,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAE1B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AACO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;AAEZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAElC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnF,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,aAAa,EAAE,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;KAC7D;AACO,IAAA,eAAe,CAAC,KAAoB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAElC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnF,IAAI,mBAAmB,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,aAAa,EAAE,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;KAC1D;AACO,IAAA,YAAY,CAAC,KAAoB,EAAA;AACvC,QAAA,IACE,CAAC,IAAI,CAAC,MAAM,EAAE;aACb,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,CAAC,CAAC;YAEhH,OAAO;QACT,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,mBAAmB;YAAE,OAAO;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,EAAE,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;KAC1D;AACO,IAAA,WAAW,CAAC,KAAoB,EAAA;AACtC,QAAA,IACE,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,aAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;AAC1E,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;YAEhF,OAAO;QACT,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,mBAAmB;YAAE,OAAO;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,EAAE,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;KAC7D;AACO,IAAA,yBAAyB,CAAC,KAAoB,EAAA;QACpD,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;YAAE,OAAO;QAEvH,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACzE,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;KACtC;8GA53BU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EARrB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2RsC,0BAA0B,EACxB,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,4BAA4B,EAC/B,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,sGACnB,qCAAqC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAClC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC9B,sCAAsC,EAC1C,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,EAClC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,uGACpC,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnC,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACtB,oCAAoC,EACpC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,oCAAoC,EAE9C,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,gCAAgC,iGAChC,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EA3JtD,qBAAqB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0I2B,4BAA4B,EAgG1D,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAEN,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,yECjdpD,kqSA8PA,EAAA,MAAA,EAAA,CAAA,q2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDrKa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACE,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,kqSAAA,EAAA,MAAA,EAAA,CAAA,q2BAAA,CAAA,EAAA,CAAA;8BAuHG,wBAAwB,EAAA,CAAA;sBAD3B,WAAW;uBAAC,uBAAuB,CAAA;gBAOhC,KAAK,EAAA,CAAA;sBADR,KAAK;gBAmBN,gBAAgB,EAAA,CAAA;sBADf,eAAe;uBAAC,qBAAqB,CAAA;gBAuGlC,KAAK,EAAA,CAAA;sBADR,KAAK;gBAqIN,YAAY,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAG/C,gBAAgB,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAmDpD,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;gBAmQ7B,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,CAAA;gBAkEvB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME5zBxB,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,EAJtB,YAAA,EAAA,CAAA,6BAA6B,EAAE,mCAAmC,EAAE,mCAAmC,CAC5G,EAAA,OAAA,EAAA,CAAA,YAAY,CACZ,EAAA,OAAA,EAAA,CAAA,6BAA6B,EAAE,mCAAmC,EAAE,mCAAmC,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,mCAAmC,EAAE,mCAAmC,CAAC;oBACvH,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,mCAAmC,EAAE,mCAAmC,CAAC;AACnH,iBAAA,CAAA;;;MCqEY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBA/C3B,qBAAqB;;YAErB,0BAA0B;YAC1B,4BAA4B;YAC5B,yBAAyB;YACzB,qCAAqC;YACrC,kCAAkC;YAClC,sCAAsC;YACtC,kCAAkC;YAClC,kCAAkC;YAClC,gCAAgC;YAChC,6BAA6B;YAC7B,oCAAoC;YACpC,oCAAoC;YACpC,6BAA6B;YAC7B,gCAAgC;AAChC,YAAA,gCAAgC,aAGhC,YAAY;YACZ,0BAA0B;YAC1B,yBAAyB;YACzB,gBAAgB;YAChB,6BAA6B;YAC7B,kBAAkB;AAClB,YAAA,qBAAqB,aAGrB,qBAAqB;;YAErB,0BAA0B;YAC1B,4BAA4B;YAC5B,yBAAyB;YACzB,qCAAqC;YACrC,kCAAkC;YAClC,sCAAsC;YACtC,kCAAkC;YAClC,kCAAkC;YAClC,gCAAgC;YAChC,6BAA6B;YAC7B,oCAAoC;YACpC,oCAAoC;YACpC,6BAA6B;YAC7B,gCAAgC;YAChC,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA;AAGvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YA5B3B,YAAY;YACZ,0BAA0B;YAC1B,yBAAyB;YACzB,gBAAgB;YAChB,6BAA6B;YAC7B,kBAAkB;YAClB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAsBZ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjD9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;;wBAErB,0BAA0B;wBAC1B,4BAA4B;wBAC5B,yBAAyB;wBACzB,qCAAqC;wBACrC,kCAAkC;wBAClC,sCAAsC;wBACtC,kCAAkC;wBAClC,kCAAkC;wBAClC,gCAAgC;wBAChC,6BAA6B;wBAC7B,oCAAoC;wBACpC,oCAAoC;wBACpC,6BAA6B;wBAC7B,gCAAgC;wBAChC,gCAAgC;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,0BAA0B;wBAC1B,yBAAyB;wBACzB,gBAAgB;wBAChB,6BAA6B;wBAC7B,kBAAkB;wBAClB,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;;wBAErB,0BAA0B;wBAC1B,4BAA4B;wBAC5B,yBAAyB;wBACzB,qCAAqC;wBACrC,kCAAkC;wBAClC,sCAAsC;wBACtC,kCAAkC;wBAClC,kCAAkC;wBAClC,gCAAgC;wBAChC,6BAA6B;wBAC7B,oCAAoC;wBACpC,oCAAoC;wBACpC,6BAA6B;wBAC7B,gCAAgC;wBAChC,gCAAgC;AACjC,qBAAA;AACF,iBAAA,CAAA;;;MCpEY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCCY,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CACS,KAAa,EACb,OAAA,GAAU,EAAE,EACZ,aAAa,CAAC,EAAA;QAFd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACb,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU,CAAI;KACnB;AAEJ,IAAA,KAAK,CAAC,WAAmB,EAAE,YAAoB,EAAE,QAAgB,EAAA;QAC/D,IAAI,IAAI,GAAG,WAAW,CAAC;AACvB,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;AAE7B,gBAAA,IAAI,YAAY,GAAG,GAAG,EAAE;oBACtB,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC,CAAC;oBACvH,MAAM;iBACP;;AAED,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,gBAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9C,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;;gBAEhC,QAAQ,GAAG,QAAQ,IAAI,WAAW,GAAG,YAAY,CAAC,CAAC;;AAEnD,gBAAA,YAAY,EAAE,CAAC;aAChB;SACF;AACD,QAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KAC3B;AACF,CAAA;AAED,MAAM,OAAO,GAAqB,CAAC,WAAmB,EAAE,YAAoB,EAAE,QAAgB,KAAI;IAChG,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC,CAAC;AACF,MAAM,OAAO,GAAqB,CAAC,WAAmB,EAAE,YAAoB,EAAE,QAAgB,KAAI;IAChG,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC,CAAC;AACF,MAAM,GAAG,GAAqB,CAAC,WAAmB,EAAE,YAAoB,EAAE,QAAgB,KAAI;AAC5F,IAAA,MAAM,OAAO,GAA+D,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3G,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC1C,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC;QACzC,GAAG,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;KACrG;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACF,MAAM,KAAK,GAAqB,CAAC,WAAmB,EAAE,YAAoB,EAAE,QAAgB,KAAI;AAC9F,IAAA,MAAM,OAAO,GAA+D;AAC1E,QAAA,CAAC,WAAW,CAAC;QACb,CAAC,GAAG,EAAE,GAAG,CAAC;QACV,CAAC,OAAO,EAAE,IAAI,CAAC;QACf,CAAC,UAAU,EAAE,KAAK,CAAC;QACnB,CAAC,SAAS,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC1C,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC;QACzC,GAAG,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;KACrG;AACD,IAAA,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AACK,MAAM,cAAc,GAAG;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,KAAK,EAAE,KAAK;CACJ;;MClEG,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAA+B,WAAiC,EAAA;QAAjC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;AAEvD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KAHE;AAKpE,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;AAEjC,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CACP,CAAA,yDAAA,EAA4D,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,CAA6B,2BAAA,CAAA,CACjH,CACF,CAAC;;YAEF,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC5B;AACS,IAAA,WAAW,CAAC,CAAgB,EAAA;;AAEpC,QAAA,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;;AAEpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;IACD,2BAA2B,GAAA;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,mBAAmB,GAAA;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACzD,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAChB,QAAA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KAC/B;AACD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAC9F;IACD,IAAI,QAAQ,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAC3E;;AAES,IAAA,uBAAuB,CAAC,CAAgB,EAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;AAAE,YAAA,OAAO,CAAC,CAAC;QAEpC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpB,QAAA,OAAO,CAAC,CAAC;KACV;AACF,CAAA;AAIK,MAAO,UAAW,SAAQ,gBAAgB,CAAA;AAC9C,IAAA,WAAA,CAAwC,WAA2B,EAAA;QACjE,KAAK,CAAC,WAAW,CAAC,CAAC;QADmB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;KAElE;AACkB,IAAA,WAAW,CAAC,CAAgB,EAAA;;QAE7C,IAAI,CAAC,EAAE;AACL,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9B,CAAC,GAAG,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnD,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1B,YAAA,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SACrC;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;AAE5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;IAGD,YAAY,CAAC,IAAmB,EAAE,EAAkB,EAAA;QAClD,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,QAAQ,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC3E;;IAES,gCAAgC,CAAC,CAAS,EAAE,IAAY,EAAA;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;MAQY,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAA+B,WAAiC,EAAA;QAAjC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;;AAG7C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;KAN3B;AAQpE,IAAA,QAAQ,CAAC,CAAyB,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC;AACrD,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAEhB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;;AAGD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;AAEjD,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CAAC,CAA4D,yDAAA,EAAA,OAAO,CAAC,CAAA,oCAAA,CAAsC,CAAC,CACtH,CAAC;;YAEF,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;AACD,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC5B;AACS,IAAA,WAAW,CAAC,CAAyB,EAAA;;QAE7C,IAAI,CAAC,EAAE;AACL,YAAA,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACjC,YAAA,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACnC,YAAA,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;SACrC;;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;IACD,2BAA2B,GAAA;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;;AAGD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;KAC5F;IACD,IAAI,QAAQ,CAAC,GAAW,EAAA;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC;AACrD,QAAA,EAAE,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACjC;;AAGO,IAAA,oBAAoB,CAAC,CAAyB,EAAA;AACpD,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,CAAC,CAAC;AAE5C,QAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AACrC,YAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACjB;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,OAAO,CAAC,CAAC;KACV;AACO,IAAA,sBAAsB,CAAC,CAAkB,EAAA;AAC/C,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;QAElB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC;QACpG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACb;AACO,IAAA,uBAAuB,CAAC,CAAS,EAAA;AACvC,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAElB,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AACpF,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;AACpF,QAAA,OAAO,CAAC,CAAC;KACV;AACF,CAAA;AAEK,SAAU,oBAAoB,CAAC,GAAW,EAAE,KAAc,EAAE,OAAO,GAAG,IAAI,EAAA;IAC9E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACtC,IAAA,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5D;;MC5Ma,0CAA0C,CAAA;AACrD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,0CAA0C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1C,0CAA0C,EAAA,QAAA,EAAA,qDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBADtD,SAAS;mBAAC,EAAE,QAAQ,EAAE,qDAAqD,EAAE,CAAA;;MAMjE,qCAAqC,CAAA;AAChD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArC,qCAAqC,EAAA,QAAA,EAAA,gDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD,SAAS;mBAAC,EAAE,QAAQ,EAAE,gDAAgD,EAAE,CAAA;;MAM5D,qCAAqC,CAAA;AAChD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArC,qCAAqC,EAAA,QAAA,EAAA,gDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD,SAAS;mBAAC,EAAE,QAAQ,EAAE,gDAAgD,EAAE,CAAA;;;AC6BnE,MAAO,0BACX,SAAQ,qBAAqB,CAAA;AAf/B,IAAA,WAAA,GAAA;;AAkBW,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,gBAAgB,EAAE,OAAO;SAC1B,CAAC;;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,WAAW,CAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAWpB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;QAC7C,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;;AAGjE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,qCAAqC,CAAC,CAAC;AACrE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,qCAAqC,CAAC,CAAC;;AAGrE,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,0CAA0C,CAAC,CAAC;QAE/E,IAAwB,CAAA,wBAAA,GAAG,QAAQ,CAAU,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;;AAG5G,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAEvE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,SAAS,EAAE,CAAE,CAAA;YACpC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,EAAE;AACxC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;QAG5C,IAAS,CAAA,SAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;;AAG5G,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;QAOpF,IAAgB,CAAA,gBAAA,GAAmB,IAAI,CAAC;QAYzC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAiB,CAAC;;QAGtC,IAAU,CAAA,UAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;;QA4BpD,IAAqB,CAAA,qBAAA,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAC/E,CAAC;AAwCH,KAAA;IA7IC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAE3B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;KACF;;AA0CD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/B;IAGD,IACI,KAAK,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AACD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAChC;;AASD,IAAA,OAAO,CAAC,MAAc,EAAA;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IACS,UAAU,GAAA;QAClB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;AAED,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;AACD,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;AACD,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACS,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;KAChD;AAKD,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;AAGD,IAAA,MAAM,CAAC,KAAqB,EAAA;QAC1B,IACE,IAAI,CAAC,KAAK;;aAET,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,CAAC;AACtD,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;;AAEjG,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EACtG;YACA,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;IAES,mBAAmB,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC;AAChD,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClD;KACF;8GAxJU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAR1B,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA6BsC,qCAAqC,EACrC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qCAAqC,EAGhC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0CAA0C,iNCxExF,++CAiDA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDRa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,++CAAA,EAAA,MAAA,EAAA,CAAA,yVAAA,CAAA,EAAA,CAAA;8BAsEG,KAAK,EAAA,CAAA;sBADR,KAAK;;;MElFK,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAbhC,0BAA0B;YAC1B,0CAA0C;YAC1C,qCAAqC;AACrC,YAAA,qCAAqC,aAE7B,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,aAEpE,0BAA0B;YAC1B,0CAA0C;YAC1C,qCAAqC;YACrC,qCAAqC,CAAA,EAAA,CAAA,CAAA,EAAA;AAG5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EARxB,OAAA,EAAA,CAAA,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAQ3D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,0CAA0C;wBAC1C,qCAAqC;wBACrC,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,CAAC;AACvE,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,0CAA0C;wBAC1C,qCAAqC;wBACrC,qCAAqC;AACtC,qBAAA;AACF,iBAAA,CAAA;;;MCTY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAA6B,cAAuC,EAAA;QAAvC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAyB;AAHnD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAA2B,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAmC,IAAI,CAAC,CAAC;AAInF;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC1C;;AAEG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AAC9D;;AAEG;AACM,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;KAbX;AAexE;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7C,iBAAiB,GAAG,IAAI,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;SAC5D,CAAC,CACH,CAAC;AAEF,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AACO,IAAA,oBAAoB,CAAI,IAAO,EAAA;AACrC,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACxB;AACO,IAAA,cAAc,CAAC,WAAgB,EAAE,KAAa,EAAE,iBAA0B,EAAA;QAChF,IAAI,iBAAiB,EAAE;YACrB,OAAO;AACL,gBAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;AAChC,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3E,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,gBAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;aAC3B,CAAC;SACH;;QAED,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;QAGlD,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC;;QAG3D,OAAO;AACL,YAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,YAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;SAC3B,CAAC;KACH;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,IAA4B,EAAA;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,aAAa,GAAA;AACX,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,EAAE;AAAE,YAAA,OAAO,SAAS,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC5B;AAED;;AAEG;IACH,kBAAkB,GAAA;AAChB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnC,IAAI,EAAE,EAAE;AACN,YAAA,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC3B;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AACD;;;AAGG;AACH,IAAA,aAAa,CAAC,IAA4B,EAAA;QACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AACD;;;AAGG;AACH,IAAA,eAAe,CAAC,IAA4B,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACxF;AACD;;;AAGG;IACH,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;QAEvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAEpC,QAAA,OAAO,eAAe,CAAC;KACxB;AACD;;;AAGG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI,CAAC;QAEvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAEpC,QAAA,OAAO,eAAe,CAAC;KACxB;AACD;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,MAAc,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAE1F,QAAA,IAAI,aAAa,GAAG,mBAAmB,GAAG,MAAM,CAAC;AACjD,QAAA,IAAI,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE;AACjC,YAAA,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC;SAC/B;AAAM,aAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AAC5B,YAAA,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC;SAC/B;AACD,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAEpC,QAAA,OAAO,eAAe,CAAC;KACxB;AACF;;MCvLY,8BAA8B,CAAA;AACzC,IAAA,WAAA,CAAmB,QAA4D,EAAA;QAA5D,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoD;KAAI;8GADxE,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9B,8BAA8B,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,SAAS;mBAAC,EAAE,QAAQ,EAAE,6CAA6C,EAAE,CAAA;;MAMzD,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;;MAM1D,gCAAgC,CAAA;AAC3C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,0CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,CAAA;;MAMtD,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA/B,+BAA+B,EAAA,QAAA,EAAA,yCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,SAAS;mBAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,CAAA;;MAMrD,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA/B,+BAA+B,EAAA,QAAA,EAAA,yCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,SAAS;mBAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,CAAA;;;AC8B5D,MAAO,oBACX,SAAQ,0BAA0B,CAAA;AAKlC,IAAA,WAAA,CACU,gBAAkC,EAClC,OAAgB,EAChB,kBAAyC,EAAA;AAEjD,QAAA,KAAK,EAAE,CAAC;QAJA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAuB;AAOjC,QAAA,IAAA,CAAA,QAAQ,GAAG;AAC3B,YAAA,gBAAgB,EAAE,OAAO;AACzB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,sBAAsB,EAAE,YAAY;SACrC,CAAC;;AAE0B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;;;AAIrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAA6B,SAAS,EAAE;AACxE,YAAA,KAAK,EAAE,UAAU;YACjB,SAAS,EAAE,CAAC,IAAG;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAChB,oBAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;iBAC/E;gBACD,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAClC,OAAO,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;aAC9C;AACF,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnG,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAqB,MAAK;AACpD,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,EAAE;AACzC,gBAAA,OAAO,CAAC,CAAC;aACV;YACD,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;;AAGM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;QAElD,IAAyB,CAAA,yBAAA,GAAG,QAAQ,CAAU,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;QAGtG,IAAuB,CAAA,uBAAA,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;;AAGzD,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,+BAA+B,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,+BAA+B,CAAC,CAAC;;AAG/D,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,oCAAoC,CAAC,CAAC;;AAGlF,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAElD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAmB,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3E,IAAS,CAAA,SAAA,GAAG,KAAK,CAAmB,SAAS,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAE3E,IAAqB,CAAA,qBAAA,GAAG,MAAM,CAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEnE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AA8BvC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAC/H,CAAC;AAEO,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjG,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAE7E,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;;AAG3E,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAA6B,iBAAiB,CAAC,CAAC;QACxE,IAAgB,CAAA,gBAAA,GAAG,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;;QAqD5E,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;AA2CzB,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAoC,SAAS,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,2BAA2B,GAAG,QAAQ,CAAC,MAAK;YACnD,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,kBAAkB,EAAG,CAAC;AACjE,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,qBAAqB,CAAC,QAAQ;gBAAE,OAAO,uBAAuB,CAAC,QAAQ,CAAC;YAClG,OAAO,uBAAuB,CAAC,MAAM,CAAC;AACxC,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiC,SAAS,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAK;YAChD,IAAI,IAAI,CAAC,eAAe,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAG,CAAC;AAC3D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,YAAA,IAAI,OAAO,KAAK,kBAAkB,CAAC,IAAI;gBAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;AAC7E,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAC,CAAC;QAjND,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;KACvD;IA0DD,IACI,WAAW,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;QAE5C,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAEO,uBAAuB,GAAA;QAC7B,SAAS,WAAW,CAAC,GAAW,EAAA;AAC9B,YAAA,OAAO,CAAC,IAAI,CACV,8BAA8B,GAAG,CAAA,wFAAA,CAA0F,CAC5H,CAAC;SACH;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,WAAW,CAAC,WAAW,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,WAAW,CAAC,WAAW,CAAC,CAAC;SAC1B;KACF;IAoBQ,eAAe,GAAA;QACtB,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO;AAC1B,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAG,CAAC;AACzC,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACK,aAAA;SACvB,CAAC;aACD,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEnB,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/C,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEnD,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,cAAc,GAAA;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KACzD;IAGD,cAAc,GAAA;QACZ,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,IAA4B,EAAA;QAC3C,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH;IAKD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IACD,sBAAsB,CAAC,IAA4B,EAAE,KAAiB,EAAA;QACpE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE3C,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACD,sBAAsB,CAAC,IAA4B,EAAE,KAAiB,EAAA;QACpE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE7C,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;IAGD,gBAAgB,CAAC,IAA4B,EAAE,KAAiB,EAAA;QAC9D,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9B;AACO,IAAA,iBAAiB,CAAC,IAA4B,EAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;QAG1C,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxC;AACD,IAAA,4BAA4B,CAAC,KAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAAE,OAAO;AAE7C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;AAE1C,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxC;;AAiBQ,IAAA,OAAO,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;AAE3F,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtB;;AAID,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO;aACR;YACD,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO;aACR;YACD,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO;aACR;YACD,KAAK,SAAS,EAAE;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO;aACR;SACF;KACF;AACS,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAAE,OAAO;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;KACrC;AACO,IAAA,aAAa,CAAC,KAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAAE,OAAO;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC9B;AACO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAAE,OAAO;QAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9C;AACO,IAAA,eAAe,CAAC,KAAoB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAAE,OAAO;QAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9C;8GA7RU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EARpB,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0D+C,+BAA+B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC/B,+BAA+B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG1B,oCAAoC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiD9C,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACvB,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIb,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvKlF,41GAgGA,EAAA,MAAA,EAAA,CAAA,6XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD3Ca,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,41GAAA,EAAA,MAAA,EAAA,CAAA,6XAAA,CAAA,EAAA,CAAA;mJA2EG,WAAW,EAAA,CAAA;sBADd,KAAK;gBAkFN,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,eAAe,CAAA;gBAgB7B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,CAAA;gBAkEzB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEtPxB,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAvB1B,oBAAoB;YACpB,8BAA8B;YAC9B,oCAAoC;YACpC,gCAAgC;YAChC,+BAA+B;AAC/B,YAAA,+BAA+B,aAG/B,YAAY;YACZ,0BAA0B;YAC1B,kBAAkB;YAClB,yBAAyB;AACzB,YAAA,6BAA6B,aAG7B,oBAAoB;YACpB,8BAA8B;YAC9B,oCAAoC;YACpC,gCAAgC;YAChC,+BAA+B;YAC/B,+BAA+B,CAAA,EAAA,CAAA,CAAA,EAAA;AAGtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAf1B,YAAY;YACZ,0BAA0B;YAC1B,kBAAkB;YAClB,yBAAyB;YACzB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAWpB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,8BAA8B;wBAC9B,oCAAoC;wBACpC,gCAAgC;wBAChC,+BAA+B;wBAC/B,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,0BAA0B;wBAC1B,kBAAkB;wBAClB,yBAAyB;wBACzB,6BAA6B;AAC9B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,8BAA8B;wBAC9B,oCAAoC;wBACpC,gCAAgC;wBAChC,+BAA+B;wBAC/B,+BAA+B;AAChC,qBAAA;AACF,iBAAA,CAAA;;;ACvCY,MAAA,eAAe,GAAG;AAC7B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,WAAW;EACb;AAGE,MAAA,aAAa,GAAG;AAC3B,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,WAAW;EACb;AAGE,MAAA,yBAAyB,GAAG;AACvC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,OAAO,EAAE,SAAS;;;ACJb,MAAM,wBAAwB,GAAG;AACtC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;CACR,CAAC;AAGL,SAAU,qBAAqB,CAAC,GAAW,EAAA;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD;;MCRa,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,QAA6B,EAAA;QAA7B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;AAgBhC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,EAAE,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAyB,MAAK;YAC/D,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,IAAG;AACjC,gBAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACjB,OAAO;wBACL,IAAI,EAAE,wBAAwB,CAAC,MAAM;wBACrC,IAAI,EAAE,CAAC,CAAC,MAAM;qBACf,CAAC;iBACH;gBACD,OAAO;oBACL,IAAI,EAAE,wBAAwB,CAAC,KAAK;oBACpC,KAAK,EAAE,UAAU,EAAE;iBACpB,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEc,IAAqB,CAAA,qBAAA,GAAG,QAAQ,CAC/C,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,CAA6B,CACpF,CAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAe,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAE1E,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;QAE/C,IAAW,CAAA,WAAA,GAAG,QAAQ,CAC7B,MACE,IAAI,CAAC,KAAK,EAAE;cACR,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;aACnB,IAAI,CAAC,EAAE,CAAC;AACR,aAAA,OAAO,EAAE,IAAI,EAAE,CACrB,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAe,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC;;QAhD1H,MAAM,CACJ,MAAK;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;AAE7C,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAG;AACtB,gBAAA,IAAI,CAAC,GAAG;oBAAE,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;oBAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACtD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,aAAC,CAAC,CAAC;AACL,SAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B,CAAC;KACH;AAsCD,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;KAChC;AAED,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;AAEhD,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CACP,CAAA,wDAAA,EAA2D,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,CAAyC,uCAAA,CAAA,CAC5H,CACF,CAAC;;YAEF,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;AACD,QAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,2GAAA,EAA8G,MAAM,CAAC,YAAY,CAAC,CAAc,WAAA,EAAA,YAAY,CAAqC,mCAAA,CAAA,CAClM,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACjC;AACO,IAAA,WAAW,CAAC,CAAkB,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;AAC5C,YAAA,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD,YAAA,CAAC,EAAE,CAAC;SACL;KACF;;AAGD,IAAA,SAAS,CAAC,MAAwB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AACO,IAAA,UAAU,CAAC,MAAwB,EAAA;;AAEzC,QAAA,IAAI,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACjE,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,cAAe,CAAC;AAC7D,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtG,OAAO;SACR;;AAED,QAAA,IAAI,SAAgE,CAAC;AACrE,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;AACvB,YAAA,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,SAAS,GAAG,MAAM,CAAC;SACpB;;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACnB,gBAAA,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1C,oBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;AAClG,oBAAA,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACpC;AACD,gBAAA,OAAO,CAAC,CAAC;aACV;YAED,QAAQ,CAAC;gBACP,KAAK,yBAAyB,CAAC,MAAM;AACnC,oBAAA,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,KAAK,yBAAyB,CAAC,MAAM;AACnC,oBAAA,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,KAAK,yBAAyB,CAAC,YAAY;AACzC,oBAAA,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpD,KAAK,yBAAyB,CAAC,OAAO;AACpC,oBAAA,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAE5D,gBAAA;AACE,oBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,wBAAA,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;qBAC7G;oBACD,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,CAAC,CAA4C,yCAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;aAC3G;SACF,CAAC,CACH,CAAC;KACH;;IAGD,wBAAwB,CAAC,KAAa,EAAE,KAAa,EAAA;QACnD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK,CAAC;AAE3E,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;QAErB,IAAI,CAAC,CAAC,EAAE;AACN,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpB;QACD,CAAC,GAAG,EAAE,CAAC;;QAEP,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;AAGhD,QAAA,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACrD,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACnC;;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,QAAA,KAAK,GAAG,SAAS,KAAK,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;;AAGpD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;;QAG/F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CACb,0MAA0M,CAC3M,CAAC;SACH;;AAED,QAAA,MAAM,MAAM,GAAG,SAAS,IAAI,MAAM,CAAC;QACnC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;AAE3C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAG;AACtB,YAAA,IAAI,CAAC,GAAG;gBAAE,GAAG,GAAG,EAAE,CAAC;AACnB,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACxB,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC;AAC/B,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC,CAAC;;AAEH,QAAA,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,SAAS,CAAC,CAAC;KACvC;IACD,sBAAsB,GAAA;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,CAAC;YAAE,OAAO;QAEf,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;AAChF,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAA,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC;YAEtB,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS;aACV;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/D,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC1B;AACO,IAAA,mBAAmB,CAAC,IAAmB,EAAE,MAAc,EAAE,MAA8B,EAAA;AAC7F,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,2KAAA,CAA6K,CAC9K,CAAC;SACH;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,CAAI,CAAA,EAAA,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC;AACjH,YAAA,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzC;AACD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,IAAI,CAAC;AAE5B,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE;AAChD,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,IAAI,MAAM,CAAC,SAAS,KAAK,aAAa,CAAC,SAAS,EAAE;AAChD,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;AACD,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,qMAAA,CAAuM,CACxM,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;ACxNK,MAAO,yBAA0B,SAAQ,qBAAqB,CAAA;AAdpE,IAAA,WAAA,GAAA;;;AAgBW,QAAA,IAAA,CAAA,MAAM,GAAG,YAAY,CAA+B,OAAO,CAAC,CAAC;;AAGrD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;;AAG1C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,eAAe,CAAC,MAAM,CAAC,CAAC;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAyB;AACvD,YAAA,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAE9C,IAAyB,CAAA,yBAAA,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,MAAK;YAC3C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB;gBAAE,OAAO;YAE7E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;;AAeM,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAM1F,IAAW,CAAA,WAAA,GAAG,MAAM,EAAqC,CAAC;AAE1D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAErC,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAwC;YACzE,IAAI,IAAI,CAAC,cAAc,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC3D,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;;QAGM,IAAa,CAAA,aAAA,GAAG,MAAM,EAAqC,CAAC;QAE5D,IAAe,CAAA,eAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1D,IAAc,CAAA,cAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAoFlE,KAAA;AApHC,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;KAC5C;;AAGD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACrB;AACO,IAAA,WAAW,CAAC,CAAM,EAAA;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACjC;IAKD,IACI,KAAK,CAAC,CAAoC,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;;IAiBD,OAAO,CAAC,KAAqB,EAAE,KAAa,EAAA;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/C,KAAK;AACF,aAAA,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;aACnB,KAAK,CAAC,EAAE,CAAC;AACT,aAAA,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;YACnB,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,CAAC,KAAY,EAAE,KAAa,EAAA;QACjC,IAAI,CAAC,uBAAuB,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC9B;IACO,uBAAuB,CAAC,KAAa,EAAE,KAAa,EAAA;AAC1D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAAE,OAAO;QAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;AAGD,IAAA,YAAY,CAAC,KAAa,EAAE,eAAyB,EAAE,SAAkB,EAAA;QACvE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK,CAAC;QAE1B,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,eAAe,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,EAAE;YACrE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;SAC7C;AACD,QAAA,OAAO,QAAQ,CAAC,aAAa,KAAK,MAAM,CAAC;KAC1C;;IAED,aAAa,CAAC,KAAiB,EAAE,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;IACD,YAAY,CAAC,KAAiB,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;IACS,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC5B;KACF;IACD,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,OAAO;AACT,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,OAAO;AACT,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9B,OAAO;AACT,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAO;AACT,YAAA,KAAK,WAAW,CAAC;AACjB,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;SACV;KACF;8GAxJU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EARzB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCH,ihCA8BA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDKa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;+BACE,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,ihCAAA,EAAA,CAAA;8BAuDG,KAAK,EAAA,CAAA;sBADR,KAAK;;;ME9EK,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAJlB,YAAA,EAAA,CAAA,yBAAyB,CAC9B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;MCFY,4CAA4C,CAAA;AACvD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5C,4CAA4C,EAAA,QAAA,EAAA,uDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAHxD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uDAAuD;AAClE,iBAAA,CAAA;;MAMY,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvC,uCAAuC,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;MAM9D,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvC,uCAAuC,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;MAM9D,6CAA6C,CAAA;AACxD,IAAA,WAAA,CAAmB,QAAuD,EAAA;QAAvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA+C;KAAI;8GADnE,6CAA6C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA7C,6CAA6C,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA7C,6CAA6C,EAAA,UAAA,EAAA,CAAA;kBADzD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;;MCf9D,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACpC,QAAA,OAAO,KAAK,CAAC;KACd;8GALU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAA;;;MC0BY,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkE,GAAG,EAAE;YAC5F,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAiB;AAC7D,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA+D,CAAC,EAAE;YACtF,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAgB;AAC1D,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiF,EAAE,EAAE;YAC/G,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,EAAE,CAAsB;AACjE,SAAA,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAS,MAAK;;AAErD,YAAA,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS;AAClE,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;AACnB,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AAClB,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;aACzB,CAAC;;YAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AACjD,iBAAA,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,iBAAA,GAAG,CAAC,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA,CAAC;iBAC7B,IAAI,EAAE,CAAC;;YAGV,OAAO,iBAAiB,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpH,SAAC,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAA0B,kBAAkB,CAAC,CAAC;AAOlF,KAAA;IALC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,SAAS,EAAE;AACnE,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,iEAAA,CAAmE,CAAC,CAAC;SACnF;KACF;8GAvCU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,i7BC9BhC,mYAeA,EAAA,MAAA,EAAA,CAAA,yfAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDea,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,iBAGL,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,yfAAA,CAAA,EAAA,CAAA;;;AEc3C,MAAO,4BAA6B,SAAQ,qBAAqB,CAAA;AAdvE,IAAA,WAAA,GAAA;;;AAgBW,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,WAAW,CAAC,CAAC;AAMnE,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QAChC,IAAO,CAAA,OAAA,GAAG,KAAK,EAAoB,CAAC;;AAGpC,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;;AAGvE,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,4CAA4C,CAAC,CAAC;AAEjF,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;;AAGjF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAExF,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAEpH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAElC,IAAY,CAAA,YAAA,GAA0B,IAAI,CAAC;AAmB1C,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,6CAA6C,CAAC,CAAC;AAE7E,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CACrC,OAAyC;AACvC,YAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC3B,SAAA,CAAC,CACH,CAAC;;AAGO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAEhE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;YAC/B,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,UAAU,EAAE,GAAG,gBAAgB,GAAG,EAAE;AAC1C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;QAuB5C,IAAK,CAAA,KAAA,GAAG,KAAK,EAAoB,CAAC;AAqD5C,KAAA;IA/IC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAuBD,IAAA,YAAY,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjC;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzC,QAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;SACzE;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjC;KACF;;AA6BD,IAAA,UAAU,CAAC,CAAM,EAAA;QACf,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;;AAEnC,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CACP,CAAA,2DAAA,EAA8D,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,CAA6B,2BAAA,CAAA,CACnH,CACF,CAAC;;YAEF,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO;SACR;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACrB;AACS,IAAA,WAAW,CAAC,CAA4B,EAAA;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;;AAKD,IAAA,OAAO,CAAC,MAAc,EAAA;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACS,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;KAC/B;;AAED,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;AAGD,IAAA,MAAM,CAAC,KAAqB,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IACE,CAAC;YACD,WAAW;;AAEX,aAAC,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,KAAK,CAAC;AAC9C,gBAAA,WAAW,CAAC,aAAa,CAAC,YAAY,KAAK,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;;AAEjF,gBAAA,WAAW,CAAC,aAAa,CAAC,cAAc,KAAK,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,EACtF;YACA,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;IAES,mBAAmB,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;AAEnB,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,GAAG,IAAI,CAAC,UAAU,EAAE;SACrB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClD;KACF;8GAlJU,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAR5B,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAcsC,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uCAAuC,iGACvC,uCAAuC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGlC,4CAA4C,EA+BjD,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,6CAA6C,iNCzFtF,umEA+DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDrBa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;+BACE,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC3D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,umEAAA,EAAA,CAAA;;;ME9BU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,EAAE,cAAc,aACxC,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;AAElC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;oBACnD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;AAC/C,iBAAA,CAAA;;;MCoBY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iBAflC,4BAA4B;YAC5B,4CAA4C;YAC5C,uCAAuC;YACvC,uCAAuC;AACvC,YAAA,6CAA6C,aAErC,YAAY,EAAE,0BAA0B,EAAE,gBAAgB,aAElE,4BAA4B;YAC5B,4CAA4C;YAC5C,uCAAuC;YACvC,uCAAuC;YACvC,6CAA6C,CAAA,EAAA,CAAA,CAAA,EAAA;AAGpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EAT1B,OAAA,EAAA,CAAA,YAAY,EAAE,0BAA0B,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASzD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B,4CAA4C;wBAC5C,uCAAuC;wBACvC,uCAAuC;wBACvC,6CAA6C;AAC9C,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,0BAA0B,EAAE,gBAAgB,CAAC;AACrE,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,4CAA4C;wBAC5C,uCAAuC;wBACvC,uCAAuC;wBACvC,6CAA6C;AAC9C,qBAAA;AACF,iBAAA,CAAA;;;AC1BM,MAAM,UAAU,GAAG;AACxB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;CACN;;ACNV;;;;AAIG;AACU,MAAA,gBAAgB,GAAG;AAC9B;;AAEG;AACH,IAAA,WAAW,EAAE,aAAa;AAC1B;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;AAChB;;AAEG;AACH,IAAA,YAAY,EAAE,eAAe;AAC7B;;AAEG;AACH,IAAA,QAAQ,EAAE,UAAU;AACpB;;;;AAIG;AACH,IAAA,cAAc,EAAE,iBAAiB;AACjC;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;EACH;AAGE,MAAA,aAAa,GAAG;AAC3B;;AAEG;AACH,IAAA,OAAO,EAAE,SAAS;AAClB;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;AACZ;;AAEG;AACH,IAAA,KAAK,EAAE,OAAO;EACL;AAGX;;AAEG;AACU,MAAA,OAAO,GAAG;AACrB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,OAAO;;;ACjDV,MAAgB,WAAY,SAAQ,uBAAuB,CAAA;AADjE,IAAA,WAAA,GAAA;;AAEW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAGnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAG7F,KAAA;8GAXqB,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAX,WAAW,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;;;ACQJ,MAAO,qBAAsB,SAAQ,WAAW,CAAA;AAPtD,IAAA,WAAA,GAAA;;AAQW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEzB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAgB,aAAa,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAEvE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,SAAS,EAAE,CAAE,CAAA;YAC/B,IAAI,CAAC,aAAa,EAAE,GAAG,CAAoB,kBAAA,CAAA,GAAG,EAAE;YAChD,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,QAAQ,EAAE,GAAG,qBAAqB,GAAG,EAAE;AAC7C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,KAAA;8GAvBY,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ksBCdlC,0cAmBA,EAAA,MAAA,EAAA,CAAA,0PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDLa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,iBAGP,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0cAAA,EAAA,MAAA,EAAA,CAAA,0PAAA,CAAA,EAAA,CAAA;;;MEHpC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCLY,0CAA0C,CAAA;AACrD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,0CAA0C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1C,0CAA0C,EAAA,QAAA,EAAA,qDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBADtD,SAAS;mBAAC,EAAE,QAAQ,EAAE,qDAAqD,EAAE,CAAA;;;ACuCxE,MAAO,0BACX,SAAQ,qBAAqB,CAAA;IAQ7B,eAAe,GAAA;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;AAEzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;KACF;;AA6CD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/B;IAID,IACI,KAAK,CAAC,CAAyB,EAAA;QACjC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,YAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AAGD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;;AA3ED,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA+B,WAAW,CAAC,CAAC;AAErD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAWpB,IAAO,CAAA,OAAA,GAAG,KAAK,EAAoB,CAAC;;QAGpC,IAAW,CAAA,WAAA,GAAG,KAAK,EAAoB,CAAC;AAExC,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,0CAA0C,CAAC,CAAC;QAE/E,IAAwB,CAAA,wBAAA,GAAG,QAAQ,CAAU,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;;AAG3G,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAmB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE7D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAa;YACzC,OAAO;AACL,gBAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,gBAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,gBAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,SAAS,EAAE,CAAE,CAAA;gBACpC,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAE,CAAA;gBACpC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,SAAC,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAoB;AACpD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,kBAAkB,CAAC,OAAO;gBAAE,OAAO,aAAa,CAAC,OAAO,CAAC;AAChF,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,kBAAkB,CAAC,IAAI;gBAAE,OAAO,aAAa,CAAC,IAAI,CAAC;AAC1E,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,kBAAkB,CAAC,KAAK;gBAAE,OAAO,aAAa,CAAC,KAAK,CAAC;YAC5E,OAAO,aAAa,CAAC,OAAO,CAAC;AAC/B,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAmB,MAAK;AAC1D,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,qBAAqB,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,kBAAkB,CAAC,IAAI,EAAE;gBACtG,OAAO,gBAAgB,CAAC,QAAQ,CAAC;aAClC;YACD,OAAO,gBAAgB,CAAC,WAAW,CAAC;AACtC,SAAC,CAAC,CAAC;;AAGM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;QAQ3C,IAAgB,CAAA,gBAAA,GAAmB,GAAG,CAAC;QAUxC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAiB,CAAC;;QAatC,IAAU,CAAA,UAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAG/B,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;;QAGpB,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGtF,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErF,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAc,CAAC,EAAE;YACxC,SAAS,EAAE,CAAC,IAAG;gBACb,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,IAAI,QAAQ,KAAK,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,6DAAA,CAA+D,CAAC,CAAC;gBACrG,IAAI,QAAQ,GAAG,CAAC;AACd,oBAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,QAAQ,CAAA,EAAA,CAAI,CAAC,CAAC;AACrH,gBAAA,OAAO,QAAQ,CAAC;aACjB;AACF,SAAA,CAAC,CAAC;QAjCD,MAAM,CAAC,MAAK;YACV,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;IA8BD,wBAAwB,CAAC,SAAiB,EAAE,KAAkB,EAAA;QAC5D,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;QAElB,IAAI,SAAS,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO;QACjD,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO;AAElD,QAAA,IAAI,KAAK;YAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAEnC,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;;;QAGnD,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IACO,4BAA4B,GAAA;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;KAChE;IAED,YAAY,GAAA;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KAC5C;IACD,YAAY,GAAA;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KAC5C;;AAGD,IAAA,OAAO,CAAC,MAAc,EAAA;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IACS,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;AAGD,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;AACD,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;;AAED,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACS,WAAW,GAAA;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;;IAGD,SAAS,GAAA;AACP,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACxC,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;AAGD,IAAA,MAAM,CAAC,KAAqB,EAAA;QAC1B,IACE,IAAI,CAAC,KAAK;;aAET,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,CAAC;AAClD,gBAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;;AAEzF,gBAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EAC9F;AACA,YAAA,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;IAGS,mBAAmB,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAG,CAAC,aAAa,CAAC;AAC5C,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,GAAG,IAAI,CAAC,UAAU;SACnB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClD;KACF;8GAxNU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAR1B,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EA0B2C,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0CAA0C,6MCjExF,qlEAmEA,EAAA,MAAA,EAAA,CAAA,8gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD1Ba,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,qlEAAA,EAAA,MAAA,EAAA,CAAA,8gBAAA,CAAA,EAAA,CAAA;wDAuEG,KAAK,EAAA,CAAA;sBADR,KAAK;;;MEjGK,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJnB,YAAA,EAAA,CAAA,0BAA0B,EAAE,0CAA0C,CAC3E,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,CACvD,EAAA,OAAA,EAAA,CAAA,0BAA0B,EAAE,0CAA0C,CAAA,EAAA,CAAA,CAAA,EAAA;AAErE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAHxB,OAAA,EAAA,CAAA,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;AACtF,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,CAAC;AAClE,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;AAClF,iBAAA,CAAA;;;ACKK,MAAgB,uBAAwB,SAAQ,qBAAqB,CAAA;AAD3E,IAAA,WAAA,GAAA;;AAIW,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,WAAW,CAAC,CAAC;QAEnE,IAAM,CAAA,MAAA,GAAG,KAAK,CAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QASxB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;AAQtB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGnF,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;QAO3F,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;QAS9B,IAAW,CAAA,WAAA,GAAG,MAAM,EAAiB,CAAC;QACtC,IAAW,CAAA,WAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAc,CAAA,cAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAE9D,IAAgB,CAAA,gBAAA,GAAkB,IAAI,CAAC;;;QAgCvC,IAAa,CAAA,aAAA,GAAkB,IAAI,CAAC;;AAGrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAmC,MAAM,CAAC,CAAC;QACrE,IAAoB,CAAA,oBAAA,GAAwB,MAAM,CAAC;AA+E5D,KAAA;IA1JC,QAAQ,GAAA;AACN,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtD,YAAA,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,CAAO,IAAA,EAAA,IAAI,CAAC,WAAW,CAAmF,iFAAA,CAAA,CAAC,CACtH,CAAC;SACH;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AASD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzD;AAID,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,CAAuB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AAOD,IAAA,UAAU,CAAC,CAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KAC5B;AACS,IAAA,WAAW,CAAC,CAAuB,EAAE,UAAU,GAAG,IAAI,EAAA;AAC9D,QAAA,IAAI,CAAC,YAAY,IAAI,EAAE;AACrB,YAAA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACT;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAElD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAES,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;KAC3C;;AAWD,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,YAAY;gBAAE,OAAO;AAEhC,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;YACvC,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,UAAU;YAAE,OAAO;QAEnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;AAEhC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,EAAyB,CAAC;AAC3E,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACvC;IACD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;AACjC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,UAAU;YAAE,OAAO;QAEnD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACtD;AACD,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;AAEjC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO;SACR;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO;SACR;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;IACD,aAAa,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACxE,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO;SACR;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACvC;;AAGS,IAAA,oBAAoB,CAAC,IAAyB,EAAA;AACtD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;KAC3E;IAES,mBAAmB,GAAA;AAC3B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAErB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AAClD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,CAAC,EAAE;AACN,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,OAAO;SACR;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AACxC,QAAA,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE;AACpB,YAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC9B;AACD,QAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;KACpC;8GAjKmB,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvB,uBAAuB,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;8BAqCJ,KAAK,EAAA,CAAA;sBADR,KAAK;;;MC7CK,8CAA8C,CAAA;AACzD,IAAA,WAAA,CAAmB,QAA6C,EAAA;QAA7C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqC;KAAI;8GADzD,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9C,8CAA8C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAH1D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;MAQY,kDAAkD,CAAA;AAC7D,IAAA,WAAA,CAAmB,QAA4C,EAAA;QAA5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoC;KAAI;8GADxD,kDAAkD,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlD,kDAAkD,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlD,kDAAkD,EAAA,UAAA,EAAA,CAAA;kBAH9D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4DAA4D;AACvE,iBAAA,CAAA;;MAQY,kDAAkD,CAAA;AAC7D,IAAA,WAAA,CAAmB,QAA4C,EAAA;QAA5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoC;KAAI;8GADxD,kDAAkD,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlD,kDAAkD,EAAA,QAAA,EAAA,2DAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlD,kDAAkD,EAAA,UAAA,EAAA,CAAA;kBAH9D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2DAA2D;AACtE,iBAAA,CAAA;;;ACQK,MAAO,2BAA4B,SAAQ,uBAAuB,CAAA;AAPxE,IAAA,WAAA,GAAA;;QAQW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;AAGpB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9G,CAAC;;QAGQ,IAAsB,CAAA,sBAAA,GAAgB,IAAI,CAAC;;QAerD,IAAY,CAAA,YAAA,GAA+C,IAAI,CAAC;QAIhE,IAAgB,CAAA,gBAAA,GAA8C,IAAI,CAAC;QAInE,IAAgB,CAAA,gBAAA,GAA8C,IAAI,CAAC;AAsBpE,KAAA;IA5CC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACpC;IACD,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO;AACzC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAgBD,cAAc,GAAA;QACZ,OAAO;YACL,MAAM,EAAE,MAAK;gBACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;SACF,CAAC;KACH;IACD,kBAAkB,GAAA;QAChB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,aAAc;SAC5B,CAAC;KACH;IACD,kBAAkB,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,OAAO;AACL,YAAA,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;SACN,CAAC;KACH;8GAxDU,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAwBxB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,8CAA8C,EACpD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGL,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kDAAkD,EACxD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGL,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kDAAkD,EACxD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,oDC5DrB,64HA+GA,EAAA,MAAA,EAAA,CAAA,sGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDpFa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,iBAGf,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,64HAAA,EAAA,MAAA,EAAA,CAAA,sGAAA,CAAA,EAAA,CAAA;8BA6B/C,YAAY,EAAA,CAAA;sBAHX,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,8CAA8C,EAAE;AAC5D,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;gBAKD,gBAAgB,EAAA,CAAA;sBAHf,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kDAAkD,EAAE;AAChE,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;gBAKD,gBAAgB,EAAA,CAAA;sBAHf,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kDAAkD,EAAE;AAChE,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;;;MErBU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBArBjC,2BAA2B;YAC3B,8CAA8C;YAC9C,kDAAkD;AAClD,YAAA,kDAAkD,aAGlD,YAAY;YACZ,kBAAkB;YAClB,gBAAgB;YAChB,wBAAwB;YACxB,wBAAwB;YACxB,uBAAuB;AACvB,YAAA,6BAA6B,aAG7B,2BAA2B;YAC3B,8CAA8C;YAC9C,kDAAkD;YAClD,kDAAkD,CAAA,EAAA,CAAA,CAAA,EAAA;AAGzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAfjC,YAAY;YACZ,kBAAkB;YAClB,gBAAgB;YAChB,wBAAwB;YACxB,wBAAwB;YACxB,uBAAuB;YACvB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;;2FASpB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAvBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,2BAA2B;wBAC3B,8CAA8C;wBAC9C,kDAAkD;wBAClD,kDAAkD;AACnD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,wBAAwB;wBACxB,wBAAwB;wBACxB,uBAAuB;wBACvB,6BAA6B;AAC9B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,2BAA2B;wBAC3B,8CAA8C;wBAC9C,kDAAkD;wBAClD,kDAAkD;AACnD,qBAAA;AACF,iBAAA,CAAA;;;MClCY,yCAAyC,CAAA;AACpD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzC,yCAAyC,EAAA,QAAA,EAAA,oDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzC,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBADrD,SAAS;mBAAC,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAA;;MAMhE,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,+CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAA;;MAM3D,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,+CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAA;;AAKxE;MAIa,4CAA4C,CAAA;AACvD,IAAA,WAAA,CAAmB,QAAkD,EAAA;QAAlD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0C;KAAI;8GAD9D,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5C,4CAA4C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAHxD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;MAMY,0CAA0C,CAAA;AACrD,IAAA,WAAA,CAAmB,QAAkD,EAAA;QAAlD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0C;KAAI;8GAD9D,0CAA0C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1C,0CAA0C,EAAA,QAAA,EAAA,sDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBADtD,SAAS;mBAAC,EAAE,QAAQ,EAAE,sDAAsD,EAAE,CAAA;;MAQlE,8CAA8C,CAAA;AACzD,IAAA,WAAA,CAAmB,QAAkD,EAAA;QAAlD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0C;KAAI;8GAD9D,8CAA8C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA9C,8CAA8C,EAAA,QAAA,EAAA,0DAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBAH1D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0DAA0D;AACrE,iBAAA,CAAA;;MAQY,4CAA4C,CAAA;AACvD,IAAA,WAAA,CAAmB,QAAuD,EAAA;QAAvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA+C;KAAI;8GADnE,4CAA4C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5C,4CAA4C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAHxD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;AAKD;MAIa,2CAA2C,CAAA;AACtD,IAAA,WAAA,CAAmB,QAAqD,EAAA;QAArD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA6C;KAAI;8GADjE,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3C,2CAA2C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3C,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAHvD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;;MC7CY,wCAAwC,CAAA;AACnD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxC,wCAAwC,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxC,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBADpD,SAAS;mBAAC,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAA;;MAM/D,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;;MAM1D,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,8CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,8CAA8C,EAAE,CAAA;;MAM1D,2CAA2C,CAAA;AACtD,IAAA,WAAA,CAAmB,QAA6C,EAAA;QAA7C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqC;KAAI;8GADzD,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3C,2CAA2C,EAAA,QAAA,EAAA,oDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3C,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBADvD,SAAS;mBAAC,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAA;;MAQhE,+CAA+C,CAAA;AAC1D,IAAA,WAAA,CAAmB,QAA4C,EAAA;QAA5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoC;KAAI;8GADxD,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA/C,+CAA+C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA/C,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAH3D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;MAQY,+CAA+C,CAAA;AAC1D,IAAA,WAAA,CAAmB,QAA4C,EAAA;QAA5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoC;KAAI;8GADxD,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA/C,+CAA+C,EAAA,QAAA,EAAA,uDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA/C,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAH3D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uDAAuD;AAClE,iBAAA,CAAA;;;ACSK,MAAO,wBAAyB,SAAQ,uBAAuB,CAAA;AAdrE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,gBAAgB,EAAE,OAAO;SAC1B,CAAC;QAEO,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;;AAIpB,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;;AAGtD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAGhC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC,CAAC,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,gBAAgB,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC,KAAK,GAAG,eAAe,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACnH,CAAC;;AAYO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErF,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAoBjE,IAAU,CAAA,UAAA,GAAG,MAAM,EAAE,CAAC;;AAGtB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;QAW1C,IAAY,CAAA,YAAA,GAA+C,IAAI,CAAC;QAIhE,IAAgB,CAAA,gBAAA,GAA8C,IAAI,CAAC;QAInE,IAAgB,CAAA,gBAAA,GAA8C,IAAI,CAAC;AAsBpE,KAAA;AAvEC,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KACnD;AAOD,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpE;AACD,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;IA0BD,cAAc,GAAA;QACZ,OAAO;YACL,MAAM,EAAE,MAAK;gBACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;SACF,CAAC;KACH;IACD,kBAAkB,GAAA;QAChB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,aAAc;SAC5B,CAAC;KACH;IACD,kBAAkB,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,OAAO;AACL,YAAA,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK;SACN,CAAC;KACH;8GAnGU,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EA0Ba,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yCAAyC,EAC/C,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAqCL,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mCAAmC,2BAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAExD,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGxD,2CAA2C,EACjD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGL,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,+CAA+C,EACrD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,gEAGL,+CAA+C,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACrD,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrHrB,wyHA6HA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDpFa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,gBAAgB,EAAA,aAAA,EAGX,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wyHAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,CAAA;8BA6BD,mBAAmB,EAAA,CAAA;sBAHlB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,yCAAyC,EAAE;AACvD,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;gBAqCD,cAAc,EAAA,CAAA;sBADb,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAGxE,cAAc,EAAA,CAAA;sBADb,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAMxE,YAAY,EAAA,CAAA;sBAHX,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2CAA2C,EAAE;AACzD,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;gBAKD,gBAAgB,EAAA,CAAA;sBAHf,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,+CAA+C,EAAE;AAC7D,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;gBAKD,gBAAgB,EAAA,CAAA;sBAHf,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,+CAA+C,EAAE;AAC7D,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;;;ME1GU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC9E,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHtB,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;oBACzF,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACXM,MAAM,mBAAmB,GAAG;AACjC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,WAAW;CACd;;MCOG,aAAa,CAAA;AACxB,IAAA,WAAA,CAA+B,SAA4B,EAAA;QAA5B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;;AAGlD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;AAEzD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAS,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;;QAsDlE,IAA2B,CAAA,2BAAA,GAAG,IAAI,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;KA5Df;;AAS/D,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;AAEjC,YAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CAAC,CAAA,sDAAA,EAAyD,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,CAA6B,2BAAA,CAAA,CAAC,CACzH,CAAC;;YAEF,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;;AAED,QAAA,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAElD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC5B;AACS,IAAA,WAAW,CAAC,CAAgB,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;;QAE5B,IAAI,CAAC,EAAE;AACL,YAAA,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;AACjD,YAAA,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SACnC;;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,MAAM,KAAK,CAAC,CAAC;KACrB;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;IACD,2BAA2B,GAAA;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;;IAGD,mBAAmB,GAAA;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC;AACvD,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAChB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AACD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;KAC9F;IACD,IAAI,QAAQ,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACzE;AAIO,IAAA,0BAA0B,CAAC,CAAS,EAAA;QAC1C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACb;IACO,sBAAsB,CAAC,CAAS,EAAE,IAAY,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS;AAAE,YAAA,OAAO,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,CAAC,CAAC;QAErC,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,QAAA,OACE,gBAAgB,GAAG,CAAC,CAAC,MAAM;aAC1B,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChG,gBAAgB,IAAI,SAAS,EAC7B;AACA,YAAA,gBAAgB,EAAE,CAAC;SACpB;QACD,IAAI,gBAAgB,GAAG,SAAS;YAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAEnE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAC1B,QAAA,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,GAAG,QAAQ,CAAC,CAAC;KACpF;AACO,IAAA,qBAAqB,CAAC,CAAS,EAAA;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,mBAAmB,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACpF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,mBAAmB,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACpF,QAAA,OAAO,CAAC,CAAC;KACV;AACF;;MCpGY,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvC,uCAAuC,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;MAM9D,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,QAAA,EAAA,2CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,2CAA2C,EAAE,CAAA;;MAMvD,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAmB,QAAgC,EAAA;QAAhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAwB;KAAI;8GAD5C,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlC,kCAAkC,EAAA,QAAA,EAAA,2CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAD9C,SAAS;mBAAC,EAAE,QAAQ,EAAE,2CAA2C,EAAE,CAAA;;;AC6B9D,MAAO,uBACX,SAAQ,qBAAqB,CAAA;AAf/B,IAAA,WAAA,GAAA;;;AAmBW,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA+B,WAAW,CAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAWtB,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,gBAAgB,EAAE,OAAO;SAC1B,CAAC;QAEO,IAAO,CAAA,OAAA,GAAG,KAAK,EAAoB,CAAC;;AAGpC,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,kCAAkC,CAAC,CAAC;;QAGlE,IAAW,CAAA,WAAA,GAAG,KAAK,EAAoB,CAAC;AAExC,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;QAE5E,IAAwB,CAAA,wBAAA,GAAG,QAAQ,CAAC,MAAe,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;;;AAIlH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1E,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAEhE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGnF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEhE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAE5G,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErF,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAEjE,IAAqB,CAAA,qBAAA,GAAG,QAAQ,CACvC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAChF,CAAC;;AAYO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,EAAE,CAAC,CAAC;;QAY3C,IAAgB,CAAA,gBAAA,GAAmB,IAAI,CAAC;QAYzC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAU,CAAC;;QAG/B,IAAU,CAAA,UAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAoExD,KAAA;IA9JC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAE3B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;KACF;AA2CD,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;AAMD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/B;IAID,IACI,KAAK,CAAC,CAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AACD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;KACzC;;IASD,OAAO,CAAC,MAAc,EAAE,KAAY,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IACS,UAAU,GAAA;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAED,IAAA,QAAQ,CAAC,KAAY,EAAA;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACS,WAAW,GAAA;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAEQ,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;;IAGD,SAAS,GAAA;AACP,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACxC,QAAA,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO;QAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAED,IAAA,MAAM,CAAC,KAAqB,EAAA;QAC1B,IACE,IAAI,CAAC,KAAK;;aAET,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,CAAC;AACtD,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;;AAEjG,gBAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,cAAc,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EACtG;YACA,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;IAGS,mBAAmB,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAG,CAAC,aAAa,CAAC;AAChD,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,GAAG,IAAI,CAAC,UAAU;SACnB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClD;KACF;8GAtKU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA4BsC,kCAAkC,EAClC,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,EAK7B,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uCAAuC,iNCzErF,wkDAqDA,EAAA,MAAA,EAAA,CAAA,6FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,eAAe,EAAA,aAAA,EAGV,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,wkDAAA,EAAA,MAAA,EAAA,CAAA,6FAAA,CAAA,EAAA,CAAA;8BAsFG,KAAK,EAAA,CAAA;sBADR,KAAK;;;MElGK,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAb7B,uBAAuB;YACvB,uCAAuC;YACvC,kCAAkC;AAClC,YAAA,kCAAkC,aAE1B,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,aAEpE,uBAAuB;YACvB,uCAAuC;YACvC,kCAAkC;YAClC,kCAAkC,CAAA,EAAA,CAAA,CAAA,EAAA;AAGzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EARrB,OAAA,EAAA,CAAA,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAQ3D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,uCAAuC;wBACvC,kCAAkC;wBAClC,kCAAkC;AACnC,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,0BAA0B,EAAE,kBAAkB,CAAC;AACvE,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,uCAAuC;wBACvC,kCAAkC;wBAClC,kCAAkC;AACnC,qBAAA;AACF,iBAAA,CAAA;;;ACLK,MAAO,oBAAqB,SAAQ,qBAAqB,CAAA;AAP/D,IAAA,WAAA,GAAA;;AAQqB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAE5C,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO,CAAC;;AAGrB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA,EAAE,aAAa,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,YAAY,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACpG,CAAC;;AAaO,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAY7C,KAAA;;IAtBC,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IACD,SAAS,GAAA;QACP,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAKD;;;;AAIG;IACH,YAAY,GAAA;;;AAGV,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KACrC;8GApCU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+bCpBjC,4wBA8BA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,iBAGN,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4wBAAA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,CAAA;;;AEuB3C,MAAO,yBAA0B,SAAQ,qBAAqB,CAAA;AAKlE,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACtB;AAED,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QAVO,IAAO,CAAA,OAAA,GAAG,eAAe,CAAuB,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAErG,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;QA2D3B,IAAW,CAAA,WAAA,GAAG,MAAM,EAAO,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,MAAM,CAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAiCxD;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAiC,IAAI,CAAC,CAAC;;;QAYvD,IAAI,CAAA,IAAA,GAAG,KAAK,CAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;;QAgC3C,IAAe,CAAA,eAAA,GAA4B,EAAE,CAAC;QAC9C,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QApI7B,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACnC,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC,EAAE,CAAC,CAAC,CAAC;YAEN,IAAI,CAAC,0BAA0B,EAAE,CAAC;;AAGlC,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAG;AAC5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;iBAC3B,CAAC,CACH,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAG;AAC7B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBAC5B,CAAC,CACH,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAU,KAAI;AAC5C,oBAAA,IAAI,CAAC,CAAC;wBAAE,OAAO;AACf,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;iBACjC,CAAC,CACH,CAAC;aACH;AACH,SAAC,CAAC,CAAA;KACH;;AAGD,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC;KACjC;IACD,IAAI,KAAK,CAAC,CAAM,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AAMD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;gBAC1B,OAAO;aACR;AAED,YAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAC3B;QACD,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B,EAAE,CAAC,CAAC,CAAC;KACP;AAEO,IAAA,iBAAiB,CAAC,CAAM,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;KAC9E;;IAGO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAEjC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAG;AAC7B,YAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACjD,KAAK,CAAC,YAAY,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;IAQO,yBAAyB,GAAA;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;AACtB,YAAA,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,YAAY,EAAE,CAAC;SAClB;KACF;IAMO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAG;gBAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5B,KAAK,CAAC,YAAY,EAAE,CAAC;AACvB,aAAC,CAAC,CAAC;SACJ;KACF;;AAGO,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACzC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACpB;AACO,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;AACO,IAAA,mBAAmB,CAAC,QAA8B,EAAA;QACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAElC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAES,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;IAKD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACxC;QAED,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,EAAE,CAAC,CAAC,CAAC;;QAGN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAG;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAC3B,CAAC,CACH,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAG;AAC7B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;aAC5B,CAAC,CACH,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAU,KAAI;AAC5C,gBAAA,IAAI,CAAC,CAAC;oBAAE,OAAO;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;aACjC,CAAC,CACH,CAAC;SACH;KACF;IACD,WAAW,GAAA;QACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;IACO,0BAA0B,GAAA;AAChC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;YACtC,GAAG,CAAC,WAAW,EAAE,CAAC;SACnB;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC3B;8GAzLU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EARzB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAGgE,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAoB,uFAnB3E,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAkB1B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;wDAOK,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,SAAS,CAAA;gBAkDlB,KAAK,EAAA,CAAA;sBADR,KAAK;;;MCrFK,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,yBAAyB,EAAE,oBAAoB,aACpD,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,yBAAyB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAE9C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;oBAC/D,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;AAC3D,iBAAA,CAAA;;;MCeY,iBAAiB,CAAA;AAK5B,IAAA,WAAA,CAA6B,cAAqC,EAAA;QAArC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;AAJjD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;AAIhE;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAC1C;;AAEG;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;AAChE;;AAEG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AAC1D;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAU3E;;AAEG;AACM,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpF;;;;AAIG;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAC7D,gBAAA,OAAO,KAAK,CAAC;aACd;YACD,OAAO,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;AAC5C,SAAC,CAAC,CAAC;AAmUH;;;AAGG;QACc,IAAkB,CAAA,kBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KAjX/B;AAkBtE;;;;AAIG;AACK,IAAA,aAAa,CAAC,KAAwB,EAAA;AAC5C,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACxC;AAmBD;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAgB,EAAA;QACvB,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7C,iBAAiB,GAAG,IAAI,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;SAC5D,CAAC,CACH,CAAC;AAEF,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AACO,IAAA,oBAAoB,CAAI,IAAO,EAAA;AACrC,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACxB;AACO,IAAA,cAAc,CAAC,WAAgB,EAAE,KAAa,EAAE,iBAA0B,EAAA;QAChF,IAAI,iBAAiB,EAAE;YACrB,OAAO;AACL,gBAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;AAChC,gBAAA,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3E,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,gBAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;aAC3B,CAAC;SACH;;QAED,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;QAGlD,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/G,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,KAAK,CAAC;;AAG3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrG,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE;YACxC,QAAQ,GAAG,CAAC,QAAQ,CAAC;SACtB;;QAGD,OAAO;AACL,YAAA,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;AAC7B,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC1B,YAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC;AACvB,YAAA,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;SAC3B,CAAC;KACH;AACD;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAc,EAAA;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAAE,OAAO;AAE/C,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAU,KAAI;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO;aACR;YACD,OAAO,CAAC,IAAI,CACV,CAAA,MAAA,EAAS,IAAI,CAAC,cAAc,CAAC,YAAY,CAAuC,oCAAA,EAAA,KAAK,EAAE,QAAQ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAG,CAAA,CAAA,CACxH,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;YAChC,iBAAiB,CAAC,UAAU,CAAC,CAAC;SAC/B;KACF;AACD;;;;;;;;;AASG;AACK,IAAA,mBAAmB,CAAC,OAAc,EAAA;AACxC,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,IAAG;YAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE;AACtG,gBAAA,OAAO,CAAC,IAAI,CACV,SAAS,IAAI,CAAC,cAAc,CAAC,YAAY,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAC1E,IAAI,CACL,CAAA,6EAAA,CAA+E,CACjF,CAAC;AACF,gBAAA,OAAO,KAAK,CAAC;aACd;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;AACD,IAAA,eAAe,CAAC,WAAgB,EAAA;AAC9B,QAAA,IAAI,MAA0C,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACnD;aAAM;YACL,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC;SAC/C;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KACjD;AAED;;;;;AAKG;IACH,WAAW,GAAA;QACT,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjD,YAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAClB;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE5B,QAAA,OAAO,GAAG,CAAC;KACZ;AACD;;;AAGG;IACK,iBAAiB,GAAA;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE5B,QAAA,OAAO,GAAG,CAAC;KACZ;AACD;;;;;;;;;AASG;IACH,UAAU,CAAC,GAAG,KAAwB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,YAAA,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE;AAC1C,YAAA,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACvC;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAsB,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,kBAAkB,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAC9B,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,MAAM;aACP;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;QAE1D,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAChE,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;KACjG;AACD;;;;AAIG;IACH,YAAY,CAAC,GAAG,KAAwB,EAAA;QACtC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;gBACzD,WAAW,GAAG,IAAI,CAAC;gBACnB,SAAS;aACV;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE7D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAClC;AAED;;AAEG;IACH,cAAc,GAAA;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAChC;AACD;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,IAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACjC;AACD;;;;AAIG;IACH,aAAa,CAAC,GAAG,KAAwB,EAAA;AACvC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;AACD;;;AAGG;IACH,eAAe,CAAC,GAAG,KAAwB,EAAA;AACzC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO;AAEzC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KACpE;AACD;;;AAGG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC;AAC1D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;KAC5C;AACD;;;AAGG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;KAC5C;AACD;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAEnD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,CAAC;KACzC;AACD;;;;;;;AAOG;IACH,iBAAiB,CAAC,MAAc,EAAE,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC;AACnD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAC5E,CAAC;QACF,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAEzG,QAAA,IAAI,aAAa,GAAG,mBAAmB,GAAG,MAAM,CAAC;AACjD,QAAA,IAAI,aAAa,IAAI,oBAAoB,CAAC,MAAM,EAAE;AAChD,YAAA,aAAa,IAAI,oBAAoB,CAAC,MAAM,CAAC;SAC9C;AACD,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,aAAa,IAAI,oBAAoB,CAAC,MAAM,CAAC;SAC9C;AACD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE;AACrD,YAAA,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;aACnC;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;KAClD;AAMF;;ACtYK,MAAgB,4BACpB,SAAQ,qBAAqB,CAAA;AAgB7B,IAAA,WAAA,CAAoB,GAAsB,EAAA;AACxC,QAAA,KAAK,EAAE,CAAC;QADU,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;;AAZjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,YAAY,EAAE,UAAU;SACzB,CAAC;;AAUO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA0B,SAAS,CAAC,CAAC;;AAqCxD,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAQ3F,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;;AAG3D,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAExF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;;AAQjF,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;;AAcnH,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;AAqBzB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAmB,SAAS,CAAC,CAAC;;AAiBhE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC1F,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAA4B,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAiB3E,IAAW,CAAA,WAAA,GAAG,MAAM,EAAS,CAAC;;QAG9B,IAAW,CAAA,WAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAW,CAAA,WAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;;AAgCjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;KA7KlD;;AASD,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;KACjC;IACD,IAAI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,iBAAiB,EAAE;YACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IACO,uBAAuB,GAAA;AAC7B,QAAA,MAAM,WAAW,GAAG,CAAC,GAAW,KAAU;AACxC,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,MAAA,EAAS,IAAI,CAAC,YAAY,CAAmB,gBAAA,EAAA,GAAG,4BAA4B,IAAI,CAAC,cAAc,CAAA,+CAAA,CAAiD,CACjJ,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,WAAW,CAAC,WAAW,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,WAAW,CAAC,WAAW,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,WAAW,CAAC,cAAc,CAAC,CAAC;SAC7B;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,WAAW,CAAC,gBAAgB,CAAC,CAAC;SAC/B;KACF;AAKD,IAAA,IAEI,6BAA6B,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;KAC/B;AASD,IAAA,IACI,0BAA0B,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;KAC5B;;;AAQQ,IAAA,gBAAgB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AACD,IAAA,UAAU,CAAC,OAAc,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAKD,IAAA,IACI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;IAES,WAAW,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IACS,UAAU,GAAA;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;AAE3B,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACxB;AAIQ,IAAA,OAAO,CAAC,KAAiB,EAAA;AAChC,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAErB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO;AAC3D,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AACQ,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;KAC7D;;AAQD,IAAA,gBAAgB,CAAC,IAAqB,EAAA;QACpC,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;AACJ,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC;KACH;;IAGD,IACI,KAAK,CAAC,QAAa,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAAE,YAAA,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC3B;;AASD,IAAA,UAAU,CAAC,IAAqB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAAE,OAAO;AAEpC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;IACD,UAAU,CAAC,GAAG,KAAwB,EAAA;AACpC,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC;AAErE,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE7D,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IACD,YAAY,CAAC,GAAG,KAAwB,EAAA;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;AAE3D,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAMD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,gBAAgB,CAAC,MAAuB,EAAE,KAAiB,EAAA;QACzD,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACD,gBAAgB,CAAC,MAAuB,EAAE,KAAiB,EAAA;QACzD,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;IAGD,WAAW,CAAC,MAAuB,EAAE,KAAiB,EAAA;QACpD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;;AAID,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBACpC,OAAO;aACR;YACD,KAAK,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO;aACR;YACD,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO;aACR;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO;aACR;YACD,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO;aACR;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,OAAO;iBACR;aACF;SACF;KACF;AACO,IAAA,uBAAuB,CAAC,KAAoB,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEjD,QAAA,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,gBAAgB,CAAC,CAAC;SACxC;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAAC,CAAC;SACtC;KACF;AACO,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KACxD;AACO,IAAA,cAAc,CAAC,KAAoB,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KACxD;AACO,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;AACO,IAAA,cAAc,CAAC,KAAoB,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;KACtC;IACO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;KACtC;8GAtSmB,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,oCAAA,EAAA,uBAAA,EAAA,oCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADjD,SAAS;sFA8BJ,KAAK,EAAA,CAAA;sBADR,KAAK;gBAsCF,6BAA6B,EAAA,CAAA;sBAFhC,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,WAAW;uBAAC,uBAAuB,CAAA;gBAahC,0BAA0B,EAAA,CAAA;sBAD7B,WAAW;uBAAC,yBAAyB,CAAA;gBAwBlC,qBAAqB,EAAA,CAAA;sBADxB,WAAW;uBAAC,mBAAmB,CAAA;gBAmD5B,KAAK,EAAA,CAAA;sBADR,KAAK;gBA4CN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,CAAA;gBAuBzB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MC7NxB,iCAAiC,CAAA;AAC5C,IAAA,WAAA,CAAqB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;KAAI;8GADxC,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjC,iCAAiC,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;mBAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE,CAAA;;;ACA9C,MAAA,cAAc,GAAG;AAC5B,IAAA,GAAG,kBAAkB;AACrB,IAAA,gBAAgB,EAAE,mBAAmB;AACrC,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,aAAa,EAAE,gBAAgB;EACtB;AAGE,MAAA,iBAAiB,GAAG;AAC/B,IAAA,GAAG,qBAAqB;AACxB,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,cAAc,EAAE,iBAAiB;;;ACiB7B,MAAO,sBAAuB,SAAQ,4BAA4B,CAAA;AAPxE,IAAA,WAAA,GAAA;;QAQoB,IAAY,CAAA,YAAA,GAAW,KAAK,CAAC;QAC7B,IAAc,CAAA,cAAA,GAAW,SAAS,CAAC;;AAG5C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAoB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,cAAc,CAAC,gBAAgB,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,SAAS,EAAE,GAAG,gBAAgB,GAAG,EAAE;YACxC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,GAAG,eAAe;AAC9D,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEzF,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAc,QAAQ,EAAE;YAClD,SAAS,EAAE,CAAC,IAAG;gBACb,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,QAAQ,KAAK,CAAC;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2DAAA,CAA6D,CAAC,CAAC;gBACnG,IAAI,QAAQ,GAAG,CAAC;AACd,oBAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,QAAQ,CAAA,EAAA,CAAI,CAAC,CAAC;AACnH,gBAAA,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE;AACtB,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,oBAAA,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CACP,CAAuF,oFAAA,EAAA,QAAQ,CAAgC,6BAAA,EAAA,YAAY,CAAI,EAAA,CAAA,CAChJ,CACF,CAAC;AACF,oBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC5B;AACD,gBAAA,OAAO,QAAQ,CAAC;aACjB;AACF,SAAA,CAAC,CAAC;;AAMM,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,iCAAiC,CAAC,CAAC;;AAUjE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAe,MAAK;YAC9C,MAAM,QAAQ,GAAiB,EAAE,CAAC;YAClC,IAAI,UAAU,GAAsB,EAAE,CAAC;;AAEvC,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;;AAE7B,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGtB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;oBAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;oBACvC,UAAU,GAAG,EAAE,CAAC;iBACjB;aACF;;AAED,YAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACvC,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,CAAC,CAAC;AAgBJ,KAAA;AArDC,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KACjF;;IAMD,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;;AA4BQ,IAAA,OAAO,CAAC,KAAiB,EAAA;AAChC,QAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE;YAAE,OAAO;AAEpD,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACvC;AAEQ,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;KACnC;8GAnGU,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoDM,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClF1E,80DAkDA,EAAA,MAAA,EAAA,CAAA,0kBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDpBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,iBAGR,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,80DAAA,EAAA,MAAA,EAAA,CAAA,0kBAAA,CAAA,EAAA,CAAA;;;MElBpC,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,EAAE,iCAAiC,aAC9D,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,sBAAsB,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA,EAAA;AAExD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;oBACzE,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;AACrE,iBAAA,CAAA;;;MCHY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAmB,QAA2C,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmC;KAAI;8GADvD,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAChD,iBAAA,CAAA;;;ACAY,MAAA,qBAAqB,GAAG;AACnC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,wBAAwB,GAAG;AACtC,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;;;ACmBZ,MAAgB,eAAmB,SAAQ,qBAAqB,CAAA;AADtE,IAAA,WAAA,GAAA;;AAKkB,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAA0B,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErF,IAAa,CAAA,aAAA,GAAG,KAAK,EAAmC,CAAC;;QAKzD,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5E,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEhF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,CAAC,EAAE;YACpC,SAAS,EAAE,CAAC,IAAG;gBACb,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,WAAW,CAAA,oBAAA,EAAuB,IAAI,CAAC,aAAa,CAAA,gBAAA,CAAkB,CAAC,CAAC;iBACvG;AACD,gBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,WAAW,CAAuB,oBAAA,EAAA,IAAI,CAAC,aAAa,CAAA,oCAAA,EAAuC,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;iBACnI;AACD,gBAAA,OAAO,IAAI,CAAC;aACb;AACF,SAAA,CAAC,CAAC;QAEM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAE9E,IAAiB,CAAA,iBAAA,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;;AAGtG,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAW,MAAK;YACtD,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAClC,YAAA,OAAO,yBAAyB,GAAG,GAAG,EAAE;AACtC,gBAAA,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACvC,gBAAA,yBAAyB,IAAI,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC;AAC5D,gBAAA,yBAAyB,GAAG,gBAAgB,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;aAC5E;AACD,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjB,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAG,EAAA,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;;AAGM,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA2B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEjF,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAsE,EAAE,EAAE;AACrG,YAAA,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,GAAG,IAAG;AACf,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,oBAAA,OAAO,EAAE,CAAC;iBACX;AACD,gBAAA,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,KAAK,IAAG;oBACtD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtC,OAAO;AACL,wBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;wBAC1B,eAAe,EAAE,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAG,CAAA,CAAA;qBACrD,CAAC;AACJ,iBAAC,CAAC,CAAC;aACJ;AACF,SAAA,CAAC,CAAC;;AAWM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAElE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;AACE,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,WAAA,EAAc,IAAI,CAAC,aAAa,EAAE,CAAE,CAAA;AACpC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,eAAe,EAAE,CAAE,CAAA;YACvC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;;;AAI7B,YAAA,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACvD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAEhE,IAAI,oBAAoB,GAAG,CAAC;AAAE,gBAAA,OAAO,GAAG,CAAC;YAEzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAC9D,OAAO,kBAAkB,GAAG,IAAI,CAAC;AACnC,SAAC,CAAC,CAAC;QACc,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAYtF,IAAW,CAAA,WAAA,GAAG,MAAM,EAAK,CAAC;;AAqC1B,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,yBAAyB,CAAC,CAAC;AAE1D,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA2B,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAChF,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAwB,qBAAqB,CAAC,IAAI,CAAC,CAAC;;AAGjE,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;QACxD,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAChC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;;AA4BjE,QAAA,IAAA,CAAA,gBAAgB,GAAgC,CAAC,CAAC,CAAC,CAAC;AA8D/D,KAAA;AAzLW,IAAA,sBAAsB,CAAC,GAA+B,EAAA;QAC9D,IAAI,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC;QAC9B,OAAO;AACL,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,GAAG,EAAE,GAAG;SACT,CAAC;KACH;IAmCD,IACI,KAAK,CAAC,QAAW,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KAC3B;AACD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AASS,IAAA,OAAO,CAAC,MAAc,EAAE,QAAiB,EAAE,QAAQ,GAAG,CAAC,EAAA;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC;AACpF,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzE,QAAA,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;KACvC;;AAGS,IAAA,WAAW,CAAC,CAAS,EAAA;;AAE7B,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B,QAAA,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;;AAE5B,QAAA,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpC,QAAA,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,QAAA,OAAO,CAAC,CAAC;KACV;AACS,IAAA,eAAe,CAAC,CAAS,EAAA;AACjC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,gBAAgB,CAAC;KAC5C;IACS,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAiBD,IAAA,qBAAqB,CAAC,KAA8B,EAAE,QAAQ,GAAG,CAAC,EAAA;AAChE,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;SACzE;KACF;IAMD,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE,OAAO;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;SAC5E;KACF;IAID,iBAAiB,CAAC,QAAQ,GAAG,CAAC,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;KACxD;AACS,IAAA,oBAAoB,CAAC,OAAe,EAAE,QAAA,GAA0B,CAAC,EAAA;AACzE,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,OAAO;YAAE,OAAO;QAC5D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACS,oBAAoB,CAAC,KAA8B,EAAE,QAAwB,EAAA;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC9C;IAGS,eAAe,GAAA;QACvB,OAAO,IAAI,CAAC,UAAU,EAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;KACjE;AACS,IAAA,kBAAkB,CAAC,OAAe,EAAA;;QAE1C,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;QAE/B,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC7D,QAAA,OAAO,OAAO,CAAC;KAChB;AACS,IAAA,yBAAyB,CAAC,KAA8B,EAAA;AAChE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACpC,QAAA,IAAI,QAAgB,CAAC;AACrB,QAAA,IAAI,KAAK,YAAY,UAAU,EAAE;AAC/B,YAAA,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;SAC1B;aAAM;YACL,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SAC3C;AACD,QAAA,MAAM,OAAO,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;KACzC;;AAGD,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO;aACR;YACD,KAAK,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,OAAO;aACR;SACF;KACF;AACS,IAAA,UAAU,CAAC,KAAoB,EAAE,KAAK,GAAG,CAAC,EAAA;QAClD,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtC;AACS,IAAA,UAAU,CAAC,KAAoB,EAAE,KAAK,GAAG,CAAC,EAAA;QAClD,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KACtC;8GArQmB,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ulEAkKK,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAlK7C,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;8BAwHJ,KAAK,EAAA,CAAA;sBADR,KAAK;gBAuEN,WAAW,EAAA,CAAA;sBAFV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBAC7C,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwD7C,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AChQ/B,MAAO,qBAAsB,SAAQ,eAAuB,CAAA;AAdlE,IAAA,WAAA,GAAA;;QAeW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC;;QAGxB,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;;AAGrB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AA6DpC,KAAA;IA3DW,mBAAmB,GAAA;AAC3B,QAAA,IAAI,CAAC,GAAoB,IAAI,CAAC,MAAM,CAAC;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,QAAA,IAAI,QAAQ;AAAE,YAAA,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAChC;IAED,iBAAiB,GAAA;QACf,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,SAAS,EAAE,IAAI,CAAC,aAAa;SAC9B,CAAC;KACH;;AAGD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACd,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;SACR;AACD,QAAA,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC9B;IACD,SAAS,CAAC,KAAK,GAAG,CAAC,EAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC5B;IACD,SAAS,CAAC,KAAK,GAAG,CAAC,EAAA;QACjB,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC7B;;AAGD,IAAA,wBAAwB,CAAC,KAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnC;AAGD,IAAA,aAAa,CAAC,KAA8B,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE,OAAO;AAC1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAClC;;AAGS,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAC5C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;;AAGvD,QAAA,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACpC;8GApEU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EARrB,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,qgFAiFA,EAAA,MAAA,EAAA,CAAA,4nCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Da,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACE,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,qgFAAA,EAAA,MAAA,EAAA,CAAA,4nCAAA,CAAA,EAAA,CAAA;8BA0DD,aAAa,EAAA,CAAA;sBAFZ,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBAC7C,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEhEnC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACrD,YAAY,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAC3B,qBAAqB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAE/C,kBAAkB,EAAA,OAAA,EAAA,CAHnB,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG1B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;AAChE,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;AAC5D,iBAAA,CAAA;;;ACGK,MAAO,0BAA2B,SAAQ,eAA4B,CAAA;AAP5E,IAAA,WAAA,GAAA;;QAQW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAa,CAAA,aAAA,GAAG,cAAc,CAAC;QAE9B,IAAM,CAAA,MAAA,GAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;AAoDnE,QAAA,IAAA,CAAA,aAAa,GAAiC,IAAI,CAAC,KAAK,CAAC;;AAoEhD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;AAUrD,KAAA;IAhIC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;AAE3E,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KACxD;;AAGO,IAAA,cAAc,CAAC,CAAM,EAAA;QAC3B,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;KACjE;AACO,IAAA,aAAa,CAAC,CAAM,EAAA;AAC1B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAC/E;AACO,IAAA,wBAAwB,CAAC,CAAmB,EAAA;AAClD,QAAA,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC;AACO,IAAA,qBAAqB,CAAC,CAAc,EAAA;AAC1C,QAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC,CAAC;AAC9B,QAAA,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;KACrC;AACD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;YACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;SACR;AACD,QAAA,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC1B,YAAA,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACZ,YAAA,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;SACf;AAAM,aAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAChC,YAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACb;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAgB,IAAI,CAAC,wBAAwB,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AACD,IAAA,IAAa,KAAK,GAAA;QAChB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChD;IACD,IAAa,KAAK,CAAC,CAAM,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;IAKS,mBAAmB,GAAA;QAC3B,MAAM,CAAC,GAAiC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAa,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;SACrC;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;KACxB;AAED,IAAA,iBAAiB,CAAC,IAAoB,EAAA;QACpC,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SACpC,CAAC;KACH;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC9B;;AAGD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;KACvD;AACD,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;KACnF;;AAGD,IAAA,wBAAwB,CAAC,KAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACnC;AAGD,IAAA,aAAa,CAAC,KAA8B,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE,OAAO;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC3D;;IAGS,oBAAoB,CAAC,OAAe,EAAE,QAAgB,EAAA;AAC9D,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,GAAG,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;;AAGrD,QAAA,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErC,QAAA,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnE,QAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClB,YAAA,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC;SACxB;aAAM;AACL,YAAA,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;SACzB;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;IAID,aAAa,CAAC,KAAiB,EAAE,QAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEpB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAClC;AACQ,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC9B;8GArIU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,sMCbvC,uzHAyHA,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD5Ga,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,iBAGb,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uzHAAA,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA,CAAA;8BAmG/C,aAAa,EAAA,CAAA;sBAFZ,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;sBAC7C,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEpGnC,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJnB,YAAA,EAAA,CAAA,0BAA0B,CAC/B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;AAEzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;oBAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;ACRY,MAAA,aAAa,GAAG;AAC3B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;;;ACAP,MAAA,YAAY,GAAG;AAC1B;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;AACZ;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;AACZ;;AAEG;AACH,IAAA,MAAM,EAAE,QAAQ;EACP;AAGE,MAAA,SAAS,GAAG;AACvB,IAAA,GAAG,oBAAoB;AACvB;;AAEG;AACH,IAAA,IAAI,EAAE,MAAM;;;MCbD,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAGnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,YAAY,CAAC,MAAM,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/F,CAAC;AACH,KAAA;8GAVY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,4bCVhC,+PAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,iBAGL,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+PAAA,EAAA,CAAA;;;AEa3C,MAAO,yBAA0B,SAAQ,qBAAqB,CAAA;AAdpE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAgB,aAAa,CAAC,OAAO,CAAC,CAAC;;AAG5D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjG,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAe,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAMpH,KAAA;IAJC,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,aAAa,CAAC,IAAI;YAAE,OAAO;QACxD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;8GAfU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EARzB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBH,obAiBA,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;+BACE,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,obAAA,EAAA,MAAA,EAAA,CAAA,wDAAA,CAAA,EAAA,CAAA;;;MEVU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAJZ,YAAA,EAAA,CAAA,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAElB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHjB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;MCEY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAJlB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAC9B,YAAY,EAAE,gBAAgB,aAC9B,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAExB,sBAAsB,EAAA,OAAA,EAAA,CAHvB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;AACzC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;AC8BK,MAAO,wBAAyB,SAAQ,qBAAqB,CAAA;AAcjE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAdD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAGnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGnG,IAAW,CAAA,WAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,IAAc,CAAA,cAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;;QAiBzB,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5E,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAA4B,YAAY,CAAC,CAAC;AACpE,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AAE5D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAoB,MAAK;AACpD,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1D,YAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,IAAI,EAAE,EAAE;AACX,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBAC3C,SAAS;iBACV;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;oBAChD,SAAS;iBACV;AACD,gBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aAC9C;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;;QAqBK,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAChC,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAkB,CAAA,kBAAA,GAAkB,IAAI,CAAC;QA3D/C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACxC,YAAA,IAAI,EAAE,KAAK,IAAI,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B;AACH,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ;;AA6BD,IAAA,UAAU,CAAC,CAAS,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB;AACD,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC3B;AACD,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvC;IACD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACtC;IACS,WAAW,GAAA;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACrC;IAMD,iBAAiB,CAAC,KAAa,EAAE,KAAiB,EAAA;AAChD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AACD,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,OAAO;SACR;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO;QACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAE,CAAC,KAAK,EAAE,CAAC;KAC5C;AACD,IAAA,mBAAmB,CAAC,MAAc,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAAE,OAAO;AAE5E,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACjD,QAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;KACxC;IACO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACpC;IAEQ,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;KAChC;IACQ,IAAI,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAAE,OAAO;QAC5E,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAE,CAAC,IAAI,EAAE,CAAC;KAC7D;;AAID,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,QAAQ,KAAK,CAAC,IAAI;YAChB,KAAK,KAAK,EAAE;gBACV,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,OAAO;aACR;YACD,KAAK,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO;aACR;YACD,KAAK,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO;aACR;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO;aACR;YACD,KAAK,KAAK,EAAE;AACV,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,OAAO;aACR;SACF;KACF;AACO,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B;AACO,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QAC5C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B;AACO,IAAA,YAAY,CAAC,KAAoB,EAAA;QACvC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;KAChC;AACO,IAAA,WAAW,CAAC,KAAoB,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACO,WAAW,GAAA;QACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;KAC7C;8GAtKU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrCH,8oBAoBA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDmBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,gBAAgB,EAAA,aAAA,EAGX,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,8oBAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,CAAA;wDA0HD,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEpJxB,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAJjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,EAAE,sBAAsB,aACpC,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEvB,qBAAqB,EAAA,OAAA,EAAA,CAHtB,YAAY,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGnC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,sBAAsB,CAAC;oBAC/C,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACQD,MAAM,cAAc,GAAoB;AACtC,IAAA,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;AAC/B,IAAA,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;CACrE,CAAC;AAgBI,MAAO,uBAAwB,SAAQ,qBAAqB,CAAA;AAwBhE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAxBD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,cAAc,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/F,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAInC,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,EAAE,CAAC,cAAc,GAAG,kBAAkB,GAAG,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAE,CAAA;AACpG,YAAA,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,qBAAqB,GAAG,EAAE;AACxD,YAAA,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,GAAG,yBAAyB,GAAG,EAAE;AAChE,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;QAGO,IAAW,CAAA,WAAA,GAAG,MAAM,CAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAU,CAAA,UAAA,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;;QAWpD,IAAK,CAAA,KAAA,GAAG,KAAK,CAAgB,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAS,MAAK;AACnD,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AAC7E,YAAA,OAAO,eAAe,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AACtD,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAyB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAqD3F,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAsB,MAAK;YACpD,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACnC,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,gBAAA,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;aAC3B;YACD,OAAO;AACL,gBAAA,oBAAoB,EAAE,WAAW;AACjC,gBAAA,uBAAuB,EAAE,KAAK,CAAC,aAAa,IAAI,MAAM;aACvD,CAAC;AACJ,SAAC,CAAC,CAAC;QA5ED,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ;AAWD,IAAA,UAAU,CAAC,CAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACnB;;AAGO,IAAA,WAAW,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,OAAe,CAAC;QACpB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS,GAAG,KAAK,CAAC;SACnB;AAAM,aAAA,IAAI,KAAK,CAAC,SAAS,EAAE;YAC1B,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3C;aAAM;YACL,OAAO,GAAG,EAAE,CAAC;SACd;QACD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO;YACP,aAAa;YACb,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM;YACjD,cAAc,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI;YAC1C,aAAa,EAAE,KAAK,CAAC,aAAa;AAClC,YAAA,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;AAC7B,YAAA,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;SACxC,CAAC;KACH;;AAGD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;SACR;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YACrC,QAAQ,GAAG,CAAC,CAAC;SACd;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;KAChD;IAES,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;8GA1FU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCH,umBAoBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDgBa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,umBAAA,EAAA,CAAA;;;MEzBU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJhB,YAAA,EAAA,CAAA,uBAAuB,CAC5B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACRY,MAAA,wBAAwB,GAAG;AACtC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,WAAW;;;ACkBlB,MAAO,0BAA2B,SAAQ,qBAAqB,CAAA;AAdrE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;;AAG3D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA2B,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA4B,SAAS,CAAC,CAAC;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACjC,OAAO,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnH,SAAC,CAAC,CAAC;AACJ,KAAA;8GAbY,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAR1B,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBH,o5BAyBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDLa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,kBAAkB,EAAA,aAAA,EAGb,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,o5BAAA,EAAA,CAAA;;;METU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAJnB,YAAA,EAAA,CAAA,0BAA0B,CAC/B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;AAEzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;oBAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;ACRY,MAAA,aAAa,GAAG;AAC3B,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,QAAQ,EAAE,UAAU;;;ACkBhB,MAAO,uBAAwB,SAAQ,qBAAqB,CAAA;AAdlE,IAAA,WAAA,GAAA;;AAeW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAG3B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAuB,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAEzE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,qBAAA,EAAwB,IAAI,CAAC,eAAe,EAAE,CAAE,CAAA;AAChD,YAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC/B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AASO,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,aAAa,CAAC,UAAU,CAAC,CAAC;AAajE,KAAA;;IAnBC,IAAa,SAAS,CAAC,CAAM,EAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;KAC9E;;IAKD,WAAW,GAAA;AACT,QAAA,IAAI,QAAQ,GAAkB,aAAa,CAAC,UAAU,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,aAAa,CAAC,UAAU,EAAE;AAC7C,YAAA,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;SACnC;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;8GApCU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBH,gmBAkBA,EAAA,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDGa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,gmBAAA,EAAA,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA,CAAA;;;MEVU,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJhB,YAAA,EAAA,CAAA,uBAAuB,CAC5B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACKK,MAAO,kBAAmB,SAAQ,WAAW,CAAA;AAPnD,IAAA,WAAA,GAAA;;AAQW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,aAAA,EAAgB,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;YAC7B,IAAI,CAAC,aAAa,EAAE,GAAG,CAAoB,kBAAA,CAAA,GAAG,EAAE;YAChD,IAAI,CAAC,QAAQ,EAAE,GAAG,kBAAkB,GAAG,EAAE;AAC1C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,KAAA;8GAjBY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6bCb/B,0XAgBA,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDHa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAGJ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0XAAA,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA,CAAA;;;MEFpC,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJX,YAAA,EAAA,CAAA,kBAAkB,CACvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACKK,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;AAPtE,IAAA,WAAA,GAAA;;AAQW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,UAAU,CAAC,MAAM,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;YACE,4BAA4B;AAC5B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,EAAE,GAAG,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YACnE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAoB,kBAAA,CAAA,GAAG,EAAE;YAChD,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;AACpC,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AACH,KAAA;8GAnBY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,wuBCbtC,qWAaA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDAa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,iBAGZ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qWAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,CAAA;;;MEFpC,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAJlB,YAAA,EAAA,CAAA,yBAAyB,CAC9B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAExB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAHvB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;ACRY,MAAA,qBAAqB,GAAG;AACnC,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,YAAY,EAAE,eAAe;;;ACuBzB,MAAO,2BAA4B,SAAQ,qBAAqB,CAAA;AAPtE,IAAA,WAAA,GAAA;;QAQW,IAAM,CAAA,MAAA,GAAG,KAAK,CAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAO5C,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,YAAY,EAAE,UAAU;SACzB,CAAC;;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAO,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAQ,KAAK,CAAC,CAAC;QACvC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAc,CAAA,cAAA,GAAG,eAAe,CAAC;AAEzB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAS,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAUzD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA0B,SAAS,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAc,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAG7F,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAwB,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAExE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1G,CAAC;QAWO,IAAW,CAAA,WAAA,GAAG,MAAM,EAAO,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,MAAM,CAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAWhD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAwC7B,KAAA;AA3GC,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;KACtB;IAmBD,IACI,KAAK,CAAC,CAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC/B;AACD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAClC;;AAmBD,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAClC;IACD,IAAI,KAAK,CAAC,CAAM,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;AAMD,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACjC;IAGD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACxC;KACF;IAES,WAAW,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;AAED,IAAA,eAAe,CAAC,CAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;KAC1C;AACD,IAAA,WAAW,CAAC,CAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;KACpC;AACD,IAAA,UAAU,CAAC,CAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AACD,IAAA,YAAY,CAAC,CAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AACD,IAAA,UAAU,CAAC,CAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;8GA7GU,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,owDC3BxC,2mCAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDPa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2mCAAA,EAAA,CAAA;8BAM3C,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,SAAS,CAAA;gBAuBlB,KAAK,EAAA,CAAA;sBADR,KAAK;gBA0BF,KAAK,EAAA,CAAA;sBADR,KAAK;;;MEnEK,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAJpB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAChC,YAAY,EAAE,oBAAoB,aAClC,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAE1B,wBAAwB,EAAA,OAAA,EAAA,CAHzB,YAAY,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGjC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;oBAC7C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCCY,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;;AASW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAElE,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC,MAAc,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtF,KAAA;8GALY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uLCVnC,6QAaA,EAAA,MAAA,EAAA,CAAA,weAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDHa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,iBAGR,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6QAAA,EAAA,MAAA,EAAA,CAAA,weAAA,CAAA,EAAA,CAAA;;;MECpC,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJf,YAAA,EAAA,CAAA,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCJY,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAA8C,EAAA;QAA9C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsC;KAAI;8GAD1D,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,+CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,+CAA+C,EAAE,CAAA;;;ACE3D,MAAA,eAAe,GAAG;AAC7B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;EACH;AAGE,MAAA,qBAAqB,GAAG;AACnC,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,SAAS;EACT;AAGE,MAAA,kBAAkB,GAAG;AAChC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;EACH;AAGE,MAAA,eAAe,GAAG;AAC7B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;;;MCLH,0BAA0B,CAAA;;AAuBrC,IAAA,WAAA,GAAA;AAtBS,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3E,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGjF,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,eAAe,CAAC,OAAO,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkB,eAAe,CAAC,WAAW,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;AACE,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,uBAAA,EAA0B,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;AACvC,YAAA,CAAA,uBAAA,EAA0B,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;YACvC,IAAI,CAAC,SAAS,EAAE,GAAG,8BAA8B,GAAG,EAAE;AACvD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAgBO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAK;AAC5C,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1F,gBAAA,OAAO,8BAA8B,CAAC;aACvC;YACD,MAAM,YAAY,GAAG,CAA6B,0BAAA,EAAA,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACnE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,MAAM,EAAE;gBAC1C,OAAO,YAAY,GAAG,CAA+B,4BAAA,EAAA,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;aAC7E;AACD,YAAA,OAAO,YAAY,CAAC;AACtB,SAAC,CAAC,CAAC;AAMM,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAA0B,OAAO;AAClE,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;AACxB,SAAA,CAAC,CAAC,CAAC;QA9BF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,IAAI,EAAE;gBAClF,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CACP,CAAA,6HAAA,CAA+H,CAChI,CACF,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACJ;8GAjCU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAgDvB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,oCAAoC,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6BCtEzE,qrBAuBA,EAAA,MAAA,EAAA,CAAA,0OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,iBAGb,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qrBAAA,EAAA,MAAA,EAAA,CAAA,0OAAA,CAAA,EAAA,CAAA;wDAmD/C,aAAa,EAAA,CAAA;sBADZ,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,oCAAoC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;ME5D9D,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAvB,uBAAuB,EAAA,YAAA,EAAA,CAJnB,0BAA0B,EAAE,oCAAoC,aACrE,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,0BAA0B,EAAE,oCAAoC,CAAA,EAAA,CAAA,CAAA,EAAA;AAE/D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHxB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,0BAA0B,EAAE,oCAAoC,CAAC;oBAChF,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,oCAAoC,CAAC;AAC5E,iBAAA,CAAA;;;MCLY,uCAAuC,CAAA;AAClD,IAAA,WAAA,CAAmB,QAAiD,EAAA;QAAjD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyC;KAAI;8GAD7D,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAvC,uCAAuC,EAAA,QAAA,EAAA,kDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD,SAAS;mBAAC,EAAE,QAAQ,EAAE,kDAAkD,EAAE,CAAA;;;ACI9D,MAAA,wBAAwB,GAAG;AACtC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,OAAO,EAAE,SAAS;EACT;AAGE,MAAA,qBAAqB,GAAG;AACnC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;;;MCHD,6BAA6B,CAAA;AAP1C,IAAA,WAAA,GAAA;QAQW,IAAK,CAAA,KAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhF,IAAY,CAAA,YAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;;AAGzE,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAA2B,wBAAwB,CAAC,WAAW,CAAC,CAAC;AACnF,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAuB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAwB,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAEnE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MACpC;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,4BAAA,EAA+B,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/C,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;YAC3B,IAAI,CAAC,SAAS,EAAE,GAAG,gCAAgC,GAAG,EAAE;YACxD,IAAI,CAAC,OAAO,EAAE,GAAG,8BAA8B,GAAG,EAAE;AACrD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AAEO,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAS,MAAK;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACpF,OAAO,CAAA,oCAAA,EAAuC,UAAU,CAAA,CAAA,CAAG,CAAC;AAC9D,SAAC,CAAC,CAAC;AAQM,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAA6B,OAAO;AACrE,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3C,SAAA,CAAC,CAAC,CAAC;AACL,KAAA;8GAzCY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EA8B1B,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,uCAAuC,EAC7C,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,6BC5CrB,smBAuBA,EAAA,MAAA,EAAA,CAAA,28BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDVa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAGhB,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,smBAAA,EAAA,MAAA,EAAA,CAAA,28BAAA,CAAA,EAAA,CAAA;8BAmC/C,aAAa,EAAA,CAAA;sBAHZ,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uCAAuC,EAAE;AACrD,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAA;;;MEnCU,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAA1B,0BAA0B,EAAA,YAAA,EAAA,CAJtB,6BAA6B,EAAE,uCAAuC,aAC3E,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,6BAA6B,EAAE,uCAAuC,CAAA,EAAA,CAAA,CAAA,EAAA;AAErE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,uCAAuC,CAAC;oBACtF,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,uCAAuC,CAAC;AAClF,iBAAA,CAAA;;;ACTY,MAAA,SAAS,GAAG;AACvB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,aAAa,GAAG;AAC3B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;;;MCLH,oBAAoB,CAAA;IAC/B,WACU,CAAA,MAAkB,EAClB,SAAoB,EAAA;QADpB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAGrB,IAAI,CAAA,IAAA,GAAG,KAAK,CAAS,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,kBAAkB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC3F,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;AAErE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA+B,aAAa,CAAC,UAAU,EAAE;AAChF,YAAA,KAAK,EAAE,kBAAkB;YACzB,SAAS,EAAE,CAAC,IAAG;gBACb,QAAQ,CAAC;oBACP,KAAK,aAAa,CAAC,MAAM;wBACvB,OAAO,aAAa,CAAC,WAAW,CAAC;oBACnC,KAAK,aAAa,CAAC,KAAK,CAAC;oBACzB,KAAK,aAAa,CAAC,KAAK;wBACtB,OAAO,aAAa,CAAC,UAAU,CAAC;oBAClC,KAAK,aAAa,CAAC,KAAK;wBACtB,OAAO,aAAa,CAAC,UAAU,CAAC;AAElC,oBAAA;AACE,wBAAA,OAAO,CAAC,CAAC;iBACZ;aACF;AACF,SAAA,CAAC,CAAC;QAEM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAS,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAE9D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3G,IAAO,CAAA,OAAA,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErG,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAC1C;YACE,WAAW;AACX,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,mBAAA,EAAsB,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAA;YACvC,IAAI,CAAC,MAAM,EAAE,GAAG,kBAAkB,GAAG,EAAE;YACvC,IAAI,CAAC,OAAO,EAAE,GAAG,mBAAmB,GAAG,sBAAsB;AAC9D,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;AA4Be,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAwB,SAAS,CAAC,CAAC;KArEtE;IA2CI,mBAAmB,GAAA;AACzB,QAAA,IAAI;AACF,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACzB,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;AACzD,YAAA,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACzD,YAAA,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAExD,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBACf,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK,CAAmB,CAAC;AAC1D,gBAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;gBAE1C,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,gBAAA,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9B,gBAAA,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aAClC;AAED,YAAA,OAAO,OAAO,CAAC;SAChB;QAAC,OAAO,KAAc,EAAE;AACvB,YAAA,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,KAAK,CAAC,OAAO,GAAG,qEAAqE,GAAG,KAAK,CAAC,OAAO,CAAC;AACtG,gBAAA,MAAM,KAAK,CAAC;aACb;AACD,YAAA,MAAM,IAAI,KAAK,CAAC,qEAAqE,GAAG,KAAK,CAAC,CAAC;SAChG;KACF;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC7E;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KAChE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;KACtE;IACD,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC7E;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;KACzE;8GA3FU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAA;;;MCAY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJb,YAAA,EAAA,CAAA,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACRY,MAAA,sBAAsB,GAAG;AACpC,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,MAAM,EAAE,oBAAoB;AAC5B,IAAA,KAAK,EAAE,mBAAmB;AAC1B,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,gBAAgB,EAAE,QAAQ;AAC1B,IAAA,eAAe,EAAE,OAAO;;;MCOb,2BAA2B,CAAA;AAPxC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGrF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyB,sBAAsB,CAAC,OAAO,CAAC,CAAC;;QAQ3E,IAAK,CAAA,KAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAK9F,KAAA;AAXC,IAAA,IAAI,SAAS,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjD,QAAA,OAAO,kBAAkB,WAAW,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,EAAE,EAAE,CAAC;KACtF;IAKD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,2EAAA,CAA6E,CAAC,CAAC;KAChH;8GAlBU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,4kBCbxC,iVAeA,EAAA,MAAA,EAAA,CAAA,sJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDFa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iVAAA,EAAA,MAAA,EAAA,CAAA,sJAAA,CAAA,EAAA,CAAA;;;MEFpC,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAJpB,YAAA,EAAA,CAAA,2BAA2B,CAChC,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAHzB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCFY,aAAa,CAAA;IACxB,SAAS,CAAC,KAAa,EAAE,QAAkB,EAAA;AACzC,QAAA,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACrC;8GAHU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAb,aAAa,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;MCeY,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAA0B,kBAAkB,CAAC,CAAC;AAQxE,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGhF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAExE,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,KAAA;IAbC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAG,CAAC,aAAa,CAAC,SAAS,EAAE;AAClE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,8EAAA,CAAgF,CAAC,CAAC;SACnG;KACF;8GAPU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6iBCpB/B,2RAaA,EAAA,MAAA,EAAA,CAAA,wEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAGJ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2RAAA,EAAA,MAAA,EAAA,CAAA,wEAAA,CAAA,EAAA,CAAA;;;MEZpC,kBAAkB,CAAA;AAS7B,IAAA,WAAA,GAAA;AARS,QAAA,IAAA,CAAA,UAAU,GAA4B,MAAM,EAAC,UAAuB,EAAC,CAAC;AACtE,QAAA,IAAA,CAAA,QAAQ,GAAc,MAAM,CAAC,SAAS,CAAC,CAAC;;AAGxC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEvG,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAW,MAAM,CAAC,SAAS,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC;QAGhG,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,aAAa,CAAC,OAAiB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE9C,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtG,QAAA,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAExE,QAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;YACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACJ;8GAzBU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAlB,kBAAkB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;;;MCMY,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJX,YAAA,EAAA,CAAA,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAC1D,EAAA,OAAA,EAAA,CAAA,YAAY,CACZ,EAAA,OAAA,EAAA,CAAA,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAHhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAAC;oBACrE,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,CAAC;AACjE,iBAAA,CAAA;;;MCWY,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAA0B,kBAAkB,CAAC,CAAC;QAQxE,IAAU,CAAA,UAAA,GAAG,OAAO,CAAC;AACrB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAkD,SAAS,EAAE;AAChF,YAAA,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACxD,SAAA,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGhF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAwB,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAExE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAS,MAAM,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,KAAA;IAjBC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,SAAS,EAAE;AACnE,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wFAAA,CAA0F,CAAC,CAAC;SAC7G;KACF;8GAPU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,yjBCrBvC,yfAsBA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,iBAGb,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yfAAA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA,CAAA;;;METpC,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAJnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC/B,YAAY,EAAE,eAAe,aAC7B,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEzB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,YAAY,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;oBACxC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;ACPY,MAAA,eAAe,GAAG;AAC7B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;;;ACoBH,MAAA,QAAQ,GAAG;AACtB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,UAAU,EAAE,YAAY;EACf;AA6BX;AACa,MAAA,eAAe,GAAG;AAC7B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,SAAS,EAAE,WAAW;EACb;AAGE,MAAA,YAAY,GAAG;AAC1B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,uBAAuB,GAAG;AACrC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;EACL;AAGE,MAAA,cAAc,GAAG;AAC5B,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,cAAc;;;ACrFvB,SAAU,gBAAgB,CAAC,CAAmC,EAAA;IAClE,OAAO,UAAU,IAAI,CAAC,CAAC;AACzB,CAAC;AAEK,SAAU,iBAAiB,CAAC,IAA0C,EAAA;AAC1E,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAEe,SAAA,aAAa,CAAI,OAAc,EAAE,GAAU,EAAA;IACzD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AACzC,IAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAClB;KACF;AACD,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;AACzC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC/C;AACH;;MCba,WAAW,CAAA;AAwBtB,IAAA,WAAA,CACE,QAAa,EACb,KAAa,EACb,IAAW,EACX,WAA8B,EAC9B,QAAiB,EACjB,IAAa,EACb,OAAO,GAAG,KAAK,EAAA;AA9BA,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAM,SAAS,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAQ,EAAE,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AAErC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAW5C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC5B;IACD,OAAO,YAAY,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;KACjE;AACF,CAAA;MAoBY,UAAU,CAAA;IAKrB,WAAY,CAAA,IAAsC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAA;AAJnE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAmC,SAAgB,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAGnC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC3B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,gBAAgB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AACD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,gBAAgB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;AACD;;;;AAIG;AACK,IAAA,SAAS,CAAC,KAAkC,EAAA;AAClD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AACnD,QAAA,OAAO,KAAK,CAAC;KACd;AACF,CAAA;MAEY,gBAAgB,CAAA;AAO3B,IAAA,WAAA,CAA6B,cAAoC,EAAA;QAApC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAsB;AANhD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;AAEzC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAiB,EAAE,CAAC,CAAC;AAI3D;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AACtD;;AAEG;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,uBAAuB,CAAC,IAAI,EAAE;AACjH,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;aAC3B;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AACpC,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC;YAC5B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;AACH;;AAEG;QACM,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAgB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACrG;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAG,QAAQ,CAAgB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC3G;;AAEG;QACM,IAAkB,CAAA,kBAAA,GAAG,QAAQ,CAAgB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5G;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAU1E;;AAEG;AACM,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnF;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7E;;;AAGG;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAChI;;;;AAIG;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AACnB,gBAAA,OAAO,KAAK,CAAC;aACd;YACD,OAAO,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;AAC5C,SAAC,CAAC,CAAC;AAEH;;;AAGG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;AACtD;;;AAGG;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;QA0XpE,IAAkB,CAAA,kBAAA,GAAkB,IAAI,CAAC;QACzC,IAAgB,CAAA,gBAAA,GAAoB,IAAI,CAAC;KA5coB;AAoCrE;;;;AAIG;AACK,IAAA,aAAa,CAAC,KAAoB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC3C;;AAyCD;;;AAGG;AACH,IAAA,UAAU,CAAC,IAA0C,EAAA;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KACvD;AACD;;;;AAIG;AACK,IAAA,kBAAkB,CAAC,KAA8B,EAAA;AACvD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;SAC7C;AACD,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAmB,CAAC;KAC1D;AACD;;;;AAIG;AACK,IAAA,mBAAmB,CAAC,IAA0C,EAAA;QACpE,MAAM,WAAW,GAAsB,EAAE,CAAC;AAE1C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAC1B,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,SAAS;aACV;AACD,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7D;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AACD;;;;AAIG;AACK,IAAA,oBAAoB,CAAC,IAA0C,EAAA;QACrE,IAAI,iBAAiB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAqB,EAAE;AAC3E,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,MAAM,GAAG,GAAG;gBAAE,GAAG,GAAG,MAAM,CAAC;SAChC;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AACD;;;;;;AAMG;AACK,IAAA,kBAAkB,CACxB,IAA0C,EAC1C,UAAkB,EAClB,cAAsB,EAAA;AAEtB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;SAC/E;AACD,QAAA,MAAM,WAAW,GAA4B,CAAC,EAAE,CAAC,CAAC;AAClD,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;AAC1B,gBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC;gBACzE,SAAS;aACV;YACD,MAAM,UAAU,GAA4B,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3H,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACnC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,gBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aAC1B;AACD,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3B;AACD,YAAA,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;;AAGD;;;AAGG;AACH,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAE,OAAO;QAEtC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACpC;AACD;;;;;;;AAOG;IACK,cAAc,CAAC,WAAgB,EAAE,KAAa,EAAA;;AAEpD,QAAA,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;;AAGjE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtG,IAAI,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE;YACvC,IAAI,GAAG,CAAC,IAAI,CAAC;SACd;;AAGD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3G,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE;YAC3C,QAAQ,GAAG,CAAC,QAAQ,CAAC;SACtB;AAED,QAAA,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/E;AACD;;;;;;;AAOG;IACK,WAAW,CAAC,WAAgB,EAAE,KAAa,EAAA;QACjD,MAAM,IAAI,GAAU,EAAE,CAAC;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAClC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;AAEzC,YAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAE;oBACjD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;oBACnC,SAAS;iBACV;gBACD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;gBAChD,SAAS;aACV;AACD,YAAA,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;AACnC,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrB,SAAS;aACV;AACD,YAAA,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACzC,SAAS;aACV;AACD,YAAA,MAAM,YAAY,GAAG,OAAO,UAAU,KAAK,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;YAC9F,MAAM,IAAI,KAAK,CAAC,CAAA,oCAAA,EAAuC,YAAY,CAAc,WAAA,EAAA,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC;SACxF;QACD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACpC;AACD;;;AAGG;AACH,IAAA,UAAU,CAAC,OAAiB,EAAA;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC;KAC7B;;AAGD;;;;;AAKG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC;KAClE;AACD;;;;;;;AAOG;IACH,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC9D;AACD;;;;;AAKG;IACH,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACrC;AACD;;;AAGG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACtC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACrC;AACD;;;;;;;;;AASG;IACH,UAAU,CAAC,GAAG,OAAiB,EAAA;AAC7B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3G,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACpD;QAED,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;AAC7G,QAAA,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE;AACpC,YAAA,kBAAkB,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,SAAS;AAC9B,YAAA,IAAI,mBAAmB,IAAI,CAAC,EAAE;gBAC5B,MAAM;aACP;AACD,YAAA,mBAAmB,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC1B;QAED,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC;AAC5E,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;KACrF;AACD;;;;AAIG;IACH,YAAY,CAAC,GAAG,OAAiB,EAAA;QAC/B,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,QAAA,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC1B;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;KAChD;;AAGD;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC5C,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;KACF;AACD;;;;AAIG;AACH,IAAA,mBAAmB,CAAC,KAAa,EAAA;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAClC;AACD;;;;AAIG;IACH,aAAa,CAAC,GAAG,OAAiB,EAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC5B;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;AACD;;;AAGG;IACH,eAAe,CAAC,GAAG,OAAiB,EAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO;AAEzC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;KACF;AACD;;;AAGG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;AAClE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;KAC5C;AACD;;;AAGG;IACH,iBAAiB,GAAA;QACf,IAAI,CAAC,cAAc,EAAE,CAAC;AAEtB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;KAC5C;AACD;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC,CAAC;KACzC;AACD;;;;;;;AAOG;IACH,iBAAiB,CAAC,MAAc,EAAE,QAAkB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC;AACnD,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAC/C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAC5E,CAAC;QACF,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AAEzG,QAAA,IAAI,aAAa,GAAG,mBAAmB,GAAG,MAAM,CAAC;AACjD,QAAA,IAAI,aAAa,IAAI,oBAAoB,CAAC,MAAM,EAAE;AAChD,YAAA,aAAa,IAAI,oBAAoB,CAAC,MAAM,CAAC;SAC9C;AACD,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,aAAa,IAAI,oBAAoB,CAAC,MAAM,CAAC;SAC9C;AACD,QAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QAE5D,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE;AACjC,gBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;aACrC;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SAC1C;AACD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;KAChD;AAMD,IAAA,uBAAuB,CAAC,MAAc,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,MAAM,EAAE;YACtC,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CAAC,SAAS,EAAE;AAChD,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC;aAC7C;iBAAM;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;aAC5C;AACD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IACD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAC1C;AACD,IAAA,iBAAiB,CAAC,MAAc,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,MAAM,EAAE;YACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACO,IAAA,mBAAmB,CAAC,WAAqB,EAAA;QAC/C,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO;SACR;AACD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAChD,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO;SACR;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,yFAAyF,eAAe,CAAA,yEAAA,CAA2E,CACpL,CAAC;SACH;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,MAAM,GACV,UAAU,CAAC,MAAM;AACjB,aAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACR,IAAI,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,SAAS,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;AACjC,gBAAA,OAAO,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;KACvH;AACF;;MC5mBY,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAFpC,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC,QAAQ,CAAmB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;KAE5B;8GAHtC,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;mBAAC,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAA;;MAQpD,oCAAoC,CAAA;AAC/C,IAAA,WAAA,CAAmB,QAA2C,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmC;KAAI;8GADvD,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApC,oCAAoC,EAAA,QAAA,EAAA,iDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBADhD,SAAS;mBAAC,EAAE,QAAQ,EAAE,iDAAiD,EAAE,CAAA;;MAQ7D,0CAA0C,CAAA;AACrD,IAAA,WAAA,CAAmB,QAA2C,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmC;KAAI;8GADvD,0CAA0C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1C,0CAA0C,EAAA,QAAA,EAAA,wDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAHtD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wDAAwD;AACnE,iBAAA,CAAA;;MAMY,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CAAmB,QAA0C,EAAA;QAA1C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkC;KAAI;8GADtD,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnC,mCAAmC,EAAA,QAAA,EAAA,gDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,SAAS;mBAAC,EAAE,QAAQ,EAAE,gDAAgD,EAAE,CAAA;;AAKzE;MAEa,sCAAsC,CAAA;AACjD,IAAA,WAAA,CAAmB,QAAwC,EAAA;QAAxC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgC;KAAI;8GADpD,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtC,sCAAsC,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBADlD,SAAS;mBAAC,EAAE,QAAQ,EAAE,mDAAmD,EAAE,CAAA;;;MCA/D,eAAe,CAAA;AAC1B,IAAA,WAAA,CAA6B,WAAgC,EAAA;QAAhC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAqB;AAEpD,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAU,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAExF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAgB,MAAK;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAU,MAAK;YAC3C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACrG,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAA0B,MAAK;YACnE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,IAAI,CAAC;YACxB,OAAO;gBACL,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACpF,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;aAC3E,CAAC;AACJ,SAAC,CAAC,CAAC;;AAGM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAU,MAAK;AAClD,YAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpF,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAU,MAAK;YACjD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACrG,SAAC,CAAC,CAAC;;AA+BM,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAgC,MAAK;YAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK;gBACR,MAAM,IAAI,KAAK,CAAC,CAAS,MAAA,EAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAqE,mEAAA,CAAA,CAAC,CAAC;AAE9H,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAG,CAAC;YAC7C,OAAO;AACL,gBAAA,UAAU,EAAE,IAAI,CAAC,WAAW,EAAG;AAC/B,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AAC7B,gBAAA,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/B,gBAAA,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;aAC/B,CAAC;AACJ,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAmE,MAAK;YAC3G,OAAO;gBACL,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC/C,gBAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC7C,gBAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC3C,gBAAA,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC1C,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;aAC1C,CAAC;AACJ,SAAC,CAAC,CAAC;KAlF8D;;AA8BjE,IAAA,OAAO,CAAC,CAAS,EAAA;QACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9B;IACD,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAChC;IACD,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,OAAO,CAAC,CAAC;KACV;IACD,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAChC;IACD,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAChC;IACD,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAG,CAAC,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAChC;AA4BF;;ACpGK,MAAO,8BAA+B,SAAQ,uBAAuB,CAAA;AAP3E,IAAA,WAAA,GAAA;;QAQW,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEZ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;;AAGhD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;QACtC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAgD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;QAExB,IAAuB,CAAA,uBAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC1E,IAAe,CAAA,eAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;;AAQ1D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,CAAC,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1G,CAAC;;AAGO,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/F,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;QAEpD,IAAoB,CAAA,oBAAA,GAAG,KAAK,CACnC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,GAAG,iBAAiB,CAAA,GAAA,EAAM,gBAAgB,CAAO,IAAA,EAAA,UAAU,CAAE,CAAA,CACvH,CAAC;;AAGO,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AAEjE,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;AA4C/D,KAAA;IA1EC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAAE,OAAO;AACnD,QAAA,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACtF;;AA8BD,IAAA,oBAAoB,CAAC,QAAgB,EAAA;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;AAC7B,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACxC;AACD,IAAA,YAAY,CAAC,OAAe,EAAA;QAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;AAC7B,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IACD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,OAAO;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;8GAvFU,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,0sDCd3C,u7DA4DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Ca,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,iBAGjB,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u7DAAA,EAAA,CAAA;;;AEwC3C,MAAO,oBAAqB,SAAQ,uBAAuB,CAAA;AAPjE,IAAA,WAAA,GAAA;;AAQmB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,QAAQ,GAAG;AAClB,YAAA,eAAe,EAAE,UAAU;AAC3B,YAAA,WAAW,EAAE,MAAM;SACpB,CAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7F,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEzF,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAEnH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEzF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,IAAe,CAAA,eAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGxF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,YAAY,CAAC,OAAO,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAiB,cAAc,CAAC,UAAU,CAAC,CAAC;AAE/D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnF,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAExF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B;AACE,YAAA,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA;AACrC,YAAA,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA;AAC/B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,EAAE,CAAE,CAAA;AAC3B,YAAA,CAAA,iBAAA,EAAoB,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA;YACxC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE;YACnC,IAAI,CAAC,KAAK,EAAE,GAAG,iBAAiB,GAAG,EAAE;YACrC,IAAI,CAAC,cAAc,EAAE,GAAG,qBAAqB,GAAG,EAAE;YAClD,IAAI,CAAC,YAAY,EAAE,GAAG,mBAAmB,GAAG,EAAE;YAC9C,IAAI,CAAC,SAAS,EAAE,GAAG,mBAAmB,GAAG,EAAE;AAC5C,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA0B,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAClF,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAGhC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;YACd,SAAS,EAAE,CAAC,IAAG;AACb,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,IAAG;AACnB,oBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;oBACzC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;wBAC7B,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CACP,CAAA,4FAAA,EAA+F,GAAG,CAAA,yBAAA,CAA2B,CAC9H,CACF,CAAC;AACF,wBAAA,OAAO,KAAK,CAAC;qBACd;AACD,oBAAA,OAAO,IAAI,CAAC;AACd,iBAAC,CAAkD,CAAC;aACrD;AACF,SAAA,CAAC,CAAC;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAwB,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7G,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;QACpD,IAAoB,CAAA,oBAAA,GAAG,KAAK,CACnC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,GAAG,iBAAiB,CAAA,GAAA,EAAM,gBAAgB,CAAO,IAAA,EAAA,UAAU,CAAE,CAAA,CACvH,CAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7F,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9F,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/F,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;QAExB,IAAmB,CAAA,mBAAA,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,kBAAkB,EAAE,KAAK,uBAAuB,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CACjG,CAAC;AACO,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;;AA8BtF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAChC,MAAM,KAAK,GAAkB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;AAEhE,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAAE,gBAAA,OAAO,KAAK,CAAC;AAC5C,YAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC/B,gBAAA,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;aACxH;AACD,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAAE,gBAAA,OAAO,KAAK,CAAC;AAEpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,YAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACzC;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAC;QAOK,IAAK,CAAA,KAAA,GAAU,EAAE,CAAC;AAUjB,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnG,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;AAGxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CACtC,oCAAoC,EACpC;YACE,IAAI,GAAE,WAAiC,CAAA;AACxC,SAAA,CACF,CAAC;AACO,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAG5C,0CAA0C,EAAE;YAC5C,IAAI,GAAE,WAAuC,CAAA;AAC9C,SAAA,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CACrC,mCAAmC,EACnC;YACE,IAAI,GAAE,WAAgC,CAAA;AACvC,SAAA,CACF,CAAC;QAEM,IAAc,CAAA,cAAA,GAAqC,EAAE,CAAC;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,eAAe,CAA+B,4BAA4B,CAAC,CAAC;QA0H/F,IAAuB,CAAA,uBAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACzE,IAAoB,CAAA,oBAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACnE,IAAc,CAAA,cAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QACvD,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3D,IAAa,CAAA,aAAA,GAAG,MAAM,CAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AA0BnD,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAA6B,MAAK;AAC5E,YAAA,IAAI,KAAK,GAAkB,aAAa,CAAC,UAAU,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE;AACzC,gBAAA,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC;AACpC,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE;AACtC,oBAAA,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC;iBAChC;aACF;YACD,OAAO;AACL,gBAAA,SAAS,EAAE,KAAK;gBAChB,KAAK;gBACL,QAAQ,EAAE,MAAK;oBACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;iBAC9B;aACF,CAAC;AACJ,SAAC,CAAC,CAAC;AAaJ,KAAA;;AAxQC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC;AACjD,YAAA,MAAM,OAAO,GACV,OAAO,CAAC,mBAAmB,CAAC,EAAE,YAA8D;gBAC5F,IAAI,CAAC,iBAAiB,EAAoD,CAAC;AAC9E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE;gBAC7E,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CACP,CAAA,sBAAA,EAAyB,GAAG,CAAA,gFAAA,EAAmF,OAAO;qBACnH,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAG,CAAA,CAAA,CACjB,CACF,CAAC;aACH;SACF;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAsB,CAAC;AACpD,YAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,+FAAA,CAAiG,CAAC,CAAC;aACpH;iBAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;aAC1G;SACF;KACF;;IAsBD,IACI,OAAO,CAAC,CAAuC,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACjC;IAED,IACI,IAAI,CAAC,CAAQ,EAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC/B;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IA4BD,kBAAkB,GAAA;QAChB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtD,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAC;gBAC1F,SAAS;aACV;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;SAC/C;KACF;AAED,IAAA,iBAAiB,CAAC,GAAqD,EAAA;QACrE,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,SAAS,CAAC;QAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC3C;IACD,sBAAsB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,eAAe,CAAC,MAAM;YAAE,OAAO,oBAAoB,CAAC,YAAY,CAAC;AAC3F,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AACD,IAAA,eAAe,CAAC,GAA+B,EAAA;;AAE7C,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,SAAS,CAAC;;QAE3B,IAAI,GAAG,YAAY,WAAW;AAAE,YAAA,OAAO,GAAG,CAAC;;QAE3C,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;YACjC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA,2DAAA,EAA8D,GAAG,CAAA,CAAA,CAAG,CAAC,CAAC,CAAC;AAC/F,YAAA,OAAO,SAAS,CAAC;SAClB;;AAED,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACjC;AACD,IAAA,YAAY,CAAC,IAAsC,EAAA;QACjD,IAAI,gBAAgB,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,6BAA6B,CAAC;QACjE,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAI,EAAA,CAAA,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9E,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAI,EAAA,CAAA,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1F,QAAA,OAAO,CAAC,CAAS,MAAA,EAAA,KAAK,IAAI,OAAO,CAAA,CAAE,EAAE,CAAa,UAAA,EAAA,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpF;;AAGD,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC/B;IACD,UAAU,CAAC,GAAgB,EAAE,KAAiB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACpC,OAAO;SACR;KACF;AACD,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IACD,eAAe,CAAC,KAAa,EAAE,KAAiB,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAC5D,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KAC9C;IACD,eAAe,CAAC,KAAa,EAAE,KAAiB,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAAE,OAAO;QAC5D,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAC1C;;AAGD;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,UAAU,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/D;aAAM;AACL,YAAA,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3D;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AACD;;AAEG;IACH,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACnD,IAAI,UAAU,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/D;aAAM;AACL,YAAA,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YACzD,IAAI,QAAQ,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3D;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IACO,WAAW,GAAA;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACtC;AACD,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,cAAc,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC;KAC9E;AACD,IAAA,oBAAoB,CAAC,IAAgB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,QAAA,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK,CAAC;AAC1D,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;KAChD;AACD,IAAA,oBAAoB,CAAC,IAAgB,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,gBAAgB,CAAC,QAAQ,CAAC;AAAE,YAAA,OAAO,KAAK,CAAC;AAC7C,QAAA,OAAO,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;KACnC;IAYD,gBAAgB,CAAC,IAAsC,EAAE,KAAa,EAAA;AACpE,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;QACjD,IAAI,gBAAgB,CAAC,IAAI,CAAC;YACxB,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;QACJ,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;YAChC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACpD,aAAa,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACrE,YAAA,kBAAkB,EAAE,CAAC,KAAa,KAAI;AACpC,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC9B,KAAK,EAAE,cAAc,EAAE,CAAC;gBACxB,KAAK,EAAE,eAAe,EAAE,CAAC;aAC1B;SACF,CAAC;KACH;AAiBD,IAAA,kBAAkB,CAAC,KAAa,EAAA;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,CAAE,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO;AACL,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC7B;SACF,CAAC;KACH;8GAnWU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EA6J7B,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,oCAAoC,EAE5B,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,sFAMnB,0CAA0C,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACpC,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGjB,mCAAmC,EAE3B,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAKqD,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,4BAA4B,yFCpOxG,ymPAwNA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,uBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,8BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDpKa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,iBAGN,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ymPAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA,CAAA;8BA6I3C,OAAO,EAAA,CAAA;sBADV,KAAK;gBAMF,IAAI,EAAA,CAAA;sBADP,KAAK;;;MEvLK,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAA3B,2BAA2B,EAAA,YAAA,EAAA,CAJvB,8BAA8B,CAAA,EAAA,OAAA,EAAA,CACnC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC1E,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAH5B,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGzE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,8BAA8B,CAAC;oBAC9C,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC;oBACrF,OAAO,EAAE,CAAC,8BAA8B,CAAC;AAC1C,iBAAA,CAAA;;;MCsBY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAjB1B,oBAAoB;YACpB,4BAA4B;YAC5B,oCAAoC;YACpC,0CAA0C;YAC1C,mCAAmC;YACnC,sCAAsC,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAEzF,oBAAoB;YACpB,4BAA4B;YAC5B,oCAAoC;YACpC,0CAA0C;YAC1C,mCAAmC;YACnC,sCAAsC,CAAA,EAAA,CAAA,CAAA,EAAA;AAG7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAVlB,YAAY,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAUhF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,4BAA4B;wBAC5B,oCAAoC;wBACpC,0CAA0C;wBAC1C,mCAAmC;wBACnC,sCAAsC;AACvC,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,gBAAgB,CAAC;AAC5F,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,4BAA4B;wBAC5B,oCAAoC;wBACpC,0CAA0C;wBAC1C,mCAAmC;wBACnC,sCAAsC;AACvC,qBAAA;AACF,iBAAA,CAAA;;;MCVY,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;QAOW,IAAc,CAAA,cAAA,GAAG,KAAK,EAAO,CAAC;QAC9B,IAAgB,CAAA,gBAAA,GAAG,KAAK,EAAO,CAAC;QAChC,IAAa,CAAA,aAAA,GAAG,KAAK,EAAO,CAAC;QAE7B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAO,CAAC;QACzB,IAAe,CAAA,eAAA,GAAG,KAAK,EAAO,CAAC;AAE/B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,CAAC,CAAC;QAE7C,IAAU,CAAA,UAAA,GAAG,KAAK,EAAO,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAO,CAAC;QACvB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO,CAAC;QACrB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO,CAAC;QACrB,IAAW,CAAA,WAAA,GAAG,KAAK,EAAO,CAAC;QAE3B,IAAO,CAAA,OAAA,GAAG,KAAK,EAAO,CAAC;QACvB,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO,CAAC;QACrB,IAAY,CAAA,YAAA,GAAG,KAAK,EAAO,CAAC;;QAG5B,IAAS,CAAA,SAAA,GAAG,KAAK,EAAO,CAAC;AAEzB,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAA0B,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAEnF,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAgD,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,IAAU,CAAA,UAAA,GAAG,KAAK,EAAO,CAAC;AAC1B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,iBAAiB,CAAC,CAAC;QACpD,IAAoB,CAAA,oBAAA,GAAG,KAAK,CACnC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,GAAG,iBAAiB,CAAA,GAAA,EAAM,gBAAgB,CAAO,IAAA,EAAA,UAAU,CAAE,CAAA,CACvH,CAAC;QAEO,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAO,CAAC;QACjC,IAAkB,CAAA,kBAAA,GAAG,KAAK,EAAO,CAAC;QAClC,IAAmB,CAAA,mBAAA,GAAG,KAAK,EAAO,CAAC;AAEnC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,CAAC,CAAC,CAAC;;AA6CxB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,GAAG,CAAC,CAAC;AAE/B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAiE,IAAI,EAAE;YAC1F,SAAS,EAAE,CAAC,IAAG;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;gBACtC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACzD,gBAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;aAC9B;AACF,SAAA,CAAC,CAAC;AACc,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAE3D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;AAoCjE,KAAA;AA7FC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC;AACjD,YAAA,MAAM,OAAO,GACV,OAAO,CAAC,mBAAmB,CAAC,EAAE,YAA8D;gBAC5F,IAAI,CAAC,iBAAiB,EAAoD,CAAC;AAC9E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE;gBAC7E,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CACP,CAAA,sBAAA,EAAyB,GAAG,CAAA,yFAAA,EAA4F,OAAO;qBAC5H,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAG,CAAA,CAAA,CACjB,CACF,CAAC;aACH;SACF;AACD,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAA4C,KACzG,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CACxB,CAAC;AACd,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC7B,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CACP,CAAA,qGAAA,EAAwG,GAAG,CAAA,yBAAA,CAA2B,CACvI,CACF,CAAC;iBACH;aACF;SACF;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,YAAsB,CAAC;AACpD,YAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,wGAAA,CAA0G,CAC3G,CAAC;aACH;iBAAM,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE;AACrC,gBAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;aACnH;SACF;KACF;IAmBD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA,8FAAA,CAAgG,CAAC,CAAC,CAAC;SAC5H;KACF;AAEO,IAAA,WAAW,CAAC,GAAW,EAAA;AAC7B,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;KACvB;AACO,IAAA,oBAAoB,CAAC,IAAY,EAAA;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AAC1B,YAAA,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO;gBACL,MAAM;AACN,gBAAA,UAAU,EAAE,MAAM;aACnB,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IACO,kBAAkB,CAAC,KAAe,EAAE,OAA0B,EAAA;QACpE,MAAM,QAAQ,GAA0B,EAAE,CAAC;AAE3C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAE7C,MAAM,GAAG,GAAwB,EAAE,CAAC;AACpC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAoB,CAAC;AAC/C,gBAAA,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACxC;AACD,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACpB;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;8GArIU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,8nICtBxC,2lCA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,oBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,SAAA,EAAA,OAAA,EAAA,cAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDTa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,iBAEf,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2lCAAA,EAAA,CAAA;;;MEVpC,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,iBAJpB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAChC,YAAY,EAAE,iBAAiB,aAC/B,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAE1B,wBAAwB,EAAA,OAAA,EAAA,CAHzB,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG9B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;oBAC1C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCGY,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;;AAGnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAS,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;QAGjG,IAAG,CAAA,GAAA,GAAG,KAAK,CAAc,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAA4D,CAAC,EAAE;YACnF,SAAS,EAAE,CAAC,IAAG;AACb,gBAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;AACd,oBAAA,OAAO,CAAC,CAAC;iBACV;AACD,gBAAA,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACnC;AACF,SAAA,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAiB,MAAK;AACjD,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,MAAsB,CAAC;;AAG3B,YAAA,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;AACd,gBAAA,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChB,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;AACjC,oBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBAChC;AACD,gBAAA,OAAO,MAAM,CAAC;aACf;;YAGD,MAAM,GAAG,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;AACjC,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACd,oBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACjC,SAAS;iBACV;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3B,oBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC/B,SAAS;iBACV;AACD,gBAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAChC;AACD,YAAA,OAAO,MAAM,CAAC;AAChB,SAAC,CAAC,CAAC;AACJ,KAAA;8GAjDY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,yjBCZvC,wOAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDCa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,iBAGb,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wOAAA,EAAA,CAAA;;;MEApC,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iBAJnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC/B,YAAY,EAAE,gBAAgB,aAC9B,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEzB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAG7B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;MCWY,kBAAkB,CAAA;AAP/B,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpF,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AAoBlC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;QAEjC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACxD,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;QAEjC,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAG,MAAM,EAAQ,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAG,MAAM,EAAW,CAAC;AAC7C,KAAA;IA7BC,IACI,SAAS,CAAC,CAAM,EAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AAED,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED,IAAA,IACI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC3C;8GArBU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,quBCpB/B,+BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDmBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,iBAGJ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA;8BAO3C,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,UAAU,CAAA;gBAWb,sBAAsB,EAAA,CAAA;sBADzB,WAAW;uBAAC,wBAAwB,CAAA;;;MEX1B,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;QAQkB,IAAI,CAAA,IAAA,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAA4B,IAAI,CAAC,CAAC;QA6D5D,IAAU,CAAA,UAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,IAAS,CAAA,SAAA,GAAG,MAAM,CAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAS,CAAA,SAAA,GAAG,MAAM,EAAU,CAAC;;AAG7B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAS,CAAA,SAAA,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGpE,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5F,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAmB,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC;AACE,YAAA,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,wBAAwB,GAAG,EAAE;YAC9E,IAAI,CAAC,WAAW,EAAE,GAAG,kBAAkB,GAAG,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAiB,cAAA,EAAA,IAAI,CAAC,YAAY,EAAE,CAAE,CAAA;AACjE,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;;AAGO,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,CAAC,CAAC,CAAC;AAC/C,KAAA;IAnFC,kBAAkB,GAAA;QAChB,IAAI,WAAW,GAA8B,IAAI,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC7B,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE;;gBAElB,IAAI,WAAW,EAAE;AACf,oBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACzB;gBAED,WAAW,GAAG,GAAG,CAAC;aACnB;AAED,YAAA,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,aAAC,CAAC,CAAC;AACH,YAAA,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;gBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;AACH,YAAA,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,IAAG;AACxC,gBAAA,IAAI,CAAC,UAAU;oBAAE,OAAO;gBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACnC,aAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAErC,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAChC;SACF;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAClC;AAED,IAAA,UAAU,CAAC,GAAuB,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,QAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;AACD,IAAA,UAAU,CAAC,GAAuB,EAAA;AAChC,QAAA,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACjC;AACD,IAAA,SAAS,CAAC,GAAuB,EAAA;AAC/B,QAAA,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClC;8GA/DU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EACO,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB3D,+7BAmCA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,iBAGP,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+7BAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,CAAA;;;MEXpC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,EAAE,kBAAkB,aAC9C,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,qBAAqB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;AAExC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;oBACzD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;AACrD,iBAAA,CAAA;;;MCUY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uDCnBtC,6PAQA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDWa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,iBAEZ,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6PAAA,EAAA,CAAA;;MAKpC,2BAA2B,CAAA;IACtC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KACnE;8GAHU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAA;;MAQpD,wBAAwB,CAAA;IACnC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;KAChE;8GAHU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;mBAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE,CAAA;;MAQ9C,yBAAyB,CAAA;IACpC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KACjE;8GAHU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAA;;MAQ/B,0BAA0B,CAAA;IACrC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;KAClE;8GAHU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;mBAAC,EAAE,QAAQ,EAAE,sCAAsC,EAAE,CAAA;;MAQlD,wBAAwB,CAAA;IACnC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;KAChE;8GAHU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxB,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;mBAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;;MAQ9B,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAmB,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAqC,kCAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC,CAAC;AAM3F,KAAA;AAJC,IAAA,IACI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1B;8GARU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;mBAAC,EAAE,QAAQ,EAAE,oDAAoD,EAAE,CAAA;8BAOvE,wBAAwB,EAAA,CAAA;sBAD3B,WAAW;uBAAC,OAAO,CAAA;;MAOT,yBAAyB,CAAA;IACpC,WAAY,CAAA,QAAmB,EAAE,WAAuB,EAAA;QACtD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KACjE;8GAHU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,oCAAoC,EAAE,CAAA;;;AEpEhD,MAAA,cAAc,GAAG;AAC5B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,MAAM,EAAE,QAAQ;EACP;AAGE,MAAA,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,OAAO;;;MCJH,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;;AAGW,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAiB,cAAc,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,WAAW,CAAC,OAAO,CAAC,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,CAAC,UAAU,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE,CAAE,CAAA,EAAE,CAAe,YAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC/F,CAAC;AAMH,KAAA;AAJC,IAAA,IACI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;KACzB;8GAZU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAnB,mBAAmB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;8BAW/B,uBAAuB,EAAA,CAAA;sBAD1B,WAAW;uBAAC,OAAO,CAAA;;AAYhB,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;8GAA/C,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uEAJpB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAI1B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;MCiBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAzBzB,mBAAmB;YACnB,mBAAmB;YACnB,yBAAyB;YACzB,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,0BAA0B;YAC1B,wBAAwB;YACxB,gCAAgC;YAChC,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAEjB,YAAY,CAAA,EAAA,OAAA,EAAA,CAEpB,mBAAmB;YACnB,mBAAmB;YACnB,yBAAyB;YACzB,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,0BAA0B;YAC1B,wBAAwB;YACxB,gCAAgC;YAChC,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAdjB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAcX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3B5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,mBAAmB;wBACnB,yBAAyB;wBACzB,wBAAwB;wBACxB,2BAA2B;wBAC3B,yBAAyB;wBACzB,0BAA0B;wBAC1B,wBAAwB;wBACxB,gCAAgC;wBAChC,yBAAyB;AAC1B,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,mBAAmB;wBACnB,yBAAyB;wBACzB,wBAAwB;wBACxB,2BAA2B;wBAC3B,yBAAyB;wBACzB,0BAA0B;wBAC1B,wBAAwB;wBACxB,gCAAgC;wBAChC,yBAAyB;AAC1B,qBAAA;AACF,iBAAA,CAAA;;;MC9BY,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAM9F,KAAA;AAJC,IAAA,IACI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;8GANU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uRALvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAKD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,aAAa,EAAA,QAAA,EACb,EAAE,EAEG,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kIAAA,CAAA,EAAA,CAAA;8BAM3C,sBAAsB,EAAA,CAAA;sBADzB,WAAW;uBAAC,4BAA4B,CAAA;;;MCJ9B,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJf,YAAA,EAAA,CAAA,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCkBY,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;AAQmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;;AAGpD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,YAAY,CAAC,OAAO,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,OAAO,EAAE,CAAE,CAAA,EAAE,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACxH,CAAC;;AAGO,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGzF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAGxF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;QAQtC,IAAU,CAAA,UAAA,GAAG,MAAM,EAAW,CAAC;QAC/B,IAAU,CAAA,UAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;;QAG9C,IAAa,CAAA,aAAA,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAmC5E,KAAA;IA9CC,IACI,KAAK,CAAC,CAAM,EAAA;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,YAAY,EAAE,CAAC;;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;KAC7B;IAUO,YAAY,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;AAElD,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/C,YAAA,WAAW,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,EAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACnC;IACO,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;AAEhC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;IAGD,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAAE,OAAO;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IACD,kBAAkB,GAAA;QAChB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;8GAvEU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAqC6B,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/DzE,o2CA8CA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDpBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,iBAGN,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,o2CAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;8BA6B3C,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;;;MExCb,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAClE,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGjE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,UAAU,CAAC;oBAC7E,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCPY,iCAAiC,CAAA;AAC5C,IAAA,WAAA,CAAmB,QAA2C,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmC;KAAI;8GADvD,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjC,iCAAiC,EAAA,QAAA,EAAA,2CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;mBAAC,EAAE,QAAQ,EAAE,2CAA2C,EAAE,CAAA;;;MCsBvD,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;;;AAUW,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,eAAe,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,YAAY,CAAC,OAAO,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAInF,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAIzF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;;AAIhG,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;QAE7B,IAAU,CAAA,UAAA,GAAG,MAAM,CAAe,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,IAAY,CAAA,YAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClD,IAAW,CAAA,WAAA,GAAG,MAAM,CAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;;AAGhD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAS,SAAS,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AACnE,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAmB,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACjF,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAS,QAAQ,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAiB,cAAc,CAAC,OAAO,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAmB,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAE/E,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1F,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAe,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;AAuBtF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,iCAAiC,CAAC,CAAC;AAElE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAuB,MAAK;YAC/D,OAAO;AACL,gBAAA,aAAa,EAAE;AACb,oBAAA,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC9B,oBAAA,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAChC,oBAAA,UAAU,EAAE,IAAI,CAAC,uBAAuB,EAAE;AAC3C,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AAC/B,oBAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC7B,oBAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC1C,iBAAA;AACD,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,gBAAA,SAAS,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;AACtC,gBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAA,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE;AACnC,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE;AAC7B,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE;aAC9B,CAAC;AACJ,SAAC,CAAC,CAAC;AACJ,KAAA;IA5CC,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B,EAAE,CAAC,CAAC,CAAC;KACP;IACD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB,EAAE,CAAC,CAAC,CAAC;KACP;IACD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;8GAxDU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArB,qBAAqB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2DQ,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpF3E,g9DA0DA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,oBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FDjCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,iBAGP,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g9DAAA,EAAA,CAAA;;;MEXpC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,EAAE,iCAAiC,CAC7D,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CACnD,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,iCAAiC,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAHnB,OAAA,EAAA,CAAA,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGlD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;AACxE,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;AAC9D,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;AACpE,iBAAA,CAAA;;;ACPY,MAAA,YAAY,GAAG;AAC1B,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;;;MCHH,KAAK,CAAA;AAIhB,IAAA,IAAI,CAAC,IAAO,EAAA;QACV,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAK,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAK,CAAC,IAAK,CAAC;KAC9B;AACD,IAAA,SAAS,CAAC,IAAO,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KACvC;IACD,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;;AAElB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;QAEtB,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAEtC,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;KACzB;IACD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;KACvB;AACD,IAAA,IAAI,MAAM,GAAA;QACR,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,OAAO,WAAW,EAAE;AAClB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;SAChC;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IACD,OAAO,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KACnB;IACD,OAAO,GAAA;QACL,MAAM,KAAK,GAAQ,EAAE,CAAC;AACtB,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,OAAO,WAAW,EAAE;AAClB,YAAA,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;SAChC;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACF,CAAA;MAEY,SAAS,CAAA;IACpB,WACS,CAAA,KAAQ,EACR,IAAmB,EAAA;QADnB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAG;QACR,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAe;KACxB;AACL;;MCvDY,iBAAiB,GAAG,IAAI,cAAc,CAAkB,iBAAiB,EAAE;AACjF,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAAiB,kBAAkB,CAAC,CAAC;AAClF,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAkB,iBAAiB,CAAC,CAAC;MAE3E,uBAAuB,CAAA;AAClC,IAAA,WAAA,CACS,SAA2B,EAC3B,OAAqC,EAC5C,OAAuC,EAAA;QAFhC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;AAW7B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC9B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AATnE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAChF;IAUD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KACzB;IACD,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;AACF,CAAA;MACY,cAAc,CAAA;AACzB,IAAA,WAAA,CACmB,OAAuC,EACvC,OAAsB,EACtB,aAAuC,EAAA;QAFvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgC;QACvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAe;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;AAGzC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QAiBzD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAtBtB;IASJ,KAAK,CAAC,UAAU,GAAG,KAAK,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,CAAC,UAAU,GAAG,KAAK,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAGD,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AACF;;ACjEY,MAAA,oBAAoB,GAAG;AAClC,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,cAAc;EAClB;AAGE,MAAA,yBAAyB,GAAG;AACvC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,SAAS;EACT;AAGE,MAAA,wBAAwB,GAAG;AACtC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,SAAS,EAAE,WAAW;EACb;AAKE,MAAA,eAAe,GAAG;AAC7B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,MAAM;;;MChBD,2BAA2B,CAAA;AATxC,IAAA,WAAA,GAAA;AAUkB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEjC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AA2BhD,KAAA;IAzBC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpC;IAEO,YAAY,GAAA;AAClB,QAAA,QAAQ,IAAI,CAAC,IAAI;YACf,KAAK,eAAe,CAAC,MAAM;AACzB,gBAAA,OAAO,OAAO,CAAC;YACjB,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,OAAO,cAAc,CAAC;YACxB,KAAK,eAAe,CAAC,IAAI;AACvB,gBAAA,OAAO,MAAM,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAa,UAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAC;KAClC;8GAhCU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,+ECjBxC,+mBAsBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRY,kBAAkB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,6CAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAG9C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,iBAGhB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,CAAC,cAC9C,IAAI,EAAA,QAAA,EAAA,+mBAAA,EAAA,CAAA;;;AEZL,MAAA,uBAAuB,GAAG;AACrC,IAAA,SAAS,EAAE;QACT,KAAK,EAAE,oBAAoB,CAAC,YAAY;QACxC,MAAM,EAAE,QAAQ,CAAC,IAAI;QACrB,cAAc,EAAE,yBAAyB,CAAC,MAAM;AACjD,KAAA;AACD,IAAA,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,wBAAwB,CAAC,OAAO;AAC/C,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;EACoB;MAEhC,4BAA4B,GAAG,IAAI,cAAc,CAA+B,8BAA8B,EAAE;IAC3H,OAAO,EAAE,OAAO,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAChD,CAAA,EAAE;MAEU,6BAA6B,GAAG,IAAI,cAAc,CAAS,+BAA+B,EAAE;AACvG,IAAA,OAAO,EAAE,MAAM,GAAG;AACnB,CAAA;;MCDY,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,KAAK,EAAoC,CAAC;QAG/D,IAAqB,CAAA,qBAAA,GAAG,uBAAuB,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AA2N/C,KAAA;;AAxNC,IAAA,IAAI,CAAC,OAAe,EAAE,MAAe,EAAE,UAA8B,EAAE,EAAA;QACrE,OAAO,CAAC,IAAI,GAAG;YACb,OAAO;AACP,YAAA,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM;SACvC,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAElD,QAAA,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC1E,YAAA,aAAa,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACrC,YAAA,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACpC;QAED,MAAM,WAAW,GAAG,IAAI,uBAAuB,CAAC,2BAA2B,EAAE,aAAa,EAAE,CAAC,UAAoB,KAC/G,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAChC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,aAAc,EAAE,WAAW,CAAC,CAAC;QAC7D,OAAO,WAAW,CAAC,SAAS,CAAC;KAC9B;IACD,iBAAiB,CAAI,SAA2B,EAAE,OAA2B,EAAA;QAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,uBAAuB,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,UAAoB,KAC7F,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAChC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAc,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC,SAAS,CAAC;KAC9B;;IAEO,YAAY,CAAI,QAAkC,EAAE,GAA+B,EAAA;QACzF,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnD,QAAA,IAAI,QAAQ,KAAK,wBAAwB,CAAC,OAAO,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;SACF;AAAM,aAAA,IAAI,QAAQ,KAAK,wBAAwB,CAAC,IAAI,IAAI,QAAQ,KAAK,wBAAwB,CAAC,SAAS,EAAE;YACxG,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,wBAAwB,CAAC,SAAS;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC9F,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;aAE5B;SACF;KACF;AACO,IAAA,aAAa,CAAC,OAA2B,EAAA;;AAE/C,QAAA,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,OAAO,CAAC,SAAS,GAAG;AAClB,gBAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS;AACvC,gBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS;gBACjC,GAAG,OAAO,CAAC,SAAS;aACrB,CAAC;SACH;aAAM;AACL,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;SAC5F;;AAED,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,OAAO,CAAC,IAAI,GAAG;AACb,gBAAA,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI;AAClC,gBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI;gBAC5B,GAAG,OAAO,CAAC,IAAI;aAChB,CAAC;SACH;aAAM;AACL,YAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;SAC7E;QACD,OAAO;YACL,GAAG,IAAI,CAAC,qBAAqB;YAC7B,GAAG,IAAI,CAAC,eAAe;AACvB,YAAA,GAAG,OAAO;SACqB,CAAC;KACnC;;IAEO,SAAS,GAAA;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAChD,QAAA,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;AAErB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;AAChE,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QAC9C,EAAE,CAAC,YAAY,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAE1B,QAAA,MAAM,QAAQ,GACZ,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC;cACxD,aAAa;AACf,cAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;AAE1B,QAAA,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5B,EAAE,QAAQ,CAAC,CAAC;KACd;AACO,IAAA,cAAc,CAAC,OAA2B,EAAA;AAChD,QAAA,IAAI,CAA8B,CAAC;AACnC,QAAA,IAAI,OAAqC,CAAC;AAC1C,QAAA,IAAI,QAAsC,CAAC;AAC3C,QAAA,IAAI,SAAuC,CAAC;;QAG5C,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;YAC3C,CAAC,GAAG,OAAO,CAAC;SACb;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YACnD,CAAC,GAAG,KAAK,CAAC;SACX;aAAM;YACL,CAAC,GAAG,QAAQ,CAAC;SACd;;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC7C,OAAO,GAAG,QAAQ,CAAC;YACnB,QAAQ,GAAG,QAAQ,CAAC;YACpB,SAAS,GAAG,KAAK,CAAC;SACnB;aAAM;YACL,OAAO,GAAG,KAAK,CAAC;YAChB,QAAQ,GAAG,KAAK,CAAC;YACjB,SAAS,GAAG,QAAQ,CAAC;SACtB;AAED,QAAA,IAAI,MAAM,GAAG,OAAO,CAAC,SAAU,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,KAAK,CACX,IAAI,KAAK,CAAC,CAAA,kGAAA,CAAoG,CAAC,CAChH,CAAC;AACF,YAAA,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;SACxB;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,KAAK,yBAAyB,CAAC,MAAM,CAAC;AACxF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC3B,aAAA,QAAQ,EAAE;aACV,mBAAmB,CAAC,MAAM,CAAC;AAC3B,aAAA,aAAa,CAAC;AACb,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC;gBACV,OAAO;AACP,gBAAA,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAC1C,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC;gBACV,OAAO;AACP,gBAAA,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAC3C,aAAA;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;AAC/B,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACrC;;AAGD,IAAA,cAAc,CAAC,UAAoB,EAAA;AACjC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAA,wFAAA,CAA0F,CAAC,CAAC,CAAC;YACpH,OAAO;SACR;QAED,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAE3B,UAAU,CAAC,MAAK;AACd,YAAA,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,YAAA,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACtC,YAAA,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YAEzB,IAAI,CAAC,SAAS,EAAE,CAAC;AACnB,SAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC3B;;IAGD,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;KAC5D;IACD,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;KAC7B;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC5B;IAEO,eAAe,CAAI,OAA2B,EAAE,WAA8B,EAAA;QACpF,OAAO,QAAQ,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,SAAS;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;gBAClD,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;AACtD,gBAAA;AACE,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI;AAC/C,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,kBAAkB;oBAC3B,QAAQ,EAAE,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,cAAc,CAAC,SAAS;AACrH,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;8GAlOU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACnBD;;AAEG;;ACFH;;AAEG;;;;"}
|