@fundamental-ngx/cdk 0.56.5 → 0.56.7
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":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/utils/functions/element-size.ts","../../../../libs/cdk/utils/functions/get-document-font-size.ts","../../../../libs/cdk/utils/functions/intersection-observable.ts","../../../../libs/cdk/utils/functions/is-compact-density.ts","../../../../libs/cdk/utils/functions/is-odd.ts","../../../../libs/cdk/utils/functions/key-util.ts","../../../../libs/cdk/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/utils/functions/parser-file-size.ts","../../../../libs/cdk/utils/functions/random-color-accent.ts","../../../../libs/cdk/utils/functions/resize-observable.ts","../../../../libs/cdk/utils/functions/scroll.ts","../../../../libs/cdk/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/utils/helpers/destroy-observable.ts","../../../../libs/cdk/utils/helpers/dfs.ts","../../../../libs/cdk/utils/helpers/get-native-element.ts","../../../../libs/cdk/utils/typecheck.ts","../../../../libs/cdk/utils/helpers/range-selector.ts","../../../../libs/cdk/utils/helpers/warn-once.ts","../../../../libs/cdk/utils/services/content-density.service.ts","../../../../libs/cdk/utils/services/destroyed.service.ts","../../../../libs/cdk/utils/services/focus-trap.service.ts","../../../../libs/cdk/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/utils/services/local-storage.service.ts","../../../../libs/cdk/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/utils/services/resize-observer.service.ts","../../../../libs/cdk/utils/services/rtl.service.ts","../../../../libs/cdk/utils/services/tabbable-element.service.ts","../../../../libs/cdk/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/utils/directives/clicked/provide-fdk-clicked.ts","../../../../libs/cdk/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/utils/directives/clicked/element-click.observable.ts","../../../../libs/cdk/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/utils/directives/focusable-list/indirect-focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/indirect-focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/utils/directives/resize-observer/resize-observer.directive.ts","../../../../libs/cdk/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.module.ts","../../../../libs/cdk/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/utils/directives/template/template.directive.ts","../../../../libs/cdk/utils/directives/template/template.module.ts","../../../../libs/cdk/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/utils/utils.module.ts","../../../../libs/cdk/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/utils/coercion/array.ts","../../../../libs/cdk/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/utils/consts/error-messages.ts","../../../../libs/cdk/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/utils/decorators/setter-alternator.ts","../../../../libs/cdk/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/utils/deprecated-selector.class.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/utils/list-item/list-item-utils.ts","../../../../libs/cdk/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/utils/pipes/safe.pipe.ts","../../../../libs/cdk/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/utils/pipes/pipe.module.ts","../../../../libs/cdk/utils/toast/base-toast-animations.ts","../../../../libs/cdk/utils/toast/base-toast-positions.ts","../../../../libs/cdk/utils/toast/base-toast.service.ts","../../../../libs/cdk/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/utils/toast/classes/base-toast-overlay-container.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { INJECTOR, Injector, Provider } from '@angular/core';\n\n/**\n * Creates provider for ConsumerClass\n */\nexport function consumerProviderFactory<T = any>(\n ConsumerClass: new (injector: Injector, additionalConfig: Record<any, any> | undefined) => T,\n providedConfiguration?: Record<any, any>\n): Provider {\n return {\n provide: ConsumerClass,\n useFactory: (injector: Injector) => new ConsumerClass(injector, providedConfiguration),\n deps: [INJECTOR]\n };\n}\n","import { ElementRef } from '@angular/core';\n\nexport const pxToNum = (pixels: string): number => Number(pixels.replace('px', '')) || 0;\n\nexport const toNativeElement = (element: HTMLElement | ElementRef): HTMLElement =>\n element instanceof ElementRef ? element.nativeElement : element;\n\n/** Return elements capacity (width subtract by element padding)\n * @param element - HTMLelement or element reference\n * */\nexport function getElementCapacity(element: HTMLElement | ElementRef): number {\n const _element = toNativeElement(element);\n const computedStyle = window.getComputedStyle(_element);\n\n return pxToNum(computedStyle.width) - pxToNum(computedStyle.paddingLeft) - pxToNum(computedStyle.paddingRight);\n}\n\n/** Return elements width\n * @param element - HTMLelement or element reference\n * @param withMargin - weather to add element margins to width\n * */\nexport function getElementWidth(element: HTMLElement | ElementRef, withMargin?: boolean): number {\n const _element = toNativeElement(element);\n const computedStyle = getComputedStyle(_element);\n\n return withMargin\n ? pxToNum(computedStyle.width) + pxToNum(computedStyle.marginLeft) + pxToNum(computedStyle.marginRight)\n : pxToNum(computedStyle.width);\n}\n","/** Get document font size in pixels. */\nexport function getDocumentFontSize(): number {\n const DEFAULT_SIZE = 16;\n const clientFontSize = document?.documentElement\n ? parseFloat(getComputedStyle(document.documentElement).fontSize)\n : DEFAULT_SIZE;\n return isNaN(clientFontSize) ? DEFAULT_SIZE : clientFontSize;\n}\n","import { NEVER, Observable } from 'rxjs';\n\n/**\n * RxJS wrapper for IntersectionObserver class.\n * @param target HTML element to spy on.\n * @param options @see {IntersectionObserverInit}\n * @returns {Observable} with observer entries.\n */\nexport function intersectionObservable(\n target: Element,\n options?: IntersectionObserverInit\n): Observable<IntersectionObserverEntry[]> {\n if ('IntersectionObserver' in window) {\n return new Observable((subscriber) => {\n const io = new IntersectionObserver((entries) => {\n subscriber.next(entries);\n }, options);\n\n io.observe(target);\n\n return function unsubscribe(): void {\n io.disconnect();\n };\n });\n } else {\n // If browser doesn't support IntersectionObserver API never emit a value\n // since we're not supporting IE11 and any other browser should have it.\n return NEVER;\n }\n}\n","import { ContentDensity } from '../interfaces/content-density';\n\n/** Determines whether provided value is valid content density */\nexport function isValidContentDensity(size: any): size is ContentDensity {\n return size === 'cozy' || size === 'compact' || size === 'condensed';\n}\n\n/**\n * Determines if \"compact\" styles should be applied based on provided content density\n */\nexport function isCompactDensity(size: ContentDensity): boolean {\n return isValidContentDensity(size) && size !== 'cozy';\n}\n","/**\n * Function checks whether the passed number is odd.\n * @param number number to check.\n * @returns Boolean whether the number is odd.\n */\nexport function isOdd(number: number): boolean {\n return number % 2 === 1;\n}\n","import {\n A,\n ALT,\n BACKSPACE,\n C,\n CONTROL,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n F2,\n F7,\n HOME,\n LEFT_ARROW,\n MAC_ENTER,\n META,\n NUMPAD_EIGHT,\n NUMPAD_FIVE,\n NUMPAD_FOUR,\n NUMPAD_MINUS,\n NUMPAD_NINE,\n NUMPAD_ONE,\n NUMPAD_SEVEN,\n NUMPAD_SIX,\n NUMPAD_THREE,\n NUMPAD_TWO,\n NUMPAD_ZERO,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SHIFT,\n SPACE,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { isDevMode } from '@angular/core';\n\n/** Map of keyCodes and their corresponding \"key\" values */\nconst keyMap: Map<number, string[]> = new Map([\n [RIGHT_ARROW, ['ArrowRight', 'Right']],\n [DOWN_ARROW, ['ArrowDown', 'Down']],\n [LEFT_ARROW, ['ArrowLeft', 'Left']],\n [UP_ARROW, ['ArrowUp', 'Up']],\n [SPACE, ['Space', 'Spacebar', ' ']],\n [ESCAPE, ['Escape', 'Esc']],\n [DELETE, ['Delete', 'Del']],\n [ENTER, ['Enter']],\n [MAC_ENTER, ['Enter']],\n [TAB, ['Tab']],\n [HOME, ['Home']],\n [END, ['End']],\n [ALT, ['Alt']],\n [CONTROL, ['Ctrl', 'Control', 'Meta']],\n [META, ['Meta']],\n [SHIFT, ['Shift']],\n [BACKSPACE, ['Backspace']],\n [A, ['KeyA']],\n [C, ['KeyC']],\n [V, ['KeyV']],\n [X, ['KeyX']],\n [PAGE_UP, ['PageUp']],\n [PAGE_DOWN, ['PageDown']],\n [DASH, ['-']],\n [NUMPAD_MINUS, ['-']],\n [NUMPAD_ZERO, ['NumPad0']],\n [NUMPAD_ONE, ['NumPad1']],\n [NUMPAD_TWO, ['NumPad2']],\n [NUMPAD_THREE, ['NumPad3']],\n [NUMPAD_FOUR, ['NumPad4']],\n [NUMPAD_FIVE, ['NumPad5']],\n [NUMPAD_SIX, ['NumPad6']],\n [NUMPAD_SEVEN, ['NumPad7']],\n [NUMPAD_EIGHT, ['NumPad8']],\n [NUMPAD_NINE, ['NumPad9']],\n [F2, ['F2']],\n [F7, ['F7']]\n]);\n\nexport class KeyUtil {\n /**\n * Function used to unify key identification across different browsers using KeyCodes\n *\n * @param event - KeyboardEvent\n * @param keyCode - event.key name matching W3C specification / (ASSCI char. codes)\n * */\n static isKeyCode(event: KeyboardEvent, keyCode: number | number[]): boolean {\n if (Array.isArray(keyCode)) {\n return keyCode.some((key) => this.isKeyCode(event, key));\n }\n\n if (event && keyMap.get(keyCode)) {\n return keyMap.get(keyCode)?.some((alias) => alias === event.key) || keyCode === event.keyCode;\n }\n\n if (isDevMode()) {\n throw new Error(\n `Invalid function arguments. Check if \"event\" is a KeyboardEvent or \"key\" is defined in keyMap`\n );\n }\n\n return false;\n }\n\n /**\n * Function used to unify key identification across different browsers\n *\n * @param event - KeyboardEvent\n * @param keyType - Type of key\n * */\n static isKeyType(event: KeyboardEvent, keyType: 'alphabetical' | 'numeric' | 'control' | 'ime'): boolean {\n if (event && keyType) {\n switch (keyType) {\n case 'numeric':\n return event.code\n ? event.code.toLowerCase().includes('digit')\n : (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);\n case 'alphabetical':\n return event.code\n ? event.code.toLowerCase().includes('key')\n : event.keyCode >= 65 && event.keyCode <= 90;\n // some service commands as alt, ctr, insert, print, f4 etc. All except letters, numbers and symbols\n case 'control':\n return event.keyCode < 48 || (event.keyCode >= 112 && event.keyCode <= 123);\n case 'ime':\n return event.key?.toLowerCase() === 'process' || event.keyCode === 229;\n }\n }\n\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n\n return false;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ModuleDeprecation } from '../interfaces/module-deprecation.interface';\n\nexport const ModuleDeprecations = new InjectionToken<ModuleDeprecation>('ModuleDeprecations');\n","import { FactorySansProvider, Provider } from '@angular/core';\nimport { ModuleDeprecations } from '../tokens/module-deprecations.token';\n\n/** Module deprecations provider */\nexport function moduleDeprecationsProvider(classRef: any): Provider {\n return {\n provide: ModuleDeprecations,\n useClass: classRef,\n multi: true\n };\n}\n\n/** Module deprecations provider factory */\nexport function moduleDeprecationsFactory(factory: FactorySansProvider): Provider {\n return {\n provide: ModuleDeprecations,\n ...factory,\n multi: true\n };\n}\n","const fileSizeMap = new Map([\n ['KB', 1024],\n ['MB', 1048576],\n ['GB', 1073741824],\n ['TB', 1099511627776]\n]);\n\n/** Parse file size to bytes */\nexport function parserFileSize(fileSize: string): number {\n if (fileSize === '') {\n return 0;\n }\n\n const sizes = fileSize.match(/[\\d.]+|\\D+/g);\n if (sizes && sizes.length > 1) {\n const size = Number(sizes[0].replace(/ +/g, ''));\n const unit = sizes[1].replace(/ +/g, '').toUpperCase();\n const unitSize = fileSizeMap.get(unit);\n\n if (isNaN(size)) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n if (unit === 'B' || unit === 'BYTE' || unit === 'BYTES') {\n return size;\n }\n if (!unitSize) {\n throw new Error('FileSizeError - Invalid File size please check.');\n } else {\n return unitSize * size;\n }\n } else {\n if (isNaN(Number(sizes))) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n\n return Number(sizes);\n }\n}\n","import { ColorAccent } from '../datatypes';\n\n/** Get random number from 1 to 10. */\nexport function getRandomColorAccent(): ColorAccent {\n return (Math.floor(Math.random() * 10) + 1) as ColorAccent;\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * RxJS wrapper for ResizeObserver class.\n * @param target HTML element to spy on.\n * @param options @see {ResizeObserverOptions}\n * @returns {Observable} with observer entries.\n */\nexport function resizeObservable(target: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry[]> {\n if ('ResizeObserver' in window) {\n return new Observable((subscriber) => {\n let animationFrame: number;\n const ro = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entries);\n });\n });\n\n ro.observe(target, options);\n\n return function unsubscribe(): void {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n ro.unobserve(target);\n ro.disconnect();\n };\n });\n } else {\n // If current browser does not support resizeObserver, rely on window resize and return empty array of items.\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n}\n","/**\n * Function used to scroll specified element by some distance\n *\n * @param containerElement - Container element scrolled\n * @param distanceToScroll - Distance of scroll in px\n * */\nexport function scrollTop(containerElement: Element, distanceToScroll: number): void {\n // Check if scrollTo method is supported by current browser\n if (containerElement.scrollTo && containerElement.scrollTo instanceof Function) {\n containerElement.scrollTo({\n top: distanceToScroll,\n behavior: 'smooth'\n });\n } else {\n containerElement.scrollTop = distanceToScroll;\n }\n}\n","/** Generate a UUID v4 */\nexport function uuidv4(): string {\n const modifier = 16;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * modifier) | 0,\n // eslint-disable-next-line no-bitwise\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(modifier);\n });\n}\n","import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, switchMap } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\n\nexport interface AutoCompleteEvent {\n term: string;\n forceClose: boolean;\n}\n\n@Directive({\n selector: '[fdkAutoComplete]',\n standalone: true\n})\nexport class AutoCompleteDirective {\n /** Values that will fill missing text in the input. */\n @Input()\n options: any[];\n\n /**\n * Input text, that is taken from ngModel of formControl,\n * there has to be difference between native input value and model value\n */\n @Input()\n inputText: string;\n\n /** Whether the auto complete directive should be enabled */\n @Input()\n enable = true;\n\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See search input examples for details. */\n @Input()\n displayFn = this._defaultDisplay;\n\n /** Event thrown, when the auto ahead text is accepted */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n /** @hidden */\n private readonly _completeKeys: number[] = [ENTER];\n\n /** @hidden */\n private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n /** @hidden */\n private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n /** @hidden */\n private oldValue: string;\n\n /** @hidden */\n private lastKeyUpEvent: KeyboardEvent;\n\n /** @hidden */\n private _isComposing = false;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n constructor() {\n /**\n * Fixes #10710\n * With chinese characters inputText property update was triggered after the keyup event trigger.\n * By ensuring that we set all properties we can proceed with stable data.\n */\n this._zone.runOutsideAngular(() => {\n const keyupEvent = fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keyup');\n const compositionStartEvent = fromEvent<CompositionEvent>(\n this._elementRef.nativeElement,\n 'compositionstart'\n );\n const compositionEndEvent = fromEvent<CompositionEvent>(this._elementRef.nativeElement, 'compositionend');\n\n keyupEvent\n .pipe(\n switchMap((evt) =>\n this._zone.onStable.pipe(\n first(),\n map(() => evt)\n )\n ),\n takeUntilDestroyed()\n )\n .subscribe((evt) => this._handleKeyboardEvent(evt));\n\n compositionStartEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = true;\n });\n\n compositionEndEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = false;\n this.inputText = this._elementRef.nativeElement.value;\n });\n });\n }\n\n /** Matcher function for testing the str for a search term */\n @Input()\n matcher = (str: string, searchTerm: string): boolean => str.startsWith(searchTerm);\n\n /** @hidden */\n _handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.enable && !this._isComposing) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\n } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n this._moveIndicatorToLastCharacter();\n } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n } else if (!this._isControlKey(event) && this.inputText) {\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this.oldValue = this.inputText;\n\n const item = this.options.find((option) =>\n this.matcher(this.displayFn(option).toLocaleLowerCase(), this.inputText.toLocaleLowerCase())\n );\n\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\n this._elementRef.nativeElement.setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n\n /** @hidden */\n private _isControlKey(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n\n /** @hidden */\n private _defaultDisplay(value: any): string {\n return value;\n }\n\n /** @hidden */\n private _triggerTypeAhead(): boolean {\n return !(\n this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue\n );\n }\n\n /** @hidden */\n private _sendCompleteEvent(forceClose: boolean): void {\n this.onComplete.emit({\n term: this._elementRef.nativeElement.value,\n forceClose\n });\n }\n\n /** @hidden */\n private _moveIndicatorToLastCharacter(): void {\n const inputTextLength = this.inputText?.length ?? 0;\n this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n@NgModule({\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n})\nexport class AutoCompleteModule {}\n","import { DestroyRef, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Creates an observable that emits when the component is destroyed.\n * @param destroyRef\n */\nexport const destroyObservable = (destroyRef = inject(DestroyRef)): Observable<void> => {\n const destroy$ = new Subject<void>();\n destroyRef.onDestroy(() => destroy$.next());\n return destroy$.asObservable();\n};\n","import { get } from 'lodash-es';\n\n/** @hidden */\ninterface DfsOptions<T> {\n children: string | ((item: T) => Array<T>);\n shouldVisit: (item: T) => boolean;\n postOrder: boolean;\n}\n\n/** @hidden */\nconst _defaultDfsOptions: DfsOptions<any> = {\n children: 'children',\n shouldVisit: () => true,\n postOrder: true\n};\n\n/** @hidden */\nfunction postOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n children.forEach((child: T) => iterator(child, callback, options));\n callback(item);\n }\n };\n return iterator;\n}\n\n/** @hidden */\nfunction preOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n callback(item);\n children.forEach((child: T) => iterator(child, callback, options));\n }\n };\n return iterator;\n}\n\n/**\n * Depth-first search algorithm, which traverses a tree/graph/tree-like structure.\n * callback is called for each item in the collection. The order of the callback calls\n * depends on the options. By default, the algorithm is post-order, which means that\n * the callback is called for each item after its children have been visited.\n *\n * @param collection\n * @param callback\n * @param options\n */\nexport function dfs<T>(collection: Array<T>, callback: (item: T) => void, options: Partial<DfsOptions<T>> = {}): void {\n const mergedOptions = { ..._defaultDfsOptions, ...options } as DfsOptions<T>;\n const iterator = mergedOptions.postOrder ? postOrderDfs<T>() : preOrderDfs<T>();\n for (const item of collection) {\n iterator(item, callback, mergedOptions);\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Retrieves native element from ElementRef.\n */\nexport function getNativeElement<T extends Element = HTMLElement>(\n element: { elementRef: ElementRef<T> } | T | ElementRef<T>\n): T {\n let coercible = element;\n if (hasElementRef<T>(element)) {\n coercible = element.elementRef;\n }\n return coerceElement(coercible as T | ElementRef<T>);\n}\n\n/**\n * Checks whether object has element reference in it.\n */\nexport function hasElementRef<T extends Element = HTMLElement>(\n something: any\n): something is { elementRef: ElementRef<T> } {\n return something && something['elementRef'] instanceof ElementRef;\n}\n","import { Observable } from 'rxjs';\n\n/**\n * Helper function check whether passed data is a JS object (including function).\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isJsObject(obj: any): obj is object | Function {\n return obj !== null && (typeof obj === 'function' || typeof obj === 'object');\n}\n\n/**\n * Helper function checks whether passed value is not empty.\n */\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\n/**\n * Helper function check whether passed value is empty.\n */\nexport function isBlank(obj: any): obj is undefined | null {\n return obj === undefined || obj === null;\n}\n\n/**\n * Helper function checks whether passed value is a boolean.\n */\nexport function isBoolean(obj: any): obj is boolean {\n return typeof obj === 'boolean';\n}\n\n/**\n * Helper function checks whether passed value is a valid number.\n */\nexport function isNumber(obj: any): obj is number {\n return typeof obj === 'number';\n}\n\n/**\n * Helper function checks whether passed value is a string.\n */\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\n/**\n * Helper function checks whether passed value is a function\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isType(obj: any): obj is Function {\n return isFunction(obj);\n}\n\n/**\n * Helper function checks whether passed value is a record of `T` values.\n */\nexport function isStringMap<T = any>(obj: any): obj is Record<string, T> {\n return typeof obj === 'object' && obj !== null;\n}\n\n/**\n * Helper function checks whether passed value is an `object`.\n */\nexport function isObject<T>(item: T): boolean {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/**\n * Helper function checks whether passed value is a promise.\n */\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n\n/**\n * Helper function checks whether passed value is an Observable/Subscribable.\n */\nexport function isSubscribable<T = any>(obj: any | Observable<T>): obj is Observable<T> {\n return !!obj && isFunction(obj.subscribe);\n}\n","import { Nullable } from '../models/nullable';\nimport { isNumber } from '../typecheck';\n\n/**\n * Utility type, that allows to track and select ranges of elements while using multi-selection.\n *\n * @usage\n * Imagine we have a simple list of checkboxes:\n * ```html\n * <input\n * #checkboxInput\n * *ngFor=\"let o of options; let idx = index\"\n * type=\"checkbox\"\n * [checked]=\"selectionModel.checked(o)\"\n * (click)=\"toggle(idx, $event)\"\n * >\n * ```\n * With the given layout the logic should be as follows:\n * ```typescript\n * export class YourComponent {\n * options = ['a', 'b', 'c'];\n * readonly selectionModel = new SelectionModel(true);\n *\n * private readonly _rangeSelector = new RangeSelector();\n *\n *\n * toggle(idx: number, event: PointerEvent): void {\n * // getting the toggled value of the checkbox\n * const toggledSelection = event.target.value;\n *\n * // registering the selection of current checkbox\n * this._rangeSelector.onRangeElementToggled(idx, event);\n *\n * // Apply value to each element in range.\n * // If checkbox was toggled without shift pressed or without previously selected one,\n * // this method will select only it.\n * this._rangeSelector.applyValueToEachInRange(idx => {\n * if (toggledSelection) {\n * this.selectionModel.select(options[idx]);\n * } else {\n * this.selectionModel.deselect(options[idx]);\n * }\n * });\n * }\n * }\n * ```\n */\nexport class RangeSelector {\n /** @hidden */\n private _previousSelectedIndex: number | null = null;\n /** @hidden */\n private _state: RangeSelectionState | null;\n\n /**\n * Last registered selection state (either multiple or single).\n * Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.\n */\n get lastRangeSelectionState(): RangeSelectionState | null {\n return this._state ? { ...this._state } : null;\n }\n\n /**\n * The method that should be used to register each checkbox toggle.\n * Accepts two arguments: `index` and `event`. If none provided, will reset existing state.\n * Otherwise will register current index as last checked.\n *\n * If toggling was done with \"shift\" pressed and there's a previously registered index, will register a range selection.\n * At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.\n *\n * After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.\n *\n * See usage example on this class itself.\n */\n onRangeElementToggled(index?: number, event?: KeyboardEvent | MouseEvent | TouchEvent): RangeSelectionState | null {\n if (\n this._isNonNegativeInteger(this._previousSelectedIndex) &&\n this._isNonNegativeInteger(index) &&\n event?.shiftKey\n ) {\n this._state = {\n isRangeSelection: true,\n from: Math.min(this._previousSelectedIndex, index),\n to: Math.max(this._previousSelectedIndex, index)\n };\n this._previousSelectedIndex = index;\n } else if (this._isNonNegativeInteger(index)) {\n this._state = { isRangeSelection: false, from: index, to: index };\n this._previousSelectedIndex = index;\n } else {\n this.reset();\n }\n\n return this.lastRangeSelectionState;\n }\n\n /**\n * Allows to apply selection to each item in selection range.\n * Accepts a function to apply selection to each item by registered index.\n *\n * See usage example on this class itself.\n */\n applyValueToEachInRange(selectionMethod: (index: number) => void): void {\n const state = this.lastRangeSelectionState;\n\n if (!state) {\n return;\n }\n\n if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state?.to)) {\n for (let index = state.from; index <= state.to; index++) {\n selectionMethod(index);\n }\n }\n }\n\n /** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */\n reset(): void {\n this._state = null;\n this._previousSelectedIndex = null;\n }\n\n /** @hidden */\n private _isNonNegativeInteger(num: Nullable<number>): num is number {\n return isNumber(num) && num >= 0;\n }\n}\n\nexport interface RangeSelectionState {\n isRangeSelection: boolean;\n from: number;\n to: number;\n}\n","const messages = new Set<string>();\n\n/** @hidden */\nexport function warnOnce(message: string): void {\n if (!messages.has(message)) {\n console.warn(message);\n messages.add(message);\n }\n}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { warnOnce } from '../helpers';\nimport { ContentDensity } from '../interfaces/content-density';\n\nexport const DEFAULT_CONTENT_DENSITY: ContentDensity = 'cozy';\n\n/**\n * Service taking care of ContentDensity\n */\n@Injectable()\nexport class ContentDensityService {\n /** Content Density BehaviourSubject */\n readonly contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);\n\n /** @hidden */\n constructor() {\n if (isDevMode()) {\n warnOnce(\n `[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.\n Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`\n );\n }\n }\n\n /** @hidden */\n get _contentDensityListener(): Observable<ContentDensity> {\n return this.contentDensity.pipe(distinctUntilChanged(), startWith(this.contentDensity.getValue()));\n }\n\n /** @hidden */\n get _isCompactDensity(): Observable<boolean> {\n return this._contentDensityListener.pipe(map((density) => isCompactDensity(density)));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\n\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\n@Injectable()\nexport class DestroyedService extends ReplaySubject<void> implements OnDestroy {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(\n `DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { createFocusTrap, FocusTrap, Options } from 'focus-trap';\nimport { uuidv4 } from '../functions/uuidv4-generator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusTrapService {\n /** @hidden */\n private _focusTrapInstances: Map<any, FocusTrap> = new Map();\n\n /**\n * Creates focus trap instance for defined element\n * @param element Container for which to create focus trap\n * @param userOptions Focus-trap specific configuration\n * @returns {string} Unique ID of focus trap instance\n */\n createFocusTrap(\n element: string | HTMLElement | SVGElement | (string | HTMLElement | SVGElement)[],\n userOptions?: Options\n ): string {\n const uid = uuidv4();\n\n const trap = createFocusTrap(element, userOptions);\n\n this._focusTrapInstances.set(uid, trap);\n\n this.activateFocusTrap(uid);\n\n return uid;\n }\n\n /**\n * Activates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n activateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.activate();\n }\n\n /**\n * Deactivates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n deactivateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.deactivate();\n\n this._focusTrapInstances.delete(id);\n }\n\n /**\n * Pauses current focus trap.\n */\n pauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.pause();\n }\n\n /**\n * Unpauses current focus trap.\n */\n unpauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.unpause();\n }\n\n /**\n * Get focus trap instance by ID.\n * @param id ID of the instance.\n * @returns Focus trap instance if exists.\n */\n getFocusTrapInstance(id: string): FocusTrap | undefined {\n return this._focusTrapInstances.get(id);\n }\n\n /** @hidden */\n private _getLastTrapedItem(): FocusTrap | undefined {\n const lastItem = Array.from(this._focusTrapInstances).pop();\n\n return lastItem ? lastItem[1] : undefined;\n }\n\n /** @hidden */\n private _focusTrapExists(id: string): boolean {\n return this._focusTrapInstances.has(id);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { DestroyRef, Injectable, OnDestroy, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, merge } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable()\nexport class KeyboardSupportService<T> implements OnDestroy {\n /** Subject that is thrown, when focus escapes the list */\n focusEscapeList = new Subject<FocusEscapeDirection>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _keyManager: FocusKeyManager<T>;\n\n /** @hidden */\n get keyManager(): FocusKeyManager<T> {\n return this._keyManager;\n }\n\n /** @hidden\n * allow tab key navigation. default is true.\n */\n private _tabKeyNavigation = true;\n\n /** @hidden */\n setKeyboardService(\n queryList: QueryList<KeyboardSupportItemInterface & T>,\n wrap?: boolean,\n tabKeyNavigation = true\n ): void {\n this._keyManager?.destroy();\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshEscapeLogic(queryList));\n }\n\n /** @hidden */\n onKeyDown(event: KeyboardEvent): void {\n this._keyManager.onKeydown(event);\n if (KeyUtil.isKeyCode(event, TAB)) {\n if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {\n event.preventDefault();\n hasModifierKey(event, 'shiftKey')\n ? this.keyManager.setPreviousItemActive()\n : this.keyManager.setNextItemActive();\n }\n }\n }\n\n /** Destroys KeyboardSupportService dependencies */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** @hidden */\n private _refreshEscapeLogic(queryList: QueryList<KeyboardSupportItemInterface & T>): void {\n const createEscapeListener = (\n listItem: KeyboardSupportItemInterface & T,\n onKeyCode: number,\n escapeDirection: FocusEscapeDirection\n ): void => {\n listItem.keyDown\n .pipe(\n takeUntil(unsubscribe$),\n filter((event) => KeyUtil.isKeyCode(event, onKeyCode)),\n tap((event) => event.preventDefault())\n )\n .subscribe(() => this.focusEscapeList.next(escapeDirection));\n };\n\n /** Finish all of the streams, form before */\n this._onRefresh$.next();\n\n const unsubscribe$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n\n if (queryList.length) {\n createEscapeListener(queryList.last, DOWN_ARROW, 'down');\n createEscapeListener(queryList.first, UP_ARROW, 'up');\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nclass MockStorage {\n readonly length: number;\n\n // eslint-disable-next-line\n key(index: number): any {}\n\n clear(): void {}\n\n // eslint-disable-next-line\n getItem(key: string): any {}\n\n // eslint-disable-next-line\n removeItem(key: string): void {}\n\n // eslint-disable-next-line\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LocalStorageService {\n /** @hidden */\n private _storage: Storage;\n\n /** @hidden */\n constructor() {\n typeof localStorage !== 'undefined' ? (this._storage = localStorage) : (this._storage = new MockStorage());\n }\n\n /** Get item from local storage. */\n get(key: string): any {\n const value = this._storage.getItem(key);\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /** Set item in local storage. */\n set(key: string, value: any): void {\n this._storage.setItem(key, JSON.stringify(value));\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AttributeObserver implements OnDestroy {\n /** @Hidden */\n private readonly _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n /** @hidden */\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** @Hidden */\n observe(elementOrRef: Element | ElementRef<Element> | HasElementRef<Element>): Observable<MutationRecord[]> {\n const element = getNativeElement(elementOrRef);\n return new Observable((observer: Observer<MutationRecord[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._unobserveElement(getNativeElement(element));\n }\n\n /** @hidden */\n private _observeElement(element: Element): Subject<MutationRecord[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MutationRecord[]>();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n attributes: true\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n /** @Hidden */\n private _unobserveElement(element: Element): void {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n /** @hidden */\n private _cleanupObserver(element: Element): void {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\ninterface ObservedElement {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n /** Factory to create ResizeObserver if it's present in browser. */\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n /** @hidden */\n private _observedElements = new Map<Element, ObservedElement>();\n\n /** @hidden */\n constructor(private _resizeObserverFactory: ResizeObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** Observe the given element and emit whenever its size changes. */\n observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream?.subscribe(observer);\n\n return () => {\n subscription?.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n private _observeElement(element: Element): Subject<ResizeObserverEntry[]> | undefined {\n let observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._resizeObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n observedElement = { observer, stream, count: 0 };\n this._observedElements.set(element, observedElement);\n }\n observedElement.count++;\n return observedElement?.stream;\n }\n\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n private _unobserveElement(element: Element): void {\n const observedElement = this._observedElements.get(element);\n if (!observedElement) {\n return;\n }\n\n if (--observedElement.count) {\n return;\n }\n this._cleanupObserver(element);\n }\n\n /** Clean up the underlying MutationObserver for the specified element. */\n private _cleanupObserver(element: Element): void {\n const observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n return;\n }\n const { observer, stream } = observedElement;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\n\n/** Default RTL languages */\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n@Injectable()\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** RTL value */\n rtl: BehaviorSubject<boolean>;\n\n /** Signal wrapper for RTL value. */\n rtlSignal: Signal<boolean>;\n\n /** @hidden */\n constructor(@Optional() @Inject(RTL_LANGUAGE) injectedRtlLanguages: string[]) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n\n this.rtl = new BehaviorSubject(filtered.length > 0);\n\n this.rtlSignal = toSignal(this.rtl, { requireSync: true });\n }\n}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, Optional } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TabbableElementService {\n /** @hidden */\n constructor(\n private readonly _checker: InteractivityChecker,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n getTabbableElement(root: HTMLElement, focusLastElement = false, skipSelf = false): HTMLElement | null {\n if (!skipSelf && this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG, so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n const rootChildren = root.children || root.childNodes;\n\n const children = focusLastElement ? Array.from(rootChildren).reverse() : rootChildren;\n\n for (let i = 0; i < children.length; i++) {\n const tabbableChild =\n children[i].nodeType === this._document?.ELEMENT_NODE\n ? this.getTabbableElement(children[i] as HTMLElement, focusLastElement)\n : null;\n\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n\n return null;\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\n/**\n * Injection token for the viewport size observable.\n * Emits the viewport size in pixels, which are outputted by the ViewportRuler\n * from @angular/cdk/overlay.\n */\nexport const ViewportSizeObservable = new InjectionToken<Observable<number>>('ViewportSizeObservable', {\n providedIn: 'root',\n factory: () => {\n const viewportRuler = inject(ViewportRuler);\n return viewportRuler\n .change(50)\n .pipe(map((e) => (e.target as Window).innerWidth))\n .pipe(startWith(window.innerWidth));\n }\n});\n","export const ResponsiveBreakpoints = {\n S: 600,\n M: 1024,\n L: 1440\n} as const;\n\ntype breakpointName = keyof typeof ResponsiveBreakpoints | 'XL';\n\nexport type BreakpointName = Lowercase<breakpointName> | Uppercase<breakpointName>;\n\n/** @hidden */\nexport function getBreakpointName(width: number): breakpointName {\n if (width < ResponsiveBreakpoints.S) {\n return 'S';\n }\n if (width < ResponsiveBreakpoints.M) {\n return 'M';\n }\n if (width < ResponsiveBreakpoints.L) {\n return 'L';\n }\n return 'XL';\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Input,\n NgModule,\n OnChanges,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { ResizeObserverService } from '../../services';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\n\n/**\n * Directive to show/hide element on specific breakpoint or range of window width.\n * Uses native ngIf directive to show/hide element.\n */\n@Directive({\n selector:\n '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',\n standalone: true\n})\nexport class BreakpointDirective implements OnChanges, AfterViewInit {\n /**\n * Provide list of the breakpoints to show element on.\n * */\n @Input()\n set fdkBreakpoint(value: BreakpointName[]) {\n const providedValues = value.map((v) => v.toLowerCase());\n this.showOnS = providedValues.includes('s');\n this.showOnM = providedValues.includes('m');\n this.showOnL = providedValues.includes('l');\n this.showOnXL = providedValues.includes('xl');\n }\n\n /**\n * Show element on S breakpoint.\n * S - 0 - 599px\n * */\n @Input({ alias: 'fdkBreakpointS', transform: booleanAttribute })\n showOnS = false;\n\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n @Input({ alias: 'fdkBreakpointM', transform: booleanAttribute })\n showOnM = false;\n\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n @Input({ alias: 'fdkBreakpointL', transform: booleanAttribute })\n showOnL = false;\n\n /**\n * Show element on XL breakpoint.\n * */\n @Input({ alias: 'fdkBreakpointXL', transform: booleanAttribute })\n showOnXL = false;\n\n /**\n * Show element on breakpoint less than provided value.\n * */\n @Input()\n fdkBreakpointLt: number;\n\n /**\n * Show element on breakpoint greater than provided value.\n * */\n @Input()\n fdkBreakpointGt: number;\n\n /**\n * Observe element width changes.\n */\n @Input('fdkBreakpointObserve')\n set observationSource(value: HTMLElement | ElementRef<HTMLElement>) {\n if (!value) {\n this._sizeObservable$.next(this.viewportSize$);\n return;\n }\n const element = coerceElement(value);\n this._sizeObservable$.next(\n this._resizeObserverService.observe(value).pipe(\n map(() => element.offsetWidth),\n startWith(element.offsetWidth)\n )\n );\n }\n\n /** @hidden */\n templateViewRef?: EmbeddedViewRef<unknown>;\n\n /** @hidden */\n onChanges$ = new Subject<void>();\n\n /** @hidden */\n _sizeObservable$: BehaviorSubject<Observable<number>> = new BehaviorSubject<Observable<number>>(\n inject(ViewportSizeObservable)\n );\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor(\n private readonly templateRef: TemplateRef<any>,\n private readonly viewContainer: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])\n .pipe(\n map(([w]) => [w, getBreakpointName(w)] as const),\n map(([width, breakpointName]) => this._shouldShow(width, breakpointName)),\n tap((shouldShow) => {\n if (shouldShow) {\n if (!this.templateViewRef) {\n this.viewContainer.clear();\n this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n this.templateViewRef.detectChanges();\n }\n } else {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n }\n }),\n takeUntilDestroyed(this._destroyRef),\n finalize(() => {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n })\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.onChanges$.next();\n }\n\n /** @hidden */\n private _shouldShow(width: number, currentBreakpoint: BreakpointName): boolean {\n const shouldShowOnBreakpoints = [\n this.showOnS && 'S',\n this.showOnM && 'M',\n this.showOnL && 'L',\n this.showOnXL && 'XL'\n ].filter(Boolean);\n const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);\n if (this.fdkBreakpointLt) {\n return width < this.fdkBreakpointLt;\n }\n if (this.fdkBreakpointGt) {\n return width > this.fdkBreakpointGt;\n }\n return shouldShow;\n }\n}\n\n@NgModule({\n imports: [BreakpointDirective],\n exports: [BreakpointDirective]\n})\nexport class BreakpointModule {}\n","import { DestroyRef, Directive, ElementRef, inject, Output, Renderer2 } from '@angular/core';\nimport { fromEvent, merge, Observable, Subject } from 'rxjs';\n\n@Directive({\n selector: '[fdkClicked]',\n standalone: true\n})\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static eventName = 'fdkClicked';\n\n /**\n * Event emitted when user either clicks with mouse, or\n * clicks on space or enter keys\n */\n @Output() fdkClicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** @hidden */\n constructor() {\n const { nativeElement: element } = inject<ElementRef<HTMLElement>>(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n const enter$ = new Subject<KeyboardEvent>();\n const space$ = new Subject<KeyboardEvent>();\n\n destroyRef.onDestroy(renderer.listen(element, 'keydown.enter', (e) => enter$.next(e)));\n destroyRef.onDestroy(renderer.listen(element, 'keydown.space', (e) => space$.next(e)));\n\n destroyRef.onDestroy(() => {\n enter$.complete();\n space$.complete();\n });\n\n this.fdkClicked = merge(fromEvent<MouseEvent>(element, 'click'), enter$, space$);\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n/**\n * @deprecated\n * No need to use it anymore. Use ClickedDirective directly instead.\n */\n@Injectable()\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n console.warn(\n `ClickedEventPlugin is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n\n /** @hidden */\n addEventListener(element: HTMLElement, eventName: string, handler: EventHandlerFunction): ($event: Event) => void {\n return this._setupEventBinding(element, handler);\n }\n\n /** @hidden */\n addGlobalEventListener(\n higherOrderElement: string,\n eventName: string,\n handler: EventHandlerFunction\n ): HandlerRemoveFunction {\n const target = this._parseHigherOrderElement(higherOrderElement);\n return this._setupEventBinding(target, handler);\n }\n\n /** @hidden */\n supports(eventName: string): boolean {\n return eventName === ClickedDirective.eventName;\n }\n\n /** @hidden */\n private _parseHigherOrderElement(selector: string): EventTarget {\n if (this.platformId !== 'browser') {\n return this.document;\n }\n switch (selector) {\n case 'window':\n return window;\n case 'document':\n return document;\n case 'body':\n return document.body;\n default:\n throw new Error(`Element selector [${selector}] not supported.`);\n }\n }\n\n /** @hidden */\n private _setupEventBinding(target: EventTarget, handler: EventHandlerFunction): HandlerRemoveFunction {\n const addProxyFunction = (): void => {\n target.addEventListener('click', proxyFunction, false);\n target.addEventListener('keydown', proxyFunction, false);\n };\n\n const removeProxyFunction = (): void => {\n target.removeEventListener('click', proxyFunction, false);\n target.removeEventListener('keydown', proxyFunction, false);\n };\n\n const proxyFunction = (event: Event | MouseEvent | KeyboardEvent): void => {\n if (event instanceof KeyboardEvent) {\n if (event.keyCode !== ENTER && event.keyCode !== SPACE) {\n return;\n }\n }\n handler(event);\n };\n\n addProxyFunction();\n\n return removeProxyFunction;\n }\n}\n","import { InjectionToken, isDevMode, Provider } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport const ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n 'Checking Module providers had been loaded',\n { factory: () => false }\n);\n\n/**\n * Provides ClickedEventPlugin to the application\n * @deprecated\n */\nexport function provideFdkClicked(): Provider[] {\n if (isDevMode()) {\n console.warn(\n `provideFdkClicked() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ];\n}\n","import { isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport { provideFdkClicked } from './provide-fdk-clicked';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\n@NgModule({\n imports: [ClickedDirective],\n exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor() {\n console.warn(\n `ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n /** @hidden */\n static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n if (isDevMode()) {\n console.warn(\n `ClickedBehaviorModule.forRoot() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return {\n ngModule: ClickedBehaviorModule,\n providers: [provideFdkClicked()]\n };\n }\n}\n","import { ElementRef, inject, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Returns Observable that emits when element is clicked. Uses Renderer2 to listen to events.\n * @param element\n * @param renderer\n */\nexport function elementClick$(\n element: ElementRef<HTMLElement> | HTMLElement,\n renderer: Renderer2 = inject(Renderer2)\n): Observable<MouseEvent | KeyboardEvent> {\n return new Observable<MouseEvent | KeyboardEvent>((observer) => {\n const cleanups: (() => void)[] = [\n renderer.listen(element, 'click', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.enter', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.space', (event) => {\n event.preventDefault();\n observer.next(event);\n })\n ];\n return () => cleanups.forEach((cleanup) => cleanup());\n });\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\n@Injectable()\nexport class FdkClickedProvider extends Subject<MouseEvent | KeyboardEvent> implements OnDestroy {\n /** @hidden */\n private _preventDefault = true;\n /** @hidden */\n private _listeners!: Array<() => void>;\n /** @hidden */\n private readonly _fdkClickedEventManagerPluginLoaded: boolean;\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<Element>,\n private readonly _renderer: Renderer2,\n @Inject(EVENT_MANAGER_PLUGINS) eventManagerPlugins: any[]\n ) {\n super();\n this._fdkClickedEventManagerPluginLoaded = eventManagerPlugins.some((em) => em instanceof ClickedEventPlugin);\n this._initialize();\n }\n\n /** @hidden */\n setPreventDefault(val: boolean): void {\n this._preventDefault = val;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._listeners.forEach((d) => d());\n this.complete();\n }\n\n /** @hidden */\n private _initialize(): void {\n const eventsList: string[] = this._fdkClickedEventManagerPluginLoaded\n ? [ClickedDirective.eventName]\n : ['click', 'keydown.enter', 'keydown.space'];\n this._listeners = eventsList.map((eventName) =>\n this._renderer.listen(this._elementRef.nativeElement, eventName, (event: MouseEvent | KeyboardEvent) => {\n if (this._preventDefault) {\n event.preventDefault();\n }\n this.next(event);\n })\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @hidden */\nexport function setDisabledState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isDisabled: boolean,\n disabledClass: string,\n addDisabledClass: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isDisabled) {\n if (addDisabledClass) {\n htmlElement.classList.add(disabledClass);\n }\n htmlElement.setAttribute('disabled', '');\n htmlElement.setAttribute('aria-disabled', 'true');\n } else {\n htmlElement.classList.remove(disabledClass);\n htmlElement.removeAttribute('disabled');\n htmlElement.removeAttribute('aria-disabled');\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, filter } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FdkClickedProvider } from '../clicked';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { setDisabledState } from './set-disabled-state';\n\n@Directive({\n selector: '[fdkDisabled]',\n standalone: true,\n providers: [\n {\n provide: FDK_DISABLED_DIRECTIVE,\n useExisting: DisabledBehaviorDirective\n },\n FdkClickedProvider\n ]\n})\nexport class DisabledBehaviorDirective\n extends ReplaySubject<boolean>\n implements AfterViewInit, DisabledBehavior, DisabledViewModifier\n{\n /** @hidden */\n @Input()\n set fdkDisabled(value: BooleanInput) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n\n get fdkDisabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Whether to add `disabledClass` class to the element.\n */\n @Input()\n addDisabledClass = true;\n\n /**\n * Disabled css class to apply to the element.\n */\n @Input()\n disabledClass = 'is-disabled';\n\n /** @hidden */\n private _disabled = false;\n /** @hidden */\n private readonly _fdkDisableInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef,\n private _clicked: FdkClickedProvider\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fdkDisableInput$\n .pipe(\n filter((isDisabled) => isDisabled !== this._disabled),\n tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n@NgModule({\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DisabledObserver {\n /** @hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @hidden */\n static isDisabled(el: Element): boolean {\n return (\n el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true' ||\n el.classList.contains('is-disabled')\n );\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => DisabledObserver.isDisabled(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { setDisabledState } from './set-disabled-state';\n\nexport class DefaultDisabledViewModifier implements DisabledViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this.elementRef, isDisabled, 'is-disabled', true);\n };\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DisabledObserver } from './disabled.observer';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n /** @Hidden */\n fdkDisabled = false;\n /** @Hidden */\n private readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]> = new BehaviorSubject<\n DisabledViewModifier[]\n >(this._getInitialViewModifiers());\n /** @hidden */\n private _disabledChange$: Observable<boolean> = this._getDisabledChange$();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>,\n private disabledObserver: DisabledObserver,\n @Optional() @Self() @Inject(FDK_DISABLED_DIRECTIVE) private selfDisabled$?: DisabledBehavior,\n @Optional() @SkipSelf() @Inject(FDK_DISABLED_DIRECTIVE) private parentDisabled$?: DisabledBehavior\n ) {\n super(1);\n combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(\n tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._disabledChange$\n .pipe(\n tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: DisabledViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.disabledObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getDisabledChange$(): Observable<boolean> {\n let selfDisabled = false;\n let parentDisabled = false;\n\n if (this.parentDisabled$) {\n this.parentDisabled$\n .pipe(\n startWith(this.parentDisabled$.fdkDisabled),\n tap((d) => (parentDisabled = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentDisabled) {\n this.setDisabledState(true);\n }\n if (!selfDisabled && !parentDisabled) {\n this.setDisabledState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfDisabled$) {\n this.selfDisabled$\n .pipe(\n startWith(this.selfDisabled$.fdkDisabled),\n tap((d) => (selfDisabled = d)),\n distinctUntilChanged(),\n tap((isDisabled) => {\n if (!parentDisabled) {\n this.setDisabledState(isDisabled);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.disabledObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): DisabledViewModifier[] {\n return !this.selfDisabled$ ? [new DefaultDisabledViewModifier(this.elementRef)] : [this.selfDisabled$];\n }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUSABLE_ITEM = new InjectionToken<FocusableOption>('Focusable Option');\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n DestroyRef,\n Directive,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '../../services/rtl.service';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: `[fdkFocusKeyManagerList]`,\n standalone: true\n})\nexport class FocusKeyManagerListDirective<TItem extends FocusableOption = Record<any, any> & FocusableOption>\n implements OnChanges, AfterContentInit, OnDestroy\n{\n /** Orientation for the FocusKeyManager */\n @Input()\n orientation: 'horizontal' | 'vertical';\n\n /** Skip predicate for the FocusKeyManager */\n @Input()\n skipPredicate: (item: TItem) => boolean;\n\n /** @hidden */\n @ContentChildren(FOCUSABLE_ITEM)\n readonly _items: QueryList<TItem>;\n\n /** @hidden */\n get focusKeyManager(): FocusKeyManager<TItem> {\n return this._focusKeyManager;\n }\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<TItem>;\n\n /** @hidden */\n private readonly _onDestroy$ = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n @Optional() private readonly _rtlService: RtlService,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._focusKeyManager) {\n return;\n }\n\n if ('orientation' in changes) {\n this._applyOrientation();\n }\n\n if ('skiPredicate' in changes) {\n this._focusKeyManager.skipPredicate(this.skipPredicate);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._focusKeyManager = new FocusKeyManager<TItem>(this._items).skipPredicate(this.skipPredicate);\n\n this._applyOrientation();\n\n this._cdr.detectChanges();\n\n this._rtlService?.rtl\n .pipe(\n filter(() => this.orientation === 'horizontal'),\n takeUntilDestroyed(this._onDestroy$)\n )\n .subscribe(() => this._applyOrientation());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._focusKeyManager.destroy();\n }\n\n /** Focus certain list's item */\n focusItem(item: number | TItem): any {\n if (typeof item === 'number') {\n this._focusKeyManager.setActiveItem(item);\n } else {\n this._focusKeyManager.setActiveItem(item);\n }\n }\n\n /** @hidden */\n private _applyOrientation(): void {\n switch (this.orientation) {\n case 'horizontal':\n this._focusKeyManager.withHorizontalOrientation(this._rtlService?.rtl.value ? 'rtl' : 'ltr');\n break;\n case 'vertical':\n this._focusKeyManager.withVerticalOrientation(true);\n break;\n }\n }\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { booleanAttribute, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: '[fdkFocusKeyManagerItem]',\n standalone: true,\n providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }]\n})\nexport class FocusKeyManagerItemDirective implements FocusableOption {\n /** Whether item should be initially focused */\n @Input({ transform: booleanAttribute })\n initialFocus = false;\n\n /** @hidden */\n @Input()\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this.initialFocus ? 0 : (this.nativeElement?.tabIndex ?? -1);\n }\n\n /** Native element of the item */\n get nativeElement(): any {\n return this._elRef?.nativeElement;\n }\n\n /** @hidden */\n private get _focusKeyManager(): FocusKeyManager<FocusableOption> {\n return this._list.focusKeyManager;\n }\n\n /** @hidden */\n constructor(\n private readonly _list: FocusKeyManagerListDirective,\n private readonly _elRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('focus')\n _onFocus(): void {\n // For cases where initially selected item doesn't have 0 index\n this._focusKeyManager?.updateActiveItem(this);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n this._focusKeyManager?.onKeydown(event);\n }\n\n /** Focus current item native element */\n focus(): void {\n this._elRef?.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FocusKeyManagerItemDirective } from './focus-key-manager-item.directive';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\n\n@NgModule({\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces';\n\nconst focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);\n\nconst focusableTagOptions = [\n {\n tag: 'div',\n attributes: [\n {\n name: 'contenteditable',\n valueMatcher: (value: string) => coerceBooleanProperty(value)\n }\n ]\n }\n];\n\n/** @hidden */\nexport function isElementFocusableByDefault(el: HasElementRef<Element> | Element | ElementRef<Element>): boolean {\n const element = getNativeElement(el);\n const tagName = element.tagName.toLowerCase();\n if (focusableTagnamesByDefault.has(tagName)) {\n return true;\n }\n\n return focusableTagOptions.some((tagOptions) => {\n if (tagOptions.tag === tagName) {\n return tagOptions.attributes.some((attribute) => {\n const attrVal = element.getAttribute(attribute.name);\n return attrVal && attribute.valueMatcher(attrVal);\n });\n }\n return false;\n });\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport { DisabledObserver } from '../disabled/disabled.observer';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusableObserver {\n /** @hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @Hidden */\n static isFocusable(element: Element, respectTabIndex: boolean): boolean {\n if (DisabledObserver.isDisabled(element)) {\n return false;\n }\n\n if (!respectTabIndex) {\n return true;\n }\n\n const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);\n if (isNaN(tabIndex)) {\n return isElementFocusableByDefault(element);\n }\n\n return tabIndex > -1;\n }\n\n /** @hidden */\n observe(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n respectTabIndex = true\n ): Observable<boolean> {\n const nativeElement = getNativeElement(element);\n return this._attributeObserver.observe(nativeElement).pipe(\n map(() => FocusableObserver.isFocusable(nativeElement, respectTabIndex)),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { Nullable } from '../../models/nullable';\nimport { TabbableElementService } from '../../services';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\nimport { FocusableObserver } from './focusable.observer';\n\nexport type CellFocusedEventAnnouncer = Nullable<(position: FocusableItemPosition) => string>;\n\nexport interface FocusableItemPosition {\n rowIndex: number;\n colIndex: number;\n totalRows: number;\n totalCols: number;\n}\n\n@Directive({\n selector: '[fdkFocusableItem]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n})\nexport class FocusableItemDirective implements FocusableItem, HasElementRef {\n /** Whether the item is focusable. Default is true. */\n @Input({ transform: booleanAttribute })\n set fdkFocusableItem(val: boolean) {\n this._focusable = val;\n this.setTabbable(this._focusable);\n }\n\n get fdkFocusableItem(): boolean {\n return this._focusable;\n }\n\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n @Input()\n cellFocusedEventAnnouncer: CellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n @Output()\n readonly cellFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Element reference. */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @hidden */\n readonly keydown = new Subject<KeyboardEvent>();\n\n /** @hidden */\n _position: FocusableItemPosition;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n protected readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _focusable = true;\n\n /** @hidden */\n private _tabbableElements = new Map<HTMLElement, number>();\n\n /** @hidden */\n private _tabbable = true;\n /** @hidden */\n private _timerId: ReturnType<typeof setTimeout> | null;\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n /** @hidden */\n private readonly _tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private readonly _renderer2 = inject(Renderer2);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n constructor() {\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n\n fromEvent(this.elementRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this._onFocusout();\n });\n\n fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n\n /** @hidden */\n element = (): HTMLElement => this.elementRef.nativeElement;\n\n /** @hidden */\n isFocusable(): boolean {\n return this._focusable;\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._tabbable = state;\n this._renderer2.setAttribute(this.elementRef.nativeElement, 'tabindex', this._tabbable ? '0' : '-1');\n\n if (state) {\n this._enableTabbableElements();\n } else {\n this._disableTabbableElements();\n }\n }\n\n /** @hidden */\n private async _onFocusin(): Promise<void> {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n if (this._timerId != null) {\n clearTimeout(this._timerId);\n this._timerId = null;\n return;\n }\n\n if (this._position) {\n this.cellFocused.next(this._position);\n\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n }\n\n /** @hidden */\n private _onFocusout(): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n // Timeout is needed to prevent focusout event from being emitted when focus moves between item's children.\n this._timerId = setTimeout(() => (this._timerId = null));\n }\n\n /** @hidden */\n private _onKeydown(event: KeyboardEvent): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n const isFocused = this._document.activeElement === this.elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusCell =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n const tabbableElement = this._tabbableElementService.getTabbableElement(\n this.elementRef.nativeElement,\n false,\n true\n );\n\n tabbableElement?.focus();\n\n return;\n } else if (shouldFocusCell) {\n event.stopPropagation();\n\n this.elementRef.nativeElement.focus();\n\n return;\n }\n\n if (isFocused) {\n this.keydown.next(event);\n }\n }\n\n /** @hidden */\n private _enableTabbableElements(): void {\n if (this._tabbableElements.size === 0) {\n return;\n }\n\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n\n /** @hidden */\n private _disableTabbableElements(): void {\n // Since we cannot select by tabindex attribute (links, inputs, buttons might not have one but still can be focusable),\n // Select all elements from the cell and filter by tabIndex property.\n Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\n });\n }\n\n /** @hidden */\n private _defaultItemFocusedEventAnnouncer(position: FocusableItemPosition): string {\n return `Column ${position.colIndex + 1} of ${position.totalCols}, row: ${position.rowIndex + 1} of ${\n position.totalRows\n }`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from './focusable-item.directive';\n\n@NgModule({\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\n","import { Directive, inject, Injector } from '@angular/core';\nimport deepEqual from 'fast-deep-equal';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';\nimport { FocusableItem } from '../focusable-item/focusable.item';\nimport { FocusableListDirective, ItemsQueryList } from './focusable-list.directive';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\n\n@Directive({\n selector: '[fdkIndirectFocusableList]',\n exportAs: 'fdkIndirectFocusableList',\n standalone: true\n})\nexport class IndirectFocusableListDirective {\n /** @hidden */\n injector = inject(Injector);\n /** @hidden */\n _focusableList = inject<FocusableListDirective>(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });\n /** @hidden */\n _indirectChildren = new BehaviorSubject<FocusableItem[]>([]);\n /** @hidden */\n _indirectChildrenMap = new Map<FocusableItem, number | (() => number)>();\n\n /** @hidden */\n constructor() {\n if (this._focusableList) {\n const queryList: ItemsQueryList<FocusableItem> = {\n toArray: () => this._indirectChildren.value,\n get: (index: number) => this._indirectChildren.value[index],\n [Symbol.iterator]: () => this._indirectChildren.value[Symbol.iterator](),\n forEach: (\n callback: (value: FocusableItem, index: number, array: FocusableItem[]) => void,\n thisArg?: any\n ) => this._indirectChildren.value.forEach(callback, thisArg)\n } as any;\n queryList['changes'] = this._indirectChildren.pipe(\n debounceTime(100),\n distinctUntilChanged(deepEqual),\n map(() => queryList)\n );\n this._focusableList.setItems(queryList);\n }\n }\n\n /** @hidden */\n register(item: FocusableItem, itemOrder: number | (() => number)): void {\n this._indirectChildrenMap.set(item, itemOrder);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n unregister(item: FocusableItem): void {\n this._indirectChildrenMap.delete(item);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n protected _updateIndirectChildren(): void {\n this._indirectChildren.next(\n Array.from(this._indirectChildrenMap.entries())\n .sort(([, orderA], [, orderB]) => {\n const orderAValue = typeof orderA === 'function' ? orderA() : orderA;\n const orderBValue = typeof orderB === 'function' ? orderB() : orderB;\n return orderAValue - orderBValue;\n })\n .map(([focusableItem]) => focusableItem)\n );\n }\n}\n","import { DestroyRef, Directive, inject, InjectionToken } from '@angular/core';\nimport { IndirectFocusableListDirective } from '../focusable-list/indirect-focusable-list.directive';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\n\nexport const FDK_INDIRECT_FOCUSABLE_ITEM_ORDER = new InjectionToken<number | (() => number)>(\n 'FDK_INDIRECT_FOCUSABLE_ITEM_ORDER'\n);\n\n/**\n * Directive, to mark the focusable item in the focusable list, which\n * is not the direct child of the focusable list.\n *\n * Useful in cases, when you need to make the item focusable, and\n * you do not have the access to the focusable list.\n */\n@Directive({\n selector: '[fdkIndirectFocusableItem]',\n standalone: true\n})\nexport class IndirectFocusableItemDirective {\n /** @hidden */\n protected _focusableItem = inject<FocusableItem>(FDK_FOCUSABLE_ITEM_DIRECTIVE, { optional: true });\n /** @hidden */\n protected _indirectFocusableList = inject(IndirectFocusableListDirective, { optional: true });\n /** @hidden */\n protected _order: number | (() => number) | null = inject(FDK_INDIRECT_FOCUSABLE_ITEM_ORDER, { optional: true });\n /** @hidden */\n protected _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n if (!this._focusableItem) {\n throw new Error(\n 'fdkIndirectFocusableItem directive must be used in conjunction with fdkFocusableItem directive'\n );\n }\n if (this._indirectFocusableList && this._order) {\n const focusableItem = this._focusableItem;\n const indirectFocusableList = this._indirectFocusableList;\n indirectFocusableList.register(this._focusableItem, this._order);\n this._destroyRef.onDestroy(() => indirectFocusableList.unregister(focusableItem));\n }\n }\n}\n","import { FocusableItem } from './focusable.item';\n\n/**\n * Returns true if the item configured to be focusable.\n * @param item\n */\nexport function isItemFocusable(item: FocusableItem): boolean {\n return Boolean(typeof item.isFocusable === 'function' ? item.isFocusable() : item.isFocusable);\n}\n","import { Nullable } from '../../models/nullable';\nimport { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: Nullable<FocusableItem>): HTMLElement | null {\n if (!item) {\n return null;\n }\n if (typeof item.element === 'function') {\n return item.element();\n }\n\n return item.element;\n}\n","import { Nullable } from '../../models/nullable';\n\nexport type ScrollPosition = 'top' | 'bottom' | undefined;\n\n/** Helper function to scroll to focusable list or its item relatively to the container. */\nexport function scrollIntoView(element: Nullable<HTMLElement>, position: Nullable<ScrollPosition>): void {\n if (!element) {\n return;\n }\n\n const scrollableParent = getScrollParent(element);\n\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\n if (!position) {\n /**\n * check if top of focused element is fully visible, and if not, adjust scroll.\n * this is triggered when a sticky table header overlaps the focused cell.\n */\n const elRect = element.getBoundingClientRect();\n const topEl = document.elementFromPoint(elRect.left, elRect.top) as HTMLElement;\n if (\n !element.isSameNode(topEl) &&\n topEl &&\n element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top\n ) {\n scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });\n }\n }\n switch (position) {\n case 'top':\n scrollableParent.scrollTop = itemOffsetTop;\n break;\n case 'bottom':\n scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);\n break;\n }\n }\n}\n\nfunction getScrollParent(node: HTMLElement | null): HTMLElement | null {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n return node;\n } else {\n return getScrollParent(node.parentNode as HTMLElement);\n }\n}\n","import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil, intersectionObservable } from '../../functions';\nimport { destroyObservable } from '../../helpers';\nimport { Nullable } from '../../models/nullable';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItem,\n FocusableListPosition,\n FocusableObserver,\n isItemFocusable\n} from '../focusable-item';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { ScrollPosition, scrollIntoView } from './scroll';\n\nexport interface FocusableListItemFocusedEvent {\n index: number;\n total: number;\n}\n\nexport interface FocusableListKeydownEvent {\n list: FocusableListDirective;\n event: KeyboardEvent;\n activeItemIndex: Nullable<number>;\n}\n\ninterface FocusableListConfig {\n wrap?: boolean;\n direction?: 'vertical' | 'horizontal';\n contentDirection?: 'ltr' | 'rtl' | null;\n}\n\nexport interface ItemsQueryList<T> extends Iterable<T> {\n changes: Observable<ItemsQueryList<T>>;\n length: number;\n toArray(): T[];\n find(predicate: (item: T, index: number) => boolean): Nullable<T>;\n get(index: number): Nullable<T>;\n forEach(param: (item: T, index: number) => void): void;\n}\n\n@Directive({\n selector: '[fdkFocusableList]',\n exportAs: 'fdkFocusableList',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n})\nexport class FocusableListDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Whether the whole list should be focusable, handy in grids. */\n @Input({ transform: booleanAttribute })\n set focusable(value: boolean) {\n this._focusable = value;\n\n this.setTabbable(this._focusable);\n }\n\n get focusable(): boolean {\n return this._focusable;\n }\n\n /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */\n @Input()\n navigationDirection: 'horizontal' | 'vertical' | 'grid' = 'vertical';\n\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /**\n * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.\n */\n @Input({ transform: booleanAttribute })\n wrap = false;\n\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n @Input()\n listFocusedEventAnnouncer: (position: FocusableListPosition) => string = this._defaultListFocusedEventAnnouncer;\n\n /** Event emitted when list's item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableListItemFocusedEvent>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n readonly _projectedFocusableItems: ItemsQueryList<FocusableItem>;\n\n /** @hidden */\n get _focusableItems(): ItemsQueryList<FocusableItem> {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n\n /** @hidden */\n _items: ItemsQueryList<FocusableItem> | undefined;\n\n /** @hidden */\n readonly _gridItemFocused$ = new Subject<FocusableItemPosition>();\n\n /** @hidden */\n readonly _gridListFocused$ = new Subject<FocusableListPosition>();\n\n /** @hidden */\n readonly _keydown$ = new Subject<FocusableListKeydownEvent>();\n\n /** @hidden */\n _isVisible = false;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _focusable = false;\n\n /** @hidden */\n private _gridPosition: { rowIndex: number; totalRows: number };\n\n /** @hidden */\n private _keyManager?: FocusKeyManager<FocusableItem>;\n\n /** @hidden */\n private _tabbable = false;\n\n /** @hidden */\n private readonly _refreshItems$ = new Subject<void>();\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n /** @hidden */\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n constructor() {\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n const isFocused = this._document.activeElement === this._elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusList =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n this.setActiveItem(0);\n\n return;\n } else if (shouldFocusList) {\n event.stopPropagation();\n\n this.focus();\n\n return;\n }\n\n this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });\n }\n\n /** @hidden */\n @HostListener('focus')\n async _onFocus(): Promise<void> {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n\n this.setTabbable(true);\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._keyManager) {\n return;\n }\n\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenOnItems();\n }\n\n /** Set items programmatically. */\n setItems(items: ItemsQueryList<FocusableItem>): void {\n this._items = items;\n this._listenOnItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** Set active item in list */\n setActiveItem(index: number, scrollPosition?: ScrollPosition): void {\n let availableIndex;\n\n this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n\n return false;\n });\n\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(availableIndex)), scrollPosition);\n this._keyManager?.setActiveItem(availableIndex);\n }\n }\n\n /** Focus whole list */\n focus(scrollPosition?: ScrollPosition): void {\n if (this.focusable) {\n scrollIntoView(this._elementRef.nativeElement, scrollPosition);\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._tabbable = state;\n }\n\n /** @hidden */\n _updateNavigationDirection(): void {\n if (!this._keyManager) {\n return;\n }\n\n if (this.navigationDirection === 'vertical') {\n this._keyManager = this._keyManager.withVerticalOrientation(true);\n this._keyManager = this._keyManager.withHorizontalOrientation(null);\n } else {\n this._keyManager = this._keyManager.withVerticalOrientation(false);\n this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');\n }\n }\n\n /** @hidden */\n _setItemsTabbable(state: boolean): void {\n this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n\n /** @hidden */\n _setGridPosition(position: FocusableListPosition): void {\n this._gridPosition = position;\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) =>\n items.forEach(\n (item, index) =>\n (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })\n )\n );\n }\n\n /** @hidden */\n private _initializeFocusManager(items: FocusableItem[], config: FocusableListConfig = {}): void {\n this._refreshItems$.next();\n\n let keyManager = new FocusKeyManager<any>(items).withHomeAndEnd();\n\n if (config.wrap !== false) {\n keyManager = keyManager.withWrap();\n }\n\n if (config.direction === 'horizontal') {\n keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced\n\n // Vertical is enabled by default, so let's disable it here in consistency purposes\n keyManager = keyManager.withVerticalOrientation(false);\n }\n\n keyManager.skipPredicate((i) => !isItemFocusable(i));\n\n this._keyManager = keyManager;\n\n const focusListenerDestroyers = items.map((item, index) =>\n this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position!);\n }\n\n this.itemFocused.next({ index, total: items.length });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n })\n );\n\n merge(...items.map((item) => item.keydown))\n .pipe(\n tap((event: KeyboardEvent) => {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n this._keyManager?.onKeydown(event);\n }),\n takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))),\n finalize(() => focusListenerDestroyers.forEach((d) => d()))\n )\n .subscribe();\n }\n\n /** @hidden */\n private _defaultListFocusedEventAnnouncer(position: FocusableListPosition): string {\n return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;\n }\n\n /** @hidden */\n private _listenOnItems(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(\n startWith(null),\n map(() => this._focusableItems.toArray()),\n tap((items: FocusableItem[]): void => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: !!this.wrap\n });\n }),\n takeUntil(refresh$)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from '../focusable-item';\nimport { FocusableListDirective } from './focusable-list.directive';\n\n@NgModule({\n imports: [FocusableItemDirective, FocusableListDirective],\n exports: [FocusableItemDirective, FocusableListDirective]\n})\nexport class FocusableListModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_GRID_DIRECTIVE = new InjectionToken('Focusable grid directive token');\n","import { DOWN_ARROW, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { findLastIndex } from 'lodash-es';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport { FocusableItemPosition, FocusableListPosition } from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\n\nexport interface FocusableCellPosition {\n rowIndex: number;\n colIndex: number;\n}\n\n@Directive({\n selector: '[fdkFocusableGrid]',\n exportAs: 'fdkFocusableGrid',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n useExisting: FocusableGridDirective\n }\n ]\n})\nexport class FocusableGridDirective implements AfterViewInit {\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /** Whether the item in the previous/next row should be selected when going out of the first/last cell in the row. Default is false. */\n @Input({ transform: booleanAttribute })\n wrapHorizontally = false;\n\n /** Specify which item to select in prev/next row if its length smaller than current index. Nullish value means do not select. Default is null. */\n @Input()\n shortRowFocus: Nullable<'first' | 'last'> = null;\n\n /** Event emitted when item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Event emitted when whole row focused, contains row's position info. */\n @Output()\n readonly rowFocused = new EventEmitter<FocusableListPosition>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_LIST_DIRECTIVE, { descendants: true })\n private readonly _focusableLists: QueryList<FocusableListDirective>;\n\n /** @hidden */\n _preventKeydown = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) =>\n lists.forEach((list, index) =>\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length })\n )\n );\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridListFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridItemFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._keydown$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ event, list, activeItemIndex }) => this._onKeydown(event, list, activeItemIndex));\n }\n\n /**\n * Focus cell by position.\n * @param position position of the cell\n */\n focusCell(position: FocusableCellPosition): void {\n const list = this._focusableLists.get(position.rowIndex);\n if (list) {\n list.setActiveItem(position.colIndex);\n }\n }\n\n /** @hidden */\n _onKeydown(event: KeyboardEvent, list: FocusableListDirective, activeItemIndex: Nullable<number>): void {\n if (\n !KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP]) ||\n this._preventKeydown\n ) {\n return;\n }\n\n const lists = this._focusableLists.toArray();\n const currentRowIndex = lists.findIndex((item) => item === list);\n let nextRowIndex: number | undefined;\n let nextRowItemIndex = activeItemIndex ?? 0;\n let scrollIntoView: ScrollPosition;\n\n const isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection !== 'rtl';\n\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n break;\n case DOWN_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n break;\n case LEFT_ARROW:\n if (this.wrapHorizontally && (isFirstItemLtr || isLastItemRtl)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n nextRowItemIndex = lists[nextRowIndex]?._focusableItems.length - 1;\n }\n break;\n case RIGHT_ARROW:\n if (this.wrapHorizontally && (isFirstItemRtl || isLastItemLtr)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n nextRowItemIndex = 0;\n }\n break;\n case PAGE_DOWN:\n event.preventDefault();\n nextRowIndex = findLastIndex(lists, (item) => item._isVisible);\n scrollIntoView = 'top';\n break;\n case PAGE_UP:\n event.preventDefault();\n nextRowIndex = lists.findIndex((item) => item._isVisible);\n scrollIntoView = 'bottom';\n break;\n }\n\n const nextRow = lists[nextRowIndex ?? -1];\n if (nextRow) {\n if (nextRow.focusable) {\n nextRow.focus(scrollIntoView);\n return;\n }\n\n const itemIndex = this._getItemIndex(nextRow, nextRowItemIndex);\n if (itemIndex != null) {\n nextRow.setActiveItem(itemIndex, scrollIntoView);\n }\n }\n }\n\n /** @hidden */\n private _getItemIndex(list: FocusableListDirective, activeIndex: number): Nullable<number> {\n if (activeIndex >= 0 && activeIndex < list._focusableItems.length) {\n return activeIndex;\n }\n\n if (this.shortRowFocus == null) {\n return null;\n }\n\n return this.shortRowFocus === 'first' ? 0 : list._focusableItems.length - 1;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n@NgModule({\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject } from '@angular/core';\nimport { IgnoreClickOnSelectionDirectiveToken } from './tokens';\n\n/**\n * Directive will stop propagation and prevent default of click, if selected area is coming from\n * directive's host element. This gives ability to not cancel all clicks on element, just the ones\n * which include selection\n */\n@Directive({\n selector: '[fdkIgnoreClickOnSelection]',\n standalone: true,\n providers: [\n {\n provide: IgnoreClickOnSelectionDirectiveToken,\n useExisting: IgnoreClickOnSelectionDirective\n }\n ]\n})\nexport class IgnoreClickOnSelectionDirective {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** Host click listener. Checks for selection existence and if finds one, checks anchor */\n @HostListener('click', ['$event'])\n clicked($event: MouseEvent): void {\n const selection = this.document.getSelection();\n if (selection?.toString()) {\n if (\n selection.anchorNode &&\n (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||\n this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))\n ) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';\n\n@NgModule({\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\n\n@Directive({\n selector: '[fdkInitialFocus]',\n standalone: true,\n providers: [TabbableElementService]\n})\nexport class InitialFocusDirective implements AfterViewInit {\n /**\n * CSS selector of an element that should be focused.\n */\n @Input()\n fdkInitialFocus = '.fd-initial-focus-item';\n\n /**\n * Whether initial focus enabled for a current element.\n */\n @Input()\n set enabled(value: boolean) {\n if (value === this.enabled) {\n return;\n }\n this._enabled$.next(value);\n }\n\n get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n /**\n * Whether to focus last element in a found array of elements.\n */\n @Input()\n focusLastElement = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _enabled$ = new BehaviorSubject<boolean>(true);\n\n /** @hidden */\n constructor(\n private _elmRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private readonly _tabbableService: TabbableElementService\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._enabled$\n .pipe(\n distinctUntilChanged(),\n filter((enabled) => enabled),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._executeOnEmpty(() => this._focus());\n });\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnEmpty(fn: () => any): void {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n } else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\n }\n }\n\n /**\n * @hidden\n * Searches for an appropriate focusable element\n */\n private _getFocusableElement(): HTMLElement | null {\n if (!this.fdkInitialFocus) {\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(\n this.fdkInitialFocus\n ) as NodeListOf<HTMLElement>;\n\n if (autoFocusableItems.length > 0) {\n return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];\n }\n\n // If no elements found, fallback to a first tabbable element.\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n /** @hidden */\n private _focus(): void {\n if (!this.enabled) {\n return;\n }\n const elm = this._getFocusableElement();\n elm?.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InitialFocusDirective } from './initial-focus.directive';\n\n@NgModule({\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\n\n@Directive({\n selector: '[fdkIntersectionSpy]',\n standalone: true\n})\nexport class IntersectionSpyDirective implements OnInit {\n /** Intersection offset in px. */\n @Input('fdkIntersectionSpy')\n offset = 20;\n /** Intersection observer options. */\n @Input()\n viewportOptions: IntersectionObserverInit;\n\n /** Event emitted when intersection observer emits with the current element. */\n @Output()\n intersected = new EventEmitter<boolean>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n ngOnInit(): void {\n intersectionObservable(this._elementRef.nativeElement, this.viewportOptions)\n .pipe(\n map((entries) => entries[0]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((entry) => {\n this.intersected.emit(entry.isIntersecting);\n });\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\n\n@Directive({\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n})\nexport class LineClampTargetDirective implements OnChanges, AfterViewInit {\n /**\n * Target text for clamping\n */\n @Input()\n fdLineClampTargetText: string;\n\n /**\n * Event with target instance for clamping\n */\n @Output() update = new EventEmitter<LineClampTargetDirective>();\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Native element of clamping target\n */\n get targetElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.update.emit(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.update.emit(this);\n }\n}\n\n@Directive({\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n})\nexport class LineClampDirective implements OnChanges, AfterViewInit {\n /**\n * Count lines for clamping\n */\n @Input()\n set fdLineClampLines(value: Nullable<number>) {\n this._lineCount = coerceNumberProperty(value);\n }\n\n /**\n * Clamping state\n */\n @Input()\n fdLineclampState = false;\n\n /**\n * Event return count of lines from the target\n */\n @Output()\n lineCountUpdate = new EventEmitter<number>();\n\n /** @hidden */\n private _lineClampTarget: HTMLElement;\n /** @hidden */\n private _originalText: string;\n\n /** @hidden */\n private _isNativeSupport = true;\n\n /** @hidden */\n private _lineCount: number;\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n /**\n * Root native element of clamping box\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.reset();\n this.refreshClamp();\n }\n\n /** @hidden */\n reset(): void {\n if (this._lineClampTarget) {\n this._lineClampTarget.textContent = this._originalText;\n }\n if (this._isNativeSupport) {\n this._resetNative();\n }\n }\n\n /** @hidden */\n refreshTarget(event: LineClampTargetDirective): void {\n this._lineClampTarget = event.targetElement;\n this._originalText = event.fdLineClampTargetText;\n this._checkLineCount();\n }\n\n /** @hidden */\n refreshClamp(): void {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n private _truncate(): void {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);\n const ellipsisTextArray = this._originalText.split(' ');\n const ellipsisText = (): void => {\n if (this.rootElement.scrollHeight > lineClampHeight) {\n ellipsisTextArray.pop();\n this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';\n ellipsisText.call(this);\n }\n };\n ellipsisText();\n }\n\n /** @hidden\n * Get lineheight for rootelement, if browser not support lineclamp style\n */\n private getLineHeight(): number {\n const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');\n if (lineHeight === 'normal') {\n return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;\n }\n\n return parseFloat(lineHeight);\n }\n\n /** @hidden\n * Setup native styles for lineclamp text\n */\n private native(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');\n this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');\n this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);\n }\n }\n\n /** @hidden\n * Reset native styles for lineclamp text\n */\n private _resetNative(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '');\n this._renderer.setStyle(this.rootElement, 'overflow', '');\n this._renderer.setStyle(this.rootElement, 'text-overflow', '');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');\n }\n }\n\n /** @hidden */\n private _checkLineCount(): void {\n if (!this.rootElement) {\n return;\n }\n const style = window.getComputedStyle(this.rootElement, null);\n\n this.reset();\n\n const fontSize = parseInt(style.getPropertyValue('font-size'), 10);\n const boxSizing = style.getPropertyValue('box-sizing');\n let height = parseInt(style.getPropertyValue('height'), 10);\n let lineHeight = parseFloat(style.getPropertyValue('line-height'));\n if (isNaN(lineHeight)) {\n lineHeight = fontSize * 1.2;\n }\n if (boxSizing === 'border-box') {\n const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampDirective, LineClampTargetDirective } from './line-clamp.directive';\n\n@NgModule({\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\n","import {\n A,\n BACKSPACE,\n C,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { KeyUtil } from '../../functions';\n\n@Directive({\n selector: '[fdkOnlyDigits]',\n standalone: true\n})\nexport class OnlyDigitsDirective {\n /** Allow using decimal */\n @Input() decimal = false;\n /** Define decimal separator\n * Default: .(dot)\n */\n @Input() decimalSeparator = '.';\n\n /** @hidden */\n private _inputElement: HTMLInputElement;\n /** @hidden */\n private _hasDecimalPoint = false;\n\n /** @hidden */\n constructor(private readonly _el: ElementRef) {\n this._inputElement = this._el.nativeElement;\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent): void {\n if (\n // Allow: Delete, Backspace, Tab, Escape, Enter, End, Home, Arrow Left, Arrow Right, Arrow Up, Arrow Down\n KeyUtil.isKeyCode(e, [\n DELETE,\n BACKSPACE,\n TAB,\n ESCAPE,\n ENTER,\n END,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n UP_ARROW,\n DOWN_ARROW\n ]) ||\n // Allow: Ctrl+(A/C/V/X) and Cmd+(A/C/V/X) (Mac)\n (KeyUtil.isKeyCode(e, [A, C, V, X]) && (e.ctrlKey || e.metaKey))\n ) {\n return; // let it happen, don't do anything\n }\n\n if (KeyUtil.isKeyCode(e, [DASH, NUMPAD_MINUS])) {\n const newValue = this._forecastValue(e.key);\n\n if (this._inputElement.value[0] === '-' || newValue[0] !== '-') {\n e.preventDefault();\n\n return; // has DASH point\n } else {\n return; // Allow: only one DASH point\n }\n }\n\n if (this.decimal && e.key === this.decimalSeparator) {\n const newValue = this._forecastValue(e.key);\n if (newValue.split(this.decimalSeparator).length > 2) {\n // has two or more decimal points\n e.preventDefault();\n return;\n } else {\n this._hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n return; // Allow: only one decimal point\n }\n }\n\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n return;\n }\n }\n\n /** @hidden */\n @HostListener('paste', ['$event'])\n onPaste(event: any): void {\n if (window['clipboardData']) {\n // Browser is IE\n this._pasteData(window['clipboardData'].getData('text'));\n } else if (event.clipboardData && event.clipboardData.getData) {\n // Other browsers\n this._pasteData(event.clipboardData.getData('text/plain'));\n }\n\n event.preventDefault();\n }\n\n /** @hidden */\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n const textData = event.dataTransfer?.getData('text') ?? '';\n this._inputElement.focus();\n this._pasteData(textData);\n\n event.preventDefault();\n }\n\n /** @hidden */\n private _pasteData(pastedContent: string): void {\n const sanitizedContent = this._sanitizeInput(pastedContent);\n const pasted = document.execCommand('insertText', false, sanitizedContent);\n if (!pasted) {\n if (this._inputElement.setRangeText) {\n const { selectionStart: start, selectionEnd: end } = this._inputElement;\n this._inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n // so we have to trigger it ourself.\n if (typeof window['InstallTrigger'] !== 'undefined') {\n this._inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n }\n } else {\n // Browser does not support setRangeText, e.g. IE\n this._insertAtCursor(this._inputElement, sanitizedContent);\n }\n }\n\n if (this.decimal) {\n this._hasDecimalPoint = this._inputElement.value.indexOf(this.decimalSeparator) > -1;\n }\n }\n\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n /** @hidden */\n private _insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n const startPos = myField.selectionStart ?? 0;\n const endPos = myField.selectionEnd ?? 0;\n\n myField.value =\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n\n const pos = startPos + myValue.length;\n myField.focus();\n myField.setSelectionRange(pos, pos);\n\n this._triggerEvent(myField, 'input');\n }\n\n /** @hidden */\n private _triggerEvent(el: HTMLInputElement, type: string): void {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n }\n // end stack overflow code\n\n /** @hidden */\n private _sanitizeInput(input: string): string {\n let result = '';\n if (this.decimal && this._isValidDecimal(input)) {\n const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n result = input.replace(regex, '');\n } else {\n result = input.replace(/[^0-9]/g, '');\n }\n\n if (input[0] === '-') {\n result = `-${result}`;\n }\n\n const maxLength = this._inputElement.maxLength;\n if (maxLength > 0) {\n // the input element has maxLength limit\n const allowedLength = maxLength - this._inputElement.value.length;\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n }\n\n return result;\n }\n\n /** @hidden */\n private _isValidDecimal(string: string): boolean {\n if (!this._hasDecimalPoint) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n // the input element already has a decimal separator\n const selectedText = this._getSelection;\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n return string.indexOf(this.decimalSeparator) < 0;\n }\n }\n }\n\n /** @hidden */\n private get _getSelection(): string {\n const { selectionStart, selectionEnd } = this._inputElement;\n\n return this._inputElement.value.substring(selectionStart ?? 0, selectionEnd ?? 0);\n }\n\n /** @hidden */\n private _forecastValue(key: string): string {\n const { selectionStart, selectionEnd, value: oldValue } = this._inputElement;\n const selection = oldValue.substring(selectionStart ?? 0, selectionEnd ?? 0);\n\n return selection\n ? oldValue.replace(selection, key)\n : oldValue.substring(0, selectionStart ?? 0) + key + oldValue.substring(selectionStart ?? 0);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OnlyDigitsDirective } from './only-digits.directive';\n\n@NgModule({\n imports: [OnlyDigitsDirective],\n exports: [OnlyDigitsDirective]\n})\nexport class OnlyDigitsModule {}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkOverflowListItem]',\n standalone: true\n})\nexport class OverflowListItemDirective {\n /** @hidden */\n constructor(public el: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n QueryList,\n inject\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@Directive({\n selector: '[fdkOverflowList]',\n standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit {\n /**\n * @description Offset to calculate correct position\n */\n @Input()\n overflowOffset = 0;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description value of display property of existed list items\n */\n @Input()\n itemCssBlockValue = 'flex';\n\n /**\n * @description Emits when changed amount of extra items\n */\n @Output()\n overflowChanged: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @description References to QueryList of OverflowListItemDirective\n */\n @ContentChildren(OverflowListItemDirective)\n overflowItems: QueryList<OverflowListItemDirective>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private observer: ResizeObserver;\n\n /** @hidden */\n constructor(\n private _el: ElementRef,\n private _ngZone: NgZone\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.initResizeObserver();\n this.calculateOverflow();\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.calculateOverflow());\n }\n\n /**\n * @description Get amount of extra items in current list\n * */\n getAmountOfExtraItems(): number {\n const elements = this.overflowItems.toArray().map((item) => item.el.nativeElement);\n const computed = getComputedStyle(this._el.nativeElement);\n const contentWidth = Math.floor(\n this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0')\n );\n\n if (contentWidth <= 0) {\n return 0;\n }\n\n return this._checkWidthWithOffset(elements, contentWidth);\n }\n\n /**\n * @description Ensuring that calculations run in the Angular zone\n */\n public calculateOverflow(): void {\n this._ngZone.run(() => {\n setTimeout(() => {\n const elements = this.overflowItems.map((item) => item.el.nativeElement);\n const contentWidth = this._el.nativeElement.clientWidth;\n\n let totalWidth = 0;\n let overflowCount = 0;\n\n elements.forEach((elm) => {\n const elmWidth = elm.offsetWidth;\n totalWidth += elmWidth;\n\n if (totalWidth > contentWidth) {\n overflowCount++;\n }\n });\n\n this._calculateAmountOfOverflowedItems();\n }, 0);\n });\n }\n\n private initResizeObserver(): void {\n this.observer = new ResizeObserver(() => {\n this._ngZone.run(() => this.calculateOverflow());\n });\n this.observer.observe(this._el.nativeElement);\n }\n\n /** @hidden */\n private _calculateAmountOfOverflowedItems(): void {\n const extra = this.getAmountOfExtraItems();\n this.overflowChanged.emit(extra);\n }\n\n /**\n * @hidden\n * @param arrItems\n * @param containerWidth\n * @param checkWithOffset\n * */\n private _checkWidthWithOffset(\n arrItems: HTMLElement[],\n containerWidth: number,\n checkWithOffset: boolean = false\n ): number {\n let itemsTotalWidth = 0;\n const parentWidth = checkWithOffset ? containerWidth - this.overflowOffset : containerWidth;\n\n arrItems.forEach((item) => {\n item.hidden = true;\n item.style.display = this.itemCssBlockValue;\n });\n\n for (let i = 0; i < arrItems.length; i++) {\n const item = arrItems[i];\n\n itemsTotalWidth += this.isRtl\n ? containerWidth - item.offsetLeft - itemsTotalWidth\n : Math.ceil(item.offsetWidth + item.offsetLeft - itemsTotalWidth);\n\n if (parentWidth < itemsTotalWidth) {\n this._clearTempStyles(arrItems);\n return checkWithOffset\n ? arrItems.length - i\n : this._checkWidthWithOffset(arrItems, containerWidth, true);\n }\n }\n\n this._clearTempStyles(arrItems);\n return 0;\n }\n\n /**\n * @param arrItems\n * @hidden\n * */\n private _clearTempStyles(arrItems: HTMLElement[]): void {\n arrItems.forEach((item) => {\n item.hidden = false;\n item.style.removeProperty('display');\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { OverflowListDirective } from './overflow-list.directive';\n\n@NgModule({\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @Hidden */\nexport function setReadonlyState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isReadonly: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isReadonly) {\n htmlElement.classList.add('is-readonly');\n htmlElement.setAttribute('readonly', '');\n } else {\n htmlElement.classList.remove('is-readonly');\n htmlElement.removeAttribute('readonly');\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\nexport class DefaultReadonlyViewModifier implements ReadonlyViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setReadonlyState = (isDisabled: boolean): void => {\n setReadonlyState(this.elementRef, isDisabled);\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly directive token');\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReadonlyObserver {\n /** @Hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @Hidden */\n static isReadonly(element: Element): boolean {\n return element.classList.contains('is-readonly') || element.hasAttribute('readonly');\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => ReadonlyObserver.isReadonly(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { ReadonlyObserver } from './readonly.observer';\n\n@Injectable()\nexport class FdkReadonlyProvider extends ReplaySubject<boolean> implements ReadonlyBehavior, OnDestroy {\n /** @Hidden */\n fdkReadonly = false;\n\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<ReadonlyViewModifier[]> = new BehaviorSubject<\n ReadonlyViewModifier[]\n >(this._getInitialViewModifiers());\n\n /** @hidden */\n private _readonlyChange$: Observable<boolean> = this._getReadonlyChange$();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<Element>,\n private readonlyObserver: ReadonlyObserver,\n @Optional() @Self() @Inject(FDK_READONLY_DIRECTIVE) private selfReadonly$: ReadonlyBehavior,\n @Optional() @SkipSelf() @Inject(FDK_READONLY_DIRECTIVE) private parentReadonly$: ReadonlyBehavior\n ) {\n super(1);\n\n combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(\n tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._readonlyChange$\n .pipe(\n tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: ReadonlyViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setReadonlyState(isReadonly: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.readonlyObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getReadonlyChange$(): Observable<boolean> {\n let selfReadonly = false;\n let parentReadonly = false;\n\n if (this.parentReadonly$) {\n this.parentReadonly$\n .pipe(\n startWith(this.parentReadonly$.fdkReadonly),\n tap((d) => (parentReadonly = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentReadonly) {\n this.setReadonlyState(true);\n }\n if (!selfReadonly && !parentReadonly) {\n this.setReadonlyState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfReadonly$) {\n this.selfReadonly$\n .pipe(\n startWith(this.selfReadonly$.fdkReadonly),\n tap((d) => (selfReadonly = d)),\n distinctUntilChanged(),\n tap((isReadonly) => {\n if (!parentReadonly) {\n this.setReadonlyState(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.readonlyObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): ReadonlyViewModifier[] {\n return !this.selfReadonly$ ? [new DefaultReadonlyViewModifier(this.elementRef)] : [this.selfReadonly$];\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\n@Directive({\n selector: '[fdkReadonly]',\n standalone: true,\n providers: [\n {\n provide: FDK_READONLY_DIRECTIVE,\n useExisting: ReadonlyBehaviorDirective\n }\n ]\n})\nexport class ReadonlyBehaviorDirective extends ReplaySubject<boolean> implements ReadonlyBehavior, AfterViewInit {\n /** @Hidden */\n @Input({ transform: booleanAttribute })\n set fdkReadonly(value: boolean) {\n this._readonlyInput$.next(value);\n }\n\n get fdkReadonly(): boolean {\n return this._readonly;\n }\n\n /** @Hidden */\n _readonly = false;\n /** @hidden */\n private readonly _readonlyInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @Hidden */\n setReadonlyState = (isReadonly: boolean): void => {\n setReadonlyState(this._elementRef, isReadonly);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._readonlyInput$\n .pipe(\n tap((isReadonly) => {\n if (isReadonly !== this._readonly) {\n this.setReadonlyState(isReadonly);\n this._readonly = isReadonly;\n this.next(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReadonlyBehaviorDirective } from './readonly-behavior.directive';\n\n@NgModule({\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\n */\n@Directive({\n selector: '[fdkRepeat]',\n standalone: true\n})\nexport class RepeatDirective implements OnChanges {\n /** Number of times to render a template. */\n @Input('fdkRepeat')\n count: number;\n\n /** @hidden */\n constructor(\n private readonly _templateRef: TemplateRef<any>,\n private readonly _viewContainerRef: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['count'] || changes['deprecatedCount']) && Number.isInteger(this.count)) {\n this._viewContainerRef.clear();\n\n for (let index = 0; index < Math.max(0, this.count); index++) {\n this._viewContainerRef.createEmbeddedView(this._templateRef, { index });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { RepeatDirective } from './repeat.directive';\n\n@NgModule({\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n})\nexport class RepeatModule {}\n","import { Directive, ElementRef, inject, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\n\n@Directive({\n selector: '[fdkResizeObserver]',\n exportAs: 'fdkResizeObserver',\n standalone: true\n})\nexport class ResizeObserverDirective implements HasElementRef {\n /**\n * When the element is resized, emits an array of ResizeObserverEntry objects.\n **/\n @Output()\n resized: Observable<ResizeObserverEntry[]>;\n\n /**\n * The reference to the Resize target element.\n **/\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor() {\n this.resized = this._resizeObserverService.observe(this.elementRef.nativeElement);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkResizeHandle]',\n standalone: true\n})\nexport class ResizeHandleDirective {\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n computed\n} from '@angular/core';\nimport { Observable, Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { RtlService } from '../../services/rtl.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\ninterface ResizeMove {\n x: number;\n y: number;\n}\n\n@Directive({\n selector: '[fdkResize]',\n standalone: true\n})\nexport class ResizeDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Element limiting resizable container growth */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeBoundary') resizeBoundary: string | HTMLElement = 'body';\n\n /** Whether resizable behaviour should be disabled */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeDisabled') disabled = false;\n\n /** Additional class to be applied to the Element ref during resize. */\n @Input()\n fdkResizeClass: string;\n\n /** Localization of resize handle inside resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeHandleLocation') resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n 'bottom-right';\n\n /** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeResizeHandleRef') set setResizeHandleReference(value: ResizeHandleDirective) {\n this.resizeHandleReference = value;\n }\n\n /** Emits event when resizing has tarted */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeStart = new EventEmitter<void>();\n\n /** Emits event when resizing has ended */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeEnd = new EventEmitter<void>();\n\n /** @hidden Reference to Resize handle */\n @ContentChild(ResizeHandleDirective, { static: false })\n set resizeHandleReference(value: Nullable<ResizeHandleDirective>) {\n this._resizeHandleReference = value;\n if (!value) {\n this._unsubscribe();\n } else {\n this._setResizeListeners();\n }\n }\n get resizeHandleReference(): Nullable<ResizeHandleDirective> {\n return this._resizeHandleReference;\n }\n\n /** @hidden */\n private _resizeHandleReference: Nullable<ResizeHandleDirective>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _resizeSubscriptions = new Subscription();\n\n /** @hidden */\n private readonly _direction$ = computed(() => (this._rtlService?.rtlSignal() ? -1 : 1));\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._unsubscribe();\n } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._resizeSubscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _unsubscribe(): void {\n this._resizeSubscriptions.unsubscribe();\n this._resizeSubscriptions = new Subscription();\n }\n\n /** @hidden Sets Resize listeners */\n private _setResizeListeners(): void {\n this._unsubscribe();\n const resize = this._getResizeFunction();\n let moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer || !this.resizeHandleReference) {\n return;\n }\n const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);\n\n const mouseUpEvent$ = fromEvent<MouseEvent>(window, 'mouseup');\n const mouseMoveEvent$ = fromEvent<MouseEvent>(resizeContainer, 'mousemove');\n const mouseDownEvent$ = fromEvent<MouseEvent>(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');\n\n const resizeActive$ = merge(\n mouseDownEvent$.pipe(\n map(() => true),\n tap(() => {\n moveOffset = this._getMoveOffsetFunction();\n })\n ),\n mouseUpEvent$.pipe(map(() => false))\n );\n const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);\n const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);\n\n const resizingCursorMovement$ = mouseMoveEvent$.pipe(\n pairwise(),\n map(([event1, event2]: [MouseEvent, MouseEvent]) => moveOffset(event1, event2)),\n filter((move) => isBoundaryOverflow(move))\n );\n\n const setupResizer = (): void => {\n resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));\n };\n const setupResize$ = resizeActive$.pipe(\n filter((isActive) => isActive),\n tap(() => setupResizer())\n );\n\n this._resizeSubscriptions.add(setupResize$.subscribe());\n this._resizeSubscriptions.add(emitResizableEvents$.subscribe());\n this._resizeSubscriptions.add(preventOtherPointerEvents$.subscribe());\n }\n\n /** @hidden Creates resize function*/\n private _getResizeFunction(): (move: ResizeMove) => void {\n return (move: ResizeMove) => {\n this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;\n this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;\n };\n }\n\n /** @hidden Creates move function */\n private _getMoveOffsetFunction(): (event1: MouseEvent, event2: MouseEvent) => ResizeMove {\n let verticalModifier: 1 | -1;\n let horizontalModifier: 1 | -1;\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n horizontalModifier = -1;\n verticalModifier = -1;\n break;\n case 'top-right':\n horizontalModifier = -1;\n verticalModifier = 1;\n break;\n case 'bottom-left':\n horizontalModifier = 1;\n verticalModifier = -1;\n break;\n case 'bottom-right':\n horizontalModifier = 1;\n verticalModifier = 1;\n break;\n }\n\n return (event1: MouseEvent, event2: MouseEvent) => {\n const x = (event2.screenX - event1.screenX) * this._direction$();\n const y = event2.screenY - event1.screenY;\n\n return {\n x: x * verticalModifier,\n y: y * horizontalModifier\n };\n };\n }\n\n /** @hidden Return boundary container */\n private _findResizeContainer(): Element | null {\n let resizeContainer: Element | null;\n if (typeof this.resizeBoundary === 'string') {\n if (this.resizeBoundary === 'body') {\n return document.body;\n }\n resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);\n } else {\n resizeContainer = this.resizeBoundary;\n }\n\n if (resizeContainer) {\n return resizeContainer;\n } else {\n console.warn(`fdResize - Cannot find \"${this.resizeBoundary}\", falling back to \"body\"`);\n return document.body;\n }\n }\n\n /** @hidden Check whether resizable container is overflowing boundary container */\n private _getBoundaryOverflowFunction(resizeContainer: Element): (move: ResizeMove) => boolean {\n return (move: ResizeMove) => {\n const containerPosition = resizeContainer.getBoundingClientRect();\n const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'top-right':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n case 'bottom-left':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'bottom-right':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n }\n };\n }\n\n /** @hidden Create Observable notifying on resize actions */\n private _getResizeEventsNotifiers(trigger$: Observable<boolean>): Observable<any> {\n const emitResizableStart$ = trigger$.pipe(\n filter((isActive) => isActive),\n tap(() => this.onResizeStart.emit())\n );\n\n const emitResizableEnd$ = trigger$.pipe(\n filter((isActive) => !isActive),\n tap(() => this.onResizeEnd.emit())\n );\n\n return merge(emitResizableStart$, emitResizableEnd$);\n }\n\n /** @hidden Block resizable container pointer events when resizing */\n private _blockOtherPointerEvents(trigger$: Observable<boolean>): Observable<any> {\n return trigger$.pipe(\n tap((isActive) => {\n if (!this.fdkResizeClass) {\n return;\n }\n if (!isActive) {\n this._elementRef.nativeElement.classList.remove(this.fdkResizeClass);\n } else {\n this._elementRef.nativeElement.classList.add(this.fdkResizeClass);\n }\n }),\n map((isActive) => (isActive ? 'none' : 'auto')),\n tap((value) => {\n this._elementRef.nativeElement.style.pointerEvents = value;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { ResizeDirective } from './resize.directive';\n\n@NgModule({\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Observable } from 'rxjs';\n\nexport type SelectableListValueType<T> = T extends any[] ? Array<any> : any;\n\nexport abstract class SelectComponentRootToken<T = any> {\n abstract selected?: SelectableListValueType<T>;\n abstract selectedChange: Observable<SelectableListValueType<T>>;\n abstract multiple?: BooleanInput;\n abstract toggle?: BooleanInput;\n abstract onChange: (value: SelectableListValueType<T>) => void;\n}\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\nexport abstract class SelectableItemToken<ElementType extends Element = HTMLElement, TValue = ElementType>\n implements HasElementRef<ElementType>\n{\n abstract value: TValue;\n abstract fdkSelectableItem?: boolean;\n\n abstract readonly elementRef: ElementRef<ElementType>;\n\n abstract clicked: Observable<MouseEvent | KeyboardEvent>;\n\n abstract setSelected(isSelected: boolean): void;\n\n abstract getSelected(): boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken(\n 'Token for providing custom behaviors to the SelectableListItem'\n);\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, DestroyRef, Injectable, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport equal from 'fast-deep-equal';\nimport { Observable, ReplaySubject, Subject, combineLatest, isObservable, merge, of, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\n\nexport type SelectionItemsList<ElementType extends Element, ValueType = ElementType> =\n | QueryList<SelectableItemToken<ElementType, ValueType>>\n | Observable<SelectableItemToken<ElementType, ValueType>[]>\n | SelectableItemToken<ElementType, ValueType>[];\n\n@Injectable()\nexport class SelectionService<ElementType extends Element, ValueType = ElementType> {\n /** @hidden */\n value$: Observable<SelectableListValueType<ValueType>>;\n\n /** @hidden */\n private _items$!: Observable<SelectableItemToken<ElementType, ValueType>[]>;\n /** @hidden */\n private _value$ = new ReplaySubject<SelectableListValueType<ValueType>>(1);\n /** @hidden */\n private _normalizedValue$: Observable<ValueType[]>;\n /** @hidden */\n private _rootComponent!: SelectComponentRootToken<ElementType>;\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n /** @hidden */\n private _clear$ = new Subject<void>();\n /** @hidden */\n private _value: ValueType[] = [];\n\n /** @hidden */\n constructor(private _cd: ChangeDetectorRef) {\n this._normalizedValue$ = this._value$.pipe(\n distinctUntilChanged(equal),\n map((v) => coerceArray<ValueType>(v)),\n map((value) => (this._isMultipleMode ? value : [value[0]])),\n map((coerced: ValueType[]) => coerced.filter(Boolean))\n );\n this._normalizedValue$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((val) => (this._value = val));\n this.value$ = this._normalizedValue$.pipe(\n map((v) => this._getProperValues(v as SelectableListValueType<ElementType>)),\n shareReplay(1)\n );\n }\n\n /**\n * Register main select component, which holds config\n * */\n registerRootComponent(rootComponent: SelectComponentRootToken<ElementType>): void {\n this._rootComponent = rootComponent;\n }\n\n /**\n * Clear listeners\n */\n clear(): void {\n this._clear$.next();\n }\n\n /**\n * Initialize watcher for selection changes and user interactions\n * */\n initialize(list: SelectionItemsList<ElementType, ValueType>): void {\n if (list instanceof QueryList) {\n this._items$ = list.changes.pipe(\n startWith(list),\n map((items: QueryList<SelectableItemToken<ElementType, ValueType>>) => items.toArray()),\n shareReplay(1)\n );\n } else {\n this._items$ = isObservable(list) ? list : of(list);\n }\n this.listenToItemInteractions();\n }\n\n /**\n * Sets Value, on which service looks at and updates UI accordingly\n * */\n setValue(v: SelectableListValueType<ElementType>): void {\n this._value$.next(v);\n }\n\n /** @hidden */\n getValue(): SelectableListValueType<ElementType> {\n return this._getProperValues(this._value as SelectableListValueType<ElementType>);\n }\n\n /**\n * Start listening for item interactions. Will destroy() first.\n * Will silently continue if service was not initialized first.\n * */\n listenToItemInteractions(): void {\n this.clear();\n const unsubscribe$ = merge(destroyObservable(this._destroyRef), this._clear$);\n if (this._items$) {\n this._items$\n .pipe(\n map((items) => items.filter((itm) => itm.fdkSelectableItem !== false)),\n switchMap((items: SelectableItemToken<ElementType, ValueType>[]) => {\n const clickedEvents$ = items.map((item) => item.clicked.pipe(map(() => item)));\n return merge(...clickedEvents$);\n }),\n tap((clickedItem) => this._itemClicked(clickedItem)),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n combineLatest([this._normalizedValue$, this._items$])\n .pipe(\n tap(([value, items]) => {\n if (\n value.length === 0 &&\n items.some((itm) => itm.getSelected()) &&\n !this._rootComponent.toggle\n ) {\n const selectedValues = this._getSelectedValues(items);\n this._rootComponent.onChange(selectedValues as SelectableListValueType<ElementType>);\n return this._value$.next(selectedValues as SelectableListValueType<ElementType>);\n }\n items.forEach((item) => {\n item.setSelected(value.includes(item.value));\n });\n this._cd.detectChanges();\n }),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n }\n }\n\n /** @hidden */\n selectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n if (item.fdkSelectableItem !== false) {\n const val: ValueType[] = [item.value, ...this._value];\n const properValues = this._getProperValues(val as SelectableListValueType<ElementType>);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n deselectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n const canBeDeselected = this._rootComponent.toggle || (this._isMultipleMode && this._value.length > 1);\n if (canBeDeselected) {\n const val: SelectableListValueType<ElementType> = this._value.filter(\n (v) => v !== item.value\n ) as SelectableListValueType<ElementType>;\n const properValues = this._getProperValues(val);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n private get _isMultipleMode(): boolean {\n return this._rootComponent.multiple === true;\n }\n\n /** @hidden */\n private _itemClicked(item: SelectableItemToken<ElementType, ValueType>): void {\n const wasSelected = this._value.includes(item.value);\n if (wasSelected) {\n this.deselectItem(item);\n } else {\n this.selectItem(item);\n }\n }\n\n /** @hidden */\n private _getSelectedValues(items: SelectableItemToken<ElementType, ValueType>[]): ElementType | ElementType[] {\n const selectedValues = items.filter((itm) => itm.getSelected()).map((itm) => itm.value);\n return this._getProperValues(selectedValues as SelectableListValueType<ElementType>);\n }\n\n /** @hidden */\n private _getProperValues(values: SelectableListValueType<ElementType>): SelectableListValueType<ElementType> {\n return this._isMultipleMode ? values : values[0];\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableItem]',\n exportAs: 'fdkSelectableItem',\n standalone: true,\n providers: [\n {\n provide: SelectableItemToken,\n useExisting: SelectableItemDirective\n },\n FdkReadonlyProvider,\n FdkDisabledProvider,\n FdkClickedProvider\n ]\n})\nexport class SelectableItemDirective<ElementType extends Element = HTMLElement, ValueType = any>\n implements SelectableItemToken<ElementType, ValueType>\n{\n /** @hidden */\n @Input()\n set value(val: ValueType) {\n this._value = val;\n }\n get value(): ValueType {\n if (this.provider && this.provider.value) {\n return this.provider.value;\n }\n return this._value;\n }\n\n /** @hidden */\n @Input()\n set fdkSelectableItem(value: BooleanInput) {\n const isSelectable = coerceBooleanProperty(value);\n if (isSelectable !== this._selectable) {\n this._selectable = isSelectable;\n }\n }\n\n get fdkSelectableItem(): boolean {\n let selectable = this._selectable;\n if (typeof this.provider?.fdkSelectableItem !== 'undefined') {\n selectable = this.provider.fdkSelectableItem;\n }\n return (\n selectable &&\n (!this.disabled$ || !this.disabled$?.fdkDisabled) &&\n (!this.readonly$ || !this.readonly$?.fdkReadonly)\n );\n }\n\n /** @hidden */\n @Output()\n clicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** Event emitted when selection state being changed for selectable item. */\n @Output()\n selected = new EventEmitter<boolean>();\n\n /** @hidden */\n private _value!: ValueType;\n /** @hidden */\n private _selected = false;\n /** @hidden */\n private _selectable = true;\n\n /** @hidden */\n constructor(\n @Optional()\n @Inject(FDK_SELECTABLE_ITEM_PROVIDER)\n private provider: Partial<SelectableItemToken<ElementType, ValueType>>,\n private disabled$: FdkDisabledProvider,\n private readonly$: FdkReadonlyProvider,\n private selectionService: SelectionService<ElementType, ValueType>,\n public readonly elementRef: ElementRef<ElementType>,\n _clicked: FdkClickedProvider\n ) {\n this.clicked = this.provider?.clicked || _clicked.asObservable();\n this._listenToDisablingEvents();\n }\n\n /** @hidden */\n getSelected(): boolean {\n if (this.provider?.getSelected) {\n return this.provider.getSelected();\n }\n return this._selected;\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n if (this.provider?.setSelected) {\n this.provider.setSelected(isSelected);\n } else {\n this._selected = isSelected;\n const htmlElement = this.elementRef.nativeElement;\n const { classList } = htmlElement;\n if (isSelected) {\n classList.add('is-selected');\n } else {\n classList.remove('is-selected');\n }\n htmlElement.setAttribute('aria-selected', `${isSelected}`);\n }\n\n this.selected.emit(isSelected);\n }\n\n /** @hidden */\n private _listenToDisablingEvents(): void {\n const disablingEvents$: Observable<boolean>[] = [];\n if (this.disabled$) {\n disablingEvents$.push(this.disabled$);\n }\n if (this.readonly$) {\n disablingEvents$.push(this.readonly$);\n }\n merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());\n }\n\n /** @hidden */\n private _updateSelectionAndSelectableWatcher(): void {\n if (this.disabled$?.fdkDisabled) {\n this.selectionService.deselectItem(this);\n }\n this._updateSelectableWatcher();\n }\n\n /** @hidden */\n private _updateSelectableWatcher(): void {\n this.selectionService.listenToItemInteractions();\n }\n}\n","import {\n AfterViewInit,\n ContentChildren,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute\n} from '@angular/core';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableList]',\n exportAs: 'fdkSelectableList',\n standalone: true,\n providers: [\n {\n provide: SelectComponentRootToken,\n useExisting: SelectableListDirective\n },\n SelectionService\n ]\n})\nexport class SelectableListDirective<T extends Element = HTMLElement, V = any>\n implements SelectComponentRootToken<T>, AfterViewInit\n{\n /** @hidden */\n @Output()\n selectedChange = new EventEmitter<SelectableListValueType<T>>();\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n multiple = false;\n\n /** @hidden */\n @Input()\n set selected(value: SelectableListValueType<T>) {\n this._selectionService.setValue(value);\n }\n\n /** @hidden */\n @ContentChildren(SelectableItemToken) selectableItems!: QueryList<SelectableItemToken<T, V>>;\n\n /** @hidden */\n constructor(private _selectionService: SelectionService<T, V>) {\n this._selectionService.registerRootComponent(this);\n }\n\n /** @hidden */\n select(item: SelectableItemToken<T, V>): void {\n this._selectionService.selectItem(item);\n }\n\n /** @hidden */\n deselect(item: SelectableItemToken<T, V>): void {\n this._selectionService.deselectItem(item);\n }\n\n /** @hidden */\n toggleSelect(item: SelectableItemToken<T, V>): void {\n if (item.getSelected()) {\n this.deselect(item);\n } else {\n this.select(item);\n }\n }\n\n /** @hidden */\n onChange(value: SelectableListValueType<T>): void {\n this.selectedChange.emit(value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._selectionService.initialize(this.selectableItems);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SelectableItemDirective } from './selectable-item.directive';\nimport { SelectableListDirective } from './selectable-list.directive';\n\n@NgModule({\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n /** Name of the template */\n @Input('fdkTemplate')\n name: string;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\n\n /** @hidden */\n getName(): string {\n return this.name;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from './template.directive';\n\n@NgModule({\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterContentChecked, AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkTruncate]',\n standalone: true\n})\nexport class TruncateDirective implements OnChanges, AfterViewInit {\n /**\n * Width in pixel for truncation of an element , by default\n */\n @Input()\n set fdkTruncateWidth(value: Nullable<number>) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n\n /**\n * Truncating state\n */\n @Input()\n fdkTruncateState = false;\n\n /** @hidden */\n private _customWidthCount = 200;\n\n /** @hidden */\n private _truncateTarget: HTMLElement;\n\n /** @hidden\n * saves default style of element before truncating\n */\n private _defaultStyle: string;\n\n /** @hidden */\n private takeDefaultStyleOnce = true;\n\n /** @hidden\n * truncation style for truncating element\n */\n private _truncationStyle: string;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Root native element\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle(): void {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.rootElement) {\n this._truncate();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._truncate();\n }\n\n /** @hidden */\n private _truncate(): void {\n this._truncateTarget = this.rootElement;\n\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n}\n\n@Directive({\n selector: '[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]',\n standalone: true\n})\nexport class TruncatedTitleDirective implements AfterContentChecked {\n /** @hidden */\n constructor(private _elRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n const el = this._elRef.nativeElement;\n if (el.scrollWidth > el.offsetWidth) {\n el.title = el.innerText;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective, TruncatedTitleDirective } from './truncate.directive';\n\n@NgModule({\n imports: [TruncateDirective, TruncatedTitleDirective],\n exports: [TruncateDirective, TruncatedTitleDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const DND_ITEM = new InjectionToken('Drag and drop Item');\nexport const DND_LIST = new InjectionToken('Drag and drop List');\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n forwardRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM } from '../tokens';\n\n@Directive({\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }],\n standalone: true\n})\nexport class DndItemDirective<T = any> implements DndItem, AfterContentInit, OnDestroy {\n /** Item reference. Used for cases when `[items]` array of dnd list is different than `dndItems` content children. */\n @Input('fdkDndItem')\n item: Nullable<T>;\n /**\n * Whether to apply \"fd-dnd-item\" class.\n * @default true\n */\n @Input()\n @HostBinding('class.fd-dnd-item')\n applyDragItemClass = true;\n\n /** Container selector */\n @Input()\n containerSelector?: string;\n\n /** Event thrown when the element is moved by 1px */\n @Output()\n readonly moved = new EventEmitter<ElementPosition>();\n\n /** Event thrown when the element is released */\n @Output()\n readonly released = new EventEmitter<void>();\n\n /** Event thrown when the element is started to be dragged */\n @Output()\n readonly started = new EventEmitter<void>();\n\n /**\n * Defines if the item is prevented from being moved by other elements.\n * So nothing can be placed just before and just after it\n */\n @Input()\n stickInPlace = false;\n\n /** Defines if element is draggable */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this.changeCDKDragState();\n }\n\n /** Class added to element, when it's dragged. */\n @Input()\n classWhenElementDragged = 'fd-dnd-on-drag';\n\n /** Defines if every element in list is draggable */\n listDraggable = true;\n\n /** @hidden\n * Drag reference, object created from DND CDK Service\n */\n private _dragRef: DragRef;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _placeholderElement: HTMLElement | null = null;\n\n /** @hidden */\n private _lineElement: HTMLElement | null = null;\n\n /** @hidden */\n private _replaceIndicator: HTMLElement | null = null;\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _dragDrop: DragDrop,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n getElementCoordinates(isBefore: boolean): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n const position: LinkPosition = isBefore ? 'before' : 'after';\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n position,\n y: rect.top,\n stickToPosition: this.stickInPlace,\n width: rect.width,\n height: rect.height\n };\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setCDKDrag();\n this._listenElementEvents();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._dragRef.dispose();\n }\n\n /** @hidden */\n onCdkMove(position: ElementPosition): void {\n this.moved.emit(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n /** Remove class which is added, when element is dragged */\n this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);\n this.released.emit();\n\n /** Resets the position of element. */\n this._dragRef.reset();\n\n /** Removes placeholder element */\n this.removePlaceholder();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);\n\n if (!this._placeholderElement) {\n this.createPlaceholder();\n }\n this.started.emit();\n }\n\n /** @hidden */\n removePlaceholder(): void {\n if (this._placeholderElement && this._placeholderElement.parentNode) {\n // IE11 workaround\n this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n\n /** @hidden */\n removeLine(): void {\n if (this._lineElement && this._lineElement.parentNode) {\n // IE11 workaround\n this._lineElement.parentNode.removeChild(this._lineElement);\n this._lineElement = null;\n }\n }\n\n /** @hidden */\n removeReplaceIndicator(): void {\n if (this._replaceIndicator && this._replaceIndicator.parentNode) {\n // IE11 workaround\n this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);\n this._replaceIndicator = null;\n }\n }\n\n /** @hidden */\n createReplaceIndicator(): void {\n this._replaceIndicator = document.createElement('DIV');\n this._replaceIndicator.classList.add('fd-replace-indicator');\n\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._replaceIndicator);\n }\n\n /** @hidden */\n createLine(position: LinkPosition, gridMode: boolean): void {\n /** Creating of line element */\n this._lineElement = document.createElement('div');\n this._lineElement.classList.add('drop-area__line');\n\n if (gridMode) {\n this._lineElement.classList.add('drop-area__line--vertical');\n } else {\n this._lineElement.classList.add('drop-area__line--horizontal');\n }\n if (position === 'after') {\n this._lineElement.classList.add('after');\n }\n if (position === 'before') {\n this._lineElement.classList.add('before');\n }\n\n /** Putting element to the container */\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._lineElement);\n }\n\n /** @hidden */\n changeCDKDragState(): void {\n if (this._dragRef) {\n this._dragRef.disabled = !(this._draggable && this.listDraggable);\n }\n }\n\n /**\n * Sets the disabled state of the dnd item.\n * @param state\n */\n setDisabledState(state: boolean): void {\n if (state) {\n this._renderer.addClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n } else {\n this._renderer.removeClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n }\n }\n\n /** @hidden */\n private createPlaceholder(): void {\n const placeholder = this.elementRef.nativeElement.cloneNode(true);\n /** Cloning container element */\n this._placeholderElement = placeholder;\n\n placeholder.classList.add('fd-dnd-placeholder');\n this._setPlaceholderStyles();\n\n /** Including element to the container\n * IE11 equivalent to `this.element.nativeElement.after(clone);`\n */\n this._placeAfter(this.elementRef.nativeElement, placeholder);\n }\n\n /** @hidden */\n private _setPlaceholderStyles(): void {\n const offset = this._getOffsetToParent(this.elementRef.nativeElement);\n\n if (!offset || !this._placeholderElement) {\n return;\n }\n\n this._placeholderElement.style.top = offset.y + 'px';\n this._placeholderElement.style.left = offset.x + 'px';\n this._placeholderElement.style.position = 'absolute';\n this._placeholderElement.style.zIndex = '0';\n this._placeholderElement.style.opacity = '0.3';\n\n this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';\n this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';\n }\n\n /** @hidden */\n private _getOffsetToParent(element: Element): { x: number; y: number } | undefined {\n const parentElement = element.parentElement;\n if (!parentElement) {\n return;\n }\n\n const parentElmRect = parentElement.getBoundingClientRect();\n const elmRect = element.getBoundingClientRect();\n\n const parentTop = parentElmRect.top;\n const parentLeft = parentElmRect.left;\n\n return {\n x: Math.abs(elmRect.left - parentLeft),\n y: Math.abs(elmRect.top - parentTop)\n };\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this._dragRef = this._dragDrop.createDrag(this.elementRef);\n this._dragRef.disabled = !this._draggable;\n this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));\n this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));\n this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));\n }\n\n /** IE11 equivalent of Node.after() Method */\n private _placeAfter(element: Element, cloneNode: Node): void {\n const docFrag = document.createDocumentFragment();\n docFrag.appendChild(cloneNode);\n element.parentNode?.insertBefore(docFrag, element.nextSibling);\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n this._subscriptions.add(\n this.released\n .pipe(\n // postpone blur\n delay(0)\n )\n .subscribe(() => {\n if (this.containerSelector) {\n this.elementRef.nativeElement.children[0].blur();\n }\n this.elementRef.nativeElement.blur();\n })\n );\n }\n}\n","import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, Input, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { RtlService } from '../../services/rtl.service';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardItem.\n */\n@Directive({\n selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]'\n})\nexport class DndKeyboardGroupDirective {\n /** Group of items */\n @Input()\n groups: any[][];\n\n /** Whether to disable drag & drop */\n @Input()\n disableKeyboardDragDrop = false;\n\n /** Used to apply indexes when moving between groups */\n @Input()\n orientation: 'horizontal' | 'vertical' = 'vertical';\n\n /** @hidden */\n _onDndItemFocus$ = new Subject<[number, number]>();\n\n /** @hidden */\n constructor(\n private readonly _cdr: ChangeDetectorRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Custom function to call when moving item inside the group */\n @Input()\n customMoveFn = (group: any[], fromIndex: number, toIndex: number): void =>\n moveItemInArray(group, fromIndex, toIndex);\n\n /** Custom function to call when moving item between groups */\n @Input()\n customTransferFn = (group: any[], nextGroup: any[], fromIndex: number, toIndex: number): void =>\n transferArrayItem(group, nextGroup, fromIndex, toIndex);\n\n /** Process drag & drop */\n processDragDrop(event: KeyboardEvent, itemIndex: number, groupIndex: number): void {\n if (this.disableKeyboardDragDrop || !event.altKey) {\n return;\n }\n\n const isRtl = this._rtlService.rtl.value;\n\n const group = this.groups[groupIndex];\n const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;\n\n const nextGroupExists = this.groups.length > groupIndex + 1;\n const prevGroupExists = !!groupIndex;\n\n if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex + 1);\n this._focusDndItem(groupIndex, itemIndex + 1);\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex - 1);\n this._focusDndItem(groupIndex, itemIndex - 1);\n }\n }\n\n /** @hidden Focus after moving elements with keyboard */\n private _focusDndItem(groupIndex: number, itemIndex: number): void {\n this._cdr.detectChanges();\n\n this._onDndItemFocus$.next([groupIndex, itemIndex]);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardGroup.\n * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.\n * Please see example below:\n * @Component({\n * selector: 'cdk-drag-drop-example',\n * template: `<div\n * cdkDragListGroup\n * fdDndKeyboardGroup\n * [groups]=\"groups\"\n * >\n * <div\n * *ngFor=\"let group of groups; let groupIndex = index\"\n * cdkDragList\n * >\n * Group #{{ groupIndex }}\n * <div\n * *ngFor=\"let item of group; let index = index\"\n * cdkDrag\n * fdDndKeyboardItem\n * [itemIndex]=\"index\"\n * [groupIndex]=\"groupIndex\"\n * [dndKeyboardDisabled]=\"flag for disable/enable keyboard navigation if needed\"\n * tabindex=\"0\"\n * >\n * Item #{{ item }}\n * </div>\n * </div>\n * </div>`,\n * })\n * export class CdkDragDropExample {\n * groups = [\n * [1, 2, 3],\n * [4, 5, 6],\n * ];\n * }\n */\n@Directive({\n selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]'\n})\nexport class DndKeyboardItemDirective implements OnInit, OnDestroy {\n /** item index in group(column) */\n @Input()\n itemIndex: number;\n\n /** group(column) index */\n @Input()\n groupIndex: number;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private readonly _dndGroup: DndKeyboardGroupDirective,\n private readonly _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeyDown(event: KeyboardEvent): void {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {\n if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n}\n","import { isFunction } from '../typecheck';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Executes function and passes returned value into callback function.\n */\nexport class FunctionStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(fn: () => T, updateLatestValue: (v: T) => any): Promise<void> {\n const result = isFunction(fn) ? fn() : ((<any>fn) as T);\n return Promise.resolve(result).then(updateLatestValue);\n }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Converts observable into Promise and passes returned value into callback function.\n */\nexport class ObservableStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Observable<T>, updateLatestValue: any): Promise<void> {\n return firstValueFrom(async).then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description awaits for promise to resolve it's value and passes returned value into callback function.\n */\nexport class PromiseStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Promise<T>, updateLatestValue: (v: T) => any): Promise<void> {\n return async.then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Passes value object into callback function.\n */\nexport class ValueStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(value: T, updateLatestValue: (v: T) => any): Promise<void> {\n return Promise.resolve(value).then(updateLatestValue);\n }\n}\n","import { Observable } from 'rxjs';\nimport { isFunction, isPromise, isSubscribable } from '../typecheck';\n\nimport { FunctionStrategy } from './function-strategy.class';\nimport { ObservableStrategy } from './observable-strategy.class';\nimport { PromiseStrategy } from './promise-strategy.class';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\nimport { ValueStrategy } from './value-strategy.class';\n\n/**\n * @description Selects appropriate strategy on how to resolve function value\n * @param obj object to get value from\n * @returns appropriate strategy to retrieve value from the object\n */\nexport function selectStrategy<T = any>(obj: Observable<T> | Promise<T> | (() => void) | T): SubscriptionStrategy<T> {\n if (isPromise(obj)) {\n return new PromiseStrategy<T>();\n }\n\n if (isSubscribable(obj)) {\n return new ObservableStrategy<T>();\n }\n\n if (isFunction(obj)) {\n return new FunctionStrategy<T>();\n }\n\n return new ValueStrategy<T>();\n}\n","import {\n AfterContentInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { destroyObservable } from '../../helpers';\nimport { DndItem, ElementChord, ElementPosition, FdDndDropType, FdDropEvent, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM, DND_LIST } from '../tokens';\n\nexport type DropPredicate<T> = (\n dragItem: T,\n dropItem: T,\n event: FdDropEvent<T>\n) => boolean | Promise<boolean> | Observable<boolean>;\nexport type DragoverPredicate<T> = (\n dragItem: T,\n dragOverItem: T,\n dragItemIndex: number,\n dragOverItemIndex: number\n) => boolean;\n\n@Directive({\n selector: '[fdkDndList], [fd-dnd-list]',\n providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }],\n standalone: true\n})\nexport class DndListDirective<T> implements AfterContentInit, OnDestroy {\n /**\n * Defines if the element is allowed to be dragged in 2 dimensions,\n * When true - replace indicator will be displayed vertically\n */\n @Input()\n gridMode = false;\n\n /**\n * Defines drop strategy:\n * * `shift` mode will create line after the closest drop element.\n * * `group` mode will create replace indicator on a whole closest drop element.\n * * `auto` mode will create a line after the closest drop element\n * if dragged element coordinates are shifted for 30% from the center of the closest drop element.\n * Otherwise, it will create replace indicator on a whole closest drop element.\n *\n * `shift` mode is the default.\n */\n @Input()\n dropMode: FdDndDropType = 'shift';\n\n /**\n * Threshold of dragged item over another item to define which type of `dropMode` should be used.\n */\n @Input()\n threshold = 0.3;\n\n /** Array of items, that will be sorted */\n @Input()\n items: Array<T> = [];\n\n /** Defines if drag and drop feature should be enabled for list items */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /** Predicate function that checks whether the item can be dropped over another item. */\n @Input()\n dropPredicate: DropPredicate<T> | undefined;\n\n /**\n * Predicate function that checks whether the item can be dragged over another item.\n * If the function returns `false`, dragged over item will not be highlighted, and drop event will be canceled.\n */\n @Input()\n dragoverPredicate: DragoverPredicate<T> | undefined;\n\n /**\n * Event emitted when `dropPredicate` function evaluation changes.\n * Emits `true` when evaluation started, and `false` when completed.\n */\n @Output()\n dropPredicateCalculating = new EventEmitter<boolean>();\n\n /** Event that is thrown when items are reordered */\n @Output()\n readonly itemsChange = new EventEmitter<Array<T>>();\n\n /** Event that is thrown when the item is dropped */\n @Output()\n readonly itemDropped = new EventEmitter<FdDropEvent<T>>();\n\n /** Event that is thrown when predicate function returned false. */\n @Output()\n readonly dropCancelled = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChildren(DND_ITEM)\n dndItems: QueryList<DndItem<T>>;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-dnd-list';\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestItemPosition: 'before' | 'after' | null = null;\n\n /** An RxJS Subject that will kill the current data stream (for unsubscribing) */\n private readonly _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dndItemReference: DndItem[];\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _detectedDropMode: 'shift' | 'group';\n\n /** @hidden */\n private _linesRemoved = true;\n\n /** @hidden */\n private _indicatorsRemoved = true;\n\n /** @hidden */\n private _draggedItem: T | undefined;\n\n /** @hidden */\n private _ignoreDrop = false;\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._changeDraggableState(this._draggable);\n this.dndItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.refreshQueryList());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._refresh$.next();\n this._refresh$.complete();\n }\n\n /**\n * Refreshes the indexes of the items.\n */\n refreshQueryList(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n\n this._dndItemReference = this.dndItems.toArray();\n\n this._changeDraggableState(this._draggable);\n\n this.dndItems.forEach((item, index) => {\n item.moved.pipe(takeUntil(refresh$)).subscribe((position: ElementPosition) => this.onMove(position, index));\n item.started.pipe(takeUntil(refresh$)).subscribe(() => this.dragStart(index));\n item.released.pipe(takeUntil(refresh$)).subscribe(async () => await this.dragEnd(index));\n });\n }\n\n /** Method called when the item is being moved by 1 px */\n onMove(mousePosition: ElementPosition, draggedItemIndex: number): void {\n /** Temporary object, to store lowest distance values */\n let closestItemIndex: number | null = null;\n\n const closestDndItem = this._elementsCoordinates.find((element, index) => {\n /** Check if an element can be replaced */\n if (!element.stickToPosition && closestItemIndex !== index) {\n const isMouseOnElement = _isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n closestItemIndex = index;\n\n return true;\n }\n }\n return false;\n });\n\n if (!closestDndItem) {\n closestItemIndex = null;\n }\n\n /** If the closest element is different from the old one, the new one is picked. It prevents from performance issues */\n if (\n (closestItemIndex || closestItemIndex === 0) &&\n (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')\n ) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._closestItemIndex = closestItemIndex;\n this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;\n const closestItem = this.items[this._closestItemIndex];\n // If closest item index is same as dragged item, just remove indicators\n if (closestItemIndex === draggedItemIndex) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n return;\n }\n if (\n this.dragoverPredicate &&\n this._draggedItem &&\n !this.dragoverPredicate(this._draggedItem, closestItem, draggedItemIndex, this._closestItemIndex)\n ) {\n this._ignoreDrop = true;\n this._setDisabledItem(this._closestItemIndex);\n return;\n }\n this._setDisabledItem(-1);\n /** Generating line, that shows where the element will be placed, on a drop */\n if (this.dropMode === 'group') {\n this._createReplaceIndicator(this._closestItemIndex);\n } else if (this.dropMode === 'shift') {\n this._createLine(this._closestItemIndex, this._closestItemPosition);\n } else {\n this._selectDropModeIndicator(draggedItemIndex, closestDndItem, closestItemIndex);\n }\n }\n }\n\n /** Method called when an element is started to be dragged */\n dragStart(index: number): void {\n const draggedItemElement = this._dndItemReference[index].elementRef;\n this._draggedItem = this.items[index];\n /** Counting all the element's chords */\n this._elementsCoordinates = this._dndItemReference.map((item: DndItem) =>\n item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode)\n );\n }\n\n /** Method called when an element is released */\n async dragEnd(draggedItemIndex: number): Promise<void> {\n this._draggedItem = undefined;\n const items = this.items.slice();\n const replacedItemIndex = this._closestItemIndex;\n this._setDisabledItem(-1);\n\n if (this._ignoreDrop) {\n this._ignoreDrop = false;\n return;\n }\n\n if (replacedItemIndex === null || replacedItemIndex === -1) {\n return;\n }\n\n const draggedDndItem = this.dndItems.get(draggedItemIndex)?.item ?? items[draggedItemIndex];\n const replacedDndItem = this.dndItems.get(replacedItemIndex)?.item ?? items[replacedItemIndex];\n\n const predicateSubj = new Subject<boolean>();\n\n const evt: FdDropEvent<T> = {\n replacedItemIndex,\n draggedItemIndex,\n items,\n insertAt: this._closestItemPosition,\n mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode\n };\n\n predicateSubj.pipe(take(1)).subscribe((result) => {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n\n /** Reset */\n this._elementsCoordinates = [];\n this._closestItemIndex = null;\n this._closestItemPosition = null;\n\n if (!result) {\n this.dropCancelled.emit();\n return;\n }\n\n if (draggedItemIndex !== replacedItemIndex) {\n if (draggedItemIndex < replacedItemIndex) {\n for (let i = draggedItemIndex; i < replacedItemIndex; i++) {\n items[i] = items[i + 1];\n }\n } else {\n for (let i = draggedItemIndex; i > replacedItemIndex; i--) {\n items[i] = items[i - 1];\n }\n }\n\n /** Replacing items */\n items[replacedItemIndex] = draggedDndItem;\n\n this.itemsChange.emit(items);\n }\n\n this.itemDropped.emit(evt);\n });\n\n if (this.dropPredicate !== undefined) {\n this.dropPredicateCalculating.emit(true);\n const obj = this.dropPredicate(draggedDndItem, replacedDndItem, evt);\n const strategy = selectStrategy(obj);\n\n await strategy.createSubscription(obj, (result) => {\n predicateSubj.next(result);\n this.dropPredicateCalculating.emit(false);\n });\n } else {\n predicateSubj.next(true);\n }\n }\n\n /** @hidden */\n private _setDisabledItem(itemIndex: number): void {\n this.dndItems.forEach((item, index) => {\n item.setDisabledState(index === itemIndex);\n });\n }\n\n /** @hidden */\n private _selectDropModeIndicator(\n draggedItemIndex: number,\n closestItem: ElementChord | undefined,\n closestItemIndex: number\n ): void {\n if (!closestItem || !this._dndItemReference[draggedItemIndex]) {\n return;\n }\n\n let newDetectedDropMode: 'shift' | 'group';\n const draggedElmCoords =\n this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();\n\n const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);\n const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);\n\n if (\n _between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&\n _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)\n ) {\n newDetectedDropMode = 'group';\n } else {\n newDetectedDropMode = 'shift';\n }\n\n if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {\n return;\n }\n\n this._detectedDropMode = newDetectedDropMode;\n\n if (this._detectedDropMode === 'shift') {\n this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);\n } else {\n this._createReplaceIndicator(closestItemIndex);\n }\n }\n\n /** @hidden */\n private _removeAllLines(): void {\n this._linesRemoved = true;\n this.dndItems.forEach((item) => item.removeLine());\n }\n\n /** @hidden */\n private _removeAllReplaceIndicators(): void {\n this._indicatorsRemoved = true;\n this.dndItems.forEach((item) => item.removeReplaceIndicator());\n }\n\n /** @hidden */\n private _createLine(closestItemIndex: number, linkPosition: LinkPosition): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._linesRemoved = false;\n this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);\n }\n\n /** @hidden */\n private _createReplaceIndicator(closestItemIndex: number): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._indicatorsRemoved = false;\n this._dndItemReference[closestItemIndex].createReplaceIndicator();\n }\n\n /**\n * @hidden\n * Return information if an element is placed before the dragged element\n */\n private _isBefore(draggedElement: ElementRef, targetElement: ElementRef): boolean {\n /** Sometimes the elements are not straight in one column, that's why offset is needed */\n const VERTICAL_OFFSET = 20;\n\n /** Distances from the top of the screen */\n const draggedElementBound = draggedElement.nativeElement.getBoundingClientRect();\n const targetElementBound = targetElement.nativeElement.getBoundingClientRect();\n\n if (draggedElementBound.top - targetElementBound.top > VERTICAL_OFFSET) {\n /** If an element is higher than the dragged element, it's for sure before */\n return true;\n } else if (targetElementBound.top - draggedElementBound.top > VERTICAL_OFFSET) {\n /** If an element is lower than the dragged element, it's for sure after */\n return false;\n } else {\n /** If elements are in same level, the horizontal position decides if it's before/after */\n return draggedElementBound.left - targetElementBound.left > 0;\n }\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n if (this.dndItems) {\n this.dndItems.forEach((item) => {\n item.listDraggable = draggable;\n item.changeCDKDragState();\n });\n }\n }\n}\n\nfunction _isMouseOnElement(element: ElementChord, mousePosition: ElementPosition): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n}\n\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n\ninterface ElementBoundaries {\n x: {\n start: number;\n end: number;\n };\n y: {\n start: number;\n end: number;\n };\n}\n\nfunction getElementStartCoords(rect: DOMRect, position: ElementChord['position']): { x: number; y: number } {\n return {\n x: position === 'after' ? rect.x + rect.width : rect.x,\n y: position === 'after' ? rect.y + rect.height : rect.y\n };\n}\n\nfunction getElementBoundaries(coordinates: ElementChord, threshold: number): ElementBoundaries {\n const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);\n const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);\n const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;\n const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;\n const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;\n const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;\n return {\n x: {\n start: xStart > xEnd ? xEnd : xStart,\n end: xStart > xEnd ? xStart : xEnd\n },\n y: {\n start: yStart > yEnd ? yEnd : yStart,\n end: yStart > yEnd ? yStart : yEnd\n }\n };\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\n\n@NgModule({\n imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport {\n AutoCompleteModule,\n BreakpointModule,\n ClickedDirective,\n DisabledBehaviorModule,\n FocusableGridModule,\n FocusableItemModule,\n FocusableListModule,\n InitialFocusModule,\n IntersectionSpyDirective,\n LineClampModule,\n OnlyDigitsModule,\n OverflowListModule,\n ReadonlyBehaviorModule,\n RepeatModule,\n ResizeModule,\n SelectableListModule,\n TemplateModule,\n TruncateModule\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\nimport { RtlService } from './services/rtl.service';\n\n@NgModule({\n imports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n exports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n})\nexport class UtilsModule {}\n","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { HasElementRef } from './interfaces/has-element-ref.interface';\n\n/*\n This abstract class allows the user to set their own custom styles on a Fundamental Library for Angular directive, in addition to the\n styles the library needs to add itself.\n When library styles were added through the directive's host: {'[class]'} property, any styles the user added would be\n overwritten. By extending this class, we instead add library styles to the user's classList rather than replace them.\n */\n\n/** @hidden */\n@Directive()\nexport abstract class AbstractFdNgxClass implements HasElementRef, OnInit, OnChanges {\n /** @hidden */\n abstract _setProperties(): void;\n\n /** @hidden */\n @Input() class: string; // user's custom classes\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n constructor() {\n this._setProperties();\n }\n\n /*\n each directive that extends this class will implement this function and populate it with one or more calls to\n the '_addClassToElement' function, passing the style names to be added with each call\n */\n\n /** @hidden */\n _setClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = `${className} ${this.class}`;\n }\n\n /** @hidden */\n _clearElementClass(): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = '';\n }\n\n /** @hidden */\n _addClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.add(...className.split(' '));\n }\n\n /** @hidden */\n _addStyleToElement(attribute, value): void {\n (this.elementRef.nativeElement as HTMLElement).style[attribute] = value;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n const classList = (this.elementRef.nativeElement as HTMLElement).classList;\n while (classList.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n classList.remove(classList.item(0)!);\n }\n if (this.class) {\n this._addClassToElement(this.class);\n }\n this._setProperties();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setProperties();\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../typecheck';\n\n/** @hidden */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n return isBlank(value) ? [] : coerceArray(value);\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n ComponentType,\n DomPortal,\n PortalModule,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\n\n/**\n * A component that can be used to attach a portal to a DOM element, without explicitly creating portal instances on place.\n * This is useful when you have a list of the components or templates, or HTMLElmets, and you want to attach them to the DOM\n * dynamically in a loop.\n */\n@Component({\n selector: 'fdk-dynamic-portal',\n imports: [PortalModule],\n template: ` <ng-template cdkPortalOutlet></ng-template>`\n})\nexport class DynamicPortalComponent implements AfterViewInit {\n /** The DOM element to attach */\n @Input()\n set domElement(value: HTMLElement | ElementRef<HTMLElement> | string) {\n this.portalContent$.next(value);\n }\n\n /** The component to attach */\n @Input()\n set component(value: ComponentType<any>) {\n this.portalContent$.next(value);\n }\n\n /** The template to attach */\n @Input()\n set template(value: TemplateRef<any>) {\n this.portalContent$.next(value);\n }\n\n /** The Content which should be attached and can be any of the items */\n @Input()\n set auto(value: DynamicPortalComponent['domElement' | 'component' | 'template']) {\n this.portalContent$.next(value);\n }\n\n /** Emits when the portal is attached */\n @Output()\n attached = new EventEmitter<ComponentRef<any> | EmbeddedViewRef<any> | Element>();\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n portalOutlet?: CdkPortalOutlet;\n\n /** @hidden */\n private portalContent$ = new BehaviorSubject<\n DynamicPortalComponent['domElement' | 'component' | 'template'] | undefined\n >(undefined);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private elementRef = inject(ElementRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n const portalOutlet = this.portalOutlet as CdkPortalOutlet;\n this.portalContent$\n .pipe(\n tap(() => portalOutlet.detach()),\n filter(Boolean),\n map((content) => {\n if (typeof content === 'string') {\n const textElement = this.renderer.createText(content);\n this.renderer.appendChild(this.elementRef.nativeElement, textElement);\n return new DomPortal(textElement);\n } else if (content instanceof HTMLElement || content instanceof ElementRef) {\n return new DomPortal(coerceElement(content as HTMLElement | ElementRef<HTMLElement>));\n } else if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef);\n }\n return new ComponentPortal(content);\n }),\n filter(Boolean),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((portal) => {\n const ref = portalOutlet.attach(portal);\n if (portal instanceof DomPortal) {\n // DomPortal Attachment does not refer return Ref, like other portals\n this.attached.emit(portal.element);\n } else {\n this.attached.emit(ref);\n }\n });\n }\n}\n","export const MOBILE_CONFIG_ERROR = `Missing configuration object for mobile version of the component.\n Consult the documentation on how to provide MobileModeConfiguration object for this component.\n`;\n\nexport const THEME_SWITCHER_ROUTER_MISSING_ERROR = `You need to import RouterModule to enable theme settings via the url.`;\n\nexport const INVALID_DATE_ERROR = 'Invalid Date';\n","export type OverflowPriority = 'always' | 'never' | 'low' | 'high' | 'disappear';\n\nexport const OVERFLOW_PRIORITY_SCORE: Map<OverflowPriority, number> = new Map([\n ['always', 0],\n ['disappear', 1],\n ['low', 2],\n ['high', 3],\n ['never', 4]\n]);\n","/**\n * Instead of `/\\p{L}/u` because of it's not working in IE11 and Edge\n * - https://github.com/Microsoft/ChakraCore/issues/2969\n * */\n// eslint-disable-next-line max-len\nexport const LETTERS_UNICODE_RANGE = `[A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`;\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_REGEX = new RegExp(LETTERS_UNICODE_RANGE, 'g');\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_GROUP_REGEX = new RegExp(`(${LETTERS_UNICODE_RANGE})+`, 'g');\n","/**\n * Polyfill for `/\\p{Nd}/u` to work in IE11 and Edge\n */\n// eslint-disable-next-line max-len\nexport const DECIMAL_NUMBER_UNICODE_RANGE = `[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]`;\nexport const DECIMAL_NUMBER_UNICODE_REGEX = new RegExp(DECIMAL_NUMBER_UNICODE_RANGE, 'g');\nexport const DECIMAL_NUMBER_UNICODE_GROUP_REGEX = new RegExp(`(${DECIMAL_NUMBER_UNICODE_RANGE})+`, 'g');\n","import { ElementRef } from '@angular/core';\n\nexport interface HasElementRef<ElementType extends Element = HTMLElement> {\n readonly elementRef: ElementRef<ElementType>;\n}\n\nexport const ELEMENT_REF_EXCEPTION = 'HasElementRef interface has to be implemented';\n","import { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.interface';\nimport { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css class to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement CssClassBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssClass(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): string[] {\n const self = this as unknown as CssClassBuilder & { _uuidv4?: string };\n if (!('elementRef' in self)) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const classListToApply: string[] = sanitize(originalMethod.apply(this));\n\n const elementRef = self.elementRef;\n\n const nativeElement: HTMLElement & { _classMap?: any } = elementRef?.nativeElement;\n\n if (!nativeElement) {\n return classListToApply;\n }\n\n if (!nativeElement._classMap) {\n nativeElement._classMap = {};\n }\n\n if (!self._uuidv4) {\n self._uuidv4 = uuidv4();\n }\n\n const currentClassList = Array.from(nativeElement.classList);\n\n const previousClassListToApply = nativeElement._classMap[self._uuidv4] || [];\n\n const newClassList = createComponentClassList(currentClassList, previousClassListToApply, classListToApply);\n\n nativeElement.className = newClassList.join(' ');\n\n nativeElement._classMap[self._uuidv4] = classListToApply;\n\n return classListToApply;\n };\n}\n\n/** Filter list to unique items */\nfunction unique(value: unknown, index: number, list: unknown[]): boolean {\n return list.indexOf(value) === index;\n}\n\n/** Splits merged classes, removes falsy elements and leaves only unique items */\nfunction sanitize(array: string[]): string[] {\n return array\n .filter(Boolean)\n .reduce((classList: string[], cssClass: string) => [...classList, ...cssClass.split(/\\s+/)], [])\n .filter(unique);\n}\n\nfunction firstCommonElementIndex(array1: string[], array2: string[]): number {\n return array1.findIndex((element) => array2.indexOf(element) !== -1);\n}\n\n/** Create set of component classes based on previous set and new set */\nfunction createComponentClassList(\n allClasses: string[],\n previousComponentClassList: string[],\n newComponentClassList: string[]\n): string[] {\n allClasses = allClasses.slice();\n let index = firstCommonElementIndex(allClasses, previousComponentClassList);\n index = index === -1 ? 0 : index;\n allClasses.splice(index, previousComponentClassList.length, ...newComponentClassList);\n\n return allClasses;\n}\n","import { Hash } from '../datatypes/hash.datatype';\nimport { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css styles to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement HasElementRef or CssStyleBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssStyle(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): Hash<number | string> {\n const self = this as unknown as HasElementRef;\n if (!self.elementRef) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const _styles: Hash<number | string> = originalMethod.apply(this);\n const htmlElement = self.elementRef.nativeElement as HTMLElement;\n Object.keys(_styles).forEach((key) => {\n htmlElement.style[key] = _styles[key];\n });\n\n return _styles;\n };\n}\n","/**\n * Function, which generates decorator. Passed mutator will be called during value set\n */\nexport function alternateSetter(mutator: (value: any, self: Record<string | symbol, any>) => any): PropertyDecorator {\n return function (targetObj: Record<string | symbol, any>, propertyKey: string | symbol) {\n const _key = Symbol();\n targetObj[_key] = targetObj[propertyKey];\n Object.defineProperty(targetObj, propertyKey, {\n get() {\n return this[_key];\n },\n set(v: any) {\n this[_key] = mutator.call(this, v, this);\n }\n });\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\n/**\n * Decorator for coercing passed value to boolean, using @angular/cdk coerceBooleanProperty\n */\nexport const coerceBoolean = alternateSetter(coerceBooleanProperty);\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import { inject, InjectionToken, isDevMode, ValueProvider } from '@angular/core';\n\nexport interface DeprecatedSelectorModel {\n deprecated: string;\n current: string;\n}\n\n/** @hidden */\nexport function getDeprecatedModel(current: string, deprecated: string): DeprecatedSelectorModel {\n return {\n current,\n deprecated\n };\n}\n\n/** @hidden */\nexport function deprecatedModelProvider(current: string, deprecated: string): ValueProvider {\n return {\n provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,\n useValue: getDeprecatedModel(current, deprecated)\n };\n}\n\nexport const FD_DEPRECATED_DIRECTIVE_SELECTOR = new InjectionToken<DeprecatedSelectorModel>(\n 'FdDeprecatedDirectiveSelector'\n);\n\nexport abstract class DeprecatedSelector {\n /** @hidden */\n protected _selectors: DeprecatedSelectorModel | null = inject(FD_DEPRECATED_DIRECTIVE_SELECTOR, { optional: true });\n\n /** @hidden */\n constructor() {\n if (isDevMode() && this._selectors) {\n console.warn(this._messageGenerator(this._selectors.deprecated, this._selectors.current));\n }\n }\n\n /** @hidden */\n protected _messageGenerator(deprecated: string, current: string): string {\n const segments = [`${deprecated} selector(s) are deprecated and may affect input properties`];\n if (current) {\n segments.push(`Use ${current} instead.`);\n }\n return segments.join('. ');\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Nullable } from '../models/nullable';\n\nexport abstract class DynamicComponentContainer<T = TemplateRef<any> | Type<any>> {\n /** @hidden */\n abstract portalOutlet: CdkPortalOutlet;\n\n /** @hidden Load received content */\n protected abstract _loadContent(): void;\n\n /** @hidden */\n childContent: Nullable<T> = undefined;\n\n /** @hidden */\n protected _componentRef: ComponentRef<any> | EmbeddedViewRef<any>;\n\n /** @hidden */\n protected _contentLoaded$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n protected constructor(\n public elementRef: ElementRef,\n protected _injector: Injector\n ) {}\n\n /** @hidden Load received content as component */\n protected _createFromComponent(content: Type<any>): void {\n this.portalOutlet?.attachedRef?.destroy();\n const injector = Injector.create({\n parent: this._injector,\n providers: []\n });\n this._componentRef = this.portalOutlet.attach(new ComponentPortal(content, null, injector));\n }\n\n /** @hidden Load received content as embedded view */\n protected _createFromTemplate(content: TemplateRef<any>, context: any): void {\n this.portalOutlet?.attachedRef?.destroy();\n if (this.portalOutlet.hasAttached()) {\n this.portalOutlet.detach();\n }\n this._componentRef = this.portalOutlet.attach(\n new TemplatePortal(content, null as unknown as ViewContainerRef, context)\n );\n }\n}\n","import { Injector } from '@angular/core';\n\nexport class DynamicComponentInjector implements Injector {\n /** @hidden */\n constructor(\n private _parentInjector: Injector,\n private _additionalTokens: WeakMap<any, any>\n ) {}\n\n /**\n *\n * @param token\n * @param notFoundValue\n */\n get(token: any, notFoundValue?: any): void {\n const value = this._additionalTokens.get(token);\n\n if (value) {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\n}\n","import {\n ApplicationRef,\n Compiler,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n NgModuleFactory,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentConfig } from './dynamic-component-config';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n /** @hidden */\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _applicationRef: ApplicationRef,\n private readonly _injector: Injector,\n private readonly _compiler: Compiler\n ) {}\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param componentType Type of component that should be rendered.\n * @param config Configuration that will be passed to the component.\n * @param inject enables to provide preconfigured component injector and dependencies\n */\n public createDynamicComponent<T>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n componentType: Type<T>,\n config: DynamicComponentConfig,\n inject: { injector?: Injector; services?: any[] } = {}\n ): ComponentRef<T> {\n const { injector, services } = inject;\n const dependenciesMap = this._createDependencyMap(services);\n const componentRef = this._createComponent<T>(componentType, dependenciesMap, injector);\n this._passExternalContent<T>(componentRef, content);\n this._attachToContainer<T>(componentRef, config);\n\n return componentRef;\n }\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param moduleType Type of module that should be compiled.\n * @param componentType Type of component that should be rendered.\n * @param containerRef The container that the dynamic component is appended to.\n * @param injector enables to provide preconfigured component injector\n */\n async createDynamicModule<M, C>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n moduleType: Type<M> | NgModuleFactory<M>,\n componentType: Type<C>,\n containerRef: ViewContainerRef,\n injector?: Injector\n ): Promise<ComponentRef<C>> {\n const moduleFactory =\n moduleType instanceof NgModuleFactory ? moduleType : await this._compiler.compileModuleAsync<M>(moduleType);\n const moduleRef = moduleFactory.create(injector || this._injector);\n const componentFactory = moduleRef.componentFactoryResolver.resolveComponentFactory(componentType);\n\n containerRef.clear();\n\n const componentRef: ComponentRef<C> = containerRef.createComponent(componentFactory);\n\n this._passExternalContent<C>(componentRef, content);\n\n return componentRef;\n }\n\n /** Function that destroys dynamic component */\n public destroyComponent(componentRef: ComponentRef<any>): void {\n this._applicationRef.detachView(componentRef.hostView);\n componentRef.hostView.detach();\n componentRef.destroy();\n }\n\n /** @hidden */\n private _createDependencyMap(services: any[] = []): WeakMap<any, any> {\n const dependencyMap = new WeakMap();\n services.filter((service) => !!service).forEach((service) => dependencyMap.set(service.constructor, service));\n return dependencyMap;\n }\n\n /** @hidden */\n private _attachToContainer<V>(componentRef: ComponentRef<V>, config: DynamicComponentConfig): void {\n const configObj = Object.assign({}, config);\n if (config.containerRef) {\n componentRef.hostView.detach();\n config.containerRef.insert(componentRef.hostView);\n return;\n }\n this._applicationRef.attachView(componentRef.hostView);\n const componentEl = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (configObj.container !== 'body') {\n configObj.container?.appendChild(componentEl);\n } else {\n document.body.appendChild(componentEl);\n }\n }\n\n /** @hidden */\n private _createComponent<V>(\n componentType: Type<V>,\n dependenciesMap: WeakMap<any, any>,\n injector?: Injector\n ): ComponentRef<V> {\n const dynamicComponentInjector = new DynamicComponentInjector(injector || this._injector, dependenciesMap);\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentType);\n const componentRef = componentFactory.create(dynamicComponentInjector);\n // this._applicationRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n /** @hidden */\n private _passExternalContent<V>(\n componentRef: ComponentRef<V>,\n content: TemplateRef<any> | Type<any> | string | Record<string, any>\n ): void {\n // TODO: this approach should be revisited, it can cause issues, that is really hard to debug\n if (Object.prototype.hasOwnProperty.call(componentRef.instance, 'childContent')) {\n (componentRef.instance as any).childContent = content;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LIST_ITEM_COMPONENT = new InjectionToken<string[]>('ListItemComponent');\n\nexport interface ListItemInterface {\n selected: boolean;\n\n link: boolean;\n\n focus(): void;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\nexport type FdkAsyncProperty<T> = T | Observable<T> | Promise<T>;\n\n@Pipe({\n name: 'fdkAsyncOrSync',\n standalone: true,\n pure: false\n})\nexport class AsyncOrSyncPipe implements OnDestroy, PipeTransform {\n /** @hidden */\n private _cdr: ChangeDetectorRef | null;\n /** @hidden */\n private _asyncPipe: AsyncPipe | null;\n\n /** @hidden */\n constructor(ref: ChangeDetectorRef) {\n this._cdr = ref;\n this._asyncPipe = new AsyncPipe(this._cdr);\n }\n\n /**\n * Transforms raw async-like value into static one.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: FdkAsyncProperty<T>): T | null {\n return !isPromise(value) && !isSubscribable(value) ? value : (this._asyncPipe?.transform(value) ?? null);\n }\n\n /** @Hidden */\n ngOnDestroy(): void {\n this._asyncPipe?.ngOnDestroy();\n this._asyncPipe = null;\n this._cdr = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'displayFnPipe',\n standalone: true\n})\nexport class DisplayFnPipe implements PipeTransform {\n /** Transform value with display function. */\n transform(value: any, displayFn: any, ...args: any): string {\n return displayFn(value, ...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '../models/nullable';\n\n@Pipe({\n name: 'fdFilterStrings',\n standalone: true\n})\nexport class FilterStringsPipe implements PipeTransform {\n /**\n * Performs filtering.\n * @param values Array of items.\n * @param params Search parameters.\n */\n transform(values: any[] = [], params: { searchTerm: Nullable<string>; key: string }): any[] {\n if (!params.searchTerm) {\n return values;\n }\n if (params.key) {\n values = values.filter((item) =>\n item[params.key].toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase())\n );\n } else {\n values = values.filter((item) => item.toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n }\n return values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { ContentDensity } from '../interfaces/content-density';\n\n@Pipe({ name: 'isCompactDensity', standalone: true })\nexport class IsCompactDensityPipe implements PipeTransform {\n /** Check if the content density is compact. */\n transform(size: ContentDensity): boolean {\n return isCompactDensity(size);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\n@Pipe({\n name: 'fdkMakeAsync',\n pure: true,\n standalone: true\n})\nexport class MakeAsyncPipe implements PipeTransform {\n /**\n * Transforms raw value into observable.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: T | Promise<T> | Observable<T>): Observable<T> | Promise<T> {\n return isPromise(value) || isSubscribable(value) ? value : of(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: true\n})\nexport class SafePipe implements PipeTransform {\n /** @hidden */\n constructor(protected sanitizer: DomSanitizer) {}\n\n /** Sanitize HTML string. */\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from 'lodash-es';\n\n@Pipe({\n name: 'highlight',\n standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n /** Highlight search term in string. */\n transform(\n value: string,\n matches: string | Array<[number, number]>,\n active: boolean = true,\n includeSpans: boolean = false\n ): string {\n value = escape(value);\n let result: string = value;\n if (value && active && matches) {\n if (Array.isArray(matches)) {\n matches.forEach((match) => {\n const matchingString = value.substring(match[0], match[1] + 1);\n result = result.replace(matchingString, '<strong>' + matchingString + '</strong>');\n });\n } else if (typeof matches === 'string') {\n const testStr: string = escape(matches.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substring(startIndex, startIndex + testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\n }\n }\n }\n if (includeSpans) {\n result = '<span>' + result + '</span>';\n }\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: true\n})\nexport class TruncatePipe implements PipeTransform {\n /** Truncate string to given length. */\n transform(value: string, limit: number = 500): string {\n return value && value.length > limit ? value.substring(0, limit) + '...' : value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'twoDigits',\n standalone: true\n})\nexport class TwoDigitsPipe implements PipeTransform {\n /** Transform number to two digits. */\n transform(value: number, enable: boolean = true): string {\n if ((value || value === 0) && enable) {\n return value < 10 ? '0' + value : value.toString();\n } else {\n return String(value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get } from 'lodash-es';\n\n@Pipe({ name: 'valueByPath', standalone: true })\nexport class ValueByPathPipe implements PipeTransform {\n /** Get value by path. */\n transform(value: any, key: string): any {\n return get(value, key);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\n\n@NgModule({\n imports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ],\n exports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ]\n})\nexport class PipeModule {}\n","import { AnimationTriggerMetadata, animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state(\n 'void, hidden',\n style({\n transform: 'translateY(1rem)',\n opacity: 0\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0\n })\n )\n )\n ])\n};\n","import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\n\nexport interface ToastGlobalPosition {\n left?: string;\n right?: string;\n bottom?: string;\n top?: string;\n center: boolean;\n centerVertically?: boolean;\n}\n\nexport interface ToastGlobalConnectedPosition extends ConnectedPosition {\n boundTo: HTMLElement;\n}\n\nexport const toastConnectedTopPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n};\n\nexport const toastConnectedTopLeftPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedTopRightPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\nexport const toastConnectedBottomPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -16\n};\n\nexport const toastConnectedBottomLeftPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedBottomRightPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\n/**\n * Base Toast Position class.\n */\nexport abstract class BaseToastPosition {\n /**\n * Position strategy of the first item.\n */\n global!: ToastGlobalPosition | ToastGlobalConnectedPosition;\n /**\n * Position strategy of the newly added items.\n */\n connected!: ConnectedPosition;\n\n /**\n * Scroll strategy. Used when global position is bound to some HTML element on the page.\n */\n scrollPosition?: ScrollStrategy;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-center of the screen.\n * New items will stack after the first item.\n */\nexport class ToastTopCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n top: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedTopPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-center of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n bottom: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedBottomPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-left of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopLeftPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-right of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopRightPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopRightPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-left of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomLeftPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-right of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomRightPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomRightPosition;\n}\n","import {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n GlobalPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n DestroyRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseToastPosition, ToastGlobalConnectedPosition, ToastGlobalPosition } from './base-toast-positions';\nimport { BaseToastConfig } from './classes/base-toast-config';\nimport { BaseToastRef } from './classes/base-toast-ref';\nimport { ToastContainerComponent } from './interfaces/toast-container-component.interface';\nimport { ToastTextComponent } from './interfaces/toast-text-component.interface';\n\n@Injectable()\nexport abstract class BaseToastService<\n P extends BaseToastConfig,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** Component for simple text toast. */\n protected abstract toastTextComponent: Type<ToastTextComponent>;\n /** Component for Toast Container. */\n protected abstract toastContainerComponent: Type<C>;\n /** Injection token for Toast Data. */\n protected abstract toastDataInjectionToken: InjectionToken<any>;\n /** Toast Position Strategy. */\n protected abstract toastPositionStrategy: BaseToastPosition;\n /** Toast default config. */\n protected abstract defaultConfig: P;\n\n /**\n * Opens a Toast with the provided configuration.\n * @param toast accepts string, Component or TemplateRef.\n */\n abstract open<T>(\n toast: string | Type<T> | TemplateRef<T>\n ): BaseToastRef<ToastTextComponent | T | EmbeddedViewRef<T>, P>;\n\n abstract openFromString(message: string, config: P): BaseToastRef<ToastTextComponent, P>;\n\n /**\n * Opens a Toast with provided component inside.\n * @param component Component to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromComponent<T>(component: Type<T>, config: P): BaseToastRef<T, P>;\n\n /**\n * Opens a Toast with provided Template Reference.\n * @param template Template Reference to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromTemplate(template: TemplateRef<any>, config: P): BaseToastRef<EmbeddedViewRef<any>>;\n\n /**\n * Gets Toast Container providers.\n * @param config Toast Config.\n */\n protected abstract getContainerComponentProviders(config: P): StaticProvider[];\n\n /**\n * Gets Toast Content providers.\n * @param config Toast Config.\n * @param toastRef Toast Reference.\n */\n protected abstract getContentComponentProviders<T>(config: P, toastRef: BaseToastRef<T>): StaticProvider[];\n\n /**\n * Creates Toast Reference for provided container and overlay.\n * @param containerRef Container reference.\n * @param overlayRef Overlay Reference.\n * @param positionStrategy Position Strategy\n */\n protected abstract getToastRef<T>(\n containerRef: C,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ): BaseToastRef<T | EmbeddedViewRef<any>, P>;\n\n /**\n * @hidden\n * Array of all current toasts.\n */\n protected _toasts: BaseToastRef[] = [];\n\n /**\n * @hidden\n */\n protected _toastsMap = new Map<BaseToastPosition, BaseToastRef[]>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected constructor(\n public overlay: Overlay,\n public injector: Injector\n ) {}\n\n /**\n * Dismisses all Toasts.\n */\n hideAll(): void {\n this._toasts.forEach((t) => t.dismiss());\n }\n\n /**\n * Returns `true` if there are some message toasts currently open. `False` otherwise.\n */\n hasOpenMessageToasts(): boolean {\n return this._toasts.length > 0;\n }\n\n /**\n * Sets new position strategy for all Toast items.\n * @param newStrategy New Position Strategy\n */\n setNewPositionStrategy(newStrategy: BaseToastPosition): void {\n if (newStrategy === this.toastPositionStrategy) {\n return;\n }\n\n this.toastPositionStrategy = newStrategy;\n\n this._refreshOverlayPositions();\n }\n\n /**\n * @hidden\n * Places a new component or a template as the content of the Toast container.\n */\n protected _attach<T>(\n content: ComponentType<T> | TemplateRef<T>,\n userConfig?: P\n ): BaseToastRef<T | EmbeddedViewRef<any>, P> {\n const config = { ...this.defaultConfig, ...userConfig };\n const positionStrategy = config.positionStrategy || this.toastPositionStrategy;\n const { overlay, isAnchor } = this._createOverlay(positionStrategy);\n const containerRef = this.attachToastContainerComponent(overlay, config);\n const toastRef = this.getToastRef<T>(containerRef, overlay, positionStrategy);\n toastRef._defaultPositionStrategy = !config.positionStrategy;\n toastRef._isAnchor = isAnchor;\n\n if (content instanceof TemplateRef) {\n // TemplatePortal requires viewContainer ref\n const viewRef = null as any as ViewContainerRef;\n const portal = new TemplatePortal(content, viewRef, { $implicit: config, toastRef } as any);\n\n toastRef.instance = containerRef.attachTemplatePortal(portal);\n } else {\n const injector = this.createContentComponentInjector(config, toastRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = containerRef.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n toastRef.instance = contentRef.instance;\n\n contentRef.changeDetectorRef.detectChanges();\n }\n\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.push(toastRef);\n this._toasts.push(toastRef);\n this._toastsMap.set(positionStrategy, allToasts);\n\n this.animateToast<T>(toastRef);\n\n return toastRef;\n }\n\n /**\n * Attaches the Toast container component to the overlay.\n */\n protected attachToastContainerComponent(overlayRef: OverlayRef, config: P): C {\n const injector = Injector.create({\n parent: this.injector,\n providers: this.getContainerComponentProviders(config)\n });\n\n const containerPortal = new ComponentPortal(this.toastContainerComponent, null, injector);\n const containerRef: ComponentRef<C> = overlayRef.attach(containerPortal);\n\n containerRef.instance.config = config;\n containerRef.instance.overlayRef = overlayRef;\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside a Toast component.\n * @param config Config that was used to create the Toast.\n * @param toastRef Reference to the Toast.\n */\n protected createContentComponentInjector<T>(config: P, toastRef: BaseToastRef<T>): Injector {\n return Injector.create({\n parent: this.injector,\n providers: this.getContentComponentProviders(config, toastRef)\n });\n }\n\n /**\n * Animates the old Toast out and the new one in.\n */\n protected animateToast<T>(toastRef: BaseToastRef<T | EmbeddedViewRef<any>, P>): void {\n const positionStrategy = toastRef.positionStrategy;\n // When the toast is dismissed, clear the reference to it.\n toastRef\n .afterDismissed()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.splice(allToasts.indexOf(toastRef), 1);\n this._toasts.splice(this._toasts.indexOf(toastRef), 1);\n this._toastsMap.set(positionStrategy, allToasts);\n this._refreshOverlayPositions();\n });\n\n toastRef.containerInstance.enter();\n }\n\n /**\n * @hidden\n * Creates a new overlay and places it in the correct location.\n */\n private _createOverlay(positionStrategy: BaseToastPosition): { overlay: OverlayRef; isAnchor: boolean } {\n const overlayConfig = new OverlayConfig();\n overlayConfig.scrollStrategy = positionStrategy.scrollPosition || this.overlay.scrollStrategies.reposition();\n\n const { position, isAnchor } = this._getPositionStrategy(positionStrategy);\n\n overlayConfig.positionStrategy = position;\n overlayConfig.panelClass = 'fd-toast-overlay';\n return { overlay: this.overlay.create(overlayConfig), isAnchor };\n }\n\n /**\n * @hidden\n * @returns Initial Position Strategy of the Toast Overlay Reference.\n */\n private _getPositionStrategy(positionStrategy: BaseToastPosition): {\n position: PositionStrategy;\n isAnchor: boolean;\n } {\n const lastOverlay = this._getLastToastWithSamePosition(positionStrategy);\n\n const globalOverlay = this._toastsMap.get(positionStrategy)?.find(({ _isAnchor }) => _isAnchor);\n\n if (lastOverlay && globalOverlay) {\n return {\n position: this._composeFlexibleConnectedPosition(\n lastOverlay.overlayRef.overlayElement,\n positionStrategy\n ),\n isAnchor: false\n };\n }\n\n return { position: this._composeGlobalPosition(positionStrategy), isAnchor: true };\n }\n\n /**\n * @hidden\n * @param needlePosition\n * @private\n */\n private _getLastToastWithSamePosition(needlePosition: BaseToastPosition): BaseToastRef<P, C> | undefined {\n return [...(this._toastsMap.get(needlePosition) || [])]?.reverse()[0];\n }\n\n /**\n * @hidden\n * @param connectedElm element to connect with.\n * @param positionStrategy Position Strategy\n * @returns Flexible Connected Position Strategy for Overlay Reference.\n */\n private _composeFlexibleConnectedPosition(\n connectedElm: HTMLElement,\n positionStrategy: BaseToastPosition\n ): FlexibleConnectedPositionStrategy {\n positionStrategy = positionStrategy || this.toastPositionStrategy;\n return this.overlay\n .position()\n .flexibleConnectedTo(connectedElm)\n .withPush(false)\n .withPositions([positionStrategy.connected]);\n }\n\n /**\n * @hidden\n * @returns Default Global Position for Overlay Reference.\n */\n private _composeGlobalPosition(\n positionStrategy: BaseToastPosition\n ): GlobalPositionStrategy | FlexibleConnectedPositionStrategy {\n let position: FlexibleConnectedPositionStrategy | GlobalPositionStrategy;\n if (this._isBoundGlobalPosition(positionStrategy.global)) {\n position = this.overlay\n .position()\n .flexibleConnectedTo(positionStrategy.global.boundTo)\n .withPositions([positionStrategy.global])\n .withPush(false);\n } else {\n position = this.overlay.position().global();\n const globalToastPositionStrategy: ToastGlobalPosition = positionStrategy.global;\n\n for (const [pos, value] of Object.entries(globalToastPositionStrategy)) {\n switch (pos) {\n case 'left':\n position.left(value);\n break;\n case 'right':\n position.right(value);\n break;\n case 'bottom':\n position.bottom(value);\n break;\n case 'top':\n position.top(value);\n break;\n case 'center':\n position.centerHorizontally();\n break;\n case 'centerVertically':\n position.centerVertically();\n break;\n }\n }\n }\n\n return position;\n }\n\n /** @hidden */\n private _refreshOverlayPositions(): void {\n this._toastsMap.forEach((toasts) => {\n this._updateOverlayPositionStrategy(toasts);\n });\n }\n\n /** @hidden */\n private _updateOverlayPositionStrategy(toasts: BaseToastRef[]): void {\n toasts.forEach((toastRef) => {\n const positionStrategy = this._updatePositionStrategy(toastRef);\n const overlayConfig = toastRef.overlayRef.getConfig();\n\n toastRef.overlayRef.updatePositionStrategy(positionStrategy);\n overlayConfig.positionStrategy = positionStrategy;\n });\n }\n\n /**\n * @hidden\n * Updates the position of a current Overlay Reference.\n * @returns New Position Strategy.\n * @param toast Toast Reference\n */\n private _updatePositionStrategy(toast: BaseToastRef): PositionStrategy {\n const positionStrategy = toast._defaultPositionStrategy ? this.toastPositionStrategy : toast.positionStrategy;\n\n if (toast._isAnchor) {\n return this._composeGlobalPosition(positionStrategy);\n }\n\n const toasts = this._toastsMap.get(positionStrategy) || [];\n\n const globalOverlay = toasts?.find(({ _isAnchor }) => _isAnchor);\n\n if (!globalOverlay) {\n toast._isAnchor = true;\n return this._composeGlobalPosition(positionStrategy);\n }\n\n // Get Previous overlay item.\n const overlayItemIndex = toasts.findIndex((t) => t === toast);\n const previousOverlay = toasts[overlayItemIndex - 1];\n toast._isAnchor = false;\n\n return this._composeFlexibleConnectedPosition(previousOverlay.overlayRef.overlayElement, positionStrategy);\n }\n\n /** @hidden */\n private _isBoundGlobalPosition(position: any): position is ToastGlobalConnectedPosition {\n return !!position.boundTo;\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../base-toast-positions';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nexport abstract class BaseToastRef<\n T = any,\n P = any,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** The instance of the component is making up the content of the Toast. */\n instance!: T;\n\n /** @hidden */\n _defaultPositionStrategy = true;\n\n /** @hidden\n * Used for flagging the toast as an anchor for all next appearing toasts.\n */\n _isAnchor = false;\n\n /**\n * @hidden\n * Subject for notifying the user that the Toast has been dismissed.\n */\n protected readonly _afterDismissed$ = new Subject<void>();\n\n /** @hidden */\n protected constructor(\n public containerInstance: C,\n public overlayRef: OverlayRef,\n public positionStrategy: BaseToastPosition\n ) {\n containerInstance.onExit$.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the Toast. */\n dismiss(): void {\n if (!this._afterDismissed$.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the Toast is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed$.asObservable();\n }\n\n /** Gets an observable that is notified when the Toast has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance.onEnter$.asObservable();\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected _finishDismiss(): void {\n this.overlayRef.dispose();\n\n this._afterDismissed$.next();\n this._afterDismissed$.complete();\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastRef } from '../base-toast-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\n\n/** Maximum number of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\nexport abstract class BaseToastDurationDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastRef<T, P, C> {\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the toast is\n * dismissed before the duration passes.\n */\n protected durationTimeoutId!: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n protected constructor(containerInstance: C, overlayRef: OverlayRef, positionStrategy: BaseToastPosition) {\n super(containerInstance, overlayRef, positionStrategy);\n }\n\n /** Dismisses the toast and clears the timeout. */\n override dismiss(): void {\n clearTimeout(this.durationTimeoutId);\n\n super.dismiss();\n }\n\n /** Dismisses the Toast component after some duration */\n dismissAfter(duration: number): void {\n this.durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Cancels current dismiss timeout */\n cancelDismiss(): void {\n clearTimeout(this.durationTimeoutId);\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastDurationDismissibleContainerComponent } from '../duration-dismissible/base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\n\nexport abstract class BaseToastActionDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any\n> extends BaseToastDurationDismissibleRef<T, P> {\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n protected readonly onAction$ = new Subject<string | null>();\n\n /** Whether the Toast was dismissed using the action-dismissible button. */\n protected dismissedByAction = false;\n\n /** @hidden */\n protected constructor(\n containerInstance: BaseToastDurationDismissibleContainerComponent<P>,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ) {\n super(containerInstance, overlayRef, positionStrategy);\n\n this.onAction().subscribe(() => this.dismiss());\n }\n\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason: string | null = null): void {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction(): Observable<string | null> {\n return this.onAction$;\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected override _finishDismiss(): void {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n\n super._finishDismiss();\n }\n}\n","import { BaseToastPosition, ToastBottomCenterPosition } from '../base-toast-positions';\n\n/**\n * Base Configuration class used when opening a Toast.\n */\nexport class BaseToastConfig<T = any> {\n /**\n * Data being injected into the child component.\n */\n data?: T;\n\n /**\n * Aria-label for the message toast component element.\n */\n ariaLabel?: string;\n\n /**\n * Toast position strategy.\n */\n positionStrategy?: BaseToastPosition = ToastBottomCenterPosition;\n\n /**\n * Toast minimum width.\n */\n minWidth?: number | string;\n\n /**\n * Toast maximum width.\n */\n maxWidth?: number | string;\n\n /**\n * Toast minimum height.\n */\n minHeight?: number | string;\n\n /**\n * Toast maximum height.\n */\n maxHeight?: number | string;\n\n /**\n * Toast width.\n */\n width?: number | string;\n\n /**\n * Toast height.\n */\n height?: number | string;\n\n /**\n * Toast ID.\n */\n id?: string;\n}\n\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig<T = any> extends BaseToastConfig<T> {\n /** Whether the toast should be animated. */\n animated? = true;\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, EmbeddedViewRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport { Nullable } from '../../models/nullable';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\nimport { BaseToastConfig } from './base-toast-config';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n extends BasePortalOutlet\n implements ToastContainerComponent<P>\n{\n /** Method, which is triggered when the Toast component is ready to be shown. Used to trigger animations. */\n abstract enter(): void;\n\n /** Method, which is triggered when the Toast component is ready to be removed. Used to trigger animations. */\n abstract exit(): void;\n\n /**\n * @hidden\n * The portal outlet inside this container into which the Toast content will be loaded.\n */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet!: CdkPortalOutlet;\n\n /** Min width of the toast component. */\n @coerceCssPixel\n minWidth?: string | number | null;\n\n /** Max width of the toast component. */\n @coerceCssPixel\n maxWidth?: string | number | null;\n\n /** Width of the toast component. */\n @coerceCssPixel\n width?: string | number | null;\n\n /** Min height of the toast component. */\n @coerceCssPixel\n minHeight?: string | number | null;\n\n /** Max height of the toast component. */\n @coerceCssPixel\n maxHeight?: string | number | null;\n\n /** Height of the toast component. */\n @coerceCssPixel\n height?: string | number | null;\n\n /** Subject for notifying that the Toast has finished exiting from view. */\n readonly onExit$: Subject<void> = new Subject();\n\n /** Subject for notifying that the Toast has finished entering the view. */\n readonly onEnter$: Subject<void> = new Subject();\n\n /** Overlay reference */\n overlayRef!: OverlayRef;\n\n /** Aria label. */\n ariaLabel: Nullable<string>;\n\n /** ID of the Toast. */\n id: Nullable<string>;\n\n /** @hidden */\n protected constructor(public config: P) {\n super();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.config.id || 'fd-message-toast-' + toastUniqueId++;\n }\n\n /**\n * Attaches component to the portal.\n */\n attachComponentPortal<C>(portal: ComponentPortal<C>): ComponentRef<C> {\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attaches Template to the portal.\n * @param portal\n */\n attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n/**\n * Custom overlay container for CDK Overlay.\n */\n@Injectable()\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n override getContainerElement(): HTMLElement {\n const containerElement = super.getContainerElement();\n\n containerElement.classList.add('fn-toast-overlay-container');\n\n return containerElement;\n }\n}\n","import { BaseToastConfig } from '../base-toast-config';\n\n/**\n * Base configuration class used when opening a Toast which automatically destroys after some time.\n */\nexport class BaseToastDurationDismissibleConfig<T = any> extends BaseToastConfig<T> {\n /**\n * The length of time in milliseconds to wait before automatically dismissing the Message Toast.\n */\n duration? = 3000;\n /**\n * Whether the message toast should stay visible if the cursor is over it.\n * Default is `true`\n */\n mousePersist?: boolean = true;\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Directive, HostBinding, HostListener, inject, NgZone, OnDestroy, signal } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseAnimatedToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive()\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseAnimatedToastConfig>\n extends BaseToastContainerComponent<P>\n implements OnDestroy\n{\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n @HostBinding('@state')\n private get _animationState(): string {\n return this._animationStateSignal();\n }\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n @HostBinding('@.disabled')\n private _animationsDisabled = false;\n\n /** @hidden */\n protected _ngZone = inject(NgZone);\n\n /** @hidden */\n private _animationStateSignal = signal('void');\n\n /** @hidden */\n constructor(config: P) {\n super(config);\n this._animationsDisabled = !config.animated;\n }\n\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n @HostListener('@state.done', ['$event'])\n private _onAnimationEnd(event: AnimationEvent): void {\n const { fromState, toState } = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of Message Toast entrance into view. */\n enter(): void {\n this._animationStateSignal.set('visible');\n }\n\n /** Begin animation of Message Toast removal. */\n exit(): void {\n this._animationStateSignal.set('hidden');\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._completeExit();\n }\n\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit(): void {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\n@Directive()\nexport abstract class BaseToastDurationDismissibleContainerComponent<P extends BaseToastConfig>\n extends BaseToastAnimatedContainerComponent<P>\n implements OnDestroy, ToastDurationDismissibleContainerComponent<P>\n{\n /** Subject for notifying that component is out of hover */\n readonly mouseleave$: Subject<void> = new Subject();\n\n /** Subject for notifying that component is hovered */\n readonly mouseover$: Subject<void> = new Subject();\n\n /** Emits mouseleave$ subject when component is out of hover. */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.mouseleave$.next();\n }\n\n /** Emits mouseover$ subject when component is hovered. */\n @HostListener('mouseover')\n onMouseOver(): void {\n this.mouseover$.next();\n }\n\n /** @Hidden */\n override ngOnDestroy(): void {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n\n super.ngOnDestroy();\n }\n}\n","import { EmbeddedViewRef } from '@angular/core';\nimport { BaseToastService } from '../../base-toast.service';\nimport { BaseToastDurationDismissibleConfig } from './base-toast-duration-dismissible-config';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from './base-toast-duration-dismissible-ref';\n\nexport abstract class BaseDismissibleToastService<\n P extends BaseToastDurationDismissibleConfig,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastService<P, C> {\n /**\n * Animates the old Toast out and the new one in.\n */\n protected override animateToast<T>(toastRef: BaseToastDurationDismissibleRef<T | EmbeddedViewRef<any>, P>): void {\n super.animateToast<T>(toastRef);\n\n const config = toastRef.containerInstance.config;\n\n // If dismiss timeout is provided, set up dismiss based on after the Notification is opened.\n if (config.duration && config.duration > 0) {\n toastRef.afterOpened().subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n\n if (config.mousePersist) {\n toastRef.containerInstance.mouseover$.subscribe(() => {\n toastRef.cancelDismiss();\n });\n\n toastRef.containerInstance.mouseleave$.subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n });\n }\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","switchMap","filter","i1.FdkClickedProvider","i1.AttributeObserver","i1.DisabledObserver","i1.RtlService","i1.FocusKeyManagerListDirective","distinctUntilChanged","startWith","i1.TabbableElementService","debounceTime","i1.ReadonlyObserver","equal","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","i1.SelectionService","i1","i1.DndKeyboardGroupDirective","tap","take"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/utils/functions/element-size.ts","../../../../libs/cdk/utils/functions/get-document-font-size.ts","../../../../libs/cdk/utils/functions/intersection-observable.ts","../../../../libs/cdk/utils/functions/is-compact-density.ts","../../../../libs/cdk/utils/functions/is-odd.ts","../../../../libs/cdk/utils/functions/key-util.ts","../../../../libs/cdk/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/utils/functions/parser-file-size.ts","../../../../libs/cdk/utils/functions/random-color-accent.ts","../../../../libs/cdk/utils/functions/resize-observable.ts","../../../../libs/cdk/utils/functions/scroll.ts","../../../../libs/cdk/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/utils/helpers/destroy-observable.ts","../../../../libs/cdk/utils/helpers/dfs.ts","../../../../libs/cdk/utils/helpers/get-native-element.ts","../../../../libs/cdk/utils/typecheck.ts","../../../../libs/cdk/utils/helpers/range-selector.ts","../../../../libs/cdk/utils/helpers/warn-once.ts","../../../../libs/cdk/utils/services/content-density.service.ts","../../../../libs/cdk/utils/services/destroyed.service.ts","../../../../libs/cdk/utils/services/focus-trap.service.ts","../../../../libs/cdk/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/utils/services/local-storage.service.ts","../../../../libs/cdk/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/utils/services/resize-observer.service.ts","../../../../libs/cdk/utils/services/rtl.service.ts","../../../../libs/cdk/utils/services/tabbable-element.service.ts","../../../../libs/cdk/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/utils/directives/clicked/provide-fdk-clicked.ts","../../../../libs/cdk/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/utils/directives/clicked/element-click.observable.ts","../../../../libs/cdk/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/utils/directives/focusable-list/indirect-focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/indirect-focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/utils/directives/resize-observer/resize-observer.directive.ts","../../../../libs/cdk/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.module.ts","../../../../libs/cdk/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/utils/directives/template/template.directive.ts","../../../../libs/cdk/utils/directives/template/template.module.ts","../../../../libs/cdk/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/utils/utils.module.ts","../../../../libs/cdk/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/utils/coercion/array.ts","../../../../libs/cdk/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/utils/consts/error-messages.ts","../../../../libs/cdk/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/utils/decorators/setter-alternator.ts","../../../../libs/cdk/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/utils/deprecated-selector.class.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/utils/list-item/list-item-utils.ts","../../../../libs/cdk/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/utils/pipes/safe.pipe.ts","../../../../libs/cdk/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/utils/pipes/pipe.module.ts","../../../../libs/cdk/utils/toast/base-toast-animations.ts","../../../../libs/cdk/utils/toast/base-toast-positions.ts","../../../../libs/cdk/utils/toast/base-toast.service.ts","../../../../libs/cdk/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/utils/toast/classes/base-toast-overlay-container.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { INJECTOR, Injector, Provider } from '@angular/core';\n\n/**\n * Creates provider for ConsumerClass\n */\nexport function consumerProviderFactory<T = any>(\n ConsumerClass: new (injector: Injector, additionalConfig: Record<any, any> | undefined) => T,\n providedConfiguration?: Record<any, any>\n): Provider {\n return {\n provide: ConsumerClass,\n useFactory: (injector: Injector) => new ConsumerClass(injector, providedConfiguration),\n deps: [INJECTOR]\n };\n}\n","import { ElementRef } from '@angular/core';\n\nexport const pxToNum = (pixels: string): number => Number(pixels.replace('px', '')) || 0;\n\nexport const toNativeElement = (element: HTMLElement | ElementRef): HTMLElement =>\n element instanceof ElementRef ? element.nativeElement : element;\n\n/** Return elements capacity (width subtract by element padding)\n * @param element - HTMLelement or element reference\n * */\nexport function getElementCapacity(element: HTMLElement | ElementRef): number {\n const _element = toNativeElement(element);\n const computedStyle = window.getComputedStyle(_element);\n\n return pxToNum(computedStyle.width) - pxToNum(computedStyle.paddingLeft) - pxToNum(computedStyle.paddingRight);\n}\n\n/** Return elements width\n * @param element - HTMLelement or element reference\n * @param withMargin - weather to add element margins to width\n * */\nexport function getElementWidth(element: HTMLElement | ElementRef, withMargin?: boolean): number {\n const _element = toNativeElement(element);\n const computedStyle = getComputedStyle(_element);\n\n return withMargin\n ? pxToNum(computedStyle.width) + pxToNum(computedStyle.marginLeft) + pxToNum(computedStyle.marginRight)\n : pxToNum(computedStyle.width);\n}\n","/** Get document font size in pixels. */\nexport function getDocumentFontSize(): number {\n const DEFAULT_SIZE = 16;\n const clientFontSize = document?.documentElement\n ? parseFloat(getComputedStyle(document.documentElement).fontSize)\n : DEFAULT_SIZE;\n return isNaN(clientFontSize) ? DEFAULT_SIZE : clientFontSize;\n}\n","import { NEVER, Observable } from 'rxjs';\n\n/**\n * RxJS wrapper for IntersectionObserver class.\n * @param target HTML element to spy on.\n * @param options @see {IntersectionObserverInit}\n * @returns {Observable} with observer entries.\n */\nexport function intersectionObservable(\n target: Element,\n options?: IntersectionObserverInit\n): Observable<IntersectionObserverEntry[]> {\n if ('IntersectionObserver' in window) {\n return new Observable((subscriber) => {\n const io = new IntersectionObserver((entries) => {\n subscriber.next(entries);\n }, options);\n\n io.observe(target);\n\n return function unsubscribe(): void {\n io.disconnect();\n };\n });\n } else {\n // If browser doesn't support IntersectionObserver API never emit a value\n // since we're not supporting IE11 and any other browser should have it.\n return NEVER;\n }\n}\n","import { ContentDensity } from '../interfaces/content-density';\n\n/** Determines whether provided value is valid content density */\nexport function isValidContentDensity(size: any): size is ContentDensity {\n return size === 'cozy' || size === 'compact' || size === 'condensed';\n}\n\n/**\n * Determines if \"compact\" styles should be applied based on provided content density\n */\nexport function isCompactDensity(size: ContentDensity): boolean {\n return isValidContentDensity(size) && size !== 'cozy';\n}\n","/**\n * Function checks whether the passed number is odd.\n * @param number number to check.\n * @returns Boolean whether the number is odd.\n */\nexport function isOdd(number: number): boolean {\n return number % 2 === 1;\n}\n","import {\n A,\n ALT,\n BACKSPACE,\n C,\n CONTROL,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n F2,\n F7,\n HOME,\n LEFT_ARROW,\n MAC_ENTER,\n META,\n NUMPAD_EIGHT,\n NUMPAD_FIVE,\n NUMPAD_FOUR,\n NUMPAD_MINUS,\n NUMPAD_NINE,\n NUMPAD_ONE,\n NUMPAD_SEVEN,\n NUMPAD_SIX,\n NUMPAD_THREE,\n NUMPAD_TWO,\n NUMPAD_ZERO,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SHIFT,\n SPACE,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { isDevMode } from '@angular/core';\n\n/** Map of keyCodes and their corresponding \"key\" values */\nconst keyMap: Map<number, string[]> = new Map([\n [RIGHT_ARROW, ['ArrowRight', 'Right']],\n [DOWN_ARROW, ['ArrowDown', 'Down']],\n [LEFT_ARROW, ['ArrowLeft', 'Left']],\n [UP_ARROW, ['ArrowUp', 'Up']],\n [SPACE, ['Space', 'Spacebar', ' ']],\n [ESCAPE, ['Escape', 'Esc']],\n [DELETE, ['Delete', 'Del']],\n [ENTER, ['Enter']],\n [MAC_ENTER, ['Enter']],\n [TAB, ['Tab']],\n [HOME, ['Home']],\n [END, ['End']],\n [ALT, ['Alt']],\n [CONTROL, ['Ctrl', 'Control', 'Meta']],\n [META, ['Meta']],\n [SHIFT, ['Shift']],\n [BACKSPACE, ['Backspace']],\n [A, ['KeyA']],\n [C, ['KeyC']],\n [V, ['KeyV']],\n [X, ['KeyX']],\n [PAGE_UP, ['PageUp']],\n [PAGE_DOWN, ['PageDown']],\n [DASH, ['-']],\n [NUMPAD_MINUS, ['-']],\n [NUMPAD_ZERO, ['NumPad0']],\n [NUMPAD_ONE, ['NumPad1']],\n [NUMPAD_TWO, ['NumPad2']],\n [NUMPAD_THREE, ['NumPad3']],\n [NUMPAD_FOUR, ['NumPad4']],\n [NUMPAD_FIVE, ['NumPad5']],\n [NUMPAD_SIX, ['NumPad6']],\n [NUMPAD_SEVEN, ['NumPad7']],\n [NUMPAD_EIGHT, ['NumPad8']],\n [NUMPAD_NINE, ['NumPad9']],\n [F2, ['F2']],\n [F7, ['F7']]\n]);\n\nexport class KeyUtil {\n /**\n * Function used to unify key identification across different browsers using KeyCodes\n *\n * @param event - KeyboardEvent\n * @param keyCode - event.key name matching W3C specification / (ASSCI char. codes)\n * */\n static isKeyCode(event: KeyboardEvent, keyCode: number | number[]): boolean {\n if (Array.isArray(keyCode)) {\n return keyCode.some((key) => this.isKeyCode(event, key));\n }\n\n if (event && keyMap.get(keyCode)) {\n return keyMap.get(keyCode)?.some((alias) => alias === event.key) || keyCode === event.keyCode;\n }\n\n if (isDevMode()) {\n throw new Error(\n `Invalid function arguments. Check if \"event\" is a KeyboardEvent or \"key\" is defined in keyMap`\n );\n }\n\n return false;\n }\n\n /**\n * Function used to unify key identification across different browsers\n *\n * @param event - KeyboardEvent\n * @param keyType - Type of key\n * */\n static isKeyType(event: KeyboardEvent, keyType: 'alphabetical' | 'numeric' | 'control' | 'ime'): boolean {\n if (event && keyType) {\n switch (keyType) {\n case 'numeric':\n return event.code\n ? event.code.toLowerCase().includes('digit')\n : (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);\n case 'alphabetical':\n return event.code\n ? event.code.toLowerCase().includes('key')\n : event.keyCode >= 65 && event.keyCode <= 90;\n // some service commands as alt, ctr, insert, print, f4 etc. All except letters, numbers and symbols\n case 'control':\n return event.keyCode < 48 || (event.keyCode >= 112 && event.keyCode <= 123);\n case 'ime':\n return event.key?.toLowerCase() === 'process' || event.keyCode === 229;\n }\n }\n\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n\n return false;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ModuleDeprecation } from '../interfaces/module-deprecation.interface';\n\nexport const ModuleDeprecations = new InjectionToken<ModuleDeprecation>('ModuleDeprecations');\n","import { FactorySansProvider, Provider } from '@angular/core';\nimport { ModuleDeprecations } from '../tokens/module-deprecations.token';\n\n/** Module deprecations provider */\nexport function moduleDeprecationsProvider(classRef: any): Provider {\n return {\n provide: ModuleDeprecations,\n useClass: classRef,\n multi: true\n };\n}\n\n/** Module deprecations provider factory */\nexport function moduleDeprecationsFactory(factory: FactorySansProvider): Provider {\n return {\n provide: ModuleDeprecations,\n ...factory,\n multi: true\n };\n}\n","const fileSizeMap = new Map([\n ['KB', 1024],\n ['MB', 1048576],\n ['GB', 1073741824],\n ['TB', 1099511627776]\n]);\n\n/** Parse file size to bytes */\nexport function parserFileSize(fileSize: string): number {\n if (fileSize === '') {\n return 0;\n }\n\n const sizes = fileSize.match(/[\\d.]+|\\D+/g);\n if (sizes && sizes.length > 1) {\n const size = Number(sizes[0].replace(/ +/g, ''));\n const unit = sizes[1].replace(/ +/g, '').toUpperCase();\n const unitSize = fileSizeMap.get(unit);\n\n if (isNaN(size)) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n if (unit === 'B' || unit === 'BYTE' || unit === 'BYTES') {\n return size;\n }\n if (!unitSize) {\n throw new Error('FileSizeError - Invalid File size please check.');\n } else {\n return unitSize * size;\n }\n } else {\n if (isNaN(Number(sizes))) {\n throw new Error('FileSizeError - Invalid File size please check.');\n }\n\n return Number(sizes);\n }\n}\n","import { ColorAccent } from '../datatypes';\n\n/** Get random number from 1 to 10. */\nexport function getRandomColorAccent(): ColorAccent {\n return (Math.floor(Math.random() * 10) + 1) as ColorAccent;\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * RxJS wrapper for ResizeObserver class.\n * @param target HTML element to spy on.\n * @param options @see {ResizeObserverOptions}\n * @returns {Observable} with observer entries.\n */\nexport function resizeObservable(target: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry[]> {\n if ('ResizeObserver' in window) {\n return new Observable((subscriber) => {\n let animationFrame: number;\n const ro = new ResizeObserver((entries) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entries);\n });\n });\n\n ro.observe(target, options);\n\n return function unsubscribe(): void {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n ro.unobserve(target);\n ro.disconnect();\n };\n });\n } else {\n // If current browser does not support resizeObserver, rely on window resize and return empty array of items.\n return fromEvent(window, 'resize').pipe(map(() => []));\n }\n}\n","/**\n * Function used to scroll specified element by some distance\n *\n * @param containerElement - Container element scrolled\n * @param distanceToScroll - Distance of scroll in px\n * */\nexport function scrollTop(containerElement: Element, distanceToScroll: number): void {\n // Check if scrollTo method is supported by current browser\n if (containerElement.scrollTo && containerElement.scrollTo instanceof Function) {\n containerElement.scrollTo({\n top: distanceToScroll,\n behavior: 'smooth'\n });\n } else {\n containerElement.scrollTop = distanceToScroll;\n }\n}\n","/** Generate a UUID v4 */\nexport function uuidv4(): string {\n const modifier = 16;\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * modifier) | 0,\n // eslint-disable-next-line no-bitwise\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(modifier);\n });\n}\n","import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, map, switchMap } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\n\nexport interface AutoCompleteEvent {\n term: string;\n forceClose: boolean;\n}\n\n@Directive({\n selector: '[fdkAutoComplete]',\n standalone: true\n})\nexport class AutoCompleteDirective {\n /** Values that will fill missing text in the input. */\n @Input()\n options: any[];\n\n /**\n * Input text, that is taken from ngModel of formControl,\n * there has to be difference between native input value and model value\n */\n @Input()\n inputText: string;\n\n /** Whether the auto complete directive should be enabled */\n @Input()\n enable = true;\n\n /** Display function. Accepts an object of the same type as the\n * items passed to dropdownValues as argument, and outputs a string.\n * An arrow function can be used to access the *this* keyword in the calling component.\n * See search input examples for details. */\n @Input()\n displayFn = this._defaultDisplay;\n\n /** Event thrown, when the auto ahead text is accepted */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n /** @hidden */\n private readonly _completeKeys: number[] = [ENTER];\n\n /** @hidden */\n private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n /** @hidden */\n private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n /** @hidden */\n private oldValue: string;\n\n /** @hidden */\n private lastKeyUpEvent: KeyboardEvent;\n\n /** @hidden */\n private _isComposing = false;\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n // eslint-disable-next-line @typescript-eslint/member-ordering\n constructor() {\n /**\n * Fixes #10710\n * With chinese characters inputText property update was triggered after the keyup event trigger.\n * By ensuring that we set all properties we can proceed with stable data.\n */\n this._zone.runOutsideAngular(() => {\n const keyupEvent = fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown');\n const compositionStartEvent = fromEvent<CompositionEvent>(\n this._elementRef.nativeElement,\n 'compositionstart'\n );\n const compositionEndEvent = fromEvent<CompositionEvent>(this._elementRef.nativeElement, 'compositionend');\n\n keyupEvent\n .pipe(\n switchMap((evt) =>\n this._zone.onStable.pipe(\n first(),\n map(() => evt)\n )\n ),\n takeUntilDestroyed()\n )\n .subscribe((evt) => this._handleKeyboardEvent(evt));\n\n compositionStartEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = true;\n });\n\n compositionEndEvent.pipe(takeUntilDestroyed()).subscribe(() => {\n this._isComposing = false;\n this.inputText = this._elementRef.nativeElement.value;\n });\n });\n }\n\n /** Matcher function for testing the str for a search term */\n @Input()\n matcher = (str: string, searchTerm: string): boolean => str.startsWith(searchTerm);\n\n /** @hidden */\n _handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.enable && !this._isComposing) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\n } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n this._sendCompleteEvent(true);\n this._moveIndicatorToLastCharacter();\n } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n this._sendCompleteEvent(false);\n } else if (!this._isControlKey(event) && this.inputText) {\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this.oldValue = this.inputText;\n\n const item = this.options.find((option) =>\n this.matcher(this.displayFn(option).toLocaleLowerCase(), this.inputText.toLocaleLowerCase())\n );\n\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\n this._elementRef.nativeElement.setSelectionRange(selectionStartIndex, displayedValue.length);\n }\n\n /** @hidden */\n private _isControlKey(event: KeyboardEvent): boolean {\n return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n }\n\n /** @hidden */\n private _defaultDisplay(value: any): string {\n return value;\n }\n\n /** @hidden */\n private _triggerTypeAhead(): boolean {\n return !(\n this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue\n );\n }\n\n /** @hidden */\n private _sendCompleteEvent(forceClose: boolean): void {\n this.onComplete.emit({\n term: this._elementRef.nativeElement.value,\n forceClose\n });\n }\n\n /** @hidden */\n private _moveIndicatorToLastCharacter(): void {\n const inputTextLength = this.inputText?.length ?? 0;\n this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n@NgModule({\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n})\nexport class AutoCompleteModule {}\n","import { DestroyRef, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Creates an observable that emits when the component is destroyed.\n * @param destroyRef\n */\nexport const destroyObservable = (destroyRef = inject(DestroyRef)): Observable<void> => {\n const destroy$ = new Subject<void>();\n destroyRef.onDestroy(() => destroy$.next());\n return destroy$.asObservable();\n};\n","import { get } from 'lodash-es';\n\n/** @hidden */\ninterface DfsOptions<T> {\n children: string | ((item: T) => Array<T>);\n shouldVisit: (item: T) => boolean;\n postOrder: boolean;\n}\n\n/** @hidden */\nconst _defaultDfsOptions: DfsOptions<any> = {\n children: 'children',\n shouldVisit: () => true,\n postOrder: true\n};\n\n/** @hidden */\nfunction postOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n children.forEach((child: T) => iterator(child, callback, options));\n callback(item);\n }\n };\n return iterator;\n}\n\n/** @hidden */\nfunction preOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n if (options.shouldVisit(item)) {\n const children =\n typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n callback(item);\n children.forEach((child: T) => iterator(child, callback, options));\n }\n };\n return iterator;\n}\n\n/**\n * Depth-first search algorithm, which traverses a tree/graph/tree-like structure.\n * callback is called for each item in the collection. The order of the callback calls\n * depends on the options. By default, the algorithm is post-order, which means that\n * the callback is called for each item after its children have been visited.\n *\n * @param collection\n * @param callback\n * @param options\n */\nexport function dfs<T>(collection: Array<T>, callback: (item: T) => void, options: Partial<DfsOptions<T>> = {}): void {\n const mergedOptions = { ..._defaultDfsOptions, ...options } as DfsOptions<T>;\n const iterator = mergedOptions.postOrder ? postOrderDfs<T>() : preOrderDfs<T>();\n for (const item of collection) {\n iterator(item, callback, mergedOptions);\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Retrieves native element from ElementRef.\n */\nexport function getNativeElement<T extends Element = HTMLElement>(\n element: { elementRef: ElementRef<T> } | T | ElementRef<T>\n): T {\n let coercible = element;\n if (hasElementRef<T>(element)) {\n coercible = element.elementRef;\n }\n return coerceElement(coercible as T | ElementRef<T>);\n}\n\n/**\n * Checks whether object has element reference in it.\n */\nexport function hasElementRef<T extends Element = HTMLElement>(\n something: any\n): something is { elementRef: ElementRef<T> } {\n return something && something['elementRef'] instanceof ElementRef;\n}\n","import { Observable } from 'rxjs';\n\n/**\n * Helper function check whether passed data is a JS object (including function).\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isJsObject(obj: any): obj is object | Function {\n return obj !== null && (typeof obj === 'function' || typeof obj === 'object');\n}\n\n/**\n * Helper function checks whether passed value is not empty.\n */\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\n/**\n * Helper function check whether passed value is empty.\n */\nexport function isBlank(obj: any): obj is undefined | null {\n return obj === undefined || obj === null;\n}\n\n/**\n * Helper function checks whether passed value is a boolean.\n */\nexport function isBoolean(obj: any): obj is boolean {\n return typeof obj === 'boolean';\n}\n\n/**\n * Helper function checks whether passed value is a valid number.\n */\nexport function isNumber(obj: any): obj is number {\n return typeof obj === 'number';\n}\n\n/**\n * Helper function checks whether passed value is a string.\n */\nexport function isString(obj: any): obj is string {\n return typeof obj === 'string';\n}\n\n/**\n * Helper function checks whether passed value is a function\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isType(obj: any): obj is Function {\n return isFunction(obj);\n}\n\n/**\n * Helper function checks whether passed value is a record of `T` values.\n */\nexport function isStringMap<T = any>(obj: any): obj is Record<string, T> {\n return typeof obj === 'object' && obj !== null;\n}\n\n/**\n * Helper function checks whether passed value is an `object`.\n */\nexport function isObject<T>(item: T): boolean {\n return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/**\n * Helper function checks whether passed value is a promise.\n */\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n // allow any Promise/A+ compliant thenable.\n // It's up to the caller to ensure that obj.then conforms to the spec\n return !!obj && isFunction(obj.then);\n}\n\n/**\n * Helper function checks whether passed value is an Observable/Subscribable.\n */\nexport function isSubscribable<T = any>(obj: any | Observable<T>): obj is Observable<T> {\n return !!obj && isFunction(obj.subscribe);\n}\n","import { Nullable } from '../models/nullable';\nimport { isNumber } from '../typecheck';\n\n/**\n * Utility type, that allows to track and select ranges of elements while using multi-selection.\n *\n * @usage\n * Imagine we have a simple list of checkboxes:\n * ```html\n * <input\n * #checkboxInput\n * *ngFor=\"let o of options; let idx = index\"\n * type=\"checkbox\"\n * [checked]=\"selectionModel.checked(o)\"\n * (click)=\"toggle(idx, $event)\"\n * >\n * ```\n * With the given layout the logic should be as follows:\n * ```typescript\n * export class YourComponent {\n * options = ['a', 'b', 'c'];\n * readonly selectionModel = new SelectionModel(true);\n *\n * private readonly _rangeSelector = new RangeSelector();\n *\n *\n * toggle(idx: number, event: PointerEvent): void {\n * // getting the toggled value of the checkbox\n * const toggledSelection = event.target.value;\n *\n * // registering the selection of current checkbox\n * this._rangeSelector.onRangeElementToggled(idx, event);\n *\n * // Apply value to each element in range.\n * // If checkbox was toggled without shift pressed or without previously selected one,\n * // this method will select only it.\n * this._rangeSelector.applyValueToEachInRange(idx => {\n * if (toggledSelection) {\n * this.selectionModel.select(options[idx]);\n * } else {\n * this.selectionModel.deselect(options[idx]);\n * }\n * });\n * }\n * }\n * ```\n */\nexport class RangeSelector {\n /** @hidden */\n private _previousSelectedIndex: number | null = null;\n /** @hidden */\n private _state: RangeSelectionState | null;\n\n /**\n * Last registered selection state (either multiple or single).\n * Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.\n */\n get lastRangeSelectionState(): RangeSelectionState | null {\n return this._state ? { ...this._state } : null;\n }\n\n /**\n * The method that should be used to register each checkbox toggle.\n * Accepts two arguments: `index` and `event`. If none provided, will reset existing state.\n * Otherwise will register current index as last checked.\n *\n * If toggling was done with \"shift\" pressed and there's a previously registered index, will register a range selection.\n * At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.\n *\n * After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.\n *\n * See usage example on this class itself.\n */\n onRangeElementToggled(index?: number, event?: KeyboardEvent | MouseEvent | TouchEvent): RangeSelectionState | null {\n if (\n this._isNonNegativeInteger(this._previousSelectedIndex) &&\n this._isNonNegativeInteger(index) &&\n event?.shiftKey\n ) {\n this._state = {\n isRangeSelection: true,\n from: Math.min(this._previousSelectedIndex, index),\n to: Math.max(this._previousSelectedIndex, index)\n };\n this._previousSelectedIndex = index;\n } else if (this._isNonNegativeInteger(index)) {\n this._state = { isRangeSelection: false, from: index, to: index };\n this._previousSelectedIndex = index;\n } else {\n this.reset();\n }\n\n return this.lastRangeSelectionState;\n }\n\n /**\n * Allows to apply selection to each item in selection range.\n * Accepts a function to apply selection to each item by registered index.\n *\n * See usage example on this class itself.\n */\n applyValueToEachInRange(selectionMethod: (index: number) => void): void {\n const state = this.lastRangeSelectionState;\n\n if (!state) {\n return;\n }\n\n if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state?.to)) {\n for (let index = state.from; index <= state.to; index++) {\n selectionMethod(index);\n }\n }\n }\n\n /** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */\n reset(): void {\n this._state = null;\n this._previousSelectedIndex = null;\n }\n\n /** @hidden */\n private _isNonNegativeInteger(num: Nullable<number>): num is number {\n return isNumber(num) && num >= 0;\n }\n}\n\nexport interface RangeSelectionState {\n isRangeSelection: boolean;\n from: number;\n to: number;\n}\n","const messages = new Set<string>();\n\n/** @hidden */\nexport function warnOnce(message: string): void {\n if (!messages.has(message)) {\n console.warn(message);\n messages.add(message);\n }\n}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { warnOnce } from '../helpers';\nimport { ContentDensity } from '../interfaces/content-density';\n\nexport const DEFAULT_CONTENT_DENSITY: ContentDensity = 'cozy';\n\n/**\n * Service taking care of ContentDensity\n */\n@Injectable()\nexport class ContentDensityService {\n /** Content Density BehaviourSubject */\n readonly contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);\n\n /** @hidden */\n constructor() {\n if (isDevMode()) {\n warnOnce(\n `[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.\n Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`\n );\n }\n }\n\n /** @hidden */\n get _contentDensityListener(): Observable<ContentDensity> {\n return this.contentDensity.pipe(distinctUntilChanged(), startWith(this.contentDensity.getValue()));\n }\n\n /** @hidden */\n get _isCompactDensity(): Observable<boolean> {\n return this._contentDensityListener.pipe(map((density) => isCompactDensity(density)));\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\n\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\n@Injectable()\nexport class DestroyedService extends ReplaySubject<void> implements OnDestroy {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(\n `DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { createFocusTrap, FocusTrap, Options } from 'focus-trap';\nimport { uuidv4 } from '../functions/uuidv4-generator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusTrapService {\n /** @hidden */\n private _focusTrapInstances: Map<any, FocusTrap> = new Map();\n\n /**\n * Creates focus trap instance for defined element\n * @param element Container for which to create focus trap\n * @param userOptions Focus-trap specific configuration\n * @returns {string} Unique ID of focus trap instance\n */\n createFocusTrap(\n element: string | HTMLElement | SVGElement | (string | HTMLElement | SVGElement)[],\n userOptions?: Options\n ): string {\n const uid = uuidv4();\n\n const trap = createFocusTrap(element, userOptions);\n\n this._focusTrapInstances.set(uid, trap);\n\n this.activateFocusTrap(uid);\n\n return uid;\n }\n\n /**\n * Activates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n activateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.activate();\n }\n\n /**\n * Deactivates focus trap for defined ID\n * @param id Unique ID of focus trap instance\n */\n deactivateFocusTrap(id: string): void {\n if (!this._focusTrapExists(id)) {\n return;\n }\n\n const trap = this.getFocusTrapInstance(id);\n\n trap?.deactivate();\n\n this._focusTrapInstances.delete(id);\n }\n\n /**\n * Pauses current focus trap.\n */\n pauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.pause();\n }\n\n /**\n * Unpauses current focus trap.\n */\n unpauseCurrentFocusTrap(): void {\n if (this._focusTrapInstances.size === 0) {\n return;\n }\n\n const trapItem = this._getLastTrapedItem();\n\n trapItem?.unpause();\n }\n\n /**\n * Get focus trap instance by ID.\n * @param id ID of the instance.\n * @returns Focus trap instance if exists.\n */\n getFocusTrapInstance(id: string): FocusTrap | undefined {\n return this._focusTrapInstances.get(id);\n }\n\n /** @hidden */\n private _getLastTrapedItem(): FocusTrap | undefined {\n const lastItem = Array.from(this._focusTrapInstances).pop();\n\n return lastItem ? lastItem[1] : undefined;\n }\n\n /** @hidden */\n private _focusTrapExists(id: string): boolean {\n return this._focusTrapInstances.has(id);\n }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { DestroyRef, Injectable, OnDestroy, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, merge } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable()\nexport class KeyboardSupportService<T> implements OnDestroy {\n /** Subject that is thrown, when focus escapes the list */\n focusEscapeList = new Subject<FocusEscapeDirection>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */\n private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _keyManager: FocusKeyManager<T>;\n\n /** @hidden */\n get keyManager(): FocusKeyManager<T> {\n return this._keyManager;\n }\n\n /** @hidden\n * allow tab key navigation. default is true.\n */\n private _tabKeyNavigation = true;\n\n /** @hidden */\n setKeyboardService(\n queryList: QueryList<KeyboardSupportItemInterface & T>,\n wrap?: boolean,\n tabKeyNavigation = true\n ): void {\n this._keyManager?.destroy();\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(startWith(0), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshEscapeLogic(queryList));\n }\n\n /** @hidden */\n onKeyDown(event: KeyboardEvent): void {\n this._keyManager.onKeydown(event);\n if (KeyUtil.isKeyCode(event, TAB)) {\n if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {\n event.preventDefault();\n hasModifierKey(event, 'shiftKey')\n ? this.keyManager.setPreviousItemActive()\n : this.keyManager.setNextItemActive();\n }\n }\n }\n\n /** Destroys KeyboardSupportService dependencies */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** @hidden */\n private _refreshEscapeLogic(queryList: QueryList<KeyboardSupportItemInterface & T>): void {\n const createEscapeListener = (\n listItem: KeyboardSupportItemInterface & T,\n onKeyCode: number,\n escapeDirection: FocusEscapeDirection\n ): void => {\n listItem.keyDown\n .pipe(\n takeUntil(unsubscribe$),\n filter((event) => KeyUtil.isKeyCode(event, onKeyCode)),\n tap((event) => event.preventDefault())\n )\n .subscribe(() => this.focusEscapeList.next(escapeDirection));\n };\n\n /** Finish all of the streams, form before */\n this._onRefresh$.next();\n\n const unsubscribe$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n\n if (queryList.length) {\n createEscapeListener(queryList.last, DOWN_ARROW, 'down');\n createEscapeListener(queryList.first, UP_ARROW, 'up');\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nclass MockStorage {\n readonly length: number;\n\n // eslint-disable-next-line\n key(index: number): any {}\n\n clear(): void {}\n\n // eslint-disable-next-line\n getItem(key: string): any {}\n\n // eslint-disable-next-line\n removeItem(key: string): void {}\n\n // eslint-disable-next-line\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LocalStorageService {\n /** @hidden */\n private _storage: Storage;\n\n /** @hidden */\n constructor() {\n typeof localStorage !== 'undefined' ? (this._storage = localStorage) : (this._storage = new MockStorage());\n }\n\n /** Get item from local storage. */\n get(key: string): any {\n const value = this._storage.getItem(key);\n if (value) {\n return JSON.parse(value);\n }\n return null;\n }\n\n /** Set item in local storage. */\n set(key: string, value: any): void {\n this._storage.setItem(key, JSON.stringify(value));\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AttributeObserver implements OnDestroy {\n /** @Hidden */\n private readonly _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n /** @hidden */\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** @Hidden */\n observe(elementOrRef: Element | ElementRef<Element> | HasElementRef<Element>): Observable<MutationRecord[]> {\n const element = getNativeElement(elementOrRef);\n return new Observable((observer: Observer<MutationRecord[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._unobserveElement(getNativeElement(element));\n }\n\n /** @hidden */\n private _observeElement(element: Element): Subject<MutationRecord[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MutationRecord[]>();\n const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n attributes: true\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n /** @Hidden */\n private _unobserveElement(element: Element): void {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element)!.count--;\n if (!this._observedElements.get(element)!.count) {\n this._cleanupObserver(element);\n }\n }\n }\n\n /** @hidden */\n private _cleanupObserver(element: Element): void {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\ninterface ObservedElement {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n /** Factory to create ResizeObserver if it's present in browser. */\n create(callback: ResizeObserverCallback): ResizeObserver | null {\n return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n /** @hidden */\n private _observedElements = new Map<Element, ObservedElement>();\n\n /** @hidden */\n constructor(private _resizeObserverFactory: ResizeObserverFactory) {}\n\n /** @hidden */\n ngOnDestroy(): void {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n /** Observe the given element and emit whenever its size changes. */\n observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n const stream = this._observeElement(element);\n const subscription = stream?.subscribe(observer);\n\n return () => {\n subscription?.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n private _observeElement(element: Element): Subject<ResizeObserverEntry[]> | undefined {\n let observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._resizeObserverFactory.create((mutations) => stream.next(mutations));\n if (observer) {\n observer.observe(element);\n }\n observedElement = { observer, stream, count: 0 };\n this._observedElements.set(element, observedElement);\n }\n observedElement.count++;\n return observedElement?.stream;\n }\n\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n private _unobserveElement(element: Element): void {\n const observedElement = this._observedElements.get(element);\n if (!observedElement) {\n return;\n }\n\n if (--observedElement.count) {\n return;\n }\n this._cleanupObserver(element);\n }\n\n /** Clean up the underlying MutationObserver for the specified element. */\n private _cleanupObserver(element: Element): void {\n const observedElement = this._observedElements.get(element);\n\n if (!observedElement) {\n return;\n }\n const { observer, stream } = observedElement;\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n}\n","import { Inject, Injectable, InjectionToken, Optional, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\n\n/** Default RTL languages */\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n@Injectable()\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** RTL value */\n rtl: BehaviorSubject<boolean>;\n\n /** Signal wrapper for RTL value. */\n rtlSignal: Signal<boolean>;\n\n /** @hidden */\n constructor(@Optional() @Inject(RTL_LANGUAGE) injectedRtlLanguages: string[]) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n\n this.rtl = new BehaviorSubject(filtered.length > 0);\n\n this.rtlSignal = toSignal(this.rtl, { requireSync: true });\n }\n}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, Optional } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TabbableElementService {\n /** @hidden */\n constructor(\n private readonly _checker: InteractivityChecker,\n @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n ) {}\n\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n getTabbableElement(root: HTMLElement, focusLastElement = false, skipSelf = false): HTMLElement | null {\n if (!skipSelf && this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG, so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n const rootChildren = root.children || root.childNodes;\n\n const children = focusLastElement ? Array.from(rootChildren).reverse() : rootChildren;\n\n for (let i = 0; i < children.length; i++) {\n const tabbableChild =\n children[i].nodeType === this._document?.ELEMENT_NODE\n ? this.getTabbableElement(children[i] as HTMLElement, focusLastElement)\n : null;\n\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n\n return null;\n }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\n/**\n * Injection token for the viewport size observable.\n * Emits the viewport size in pixels, which are outputted by the ViewportRuler\n * from @angular/cdk/overlay.\n */\nexport const ViewportSizeObservable = new InjectionToken<Observable<number>>('ViewportSizeObservable', {\n providedIn: 'root',\n factory: () => {\n const viewportRuler = inject(ViewportRuler);\n return viewportRuler\n .change(50)\n .pipe(map((e) => (e.target as Window).innerWidth))\n .pipe(startWith(window.innerWidth));\n }\n});\n","export const ResponsiveBreakpoints = {\n S: 600,\n M: 1024,\n L: 1440\n} as const;\n\ntype breakpointName = keyof typeof ResponsiveBreakpoints | 'XL';\n\nexport type BreakpointName = Lowercase<breakpointName> | Uppercase<breakpointName>;\n\n/** @hidden */\nexport function getBreakpointName(width: number): breakpointName {\n if (width < ResponsiveBreakpoints.S) {\n return 'S';\n }\n if (width < ResponsiveBreakpoints.M) {\n return 'M';\n }\n if (width < ResponsiveBreakpoints.L) {\n return 'L';\n }\n return 'XL';\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Input,\n NgModule,\n OnChanges,\n TemplateRef,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { ResizeObserverService } from '../../services';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\n\n/**\n * Directive to show/hide element on specific breakpoint or range of window width.\n * Uses native ngIf directive to show/hide element.\n */\n@Directive({\n selector:\n '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',\n standalone: true\n})\nexport class BreakpointDirective implements OnChanges, AfterViewInit {\n /**\n * Provide list of the breakpoints to show element on.\n * */\n @Input()\n set fdkBreakpoint(value: BreakpointName[]) {\n const providedValues = value.map((v) => v.toLowerCase());\n this.showOnS = providedValues.includes('s');\n this.showOnM = providedValues.includes('m');\n this.showOnL = providedValues.includes('l');\n this.showOnXL = providedValues.includes('xl');\n }\n\n /**\n * Show element on S breakpoint.\n * S - 0 - 599px\n * */\n @Input({ alias: 'fdkBreakpointS', transform: booleanAttribute })\n showOnS = false;\n\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n @Input({ alias: 'fdkBreakpointM', transform: booleanAttribute })\n showOnM = false;\n\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n @Input({ alias: 'fdkBreakpointL', transform: booleanAttribute })\n showOnL = false;\n\n /**\n * Show element on XL breakpoint.\n * */\n @Input({ alias: 'fdkBreakpointXL', transform: booleanAttribute })\n showOnXL = false;\n\n /**\n * Show element on breakpoint less than provided value.\n * */\n @Input()\n fdkBreakpointLt: number;\n\n /**\n * Show element on breakpoint greater than provided value.\n * */\n @Input()\n fdkBreakpointGt: number;\n\n /**\n * Observe element width changes.\n */\n @Input('fdkBreakpointObserve')\n set observationSource(value: HTMLElement | ElementRef<HTMLElement>) {\n if (!value) {\n this._sizeObservable$.next(this.viewportSize$);\n return;\n }\n const element = coerceElement(value);\n this._sizeObservable$.next(\n this._resizeObserverService.observe(value).pipe(\n map(() => element.offsetWidth),\n startWith(element.offsetWidth)\n )\n );\n }\n\n /** @hidden */\n templateViewRef?: EmbeddedViewRef<unknown>;\n\n /** @hidden */\n onChanges$ = new Subject<void>();\n\n /** @hidden */\n _sizeObservable$: BehaviorSubject<Observable<number>> = new BehaviorSubject<Observable<number>>(\n inject(ViewportSizeObservable)\n );\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor(\n private readonly templateRef: TemplateRef<any>,\n private readonly viewContainer: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])\n .pipe(\n map(([w]) => [w, getBreakpointName(w)] as const),\n map(([width, breakpointName]) => this._shouldShow(width, breakpointName)),\n tap((shouldShow) => {\n if (shouldShow) {\n if (!this.templateViewRef) {\n this.viewContainer.clear();\n this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n this.templateViewRef.detectChanges();\n }\n } else {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n }\n }),\n takeUntilDestroyed(this._destroyRef),\n finalize(() => {\n this.viewContainer.clear();\n this.templateViewRef = undefined;\n })\n )\n .subscribe();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.onChanges$.next();\n }\n\n /** @hidden */\n private _shouldShow(width: number, currentBreakpoint: BreakpointName): boolean {\n const shouldShowOnBreakpoints = [\n this.showOnS && 'S',\n this.showOnM && 'M',\n this.showOnL && 'L',\n this.showOnXL && 'XL'\n ].filter(Boolean);\n const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);\n if (this.fdkBreakpointLt) {\n return width < this.fdkBreakpointLt;\n }\n if (this.fdkBreakpointGt) {\n return width > this.fdkBreakpointGt;\n }\n return shouldShow;\n }\n}\n\n@NgModule({\n imports: [BreakpointDirective],\n exports: [BreakpointDirective]\n})\nexport class BreakpointModule {}\n","import { DestroyRef, Directive, ElementRef, inject, Output, Renderer2 } from '@angular/core';\nimport { fromEvent, merge, Observable, Subject } from 'rxjs';\n\n@Directive({\n selector: '[fdkClicked]',\n standalone: true\n})\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static eventName = 'fdkClicked';\n\n /**\n * Event emitted when user either clicks with mouse, or\n * clicks on space or enter keys\n */\n @Output() fdkClicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** @hidden */\n constructor() {\n const { nativeElement: element } = inject<ElementRef<HTMLElement>>(ElementRef);\n const renderer = inject(Renderer2);\n const destroyRef = inject(DestroyRef);\n const enter$ = new Subject<KeyboardEvent>();\n const space$ = new Subject<KeyboardEvent>();\n\n destroyRef.onDestroy(renderer.listen(element, 'keydown.enter', (e) => enter$.next(e)));\n destroyRef.onDestroy(renderer.listen(element, 'keydown.space', (e) => space$.next(e)));\n\n destroyRef.onDestroy(() => {\n enter$.complete();\n space$.complete();\n });\n\n this.fdkClicked = merge(fromEvent<MouseEvent>(element, 'click'), enter$, space$);\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n/**\n * @deprecated\n * No need to use it anymore. Use ClickedDirective directly instead.\n */\n@Injectable()\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n console.warn(\n `ClickedEventPlugin is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n\n /** @hidden */\n addEventListener(element: HTMLElement, eventName: string, handler: EventHandlerFunction): ($event: Event) => void {\n return this._setupEventBinding(element, handler);\n }\n\n /** @hidden */\n addGlobalEventListener(\n higherOrderElement: string,\n eventName: string,\n handler: EventHandlerFunction\n ): HandlerRemoveFunction {\n const target = this._parseHigherOrderElement(higherOrderElement);\n return this._setupEventBinding(target, handler);\n }\n\n /** @hidden */\n supports(eventName: string): boolean {\n return eventName === ClickedDirective.eventName;\n }\n\n /** @hidden */\n private _parseHigherOrderElement(selector: string): EventTarget {\n if (this.platformId !== 'browser') {\n return this.document;\n }\n switch (selector) {\n case 'window':\n return window;\n case 'document':\n return document;\n case 'body':\n return document.body;\n default:\n throw new Error(`Element selector [${selector}] not supported.`);\n }\n }\n\n /** @hidden */\n private _setupEventBinding(target: EventTarget, handler: EventHandlerFunction): HandlerRemoveFunction {\n const addProxyFunction = (): void => {\n target.addEventListener('click', proxyFunction, false);\n target.addEventListener('keydown', proxyFunction, false);\n };\n\n const removeProxyFunction = (): void => {\n target.removeEventListener('click', proxyFunction, false);\n target.removeEventListener('keydown', proxyFunction, false);\n };\n\n const proxyFunction = (event: Event | MouseEvent | KeyboardEvent): void => {\n if (event instanceof KeyboardEvent) {\n if (event.keyCode !== ENTER && event.keyCode !== SPACE) {\n return;\n }\n }\n handler(event);\n };\n\n addProxyFunction();\n\n return removeProxyFunction;\n }\n}\n","import { InjectionToken, isDevMode, Provider } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport const ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n 'Checking Module providers had been loaded',\n { factory: () => false }\n);\n\n/**\n * Provides ClickedEventPlugin to the application\n * @deprecated\n */\nexport function provideFdkClicked(): Provider[] {\n if (isDevMode()) {\n console.warn(\n `provideFdkClicked() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ];\n}\n","import { isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport { provideFdkClicked } from './provide-fdk-clicked';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\n@NgModule({\n imports: [ClickedDirective],\n exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor() {\n console.warn(\n `ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n /** @hidden */\n static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n if (isDevMode()) {\n console.warn(\n `ClickedBehaviorModule.forRoot() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n );\n }\n return {\n ngModule: ClickedBehaviorModule,\n providers: [provideFdkClicked()]\n };\n }\n}\n","import { ElementRef, inject, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Returns Observable that emits when element is clicked. Uses Renderer2 to listen to events.\n * @param element\n * @param renderer\n */\nexport function elementClick$(\n element: ElementRef<HTMLElement> | HTMLElement,\n renderer: Renderer2 = inject(Renderer2)\n): Observable<MouseEvent | KeyboardEvent> {\n return new Observable<MouseEvent | KeyboardEvent>((observer) => {\n const cleanups: (() => void)[] = [\n renderer.listen(element, 'click', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.enter', (event) => observer.next(event)),\n renderer.listen(element, 'keydown.space', (event) => {\n event.preventDefault();\n observer.next(event);\n })\n ];\n return () => cleanups.forEach((cleanup) => cleanup());\n });\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\n@Injectable()\nexport class FdkClickedProvider extends Subject<MouseEvent | KeyboardEvent> implements OnDestroy {\n /** @hidden */\n private _preventDefault = true;\n /** @hidden */\n private _listeners!: Array<() => void>;\n /** @hidden */\n private readonly _fdkClickedEventManagerPluginLoaded: boolean;\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef<Element>,\n private readonly _renderer: Renderer2,\n @Inject(EVENT_MANAGER_PLUGINS) eventManagerPlugins: any[]\n ) {\n super();\n this._fdkClickedEventManagerPluginLoaded = eventManagerPlugins.some((em) => em instanceof ClickedEventPlugin);\n this._initialize();\n }\n\n /** @hidden */\n setPreventDefault(val: boolean): void {\n this._preventDefault = val;\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._listeners.forEach((d) => d());\n this.complete();\n }\n\n /** @hidden */\n private _initialize(): void {\n const eventsList: string[] = this._fdkClickedEventManagerPluginLoaded\n ? [ClickedDirective.eventName]\n : ['click', 'keydown.enter', 'keydown.space'];\n this._listeners = eventsList.map((eventName) =>\n this._renderer.listen(this._elementRef.nativeElement, eventName, (event: MouseEvent | KeyboardEvent) => {\n if (this._preventDefault) {\n event.preventDefault();\n }\n this.next(event);\n })\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @hidden */\nexport function setDisabledState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isDisabled: boolean,\n disabledClass: string,\n addDisabledClass: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isDisabled) {\n if (addDisabledClass) {\n htmlElement.classList.add(disabledClass);\n }\n htmlElement.setAttribute('disabled', '');\n htmlElement.setAttribute('aria-disabled', 'true');\n } else {\n htmlElement.classList.remove(disabledClass);\n htmlElement.removeAttribute('disabled');\n htmlElement.removeAttribute('aria-disabled');\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject, filter } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FdkClickedProvider } from '../clicked';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { setDisabledState } from './set-disabled-state';\n\n@Directive({\n selector: '[fdkDisabled]',\n standalone: true,\n providers: [\n {\n provide: FDK_DISABLED_DIRECTIVE,\n useExisting: DisabledBehaviorDirective\n },\n FdkClickedProvider\n ]\n})\nexport class DisabledBehaviorDirective\n extends ReplaySubject<boolean>\n implements AfterViewInit, DisabledBehavior, DisabledViewModifier\n{\n /** @hidden */\n @Input()\n set fdkDisabled(value: BooleanInput) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n\n get fdkDisabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Whether to add `disabledClass` class to the element.\n */\n @Input()\n addDisabledClass = true;\n\n /**\n * Disabled css class to apply to the element.\n */\n @Input()\n disabledClass = 'is-disabled';\n\n /** @hidden */\n private _disabled = false;\n /** @hidden */\n private readonly _fdkDisableInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef,\n private _clicked: FdkClickedProvider\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fdkDisableInput$\n .pipe(\n filter((isDisabled) => isDisabled !== this._disabled),\n tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n@NgModule({\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DisabledObserver {\n /** @hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @hidden */\n static isDisabled(el: Element): boolean {\n return (\n el.hasAttribute('disabled') ||\n el.getAttribute('aria-disabled') === 'true' ||\n el.classList.contains('is-disabled')\n );\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => DisabledObserver.isDisabled(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { setDisabledState } from './set-disabled-state';\n\nexport class DefaultDisabledViewModifier implements DisabledViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this.elementRef, isDisabled, 'is-disabled', true);\n };\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DisabledObserver } from './disabled.observer';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n /** @Hidden */\n fdkDisabled = false;\n /** @Hidden */\n private readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]> = new BehaviorSubject<\n DisabledViewModifier[]\n >(this._getInitialViewModifiers());\n /** @hidden */\n private _disabledChange$: Observable<boolean> = this._getDisabledChange$();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>,\n private disabledObserver: DisabledObserver,\n @Optional() @Self() @Inject(FDK_DISABLED_DIRECTIVE) private selfDisabled$?: DisabledBehavior,\n @Optional() @SkipSelf() @Inject(FDK_DISABLED_DIRECTIVE) private parentDisabled$?: DisabledBehavior\n ) {\n super(1);\n combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(\n tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._disabledChange$\n .pipe(\n tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: DisabledViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.disabledObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getDisabledChange$(): Observable<boolean> {\n let selfDisabled = false;\n let parentDisabled = false;\n\n if (this.parentDisabled$) {\n this.parentDisabled$\n .pipe(\n startWith(this.parentDisabled$.fdkDisabled),\n tap((d) => (parentDisabled = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentDisabled) {\n this.setDisabledState(true);\n }\n if (!selfDisabled && !parentDisabled) {\n this.setDisabledState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfDisabled$) {\n this.selfDisabled$\n .pipe(\n startWith(this.selfDisabled$.fdkDisabled),\n tap((d) => (selfDisabled = d)),\n distinctUntilChanged(),\n tap((isDisabled) => {\n if (!parentDisabled) {\n this.setDisabledState(isDisabled);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.disabledObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): DisabledViewModifier[] {\n return !this.selfDisabled$ ? [new DefaultDisabledViewModifier(this.elementRef)] : [this.selfDisabled$];\n }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUSABLE_ITEM = new InjectionToken<FocusableOption>('Focusable Option');\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n ContentChildren,\n DestroyRef,\n Directive,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { filter } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { RtlService } from '../../services/rtl.service';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: `[fdkFocusKeyManagerList]`,\n standalone: true\n})\nexport class FocusKeyManagerListDirective<TItem extends FocusableOption = Record<any, any> & FocusableOption>\n implements OnChanges, AfterContentInit, OnDestroy\n{\n /** Orientation for the FocusKeyManager */\n @Input()\n orientation: 'horizontal' | 'vertical';\n\n /** Skip predicate for the FocusKeyManager */\n @Input()\n skipPredicate: (item: TItem) => boolean;\n\n /** @hidden */\n @ContentChildren(FOCUSABLE_ITEM)\n readonly _items: QueryList<TItem>;\n\n /** @hidden */\n get focusKeyManager(): FocusKeyManager<TItem> {\n return this._focusKeyManager;\n }\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<TItem>;\n\n /** @hidden */\n private readonly _onDestroy$ = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n @Optional() private readonly _rtlService: RtlService,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._focusKeyManager) {\n return;\n }\n\n if ('orientation' in changes) {\n this._applyOrientation();\n }\n\n if ('skiPredicate' in changes) {\n this._focusKeyManager.skipPredicate(this.skipPredicate);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._focusKeyManager = new FocusKeyManager<TItem>(this._items).skipPredicate(this.skipPredicate);\n\n this._applyOrientation();\n\n this._cdr.detectChanges();\n\n this._rtlService?.rtl\n .pipe(\n filter(() => this.orientation === 'horizontal'),\n takeUntilDestroyed(this._onDestroy$)\n )\n .subscribe(() => this._applyOrientation());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._focusKeyManager.destroy();\n }\n\n /** Focus certain list's item */\n focusItem(item: number | TItem): any {\n if (typeof item === 'number') {\n this._focusKeyManager.setActiveItem(item);\n } else {\n this._focusKeyManager.setActiveItem(item);\n }\n }\n\n /** @hidden */\n private _applyOrientation(): void {\n switch (this.orientation) {\n case 'horizontal':\n this._focusKeyManager.withHorizontalOrientation(this._rtlService?.rtl.value ? 'rtl' : 'ltr');\n break;\n case 'vertical':\n this._focusKeyManager.withVerticalOrientation(true);\n break;\n }\n }\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { booleanAttribute, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n selector: '[fdkFocusKeyManagerItem]',\n standalone: true,\n providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }]\n})\nexport class FocusKeyManagerItemDirective implements FocusableOption {\n /** Whether item should be initially focused */\n @Input({ transform: booleanAttribute })\n initialFocus = false;\n\n /** @hidden */\n @Input()\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this.initialFocus ? 0 : (this.nativeElement?.tabIndex ?? -1);\n }\n\n /** Native element of the item */\n get nativeElement(): any {\n return this._elRef?.nativeElement;\n }\n\n /** @hidden */\n private get _focusKeyManager(): FocusKeyManager<FocusableOption> {\n return this._list.focusKeyManager;\n }\n\n /** @hidden */\n constructor(\n private readonly _list: FocusKeyManagerListDirective,\n private readonly _elRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('focus')\n _onFocus(): void {\n // For cases where initially selected item doesn't have 0 index\n this._focusKeyManager?.updateActiveItem(this);\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n this._focusKeyManager?.onKeydown(event);\n }\n\n /** Focus current item native element */\n focus(): void {\n this._elRef?.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FocusKeyManagerItemDirective } from './focus-key-manager-item.directive';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\n\n@NgModule({\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces';\n\nconst focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);\n\nconst focusableTagOptions = [\n {\n tag: 'div',\n attributes: [\n {\n name: 'contenteditable',\n valueMatcher: (value: string) => coerceBooleanProperty(value)\n }\n ]\n }\n];\n\n/** @hidden */\nexport function isElementFocusableByDefault(el: HasElementRef<Element> | Element | ElementRef<Element>): boolean {\n const element = getNativeElement(el);\n const tagName = element.tagName.toLowerCase();\n if (focusableTagnamesByDefault.has(tagName)) {\n return true;\n }\n\n return focusableTagOptions.some((tagOptions) => {\n if (tagOptions.tag === tagName) {\n return tagOptions.attributes.some((attribute) => {\n const attrVal = element.getAttribute(attribute.name);\n return attrVal && attribute.valueMatcher(attrVal);\n });\n }\n return false;\n });\n}\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport { DisabledObserver } from '../disabled/disabled.observer';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusableObserver {\n /** @hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @Hidden */\n static isFocusable(element: Element, respectTabIndex: boolean): boolean {\n if (DisabledObserver.isDisabled(element)) {\n return false;\n }\n\n if (!respectTabIndex) {\n return true;\n }\n\n const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);\n if (isNaN(tabIndex)) {\n return isElementFocusableByDefault(element);\n }\n\n return tabIndex > -1;\n }\n\n /** @hidden */\n observe(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n respectTabIndex = true\n ): Observable<boolean> {\n const nativeElement = getNativeElement(element);\n return this._attributeObserver.observe(nativeElement).pipe(\n map(() => FocusableObserver.isFocusable(nativeElement, respectTabIndex)),\n distinctUntilChanged()\n );\n }\n\n /** @hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { Nullable } from '../../models/nullable';\nimport { TabbableElementService } from '../../services';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\nimport { FocusableObserver } from './focusable.observer';\n\nexport type CellFocusedEventAnnouncer = Nullable<(position: FocusableItemPosition) => string>;\n\nexport interface FocusableItemPosition {\n rowIndex: number;\n colIndex: number;\n totalRows: number;\n totalCols: number;\n}\n\n@Directive({\n selector: '[fdkFocusableItem]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n})\nexport class FocusableItemDirective implements FocusableItem, HasElementRef {\n /** Whether the item is focusable. Default is true. */\n @Input({ transform: booleanAttribute })\n set fdkFocusableItem(val: boolean) {\n this._focusable = val;\n this.setTabbable(this._focusable);\n }\n\n get fdkFocusableItem(): boolean {\n return this._focusable;\n }\n\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n @Input()\n cellFocusedEventAnnouncer: CellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n @Output()\n readonly cellFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Element reference. */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** @hidden */\n readonly keydown = new Subject<KeyboardEvent>();\n\n /** @hidden */\n _position: FocusableItemPosition;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n protected readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _focusable = true;\n\n /** @hidden */\n private _tabbableElements = new Map<HTMLElement, number>();\n\n /** @hidden */\n private _tabbable = true;\n /** @hidden */\n private _timerId: ReturnType<typeof setTimeout> | null;\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n /** @hidden */\n private readonly _tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private readonly _renderer2 = inject(Renderer2);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n constructor() {\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n\n fromEvent(this.elementRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this._onFocusout();\n });\n\n fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n\n /** @hidden */\n element = (): HTMLElement => this.elementRef.nativeElement;\n\n /** @hidden */\n isFocusable(): boolean {\n return this._focusable;\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._tabbable = state;\n this._renderer2.setAttribute(this.elementRef.nativeElement, 'tabindex', this._tabbable ? '0' : '-1');\n\n if (state) {\n this._enableTabbableElements();\n } else {\n this._disableTabbableElements();\n }\n }\n\n /** @hidden */\n private async _onFocusin(): Promise<void> {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n if (this._timerId != null) {\n clearTimeout(this._timerId);\n this._timerId = null;\n return;\n }\n\n if (this._position) {\n this.cellFocused.next(this._position);\n\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n }\n\n /** @hidden */\n private _onFocusout(): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n // Timeout is needed to prevent focusout event from being emitted when focus moves between item's children.\n this._timerId = setTimeout(() => (this._timerId = null));\n }\n\n /** @hidden */\n private _onKeydown(event: KeyboardEvent): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n const isFocused = this._document.activeElement === this.elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusCell =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n const tabbableElement = this._tabbableElementService.getTabbableElement(\n this.elementRef.nativeElement,\n false,\n true\n );\n\n tabbableElement?.focus();\n\n return;\n } else if (shouldFocusCell) {\n event.stopPropagation();\n\n this.elementRef.nativeElement.focus();\n\n return;\n }\n\n if (isFocused) {\n this.keydown.next(event);\n }\n }\n\n /** @hidden */\n private _enableTabbableElements(): void {\n if (this._tabbableElements.size === 0) {\n return;\n }\n\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n\n /** @hidden */\n private _disableTabbableElements(): void {\n // Since we cannot select by tabindex attribute (links, inputs, buttons might not have one but still can be focusable),\n // Select all elements from the cell and filter by tabIndex property.\n Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\n });\n }\n\n /** @hidden */\n private _defaultItemFocusedEventAnnouncer(position: FocusableItemPosition): string {\n return `Column ${position.colIndex + 1} of ${position.totalCols}, row: ${position.rowIndex + 1} of ${\n position.totalRows\n }`;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from './focusable-item.directive';\n\n@NgModule({\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\n","import { Directive, inject, Injector } from '@angular/core';\nimport deepEqual from 'fast-deep-equal';\nimport { BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';\nimport { FocusableItem } from '../focusable-item/focusable.item';\nimport { FocusableListDirective, ItemsQueryList } from './focusable-list.directive';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\n\n@Directive({\n selector: '[fdkIndirectFocusableList]',\n exportAs: 'fdkIndirectFocusableList',\n standalone: true\n})\nexport class IndirectFocusableListDirective {\n /** @hidden */\n injector = inject(Injector);\n /** @hidden */\n _focusableList = inject<FocusableListDirective>(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });\n /** @hidden */\n _indirectChildren = new BehaviorSubject<FocusableItem[]>([]);\n /** @hidden */\n _indirectChildrenMap = new Map<FocusableItem, number | (() => number)>();\n\n /** @hidden */\n constructor() {\n if (this._focusableList) {\n const queryList: ItemsQueryList<FocusableItem> = {\n toArray: () => this._indirectChildren.value,\n get: (index: number) => this._indirectChildren.value[index],\n [Symbol.iterator]: () => this._indirectChildren.value[Symbol.iterator](),\n forEach: (\n callback: (value: FocusableItem, index: number, array: FocusableItem[]) => void,\n thisArg?: any\n ) => this._indirectChildren.value.forEach(callback, thisArg)\n } as any;\n queryList['changes'] = this._indirectChildren.pipe(\n debounceTime(100),\n distinctUntilChanged(deepEqual),\n map(() => queryList)\n );\n this._focusableList.setItems(queryList);\n }\n }\n\n /** @hidden */\n register(item: FocusableItem, itemOrder: number | (() => number)): void {\n this._indirectChildrenMap.set(item, itemOrder);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n unregister(item: FocusableItem): void {\n this._indirectChildrenMap.delete(item);\n this._updateIndirectChildren();\n }\n\n /** @hidden */\n protected _updateIndirectChildren(): void {\n this._indirectChildren.next(\n Array.from(this._indirectChildrenMap.entries())\n .sort(([, orderA], [, orderB]) => {\n const orderAValue = typeof orderA === 'function' ? orderA() : orderA;\n const orderBValue = typeof orderB === 'function' ? orderB() : orderB;\n return orderAValue - orderBValue;\n })\n .map(([focusableItem]) => focusableItem)\n );\n }\n}\n","import { DestroyRef, Directive, inject, InjectionToken } from '@angular/core';\nimport { IndirectFocusableListDirective } from '../focusable-list/indirect-focusable-list.directive';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\n\nexport const FDK_INDIRECT_FOCUSABLE_ITEM_ORDER = new InjectionToken<number | (() => number)>(\n 'FDK_INDIRECT_FOCUSABLE_ITEM_ORDER'\n);\n\n/**\n * Directive, to mark the focusable item in the focusable list, which\n * is not the direct child of the focusable list.\n *\n * Useful in cases, when you need to make the item focusable, and\n * you do not have the access to the focusable list.\n */\n@Directive({\n selector: '[fdkIndirectFocusableItem]',\n standalone: true\n})\nexport class IndirectFocusableItemDirective {\n /** @hidden */\n protected _focusableItem = inject<FocusableItem>(FDK_FOCUSABLE_ITEM_DIRECTIVE, { optional: true });\n /** @hidden */\n protected _indirectFocusableList = inject(IndirectFocusableListDirective, { optional: true });\n /** @hidden */\n protected _order: number | (() => number) | null = inject(FDK_INDIRECT_FOCUSABLE_ITEM_ORDER, { optional: true });\n /** @hidden */\n protected _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor() {\n if (!this._focusableItem) {\n throw new Error(\n 'fdkIndirectFocusableItem directive must be used in conjunction with fdkFocusableItem directive'\n );\n }\n if (this._indirectFocusableList && this._order) {\n const focusableItem = this._focusableItem;\n const indirectFocusableList = this._indirectFocusableList;\n indirectFocusableList.register(this._focusableItem, this._order);\n this._destroyRef.onDestroy(() => indirectFocusableList.unregister(focusableItem));\n }\n }\n}\n","import { FocusableItem } from './focusable.item';\n\n/**\n * Returns true if the item configured to be focusable.\n * @param item\n */\nexport function isItemFocusable(item: FocusableItem): boolean {\n return Boolean(typeof item.isFocusable === 'function' ? item.isFocusable() : item.isFocusable);\n}\n","import { Nullable } from '../../models/nullable';\nimport { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: Nullable<FocusableItem>): HTMLElement | null {\n if (!item) {\n return null;\n }\n if (typeof item.element === 'function') {\n return item.element();\n }\n\n return item.element;\n}\n","import { Nullable } from '../../models/nullable';\n\nexport type ScrollPosition = 'top' | 'bottom' | undefined;\n\n/** Helper function to scroll to focusable list or its item relatively to the container. */\nexport function scrollIntoView(element: Nullable<HTMLElement>, position: Nullable<ScrollPosition>): void {\n if (!element) {\n return;\n }\n\n const scrollableParent = getScrollParent(element);\n\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\n if (!position) {\n /**\n * check if top of focused element is fully visible, and if not, adjust scroll.\n * this is triggered when a sticky table header overlaps the focused cell.\n */\n const elRect = element.getBoundingClientRect();\n const topEl = document.elementFromPoint(elRect.left, elRect.top) as HTMLElement;\n if (\n !element.isSameNode(topEl) &&\n topEl &&\n element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top\n ) {\n scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });\n }\n }\n switch (position) {\n case 'top':\n scrollableParent.scrollTop = itemOffsetTop;\n break;\n case 'bottom':\n scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);\n break;\n }\n }\n}\n\nfunction getScrollParent(node: HTMLElement | null): HTMLElement | null {\n if (node == null) {\n return null;\n }\n\n if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n return node;\n } else {\n return getScrollParent(node.parentNode as HTMLElement);\n }\n}\n","import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil, intersectionObservable } from '../../functions';\nimport { destroyObservable } from '../../helpers';\nimport { Nullable } from '../../models/nullable';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItem,\n FocusableListPosition,\n FocusableObserver,\n isItemFocusable\n} from '../focusable-item';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { ScrollPosition, scrollIntoView } from './scroll';\n\nexport interface FocusableListItemFocusedEvent {\n index: number;\n total: number;\n}\n\nexport interface FocusableListKeydownEvent {\n list: FocusableListDirective;\n event: KeyboardEvent;\n activeItemIndex: Nullable<number>;\n}\n\ninterface FocusableListConfig {\n wrap?: boolean;\n direction?: 'vertical' | 'horizontal';\n contentDirection?: 'ltr' | 'rtl' | null;\n}\n\nexport interface ItemsQueryList<T> extends Iterable<T> {\n changes: Observable<ItemsQueryList<T>>;\n length: number;\n toArray(): T[];\n find(predicate: (item: T, index: number) => boolean): Nullable<T>;\n get(index: number): Nullable<T>;\n forEach(param: (item: T, index: number) => void): void;\n}\n\n@Directive({\n selector: '[fdkFocusableList]',\n exportAs: 'fdkFocusableList',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n})\nexport class FocusableListDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Whether the whole list should be focusable, handy in grids. */\n @Input({ transform: booleanAttribute })\n set focusable(value: boolean) {\n this._focusable = value;\n\n this.setTabbable(this._focusable);\n }\n\n get focusable(): boolean {\n return this._focusable;\n }\n\n /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */\n @Input()\n navigationDirection: 'horizontal' | 'vertical' | 'grid' = 'vertical';\n\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /**\n * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.\n */\n @Input({ transform: booleanAttribute })\n wrap = false;\n\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n @Input()\n listFocusedEventAnnouncer: (position: FocusableListPosition) => string = this._defaultListFocusedEventAnnouncer;\n\n /** Event emitted when list's item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableListItemFocusedEvent>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n readonly _projectedFocusableItems: ItemsQueryList<FocusableItem>;\n\n /** @hidden */\n get _focusableItems(): ItemsQueryList<FocusableItem> {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n\n /** @hidden */\n _items: ItemsQueryList<FocusableItem> | undefined;\n\n /** @hidden */\n readonly _gridItemFocused$ = new Subject<FocusableItemPosition>();\n\n /** @hidden */\n readonly _gridListFocused$ = new Subject<FocusableListPosition>();\n\n /** @hidden */\n readonly _keydown$ = new Subject<FocusableListKeydownEvent>();\n\n /** @hidden */\n _isVisible = false;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _focusable = false;\n\n /** @hidden */\n private _gridPosition: { rowIndex: number; totalRows: number };\n\n /** @hidden */\n private _keyManager?: FocusKeyManager<FocusableItem>;\n\n /** @hidden */\n private _tabbable = false;\n\n /** @hidden */\n private readonly _refreshItems$ = new Subject<void>();\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\n /** @hidden */\n private readonly _renderer = inject(Renderer2);\n /** @hidden */\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n constructor() {\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeydown(event: KeyboardEvent): void {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n const isFocused = this._document.activeElement === this._elementRef.nativeElement;\n const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n const shouldFocusList =\n ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n if (shouldFocusChild) {\n event.stopPropagation();\n\n this.setActiveItem(0);\n\n return;\n } else if (shouldFocusList) {\n event.stopPropagation();\n\n this.focus();\n\n return;\n }\n\n this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });\n }\n\n /** @hidden */\n @HostListener('focus')\n async _onFocus(): Promise<void> {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n\n this.setTabbable(true);\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._keyManager) {\n return;\n }\n\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenOnItems();\n }\n\n /** Set items programmatically. */\n setItems(items: ItemsQueryList<FocusableItem>): void {\n this._items = items;\n this._listenOnItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._keyManager?.destroy();\n }\n\n /** Set active item in list */\n setActiveItem(index: number, scrollPosition?: ScrollPosition): void {\n let availableIndex;\n\n this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n\n return false;\n });\n\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(availableIndex)), scrollPosition);\n this._keyManager?.setActiveItem(availableIndex);\n }\n }\n\n /** Focus whole list */\n focus(scrollPosition?: ScrollPosition): void {\n if (this.focusable) {\n scrollIntoView(this._elementRef.nativeElement, scrollPosition);\n this._elementRef.nativeElement.focus();\n }\n }\n\n /** Set tabbable state */\n setTabbable(state: boolean): void {\n this._tabbable = state;\n }\n\n /** @hidden */\n _updateNavigationDirection(): void {\n if (!this._keyManager) {\n return;\n }\n\n if (this.navigationDirection === 'vertical') {\n this._keyManager = this._keyManager.withVerticalOrientation(true);\n this._keyManager = this._keyManager.withHorizontalOrientation(null);\n } else {\n this._keyManager = this._keyManager.withVerticalOrientation(false);\n this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection || 'ltr');\n }\n }\n\n /** @hidden */\n _setItemsTabbable(state: boolean): void {\n this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n\n /** @hidden */\n _setGridPosition(position: FocusableListPosition): void {\n this._gridPosition = position;\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) =>\n items.forEach(\n (item, index) =>\n (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })\n )\n );\n }\n\n /** @hidden */\n private _initializeFocusManager(items: FocusableItem[], config: FocusableListConfig = {}): void {\n this._refreshItems$.next();\n\n let keyManager = new FocusKeyManager<any>(items).withHomeAndEnd();\n\n if (config.wrap !== false) {\n keyManager = keyManager.withWrap();\n }\n\n if (config.direction === 'horizontal') {\n keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced\n\n // Vertical is enabled by default, so let's disable it here in consistency purposes\n keyManager = keyManager.withVerticalOrientation(false);\n }\n\n keyManager.skipPredicate((i) => !isItemFocusable(i));\n\n this._keyManager = keyManager;\n\n const focusListenerDestroyers = items.map((item, index) =>\n this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position!);\n }\n\n this.itemFocused.next({ index, total: items.length });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n })\n );\n\n merge(...items.map((item) => item.keydown))\n .pipe(\n tap((event: KeyboardEvent) => {\n // Already handled\n if (event.defaultPrevented) {\n return;\n }\n\n this._keyManager?.onKeydown(event);\n }),\n takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))),\n finalize(() => focusListenerDestroyers.forEach((d) => d()))\n )\n .subscribe();\n }\n\n /** @hidden */\n private _defaultListFocusedEventAnnouncer(position: FocusableListPosition): string {\n return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;\n }\n\n /** @hidden */\n private _listenOnItems(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(\n startWith(null),\n map(() => this._focusableItems.toArray()),\n tap((items: FocusableItem[]): void => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: !!this.wrap\n });\n }),\n takeUntil(refresh$)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from '../focusable-item';\nimport { FocusableListDirective } from './focusable-list.directive';\n\n@NgModule({\n imports: [FocusableItemDirective, FocusableListDirective],\n exports: [FocusableItemDirective, FocusableListDirective]\n})\nexport class FocusableListModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_GRID_DIRECTIVE = new InjectionToken('Focusable grid directive token');\n","import { DOWN_ARROW, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { findLastIndex } from 'lodash-es';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport { FocusableItemPosition, FocusableListPosition } from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\n\nexport interface FocusableCellPosition {\n rowIndex: number;\n colIndex: number;\n}\n\n@Directive({\n selector: '[fdkFocusableGrid]',\n exportAs: 'fdkFocusableGrid',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n useExisting: FocusableGridDirective\n }\n ]\n})\nexport class FocusableGridDirective implements AfterViewInit {\n /** Direction of the content. */\n @Input()\n contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n /** Whether the item in the previous/next row should be selected when going out of the first/last cell in the row. Default is false. */\n @Input({ transform: booleanAttribute })\n wrapHorizontally = false;\n\n /** Specify which item to select in prev/next row if its length smaller than current index. Nullish value means do not select. Default is null. */\n @Input()\n shortRowFocus: Nullable<'first' | 'last'> = null;\n\n /** Event emitted when item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableItemPosition>();\n\n /** Event emitted when whole row focused, contains row's position info. */\n @Output()\n readonly rowFocused = new EventEmitter<FocusableListPosition>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_LIST_DIRECTIVE, { descendants: true })\n private readonly _focusableLists: QueryList<FocusableListDirective>;\n\n /** @hidden */\n _preventKeydown = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) =>\n lists.forEach((list, index) =>\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length })\n )\n );\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridListFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridItemFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._keydown$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ event, list, activeItemIndex }) => this._onKeydown(event, list, activeItemIndex));\n }\n\n /**\n * Focus cell by position.\n * @param position position of the cell\n */\n focusCell(position: FocusableCellPosition): void {\n const list = this._focusableLists.get(position.rowIndex);\n if (list) {\n list.setActiveItem(position.colIndex);\n }\n }\n\n /** @hidden */\n _onKeydown(event: KeyboardEvent, list: FocusableListDirective, activeItemIndex: Nullable<number>): void {\n if (\n !KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP]) ||\n this._preventKeydown\n ) {\n return;\n }\n\n const lists = this._focusableLists.toArray();\n const currentRowIndex = lists.findIndex((item) => item === list);\n let nextRowIndex: number | undefined;\n let nextRowItemIndex = activeItemIndex ?? 0;\n let scrollIntoView: ScrollPosition;\n\n const isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection !== 'rtl';\n\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n break;\n case DOWN_ARROW:\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n break;\n case LEFT_ARROW:\n if (this.wrapHorizontally && (isFirstItemLtr || isLastItemRtl)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex - 1;\n nextRowItemIndex = lists[nextRowIndex]?._focusableItems.length - 1;\n }\n break;\n case RIGHT_ARROW:\n if (this.wrapHorizontally && (isFirstItemRtl || isLastItemLtr)) {\n event.preventDefault();\n nextRowIndex = currentRowIndex + 1;\n nextRowItemIndex = 0;\n }\n break;\n case PAGE_DOWN:\n event.preventDefault();\n nextRowIndex = findLastIndex(lists, (item) => item._isVisible);\n scrollIntoView = 'top';\n break;\n case PAGE_UP:\n event.preventDefault();\n nextRowIndex = lists.findIndex((item) => item._isVisible);\n scrollIntoView = 'bottom';\n break;\n }\n\n const nextRow = lists[nextRowIndex ?? -1];\n if (nextRow) {\n if (nextRow.focusable) {\n nextRow.focus(scrollIntoView);\n return;\n }\n\n const itemIndex = this._getItemIndex(nextRow, nextRowItemIndex);\n if (itemIndex != null) {\n nextRow.setActiveItem(itemIndex, scrollIntoView);\n }\n }\n }\n\n /** @hidden */\n private _getItemIndex(list: FocusableListDirective, activeIndex: number): Nullable<number> {\n if (activeIndex >= 0 && activeIndex < list._focusableItems.length) {\n return activeIndex;\n }\n\n if (this.shortRowFocus == null) {\n return null;\n }\n\n return this.shortRowFocus === 'first' ? 0 : list._focusableItems.length - 1;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n@NgModule({\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject } from '@angular/core';\nimport { IgnoreClickOnSelectionDirectiveToken } from './tokens';\n\n/**\n * Directive will stop propagation and prevent default of click, if selected area is coming from\n * directive's host element. This gives ability to not cancel all clicks on element, just the ones\n * which include selection\n */\n@Directive({\n selector: '[fdkIgnoreClickOnSelection]',\n standalone: true,\n providers: [\n {\n provide: IgnoreClickOnSelectionDirectiveToken,\n useExisting: IgnoreClickOnSelectionDirective\n }\n ]\n})\nexport class IgnoreClickOnSelectionDirective {\n /** @hidden */\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n /** Host click listener. Checks for selection existence and if finds one, checks anchor */\n @HostListener('click', ['$event'])\n clicked($event: MouseEvent): void {\n const selection = this.document.getSelection();\n if (selection?.toString()) {\n if (\n selection.anchorNode &&\n (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||\n this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))\n ) {\n $event.stopPropagation();\n $event.preventDefault();\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';\n\n@NgModule({\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\n\n@Directive({\n selector: '[fdkInitialFocus]',\n standalone: true,\n providers: [TabbableElementService]\n})\nexport class InitialFocusDirective implements AfterViewInit {\n /**\n * CSS selector of an element that should be focused.\n */\n @Input()\n fdkInitialFocus = '.fd-initial-focus-item';\n\n /**\n * Whether initial focus enabled for a current element.\n */\n @Input()\n set enabled(value: boolean) {\n if (value === this.enabled) {\n return;\n }\n this._enabled$.next(value);\n }\n\n get enabled(): boolean {\n return this._enabled$.getValue();\n }\n\n /**\n * Whether to focus last element in a found array of elements.\n */\n @Input()\n focusLastElement = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _enabled$ = new BehaviorSubject<boolean>(true);\n\n /** @hidden */\n constructor(\n private _elmRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private readonly _tabbableService: TabbableElementService\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._enabled$\n .pipe(\n distinctUntilChanged(),\n filter((enabled) => enabled),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n this._executeOnEmpty(() => this._focus());\n });\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnEmpty(fn: () => any): void {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n } else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\n }\n }\n\n /**\n * @hidden\n * Searches for an appropriate focusable element\n */\n private _getFocusableElement(): HTMLElement | null {\n if (!this.fdkInitialFocus) {\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(\n this.fdkInitialFocus\n ) as NodeListOf<HTMLElement>;\n\n if (autoFocusableItems.length > 0) {\n return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];\n }\n\n // If no elements found, fallback to a first tabbable element.\n return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n }\n\n /** @hidden */\n private _focus(): void {\n if (!this.enabled) {\n return;\n }\n const elm = this._getFocusableElement();\n elm?.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { InitialFocusDirective } from './initial-focus.directive';\n\n@NgModule({\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\n\n@Directive({\n selector: '[fdkIntersectionSpy]',\n standalone: true\n})\nexport class IntersectionSpyDirective implements OnInit {\n /** Intersection offset in px. */\n @Input('fdkIntersectionSpy')\n offset = 20;\n /** Intersection observer options. */\n @Input()\n viewportOptions: IntersectionObserverInit;\n\n /** Event emitted when intersection observer emits with the current element. */\n @Output()\n intersected = new EventEmitter<boolean>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _elementRef = inject(ElementRef);\n\n /** @hidden */\n ngOnInit(): void {\n intersectionObservable(this._elementRef.nativeElement, this.viewportOptions)\n .pipe(\n map((entries) => entries[0]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((entry) => {\n this.intersected.emit(entry.isIntersecting);\n });\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\n\n@Directive({\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n})\nexport class LineClampTargetDirective implements OnChanges, AfterViewInit {\n /**\n * Target text for clamping\n */\n @Input()\n fdLineClampTargetText: string;\n\n /**\n * Event with target instance for clamping\n */\n @Output() update = new EventEmitter<LineClampTargetDirective>();\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Native element of clamping target\n */\n get targetElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.update.emit(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.update.emit(this);\n }\n}\n\n@Directive({\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n})\nexport class LineClampDirective implements OnChanges, AfterViewInit {\n /**\n * Count lines for clamping\n */\n @Input()\n set fdLineClampLines(value: Nullable<number>) {\n this._lineCount = coerceNumberProperty(value);\n }\n\n /**\n * Clamping state\n */\n @Input()\n fdLineclampState = false;\n\n /**\n * Event return count of lines from the target\n */\n @Output()\n lineCountUpdate = new EventEmitter<number>();\n\n /** @hidden */\n private _lineClampTarget: HTMLElement;\n /** @hidden */\n private _originalText: string;\n\n /** @hidden */\n private _isNativeSupport = true;\n\n /** @hidden */\n private _lineCount: number;\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n /**\n * Root native element of clamping box\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n constructor(\n private readonly _elementRef: ElementRef,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.reset();\n this.refreshClamp();\n }\n\n /** @hidden */\n reset(): void {\n if (this._lineClampTarget) {\n this._lineClampTarget.textContent = this._originalText;\n }\n if (this._isNativeSupport) {\n this._resetNative();\n }\n }\n\n /** @hidden */\n refreshTarget(event: LineClampTargetDirective): void {\n this._lineClampTarget = event.targetElement;\n this._originalText = event.fdLineClampTargetText;\n this._checkLineCount();\n }\n\n /** @hidden */\n refreshClamp(): void {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n private _truncate(): void {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);\n const ellipsisTextArray = this._originalText.split(' ');\n const ellipsisText = (): void => {\n if (this.rootElement.scrollHeight > lineClampHeight) {\n ellipsisTextArray.pop();\n this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';\n ellipsisText.call(this);\n }\n };\n ellipsisText();\n }\n\n /** @hidden\n * Get lineheight for rootelement, if browser not support lineclamp style\n */\n private getLineHeight(): number {\n const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');\n if (lineHeight === 'normal') {\n return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;\n }\n\n return parseFloat(lineHeight);\n }\n\n /** @hidden\n * Setup native styles for lineclamp text\n */\n private native(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');\n this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');\n this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);\n }\n }\n\n /** @hidden\n * Reset native styles for lineclamp text\n */\n private _resetNative(): void {\n if (this._isNativeSupport) {\n this._renderer.setStyle(this.rootElement, 'display', '');\n this._renderer.setStyle(this.rootElement, 'overflow', '');\n this._renderer.setStyle(this.rootElement, 'text-overflow', '');\n this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');\n this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');\n }\n }\n\n /** @hidden */\n private _checkLineCount(): void {\n if (!this.rootElement) {\n return;\n }\n const style = window.getComputedStyle(this.rootElement, null);\n\n this.reset();\n\n const fontSize = parseInt(style.getPropertyValue('font-size'), 10);\n const boxSizing = style.getPropertyValue('box-sizing');\n let height = parseInt(style.getPropertyValue('height'), 10);\n let lineHeight = parseFloat(style.getPropertyValue('line-height'));\n if (isNaN(lineHeight)) {\n lineHeight = fontSize * 1.2;\n }\n if (boxSizing === 'border-box') {\n const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampDirective, LineClampTargetDirective } from './line-clamp.directive';\n\n@NgModule({\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\n","import {\n A,\n BACKSPACE,\n C,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n V,\n X\n} from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { KeyUtil } from '../../functions';\n\n@Directive({\n selector: '[fdkOnlyDigits]',\n standalone: true\n})\nexport class OnlyDigitsDirective {\n /** Allow using decimal */\n @Input() decimal = false;\n /** Define decimal separator\n * Default: .(dot)\n */\n @Input() decimalSeparator = '.';\n\n /** @hidden */\n private _inputElement: HTMLInputElement;\n /** @hidden */\n private _hasDecimalPoint = false;\n\n /** @hidden */\n constructor(private readonly _el: ElementRef) {\n this._inputElement = this._el.nativeElement;\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n onKeyDown(e: KeyboardEvent): void {\n if (\n // Allow: Delete, Backspace, Tab, Escape, Enter, End, Home, Arrow Left, Arrow Right, Arrow Up, Arrow Down\n KeyUtil.isKeyCode(e, [\n DELETE,\n BACKSPACE,\n TAB,\n ESCAPE,\n ENTER,\n END,\n HOME,\n LEFT_ARROW,\n RIGHT_ARROW,\n UP_ARROW,\n DOWN_ARROW\n ]) ||\n // Allow: Ctrl+(A/C/V/X) and Cmd+(A/C/V/X) (Mac)\n (KeyUtil.isKeyCode(e, [A, C, V, X]) && (e.ctrlKey || e.metaKey))\n ) {\n return; // let it happen, don't do anything\n }\n\n if (KeyUtil.isKeyCode(e, [DASH, NUMPAD_MINUS])) {\n const newValue = this._forecastValue(e.key);\n\n if (this._inputElement.value[0] === '-' || newValue[0] !== '-') {\n e.preventDefault();\n\n return; // has DASH point\n } else {\n return; // Allow: only one DASH point\n }\n }\n\n if (this.decimal && e.key === this.decimalSeparator) {\n const newValue = this._forecastValue(e.key);\n if (newValue.split(this.decimalSeparator).length > 2) {\n // has two or more decimal points\n e.preventDefault();\n return;\n } else {\n this._hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n return; // Allow: only one decimal point\n }\n }\n\n // Ensure that it is a number and stop the keypress\n if (e.key === ' ' || isNaN(Number(e.key))) {\n e.preventDefault();\n return;\n }\n }\n\n /** @hidden */\n @HostListener('paste', ['$event'])\n onPaste(event: any): void {\n if (window['clipboardData']) {\n // Browser is IE\n this._pasteData(window['clipboardData'].getData('text'));\n } else if (event.clipboardData && event.clipboardData.getData) {\n // Other browsers\n this._pasteData(event.clipboardData.getData('text/plain'));\n }\n\n event.preventDefault();\n }\n\n /** @hidden */\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n const textData = event.dataTransfer?.getData('text') ?? '';\n this._inputElement.focus();\n this._pasteData(textData);\n\n event.preventDefault();\n }\n\n /** @hidden */\n private _pasteData(pastedContent: string): void {\n const sanitizedContent = this._sanitizeInput(pastedContent);\n const pasted = document.execCommand('insertText', false, sanitizedContent);\n if (!pasted) {\n if (this._inputElement.setRangeText) {\n const { selectionStart: start, selectionEnd: end } = this._inputElement;\n this._inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n // so we have to trigger it ourself.\n if (typeof window['InstallTrigger'] !== 'undefined') {\n this._inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n }\n } else {\n // Browser does not support setRangeText, e.g. IE\n this._insertAtCursor(this._inputElement, sanitizedContent);\n }\n }\n\n if (this.decimal) {\n this._hasDecimalPoint = this._inputElement.value.indexOf(this.decimalSeparator) > -1;\n }\n }\n\n // The following 2 methods were added from the below article for browsers that do not support setRangeText\n // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n /** @hidden */\n private _insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n const startPos = myField.selectionStart ?? 0;\n const endPos = myField.selectionEnd ?? 0;\n\n myField.value =\n myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n\n const pos = startPos + myValue.length;\n myField.focus();\n myField.setSelectionRange(pos, pos);\n\n this._triggerEvent(myField, 'input');\n }\n\n /** @hidden */\n private _triggerEvent(el: HTMLInputElement, type: string): void {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n const e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n }\n // end stack overflow code\n\n /** @hidden */\n private _sanitizeInput(input: string): string {\n let result = '';\n if (this.decimal && this._isValidDecimal(input)) {\n const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n result = input.replace(regex, '');\n } else {\n result = input.replace(/[^0-9]/g, '');\n }\n\n if (input[0] === '-') {\n result = `-${result}`;\n }\n\n const maxLength = this._inputElement.maxLength;\n if (maxLength > 0) {\n // the input element has maxLength limit\n const allowedLength = maxLength - this._inputElement.value.length;\n result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n }\n\n return result;\n }\n\n /** @hidden */\n private _isValidDecimal(string: string): boolean {\n if (!this._hasDecimalPoint) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n // the input element already has a decimal separator\n const selectedText = this._getSelection;\n if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n return string.split(this.decimalSeparator).length <= 2;\n } else {\n return string.indexOf(this.decimalSeparator) < 0;\n }\n }\n }\n\n /** @hidden */\n private get _getSelection(): string {\n const { selectionStart, selectionEnd } = this._inputElement;\n\n return this._inputElement.value.substring(selectionStart ?? 0, selectionEnd ?? 0);\n }\n\n /** @hidden */\n private _forecastValue(key: string): string {\n const { selectionStart, selectionEnd, value: oldValue } = this._inputElement;\n const selection = oldValue.substring(selectionStart ?? 0, selectionEnd ?? 0);\n\n return selection\n ? oldValue.replace(selection, key)\n : oldValue.substring(0, selectionStart ?? 0) + key + oldValue.substring(selectionStart ?? 0);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OnlyDigitsDirective } from './only-digits.directive';\n\n@NgModule({\n imports: [OnlyDigitsDirective],\n exports: [OnlyDigitsDirective]\n})\nexport class OnlyDigitsModule {}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkOverflowListItem]',\n standalone: true\n})\nexport class OverflowListItemDirective {\n /** @hidden */\n constructor(public el: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n QueryList,\n inject\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@Directive({\n selector: '[fdkOverflowList]',\n standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit {\n /**\n * @description Offset to calculate correct position\n */\n @Input()\n overflowOffset = 0;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description value of display property of existed list items\n */\n @Input()\n itemCssBlockValue = 'flex';\n\n /**\n * @description Emits when changed amount of extra items\n */\n @Output()\n overflowChanged: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * @description References to QueryList of OverflowListItemDirective\n */\n @ContentChildren(OverflowListItemDirective)\n overflowItems: QueryList<OverflowListItemDirective>;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private observer: ResizeObserver;\n\n /** @hidden */\n constructor(\n private _el: ElementRef,\n private _ngZone: NgZone\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.initResizeObserver();\n this.calculateOverflow();\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this.calculateOverflow());\n }\n\n /**\n * @description Get amount of extra items in current list\n * */\n getAmountOfExtraItems(): number {\n const elements = this.overflowItems.toArray().map((item) => item.el.nativeElement);\n const computed = getComputedStyle(this._el.nativeElement);\n const contentWidth = Math.floor(\n this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0')\n );\n\n if (contentWidth <= 0) {\n return 0;\n }\n\n return this._checkWidthWithOffset(elements, contentWidth);\n }\n\n /**\n * @description Ensuring that calculations run in the Angular zone\n */\n public calculateOverflow(): void {\n this._ngZone.run(() => {\n setTimeout(() => {\n const elements = this.overflowItems.map((item) => item.el.nativeElement);\n const contentWidth = this._el.nativeElement.clientWidth;\n\n let totalWidth = 0;\n let overflowCount = 0;\n\n elements.forEach((elm) => {\n const elmWidth = elm.offsetWidth;\n totalWidth += elmWidth;\n\n if (totalWidth > contentWidth) {\n overflowCount++;\n }\n });\n\n this._calculateAmountOfOverflowedItems();\n }, 0);\n });\n }\n\n private initResizeObserver(): void {\n this.observer = new ResizeObserver(() => {\n this._ngZone.run(() => this.calculateOverflow());\n });\n this.observer.observe(this._el.nativeElement);\n }\n\n /** @hidden */\n private _calculateAmountOfOverflowedItems(): void {\n const extra = this.getAmountOfExtraItems();\n this.overflowChanged.emit(extra);\n }\n\n /**\n * @hidden\n * @param arrItems\n * @param containerWidth\n * @param checkWithOffset\n * */\n private _checkWidthWithOffset(\n arrItems: HTMLElement[],\n containerWidth: number,\n checkWithOffset: boolean = false\n ): number {\n let itemsTotalWidth = 0;\n const parentWidth = checkWithOffset ? containerWidth - this.overflowOffset : containerWidth;\n\n arrItems.forEach((item) => {\n item.hidden = true;\n item.style.display = this.itemCssBlockValue;\n });\n\n for (let i = 0; i < arrItems.length; i++) {\n const item = arrItems[i];\n\n itemsTotalWidth += this.isRtl\n ? containerWidth - item.offsetLeft - itemsTotalWidth\n : Math.ceil(item.offsetWidth + item.offsetLeft - itemsTotalWidth);\n\n if (parentWidth < itemsTotalWidth) {\n this._clearTempStyles(arrItems);\n return checkWithOffset\n ? arrItems.length - i\n : this._checkWidthWithOffset(arrItems, containerWidth, true);\n }\n }\n\n this._clearTempStyles(arrItems);\n return 0;\n }\n\n /**\n * @param arrItems\n * @hidden\n * */\n private _clearTempStyles(arrItems: HTMLElement[]): void {\n arrItems.forEach((item) => {\n item.hidden = false;\n item.style.removeProperty('display');\n });\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { OverflowListDirective } from './overflow-list.directive';\n\n@NgModule({\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @Hidden */\nexport function setReadonlyState(\n element: HasElementRef<Element> | Element | ElementRef<Element>,\n isReadonly: boolean\n): void {\n const htmlElement = getNativeElement(element);\n if (isReadonly) {\n htmlElement.classList.add('is-readonly');\n htmlElement.setAttribute('readonly', '');\n } else {\n htmlElement.classList.remove('is-readonly');\n htmlElement.removeAttribute('readonly');\n }\n}\n","import { ElementRef } from '@angular/core';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\nexport class DefaultReadonlyViewModifier implements ReadonlyViewModifier {\n /** @hidden */\n constructor(private elementRef: ElementRef<Element>) {}\n\n /** @hidden */\n setReadonlyState = (isDisabled: boolean): void => {\n setReadonlyState(this.elementRef, isDisabled);\n };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly directive token');\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReadonlyObserver {\n /** @Hidden */\n constructor(private _attributeObserver: AttributeObserver) {}\n\n /** @Hidden */\n static isReadonly(element: Element): boolean {\n return element.classList.contains('is-readonly') || element.hasAttribute('readonly');\n }\n\n /** @hidden */\n observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n return this._attributeObserver.observe(element).pipe(\n map(() => ReadonlyObserver.isReadonly(getNativeElement(element))),\n distinctUntilChanged()\n );\n }\n\n /** @Hidden */\n unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n this._attributeObserver.unobserve(element);\n }\n}\n","import {\n DestroyRef,\n ElementRef,\n Inject,\n Injectable,\n NgZone,\n OnDestroy,\n Optional,\n Self,\n SkipSelf,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { ReadonlyObserver } from './readonly.observer';\n\n@Injectable()\nexport class FdkReadonlyProvider extends ReplaySubject<boolean> implements ReadonlyBehavior, OnDestroy {\n /** @Hidden */\n fdkReadonly = false;\n\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<ReadonlyViewModifier[]> = new BehaviorSubject<\n ReadonlyViewModifier[]\n >(this._getInitialViewModifiers());\n\n /** @hidden */\n private _readonlyChange$: Observable<boolean> = this._getReadonlyChange$();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<Element>,\n private readonlyObserver: ReadonlyObserver,\n @Optional() @Self() @Inject(FDK_READONLY_DIRECTIVE) private selfReadonly$: ReadonlyBehavior,\n @Optional() @SkipSelf() @Inject(FDK_READONLY_DIRECTIVE) private parentReadonly$: ReadonlyBehavior\n ) {\n super(1);\n\n combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(\n tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n this._readonlyChange$\n .pipe(\n tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n /** @hidden */\n addViewModifier(modifier: ReadonlyViewModifier): void {\n const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n this._viewModifiers$.next(viewModifiers);\n }\n\n /** @hidden */\n setReadonlyState(isReadonly: boolean): void {\n firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this.readonlyObserver.unobserve(this.elementRef);\n }\n\n /** @hidden */\n private _getReadonlyChange$(): Observable<boolean> {\n let selfReadonly = false;\n let parentReadonly = false;\n\n if (this.parentReadonly$) {\n this.parentReadonly$\n .pipe(\n startWith(this.parentReadonly$.fdkReadonly),\n tap((d) => (parentReadonly = d)),\n distinctUntilChanged(),\n tap(() => {\n if (parentReadonly) {\n this.setReadonlyState(true);\n }\n if (!selfReadonly && !parentReadonly) {\n this.setReadonlyState(false);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n if (this.selfReadonly$) {\n this.selfReadonly$\n .pipe(\n startWith(this.selfReadonly$.fdkReadonly),\n tap((d) => (selfReadonly = d)),\n distinctUntilChanged(),\n tap((isReadonly) => {\n if (!parentReadonly) {\n this.setReadonlyState(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n return this.readonlyObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n }\n\n /** @hidden */\n private _getInitialViewModifiers(): ReadonlyViewModifier[] {\n return !this.selfReadonly$ ? [new DefaultReadonlyViewModifier(this.elementRef)] : [this.selfReadonly$];\n }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\n@Directive({\n selector: '[fdkReadonly]',\n standalone: true,\n providers: [\n {\n provide: FDK_READONLY_DIRECTIVE,\n useExisting: ReadonlyBehaviorDirective\n }\n ]\n})\nexport class ReadonlyBehaviorDirective extends ReplaySubject<boolean> implements ReadonlyBehavior, AfterViewInit {\n /** @Hidden */\n @Input({ transform: booleanAttribute })\n set fdkReadonly(value: boolean) {\n this._readonlyInput$.next(value);\n }\n\n get fdkReadonly(): boolean {\n return this._readonly;\n }\n\n /** @Hidden */\n _readonly = false;\n /** @hidden */\n private readonly _readonlyInput$ = new BehaviorSubject(false);\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _destroyRef: DestroyRef\n ) {\n super(1);\n this._destroyRef.onDestroy(() => this.complete());\n }\n\n /** @Hidden */\n setReadonlyState = (isReadonly: boolean): void => {\n setReadonlyState(this._elementRef, isReadonly);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._readonlyInput$\n .pipe(\n tap((isReadonly) => {\n if (isReadonly !== this._readonly) {\n this.setReadonlyState(isReadonly);\n this._readonly = isReadonly;\n this.next(isReadonly);\n }\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReadonlyBehaviorDirective } from './readonly-behavior.directive';\n\n@NgModule({\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\n */\n@Directive({\n selector: '[fdkRepeat]',\n standalone: true\n})\nexport class RepeatDirective implements OnChanges {\n /** Number of times to render a template. */\n @Input('fdkRepeat')\n count: number;\n\n /** @hidden */\n constructor(\n private readonly _templateRef: TemplateRef<any>,\n private readonly _viewContainerRef: ViewContainerRef\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes['count'] || changes['deprecatedCount']) && Number.isInteger(this.count)) {\n this._viewContainerRef.clear();\n\n for (let index = 0; index < Math.max(0, this.count); index++) {\n this._viewContainerRef.createEmbeddedView(this._templateRef, { index });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { RepeatDirective } from './repeat.directive';\n\n@NgModule({\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n})\nexport class RepeatModule {}\n","import { Directive, ElementRef, inject, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\n\n@Directive({\n selector: '[fdkResizeObserver]',\n exportAs: 'fdkResizeObserver',\n standalone: true\n})\nexport class ResizeObserverDirective implements HasElementRef {\n /**\n * When the element is resized, emits an array of ResizeObserverEntry objects.\n **/\n @Output()\n resized: Observable<ResizeObserverEntry[]>;\n\n /**\n * The reference to the Resize target element.\n **/\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n /** @hidden */\n private _resizeObserverService = inject(ResizeObserverService);\n\n /** @hidden */\n constructor() {\n this.resized = this._resizeObserverService.observe(this.elementRef.nativeElement);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkResizeHandle]',\n standalone: true\n})\nexport class ResizeHandleDirective {\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n computed\n} from '@angular/core';\nimport { Observable, Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { RtlService } from '../../services/rtl.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\ninterface ResizeMove {\n x: number;\n y: number;\n}\n\n@Directive({\n selector: '[fdkResize]',\n standalone: true\n})\nexport class ResizeDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Element limiting resizable container growth */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeBoundary') resizeBoundary: string | HTMLElement = 'body';\n\n /** Whether resizable behaviour should be disabled */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeDisabled') disabled = false;\n\n /** Additional class to be applied to the Element ref during resize. */\n @Input()\n fdkResizeClass: string;\n\n /** Localization of resize handle inside resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeHandleLocation') resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n 'bottom-right';\n\n /** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeResizeHandleRef') set setResizeHandleReference(value: ResizeHandleDirective) {\n this.resizeHandleReference = value;\n }\n\n /** Emits event when resizing has tarted */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeStart = new EventEmitter<void>();\n\n /** Emits event when resizing has ended */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() onResizeEnd = new EventEmitter<void>();\n\n /** @hidden Reference to Resize handle */\n @ContentChild(ResizeHandleDirective, { static: false })\n set resizeHandleReference(value: Nullable<ResizeHandleDirective>) {\n this._resizeHandleReference = value;\n if (!value) {\n this._unsubscribe();\n } else {\n this._setResizeListeners();\n }\n }\n get resizeHandleReference(): Nullable<ResizeHandleDirective> {\n return this._resizeHandleReference;\n }\n\n /** @hidden */\n private _resizeHandleReference: Nullable<ResizeHandleDirective>;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _resizeSubscriptions = new Subscription();\n\n /** @hidden */\n private readonly _direction$ = computed(() => (this._rtlService?.rtlSignal() ? -1 : 1));\n\n /** @hidden */\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._unsubscribe();\n } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._resizeSubscriptions.unsubscribe();\n }\n\n /** @hidden */\n private _unsubscribe(): void {\n this._resizeSubscriptions.unsubscribe();\n this._resizeSubscriptions = new Subscription();\n }\n\n /** @hidden Sets Resize listeners */\n private _setResizeListeners(): void {\n this._unsubscribe();\n const resize = this._getResizeFunction();\n let moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer || !this.resizeHandleReference) {\n return;\n }\n const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);\n\n const mouseUpEvent$ = fromEvent<MouseEvent>(window, 'mouseup');\n const mouseMoveEvent$ = fromEvent<MouseEvent>(resizeContainer, 'mousemove');\n const mouseDownEvent$ = fromEvent<MouseEvent>(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');\n\n const resizeActive$ = merge(\n mouseDownEvent$.pipe(\n map(() => true),\n tap(() => {\n moveOffset = this._getMoveOffsetFunction();\n })\n ),\n mouseUpEvent$.pipe(map(() => false))\n );\n const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);\n const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);\n\n const resizingCursorMovement$ = mouseMoveEvent$.pipe(\n pairwise(),\n map(([event1, event2]: [MouseEvent, MouseEvent]) => moveOffset(event1, event2)),\n filter((move) => isBoundaryOverflow(move))\n );\n\n const setupResizer = (): void => {\n resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));\n };\n const setupResize$ = resizeActive$.pipe(\n filter((isActive) => isActive),\n tap(() => setupResizer())\n );\n\n this._resizeSubscriptions.add(setupResize$.subscribe());\n this._resizeSubscriptions.add(emitResizableEvents$.subscribe());\n this._resizeSubscriptions.add(preventOtherPointerEvents$.subscribe());\n }\n\n /** @hidden Creates resize function*/\n private _getResizeFunction(): (move: ResizeMove) => void {\n return (move: ResizeMove) => {\n this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;\n this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;\n };\n }\n\n /** @hidden Creates move function */\n private _getMoveOffsetFunction(): (event1: MouseEvent, event2: MouseEvent) => ResizeMove {\n let verticalModifier: 1 | -1;\n let horizontalModifier: 1 | -1;\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n horizontalModifier = -1;\n verticalModifier = -1;\n break;\n case 'top-right':\n horizontalModifier = -1;\n verticalModifier = 1;\n break;\n case 'bottom-left':\n horizontalModifier = 1;\n verticalModifier = -1;\n break;\n case 'bottom-right':\n horizontalModifier = 1;\n verticalModifier = 1;\n break;\n }\n\n return (event1: MouseEvent, event2: MouseEvent) => {\n const x = (event2.screenX - event1.screenX) * this._direction$();\n const y = event2.screenY - event1.screenY;\n\n return {\n x: x * verticalModifier,\n y: y * horizontalModifier\n };\n };\n }\n\n /** @hidden Return boundary container */\n private _findResizeContainer(): Element | null {\n let resizeContainer: Element | null;\n if (typeof this.resizeBoundary === 'string') {\n if (this.resizeBoundary === 'body') {\n return document.body;\n }\n resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);\n } else {\n resizeContainer = this.resizeBoundary;\n }\n\n if (resizeContainer) {\n return resizeContainer;\n } else {\n console.warn(`fdResize - Cannot find \"${this.resizeBoundary}\", falling back to \"body\"`);\n return document.body;\n }\n }\n\n /** @hidden Check whether resizable container is overflowing boundary container */\n private _getBoundaryOverflowFunction(resizeContainer: Element): (move: ResizeMove) => boolean {\n return (move: ResizeMove) => {\n const containerPosition = resizeContainer.getBoundingClientRect();\n const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();\n\n switch (this.resizeHandleLocation) {\n case 'top-left':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'top-right':\n return (\n containerPosition.top < elementPosition.top + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n case 'bottom-left':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.left < elementPosition.left + move.x\n );\n case 'bottom-right':\n return (\n containerPosition.bottom > elementPosition.bottom + move.y &&\n containerPosition.right > elementPosition.right + move.x\n );\n }\n };\n }\n\n /** @hidden Create Observable notifying on resize actions */\n private _getResizeEventsNotifiers(trigger$: Observable<boolean>): Observable<any> {\n const emitResizableStart$ = trigger$.pipe(\n filter((isActive) => isActive),\n tap(() => this.onResizeStart.emit())\n );\n\n const emitResizableEnd$ = trigger$.pipe(\n filter((isActive) => !isActive),\n tap(() => this.onResizeEnd.emit())\n );\n\n return merge(emitResizableStart$, emitResizableEnd$);\n }\n\n /** @hidden Block resizable container pointer events when resizing */\n private _blockOtherPointerEvents(trigger$: Observable<boolean>): Observable<any> {\n return trigger$.pipe(\n tap((isActive) => {\n if (!this.fdkResizeClass) {\n return;\n }\n if (!isActive) {\n this._elementRef.nativeElement.classList.remove(this.fdkResizeClass);\n } else {\n this._elementRef.nativeElement.classList.add(this.fdkResizeClass);\n }\n }),\n map((isActive) => (isActive ? 'none' : 'auto')),\n tap((value) => {\n this._elementRef.nativeElement.style.pointerEvents = value;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { ResizeDirective } from './resize.directive';\n\n@NgModule({\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Observable } from 'rxjs';\n\nexport type SelectableListValueType<T> = T extends any[] ? Array<any> : any;\n\nexport abstract class SelectComponentRootToken<T = any> {\n abstract selected?: SelectableListValueType<T>;\n abstract selectedChange: Observable<SelectableListValueType<T>>;\n abstract multiple?: BooleanInput;\n abstract toggle?: BooleanInput;\n abstract onChange: (value: SelectableListValueType<T>) => void;\n}\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\nexport abstract class SelectableItemToken<ElementType extends Element = HTMLElement, TValue = ElementType>\n implements HasElementRef<ElementType>\n{\n abstract value: TValue;\n abstract fdkSelectableItem?: boolean;\n\n abstract readonly elementRef: ElementRef<ElementType>;\n\n abstract clicked: Observable<MouseEvent | KeyboardEvent>;\n\n abstract setSelected(isSelected: boolean): void;\n\n abstract getSelected(): boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken(\n 'Token for providing custom behaviors to the SelectableListItem'\n);\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, DestroyRef, Injectable, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport equal from 'fast-deep-equal';\nimport { Observable, ReplaySubject, Subject, combineLatest, isObservable, merge, of, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\n\nexport type SelectionItemsList<ElementType extends Element, ValueType = ElementType> =\n | QueryList<SelectableItemToken<ElementType, ValueType>>\n | Observable<SelectableItemToken<ElementType, ValueType>[]>\n | SelectableItemToken<ElementType, ValueType>[];\n\n@Injectable()\nexport class SelectionService<ElementType extends Element, ValueType = ElementType> {\n /** @hidden */\n value$: Observable<SelectableListValueType<ValueType>>;\n\n /** @hidden */\n private _items$!: Observable<SelectableItemToken<ElementType, ValueType>[]>;\n /** @hidden */\n private _value$ = new ReplaySubject<SelectableListValueType<ValueType>>(1);\n /** @hidden */\n private _normalizedValue$: Observable<ValueType[]>;\n /** @hidden */\n private _rootComponent!: SelectComponentRootToken<ElementType>;\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n /** @hidden */\n private _clear$ = new Subject<void>();\n /** @hidden */\n private _value: ValueType[] = [];\n\n /** @hidden */\n constructor(private _cd: ChangeDetectorRef) {\n this._normalizedValue$ = this._value$.pipe(\n distinctUntilChanged(equal),\n map((v) => coerceArray<ValueType>(v)),\n map((value) => (this._isMultipleMode ? value : [value[0]])),\n map((coerced: ValueType[]) => coerced.filter(Boolean))\n );\n this._normalizedValue$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((val) => (this._value = val));\n this.value$ = this._normalizedValue$.pipe(\n map((v) => this._getProperValues(v as SelectableListValueType<ElementType>)),\n shareReplay(1)\n );\n }\n\n /**\n * Register main select component, which holds config\n * */\n registerRootComponent(rootComponent: SelectComponentRootToken<ElementType>): void {\n this._rootComponent = rootComponent;\n }\n\n /**\n * Clear listeners\n */\n clear(): void {\n this._clear$.next();\n }\n\n /**\n * Initialize watcher for selection changes and user interactions\n * */\n initialize(list: SelectionItemsList<ElementType, ValueType>): void {\n if (list instanceof QueryList) {\n this._items$ = list.changes.pipe(\n startWith(list),\n map((items: QueryList<SelectableItemToken<ElementType, ValueType>>) => items.toArray()),\n shareReplay(1)\n );\n } else {\n this._items$ = isObservable(list) ? list : of(list);\n }\n this.listenToItemInteractions();\n }\n\n /**\n * Sets Value, on which service looks at and updates UI accordingly\n * */\n setValue(v: SelectableListValueType<ElementType>): void {\n this._value$.next(v);\n }\n\n /** @hidden */\n getValue(): SelectableListValueType<ElementType> {\n return this._getProperValues(this._value as SelectableListValueType<ElementType>);\n }\n\n /**\n * Start listening for item interactions. Will destroy() first.\n * Will silently continue if service was not initialized first.\n * */\n listenToItemInteractions(): void {\n this.clear();\n const unsubscribe$ = merge(destroyObservable(this._destroyRef), this._clear$);\n if (this._items$) {\n this._items$\n .pipe(\n map((items) => items.filter((itm) => itm.fdkSelectableItem !== false)),\n switchMap((items: SelectableItemToken<ElementType, ValueType>[]) => {\n const clickedEvents$ = items.map((item) => item.clicked.pipe(map(() => item)));\n return merge(...clickedEvents$);\n }),\n tap((clickedItem) => this._itemClicked(clickedItem)),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n combineLatest([this._normalizedValue$, this._items$])\n .pipe(\n tap(([value, items]) => {\n if (\n value.length === 0 &&\n items.some((itm) => itm.getSelected()) &&\n !this._rootComponent.toggle\n ) {\n const selectedValues = this._getSelectedValues(items);\n this._rootComponent.onChange(selectedValues as SelectableListValueType<ElementType>);\n return this._value$.next(selectedValues as SelectableListValueType<ElementType>);\n }\n items.forEach((item) => {\n item.setSelected(value.includes(item.value));\n });\n this._cd.detectChanges();\n }),\n takeUntil(unsubscribe$)\n )\n .subscribe();\n }\n }\n\n /** @hidden */\n selectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n if (item.fdkSelectableItem !== false) {\n const val: ValueType[] = [item.value, ...this._value];\n const properValues = this._getProperValues(val as SelectableListValueType<ElementType>);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n deselectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n const canBeDeselected = this._rootComponent.toggle || (this._isMultipleMode && this._value.length > 1);\n if (canBeDeselected) {\n const val: SelectableListValueType<ElementType> = this._value.filter(\n (v) => v !== item.value\n ) as SelectableListValueType<ElementType>;\n const properValues = this._getProperValues(val);\n this._value$.next(properValues);\n this._rootComponent.onChange(properValues);\n }\n }\n\n /** @hidden */\n private get _isMultipleMode(): boolean {\n return this._rootComponent.multiple === true;\n }\n\n /** @hidden */\n private _itemClicked(item: SelectableItemToken<ElementType, ValueType>): void {\n const wasSelected = this._value.includes(item.value);\n if (wasSelected) {\n this.deselectItem(item);\n } else {\n this.selectItem(item);\n }\n }\n\n /** @hidden */\n private _getSelectedValues(items: SelectableItemToken<ElementType, ValueType>[]): ElementType | ElementType[] {\n const selectedValues = items.filter((itm) => itm.getSelected()).map((itm) => itm.value);\n return this._getProperValues(selectedValues as SelectableListValueType<ElementType>);\n }\n\n /** @hidden */\n private _getProperValues(values: SelectableListValueType<ElementType>): SelectableListValueType<ElementType> {\n return this._isMultipleMode ? values : values[0];\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableItem]',\n exportAs: 'fdkSelectableItem',\n standalone: true,\n providers: [\n {\n provide: SelectableItemToken,\n useExisting: SelectableItemDirective\n },\n FdkReadonlyProvider,\n FdkDisabledProvider,\n FdkClickedProvider\n ]\n})\nexport class SelectableItemDirective<ElementType extends Element = HTMLElement, ValueType = any>\n implements SelectableItemToken<ElementType, ValueType>\n{\n /** @hidden */\n @Input()\n set value(val: ValueType) {\n this._value = val;\n }\n get value(): ValueType {\n if (this.provider && this.provider.value) {\n return this.provider.value;\n }\n return this._value;\n }\n\n /** @hidden */\n @Input()\n set fdkSelectableItem(value: BooleanInput) {\n const isSelectable = coerceBooleanProperty(value);\n if (isSelectable !== this._selectable) {\n this._selectable = isSelectable;\n }\n }\n\n get fdkSelectableItem(): boolean {\n let selectable = this._selectable;\n if (typeof this.provider?.fdkSelectableItem !== 'undefined') {\n selectable = this.provider.fdkSelectableItem;\n }\n return (\n selectable &&\n (!this.disabled$ || !this.disabled$?.fdkDisabled) &&\n (!this.readonly$ || !this.readonly$?.fdkReadonly)\n );\n }\n\n /** @hidden */\n @Output()\n clicked: Observable<MouseEvent | KeyboardEvent>;\n\n /** Event emitted when selection state being changed for selectable item. */\n @Output()\n selected = new EventEmitter<boolean>();\n\n /** @hidden */\n private _value!: ValueType;\n /** @hidden */\n private _selected = false;\n /** @hidden */\n private _selectable = true;\n\n /** @hidden */\n constructor(\n @Optional()\n @Inject(FDK_SELECTABLE_ITEM_PROVIDER)\n private provider: Partial<SelectableItemToken<ElementType, ValueType>>,\n private disabled$: FdkDisabledProvider,\n private readonly$: FdkReadonlyProvider,\n private selectionService: SelectionService<ElementType, ValueType>,\n public readonly elementRef: ElementRef<ElementType>,\n _clicked: FdkClickedProvider\n ) {\n this.clicked = this.provider?.clicked || _clicked.asObservable();\n this._listenToDisablingEvents();\n }\n\n /** @hidden */\n getSelected(): boolean {\n if (this.provider?.getSelected) {\n return this.provider.getSelected();\n }\n return this._selected;\n }\n\n /** @hidden */\n setSelected(isSelected: boolean): void {\n if (this.provider?.setSelected) {\n this.provider.setSelected(isSelected);\n } else {\n this._selected = isSelected;\n const htmlElement = this.elementRef.nativeElement;\n const { classList } = htmlElement;\n if (isSelected) {\n classList.add('is-selected');\n } else {\n classList.remove('is-selected');\n }\n htmlElement.setAttribute('aria-selected', `${isSelected}`);\n }\n\n this.selected.emit(isSelected);\n }\n\n /** @hidden */\n private _listenToDisablingEvents(): void {\n const disablingEvents$: Observable<boolean>[] = [];\n if (this.disabled$) {\n disablingEvents$.push(this.disabled$);\n }\n if (this.readonly$) {\n disablingEvents$.push(this.readonly$);\n }\n merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());\n }\n\n /** @hidden */\n private _updateSelectionAndSelectableWatcher(): void {\n if (this.disabled$?.fdkDisabled) {\n this.selectionService.deselectItem(this);\n }\n this._updateSelectableWatcher();\n }\n\n /** @hidden */\n private _updateSelectableWatcher(): void {\n this.selectionService.listenToItemInteractions();\n }\n}\n","import {\n AfterViewInit,\n ContentChildren,\n Directive,\n EventEmitter,\n Input,\n Output,\n QueryList,\n booleanAttribute\n} from '@angular/core';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n selector: '[fdkSelectableList]',\n exportAs: 'fdkSelectableList',\n standalone: true,\n providers: [\n {\n provide: SelectComponentRootToken,\n useExisting: SelectableListDirective\n },\n SelectionService\n ]\n})\nexport class SelectableListDirective<T extends Element = HTMLElement, V = any>\n implements SelectComponentRootToken<T>, AfterViewInit\n{\n /** @hidden */\n @Output()\n selectedChange = new EventEmitter<SelectableListValueType<T>>();\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n toggle = false;\n\n /** @hidden */\n @Input({ transform: booleanAttribute })\n multiple = false;\n\n /** @hidden */\n @Input()\n set selected(value: SelectableListValueType<T>) {\n this._selectionService.setValue(value);\n }\n\n /** @hidden */\n @ContentChildren(SelectableItemToken) selectableItems!: QueryList<SelectableItemToken<T, V>>;\n\n /** @hidden */\n constructor(private _selectionService: SelectionService<T, V>) {\n this._selectionService.registerRootComponent(this);\n }\n\n /** @hidden */\n select(item: SelectableItemToken<T, V>): void {\n this._selectionService.selectItem(item);\n }\n\n /** @hidden */\n deselect(item: SelectableItemToken<T, V>): void {\n this._selectionService.deselectItem(item);\n }\n\n /** @hidden */\n toggleSelect(item: SelectableItemToken<T, V>): void {\n if (item.getSelected()) {\n this.deselect(item);\n } else {\n this.select(item);\n }\n }\n\n /** @hidden */\n onChange(value: SelectableListValueType<T>): void {\n this.selectedChange.emit(value);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._selectionService.initialize(this.selectableItems);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SelectableItemDirective } from './selectable-item.directive';\nimport { SelectableListDirective } from './selectable-list.directive';\n\n@NgModule({\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n /** Name of the template */\n @Input('fdkTemplate')\n name: string;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\n\n /** @hidden */\n getName(): string {\n return this.name;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from './template.directive';\n\n@NgModule({\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterContentChecked, AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkTruncate]',\n standalone: true\n})\nexport class TruncateDirective implements OnChanges, AfterViewInit {\n /**\n * Width in pixel for truncation of an element , by default\n */\n @Input()\n set fdkTruncateWidth(value: Nullable<number>) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n\n /**\n * Truncating state\n */\n @Input()\n fdkTruncateState = false;\n\n /** @hidden */\n private _customWidthCount = 200;\n\n /** @hidden */\n private _truncateTarget: HTMLElement;\n\n /** @hidden\n * saves default style of element before truncating\n */\n private _defaultStyle: string;\n\n /** @hidden */\n private takeDefaultStyleOnce = true;\n\n /** @hidden\n * truncation style for truncating element\n */\n private _truncationStyle: string;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Root native element\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle(): void {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.rootElement) {\n this._truncate();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._truncate();\n }\n\n /** @hidden */\n private _truncate(): void {\n this._truncateTarget = this.rootElement;\n\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n}\n\n@Directive({\n selector: '[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]',\n standalone: true\n})\nexport class TruncatedTitleDirective implements AfterContentChecked {\n /** @hidden */\n constructor(private _elRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n const el = this._elRef.nativeElement;\n if (el.scrollWidth > el.offsetWidth) {\n el.title = el.innerText;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective, TruncatedTitleDirective } from './truncate.directive';\n\n@NgModule({\n imports: [TruncateDirective, TruncatedTitleDirective],\n exports: [TruncateDirective, TruncatedTitleDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const DND_ITEM = new InjectionToken('Drag and drop Item');\nexport const DND_LIST = new InjectionToken('Drag and drop List');\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n forwardRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM } from '../tokens';\n\n@Directive({\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }],\n standalone: true\n})\nexport class DndItemDirective<T = any> implements DndItem, AfterContentInit, OnDestroy {\n /** Item reference. Used for cases when `[items]` array of dnd list is different than `dndItems` content children. */\n @Input('fdkDndItem')\n item: Nullable<T>;\n /**\n * Whether to apply \"fd-dnd-item\" class.\n * @default true\n */\n @Input()\n @HostBinding('class.fd-dnd-item')\n applyDragItemClass = true;\n\n /** Container selector */\n @Input()\n containerSelector?: string;\n\n /** Event thrown when the element is moved by 1px */\n @Output()\n readonly moved = new EventEmitter<ElementPosition>();\n\n /** Event thrown when the element is released */\n @Output()\n readonly released = new EventEmitter<void>();\n\n /** Event thrown when the element is started to be dragged */\n @Output()\n readonly started = new EventEmitter<void>();\n\n /**\n * Defines if the item is prevented from being moved by other elements.\n * So nothing can be placed just before and just after it\n */\n @Input()\n stickInPlace = false;\n\n /** Defines if element is draggable */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this.changeCDKDragState();\n }\n\n /** Class added to element, when it's dragged. */\n @Input()\n classWhenElementDragged = 'fd-dnd-on-drag';\n\n /** Defines if every element in list is draggable */\n listDraggable = true;\n\n /** @hidden\n * Drag reference, object created from DND CDK Service\n */\n private _dragRef: DragRef;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _placeholderElement: HTMLElement | null = null;\n\n /** @hidden */\n private _lineElement: HTMLElement | null = null;\n\n /** @hidden */\n private _replaceIndicator: HTMLElement | null = null;\n\n /** @hidden */\n constructor(\n public readonly elementRef: ElementRef,\n private readonly _dragDrop: DragDrop,\n private readonly _renderer: Renderer2\n ) {}\n\n /** @hidden */\n getElementCoordinates(isBefore: boolean): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n const position: LinkPosition = isBefore ? 'before' : 'after';\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n position,\n y: rect.top,\n stickToPosition: this.stickInPlace,\n width: rect.width,\n height: rect.height\n };\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setCDKDrag();\n this._listenElementEvents();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._dragRef.dispose();\n }\n\n /** @hidden */\n onCdkMove(position: ElementPosition): void {\n this.moved.emit(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n /** Remove class which is added, when element is dragged */\n this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);\n this.released.emit();\n\n /** Resets the position of element. */\n this._dragRef.reset();\n\n /** Removes placeholder element */\n this.removePlaceholder();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);\n\n if (!this._placeholderElement) {\n this.createPlaceholder();\n }\n this.started.emit();\n }\n\n /** @hidden */\n removePlaceholder(): void {\n if (this._placeholderElement && this._placeholderElement.parentNode) {\n // IE11 workaround\n this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n this._placeholderElement = null;\n }\n }\n\n /** @hidden */\n removeLine(): void {\n if (this._lineElement && this._lineElement.parentNode) {\n // IE11 workaround\n this._lineElement.parentNode.removeChild(this._lineElement);\n this._lineElement = null;\n }\n }\n\n /** @hidden */\n removeReplaceIndicator(): void {\n if (this._replaceIndicator && this._replaceIndicator.parentNode) {\n // IE11 workaround\n this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);\n this._replaceIndicator = null;\n }\n }\n\n /** @hidden */\n createReplaceIndicator(): void {\n this._replaceIndicator = document.createElement('DIV');\n this._replaceIndicator.classList.add('fd-replace-indicator');\n\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._replaceIndicator);\n }\n\n /** @hidden */\n createLine(position: LinkPosition, gridMode: boolean): void {\n /** Creating of line element */\n this._lineElement = document.createElement('div');\n this._lineElement.classList.add('drop-area__line');\n\n if (gridMode) {\n this._lineElement.classList.add('drop-area__line--vertical');\n } else {\n this._lineElement.classList.add('drop-area__line--horizontal');\n }\n if (position === 'after') {\n this._lineElement.classList.add('after');\n }\n if (position === 'before') {\n this._lineElement.classList.add('before');\n }\n\n /** Putting element to the container */\n let container = this.elementRef.nativeElement;\n if (this.containerSelector) {\n const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n if (newContainer) {\n container = newContainer;\n }\n }\n\n container.appendChild(this._lineElement);\n }\n\n /** @hidden */\n changeCDKDragState(): void {\n if (this._dragRef) {\n this._dragRef.disabled = !(this._draggable && this.listDraggable);\n }\n }\n\n /**\n * Sets the disabled state of the dnd item.\n * @param state\n */\n setDisabledState(state: boolean): void {\n if (state) {\n this._renderer.addClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n } else {\n this._renderer.removeClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n }\n }\n\n /** @hidden */\n private createPlaceholder(): void {\n const placeholder = this.elementRef.nativeElement.cloneNode(true);\n /** Cloning container element */\n this._placeholderElement = placeholder;\n\n placeholder.classList.add('fd-dnd-placeholder');\n this._setPlaceholderStyles();\n\n /** Including element to the container\n * IE11 equivalent to `this.element.nativeElement.after(clone);`\n */\n this._placeAfter(this.elementRef.nativeElement, placeholder);\n }\n\n /** @hidden */\n private _setPlaceholderStyles(): void {\n const offset = this._getOffsetToParent(this.elementRef.nativeElement);\n\n if (!offset || !this._placeholderElement) {\n return;\n }\n\n this._placeholderElement.style.top = offset.y + 'px';\n this._placeholderElement.style.left = offset.x + 'px';\n this._placeholderElement.style.position = 'absolute';\n this._placeholderElement.style.zIndex = '0';\n this._placeholderElement.style.opacity = '0.3';\n\n this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';\n this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';\n }\n\n /** @hidden */\n private _getOffsetToParent(element: Element): { x: number; y: number } | undefined {\n const parentElement = element.parentElement;\n if (!parentElement) {\n return;\n }\n\n const parentElmRect = parentElement.getBoundingClientRect();\n const elmRect = element.getBoundingClientRect();\n\n const parentTop = parentElmRect.top;\n const parentLeft = parentElmRect.left;\n\n return {\n x: Math.abs(elmRect.left - parentLeft),\n y: Math.abs(elmRect.top - parentTop)\n };\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this._dragRef = this._dragDrop.createDrag(this.elementRef);\n this._dragRef.disabled = !this._draggable;\n this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));\n this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));\n this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));\n }\n\n /** IE11 equivalent of Node.after() Method */\n private _placeAfter(element: Element, cloneNode: Node): void {\n const docFrag = document.createDocumentFragment();\n docFrag.appendChild(cloneNode);\n element.parentNode?.insertBefore(docFrag, element.nextSibling);\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n this._subscriptions.add(\n this.released\n .pipe(\n // postpone blur\n delay(0)\n )\n .subscribe(() => {\n if (this.containerSelector) {\n this.elementRef.nativeElement.children[0].blur();\n }\n this.elementRef.nativeElement.blur();\n })\n );\n }\n}\n","import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, Input, Optional } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { RtlService } from '../../services/rtl.service';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardItem.\n */\n@Directive({\n selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]'\n})\nexport class DndKeyboardGroupDirective {\n /** Group of items */\n @Input()\n groups: any[][];\n\n /** Whether to disable drag & drop */\n @Input()\n disableKeyboardDragDrop = false;\n\n /** Used to apply indexes when moving between groups */\n @Input()\n orientation: 'horizontal' | 'vertical' = 'vertical';\n\n /** @hidden */\n _onDndItemFocus$ = new Subject<[number, number]>();\n\n /** @hidden */\n constructor(\n private readonly _cdr: ChangeDetectorRef,\n @Optional() private readonly _rtlService: RtlService\n ) {}\n\n /** Custom function to call when moving item inside the group */\n @Input()\n customMoveFn = (group: any[], fromIndex: number, toIndex: number): void =>\n moveItemInArray(group, fromIndex, toIndex);\n\n /** Custom function to call when moving item between groups */\n @Input()\n customTransferFn = (group: any[], nextGroup: any[], fromIndex: number, toIndex: number): void =>\n transferArrayItem(group, nextGroup, fromIndex, toIndex);\n\n /** Process drag & drop */\n processDragDrop(event: KeyboardEvent, itemIndex: number, groupIndex: number): void {\n if (this.disableKeyboardDragDrop || !event.altKey) {\n return;\n }\n\n const isRtl = this._rtlService.rtl.value;\n\n const group = this.groups[groupIndex];\n const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;\n\n const nextGroupExists = this.groups.length > groupIndex + 1;\n const prevGroupExists = !!groupIndex;\n\n if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {\n event.preventDefault();\n\n const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);\n const nextGroup = this.groups[nextGroupIndex];\n\n this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n this._focusDndItem(nextGroupIndex, indexInNextGroup);\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex + 1);\n this._focusDndItem(groupIndex, itemIndex + 1);\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n event.preventDefault();\n\n this.customMoveFn(group, itemIndex, itemIndex - 1);\n this._focusDndItem(groupIndex, itemIndex - 1);\n }\n }\n\n /** @hidden Focus after moving elements with keyboard */\n private _focusDndItem(groupIndex: number, itemIndex: number): void {\n this._cdr.detectChanges();\n\n this._onDndItemFocus$.next([groupIndex, itemIndex]);\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardGroup.\n * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.\n * Please see example below:\n * @Component({\n * selector: 'cdk-drag-drop-example',\n * template: `<div\n * cdkDragListGroup\n * fdDndKeyboardGroup\n * [groups]=\"groups\"\n * >\n * <div\n * *ngFor=\"let group of groups; let groupIndex = index\"\n * cdkDragList\n * >\n * Group #{{ groupIndex }}\n * <div\n * *ngFor=\"let item of group; let index = index\"\n * cdkDrag\n * fdDndKeyboardItem\n * [itemIndex]=\"index\"\n * [groupIndex]=\"groupIndex\"\n * [dndKeyboardDisabled]=\"flag for disable/enable keyboard navigation if needed\"\n * tabindex=\"0\"\n * >\n * Item #{{ item }}\n * </div>\n * </div>\n * </div>`,\n * })\n * export class CdkDragDropExample {\n * groups = [\n * [1, 2, 3],\n * [4, 5, 6],\n * ];\n * }\n */\n@Directive({\n selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]'\n})\nexport class DndKeyboardItemDirective implements OnInit, OnDestroy {\n /** item index in group(column) */\n @Input()\n itemIndex: number;\n\n /** group(column) index */\n @Input()\n groupIndex: number;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private readonly _dndGroup: DndKeyboardGroupDirective,\n private readonly _elementRef: ElementRef\n ) {}\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeyDown(event: KeyboardEvent): void {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {\n if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n}\n","import { isFunction } from '../typecheck';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Executes function and passes returned value into callback function.\n */\nexport class FunctionStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(fn: () => T, updateLatestValue: (v: T) => any): Promise<void> {\n const result = isFunction(fn) ? fn() : ((<any>fn) as T);\n return Promise.resolve(result).then(updateLatestValue);\n }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Converts observable into Promise and passes returned value into callback function.\n */\nexport class ObservableStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Observable<T>, updateLatestValue: any): Promise<void> {\n return firstValueFrom(async).then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description awaits for promise to resolve it's value and passes returned value into callback function.\n */\nexport class PromiseStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(async: Promise<T>, updateLatestValue: (v: T) => any): Promise<void> {\n return async.then(updateLatestValue, (e) => {\n console.error(e);\n });\n }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Passes value object into callback function.\n */\nexport class ValueStrategy<T> implements SubscriptionStrategy<T> {\n /** @hidden */\n createSubscription(value: T, updateLatestValue: (v: T) => any): Promise<void> {\n return Promise.resolve(value).then(updateLatestValue);\n }\n}\n","import { Observable } from 'rxjs';\nimport { isFunction, isPromise, isSubscribable } from '../typecheck';\n\nimport { FunctionStrategy } from './function-strategy.class';\nimport { ObservableStrategy } from './observable-strategy.class';\nimport { PromiseStrategy } from './promise-strategy.class';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\nimport { ValueStrategy } from './value-strategy.class';\n\n/**\n * @description Selects appropriate strategy on how to resolve function value\n * @param obj object to get value from\n * @returns appropriate strategy to retrieve value from the object\n */\nexport function selectStrategy<T = any>(obj: Observable<T> | Promise<T> | (() => void) | T): SubscriptionStrategy<T> {\n if (isPromise(obj)) {\n return new PromiseStrategy<T>();\n }\n\n if (isSubscribable(obj)) {\n return new ObservableStrategy<T>();\n }\n\n if (isFunction(obj)) {\n return new FunctionStrategy<T>();\n }\n\n return new ValueStrategy<T>();\n}\n","import {\n AfterContentInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { destroyObservable } from '../../helpers';\nimport { DndItem, ElementChord, ElementPosition, FdDndDropType, FdDropEvent, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM, DND_LIST } from '../tokens';\n\nexport type DropPredicate<T> = (\n dragItem: T,\n dropItem: T,\n event: FdDropEvent<T>\n) => boolean | Promise<boolean> | Observable<boolean>;\nexport type DragoverPredicate<T> = (\n dragItem: T,\n dragOverItem: T,\n dragItemIndex: number,\n dragOverItemIndex: number\n) => boolean;\n\n@Directive({\n selector: '[fdkDndList], [fd-dnd-list]',\n providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }],\n standalone: true\n})\nexport class DndListDirective<T> implements AfterContentInit, OnDestroy {\n /**\n * Defines if the element is allowed to be dragged in 2 dimensions,\n * When true - replace indicator will be displayed vertically\n */\n @Input()\n gridMode = false;\n\n /**\n * Defines drop strategy:\n * * `shift` mode will create line after the closest drop element.\n * * `group` mode will create replace indicator on a whole closest drop element.\n * * `auto` mode will create a line after the closest drop element\n * if dragged element coordinates are shifted for 30% from the center of the closest drop element.\n * Otherwise, it will create replace indicator on a whole closest drop element.\n *\n * `shift` mode is the default.\n */\n @Input()\n dropMode: FdDndDropType = 'shift';\n\n /**\n * Threshold of dragged item over another item to define which type of `dropMode` should be used.\n */\n @Input()\n threshold = 0.3;\n\n /** Array of items, that will be sorted */\n @Input()\n items: Array<T> = [];\n\n /** Defines if drag and drop feature should be enabled for list items */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /** Predicate function that checks whether the item can be dropped over another item. */\n @Input()\n dropPredicate: DropPredicate<T> | undefined;\n\n /**\n * Predicate function that checks whether the item can be dragged over another item.\n * If the function returns `false`, dragged over item will not be highlighted, and drop event will be canceled.\n */\n @Input()\n dragoverPredicate: DragoverPredicate<T> | undefined;\n\n /**\n * Event emitted when `dropPredicate` function evaluation changes.\n * Emits `true` when evaluation started, and `false` when completed.\n */\n @Output()\n dropPredicateCalculating = new EventEmitter<boolean>();\n\n /** Event that is thrown when items are reordered */\n @Output()\n readonly itemsChange = new EventEmitter<Array<T>>();\n\n /** Event that is thrown when the item is dropped */\n @Output()\n readonly itemDropped = new EventEmitter<FdDropEvent<T>>();\n\n /** Event that is thrown when predicate function returned false. */\n @Output()\n readonly dropCancelled = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChildren(DND_ITEM)\n dndItems: QueryList<DndItem<T>>;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-dnd-list';\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestItemPosition: 'before' | 'after' | null = null;\n\n /** An RxJS Subject that will kill the current data stream (for unsubscribing) */\n private readonly _refresh$ = new Subject<void>();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dndItemReference: DndItem[];\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private _detectedDropMode: 'shift' | 'group';\n\n /** @hidden */\n private _linesRemoved = true;\n\n /** @hidden */\n private _indicatorsRemoved = true;\n\n /** @hidden */\n private _draggedItem: T | undefined;\n\n /** @hidden */\n private _ignoreDrop = false;\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._changeDraggableState(this._draggable);\n this.dndItems.changes\n .pipe(startWith(null), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.refreshQueryList());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._refresh$.next();\n this._refresh$.complete();\n }\n\n /**\n * Refreshes the indexes of the items.\n */\n refreshQueryList(): void {\n const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n\n this._dndItemReference = this.dndItems.toArray();\n\n this._changeDraggableState(this._draggable);\n\n this.dndItems.forEach((item, index) => {\n item.moved.pipe(takeUntil(refresh$)).subscribe((position: ElementPosition) => this.onMove(position, index));\n item.started.pipe(takeUntil(refresh$)).subscribe(() => this.dragStart(index));\n item.released.pipe(takeUntil(refresh$)).subscribe(async () => await this.dragEnd(index));\n });\n }\n\n /** Method called when the item is being moved by 1 px */\n onMove(mousePosition: ElementPosition, draggedItemIndex: number): void {\n /** Temporary object, to store lowest distance values */\n let closestItemIndex: number | null = null;\n\n const closestDndItem = this._elementsCoordinates.find((element, index) => {\n /** Check if an element can be replaced */\n if (!element.stickToPosition && closestItemIndex !== index) {\n const isMouseOnElement = _isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n closestItemIndex = index;\n\n return true;\n }\n }\n return false;\n });\n\n if (!closestDndItem) {\n closestItemIndex = null;\n }\n\n /** If the closest element is different from the old one, the new one is picked. It prevents from performance issues */\n if (\n (closestItemIndex || closestItemIndex === 0) &&\n (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')\n ) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._closestItemIndex = closestItemIndex;\n this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;\n const closestItem = this.items[this._closestItemIndex];\n // If closest item index is same as dragged item, just remove indicators\n if (closestItemIndex === draggedItemIndex) {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n return;\n }\n if (\n this.dragoverPredicate &&\n this._draggedItem &&\n !this.dragoverPredicate(this._draggedItem, closestItem, draggedItemIndex, this._closestItemIndex)\n ) {\n this._ignoreDrop = true;\n this._setDisabledItem(this._closestItemIndex);\n return;\n }\n this._setDisabledItem(-1);\n /** Generating line, that shows where the element will be placed, on a drop */\n if (this.dropMode === 'group') {\n this._createReplaceIndicator(this._closestItemIndex);\n } else if (this.dropMode === 'shift') {\n this._createLine(this._closestItemIndex, this._closestItemPosition);\n } else {\n this._selectDropModeIndicator(draggedItemIndex, closestDndItem, closestItemIndex);\n }\n }\n }\n\n /** Method called when an element is started to be dragged */\n dragStart(index: number): void {\n const draggedItemElement = this._dndItemReference[index].elementRef;\n this._draggedItem = this.items[index];\n /** Counting all the element's chords */\n this._elementsCoordinates = this._dndItemReference.map((item: DndItem) =>\n item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode)\n );\n }\n\n /** Method called when an element is released */\n async dragEnd(draggedItemIndex: number): Promise<void> {\n this._draggedItem = undefined;\n const items = this.items.slice();\n const replacedItemIndex = this._closestItemIndex;\n this._setDisabledItem(-1);\n\n if (this._ignoreDrop) {\n this._ignoreDrop = false;\n return;\n }\n\n if (replacedItemIndex === null || replacedItemIndex === -1) {\n return;\n }\n\n const draggedDndItem = this.dndItems.get(draggedItemIndex)?.item ?? items[draggedItemIndex];\n const replacedDndItem = this.dndItems.get(replacedItemIndex)?.item ?? items[replacedItemIndex];\n\n const predicateSubj = new Subject<boolean>();\n\n const evt: FdDropEvent<T> = {\n replacedItemIndex,\n draggedItemIndex,\n items,\n insertAt: this._closestItemPosition,\n mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode\n };\n\n predicateSubj.pipe(take(1)).subscribe((result) => {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n\n /** Reset */\n this._elementsCoordinates = [];\n this._closestItemIndex = null;\n this._closestItemPosition = null;\n\n if (!result) {\n this.dropCancelled.emit();\n return;\n }\n\n if (draggedItemIndex !== replacedItemIndex) {\n if (draggedItemIndex < replacedItemIndex) {\n for (let i = draggedItemIndex; i < replacedItemIndex; i++) {\n items[i] = items[i + 1];\n }\n } else {\n for (let i = draggedItemIndex; i > replacedItemIndex; i--) {\n items[i] = items[i - 1];\n }\n }\n\n /** Replacing items */\n items[replacedItemIndex] = draggedDndItem;\n\n this.itemsChange.emit(items);\n }\n\n this.itemDropped.emit(evt);\n });\n\n if (this.dropPredicate !== undefined) {\n this.dropPredicateCalculating.emit(true);\n const obj = this.dropPredicate(draggedDndItem, replacedDndItem, evt);\n const strategy = selectStrategy(obj);\n\n await strategy.createSubscription(obj, (result) => {\n predicateSubj.next(result);\n this.dropPredicateCalculating.emit(false);\n });\n } else {\n predicateSubj.next(true);\n }\n }\n\n /** @hidden */\n private _setDisabledItem(itemIndex: number): void {\n this.dndItems.forEach((item, index) => {\n item.setDisabledState(index === itemIndex);\n });\n }\n\n /** @hidden */\n private _selectDropModeIndicator(\n draggedItemIndex: number,\n closestItem: ElementChord | undefined,\n closestItemIndex: number\n ): void {\n if (!closestItem || !this._dndItemReference[draggedItemIndex]) {\n return;\n }\n\n let newDetectedDropMode: 'shift' | 'group';\n const draggedElmCoords =\n this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();\n\n const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);\n const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);\n\n if (\n _between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&\n _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)\n ) {\n newDetectedDropMode = 'group';\n } else {\n newDetectedDropMode = 'shift';\n }\n\n if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {\n return;\n }\n\n this._detectedDropMode = newDetectedDropMode;\n\n if (this._detectedDropMode === 'shift') {\n this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);\n } else {\n this._createReplaceIndicator(closestItemIndex);\n }\n }\n\n /** @hidden */\n private _removeAllLines(): void {\n this._linesRemoved = true;\n this.dndItems.forEach((item) => item.removeLine());\n }\n\n /** @hidden */\n private _removeAllReplaceIndicators(): void {\n this._indicatorsRemoved = true;\n this.dndItems.forEach((item) => item.removeReplaceIndicator());\n }\n\n /** @hidden */\n private _createLine(closestItemIndex: number, linkPosition: LinkPosition): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._linesRemoved = false;\n this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);\n }\n\n /** @hidden */\n private _createReplaceIndicator(closestItemIndex: number): void {\n this._removeAllLines();\n this._removeAllReplaceIndicators();\n this._indicatorsRemoved = false;\n this._dndItemReference[closestItemIndex].createReplaceIndicator();\n }\n\n /**\n * @hidden\n * Return information if an element is placed before the dragged element\n */\n private _isBefore(draggedElement: ElementRef, targetElement: ElementRef): boolean {\n /** Sometimes the elements are not straight in one column, that's why offset is needed */\n const VERTICAL_OFFSET = 20;\n\n /** Distances from the top of the screen */\n const draggedElementBound = draggedElement.nativeElement.getBoundingClientRect();\n const targetElementBound = targetElement.nativeElement.getBoundingClientRect();\n\n if (draggedElementBound.top - targetElementBound.top > VERTICAL_OFFSET) {\n /** If an element is higher than the dragged element, it's for sure before */\n return true;\n } else if (targetElementBound.top - draggedElementBound.top > VERTICAL_OFFSET) {\n /** If an element is lower than the dragged element, it's for sure after */\n return false;\n } else {\n /** If elements are in same level, the horizontal position decides if it's before/after */\n return draggedElementBound.left - targetElementBound.left > 0;\n }\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n if (this.dndItems) {\n this.dndItems.forEach((item) => {\n item.listDraggable = draggable;\n item.changeCDKDragState();\n });\n }\n }\n}\n\nfunction _isMouseOnElement(element: ElementChord, mousePosition: ElementPosition): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n}\n\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n\ninterface ElementBoundaries {\n x: {\n start: number;\n end: number;\n };\n y: {\n start: number;\n end: number;\n };\n}\n\nfunction getElementStartCoords(rect: DOMRect, position: ElementChord['position']): { x: number; y: number } {\n return {\n x: position === 'after' ? rect.x + rect.width : rect.x,\n y: position === 'after' ? rect.y + rect.height : rect.y\n };\n}\n\nfunction getElementBoundaries(coordinates: ElementChord, threshold: number): ElementBoundaries {\n const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);\n const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);\n const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;\n const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;\n const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;\n const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;\n return {\n x: {\n start: xStart > xEnd ? xEnd : xStart,\n end: xStart > xEnd ? xStart : xEnd\n },\n y: {\n start: yStart > yEnd ? yEnd : yStart,\n end: yStart > yEnd ? yStart : yEnd\n }\n };\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\n\n@NgModule({\n imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport {\n AutoCompleteModule,\n BreakpointModule,\n ClickedDirective,\n DisabledBehaviorModule,\n FocusableGridModule,\n FocusableItemModule,\n FocusableListModule,\n InitialFocusModule,\n IntersectionSpyDirective,\n LineClampModule,\n OnlyDigitsModule,\n OverflowListModule,\n ReadonlyBehaviorModule,\n RepeatModule,\n ResizeModule,\n SelectableListModule,\n TemplateModule,\n TruncateModule\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\nimport { RtlService } from './services/rtl.service';\n\n@NgModule({\n imports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n exports: [\n FocusableItemModule,\n FocusableListModule,\n FocusableGridModule,\n DragAndDropModule,\n OnlyDigitsModule,\n TruncateModule,\n LineClampModule,\n OverflowListModule,\n RepeatModule,\n ResizeModule,\n TemplateModule,\n AutoCompleteModule,\n DisabledBehaviorModule,\n SelectableListModule,\n ReadonlyBehaviorModule,\n ClickedDirective,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n})\nexport class UtilsModule {}\n","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { HasElementRef } from './interfaces/has-element-ref.interface';\n\n/*\n This abstract class allows the user to set their own custom styles on a Fundamental Library for Angular directive, in addition to the\n styles the library needs to add itself.\n When library styles were added through the directive's host: {'[class]'} property, any styles the user added would be\n overwritten. By extending this class, we instead add library styles to the user's classList rather than replace them.\n */\n\n/** @hidden */\n@Directive()\nexport abstract class AbstractFdNgxClass implements HasElementRef, OnInit, OnChanges {\n /** @hidden */\n abstract _setProperties(): void;\n\n /** @hidden */\n @Input() class: string; // user's custom classes\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n /** @hidden */\n constructor() {\n this._setProperties();\n }\n\n /*\n each directive that extends this class will implement this function and populate it with one or more calls to\n the '_addClassToElement' function, passing the style names to be added with each call\n */\n\n /** @hidden */\n _setClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = `${className} ${this.class}`;\n }\n\n /** @hidden */\n _clearElementClass(): void {\n (this.elementRef.nativeElement as HTMLElement).classList.value = '';\n }\n\n /** @hidden */\n _addClassToElement(className: string): void {\n (this.elementRef.nativeElement as HTMLElement).classList.add(...className.split(' '));\n }\n\n /** @hidden */\n _addStyleToElement(attribute, value): void {\n (this.elementRef.nativeElement as HTMLElement).style[attribute] = value;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n const classList = (this.elementRef.nativeElement as HTMLElement).classList;\n while (classList.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n classList.remove(classList.item(0)!);\n }\n if (this.class) {\n this._addClassToElement(this.class);\n }\n this._setProperties();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._setProperties();\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../typecheck';\n\n/** @hidden */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n return isBlank(value) ? [] : coerceArray(value);\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n ComponentType,\n DomPortal,\n PortalModule,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\n\n/**\n * A component that can be used to attach a portal to a DOM element, without explicitly creating portal instances on place.\n * This is useful when you have a list of the components or templates, or HTMLElmets, and you want to attach them to the DOM\n * dynamically in a loop.\n */\n@Component({\n selector: 'fdk-dynamic-portal',\n imports: [PortalModule],\n template: ` <ng-template cdkPortalOutlet></ng-template>`\n})\nexport class DynamicPortalComponent implements AfterViewInit {\n /** The DOM element to attach */\n @Input()\n set domElement(value: HTMLElement | ElementRef<HTMLElement> | string) {\n this.portalContent$.next(value);\n }\n\n /** The component to attach */\n @Input()\n set component(value: ComponentType<any>) {\n this.portalContent$.next(value);\n }\n\n /** The template to attach */\n @Input()\n set template(value: TemplateRef<any>) {\n this.portalContent$.next(value);\n }\n\n /** The Content which should be attached and can be any of the items */\n @Input()\n set auto(value: DynamicPortalComponent['domElement' | 'component' | 'template']) {\n this.portalContent$.next(value);\n }\n\n /** Emits when the portal is attached */\n @Output()\n attached = new EventEmitter<ComponentRef<any> | EmbeddedViewRef<any> | Element>();\n\n /** @hidden */\n @ViewChild(CdkPortalOutlet)\n portalOutlet?: CdkPortalOutlet;\n\n /** @hidden */\n private portalContent$ = new BehaviorSubject<\n DynamicPortalComponent['domElement' | 'component' | 'template'] | undefined\n >(undefined);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n private renderer = inject(Renderer2);\n\n /** @hidden */\n private elementRef = inject(ElementRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n const portalOutlet = this.portalOutlet as CdkPortalOutlet;\n this.portalContent$\n .pipe(\n tap(() => portalOutlet.detach()),\n filter(Boolean),\n map((content) => {\n if (typeof content === 'string') {\n const textElement = this.renderer.createText(content);\n this.renderer.appendChild(this.elementRef.nativeElement, textElement);\n return new DomPortal(textElement);\n } else if (content instanceof HTMLElement || content instanceof ElementRef) {\n return new DomPortal(coerceElement(content as HTMLElement | ElementRef<HTMLElement>));\n } else if (content instanceof TemplateRef) {\n return new TemplatePortal(content, this.viewContainerRef);\n }\n return new ComponentPortal(content);\n }),\n filter(Boolean),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((portal) => {\n const ref = portalOutlet.attach(portal);\n if (portal instanceof DomPortal) {\n // DomPortal Attachment does not refer return Ref, like other portals\n this.attached.emit(portal.element);\n } else {\n this.attached.emit(ref);\n }\n });\n }\n}\n","export const MOBILE_CONFIG_ERROR = `Missing configuration object for mobile version of the component.\n Consult the documentation on how to provide MobileModeConfiguration object for this component.\n`;\n\nexport const THEME_SWITCHER_ROUTER_MISSING_ERROR = `You need to import RouterModule to enable theme settings via the url.`;\n\nexport const INVALID_DATE_ERROR = 'Invalid Date';\n","export type OverflowPriority = 'always' | 'never' | 'low' | 'high' | 'disappear';\n\nexport const OVERFLOW_PRIORITY_SCORE: Map<OverflowPriority, number> = new Map([\n ['always', 0],\n ['disappear', 1],\n ['low', 2],\n ['high', 3],\n ['never', 4]\n]);\n","/**\n * Instead of `/\\p{L}/u` because of it's not working in IE11 and Edge\n * - https://github.com/Microsoft/ChakraCore/issues/2969\n * */\n// eslint-disable-next-line max-len\nexport const LETTERS_UNICODE_RANGE = `[A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`;\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_REGEX = new RegExp(LETTERS_UNICODE_RANGE, 'g');\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_GROUP_REGEX = new RegExp(`(${LETTERS_UNICODE_RANGE})+`, 'g');\n","/**\n * Polyfill for `/\\p{Nd}/u` to work in IE11 and Edge\n */\n// eslint-disable-next-line max-len\nexport const DECIMAL_NUMBER_UNICODE_RANGE = `[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]`;\nexport const DECIMAL_NUMBER_UNICODE_REGEX = new RegExp(DECIMAL_NUMBER_UNICODE_RANGE, 'g');\nexport const DECIMAL_NUMBER_UNICODE_GROUP_REGEX = new RegExp(`(${DECIMAL_NUMBER_UNICODE_RANGE})+`, 'g');\n","import { ElementRef } from '@angular/core';\n\nexport interface HasElementRef<ElementType extends Element = HTMLElement> {\n readonly elementRef: ElementRef<ElementType>;\n}\n\nexport const ELEMENT_REF_EXCEPTION = 'HasElementRef interface has to be implemented';\n","import { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.interface';\nimport { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css class to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement CssClassBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssClass(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): string[] {\n const self = this as unknown as CssClassBuilder & { _uuidv4?: string };\n if (!('elementRef' in self)) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const classListToApply: string[] = sanitize(originalMethod.apply(this));\n\n const elementRef = self.elementRef;\n\n const nativeElement: HTMLElement & { _classMap?: any } = elementRef?.nativeElement;\n\n if (!nativeElement) {\n return classListToApply;\n }\n\n if (!nativeElement._classMap) {\n nativeElement._classMap = {};\n }\n\n if (!self._uuidv4) {\n self._uuidv4 = uuidv4();\n }\n\n const currentClassList = Array.from(nativeElement.classList);\n\n const previousClassListToApply = nativeElement._classMap[self._uuidv4] || [];\n\n const newClassList = createComponentClassList(currentClassList, previousClassListToApply, classListToApply);\n\n nativeElement.className = newClassList.join(' ');\n\n nativeElement._classMap[self._uuidv4] = classListToApply;\n\n return classListToApply;\n };\n}\n\n/** Filter list to unique items */\nfunction unique(value: unknown, index: number, list: unknown[]): boolean {\n return list.indexOf(value) === index;\n}\n\n/** Splits merged classes, removes falsy elements and leaves only unique items */\nfunction sanitize(array: string[]): string[] {\n return array\n .filter(Boolean)\n .reduce((classList: string[], cssClass: string) => [...classList, ...cssClass.split(/\\s+/)], [])\n .filter(unique);\n}\n\nfunction firstCommonElementIndex(array1: string[], array2: string[]): number {\n return array1.findIndex((element) => array2.indexOf(element) !== -1);\n}\n\n/** Create set of component classes based on previous set and new set */\nfunction createComponentClassList(\n allClasses: string[],\n previousComponentClassList: string[],\n newComponentClassList: string[]\n): string[] {\n allClasses = allClasses.slice();\n let index = firstCommonElementIndex(allClasses, previousComponentClassList);\n index = index === -1 ? 0 : index;\n allClasses.splice(index, previousComponentClassList.length, ...newComponentClassList);\n\n return allClasses;\n}\n","import { Hash } from '../datatypes/hash.datatype';\nimport { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css styles to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement HasElementRef or CssStyleBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssStyle(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n const originalMethod = descriptor.value;\n descriptor.value = function (): Hash<number | string> {\n const self = this as unknown as HasElementRef;\n if (!self.elementRef) {\n throw ELEMENT_REF_EXCEPTION;\n }\n\n const _styles: Hash<number | string> = originalMethod.apply(this);\n const htmlElement = self.elementRef.nativeElement as HTMLElement;\n Object.keys(_styles).forEach((key) => {\n htmlElement.style[key] = _styles[key];\n });\n\n return _styles;\n };\n}\n","/**\n * Function, which generates decorator. Passed mutator will be called during value set\n */\nexport function alternateSetter(mutator: (value: any, self: Record<string | symbol, any>) => any): PropertyDecorator {\n return function (targetObj: Record<string | symbol, any>, propertyKey: string | symbol) {\n const _key = Symbol();\n targetObj[_key] = targetObj[propertyKey];\n Object.defineProperty(targetObj, propertyKey, {\n get() {\n return this[_key];\n },\n set(v: any) {\n this[_key] = mutator.call(this, v, this);\n }\n });\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\n/**\n * Decorator for coercing passed value to boolean, using @angular/cdk coerceBooleanProperty\n */\nexport const coerceBoolean = alternateSetter(coerceBooleanProperty);\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import { inject, InjectionToken, isDevMode, ValueProvider } from '@angular/core';\n\nexport interface DeprecatedSelectorModel {\n deprecated: string;\n current: string;\n}\n\n/** @hidden */\nexport function getDeprecatedModel(current: string, deprecated: string): DeprecatedSelectorModel {\n return {\n current,\n deprecated\n };\n}\n\n/** @hidden */\nexport function deprecatedModelProvider(current: string, deprecated: string): ValueProvider {\n return {\n provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,\n useValue: getDeprecatedModel(current, deprecated)\n };\n}\n\nexport const FD_DEPRECATED_DIRECTIVE_SELECTOR = new InjectionToken<DeprecatedSelectorModel>(\n 'FdDeprecatedDirectiveSelector'\n);\n\nexport abstract class DeprecatedSelector {\n /** @hidden */\n protected _selectors: DeprecatedSelectorModel | null = inject(FD_DEPRECATED_DIRECTIVE_SELECTOR, { optional: true });\n\n /** @hidden */\n constructor() {\n if (isDevMode() && this._selectors) {\n console.warn(this._messageGenerator(this._selectors.deprecated, this._selectors.current));\n }\n }\n\n /** @hidden */\n protected _messageGenerator(deprecated: string, current: string): string {\n const segments = [`${deprecated} selector(s) are deprecated and may affect input properties`];\n if (current) {\n segments.push(`Use ${current} instead.`);\n }\n return segments.join('. ');\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Nullable } from '../models/nullable';\n\nexport abstract class DynamicComponentContainer<T = TemplateRef<any> | Type<any>> {\n /** @hidden */\n abstract portalOutlet: CdkPortalOutlet;\n\n /** @hidden Load received content */\n protected abstract _loadContent(): void;\n\n /** @hidden */\n childContent: Nullable<T> = undefined;\n\n /** @hidden */\n protected _componentRef: ComponentRef<any> | EmbeddedViewRef<any>;\n\n /** @hidden */\n protected _contentLoaded$ = new BehaviorSubject<boolean>(false);\n\n /** @hidden */\n protected constructor(\n public elementRef: ElementRef,\n protected _injector: Injector\n ) {}\n\n /** @hidden Load received content as component */\n protected _createFromComponent(content: Type<any>): void {\n this.portalOutlet?.attachedRef?.destroy();\n const injector = Injector.create({\n parent: this._injector,\n providers: []\n });\n this._componentRef = this.portalOutlet.attach(new ComponentPortal(content, null, injector));\n }\n\n /** @hidden Load received content as embedded view */\n protected _createFromTemplate(content: TemplateRef<any>, context: any): void {\n this.portalOutlet?.attachedRef?.destroy();\n if (this.portalOutlet.hasAttached()) {\n this.portalOutlet.detach();\n }\n this._componentRef = this.portalOutlet.attach(\n new TemplatePortal(content, null as unknown as ViewContainerRef, context)\n );\n }\n}\n","import { Injector } from '@angular/core';\n\nexport class DynamicComponentInjector implements Injector {\n /** @hidden */\n constructor(\n private _parentInjector: Injector,\n private _additionalTokens: WeakMap<any, any>\n ) {}\n\n /**\n *\n * @param token\n * @param notFoundValue\n */\n get(token: any, notFoundValue?: any): void {\n const value = this._additionalTokens.get(token);\n\n if (value) {\n return value;\n }\n\n return this._parentInjector.get<any>(token, notFoundValue);\n }\n}\n","import {\n ApplicationRef,\n Compiler,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n NgModuleFactory,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentConfig } from './dynamic-component-config';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicComponentService {\n /** @hidden */\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _applicationRef: ApplicationRef,\n private readonly _injector: Injector,\n private readonly _compiler: Compiler\n ) {}\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param componentType Type of component that should be rendered.\n * @param config Configuration that will be passed to the component.\n * @param inject enables to provide preconfigured component injector and dependencies\n */\n public createDynamicComponent<T>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n componentType: Type<T>,\n config: DynamicComponentConfig,\n inject: { injector?: Injector; services?: any[] } = {}\n ): ComponentRef<T> {\n const { injector, services } = inject;\n const dependenciesMap = this._createDependencyMap(services);\n const componentRef = this._createComponent<T>(componentType, dependenciesMap, injector);\n this._passExternalContent<T>(componentRef, content);\n this._attachToContainer<T>(componentRef, config);\n\n return componentRef;\n }\n\n /**\n * Function that creates dynamic component and injects services to allow communication between component and outside\n * @param content Type of the component content\n * @param moduleType Type of module that should be compiled.\n * @param componentType Type of component that should be rendered.\n * @param containerRef The container that the dynamic component is appended to.\n * @param injector enables to provide preconfigured component injector\n */\n async createDynamicModule<M, C>(\n content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n moduleType: Type<M> | NgModuleFactory<M>,\n componentType: Type<C>,\n containerRef: ViewContainerRef,\n injector?: Injector\n ): Promise<ComponentRef<C>> {\n const moduleFactory =\n moduleType instanceof NgModuleFactory ? moduleType : await this._compiler.compileModuleAsync<M>(moduleType);\n const moduleRef = moduleFactory.create(injector || this._injector);\n const componentFactory = moduleRef.componentFactoryResolver.resolveComponentFactory(componentType);\n\n containerRef.clear();\n\n const componentRef: ComponentRef<C> = containerRef.createComponent(componentFactory);\n\n this._passExternalContent<C>(componentRef, content);\n\n return componentRef;\n }\n\n /** Function that destroys dynamic component */\n public destroyComponent(componentRef: ComponentRef<any>): void {\n this._applicationRef.detachView(componentRef.hostView);\n componentRef.hostView.detach();\n componentRef.destroy();\n }\n\n /** @hidden */\n private _createDependencyMap(services: any[] = []): WeakMap<any, any> {\n const dependencyMap = new WeakMap();\n services.filter((service) => !!service).forEach((service) => dependencyMap.set(service.constructor, service));\n return dependencyMap;\n }\n\n /** @hidden */\n private _attachToContainer<V>(componentRef: ComponentRef<V>, config: DynamicComponentConfig): void {\n const configObj = Object.assign({}, config);\n if (config.containerRef) {\n componentRef.hostView.detach();\n config.containerRef.insert(componentRef.hostView);\n return;\n }\n this._applicationRef.attachView(componentRef.hostView);\n const componentEl = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n if (configObj.container !== 'body') {\n configObj.container?.appendChild(componentEl);\n } else {\n document.body.appendChild(componentEl);\n }\n }\n\n /** @hidden */\n private _createComponent<V>(\n componentType: Type<V>,\n dependenciesMap: WeakMap<any, any>,\n injector?: Injector\n ): ComponentRef<V> {\n const dynamicComponentInjector = new DynamicComponentInjector(injector || this._injector, dependenciesMap);\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentType);\n const componentRef = componentFactory.create(dynamicComponentInjector);\n // this._applicationRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n /** @hidden */\n private _passExternalContent<V>(\n componentRef: ComponentRef<V>,\n content: TemplateRef<any> | Type<any> | string | Record<string, any>\n ): void {\n // TODO: this approach should be revisited, it can cause issues, that is really hard to debug\n if (Object.prototype.hasOwnProperty.call(componentRef.instance, 'childContent')) {\n (componentRef.instance as any).childContent = content;\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LIST_ITEM_COMPONENT = new InjectionToken<string[]>('ListItemComponent');\n\nexport interface ListItemInterface {\n selected: boolean;\n\n link: boolean;\n\n focus(): void;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\nexport type FdkAsyncProperty<T> = T | Observable<T> | Promise<T>;\n\n@Pipe({\n name: 'fdkAsyncOrSync',\n standalone: true,\n pure: false\n})\nexport class AsyncOrSyncPipe implements OnDestroy, PipeTransform {\n /** @hidden */\n private _cdr: ChangeDetectorRef | null;\n /** @hidden */\n private _asyncPipe: AsyncPipe | null;\n\n /** @hidden */\n constructor(ref: ChangeDetectorRef) {\n this._cdr = ref;\n this._asyncPipe = new AsyncPipe(this._cdr);\n }\n\n /**\n * Transforms raw async-like value into static one.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: FdkAsyncProperty<T>): T | null {\n return !isPromise(value) && !isSubscribable(value) ? value : (this._asyncPipe?.transform(value) ?? null);\n }\n\n /** @Hidden */\n ngOnDestroy(): void {\n this._asyncPipe?.ngOnDestroy();\n this._asyncPipe = null;\n this._cdr = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'displayFnPipe',\n standalone: true\n})\nexport class DisplayFnPipe implements PipeTransform {\n /** Transform value with display function. */\n transform(value: any, displayFn: any, ...args: any): string {\n return displayFn(value, ...args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '../models/nullable';\n\n@Pipe({\n name: 'fdFilterStrings',\n standalone: true\n})\nexport class FilterStringsPipe implements PipeTransform {\n /**\n * Performs filtering.\n * @param values Array of items.\n * @param params Search parameters.\n */\n transform(values: any[] = [], params: { searchTerm: Nullable<string>; key: string }): any[] {\n if (!params.searchTerm) {\n return values;\n }\n if (params.key) {\n values = values.filter((item) =>\n item[params.key].toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase())\n );\n } else {\n values = values.filter((item) => item.toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n }\n return values;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { ContentDensity } from '../interfaces/content-density';\n\n@Pipe({ name: 'isCompactDensity', standalone: true })\nexport class IsCompactDensityPipe implements PipeTransform {\n /** Check if the content density is compact. */\n transform(size: ContentDensity): boolean {\n return isCompactDensity(size);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\n@Pipe({\n name: 'fdkMakeAsync',\n pure: true,\n standalone: true\n})\nexport class MakeAsyncPipe implements PipeTransform {\n /**\n * Transforms raw value into observable.\n * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n */\n transform<T>(value: T | Promise<T> | Observable<T>): Observable<T> | Promise<T> {\n return isPromise(value) || isSubscribable(value) ? value : of(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: true\n})\nexport class SafePipe implements PipeTransform {\n /** @hidden */\n constructor(protected sanitizer: DomSanitizer) {}\n\n /** Sanitize HTML string. */\n public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n\n default:\n throw new Error(`Invalid safe type specified: ${type}`);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from 'lodash-es';\n\n@Pipe({\n name: 'highlight',\n standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n /** Highlight search term in string. */\n transform(\n value: string,\n matches: string | Array<[number, number]>,\n active: boolean = true,\n includeSpans: boolean = false\n ): string {\n value = escape(value);\n let result: string = value;\n if (value && active && matches) {\n if (Array.isArray(matches)) {\n matches.forEach((match) => {\n const matchingString = value.substring(match[0], match[1] + 1);\n result = result.replace(matchingString, '<strong>' + matchingString + '</strong>');\n });\n } else if (typeof matches === 'string') {\n const testStr: string = escape(matches.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substring(startIndex, startIndex + testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\n }\n }\n }\n if (includeSpans) {\n result = '<span>' + result + '</span>';\n }\n return result;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n standalone: true\n})\nexport class TruncatePipe implements PipeTransform {\n /** Truncate string to given length. */\n transform(value: string, limit: number = 500): string {\n return value && value.length > limit ? value.substring(0, limit) + '...' : value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'twoDigits',\n standalone: true\n})\nexport class TwoDigitsPipe implements PipeTransform {\n /** Transform number to two digits. */\n transform(value: number, enable: boolean = true): string {\n if ((value || value === 0) && enable) {\n return value < 10 ? '0' + value : value.toString();\n } else {\n return String(value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get } from 'lodash-es';\n\n@Pipe({ name: 'valueByPath', standalone: true })\nexport class ValueByPathPipe implements PipeTransform {\n /** Get value by path. */\n transform(value: any, key: string): any {\n return get(value, key);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\n\n@NgModule({\n imports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ],\n exports: [\n DisplayFnPipe,\n SearchHighlightPipe,\n TwoDigitsPipe,\n SafePipe,\n ValueByPathPipe,\n IsCompactDensityPipe,\n TruncatePipe,\n FilterStringsPipe,\n MakeAsyncPipe,\n AsyncOrSyncPipe\n ]\n})\nexport class PipeModule {}\n","import { AnimationTriggerMetadata, animate, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state(\n 'void, hidden',\n style({\n transform: 'translateY(1rem)',\n opacity: 0\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0\n })\n )\n )\n ])\n};\n","import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\n\nexport interface ToastGlobalPosition {\n left?: string;\n right?: string;\n bottom?: string;\n top?: string;\n center: boolean;\n centerVertically?: boolean;\n}\n\nexport interface ToastGlobalConnectedPosition extends ConnectedPosition {\n boundTo: HTMLElement;\n}\n\nexport const toastConnectedTopPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n};\n\nexport const toastConnectedTopLeftPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedTopRightPosition: ConnectedPosition = {\n ...toastConnectedTopPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\nexport const toastConnectedBottomPosition: ConnectedPosition = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -16\n};\n\nexport const toastConnectedBottomLeftPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedBottomRightPosition: ConnectedPosition = {\n ...toastConnectedBottomPosition,\n ...{ overlayX: 'end', originX: 'end' }\n};\n\n/**\n * Base Toast Position class.\n */\nexport abstract class BaseToastPosition {\n /**\n * Position strategy of the first item.\n */\n global!: ToastGlobalPosition | ToastGlobalConnectedPosition;\n /**\n * Position strategy of the newly added items.\n */\n connected!: ConnectedPosition;\n\n /**\n * Scroll strategy. Used when global position is bound to some HTML element on the page.\n */\n scrollPosition?: ScrollStrategy;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-center of the screen.\n * New items will stack after the first item.\n */\nexport class ToastTopCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n top: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedTopPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-center of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomCenterPosition extends BaseToastPosition {\n /** @hidden */\n static global: ToastGlobalPosition = {\n bottom: '1rem',\n center: true\n };\n /** @hidden */\n static connected: ConnectedPosition = toastConnectedBottomPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-left of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopLeftPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-right of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopRightPosition extends ToastTopCenterPosition {\n /** @hidden */\n static override global = { ...ToastTopCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected: ConnectedPosition = toastConnectedTopRightPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-left of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomLeftPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ left: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-right of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomRightPosition extends ToastBottomCenterPosition {\n /** @hidden */\n static override global = { ...ToastBottomCenterPosition.global, ...{ right: '1rem', center: false } };\n /** @hidden */\n static override connected = toastConnectedBottomRightPosition;\n}\n","import {\n ComponentType,\n FlexibleConnectedPositionStrategy,\n GlobalPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n DestroyRef,\n EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseToastPosition, ToastGlobalConnectedPosition, ToastGlobalPosition } from './base-toast-positions';\nimport { BaseToastConfig } from './classes/base-toast-config';\nimport { BaseToastRef } from './classes/base-toast-ref';\nimport { ToastContainerComponent } from './interfaces/toast-container-component.interface';\nimport { ToastTextComponent } from './interfaces/toast-text-component.interface';\n\n@Injectable()\nexport abstract class BaseToastService<\n P extends BaseToastConfig,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** Component for simple text toast. */\n protected abstract toastTextComponent: Type<ToastTextComponent>;\n /** Component for Toast Container. */\n protected abstract toastContainerComponent: Type<C>;\n /** Injection token for Toast Data. */\n protected abstract toastDataInjectionToken: InjectionToken<any>;\n /** Toast Position Strategy. */\n protected abstract toastPositionStrategy: BaseToastPosition;\n /** Toast default config. */\n protected abstract defaultConfig: P;\n\n /**\n * Opens a Toast with the provided configuration.\n * @param toast accepts string, Component or TemplateRef.\n */\n abstract open<T>(\n toast: string | Type<T> | TemplateRef<T>\n ): BaseToastRef<ToastTextComponent | T | EmbeddedViewRef<T>, P>;\n\n abstract openFromString(message: string, config: P): BaseToastRef<ToastTextComponent, P>;\n\n /**\n * Opens a Toast with provided component inside.\n * @param component Component to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromComponent<T>(component: Type<T>, config: P): BaseToastRef<T, P>;\n\n /**\n * Opens a Toast with provided Template Reference.\n * @param template Template Reference to render inside a Toast.\n * @param config Toast configuration.\n * @returns Toast reference.\n */\n abstract openFromTemplate(template: TemplateRef<any>, config: P): BaseToastRef<EmbeddedViewRef<any>>;\n\n /**\n * Gets Toast Container providers.\n * @param config Toast Config.\n */\n protected abstract getContainerComponentProviders(config: P): StaticProvider[];\n\n /**\n * Gets Toast Content providers.\n * @param config Toast Config.\n * @param toastRef Toast Reference.\n */\n protected abstract getContentComponentProviders<T>(config: P, toastRef: BaseToastRef<T>): StaticProvider[];\n\n /**\n * Creates Toast Reference for provided container and overlay.\n * @param containerRef Container reference.\n * @param overlayRef Overlay Reference.\n * @param positionStrategy Position Strategy\n */\n protected abstract getToastRef<T>(\n containerRef: C,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ): BaseToastRef<T | EmbeddedViewRef<any>, P>;\n\n /**\n * @hidden\n * Array of all current toasts.\n */\n protected _toasts: BaseToastRef[] = [];\n\n /**\n * @hidden\n */\n protected _toastsMap = new Map<BaseToastPosition, BaseToastRef[]>();\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected constructor(\n public overlay: Overlay,\n public injector: Injector\n ) {}\n\n /**\n * Dismisses all Toasts.\n */\n hideAll(): void {\n this._toasts.forEach((t) => t.dismiss());\n }\n\n /**\n * Returns `true` if there are some message toasts currently open. `False` otherwise.\n */\n hasOpenMessageToasts(): boolean {\n return this._toasts.length > 0;\n }\n\n /**\n * Sets new position strategy for all Toast items.\n * @param newStrategy New Position Strategy\n */\n setNewPositionStrategy(newStrategy: BaseToastPosition): void {\n if (newStrategy === this.toastPositionStrategy) {\n return;\n }\n\n this.toastPositionStrategy = newStrategy;\n\n this._refreshOverlayPositions();\n }\n\n /**\n * @hidden\n * Places a new component or a template as the content of the Toast container.\n */\n protected _attach<T>(\n content: ComponentType<T> | TemplateRef<T>,\n userConfig?: P\n ): BaseToastRef<T | EmbeddedViewRef<any>, P> {\n const config = { ...this.defaultConfig, ...userConfig };\n const positionStrategy = config.positionStrategy || this.toastPositionStrategy;\n const { overlay, isAnchor } = this._createOverlay(positionStrategy);\n const containerRef = this.attachToastContainerComponent(overlay, config);\n const toastRef = this.getToastRef<T>(containerRef, overlay, positionStrategy);\n toastRef._defaultPositionStrategy = !config.positionStrategy;\n toastRef._isAnchor = isAnchor;\n\n if (content instanceof TemplateRef) {\n // TemplatePortal requires viewContainer ref\n const viewRef = null as any as ViewContainerRef;\n const portal = new TemplatePortal(content, viewRef, { $implicit: config, toastRef } as any);\n\n toastRef.instance = containerRef.attachTemplatePortal(portal);\n } else {\n const injector = this.createContentComponentInjector(config, toastRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = containerRef.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n toastRef.instance = contentRef.instance;\n\n contentRef.changeDetectorRef.detectChanges();\n }\n\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.push(toastRef);\n this._toasts.push(toastRef);\n this._toastsMap.set(positionStrategy, allToasts);\n\n this.animateToast<T>(toastRef);\n\n return toastRef;\n }\n\n /**\n * Attaches the Toast container component to the overlay.\n */\n protected attachToastContainerComponent(overlayRef: OverlayRef, config: P): C {\n const injector = Injector.create({\n parent: this.injector,\n providers: this.getContainerComponentProviders(config)\n });\n\n const containerPortal = new ComponentPortal(this.toastContainerComponent, null, injector);\n const containerRef: ComponentRef<C> = overlayRef.attach(containerPortal);\n\n containerRef.instance.config = config;\n containerRef.instance.overlayRef = overlayRef;\n\n return containerRef.instance;\n }\n\n /**\n * Creates an injector to be used inside a Toast component.\n * @param config Config that was used to create the Toast.\n * @param toastRef Reference to the Toast.\n */\n protected createContentComponentInjector<T>(config: P, toastRef: BaseToastRef<T>): Injector {\n return Injector.create({\n parent: this.injector,\n providers: this.getContentComponentProviders(config, toastRef)\n });\n }\n\n /**\n * Animates the old Toast out and the new one in.\n */\n protected animateToast<T>(toastRef: BaseToastRef<T | EmbeddedViewRef<any>, P>): void {\n const positionStrategy = toastRef.positionStrategy;\n // When the toast is dismissed, clear the reference to it.\n toastRef\n .afterDismissed()\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n const allToasts = this._toastsMap.get(positionStrategy) || [];\n allToasts.splice(allToasts.indexOf(toastRef), 1);\n this._toasts.splice(this._toasts.indexOf(toastRef), 1);\n this._toastsMap.set(positionStrategy, allToasts);\n this._refreshOverlayPositions();\n });\n\n toastRef.containerInstance.enter();\n }\n\n /**\n * @hidden\n * Creates a new overlay and places it in the correct location.\n */\n private _createOverlay(positionStrategy: BaseToastPosition): { overlay: OverlayRef; isAnchor: boolean } {\n const overlayConfig = new OverlayConfig();\n overlayConfig.scrollStrategy = positionStrategy.scrollPosition || this.overlay.scrollStrategies.reposition();\n\n const { position, isAnchor } = this._getPositionStrategy(positionStrategy);\n\n overlayConfig.positionStrategy = position;\n overlayConfig.panelClass = 'fd-toast-overlay';\n return { overlay: this.overlay.create(overlayConfig), isAnchor };\n }\n\n /**\n * @hidden\n * @returns Initial Position Strategy of the Toast Overlay Reference.\n */\n private _getPositionStrategy(positionStrategy: BaseToastPosition): {\n position: PositionStrategy;\n isAnchor: boolean;\n } {\n const lastOverlay = this._getLastToastWithSamePosition(positionStrategy);\n\n const globalOverlay = this._toastsMap.get(positionStrategy)?.find(({ _isAnchor }) => _isAnchor);\n\n if (lastOverlay && globalOverlay) {\n return {\n position: this._composeFlexibleConnectedPosition(\n lastOverlay.overlayRef.overlayElement,\n positionStrategy\n ),\n isAnchor: false\n };\n }\n\n return { position: this._composeGlobalPosition(positionStrategy), isAnchor: true };\n }\n\n /**\n * @hidden\n * @param needlePosition\n * @private\n */\n private _getLastToastWithSamePosition(needlePosition: BaseToastPosition): BaseToastRef<P, C> | undefined {\n return [...(this._toastsMap.get(needlePosition) || [])]?.reverse()[0];\n }\n\n /**\n * @hidden\n * @param connectedElm element to connect with.\n * @param positionStrategy Position Strategy\n * @returns Flexible Connected Position Strategy for Overlay Reference.\n */\n private _composeFlexibleConnectedPosition(\n connectedElm: HTMLElement,\n positionStrategy: BaseToastPosition\n ): FlexibleConnectedPositionStrategy {\n positionStrategy = positionStrategy || this.toastPositionStrategy;\n return this.overlay\n .position()\n .flexibleConnectedTo(connectedElm)\n .withPush(false)\n .withPositions([positionStrategy.connected]);\n }\n\n /**\n * @hidden\n * @returns Default Global Position for Overlay Reference.\n */\n private _composeGlobalPosition(\n positionStrategy: BaseToastPosition\n ): GlobalPositionStrategy | FlexibleConnectedPositionStrategy {\n let position: FlexibleConnectedPositionStrategy | GlobalPositionStrategy;\n if (this._isBoundGlobalPosition(positionStrategy.global)) {\n position = this.overlay\n .position()\n .flexibleConnectedTo(positionStrategy.global.boundTo)\n .withPositions([positionStrategy.global])\n .withPush(false);\n } else {\n position = this.overlay.position().global();\n const globalToastPositionStrategy: ToastGlobalPosition = positionStrategy.global;\n\n for (const [pos, value] of Object.entries(globalToastPositionStrategy)) {\n switch (pos) {\n case 'left':\n position.left(value);\n break;\n case 'right':\n position.right(value);\n break;\n case 'bottom':\n position.bottom(value);\n break;\n case 'top':\n position.top(value);\n break;\n case 'center':\n position.centerHorizontally();\n break;\n case 'centerVertically':\n position.centerVertically();\n break;\n }\n }\n }\n\n return position;\n }\n\n /** @hidden */\n private _refreshOverlayPositions(): void {\n this._toastsMap.forEach((toasts) => {\n this._updateOverlayPositionStrategy(toasts);\n });\n }\n\n /** @hidden */\n private _updateOverlayPositionStrategy(toasts: BaseToastRef[]): void {\n toasts.forEach((toastRef) => {\n const positionStrategy = this._updatePositionStrategy(toastRef);\n const overlayConfig = toastRef.overlayRef.getConfig();\n\n toastRef.overlayRef.updatePositionStrategy(positionStrategy);\n overlayConfig.positionStrategy = positionStrategy;\n });\n }\n\n /**\n * @hidden\n * Updates the position of a current Overlay Reference.\n * @returns New Position Strategy.\n * @param toast Toast Reference\n */\n private _updatePositionStrategy(toast: BaseToastRef): PositionStrategy {\n const positionStrategy = toast._defaultPositionStrategy ? this.toastPositionStrategy : toast.positionStrategy;\n\n if (toast._isAnchor) {\n return this._composeGlobalPosition(positionStrategy);\n }\n\n const toasts = this._toastsMap.get(positionStrategy) || [];\n\n const globalOverlay = toasts?.find(({ _isAnchor }) => _isAnchor);\n\n if (!globalOverlay) {\n toast._isAnchor = true;\n return this._composeGlobalPosition(positionStrategy);\n }\n\n // Get Previous overlay item.\n const overlayItemIndex = toasts.findIndex((t) => t === toast);\n const previousOverlay = toasts[overlayItemIndex - 1];\n toast._isAnchor = false;\n\n return this._composeFlexibleConnectedPosition(previousOverlay.overlayRef.overlayElement, positionStrategy);\n }\n\n /** @hidden */\n private _isBoundGlobalPosition(position: any): position is ToastGlobalConnectedPosition {\n return !!position.boundTo;\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../base-toast-positions';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nexport abstract class BaseToastRef<\n T = any,\n P = any,\n C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n /** The instance of the component is making up the content of the Toast. */\n instance!: T;\n\n /** @hidden */\n _defaultPositionStrategy = true;\n\n /** @hidden\n * Used for flagging the toast as an anchor for all next appearing toasts.\n */\n _isAnchor = false;\n\n /**\n * @hidden\n * Subject for notifying the user that the Toast has been dismissed.\n */\n protected readonly _afterDismissed$ = new Subject<void>();\n\n /** @hidden */\n protected constructor(\n public containerInstance: C,\n public overlayRef: OverlayRef,\n public positionStrategy: BaseToastPosition\n ) {\n containerInstance.onExit$.subscribe(() => this._finishDismiss());\n }\n\n /** Dismisses the Toast. */\n dismiss(): void {\n if (!this._afterDismissed$.closed) {\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the Toast is finished closing. */\n afterDismissed(): Observable<void> {\n return this._afterDismissed$.asObservable();\n }\n\n /** Gets an observable that is notified when the Toast has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance.onEnter$.asObservable();\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected _finishDismiss(): void {\n this.overlayRef.dispose();\n\n this._afterDismissed$.next();\n this._afterDismissed$.complete();\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastRef } from '../base-toast-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\n\n/** Maximum number of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\nexport abstract class BaseToastDurationDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastRef<T, P, C> {\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the toast is\n * dismissed before the duration passes.\n */\n protected durationTimeoutId!: ReturnType<typeof setTimeout>;\n\n /** @hidden */\n protected constructor(containerInstance: C, overlayRef: OverlayRef, positionStrategy: BaseToastPosition) {\n super(containerInstance, overlayRef, positionStrategy);\n }\n\n /** Dismisses the toast and clears the timeout. */\n override dismiss(): void {\n clearTimeout(this.durationTimeoutId);\n\n super.dismiss();\n }\n\n /** Dismisses the Toast component after some duration */\n dismissAfter(duration: number): void {\n this.durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n\n /** Cancels current dismiss timeout */\n cancelDismiss(): void {\n clearTimeout(this.durationTimeoutId);\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastDurationDismissibleContainerComponent } from '../duration-dismissible/base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\n\nexport abstract class BaseToastActionDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any\n> extends BaseToastDurationDismissibleRef<T, P> {\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n protected readonly onAction$ = new Subject<string | null>();\n\n /** Whether the Toast was dismissed using the action-dismissible button. */\n protected dismissedByAction = false;\n\n /** @hidden */\n protected constructor(\n containerInstance: BaseToastDurationDismissibleContainerComponent<P>,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ) {\n super(containerInstance, overlayRef, positionStrategy);\n\n this.onAction().subscribe(() => this.dismiss());\n }\n\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason: string | null = null): void {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction(): Observable<string | null> {\n return this.onAction$;\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected override _finishDismiss(): void {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n\n super._finishDismiss();\n }\n}\n","import { BaseToastPosition, ToastBottomCenterPosition } from '../base-toast-positions';\n\n/**\n * Base Configuration class used when opening a Toast.\n */\nexport class BaseToastConfig<T = any> {\n /**\n * Data being injected into the child component.\n */\n data?: T;\n\n /**\n * Aria-label for the message toast component element.\n */\n ariaLabel?: string;\n\n /**\n * Toast position strategy.\n */\n positionStrategy?: BaseToastPosition = ToastBottomCenterPosition;\n\n /**\n * Toast minimum width.\n */\n minWidth?: number | string;\n\n /**\n * Toast maximum width.\n */\n maxWidth?: number | string;\n\n /**\n * Toast minimum height.\n */\n minHeight?: number | string;\n\n /**\n * Toast maximum height.\n */\n maxHeight?: number | string;\n\n /**\n * Toast width.\n */\n width?: number | string;\n\n /**\n * Toast height.\n */\n height?: number | string;\n\n /**\n * Toast ID.\n */\n id?: string;\n}\n\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig<T = any> extends BaseToastConfig<T> {\n /** Whether the toast should be animated. */\n animated? = true;\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, EmbeddedViewRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport { Nullable } from '../../models/nullable';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\nimport { BaseToastConfig } from './base-toast-config';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n extends BasePortalOutlet\n implements ToastContainerComponent<P>\n{\n /** Method, which is triggered when the Toast component is ready to be shown. Used to trigger animations. */\n abstract enter(): void;\n\n /** Method, which is triggered when the Toast component is ready to be removed. Used to trigger animations. */\n abstract exit(): void;\n\n /**\n * @hidden\n * The portal outlet inside this container into which the Toast content will be loaded.\n */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet!: CdkPortalOutlet;\n\n /** Min width of the toast component. */\n @coerceCssPixel\n minWidth?: string | number | null;\n\n /** Max width of the toast component. */\n @coerceCssPixel\n maxWidth?: string | number | null;\n\n /** Width of the toast component. */\n @coerceCssPixel\n width?: string | number | null;\n\n /** Min height of the toast component. */\n @coerceCssPixel\n minHeight?: string | number | null;\n\n /** Max height of the toast component. */\n @coerceCssPixel\n maxHeight?: string | number | null;\n\n /** Height of the toast component. */\n @coerceCssPixel\n height?: string | number | null;\n\n /** Subject for notifying that the Toast has finished exiting from view. */\n readonly onExit$: Subject<void> = new Subject();\n\n /** Subject for notifying that the Toast has finished entering the view. */\n readonly onEnter$: Subject<void> = new Subject();\n\n /** Overlay reference */\n overlayRef!: OverlayRef;\n\n /** Aria label. */\n ariaLabel: Nullable<string>;\n\n /** ID of the Toast. */\n id: Nullable<string>;\n\n /** @hidden */\n protected constructor(public config: P) {\n super();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.config.id || 'fd-message-toast-' + toastUniqueId++;\n }\n\n /**\n * Attaches component to the portal.\n */\n attachComponentPortal<C>(portal: ComponentPortal<C>): ComponentRef<C> {\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /**\n * Attaches Template to the portal.\n * @param portal\n */\n attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n/**\n * Custom overlay container for CDK Overlay.\n */\n@Injectable()\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n override getContainerElement(): HTMLElement {\n const containerElement = super.getContainerElement();\n\n containerElement.classList.add('fn-toast-overlay-container');\n\n return containerElement;\n }\n}\n","import { BaseToastConfig } from '../base-toast-config';\n\n/**\n * Base configuration class used when opening a Toast which automatically destroys after some time.\n */\nexport class BaseToastDurationDismissibleConfig<T = any> extends BaseToastConfig<T> {\n /**\n * The length of time in milliseconds to wait before automatically dismissing the Message Toast.\n */\n duration? = 3000;\n /**\n * Whether the message toast should stay visible if the cursor is over it.\n * Default is `true`\n */\n mousePersist?: boolean = true;\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Directive, HostBinding, HostListener, inject, NgZone, OnDestroy, signal } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseAnimatedToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive()\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseAnimatedToastConfig>\n extends BaseToastContainerComponent<P>\n implements OnDestroy\n{\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n @HostBinding('@state')\n private get _animationState(): string {\n return this._animationStateSignal();\n }\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n @HostBinding('@.disabled')\n private _animationsDisabled = false;\n\n /** @hidden */\n protected _ngZone = inject(NgZone);\n\n /** @hidden */\n private _animationStateSignal = signal('void');\n\n /** @hidden */\n constructor(config: P) {\n super(config);\n this._animationsDisabled = !config.animated;\n }\n\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n @HostListener('@state.done', ['$event'])\n private _onAnimationEnd(event: AnimationEvent): void {\n const { fromState, toState } = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of Message Toast entrance into view. */\n enter(): void {\n this._animationStateSignal.set('visible');\n }\n\n /** Begin animation of Message Toast removal. */\n exit(): void {\n this._animationStateSignal.set('hidden');\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._completeExit();\n }\n\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n */\n private _completeExit(): void {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\n@Directive()\nexport abstract class BaseToastDurationDismissibleContainerComponent<P extends BaseToastConfig>\n extends BaseToastAnimatedContainerComponent<P>\n implements OnDestroy, ToastDurationDismissibleContainerComponent<P>\n{\n /** Subject for notifying that component is out of hover */\n readonly mouseleave$: Subject<void> = new Subject();\n\n /** Subject for notifying that component is hovered */\n readonly mouseover$: Subject<void> = new Subject();\n\n /** Emits mouseleave$ subject when component is out of hover. */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.mouseleave$.next();\n }\n\n /** Emits mouseover$ subject when component is hovered. */\n @HostListener('mouseover')\n onMouseOver(): void {\n this.mouseover$.next();\n }\n\n /** @Hidden */\n override ngOnDestroy(): void {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n\n super.ngOnDestroy();\n }\n}\n","import { EmbeddedViewRef } from '@angular/core';\nimport { BaseToastService } from '../../base-toast.service';\nimport { BaseToastDurationDismissibleConfig } from './base-toast-duration-dismissible-config';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from './base-toast-duration-dismissible-ref';\n\nexport abstract class BaseDismissibleToastService<\n P extends BaseToastDurationDismissibleConfig,\n C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastService<P, C> {\n /**\n * Animates the old Toast out and the new one in.\n */\n protected override animateToast<T>(toastRef: BaseToastDurationDismissibleRef<T | EmbeddedViewRef<any>, P>): void {\n super.animateToast<T>(toastRef);\n\n const config = toastRef.containerInstance.config;\n\n // If dismiss timeout is provided, set up dismiss based on after the Notification is opened.\n if (config.duration && config.duration > 0) {\n toastRef.afterOpened().subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n\n if (config.mousePersist) {\n toastRef.containerInstance.mouseover$.subscribe(() => {\n toastRef.cancelDismiss();\n });\n\n toastRef.containerInstance.mouseleave$.subscribe(() => {\n toastRef.dismissAfter(config.duration as number);\n });\n }\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","switchMap","filter","i1.FdkClickedProvider","i1.AttributeObserver","i1.DisabledObserver","i1.RtlService","i1.FocusKeyManagerListDirective","distinctUntilChanged","startWith","i1.TabbableElementService","debounceTime","i1.ReadonlyObserver","equal","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","i1.SelectionService","i1","i1.DndKeyboardGroupDirective","tap","take"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;AAEG;AACa,SAAA,uBAAuB,CACnC,aAA4F,EAC5F,qBAAwC,EAAA;IAExC,OAAO;AACH,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,qBAAqB,CAAC;QACtF,IAAI,EAAE,CAAC,QAAQ;KAClB;AACL;;MCZa,OAAO,GAAG,CAAC,MAAc,KAAa,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI;MAE1E,eAAe,GAAG,CAAC,OAAiC,KAC7D,OAAO,YAAY,UAAU,GAAG,OAAO,CAAC,aAAa,GAAG;AAE5D;;AAEK;AACC,SAAU,kBAAkB,CAAC,OAAiC,EAAA;AAChE,IAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;IACzC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAEvD,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC;AAClH;AAEA;;;AAGK;AACW,SAAA,eAAe,CAAC,OAAiC,EAAE,UAAoB,EAAA;AACnF,IAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;AACzC,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAEhD,IAAA,OAAO;UACD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW;AACtG,UAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AACtC;;AC5BA;SACgB,mBAAmB,GAAA;IAC/B,MAAM,YAAY,GAAG,EAAE;AACvB,IAAA,MAAM,cAAc,GAAG,QAAQ,EAAE;UAC3B,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ;UAC9D,YAAY;AAClB,IAAA,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,YAAY,GAAG,cAAc;AAChE;;ACLA;;;;;AAKG;AACa,SAAA,sBAAsB,CAClC,MAAe,EACf,OAAkC,EAAA;AAElC,IAAA,IAAI,sBAAsB,IAAI,MAAM,EAAE;AAClC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;YACjC,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AAC5C,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;aAC3B,EAAE,OAAO,CAAC;AAEX,YAAA,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AAElB,YAAA,OAAO,SAAS,WAAW,GAAA;gBACvB,EAAE,CAAC,UAAU,EAAE;AACnB,aAAC;AACL,SAAC,CAAC;;SACC;;;AAGH,QAAA,OAAO,KAAK;;AAEpB;;AC3BA;AACM,SAAU,qBAAqB,CAAC,IAAS,EAAA;IAC3C,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW;AACxE;AAEA;;AAEG;AACG,SAAU,gBAAgB,CAAC,IAAoB,EAAA;IACjD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,MAAM;AACzD;;ACZA;;;;AAIG;AACG,SAAU,KAAK,CAAC,MAAc,EAAA;AAChC,IAAA,OAAO,MAAM,GAAG,CAAC,KAAK,CAAC;AAC3B;;ACkCA;AACA,MAAM,MAAM,GAA0B,IAAI,GAAG,CAAC;AAC1C,IAAA,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACtC,IAAA,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACnC,IAAA,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACnC,IAAA,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AACnC,IAAA,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAA,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAA,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;AAClB,IAAA,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC;AACtB,IAAA,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACd,IAAA,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;AAChB,IAAA,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACd,IAAA,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACd,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACtC,IAAA,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;AAChB,IAAA,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;AAClB,IAAA,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,CAAC;AAC1B,IAAA,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,IAAA,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,IAAA,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,IAAA,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACb,IAAA,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;AACrB,IAAA,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC;AACzB,IAAA,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;AACb,IAAA,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;AACrB,IAAA,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1B,IAAA,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;AACzB,IAAA,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;AACzB,IAAA,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAA,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1B,IAAA,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1B,IAAA,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;AACzB,IAAA,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAA,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAA,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1B,IAAA,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACZ,IAAA,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;AACd,CAAA,CAAC;MAEW,OAAO,CAAA;AAChB;;;;;AAKK;AACL,IAAA,OAAO,SAAS,CAAC,KAAoB,EAAE,OAA0B,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACxB,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;QAG5D,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,CAAC,OAAO;;QAGjG,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CACX,CAAA,6FAAA,CAA+F,CAClG;;AAGL,QAAA,OAAO,KAAK;;AAGhB;;;;;AAKK;AACL,IAAA,OAAO,SAAS,CAAC,KAAoB,EAAE,OAAuD,EAAA;AAC1F,QAAA,IAAI,KAAK,IAAI,OAAO,EAAE;YAClB,QAAQ,OAAO;AACX,gBAAA,KAAK,SAAS;oBACV,OAAO,KAAK,CAAC;0BACP,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO;AAC3C,0BAAE,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;AACvG,gBAAA,KAAK,cAAc;oBACf,OAAO,KAAK,CAAC;0BACP,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK;AACzC,0BAAE,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;;AAEpD,gBAAA,KAAK,SAAS;AACV,oBAAA,OAAO,KAAK,CAAC,OAAO,GAAG,EAAE,KAAK,KAAK,CAAC,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;AAC/E,gBAAA,KAAK,KAAK;AACN,oBAAA,OAAO,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG;;;QAIlF,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,2BAAA,CAA6B,CAAC;;AAGlD,QAAA,OAAO,KAAK;;AAEnB;;MCvIY,kBAAkB,GAAG,IAAI,cAAc,CAAoB,oBAAoB;;ACA5F;AACM,SAAU,0BAA0B,CAAC,QAAa,EAAA;IACpD,OAAO;AACH,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,KAAK,EAAE;KACV;AACL;AAEA;AACM,SAAU,yBAAyB,CAAC,OAA4B,EAAA;IAClE,OAAO;AACH,QAAA,OAAO,EAAE,kBAAkB;AAC3B,QAAA,GAAG,OAAO;AACV,QAAA,KAAK,EAAE;KACV;AACL;;ACnBA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACxB,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,OAAO,CAAC;IACf,CAAC,IAAI,EAAE,UAAU,CAAC;IAClB,CAAC,IAAI,EAAE,aAAa;AACvB,CAAA,CAAC;AAEF;AACM,SAAU,cAAc,CAAC,QAAgB,EAAA;AAC3C,IAAA,IAAI,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAA,OAAO,CAAC;;IAGZ,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;IAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;QACtD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAEtC,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;AAEtE,QAAA,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACrD,YAAA,OAAO,IAAI;;QAEf,IAAI,CAAC,QAAQ,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;aAC/D;YACH,OAAO,QAAQ,GAAG,IAAI;;;SAEvB;QACH,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC;;AAGtE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;AAE5B;;ACnCA;SACgB,oBAAoB,GAAA;AAChC,IAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC;AAC9C;;ACFA;;;;;AAKG;AACa,SAAA,gBAAgB,CAAC,MAAe,EAAE,OAA+B,EAAA;AAC7E,IAAA,IAAI,gBAAgB,IAAI,MAAM,EAAE;AAC5B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAI;AACjC,YAAA,IAAI,cAAsB;YAC1B,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACtC,gBAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAC/C,oBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,iBAAC,CAAC;AACN,aAAC,CAAC;AAEF,YAAA,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AAE3B,YAAA,OAAO,SAAS,WAAW,GAAA;gBACvB,IAAI,cAAc,EAAE;AAChB,oBAAA,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC;;AAE/C,gBAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;gBACpB,EAAE,CAAC,UAAU,EAAE;AACnB,aAAC;AACL,SAAC,CAAC;;SACC;;AAEH,QAAA,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;;AAE9D;;ACjCA;;;;;AAKK;AACW,SAAA,SAAS,CAAC,gBAAyB,EAAE,gBAAwB,EAAA;;IAEzE,IAAI,gBAAgB,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,YAAY,QAAQ,EAAE;QAC5E,gBAAgB,CAAC,QAAQ,CAAC;AACtB,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,QAAQ,EAAE;AACb,SAAA,CAAC;;SACC;AACH,QAAA,gBAAgB,CAAC,SAAS,GAAG,gBAAgB;;AAErD;;AChBA;SACgB,MAAM,GAAA;IAClB,MAAM,QAAQ,GAAG,EAAE;IACnB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;;QAEjE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC;;AAEpC,QAAA,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AACvC,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/B,KAAC,CAAC;AACN;;MCMa,qBAAqB,CAAA;;;AAqD9B,IAAA,WAAA,GAAA;;QAvCA,IAAM,CAAA,MAAA,GAAG,IAAI;AAEb;;;AAG4C;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,eAAe;;AAKvB,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,YAAY,EAAqB;;AAG3E,QAAA,IAAA,CAAA,aAAa,GAAa,CAAC,KAAK,CAAC;;AAGjC,QAAA,IAAA,CAAA,SAAS,GAAa,CAAC,UAAU,EAAE,WAAW,CAAC;;QAG/C,IAAS,CAAA,SAAA,GAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;;QAS1D,IAAY,CAAA,YAAA,GAAG,KAAK;;AAGX,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;;AA2CvC,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,GAAW,EAAE,UAAkB,KAAc,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AAtC9E;;;;AAIG;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAC9B,YAAA,MAAM,UAAU,GAAG,SAAS,CAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC;AACtF,YAAA,MAAM,qBAAqB,GAAG,SAAS,CACnC,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,kBAAkB,CACrB;AACD,YAAA,MAAM,mBAAmB,GAAG,SAAS,CAAmB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,gBAAgB,CAAC;YAEzG;AACK,iBAAA,IAAI,CACD,SAAS,CAAC,CAAC,GAAG,KACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpB,KAAK,EAAE,EACPA,KAAG,CAAC,MAAM,GAAG,CAAC,CACjB,CACJ,EACD,kBAAkB,EAAE;AAEvB,iBAAA,SAAS,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAEvD,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5D,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,aAAC,CAAC;YAEF,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1D,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;gBACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK;AACzD,aAAC,CAAC;AACN,SAAC,CAAC;;;AAQN,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QACrC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC1C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;;iBAClD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AACrD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,6BAA6B,EAAE;;iBACjC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACjD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAC3B,iBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACrD,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;oBAC3B;;AAGJ,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;AAE9B,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAC/F;gBAED,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;;;AAIjD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;;AAIvB,IAAA,UAAU,CAAC,cAAsB,EAAA;QACrC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,cAAc;AACrD,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,MAAM,CAAC;;;AAIxF,IAAA,aAAa,CAAC,KAAoB,EAAA;AACtC,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO;;;AAIrD,IAAA,eAAe,CAAC,KAAU,EAAA;AAC9B,QAAA,OAAO,KAAK;;;IAIR,iBAAiB,GAAA;AACrB,QAAA,OAAO,EACH,IAAI,CAAC,cAAc;YACnB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CACnC;;;AAIG,IAAA,kBAAkB,CAAC,UAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK;YAC1C;AACH,SAAA,CAAC;;;IAIE,6BAA6B,GAAA;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,eAAe,EAAE,eAAe,CAAC;;8GAhK7E,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAIG,OAAO,EAAA,CAAA;sBADN;gBAQD,SAAS,EAAA,CAAA;sBADR;gBAKD,MAAM,EAAA,CAAA;sBADL;gBAQD,SAAS,EAAA,CAAA;sBADR;gBAMQ,UAAU,EAAA,CAAA;sBAFlB;gBAoED,OAAO,EAAA,CAAA;sBADN;;;MCnGQ,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAJjB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAGtB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AAChC,oBAAA,YAAY,EAAE;AACjB,iBAAA;;;ACJD;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAsB;AACnF,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAQ;IACpC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3C,IAAA,OAAO,QAAQ,CAAC,YAAY,EAAE;AAClC;;ACFA;AACA,MAAM,kBAAkB,GAAoB;AACxC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,WAAW,EAAE,MAAM,IAAI;AACvB,IAAA,SAAS,EAAE;CACd;AAED;AACA,SAAS,YAAY,GAAA;IACjB,MAAM,QAAQ,GAAG,CAAC,IAAO,EAAE,QAA2B,EAAE,OAAsB,KAAU;AACpF,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,MAAM,QAAQ,GACV,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxG,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC;;AAEtB,KAAC;AACD,IAAA,OAAO,QAAQ;AACnB;AAEA;AACA,SAAS,WAAW,GAAA;IAChB,MAAM,QAAQ,GAAG,CAAC,IAAO,EAAE,QAA2B,EAAE,OAAsB,KAAU;AACpF,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,MAAM,QAAQ,GACV,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACxG,QAAQ,CAAC,IAAI,CAAC;AACd,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;;AAE1E,KAAC;AACD,IAAA,OAAO,QAAQ;AACnB;AAEA;;;;;;;;;AASG;AACG,SAAU,GAAG,CAAI,UAAoB,EAAE,QAA2B,EAAE,UAAkC,EAAE,EAAA;IAC1G,MAAM,aAAa,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,EAAmB;AAC5E,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,GAAG,YAAY,EAAK,GAAG,WAAW,EAAK;AAC/E,IAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC3B,QAAA,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC;;AAE/C;;ACvDA;;AAEG;AACG,SAAU,gBAAgB,CAC5B,OAA0D,EAAA;IAE1D,IAAI,SAAS,GAAG,OAAO;AACvB,IAAA,IAAI,aAAa,CAAI,OAAO,CAAC,EAAE;AAC3B,QAAA,SAAS,GAAG,OAAO,CAAC,UAAU;;AAElC,IAAA,OAAO,aAAa,CAAC,SAA8B,CAAC;AACxD;AAEA;;AAEG;AACG,SAAU,aAAa,CACzB,SAAc,EAAA;IAEd,OAAO,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,UAAU;AACrE;;ACrBA;;AAEG;AACH;AACM,SAAU,UAAU,CAAC,GAAQ,EAAA;AAC/B,IAAA,OAAO,GAAG,KAAK,IAAI,KAAK,OAAO,GAAG,KAAK,UAAU,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AACjF;AAEA;;AAEG;AACG,SAAU,SAAS,CAAC,GAAQ,EAAA;AAC9B,IAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AAC5C;AAEA;;AAEG;AACG,SAAU,OAAO,CAAC,GAAQ,EAAA;AAC5B,IAAA,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;AAC5C;AAEA;;AAEG;AACG,SAAU,SAAS,CAAC,GAAQ,EAAA;AAC9B,IAAA,OAAO,OAAO,GAAG,KAAK,SAAS;AACnC;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,GAAQ,EAAA;AAC7B,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ;AAClC;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAC,GAAQ,EAAA;AAC7B,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ;AAClC;AAEA;;AAEG;AACG,SAAU,UAAU,CAAC,GAAQ,EAAA;AAC/B,IAAA,OAAO,OAAO,GAAG,KAAK,UAAU;AACpC;AAEA;AACA;AACM,SAAU,MAAM,CAAC,GAAQ,EAAA;AAC3B,IAAA,OAAO,UAAU,CAAC,GAAG,CAAC;AAC1B;AAEA;;AAEG;AACG,SAAU,WAAW,CAAU,GAAQ,EAAA;IACzC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;AAClD;AAEA;;AAEG;AACG,SAAU,QAAQ,CAAI,IAAO,EAAA;AAC/B,IAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI;AAC5E;AAEA;;AAEG;AACG,SAAU,SAAS,CAAU,GAAQ,EAAA;;;IAGvC,OAAO,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC;AAEA;;AAEG;AACG,SAAU,cAAc,CAAU,GAAwB,EAAA;IAC5D,OAAO,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7C;;ACnFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CG;MACU,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;;QAEY,IAAsB,CAAA,sBAAA,GAAkB,IAAI;;AAIpD;;;AAGG;AACH,IAAA,IAAI,uBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;;AAGlD;;;;;;;;;;;AAWG;IACH,qBAAqB,CAAC,KAAc,EAAE,KAA+C,EAAA;AACjF,QAAA,IACI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACvD,YAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YACjC,KAAK,EAAE,QAAQ,EACjB;YACE,IAAI,CAAC,MAAM,GAAG;AACV,gBAAA,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC;gBAClD,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK;aAClD;AACD,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;;AAChC,aAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AACjE,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;;aAChC;YACH,IAAI,CAAC,KAAK,EAAE;;QAGhB,OAAO,IAAI,CAAC,uBAAuB;;AAGvC;;;;;AAKG;AACH,IAAA,uBAAuB,CAAC,eAAwC,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB;QAE1C,IAAI,CAAC,KAAK,EAAE;YACR;;AAGJ,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE;AAClF,YAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACrD,eAAe,CAAC,KAAK,CAAC;;;;;IAMlC,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;;;AAI9B,IAAA,qBAAqB,CAAC,GAAqB,EAAA;QAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEvC;;AC7HD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU;AAElC;AACM,SAAU,QAAQ,CAAC,OAAe,EAAA;IACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,QAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;AAE7B;;ACDO,MAAM,uBAAuB,GAAmB;AAEvD;;AAEG;MAEU,qBAAqB,CAAA;;AAK9B,IAAA,WAAA,GAAA;;AAHS,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,uBAAuB,CAAC;QAIlE,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,CACJ,CAAA;AACqG,oHAAA,CAAA,CACxG;;;;AAKT,IAAA,IAAI,uBAAuB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;;;AAItG,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;;8GArBhF,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACRD;;;AAGG;AAEG,MAAO,gBAAiB,SAAQ,aAAmB,CAAA;;AAErD,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,CAAC,CAAC;QACR,QAAQ,CACJ,CAAuG,qGAAA,CAAA,CAC1G;;;IAIL,WAAW,GAAA;QACP,IAAI,CAAC,IAAI,EAAE;QACX,IAAI,CAAC,QAAQ,EAAE;;8GAZV,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCDY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;;AAKY,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,GAAG,EAAE;AAmG/D;AAjGG;;;;;AAKG;IACH,eAAe,CACX,OAAkF,EAClF,WAAqB,EAAA;AAErB,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;QAEpB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC;QAElD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAEvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAE3B,QAAA,OAAO,GAAG;;AAGd;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAU,EAAA;QACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;YAC5B;;QAGJ,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAE1C,IAAI,EAAE,QAAQ,EAAE;;AAGpB;;;AAGG;AACH,IAAA,mBAAmB,CAAC,EAAU,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;YAC5B;;QAGJ,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAE1C,IAAI,EAAE,UAAU,EAAE;AAElB,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;;AAGvC;;AAEG;IACH,qBAAqB,GAAA;QACjB,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE;YACrC;;AAGJ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAE1C,QAAQ,EAAE,KAAK,EAAE;;AAGrB;;AAEG;IACH,uBAAuB,GAAA;QACnB,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,EAAE;YACrC;;AAGJ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAE1C,QAAQ,EAAE,OAAO,EAAE;;AAGvB;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,EAAU,EAAA;QAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;;;IAInC,kBAAkB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,EAAE;AAE3D,QAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;;;AAIrC,IAAA,gBAAgB,CAAC,EAAU,EAAA;QAC/B,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;;8GAnGlC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCOY,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAGI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAwB;;AAGpC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAQ;AAUjE;;AAEG;QACK,IAAiB,CAAA,iBAAA,GAAG,IAAI;AA4DnC;;AAnEG,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;;;AAS3B,IAAA,kBAAkB,CACd,SAAsD,EACtD,IAAc,EACd,gBAAgB,GAAG,IAAI,EAAA;AAEvB,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;AACjF,QAAA,SAAS,CAAC;AACL,aAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACvD,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;;;AAI7D,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;QACjC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AAC/B,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACzD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,cAAc,CAAC,KAAK,EAAE,UAAU;AAC5B,sBAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB;AACvC,sBAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;;;;;IAMrD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;;;AAIvB,IAAA,mBAAmB,CAAC,SAAsD,EAAA;QAC9E,MAAM,oBAAoB,GAAG,CACzB,QAA0C,EAC1C,SAAiB,EACjB,eAAqC,KAC/B;AACN,YAAA,QAAQ,CAAC;AACJ,iBAAA,IAAI,CACD,SAAS,CAAC,YAAY,CAAC,EACvB,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,EACtD,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC;AAEzC,iBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpE,SAAC;;AAGD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AAEvB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEjF,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC;YACxD,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;;;8GA9EpD,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACVD,MAAM,WAAW,CAAA;;IAIb,GAAG,CAAC,KAAa,EAAA;AAEjB,IAAA,KAAK;;IAGL,OAAO,CAAC,GAAW,EAAA;;IAGnB,UAAU,CAAC,GAAW,EAAA;;AAGtB,IAAA,OAAO,CAAC,GAAW,EAAE,KAAa;AACrC;MAGY,mBAAmB,CAAA;;AAK5B,IAAA,WAAA,GAAA;QACI,OAAO,YAAY,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,GAAG,YAAY,KAAK,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;;;AAI9G,IAAA,GAAG,CAAC,GAAW,EAAA;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAE5B,QAAA,OAAO,IAAI;;;IAIf,GAAG,CAAC,GAAW,EAAE,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;;8GApB5C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,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,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpBlC;MAUa,iBAAiB,CAAA;;AAY1B,IAAA,WAAA,CAAoB,wBAAiD,EAAA;QAAjD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB;;AAV3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAOzC;;;IAMH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;;AAIlF,IAAA,OAAO,CAAC,YAAoE,EAAA;AACxE,QAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC;AAC9C,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAoC,KAAI;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAE/C,YAAA,OAAO,MAAK;gBACR,YAAY,CAAC,WAAW,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACnC,aAAC;AACL,SAAC,CAAC;;;AAIN,IAAA,SAAS,CAAC,OAA+D,EAAA;QACrE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;;AAI7C,IAAA,eAAe,CAAC,OAAgB,EAAA;QACpC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACtC,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAoB;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5F,IAAI,QAAQ,EAAE;AACV,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA,CAAC;;AAEN,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;aAChE;YACH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;;QAEhD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,MAAM;;;AAI9C,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QACtC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACrC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;AAC5C,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;AAC7C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;;;;AAMlC,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACrC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE;YACjE,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,UAAU,EAAE;;YAEzB,MAAM,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;;;8GAzErC,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,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,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCEY,qBAAqB,CAAA;;AAE9B,IAAA,MAAM,CAAC,QAAgC,EAAA;AACnC,QAAA,OAAO,OAAO,cAAc,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC;;8GAH7E,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;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,cADR,MAAM,EAAA,CAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;MASrB,qBAAqB,CAAA;;AAK9B,IAAA,WAAA,CAAoB,sBAA6C,EAAA;QAA7C,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;;AAHlC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAA4B;;;IAM/D,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;;AAIlF,IAAA,OAAO,CAAC,YAA2C,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC;AAE3C,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAyC,KAAI;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC5C,MAAM,YAAY,GAAG,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;AAEhD,YAAA,OAAO,MAAK;gBACR,YAAY,EAAE,WAAW,EAAE;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACnC,aAAC;AACL,SAAC,CAAC;;AAGN;;;AAGG;AACK,IAAA,eAAe,CAAC,OAAgB,EAAA;QACpC,IAAI,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QAEzD,IAAI,CAAC,eAAe,EAAE;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAyB;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1F,IAAI,QAAQ,EAAE;AACV,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;;YAE7B,eAAe,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;YAChD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;;QAExD,eAAe,CAAC,KAAK,EAAE;QACvB,OAAO,eAAe,EAAE,MAAM;;AAGlC;;;AAGG;AACK,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QACtC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE;YAClB;;AAGJ,QAAA,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE;YACzB;;AAEJ,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;;AAI1B,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC;QAE3D,IAAI,CAAC,eAAe,EAAE;YAClB;;AAEJ,QAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe;QAC5C,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,UAAU,EAAE;;QAEzB,MAAM,CAAC,QAAQ,EAAE;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;;8GA3EjC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;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,cADR,MAAM,EAAA,CAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACdlC;AACA,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;MACzF,YAAY,GAAG,IAAI,cAAc,CAAW,aAAa;AAGtE;;;;AAIG;MACU,UAAU,CAAA;;AAQnB,IAAA,WAAA,CAA8C,oBAA8B,EAAA;AACxE,QAAA,oBAAoB,GAAG,oBAAoB,IAAI,mBAAmB;QAElE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEjG,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;AAfrD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,kBAQa,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHARnC,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB;;0BAcgB;;0BAAY,MAAM;2BAAC,YAAY;;;MCjBnC,sBAAsB,CAAA;;IAE/B,WACqB,CAAA,QAA8B,EACA,SAA0B,EAAA;QADxD,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACsB,IAAS,CAAA,SAAA,GAAT,SAAS;;;IAI5D,kBAAkB,CAAC,IAAiB,EAAE,gBAAgB,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAA;QAC5E,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAChF,YAAA,OAAO,IAAI;;;;QAKf,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;AAErD,QAAA,MAAM,QAAQ,GAAG,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,YAAY;AAErF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,aAAa,GACf,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;kBACnC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAgB,EAAE,gBAAgB;kBACpE,IAAI;YAEd,IAAI,aAAa,EAAE;AACf,gBAAA,OAAO,aAAa;;;AAI5B,QAAA,OAAO,IAAI;;AA9BN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,wDAIP,QAAQ,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJvB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAKzB;;0BAAY,MAAM;2BAAC,QAAQ;;;ACJpC;;;;AAIG;MACU,sBAAsB,GAAG,IAAI,cAAc,CAAqB,wBAAwB,EAAE;AACnG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACV,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAA,OAAO;aACF,MAAM,CAAC,EAAE;AACT,aAAA,IAAI,CAACA,KAAG,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,MAAiB,CAAC,UAAU,CAAC;aAChD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;AAE9C,CAAA;;ACnBY,MAAA,qBAAqB,GAAG;AACjC,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE;;AAOP;AACM,SAAU,iBAAiB,CAAC,KAAa,EAAA;AAC3C,IAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE;AACjC,QAAA,OAAO,GAAG;;AAEd,IAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE;AACjC,QAAA,OAAO,GAAG;;AAEd,IAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE;AACjC,QAAA,OAAO,GAAG;;AAEd,IAAA,OAAO,IAAI;AACf;;ACtBA;AAuBA;;;AAGG;MAMU,mBAAmB,CAAA;AAC5B;;AAEK;IACL,IACI,aAAa,CAAC,KAAuB,EAAA;AACrC,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;;AA0CjD;;AAEG;IACH,IACI,iBAAiB,CAAC,KAA4C,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAC9C;;AAEJ,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACtB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,EAC9B,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CACjC,CACJ;;;IAwBL,WACqB,CAAA,WAA6B,EAC7B,aAA+B,EAAA;QAD/B,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;AAhFlC;;;AAGK;QAEL,IAAO,CAAA,OAAA,GAAG,KAAK;AAEf;;;AAGK;QAEL,IAAO,CAAA,OAAA,GAAG,KAAK;AAEf;;;AAGK;QAEL,IAAO,CAAA,OAAA,GAAG,KAAK;AAEf;;AAEM;QAEN,IAAQ,CAAA,QAAA,GAAG,KAAK;;AAoChB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;QAGhC,IAAgB,CAAA,gBAAA,GAAwC,IAAI,eAAe,CACvE,MAAM,CAAC,sBAAsB,CAAC,CACjC;;AAGO,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAG9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC;;;IAS9D,eAAe,GAAA;AACX,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAACC,WAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACzG,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAU,CAAC,EAChD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,EACzE,GAAG,CAAC,CAAC,UAAU,KAAI;YACf,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9E,oBAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;;iBAErC;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS;;AAExC,SAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,QAAQ,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AACpC,SAAC,CAAC;AAEL,aAAA,SAAS,EAAE;;;IAIpB,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;;IAIlB,WAAW,CAAC,KAAa,EAAE,iBAAiC,EAAA;AAChE,QAAA,MAAM,uBAAuB,GAAG;YAC5B,IAAI,CAAC,OAAO,IAAI,GAAG;YACnB,IAAI,CAAC,OAAO,IAAI,GAAG;YACnB,IAAI,CAAC,OAAO,IAAI,GAAG;YACnB,IAAI,CAAC,QAAQ,IAAI;AACpB,SAAA,CAAC,MAAM,CAAC,OAAO,CAAC;QACjB,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACtE,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,eAAe;;AAEvC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,eAAe;;AAEvC,QAAA,OAAO,UAAU;;8GA/IZ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,mPAiBiB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,EAOhB,gBAAgB,CAOhB,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,EAAA,gBAAgB,6CAMf,gBAAgB,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FArCrD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EACJ,gIAAgI;AACpI,oBAAA,UAAU,EAAE;AACf,iBAAA;+GAMO,aAAa,EAAA,CAAA;sBADhB;gBAcD,OAAO,EAAA,CAAA;sBADN,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQ/D,OAAO,EAAA,CAAA;sBADN,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAQ/D,OAAO,EAAA,CAAA;sBADN,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAO/D,QAAQ,EAAA,CAAA;sBADP,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAOhE,eAAe,EAAA,CAAA;sBADd;gBAOD,eAAe,EAAA,CAAA;sBADd;gBAOG,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,sBAAsB;;MAgGpB,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CAvJhB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAAnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;+GAuJnB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,mBAAmB;AAChC,iBAAA;;;MC/KY,gBAAgB,CAAA;AACzB;;AAEG;aACI,IAAS,CAAA,SAAA,GAAG,YAAH,CAAgB;;AAShC,IAAA,WAAA,GAAA;QACI,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAiB;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAiB;QAE3C,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;YACtB,MAAM,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAa,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;;8GA5B3E,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAWa,UAAU,EAAA,CAAA;sBAAnB;;;ACTL;;;AAGG;MAEU,kBAAkB,CAAA;;IAE3B,WAC8B,CAAA,QAAkB,EACf,UAAe,EAAA;QADlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACL,IAAU,CAAA,UAAA,GAAV,UAAU;AAEvC,QAAA,OAAO,CAAC,IAAI,CACR,CAAA,6GAAA,CAA+G,CAClH;;;AAIL,IAAA,gBAAgB,CAAC,OAAoB,EAAE,SAAiB,EAAE,OAA6B,EAAA;QACnF,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;;;AAIpD,IAAA,sBAAsB,CAClB,kBAA0B,EAC1B,SAAiB,EACjB,OAA6B,EAAA;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;QAChE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;;;AAInD,IAAA,QAAQ,CAAC,SAAiB,EAAA;AACtB,QAAA,OAAO,SAAS,KAAK,gBAAgB,CAAC,SAAS;;;AAI3C,IAAA,wBAAwB,CAAC,QAAgB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YAC/B,OAAO,IAAI,CAAC,QAAQ;;QAExB,QAAQ,QAAQ;AACZ,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,MAAM;AACjB,YAAA,KAAK,UAAU;AACX,gBAAA,OAAO,QAAQ;AACnB,YAAA,KAAK,MAAM;gBACP,OAAO,QAAQ,CAAC,IAAI;AACxB,YAAA;AACI,gBAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAA,gBAAA,CAAkB,CAAC;;;;IAKpE,kBAAkB,CAAC,MAAmB,EAAE,OAA6B,EAAA;QACzE,MAAM,gBAAgB,GAAG,MAAW;YAChC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC;AAC5D,SAAC;QAED,MAAM,mBAAmB,GAAG,MAAW;YACnC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC;YACzD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC;AAC/D,SAAC;AAED,QAAA,MAAM,aAAa,GAAG,CAAC,KAAyC,KAAU;AACtE,YAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AAChC,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;oBACpD;;;YAGR,OAAO,CAAC,KAAK,CAAC;AAClB,SAAC;AAED,QAAA,gBAAgB,EAAE;AAElB,QAAA,OAAO,mBAAmB;;8GAvErB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAGf,QAAQ,EAAA,EAAA,EAAA,KAAA,EACR,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAJd,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;0BAIQ,MAAM;2BAAC,QAAQ;;0BACf,MAAM;2BAAC,WAAW;;;ACb3B;;;AAGG;AACU,MAAA,sCAAsC,GAAG,IAAI,cAAc,CACpE,2CAA2C,EAC3C,EAAE,OAAO,EAAE,MAAM,KAAK,EAAE;AAG5B;;;AAGG;SACa,iBAAiB,GAAA;IAC7B,IAAI,SAAS,EAAE,EAAE;AACb,QAAA,OAAO,CAAC,IAAI,CACR,CAAA,8GAAA,CAAgH,CACnH;;IAEL,OAAO;AACH,QAAA;AACI,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,KAAK,EAAE;AACV,SAAA;AACD,QAAA;AACI,YAAA,OAAO,EAAE,sCAAsC;AAC/C,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;;AC9BA;;;AAGG;MAKU,qBAAqB,CAAA;;AAE9B,IAAA,WAAA,GAAA;AACI,QAAA,OAAO,CAAC,IAAI,CACR,CAAA,gHAAA,CAAkH,CACrH;;;AAGL,IAAA,OAAO,OAAO,GAAA;QACV,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACR,CAAA,0HAAA,CAA4H,CAC/H;;QAEL,OAAO;AACH,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE;SAClC;;8GAjBI,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,OAAA,EAAA,CAHpB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAChB,gBAAgB,CAAA,EAAA,CAAA,CAAA;+GAEjB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,OAAO,EAAE,CAAC,gBAAgB;AAC7B,iBAAA;;;ACRD;;;;AAIG;AACG,SAAU,aAAa,CACzB,OAA8C,EAC9C,QAAsB,GAAA,MAAM,CAAC,SAAS,CAAC,EAAA;AAEvC,IAAA,OAAO,IAAI,UAAU,CAA6B,CAAC,QAAQ,KAAI;AAC3D,QAAA,MAAM,QAAQ,GAAmB;AAC7B,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,YAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,KAAK,KAAI;gBAChD,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,aAAC;SACJ;AACD,QAAA,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;AACzD,KAAC,CAAC;AACN;;AChBM,MAAO,kBAAmB,SAAQ,OAAmC,CAAA;;AASvE,IAAA,WAAA,CACqB,WAAgC,EAChC,SAAoB,EACN,mBAA0B,EAAA;AAEzD,QAAA,KAAK,EAAE;QAJU,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;;QATtB,IAAe,CAAA,eAAA,GAAG,IAAI;AAa1B,QAAA,IAAI,CAAC,mCAAmC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,kBAAkB,CAAC;QAC7G,IAAI,CAAC,WAAW,EAAE;;;AAItB,IAAA,iBAAiB,CAAC,GAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;;;IAI9B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE;;;IAIX,WAAW,GAAA;AACf,QAAA,MAAM,UAAU,GAAa,IAAI,CAAC;AAC9B,cAAE,CAAC,gBAAgB,CAAC,SAAS;cAC3B,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KACvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,KAAiC,KAAI;AACnG,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE;;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACnB,CAAC,CACL;;AA1CI,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,qEAYf,qBAAqB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAZxB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;0BAaQ,MAAM;2BAAC,qBAAqB;;;MChBxB,sBAAsB,GAAG,IAAI,cAAc,CAAmB,0BAA0B;;ACCrG;AACM,SAAU,gBAAgB,CAC5B,OAA+D,EAC/D,UAAmB,EACnB,aAAqB,EACrB,gBAAyB,EAAA;AAEzB,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC7C,IAAI,UAAU,EAAE;QACZ,IAAI,gBAAgB,EAAE;AAClB,YAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;;AAE5C,QAAA,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;AACxC,QAAA,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;;SAC9C;AACH,QAAA,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAA,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC;AACvC,QAAA,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC;;AAEpD;;ACDM,MAAO,yBACT,SAAQ,aAAsB,CAAA;;IAI9B,IACI,WAAW,CAAC,KAAmB,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGpC,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,SAAS;;;AAqBzB,IAAA,WAAA,CACY,WAAoC,EACpC,WAAuB,EACvB,QAA4B,EAAA;QAEpC,KAAK,CAAC,CAAC,CAAC;QAJA,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAQ,CAAA,QAAA,GAAR,QAAQ;AArBpB;;AAEG;QAEH,IAAgB,CAAA,gBAAA,GAAG,IAAI;AAEvB;;AAEG;QAEH,IAAa,CAAA,aAAA,GAAG,aAAa;;QAGrB,IAAS,CAAA,SAAA,GAAG,KAAK;;AAER,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;;AAa/D,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,UAAmB,KAAU;AAC7C,YAAA,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC7F,SAAC;AANG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;;;IASrD,eAAe,GAAA;AACX,QAAA,IAAI,CAAC;aACA,IAAI,CACDC,QAAM,CAAC,CAAC,UAAU,KAAK,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,EACrD,GAAG,CAAC,CAAC,UAAU,KAAI;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;SACxB,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;;8GA5DX,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EARvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD;AACH,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,WAAW,EAA2B;AACzC,yBAAA;wBACD;AACH;AACJ,iBAAA;sIAOO,WAAW,EAAA,CAAA;sBADd;gBAeD,gBAAgB,EAAA,CAAA;sBADf;gBAOD,aAAa,EAAA,CAAA;sBADZ;;;MCxCQ,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,OAAA,EAAA,CAHrB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;+GAE1B,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB;AACtC,iBAAA;;;MCIY,gBAAgB,CAAA;;AAEzB,IAAA,WAAA,CAAoB,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;;IAGtC,OAAO,UAAU,CAAC,EAAW,EAAA;AACzB,QAAA,QACI,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3B,YAAA,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;YAC3C,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;;;AAK5C,IAAA,OAAO,CAAC,OAA+D,EAAA;AACnE,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EACjE,oBAAoB,EAAE,CACzB;;;AAIL,IAAA,SAAS,CAAC,OAA+D,EAAA;AACrE,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC;;8GAvBrC,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCLY,2BAA2B,CAAA;;AAEpC,IAAA,WAAA,CAAoB,UAA+B,EAAA;QAA/B,IAAU,CAAA,UAAA,GAAV,UAAU;;AAG9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,UAAmB,KAAU;YAC7C,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC;AACtE,SAAC;;AACJ;;ACUK,MAAO,mBAAoB,SAAQ,aAAsB,CAAA;;IAa3D,WACY,CAAA,MAAc,EACd,UAAmC,EACnC,gBAAkC,EACkB,aAAgC,EAC5B,eAAkC,EAAA;QAElG,KAAK,CAAC,CAAC,CAAC;QANA,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACoC,IAAa,CAAA,aAAA,GAAb,aAAa;QACT,IAAe,CAAA,eAAA,GAAf,eAAe;;QAhBnF,IAAW,CAAA,WAAA,GAAG,KAAK;;AAEF,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAEhC,IAAe,CAAA,eAAA,GAA4C,IAAI,eAAe,CAE7F,IAAI,CAAC,wBAAwB,EAAE,CAAC;;AAE1B,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,mBAAmB,EAAE;QAWtE,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC;aACtD,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EACxD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,EACpD,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAC1C,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;;;AAIpB,IAAA,eAAe,CAAC,QAA8B,EAAA;QAC1C,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAI5C,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAChC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACnG,SAAC,CAAC;;;IAIN,WAAW,GAAA;QACP,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;;IAI5C,mBAAmB,GAAA;QACvB,IAAI,YAAY,GAAG,KAAK;QACxB,IAAI,cAAc,GAAG,KAAK;AAE1B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC;AACA,iBAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,EAChC,oBAAoB,EAAE,EACtB,GAAG,CAAC,MAAK;gBACL,IAAI,cAAc,EAAE;AAChB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;AAE/B,gBAAA,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE;AAClC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;aAEnC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,iBAAA,SAAS,EAAE;;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC;AACA,iBAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EACzC,GAAG,CAAC,CAAC,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,EAC9B,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,UAAU,KAAI;gBACf,IAAI,CAAC,cAAc,EAAE;AACjB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;;aAExC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,iBAAA,SAAS,EAAE;;AAEpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;IAI9E,wBAAwB,GAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;;8GAlGjG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAiBI,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAlBjD,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAkBQ;;0BAAY;;0BAAQ,MAAM;2BAAC,sBAAsB;;0BACjD;;0BAAY;;0BAAY,MAAM;2BAAC,sBAAsB;;;MCrCjD,cAAc,GAAG,IAAI,cAAc,CAAkB,kBAAkB;;ACkBpF;;AAEG;MAKU,4BAA4B,CAAA;;AAgBrC,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;;;IAUhC,WACiC,CAAA,WAAuB,EACnC,IAAuB,EAAA;QADX,IAAW,CAAA,WAAA,GAAX,WAAW;QACvB,IAAI,CAAA,IAAA,GAAJ,IAAI;;AALR,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;;AASjD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB;;AAGJ,QAAA,IAAI,aAAa,IAAI,OAAO,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;;AAG5B,QAAA,IAAI,cAAc,IAAI,OAAO,EAAE;YAC3B,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;;;IAK/D,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;QAEjG,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QAEzB,IAAI,CAAC,WAAW,EAAE;AACb,aAAA,IAAI,CACD,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC,EAC/C,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;;;IAIlD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;;;AAInC,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC1B,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;;aACtC;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;;;;IAKzC,iBAAiB,GAAA;AACrB,QAAA,QAAQ,IAAI,CAAC,WAAW;AACpB,YAAA,KAAK,YAAY;gBACb,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;gBAC5F;AACJ,YAAA,KAAK,UAAU;AACX,gBAAA,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC;gBACnD;;;8GArFH,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,mLAYpB,cAAc,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAZtB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAA0B,wBAAA,CAAA;AACpC,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BA6BQ;yEAvBL,WAAW,EAAA,CAAA;sBADV;gBAKD,aAAa,EAAA,CAAA;sBADZ;gBAKQ,MAAM,EAAA,CAAA;sBADd,eAAe;uBAAC,cAAc;;;ACnCnC;;AAEG;MAMU,4BAA4B,CAAA;;AAMrC,IAAA,IAEI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;;;AAIvE,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,aAAa;;;AAIrC,IAAA,IAAY,gBAAgB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe;;;IAIrC,WACqB,CAAA,KAAmC,EACnC,MAAkB,EAAA;QADlB,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAM,CAAA,MAAA,GAAN,MAAM;;QAtB3B,IAAY,CAAA,YAAA,GAAG,KAAK;;;IA2BpB,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,CAAC;;;AAKjD,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC;;;IAI3C,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE;;8GA3C7B,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,qHAEjB,gBAAgB,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAJzB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE5F,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,CAAC,MAAkC,4BAAA,CAAC,EAAE;AACvG,iBAAA;uHAIG,YAAY,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAMlC,SAAS,EAAA,CAAA;sBAFZ;;sBACA,WAAW;uBAAC,eAAe;gBAuB5B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,OAAO;gBAQrB,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCxC1B,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,YAH3B,4BAA4B,EAAE,4BAA4B,CAC1D,EAAA,OAAA,EAAA,CAAA,4BAA4B,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;+GAE3D,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;AACrE,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,4BAA4B;AACvE,iBAAA;;;MCNY,4BAA4B,GAAG,IAAI,cAAc,CAAC,2BAA2B;;ACG1F,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEvG,MAAM,mBAAmB,GAAG;AACxB,IAAA;AACI,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,UAAU,EAAE;AACR,YAAA;AACI,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,YAAY,EAAE,CAAC,KAAa,KAAK,qBAAqB,CAAC,KAAK;AAC/D;AACJ;AACJ;CACJ;AAED;AACM,SAAU,2BAA2B,CAAC,EAA0D,EAAA;AAClG,IAAA,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;AAC7C,IAAA,IAAI,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACzC,QAAA,OAAO,IAAI;;AAGf,IAAA,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAI;AAC3C,QAAA,IAAI,UAAU,CAAC,GAAG,KAAK,OAAO,EAAE;YAC5B,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,KAAI;gBAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;gBACpD,OAAO,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;AACrD,aAAC,CAAC;;AAEN,QAAA,OAAO,KAAK;AAChB,KAAC,CAAC;AACN;;MCxBa,iBAAiB,CAAA;;AAE1B,IAAA,WAAA,CAAoB,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;;AAGtC,IAAA,OAAO,WAAW,CAAC,OAAgB,EAAE,eAAwB,EAAA;AACzD,QAAA,IAAI,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACtC,YAAA,OAAO,KAAK;;QAGhB,IAAI,CAAC,eAAe,EAAE;AAClB,YAAA,OAAO,IAAI;;AAGf,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;AACpE,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjB,YAAA,OAAO,2BAA2B,CAAC,OAAO,CAAC;;AAG/C,QAAA,OAAO,QAAQ,GAAG,CAAC,CAAC;;;AAIxB,IAAA,OAAO,CACH,OAA+D,EAC/D,eAAe,GAAG,IAAI,EAAA;AAEtB,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,EACxE,oBAAoB,EAAE,CACzB;;;AAIL,IAAA,SAAS,CAAC,OAA+D,EAAA;AACrE,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC;;8GApCrC,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,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,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;2FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCiCY,sBAAsB,CAAA;;IAE/B,IACI,gBAAgB,CAAC,GAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGrC,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU;;;AAiD1B,IAAA,WAAA,GAAA;;AA5CA,QAAA,IAAA,CAAA,yBAAyB,GAA8B,IAAI,CAAC,iCAAiC;;AAIpF,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAyB;;AAGvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;;AAGxD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAiB;;AAM5B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;;QAGjC,IAAU,CAAA,UAAA,GAAG,IAAI;;AAGjB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAuB;;QAGlD,IAAS,CAAA,SAAA,GAAG,IAAI;;AAIP,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAE9C,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAExD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;;AAGtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;;AAG9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;;QAmC7C,IAAO,CAAA,OAAA,GAAG,MAAmB,IAAI,CAAC,UAAU,CAAC,aAAa;AA/BtD,QAAA,IAAI,CAAC;AACA,aAAA,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK;aAC9B,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AACvB,YAAA,IAAI,WAAW,KAAK,IAAI,CAAC,gBAAgB,EAAE;AACvC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;;AAE3C,SAAC,CAAC;AAEN,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YAC9B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS;iBAC7C,IAAI,CAAC,kBAAkB,EAAE;iBACzB,SAAS,CAAC,YAAW;AAClB,gBAAA,MAAM,IAAI,CAAC,UAAU,EAAE;AAC3B,aAAC,CAAC;YAEN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU;iBAC9C,IAAI,CAAC,kBAAkB,EAAE;iBACzB,SAAS,CAAC,MAAK;gBACZ,IAAI,CAAC,WAAW,EAAE;AACtB,aAAC,CAAC;YAEN,SAAS,CAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS;iBAC5D,IAAI,CAAC,kBAAkB,EAAE;AACzB,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC1B,aAAC,CAAC;AACV,SAAC,CAAC;;;IAON,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,UAAU;;;IAI1B,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;;;AAIzC,IAAA,WAAW,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;QAEpG,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,uBAAuB,EAAE;;aAC3B;YACH,IAAI,CAAC,wBAAwB,EAAE;;;;AAK/B,IAAA,MAAM,UAAU,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB;;AAGJ,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB;;AAGJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAErC,YAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAChC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,gBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;;;;IAMtF,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB;;;AAIJ,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;;;AAIpD,IAAA,UAAU,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB;;AAGJ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa;QAChF,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS;AACzG,QAAA,MAAM,eAAe,GACjB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;QAExG,IAAI,gBAAgB,EAAE;YAClB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CACnE,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,KAAK,EACL,IAAI,CACP;YAED,eAAe,EAAE,KAAK,EAAE;YAExB;;aACG,IAAI,eAAe,EAAE;YACxB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;YAErC;;QAGJ,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;;;IAKxB,uBAAuB,GAAA;QAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE;YACnC;;QAGJ,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,MAAM,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;IAIlB,wBAAwB,GAAA;;;AAG5B,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAc,GAAG,CAAC;aACtE,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC;AACjC,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;YACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;AAC7C,YAAA,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;AACrB,SAAC,CAAC;;;AAIF,IAAA,iCAAiC,CAAC,QAA+B,EAAA;QACrE,OAAO,CAAA,OAAA,EAAU,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAA,IAAA,EAAO,QAAQ,CAAC,SAAS,UAAU,QAAQ,CAAC,QAAQ,GAAG,CAAC,OAC1F,QAAQ,CAAC,SACb,CAAA,CAAE;;8GAhNG,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAEX,gBAAgB,CATzB,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAwB;AACtC;AACJ;AACJ,iBAAA;wDAIO,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAYtC,yBAAyB,EAAA,CAAA;sBADxB;gBAKQ,WAAW,EAAA,CAAA;sBADnB;;;MCtDQ,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAHlB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAEvB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB;AACnC,iBAAA;;;MCJY,4BAA4B,GAAG,IAAI,cAAc,CAAC,sBAAsB;;MCUxE,8BAA8B,CAAA;;AAWvC,IAAA,WAAA,GAAA;;AATA,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;QAE3B,IAAc,CAAA,cAAA,GAAG,MAAM,CAAyB,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAEjG,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAkB,EAAE,CAAC;;AAE5D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAA0C;AAIpE,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,SAAS,GAAkC;gBAC7C,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAC3C,gBAAA,GAAG,EAAE,CAAC,KAAa,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3D,gBAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACxE,gBAAA,OAAO,EAAE,CACL,QAA+E,EAC/E,OAAa,KACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO;aACvD;AACR,YAAA,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC9C,YAAY,CAAC,GAAG,CAAC,EACjBI,sBAAoB,CAAC,SAAS,CAAC,EAC/BR,KAAG,CAAC,MAAM,SAAS,CAAC,CACvB;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;;;;IAK/C,QAAQ,CAAC,IAAmB,EAAE,SAAkC,EAAA;QAC5D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,uBAAuB,EAAE;;;AAIlC,IAAA,UAAU,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,uBAAuB,EAAE;;;IAIxB,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;AACzC,aAAA,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,KAAI;AAC7B,YAAA,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM;AACpE,YAAA,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM;YACpE,OAAO,WAAW,GAAG,WAAW;AACpC,SAAC;aACA,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,aAAa,CAAC,CAC/C;;8GArDI,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCNY,iCAAiC,GAAG,IAAI,cAAc,CAC/D,mCAAmC;AAGvC;;;;;;AAMG;MAKU,8BAA8B,CAAA;;AAWvC,IAAA,WAAA,GAAA;;QATU,IAAc,CAAA,cAAA,GAAG,MAAM,CAAgB,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAExF,IAAsB,CAAA,sBAAA,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAEnF,IAAM,CAAA,MAAA,GAAmC,MAAM,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAEtG,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAItC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CACX,gGAAgG,CACnG;;QAEL,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;AACzC,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB;YACzD,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;AAChE,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;;;8GArBhF,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACjBD;;;AAGG;AACG,SAAU,eAAe,CAAC,IAAmB,EAAA;IAC/C,OAAO,OAAO,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AAClG;;ACLA;;;AAGG;AACG,SAAU,cAAc,CAAC,IAA8B,EAAA;IACzD,IAAI,CAAC,IAAI,EAAE;AACP,QAAA,OAAO,IAAI;;AAEf,IAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;;IAGzB,OAAO,IAAI,CAAC,OAAO;AACvB;;ACZA;AACgB,SAAA,cAAc,CAAC,OAA8B,EAAE,QAAkC,EAAA;IAC7F,IAAI,CAAC,OAAO,EAAE;QACV;;AAGJ,IAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC;IAEjD,IAAI,gBAAgB,EAAE;QAClB,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS;QACpE,IAAI,CAAC,QAAQ,EAAE;AACX;;;AAGG;AACH,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAC9C,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAgB;AAC/E,YAAA,IACI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC1B,KAAK;AACL,gBAAA,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAC3E;AACE,gBAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC;;;QAG7F,QAAQ,QAAQ;AACZ,YAAA,KAAK,KAAK;AACN,gBAAA,gBAAgB,CAAC,SAAS,GAAG,aAAa;gBAC1C;AACJ,YAAA,KAAK,QAAQ;AACT,gBAAA,gBAAgB,CAAC,SAAS,GAAG,aAAa,IAAI,gBAAgB,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;gBACnG;;;AAGhB;AAEA,SAAS,eAAe,CAAC,IAAwB,EAAA;AAC7C,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AACd,QAAA,OAAO,IAAI;;IAGf,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AACxG,QAAA,OAAO,IAAI;;SACR;AACH,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,UAAyB,CAAC;;AAE9D;;MC0Ba,sBAAsB,CAAA;;IAE/B,IACI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGrC,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;;;AA8B1B,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB;;;AAkDpE,IAAA,IACI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;;;AAIlC,IAAA,WAAA,GAAA;;QAlFA,IAAmB,CAAA,mBAAA,GAAuC,UAAU;;QAIpE,IAAgB,CAAA,gBAAA,GAAyB,KAAK;AAE9C;;AAEG;QAEH,IAAI,CAAA,IAAA,GAAG,KAAK;;AAIZ,QAAA,IAAA,CAAA,yBAAyB,GAAgD,IAAI,CAAC,iCAAiC;;AAItG,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAiC;;AAe/D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAyB;;AAGxD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAyB;;AAGxD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAA6B;;QAG7D,IAAU,CAAA,UAAA,GAAG,KAAK;;AAGC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGzC,IAAU,CAAA,UAAA,GAAG,KAAK;;QASpB,IAAS,CAAA,SAAA,GAAG,KAAK;;AAGR,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;;AAEpC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;;AAE/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;;AAE7B,QAAA,IAAA,CAAA,WAAW,GAA4B,MAAM,CAAC,UAAU,CAAC;;AAEzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;;AAEtC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG9C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAUzC,QAAA,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;aACrE,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAE/E,QAAA,IAAI,CAAC;AACA,aAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK;aAC/B,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,WAAW,KAAI;YACvB,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,GAAG,WAAW;;AAEpC,SAAC,CAAC;;;AAKV,IAAA,UAAU,CAAC,KAAoB,EAAA;;AAE3B,QAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;YACxB;;AAGJ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa;QACjF,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS;AACzG,QAAA,MAAM,eAAe,GACjB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;QAExG,IAAI,gBAAgB,EAAE;YAClB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAErB;;aACG,IAAI,eAAe,EAAE;YACxB,KAAK,CAAC,eAAe,EAAE;YAEvB,IAAI,CAAC,KAAK,EAAE;YAEZ;;QAGJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC;;;AAK1G,IAAA,MAAM,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAE/C,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAEtF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;;;AAK9B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;;AAGJ,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;;AAG9E,QAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE;YAChC,IAAI,CAAC,0BAA0B,EAAE;;;;IAKzC,eAAe,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;;;AAIzB,IAAA,QAAQ,CAAC,KAAoC,EAAA;AACzC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,cAAc,EAAE;;;IAIzB,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;;;IAI/B,aAAa,CAAC,KAAa,EAAE,cAA+B,EAAA;AACxD,QAAA,IAAI,cAAc;QAElB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;YAC1C,IAAI,SAAS,IAAI,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC7C,cAAc,GAAG,SAAS;AAC1B,gBAAA,OAAO,IAAI;;AAGf,YAAA,OAAO,KAAK;AAChB,SAAC,CAAC;AAEF,QAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AACxB,YAAA,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC;AACxF,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC;;;;AAKvD,IAAA,KAAK,CAAC,cAA+B,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;;;;AAK9C,IAAA,WAAW,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;;IAI1B,0BAA0B,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;;AAGJ,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,UAAU,EAAE;YACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC;;aAChE;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAClE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;;;;AAKrG,IAAA,iBAAiB,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;;AAInE,IAAA,gBAAgB,CAAC,QAA+B,EAAA;AAC5C,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;QAE7B,IAAI,CAAC,eAAe,CAAC;AAChB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAC1E,SAAS,CAAC,CAAC,KAAK,KACb,KAAK,CAAC,OAAO,CACT,CAAC,IAAI,EAAE,KAAK,MACP,IAAI,CAAC,SAAS,GAAG;YACd,GAAG,IAAI,CAAC,aAAa;AACrB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC;SACnC,CAAC,CACT,CACJ;;;AAID,IAAA,uBAAuB,CAAC,KAAsB,EAAE,MAAA,GAA8B,EAAE,EAAA;AACpF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAE1B,IAAI,UAAU,GAAG,IAAI,eAAe,CAAM,KAAK,CAAC,CAAC,cAAc,EAAE;AAEjE,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;AACvB,YAAA,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE;;AAGtC,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE;AACnC,YAAA,UAAU,GAAG,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC;;AAGpF,YAAA,UAAU,GAAG,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC;;AAG1D,QAAA,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAEpD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;QAE7B,MAAM,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAK;YACtD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YACrD,IAAI,CAAC,aAAa,EAAE;gBAChB;;AAGJ,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;gBAEpB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC;;AAGzD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,CAAC;SACzC,CAAC,CACL;AAED,QAAA,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;AACrC,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,KAAoB,KAAI;;AAEzB,YAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACxB;;AAGJ,YAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;AACtC,SAAC,CAAC,EACF,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAC1E,QAAQ,CAAC,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE9D,aAAA,SAAS,EAAE;;;AAIZ,IAAA,iCAAiC,CAAC,QAA+B,EAAA;QACrE,OAAO,CAAA,KAAA,EAAQ,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAA,IAAA,EAAO,QAAQ,CAAC,SAAS,CAAA,gDAAA,CAAkD;;;IAI3G,cAAc,GAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,eAAe,CAAC;aAChB,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EACzC,GAAG,CAAC,CAAC,KAAsB,KAAU;AACjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,KAAK,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,mBAAmB;AAE/F,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;gBAChC,SAAS;gBACT,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChB,aAAA,CAAC;AACN,SAAC,CAAC,EACF,SAAS,CAAC,QAAQ,CAAC;AAEtB,aAAA,SAAS,EAAE;;8GA/UX,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAEX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,gBAAgB,CAsBhB,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,gBAAgB,CA/BzB,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,SAAA,EAsCgB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FApCpC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAwB;AACtC;AACJ;AACJ,iBAAA;wDAIO,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAatC,mBAAmB,EAAA,CAAA;sBADlB;gBAKD,gBAAgB,EAAA,CAAA;sBADf;gBAOD,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAKtC,yBAAyB,EAAA,CAAA;sBADxB;gBAKQ,WAAW,EAAA,CAAA;sBADnB;gBAKQ,wBAAwB,EAAA,CAAA;sBADhC,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAwDhE,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,eAAe;gBAuB5B,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBA+B7B,QAAQ,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO;;;MCnNZ,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHlB,sBAAsB,EAAE,sBAAsB,CAC9C,EAAA,OAAA,EAAA,CAAA,sBAAsB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAE/C,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,sBAAsB;AAC3D,iBAAA;;;MCLY,4BAA4B,GAAG,IAAI,cAAc,CAAC,gCAAgC;;MCoClF,sBAAsB,CAAA;AAXnC,IAAA,WAAA,GAAA;;QAcI,IAAgB,CAAA,gBAAA,GAAyB,KAAK;;QAI9C,IAAgB,CAAA,gBAAA,GAAG,KAAK;;QAIxB,IAAa,CAAA,aAAA,GAA+B,IAAI;;AAIvC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAyB;;AAIvD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAyB;;QAO/D,IAAe,CAAA,eAAA,GAAG,KAAK;;AAGN,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAkJpD;;IA/IG,eAAe,GAAA;QACX,IAAI,CAAC,eAAe,CAAC;AAChB,aAAA,IAAI,CAACS,WAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1E,aAAA,SAAS,CAAC,CAAC,KAAK,KACb,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KACtB,IAAI,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CACrF,CACJ;QAEL,IAAI,CAAC,eAAe,CAAC;AAChB,aAAA,IAAI,CACDA,WAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,SAAS,CAAC,CAAC,SAA4C,KACnD,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CACtE,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,YAAY,KAAI;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAElC,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzE,SAAC,CAAC;QAEN,IAAI,CAAC,eAAe,CAAC;AAChB,aAAA,IAAI,CACDA,WAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,SAAS,CAAC,CAAC,SAA4C,KACnD,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CACtE,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,YAAY,KAAI;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAEnC,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzE,SAAC,CAAC;QAEN,IAAI,CAAC,eAAe,CAAC;AAChB,aAAA,IAAI,CACDA,WAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,SAAS,CAAC,CAAC,SAA4C,KACnD,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAC9D,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;;AAGvG;;;AAGG;AACH,IAAA,SAAS,CAAC,QAA+B,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxD,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;;;;AAK7C,IAAA,UAAU,CAAC,KAAoB,EAAE,IAA4B,EAAE,eAAiC,EAAA;QAC5F,IACI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9F,IAAI,CAAC,eAAe,EACtB;YACE;;QAGJ,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;AAC5C,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC;AAChE,QAAA,IAAI,YAAgC;AACpC,QAAA,IAAI,gBAAgB,GAAG,eAAe,IAAI,CAAC;AAC3C,QAAA,IAAI,cAA8B;QAElC,MAAM,cAAc,GAAG,eAAe,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAC/E,QAAA,MAAM,aAAa,GAAG,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;QAE5G,MAAM,cAAc,GAAG,eAAe,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAC/E,QAAA,MAAM,aAAa,GAAG,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;AAE5G,QAAA,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,YAAY,GAAG,eAAe,GAAG,CAAC;gBAClC;AACJ,YAAA,KAAK,UAAU;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,YAAY,GAAG,eAAe,GAAG,CAAC;gBAClC;AACJ,YAAA,KAAK,UAAU;gBACX,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,IAAI,aAAa,CAAC,EAAE;oBAC5D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,YAAY,GAAG,eAAe,GAAG,CAAC;oBAClC,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;;gBAEtE;AACJ,YAAA,KAAK,WAAW;gBACZ,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc,IAAI,aAAa,CAAC,EAAE;oBAC5D,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,YAAY,GAAG,eAAe,GAAG,CAAC;oBAClC,gBAAgB,GAAG,CAAC;;gBAExB;AACJ,YAAA,KAAK,SAAS;gBACV,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;gBAC9D,cAAc,GAAG,KAAK;gBACtB;AACJ,YAAA,KAAK,OAAO;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;gBACzD,cAAc,GAAG,QAAQ;gBACzB;;QAGR,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC7B;;YAGJ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAC/D,YAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACnB,gBAAA,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,cAAc,CAAC;;;;;IAMpD,aAAa,CAAC,IAA4B,EAAE,WAAmB,EAAA;AACnE,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC/D,YAAA,OAAO,WAAW;;AAGtB,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AAC5B,YAAA,OAAO,IAAI;;AAGf,QAAA,OAAO,IAAI,CAAC,aAAa,KAAK,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;;8GA7KtE,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAMX,gBAAgB,CAbzB,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAwBgB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAtBpC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,WAAW,EAAwB;AACtC;AACJ;AACJ,iBAAA;8BAIG,gBAAgB,EAAA,CAAA;sBADf;gBAKD,gBAAgB,EAAA,CAAA;sBADf,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAKtC,aAAa,EAAA,CAAA;sBADZ;gBAKQ,WAAW,EAAA,CAAA;sBADnB;gBAKQ,UAAU,EAAA,CAAA;sBADlB;gBAKgB,eAAe,EAAA,CAAA;sBAD/B,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,4BAA4B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MCpD3D,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHlB,mBAAmB,EAAE,sBAAsB,CAC3C,EAAA,OAAA,EAAA,CAAA,mBAAmB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAE5C,mBAAmB,EAAA,OAAA,EAAA,CAHlB,mBAAmB,EACnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAEpB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;AACtD,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,sBAAsB;AACxD,iBAAA;;;MCLY,oCAAoC,GAAG,IAAI,cAAc,CAAC,qCAAqC;;ACE5G;;;;AAIG;MAWU,+BAA+B,CAAA;;IAExC,WAC8B,CAAA,QAAkB,EACpC,WAAoC,EAAA;QADlB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAC1B,IAAW,CAAA,WAAA,GAAX,WAAW;;;AAKvB,IAAA,OAAO,CAAC,MAAkB,EAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC9C,QAAA,IAAI,SAAS,EAAE,QAAQ,EAAE,EAAE;YACvB,IACI,SAAS,CAAC,UAAU;iBACnB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;AAC5D,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EACpF;gBACE,MAAM,CAAC,eAAe,EAAE;gBACxB,MAAM,CAAC,cAAc,EAAE;;;;AAlB1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAG5B,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAP7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,oCAAoC;AAC7C,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAV3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,oCAAoC;AAC7C,4BAAA,WAAW,EAAiC;AAC/C;AACJ;AACJ,iBAAA;;0BAIQ,MAAM;2BAAC,QAAQ;kEAMpB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCpBxB,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA5B,4BAA4B,EAAA,OAAA,EAAA,CAH3B,+BAA+B,CAAA,EAAA,OAAA,EAAA,CAC/B,+BAA+B,CAAA,EAAA,CAAA,CAAA;+GAEhC,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,+BAA+B,CAAC;oBAC1C,OAAO,EAAE,CAAC,+BAA+B;AAC5C,iBAAA;;;MCKY,qBAAqB,CAAA;AAO9B;;AAEG;IACH,IACI,OAAO,CAAC,KAAc,EAAA;AACtB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;YACxB;;AAEJ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;;AAgBpC,IAAA,WAAA,CACY,OAAgC,EAChC,OAAe,EACN,gBAAwC,EAAA;QAFjD,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACE,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AArCrC;;AAEG;QAEH,IAAe,CAAA,eAAA,GAAG,wBAAwB;AAiB1C;;AAEG;QAEH,IAAgB,CAAA,gBAAA,GAAG,KAAK;;AAGP,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;;;IAU/D,eAAe,GAAA;AACX,QAAA,IAAI,CAAC;aACA,IAAI,CACD,oBAAoB,EAAE,EACtB,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EAC5B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7C,SAAC,CAAC;;AAGV;;;AAGG;AACK,IAAA,eAAe,CAAC,EAAa,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AACpC,YAAA,EAAE,EAAE;;aACD;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;;;AAIjE;;;AAGG;IACK,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;;AAGtG,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAClE,IAAI,CAAC,eAAe,CACI;AAE5B,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;;;AAI7G,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;;;IAI9F,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf;;AAEJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE;QACvC,GAAG,EAAE,KAAK,EAAE;;8GA7FP,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,sBAAsB;AACrC,iBAAA;sIAMG,eAAe,EAAA,CAAA;sBADd;gBAOG,OAAO,EAAA,CAAA;sBADV;gBAgBD,gBAAgB,EAAA,CAAA;sBADf;;;MC7BQ,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHjB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAEtB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB;AAClC,iBAAA;;;MCGY,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;;QAOI,IAAM,CAAA,MAAA,GAAG,EAAE;;AAOX,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAW;;AAGxB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAapD;;IAVG,QAAQ,GAAA;QACJ,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe;aACtE,IAAI,CACDV,KAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAC5B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AAC/C,SAAC,CAAC;;8GA3BD,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAIG,MAAM,EAAA,CAAA;sBADL,KAAK;uBAAC,oBAAoB;gBAI3B,eAAe,EAAA,CAAA;sBADd;gBAKD,WAAW,EAAA,CAAA;sBADV;;;MCKQ,wBAAwB,CAAA;;AAajC,IAAA,WAAA,CAA6B,WAAuB,EAAA;QAAvB,IAAW,CAAA,WAAA,GAAX,WAAW;AANxC;;AAEG;AACO,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAA4B;;AAK/D;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;;;IAIzC,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;IAI1B,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA7BjB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kEAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kEAAkE;AAC5E,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAMG,qBAAqB,EAAA,CAAA;sBADpB;gBAMS,MAAM,EAAA,CAAA;sBAAf;;MA4BQ,kBAAkB,CAAA;AAC3B;;AAEG;IACH,IACI,gBAAgB,CAAC,KAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC;;;AAiCjD;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;;;IAIzC,WACqB,CAAA,WAAuB,EACvB,SAAoB,EAAA;QADpB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;AAxC9B;;AAEG;QAEH,IAAgB,CAAA,gBAAA,GAAG,KAAK;AAExB;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU;;QAQpC,IAAgB,CAAA,gBAAA,GAAG,IAAI;;AAMvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAG9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;;IAiBxC,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,KAAK,WAAW;;QAGrF,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,EAAE;AAC1B,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CAAC,oBAAoB,EAAE,EAAEW,cAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACpF,aAAA,SAAS,CAAC;AACP,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,eAAe;AACnC,SAAA,CAAC;;;IAIV,WAAW,GAAA;QACP,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,YAAY,EAAE;;;IAIvB,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa;;AAE1D,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE;;;;AAK3B,IAAA,aAAa,CAAC,KAA+B,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,aAAa;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,qBAAqB;QAChD,IAAI,CAAC,eAAe,EAAE;;;IAI1B,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,EAAE;YAC1C,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACxB,IAAI,CAAC,SAAS,EAAE;;;;AAK5B;;AAEG;IACK,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB;;AAEJ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACzE,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;QACvD,MAAM,YAAY,GAAG,MAAW;YAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,eAAe,EAAE;gBACjD,iBAAiB,CAAC,GAAG,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AACvE,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE/B,SAAC;AACD,QAAA,YAAY,EAAE;;AAGlB;;AAEG;IACK,aAAa,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAClG,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI;;AAG7G,QAAA,OAAO,UAAU,CAAC,UAAU,CAAC;;AAGjC;;AAEG;IACK,MAAM,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC;AACnE,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC/D,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC;AACtE,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,UAAU,CAAC;AAC3E,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAG,EAAA,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;;;AAI7F;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,CAAC;AACnE,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,EAAE,EAAE,CAAC;;;;IAKnE,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;;AAEJ,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;QAE7D,IAAI,CAAC,KAAK,EAAE;AAEZ,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC;AACtD,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC3D,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAClE,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACnB,YAAA,UAAU,GAAG,QAAQ,GAAG,GAAG;;AAE/B,QAAA,IAAI,SAAS,KAAK,YAAY,EAAE;AAC5B,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;AACvE,YAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;AAC7E,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;AAC3E,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;YACjF,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa;;QAE/E,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;;8GAtLpD,kBAAkB,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;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;uGAMO,gBAAgB,EAAA,CAAA;sBADnB;gBASD,gBAAgB,EAAA,CAAA;sBADf;gBAOD,eAAe,EAAA,CAAA;sBADd;;;MCvEQ,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHd,wBAAwB,EAAE,kBAAkB,CAC5C,EAAA,OAAA,EAAA,CAAA,wBAAwB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;+GAE7C,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,kBAAkB,CAAC;AACvD,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,kBAAkB;AACzD,iBAAA;;;MCmBY,mBAAmB,CAAA;;AAc5B,IAAA,WAAA,CAA6B,GAAe,EAAA;QAAf,IAAG,CAAA,GAAA,GAAH,GAAG;;QAZvB,IAAO,CAAA,OAAA,GAAG,KAAK;AACxB;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAG,GAAG;;QAKvB,IAAgB,CAAA,gBAAA,GAAG,KAAK;QAI5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa;;;AAK/C,IAAA,SAAS,CAAC,CAAgB,EAAA;AACtB,QAAA;;AAEI,QAAA,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE;YACjB,MAAM;YACN,SAAS;YACT,GAAG;YACH,MAAM;YACN,KAAK;YACL,GAAG;YACH,IAAI;YACJ,UAAU;YACV,WAAW;YACX,QAAQ;YACR;SACH,CAAC;;AAEF,aAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAClE;AACE,YAAA,OAAO;;AAGX,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;AAE3C,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC5D,CAAC,CAAC,cAAc,EAAE;AAElB,gBAAA,OAAO;;iBACJ;AACH,gBAAA,OAAO;;;AAIf,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAElD,CAAC,CAAC,cAAc,EAAE;gBAClB;;iBACG;AACH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACpE,gBAAA,OAAO;;;;AAKf,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YACvC,CAAC,CAAC,cAAc,EAAE;YAClB;;;;AAMR,IAAA,OAAO,CAAC,KAAU,EAAA;AACd,QAAA,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE;;AAEzB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;aACrD,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;;AAE3D,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;QAG9D,KAAK,CAAC,cAAc,EAAE;;;AAK1B,IAAA,MAAM,CAAC,KAAgB,EAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1D,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAEzB,KAAK,CAAC,cAAc,EAAE;;;AAIlB,IAAA,UAAU,CAAC,aAAqB,EAAA;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAC3D,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,CAAC;QAC1E,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AACjC,gBAAA,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa;AACvE,gBAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC;;;gBAG9E,IAAI,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,WAAW,EAAE;AACjD,oBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;;iBAE3E;;gBAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;;;AAIlE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;;;;;;IAOpF,eAAe,CAAC,OAAyB,EAAE,OAAe,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;AAExC,QAAA,OAAO,CAAC,KAAK;YACT,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;AAE1G,QAAA,MAAM,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM;QACrC,OAAO,CAAC,KAAK,EAAE;AACf,QAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;AAEnC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;;;IAIhC,aAAa,CAAC,EAAoB,EAAE,IAAY,EAAA;AACpD,QAAA,IAAI,aAAa,IAAI,QAAQ,EAAE;;YAE3B,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;YAC5C,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC9B,YAAA,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;;;;;AAMnB,IAAA,cAAc,CAAC,KAAa,EAAA;QAChC,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,gBAAgB,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;YAC/D,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;;aAC9B;YACH,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;AAGzC,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClB,YAAA,MAAM,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;;AAGzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;AAC9C,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;;YAEf,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;AACjE,YAAA,MAAM,GAAG,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE;;AAGxE,QAAA,OAAO,MAAM;;;AAIT,IAAA,eAAe,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC;;aACnD;;AAEH,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;AACvC,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE;AAClE,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC;;iBACnD;gBACH,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;;;;AAM5D,IAAA,IAAY,aAAa,GAAA;QACrB,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa;AAE3D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;;;AAI7E,IAAA,cAAc,CAAC,GAAW,EAAA;AAC9B,QAAA,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa;AAC5E,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;AAE5E,QAAA,OAAO;cACD,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG;cAC/B,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC;;8GA1M3F,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAGY,OAAO,EAAA,CAAA;sBAAf;gBAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAcD,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAwDnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAejC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MC1GvB,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHf,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;+GAEpB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,mBAAmB;AAChC,iBAAA;;;MCDY,yBAAyB,CAAA;;AAElC,IAAA,WAAA,CAAmB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;;8GAFZ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCgBY,qBAAqB,CAAA;;IAsC9B,WACY,CAAA,GAAe,EACf,OAAe,EAAA;QADf,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAO,CAAA,OAAA,GAAP,OAAO;AAvCnB;;AAEG;QAEH,IAAc,CAAA,cAAA,GAAG,CAAC;AAQlB;;AAEG;QAEH,IAAiB,CAAA,iBAAA,GAAG,MAAM;AAE1B;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAyB,IAAI,YAAY,EAAU;;AASjD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;;IAYjD,eAAe,GAAA;QACX,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACrB,aAAA,IAAI,CAACA,cAAY,CAAC,GAAG,CAAC;aACtB,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;;AAGlD;;AAEK;IACL,qBAAqB,GAAA;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAClF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;AACzD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW;AAC9B,YAAA,UAAU,CAAC,QAAQ,CAAC,WAAW,IAAI,GAAG,CAAC;YACvC,UAAU,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC,CAC/C;AAED,QAAA,IAAI,YAAY,IAAI,CAAC,EAAE;AACnB,YAAA,OAAO,CAAC;;QAGZ,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC;;AAG7D;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;YAClB,UAAU,CAAC,MAAK;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW;gBAEvD,IAAI,UAAU,GAAG,CAAC;gBAClB,IAAI,aAAa,GAAG,CAAC;AAErB,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,oBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW;oBAChC,UAAU,IAAI,QAAQ;AAEtB,oBAAA,IAAI,UAAU,GAAG,YAAY,EAAE;AAC3B,wBAAA,aAAa,EAAE;;AAEvB,iBAAC,CAAC;gBAEF,IAAI,CAAC,iCAAiC,EAAE;aAC3C,EAAE,CAAC,CAAC;AACT,SAAC,CAAC;;IAGE,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACpD,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;;;IAIzC,iCAAiC,GAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGpC;;;;;AAKK;AACG,IAAA,qBAAqB,CACzB,QAAuB,EACvB,cAAsB,EACtB,kBAA2B,KAAK,EAAA;QAEhC,IAAI,eAAe,GAAG,CAAC;AACvB,QAAA,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,cAAc;AAE3F,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB;AAC/C,SAAC,CAAC;AAEF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;YAExB,eAAe,IAAI,IAAI,CAAC;AACpB,kBAAE,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG;AACrC,kBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;AAErE,YAAA,IAAI,WAAW,GAAG,eAAe,EAAE;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/B,gBAAA,OAAO;AACH,sBAAE,QAAQ,CAAC,MAAM,GAAG;sBAClB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;;;AAIxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/B,QAAA,OAAO,CAAC;;AAGZ;;;AAGK;AACG,IAAA,gBAAgB,CAAC,QAAuB,EAAA;AAC5C,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;AACxC,SAAC,CAAC;;8GA5JG,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,kQA4Bb,yBAAyB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA5BjC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;oGAMG,cAAc,EAAA,CAAA;sBADb;gBAOD,KAAK,EAAA,CAAA;sBADJ;gBAOD,iBAAiB,EAAA,CAAA;sBADhB;gBAOD,eAAe,EAAA,CAAA;sBADd;gBAOD,aAAa,EAAA,CAAA;sBADZ,eAAe;uBAAC,yBAAyB;;;MCxCjC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHjB,qBAAqB,EAAE,yBAAyB,CAChD,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA;+GAEjD,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;AAC3D,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,yBAAyB;AAC7D,iBAAA;;;ACJD;AACgB,SAAA,gBAAgB,CAC5B,OAA+D,EAC/D,UAAmB,EAAA;AAEnB,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAC7C,IAAI,UAAU,EAAE;AACZ,QAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AACxC,QAAA,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;;SACrC;AACH,QAAA,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3C,QAAA,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC;;AAE/C;;MCba,2BAA2B,CAAA;;AAEpC,IAAA,WAAA,CAAoB,UAA+B,EAAA;QAA/B,IAAU,CAAA,UAAA,GAAV,UAAU;;AAG9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,UAAmB,KAAU;AAC7C,YAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AACjD,SAAC;;AACJ;;MCVY,sBAAsB,GAAG,IAAI,cAAc,CAAC,0BAA0B;;MCQtE,gBAAgB,CAAA;;AAEzB,IAAA,WAAA,CAAoB,kBAAqC,EAAA;QAArC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB;;;IAGtC,OAAO,UAAU,CAAC,OAAgB,EAAA;AAC9B,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;;;AAIxF,IAAA,OAAO,CAAC,OAA+D,EAAA;AACnE,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,MAAM,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EACjE,oBAAoB,EAAE,CACzB;;;AAIL,IAAA,SAAS,CAAC,OAA+D,EAAA;AACrE,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC;;8GAnBrC,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACaK,MAAO,mBAAoB,SAAQ,aAAsB,CAAA;;IAgB3D,WACY,CAAA,MAAc,EACd,UAA+B,EAC/B,gBAAkC,EACkB,aAA+B,EAC3B,eAAiC,EAAA;QAEjG,KAAK,CAAC,CAAC,CAAC;QANA,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACoC,IAAa,CAAA,aAAA,GAAb,aAAa;QACT,IAAe,CAAA,eAAA,GAAf,eAAe;;QAnBnF,IAAW,CAAA,WAAA,GAAG,KAAK;;QAGF,IAAe,CAAA,eAAA,GAA4C,IAAI,eAAe,CAE7F,IAAI,CAAC,wBAAwB,EAAE,CAAC;;AAG1B,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,CAAC,mBAAmB,EAAE;;AAGzD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAY7C,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC;aACtD,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EACxD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,EACpD,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAC1C,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;;;AAIpB,IAAA,eAAe,CAAC,QAA8B,EAAA;QAC1C,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACtF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAI5C,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAChC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACnG,SAAC,CAAC;;;IAIN,WAAW,GAAA;QACP,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;;IAI5C,mBAAmB,GAAA;QACvB,IAAI,YAAY,GAAG,KAAK;QACxB,IAAI,cAAc,GAAG,KAAK;AAE1B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC;AACA,iBAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAC3C,GAAG,CAAC,CAAC,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,EAChC,oBAAoB,EAAE,EACtB,GAAG,CAAC,MAAK;gBACL,IAAI,cAAc,EAAE;AAChB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;;AAE/B,gBAAA,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE;AAClC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;aAEnC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,iBAAA,SAAS,EAAE;;AAEpB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC;AACA,iBAAA,IAAI,CACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EACzC,GAAG,CAAC,CAAC,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,EAC9B,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,UAAU,KAAI;gBACf,IAAI,CAAC,cAAc,EAAE;AACjB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;;aAExC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,iBAAA,SAAS,EAAE;;AAEpB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;IAI9E,wBAAwB,GAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;;8GAtGjG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,gBAAA,EAAA,EAAA,EAAA,KAAA,EAoBI,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHArBjD,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;0BAqBQ;;0BAAY;;0BAAQ,MAAM;2BAAC,sBAAsB;;0BACjD;;0BAAY;;0BAAY,MAAM;2BAAC,sBAAsB;;;ACzBxD,MAAO,yBAA0B,SAAQ,aAAsB,CAAA;;IAEjE,IACI,WAAW,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGpC,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,SAAS;;;IASzB,WACY,CAAA,WAAoC,EACpC,WAAuB,EAAA;QAE/B,KAAK,CAAC,CAAC,CAAC;QAHA,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAW,CAAA,WAAA,GAAX,WAAW;;QAPvB,IAAS,CAAA,SAAA,GAAG,KAAK;;AAEA,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;;AAY7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,UAAmB,KAAU;AAC7C,YAAA,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;AAClD,SAAC;AANG,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;;;IASrD,eAAe,GAAA;AACX,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,UAAU,KAAI;AACf,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACjC,gBAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;SAE5B,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,EAAE;;8GA3CX,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAEd,gBAAgB,CATzB,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,WAAW,EAA2B;AACzC;AACJ;AACJ,iBAAA;wGAIO,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MCb7B,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,OAAA,EAAA,CAHrB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;+GAE1B,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,yBAAyB,CAAC;oBACpC,OAAO,EAAE,CAAC,yBAAyB;AACtC,iBAAA;;;ACJD;;AAEG;MAKU,eAAe,CAAA;;IAMxB,WACqB,CAAA,YAA8B,EAC9B,iBAAmC,EAAA;QADnC,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;;AAItC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClF,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAE9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;AAC1D,gBAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC;;;;8GAjB1E,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;+GAIG,KAAK,EAAA,CAAA;sBADJ,KAAK;uBAAC,WAAW;;;MCHT,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,OAAA,EAAA,CAHX,eAAe,CAAA,EAAA,OAAA,EAAA,CACf,eAAe,CAAA,EAAA,CAAA,CAAA;+GAEhB,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,OAAO,EAAE,CAAC,eAAe;AAC5B,iBAAA;;;MCGY,uBAAuB,CAAA;;AAgBhC,IAAA,WAAA,GAAA;AATA;;AAEI;AACJ,QAAA,IAAA,CAAA,UAAU,GAA4B,MAAM,CAAC,UAAU,CAAC;;AAGhD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAI1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;8GAjB5E,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAMG,OAAO,EAAA,CAAA;sBADN;;;MCRQ,qBAAqB,CAAA;;AAE9B,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU;;8GAFpB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCwBY,eAAe,CAAA;;;IAoBxB,IAAuC,wBAAwB,CAAC,KAA4B,EAAA;AACxF,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;;;IAYtC,IACI,qBAAqB,CAAC,KAAsC,EAAA;AAC5D,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACnC,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,YAAY,EAAE;;aAChB;YACH,IAAI,CAAC,mBAAmB,EAAE;;;AAGlC,IAAA,IAAI,qBAAqB,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB;;;IAgBtC,WACY,CAAA,WAAoC,EACxB,WAAuB,EAAA;QADnC,IAAW,CAAA,WAAA,GAAX,WAAW;QACC,IAAW,CAAA,WAAA,GAAX,WAAW;;;QA1DP,IAAc,CAAA,cAAA,GAAyB,MAAM;;;QAI7C,IAAQ,CAAA,QAAA,GAAG,KAAK;;;QAQV,IAAoB,CAAA,oBAAA,GAClD,cAAc;;;AAUR,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;;;AAIxC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;;AAoBxC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAGnC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAE;;QAGhC,IAAW,CAAA,WAAA,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;;;AASvF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACrB,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE;gBAC1F,IAAI,CAAC,YAAY,EAAE;;AAChB,iBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,KAAK,KAAK,EAAE;gBACjG,IAAI,CAAC,mBAAmB,EAAE;;;;;IAMtC,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,mBAAmB,EAAE;;;;IAKlC,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;;;IAInC,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAE;;;IAI1C,mBAAmB,GAAA;QACvB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACxC,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC9C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE;QACnD,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACjD;;QAEJ,MAAM,kBAAkB,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;QAE7E,MAAM,aAAa,GAAG,SAAS,CAAa,MAAM,EAAE,SAAS,CAAC;QAC9D,MAAM,eAAe,GAAG,SAAS,CAAa,eAAe,EAAE,WAAW,CAAC;AAC3E,QAAA,MAAM,eAAe,GAAG,SAAS,CAAa,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC;AAE/G,QAAA,MAAM,aAAa,GAAG,KAAK,CACvB,eAAe,CAAC,IAAI,CAChB,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,GAAG,CAAC,MAAK;AACL,YAAA,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC9C,SAAC,CAAC,CACL,EACD,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CACvC;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC;QAC1E,MAAM,0BAA0B,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC;AAE/E,QAAA,MAAM,uBAAuB,GAAG,eAAe,CAAC,IAAI,CAChD,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAA2B,KAAK,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC/E,MAAM,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAC7C;QAED,MAAM,YAAY,GAAG,MAAW;YAC5B,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9F,SAAC;QACD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CACnC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAC9B,GAAG,CAAC,MAAM,YAAY,EAAE,CAAC,CAC5B;QAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QAC/D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,0BAA0B,CAAC,SAAS,EAAE,CAAC;;;IAIjE,kBAAkB,GAAA;QACtB,OAAO,CAAC,IAAgB,KAAI;YACxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAA,EAAA,CAAI;YACvG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA,EAAA,CAAI;AAC7G,SAAC;;;IAIG,sBAAsB,GAAA;AAC1B,QAAA,IAAI,gBAAwB;AAC5B,QAAA,IAAI,kBAA0B;AAE9B,QAAA,QAAQ,IAAI,CAAC,oBAAoB;AAC7B,YAAA,KAAK,UAAU;gBACX,kBAAkB,GAAG,CAAC,CAAC;gBACvB,gBAAgB,GAAG,CAAC,CAAC;gBACrB;AACJ,YAAA,KAAK,WAAW;gBACZ,kBAAkB,GAAG,CAAC,CAAC;gBACvB,gBAAgB,GAAG,CAAC;gBACpB;AACJ,YAAA,KAAK,aAAa;gBACd,kBAAkB,GAAG,CAAC;gBACtB,gBAAgB,GAAG,CAAC,CAAC;gBACrB;AACJ,YAAA,KAAK,cAAc;gBACf,kBAAkB,GAAG,CAAC;gBACtB,gBAAgB,GAAG,CAAC;gBACpB;;AAGR,QAAA,OAAO,CAAC,MAAkB,EAAE,MAAkB,KAAI;AAC9C,YAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;YAChE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;YAEzC,OAAO;gBACH,CAAC,EAAE,CAAC,GAAG,gBAAgB;gBACvB,CAAC,EAAE,CAAC,GAAG;aACV;AACL,SAAC;;;IAIG,oBAAoB,GAAA;AACxB,QAAA,IAAI,eAA+B;AACnC,QAAA,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AACzC,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE;gBAChC,OAAO,QAAQ,CAAC,IAAI;;AAExB,YAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;;aAC1E;AACH,YAAA,eAAe,GAAG,IAAI,CAAC,cAAc;;QAGzC,IAAI,eAAe,EAAE;AACjB,YAAA,OAAO,eAAe;;aACnB;YACH,OAAO,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,cAAc,CAA2B,yBAAA,CAAA,CAAC;YACvF,OAAO,QAAQ,CAAC,IAAI;;;;AAKpB,IAAA,4BAA4B,CAAC,eAAwB,EAAA;QACzD,OAAO,CAAC,IAAgB,KAAI;AACxB,YAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,qBAAqB,EAAE;YACjE,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAE9E,YAAA,QAAQ,IAAI,CAAC,oBAAoB;AAC7B,gBAAA,KAAK,UAAU;oBACX,QACI,iBAAiB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;wBACpD,iBAAiB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAE9D,gBAAA,KAAK,WAAW;oBACZ,QACI,iBAAiB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;wBACpD,iBAAiB,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAEhE,gBAAA,KAAK,aAAa;oBACd,QACI,iBAAiB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;wBAC1D,iBAAiB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAE9D,gBAAA,KAAK,cAAc;oBACf,QACI,iBAAiB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;wBAC1D,iBAAiB,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;;AAGxE,SAAC;;;AAIG,IAAA,yBAAyB,CAAC,QAA6B,EAAA;AAC3D,QAAA,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CACrC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAC9B,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CACvC;AAED,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CACnC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,EAC/B,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CACrC;AAED,QAAA,OAAO,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;;;AAIhD,IAAA,wBAAwB,CAAC,QAA6B,EAAA;QAC1D,OAAO,QAAQ,CAAC,IAAI,CAChB,GAAG,CAAC,CAAC,QAAQ,KAAI;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB;;YAEJ,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;;iBACjE;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;;SAExE,CAAC,EACF,GAAG,CAAC,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,EAC/C,GAAG,CAAC,CAAC,KAAK,KAAI;YACV,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK;SAC7D,CAAC,CACL;;8GA1QI,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sfAiCV,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAjC1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BA8DQ;yCA1DuB,cAAc,EAAA,CAAA;sBAAzC,KAAK;uBAAC,mBAAmB;gBAIE,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,mBAAmB;gBAI1B,cAAc,EAAA,CAAA;sBADb;gBAKiC,oBAAoB,EAAA,CAAA;sBAArD,KAAK;uBAAC,yBAAyB;gBAKO,wBAAwB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,0BAA0B;gBAMvB,aAAa,EAAA,CAAA;sBAAtB;gBAIS,WAAW,EAAA,CAAA;sBAApB;gBAIG,qBAAqB,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MCtD7C,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,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,YAAY,YAHX,eAAe,EAAE,qBAAqB,CACtC,EAAA,OAAA,EAAA,CAAA,eAAe,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAEvC,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,qBAAqB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,qBAAqB;AACnD,iBAAA;;;MCFqB,wBAAwB,CAAA;AAM7C;;MCPqB,mBAAmB,CAAA;AAaxC;;MCfY,4BAA4B,GAAG,IAAI,cAAc,CAC1D,gEAAgE;;MCavD,gBAAgB,CAAA;;AAoBzB,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAG,CAAA,GAAA,GAAH,GAAG;;AAbf,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,aAAa,CAAqC,CAAC,CAAC;;AAMlE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAEhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ;;QAE7B,IAAM,CAAA,MAAA,GAAgB,EAAE;AAI5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,oBAAoB,CAACO,SAAK,CAAC,EAC3B,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,CAAY,CAAC,CAAC,CAAC,EACrC,GAAG,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,eAAe,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3D,GAAG,CAAC,CAAC,OAAoB,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACzD;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAyC,CAAC,CAAC,EAC5E,WAAW,CAAC,CAAC,CAAC,CACjB;;AAGL;;AAEK;AACL,IAAA,qBAAqB,CAAC,aAAoD,EAAA;AACtE,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;;AAGvC;;AAEG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;AAGvB;;AAEK;AACL,IAAA,UAAU,CAAC,IAAgD,EAAA;AACvD,QAAA,IAAI,IAAI,YAAY,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,CAAC,KAA6D,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,EACvF,WAAW,CAAC,CAAC,CAAC,CACjB;;aACE;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;;QAEvD,IAAI,CAAC,wBAAwB,EAAE;;AAGnC;;AAEK;AACL,IAAA,QAAQ,CAAC,CAAuC,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;;IAIxB,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAA8C,CAAC;;AAGrF;;;AAGK;IACL,wBAAwB,GAAA;QACpB,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;AAC7E,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC;AACA,iBAAA,IAAI,CACD,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,iBAAiB,KAAK,KAAK,CAAC,CAAC,EACtE,SAAS,CAAC,CAAC,KAAoD,KAAI;gBAC/D,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAC9E,gBAAA,OAAO,KAAK,CAAC,GAAG,cAAc,CAAC;aAClC,CAAC,EACF,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EACpD,SAAS,CAAC,YAAY,CAAC;AAE1B,iBAAA,SAAS,EAAE;YAChB,aAAa,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC;iBAC/C,IAAI,CACD,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;AACnB,gBAAA,IACI,KAAK,CAAC,MAAM,KAAK,CAAC;AAClB,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;AACtC,oBAAA,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAC7B;oBACE,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACrD,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAsD,CAAC;oBACpF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAsD,CAAC;;AAEpF,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC5B,aAAC,CAAC,EACF,SAAS,CAAC,YAAY,CAAC;AAE1B,iBAAA,SAAS,EAAE;;;;AAKxB,IAAA,UAAU,CAAC,IAAiD,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;AAClC,YAAA,MAAM,GAAG,GAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAA2C,CAAC;AACvF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;;;;AAKlD,IAAA,YAAY,CAAC,IAAiD,EAAA;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtG,IAAI,eAAe,EAAE;AACjB,YAAA,MAAM,GAAG,GAAyC,IAAI,CAAC,MAAM,CAAC,MAAM,CAChE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CACc;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;;;;AAKlD,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,IAAI;;;AAIxC,IAAA,YAAY,CAAC,IAAiD,EAAA;AAClE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACpD,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;aACpB;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;;;AAKrB,IAAA,kBAAkB,CAAC,KAAoD,EAAA;AAC3E,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AACvF,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAsD,CAAC;;;AAIhF,IAAA,gBAAgB,CAAC,MAA4C,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;;8GApK3C,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCSY,uBAAuB,CAAA;;IAIhC,IACI,KAAK,CAAC,GAAc,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;;AAErB,IAAA,IAAI,KAAK,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtC,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;;QAE9B,OAAO,IAAI,CAAC,MAAM;;;IAItB,IACI,iBAAiB,CAAC,KAAmB,EAAA;AACrC,QAAA,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY;;;AAIvC,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW;QACjC,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,iBAAiB,KAAK,WAAW,EAAE;AACzD,YAAA,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB;;AAEhD,QAAA,QACI,UAAU;aACT,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;AACjD,aAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;;;IAoBzD,WAGY,CAAA,QAA8D,EAC9D,SAA8B,EAC9B,SAA8B,EAC9B,gBAA0D,EAClD,UAAmC,EACnD,QAA4B,EAAA;QALpB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;;AAjB9B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAW;;QAK9B,IAAS,CAAA,SAAA,GAAG,KAAK;;QAEjB,IAAW,CAAA,WAAA,GAAG,IAAI;AAatB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;QAChE,IAAI,CAAC,wBAAwB,EAAE;;;IAInC,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;;QAEtC,OAAO,IAAI,CAAC,SAAS;;;AAIzB,IAAA,WAAW,CAAC,UAAmB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC;;aAClC;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AACjD,YAAA,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW;YACjC,IAAI,UAAU,EAAE;AACZ,gBAAA,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;;iBACzB;AACH,gBAAA,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;;YAEnC,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,CAAG,EAAA,UAAU,CAAE,CAAA,CAAC;;AAG9D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;;;IAI1B,wBAAwB,GAAA;QAC5B,MAAM,gBAAgB,GAA0B,EAAE;AAClD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAEzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;;AAEzC,QAAA,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,oCAAoC,EAAE,CAAC;;;IAInF,oCAAoC,GAAA;AACxC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC;;QAE5C,IAAI,CAAC,wBAAwB,EAAE;;;IAI3B,wBAAwB,GAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE;;AAnH3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAsDpB,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtD/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAVrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD,mBAAmB;YACnB,mBAAmB;YACnB;AACH,SAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,mBAAmB;AAC5B,4BAAA,WAAW,EAAyB;AACvC,yBAAA;wBACD,mBAAmB;wBACnB,mBAAmB;wBACnB;AACH;AACJ,iBAAA;;0BAsDQ;;0BACA,MAAM;2BAAC,4BAA4B;0LAjDpC,KAAK,EAAA,CAAA;sBADR;gBAaG,iBAAiB,EAAA,CAAA;sBADpB;gBAsBD,OAAO,EAAA,CAAA;sBADN;gBAKD,QAAQ,EAAA,CAAA;sBADP;;;MCvCQ,uBAAuB,CAAA;;IAgBhC,IACI,QAAQ,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC;;;AAO1C,IAAA,WAAA,CAAoB,iBAAyC,EAAA;QAAzC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;AApBrC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAA8B;;QAI/D,IAAM,CAAA,MAAA,GAAG,KAAK;;QAId,IAAQ,CAAA,QAAA,GAAG,KAAK;AAaZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC;;;AAItD,IAAA,MAAM,CAAC,IAA+B,EAAA;AAClC,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;;;AAI3C,IAAA,QAAQ,CAAC,IAA+B,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC;;;AAI7C,IAAA,YAAY,CAAC,IAA+B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;aAChB;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;;;AAKzB,IAAA,QAAQ,CAAC,KAAiC,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAInC,eAAe,GAAA;QACX,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;;8GAvDlD,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAQZ,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAgB,CAIhB,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,gBAAgB,CApBzB,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD;AACH,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAwBgB,mBAAmB,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAtB3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAZnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,WAAW,EAAyB;AACvC,yBAAA;wBACD;AACH;AACJ,iBAAA;kFAMG,cAAc,EAAA,CAAA;sBADb;gBAKD,MAAM,EAAA,CAAA;sBADL,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAKtC,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAKlC,QAAQ,EAAA,CAAA;sBADX;gBAMqC,eAAe,EAAA,CAAA;sBAApD,eAAe;uBAAC,mBAAmB;;;MCxC3B,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHnB,uBAAuB,EAAE,uBAAuB,CAChD,EAAA,OAAA,EAAA,CAAA,uBAAuB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAEjD,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,uBAAuB;AAC7D,iBAAA;;;MCDY,iBAAiB,CAAA;;AAM1B,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW;;;IAG9B,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,IAAI;;8GAVX,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;gFAIG,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,aAAa;;;MCDX,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,OAAA,EAAA,CAHb,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;+GAElB,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,OAAO,EAAE,CAAC,iBAAiB;AAC9B,iBAAA;;;MCEY,iBAAiB,CAAA;AAC1B;;AAEG;IACH,IACI,gBAAgB,CAAC,KAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC;;;AA6BxD,IAAA,WAAA,CAA6B,WAAuB,EAAA;QAAvB,IAAW,CAAA,WAAA,GAAX,WAAW;AA1BxC;;AAEG;QAEH,IAAgB,CAAA,gBAAA,GAAG,KAAK;;QAGhB,IAAiB,CAAA,iBAAA,GAAG,GAAG;;QAWvB,IAAoB,CAAA,oBAAA,GAAG,IAAI;;AAUnC;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;;AAGzC;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO;AACvD,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;;;;IAIzC,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE;;;;IAKxB,WAAW,GAAA;QACP,IAAI,CAAC,SAAS,EAAE;;;IAIZ,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW;AAEvC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB;;QAEJ,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,YAAA,EAAe,IAAI,CAAC,iBAAiB,CAAA,mEAAA,CAAqE;QACvJ,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa;;8GA1ElG,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAMO,gBAAgB,EAAA,CAAA;sBADnB;gBASD,gBAAgB,EAAA,CAAA;sBADf;;MAsEQ,uBAAuB,CAAA;;AAEhC,IAAA,WAAA,CAAoB,MAAkB,EAAA;QAAlB,IAAM,CAAA,MAAA,GAAN,MAAM;;;IAG1B,qBAAqB,GAAA;AACjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;QACpC,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE;AACjC,YAAA,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS;;;8GARtB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8DAA8D;AACxE,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCjFY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,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,cAAc,YAHb,iBAAiB,EAAE,uBAAuB,CAC1C,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;+GAE3C,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;AACrD,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,uBAAuB;AACvD,iBAAA;;;MCLY,QAAQ,GAAG,IAAI,cAAc,CAAC,oBAAoB;MAClD,QAAQ,GAAG,IAAI,cAAc,CAAC,oBAAoB;;MCqBlD,gBAAgB,CAAA;;IAoCzB,IACI,SAAS,CAAC,SAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC3B,IAAI,CAAC,kBAAkB,EAAE;;;AA+B7B,IAAA,WAAA,CACoB,UAAsB,EACrB,SAAmB,EACnB,SAAoB,EAAA;QAFrB,IAAU,CAAA,UAAA,GAAV,UAAU;QACT,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAS,CAAA,SAAA,GAAT,SAAS;AArE9B;;;AAGG;QAGH,IAAkB,CAAA,kBAAA,GAAG,IAAI;;AAQhB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAmB;;AAI3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;;AAInC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AAE3C;;;AAGG;QAEH,IAAY,CAAA,YAAA,GAAG,KAAK;;QAWpB,IAAuB,CAAA,uBAAA,GAAG,gBAAgB;;QAG1C,IAAa,CAAA,aAAA,GAAG,IAAI;;QAQZ,IAAU,CAAA,UAAA,GAAG,IAAI;;AAGjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;QAGnC,IAAmB,CAAA,mBAAA,GAAuB,IAAI;;QAG9C,IAAY,CAAA,YAAA,GAAuB,IAAI;;QAGvC,IAAiB,CAAA,iBAAA,GAAuB,IAAI;;;AAUpD,IAAA,qBAAqB,CAAC,QAAiB,EAAA;;QAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAElE,MAAM,QAAQ,GAAiB,QAAQ,GAAG,QAAQ,GAAG,OAAO;;QAG5D,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,IAAI;YACZ,QAAQ;YACR,CAAC,EAAE,IAAI,CAAC,GAAG;YACX,eAAe,EAAE,IAAI,CAAC,YAAY;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC;SAChB;;;IAIL,kBAAkB,GAAA;QACd,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,oBAAoB,EAAE;;;IAI/B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;;;AAI3B,IAAA,SAAS,CAAC,QAAyB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;;IAI7B,iBAAiB,GAAA;;AAEb,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;AAGpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;QAGrB,IAAI,CAAC,iBAAiB,EAAE;;;IAI5B,cAAc,GAAA;;AAEV,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAEzE,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,iBAAiB,EAAE;;AAE5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;;IAIvB,iBAAiB,GAAA;QACb,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;;YAEjE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACzE,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;;;;IAKvC,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;YAEnD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAC3D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;;IAKhC,sBAAsB,GAAA;QAClB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;;YAE7D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACrE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;;;IAKrC,sBAAsB,GAAA;QAClB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAE5D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACxF,IAAI,YAAY,EAAE;gBACd,SAAS,GAAG,YAAY;;;AAIhC,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;IAIjD,UAAU,CAAC,QAAsB,EAAE,QAAiB,EAAA;;QAEhD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAElD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;;aACzD;YACH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC;;AAElE,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;AAE5C,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;;;AAI7C,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACxF,IAAI,YAAY,EAAE;gBACd,SAAS,GAAG,YAAY;;;AAIhC,QAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;;;IAI5C,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC;;;AAIzE;;;AAGG;AACH,IAAA,gBAAgB,CAAC,KAAc,EAAA;QAC3B,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,uBAAuB,CAAC;;aAC5E;AACH,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,uBAAuB,CAAC;;;;IAKlF,iBAAiB,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;;AAEjE,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;AAEtC,QAAA,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC/C,IAAI,CAAC,qBAAqB,EAAE;AAE5B;;AAEG;QACH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC;;;IAIxD,qBAAqB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAErE,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACtC;;AAGJ,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;AACpD,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI;QACrD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;QACpD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QAC3C,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;AAE9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI;AACvF,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI;;;AAIrF,IAAA,kBAAkB,CAAC,OAAgB,EAAA;AACvC,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa;QAC3C,IAAI,CAAC,aAAa,EAAE;YAChB;;AAGJ,QAAA,MAAM,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE;AAC3D,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE;AAE/C,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG;AACnC,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI;QAErC,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC;YACtC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS;SACtC;;;IAIG,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;;;IAIjF,WAAW,CAAC,OAAgB,EAAE,SAAe,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,EAAE;AACjD,QAAA,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC;QAC9B,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;;;IAI1D,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC;aACA,IAAI;;QAED,KAAK,CAAC,CAAC,CAAC;aAEX,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAEpD,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE;SACvC,CAAC,CACT;;8GArTI,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,icAHd,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGpF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,MAAsB,gBAAA,CAAC,EAAE,CAAC;AAC7F,oBAAA,UAAU,EAAE;AACf,iBAAA;gIAIG,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,YAAY;gBAQnB,kBAAkB,EAAA,CAAA;sBAFjB;;sBACA,WAAW;uBAAC,mBAAmB;gBAKhC,iBAAiB,EAAA,CAAA;sBADhB;gBAKQ,KAAK,EAAA,CAAA;sBADb;gBAKQ,QAAQ,EAAA,CAAA;sBADhB;gBAKQ,OAAO,EAAA,CAAA;sBADf;gBAQD,YAAY,EAAA,CAAA;sBADX;gBAKG,SAAS,EAAA,CAAA;sBADZ;gBAQD,uBAAuB,EAAA,CAAA;sBADtB;;;AC5DL;;;AAGG;MAIU,yBAAyB,CAAA;;IAiBlC,WACqB,CAAA,IAAuB,EACX,WAAuB,EAAA;QADnC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACQ,IAAW,CAAA,WAAA,GAAX,WAAW;;QAZ5C,IAAuB,CAAA,uBAAA,GAAG,KAAK;;QAI/B,IAAW,CAAA,WAAA,GAA8B,UAAU;;AAGnD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAoB;;AAUlD,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAY,EAAE,SAAiB,EAAE,OAAe,KAC5D,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;;QAI9C,IAAgB,CAAA,gBAAA,GAAG,CAAC,KAAY,EAAE,SAAgB,EAAE,SAAiB,EAAE,OAAe,KAClF,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;;;AAG3D,IAAA,eAAe,CAAC,KAAoB,EAAE,SAAiB,EAAE,UAAkB,EAAA;QACvE,IAAI,IAAI,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC/C;;QAGJ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,KAAK,UAAU,GAAG,CAAC,GAAG,SAAS;QAExE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC;AAC3D,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU;QAEpC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC,EAAE;YACtF,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,cAAc,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAE7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;AACpE,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC;;aACjD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC,EAAE;YAC5F,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,cAAc,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YAE7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;AACpE,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,gBAAgB,CAAC;;aACjD,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC;;aAC1C,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;YAC3C,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC;;;;IAK7C,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QAEzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;;8GA/E9C,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;0BAoBQ;yCAhBL,MAAM,EAAA,CAAA;sBADL;gBAKD,uBAAuB,EAAA,CAAA;sBADtB;gBAKD,WAAW,EAAA,CAAA;sBADV;gBAcD,YAAY,EAAA,CAAA;sBADX;gBAMD,gBAAgB,EAAA,CAAA;sBADf;;;ACrCL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;MAIU,wBAAwB,CAAA;;IAajC,WACqB,CAAA,SAAoC,EACpC,WAAuB,EAAA;QADvB,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAW,CAAA,WAAA,GAAX,WAAW;;AALf,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;;;AAUlD,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;;;IAI1E,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,KAAI;AAClE,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AAChE,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;;AAE9C,SAAC,CAAC;;;IAIN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;8GApCtB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;oHAIG,SAAS,EAAA,CAAA;sBADR;gBAKD,UAAU,EAAA,CAAA;sBADT;gBAcD,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AC9DvC;;AAEG;MACU,gBAAgB,CAAA;;IAEzB,kBAAkB,CAAC,EAAW,EAAE,iBAAgC,EAAA;AAC5D,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,GAAU,EAAS;QACvD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAE7D;;ACTD;;AAEG;MACU,kBAAkB,CAAA;;IAE3B,kBAAkB,CAAC,KAAoB,EAAE,iBAAsB,EAAA;AAC3D,QAAA,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAI;AACvD,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpB,SAAC,CAAC;;AAET;;ACXD;;AAEG;MACU,eAAe,CAAA;;IAExB,kBAAkB,CAAC,KAAiB,EAAE,iBAAgC,EAAA;QAClE,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAI;AACvC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpB,SAAC,CAAC;;AAET;;ACVD;;AAEG;MACU,aAAa,CAAA;;IAEtB,kBAAkB,CAAC,KAAQ,EAAE,iBAAgC,EAAA;QACzD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAE5D;;ACDD;;;;AAIG;AACG,SAAU,cAAc,CAAU,GAAkD,EAAA;AACtF,IAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;QAChB,OAAO,IAAI,eAAe,EAAK;;AAGnC,IAAA,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,IAAI,kBAAkB,EAAK;;AAGtC,IAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;QACjB,OAAO,IAAI,gBAAgB,EAAK;;IAGpC,OAAO,IAAI,aAAa,EAAK;AACjC;;MCYa,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;AAMI;;;AAGG;QAEH,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEhB;;;;;;;;;AASG;QAEH,IAAQ,CAAA,QAAA,GAAkB,OAAO;AAEjC;;AAEG;QAEH,IAAS,CAAA,SAAA,GAAG,GAAG;;QAIf,IAAK,CAAA,KAAA,GAAa,EAAE;AAoBpB;;;AAGG;AAEH,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAW;;AAI7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAY;;AAI1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAkB;;AAIhD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;;QAQhC,IAAa,CAAA,aAAA,GAAG,aAAa;;QAMtC,IAAiB,CAAA,iBAAA,GAAkB,IAAI;;QAGvC,IAAoB,CAAA,oBAAA,GAA8B,IAAI;;AAG7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;;AAG/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAMzC,IAAU,CAAA,UAAA,GAAG,IAAI;;QAMjB,IAAa,CAAA,aAAA,GAAG,IAAI;;QAGpB,IAAkB,CAAA,kBAAA,GAAG,IAAI;;QAMzB,IAAW,CAAA,WAAA,GAAG,KAAK;AA+R9B;;IA7WG,IACI,SAAS,CAAC,SAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;;;IA8EzC,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC;AACT,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAC1D,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;;;IAIjD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;AAG7B;;AAEG;IACH,gBAAgB,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAErB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAEhD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;QAE3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAyB,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5F,SAAC,CAAC;;;IAIN,MAAM,CAAC,aAA8B,EAAE,gBAAwB,EAAA;;QAE3D,IAAI,gBAAgB,GAAkB,IAAI;AAE1C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;;YAErE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,gBAAgB,KAAK,KAAK,EAAE;gBACxD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC;gBAClE,IAAI,gBAAgB,EAAE;oBAClB,gBAAgB,GAAG,KAAK;AAExB,oBAAA,OAAO,IAAI;;;AAGnB,YAAA,OAAO,KAAK;AAChB,SAAC,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACjB,gBAAgB,GAAG,IAAI;;;AAI3B,QAAA,IACI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,CAAC;AAC3C,aAAC,gBAAgB,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,EAC3E;YACE,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,2BAA2B,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;YACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,QAAQ;YAChF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAEtD,YAAA,IAAI,gBAAgB,KAAK,gBAAgB,EAAE;gBACvC,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,2BAA2B,EAAE;gBAClC;;YAEJ,IACI,IAAI,CAAC,iBAAiB;AACtB,gBAAA,IAAI,CAAC,YAAY;AACjB,gBAAA,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,EACnG;AACE,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC7C;;AAEJ,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;AAEzB,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC3B,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AACjD,iBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC;;iBAChE;gBACH,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,CAAC;;;;;AAM7F,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,UAAU;QACnE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AAErC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAa,KACjE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CACjG;;;IAIL,MAAM,OAAO,CAAC,gBAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;YACxB;;QAGJ,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;YACxD;;AAGJ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC;AAC3F,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAE9F,QAAA,MAAM,aAAa,GAAG,IAAI,OAAO,EAAW;AAE5C,QAAA,MAAM,GAAG,GAAmB;YACxB,iBAAiB;YACjB,gBAAgB;YAChB,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,oBAAoB;AACnC,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACzD;AAED,QAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC7C,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,2BAA2B,EAAE;;AAGlC,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;YAEhC,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBACzB;;AAGJ,YAAA,IAAI,gBAAgB,KAAK,iBAAiB,EAAE;AACxC,gBAAA,IAAI,gBAAgB,GAAG,iBAAiB,EAAE;AACtC,oBAAA,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;wBACvD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;;;qBAExB;AACH,oBAAA,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE;wBACvD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;;;;AAK/B,gBAAA,KAAK,CAAC,iBAAiB,CAAC,GAAG,cAAc;AAEzC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGhC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,CAAC;AACpE,YAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC;YAEpC,MAAM,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7C,aAAC,CAAC;;aACC;AACH,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;;;AAKxB,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,SAAS,CAAC;AAC9C,SAAC,CAAC;;;AAIE,IAAA,wBAAwB,CAC5B,gBAAwB,EACxB,WAAqC,EACrC,gBAAwB,EAAA;QAExB,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;YAC3D;;AAGJ,QAAA,IAAI,mBAAsC;AAC1C,QAAA,MAAM,gBAAgB,GAClB,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAE7F,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC/E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC;AAE5F,QAAA,IACI,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9F,YAAA,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,EAChG;YACE,mBAAmB,GAAG,OAAO;;aAC1B;YACH,mBAAmB,GAAG,OAAO;;AAGjC,QAAA,IAAI,mBAAmB,KAAK,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACrG;;AAGJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB;AAE5C,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC;;aACrF;AACH,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;;;;IAK9C,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;;;IAI9C,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC;;;IAI1D,WAAW,CAAC,gBAAwB,EAAE,YAA0B,EAAA;QACpE,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;;;AAI5E,IAAA,uBAAuB,CAAC,gBAAwB,EAAA;QACpD,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,2BAA2B,EAAE;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;QAC/B,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,EAAE;;AAGrE;;;AAGG;IACK,SAAS,CAAC,cAA0B,EAAE,aAAyB,EAAA;;QAEnE,MAAM,eAAe,GAAG,EAAE;;QAG1B,MAAM,mBAAmB,GAAG,cAAc,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAChF,MAAM,kBAAkB,GAAG,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAE9E,IAAI,mBAAmB,CAAC,GAAG,GAAG,kBAAkB,CAAC,GAAG,GAAG,eAAe,EAAE;;AAEpE,YAAA,OAAO,IAAI;;aACR,IAAI,kBAAkB,CAAC,GAAG,GAAG,mBAAmB,CAAC,GAAG,GAAG,eAAe,EAAE;;AAE3E,YAAA,OAAO,KAAK;;aACT;;YAEH,OAAO,mBAAmB,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC;;;;AAK7D,IAAA,qBAAqB,CAAC,SAAkB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;gBAC9B,IAAI,CAAC,kBAAkB,EAAE;AAC7B,aAAC,CAAC;;;8GA1YD,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,8dAHd,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC,EAAE,CAAC,mDAwElE,QAAQ,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FArEhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,MAAsB,gBAAA,CAAC,EAAE,CAAC;AACnF,oBAAA,UAAU,EAAE;AACf,iBAAA;8BAOG,QAAQ,EAAA,CAAA;sBADP;gBAcD,QAAQ,EAAA,CAAA;sBADP;gBAOD,SAAS,EAAA,CAAA;sBADR;gBAKD,KAAK,EAAA,CAAA;sBADJ;gBAKG,SAAS,EAAA,CAAA;sBADZ;gBAQD,aAAa,EAAA,CAAA;sBADZ;gBAQD,iBAAiB,EAAA,CAAA;sBADhB;gBAQD,wBAAwB,EAAA,CAAA;sBADvB;gBAKQ,WAAW,EAAA,CAAA;sBADnB;gBAKQ,WAAW,EAAA,CAAA;sBADnB;gBAKQ,aAAa,EAAA,CAAA;sBADrB;gBAKD,QAAQ,EAAA,CAAA;sBADP,eAAe;uBAAC,QAAQ;gBAKR,aAAa,EAAA,CAAA;sBAD7B,WAAW;uBAAC,OAAO;;AAsUxB,SAAS,iBAAiB,CAAC,OAAqB,EAAE,aAA8B,EAAA;AAC5E,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK;AAEtC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;IAEvC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;AAC7F;AAEA,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW,EAAA;AACjD,IAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG;AAC/B;AAaA,SAAS,qBAAqB,CAAC,IAAa,EAAE,QAAkC,EAAA;IAC5E,OAAO;AACH,QAAA,CAAC,EAAE,QAAQ,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACtD,QAAA,CAAC,EAAE,QAAQ,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACzD;AACL;AAEA,SAAS,oBAAoB,CAAC,WAAyB,EAAE,SAAiB,EAAA;IACtE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK;AACnG,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,SAAS;IACjE,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,KAAK,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM;AACpG,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,SAAS;IACnE,OAAO;AACH,QAAA,CAAC,EAAE;YACC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;YACpC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG;AACjC,SAAA;AACD,QAAA,CAAC,EAAE;YACC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;YACpC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG;AACjC;KACJ;AACL;;MC7da,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;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,YAHhB,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,wBAAwB,aACvG,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAExF,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,YAHhB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAGf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,wBAAwB,CAAC;oBAClH,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,wBAAwB;AACpG,iBAAA;;;MC2DY,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,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,WAAW,YA3ChB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,gBAAgB;YAChB,kBAAkB;YAClB,gBAAgB;AAChB,YAAA,wBAAwB,aAGxB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YACtB,gBAAgB;YAChB,kBAAkB;YAClB,gBAAgB;YAChB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAInB,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,WAAW,EAFT,SAAA,EAAA,CAAC,UAAU,CAAC,YAzCnB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YAEtB,kBAAkB;AAClB,YAAA,gBAAgB,EAIhB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,sBAAsB;YAEtB,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAKX,WAAW,EAAA,UAAA,EAAA,CAAA;kBA7CvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,iBAAiB;wBACjB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,iBAAiB;wBACjB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB;AACH,qBAAA;oBACD,SAAS,EAAE,CAAC,UAAU;AACzB,iBAAA;;;ACjED;;;;;AAKG;AAEH;MAEsB,kBAAkB,CAAA;;AAUpC,IAAA,WAAA,GAAA;;AAFS,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAGpC,IAAI,CAAC,cAAc,EAAE;;AAGzB;;;AAGG;;AAGH,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,SAAS,CAAC,KAAK,GAAG,CAAA,EAAG,SAAS,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,EAAE;;;IAIjG,kBAAkB,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;;;AAIvE,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;IAIzF,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAA;QAC9B,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK;;;IAI3E,WAAW,GAAA;QACP,MAAM,SAAS,GAAI,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,SAAS;AAC1E,QAAA,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEzB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;;AAExC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;;QAEvC,IAAI,CAAC,cAAc,EAAE;;;IAIzB,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE;;8GAtDP,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;wDAMY,KAAK,EAAA,CAAA;sBAAb;;;ACdL;AACM,SAAU,eAAe,CAAI,KAAc,EAAA;AAC7C,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC;AACnD;;ACsBA;;;;AAIG;MAMU,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;;AAgCI,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAsD;;AAOzE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAE1C,SAAS,CAAC;;AAGK,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGzC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;;AAG5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAkC1C;;IAhFG,IACI,UAAU,CAAC,KAAqD,EAAA;AAChE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAInC,IACI,SAAS,CAAC,KAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAInC,IACI,QAAQ,CAAC,KAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAInC,IACI,IAAI,CAAC,KAAsE,EAAA;AAC3E,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;;IA6BnC,eAAe,GAAA;AACX,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAA+B;AACzD,QAAA,IAAI,CAAC;aACA,IAAI,CACDC,KAAG,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,EAChCnB,QAAM,CAAC,OAAO,CAAC,EACfF,KAAG,CAAC,CAAC,OAAO,KAAI;AACZ,YAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;AACrD,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC;AACrE,gBAAA,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC;;iBAC9B,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,YAAY,UAAU,EAAE;gBACxE,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,OAAgD,CAAC,CAAC;;AAClF,iBAAA,IAAI,OAAO,YAAY,WAAW,EAAE;gBACvC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;;AAE7D,YAAA,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC;AACvC,SAAC,CAAC,EACFE,QAAM,CAAC,OAAO,CAAC,EACf,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YAClB,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AACvC,YAAA,IAAI,MAAM,YAAY,SAAS,EAAE;;gBAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;iBAC/B;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/B,SAAC,CAAC;;8GAhFD,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EA8BpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,EAhChB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,4CAAA,CAA8C,2DAD9C,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGb,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE,CAA8C,4CAAA;AAC3D,iBAAA;8BAIO,UAAU,EAAA,CAAA;sBADb;gBAOG,SAAS,EAAA,CAAA;sBADZ;gBAOG,QAAQ,EAAA,CAAA;sBADX;gBAOG,IAAI,EAAA,CAAA;sBADP;gBAOD,QAAQ,EAAA,CAAA;sBADP;gBAKD,YAAY,EAAA,CAAA;sBADX,SAAS;uBAAC,eAAe;;;ACpEjB,MAAA,mBAAmB,GAAG,CAAA;;;AAI5B,MAAM,mCAAmC,GAAG;AAE5C,MAAM,kBAAkB,GAAG;;ACJrB,MAAA,uBAAuB,GAAkC,IAAI,GAAG,CAAC;IAC1E,CAAC,QAAQ,EAAE,CAAC,CAAC;IACb,CAAC,WAAW,EAAE,CAAC,CAAC;IAChB,CAAC,KAAK,EAAE,CAAC,CAAC;IACV,CAAC,MAAM,EAAE,CAAC,CAAC;IACX,CAAC,OAAO,EAAE,CAAC;AACd,CAAA;;ACRD;;;AAGK;AACL;AACO,MAAM,qBAAqB,GAAG;AACrC;AACa,MAAA,0BAA0B,GAAG,IAAI,MAAM,CAAC,qBAAqB,EAAE,GAAG;AAC/E;AACO,MAAM,gCAAgC,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,qBAAqB,CAAA,EAAA,CAAI,EAAE,GAAG;;ACT7F;;AAEG;AACH;AACO,MAAM,4BAA4B,GAAG;AAC/B,MAAA,4BAA4B,GAAG,IAAI,MAAM,CAAC,4BAA4B,EAAE,GAAG;AACjF,MAAM,kCAAkC,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,4BAA4B,CAAA,EAAA,CAAI,EAAE,GAAG;;ACA/F,MAAM,qBAAqB,GAAG;;ACFrC;;;;;;;;AAQG;SACa,aAAa,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAC1F,IAAA,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK;IACvC,UAAU,CAAC,KAAK,GAAG,YAAA;QACf,MAAM,IAAI,GAAG,IAAyD;AACtE,QAAA,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,EAAE;AACzB,YAAA,MAAM,qBAAqB;;QAG/B,MAAM,gBAAgB,GAAa,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEvE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAElC,QAAA,MAAM,aAAa,GAAsC,UAAU,EAAE,aAAa;QAElF,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,OAAO,gBAAgB;;AAG3B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;AAC1B,YAAA,aAAa,CAAC,SAAS,GAAG,EAAE;;AAGhC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE;;QAG3B,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAE5D,QAAA,MAAM,wBAAwB,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAE5E,MAAM,YAAY,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC;QAE3G,aAAa,CAAC,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAEhD,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,gBAAgB;AAExD,QAAA,OAAO,gBAAgB;AAC3B,KAAC;AACL;AAEA;AACA,SAAS,MAAM,CAAC,KAAc,EAAE,KAAa,EAAE,IAAe,EAAA;IAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK;AACxC;AAEA;AACA,SAAS,QAAQ,CAAC,KAAe,EAAA;AAC7B,IAAA,OAAO;SACF,MAAM,CAAC,OAAO;SACd,MAAM,CAAC,CAAC,SAAmB,EAAE,QAAgB,KAAK,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;SAC9F,MAAM,CAAC,MAAM,CAAC;AACvB;AAEA,SAAS,uBAAuB,CAAC,MAAgB,EAAE,MAAgB,EAAA;AAC/D,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE;AAEA;AACA,SAAS,wBAAwB,CAC7B,UAAoB,EACpB,0BAAoC,EACpC,qBAA+B,EAAA;AAE/B,IAAA,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE;IAC/B,IAAI,KAAK,GAAG,uBAAuB,CAAC,UAAU,EAAE,0BAA0B,CAAC;AAC3E,IAAA,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;AAChC,IAAA,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,0BAA0B,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AAErF,IAAA,OAAO,UAAU;AACrB;;AC/EA;;;;;;;;AAQG;SACa,aAAa,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAA;AAC1F,IAAA,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK;IACvC,UAAU,CAAC,KAAK,GAAG,YAAA;QACf,MAAM,IAAI,GAAG,IAAgC;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,MAAM,qBAAqB;;QAG/B,MAAM,OAAO,GAA0B,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;AACjE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;QAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACjC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;AACzC,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO;AAClB,KAAC;AACL;;AC5BA;;AAEG;AACG,SAAU,eAAe,CAAC,OAAgE,EAAA;IAC5F,OAAO,UAAU,SAAuC,EAAE,WAA4B,EAAA;AAClF,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE;QACrB,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;AACxC,QAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;YAC1C,GAAG,GAAA;AACC,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC;aACpB;AACD,YAAA,GAAG,CAAC,CAAM,EAAA;AACN,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;;AAE/C,SAAA,CAAC;AACN,KAAC;AACL;;ACbA;;AAEG;MACU,aAAa,GAAG,eAAe,CAAC,qBAAqB;;MCHrD,cAAc,GAAG,eAAe,CAAC,mBAAmB;;ACIjE;AACgB,SAAA,kBAAkB,CAAC,OAAe,EAAE,UAAkB,EAAA;IAClE,OAAO;QACH,OAAO;QACP;KACH;AACL;AAEA;AACgB,SAAA,uBAAuB,CAAC,OAAe,EAAE,UAAkB,EAAA;IACvE,OAAO;AACH,QAAA,OAAO,EAAE,gCAAgC;AACzC,QAAA,QAAQ,EAAE,kBAAkB,CAAC,OAAO,EAAE,UAAU;KACnD;AACL;MAEa,gCAAgC,GAAG,IAAI,cAAc,CAC9D,+BAA+B;MAGb,kBAAkB,CAAA;;AAKpC,IAAA,WAAA,GAAA;;QAHU,IAAU,CAAA,UAAA,GAAmC,MAAM,CAAC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAI/G,QAAA,IAAI,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;;;IAKvF,iBAAiB,CAAC,UAAkB,EAAE,OAAe,EAAA;AAC3D,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAA,2DAAA,CAA6D,CAAC;QAC7F,IAAI,OAAO,EAAE;AACT,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,OAAO,CAAA,SAAA,CAAW,CAAC;;AAE5C,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEjC;;MCjCqB,yBAAyB,CAAA;;IAiB3C,WACW,CAAA,UAAsB,EACnB,SAAmB,EAAA;QADtB,IAAU,CAAA,UAAA,GAAV,UAAU;QACP,IAAS,CAAA,SAAA,GAAT,SAAS;;QAXvB,IAAY,CAAA,YAAA,GAAgB,SAAS;;AAM3B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;;AASrD,IAAA,oBAAoB,CAAC,OAAkB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE;AACzC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,SAAS;AACtB,YAAA,SAAS,EAAE;AACd,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;;;IAIrF,mBAAmB,CAAC,OAAyB,EAAE,OAAY,EAAA;AACjE,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;AAE9B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CACzC,IAAI,cAAc,CAAC,OAAO,EAAE,IAAmC,EAAE,OAAO,CAAC,CAC5E;;AAER;;MCrDY,wBAAwB,CAAA;;IAEjC,WACY,CAAA,eAAyB,EACzB,iBAAoC,EAAA;QADpC,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;AAG7B;;;;AAIG;IACH,GAAG,CAAC,KAAU,EAAE,aAAmB,EAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAE/C,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,KAAK;;QAGhB,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAM,KAAK,EAAE,aAAa,CAAC;;AAEjE;;ACPD;;AAEG;MAIU,uBAAuB,CAAA;;AAEhC,IAAA,WAAA,CACqB,yBAAmD,EACnD,eAA+B,EAC/B,SAAmB,EACnB,SAAmB,EAAA;QAHnB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB;QACzB,IAAe,CAAA,eAAA,GAAf,eAAe;QACf,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAS,CAAA,SAAA,GAAT,SAAS;;AAG9B;;;;;;AAMG;IACI,sBAAsB,CACzB,OAAoE,EACpE,aAAsB,EACtB,MAA8B,EAC9B,SAAoD,EAAE,EAAA;AAEtD,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAI,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC;AACvF,QAAA,IAAI,CAAC,oBAAoB,CAAI,YAAY,EAAE,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,kBAAkB,CAAI,YAAY,EAAE,MAAM,CAAC;AAEhD,QAAA,OAAO,YAAY;;AAGvB;;;;;;;AAOG;IACH,MAAM,mBAAmB,CACrB,OAAoE,EACpE,UAAwC,EACxC,aAAsB,EACtB,YAA8B,EAC9B,QAAmB,EAAA;QAEnB,MAAM,aAAa,GACf,UAAU,YAAY,eAAe,GAAG,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAI,UAAU,CAAC;AAC/G,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;QAClE,MAAM,gBAAgB,GAAG,SAAS,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,aAAa,CAAC;QAElG,YAAY,CAAC,KAAK,EAAE;QAEpB,MAAM,YAAY,GAAoB,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC;AAEpF,QAAA,IAAI,CAAC,oBAAoB,CAAI,YAAY,EAAE,OAAO,CAAC;AAEnD,QAAA,OAAO,YAAY;;;AAIhB,IAAA,gBAAgB,CAAC,YAA+B,EAAA;QACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACtD,QAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC9B,YAAY,CAAC,OAAO,EAAE;;;IAIlB,oBAAoB,CAAC,WAAkB,EAAE,EAAA;AAC7C,QAAA,MAAM,aAAa,GAAG,IAAI,OAAO,EAAE;AACnC,QAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAC7G,QAAA,OAAO,aAAa;;;IAIhB,kBAAkB,CAAI,YAA6B,EAAE,MAA8B,EAAA;QACvF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC;AAC3C,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACrB,YAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC9B,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;YACjD;;QAEJ,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;QACtD,MAAM,WAAW,GAAI,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB;AAC/F,QAAA,IAAI,SAAS,CAAC,SAAS,KAAK,MAAM,EAAE;AAChC,YAAA,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC;;aAC1C;AACH,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;;;;AAKtC,IAAA,gBAAgB,CACpB,aAAsB,EACtB,eAAkC,EAClC,QAAmB,EAAA;AAEnB,QAAA,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QAC1G,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,aAAa,CAAC;QAC9F,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAEtE,QAAA,OAAO,YAAY;;;IAIf,oBAAoB,CACxB,YAA6B,EAC7B,OAAoE,EAAA;;AAGpE,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;AAC5E,YAAA,YAAY,CAAC,QAAgB,CAAC,YAAY,GAAG,OAAO;;;8GA/GpD,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,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,uBAAuB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAET,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCnBY,mBAAmB,GAAG,IAAI,cAAc,CAAW,mBAAmB;;MCUtE,eAAe,CAAA;;AAOxB,IAAA,WAAA,CAAY,GAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG9C;;;AAGG;AACH,IAAA,SAAS,CAAI,KAA0B,EAAA;AACnC,QAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;;;IAI5G,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;8GAxBX,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MCLY,aAAa,CAAA;;AAEtB,IAAA,SAAS,CAAC,KAAU,EAAE,SAAc,EAAE,GAAG,IAAS,EAAA;AAC9C,QAAA,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;;8GAH3B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCEY,iBAAiB,CAAA;AAC1B;;;;AAIG;AACH,IAAA,SAAS,CAAC,MAAA,GAAgB,EAAE,EAAE,MAAqD,EAAA;AAC/E,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,MAAM;;AAEjB,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACZ,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC,CACxF;;aACE;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;;AAE/G,QAAA,OAAO,MAAM;;8GAjBR,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCDY,oBAAoB,CAAA;;AAE7B,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC1B,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC;;8GAHxB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCKvC,aAAa,CAAA;AACtB;;;AAGG;AACH,IAAA,SAAS,CAAI,KAAqC,EAAA;QAC9C,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;;8GAN/D,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCDY,QAAQ,CAAA;;AAEjB,IAAA,WAAA,CAAsB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;;IAGxB,SAAS,CAAC,KAAU,EAAE,IAAY,EAAA;QACrC,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC;AAExD,YAAA,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC;AAEzD,YAAA,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAE1D,YAAA,KAAK,KAAK;gBACN,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAEvD,YAAA,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC;AAE/D,YAAA;AACI,gBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAA,CAAE,CAAC;;;8GAvB1D,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,mBAAmB,CAAA;;IAE5B,SAAS,CACL,KAAa,EACb,OAAyC,EACzC,MAAkB,GAAA,IAAI,EACtB,YAAA,GAAwB,KAAK,EAAA;AAE7B,QAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,IAAI,MAAM,GAAW,KAAK;AAC1B,QAAA,IAAI,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,oBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9D,oBAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC;AACtF,iBAAC,CAAC;;AACC,iBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACpC,gBAAA,MAAM,OAAO,GAAW,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AACvD,gBAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;AACnB,oBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;AAC/E,oBAAA,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC;;;;QAI7F,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS;;AAE1C,QAAA,OAAO,MAAM;;8GA5BR,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCAY,YAAY,CAAA;;AAErB,IAAA,SAAS,CAAC,KAAa,EAAE,KAAA,GAAgB,GAAG,EAAA;QACxC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK;;8GAH3E,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCCY,aAAa,CAAA;;AAEtB,IAAA,SAAS,CAAC,KAAa,EAAE,MAAA,GAAkB,IAAI,EAAA;QAC3C,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM,EAAE;AAClC,YAAA,OAAO,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;;aAC/C;AACH,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;;8GANnB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCDY,eAAe,CAAA;;IAExB,SAAS,CAAC,KAAU,EAAE,GAAW,EAAA;AAC7B,QAAA,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;;8GAHjB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCoClC,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,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,UAAU,YAxBf,aAAa;YACb,mBAAmB;YACnB,aAAa;YACb,QAAQ;YACR,eAAe;YACf,oBAAoB;YACpB,YAAY;YACZ,iBAAiB;YACjB,aAAa;AACb,YAAA,eAAe,aAGf,aAAa;YACb,mBAAmB;YACnB,aAAa;YACb,QAAQ;YACR,eAAe;YACf,oBAAoB;YACpB,YAAY;YACZ,iBAAiB;YACjB,aAAa;YACb,eAAe,CAAA,EAAA,CAAA,CAAA;+GAGV,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBA1BtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,mBAAmB;wBACnB,aAAa;wBACb,QAAQ;wBACR,eAAe;wBACf,oBAAoB;wBACpB,YAAY;wBACZ,iBAAiB;wBACjB,aAAa;wBACb;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,mBAAmB;wBACnB,aAAa;wBACb,QAAQ;wBACR,eAAe;wBACf,oBAAoB;wBACpB,YAAY;wBACZ,iBAAiB;wBACjB,aAAa;wBACb;AACH;AACJ,iBAAA;;;ACpCD;;AAEG;AACU,MAAA,mBAAmB,GAE5B;;AAEA,IAAA,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE;AACzB,QAAA,KAAK,CACD,cAAc,EACd,KAAK,CAAC;AACF,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CACL;AACD,QAAA,KAAK,CACD,SAAS,EACT,KAAK,CAAC;AACF,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CACL;AACD,QAAA,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACvE,UAAU,CACN,wBAAwB,EACxB,OAAO,CACH,mCAAmC,EACnC,KAAK,CAAC;AACF,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC,CACL;KAER;;;ACnBQ,MAAA,yBAAyB,GAAsB;AACxD,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,OAAO,EAAE;;AAGA,MAAA,6BAA6B,GAAsB;AAC5D,IAAA,GAAG,yBAAyB;IAC5B,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;;AAG/B,MAAA,8BAA8B,GAAsB;AAC7D,IAAA,GAAG,yBAAyB;IAC5B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;;AAG3B,MAAA,4BAA4B,GAAsB;AAC3D,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,CAAC;;AAGD,MAAA,gCAAgC,GAAsB;AAC/D,IAAA,GAAG,4BAA4B;IAC/B,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;;AAG/B,MAAA,iCAAiC,GAAsB;AAChE,IAAA,GAAG,4BAA4B;IAC/B,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;;AAGxC;;AAEG;MACmB,iBAAiB,CAAA;AActC;AAED;;;;AAIG;AACG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;;AAElD,IAAA,SAAA,IAAA,CAAA,MAAM,GAAwB;AACjC,QAAA,GAAG,EAAE,MAAM;AACX,QAAA,MAAM,EAAE;KACX,CAAC;;aAEK,IAAS,CAAA,SAAA,GAAsB,yBAAyB,CAAC;;AAGpE;;;;AAIG;AACG,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;;AAErD,IAAA,SAAA,IAAA,CAAA,MAAM,GAAwB;AACjC,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,MAAM,EAAE;KACX,CAAC;;aAEK,IAAS,CAAA,SAAA,GAAsB,4BAA4B,CAAC;;AAGvE;;;;AAIG;AACG,MAAO,oBAAqB,SAAQ,sBAAsB,CAAA;;AAE5C,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG,EAAE,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;;aAElF,IAAS,CAAA,SAAA,GAAsB,6BAA6B,CAAC;;AAGjF;;;;AAIG;AACG,MAAO,qBAAsB,SAAQ,sBAAsB,CAAA;;AAE7C,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG,EAAE,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;;aAEnF,IAAS,CAAA,SAAA,GAAsB,8BAA8B,CAAC;;AAGlF;;;;AAIG;AACG,MAAO,uBAAwB,SAAQ,yBAAyB,CAAA;;AAElD,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG,EAAE,GAAG,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;;aAErF,IAAS,CAAA,SAAA,GAAG,gCAAgC,CAAC;;AAGjE;;;;AAIG;AACG,MAAO,wBAAyB,SAAQ,yBAAyB,CAAA;;AAEnD,IAAA,SAAA,IAAA,CAAA,MAAM,GAAG,EAAE,GAAG,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;;aAEtF,IAAS,CAAA,SAAA,GAAG,iCAAiC,CAAC;;;MClH5C,gBAAgB,CAAA;;IAiFlC,WACW,CAAA,OAAgB,EAChB,QAAkB,EAAA;QADlB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAjBnB;;;AAGG;QACO,IAAO,CAAA,OAAA,GAAmB,EAAE;AAEtC;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAqC;;AAG3D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAQxC;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;;AAG5C;;AAEG;IACH,oBAAoB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;;AAGlC;;;AAGG;AACH,IAAA,sBAAsB,CAAC,WAA8B,EAAA;AACjD,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE;YAC5C;;AAGJ,QAAA,IAAI,CAAC,qBAAqB,GAAG,WAAW;QAExC,IAAI,CAAC,wBAAwB,EAAE;;AAGnC;;;AAGG;IACO,OAAO,CACb,OAA0C,EAC1C,UAAc,EAAA;QAEd,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,UAAU,EAAE;QACvD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,qBAAqB;AAC9E,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,MAAM,CAAC;AACxE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAI,YAAY,EAAE,OAAO,EAAE,gBAAgB,CAAC;AAC7E,QAAA,QAAQ,CAAC,wBAAwB,GAAG,CAAC,MAAM,CAAC,gBAAgB;AAC5D,QAAA,QAAQ,CAAC,SAAS,GAAG,QAAQ;AAE7B,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;;YAEhC,MAAM,OAAO,GAAG,IAA+B;AAC/C,YAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAS,CAAC;YAE3F,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC;;aAC1D;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC;YACtE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;YAChE,MAAM,UAAU,GAAG,YAAY,CAAC,qBAAqB,CAAI,MAAM,CAAC;;AAGhE,YAAA,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;AAEvC,YAAA,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAGhD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC7D,QAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC;AAEhD,QAAA,IAAI,CAAC,YAAY,CAAI,QAAQ,CAAC;AAE9B,QAAA,OAAO,QAAQ;;AAGnB;;AAEG;IACO,6BAA6B,CAAC,UAAsB,EAAE,MAAS,EAAA;AACrE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,8BAA8B,CAAC,MAAM;AACxD,SAAA,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,QAAQ,CAAC;QACzF,MAAM,YAAY,GAAoB,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC;AAExE,QAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;AACrC,QAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU;QAE7C,OAAO,YAAY,CAAC,QAAQ;;AAGhC;;;;AAIG;IACO,8BAA8B,CAAI,MAAS,EAAE,QAAyB,EAAA;QAC5E,OAAO,QAAQ,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,SAAS,EAAE,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,QAAQ;AAChE,SAAA,CAAC;;AAGN;;AAEG;AACO,IAAA,YAAY,CAAI,QAAmD,EAAA;AACzE,QAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB;;QAElD;AACK,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;AACZ,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC7D,YAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAChD,IAAI,CAAC,wBAAwB,EAAE;AACnC,SAAC,CAAC;AAEN,QAAA,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE;;AAGtC;;;AAGG;AACK,IAAA,cAAc,CAAC,gBAAmC,EAAA;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE;AACzC,QAAA,aAAa,CAAC,cAAc,GAAG,gBAAgB,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAE5G,QAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;AAE1E,QAAA,aAAa,CAAC,gBAAgB,GAAG,QAAQ;AACzC,QAAA,aAAa,CAAC,UAAU,GAAG,kBAAkB;AAC7C,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE;;AAGpE;;;AAGG;AACK,IAAA,oBAAoB,CAAC,gBAAmC,EAAA;QAI5D,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;QAExE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC;AAE/F,QAAA,IAAI,WAAW,IAAI,aAAa,EAAE;YAC9B,OAAO;AACH,gBAAA,QAAQ,EAAE,IAAI,CAAC,iCAAiC,CAC5C,WAAW,CAAC,UAAU,CAAC,cAAc,EACrC,gBAAgB,CACnB;AACD,gBAAA,QAAQ,EAAE;aACb;;AAGL,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;AAGtF;;;;AAIG;AACK,IAAA,6BAA6B,CAAC,cAAiC,EAAA;QACnE,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;;AAGzE;;;;;AAKG;IACK,iCAAiC,CACrC,YAAyB,EACzB,gBAAmC,EAAA;AAEnC,QAAA,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,CAAC,qBAAqB;QACjE,OAAO,IAAI,CAAC;AACP,aAAA,QAAQ;aACR,mBAAmB,CAAC,YAAY;aAChC,QAAQ,CAAC,KAAK;AACd,aAAA,aAAa,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;;AAGpD;;;AAGG;AACK,IAAA,sBAAsB,CAC1B,gBAAmC,EAAA;AAEnC,QAAA,IAAI,QAAoE;QACxE,IAAI,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;YACtD,QAAQ,GAAG,IAAI,CAAC;AACX,iBAAA,QAAQ;AACR,iBAAA,mBAAmB,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO;AACnD,iBAAA,aAAa,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;iBACvC,QAAQ,CAAC,KAAK,CAAC;;aACjB;YACH,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;AAC3C,YAAA,MAAM,2BAA2B,GAAwB,gBAAgB,CAAC,MAAM;AAEhF,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAAE;gBACpE,QAAQ,GAAG;AACP,oBAAA,KAAK,MAAM;AACP,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;wBACpB;AACJ,oBAAA,KAAK,OAAO;AACR,wBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;wBACrB;AACJ,oBAAA,KAAK,QAAQ;AACT,wBAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;wBACtB;AACJ,oBAAA,KAAK,KAAK;AACN,wBAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;wBACnB;AACJ,oBAAA,KAAK,QAAQ;wBACT,QAAQ,CAAC,kBAAkB,EAAE;wBAC7B;AACJ,oBAAA,KAAK,kBAAkB;wBACnB,QAAQ,CAAC,gBAAgB,EAAE;wBAC3B;;;;AAKhB,QAAA,OAAO,QAAQ;;;IAIX,wBAAwB,GAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC;AAC/C,SAAC,CAAC;;;AAIE,IAAA,8BAA8B,CAAC,MAAsB,EAAA;AACzD,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YAC/D,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE;AAErD,YAAA,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;AAC5D,YAAA,aAAa,CAAC,gBAAgB,GAAG,gBAAgB;AACrD,SAAC,CAAC;;AAGN;;;;;AAKG;AACK,IAAA,uBAAuB,CAAC,KAAmB,EAAA;AAC/C,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,gBAAgB;AAE7G,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;;AAGxD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAE1D,QAAA,MAAM,aAAa,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,SAAS,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE;AAChB,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI;AACtB,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;;;AAIxD,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;QAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACpD,QAAA,KAAK,CAAC,SAAS,GAAG,KAAK;AAEvB,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC;;;AAItG,IAAA,sBAAsB,CAAC,QAAa,EAAA;AACxC,QAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO;;8GAjXX,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCzBqB,YAAY,CAAA;;AAuB9B,IAAA,WAAA,CACW,iBAAoB,EACpB,UAAsB,EACtB,gBAAmC,EAAA;QAFnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;QAjB3B,IAAwB,CAAA,wBAAA,GAAG,IAAI;AAE/B;;AAEG;QACH,IAAS,CAAA,SAAA,GAAG,KAAK;AAEjB;;;AAGG;AACgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AAQrD,QAAA,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;;IAIpE,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;;;;IAKrC,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;;IAI/C,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,EAAE;;AAGzD;;;AAGG;IACO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAEzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;AAEvC;;ACzDD;AACA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AAEjC,MAAgB,+BAIpB,SAAQ,YAAqB,CAAA;;AAQ3B,IAAA,WAAA,CAAsB,iBAAoB,EAAE,UAAsB,EAAE,gBAAmC,EAAA;AACnG,QAAA,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,CAAC;;;IAIjD,OAAO,GAAA;AACZ,QAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAEpC,KAAK,CAAC,OAAO,EAAE;;;AAInB,IAAA,YAAY,CAAC,QAAgB,EAAA;QACzB,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;;;IAI9F,aAAa,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAE3C;;AClCK,MAAgB,6BAGpB,SAAQ,+BAAqC,CAAA;;AAQ3C,IAAA,WAAA,CACI,iBAAoE,EACpE,UAAsB,EACtB,gBAAmC,EAAA;AAEnC,QAAA,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,CAAC;;AAXvC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAiB;;QAGjD,IAAiB,CAAA,iBAAA,GAAG,KAAK;AAU/B,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;;;IAInD,iBAAiB,CAAC,SAAwB,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAE7B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;;;IAKjC,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS;;AAGzB;;;AAGG;IACgB,cAAc,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;;QAG7B,KAAK,CAAC,cAAc,EAAE;;AAE7B;;ACpDD;;AAEG;MACU,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AAWI;;AAEG;QACH,IAAgB,CAAA,gBAAA,GAAuB,yBAAyB;;AAoCnE;AAED;;AAEG;AACG,MAAO,uBAAiC,SAAQ,eAAkB,CAAA;AAAxE,IAAA,WAAA,GAAA;;;QAEI,IAAQ,CAAA,QAAA,GAAI,IAAI;;AACnB;;ACtDD,IAAI,aAAa,GAAG,CAAC;AAGf,MAAgB,2BAClB,SAAQ,gBAAgB,CAAA;;AAwDxB,IAAA,WAAA,CAA6B,MAAS,EAAA;AAClC,QAAA,KAAK,EAAE;QADkB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAf1B,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,OAAO,EAAE;;AAGtC,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,OAAO,EAAE;QAc5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;AACtC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,mBAAmB,GAAG,aAAa,EAAE;;AAGrE;;AAEG;AACH,IAAA,qBAAqB,CAAI,MAA0B,EAAA;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;;AAG3D;;;AAGG;AACH,IAAA,oBAAoB,CAAI,MAAyB,EAAA;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC;;8GAjFxC,2BAA2B,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,6FAclC,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAK1B,UAAA,CAAA;IADC,cAAc;;AACmB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAIlC,UAAA,CAAA;IADC,cAAc;;AACmB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAIlC,UAAA,CAAA;IADC,cAAc;;AACgB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAI/B,UAAA,CAAA;IADC,cAAc;;AACoB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAInC,UAAA,CAAA;IADC,cAAc;;AACoB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAInC,UAAA,CAAA;IADC,cAAc;;AACiB,CAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;2FAvCd,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADhD;2EAgBG,aAAa,EAAA,CAAA;sBADZ,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAK5C,QAAQ,EAAA,EAAA,EAIR,QAAQ,EAIR,EAAA,EAAA,KAAK,MAIL,SAAS,EAAA,EAAA,EAIT,SAAS,EAAA,EAAA,EAIT,MAAM,EAAA,EAAA,EAAA,EAAA,CAAA;;AChDV;;AAEG;AAEG,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAC3D;;;;;AAKG;IACM,mBAAmB,GAAA;AACxB,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,EAAE;AAEpD,QAAA,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAE5D,QAAA,OAAO,gBAAgB;;8GAZlB,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACJD;;AAEG;AACG,MAAO,kCAA4C,SAAQ,eAAkB,CAAA;AAAnF,IAAA,WAAA,GAAA;;AACI;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAI,IAAI;AAChB;;;AAGG;QACH,IAAY,CAAA,YAAA,GAAa,IAAI;;AAChC;;ACRK,MAAgB,mCAClB,SAAQ,2BAA8B,CAAA;AAGtC;;;AAGG;AACH,IAAA,IACY,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE;;;AAgBvC,IAAA,WAAA,CAAY,MAAS,EAAA;QACjB,KAAK,CAAC,MAAM,CAAC;AAfjB;;;AAGG;QAEK,IAAmB,CAAA,mBAAA,GAAG,KAAK;;AAGzB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;AAG1B,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;AAK1C,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,MAAM,CAAC,QAAQ;;AAG/C;;;AAGG;AAEK,IAAA,eAAe,CAAC,KAAqB,EAAA;AACzC,QAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;AAEpC,QAAA,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,EAAE;YACtE,IAAI,CAAC,aAAa,EAAE;;AAGxB,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;;;AAGvB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;AAE7B,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;gBAClB,OAAO,CAAC,IAAI,EAAE;gBACd,OAAO,CAAC,QAAQ,EAAE;AACtB,aAAC,CAAC;;;;IAKV,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;;;IAI7C,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC;;;IAI5C,WAAW,GAAA;QACP,IAAI,CAAC,aAAa,EAAE;;AAGxB;;;;AAIG;IACK,aAAa,GAAA;;;AAGjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;AAE3B,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAACG,MAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACvD,MAAM,CAAC,IAAI,EAAE;YACb,MAAM,CAAC,QAAQ,EAAE;AACrB,SAAC,CAAC;;8GAnFY,mCAAmC,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBADxD;2EAUe,eAAe,EAAA,CAAA;sBAD1B,WAAW;uBAAC,QAAQ;gBASb,mBAAmB,EAAA,CAAA;sBAD1B,WAAW;uBAAC,YAAY;gBAoBjB,eAAe,EAAA,CAAA;sBADtB,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;ACnCrC,MAAgB,8CAClB,SAAQ,mCAAsC,CAAA;AAFlD,IAAA,WAAA,GAAA;;;AAMa,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAE;;AAG1C,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;AAqBrD;;IAjBG,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;;IAK3B,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;;IAIjB,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QAE3B,KAAK,CAAC,WAAW,EAAE;;8GA3BL,8CAA8C,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9C,8CAA8C,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9C,8CAA8C,EAAA,UAAA,EAAA,CAAA;kBADnE;8BAaG,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAO1B,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW;;;AClBvB,MAAgB,2BAGpB,SAAQ,gBAAsB,CAAA;AAC5B;;AAEG;AACgB,IAAA,YAAY,CAAI,QAAsE,EAAA;AACrG,QAAA,KAAK,CAAC,YAAY,CAAI,QAAQ,CAAC;AAE/B,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM;;QAGhD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE;AACxC,YAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AAClC,gBAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,QAAkB,CAAC;AAEhD,gBAAA,IAAI,MAAM,CAAC,YAAY,EAAE;oBACrB,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;wBACjD,QAAQ,CAAC,aAAa,EAAE;AAC5B,qBAAC,CAAC;oBAEF,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAClD,wBAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,QAAkB,CAAC;AACpD,qBAAC,CAAC;;AAEV,aAAC,CAAC;;;AAGb;;ACnCD;;AAEG;;;;"}
|