@ethlete/core 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/structured-data/structured-data.component.mjs +3 -3
- package/esm2020/lib/directives/animatable/animatable.directive.mjs +3 -3
- package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
- package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
- package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
- package/esm2020/lib/directives/let/let.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +3 -3
- package/esm2020/lib/directives/repeat/repeat.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
- package/esm2020/lib/directives/seo/seo.directive.mjs +3 -3
- package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
- package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
- package/esm2020/lib/services/click-observer.service.mjs +6 -6
- package/esm2020/lib/services/content-observer.service.mjs +6 -6
- package/esm2020/lib/services/destroy.service.mjs +3 -3
- package/esm2020/lib/services/focus-visible.service.mjs +3 -3
- package/esm2020/lib/services/resize-observer.service.mjs +6 -6
- package/esm2020/lib/services/router-state.service.mjs +3 -3
- package/esm2020/lib/services/viewport.service.mjs +3 -3
- package/esm2020/lib/validators/is-email.validator.mjs +2 -2
- package/fesm2015/ethlete-core.mjs +91 -91
- package/fesm2015/ethlete-core.mjs.map +1 -1
- package/fesm2020/ethlete-core.mjs +91 -91
- package/fesm2020/ethlete-core.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/components/structured-data/structured-data.component.ts","../../../../libs/core/src/lib/constants/viewport.constants.ts","../../../../libs/core/src/lib/decorators/memo/memo.decorator.ts","../../../../libs/core/src/lib/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/destroy.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.ts","../../../../libs/core/src/lib/utils/animation.utils.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/clone.util.ts","../../../../libs/core/src/lib/utils/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/rxjs.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/smart-block-scroll-strategy.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.ts","../../../../libs/core/src/lib/directives/animatable/animatable.directive.ts","../../../../libs/core/src/lib/directives/animated-lifecycle/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.ts","../../../../libs/core/src/lib/directives/let/let.types.ts","../../../../libs/core/src/lib/directives/let/let.directive.ts","../../../../libs/core/src/lib/directives/observe-content/observe-content.directive.ts","../../../../libs/core/src/lib/directives/observe-resize/observe-resize.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.constants.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.directive.ts","../../../../libs/core/src/lib/directives/repeat/repeat.directive.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.constants.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.utils.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/lib/types/angular.types.ts","../../../../libs/core/src/lib/validators/is-array-not-empty.validator.ts","../../../../libs/core/src/lib/validators/is-email.validator.ts","../../../../libs/core/src/lib/validators/must-match.validator.ts","../../../../libs/core/src/lib/validators/public-api.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { JsonLD } from '@ethlete/types';\n\n@Component({\n selector: 'et-structured-data',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n },\n})\nexport class StructuredDataComponent {\n private readonly _sanitizer = inject(DomSanitizer);\n\n @Input()\n set data(currentValue: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n this.jsonLD = this.getSafeHTML(currentValue);\n }\n\n @HostBinding('innerHTML')\n jsonLD?: SafeHtml;\n\n getSafeHTML(value: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n const json = value ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ViewportConfig } from '../types';\n\nexport const VIEWPORT_CONFIG = new InjectionToken<ViewportConfig>('ViewportConfig');\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n","export interface MemoResolver {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (...args: any[]): any;\n}\n\nexport interface MapLike<K = unknown, V = unknown> {\n set(key: K, v: V): MapLike<K, V>;\n get(key: K): V;\n has(key: K): boolean;\n}\n\nexport interface MemoConfig {\n resolver?: MemoResolver;\n cache?: MapLike;\n}\n\nfunction memoize(func: (..._args: unknown[]) => unknown, resolver: MemoResolver, cache: MapLike) {\n const memoized = function (this: unknown, ...args: unknown[]) {\n const key = resolver.apply(this, args);\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n const result = func.apply(this, args);\n memoized.cache = cache.set(key, result) ?? cache;\n return result;\n };\n\n memoized.cache = cache;\n\n return memoized;\n}\n\nconst defaultResolver: MemoResolver = (...args: unknown[]) => args.join('-');\n\nexport const Memo =\n (config: MemoConfig = {}) =>\n (_: unknown, __: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n if (typeof descriptor.value !== 'function') {\n throw new Error('Memoization can be applied only to methods');\n }\n\n const resolver = config.resolver ?? defaultResolver;\n const cache = config.cache ?? new Map();\n\n descriptor.value = memoize(descriptor.value, resolver, cache);\n return descriptor;\n };\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverFactory {\n create() {\n return fromEvent<MouseEvent>(document, 'click');\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverService implements OnDestroy {\n private _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n constructor(private _clickObserverFactory: ClickObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MouseEvent>;\n observe(element: ElementRef<Element>): Observable<MouseEvent>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MouseEvent> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MouseEvent>) => {\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 private _observeElement(element: Element): Subject<MouseEvent> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MouseEvent>();\n const observer = this._clickObserverFactory.create();\n\n const sub = observer.subscribe((event) => stream.next(event));\n\n this._observedElements.set(element, { observer: sub, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.unsubscribe();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverFactory {\n create(callback: MutationCallback): MutationObserver | null {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentObserverService implements OnDestroy {\n private _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MutationRecord[]>;\n observe(element: ElementRef<Element>): Observable<MutationRecord[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {\n const element = coerceElement(elementOrRef);\n\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 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 characterData: true,\n childList: true,\n subtree: 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 private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\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 { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @deprecated Will be replaced with the upcoming Angular 16 `DestroyRef` feature.\n */\n// TODO: Replace with Angular 16 `DestroyRef` feature when available.\n@Injectable()\nexport class DestroyService implements OnDestroy {\n private readonly _destroy$ = new Subject<boolean>();\n\n readonly destroy$ = this._destroy$.asObservable();\n\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FocusVisibleService {\n private readonly _document = inject<Document>(DOCUMENT);\n\n private _hadKeyboardEvent = false;\n\n get isFocusVisible() {\n return this._hadKeyboardEvent;\n }\n\n constructor() {\n this._document.addEventListener('keydown', this.onKeyDown.bind(this), true);\n this._document.addEventListener('mousedown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);\n }\n\n onKeyDown(e: KeyboardEvent) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n this._hadKeyboardEvent = true;\n }\n\n onPointerDown() {\n this._hadKeyboardEvent = false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\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 private _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: ResizeObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<ResizeObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<ResizeObserverEntry[]>;\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 private _observeElement(element: Element): Subject<ResizeObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._mutationObserverFactory.create((resizes) => stream.next(resizes));\n if (observer) {\n observer.observe(element);\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 private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\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 { combineLatest, Observable, Subject } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n\ninterface FlipAnimationGroupConfig {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport interface FlipAnimationConfig {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i])) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (name: string, data: string, expiresInDays = 30, domain = getDomain()) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=/; expires=${date.toUTCString()}; domain=${domain}; SameSite=Lax;`;\n};\n\nexport const deleteCookie = (name: string, path: string, domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","import { map, Observable, Observer, startWith } from 'rxjs';\n\nexport const createMediaQueryObservable = (query: string) => {\n const mq = window.matchMedia(query);\n\n const observable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n const eventHandler = (event: MediaQueryListEvent) => {\n observer.next(event);\n };\n\n mq.addEventListener('change', eventHandler);\n\n return () => {\n mq.removeEventListener('change', eventHandler);\n };\n }).pipe(\n startWith(mq),\n map(({ matches }) => ({\n matches,\n query,\n })),\n );\n\n return observable;\n};\n","import { ElementRef, inject } from '@angular/core';\nimport { distinctUntilChanged, Observable, Subscription, takeUntil } from 'rxjs';\nimport { DestroyService } from '../services';\n\ntype AttributeValueBinding = {\n render: boolean;\n value: boolean | string | number;\n};\n\ntype AttributeRenderBinding = boolean;\n\nexport type ReactiveAttributes = {\n attribute: string | string[];\n observable: Observable<AttributeValueBinding | AttributeRenderBinding>;\n elementRef?: ElementRef<HTMLElement>;\n};\n\nconst isAttributeRenderBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeRenderBinding => typeof value === 'boolean';\nconst isAttributeValueBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeValueBinding => typeof value === 'object';\n\nexport interface ReactiveBindingResult {\n reset: () => void;\n remove: (...attributes: string[]) => void;\n push: (value: ReactiveAttributes) => void;\n}\n\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n const subscriptions: { attributes: string[]; subscription: Subscription }[] = [];\n const pushedAttributes: string[][] = [];\n\n const defaults: Record<string, string | undefined> = {};\n\n const push = (value: ReactiveAttributes) => {\n const { attribute, observable, elementRef } = value;\n const elRef = elementRef || rootElementRef;\n const attributes = Array.isArray(attribute) ? attribute : [attribute];\n pushedAttributes.push(attributes);\n\n for (const attribute of attributes) {\n if (!defaults[attribute]) {\n defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;\n }\n }\n\n const subscription = observable\n .pipe(\n takeUntil(destroy$),\n distinctUntilChanged((a, b) => {\n if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {\n return a === b;\n } else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {\n return a.render === b.render && a.value === b.value;\n }\n\n return false;\n }),\n )\n .subscribe((value) => {\n const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];\n\n for (const attribute of currentAttributes) {\n const isSingleClassMutation = attribute.startsWith('class.');\n const isMultipleClassMutation = attribute === 'class';\n\n const render = isAttributeRenderBinding(value) ? value : value.render;\n\n if (isSingleClassMutation) {\n const className = attribute.replace('class.', '');\n\n if (!className) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(className);\n } else {\n elRef.nativeElement.classList.add(className);\n }\n } else if (isMultipleClassMutation) {\n const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;\n\n if (!classes) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(...classes.split(' '));\n } else {\n elRef.nativeElement.classList.add(...classes.split(' '));\n }\n } else {\n const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;\n\n if (!attribute) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.removeAttribute(attribute);\n } else {\n elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);\n }\n }\n }\n });\n\n subscriptions.push({ attributes, subscription });\n };\n\n const remove = (...attributes: string[]) => {\n for (const attribute of attributes) {\n const sub = subscriptions.find((s) => s.attributes.includes(attribute));\n const attributeStack = pushedAttributes.find((a) => a.includes(attribute));\n\n if (sub) {\n sub.attributes = sub.attributes.filter((a) => a !== attribute);\n attributeStack?.splice(attributeStack.indexOf(attribute), 1);\n\n if (sub.attributes.length === 0) {\n sub.subscription.unsubscribe();\n subscriptions.splice(subscriptions.indexOf(sub), 1);\n }\n }\n }\n };\n\n const reset = () => {\n for (const attribute in defaults) {\n if (defaults[attribute] === undefined) {\n rootElementRef.nativeElement.removeAttribute(attribute);\n } else {\n rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute] as string);\n }\n }\n };\n\n for (const value of values) {\n push(value);\n }\n\n return {\n push,\n remove,\n reset,\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject, Observer, Subscription } from 'rxjs';\n\nexport class BehaviorSubjectWithSubscriberCount<T> extends BehaviorSubject<T> {\n private _subscriberCount = 0;\n\n get subscriberCount() {\n return this._subscriberCount;\n }\n\n override subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | undefined): Subscription;\n override subscribe(observerOrNext: any) {\n this._subscriberCount++;\n\n const sub = super.subscribe(observerOrNext);\n\n return {\n ...sub,\n unsubscribe: () => {\n sub.unsubscribe();\n this._subscriberCount--;\n },\n };\n }\n\n override unsubscribe() {\n this._subscriberCount--;\n\n return super.unsubscribe();\n }\n}\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nexport interface IsElementVisibleOptions {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n}\n\nexport interface CurrentElementVisibility {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n}\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n let { container } = options;\n const { element } = options;\n\n if (!element || container === null) {\n return null;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return { inline: true, block: true };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elementInlineEnd = elementInlineStart + elementRect.width;\n const elementBlockEnd = elementBlockStart + elementRect.height;\n\n const containerInlineEnd = containerInlineStart + containerRect.width;\n const containerBlockEnd = containerBlockStart + containerRect.height;\n\n const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;\n const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;\n\n return { inline: isElementInlineVisible, block: isElementBlockVisible };\n};\n\nexport interface ScrollToElementOptions {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n}\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n let { container } = options;\n const {\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || container === null) {\n return;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return;\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const elementInlineSize = elementRect.width;\n const elementBlockSize = elementRect.height;\n\n const containerInlineSize = containerRect.width;\n const containerBlockSize = containerRect.height;\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elementInlineEnd = elementInlineStart + elementInlineSize;\n const elementBlockEnd = elementBlockStart + elementBlockSize;\n\n const containerInlineEnd = containerInlineStart + containerInlineSize;\n const containerBlockEnd = containerBlockStart + containerBlockSize;\n\n const elementInlineCenter = elementInlineStart + elementInlineSize / 2;\n const elementBlockCenter = elementBlockStart + elementBlockSize / 2;\n\n const containerInlineCenter = containerInlineStart + containerInlineSize / 2;\n const containerBlockCenter = containerBlockStart + containerBlockSize / 2;\n\n const elementInlineOrigin =\n origin === 'center' ? elementInlineCenter : origin === 'end' ? elementInlineEnd : elementInlineStart;\n const elementBlockOrigin =\n origin === 'center' ? elementBlockCenter : origin === 'end' ? elementBlockEnd : elementBlockStart;\n\n const containerInlineOrigin =\n origin === 'center' ? containerInlineCenter : origin === 'end' ? containerInlineEnd : containerInlineStart;\n const containerBlockOrigin =\n origin === 'center' ? containerBlockCenter : origin === 'end' ? containerBlockEnd : containerBlockStart;\n\n const inlineOffset = elementInlineOrigin - containerInlineOrigin - scrollInlineMargin;\n const blockOffset = elementBlockOrigin - containerBlockOrigin - scrollBlockMargin;\n\n let inlineScroll: number | undefined = direction === 'block' ? undefined : inlineOffset;\n let blockScroll: number | undefined = direction === 'inline' ? undefined : blockOffset;\n\n if (origin === 'nearest') {\n const elVisible = isElementVisible({ element, container });\n\n if (elVisible?.inline && elVisible?.block) {\n return;\n }\n\n if (elVisible?.inline) {\n inlineScroll = undefined;\n }\n\n if (elVisible?.block) {\n blockScroll = undefined;\n }\n }\n\n container.scrollTo({\n left: inlineScroll,\n top: blockScroll,\n behavior,\n });\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { ScrollStrategy } from '@angular/cdk/overlay';\nimport { supportsScrollBehavior } from '@angular/cdk/platform';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { skip, Subscription, take, tap } from 'rxjs';\nimport { RouterStateService } from '../services';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n\nexport class SmartBlockScrollStrategy implements ScrollStrategy {\n private _previousHTMLStyles = { top: '', left: '' };\n private _previousScrollPosition: { top: number; left: number } = { top: 0, left: 0 };\n private _isEnabled = false;\n private _document: Document;\n private _urlSubscription: Subscription | null = null;\n private _didNavigate = false;\n\n constructor(private _viewportRuler: ViewportRuler, private _routerState: RouterStateService, document: Document) {\n this._document = document;\n }\n\n attach() {\n // noop\n }\n\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n this._didNavigate = false;\n\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n\n this._urlSubscription = this._routerState.route$\n .pipe(\n skip(1),\n take(1),\n tap(() => {\n this._didNavigate = true;\n }),\n )\n .subscribe();\n }\n }\n\n disable() {\n if (this._isEnabled) {\n this._urlSubscription?.unsubscribe();\n\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n\n this._isEnabled = false;\n\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n\n if (!this._didNavigate) {\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n }\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n\n private _canBeEnabled(): boolean {\n const html = this._document.documentElement;\n\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n\n return true;\n }\n}\n","import { VIEWPORT_CONFIG } from '../constants';\nimport { ViewportConfig } from '../types';\n\nexport const provideViewportConfig = (\n viewportConfig: ViewportConfig,\n): { provide: typeof VIEWPORT_CONFIG; useValue: typeof viewportConfig } => {\n return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { Data, NavigationEnd, Params, Router } from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n pairwise,\n} from 'rxjs';\nimport { equal } from '../utils';\n\nexport const routerDisableScrollTop = (config: { asReturnRoute?: boolean } = {}) => {\n if (!config.asReturnRoute) {\n return {\n disableScrollTop: true,\n };\n }\n\n return {\n disableScrollTopAsReturnRoute: true,\n };\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterStateService {\n private _isScrollTopOnNavigationEnabled = false;\n private readonly _router = inject(Router);\n\n private readonly _route$ = new BehaviorSubject('/');\n\n private readonly _state$ = new BehaviorSubject<{\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n }>({\n title: null,\n fragment: null,\n data: {},\n pathParams: {},\n queryParams: {},\n });\n\n get route$() {\n return this._route$.asObservable();\n }\n\n get state$() {\n return this._state$.asObservable();\n }\n\n constructor() {\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n distinctUntilChanged((a, b) => a.url === b.url),\n map((event) => {\n const { url } = event;\n\n const urlWithoutQueryParams = url.split('?')[0];\n const withoutFragment = urlWithoutQueryParams.split('#')[0];\n\n return withoutFragment;\n }),\n )\n .subscribe(this._route$);\n\n this._route$\n .pipe(\n map(() => {\n let route = this._router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n }),\n )\n .subscribe(this._state$);\n }\n\n enableScrollEnhancements(\n config: {\n scrollElement?: HTMLElement;\n queryParamTriggerList?: string[];\n fragment?: {\n enabled?: boolean;\n smooth?: boolean;\n };\n } = {},\n ) {\n if (this._isScrollTopOnNavigationEnabled) {\n return;\n }\n\n this._isScrollTopOnNavigationEnabled = true;\n\n combineLatest([this._state$.pipe(pairwise()), this._route$.pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute && equal(prevState.pathParams, currState.pathParams);\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n if (\n !(currState.data['disableScrollTopAsReturnRoute'] && prevState.data['disableScrollTop']) &&\n !currState.data['disableScrollTop']\n ) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n }\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.queryParams[key]));\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.pathParams[key]));\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.data[key]));\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, shareReplay } from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Memo } from '../decorators';\nimport { Breakpoint, ViewportConfig } from '../types';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private _viewportConfig: ViewportConfig;\n\n private _isXs$ = new BehaviorSubject(false);\n private _isSm$ = new BehaviorSubject(false);\n private _isMd$ = new BehaviorSubject(false);\n private _isLg$ = new BehaviorSubject(false);\n private _isXl$ = new BehaviorSubject(false);\n private _is2Xl$ = new BehaviorSubject(false);\n\n get isXs$() {\n return this._isXs$.asObservable();\n }\n\n get isXs() {\n return this._isXs$.value;\n }\n\n get isSm$() {\n return this._isSm$.asObservable();\n }\n\n get isSm() {\n return this._isSm$.value;\n }\n\n get isMd$() {\n return this._isMd$.asObservable();\n }\n\n get isMd() {\n return this._isMd$.value;\n }\n\n get isLg$() {\n return this._isLg$.asObservable();\n }\n\n get isLg() {\n return this._isLg$.value;\n }\n\n get isXl$() {\n return this._isXl$.asObservable();\n }\n\n get isXl() {\n return this._isXl$.value;\n }\n\n get is2Xl$() {\n return this._is2Xl$.asObservable();\n }\n\n get is2Xl() {\n return this._is2Xl$.value;\n }\n\n currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n shareReplay(1),\n );\n\n get currentViewport() {\n return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);\n }\n\n constructor(\n @Inject(VIEWPORT_CONFIG) @Optional() _viewportConfig: ViewportConfig | null,\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;\n this._observeDefaultBreakpoints();\n }\n\n observe(options: { min?: number | Breakpoint; max?: number | Breakpoint }): Observable<boolean> {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n shareReplay(1),\n );\n }\n\n isMatched(options: { min?: number | Breakpoint; max?: number | Breakpoint }): boolean {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.isMatched(mediaQuery);\n }\n\n private _observeDefaultBreakpoints() {\n this.observe({ max: 'xs' }).subscribe(this._isXs$);\n this.observe({ min: 'sm', max: 'sm' }).subscribe(this._isSm$);\n this.observe({ min: 'md', max: 'md' }).subscribe(this._isMd$);\n this.observe({ min: 'lg', max: 'lg' }).subscribe(this._isLg$);\n this.observe({ min: 'xl', max: 'xl' }).subscribe(this._isXl$);\n this.observe({ min: '2xl' }).subscribe(this._is2Xl$);\n }\n\n @Memo()\n private _getViewportSize(type: Breakpoint, option: 'min' | 'max') {\n const index = option === 'min' ? 0 : 1;\n const size = this._viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n }\n\n @Memo({\n resolver: (v: BuildMediaQueryOptions) => {\n return `${v.min ?? ''}-${v.max ?? ''}`;\n },\n })\n private _buildMediaQuery(options: BuildMediaQueryOptions) {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${this._getViewportSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${this._getViewportSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n }\n\n private getCurrentViewport([isXs, isSm, isMd, isLg, isXl, is2Xl]: [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n ]): Breakpoint {\n if (isXs) {\n return 'xs';\n } else if (isSm) {\n return 'sm';\n } else if (isMd) {\n return 'md';\n } else if (isLg) {\n return 'lg';\n } else if (isXl) {\n return 'xl';\n } else if (is2Xl) {\n return '2xl';\n }\n\n return 'xs';\n }\n}\n","import { Directive, ElementRef, inject, InjectionToken, Input, isDevMode, OnInit } from '@angular/core';\nimport {\n BehaviorSubject,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n skip,\n Subject,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { DestroyService } from '../../services';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n standalone: true,\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n DestroyService,\n ],\n})\nexport class AnimatableDirective implements OnInit {\n private _didEmitStart = false;\n\n private readonly _parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = new Subject<void>();\n\n @Input('etAnimatable')\n set animatedElement(value: string | HTMLElement | null | undefined) {\n let newElement: HTMLElement | null = null;\n if (value === null || value === undefined) {\n newElement = this._elementRef.nativeElement;\n } else if (typeof value === 'string') {\n const el = document.querySelector(value) as HTMLElement;\n\n if (el) {\n newElement = el;\n } else {\n if (isDevMode()) {\n console.warn(`Element with selector ${value} not found. Animatable directive will use host element.`);\n }\n\n newElement = this._elementRef.nativeElement;\n }\n } else {\n newElement = value;\n }\n\n if (this._animatedElement$.value !== newElement) {\n this._animatedElement$.next(newElement);\n }\n }\n private _animatedElement$ = new BehaviorSubject<HTMLElement>(this._elementRef.nativeElement);\n\n readonly animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));\n readonly animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));\n\n private readonly _hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n private readonly _totalActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n readonly isAnimating$: Observable<boolean> = this._totalActiveAnimationCount$.pipe(\n map((count) => count > 0),\n debounceTime(0),\n );\n\n ngOnInit(): void {\n this._animatedElement$\n .pipe(\n tap((el) => {\n this._totalActiveAnimationCount$.next(\n this._totalActiveAnimationCount$.value - this._hostActiveAnimationCount$.value,\n );\n this._hostActiveAnimationCount$.next(0);\n\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value + 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(\n fromEvent<AnimationEvent>(el, 'animationend'),\n fromEvent<AnimationEvent>(el, 'animationcancel'),\n fromEvent<TransitionEvent>(el, 'transitionend'),\n fromEvent<TransitionEvent>(el, 'transitioncancel'),\n )\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value - 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._totalActiveAnimationCount$\n .pipe(\n tap((count) => {\n if (count > 0 && !this._didEmitStart) {\n this._animationStart$.next();\n this._didEmitStart = true;\n } else if (count === 0) {\n this._animationEnd$.next();\n this._didEmitStart = false;\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n if (this._parent) {\n this._parent._hostActiveAnimationCount$\n .pipe(\n takeUntil(this._destroy$),\n tap((count) => {\n this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);\n }),\n )\n .subscribe();\n }\n }\n}\n","import { Directive, ElementRef, inject, InjectionToken, isDevMode } from '@angular/core';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { DestroyService } from '../../services';\nimport { createReactiveBindings, forceReflow, fromNextFrame } from '../../utils';\nimport { AnimatableDirective, ANIMATABLE_TOKEN } from '../animatable';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n} as const;\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n DestroyService,\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _animatable = inject(ANIMATABLE_TOKEN);\n private readonly _classList = this._elementRef.nativeElement.classList;\n\n private _state$ = new BehaviorSubject<'entering' | 'entered' | 'leaving' | 'left' | 'init'>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n private readonly _bindings = createReactiveBindings({\n attribute: 'class.et-force-invisible',\n observable: this._state$.pipe(map((state) => state === 'init')),\n });\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'init' && this.state !== 'left' && isDevMode()) {\n console.warn(\n 'Tried to enter but the element is not in the initial state. This may result in unexpected behavior.',\n this,\n );\n }\n\n this._state$.next('entering');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.enterFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.enterActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n this._state$.next('entered');\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n leave(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'entered' && this.state !== 'entering' && isDevMode()) {\n console.warn('Tried to leave while already leaving or left. This may result in unexpected behavior.', this);\n }\n\n if (\n this._classList.contains(ANIMATION_CLASSES.enterFrom) ||\n this._classList.contains(ANIMATION_CLASSES.enterActive) ||\n this._classList.contains(ANIMATION_CLASSES.enterTo)\n ) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n\n this._state$.next('leaving');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.leaveFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.leaveActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n this._state$.next('left');\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClickObserverService } from '../../services';\n\n@Directive({\n selector: '[etClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _clickObserverService = inject(ClickObserverService);\n\n private _subscription: Subscription | null = null;\n\n @Output()\n etClickOutside = new EventEmitter<MouseEvent>();\n\n ngOnInit(): void {\n setTimeout(() => {\n this._subscription = this._clickObserverService.observe(this._elementRef.nativeElement).subscribe((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this._elementRef.nativeElement.contains(activeElement);\n\n if (!isInside) {\n this.etClickOutside.emit(event);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this._subscription?.unsubscribe();\n }\n}\n","export const CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nexport const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = 'et-cursor-drag-scroll--prepared';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { combineLatest, debounceTime, fromEvent, startWith, Subject, Subscription, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { elementCanScroll } from '../../utils';\nimport { CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS } from './cursor-drag-scroll.constants';\n\n@Directive({\n selector: '[etCursorDragScroll]',\n exportAs: 'etCursorDragScroll',\n standalone: true,\n providers: [DestroyService],\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _bufferUntilScroll = 5;\n private readonly _mouseUp$ = new Subject<boolean>();\n\n private _isScrolling = false;\n private _canScroll = false;\n\n private _currentScrollState = {\n top: 0,\n left: 0,\n x: 0,\n y: 0,\n };\n\n @Input('etCursorDragScroll')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: BooleanInput) {\n this._enabled = coerceBooleanProperty(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n\n private _enableCursorDragScroll() {\n const contentResizeSub = combineLatest([\n this._contentObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n this._resizeObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n ])\n .pipe(\n debounceTime(25),\n tap(() => this._updateCanScrollState()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n const mousedownSub = fromEvent<MouseEvent>(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n tap((e) => this._onMouseDown(e)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._subscriptions.push(contentResizeSub, mousedownSub);\n\n this._updateCanScrollState();\n }\n\n private _disableCursorDragScroll() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions.length = 0;\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n\n private _onMouseDown(e: MouseEvent) {\n if (!this._elementRef?.nativeElement || !this._canScroll) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n element.classList.add(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this._elementRef.nativeElement.style.scrollSnapType = 'none';\n this._elementRef.nativeElement.style.scrollBehavior = 'unset';\n\n this._currentScrollState = {\n left: this._elementRef.nativeElement.scrollLeft,\n top: this._elementRef.nativeElement.scrollTop,\n x: e.clientX,\n y: e.clientY,\n };\n\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(\n tap((e) => this._mouseMoveHandler(e)),\n takeUntil(this._mouseUp$),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(\n tap(() => this._mouseUpHandler()),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n private _mouseMoveHandler(e: MouseEvent) {\n e.preventDefault();\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n const dx = e.clientX - this._currentScrollState.x;\n const dy = e.clientY - this._currentScrollState.y;\n\n if (Math.abs(dx) > this._bufferUntilScroll || Math.abs(dy) > this._bufferUntilScroll) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: this._currentScrollState.top - dy,\n left: this._currentScrollState.left - dx,\n behavior: 'smooth',\n });\n } else {\n element.scrollTop = this._currentScrollState.top - dy;\n element.scrollLeft = this._currentScrollState.left - dx;\n }\n }\n }\n\n private _mouseUpHandler() {\n this._mouseUp$.next(true);\n this._isScrolling = false;\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n this._elementRef.nativeElement.style.scrollSnapType = '';\n this._elementRef.nativeElement.style.scrollBehavior = '';\n\n this._elementRef.nativeElement.style.cursor = 'grab';\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_CLASS);\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n }\n\n private _updateCanScrollState() {\n this._canScroll = elementCanScroll(this._elementRef.nativeElement);\n\n if (this._canScroll) {\n this._elementRef.nativeElement.style.cursor = 'grab';\n } else {\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n }\n}\n","export class LetContext<T = unknown> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public $implicit: T = null!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public etLet: T = null!;\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LetContext } from './let.types';\n\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\n @Input()\n set etLet(value: T) {\n this._context.$implicit = this._context.etLet = value;\n this._updateView();\n }\n\n static ngTemplateGuard_ngLet: 'binding';\n\n private _context: LetContext<T> = new LetContext<T>();\n private _templateRef: TemplateRef<LetContext<T>> | null = null;\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<LetContext<T>>) {\n this._templateRef = templateRef;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static ngTemplateContextGuard<T>(dir: LetDirective<T>, ctx: any): ctx is LetContext<T> {\n return true;\n }\n\n private _updateView() {\n if (!this._viewRef) {\n this._viewContainer.clear();\n if (this._templateRef) {\n this._viewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n }\n }\n }\n}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ContentObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveContent]',\n exportAs: 'etObserveContent',\n standalone: true,\n})\nexport class ObserveContentDirective implements AfterContentInit, OnDestroy {\n private _contentObserver = inject(ContentObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveContent')\n readonly valueChange = new EventEmitter<MutationRecord[]>();\n\n @Input('etObserveContentDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly valueChange = new EventEmitter<ResizeObserverEntry[]>();\n\n @Input('etObserveResizeDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._resizeObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } from '@angular/core';\n\nexport const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = 'et-scroll-observer-first-element';\n\n@Directive({\n selector: '[etScrollObserverFirstElement]',\n standalone: true,\n})\nexport class ScrollObserverFirstElementDirective {\n @Input('etScrollObserverFirstElement')\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n get isFirstElement(): boolean {\n return this._isFirstElement;\n }\n set isFirstElement(value: BooleanInput) {\n this._isFirstElement = coerceBooleanProperty(value);\n }\n private _isFirstElement = false;\n}\n","import { Directive } from '@angular/core';\n\nexport const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';\n\n@Directive({\n selector: '[etScrollObserverIgnoreTarget]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_IGNORE_TARGET_CLASS,\n },\n})\nexport class ScrollObserverIgnoreTargetDirective {}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } from '@angular/core';\n\nexport const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = 'et-scroll-observer-last-element';\n\n@Directive({\n selector: '[etScrollObserverLastElement]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_LAST_ELEMENT_CLASS,\n },\n})\nexport class ScrollObserverLastElementDirective {\n @Input('etScrollObserverLastElement')\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n get isLastElement(): boolean {\n return this._isLastElement;\n }\n set isLastElement(value: BooleanInput) {\n this._isLastElement = coerceBooleanProperty(value);\n }\n private _isLastElement = false;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ObserveScrollStateDirective } from './observe-scroll-state.directive';\n\nexport const OBSERVE_SCROLL_STATE = new InjectionToken<ObserveScrollStateDirective>('OBSERVE_SCROLL_STATE');\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { elementCanScroll } from '../../utils';\nimport { SCROLL_OBSERVER_FIRST_ELEMENT_CLASS } from '../scroll-observer-first-element';\nimport { SCROLL_OBSERVER_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';\nimport { SCROLL_OBSERVER_LAST_ELEMENT_CLASS } from '../scroll-observer-last-element';\nimport { OBSERVE_SCROLL_STATE } from './observe-scroll-state.constants';\nimport { ObservedScrollableChild, ScrollObserverScrollState } from './observe-scroll-state.types';\n\n@Directive({\n selector: '[etObserveScrollState]',\n exportAs: 'etObserveScrollState',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_SCROLL_STATE,\n useExisting: ObserveScrollStateDirective,\n },\n DestroyService,\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _observedChildren = {\n first: this._firstCurrentChild,\n last: this._lastCurrentChild,\n };\n\n private get _firstCurrentChild() {\n const explicitFirstElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitFirstElement) {\n return explicitFirstElement;\n }\n\n const element = this._elementRef.nativeElement.children[0] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'next');\n }\n\n private get _lastCurrentChild() {\n const explicitLastElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitLastElement) {\n return explicitLastElement;\n }\n\n const element = this._elementRef.nativeElement.children[\n this._elementRef.nativeElement.children.length - 1\n ] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'previous');\n }\n\n @Input()\n get observerRootMargin(): number {\n return this._rootMargin;\n }\n set observerRootMargin(value: NumberInput) {\n this._rootMargin = coerceNumberProperty(value);\n }\n private _rootMargin = 0;\n\n @Input()\n get observerThreshold(): number | number[] {\n return this._threshold;\n }\n set observerThreshold(value: NumberInput | number[]) {\n if (Array.isArray(value)) {\n this._threshold = value;\n return;\n }\n\n this._threshold = coerceNumberProperty(value);\n }\n private _threshold: number | number[] = [0.99999, 0.9999, 0.999, 0.99, 1];\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => this._checkChildren()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._resizeObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => {\n const canScroll = elementCanScroll(this._elementRef.nativeElement);\n if ((!this._intersectionObserver && canScroll) || (this._intersectionObserver && !canScroll)) {\n this._checkChildren();\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._checkChildren();\n }\n\n ngOnDestroy(): void {\n this._clearIntersectionObserver();\n }\n\n private _checkChildren() {\n this._clearIntersectionObserver();\n\n if (\n this._firstCurrentChild === this._lastCurrentChild ||\n !this._firstCurrentChild ||\n !this._lastCurrentChild ||\n !elementCanScroll(this._elementRef.nativeElement)\n ) {\n this._unobserveChild('first');\n this._unobserveChild('last');\n\n this.valueChange.emit({\n isAtStart: true,\n isAtEnd: true,\n canScroll: false,\n });\n } else {\n this._intersectionObserver = this._initiateIntersectionObserver();\n\n this._observeChild('first', this._firstCurrentChild);\n this._observeChild('last', this._lastCurrentChild);\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const { first, last } = this._observedChildren;\n\n const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === last)?.isIntersecting ?? false;\n\n this.valueChange.emit({\n isAtStart,\n isAtEnd,\n canScroll: !isAtStart || !isAtEnd,\n });\n },\n {\n root: this._elementRef.nativeElement,\n rootMargin: this._rootMargin ? `${this._rootMargin}px` : undefined,\n threshold: this._threshold,\n },\n );\n\n return observer;\n }\n\n private _observeChild(child: ObservedScrollableChild, element: HTMLElement) {\n this._intersectionObserver?.observe(element);\n this._observedChildren[child] = element;\n\n element.classList.add(`et-scroll-observer-observing-${child}-element`);\n }\n\n private _unobserveChild(child: ObservedScrollableChild) {\n const observedChild = this._observedChildren[child];\n\n if (!observedChild) {\n return;\n }\n\n observedChild.classList.remove(\n 'et-scroll-observer-observing-first-element',\n 'et-scroll-observer-observing-last-element',\n );\n\n this._intersectionObserver?.unobserve(observedChild);\n this._observedChildren[child] = null;\n }\n\n private _clearIntersectionObserver() {\n this._intersectionObserver?.disconnect();\n this._intersectionObserver = null;\n }\n\n private _getNonIgnoredChild(element: HTMLElement | null, direction: 'previous' | 'next'): HTMLElement | null {\n if (!element) {\n return null;\n }\n\n if (element?.classList.contains(SCROLL_OBSERVER_IGNORE_TARGET_CLASS)) {\n const nextElement = element[`${direction}ElementSibling`] as HTMLElement | null;\n\n if (!nextElement) {\n return null;\n }\n\n return this._getNonIgnoredChild(nextElement, direction);\n }\n\n return element;\n }\n}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\n\n private _render() {\n this._viewContainerRef.clear();\n\n for (let i = 0; i < this.repeatCount; i++) {\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SeoDirective } from './seo.directive';\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n","import { SeoConfig } from './seo.directive.types';\n\nexport const mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SEO_DIRECTIVE_TOKEN } from './seo.directive.constants';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\nimport { mergeSeoConfig } from './seo.directive.utils';\n\n@Directive({\n standalone: true,\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n // TODO(TRB): This should get split up into multiple methods to make it more readable\n // - updateTitle\n // - updateMeta\n // - updateLink\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","import { NormalizedGameResultType } from './normalize-game-result-type.types';\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeGameResultType } from './normalize-game-result-type.util';\n\n@Pipe({ name: 'etNormalizeGameResultType', standalone: true })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-state.constants';\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchState } from './normalize-match-state.util';\n\n@Pipe({ name: 'etNormalizeMatchState', standalone: true })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchParticipant, NormalizedMatchParticipants } from './normalize-match-participants.types';\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchParticipants } from './normalize-match-participants.util';\n\n@Pipe({ name: 'etNormalizeMatchParticipants', standalone: true })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n","import { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchScore } from './normalize-match-score.types';\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchScore } from './normalize-match-score.util';\n\n@Pipe({ name: 'etNormalizeMatchScore', standalone: true })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n","import { StageType } from '@ethlete/types';\nimport { Translatable } from '../../types';\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchType } from './normalize-match-type.util';\n\n@Pipe({ name: 'etNormalizeMatchType', standalone: true })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n","import { TrackByFunction } from '@angular/core';\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { toArray } from './to-array.util';\n\n@Pipe({ name: 'toArray', standalone: true })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n","import { QueryList } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type NgClassType =\n | string\n | string[]\n | Set<string>\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n }\n | null\n | undefined;\n\nexport class TypedQueryList<T> extends QueryList<T | undefined> {\n override [Symbol.iterator]: () => Iterator<T> = () => {\n return super[Symbol.iterator]() as Iterator<T>;\n };\n\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n\n override toArray(): T[] {\n return super.toArray() as T[];\n }\n\n override forEach(fn: (item: T, index: number, array: T[]) => void): void {\n super.forEach(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => void);\n }\n\n override filter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\n return super.filter(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => boolean) as T[];\n }\n\n override map<U>(fn: (item: T, index: number, array: T[]) => U): U[] {\n return super.map(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => U);\n }\n\n override reduce<U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,\n initialValue: U,\n ): U {\n return super.reduce(\n fn as (previousValue: U, currentValue: T | undefined, currentIndex: number, array: (T | undefined)[]) => U,\n initialValue,\n );\n }\n\n override some(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return super.some(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n\n override find(fn: (value: T, index: number, array: T[]) => boolean): T | undefined {\n return super.find(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { FormGroup } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n\n // set error on matchingControl if validation fails\n if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {\n return;\n }\n\n // set error on matchingControl if validation fails\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ [MUST_MATCH]: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n};\n","import { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\nexport * from './is-array-not-empty.validator';\nexport * from './is-email.validator';\nexport * from './must-match.validator';\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnimatableDirective","debounceTime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/components/structured-data/structured-data.component.ts","../../../../libs/core/src/lib/constants/viewport.constants.ts","../../../../libs/core/src/lib/decorators/memo/memo.decorator.ts","../../../../libs/core/src/lib/services/click-observer.service.ts","../../../../libs/core/src/lib/services/content-observer.service.ts","../../../../libs/core/src/lib/services/destroy.service.ts","../../../../libs/core/src/lib/services/focus-visible.service.ts","../../../../libs/core/src/lib/services/resize-observer.service.ts","../../../../libs/core/src/lib/utils/animation.utils.ts","../../../../libs/core/src/lib/utils/clamp.util.ts","../../../../libs/core/src/lib/utils/clone.util.ts","../../../../libs/core/src/lib/utils/cookie.util.ts","../../../../libs/core/src/lib/utils/equal.util.ts","../../../../libs/core/src/lib/utils/media-query-observable.util.ts","../../../../libs/core/src/lib/utils/reactive-binding.util.ts","../../../../libs/core/src/lib/utils/rxjs.utils.ts","../../../../libs/core/src/lib/utils/scrollable.utils.ts","../../../../libs/core/src/lib/utils/smart-block-scroll-strategy.utils.ts","../../../../libs/core/src/lib/utils/viewport.util.ts","../../../../libs/core/src/lib/services/router-state.service.ts","../../../../libs/core/src/lib/services/viewport.service.ts","../../../../libs/core/src/lib/directives/animatable/animatable.directive.ts","../../../../libs/core/src/lib/directives/animated-lifecycle/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/directives/click-outside/click-outside.directive.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.ts","../../../../libs/core/src/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.ts","../../../../libs/core/src/lib/directives/let/let.types.ts","../../../../libs/core/src/lib/directives/let/let.directive.ts","../../../../libs/core/src/lib/directives/observe-content/observe-content.directive.ts","../../../../libs/core/src/lib/directives/observe-resize/observe-resize.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.ts","../../../../libs/core/src/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.constants.ts","../../../../libs/core/src/lib/directives/observe-scroll-state/observe-scroll-state.directive.ts","../../../../libs/core/src/lib/directives/repeat/repeat.directive.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.constants.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.utils.ts","../../../../libs/core/src/lib/directives/seo/seo.directive.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-state/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-score/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.util.ts","../../../../libs/core/src/lib/pipes/normalize-match-type/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.util.ts","../../../../libs/core/src/lib/pipes/to-array/to-array.pipe.ts","../../../../libs/core/src/lib/types/angular.types.ts","../../../../libs/core/src/lib/validators/is-array-not-empty.validator.ts","../../../../libs/core/src/lib/validators/is-email.validator.ts","../../../../libs/core/src/lib/validators/must-match.validator.ts","../../../../libs/core/src/lib/validators/public-api.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { JsonLD } from '@ethlete/types';\n\n@Component({\n selector: 'et-structured-data',\n standalone: true,\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n },\n})\nexport class StructuredDataComponent {\n private readonly _sanitizer = inject(DomSanitizer);\n\n @Input()\n set data(currentValue: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n this.jsonLD = this.getSafeHTML(currentValue);\n }\n\n @HostBinding('innerHTML')\n jsonLD?: SafeHtml;\n\n getSafeHTML(value: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined) {\n const json = value ? JSON.stringify(value, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ViewportConfig } from '../types';\n\nexport const VIEWPORT_CONFIG = new InjectionToken<ViewportConfig>('ViewportConfig');\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n","export interface MemoResolver {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (...args: any[]): any;\n}\n\nexport interface MapLike<K = unknown, V = unknown> {\n set(key: K, v: V): MapLike<K, V>;\n get(key: K): V;\n has(key: K): boolean;\n}\n\nexport interface MemoConfig {\n resolver?: MemoResolver;\n cache?: MapLike;\n}\n\nfunction memoize(func: (..._args: unknown[]) => unknown, resolver: MemoResolver, cache: MapLike) {\n const memoized = function (this: unknown, ...args: unknown[]) {\n const key = resolver.apply(this, args);\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n const result = func.apply(this, args);\n memoized.cache = cache.set(key, result) ?? cache;\n return result;\n };\n\n memoized.cache = cache;\n\n return memoized;\n}\n\nconst defaultResolver: MemoResolver = (...args: unknown[]) => args.join('-');\n\nexport const Memo =\n (config: MemoConfig = {}) =>\n (_: unknown, __: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n if (typeof descriptor.value !== 'function') {\n throw new Error('Memoization can be applied only to methods');\n }\n\n const resolver = config.resolver ?? defaultResolver;\n const cache = config.cache ?? new Map();\n\n descriptor.value = memoize(descriptor.value, resolver, cache);\n return descriptor;\n };\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverFactory {\n create() {\n return fromEvent<MouseEvent>(document, 'click');\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ClickObserverService implements OnDestroy {\n private _observedElements = new Map<\n Element,\n {\n observer: Subscription | null;\n readonly stream: Subject<MouseEvent>;\n count: number;\n }\n >();\n\n constructor(private _clickObserverFactory: ClickObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MouseEvent>;\n observe(element: ElementRef<Element>): Observable<MouseEvent>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MouseEvent> {\n const element = coerceElement(elementOrRef);\n\n return new Observable((observer: Observer<MouseEvent>) => {\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 private _observeElement(element: Element): Subject<MouseEvent> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<MouseEvent>();\n const observer = this._clickObserverFactory.create();\n\n const sub = observer.subscribe((event) => stream.next(event));\n\n this._observedElements.set(element, { observer: sub, stream, count: 1 });\n } else {\n this._observedElements.get(element)!.count++;\n }\n return this._observedElements.get(element)!.stream;\n }\n\n private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element)!;\n if (observer) {\n observer.unsubscribe();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class MutationObserverFactory {\n create(callback: MutationCallback): MutationObserver | null {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ContentObserverService implements OnDestroy {\n private _observedElements = new Map<\n Element,\n {\n observer: MutationObserver | null;\n readonly stream: Subject<MutationRecord[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<MutationRecord[]>;\n observe(element: ElementRef<Element>): Observable<MutationRecord[]>;\n observe(elementOrRef: Element | ElementRef<Element>): Observable<MutationRecord[]> {\n const element = coerceElement(elementOrRef);\n\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 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 characterData: true,\n childList: true,\n subtree: 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 private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\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 { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @deprecated Will be replaced with the upcoming Angular 16 `DestroyRef` feature.\n */\n// TODO: Replace with Angular 16 `DestroyRef` feature when available.\n@Injectable()\nexport class DestroyService implements OnDestroy {\n private readonly _destroy$ = new Subject<boolean>();\n\n readonly destroy$ = this._destroy$.asObservable();\n\n ngOnDestroy(): void {\n this._destroy$.next(true);\n this._destroy$.unsubscribe();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FocusVisibleService {\n private readonly _document = inject<Document>(DOCUMENT);\n\n private _hadKeyboardEvent = false;\n\n get isFocusVisible() {\n return this._hadKeyboardEvent;\n }\n\n constructor() {\n this._document.addEventListener('keydown', this.onKeyDown.bind(this), true);\n this._document.addEventListener('mousedown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);\n this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);\n }\n\n onKeyDown(e: KeyboardEvent) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n this._hadKeyboardEvent = true;\n }\n\n onPointerDown() {\n this._hadKeyboardEvent = false;\n }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { Injectable, OnDestroy, ElementRef } from '@angular/core';\nimport { Subject, Observable, Observer } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\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 private _observedElements = new Map<\n Element,\n {\n observer: ResizeObserver | null;\n readonly stream: Subject<ResizeObserverEntry[]>;\n count: number;\n }\n >();\n\n constructor(private _mutationObserverFactory: ResizeObserverFactory) {}\n\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n\n observe(element: Element): Observable<ResizeObserverEntry[]>;\n observe(element: ElementRef<Element>): Observable<ResizeObserverEntry[]>;\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 private _observeElement(element: Element): Subject<ResizeObserverEntry[]> {\n if (!this._observedElements.has(element)) {\n const stream = new Subject<ResizeObserverEntry[]>();\n const observer = this._mutationObserverFactory.create((resizes) => stream.next(resizes));\n if (observer) {\n observer.observe(element);\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 private _unobserveElement(element: Element) {\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 private _cleanupObserver(element: Element) {\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 { combineLatest, Observable, Subject } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n\ninterface FlipAnimationGroupConfig {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport interface FlipAnimationConfig {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n}\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i])) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (name: string, data: string, expiresInDays = 30, domain = getDomain()) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const date = new Date();\n date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);\n\n document.cookie = `${name}=${data}; path=/; expires=${date.toUTCString()}; domain=${domain}; SameSite=Lax;`;\n};\n\nexport const deleteCookie = (name: string, path: string, domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","import { map, Observable, Observer, startWith } from 'rxjs';\n\nexport const createMediaQueryObservable = (query: string) => {\n const mq = window.matchMedia(query);\n\n const observable = new Observable((observer: Observer<MediaQueryListEvent>) => {\n const eventHandler = (event: MediaQueryListEvent) => {\n observer.next(event);\n };\n\n mq.addEventListener('change', eventHandler);\n\n return () => {\n mq.removeEventListener('change', eventHandler);\n };\n }).pipe(\n startWith(mq),\n map(({ matches }) => ({\n matches,\n query,\n })),\n );\n\n return observable;\n};\n","import { ElementRef, inject } from '@angular/core';\nimport { distinctUntilChanged, Observable, Subscription, takeUntil } from 'rxjs';\nimport { DestroyService } from '../services';\n\ntype AttributeValueBinding = {\n render: boolean;\n value: boolean | string | number;\n};\n\ntype AttributeRenderBinding = boolean;\n\nexport type ReactiveAttributes = {\n attribute: string | string[];\n observable: Observable<AttributeValueBinding | AttributeRenderBinding>;\n elementRef?: ElementRef<HTMLElement>;\n};\n\nconst isAttributeRenderBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeRenderBinding => typeof value === 'boolean';\nconst isAttributeValueBinding = (\n value: AttributeValueBinding | AttributeRenderBinding,\n): value is AttributeValueBinding => typeof value === 'object';\n\nexport interface ReactiveBindingResult {\n reset: () => void;\n remove: (...attributes: string[]) => void;\n push: (value: ReactiveAttributes) => void;\n}\n\nexport const createReactiveBindings = (...values: ReactiveAttributes[]): ReactiveBindingResult => {\n const rootElementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n const subscriptions: { attributes: string[]; subscription: Subscription }[] = [];\n const pushedAttributes: string[][] = [];\n\n const defaults: Record<string, string | undefined> = {};\n\n const push = (value: ReactiveAttributes) => {\n const { attribute, observable, elementRef } = value;\n const elRef = elementRef || rootElementRef;\n const attributes = Array.isArray(attribute) ? attribute : [attribute];\n pushedAttributes.push(attributes);\n\n for (const attribute of attributes) {\n if (!defaults[attribute]) {\n defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;\n }\n }\n\n const subscription = observable\n .pipe(\n takeUntil(destroy$),\n distinctUntilChanged((a, b) => {\n if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {\n return a === b;\n } else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {\n return a.render === b.render && a.value === b.value;\n }\n\n return false;\n }),\n )\n .subscribe((value) => {\n const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];\n\n for (const attribute of currentAttributes) {\n const isSingleClassMutation = attribute.startsWith('class.');\n const isMultipleClassMutation = attribute === 'class';\n\n const render = isAttributeRenderBinding(value) ? value : value.render;\n\n if (isSingleClassMutation) {\n const className = attribute.replace('class.', '');\n\n if (!className) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(className);\n } else {\n elRef.nativeElement.classList.add(className);\n }\n } else if (isMultipleClassMutation) {\n const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;\n\n if (!classes) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.classList.remove(...classes.split(' '));\n } else {\n elRef.nativeElement.classList.add(...classes.split(' '));\n }\n } else {\n const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;\n\n if (!attribute) {\n continue;\n }\n\n if (!render) {\n elRef.nativeElement.removeAttribute(attribute);\n } else {\n elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);\n }\n }\n }\n });\n\n subscriptions.push({ attributes, subscription });\n };\n\n const remove = (...attributes: string[]) => {\n for (const attribute of attributes) {\n const sub = subscriptions.find((s) => s.attributes.includes(attribute));\n const attributeStack = pushedAttributes.find((a) => a.includes(attribute));\n\n if (sub) {\n sub.attributes = sub.attributes.filter((a) => a !== attribute);\n attributeStack?.splice(attributeStack.indexOf(attribute), 1);\n\n if (sub.attributes.length === 0) {\n sub.subscription.unsubscribe();\n subscriptions.splice(subscriptions.indexOf(sub), 1);\n }\n }\n }\n };\n\n const reset = () => {\n for (const attribute in defaults) {\n if (defaults[attribute] === undefined) {\n rootElementRef.nativeElement.removeAttribute(attribute);\n } else {\n rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute] as string);\n }\n }\n };\n\n for (const value of values) {\n push(value);\n }\n\n return {\n push,\n remove,\n reset,\n };\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { BehaviorSubject, Observer, Subscription } from 'rxjs';\n\nexport class BehaviorSubjectWithSubscriberCount<T> extends BehaviorSubject<T> {\n private _subscriberCount = 0;\n\n get subscriberCount() {\n return this._subscriberCount;\n }\n\n override subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(\n next?: ((value: T) => void) | null,\n error?: ((error: any) => void) | null,\n complete?: (() => void) | null,\n ): Subscription;\n override subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | undefined): Subscription;\n override subscribe(observerOrNext: any) {\n this._subscriberCount++;\n\n const sub = super.subscribe(observerOrNext);\n\n return {\n ...sub,\n unsubscribe: () => {\n sub.unsubscribe();\n this._subscriberCount--;\n },\n };\n }\n\n override unsubscribe() {\n this._subscriberCount--;\n\n return super.unsubscribe();\n }\n}\n","export const elementCanScroll = (element: HTMLElement) => {\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nexport interface IsElementVisibleOptions {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n}\n\nexport interface CurrentElementVisibility {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n}\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n let { container } = options;\n const { element } = options;\n\n if (!element || container === null) {\n return null;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return { inline: true, block: true };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elementInlineEnd = elementInlineStart + elementRect.width;\n const elementBlockEnd = elementBlockStart + elementRect.height;\n\n const containerInlineEnd = containerInlineStart + containerRect.width;\n const containerBlockEnd = containerBlockStart + containerRect.height;\n\n const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;\n const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;\n\n return { inline: isElementInlineVisible, block: isElementBlockVisible };\n};\n\nexport interface ScrollToElementOptions {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * @default document.documentElement\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n}\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n let { container } = options;\n const {\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || container === null) {\n return;\n }\n\n container ||= document.documentElement;\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return;\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const elementInlineSize = elementRect.width;\n const elementBlockSize = elementRect.height;\n\n const containerInlineSize = containerRect.width;\n const containerBlockSize = containerRect.height;\n\n const elementInlineStart = elementRect.left;\n const elementBlockStart = elementRect.top;\n\n const containerInlineStart = containerRect.left;\n const containerBlockStart = containerRect.top;\n\n const elementInlineEnd = elementInlineStart + elementInlineSize;\n const elementBlockEnd = elementBlockStart + elementBlockSize;\n\n const containerInlineEnd = containerInlineStart + containerInlineSize;\n const containerBlockEnd = containerBlockStart + containerBlockSize;\n\n const elementInlineCenter = elementInlineStart + elementInlineSize / 2;\n const elementBlockCenter = elementBlockStart + elementBlockSize / 2;\n\n const containerInlineCenter = containerInlineStart + containerInlineSize / 2;\n const containerBlockCenter = containerBlockStart + containerBlockSize / 2;\n\n const elementInlineOrigin =\n origin === 'center' ? elementInlineCenter : origin === 'end' ? elementInlineEnd : elementInlineStart;\n const elementBlockOrigin =\n origin === 'center' ? elementBlockCenter : origin === 'end' ? elementBlockEnd : elementBlockStart;\n\n const containerInlineOrigin =\n origin === 'center' ? containerInlineCenter : origin === 'end' ? containerInlineEnd : containerInlineStart;\n const containerBlockOrigin =\n origin === 'center' ? containerBlockCenter : origin === 'end' ? containerBlockEnd : containerBlockStart;\n\n const inlineOffset = elementInlineOrigin - containerInlineOrigin - scrollInlineMargin;\n const blockOffset = elementBlockOrigin - containerBlockOrigin - scrollBlockMargin;\n\n let inlineScroll: number | undefined = direction === 'block' ? undefined : inlineOffset;\n let blockScroll: number | undefined = direction === 'inline' ? undefined : blockOffset;\n\n if (origin === 'nearest') {\n const elVisible = isElementVisible({ element, container });\n\n if (elVisible?.inline && elVisible?.block) {\n return;\n }\n\n if (elVisible?.inline) {\n inlineScroll = undefined;\n }\n\n if (elVisible?.block) {\n blockScroll = undefined;\n }\n }\n\n container.scrollTo({\n left: inlineScroll,\n top: blockScroll,\n behavior,\n });\n};\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { ScrollStrategy } from '@angular/cdk/overlay';\nimport { supportsScrollBehavior } from '@angular/cdk/platform';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { skip, Subscription, take, tap } from 'rxjs';\nimport { RouterStateService } from '../services';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n\nexport class SmartBlockScrollStrategy implements ScrollStrategy {\n private _previousHTMLStyles = { top: '', left: '' };\n private _previousScrollPosition: { top: number; left: number } = { top: 0, left: 0 };\n private _isEnabled = false;\n private _document: Document;\n private _urlSubscription: Subscription | null = null;\n private _didNavigate = false;\n\n constructor(private _viewportRuler: ViewportRuler, private _routerState: RouterStateService, document: Document) {\n this._document = document;\n }\n\n attach() {\n // noop\n }\n\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n this._didNavigate = false;\n\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n\n this._urlSubscription = this._routerState.route$\n .pipe(\n skip(1),\n take(1),\n tap(() => {\n this._didNavigate = true;\n }),\n )\n .subscribe();\n }\n }\n\n disable() {\n if (this._isEnabled) {\n this._urlSubscription?.unsubscribe();\n\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n\n this._isEnabled = false;\n\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n\n if (!this._didNavigate) {\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n }\n\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n\n private _canBeEnabled(): boolean {\n const html = this._document.documentElement;\n\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n\n return true;\n }\n}\n","import { VIEWPORT_CONFIG } from '../constants';\nimport { ViewportConfig } from '../types';\n\nexport const provideViewportConfig = (\n viewportConfig: ViewportConfig,\n): { provide: typeof VIEWPORT_CONFIG; useValue: typeof viewportConfig } => {\n return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };\n};\n","import { inject, Injectable } from '@angular/core';\nimport { Data, NavigationEnd, Params, Router } from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n pairwise,\n} from 'rxjs';\nimport { equal } from '../utils';\n\nexport const routerDisableScrollTop = (config: { asReturnRoute?: boolean } = {}) => {\n if (!config.asReturnRoute) {\n return {\n disableScrollTop: true,\n };\n }\n\n return {\n disableScrollTopAsReturnRoute: true,\n };\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RouterStateService {\n private _isScrollTopOnNavigationEnabled = false;\n private readonly _router = inject(Router);\n\n private readonly _route$ = new BehaviorSubject('/');\n\n private readonly _state$ = new BehaviorSubject<{\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n }>({\n title: null,\n fragment: null,\n data: {},\n pathParams: {},\n queryParams: {},\n });\n\n get route$() {\n return this._route$.asObservable();\n }\n\n get state$() {\n return this._state$.asObservable();\n }\n\n constructor() {\n this._router.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n distinctUntilChanged((a, b) => a.url === b.url),\n map((event) => {\n const { url } = event;\n\n const urlWithoutQueryParams = url.split('?')[0];\n const withoutFragment = urlWithoutQueryParams.split('#')[0];\n\n return withoutFragment;\n }),\n )\n .subscribe(this._route$);\n\n this._route$\n .pipe(\n map(() => {\n let route = this._router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n }),\n )\n .subscribe(this._state$);\n }\n\n enableScrollEnhancements(\n config: {\n scrollElement?: HTMLElement;\n queryParamTriggerList?: string[];\n fragment?: {\n enabled?: boolean;\n smooth?: boolean;\n };\n } = {},\n ) {\n if (this._isScrollTopOnNavigationEnabled) {\n return;\n }\n\n this._isScrollTopOnNavigationEnabled = true;\n\n combineLatest([this._state$.pipe(pairwise()), this._route$.pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute && equal(prevState.pathParams, currState.pathParams);\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n if (\n !(currState.data['disableScrollTopAsReturnRoute'] && prevState.data['disableScrollTop']) &&\n !currState.data['disableScrollTop']\n ) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n }\n }\n });\n }\n\n selectQueryParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.queryParams[key]));\n }\n\n selectPathParam<T = string | undefined>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.pathParams[key]));\n }\n\n selectData<T = unknown>(key: string): Observable<T> {\n return this._state$.pipe(map((state) => state.data[key]));\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, map, Observable, shareReplay } from 'rxjs';\nimport { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';\nimport { Memo } from '../decorators';\nimport { Breakpoint, ViewportConfig } from '../types';\nimport { BuildMediaQueryOptions } from './viewport.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ViewportService {\n private _viewportConfig: ViewportConfig;\n\n private _isXs$ = new BehaviorSubject(false);\n private _isSm$ = new BehaviorSubject(false);\n private _isMd$ = new BehaviorSubject(false);\n private _isLg$ = new BehaviorSubject(false);\n private _isXl$ = new BehaviorSubject(false);\n private _is2Xl$ = new BehaviorSubject(false);\n\n get isXs$() {\n return this._isXs$.asObservable();\n }\n\n get isXs() {\n return this._isXs$.value;\n }\n\n get isSm$() {\n return this._isSm$.asObservable();\n }\n\n get isSm() {\n return this._isSm$.value;\n }\n\n get isMd$() {\n return this._isMd$.asObservable();\n }\n\n get isMd() {\n return this._isMd$.value;\n }\n\n get isLg$() {\n return this._isLg$.asObservable();\n }\n\n get isLg() {\n return this._isLg$.value;\n }\n\n get isXl$() {\n return this._isXl$.asObservable();\n }\n\n get isXl() {\n return this._isXl$.value;\n }\n\n get is2Xl$() {\n return this._is2Xl$.asObservable();\n }\n\n get is2Xl() {\n return this._is2Xl$.value;\n }\n\n currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(\n map((val) => this.getCurrentViewport(val)),\n shareReplay(1),\n );\n\n get currentViewport() {\n return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);\n }\n\n constructor(\n @Inject(VIEWPORT_CONFIG) @Optional() _viewportConfig: ViewportConfig | null,\n private _breakpointObserver: BreakpointObserver,\n ) {\n this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;\n this._observeDefaultBreakpoints();\n }\n\n observe(options: { min?: number | Breakpoint; max?: number | Breakpoint }): Observable<boolean> {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n shareReplay(1),\n );\n }\n\n isMatched(options: { min?: number | Breakpoint; max?: number | Breakpoint }): boolean {\n const mediaQuery = this._buildMediaQuery(options);\n\n return this._breakpointObserver.isMatched(mediaQuery);\n }\n\n private _observeDefaultBreakpoints() {\n this.observe({ max: 'xs' }).subscribe(this._isXs$);\n this.observe({ min: 'sm', max: 'sm' }).subscribe(this._isSm$);\n this.observe({ min: 'md', max: 'md' }).subscribe(this._isMd$);\n this.observe({ min: 'lg', max: 'lg' }).subscribe(this._isLg$);\n this.observe({ min: 'xl', max: 'xl' }).subscribe(this._isXl$);\n this.observe({ min: '2xl' }).subscribe(this._is2Xl$);\n }\n\n @Memo()\n private _getViewportSize(type: Breakpoint, option: 'min' | 'max') {\n const index = option === 'min' ? 0 : 1;\n const size = this._viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n }\n\n @Memo({\n resolver: (v: BuildMediaQueryOptions) => {\n return `${v.min ?? ''}-${v.max ?? ''}`;\n },\n })\n private _buildMediaQuery(options: BuildMediaQueryOptions) {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${this._getViewportSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${this._getViewportSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n }\n\n private getCurrentViewport([isXs, isSm, isMd, isLg, isXl, is2Xl]: [\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n boolean,\n ]): Breakpoint {\n if (isXs) {\n return 'xs';\n } else if (isSm) {\n return 'sm';\n } else if (isMd) {\n return 'md';\n } else if (isLg) {\n return 'lg';\n } else if (isXl) {\n return 'xl';\n } else if (is2Xl) {\n return '2xl';\n }\n\n return 'xs';\n }\n}\n","import { Directive, ElementRef, inject, InjectionToken, Input, isDevMode, OnInit } from '@angular/core';\nimport {\n BehaviorSubject,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n skip,\n Subject,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { DestroyService } from '../../services';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n standalone: true,\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n DestroyService,\n ],\n})\nexport class AnimatableDirective implements OnInit {\n private _didEmitStart = false;\n\n private readonly _parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private readonly _animationStart$ = new Subject<void>();\n private readonly _animationEnd$ = new Subject<void>();\n\n @Input('etAnimatable')\n set animatedElement(value: string | HTMLElement | null | undefined) {\n let newElement: HTMLElement | null = null;\n if (value === null || value === undefined) {\n newElement = this._elementRef.nativeElement;\n } else if (typeof value === 'string') {\n const el = document.querySelector(value) as HTMLElement;\n\n if (el) {\n newElement = el;\n } else {\n if (isDevMode()) {\n console.warn(`Element with selector ${value} not found. Animatable directive will use host element.`);\n }\n\n newElement = this._elementRef.nativeElement;\n }\n } else {\n newElement = value;\n }\n\n if (this._animatedElement$.value !== newElement) {\n this._animatedElement$.next(newElement);\n }\n }\n private _animatedElement$ = new BehaviorSubject<HTMLElement>(this._elementRef.nativeElement);\n\n readonly animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));\n readonly animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));\n\n private readonly _hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n private readonly _totalActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n readonly isAnimating$: Observable<boolean> = this._totalActiveAnimationCount$.pipe(\n map((count) => count > 0),\n debounceTime(0),\n );\n\n ngOnInit(): void {\n this._animatedElement$\n .pipe(\n tap((el) => {\n this._totalActiveAnimationCount$.next(\n this._totalActiveAnimationCount$.value - this._hostActiveAnimationCount$.value,\n );\n this._hostActiveAnimationCount$.next(0);\n\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart'))\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value + 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n\n merge(\n fromEvent<AnimationEvent>(el, 'animationend'),\n fromEvent<AnimationEvent>(el, 'animationcancel'),\n fromEvent<TransitionEvent>(el, 'transitionend'),\n fromEvent<TransitionEvent>(el, 'transitioncancel'),\n )\n .pipe(\n filter((e) => e.target === el), // skip events from children\n tap(() => {\n const count = this._hostActiveAnimationCount$.value - 1;\n this._hostActiveAnimationCount$.next(count);\n this._totalActiveAnimationCount$.next(count);\n }),\n takeUntil(this._destroy$),\n takeUntil(this._animatedElement$.pipe(skip(1))),\n )\n .subscribe();\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._totalActiveAnimationCount$\n .pipe(\n tap((count) => {\n if (count > 0 && !this._didEmitStart) {\n this._animationStart$.next();\n this._didEmitStart = true;\n } else if (count === 0) {\n this._animationEnd$.next();\n this._didEmitStart = false;\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n if (this._parent) {\n this._parent._hostActiveAnimationCount$\n .pipe(\n takeUntil(this._destroy$),\n tap((count) => {\n this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);\n }),\n )\n .subscribe();\n }\n }\n}\n","import { Directive, ElementRef, inject, InjectionToken, isDevMode } from '@angular/core';\nimport { BehaviorSubject, map, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { DestroyService } from '../../services';\nimport { createReactiveBindings, forceReflow, fromNextFrame } from '../../utils';\nimport { AnimatableDirective, ANIMATABLE_TOKEN } from '../animatable';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n} as const;\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n standalone: true,\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n DestroyService,\n ],\n hostDirectives: [AnimatableDirective],\n})\nexport class AnimatedLifecycleDirective {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _animatable = inject(ANIMATABLE_TOKEN);\n private readonly _classList = this._elementRef.nativeElement.classList;\n\n private _state$ = new BehaviorSubject<'entering' | 'entered' | 'leaving' | 'left' | 'init'>('init');\n readonly state$ = this._state$.asObservable();\n\n get state() {\n return this._state$.value;\n }\n\n private readonly _bindings = createReactiveBindings({\n attribute: 'class.et-force-invisible',\n observable: this._state$.pipe(map((state) => state === 'init')),\n });\n\n enter(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'init' && this.state !== 'left' && isDevMode()) {\n console.warn(\n 'Tried to enter but the element is not in the initial state. This may result in unexpected behavior.',\n this,\n );\n }\n\n this._state$.next('entering');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.enterFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.enterActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.add(ANIMATION_CLASSES.enterTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n this._state$.next('entered');\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n\n leave(config?: { onlyTransition?: boolean }) {\n if (this.state !== 'entered' && this.state !== 'entering' && isDevMode()) {\n console.warn('Tried to leave while already leaving or left. This may result in unexpected behavior.', this);\n }\n\n if (\n this._classList.contains(ANIMATION_CLASSES.enterFrom) ||\n this._classList.contains(ANIMATION_CLASSES.enterActive) ||\n this._classList.contains(ANIMATION_CLASSES.enterTo)\n ) {\n this._classList.remove(ANIMATION_CLASSES.enterFrom);\n this._classList.remove(ANIMATION_CLASSES.enterActive);\n this._classList.remove(ANIMATION_CLASSES.enterTo);\n }\n\n this._state$.next('leaving');\n\n if (!config?.onlyTransition) {\n this._classList.add(ANIMATION_CLASSES.leaveFrom);\n }\n\n forceReflow();\n this._classList.add(ANIMATION_CLASSES.leaveActive);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveFrom);\n this._classList.add(ANIMATION_CLASSES.leaveTo);\n }\n }),\n switchMap(() => this._animatable.animationEnd$),\n tap(() => {\n this._state$.next('left');\n this._classList.remove(ANIMATION_CLASSES.leaveActive);\n\n if (!config?.onlyTransition) {\n this._classList.remove(ANIMATION_CLASSES.leaveTo);\n }\n }),\n takeUntil(this._destroy$),\n take(1),\n )\n .subscribe();\n }\n}\n","import { Directive, ElementRef, EventEmitter, inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClickObserverService } from '../../services';\n\n@Directive({\n selector: '[etClickOutside]',\n standalone: true,\n})\nexport class ClickOutsideDirective implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _clickObserverService = inject(ClickObserverService);\n\n private _subscription: Subscription | null = null;\n\n @Output()\n etClickOutside = new EventEmitter<MouseEvent>();\n\n ngOnInit(): void {\n setTimeout(() => {\n this._subscription = this._clickObserverService.observe(this._elementRef.nativeElement).subscribe((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this._elementRef.nativeElement.contains(activeElement);\n\n if (!isInside) {\n this.etClickOutside.emit(event);\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this._subscription?.unsubscribe();\n }\n}\n","export const CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nexport const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = 'et-cursor-drag-scroll--prepared';\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, ElementRef, inject, Input } from '@angular/core';\nimport { combineLatest, debounceTime, fromEvent, startWith, Subject, Subscription, take, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { elementCanScroll } from '../../utils';\nimport { CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS } from './cursor-drag-scroll.constants';\n\n@Directive({\n selector: '[etCursorDragScroll]',\n exportAs: 'etCursorDragScroll',\n standalone: true,\n providers: [DestroyService],\n})\nexport class CursorDragScrollDirective implements AfterViewInit {\n private readonly _subscriptions: Subscription[] = [];\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _bufferUntilScroll = 5;\n private readonly _mouseUp$ = new Subject<boolean>();\n\n private _isScrolling = false;\n private _canScroll = false;\n\n private _currentScrollState = {\n top: 0,\n left: 0,\n x: 0,\n y: 0,\n };\n\n @Input('etCursorDragScroll')\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(value: BooleanInput) {\n this._enabled = coerceBooleanProperty(value);\n\n if (this._enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n private _enabled = false;\n\n ngAfterViewInit(): void {\n if (this.enabled) {\n this._enableCursorDragScroll();\n } else {\n this._disableCursorDragScroll();\n }\n }\n\n private _enableCursorDragScroll() {\n const contentResizeSub = combineLatest([\n this._contentObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n this._resizeObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),\n ])\n .pipe(\n debounceTime(25),\n tap(() => this._updateCanScrollState()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n const mousedownSub = fromEvent<MouseEvent>(this._elementRef.nativeElement, 'mousedown')\n .pipe(\n tap((e) => this._onMouseDown(e)),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._subscriptions.push(contentResizeSub, mousedownSub);\n\n this._updateCanScrollState();\n }\n\n private _disableCursorDragScroll() {\n this._subscriptions.forEach((sub) => sub.unsubscribe());\n this._subscriptions.length = 0;\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n\n private _onMouseDown(e: MouseEvent) {\n if (!this._elementRef?.nativeElement || !this._canScroll) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n element.classList.add(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n\n this._elementRef.nativeElement.style.scrollSnapType = 'none';\n this._elementRef.nativeElement.style.scrollBehavior = 'unset';\n\n this._currentScrollState = {\n left: this._elementRef.nativeElement.scrollLeft,\n top: this._elementRef.nativeElement.scrollTop,\n x: e.clientX,\n y: e.clientY,\n };\n\n fromEvent<MouseEvent>(document, 'mousemove')\n .pipe(\n tap((e) => this._mouseMoveHandler(e)),\n takeUntil(this._mouseUp$),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(\n tap(() => this._mouseUpHandler()),\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n private _mouseMoveHandler(e: MouseEvent) {\n e.preventDefault();\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n const dx = e.clientX - this._currentScrollState.x;\n const dy = e.clientY - this._currentScrollState.y;\n\n if (Math.abs(dx) > this._bufferUntilScroll || Math.abs(dy) > this._bufferUntilScroll) {\n const element = this._elementRef.nativeElement;\n\n if (!this._isScrolling) {\n this._isScrolling = true;\n\n element.style.cursor = 'grabbing';\n element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);\n element.scroll({\n top: this._currentScrollState.top - dy,\n left: this._currentScrollState.left - dx,\n behavior: 'smooth',\n });\n } else {\n element.scrollTop = this._currentScrollState.top - dy;\n element.scrollLeft = this._currentScrollState.left - dx;\n }\n }\n }\n\n private _mouseUpHandler() {\n this._mouseUp$.next(true);\n this._isScrolling = false;\n\n if (!this._elementRef?.nativeElement) {\n return;\n }\n\n this._elementRef.nativeElement.style.scrollSnapType = '';\n this._elementRef.nativeElement.style.scrollBehavior = '';\n\n this._elementRef.nativeElement.style.cursor = 'grab';\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_CLASS);\n this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);\n }\n\n private _updateCanScrollState() {\n this._canScroll = elementCanScroll(this._elementRef.nativeElement);\n\n if (this._canScroll) {\n this._elementRef.nativeElement.style.cursor = 'grab';\n } else {\n this._elementRef.nativeElement.style.cursor = 'default';\n }\n }\n}\n","export class LetContext<T = unknown> {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public $implicit: T = null!;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n public etLet: T = null!;\n}\n","import { Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { LetContext } from './let.types';\n\n@Directive({\n selector: '[etLet]',\n standalone: true,\n})\nexport class LetDirective<T = unknown> {\n @Input()\n set etLet(value: T) {\n this._context.$implicit = this._context.etLet = value;\n this._updateView();\n }\n\n static ngTemplateGuard_ngLet: 'binding';\n\n private _context: LetContext<T> = new LetContext<T>();\n private _templateRef: TemplateRef<LetContext<T>> | null = null;\n private _viewRef: EmbeddedViewRef<LetContext<T>> | null = null;\n\n constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<LetContext<T>>) {\n this._templateRef = templateRef;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static ngTemplateContextGuard<T>(dir: LetDirective<T>, ctx: any): ctx is LetContext<T> {\n return true;\n }\n\n private _updateView() {\n if (!this._viewRef) {\n this._viewContainer.clear();\n if (this._templateRef) {\n this._viewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);\n }\n }\n }\n}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { ContentObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveContent]',\n exportAs: 'etObserveContent',\n standalone: true,\n})\nexport class ObserveContentDirective implements AfterContentInit, OnDestroy {\n private _contentObserver = inject(ContentObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveContent')\n readonly valueChange = new EventEmitter<MutationRecord[]>();\n\n @Input('etObserveContentDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveContentDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n} from '@angular/core';\nimport { debounceTime, Subscription } from 'rxjs';\nimport { ResizeObserverService } from '../../services';\n\n@Directive({\n selector: '[etObserveResize]',\n exportAs: 'etObserveResize',\n standalone: true,\n})\nexport class ObserveResizeDirective implements AfterContentInit, OnDestroy {\n private _resizeObserver = inject(ResizeObserverService);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n @Output('etObserveResize')\n // eslint-disable-next-line @angular-eslint/no-output-native\n readonly valueChange = new EventEmitter<ResizeObserverEntry[]>();\n\n @Input('etObserveResizeDisabled')\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n private _disabled = false;\n\n @Input('etObserveResizeDebounce')\n get debounce(): number | null {\n return this._debounce;\n }\n set debounce(value: NumberInput) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n private _debounce: number | null = null;\n\n private _currentSubscription: Subscription | null = null;\n\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n\n ngOnDestroy() {\n this._unsubscribe();\n }\n\n private _subscribe() {\n this._unsubscribe();\n const stream = this._resizeObserver.observe(this._elementRef);\n\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(\n this.valueChange,\n );\n });\n }\n\n private _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } from '@angular/core';\n\nexport const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = 'et-scroll-observer-first-element';\n\n@Directive({\n selector: '[etScrollObserverFirstElement]',\n standalone: true,\n})\nexport class ScrollObserverFirstElementDirective {\n @Input('etScrollObserverFirstElement')\n @HostBinding(`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`)\n get isFirstElement(): boolean {\n return this._isFirstElement;\n }\n set isFirstElement(value: BooleanInput) {\n this._isFirstElement = coerceBooleanProperty(value);\n }\n private _isFirstElement = false;\n}\n","import { Directive } from '@angular/core';\n\nexport const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';\n\n@Directive({\n selector: '[etScrollObserverIgnoreTarget]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_IGNORE_TARGET_CLASS,\n },\n})\nexport class ScrollObserverIgnoreTargetDirective {}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, HostBinding, Input } from '@angular/core';\n\nexport const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = 'et-scroll-observer-last-element';\n\n@Directive({\n selector: '[etScrollObserverLastElement]',\n standalone: true,\n host: {\n class: SCROLL_OBSERVER_LAST_ELEMENT_CLASS,\n },\n})\nexport class ScrollObserverLastElementDirective {\n @Input('etScrollObserverLastElement')\n @HostBinding(`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`)\n get isLastElement(): boolean {\n return this._isLastElement;\n }\n set isLastElement(value: BooleanInput) {\n this._isLastElement = coerceBooleanProperty(value);\n }\n private _isLastElement = false;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ObserveScrollStateDirective } from './observe-scroll-state.directive';\n\nexport const OBSERVE_SCROLL_STATE = new InjectionToken<ObserveScrollStateDirective>('OBSERVE_SCROLL_STATE');\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { debounceTime, takeUntil, tap } from 'rxjs';\nimport { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';\nimport { elementCanScroll } from '../../utils';\nimport { SCROLL_OBSERVER_FIRST_ELEMENT_CLASS } from '../scroll-observer-first-element';\nimport { SCROLL_OBSERVER_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';\nimport { SCROLL_OBSERVER_LAST_ELEMENT_CLASS } from '../scroll-observer-last-element';\nimport { OBSERVE_SCROLL_STATE } from './observe-scroll-state.constants';\nimport { ObservedScrollableChild, ScrollObserverScrollState } from './observe-scroll-state.types';\n\n@Directive({\n selector: '[etObserveScrollState]',\n exportAs: 'etObserveScrollState',\n standalone: true,\n providers: [\n {\n provide: OBSERVE_SCROLL_STATE,\n useExisting: ObserveScrollStateDirective,\n },\n DestroyService,\n ],\n})\nexport class ObserveScrollStateDirective implements OnInit, OnDestroy {\n private readonly _destroy$ = inject(DestroyService, { host: true }).destroy$;\n\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _contentObserverService = inject(ContentObserverService);\n private readonly _resizeObserverService = inject(ResizeObserverService);\n\n private readonly _observedChildren = {\n first: this._firstCurrentChild,\n last: this._lastCurrentChild,\n };\n\n private get _firstCurrentChild() {\n const explicitFirstElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitFirstElement) {\n return explicitFirstElement;\n }\n\n const element = this._elementRef.nativeElement.children[0] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'next');\n }\n\n private get _lastCurrentChild() {\n const explicitLastElement = this._elementRef.nativeElement.querySelector(\n `.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`,\n ) as HTMLElement | null;\n\n if (explicitLastElement) {\n return explicitLastElement;\n }\n\n const element = this._elementRef.nativeElement.children[\n this._elementRef.nativeElement.children.length - 1\n ] as HTMLElement | null;\n\n return this._getNonIgnoredChild(element, 'previous');\n }\n\n @Input()\n get observerRootMargin(): number {\n return this._rootMargin;\n }\n set observerRootMargin(value: NumberInput) {\n this._rootMargin = coerceNumberProperty(value);\n }\n private _rootMargin = 0;\n\n @Input()\n get observerThreshold(): number | number[] {\n return this._threshold;\n }\n set observerThreshold(value: NumberInput | number[]) {\n if (Array.isArray(value)) {\n this._threshold = value;\n return;\n }\n\n this._threshold = coerceNumberProperty(value);\n }\n private _threshold: number | number[] = [0.99999, 0.9999, 0.999, 0.99, 1];\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n @Output('etObserveScrollState')\n valueChange = new EventEmitter<ScrollObserverScrollState>();\n\n ngOnInit(): void {\n this._contentObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => this._checkChildren()),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._resizeObserverService\n .observe(this._elementRef.nativeElement)\n .pipe(\n debounceTime(25),\n tap(() => {\n const canScroll = elementCanScroll(this._elementRef.nativeElement);\n if ((!this._intersectionObserver && canScroll) || (this._intersectionObserver && !canScroll)) {\n this._checkChildren();\n }\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this._checkChildren();\n }\n\n ngOnDestroy(): void {\n this._clearIntersectionObserver();\n }\n\n private _checkChildren() {\n this._clearIntersectionObserver();\n\n if (\n this._firstCurrentChild === this._lastCurrentChild ||\n !this._firstCurrentChild ||\n !this._lastCurrentChild ||\n !elementCanScroll(this._elementRef.nativeElement)\n ) {\n this._unobserveChild('first');\n this._unobserveChild('last');\n\n this.valueChange.emit({\n isAtStart: true,\n isAtEnd: true,\n canScroll: false,\n });\n } else {\n this._intersectionObserver = this._initiateIntersectionObserver();\n\n this._observeChild('first', this._firstCurrentChild);\n this._observeChild('last', this._lastCurrentChild);\n }\n }\n\n private _initiateIntersectionObserver() {\n const observer = new IntersectionObserver(\n (entries) => {\n const { first, last } = this._observedChildren;\n\n const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;\n const isAtEnd = entries.find((entry) => entry.target === last)?.isIntersecting ?? false;\n\n this.valueChange.emit({\n isAtStart,\n isAtEnd,\n canScroll: !isAtStart || !isAtEnd,\n });\n },\n {\n root: this._elementRef.nativeElement,\n rootMargin: this._rootMargin ? `${this._rootMargin}px` : undefined,\n threshold: this._threshold,\n },\n );\n\n return observer;\n }\n\n private _observeChild(child: ObservedScrollableChild, element: HTMLElement) {\n this._intersectionObserver?.observe(element);\n this._observedChildren[child] = element;\n\n element.classList.add(`et-scroll-observer-observing-${child}-element`);\n }\n\n private _unobserveChild(child: ObservedScrollableChild) {\n const observedChild = this._observedChildren[child];\n\n if (!observedChild) {\n return;\n }\n\n observedChild.classList.remove(\n 'et-scroll-observer-observing-first-element',\n 'et-scroll-observer-observing-last-element',\n );\n\n this._intersectionObserver?.unobserve(observedChild);\n this._observedChildren[child] = null;\n }\n\n private _clearIntersectionObserver() {\n this._intersectionObserver?.disconnect();\n this._intersectionObserver = null;\n }\n\n private _getNonIgnoredChild(element: HTMLElement | null, direction: 'previous' | 'next'): HTMLElement | null {\n if (!element) {\n return null;\n }\n\n if (element?.classList.contains(SCROLL_OBSERVER_IGNORE_TARGET_CLASS)) {\n const nextElement = element[`${direction}ElementSibling`] as HTMLElement | null;\n\n if (!nextElement) {\n return null;\n }\n\n return this._getNonIgnoredChild(nextElement, direction);\n }\n\n return element;\n }\n}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n standalone: true,\n})\nexport class RepeatDirective {\n @Input('etRepeat')\n get repeatCount(): number {\n return this._repeatCount;\n }\n set repeatCount(value: NumberInput) {\n this._repeatCount = coerceNumberProperty(value);\n this._render();\n }\n private _repeatCount = 2;\n\n constructor(private _mainTemplateRef: TemplateRef<unknown>, private _viewContainerRef: ViewContainerRef) {}\n\n private _render() {\n this._viewContainerRef.clear();\n\n for (let i = 0; i < this.repeatCount; i++) {\n this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SeoDirective } from './seo.directive';\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n","import { SeoConfig } from './seo.directive.types';\n\nexport const mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n","import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { SEO_DIRECTIVE_TOKEN } from './seo.directive.constants';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\nimport { mergeSeoConfig } from './seo.directive.utils';\n\n@Directive({\n standalone: true,\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n // TODO(TRB): This should get split up into multiple methods to make it more readable\n // - updateTitle\n // - updateMeta\n // - updateLink\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","import { NormalizedGameResultType } from './normalize-game-result-type.types';\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeGameResultType } from './normalize-game-result-type.util';\n\n@Pipe({ name: 'etNormalizeGameResultType', standalone: true })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-state.constants';\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchState } from './normalize-match-state.util';\n\n@Pipe({ name: 'etNormalizeMatchState', standalone: true })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n","import { MatchListView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchParticipant, NormalizedMatchParticipants } from './normalize-match-participants.types';\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchParticipants } from './normalize-match-participants.util';\n\n@Pipe({ name: 'etNormalizeMatchParticipants', standalone: true })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n","import { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { MatchStateType, normalizeMatchState } from '../normalize-match-state';\nimport { NormalizedMatchScore } from './normalize-match-score.types';\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchScore } from './normalize-match-score.util';\n\n@Pipe({ name: 'etNormalizeMatchScore', standalone: true })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n","import { StageType } from '@ethlete/types';\nimport { Translatable } from '../../types';\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { normalizeMatchType } from './normalize-match-type.util';\n\n@Pipe({ name: 'etNormalizeMatchType', standalone: true })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n","import { TrackByFunction } from '@angular/core';\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { toArray } from './to-array.util';\n\n@Pipe({ name: 'toArray', standalone: true })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n","import { QueryList } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type NgClassType =\n | string\n | string[]\n | Set<string>\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [klass: string]: any;\n }\n | null\n | undefined;\n\nexport class TypedQueryList<T> extends QueryList<T | undefined> {\n override [Symbol.iterator]: () => Iterator<T> = () => {\n return super[Symbol.iterator]() as Iterator<T>;\n };\n\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n\n override toArray(): T[] {\n return super.toArray() as T[];\n }\n\n override forEach(fn: (item: T, index: number, array: T[]) => void): void {\n super.forEach(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => void);\n }\n\n override filter(fn: (item: T, index: number, array: T[]) => boolean): T[] {\n return super.filter(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => boolean) as T[];\n }\n\n override map<U>(fn: (item: T, index: number, array: T[]) => U): U[] {\n return super.map(fn as (item: T | undefined, index: number, array: (T | undefined)[]) => U);\n }\n\n override reduce<U>(\n fn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U,\n initialValue: U,\n ): U {\n return super.reduce(\n fn as (previousValue: U, currentValue: T | undefined, currentIndex: number, array: (T | undefined)[]) => U,\n initialValue,\n );\n }\n\n override some(fn: (value: T, index: number, array: T[]) => boolean): boolean {\n return super.some(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n\n override find(fn: (value: T, index: number, array: T[]) => boolean): T | undefined {\n return super.find(fn as (value: T | undefined, index: number, array: (T | undefined)[]) => boolean);\n }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n","import { FormGroup } from '@angular/forms';\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: FormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n\n // set error on matchingControl if validation fails\n if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {\n return;\n }\n\n // set error on matchingControl if validation fails\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ [MUST_MATCH]: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n};\n","import { IsArrayNotEmpty } from './is-array-not-empty.validator';\nimport { IsEmail } from './is-email.validator';\nimport { MustMatch } from './must-match.validator';\n\nexport * from './is-array-not-empty.validator';\nexport * from './is-email.validator';\nexport * from './must-match.validator';\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n} as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnimatableDirective","debounceTime"],"mappings":";;;;;;;;;;;;MAca,uBAAuB,CAAA;AAVpC,IAAA,WAAA,GAAA;AAWmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAepD,KAAA;IAbC,IACI,IAAI,CAAC,YAAgF,EAAA;QACvF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KAC9C;AAKD,IAAA,WAAW,CAAC,KAAyE,EAAA;QACnF,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;AAC/F,QAAA,MAAM,IAAI,GAAG,CAAsC,mCAAA,EAAA,IAAI,WAAW,CAAC;QACnE,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACtD;;oHAfU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+LAPxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAOD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACvB,qBAAA;AACF,iBAAA,CAAA;8BAKK,IAAI,EAAA,CAAA;sBADP,KAAK;gBAMN,MAAM,EAAA,CAAA;sBADL,WAAW;uBAAC,WAAW,CAAA;;;MCnBb,eAAe,GAAG,IAAI,cAAc,CAAiB,gBAAgB,EAAE;AAEpF;;;AAGG;AACU,MAAA,uBAAuB,GAAmB;AACrD,IAAA,WAAW,EAAE;AACX,QAAA,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACZ,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACd,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;AACf,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AACxB,KAAA;;;ACDH,SAAS,OAAO,CAAC,IAAsC,EAAE,QAAsB,EAAE,KAAc,EAAA;AAC7F,IAAA,MAAM,QAAQ,GAAG,UAAyB,GAAG,IAAe,EAAA;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,QAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC;AACjD,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AAEF,IAAA,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;AAEvB,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,eAAe,GAAiB,CAAC,GAAG,IAAe,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhE,MAAA,IAAI,GACf,CAAC,SAAqB,EAAE,KACxB,CAAC,CAAU,EAAE,EAAU,EAAE,UAA8B,KAAwB;AAC7E,IAAA,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE;AAC1C,QAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC/D,KAAA;AAED,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9D,IAAA,OAAO,UAAU,CAAC;AACpB;;ACjDF;MAMa,oBAAoB,CAAA;IAC/B,MAAM,GAAA;AACJ,QAAA,OAAO,SAAS,CAAa,QAAQ,EAAE,OAAO,CAAC,CAAC;KACjD;;iHAHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;MAQrB,oBAAoB,CAAA;AAU/B,IAAA,WAAA,CAAoB,qBAA2C,EAAA;QAA3C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;AATvD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAOhC,CAAC;KAE+D;IAEnE,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KAChF;AAID,IAAA,OAAO,CAAC,YAA2C,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAA8B,KAAI;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhD,YAAA,OAAO,MAAK;gBACV,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAClC,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAc,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;AAErD,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1E,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAA;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,MAAM,CAAC;KACpD;AAEO,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QACxC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AAClE,YAAA,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,WAAW,EAAE,CAAC;AACxB,aAAA;YACD,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,SAAA;KACF;;iHAhEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACZlC;MAMa,uBAAuB,CAAA;AAClC,IAAA,MAAM,CAAC,QAA0B,EAAA;AAC/B,QAAA,OAAO,OAAO,gBAAgB,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;KACxF;;oHAHU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;MAQrB,sBAAsB,CAAA;AAUjC,IAAA,WAAA,CAAoB,wBAAiD,EAAA;QAAjD,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAAyB;AAT7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAOhC,CAAC;KAEqE;IAEzE,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KAChF;AAID,IAAA,OAAO,CAAC,YAA2C,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAoC,KAAI;YAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhD,YAAA,OAAO,MAAK;gBACV,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAClC,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAoB,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7F,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;AACxB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAA;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,MAAM,CAAC;KACpD;AAEO,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QACxC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AAClE,YAAA,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,UAAU,EAAE,CAAC;AACvB,aAAA;YACD,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,SAAA;KACF;;mHApEU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,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,CAAA;;;ACTlC;;AAEG;AACH;MAEa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAW,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAMnD,KAAA;IAJC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KAC9B;;2GARU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCDE,mBAAmB,CAAA;AAK9B,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED,IAAA,WAAA,GAAA;AARiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAW,QAAQ,CAAC,CAAC;QAEhD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAOhC,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;KACpF;AAED,IAAA,SAAS,CAAC,CAAgB,EAAA;QACxB,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE;YACtC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;;gHA1BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACLD;MAMa,qBAAqB,CAAA;AAChC,IAAA,MAAM,CAAC,QAAgC,EAAA;AACrC,QAAA,OAAO,OAAO,cAAc,KAAK,WAAW,GAAG,IAAI,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;KACpF;;kHAHU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,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,CAAA;;MAQrB,qBAAqB,CAAA;AAUhC,IAAA,WAAA,CAAoB,wBAA+C,EAAA;QAA/C,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAAuB;AAT3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAOhC,CAAC;KAEmE;IAEvE,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KAChF;AAID,IAAA,OAAO,CAAC,YAA2C,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAyC,KAAI;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhD,YAAA,OAAO,MAAK;gBACV,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAClC,aAAC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,OAAgB,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAyB,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAA;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,MAAM,CAAC;KACpD;AAEO,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QACxC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,KAAK,EAAE;AAC/C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,OAAgB,EAAA;QACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACvC,YAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;AAClE,YAAA,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,UAAU,EAAE,CAAC;AACvB,aAAA;YACD,MAAM,CAAC,QAAQ,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,SAAA;KACF;;kHAhEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,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,CAAA;;;ACVrB,MAAA,SAAS,GAAG,CAAC,EAAc,KAAI;IAC1C,qBAAqB,CAAC,MAAK;QACzB,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAC5B,KAAC,CAAC,CAAC;AACL,EAAE;AAEK,MAAM,aAAa,GAAG,MAAK;AAChC,IAAA,OAAO,IAAI,UAAU,CAAO,CAAC,QAAQ,KAAI;QACvC,SAAS,CAAC,MAAK;YACb,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,SAAC,CAAC,CAAC;AACL,KAAC,CAAC,CAAC;AACL,EAAE;AAEW,MAAA,WAAW,GAAG,CAAC,UAAuB,QAAQ,CAAC,IAAI,KAAI;IAClE,OAAO,OAAO,CAAC,YAAY,CAAC;AAC9B,EAAE;AAqBW,MAAA,wBAAwB,GAAG,CAAC,MAAgC,KAAI;AAC3E,IAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM,CAAC;IAErF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AAChC,QAAA,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;AAClD,QAAA,MAAM,aAAa,GAAG,eAAe,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC;AAE3E,QAAA,OAAO,mBAAmB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3E,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE/E,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;AACvD,KAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,KAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACnD,KAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,SAAS;KACV,CAAC;AACJ,EAAE;AA2BW,MAAA,mBAAmB,GAAG,CAAC,MAA2B,KAAI;AACjE,IAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM,CAAC;AAE5G,IAAA,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;IACxD,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AACrC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AACtC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEtC,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE,CAAC;QACV,SAAS,CAAC,IAAI,EAAE,CAAC;AACnB,KAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE,CAAC;QACV,SAAS,CAAC,IAAI,EAAE,CAAC;AACnB,KAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;AACR,SAAA;AAED,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC7D,KAAC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACtD,KAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;AAE5C,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACnC,YAAA,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AACjC,YAAA,MAAM,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC1C,YAAA,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;SAC7C,CAAC;AAEF,QAAA,SAAS,GAAG,EAAE,CAAC,OAAO,CACpB;AACE,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE,CAAA;AACC,oBAAA,EAAA,KAAK,CAAC,CAAC,CAAO,IAAA,EAAA,KAAK,CAAC,CAAC,CAAA;AACzB,gBAAA,EAAA,KAAK,CAAC,MAAM,CAAK,EAAA,EAAA,KAAK,CAAC,MAAM,CAAA;AACtC,QAAA,CAAA;AACA,aAAA;AACD,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE,MAAM;AAClB,aAAA;SACF,EACD;YACE,QAAQ;YACR,MAAM;AACN,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF,CAAC;AAEF,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACxD,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAExD,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClB,KAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAK;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;AAEpB,QAAA,OAAO,EAAE,CAAC;AACZ,KAAC,CAAC;IAEF,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;AACN,QAAA,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;AACjC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;AACnC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;KACpC,CAAC;AACJ;;ACzLO,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,KAAI;AACzD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C;;ACFA;AACA;AACA;;;;;;;;;;;;;AAaG;AAEH,MAAM,GAAG,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,GAAQ,KAAI;AAC3C,IAAA,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;QACtG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,KAAA;;AAAM,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AAEW,MAAA,KAAK,GAAG,CAAI,QAAW,KAAO;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,QAAA,OAAO,QAAQ,CAAC;IAElD,IAAI,GAAG,GAAG,QAAe,CAAC;IAE1B,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,EACD,IAAI,EACJ,GAAQ,EACR,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,GAAG,KAAK,iBAAiB,EAAE;QAC7B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AAC5C,KAAA;SAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACnC,QAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzB,KAAA;SAAM,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAA;YAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;AACJ,KAAA;SAAM,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAE,GAAQ,EAAA;AACtC,YAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;AACJ,KAAA;SAAM,IAAI,GAAG,KAAK,eAAe,EAAE;AAClC,QAAA,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACtB,KAAA;SAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACpC,QAAA,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,KAAA;SAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACtC,QAAA,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,KAAA;SAAM,IAAI,GAAG,KAAK,sBAAsB,EAAE;AACzC,QAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,KAAA;SAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;;;QAGrC,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAChC,KAAA;AAED,IAAA,IAAI,GAAG,EAAE;AACP,QAAA,KAAK,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,SAAA;QAED,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;AAClF,YAAA,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,SAAA;AACF,KAAA;IAED,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB;;AC3Ea,MAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;QAC3C,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACzC,KAAC,CAAC,CAAC;AACL,EAAE;AAEW,MAAA,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;;IAGD,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAK,EAAA,EAAA,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,EAAE;AAEW,MAAA,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,aAAa,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,KAAI;AAChG,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC,OAAO;AACR,KAAA;AAED,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACxB,IAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAEnE,IAAA,QAAQ,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAI,CAAA,EAAA,IAAI,CAAqB,kBAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAY,SAAA,EAAA,MAAM,iBAAiB,CAAC;AAC9G,EAAE;AAEK,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,MAAM,GAAG,SAAS,EAAE,KAAI;AAC/E,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM;YACb,IAAI;gBACJ,GAAG;iBACF,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;iBAC5B,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;AACnC,gBAAA,wCAAwC,CAAC;AAC5C,KAAA;AACH,EAAE;AAEK,MAAM,SAAS,GAAG,MAAK;AAC5B,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAE1C,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAClC,QAAA,OAAO,WAAW,CAAC;AACpB,KAAA;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEtC,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAChF,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB;;AC3DA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AAEH,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AAE5C,SAAS,IAAI,CAAC,IAAS,EAAE,GAAQ,EAAE,GAAS,EAAA;AAC1C,IAAA,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACvB,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC;AACjC,KAAA;AACH,CAAC;MAEY,KAAK,GAAG,CAAC,GAAQ,EAAE,GAAQ,KAAI;AAC1C,IAAA,IAAI,IAAS,EAAE,GAAQ,EAAE,GAAQ,CAAC;IAClC,IAAI,GAAG,KAAK,GAAG;AAAE,QAAA,OAAO,IAAI,CAAC;AAE7B,IAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,WAAW,EAAE;QAC9D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1D,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;QAE9D,IAAI,IAAI,KAAK,KAAK,EAAE;YAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE;AACrC,gBAAA,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAC,CAAC;AAC5C,aAAA;AACD,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,SAAA;QAED,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YACD,KAAK,GAAG,IAAI,GAAG,EAAE;gBACf,GAAG,GAAG,GAAG,CAAC;AACV,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK,CAAC;AACxB,iBAAA;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,KAAK,CAAC;AACjC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YACD,KAAK,GAAG,IAAI,GAAG,EAAE;AACf,gBAAA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK,CAAC;AACxB,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAA;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;AAC7C,gBAAA,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAC,CAAC;AACxD,aAAA;AACD,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;;;gBAG7C,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;oBAAC,CAAC;AACxC,aAAA;AACD,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACpC,GAAG,GAAG,CAAC,CAAC;YACR,KAAK,IAAI,IAAI,GAAG,EAAE;gBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAAE,oBAAA,OAAO,KAAK,CAAC;AACvE,gBAAA,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,KAAK,CAAC;AAClE,aAAA;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC;AACxC,SAAA;AACF,KAAA;AAED,IAAA,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC;AACpC;;AChHa,MAAA,0BAA0B,GAAG,CAAC,KAAa,KAAI;IAC1D,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,QAAuC,KAAI;AAC5E,QAAA,MAAM,YAAY,GAAG,CAAC,KAA0B,KAAI;AAClD,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,SAAC,CAAC;AAEF,QAAA,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAE5C,QAAA,OAAO,MAAK;AACV,YAAA,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACjD,SAAC,CAAC;AACJ,KAAC,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM;QACpB,OAAO;QACP,KAAK;KACN,CAAC,CAAC,CACJ,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC;AACpB;;ACPA,MAAM,wBAAwB,GAAG,CAC/B,KAAqD,KACjB,OAAO,KAAK,KAAK,SAAS,CAAC;AACjE,MAAM,uBAAuB,GAAG,CAC9B,KAAqD,KAClB,OAAO,KAAK,KAAK,QAAQ,CAAC;MAQlD,sBAAsB,GAAG,CAAC,GAAG,MAA4B,KAA2B;AAC/F,IAAA,MAAM,cAAc,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AACnE,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;IAEjE,MAAM,aAAa,GAA2D,EAAE,CAAC;IACjF,MAAM,gBAAgB,GAAe,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAuC,EAAE,CAAC;AAExD,IAAA,MAAM,IAAI,GAAG,CAAC,KAAyB,KAAI;QACzC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,UAAU,IAAI,cAAc,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;AACtE,QAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAElC,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACxB,gBAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AAChF,aAAA;AACF,SAAA;QAED,MAAM,YAAY,GAAG,UAAU;AAC5B,aAAA,IAAI,CACH,SAAS,CAAC,QAAQ,CAAC,EACnB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC5B,IAAI,wBAAwB,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,EAAE;gBAC9D,OAAO,CAAC,KAAK,CAAC,CAAC;AAChB,aAAA;iBAAM,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE;AACnE,gBAAA,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACrD,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAEhH,YAAA,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE;gBACzC,MAAM,qBAAqB,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7D,gBAAA,MAAM,uBAAuB,GAAG,SAAS,KAAK,OAAO,CAAC;AAEtD,gBAAA,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AAEtE,gBAAA,IAAI,qBAAqB,EAAE;oBACzB,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;oBAElD,IAAI,CAAC,SAAS,EAAE;wBACd,SAAS;AACV,qBAAA;oBAED,IAAI,CAAC,MAAM,EAAE;wBACX,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACjD,qBAAA;AAAM,yBAAA;wBACL,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9C,qBAAA;AACF,iBAAA;AAAM,qBAAA,IAAI,uBAAuB,EAAE;AAClC,oBAAA,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,EAAE,CAAC;oBAExE,IAAI,CAAC,OAAO,EAAE;wBACZ,SAAS;AACV,qBAAA;oBAED,IAAI,CAAC,MAAM,EAAE;AACX,wBAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,qBAAA;AAAM,yBAAA;AACL,wBAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,cAAc,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,EAAE,CAAC;oBAEjF,IAAI,CAAC,SAAS,EAAE;wBACd,SAAS;AACV,qBAAA;oBAED,IAAI,CAAC,MAAM,EAAE;AACX,wBAAA,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAChD,qBAAA;AAAM,yBAAA;wBACL,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,CAAG,EAAA,cAAc,CAAE,CAAA,CAAC,CAAC;AAClE,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QAEL,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AACnD,KAAC,CAAC;AAEF,IAAA,MAAM,MAAM,GAAG,CAAC,GAAG,UAAoB,KAAI;AACzC,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACxE,YAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAE3E,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;AAC/D,gBAAA,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7D,gBAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,oBAAA,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AAC/B,oBAAA,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,iBAAA;AACF,aAAA;AACF,SAAA;AACH,KAAC,CAAC;IAEF,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE;AAChC,YAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;AACrC,gBAAA,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA;AACL,gBAAA,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAW,CAAC,CAAC;AACrF,aAAA;AACF,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,CAAC,KAAK,CAAC,CAAC;AACb,KAAA;IAED,OAAO;QACL,IAAI;QACJ,MAAM;QACN,KAAK;KACN,CAAC;AACJ;;ACxJA;AAGM,MAAO,kCAAsC,SAAQ,eAAkB,CAAA;AAA7E,IAAA,WAAA,GAAA;;QACU,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;KAoC9B;AAlCC,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAaQ,IAAA,SAAS,CAAC,cAAmB,EAAA;QACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAE5C,OAAO;AACL,YAAA,GAAG,GAAG;YACN,WAAW,EAAE,MAAK;gBAChB,GAAG,CAAC,WAAW,EAAE,CAAC;gBAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;SACF,CAAC;KACH;IAEQ,WAAW,GAAA;QAClB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;KAC5B;AACF;;ACxCY,MAAA,gBAAgB,GAAG,CAAC,OAAoB,KAAI;IACvD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;AAEzE,IAAA,OAAO,YAAY,GAAG,YAAY,IAAI,WAAW,GAAG,WAAW,CAAC;AAClE,EAAE;AA2BW,MAAA,gBAAgB,GAAG,CAAC,OAAgC,KAAqC;AACpG,IAAA,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;AAC5B,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAE5B,IAAA,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,EAAE;AAClC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,SAAS,KAAT,SAAS,GAAK,QAAQ,CAAC,eAAe,CAAC,CAAA;AAEvC,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtC,KAAA;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAExD,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;AAC5C,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC;AAE1C,IAAA,MAAM,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAAC;AAChD,IAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,GAAG,CAAC;AAE9C,IAAA,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC;AAChE,IAAA,MAAM,eAAe,GAAG,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;AAE/D,IAAA,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,aAAa,CAAC,KAAK,CAAC;AACtE,IAAA,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC;IAErE,MAAM,sBAAsB,GAAG,kBAAkB,IAAI,oBAAoB,IAAI,gBAAgB,IAAI,kBAAkB,CAAC;IACpH,MAAM,qBAAqB,GAAG,iBAAiB,IAAI,mBAAmB,IAAI,eAAe,IAAI,iBAAiB,CAAC;IAE/G,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;AAC1E,EAAE;AA6CW,MAAA,eAAe,GAAG,CAAC,OAA+B,KAAI;AACjE,IAAA,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EACJ,OAAO,EACP,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,MAAM,GAAG,SAAS,EAClB,iBAAiB,GAAG,CAAC,EACrB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO,CAAC;AAEZ,IAAA,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,IAAI,EAAE;QAClC,OAAO;AACR,KAAA;AAED,IAAA,SAAS,KAAT,SAAS,GAAK,QAAQ,CAAC,eAAe,CAAC,CAAA;AAEvC,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,SAAS,EAAE;QACd,OAAO;AACR,KAAA;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAExD,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,CAAC;AAC5C,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC;AAE5C,IAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,KAAK,CAAC;AAChD,IAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC;AAEhD,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;AAC5C,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC;AAE1C,IAAA,MAAM,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAAC;AAChD,IAAA,MAAM,mBAAmB,GAAG,aAAa,CAAC,GAAG,CAAC;AAE9C,IAAA,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAChE,IAAA,MAAM,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAE7D,IAAA,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AACtE,IAAA,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAEnE,IAAA,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,CAAC,CAAC;AACvE,IAAA,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,CAAC,CAAC;AAEpE,IAAA,MAAM,qBAAqB,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,CAAC,CAAC;AAC7E,IAAA,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,CAAC,CAAC;IAE1E,MAAM,mBAAmB,GACvB,MAAM,KAAK,QAAQ,GAAG,mBAAmB,GAAG,MAAM,KAAK,KAAK,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IACvG,MAAM,kBAAkB,GACtB,MAAM,KAAK,QAAQ,GAAG,kBAAkB,GAAG,MAAM,KAAK,KAAK,GAAG,eAAe,GAAG,iBAAiB,CAAC;IAEpG,MAAM,qBAAqB,GACzB,MAAM,KAAK,QAAQ,GAAG,qBAAqB,GAAG,MAAM,KAAK,KAAK,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;IAC7G,MAAM,oBAAoB,GACxB,MAAM,KAAK,QAAQ,GAAG,oBAAoB,GAAG,MAAM,KAAK,KAAK,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAE1G,IAAA,MAAM,YAAY,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,kBAAkB,CAAC;AACtF,IAAA,MAAM,WAAW,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAElF,IAAA,IAAI,YAAY,GAAuB,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;AACxF,IAAA,IAAI,WAAW,GAAuB,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAEvF,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAE3D,QAAA,IAAI,SAAS,EAAE,MAAM,IAAI,SAAS,EAAE,KAAK,EAAE;YACzC,OAAO;AACR,SAAA;QAED,IAAI,SAAS,EAAE,MAAM,EAAE;YACrB,YAAY,GAAG,SAAS,CAAC;AAC1B,SAAA;QAED,IAAI,SAAS,EAAE,KAAK,EAAE;YACpB,WAAW,GAAG,SAAS,CAAC;AACzB,SAAA;AACF,KAAA;IAED,SAAS,CAAC,QAAQ,CAAC;AACjB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,GAAG,EAAE,WAAW;QAChB,QAAQ;AACT,KAAA,CAAC,CAAC;AACL;;AC/LA,MAAM,uBAAuB,GAAG,sBAAsB,EAAE,CAAC;MAE5C,wBAAwB,CAAA;AAQnC,IAAA,WAAA,CAAoB,cAA6B,EAAU,YAAgC,EAAE,QAAkB,EAAA;QAA3F,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QAPnF,IAAmB,CAAA,mBAAA,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5C,IAAuB,CAAA,uBAAA,GAAkC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7E,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAEnB,IAAgB,CAAA,gBAAA,GAAwB,IAAI,CAAC;QAC7C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAG3B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;IAED,MAAM,GAAA;;KAEL;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;YAE5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;AAC/E,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AACtD,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;AAEpD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACxE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AAC7C,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC3B,aAAC,CAAC,CACH;AACA,iBAAA,SAAS,EAAE,CAAC;AAChB,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,CAAC;AAErC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAC5C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,0BAA0B,GAAG,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;AAClE,YAAA,MAAM,0BAA0B,GAAG,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;AAElE,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC/C,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEhD,YAAA,IAAI,uBAAuB,EAAE;gBAC3B,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC;AAC9D,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACpF,aAAA;AAED,YAAA,IAAI,uBAAuB,EAAE;AAC3B,gBAAA,SAAS,CAAC,cAAc,GAAG,0BAA0B,CAAC;AACtD,gBAAA,SAAS,CAAC,cAAc,GAAG,0BAA0B,CAAC;AACvD,aAAA;AACF,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;AAE5C,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AACxE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;AC1FY,MAAA,qBAAqB,GAAG,CACnC,cAA8B,KAC0C;IACxE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AAChE;;MCOa,sBAAsB,GAAG,CAAC,MAAsC,GAAA,EAAE,KAAI;AACjF,IAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QACzB,OAAO;AACL,YAAA,gBAAgB,EAAE,IAAI;SACvB,CAAC;AACH,KAAA;IAED,OAAO;AACL,QAAA,6BAA6B,EAAE,IAAI;KACpC,CAAC;AACJ,EAAE;MAKW,kBAAkB,CAAA;AAoB7B,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,WAAA,GAAA;QA3BQ,IAA+B,CAAA,+BAAA,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAEzB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAM3C;AACD,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA,CAAC,CAAC;QAWD,IAAI,CAAC,OAAO,CAAC,MAAM;AAChB,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAAC,EACzE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,EAC/C,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtB,MAAM,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,YAAA,OAAO,eAAe,CAAC;AACzB,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,OAAO;AACT,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEnD,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,gBAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;AAC1B,aAAA;AAED,YAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;YAE7D,OAAO;gBACL,IAAI;AACJ,gBAAA,UAAU,EAAE,MAAM;gBAClB,WAAW;gBACX,KAAK,EAAE,KAAK,IAAI,IAAI;gBACpB,QAAQ;aACT,CAAC;AACJ,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;IAED,wBAAwB,CACtB,SAOI,EAAE,EAAA;QAEN,IAAI,IAAI,CAAC,+BAA+B,EAAE;YACxC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAE5C,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1E,aAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrB,aAAA,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,KAAI;AAC9D,YAAA,MAAM,iBAAiB,GAAG,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YACvG,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC;AAEpE,YAAA,IAAI,iBAAiB,EAAE;AACrB,gBAAA,MAAM,cAAc,GAAG;oBACrB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC1F,CAAC;gBAEF,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,GAAG,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CACnE,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;oBAC/D,OAAO;AACR,iBAAA;gBAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtG,MAAM,YAAY,GAAG,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAEnE,gBAAA,IAAI,eAAe,EAAE;AACnB,oBAAA,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,EAAE,SAAS,GAAG,CAAC,CAAC;AAClE,iBAAA;AAAM,qBAAA,IAAI,YAAY,EAAE;AACvB,oBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAE1E,oBAAA,IAAI,eAAe,EAAE;wBACnB,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC;AAC3F,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IACE,EAAE,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxF,oBAAA,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACnC;AACA,oBAAA,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,EAAE,SAAS,GAAG,CAAC,CAAC;AAClE,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAED,IAAA,gBAAgB,CAAyB,GAAW,EAAA;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAClE;AAED,IAAA,eAAe,CAAyB,GAAW,EAAA;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACjE;AAED,IAAA,UAAU,CAAc,GAAW,EAAA;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3D;;+GAvIU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCjBY,eAAe,CAAA;AAU1B,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;AAOD,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACrG;IAED,WACuC,CAAA,eAAsC,EACnE,mBAAuC,EAAA;QAAvC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;AAlEzC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAkD7C,IAAgB,CAAA,gBAAA,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC9G,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAC1C,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;AAUA,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,uBAAuB,CAAC;QAClE,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;AAED,IAAA,OAAO,CAAC,OAAiE,EAAA;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAElD,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EACrB,WAAW,CAAC,CAAC,CAAC,CACf,CAAC;KACH;AAED,IAAA,SAAS,CAAC,OAAiE,EAAA;QACzE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KACvD;IAEO,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtD;IAGO,gBAAgB,CAAC,IAAgB,EAAE,MAAqB,EAAA;AAC9D,QAAA,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAE3D,QAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;;;QAKD,OAAO,IAAI,GAAG,GAAG,CAAC;KACnB;AAOO,IAAA,gBAAgB,CAAC,OAA+B,EAAA;QACtD,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC/D,SAAA;QAED,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAK,GAAA,CAAA,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC,CAAC;AACrF,aAAA;AACF,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AAC9B,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAA;QAED,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAK,GAAA,CAAA,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAe,YAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC,CAAC;AACrF,aAAA;AACF,SAAA;AAED,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAClC;AAEO,IAAA,kBAAkB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAO9D,EAAA;AACC,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAhLU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAoEhB,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AApEd,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;AAqGlB,UAAA,CAAA;AAAC,IAAA,IAAI,EAAE;;;;AAiBN,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA,IAAI,CAAC;AACJ,QAAA,QAAQ,EAAE,CAAC,CAAyB,KAAI;AACtC,YAAA,OAAO,CAAG,EAAA,CAAC,CAAC,GAAG,IAAI,EAAE,CAAI,CAAA,EAAA,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC;SACxC;KACF,CAAC;;;;AA6BD,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;2FAvJU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;0BAqEI,MAAM;2BAAC,eAAe,CAAA;;0BAAG,QAAQ;AAgC5B,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,gBAAgB,MAuBhB,gBAAgB,EAAA,EAAA,EAAA,EAAA,CAAA;;MCtHb,gBAAgB,GAAG,IAAI,cAAc,CAAsB,4BAA4B,EAAE;MAczF,mBAAmB,CAAA;AAZhC,IAAA,WAAA,GAAA;QAaU,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEb,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAE1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;QA2B9C,IAAiB,CAAA,iBAAA,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAEpF,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;QAErE,IAAY,CAAA,YAAA,GAAwB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAChF,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,EACzB,YAAY,CAAC,CAAC,CAAC,CAChB,CAAC;AAwEH,KAAA;IA5GC,IACI,eAAe,CAAC,KAA8C,EAAA;QAChE,IAAI,UAAU,GAAuB,IAAI,CAAC;AAC1C,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC7C,SAAA;AAAM,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAgB,CAAC;AAExD,YAAA,IAAI,EAAE,EAAE;gBACN,UAAU,GAAG,EAAE,CAAC;AACjB,aAAA;AAAM,iBAAA;gBACL,IAAI,SAAS,EAAE,EAAE;AACf,oBAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAA,uDAAA,CAAyD,CAAC,CAAC;AACvG,iBAAA;AAED,gBAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC7C,aAAA;AACF,SAAA;AAAM,aAAA;YACL,UAAU,GAAG,KAAK,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,UAAU,EAAE;AAC/C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,SAAA;KACF;IAcD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB;AACnB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,EAAE,KAAI;AACT,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,IAAI,CAAC,2BAA2B,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAC/E,CAAC;AACF,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAExC,YAAA,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACtG,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;YAC9B,GAAG,CAAC,MAAK;gBACP,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9C,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAChD;AACA,iBAAA,SAAS,EAAE,CAAC;AAEf,YAAA,KAAK,CACH,SAAS,CAAiB,EAAE,EAAE,cAAc,CAAC,EAC7C,SAAS,CAAiB,EAAE,EAAE,iBAAiB,CAAC,EAChD,SAAS,CAAkB,EAAE,EAAE,eAAe,CAAC,EAC/C,SAAS,CAAkB,EAAE,EAAE,kBAAkB,CAAC,CACnD;AACE,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;YAC9B,GAAG,CAAC,MAAK;gBACP,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9C,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAChD;AACA,iBAAA,SAAS,EAAE,CAAC;SAChB,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,2BAA2B;AAC7B,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,aAAA;iBAAM,IAAI,KAAK,KAAK,CAAC,EAAE;AACtB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,aAAA;SACF,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,0BAA0B;AACpC,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACvF,aAAC,CAAC,CACH;AACA,iBAAA,SAAS,EAAE,CAAC;AAChB,SAAA;KACF;;gHArHU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EARnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,WAAW,EAAE,mBAAmB;AACjC,SAAA;QACD,cAAc;AACf,KAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAAqB,mBAAA;AACjC,yBAAA;wBACD,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;8BAYK,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,cAAc,CAAA;;;MClCV,wBAAwB,GAAG,IAAI,cAAc,CACxD,oCAAoC,EACpC;AAEF,MAAM,iBAAiB,GAAG;AACxB,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;CACxB,CAAC;MAeE,0BAA0B,CAAA;AAbvC,IAAA,WAAA,GAAA;AAcmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACvC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;AAE/D,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAuD,MAAM,CAAC,CAAC;AAC3F,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAM7B,IAAS,CAAA,SAAA,GAAG,sBAAsB,CAAC;AAClD,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC;AAChE,SAAA,CAAC,CAAC;AAwFJ,KAAA;AA/FC,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;AAOD,IAAA,KAAK,CAAC,MAAqC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,SAAS,EAAE,EAAE;AACjE,YAAA,OAAO,CAAC,IAAI,CACV,qGAAqG,EACrG,IAAI,CACL,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAE9B,QAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,WAAW,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEnD,QAAA,aAAa,EAAE;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AACH,SAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEtD,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AACH,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,IAAI,CAAC,CAAC,CAAC,CACR;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAED,IAAA,KAAK,CAAC,MAAqC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,SAAS,EAAE,EAAE;AACxE,YAAA,OAAO,CAAC,IAAI,CAAC,uFAAuF,EAAE,IAAI,CAAC,CAAC;AAC7G,SAAA;QAED,IACE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,EACnD;YACA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAClD,SAAA;AAED,QAAA,WAAW,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEnD,QAAA,aAAa,EAAE;AACZ,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAChD,aAAA;AACH,SAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAEtD,YAAA,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AACH,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,IAAI,CAAC,CAAC,CAAC,CACR;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;;uHAvGU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAT1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,WAAW,EAAE,0BAA0B;AACxC,SAAA;QACD,cAAc;AACf,KAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAGU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAbtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,WAAW,EAA4B,0BAAA;AACxC,yBAAA;wBACD,cAAc;AACf,qBAAA;oBACD,cAAc,EAAE,CAAC,mBAAmB,CAAC;AACtC,iBAAA,CAAA;;;MCvBY,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAErD,IAAa,CAAA,aAAA,GAAwB,IAAI,CAAC;AAGlD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAc,CAAC;AAkBjD,KAAA;IAhBC,QAAQ,GAAA;QACN,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1G,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;AAClD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAExE,IAAI,CAAC,QAAQ,EAAE;AACb,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACnC;;kHAxBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAQC,cAAc,EAAA,CAAA;sBADb,MAAM;;;ACdF,MAAM,2BAA2B,GAAG,kCAAkC,CAAC;AACvE,MAAM,oCAAoC,GAAG,iCAAiC;;MCYxE,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOmB,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC5D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEvD,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAW,CAAC;QAE5C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAA,CAAA,mBAAmB,GAAG;AAC5B,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;SACL,CAAC;QAeM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAmI1B,KAAA;AAhJC,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;IAGD,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;IAEO,uBAAuB,GAAA;QAC7B,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACrC,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC1F,CAAC;aACC,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EACvC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;QAEf,MAAM,YAAY,GAAG,SAAS,CAAa,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC;aACpF,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAChC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;KACzD;AAEO,IAAA,YAAY,CAAC,CAAa,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxD,OAAO;AACR,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/C,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAE5D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9D,IAAI,CAAC,mBAAmB,GAAG;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU;AAC/C,YAAA,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS;YAC7C,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;SACb,CAAC;AAEF,QAAA,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC;AACzC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EACrC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,SAAS,CAAa,QAAQ,EAAE,SAAS,CAAC;aACvC,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,EACjC,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAEO,IAAA,iBAAiB,CAAC,CAAa,EAAA;QACrC,CAAC,CAAC,cAAc,EAAE,CAAC;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;YACpC,OAAO;AACR,SAAA;QAED,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACpF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/C,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,gBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AAClC,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACnD,OAAO,CAAC,MAAM,CAAC;AACb,oBAAA,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,EAAE;AACtC,oBAAA,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,EAAE;AACxC,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,EAAE,CAAC;gBACtD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,EAAE,CAAC;AACzD,aAAA;AACF,SAAA;KACF;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;YACpC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;KACvF;IAEO,qBAAqB,GAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AACzD,SAAA;KACF;;sHAnKU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEhB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC5B,iBAAA,CAAA;8BAsBK,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,oBAAoB,CAAA;;;MCjChB,UAAU,CAAA;AAAvB,IAAA,WAAA,GAAA;;QAES,IAAS,CAAA,SAAA,GAAM,IAAK,CAAC;;QAErB,IAAK,CAAA,KAAA,GAAM,IAAK,CAAC;KACzB;AAAA;;MCEY,YAAY,CAAA;IACvB,IACI,KAAK,CAAC,KAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAQD,WAAoB,CAAA,cAAgC,EAAE,WAAuC,EAAA;QAAzE,IAAc,CAAA,cAAA,GAAd,cAAc,CAAkB;AAJ5C,QAAA,IAAA,CAAA,QAAQ,GAAkB,IAAI,UAAU,EAAK,CAAC;QAC9C,IAAY,CAAA,YAAA,GAAsC,IAAI,CAAC;QACvD,IAAQ,CAAA,QAAA,GAA0C,IAAI,CAAC;AAG7D,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;KACjC;;AAGD,IAAA,OAAO,sBAAsB,CAAI,GAAoB,EAAE,GAAQ,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1F,aAAA;AACF,SAAA;KACF;;yGA7BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;iIAGK,KAAK,EAAA,CAAA;sBADR,KAAK;;;MCaK,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAGxB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAoB,CAAC;QAUpD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAUlB,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;QAEhC,IAAoB,CAAA,oBAAA,GAAwB,IAAI,CAAC;AA0B1D,KAAA;AA9CC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1D;AAGD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAKD,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAACC,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,CACvG,IAAI,CAAC,WAAW,CACjB,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,CAAC;KAC1C;;oHArDU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAOU,WAAW,EAAA,CAAA;sBADnB,MAAM;uBAAC,kBAAkB,CAAA;gBAItB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,0BAA0B,CAAA;gBAW7B,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,0BAA0B,CAAA;;;MCnBtB,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAChD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAIxB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAyB,CAAC;QAUzD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAUlB,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;QAEhC,IAAoB,CAAA,oBAAA,GAAwB,IAAI,CAAC;AA0B1D,KAAA;AA9CC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1D;AAGD,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAKD,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,CACvG,IAAI,CAAC,WAAW,CACjB,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE,CAAC;KAC1C;;mHAtDU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAQU,WAAW,EAAA,CAAA;sBAFnB,MAAM;uBAAC,iBAAiB,CAAA;gBAKrB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,yBAAyB,CAAA;gBAW5B,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,yBAAyB,CAAA;;;ACpC3B,MAAM,mCAAmC,GAAG,mCAAmC;MAMzE,mCAAmC,CAAA;AAJhD,IAAA,WAAA,GAAA;QAaU,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AACjC,KAAA;AATC,IAAA,IAEI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrD;;gIARU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wCAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAIK,cAAc,EAAA,CAAA;sBAFjB,KAAK;uBAAC,8BAA8B,CAAA;;sBACpC,WAAW;AAAC,gBAAA,IAAA,EAAA,CAAA,CAAA,MAAA,EAAS,mCAAmC,CAAE,CAAA,CAAA;;;ACTtD,MAAM,mCAAmC,GAAG,mCAAmC;MASzE,mCAAmC,CAAA;;gIAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oHAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mCAAmC;AAC3C,qBAAA;AACF,iBAAA,CAAA;;;ACPM,MAAM,kCAAkC,GAAG,kCAAkC;MASvE,kCAAkC,CAAA;AAP/C,IAAA,WAAA,GAAA;QAgBU,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAChC,KAAA;AATC,IAAA,IAEI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,KAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpD;;+HARU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mHAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,6BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,iCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kCAAkC;AAC1C,qBAAA;AACF,iBAAA,CAAA;8BAIK,aAAa,EAAA,CAAA;sBAFhB,KAAK;uBAAC,6BAA6B,CAAA;;sBACnC,WAAW;AAAC,gBAAA,IAAA,EAAA,CAAA,CAAA,MAAA,EAAS,kCAAkC,CAAE,CAAA,CAAA;;;MCX/C,oBAAoB,GAAG,IAAI,cAAc,CAA8B,sBAAsB;;MCoB7F,2BAA2B,CAAA;AAZxC,IAAA,WAAA,GAAA;AAamB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;AAE5D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEvD,QAAA,IAAA,CAAA,iBAAiB,GAAG;YACnC,KAAK,EAAE,IAAI,CAAC,kBAAkB;YAC9B,IAAI,EAAE,IAAI,CAAC,iBAAiB;SAC7B,CAAC;QAuCM,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAchB,QAAA,IAAA,CAAA,UAAU,GAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAElE,IAAqB,CAAA,qBAAA,GAAgC,IAAI,CAAC;AAGlE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA6B,CAAC;AA+H7D,KAAA;AAvLC,IAAA,IAAY,kBAAkB,GAAA;AAC5B,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACvE,CAAA,CAAA,EAAI,mCAAmC,CAAA,CAAE,CACpB,CAAC;AAExB,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,OAAO,oBAAoB,CAAC;AAC7B,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAuB,CAAC;QAEjF,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAClD;AAED,IAAA,IAAY,iBAAiB,GAAA;AAC3B,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CACtE,CAAA,CAAA,EAAI,kCAAkC,CAAA,CAAE,CACnB,CAAC;AAExB,QAAA,IAAI,mBAAmB,EAAE;AACvB,YAAA,OAAO,mBAAmB,CAAC;AAC5B,SAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CACrD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAC7B,CAAC;QAExB,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;KACtD;AAED,IAAA,IACI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,kBAAkB,CAAC,KAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAChD;AAGD,IAAA,IACI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,iBAAiB,CAAC,KAA6B,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;KAC/C;IAQD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,uBAAuB;AACzB,aAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;aACvC,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,EAChC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;AAEf,QAAA,IAAI,CAAC,sBAAsB;AACxB,aAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;aACvC,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,MAAK;YACP,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,IAAI,SAAS,MAAM,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC5F,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,aAAA;SACF,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAElC,QAAA,IACE,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,iBAAiB;YAClD,CAAC,IAAI,CAAC,kBAAkB;YACxB,CAAC,IAAI,CAAC,iBAAiB;YACvB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EACjD;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAE7B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAElE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACpD,SAAA;KACF;IAEO,6BAA6B,GAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,OAAO,KAAI;YACV,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAE/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE,cAAc,IAAI,KAAK,CAAC;YAC3F,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,cAAc,IAAI,KAAK,CAAC;AAExF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,SAAS;gBACT,OAAO;AACP,gBAAA,SAAS,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO;AAClC,aAAA,CAAC,CAAC;AACL,SAAC,EACD;AACE,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;AACpC,YAAA,UAAU,EAAE,IAAI,CAAC,WAAW,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,CAAA,EAAA,CAAI,GAAG,SAAS;YAClE,SAAS,EAAE,IAAI,CAAC,UAAU;AAC3B,SAAA,CACF,CAAC;AAEF,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,aAAa,CAAC,KAA8B,EAAE,OAAoB,EAAA;AACxE,QAAA,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAExC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAgC,6BAAA,EAAA,KAAK,CAAU,QAAA,CAAA,CAAC,CAAC;KACxE;AAEO,IAAA,eAAe,CAAC,KAA8B,EAAA;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;AACR,SAAA;QAED,aAAa,CAAC,SAAS,CAAC,MAAM,CAC5B,4CAA4C,EAC5C,2CAA2C,CAC5C,CAAC;AAEF,QAAA,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;KACtC;IAEO,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACnC;IAEO,mBAAmB,CAAC,OAA2B,EAAE,SAA8B,EAAA;QACrF,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE;YACpE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA,cAAA,CAAgB,CAAuB,CAAC;YAEhF,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;;wHAlMU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAR3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,WAAW,EAAE,2BAA2B;AACzC,SAAA;QACD,cAAc;AACf,KAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAZvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,oBAAoB;AAC7B,4BAAA,WAAW,EAA6B,2BAAA;AACzC,yBAAA;wBACD,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;8BA4CK,kBAAkB,EAAA,CAAA;sBADrB,KAAK;gBAUF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBAiBN,WAAW,EAAA,CAAA;sBADV,MAAM;uBAAC,sBAAsB,CAAA;;;MCnFnB,eAAe,CAAA;AAC1B,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAkB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAGD,WAAoB,CAAA,gBAAsC,EAAU,iBAAmC,EAAA;QAAnF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAsB;QAAU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QAF/F,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;KAEkF;IAEnG,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAE/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClE,SAAA;KACF;;4GAnBU,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;gGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;iIAGK,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,UAAU,CAAA;;;MCLN,mBAAmB,GAAG,IAAI,cAAc,CAAe,qBAAqB;;MCD5E,cAAc,GAAG,CAAC,MAAiB,EAAE,YAAuB,KAAe;IACtF,OAAO;AACL,QAAA,GAAG,YAAY;AACf,QAAA,GAAG,MAAM;KACV,CAAC;AACJ;;MCIa,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAW,CAAC;QAEjD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAK1E,IAAO,CAAA,OAAA,GAAc,EAAE,CAAC;AA8JjC,KAAA;AAjKC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;KAC1B;;;;;AAMD,IAAA,YAAY,CAAC,MAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAE5B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvD,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3F,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBACtB,IAAI,KAAK,YAAY,UAAU,EAAE;wBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3F,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACtD,gBAAA,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtD,IAAI,QAAQ,YAAY,UAAU,EAAE;AAClC,wBAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7G,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,OAAO,CAAC,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,EAAE,QAAQ,CAAC,CAAC;AAC5C,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAEO,OAAO,CAAC,GAAW,EAAE,KAAc,EAAA;AACzC,QAAA,QAAQ,GAAG;AACT,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,WAAW;AACd,gBAAA;oBACE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAa,UAAA,EAAA,GAAG,CAAI,EAAA,CAAA,CAAC,CAAC;AAE1D,oBAAA,IAAI,IAAI,EAAE;AACR,wBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC,CAAC;AAC5C,qBAAA;AAAM,yBAAA;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,wBAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC,CAAC;AAC9C,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAA;AACF,iBAAA;gBAED,MAAM;AAER,YAAA,KAAK,WAAW;AACd,gBAAA;AACE,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,aAAA,EAAiB,KAAuB,CAAC,QAAQ,CAAA,EAAA,CAAI,CAAC,CAAC;AAE3G,oBAAA,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC,CAAC;AAC1D,qBAAA;AAAM,yBAAA;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBACjC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAG,KAAuB,CAAC,QAAQ,CAAC,CAAC;wBACpE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC,CAAC;AAC5D,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpC,qBAAA;AACF,iBAAA;gBAED,MAAM;AAER,YAAA;AACE,gBAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,KAAgB,CAAC;AAExE,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1D,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAS,MAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAC,CAAC;AAC9C,iBAAA;gBACD,MAAM;AACT,SAAA;KACF;IAEO,QAAQ,GAAA;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAa,UAAA,EAAA,GAAG,CAAI,EAAA,CAAA,CAAC,CAAC;AAE9D,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBACrB,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,iBAAC,CAAC,CAAC;gBAEH,SAAS;AACV,aAAA;YAED,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAa,UAAA,EAAA,GAAG,CAAI,EAAA,CAAA,CAAC,CAAC;AAE1D,gBAAA,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,iBAAA;gBAED,SAAS;AACV,aAAA;YAED,IACE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;AACrC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;gBAC1B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,CAAC,EAC1C;gBACA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAA4B,EAAE;AACjE,oBAAA,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC,GAAG,MAA0C,CAAC,CAAC;oBAE9F,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC7B,IAAI,CAAC,OAAO,CAAC,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,MAAM,CAAE,CAAA,EAAE,SAAS,CAAC,CAAC;AAC7C,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC,CAAC;gBAElE,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;yGAzKU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAFZ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAE7D,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAc,YAAA,EAAE,CAAC;AACzE,iBAAA,CAAA;;;ACRD;AACa,MAAA,uBAAuB,GAAG,CAAC,IAAmB,KAAqC;IAC9F,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,QAAQ,IAAI;AACV,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB,CAAC;AAEJ,QAAA,KAAK,SAAS;YACZ,OAAO;AACL,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB,CAAC;AAEJ,QAAA,KAAK,aAAa;YAChB,OAAO;AACL,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,aAAa;aACpB,CAAC;AAEJ,QAAA,KAAK,SAAS,CAAC;AACf,QAAA;YACE,OAAO;AACL,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,WAAW;aAClB,CAAC;AACL,KAAA;AACH;;MClCa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,uBAAuB,CAAC;AACrC,KAAA;;wHAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sHAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACAhD,MAAA,mBAAmB,GAAG,CAAC,KAAuC,KAAI;IAC7E,IAAI,KAAK,EAAE,oBAAoB,EAAE;QAC/B,OAA+B,SAAA,+BAAA;AAChC,KAAA;AAAM,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE;QACxC,OAAgC,UAAA,gCAAA;AACjC,KAAA;AAAM,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE;QACtC,OAA2B,MAAA,2BAAA;AAC5B,KAAA;SAAM,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,IAAI,KAAK,EAAE,MAAM,KAAK,UAAU,EAAE;QACxE,OAAiC,WAAA,iCAAA;AAClC,KAAA;AAAM,SAAA,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;QAC7C,OAAsC,gBAAA,sCAAA;AACvC,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd;;MCba,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,mBAAmB,CAAC;AACjC,KAAA;;oHAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACC5C,MAAA,0BAA0B,GAAG,CAAC,KAA2B,KAAwC;AAC5G,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE9C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,OAAO;AACL,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;AAC9C,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;KAC/C,CAAC;AACJ,EAAE;MAEW,yBAAyB,GAAG,CACvC,KAA2B,EAC3B,IAAqB,KACgB;AACrC,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAE9C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC;IAE1E,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI,UAAU,KAAA,WAAA,oCAAkC,UAAU,8CAA8B;YACtF,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,IAAI,EAAE,WAAW;aAClB,CAAC;AACH,SAAA;AAAM,aAAA;YACL,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,WAAW;aAClB,CAAC;AACH,SAAA;AACF,KAAA;AAAM,SAAA;QACL,OAAO;YACL,eAAe;AACf,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,WAAW;SAClB,CAAC;AACH,KAAA;AACH;;MCnDa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,0BAA0B,CAAC;AACxC,KAAA;;2HAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yHAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,CAAA,CAAA;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACChE,MAAM,WAAW,GAAyB;IACxC,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3D,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3D,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,OAAO,EAAE,IAAI;CACd,CAAC;AAEW,MAAA,mBAAmB,GAAG,CAAC,KAAuC,KAAiC;IAC1G,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACxC,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtD,KAAA;AAED,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,IAAI,UAAU,KAAA,UAAA,mCAAiC,UAAU,uCAA0B;YACjF,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtD,SAAA;QAED,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;YACD,OAAO;AACP,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC;AACH,KAAA;AAAM,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAE5B,OAAO;gBACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;gBAC5B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ,CAAC;AAC3B,SAAA;AAAM,aAAA;YACL,OAAO;gBACL,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ,CAAC;AAC3B,SAAA;AACF,KAAA;AAAM,SAAA;QACL,OAAO;YACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAC5B,OAAO;AACP,YAAA,SAAS,EAAE,IAAI;SACQ,CAAC;AAC3B,KAAA;AACH,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,KAAuC,KAAI;IACzE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,QACE,KAAK,CAAC,SAAS,KAAK,oBAAoB;QACxC,KAAK,CAAC,SAAS,KAAK,oBAAoB;AACxC,QAAA,KAAK,CAAC,SAAS,KAAK,YAAY,EAChC;AACJ,EAAE;AAEW,MAAA,YAAY,GAAG,CAAC,KAAuC,KAAI;IACtE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IAED,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,EAAE;AAEW,MAAA,qBAAqB,GAAG,CAAC,KAA0C,KAAI;AAClF,IAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAC3B,QAAA,OAAO,0BAA0B,CAAC;AACnC,KAAA;AAAM,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,2BAA2B,CAAC;AACpC,KAAA;AAAM,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAClC,QAAA,OAAO,0BAA0B,CAAC;AACnC,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,EAAE;AAEW,MAAA,oBAAoB,GAAG,CAAC,KAAuC,KAAI;AAC9E,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAA,OAAO,6BAA6B,CAAC;AACtC,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH,EAAE;AAEW,MAAA,kBAAkB,GAAG,CAAC,KAAuC,KAAI;IAC5E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF,CAAC;AACJ,EAAE;AAEW,MAAA,mBAAmB,GAAG,CAAC,KAAuC,KAAI;IAC7E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF,CAAC;AACJ;;MCtIa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,mBAAmB,CAAC;AACjC,KAAA;;oHAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACA5C,MAAA,kBAAkB,GAAG,CAAC,SAAuC,KAAyB;IACjG,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,QAAQ,SAAS;AACf,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B,CAAC;AACJ,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B,CAAC;AACJ,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,YAAY;aACnB,CAAC;AACJ,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf,CAAC;AACJ,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf,CAAC;AACJ,QAAA,KAAK,OAAO;YACV,OAAO;AACL,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,IAAI,EAAE,OAAO;aACd,CAAC;AACL,KAAA;AACH;;MCpCa,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,kBAAkB,CAAC;AAChC,KAAA;;mHAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;iHAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACD3C,MAAA,OAAO,GAAG,CAAC,KAAa,KAAI;AACvC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,EAAE;AAEK,MAAM,gBAAgB,GAA4B,CAAC,CAAC,EAAE,IAAI,KAAK;;MCFzD,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEE,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;AACrB,KAAA;;wGAFY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;;ACWrC,MAAO,cAAkB,SAAQ,SAAwB,CAAA;AAA/D,IAAA,WAAA,GAAA;;QACW,IAAiB,CAAA,EAAA,CAAA,GAAsB,MAAK;AACnD,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAiB,CAAC;AACjD,SAAC,CAAC;KAuCH;AArCC,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,KAAK,CAAC,OAAwC,CAAC;KACvD;IAEQ,OAAO,GAAA;AACd,QAAA,OAAO,KAAK,CAAC,OAAO,EAAS,CAAC;KAC/B;AAEQ,IAAA,OAAO,CAAC,EAAgD,EAAA;AAC/D,QAAA,KAAK,CAAC,OAAO,CAAC,EAA4E,CAAC,CAAC;KAC7F;AAEQ,IAAA,MAAM,CAAC,EAAmD,EAAA;AACjE,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,EAA+E,CAAQ,CAAC;KAC7G;AAEQ,IAAA,GAAG,CAAI,EAA6C,EAAA;AAC3D,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,EAAyE,CAAC,CAAC;KAC7F;IAEQ,MAAM,CACb,EAA8E,EAC9E,YAAe,EAAA;QAEf,OAAO,KAAK,CAAC,MAAM,CACjB,EAA0G,EAC1G,YAAY,CACb,CAAC;KACH;AAEQ,IAAA,IAAI,CAAC,EAAoD,EAAA;AAChE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAgF,CAAC,CAAC;KACrG;AAEQ,IAAA,IAAI,CAAC,EAAoD,EAAA;AAChE,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAgF,CAAC,CAAC;KACrG;AACF,CAAA;AAzCW,EAAA,GAAA,MAAM,CAAC,QAAQ;;ACbpB,MAAM,kBAAkB,GAAG,kBAAkB;AAEvC,MAAA,eAAe,GAAG,CAAC,OAAwB,KAA6B;AACnF,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,kBAAkB,GAAG,IAAI,EAAE,CAAC;AAClE;;ACTO,MAAM,QAAQ,GAAG,UAAU;AAErB,MAAA,OAAO,GAAG,CAAC,OAAwB,KAA6B;AAC3E,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IAED,MAAM,KAAK,GAAG,yCAAyC,CAAC;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;AACzD;;ACVO,MAAM,UAAU,GAAG,YAAY;MAEzB,SAAS,GAAG,CAAC,WAAmB,EAAE,mBAA2B,KAAI;IAC5E,OAAO,CAAC,SAAoB,KAAI;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;;QAGhE,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACjE,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,EAAE;YAC3C,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;AACL,YAAA,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;AACH,KAAC,CAAC;AACJ;;ACba,MAAA,UAAU,GAAG;IACxB,SAAS;IACT,OAAO;IACP,eAAe;;;ACXjB;;AAEG;;;;"}
|