{"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/css-unit.pipe.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.component.ts","../../../packages/components/modal/modal.component.html","../../../packages/components/modal/modal.directive.ts","../../../packages/components/modal/modal.service.ts","../../../packages/components/modal/modal.module.ts","../../../packages/components/modal/koobiq-components-modal.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { KbqModalComponent } from './modal.component';\n\n/**\n * API class that public to users to handle the modal instance.\n * KbqModalRef is aim to avoid accessing to the modal instance directly by users.\n */\nexport abstract class KbqModalRef<C = any, R = unknown> {\n    abstract afterOpen: Observable<void>;\n    abstract beforeClose: Observable<R | undefined>;\n    abstract afterClose: Observable<R | undefined>;\n\n    abstract open(): void;\n\n    abstract close(result?: R): void;\n\n    abstract destroy(result?: R): void;\n\n    /**\n     * Trigger the kbqOnOk/kbqOnCancel by manual\n     */\n    abstract triggerOk(): void;\n\n    abstract triggerCancel(): void;\n\n    // /**\n    //  * Return the ComponentRef of kbqContent when specify kbqContent as a Component\n    //  * Note: this method may return undefined if the Component has not ready yet.\n    //    (it only available after Modal's ngOnInit)\n    //  */\n    // abstract getContentComponentRef(): ComponentRef<{}>;\n\n    /**\n     * Return the component instance of kbqContent when specify kbqContent as a Component\n     * Note: this method may return undefined if the Component has not ready yet.\n     * (it only available after Modal's ngOnInit)\n     */\n    abstract getContentComponent(): C;\n\n    /**\n     * Get the dom element of this Modal\n     */\n    abstract getElement(): HTMLElement;\n\n    /**\n     * Get the instance of the Modal itself\n     */\n    abstract getInstance(): KbqModalComponent;\n\n    /**\n     * Call markForCheck for change detector\n     */\n    abstract markForCheck();\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'toCssUnit'\n})\nexport class CssUnitPipe implements PipeTransform {\n    transform(value: number | string, defaultUnit: string = 'px'): string {\n        const formatted = +value;\n\n        return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;\n    }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, Injector, TemplateRef, Type } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type OnClickCallback<T> = (instance: T) => (false | void | {}) | Promise<false | void | {}>;\n\n// Different modal styles we have supported\nexport type ModalType = 'default' | 'confirm' | 'custom';\n\n// Subtypes of Confirm Modal\nexport type ConfirmType = 'confirm' | 'success' | 'warn';\n\nexport enum ModalSize {\n    Small = 'small',\n    Medium = 'medium',\n    Large = 'large'\n}\n\n/**\n * Duration when perform animations (ms)\n * @docs-private\n */\nexport const MODAL_ANIMATE_DURATION = 300;\n\n// Public options for using by service\nexport interface ModalOptions<C = any, R = any> {\n    kbqModalType?: ModalType;\n    kbqVisible?: boolean;\n    kbqWidth?: number | string;\n    kbqSize?: ModalSize;\n    kbqWrapClassName?: string;\n    kbqClassName?: string;\n    kbqStyle?: object;\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    kbqTitle?: string | TemplateRef<{}>;\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    kbqContent?: string | TemplateRef<{}> | Type<C>;\n    kbqComponent?: Type<C>; // The instance of component opened into the dialog.\n    /** @deprecated. Use field data and KBQ_MODAL_DATA */\n    kbqComponentParams?: any;\n    kbqClosable?: boolean;\n    kbqMask?: boolean;\n    kbqMaskClosable?: boolean;\n    kbqMaskStyle?: object;\n    kbqBodyStyle?: object;\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    kbqFooter?: string | TemplateRef<{}> | IModalButtonOptions<C>[]; // Default Modal ONLY\n    kbqGetContainer?: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null; // STATIC\n    kbqAfterOpen?: EventEmitter<void>;\n    kbqAfterClose?: EventEmitter<R>;\n    kbqCloseByESC?: boolean;\n    kbqRestoreFocus?: boolean;\n\n    // --- Predefined OK & Cancel buttons\n    kbqOkText?: string;\n    kbqOkType?: string;\n    kbqOkLoading?: boolean;\n    kbqOnOk?: EventEmitter<C> | OnClickCallback<C>;\n    kbqCancelText?: string;\n    kbqCancelLoading?: boolean;\n    kbqOnCancel?: EventEmitter<C> | OnClickCallback<C>;\n\n    /** Data being injected into the child component. */\n    data?;\n}\n\nexport interface IModalOptionsForService<T = any> extends ModalOptions<T> {\n    kbqOnOk?: OnClickCallback<T>;\n    kbqOnCancel?: OnClickCallback<T>;\n    /**\n     * The injector used to create the component that will be attached.\n     * If specified, it overrides the injector provided by `KbqModalService`.\n     */\n    injector?: Injector;\n}\n\nexport interface IModalButtonOptions<T = any> {\n    label: string;\n    type?: string;\n    shape?: string;\n    ghost?: boolean;\n    size?: string;\n    // Default: true, indicate whether show loading automatically while onClick returned a Promise\n    autoLoading?: boolean;\n\n    // [NOTE] \"componentInstance\" will refer to the component's instance when using Component\n    show?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n    loading?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n    disabled?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n\n    autoFocus?: boolean;\n    kbqModalMainAction?: boolean;\n\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    onClick?(this: IModalButtonOptions<T>, contentComponentInstance?: T): (void | {}) | Promise<void | {}>;\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { MODAL_ANIMATE_DURATION } from './modal.type';\n\ninterface IRegisteredMeta {\n    modalRef: KbqModalRef;\n    afterOpenSubscription: Subscription;\n    afterCloseSubscription: Subscription;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalControlService {\n    // Track singleton afterAllClose through over the injection tree\n    get afterAllClose(): Subject<void> {\n        return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;\n    }\n\n    // Track singleton openModals array through over the injection tree\n    get openModals(): KbqModalRef[] {\n        return this.parentService ? this.parentService.openModals : this.rootOpenModals;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    private rootOpenModals: KbqModalRef[] = this.parentService ? null : [];\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    private rootAfterAllClose: Subject<void> = this.parentService ? null : new Subject<void>();\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    private rootRegisteredMetaMap: Map<KbqModalRef, IRegisteredMeta> = this.parentService ? null : new Map();\n\n    // Registered modal for later usage\n    private get registeredMetaMap(): Map<KbqModalRef, IRegisteredMeta> {\n        return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;\n    }\n\n    constructor(@Optional() @SkipSelf() private parentService: KbqModalControlService) {}\n\n    // Register a modal to listen its open/close\n    registerModal(modalRef: KbqModalRef): void {\n        if (!this.hasRegistered(modalRef)) {\n            const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));\n            const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));\n\n            this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });\n\n            this.handleMultipleMasks(modalRef);\n        }\n    }\n\n    hasRegistered(modalRef: KbqModalRef): boolean {\n        return this.registeredMetaMap.has(modalRef);\n    }\n\n    // Close all registered opened modals\n    closeAll(): void {\n        let i = this.openModals.length;\n\n        while (i--) {\n            this.openModals[i].close();\n        }\n    }\n\n    private removeOpenModal(modalRef: KbqModalRef): void {\n        const index = this.openModals.indexOf(modalRef);\n\n        if (index > -1) {\n            this.openModals.splice(index, 1);\n\n            if (this.hasRegistered(modalRef)) {\n                const { afterOpenSubscription, afterCloseSubscription } = this.registeredMetaMap.get(modalRef)!;\n\n                afterOpenSubscription.unsubscribe();\n                afterCloseSubscription.unsubscribe();\n\n                this.registeredMetaMap.delete(modalRef);\n            }\n\n            if (!this.openModals.length) {\n                this.afterAllClose.next();\n            }\n        }\n    }\n\n    private handleMultipleMasks(modalRef: KbqModalRef) {\n        const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef) as KbqModalComponent[];\n\n        if (modals.filter((modal) => modal.kbqVisible).length > 1) {\n            const visibleModalsWithMask = modals\n                .splice(0, modals.length - 1)\n                .filter((modal) => modal.kbqVisible && modal.kbqMask);\n\n            // Trigger leave animation on other masks, then disable them after animation completes\n            visibleModalsWithMask.forEach((modal) => {\n                setTimeout(() => {\n                    modal.getInstance().animateMaskTo(null);\n                    modal.getInstance().kbqMask = false;\n                    modal.markForCheck();\n                }, MODAL_ANIMATE_DURATION);\n\n                modal.getInstance().animateMaskTo('leave');\n                modal.markForCheck();\n            });\n\n            // On close, restore other masks with enter animation, then reset animation state after it completes\n            modalRef.beforeClose.subscribe(() => {\n                visibleModalsWithMask.forEach((modal) => {\n                    setTimeout(() => {\n                        modalRef.getInstance().animateMaskTo(null);\n                        modalRef.getInstance().kbqMask = false;\n                        modal.getInstance().animateMaskTo(null);\n                        modal.markForCheck();\n                    }, MODAL_ANIMATE_DURATION);\n\n                    modalRef.getInstance().animateMaskTo('leave');\n                    modal.getInstance().kbqMask = true;\n                    modal.getInstance().animateMaskTo('enter');\n\n                    modal.markForCheck();\n                });\n            });\n        }\n    }\n}\n","/** @docs-private */\nexport interface IClickPosition {\n    x: number;\n    y: number;\n}\n\n/** @docs-private */\nexport class ModalUtil {\n    private lastPosition: IClickPosition;\n\n    constructor(private document?: Document) {\n        this.lastPosition = { x: -1, y: -1 };\n        this.listenDocumentClick();\n    }\n\n    getLastClickPosition(): IClickPosition {\n        return this.lastPosition;\n    }\n\n    listenDocumentClick(): void {\n        this.document?.addEventListener('click', (event: MouseEvent) => {\n            this.lastPosition = { x: event.clientX, y: event.clientY };\n        });\n    }\n}\n\n/** @docs-private */\nexport const modalUtilObject = new ModalUtil(\n    // For SSR compatibility\n    // eslint-disable-next-line no-restricted-globals\n    typeof document === 'undefined' ? undefined : document\n);\n","import { CdkTrapFocus, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    Renderer2,\n    SimpleChanges,\n    TemplateRef,\n    Type,\n    ViewChild,\n    ViewChildren,\n    ViewContainerRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ENTER, ESCAPE } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { modalUtilObject as ModalUtil } from './modal-util';\nimport {\n    IModalButtonOptions,\n    MODAL_ANIMATE_DURATION,\n    ModalOptions,\n    ModalSize,\n    ModalType,\n    OnClickCallback\n} from './modal.type';\n\ntype AnimationState = 'enter' | 'leave' | null;\n\n@Component({\n    selector: 'kbq-modal',\n    imports: [\n        CdkTrapFocus,\n        NgStyle,\n        NgClass,\n        KbqButtonModule,\n        KbqIconModule,\n        CssUnitPipe,\n        NgTemplateOutlet\n    ],\n    templateUrl: './modal.component.html',\n    styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-modal',\n        '(keydown)': 'onKeyDown($event)'\n    }\n})\nexport class KbqModalComponent<T = any, R = any>\n    extends KbqModalRef<T, R>\n    implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions\n{\n    protected readonly document = inject<Document>(DOCUMENT);\n\n    componentColors = KbqComponentColors;\n\n    @Input() kbqModalType: ModalType = 'default';\n\n    // The instance of component opened into the dialog.\n    @Input() kbqComponent: Type<T>;\n    // If not specified, will use <ng-content>\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Input() kbqContent: string | TemplateRef<{}> | Type<T>;\n    // available when kbqContent is a component\n    @Input() kbqComponentParams: any;\n    // Default Modal ONLY\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Input() kbqFooter: string | TemplateRef<{}> | IModalButtonOptions<T>[];\n\n    @Input()\n    get kbqVisible() {\n        return this._kbqVisible;\n    }\n    set kbqVisible(value) {\n        this._kbqVisible = value;\n    }\n\n    private _kbqVisible = false;\n\n    @Output() readonly kbqVisibleChange = new EventEmitter<boolean>();\n\n    @Input() kbqWidth: number | string;\n    @Input() kbqSize: ModalSize = ModalSize.Medium;\n    @Input() kbqWrapClassName: string;\n    @Input() kbqClassName: string;\n    @Input() kbqStyle: object;\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Input() kbqTitle: string | TemplateRef<{}>;\n    @Input() kbqCloseByESC: boolean = true;\n\n    @Input()\n    get kbqClosable() {\n        return this._kbqClosable;\n    }\n    set kbqClosable(value) {\n        this._kbqClosable = value;\n    }\n    private _kbqClosable = true;\n\n    @Input()\n    get kbqMask() {\n        return this._kbqMask;\n    }\n    set kbqMask(value) {\n        this._kbqMask = value;\n    }\n    private _kbqMask = true;\n\n    @Input()\n    get kbqMaskClosable() {\n        return this._kbqMaskClosable;\n    }\n    set kbqMaskClosable(value) {\n        this._kbqMaskClosable = value;\n    }\n    private _kbqMaskClosable = false;\n\n    @Input() kbqMaskStyle: object;\n    @Input() kbqBodyStyle: object;\n\n    // Trigger when modal open(visible) after animations\n    @Output() readonly kbqAfterOpen = new EventEmitter<void>();\n    // Trigger when modal leave-animation over\n    @Output() readonly kbqAfterClose = new EventEmitter<R | undefined>();\n    /** Emitted before the modal begins its closing animation. */\n    @Output() readonly kbqBeforeClose = new EventEmitter<R | undefined>();\n\n    // --- Predefined OK & Cancel buttons\n    @Input() kbqOkText: string;\n    @Input() kbqOkType = KbqComponentColors.Contrast;\n\n    @Input() kbqRestoreFocus = true;\n\n    @Input()\n    get kbqOkLoading() {\n        return this._kbqOkLoading;\n    }\n    set kbqOkLoading(value) {\n        this._kbqOkLoading = value;\n    }\n    private _kbqOkLoading = false;\n\n    @Input() @Output() readonly kbqOnOk: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n    @Input() kbqCancelText: string;\n\n    @Input()\n    get kbqCancelLoading() {\n        return this._kbqCancelLoading;\n    }\n    set kbqCancelLoading(value) {\n        this._kbqCancelLoading = value;\n    }\n    private _kbqCancelLoading = false;\n\n    @Input() @Output() readonly kbqOnCancel: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n\n    @ViewChild('modalContainer', { static: true }) modalContainer: ElementRef;\n    @ViewChild('bodyContainer', { read: ViewContainerRef, static: false }) bodyContainer: ViewContainerRef;\n    // Only aim to focus the ok button that needs to be auto focused\n    @ViewChildren('autoFocusedButton', { read: ElementRef }) autoFocusedButtons: QueryList<ElementRef>;\n\n    @ViewChild('modalBody') modalBody: ElementRef;\n\n    isTopOverflow: boolean = false;\n    isBottomOverflow: boolean = false;\n\n    maskAnimationClassMap: object | null;\n    modalAnimationClassMap: object | null;\n    // The origin point that animation based on\n    transformOrigin = '0px 0px 0px';\n\n    // Observable alias for kbqAfterOpen\n    get afterOpen(): Observable<void> {\n        return this.kbqAfterOpen.asObservable();\n    }\n\n    /** Observable alias for `kbqBeforeClose` */\n    get beforeClose(): Observable<R | undefined> {\n        return this.kbqBeforeClose.asObservable();\n    }\n\n    // Observable alias for kbqAfterClose\n    get afterClose(): Observable<R | undefined> {\n        return this.kbqAfterClose.asObservable();\n    }\n\n    get okText(): string {\n        return this.kbqOkText;\n    }\n\n    get cancelText(): string {\n        return this.kbqCancelText;\n    }\n\n    // Indicate whether this dialog should hidden\n    get hidden(): boolean {\n        return !this.kbqVisible && !this.animationState;\n    }\n\n    private focusedElementBeforeOpen: HTMLElement | null;\n\n    private previouslyFocusedElementOrigin: FocusOrigin;\n\n    // Handle the reference when using kbqContent as Component\n    private contentComponentRef: ComponentRef<T>;\n    // Current animation state\n    private animationState: AnimationState;\n    private container: HTMLElement | OverlayRef;\n\n    constructor(\n        private overlay: Overlay,\n        private renderer: Renderer2,\n        private cfr: ComponentFactoryResolver,\n        private elementRef: ElementRef<HTMLElement>,\n        private viewContainer: ViewContainerRef,\n        private modalControl: KbqModalControlService,\n        private changeDetector: ChangeDetectorRef,\n        private focusMonitor: FocusMonitor\n    ) {\n        super();\n    }\n\n    @Input() kbqGetContainer: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) = () => this.overlay.create();\n\n    // [NOTE] NOT available when using by service!\n    // Because ngOnChanges never be called when using by service,\n    // here we can't support \"kbqContent\"(Component) etc. as inputs that initialized dynamically.\n    // BUT: User also can change \"kbqContent\" dynamically to trigger UI changes\n    // (provided you don't use \bComponent that needs initializations)\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.kbqVisible) {\n            // Do not trigger animation while initializing\n            this.handleVisibleStateChange(this.kbqVisible, !changes.kbqVisible.firstChange);\n        }\n    }\n\n    ngOnInit() {\n        // Create component along without View\n        if (this.isComponent(this.kbqContent)) {\n            this.createDynamicComponent(this.kbqContent as Type<T>);\n        }\n\n        // Setup default button options\n        if (this.isModalButtons(this.kbqFooter)) {\n            this.kbqFooter = this.formatModalButtons(this.kbqFooter as IModalButtonOptions<T>[]);\n        }\n\n        if (this.isComponent(this.kbqComponent)) {\n            this.createDynamicComponent(this.kbqComponent);\n        }\n\n        // Place the modal dom to elsewhere\n        this.container = typeof this.kbqGetContainer === 'function' ? this.kbqGetContainer() : this.kbqGetContainer;\n\n        if (this.container instanceof HTMLElement) {\n            this.container.appendChild(this.elementRef.nativeElement);\n        } else if (this.container instanceof OverlayRef) {\n            // NOTE: only attach the dom to overlay, the view container is not changed actually\n            this.container.overlayElement.appendChild(this.elementRef.nativeElement);\n        }\n\n        // Register modal when afterOpen/afterClose is stable\n        this.modalControl.registerModal(this);\n    }\n\n    ngAfterViewInit() {\n        // If using Component, it is the time to attach View while bodyContainer is ready\n        if (this.contentComponentRef) {\n            this.bodyContainer.insert(this.contentComponentRef.hostView);\n        }\n\n        this.getElement().getElementsByTagName('button')[0]?.focus();\n\n        (this.getElement().querySelector('button[autofocus]') as HTMLButtonElement)?.focus();\n\n        this.checkOverflow();\n    }\n\n    ngOnDestroy() {\n        if (this.container instanceof OverlayRef) {\n            this.container.dispose();\n        }\n    }\n\n    checkOverflow(): void {\n        const nativeElement: HTMLElement = this.modalBody?.nativeElement;\n\n        if (!nativeElement) {\n            return;\n        }\n\n        const { scrollTop, offsetHeight, scrollHeight } = nativeElement;\n\n        this.isTopOverflow = scrollTop > 0;\n\n        this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;\n    }\n\n    open() {\n        this.focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n        this.previouslyFocusedElementOrigin = this.focusMonitor['_lastFocusOrigin'];\n\n        this.focusMonitor\n            .monitor(this.modalContainer, true)\n            .pipe(take(1))\n            .subscribe(() => this.focusMonitor.stopMonitoring(this.modalContainer));\n\n        this.changeVisibleFromInside(true);\n    }\n\n    close(result?: R) {\n        this.changeVisibleFromInside(false, result).then(() => {\n            if (this.kbqRestoreFocus && this.focusedElementBeforeOpen) {\n                this.focusMonitor.focusVia(\n                    this.focusedElementBeforeOpen as HTMLElement,\n                    this.previouslyFocusedElementOrigin\n                );\n\n                this.focusedElementBeforeOpen = null;\n            }\n        });\n    }\n\n    // Destroy equals Close\n    destroy(result?: R) {\n        this.close(result);\n    }\n\n    markForCheck() {\n        this.changeDetector.markForCheck();\n    }\n\n    triggerOk() {\n        this.onClickOkCancel('ok');\n    }\n\n    triggerCancel() {\n        this.onClickOkCancel('cancel');\n    }\n\n    getInstance(): KbqModalComponent {\n        return this;\n    }\n\n    getContentComponentRef(): ComponentRef<T> {\n        return this.contentComponentRef;\n    }\n\n    getContentComponent(): T {\n        return this.contentComponentRef && this.contentComponentRef.instance;\n    }\n\n    getElement(): HTMLElement {\n        return this.elementRef && this.elementRef.nativeElement;\n    }\n\n    getKbqFooter(): HTMLElement {\n        return this.getElement().getElementsByClassName('kbq-modal-footer').item(0) as HTMLElement;\n    }\n\n    onClickMask($event: MouseEvent) {\n        if (\n            this.kbqMask &&\n            this.kbqMaskClosable &&\n            ($event.target as HTMLElement).classList.contains('kbq-modal-wrap') &&\n            this.kbqVisible\n        ) {\n            this.onClickOkCancel('cancel');\n        }\n    }\n\n    isModalType(type: ModalType): boolean {\n        return this.kbqModalType === type;\n    }\n\n    onKeyDown(event: KeyboardEvent): void {\n        if (event.keyCode === ESCAPE && this.container && this.container instanceof OverlayRef) {\n            this.close();\n            event.preventDefault();\n        }\n\n        if (event.ctrlKey && event.keyCode === ENTER) {\n            if (this.kbqModalType === 'confirm') {\n                this.triggerOk();\n            }\n\n            (this.getElement().querySelector('[kbq-modal-main-action]') as HTMLElement)?.click();\n\n            event.preventDefault();\n        }\n    }\n\n    // AoT\n    onClickCloseBtn() {\n        if (this.kbqVisible) {\n            this.onClickOkCancel('cancel');\n        }\n    }\n\n    // AoT\n    onClickOkCancel(type: 'ok' | 'cancel') {\n        this.handleCloseResult(type, (doClose) => doClose !== false);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    handleCloseResult(triggerType: 'ok' | 'cancel', canClose: (doClose: boolean | void | {}) => boolean) {\n        const trigger = { ok: this.kbqOnOk, cancel: this.kbqOnCancel }[triggerType];\n        const loadingKey = { ok: 'kbqOkLoading', cancel: 'kbqCancelLoading' }[triggerType];\n\n        if (trigger instanceof EventEmitter) {\n            trigger.emit(this.getContentComponent());\n        } else if (typeof trigger === 'function') {\n            const result = trigger(this.getContentComponent());\n            // Users can return \"false\" to prevent closing by default\n            // eslint-disable-next-line @typescript-eslint/ban-types\n            const caseClose = (doClose: boolean | void | {}) => canClose(doClose) && this.close(doClose as R);\n\n            if (isPromise(result)) {\n                this[loadingKey] = true;\n\n                const handleThen = (doClose) => {\n                    this[loadingKey] = false;\n                    caseClose(doClose);\n                };\n\n                (result as Promise<void>).then(handleThen).catch(handleThen);\n            } else {\n                caseClose(result);\n            }\n        }\n    }\n\n    // AoT\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    isNonEmptyString(value: {}): boolean {\n        return typeof value === 'string' && value !== '';\n    }\n\n    // AoT\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    isTemplateRef(value: {}): boolean {\n        return value instanceof TemplateRef;\n    }\n\n    // AoT\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    isComponent(value: {}): boolean {\n        return value instanceof Type;\n    }\n\n    // AoT\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    isModalButtons(value: {}): boolean {\n        return Array.isArray(value) && value.length > 0;\n    }\n\n    // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.\n    // AoT\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    getButtonCallableProp(options: IModalButtonOptions<T>, prop: string): {} {\n        const value = options[prop];\n        const args: any[] = [];\n\n        if (this.contentComponentRef) {\n            args.push(this.contentComponentRef.instance);\n        }\n\n        return typeof value === 'function' ? value.apply(options, args) : value;\n    }\n\n    // On kbqFooter's modal button click\n    // AoT\n    onButtonClick(button: IModalButtonOptions<T>) {\n        // Call onClick directly\n        const result = this.getButtonCallableProp(button, 'onClick');\n\n        if (isPromise(result)) {\n            button.loading = true;\n            // eslint-disable-next-line @typescript-eslint/ban-types\n            (result as Promise<{}>).then(() => (button.loading = false)).catch(() => (button.loading = false));\n        }\n    }\n\n    /**\n     * Sets mask animation classes for the given state, or clears them if state is null.\n     * @docs-private\n     */\n    animateMaskTo(state: AnimationState) {\n        this.maskAnimationClassMap = state\n            ? {\n                  [`fade-${state}`]: true,\n                  [`fade-${state}-active`]: true\n              }\n            : null;\n    }\n\n    // Do rest things when visible state changed\n    private handleVisibleStateChange(visible: boolean, animation: boolean = true, closeResult?: R): Promise<any> {\n        // Hide scrollbar at the first time when shown up\n        if (visible) {\n            this.changeBodyOverflow(1);\n        } else {\n            this.kbqBeforeClose.emit(closeResult);\n        }\n\n        return (\n            Promise.resolve(animation && this.animateTo(visible))\n                // Emit open/close event after animations over\n                .then(() => {\n                    if (visible) {\n                        this.kbqAfterOpen.emit();\n                    } else {\n                        this.kbqAfterClose.emit(closeResult);\n                        // Show/hide scrollbar when animation is over\n                        this.changeBodyOverflow();\n                    }\n                })\n        );\n    }\n\n    // Change kbqVisible from inside\n    private changeVisibleFromInside(visible: boolean, closeResult?: R): Promise<void> {\n        if (this.kbqVisible !== visible) {\n            // Change kbqVisible value immediately\n            this.kbqVisible = visible;\n            this.kbqVisibleChange.emit(visible);\n\n            return this.handleVisibleStateChange(visible, true, closeResult);\n        }\n\n        return Promise.resolve();\n    }\n\n    private changeAnimationState(state: AnimationState) {\n        this.animationState = state;\n\n        this.animateMaskTo(state);\n\n        if (state) {\n            this.modalAnimationClassMap = {\n                [`zoom-${state}`]: true,\n                [`zoom-${state}-active`]: true\n            };\n        } else {\n            this.modalAnimationClassMap = null;\n        }\n\n        if (this.contentComponentRef) {\n            this.contentComponentRef.changeDetectorRef.markForCheck();\n        } else {\n            this.changeDetector.markForCheck();\n        }\n    }\n\n    private animateTo(isVisible: boolean): Promise<any> {\n        // Figure out the latest click position when shows up\n        if (isVisible) {\n            // [NOTE] Using timeout due to the document.click event is fired later than visible change,\n            // so if not postponed to next event-loop, we can't get the latest click position\n            setTimeout(() => this.updateTransformOrigin());\n        }\n\n        this.changeAnimationState(isVisible ? 'enter' : 'leave');\n\n        // Return when animation is over\n        return new Promise((resolve) => {\n            return setTimeout(() => {\n                this.changeAnimationState(null);\n                resolve(null);\n            }, MODAL_ANIMATE_DURATION);\n        });\n    }\n\n    private formatModalButtons(buttons: IModalButtonOptions<T>[]): IModalButtonOptions<T>[] {\n        return buttons.map((button) => {\n            return {\n                ...{\n                    type: 'default',\n                    size: 'default',\n                    autoLoading: true,\n                    show: true,\n                    loading: false,\n                    disabled: false\n                },\n                ...button\n            };\n        });\n    }\n\n    /**\n     * Create a component dynamically but not attach to any View\n     * (this action will be executed when bodyContainer is ready)\n     * @param component Component class\n     */\n    private createDynamicComponent(component: Type<T>) {\n        const factory = this.cfr.resolveComponentFactory(component);\n        const childInjector = Injector.create({\n            providers: [{ provide: KbqModalRef, useValue: this }],\n            parent: this.viewContainer.injector\n        });\n\n        this.contentComponentRef = factory.create(childInjector);\n\n        if (this.kbqComponentParams) {\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            Object.assign(this.contentComponentRef.instance, this.kbqComponentParams);\n        }\n\n        // Do the first change detection immediately\n        // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)\n        this.contentComponentRef.changeDetectorRef.detectChanges();\n    }\n\n    // Update transform-origin to the last click position on document\n    private updateTransformOrigin() {\n        const modalElement = this.modalContainer.nativeElement as HTMLElement;\n        const lastPosition = ModalUtil.getLastClickPosition();\n\n        if (lastPosition) {\n            this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;\n        }\n    }\n\n    /**\n     * Take care of the body's overflow to decide the existence of scrollbar\n     * @param plusNum The number that the openModals.length will increase soon\n     */\n    private changeBodyOverflow(plusNum: number = 0) {\n        const openModals = this.modalControl.openModals;\n\n        if (openModals.length + plusNum > 0) {\n            this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n        } else {\n            this.renderer.removeStyle(this.document.body, 'overflow');\n        }\n    }\n}\n\nfunction isPromise(obj: unknown | void): boolean {\n    return (\n        !!obj &&\n        (typeof obj === 'object' || typeof obj === 'function') &&\n        typeof (obj as Promise<unknown>).then === 'function' &&\n        typeof (obj as Promise<unknown>).catch === 'function'\n    );\n}\n","<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n    <ng-content />\n</ng-template>\n\n<div>\n    @if (kbqMask) {\n        <div\n            class=\"kbq-modal-mask\"\n            [class.kbq-modal-mask-hidden]=\"hidden\"\n            [ngClass]=\"maskAnimationClassMap\"\n            [ngStyle]=\"kbqMaskStyle\"\n        ></div>\n    }\n\n    <div\n        class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n        tabindex=\"-1\"\n        [style.display]=\"hidden ? 'none' : ''\"\n        (mousedown)=\"onClickMask($event)\"\n    >\n        <div\n            #modalContainer\n            class=\"kbq-modal-container {{ kbqClassName }} kbq-modal_{{ kbqSize }}\"\n            [class.kbq-modal_no-footer]=\"!kbqFooter\"\n            [ngClass]=\"modalAnimationClassMap\"\n            [ngStyle]=\"kbqStyle\"\n            [style.transform-origin]=\"transformOrigin\"\n            [style.width]=\"kbqWidth | toCssUnit\"\n        >\n            <div cdkTrapFocus class=\"kbq-modal-content\">\n                @switch (true) {\n                    @case (isModalType('default')) {\n                        <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n                    }\n                    @case (isModalType('confirm')) {\n                        <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n                    }\n                    @case (isModalType('custom')) {\n                        <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n                    }\n                }\n            </div>\n        </div>\n    </div>\n</div>\n\n<ng-template #tplContentCustom>\n    <ng-container #bodyContainer />\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n    @if (kbqTitle) {\n        <div kbq-title class=\"kbq-modal-header\" [class.kbq-modal-body_top-overflow]=\"isTopOverflow\">\n            <div class=\"kbq-modal-title\">\n                @switch (true) {\n                    @case (isTemplateRef(kbqTitle)) {\n                        <ng-container [ngTemplateOutlet]=\"$any(kbqTitle)\" />\n                    }\n                    @case (isNonEmptyString(kbqTitle)) {\n                        <div [innerHTML]=\"kbqTitle\"></div>\n                    }\n                }\n            </div>\n            @if (kbqClosable) {\n                <button\n                    kbq-button\n                    type=\"button\"\n                    class=\"kbq-modal-close kbq-button_transparent\"\n                    [color]=\"'contrast'\"\n                    (click)=\"onClickCloseBtn()\"\n                >\n                    <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n                </button>\n            }\n        </div>\n    }\n    <div #modalBody class=\"kbq-modal-body kbq-scrollbar\" [ngStyle]=\"kbqBodyStyle\" (scroll)=\"checkOverflow()\">\n        <ng-container #bodyContainer>\n            @if (!isComponent(kbqContent)) {\n                @switch (true) {\n                    @case (isTemplateRef(kbqContent)) {\n                        <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n                    }\n                    @case (isNonEmptyString(kbqContent)) {\n                        <div [innerHTML]=\"kbqContent\"></div>\n                    }\n                    @default {\n                        <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n                    }\n                }\n            }\n        </ng-container>\n    </div>\n    @if (kbqFooter || kbqOkText || kbqCancelText) {\n        <div class=\"kbq-modal-footer\" [class.kbq-modal-body_bottom-overflow]=\"isBottomOverflow\">\n            @switch (true) {\n                @case (isTemplateRef(kbqFooter)) {\n                    <ng-container [ngTemplateOutlet]=\"$any(kbqFooter)\" />\n                }\n                @case (isNonEmptyString(kbqFooter)) {\n                    <div [innerHTML]=\"kbqFooter\"></div>\n                }\n                @case (isModalButtons(kbqFooter)) {\n                    @for (button of $any(kbqFooter); track button) {\n                        @if (getButtonCallableProp(button, 'show')) {\n                            <button\n                                kbq-button\n                                [attr.autofocus]=\"button.autoFocus\"\n                                [attr.kbq-modal-main-action]=\"button.kbqModalMainAction\"\n                                [class.kbq-progress]=\"getButtonCallableProp(button, 'loading')\"\n                                [color]=\"button.type\"\n                                [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n                                (click)=\"onButtonClick(button)\"\n                            >\n                                {{ button.label }}\n                            </button>\n                        }\n                    }\n                }\n                @default {\n                    @if (kbqOkText) {\n                        <button\n                            kbq-button\n                            [attr.autofocus]=\"true\"\n                            [color]=\"componentColors.Contrast\"\n                            (click)=\"onClickOkCancel('ok')\"\n                        >\n                            {{ okText }}\n                        </button>\n                    }\n                    @if (kbqCancelText) {\n                        <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n                            {{ cancelText }}\n                        </button>\n                    }\n                }\n            }\n        </div>\n    }\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n    <div class=\"kbq-modal-body\" [ngStyle]=\"kbqBodyStyle\">\n        <ng-container #bodyContainer>\n            @if (!isComponent(kbqContent)) {\n                @switch (true) {\n                    @case (isTemplateRef(kbqContent)) {\n                        <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n                    }\n                    @case (isNonEmptyString(kbqContent)) {\n                        <div [innerHTML]=\"kbqContent\"></div>\n                    }\n                    @default {\n                        <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n                    }\n                }\n            }\n        </ng-container>\n    </div>\n    @if (kbqOkText || kbqCancelText) {\n        <div class=\"kbq-confirm-footer\">\n            @if (kbqOkText) {\n                <button kbq-button [attr.autofocus]=\"true\" [color]=\"kbqOkType\" (click)=\"onClickOkCancel('ok')\">\n                    {{ okText }}\n                </button>\n            }\n            @if (kbqCancelText) {\n                <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n                    {{ cancelText }}\n                </button>\n            }\n        </div>\n    }\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n","import { Component, Directive } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqModalComponent } from './modal.component';\n\n@Component({\n    selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\n    imports: [\n        KbqIconModule,\n        KbqButtonModule,\n        KbqTitleDirective\n    ],\n    template: `\n        <div class=\"kbq-modal-title\" kbq-title>\n            <ng-content />\n        </div>\n\n        @if (modal.kbqClosable) {\n            <button\n                class=\"kbq-modal-close kbq-button_transparent\"\n                type=\"button\"\n                kbq-button\n                [color]=\"'contrast'\"\n                (click)=\"modal.onClickCloseBtn()\"\n            >\n                <i kbq-icon=\"kbq-xmark_16\" [color]=\"modal.componentColors.Contrast\"></i>\n            </button>\n        }\n    `,\n    host: {\n        class: 'kbq-modal-header',\n        '[class.kbq-modal-header_closable]': 'modal.kbqClosable'\n    }\n})\nexport class KbqModalTitle {\n    constructor(protected modal: KbqModalComponent) {}\n}\n\n@Directive({\n    selector: `[kbq-modal-body], kbq-modal-body, [kbqModalBody]`,\n    host: {\n        class: 'kbq-modal-body'\n    }\n})\nexport class KbqModalBody {}\n\n@Directive({\n    selector: `[kbq-modal-footer], kbq-modal-footer, [kbqModalFooter]`,\n    host: {\n        class: 'kbq-modal-footer'\n    }\n})\nexport class KbqModalFooter {}\n\n@Directive({\n    selector: `[kbq-modal-main-action]`\n})\nexport class KbqModalMainAction {}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector, isDevMode } from '@angular/core';\nimport { ESCAPE } from '@koobiq/cdk/keycodes';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { ConfirmType, IModalOptionsForService, ModalOptions } from './modal.type';\n\n/** Injection token that can be used to access the data that was passed in to a modal. */\nexport const KBQ_MODAL_DATA = new InjectionToken<unknown>('KbqModalData');\n\n/**\n * A builder used for managing service creating modals\n * @docs-private\n */\nexport class ModalBuilderForService {\n    // Modal ComponentRef, \"null\" means it has been destroyed\n    private modalRef: ComponentRef<KbqModalComponent> | null;\n    private overlayRef: OverlayRef;\n\n    constructor(\n        private readonly overlay: Overlay,\n        readonly options: IModalOptionsForService = {},\n        private readonly injector: Injector\n    ) {\n        this.createModal();\n\n        if (!('kbqGetContainer' in options)) {\n            options.kbqGetContainer = undefined;\n        }\n\n        this.changeProps(options);\n\n        // Defers ESC handling until the modal is fully open, avoiding premature close during the opening animation.\n        this.modalRef!.instance.kbqAfterOpen.pipe(\n            switchMap(() => this.overlayRef.keydownEvents()),\n            filter((event: KeyboardEvent) => {\n                return !!(event.keyCode === ESCAPE && options.kbqCloseByESC);\n            })\n        ).subscribe(() => this.getInstance()?.handleCloseResult('cancel', () => true));\n\n        this.modalRef!.instance.open();\n        this.modalRef!.instance.kbqAfterClose.subscribe(() => this.destroyModal());\n    }\n\n    getInstance(): KbqModalComponent | null {\n        return this.modalRef && this.modalRef.instance;\n    }\n\n    destroyModal(): void {\n        if (this.modalRef) {\n            this.overlayRef.dispose();\n            this.modalRef = null;\n        }\n    }\n\n    private changeProps(options: ModalOptions): void {\n        if (this.modalRef) {\n            // here not limit user's inputs at runtime\n            Object.assign(this.modalRef.instance, options);\n        }\n    }\n\n    // Create component to ApplicationRef\n    private createModal(): void {\n        this.overlayRef = this.overlay.create();\n        this.overlayRef.hostElement.classList.add('kbq-modal-overlay');\n\n        this.modalRef = this.overlayRef.attach(new ComponentPortal(KbqModalComponent, undefined, this.injector));\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class KbqModalService {\n    // Track of the current close modals (we assume invisible is close this time)\n    get openModals(): KbqModalRef[] {\n        return this.modalControl.openModals;\n    }\n\n    get afterAllClose(): Observable<void> {\n        return this.modalControl.afterAllClose.asObservable();\n    }\n\n    constructor(\n        private readonly overlay: Overlay,\n        private readonly modalControl: KbqModalControlService,\n        private injector: Injector\n    ) {}\n\n    // Closes all of the currently-open dialogs\n    closeAll(): void {\n        this.modalControl.closeAll();\n    }\n\n    create<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n        if (typeof options.kbqOnCancel !== 'function') {\n            // Leave an empty function to close this modal by default\n            options.kbqOnCancel = () => {};\n        }\n\n        if (typeof options.kbqOnOk !== 'function') {\n            // Leave an empty function to close this modal by default\n            options.kbqOnOk = () => {};\n        }\n\n        if (!('kbqCloseByESC' in options)) {\n            options.kbqCloseByESC = true;\n        }\n\n        // Remove the Cancel button if the user not specify a Cancel button\n        if (!('kbqCancelText' in options)) {\n            options.kbqCancelText = undefined;\n        }\n\n        // Remove the Ok button if the user not specify an Ok button\n        if (!('kbqOkText' in options)) {\n            options.kbqOkText = undefined;\n        }\n\n        // Remove the footer if the user not specify a footer\n        if (!('kbqFooter' in options)) {\n            options.kbqFooter = undefined;\n        }\n\n        const injector = Injector.create({\n            parent: options.injector || this.injector,\n            providers: [{ provide: KBQ_MODAL_DATA, useValue: options.data }]\n        });\n\n        return new ModalBuilderForService(this.overlay, options, injector).getInstance()!;\n    }\n\n    confirm<C, R = unknown>(\n        options: IModalOptionsForService<C> = {},\n        confirmType: ConfirmType = 'confirm'\n    ): KbqModalRef<C, R> {\n        if ('kbqFooter' in options && isDevMode()) {\n            // eslint-disable-next-line no-console\n            console.warn(`The Confirm-Modal doesn't support \"kbqFooter\", this property will be ignored.`);\n        }\n\n        // NOTE: only support function currently by calling confirm()\n        if (typeof options.kbqOnOk !== 'function') {\n            // Leave an empty function to close this modal by default\n            options.kbqOnOk = () => {};\n        }\n\n        options.kbqModalType = 'confirm';\n        options.kbqClassName = `kbq-confirm kbq-confirm-${confirmType} ${options.kbqClassName || ''}`;\n\n        return this.create<C, R>(options);\n    }\n\n    open<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n        options.kbqModalType = 'custom';\n\n        return this.create<C, R>(options);\n    }\n\n    success<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n        return this.confirm<C, R>(options, 'success');\n    }\n\n    delete<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n        return this.confirm<C, R>(options, 'warn');\n    }\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalComponent } from './modal.component';\nimport { KbqModalBody, KbqModalFooter, KbqModalMainAction, KbqModalTitle } from './modal.directive';\nimport { KbqModalService } from './modal.service';\n\n@NgModule({\n    imports: [\n        OverlayModule,\n        A11yModule,\n        KbqButtonModule,\n        KbqIconModule,\n        KbqTitleModule,\n        NgTemplateOutlet,\n        NgStyle,\n        NgClass,\n        KbqModalComponent,\n        KbqModalTitle,\n        KbqModalBody,\n        KbqModalFooter,\n        CssUnitPipe,\n        KbqModalMainAction\n    ],\n    exports: [\n        KbqModalComponent,\n        KbqModalTitle,\n        KbqModalBody,\n        KbqModalFooter,\n        KbqModalMainAction\n    ],\n    providers: [\n        KbqModalControlService,\n        KbqModalService,\n        { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }\n    ]\n})\nexport class KbqModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ModalUtil","i2.KbqModalControlService","i1.KbqModalComponent","i2","i3"],"mappings":";;;;;;;;;;;;;;;;;;;AAGA;;;AAGG;MACmB,WAAW,CAAA;AA8ChC;;MChDY,WAAW,CAAA;AACpB,IAAA,SAAS,CAAC,KAAsB,EAAE,WAAA,GAAsB,IAAI,EAAA;AACxD,QAAA,MAAM,SAAS,GAAG,CAAC,KAAK;AAExB,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,WAAW,EAAE;IACvE;kIALS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gIAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE;AACT,iBAAA;;;ICQW;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EAJW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AAMrB;;;AAGG;AACI,MAAM,sBAAsB,GAAG;;MCTzB,sBAAsB,CAAA;;AAE/B,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB;IACzF;;AAGA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc;IACnF;;AAaA,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB;IACjG;AAEA,IAAA,WAAA,CAA4C,aAAqC,EAAA;QAArC,IAAA,CAAA,aAAa,GAAb,aAAa;;;AAbjD,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE;;;AAG9D,QAAA,IAAA,CAAA,iBAAiB,GAAkB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,OAAO,EAAQ;;;AAGlF,QAAA,IAAA,CAAA,qBAAqB,GAAsC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;IAOpB;;AAGpF,IAAA,aAAa,CAAC,QAAqB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChG,YAAA,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAElG,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,CAAC;AAEjG,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QACtC;IACJ;AAEA,IAAA,aAAa,CAAC,QAAqB,EAAA;QAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/C;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;QAE9B,OAAO,CAAC,EAAE,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;QAC9B;IACJ;AAEQ,IAAA,eAAe,CAAC,QAAqB,EAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AAE/C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAEhC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AAC9B,gBAAA,MAAM,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAE;gBAE/F,qBAAqB,CAAC,WAAW,EAAE;gBACnC,sBAAsB,CAAC,WAAW,EAAE;AAEpC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3C;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACzB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC7B;QACJ;IACJ;AAEQ,IAAA,mBAAmB,CAAC,QAAqB,EAAA;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAwB;AAExG,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,MAAM,qBAAqB,GAAG;iBACzB,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;AAC3B,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC;;AAGzD,YAAA,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACpC,UAAU,CAAC,MAAK;oBACZ,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,oBAAA,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,GAAG,KAAK;oBACnC,KAAK,CAAC,YAAY,EAAE;gBACxB,CAAC,EAAE,sBAAsB,CAAC;gBAE1B,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;gBAC1C,KAAK,CAAC,YAAY,EAAE;AACxB,YAAA,CAAC,CAAC;;AAGF,YAAA,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAChC,gBAAA,qBAAqB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBACpC,UAAU,CAAC,MAAK;wBACZ,QAAQ,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1C,wBAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,GAAG,KAAK;wBACtC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;wBACvC,KAAK,CAAC,YAAY,EAAE;oBACxB,CAAC,EAAE,sBAAsB,CAAC;oBAE1B,QAAQ,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,oBAAA,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,GAAG,IAAI;oBAClC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;oBAE1C,KAAK,CAAC,YAAY,EAAE;AACxB,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;kIAhHS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BA2BjB;;0BAAY;;;ACjC7B;MACa,SAAS,CAAA;AAGlB,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAA,CAAA,QAAQ,GAAR,QAAQ;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;QACpC,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEA,oBAAoB,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEA,mBAAmB,GAAA;QACf,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAiB,KAAI;AAC3D,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;AAC9D,QAAA,CAAC,CAAC;IACN;AACH;AAED;AACO,MAAM,eAAe,GAAG,IAAI,SAAS;AACxC;AACA;AACA,OAAO,QAAQ,KAAK,WAAW,GAAG,SAAS,GAAG,QAAQ,CACzD;;ACwCK,MAAO,iBACT,SAAQ,WAAiB,CAAA;AAoBzB,IAAA,IACI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IACA,IAAI,UAAU,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAeA,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IACA,IAAI,WAAW,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC7B;AAGA,IAAA,IACI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IACA,IAAI,OAAO,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;AAGA,IAAA,IACI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB;IAChC;IACA,IAAI,eAAe,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IACjC;AAmBA,IAAA,IACI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa;IAC7B;IACA,IAAI,YAAY,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;AAMA,IAAA,IACI,gBAAgB,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB;IACjC;IACA,IAAI,gBAAgB,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAClC;;AAqBA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;IAC3C;;AAGA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC7C;;AAGA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IAC5C;AAEA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;IAC7B;;AAGA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;IACnD;AAYA,IAAA,WAAA,CACY,OAAgB,EAChB,QAAmB,EACnB,GAA6B,EAC7B,UAAmC,EACnC,aAA+B,EAC/B,YAAoC,EACpC,cAAiC,EACjC,YAA0B,EAAA;AAElC,QAAA,KAAK,EAAE;QATC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,YAAY,GAAZ,YAAY;AArKL,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;QAExD,IAAA,CAAA,eAAe,GAAG,kBAAkB;QAE3B,IAAA,CAAA,YAAY,GAAc,SAAS;QAqBpC,IAAA,CAAA,WAAW,GAAG,KAAK;AAER,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW;AAGxD,QAAA,IAAA,CAAA,OAAO,GAAc,SAAS,CAAC,MAAM;QAMrC,IAAA,CAAA,aAAa,GAAY,IAAI;QAS9B,IAAA,CAAA,YAAY,GAAG,IAAI;QASnB,IAAA,CAAA,QAAQ,GAAG,IAAI;QASf,IAAA,CAAA,gBAAgB,GAAG,KAAK;;AAMb,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;;AAEvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAiB;;AAEjD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAiB;AAI5D,QAAA,IAAA,CAAA,SAAS,GAAG,kBAAkB,CAAC,QAAQ;QAEvC,IAAA,CAAA,eAAe,GAAG,IAAI;QASvB,IAAA,CAAA,aAAa,GAAG,KAAK;AAED,QAAA,IAAA,CAAA,OAAO,GAAyC,IAAI,YAAY,EAAK;QAUzF,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAEL,QAAA,IAAA,CAAA,WAAW,GAAyC,IAAI,YAAY,EAAK;QASrG,IAAA,CAAA,aAAa,GAAY,KAAK;QAC9B,IAAA,CAAA,gBAAgB,GAAY,KAAK;;QAKjC,IAAA,CAAA,eAAe,GAAG,aAAa;QAqDtB,IAAA,CAAA,eAAe,GAAgE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;IAFnH;;;;;;AASA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;;AAEpB,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QACnF;IACJ;IAEA,QAAQ,GAAA;;QAEJ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAqB,CAAC;QAC3D;;QAGA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAqC,CAAC;QACxF;QAEA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;QAClD;;QAGA,IAAI,CAAC,SAAS,GAAG,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe;AAE3G,QAAA,IAAI,IAAI,CAAC,SAAS,YAAY,WAAW,EAAE;YACvC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC7D;AAAO,aAAA,IAAI,IAAI,CAAC,SAAS,YAAY,UAAU,EAAE;;AAE7C,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5E;;AAGA,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC;IACzC;IAEA,eAAe,GAAA;;AAEX,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAChE;AAEA,QAAA,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;QAE3D,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAuB,EAAE,KAAK,EAAE;QAEpF,IAAI,CAAC,aAAa,EAAE;IACxB;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,YAAY,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QAC5B;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,MAAM,aAAa,GAAgB,IAAI,CAAC,SAAS,EAAE,aAAa;QAEhE,IAAI,CAAC,aAAa,EAAE;YAChB;QACJ;QAEA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,aAAa;AAE/D,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,GAAG,CAAC;QAElC,IAAI,CAAC,gBAAgB,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY;IACnE;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,wBAAwB,GAAG,iCAAiC,EAAE;QACnE,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAE3E,QAAA,IAAI,CAAC;AACA,aAAA,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACtC;AAEA,IAAA,KAAK,CAAC,MAAU,EAAA;QACZ,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAK;YAClD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CACtB,IAAI,CAAC,wBAAuC,EAC5C,IAAI,CAAC,8BAA8B,CACtC;AAED,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;YACxC;AACJ,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,OAAO,CAAC,MAAU,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACtB;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IACtC;IAEA,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC9B;IAEA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;IAClC;IAEA,WAAW,GAAA;AACP,QAAA,OAAO,IAAI;IACf;IAEA,sBAAsB,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB;IACnC;IAEA,mBAAmB,GAAA;QACf,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ;IACxE;IAEA,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa;IAC3D;IAEA,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAgB;IAC9F;AAEA,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC1B,IACI,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,eAAe;YACnB,MAAM,CAAC,MAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnE,IAAI,CAAC,UAAU,EACjB;AACE,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAClC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI;IACrC;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,YAAY,UAAU,EAAE;YACpF,IAAI,CAAC,KAAK,EAAE;YACZ,KAAK,CAAC,cAAc,EAAE;QAC1B;QAEA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE;YACpB;YAEC,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAiB,EAAE,KAAK,EAAE;YAEpF,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAClC;IACJ;;AAGA,IAAA,eAAe,CAAC,IAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,OAAO,KAAK,OAAO,KAAK,KAAK,CAAC;IAChE;;IAGA,iBAAiB,CAAC,WAA4B,EAAE,QAAmD,EAAA;AAC/F,QAAA,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,WAAW,CAAC;AAElF,QAAA,IAAI,OAAO,YAAY,YAAY,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C;AAAO,aAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;;;AAGlD,YAAA,MAAM,SAAS,GAAG,CAAC,OAA4B,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAY,CAAC;AAEjG,YAAA,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAEvB,gBAAA,MAAM,UAAU,GAAG,CAAC,OAAO,KAAI;AAC3B,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;oBACxB,SAAS,CAAC,OAAO,CAAC;AACtB,gBAAA,CAAC;gBAEA,MAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAChE;iBAAO;gBACH,SAAS,CAAC,MAAM,CAAC;YACrB;QACJ;IACJ;;;AAIA,IAAA,gBAAgB,CAAC,KAAS,EAAA;QACtB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;IACpD;;;AAIA,IAAA,aAAa,CAAC,KAAS,EAAA;QACnB,OAAO,KAAK,YAAY,WAAW;IACvC;;;AAIA,IAAA,WAAW,CAAC,KAAS,EAAA;QACjB,OAAO,KAAK,YAAY,IAAI;IAChC;;;AAIA,IAAA,cAAc,CAAC,KAAS,EAAA;AACpB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;IACnD;;;;IAKA,qBAAqB,CAAC,OAA+B,EAAE,IAAY,EAAA;AAC/D,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAU,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAChD;AAEA,QAAA,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK;IAC3E;;;AAIA,IAAA,aAAa,CAAC,MAA8B,EAAA;;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC;AAE5D,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI;;AAEpB,YAAA,MAAsB,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QACtG;IACJ;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAqB,EAAA;QAC/B,IAAI,CAAC,qBAAqB,GAAG;AACzB,cAAE;AACI,gBAAA,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE,GAAG,IAAI;AACvB,gBAAA,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAA,OAAA,CAAS,GAAG;AAC7B;cACD,IAAI;IACd;;AAGQ,IAAA,wBAAwB,CAAC,OAAgB,EAAE,SAAA,GAAqB,IAAI,EAAE,WAAe,EAAA;;QAEzF,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9B;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;QACzC;AAEA,QAAA,QACI,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;aAE/C,IAAI,CAAC,MAAK;YACP,IAAI,OAAO,EAAE;AACT,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC5B;iBAAO;AACH,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;;gBAEpC,IAAI,CAAC,kBAAkB,EAAE;YAC7B;QACJ,CAAC,CAAC;IAEd;;IAGQ,uBAAuB,CAAC,OAAgB,EAAE,WAAe,EAAA;AAC7D,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE;;AAE7B,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;YAEnC,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC;QACpE;AAEA,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAC5B;AAEQ,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEzB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,sBAAsB,GAAG;AAC1B,gBAAA,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE,GAAG,IAAI;AACvB,gBAAA,CAAC,CAAA,KAAA,EAAQ,KAAK,CAAA,OAAA,CAAS,GAAG;aAC7B;QACL;aAAO;AACH,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACtC;AAEA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,YAAY,EAAE;QAC7D;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QACtC;IACJ;AAEQ,IAAA,SAAS,CAAC,SAAkB,EAAA;;QAEhC,IAAI,SAAS,EAAE;;;YAGX,UAAU,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClD;AAEA,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;;AAGxD,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC3B,OAAO,UAAU,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC,EAAE,sBAAsB,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,OAAiC,EAAA;AACxD,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YAC1B,OAAO;gBACH,GAAG;AACC,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,QAAQ,EAAE;AACb,iBAAA;AACD,gBAAA,GAAG;aACN;AACL,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;AACK,IAAA,sBAAsB,CAAC,SAAkB,EAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC3D,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrD,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC;AAC9B,SAAA,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AAExD,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;;;AAGzB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAC7E;;;AAIA,QAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAC9D;;IAGQ,qBAAqB,GAAA;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAA4B;AACrE,QAAA,MAAM,YAAY,GAAGA,eAAS,CAAC,oBAAoB,EAAE;QAErD,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,CAAA,EAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAA,GAAA,EAAM,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,QAAQ;QAC3H;IACJ;AAEA;;;AAGG;IACK,kBAAkB,CAAC,UAAkB,CAAC,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU;QAE/C,IAAI,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;QACpE;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAC7D;IACJ;kIA5kBS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,8zCA6GU,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAET,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtLzD,q9NAmLA,m2MD7HQ,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,mFACP,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,WAAW,kDACX,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,OAAA,EACZ;wBACL,YAAY;wBACZ,OAAO;wBACP,OAAO;wBACP,eAAe;wBACf,aAAa;wBACb,WAAW;wBACX;AACH,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,WAAW,EAAE;AAChB,qBAAA,EAAA,QAAA,EAAA,q9NAAA,EAAA,MAAA,EAAA,CAAA,0iKAAA,EAAA,+vCAAA,CAAA,EAAA;gSAUQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,YAAY,EAAA,CAAA;sBAApB;gBAGQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,kBAAkB,EAAA,CAAA;sBAA1B;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAGG,UAAU,EAAA,CAAA;sBADb;gBAUkB,gBAAgB,EAAA,CAAA;sBAAlC;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAGG,WAAW,EAAA,CAAA;sBADd;gBAUG,OAAO,EAAA,CAAA;sBADV;gBAUG,eAAe,EAAA,CAAA;sBADlB;gBASQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAGkB,YAAY,EAAA,CAAA;sBAA9B;gBAEkB,aAAa,EAAA,CAAA;sBAA/B;gBAEkB,cAAc,EAAA,CAAA;sBAAhC;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAGG,YAAY,EAAA,CAAA;sBADf;gBAS2B,OAAO,EAAA,CAAA;sBAAlC;;sBAAS;gBACD,aAAa,EAAA,CAAA;sBAArB;gBAGG,gBAAgB,EAAA,CAAA;sBADnB;gBAS2B,WAAW,EAAA,CAAA;sBAAtC;;sBAAS;gBAEqC,cAAc,EAAA,CAAA;sBAA5D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC0B,aAAa,EAAA,CAAA;sBAAnF,SAAS;uBAAC,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEZ,kBAAkB,EAAA,CAAA;sBAA1E,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAE/B,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBA6Db,eAAe,EAAA,CAAA;sBAAvB;;AAiaL,SAAS,SAAS,CAAC,GAAmB,EAAA;IAClC,QACI,CAAC,CAAC,GAAG;SACJ,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC;AACtD,QAAA,OAAQ,GAAwB,CAAC,IAAI,KAAK,UAAU;AACpD,QAAA,OAAQ,GAAwB,CAAC,KAAK,KAAK,UAAU;AAE7D;;ME1nBa,aAAa,CAAA;AACtB,IAAA,WAAA,CAAsB,KAAwB,EAAA;QAAxB,IAAA,CAAA,KAAK,GAAL,KAAK;IAAsB;kIADxC,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBZ;;;;;;;;;;;;;;;;AAgBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EApBG,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAwBZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBA7BzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,mDAAA,CAAqD;AAC/D,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,eAAe;wBACf;AACH,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;AAgBT,IAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,mCAAmC,EAAE;AACxC;AACJ,iBAAA;;MAWY,YAAY,CAAA;kIAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,gDAAA,CAAkD;AAC5D,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MASY,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,sDAAA,CAAwD;AAClE,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MAMY,kBAAkB,CAAA;kIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,CAAA,uBAAA;AACb,iBAAA;;;AC9CD;MACa,cAAc,GAAG,IAAI,cAAc,CAAU,cAAc;AAExE;;;AAGG;MACU,sBAAsB,CAAA;AAK/B,IAAA,WAAA,CACqB,OAAgB,EACxB,OAAA,GAAmC,EAAE,EAC7B,QAAkB,EAAA;QAFlB,IAAA,CAAA,OAAO,GAAP,OAAO;QACf,IAAA,CAAA,OAAO,GAAP,OAAO;QACC,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAEzB,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,EAAE,iBAAiB,IAAI,OAAO,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,eAAe,GAAG,SAAS;QACvC;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;;QAGzB,IAAI,CAAC,QAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CACrC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAChD,MAAM,CAAC,CAAC,KAAoB,KAAI;AAC5B,YAAA,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;QAChE,CAAC,CAAC,CACL,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;AAE9E,QAAA,IAAI,CAAC,QAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9B,QAAA,IAAI,CAAC,QAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9E;IAEA,WAAW,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;IAClD;IAEA,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACxB;IACJ;AAEQ,IAAA,WAAW,CAAC,OAAqB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAClD;IACJ;;IAGQ,WAAW,GAAA;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACvC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAE9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5G;AACH;MAGY,eAAe,CAAA;;AAExB,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU;IACvC;AAEA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,EAAE;IACzD;AAEA,IAAA,WAAA,CACqB,OAAgB,EAChB,YAAoC,EAC7C,QAAkB,EAAA;QAFT,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,YAAY,GAAZ,YAAY;QACrB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACjB;;IAGH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAChC;IAEA,MAAM,CAAiB,UAAsC,EAAE,EAAA;AAC3D,QAAA,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE;;AAE3C,YAAA,OAAO,CAAC,WAAW,GAAG,MAAK,EAAE,CAAC;QAClC;AAEA,QAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;;AAEvC,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK,EAAE,CAAC;QAC9B;AAEA,QAAA,IAAI,EAAE,eAAe,IAAI,OAAO,CAAC,EAAE;AAC/B,YAAA,OAAO,CAAC,aAAa,GAAG,IAAI;QAChC;;AAGA,QAAA,IAAI,EAAE,eAAe,IAAI,OAAO,CAAC,EAAE;AAC/B,YAAA,OAAO,CAAC,aAAa,GAAG,SAAS;QACrC;;AAGA,QAAA,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,SAAS,GAAG,SAAS;QACjC;;AAGA,QAAA,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,SAAS,GAAG,SAAS;QACjC;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;AACzC,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;AAClE,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAG;IACrF;AAEA,IAAA,OAAO,CACH,OAAA,GAAsC,EAAE,EACxC,cAA2B,SAAS,EAAA;AAEpC,QAAA,IAAI,WAAW,IAAI,OAAO,IAAI,SAAS,EAAE,EAAE;;AAEvC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,6EAAA,CAA+E,CAAC;QACjG;;AAGA,QAAA,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE;;AAEvC,YAAA,OAAO,CAAC,OAAO,GAAG,MAAK,EAAE,CAAC;QAC9B;AAEA,QAAA,OAAO,CAAC,YAAY,GAAG,SAAS;AAChC,QAAA,OAAO,CAAC,YAAY,GAAG,CAAA,wBAAA,EAA2B,WAAW,CAAA,CAAA,EAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAA,CAAE;AAE7F,QAAA,OAAO,IAAI,CAAC,MAAM,CAAO,OAAO,CAAC;IACrC;IAEA,IAAI,CAAiB,UAAsC,EAAE,EAAA;AACzD,QAAA,OAAO,CAAC,YAAY,GAAG,QAAQ;AAE/B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAO,OAAO,CAAC;IACrC;IAEA,OAAO,CAAiB,UAAsC,EAAE,EAAA;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAO,OAAO,EAAE,SAAS,CAAC;IACjD;IAEA,MAAM,CAAiB,UAAsC,EAAE,EAAA;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAO,OAAO,EAAE,MAAM,CAAC;IAC9C;kIA5FS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MChCrB,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA5BnB,aAAa;YACb,UAAU;YACV,eAAe;YACf,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,OAAO;YACP,OAAO;YACP,iBAAiB;YACjB,aAAa;YACb,YAAY;YACZ,cAAc;YACd,WAAW;AACX,YAAA,kBAAkB,aAGlB,iBAAiB;YACjB,aAAa;YACb,YAAY;YACZ,cAAc;YACd,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAQb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,SAAA,EANZ;YACP,sBAAsB;YACtB,eAAe;AACf,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B;AACtE,SAAA,EAAA,OAAA,EAAA,CA1BG,aAAa;YACb,UAAU;YACV,eAAe;YACf,aAAa;YACb,cAAc;YAId,iBAAiB;YACjB,aAAa,CAAA,EAAA,CAAA,CAAA;;4FAmBR,cAAc,EAAA,UAAA,EAAA,CAAA;kBA9B1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,aAAa;wBACb,UAAU;wBACV,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,OAAO;wBACP,OAAO;wBACP,iBAAiB;wBACjB,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,WAAW;wBACX;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,sBAAsB;wBACtB,eAAe;AACf,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B;AACtE;AACJ,iBAAA;;;AC1CD;;AAEG;;;;"}