{"version":3,"file":"uniprank-ngx-file-uploader.mjs","sources":["../../../library/ngx-file-uploader/src/lib/classes/utils.class.ts","../../../library/ngx-file-uploader/src/lib/classes/file-object.class.ts","../../../library/ngx-file-uploader/src/lib/classes/file-manager.class.ts","../../../library/ngx-file-uploader/src/lib/interfaces/file-manager.interface.ts","../../../library/ngx-file-uploader/src/lib/directives/file-drop.directive.ts","../../../library/ngx-file-uploader/src/lib/directives/file-select.directive.ts","../../../library/ngx-file-uploader/src/lib/directives/img-preview.directive.ts","../../../library/ngx-file-uploader/src/lib/pipes/file-size.pipe.ts","../../../library/ngx-file-uploader/src/lib/directives/progress-bar.directive.ts","../../../library/ngx-file-uploader/src/lib/classes/protocol.class.ts","../../../library/ngx-file-uploader/src/lib/classes/uploader-hook.class.ts","../../../library/ngx-file-uploader/src/lib/classes/transfer.class.ts","../../../library/ngx-file-uploader/src/lib/classes/file-uploader.class.ts","../../../library/ngx-file-uploader/src/lib/classes/file-filter.class.ts","../../../library/ngx-file-uploader/src/lib/services/angular-file-upload.protocol.ts","../../../library/ngx-file-uploader/src/lib/services/file-upload.service.ts","../../../library/ngx-file-uploader/src/lib/ngx-file-uploader.module.ts","../../../library/ngx-file-uploader/src/lib/provide-ngx-file-uploader.ts","../../../library/ngx-file-uploader/src/public-api.ts","../../../library/ngx-file-uploader/src/uniprank-ngx-file-uploader.ts"],"sourcesContent":["export class Utils {\n    static _uniqueNumber = 1;\n\n    static nextUID = (): string => (Utils._uniqueNumber++).toString();\n    /**\n     * Creates a unique id for submit form.\n     *\n     * @returns string\n     *\n     * @memberOf utils\n     */\n    static uniqueID(): string {\n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n            const r = (Math.random() * 16) | 0,\n                v = c === 'x' ? r : (r & 0x3) | 0x8;\n            return v.toString(16);\n        });\n    }\n\n    /**\n     * Validate input and returns true if input is an element\n     *\n     * @param input any\n     * @returns True if `value` is a DOM element (or wrapped jQuery element).\n     *\n     * @memberOf FileManager\n     */\n    static isElement(input: any) {\n        return !!(\n            input &&\n            (input.nodeName || // we are a direct element\n                (input.prop && input.attr && input.find))\n        ); // We have an on and find methode part of jQuery API\n    }\n\n    /**\n     * Validate input and returns true if input is a string\n     *\n     * @param input any\n     * @returns boolean\n     *\n     * @memberOf Utils\n     */\n    static isString(input: any) {\n        return !!(typeof input === 'string');\n    }\n\n    static extendValue(...args: any[]) {\n        let _value: any = args[0];\n        for (let i = 1; i < args.length; i++) {\n            if (typeof args[i] !== 'undefined') {\n                _value = args[i];\n            }\n        }\n        return _value;\n    }\n}\n","import { Utils } from './utils.class';\n\nexport class FileObject {\n    lastModifiedDate: Date | null;\n    size: number | null;\n    type: string;\n    name: string;\n\n    constructor(fileOrInput: HTMLInputElement | File) {\n        const isInput = Utils.isElement(fileOrInput);\n        if (isInput) {\n            this._createFromFakePath((fileOrInput as HTMLInputElement).value);\n        } else {\n            this._createFromObject(fileOrInput as File);\n        }\n    }\n\n    private _createFromFakePath(path: string) {\n        this.lastModifiedDate = null;\n        this.size = null;\n        this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n        this.name = path.split(/(\\\\|\\/)/g).pop();\n    }\n\n    private _createFromObject(object: File) {\n        this.lastModifiedDate = new Date(object.lastModified);\n        this.size = object.size;\n        this.type = object.type;\n        this.name = object.name;\n    }\n}\n","import { signal, Signal } from '@angular/core';\n\nimport { TransferInterface } from '../interfaces/transfer.interface';\nimport { FileManagerOptionsInterface } from '../interfaces/file-manager-options.interface';\nimport { FileManagerInterface } from '../interfaces/file-manager.interface';\nimport { ProgressDetail } from '../interfaces/progress-detail.interface';\n\nimport { FileObject } from './file-object.class';\nimport { Utils } from './utils.class';\n\nconst FileManagerOptionsDefault: FileManagerOptionsInterface = {};\n\nconst speedDefault: ProgressDetail = {\n    total: 0,\n    loaded: 0,\n    percent: 0,\n    speed: 0,\n    speedToText: '0 bytes'\n};\n\nexport class FileManager implements FileManagerInterface {\n    public options: FileManagerOptionsInterface;\n\n    private _id: string;\n    private _protocol: any;\n    private _uploader: TransferInterface<FileManagerInterface>;\n    private _fileElement: any;\n    private _file: FileObject;\n\n    private _progressSignal = signal(0);\n    private _speedSignal = signal<ProgressDetail>(speedDefault);\n    private _isUploading: boolean;\n    private _isUploaded: boolean;\n    private _isSuccess: boolean;\n    private _isCancel: boolean;\n    private _isError: boolean;\n    private _imageLoad: boolean;\n    private _fileActive: boolean;\n\n    private _response: any;\n\n    public set protocol(_protocol: any) {\n        this._protocol = _protocol;\n    }\n\n    public get id(): string {\n        return this._id;\n    }\n\n    public readonly progressPercent: Signal<number> = this._progressSignal.asReadonly();\n\n    public readonly progressDetail: Signal<ProgressDetail> = this._speedSignal.asReadonly();\n\n    public get progressValue(): number {\n        return this._progressSignal();\n    }\n\n    public get element(): any {\n        return this._fileElement;\n    }\n\n    public get object(): FileObject {\n        return this._file;\n    }\n\n    public get name(): string {\n        return this._file.name;\n    }\n\n    public get type(): string {\n        return this._file.type;\n    }\n\n    public get date(): Date | null {\n        return this._file.lastModifiedDate;\n    }\n\n    public get size(): number | null {\n        return this._file.size;\n    }\n\n    public get inQueue(): boolean {\n        return this._fileActive;\n    }\n\n    public get response(): any {\n        return this._response;\n    }\n\n    public get success(): boolean {\n        return this._isSuccess;\n    }\n\n    public get error(): boolean {\n        return this._isError;\n    }\n\n    /**\n     * Creates an instance of FileManager.\n     *\n     * @memberOf FileManager\n     */\n    constructor(file: any, options?: FileManagerOptionsInterface, uploader?: TransferInterface<FileManagerInterface>) {\n        this.options = Object.assign({}, FileManagerOptionsDefault, options);\n\n        this._id = Utils.uniqueID();\n\n        this._isUploading = false;\n        this._isUploaded = false;\n        this._isSuccess = false;\n        this._isCancel = false;\n        this._isError = false;\n\n        const _isInput = Utils.isElement(file);\n        const _file = _isInput ? new FileObject(file.files[0]) : new FileObject(file);\n\n        this._file = _file;\n        this._fileElement = _isInput ? file.files[0] : file;\n        this._fileActive = false;\n\n        if (typeof uploader !== 'undefined') {\n            this.bindUploader(uploader);\n        }\n    }\n\n    /**\n     * Bind uploader to FileManager\n     *\n     * @memberOf FileManager\n     */\n    public bindUploader(uploader: TransferInterface<FileManagerInterface>): void {\n        this._uploader = uploader;\n        const check = this._uploader.addFile(this);\n        this._setFileActive(check);\n    }\n\n    /**\n     * Bind options to FileManager\n     *\n     * @memberOf FileManager\n     */\n    public bindOptions(options: FileManagerOptionsInterface): void {\n        const _formData = { ...this.options.formData, ...options?.formData };\n        this.options = { ...this.options, ...options, ...{ formData: _formData } };\n    }\n\n    /**\n     * Return uploader if exists else throw error\n     *\n     * @memberOf FileManager\n     */\n    public getUploader(): TransferInterface<FileManagerInterface> {\n        return this._uploader;\n    }\n\n    /**\n     * Start uploading this file\n     *\n     *\n     * @memberOf FileManager\n     */\n    public upload(): void {\n        let _uploader: TransferInterface<FileManagerInterface>;\n\n        try {\n            _uploader = this.getUploader();\n        } catch (e) {\n            throw new Error('Couldn`t upload because uploader was not defined. ERR_MSG: ' + (<Error>e).message);\n        }\n\n        this._isUploading = true;\n\n        try {\n            _uploader.uploadFile(this);\n        } catch (_e) {\n            // TODO write error handling\n        }\n    }\n\n    /**\n     * Cancel upload process from this file\n     *\n     *\n     * @memberOf FileManager\n     */\n    public cancel(): void {\n        if (this._isUploading) {\n            const uploader = this.getUploader();\n            uploader.cancelUploadFile(this);\n        }\n    }\n\n    public _cancel(): void {\n        if (this._isUploading) {\n            this._isCancel = true;\n            this._isUploaded = false;\n            this._isUploading = false;\n        }\n    }\n\n    /**\n     * Remove this FileManger from uploader queue\n     *\n     *\n     * @memberOf FileManager\n     */\n    public remove(): void {\n        let _uploader: any;\n\n        try {\n            _uploader = this.getUploader();\n        } catch (e) {\n            throw new Error('Couldn`t remove because uploader was not defined. ERR_MSG: ' + (<Error>e).message);\n        }\n\n        if (this._isUploading) {\n            this.cancel();\n        }\n\n        _uploader.removeFile(this);\n        this._setFileActive(false);\n    }\n\n    public isUploaded(): boolean {\n        return this._isUploaded;\n    }\n\n    public isUploading(): boolean {\n        return this._isUploading;\n    }\n\n    public canUpload(): boolean {\n        return !this._isUploaded && !this._isUploading && !this._isSuccess && !this._isError;\n    }\n\n    public handleImageLoad(): void {\n        this._imageLoad = true;\n    }\n\n    /**\n     * Overwrite functions\n     */\n\n    onBeforeUpload(): void {\n        return;\n    }\n    onProgressSpeed(_speed: ProgressDetail): void {\n        // override in subclass\n    }\n\n    onProgress(_progress: number): void {\n        // override in subclass\n    }\n    onSuccess(_response: any, _status: number, _headers: any): void {\n        // override in subclass\n    }\n    onError(_response: any, _status: number, _headers: any): void {\n        // override in subclass\n    }\n\n    /**\n     *  Internal functions\n     */\n    _onBeforeUpload(): void {\n        this._isUploading = true;\n        this._isUploaded = false;\n        this._isSuccess = false;\n        this._isCancel = false;\n        this._isError = false;\n        this._progressSignal.set(0);\n        this.onBeforeUpload();\n    }\n\n    _onProgressFileSpeed(speed: ProgressDetail) {\n        this._speedSignal.set(speed);\n        this.onProgressSpeed(speed);\n    }\n\n    _onProgress(progress: number): void {\n        this._progressSignal.set(progress);\n        this.onProgress(progress);\n    }\n\n    _onSuccess(response: any, status: number, headers: any): void {\n        this._isUploading = false;\n        this._isUploaded = true;\n        this._isSuccess = true;\n        this._isError = false;\n        this._response = response;\n        this.onSuccess(response, status, headers);\n        if (this._uploader.options.removeBySuccess) {\n            this.remove();\n        }\n    }\n\n    _onError(response: any, status: number, headers: any): void {\n        this._isUploading = false;\n        this._isUploaded = false;\n        this._isSuccess = false;\n        this._isError = true;\n        this._response = response;\n        this.onError(response, status, headers);\n    }\n\n    private _setFileActive(check: boolean): void {\n        this._fileActive = check;\n    }\n}\n","import { Signal } from '@angular/core';\n\nimport { FileManagerOptionsInterface } from './file-manager-options.interface';\nimport { ProgressDetail } from './progress-detail.interface';\nimport { FileObject } from '../classes/file-object.class';\nimport { TransferInterface } from './transfer.interface';\n\nexport interface FileManagerInterface {\n    id: string;\n    options: FileManagerOptionsInterface;\n    progressPercent: Signal<number>;\n    progressDetail: Signal<ProgressDetail>;\n    progressValue: number;\n    element: any;\n    object: FileObject;\n    name: string;\n    type: string;\n    date: Date | null;\n    size: number | null;\n    inQueue: boolean;\n    success: boolean;\n    error: boolean;\n    response: any;\n\n    protocol(_protocol: any): void;\n\n    bindUploader(_uploader: TransferInterface<FileManagerInterface>): void;\n    bindOptions(_options: FileManagerOptionsInterface): void;\n\n    getUploader(): TransferInterface<FileManagerInterface>;\n    upload(): void;\n\n    cancel(): void;\n    _cancel(): void;\n\n    remove(): void;\n\n    isUploaded(): boolean;\n    isUploading(): boolean;\n    canUpload(): boolean;\n\n    handleImageLoad(): void;\n\n    onBeforeUpload(): void;\n    onProgressSpeed(speed: ProgressDetail): void;\n    onProgress(progress: number): void;\n    onSuccess(response: any, status: number, headers: any): void;\n    onError(response: any, status: number, headers: any): void;\n\n    _onBeforeUpload(): void;\n    _onProgressFileSpeed(speed: ProgressDetail): void;\n    _onProgress(_progress: number): void;\n    _onSuccess(response: any, status: number, headers: any): void;\n    _onError(response: any, status: number, headers: any): void;\n}\n\nexport function instanceOfFileManagerInterface(obj: any): obj is FileManagerInterface {\n    return [\n        'options',\n        'progressPercent',\n        'progressDetail',\n\n        'handleImageLoad',\n        'canUpload',\n        'isUploading',\n        'isUploaded',\n        'remove',\n        '_cancel',\n        'cancel',\n        'upload',\n        'getUploader',\n\n        'onBeforeUpload',\n        'onProgressSpeed',\n        'onProgress',\n        'onSuccess',\n        'onError',\n        '_onBeforeUpload',\n        '_onProgressFileSpeed',\n        '_onProgress',\n        '_onSuccess',\n        '_onError'\n    ].every((key) => key in obj);\n}\n","import { Directive, ElementRef, Renderer2, HostListener, OnInit, OnDestroy, input, output } from '@angular/core';\nimport { FileManager } from '../classes/file-manager.class';\nimport { FileManagerOptionsInterface, FileManagerInterface, TransferInterface, instanceOfFileManagerInterface } from '../interfaces';\n\n@Directive({\n    selector: '[ngxFile2Drop]',\n    standalone: true\n})\nexport class FileDropDirective implements OnInit, OnDestroy {\n    readonly fileOptions = input<FileManagerOptionsInterface>();\n    readonly uploader = input.required<TransferInterface<FileManagerInterface>>();\n\n    readonly fileHoverStart = output<void>();\n    readonly fileHoverEnd = output<void>();\n    readonly fileAccepted = output<FileManagerInterface[]>();\n    readonly fileRejected = output<Error>();\n\n    private _InputFile: any = null;\n    private _files: FileManagerInterface[];\n\n    public constructor(private element: ElementRef, private renderer: Renderer2) {}\n\n    public ngOnInit() {\n        this._files = [];\n        this.renderer.addClass(this.element.nativeElement, 'drop-area');\n    }\n\n    public ngOnDestroy() {\n        if (this._files.length > 0) {\n            for (const _file of this._files) {\n                if (instanceOfFileManagerInterface(_file)) {\n                    if (!_file.isUploaded()) {\n                        _file.cancel();\n                        this.uploader().removeFile(_file);\n                    }\n                }\n            }\n        }\n    }\n\n    @HostListener('dragover', ['$event'])\n    public onDragOver(event: Event): void {\n        if (this._InputFile === null) {\n            this._InputFile = this.getDataTransferObject(event);\n            if (this._InputFile === null) {\n                return;\n            }\n            this.renderer.addClass(this.element.nativeElement, 'drop-enter');\n            const _dropValueText = 'Drop now';\n            this.renderer.setAttribute(this.element.nativeElement, 'dropValueText', _dropValueText);\n\n            this.fileHoverStart.emit();\n        }\n\n        this.preventAndStopEventPropagation(event);\n    }\n\n    @HostListener('dragleave', ['$event'])\n    public onDragLeave(event: Event): void {\n        if (this._InputFile !== null) {\n            this.renderer.removeClass(this.element.nativeElement, 'drop-enter');\n            this.renderer.setAttribute(this.element.nativeElement, 'dropValueText', '');\n\n            this._InputFile = null;\n            if (event.currentTarget === (this as any).element[0]) {\n                return;\n            }\n\n            this.fileHoverEnd.emit();\n        }\n\n        this.preventAndStopEventPropagation(event);\n    }\n\n    @HostListener('drop', ['$event'])\n    public onDrop(event: Event): void {\n        if (this._InputFile !== null) {\n            this.renderer.removeClass(this.element.nativeElement, 'drop-enter');\n            this.renderer.setAttribute(this.element.nativeElement, 'dropValueText', '');\n\n            this.fileHoverEnd.emit();\n\n            this._InputFile = this.getDataTransferObject(event);\n\n            if (this._InputFile.files.length === 0) {\n                this._InputFile = null;\n                return;\n            }\n\n            const filesData: FileList = this._InputFile.files;\n\n            if (!this.hasFiles(this._InputFile.types)) {\n                return;\n            }\n\n            this.readFile(filesData);\n\n            this.fileAccepted.emit(this._files);\n\n            this._InputFile = null;\n        }\n\n        this.preventAndStopEventPropagation(event);\n    }\n\n    private preventAndStopEventPropagation(event: Event): void {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    private readFile(_files: FileList): void {\n        let fmObject: FileManager;\n        for (let i = 0; i < _files.length; i++) {\n            const file = _files[i];\n            try {\n                fmObject = new FileManager(file, this.fileOptions(), this.uploader());\n            } catch (e) {\n                this.fileRejected.emit(e);\n                throw new Error('Something goes wrong e: ' + e.message);\n            }\n\n            fmObject.inQueue && this._files.push(fmObject);\n        }\n    }\n\n    private getDataTransferObject(event: Event | any): DataTransfer {\n        return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer;\n    }\n\n    private hasFiles(types: any): boolean {\n        if (!types) {\n            return false;\n        }\n\n        if (types.indexOf) {\n            return types.indexOf('Files') !== -1;\n        }\n\n        if (types.contains) {\n            return types.contains('Files');\n        }\n\n        return false;\n    }\n}\n","import { Directive, HostListener, HostBinding, OnInit, OnDestroy, input, output } from '@angular/core';\nimport { FileManager } from '../classes/file-manager.class';\nimport { FileManagerOptionsInterface, instanceOfFileManagerInterface, FileManagerInterface, TransferInterface } from '../interfaces';\n\n@Directive({\n    selector: '[ngxFile2Select]',\n    standalone: true\n})\nexport class FileSelectDirective implements OnInit, OnDestroy {\n    @HostBinding('attr.role') role = 'input';\n    @HostBinding('attr.type') type = 'file';\n\n    readonly fileOptions = input<FileManagerOptionsInterface>();\n    readonly uploader = input.required<TransferInterface<FileManagerInterface>>();\n\n    readonly fileHoverStart = output<void>();\n    readonly fileHoverEnd = output<void>();\n    readonly fileAccepted = output<FileManagerInterface[]>();\n    readonly fileRejected = output<Error>();\n\n    private _InputFile: any = null;\n    private _files: FileManagerInterface[];\n\n    constructor() {}\n\n    public ngOnInit() {\n        this._files = [];\n    }\n\n    public ngOnDestroy() {\n        if (this._files.length > 0) {\n            for (const _file of this._files) {\n                if (instanceOfFileManagerInterface(_file)) {\n                    if (!_file.isUploaded()) {\n                        _file.cancel();\n                        this.uploader().removeFile(_file);\n                    }\n                }\n            }\n        }\n    }\n\n    @HostListener('change', ['$event'])\n    public onChange(event: Event): void {\n        this._InputFile = this.getEventTarget(event);\n\n        if (this._InputFile.files.length === 0) {\n            this._InputFile = null;\n            return;\n        }\n\n        const filesData: FileList = this._InputFile.files;\n\n        this.readFile(filesData);\n\n        this.fileAccepted.emit(this._files);\n\n        this._InputFile.value = '';\n        this._InputFile = null;\n\n        this.preventAndStopEventPropagation(event);\n    }\n\n    private preventAndStopEventPropagation(event: Event): void {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    private readFile(_files: FileList): void {\n        let fmObject: FileManager;\n        for (let i = 0; i < _files.length; i++) {\n            const file = _files[i];\n            try {\n                fmObject = new FileManager(file, this.fileOptions(), this.uploader());\n            } catch (e) {\n                this.fileRejected.emit(e);\n                throw new Error('Something goes wrong e: ' + e.message);\n            }\n\n            fmObject.inQueue && this._files.push(fmObject);\n        }\n    }\n\n    private getEventTarget(event: Event | any): any {\n        return event.target;\n    }\n}\n","import { Directive, ElementRef, effect, input } from '@angular/core';\n\n@Directive({ selector: 'img[imgPreview]', standalone: true })\nexport class ImagePreviewDirective {\n    readonly image = input<any>();\n\n    constructor(private el: ElementRef) {\n        effect(() => {\n            const img = this.image();\n            const reader = new FileReader();\n            const el = this.el;\n\n            el.nativeElement.src =\n                \"data:image/svg+xml;charset=utf-8,%3Csvg xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' viewBox%3D'0 0 200 150'%2F%3E\";\n\n            if (img) {\n                reader.onloadend = () => {\n                    el.nativeElement.src = reader.result;\n                };\n                reader.readAsDataURL(img.element);\n            }\n        });\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/*\n * Convert bytes into largest possible unit.\n * Takes an precision argument that defaults to 2.\n * Usage:\n *   bytes | fileSize:precision\n * Example:\n *   {{ 1024 |  fileSize}}\n *   formats to: 1 KB\n*/\n@Pipe({ name: 'fileSize', standalone: true })\nexport class FileSizePipe implements PipeTransform {\n\n    private units = [\n        'bytes',\n        'KB',\n        'MB',\n        'GB',\n        'TB',\n        'PB'\n    ];\n\n    transform(bytes = 0, precision = 2): string {\n        if (!isFinite( bytes ) ) {\n            return '?';\n        }\n        let unit = 0;\n        while ( bytes >= 1024 ) {\n            bytes /= 1024;\n            unit ++;\n        }\n\n        return bytes.toFixed( + precision ) + ' ' + this.units[ unit ];\n    }\n}\n","import { Directive, ElementRef, Renderer2, effect, input } from '@angular/core';\nimport { ProgressDetail } from '../interfaces/progress-detail.interface';\nimport { FileSizePipe } from '../pipes/file-size.pipe';\n\n@Directive({\n    selector: 'progress[progressBar]',\n    standalone: true\n})\nexport class ProgressBarDirective {\n    readonly progress = input<ProgressDetail>();\n\n    constructor(private el: ElementRef, private renderer: Renderer2) {\n        effect(() => {\n            const p = this.progress();\n            if (p) {\n                this.el.nativeElement.value = p.percent;\n                if (p.speed > 0) {\n                    const pipe = new FileSizePipe();\n                    this.renderer.setAttribute(this.el.nativeElement, 'speedText', pipe.transform(p.loaded));\n                } else {\n                    this.renderer.setAttribute(this.el.nativeElement, 'speedText', '');\n                }\n            }\n        });\n    }\n}\n","import { Subject } from 'rxjs';\nimport { Utils } from './utils.class';\nimport { FileSizePipe } from '../pipes/file-size.pipe';\nimport { FileManagerInterface } from '../interfaces/file-manager.interface';\nimport { TransferInterface } from '../interfaces/transfer.interface';\n\n/**\n * Abstract proctol class if someone want to write his own protocol\n */\nexport abstract class Protocol {\n    progress: Subject<any>;\n    load: Subject<any>;\n    error: Subject<any>;\n    abort: Subject<any>;\n\n    public set connection(obj: any) {\n        const { _file, _connection } = obj;\n        if (!this.isConnected(_file)) {\n            this._connections.push({\n                id: _file.id,\n                connection: _connection\n            });\n        }\n    }\n\n    private _connections: any[];\n\n    /**\n     * Creates an instance of Protocol and for each protocol an own unique ID.\n     *\n     * @memberOf Protocol\n     */\n    constructor() {\n        this.progress = new Subject<any>();\n        this.load = new Subject<any>();\n        this.error = new Subject<any>();\n        this.abort = new Subject<any>();\n        this._connections = [];\n    }\n\n    /**\n     * Call uploader method _onCompleteFile.\n     *\n     * @memberOf Protocol\n     */\n    public _onLoad(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n        const gist = this._isSuccessCode(status);\n        const method = (g: boolean, f: FileManagerInterface, r: any, s: number, h: any) => {\n            if (g) {\n                uploader._onSuccessFile(f, r, s, h);\n            } else {\n                uploader._onErrorFile(f, r, s, h);\n            }\n        };\n        method(gist, _file, response, status, headers);\n        uploader._onCompleteFile(_file, response, status, headers);\n    }\n\n    /**\n     * Call uploader methodes _onErrorFile and _onCompleteFile.\n     *\n     * @memberOf Protocol\n     */\n    public _onError(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n        uploader._onErrorFile(_file, response, status, headers);\n        uploader._onCompleteFile(_file, response, status, headers);\n    }\n\n    /**\n     * Call uploader methodes _onErrorFile and _onCompleteFile.\n     *\n     * @memberOf Protocol\n     */\n    public _onAbort(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n        uploader._onErrorFile(_file, response, status, headers);\n        uploader._onCompleteFile(_file, response, status, headers);\n    }\n\n    /**\n     * Validate response status code.+\n     *\n     * @memberOf Protocol\n     */\n    public _isSuccessCode(status: number): boolean {\n        return (status >= 200 && status < 300) || status === 304;\n    }\n\n    public isConnected(_file: FileManagerInterface): any {\n        for (const _request of this._connections) {\n            if (_request.id === _file.id) {\n                return _request;\n            }\n        }\n        return false;\n    }\n\n    public removeConnection(_file: FileManagerInterface): void {\n        let _request: any | null = null;\n        for (const _key in this._connections) {\n            if (this._connections.hasOwnProperty(_key)) {\n                _request = this._connections[_key];\n                if (_file.id === _request.id) {\n                    this._connections.splice(+_key, 1);\n                }\n            }\n        }\n    }\n\n    /**\n     * Must be implemented at each protocol class.\n     *\n     * @memberOf Protocol\n     */\n    abstract run(_file: FileManagerInterface): any;\n    abstract cancel(_file: FileManagerInterface): void;\n}\n\n/**\n * Standard protocol for server communication (file uploading)\n *\n * @export\n * @extends {Protocol}\n */\nexport class ProtocolXHR extends Protocol {\n    constructor() {\n        super();\n    }\n\n    /**\n     * Implementation of the abstract.protocol method `run`\n     *\n     * @memberOf ProtocolXHR\n     */\n    public run(_file: FileManagerInterface): void {\n        let _xhr: XMLHttpRequest;\n        let sendable: any;\n        const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n\n        const _formData = Utils.extendValue(uploader.options.formData, _file.options.formData);\n        const _withCredentials = Utils.extendValue(uploader.options.withCredentials, _file.options.withCredentials);\n        const _method = Utils.extendValue(uploader.options.method, _file.options.method);\n        const _url = Utils.extendValue(uploader.options.url, _file.options.url);\n        const _alias = Utils.extendValue(uploader.options.alias, _file.options.alias);\n        const _headers = Utils.extendValue(uploader.options.headers, _file.options.headers);\n\n        const _time: number = new Date().getTime();\n        let _load = 0;\n        let _speed = 0;\n        let _speedToText: string | null = null;\n        const $filesize = new FileSizePipe();\n\n        _xhr = new XMLHttpRequest();\n\n        this.connection = {\n            _file: _file,\n            _connection: _xhr\n        };\n\n        sendable = new FormData();\n\n        if (typeof _formData !== 'undefined') {\n            // Only allow Multipart\n            for (const key in _formData) {\n                if (_formData.hasOwnProperty(key)) {\n                    const value = _formData[key];\n                    sendable.append(key, value);\n                }\n            }\n        }\n\n        sendable.append(_alias, _file.element, _file.name);\n\n        if (typeof _file.size !== 'number') {\n            throw new TypeError('We need the file size.');\n        }\n\n        const _progress = (event: ProgressEvent) => {\n            if (event.lengthComputable) {\n                const _time2 = new Date().getTime() - _time;\n                _load = event.loaded - _load;\n                _speed = (_load / _time2) * 1000;\n                _speed = parseInt(<any>_speed, 10);\n                _speedToText = $filesize.transform(_speed);\n                const _obj = {\n                    total: event.total,\n                    loaded: event.loaded,\n                    percent: Math.round((event.loaded / event.total) * 100),\n                    speed: _speed,\n                    speedToText: _speedToText\n                };\n                this.progress.next({ _file: _file, _data: _obj });\n            }\n        };\n\n        const _loadHandler = (_event: Event) => {\n            const headers = uploader._parseHeaders(_xhr.getAllResponseHeaders());\n            const response = uploader._transformResponse(_xhr.response, headers);\n            const status = _xhr.status;\n            this.load.next({ _file: _file, response: response, status: status, headers: headers });\n        };\n\n        const _errorHandler = (_event: Event) => {\n            const headers = uploader._parseHeaders(_xhr.getAllResponseHeaders());\n            const response = uploader._transformResponse(_xhr.response, headers);\n            const status = _xhr.status;\n            this.error.next({ _file: _file, response: response, status: status, headers: headers });\n        };\n\n        const _abortHandler = (_event: Event) => {\n            const headers = uploader._parseHeaders(_xhr.getAllResponseHeaders());\n            const response = uploader._transformResponse(_xhr.response, headers);\n            const status = _xhr.status;\n            this.abort.next({ _file: _file, response: response, status: status, headers: headers });\n        };\n\n        _xhr.upload.addEventListener('progress', _progress);\n\n        _xhr.onreadystatechange = function(ev: Event): any {\n            if (this.readyState === 4) {\n                if (this.status >= 400) {\n                    _errorHandler(ev);\n                }\n            }\n        };\n        _xhr.onload = _loadHandler;\n        _xhr.addEventListener('abort', _abortHandler);\n\n        _xhr.open(_method, _url, true);\n\n        _xhr.withCredentials = _withCredentials;\n\n        for (const name in _headers) {\n            if (_headers.hasOwnProperty(name)) {\n                const value = _headers[name];\n                _xhr.setRequestHeader(name, value);\n            }\n        }\n\n        _xhr.send(sendable);\n    }\n\n    public cancel(_file: FileManagerInterface) {\n        const _request = this.isConnected(_file);\n        if (_request) {\n            _request.connection.abort();\n            this.removeConnection(_file);\n        }\n    }\n}\n","export enum HookTypeEnum {\n    beforeAddingFile = 'beforeAddingFile',\n    afterAddingFile = 'afterAddingFile',\n    errorAddingFile = 'errorAddingFile',\n\n    removeFile = 'removeFile',\n\n    prepareUploadFile = 'prepareUploadFile',\n    progressUploadFile = 'progressUploadFile',\n    progressUploadSpeed = 'progressUploadSpeed',\n    successUploadFile = 'successUploadFile',\n    completeUploadFile = 'completeUploadFile',\n    failedUploadFile = 'failedUploadFile',\n    cancelUploadFile = 'cancelUploadFile', // not implemented right now\n\n    prepareUploadAll = 'prepareUploadAll', // not implemented right now\n    progressUploadAll = 'progressUploadAll', // not implemented right now\n    completeUploadAll = 'completeUploadAll'\n}\n\nexport class UploaderHook {\n    public get type(): HookTypeEnum | null {\n        return this._type;\n    }\n\n    public get priority(): number | null {\n        return this._priority;\n    }\n\n    public get callback(): (...args: any[]) => void | null {\n        return this._callback;\n    }\n\n    private _type: HookTypeEnum | null = null;\n    private _callback: (...args: any[]) => void | null = null;\n    private _priority: number | null = null;\n\n    constructor(_hookType: HookTypeEnum, _callback: (...args: any[]) => void, _priority = 0) {\n        this._type = _hookType;\n        this._callback = _callback;\n        this._priority = +_priority;\n    }\n}\n","import { signal, Signal } from '@angular/core';\nimport { Utils } from './utils.class';\nimport { Protocol } from './protocol.class';\nimport { HookTypeEnum, UploaderHook } from './uploader-hook.class';\nimport { FileFilter } from './file-filter.class';\nimport { TransferOptionsInterface } from '../interfaces';\nimport { TransferInterface } from '../interfaces/transfer.interface';\nimport { FileManagerInterface } from '../interfaces/file-manager.interface';\n\n/**\n * An abstract class for the transport functionality\n *\n * @export\n */\nexport abstract class Transfer implements TransferInterface<FileManagerInterface> {\n    private transferOptionsDefault: TransferOptionsInterface = {\n        url: '',\n        alias: 'file',\n        headers: {},\n        filters: [],\n        formData: [],\n        autoUpload: false,\n        method: 'POST',\n        removeBySuccess: false,\n        enableCors: false,\n        withCredentials: false,\n        uniqueFiles: false\n    };\n\n    public options: TransferOptionsInterface;\n\n    // Private fields declared first so dependent public fields can reference them\n    private _id: string;\n    private _queueSignal = signal<FileManagerInterface[]>([]);\n    private _hooks: UploaderHook[];\n    private _isHTML5: boolean;\n    private _isDragAndDrop: boolean;\n    private _protocol: Protocol;\n\n    public get id(): any {\n        return this._id;\n    }\n\n    public readonly queue: Signal<FileManagerInterface[]> = this._queueSignal.asReadonly();\n\n    public get queueSnapshot(): FileManagerInterface[] {\n        return this._queueSignal();\n    }\n\n    /**\n     * Creates an instance of Transfer.\n     *\n     * @memberOf Transfer\n     */\n    constructor(public type: string, options?: TransferOptionsInterface) {\n        const div = document.createElement('div');\n        this._isHTML5 = !!(File && FormData && FileReader);\n        this._isDragAndDrop = 'draggable' in div || ('ondragstart' in div && 'ondrop' in div) ? true : false;\n        this._id = Utils.uniqueID();\n        this._hooks = [];\n\n        if (!this._isHTML5) {\n            throw new Error(`Your browser doesn't support HTML5. Our NgxFileUploader can't work here.`);\n        }\n\n        this.options = Object.assign({}, this.transferOptionsDefault, options);\n    }\n\n    /**\n     * Bind options to FileManagerInterface\n     *\n     * @memberOf Transfer\n     */\n    public bindOptions(options: TransferOptionsInterface): void {\n        this.options = { ...this.options, ...options };\n    }\n\n    /**\n     * It gives HTML5 check back\n     *\n     * @memberOf Transfer\n     */\n    public isHTML5(): boolean {\n        return this._isHTML5;\n    }\n\n    /**\n     * It gives DragAndDrop check back\n     *\n     * @memberOf Transfer\n     */\n    public isDragAndDrop(): boolean {\n        return this._isDragAndDrop;\n    }\n\n    /**\n     * To implement a hock\n     *\n     * @memberOf Transfer\n     */\n    public hook(hook: UploaderHook) {\n        if (this._hookExists(hook) === -1) {\n            this._hooks.push(hook);\n            this._hooks.sort((a, b) => {\n                if (a.type !== b.type) {\n                    if (a.type < b.type) {\n                        return -1;\n                    }\n                    if (a.type > b.type) {\n                        return 1;\n                    }\n                } else {\n                    if (a.priority > b.priority) {\n                        return -1;\n                    }\n                    if (a.priority < b.priority) {\n                        return 1;\n                    }\n                    return 0;\n                }\n            });\n        } else {\n            throw new Error(`Hook with the Type [${hook.type}] and the same callback still exists.`);\n        }\n    }\n\n    /**\n     *  Remove a hook\n     *\n     * @memberOf Transfer\n     */\n    public removeHook(hook: UploaderHook): boolean {\n        const key = this._hookExists(hook);\n        if (key >= 0) {\n            this._hooks.splice(key, 1);\n            return true;\n        }\n        return false;\n    }\n\n    public activeHooks(): string[] {\n        return this._hooks.map((_hook) => `${HookTypeEnum[_hook.type]}->prio:${_hook.priority}`);\n    }\n\n    public addFile(file: FileManagerInterface): boolean {\n        let _valid = false;\n        try {\n            _valid = this.validate(file);\n        } catch (_e) {\n            _valid = false;\n        }\n        if (!_valid) {\n            this._onAddFileError(file);\n            return false;\n        }\n\n        if (this.options.uniqueFiles) {\n            if (this.inQueue(file) === -1) {\n                this._runHook(HookTypeEnum.beforeAddingFile, file);\n                const queue = [...this._queueSignal()];\n                queue.push(file);\n                this._queueSignal.set(queue);\n                this._onAddFile(file);\n                this._runHook(HookTypeEnum.afterAddingFile, file);\n                this.options.autoUpload && file.upload();\n                return true;\n            }\n        } else {\n            this._runHook(HookTypeEnum.beforeAddingFile, file);\n            const queue = [...this._queueSignal()];\n            queue.push(file);\n            this._queueSignal.set(queue);\n            this._onAddFile(file);\n            this._runHook(HookTypeEnum.afterAddingFile, file);\n            this.options.autoUpload && file.upload();\n            return true;\n        }\n        this._onAddFileError(file);\n        return false;\n    }\n\n    public removeFile(_file: FileManagerInterface): boolean {\n        const key = this.inQueue(_file);\n        if (key !== -1) {\n            const queue = [...this._queueSignal()];\n            queue.splice(key, 1);\n            this._queueSignal.set(queue);\n            this._onRemoveFile(_file);\n            return true;\n        }\n        return false;\n    }\n\n    public inQueue(_file: FileManagerInterface): number {\n        return this._queueSignal().findIndex((obj) => {\n            return obj.id === _file.id || obj.name + obj.type + obj.size === _file.name + _file.type + _file.size;\n        });\n    }\n\n    public addFilter(_filter: FileFilter): void {\n        if (!this._filterExists(_filter)) {\n            this.options.filters.push(_filter);\n        }\n    }\n\n    public validate(_file: FileManagerInterface): boolean {\n        if (this.options.filters.length > 0) {\n            return this.options.filters.every((_filter) => _filter.validate(_file));\n        }\n        return true;\n    }\n\n    public setProtocol(_protocol: Protocol) {\n        this._protocol = _protocol;\n    }\n\n    public getProtocol(): Protocol {\n        return this._protocol;\n    }\n\n    /**\n     * Validate response status code.\n     *\n     * @memberOf Transfer\n     */\n    public isSuccessCode(status: number): boolean {\n        return (status >= 200 && status < 300) || status === 304;\n    }\n\n    /**\n     * Upload functions\n     */\n    public upload() {\n        this._onBeforeUploadAll();\n        for (const _file of this.queueSnapshot) {\n            this.uploadFile(_file);\n        }\n    }\n    public cancel() {\n        for (const _file of this.queueSnapshot) {\n            this.cancelUploadFile(_file);\n        }\n    }\n    public remove() {\n        const _queue = [...this.queueSnapshot];\n        for (const _file of _queue) {\n            this.removeFile(_file);\n        }\n    }\n    public uploadFile(item: FileManagerInterface): void {\n        if (this.inQueue(item) === -1) {\n            this.addFile(item);\n        }\n        this._onBeforeUpload(item);\n        this.getProtocol().run(item);\n    }\n    public cancelUploadFile(item: FileManagerInterface) {\n        if (this.inQueue(item) !== -1) {\n            item.isUploading() && this.getProtocol().cancel(item);\n            item.isUploading() && item._cancel();\n        }\n    }\n\n    /**\n     * Overwrite functions\n     */\n\n    public onAddFile(_file: FileManagerInterface): void {\n        return;\n    }\n    public onAddFileError(_file: FileManagerInterface): void {\n        return;\n    }\n    public onRemoveFile(_file: FileManagerInterface): void {\n        return;\n    }\n    public onBeforeUploadAll(_uploader: TransferInterface<FileManagerInterface>): void {\n        return;\n    }\n    public onBeforeUpload(_file: FileManagerInterface): void {\n        return;\n    }\n    public onProgress(_uploader: TransferInterface<FileManagerInterface>, _progress: any): void {\n        return;\n    }\n    public onProgressFile(_file: FileManagerInterface, _progress: number): void {\n        return;\n    }\n    public onProgressFileSpeed(_file: FileManagerInterface, _progress: any): void {\n        return;\n    }\n    public onSuccess(_file: FileManagerInterface, _response: any, _status: number, _headers: any): void {\n        return;\n    }\n    public onError(_file: FileManagerInterface, _response: any, _status: number, _headers: any): void {\n        return;\n    }\n    public onCancel(_file: FileManagerInterface, _response: any, _status: number, _headers: any): void {\n        return;\n    }\n    public onComplete(_file: FileManagerInterface, _response: any, _status: number, _headers: any): void {\n        return;\n    }\n    public onCompleteAll(_uploader: TransferInterface<FileManagerInterface>): void {\n        return;\n    }\n\n    /**\n     * Internal functions\n     */\n\n    public _onAddFile(_file: FileManagerInterface): void {\n        this.onAddFile(_file);\n    }\n    public _onAddFileError(_file: FileManagerInterface): void {\n        this._runHook(HookTypeEnum.errorAddingFile, _file);\n        this.onAddFileError(_file);\n    }\n    public _onRemoveFile(_file: FileManagerInterface): void {\n        this._runHook(HookTypeEnum.removeFile, _file);\n        this.onRemoveFile(_file);\n    }\n    public _onBeforeUploadAll(): void {\n        this._runHook(HookTypeEnum.prepareUploadAll, this);\n        this.onBeforeUploadAll(this as any);\n    }\n    public _onBeforeUpload(_file: FileManagerInterface): void {\n        this._runHook(HookTypeEnum.prepareUploadFile, _file);\n        _file._onBeforeUpload();\n        this.onBeforeUpload(_file);\n    }\n    public _onProgressFileSpeed(_file: FileManagerInterface, _speed: any): void {\n        this._runHook(HookTypeEnum.progressUploadSpeed, _file, _speed);\n        _file._onProgressFileSpeed(_speed);\n        this.onProgressFileSpeed(_file, _speed);\n    }\n    public _onProgressFile(_file: FileManagerInterface, _progress: number): void {\n        this._runHook(HookTypeEnum.progressUploadFile, _file, _progress);\n        _file._onProgress(_progress);\n        this.onProgressFile(_file, _progress);\n        this._onProgress();\n    }\n    public _onProgress(): void {\n        const queue: FileManagerInterface[] = this._queueSignal();\n        if (queue.length > 0) {\n            let percent = 0;\n            for (const file of queue) {\n                if (file.success || file.error) {\n                    percent += 100;\n                } else if (file.isUploading()) {\n                    percent += file.progressValue;\n                }\n            }\n            percent = Math.floor(percent / queue.length);\n            this._runHook(HookTypeEnum.progressUploadAll, percent);\n            this.onProgress(this as any, percent);\n            percent >= 100 && this._onCompleteAll();\n        }\n    }\n    public _onSuccessFile(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        this._runHook(HookTypeEnum.successUploadFile, _file, response, status, headers);\n        _file._onSuccess(response, status, headers);\n        this.onSuccess(_file, response, status, headers);\n    }\n    public _onErrorFile(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        this._runHook(HookTypeEnum.failedUploadFile, _file, response, status, headers);\n        _file._onError(response, status, headers);\n        this.onError(_file, response, status, headers);\n    }\n    public _onCancelFile(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        this._runHook(HookTypeEnum.cancelUploadFile, _file, response, status, headers);\n        _file._onError(response, status, headers);\n        this.onCancel(_file, response, status, headers);\n    }\n    public _onCompleteFile(_file: FileManagerInterface, response: any, status: number, headers: any): void {\n        this._runHook(HookTypeEnum.completeUploadFile, _file, response, status, headers);\n        this._onProgress();\n        this.onComplete(_file, response, status, headers);\n    }\n    public _onCompleteAll(): void {\n        this._runHook(HookTypeEnum.completeUploadAll, this);\n        this.onCompleteAll(this as any);\n    }\n\n    public _parseHeaders(headers: any): any {\n        const parsed: any = {};\n        let key: any, val: any, i: any;\n\n        if (!headers) {\n            return parsed;\n        }\n\n        const incomeHeaders = headers.split('\\n');\n        for (const line of incomeHeaders) {\n            i = line.indexOf(':');\n            key = line\n                .slice(0, i)\n                .trim()\n                .toLowerCase();\n            val = line.slice(i + 1).trim();\n\n            if (key) {\n                parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n            }\n        }\n\n        return parsed;\n    }\n    public _transformResponse(response: any, _headers: any): any {\n        return response;\n    }\n\n    public _runHook(type: HookTypeEnum, ...args: any[]): void {\n        for (const key in this._hooks) {\n            if (this._hooks.hasOwnProperty(key)) {\n                const obj: UploaderHook = this._hooks[key];\n                if (obj.type === type) {\n                    switch (type) {\n                        case HookTypeEnum.beforeAddingFile:\n                        case HookTypeEnum.prepareUploadAll:\n                        case HookTypeEnum.prepareUploadFile:\n                        case HookTypeEnum.afterAddingFile:\n                        case HookTypeEnum.errorAddingFile:\n                        case HookTypeEnum.completeUploadAll:\n                        case HookTypeEnum.progressUploadAll:\n                        case HookTypeEnum.removeFile:\n                            {\n                                (<(...args: any[]) => void>obj.callback)(args[0]);\n                            }\n                            break;\n\n                        case HookTypeEnum.progressUploadFile:\n                        case HookTypeEnum.progressUploadSpeed:\n                            {\n                                (<(...args: any[]) => void>obj.callback)(args[0], args[1]);\n                            }\n                            break;\n\n                        case HookTypeEnum.cancelUploadFile:\n                        case HookTypeEnum.successUploadFile:\n                        case HookTypeEnum.failedUploadFile:\n                        case HookTypeEnum.completeUploadFile:\n                            {\n                                (<(...args: any[]) => void>obj.callback)(args[0], args[1], args[2], args[3]);\n                            }\n                            break;\n\n                        default: {\n                            throw new Error(`hookType unknown or not defined`);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    private _hookExists(hook: UploaderHook): number {\n        for (const key in this._hooks) {\n            if (this._hooks.hasOwnProperty(key)) {\n                const obj = this._hooks[key];\n                if (obj.type === hook.type && '' + obj.callback === '' + hook.callback) {\n                    return +key;\n                }\n            }\n        }\n        return -1;\n    }\n\n    private _filterExists(filter: FileFilter): boolean {\n        const _filters = this.options.filters;\n        for (const _filter of _filters) {\n            if (_filter.name === filter.name) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    public abstract init(): void;\n    public abstract destroy(): void;\n}\n","import { Protocol, ProtocolXHR } from './protocol.class';\nimport { Subscription } from 'rxjs';\nimport { Transfer } from './transfer.class';\nimport { TransferOptionsInterface } from '../interfaces';\nimport { TransferInterface } from '../interfaces/transfer.interface';\nimport { FileManagerInterface, instanceOfFileManagerInterface } from '../interfaces/file-manager.interface';\n\nexport class FileUploader extends Transfer implements TransferInterface<FileManagerInterface> {\n    private _subs: Subscription[] = [];\n\n    constructor(_options?: TransferOptionsInterface, _protocol?: Protocol) {\n        super('FileUploader', _options);\n\n        if (typeof _protocol === 'undefined') {\n            this.setProtocol(new ProtocolXHR());\n        } else {\n            this.setProtocol(_protocol);\n        }\n        this.init();\n    }\n\n    public init() {\n        this.destroy();\n\n        const sub1 = this.getProtocol().progress.subscribe({\n            next: (obj: any) => {\n                const { _file, _data } = obj;\n                if (instanceOfFileManagerInterface(_file)) {\n                    this._onProgressFile(_file, _data.percent);\n                    this._onProgressFileSpeed(_file, _data);\n                }\n            },\n            error: (error: any) => {\n                throw new Error(error);\n            }\n        });\n        this._subs.push(sub1);\n\n        const sub2 = this.getProtocol().load.subscribe({\n            next: (obj: any) => {\n                const { _file, response, status, headers } = obj;\n                if (instanceOfFileManagerInterface(_file)) {\n                    const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n                    const gist = this.isSuccessCode(status);\n                    const method = (g: boolean, f: FileManagerInterface, r: any, s: number, h: any) => {\n                        if (g) {\n                            uploader._onSuccessFile(f, r, s, h);\n                        } else {\n                            uploader._onErrorFile(f, r, s, h);\n                        }\n                    };\n                    method(gist, _file, response, status, headers);\n                    uploader._onCompleteFile(_file, response, status, headers);\n                }\n            },\n            error: (error: any) => {\n                throw new Error(error);\n            }\n        });\n        this._subs.push(sub2);\n\n        const sub3 = this.getProtocol().error.subscribe({\n            next: (obj: any) => {\n                const { _file, response, status, headers } = obj;\n                if (instanceOfFileManagerInterface(_file)) {\n                    const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n                    uploader._onErrorFile(_file, response, status, headers);\n                    uploader._onCompleteFile(_file, response, status, headers);\n                }\n            },\n            error: (error: any) => {\n                throw new Error(error);\n            }\n        });\n        this._subs.push(sub3);\n\n        const sub4 = this.getProtocol().abort.subscribe({\n            next: (obj: any) => {\n                const { _file, response, status, headers } = obj;\n                if (instanceOfFileManagerInterface(_file)) {\n                    const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n                    uploader._onCancelFile(_file, response, status, headers);\n                    uploader._onCompleteFile(_file, response, status, headers);\n                }\n            },\n            error: (error: any) => {\n                throw new Error(error);\n            }\n        });\n        this._subs.push(sub4);\n    }\n\n    public destroy() {\n        for (const _sub of this._subs) {\n            _sub.unsubscribe();\n        }\n        this._subs = [];\n    }\n}\n","import { DatePipe } from '@angular/common';\nimport { FileManagerInterface } from '../interfaces/file-manager.interface';\n\nexport enum filterType {\n    regex = 'regex',\n    callback = 'callback'\n}\n\nexport type fileRegExpType = 'name' | 'type' | 'date';\n\nexport class FileFilter {\n    public get name(): string {\n        return this._name;\n    }\n\n    public get type(): filterType | null {\n        return this._type;\n    }\n\n    private _name = '';\n    private _regex: RegExp | null = null;\n    private _regCheck: string | null = null;\n    private _callback: (file: FileManagerInterface) => boolean | null = null;\n    private _type: filterType | null = null;\n\n    constructor(name: string, _data: RegExp | ((file: FileManagerInterface) => boolean), _regCheck: fileRegExpType = 'name') {\n        this._name = name;\n        if (_data instanceof RegExp) {\n            this._type = filterType.regex;\n            this._regex = _data;\n            this._regCheck = _regCheck;\n            return;\n        } else if (_data instanceof Function) {\n            this._type = filterType.callback;\n            this._callback = _data;\n            return;\n        }\n        throw new Error('FilterData is not defined.');\n    }\n\n    public validate(file: FileManagerInterface): boolean {\n        let _valid = false;\n        if (this._type === filterType.regex) {\n            return this._regexpCheck(file);\n        } else if (this._type === filterType.callback) {\n            _valid = (<(file: FileManagerInterface) => boolean>this._callback)(file);\n        } else {\n            throw new Error('Filter type is not defined.');\n        }\n        return _valid;\n    }\n\n    private _regexpCheck(file: FileManagerInterface): boolean {\n        let _valid = false;\n        switch (this._regCheck) {\n            case 'name':\n                _valid = file.object.name.match(<RegExp>this._regex) != null;\n                break;\n\n            case 'type':\n                _valid = file.object.type.match(<RegExp>this._regex) != null;\n                break;\n\n            case 'date':\n                // Format for validation is `2017-01-01 10:10:10`\n                const _checkDate: string | null = new DatePipe('en-US').transform(file.object.lastModifiedDate, 'yyyy-MM-dd hh:mm:ss');\n                if (_checkDate && _checkDate.match(<RegExp>this._regex)) {\n                    _valid = true;\n                }\n                break;\n\n            default: {\n                throw new Error('RegExp can only check on `name | type | date`.');\n            }\n        }\n        return _valid;\n    }\n}\n","import { HttpClient, HttpEvent, HttpEventType, HttpRequest } from '@angular/common/http';\nimport { Observable, of, Subject, lastValueFrom } from 'rxjs';\nimport { map, catchError, takeUntil } from 'rxjs/operators';\n\nimport { Protocol, Utils } from '../classes';\nimport { FileSizePipe } from '../pipes';\nimport { TransferInterface, FileManagerInterface } from '../interfaces';\n\nexport class AngularFileUploadProtocol extends Protocol {\n    protected ngUnsubscribe: Subject<void> = new Subject<void>();\n\n    constructor(private _httpClient: HttpClient) {\n        super();\n    }\n\n    /**\n     * Implementation of the abstract.protocol method `run`\n     *\n     * @memberOf ProtocolXHR\n     */\n    public async run<T>(_file: FileManagerInterface): Promise<void> {\n        let sendable: any;\n        const uploader: TransferInterface<FileManagerInterface> = _file.getUploader();\n\n        const _formData = Utils.extendValue(uploader.options.formData, _file.options.formData);\n        const _withCredentials = Utils.extendValue(uploader.options.withCredentials, _file.options.withCredentials);\n        const _method = Utils.extendValue(uploader.options.method, _file.options.method);\n        const _url = Utils.extendValue(uploader.options.url, _file.options.url);\n        const _alias = Utils.extendValue(uploader.options.alias, _file.options.alias);\n        const _headers = Utils.extendValue(uploader.options.headers, _file.options.headers, { 'Content-Type': 'multipart/form-data' });\n\n        const time: number = new Date().getTime();\n\n        this.connection = {\n            _file: _file,\n            _connection: null\n        };\n\n        sendable = new FormData();\n\n        if (typeof _formData !== 'undefined') {\n            // Only allow Multipart\n            for (const obj of _formData) {\n                for (const key in obj) {\n                    if (obj.hasOwnProperty(key)) {\n                        const value = obj[key];\n                        sendable.append(key, value);\n                    }\n                }\n            }\n        }\n\n        sendable.append(_alias, _file.element, _file.name);\n\n        if (typeof _file.size !== 'number') {\n            throw new TypeError('We need the file size.');\n        }\n\n        const _req = new HttpRequest(_method, _url, sendable, {\n            headers: _headers,\n            reportProgress: true,\n            withCredentials: _withCredentials\n        });\n\n        const _post = this._httpClient.request<T>(_req);\n        await this.handleMethode<T>(_file, _post, time);\n    }\n\n    public async handleMethode<T>(\n        _file: FileManagerInterface,\n        requestHandle: Observable<HttpEvent<T>>,\n        time: number\n    ): Promise<HttpEvent<T>> {\n        let _load = 0;\n        let _speed = 0;\n        let _speedToText: string | null = null;\n        const _$filesize = new FileSizePipe();\n\n        let _headers: any, _response: any, _status: any, _request: any;\n\n        return lastValueFrom(requestHandle.pipe(\n            takeUntil(this.ngUnsubscribe),\n            map((event: HttpEvent<T>) => {\n                switch (event.type) {\n                    case HttpEventType.UploadProgress:\n                        const _time = new Date().getTime() - time;\n                        _load = event.loaded - _load;\n                        _speed = (_load / _time) * 1000;\n                        _speed = parseInt(<any>_speed, 10);\n                        _speedToText = _$filesize.transform(_speed);\n                        const _obj = {\n                            total: event.total,\n                            loaded: event.loaded,\n                            percent: Math.round((event.loaded / event.total) * 100),\n                            speed: _speed,\n                            speedToText: _speedToText\n                        };\n                        _request = this.isConnected(_file);\n                        if (_request) {\n                            this.progress.next({ _file: _file, _data: _obj });\n                        }\n                        return event;\n\n                    case HttpEventType.Response:\n                        _headers = event.headers;\n                        _response = event.body;\n                        _status = event.status;\n                        _request = this.isConnected(_file);\n                        if (_request) {\n                            this.load.next({ _file: _file, response: _response, status: _status, headers: _headers });\n                        }\n                        return event;\n                    default:\n                        return event;\n                }\n            }),\n            catchError((error: any) => {\n                console.log(`Upload failed: ${error.message}`);\n                this.error.next({ _file: _file, response: error, status: error.status, headers: {} });\n                console.error(error);\n                return of(undefined);\n            })\n        ));\n    }\n\n    public cancel(_file: FileManagerInterface) {\n        const _request = this.isConnected(_file);\n        if (_request) {\n            this.ngUnsubscribe.next();\n            this.ngUnsubscribe.complete();\n            this.abort.next({ _file: _file, response: {}, status: 999, headers: {} });\n            this.removeConnection(_file);\n        }\n    }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { HookTypeEnum, UploaderHook, ProtocolXHR, FileUploader } from '../classes';\nimport { TransferOptionsInterface, TransferInterface, FileManagerInterface } from '../interfaces';\nimport { AngularFileUploadProtocol } from './angular-file-upload.protocol';\n\ninterface UploadServiceInterface {\n    uploader: TransferInterface<FileManagerInterface>;\n}\n\nexport const FILE_UPLOADER_CONFIG = new InjectionToken<TransferOptionsInterface>('FILE_UPLOADER_CONFIG');\n\n@Injectable({ providedIn: 'root' })\nexport class FileUploadService {\n    private _uploadServices: { [key: string]: UploadServiceInterface } = {};\n    private _httpClient = inject(HttpClient);\n    private _config = inject(FILE_UPLOADER_CONFIG, { optional: true });\n\n    constructor() {\n        if (this._config && this._config.url) {\n            this.registerUploadService('default', new FileUploader(this._config));\n            this.useAngularProtocol('default');\n        }\n    }\n\n    public registerUploadService(uploaderKey: string, uploader: TransferInterface<FileManagerInterface>): void {\n        if (this._uploadServices[uploaderKey] != null) {\n            throw new Error(`Upload service with the key [${uploaderKey}] exists.`);\n        }\n        if (this._config) {\n            uploader.bindOptions({ ...this._config, ...uploader.options });\n        }\n        this._uploadServices[uploaderKey] = {\n            uploader\n        };\n    }\n\n    public setHook(uploaderKey: string, type: HookTypeEnum, fnCallback: (...args: any[]) => void, priority = 0): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.hook(new UploaderHook(type, fnCallback, priority));\n    }\n\n    public useAngularProtocol(uploaderKey: string): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.setProtocol(new AngularFileUploadProtocol(this._httpClient));\n        this._uploadServices[uploaderKey].uploader.init();\n    }\n\n    public useDefaultProtocol(uploaderKey: string): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.setProtocol(new ProtocolXHR());\n        this._uploadServices[uploaderKey].uploader.init();\n    }\n\n    public getUploader(uploaderKey: string): TransferInterface<FileManagerInterface> {\n        this._checkUploader(uploaderKey);\n\n        return this._uploadServices[uploaderKey].uploader;\n    }\n\n    public addFile(uploaderKey: string, file: FileManagerInterface): void {\n        this._checkUploader(uploaderKey);\n\n        file.bindUploader(this._uploadServices[uploaderKey].uploader);\n    }\n\n    public addFiles(uploaderKey: string, files: FileManagerInterface[]): void {\n        this._checkUploader(uploaderKey);\n\n        for (const _file of files) {\n            _file.bindUploader(this._uploadServices[uploaderKey].uploader);\n        }\n    }\n\n    public startAll(uploaderKey: string): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.upload();\n    }\n\n    public startFile(uploaderKey: string, file: FileManagerInterface): void {\n        this._checkUploader(uploaderKey);\n\n        if (file.getUploader() == null) {\n            file.bindUploader(this._uploadServices[uploaderKey].uploader);\n        }\n\n        this._uploadServices[uploaderKey].uploader.uploadFile(file);\n    }\n\n    public cancelAll(uploaderKey: string): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.cancel();\n    }\n\n    public cancelFile(uploaderKey: string, file: FileManagerInterface): void {\n        this._checkUploader(uploaderKey);\n\n        this._uploadServices[uploaderKey].uploader.cancelUploadFile(file);\n    }\n\n    private _checkUploader(uploaderKey: string): void {\n        if (this._uploadServices[uploaderKey] == null) {\n            throw new Error(`Upload service with the key [${uploaderKey}] doesn't exists.`);\n        }\n    }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { TransferOptionsInterface } from './interfaces';\nimport { FILE_UPLOADER_CONFIG, FileUploadService } from './services/file-upload.service';\nimport { ImagePreviewDirective, FileSelectDirective, FileDropDirective, ProgressBarDirective } from './directives';\nimport { FileSizePipe } from './pipes';\n\n/** @deprecated Use provideNgxFileUploader() and import standalone directives/pipes directly */\n@NgModule({\n    imports: [FileDropDirective, FileSelectDirective, ImagePreviewDirective, ProgressBarDirective, FileSizePipe],\n    exports: [FileDropDirective, FileSelectDirective, ImagePreviewDirective, ProgressBarDirective, FileSizePipe]\n})\nexport class NgxFileUploaderModule {\n    /** @deprecated Use provideNgxFileUploader() instead */\n    public static forRoot(parameters: TransferOptionsInterface = {}): ModuleWithProviders<NgxFileUploaderModule> {\n        return {\n            ngModule: NgxFileUploaderModule,\n            providers: [FileUploadService, { provide: FILE_UPLOADER_CONFIG, useValue: parameters }]\n        };\n    }\n}\n","import { makeEnvironmentProviders, EnvironmentProviders } from '@angular/core';\nimport { FILE_UPLOADER_CONFIG } from './services/file-upload.service';\nimport { TransferOptionsInterface } from './interfaces';\n\nexport function provideNgxFileUploader(config: TransferOptionsInterface = {}): EnvironmentProviders {\n    return makeEnvironmentProviders([\n        { provide: FILE_UPLOADER_CONFIG, useValue: config }\n    ]);\n}\n","/*\n * Public API Surface of ngx-file-uploader\n */\nexport * from './lib/directives';\nexport * from './lib/interfaces';\nexport * from './lib/pipes';\nexport * from './lib/services';\nexport * from './lib/classes';\nexport * from './lib/ngx-file-uploader.module';\nexport * from './lib/provide-ngx-file-uploader';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAAa,KAAK,CAAA;AACd,IAAA,OAAO,aAAa,GAAG,CAAC;AAExB,IAAA,OAAO,OAAO,GAAG,MAAc,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE;AACjE;;;;;;AAMG;AACH,IAAA,OAAO,QAAQ,GAAA;QACX,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;AACjE,YAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,EAC9B,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AACvC,YAAA,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACzB,QAAA,CAAC,CAAC;IACN;AAEA;;;;;;;AAOG;IACH,OAAO,SAAS,CAAC,KAAU,EAAA;QACvB,OAAO,CAAC,EACJ,KAAK;AACL,aAAC,KAAK,CAAC,QAAQ;AACX,iBAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAChD,CAAC;IACN;AAEA;;;;;;;AAOG;IACH,OAAO,QAAQ,CAAC,KAAU,EAAA;QACtB,OAAO,CAAC,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC;IACxC;AAEA,IAAA,OAAO,WAAW,CAAC,GAAG,IAAW,EAAA;AAC7B,QAAA,IAAI,MAAM,GAAQ,IAAI,CAAC,CAAC,CAAC;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAChC,gBAAA,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;YACpB;QACJ;AACA,QAAA,OAAO,MAAM;IACjB;;;MCrDS,UAAU,CAAA;AACnB,IAAA,gBAAgB;AAChB,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,IAAI;AAEJ,IAAA,WAAA,CAAY,WAAoC,EAAA;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;QAC5C,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,mBAAmB,CAAE,WAAgC,CAAC,KAAK,CAAC;QACrE;aAAO;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAmB,CAAC;QAC/C;IACJ;AAEQ,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;AACzE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE;IAC5C;AAEQ,IAAA,iBAAiB,CAAC,MAAY,EAAA;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;IAC3B;AACH;;ACpBD,MAAM,yBAAyB,GAAgC,EAAE;AAEjE,MAAM,YAAY,GAAmB;AACjC,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,WAAW,EAAE;CAChB;MAEY,WAAW,CAAA;AACb,IAAA,OAAO;AAEN,IAAA,GAAG;AACH,IAAA,SAAS;AACT,IAAA,SAAS;AACT,IAAA,YAAY;AACZ,IAAA,KAAK;AAEL,IAAA,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,IAAA,YAAY,GAAG,MAAM,CAAiB,YAAY,CAAC;AACnD,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,SAAS;AACT,IAAA,QAAQ;AACR,IAAA,UAAU;AACV,IAAA,WAAW;AAEX,IAAA,SAAS;IAEjB,IAAW,QAAQ,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;AAEA,IAAA,IAAW,EAAE,GAAA;QACT,OAAO,IAAI,CAAC,GAAG;IACnB;AAEgB,IAAA,eAAe,GAAmB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAEnE,IAAA,cAAc,GAA2B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAEvF,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,eAAe,EAAE;IACjC;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,YAAY;IAC5B;AAEA,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;IAC1B;AAEA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;IAC1B;AAEA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB;IACtC;AAEA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;IAC1B;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,WAAW;IAC3B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEA,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;;AAIG;AACH,IAAA,WAAA,CAAY,IAAS,EAAE,OAAqC,EAAE,QAAkD,EAAA;AAC5G,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,yBAAyB,EAAE,OAAO,CAAC;AAEpE,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAE7E,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAExB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC/B;IACJ;AAEA;;;;AAIG;AACI,IAAA,YAAY,CAAC,QAAiD,EAAA;AACjE,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;AAEA;;;;AAIG;AACI,IAAA,WAAW,CAAC,OAAoC,EAAA;AACnD,QAAA,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE;AACpE,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAC9E;AAEA;;;;AAIG;IACI,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;;AAKG;IACI,MAAM,GAAA;AACT,QAAA,IAAI,SAAkD;AAEtD,QAAA,IAAI;AACA,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC;QAAE,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,6DAA6D,GAAW,CAAE,CAAC,OAAO,CAAC;QACvG;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAExB,QAAA,IAAI;AACA,YAAA,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B;QAAE,OAAO,EAAE,EAAE;;QAEb;IACJ;AAEA;;;;;AAKG;IACI,MAAM,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AACnC,YAAA,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACnC;IACJ;IAEO,OAAO,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC7B;IACJ;AAEA;;;;;AAKG;IACI,MAAM,GAAA;AACT,QAAA,IAAI,SAAc;AAElB,QAAA,IAAI;AACA,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC;QAAE,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,6DAA6D,GAAW,CAAE,CAAC,OAAO,CAAC;QACvG;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE;QACjB;AAEA,QAAA,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;IAEO,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEO,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEO,SAAS,GAAA;AACZ,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ;IACxF;IAEO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;AAEA;;AAEG;IAEH,cAAc,GAAA;QACV;IACJ;AACA,IAAA,eAAe,CAAC,MAAsB,EAAA;;IAEtC;AAEA,IAAA,UAAU,CAAC,SAAiB,EAAA;;IAE5B;AACA,IAAA,SAAS,CAAC,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;;IAExD;AACA,IAAA,OAAO,CAAC,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;;IAEtD;AAEA;;AAEG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE;IACzB;AAEA,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IAC/B;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC7B;AAEA,IAAA,UAAU,CAAC,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACzC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE;YACxC,IAAI,CAAC,MAAM,EAAE;QACjB;IACJ;AAEA,IAAA,QAAQ,CAAC,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AAChD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IAC3C;AAEQ,IAAA,cAAc,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AACH;;AC3PK,SAAU,8BAA8B,CAAC,GAAQ,EAAA;IACnD,OAAO;QACH,SAAS;QACT,iBAAiB;QACjB,gBAAgB;QAEhB,iBAAiB;QACjB,WAAW;QACX,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,aAAa;QAEb,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,SAAS;QACT,iBAAiB;QACjB,sBAAsB;QACtB,aAAa;QACb,YAAY;QACZ;KACH,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC;AAChC;;MC3Ea,iBAAiB,CAAA;AAYC,IAAA,OAAA;AAA6B,IAAA,QAAA;IAX/C,WAAW,GAAG,KAAK,EAA+B;AAClD,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAA2C;IAEpE,cAAc,GAAG,MAAM,EAAQ;IAC/B,YAAY,GAAG,MAAM,EAAQ;IAC7B,YAAY,GAAG,MAAM,EAA0B;IAC/C,YAAY,GAAG,MAAM,EAAS;IAE/B,UAAU,GAAQ,IAAI;AACtB,IAAA,MAAM;IAEd,WAAA,CAA2B,OAAmB,EAAU,QAAmB,EAAA;QAAhD,IAAA,CAAA,OAAO,GAAP,OAAO;QAAsB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAc;IAEvE,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC;IACnE;IAEO,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;wBACrB,KAAK,CAAC,MAAM,EAAE;wBACd,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBACrC;gBACJ;YACJ;QACJ;IACJ;AAGO,IAAA,UAAU,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;gBAC1B;YACJ;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;YAChE,MAAM,cAAc,GAAG,UAAU;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,CAAC;AAEvF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;IAC9C;AAGO,IAAA,WAAW,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;AAE3E,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,KAAK,CAAC,aAAa,KAAM,IAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClD;YACJ;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;AAEA,QAAA,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;IAC9C;AAGO,IAAA,MAAM,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC;AAE3E,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAExB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;YAEnD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;gBACtB;YACJ;AAEA,YAAA,MAAM,SAAS,GAAa,IAAI,CAAC,UAAU,CAAC,KAAK;AAEjD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACvC;YACJ;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAExB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAEnC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QAC1B;AAEA,QAAA,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;IAC9C;AAEQ,IAAA,8BAA8B,CAAC,KAAY,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;IAC3B;AAEQ,IAAA,QAAQ,CAAC,MAAgB,EAAA;AAC7B,QAAA,IAAI,QAAqB;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI;AACA,gBAAA,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzE;YAAE,OAAO,CAAC,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,CAAC,OAAO,CAAC;YAC3D;YAEA,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD;IACJ;AAEQ,IAAA,qBAAqB,CAAC,KAAkB,EAAA;AAC5C,QAAA,OAAO,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY;IACrF;AAEQ,IAAA,QAAQ,CAAC,KAAU,EAAA;QACvB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACf,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC;AAEA,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClC;AAEA,QAAA,OAAO,KAAK;IAChB;wGAvIS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;uGAkCU,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAkB7B,WAAW,EAAA,CAAA;sBADjB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAkB9B,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MClEvB,mBAAmB,CAAA;IACF,IAAI,GAAG,OAAO;IACd,IAAI,GAAG,MAAM;IAE9B,WAAW,GAAG,KAAK,EAA+B;AAClD,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAA2C;IAEpE,cAAc,GAAG,MAAM,EAAQ;IAC/B,YAAY,GAAG,MAAM,EAAQ;IAC7B,YAAY,GAAG,MAAM,EAA0B;IAC/C,YAAY,GAAG,MAAM,EAAS;IAE/B,UAAU,GAAQ,IAAI;AACtB,IAAA,MAAM;AAEd,IAAA,WAAA,GAAA,EAAe;IAER,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;IACpB;IAEO,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE;wBACrB,KAAK,CAAC,MAAM,EAAE;wBACd,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBACrC;gBACJ;YACJ;QACJ;IACJ;AAGO,IAAA,QAAQ,CAAC,KAAY,EAAA;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB;QACJ;AAEA,QAAA,MAAM,SAAS,GAAa,IAAI,CAAC,UAAU,CAAC,KAAK;AAEjD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAExB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAEnC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AAEtB,QAAA,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;IAC9C;AAEQ,IAAA,8BAA8B,CAAC,KAAY,EAAA;QAC/C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;IAC3B;AAEQ,IAAA,QAAQ,CAAC,MAAgB,EAAA;AAC7B,QAAA,IAAI,QAAqB;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI;AACA,gBAAA,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzE;YAAE,OAAO,CAAC,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,CAAC,OAAO,CAAC;YAC3D;YAEA,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD;IACJ;AAEQ,IAAA,cAAc,CAAC,KAAkB,EAAA;QACrC,OAAO,KAAK,CAAC,MAAM;IACvB;wGA7ES,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAE6B,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;gBACE,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;gBAiCjB,QAAQ,EAAA,CAAA;sBADd,YAAY;uBAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;MCvCzB,qBAAqB,CAAA;AAGV,IAAA,EAAA;IAFX,KAAK,GAAG,KAAK,EAAO;AAE7B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAA,CAAA,EAAE,GAAF,EAAE;QAClB,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;YAElB,EAAE,CAAC,aAAa,CAAC,GAAG;AAChB,gBAAA,sHAAsH;YAE1H,IAAI,GAAG,EAAE;AACL,gBAAA,MAAM,CAAC,SAAS,GAAG,MAAK;oBACpB,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;AACxC,gBAAA,CAAC;AACD,gBAAA,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YACrC;AACJ,QAAA,CAAC,CAAC;IACN;wGAnBS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;;;ACA5D;;;;;;;;AAQE;MAEW,YAAY,CAAA;AAEb,IAAA,KAAK,GAAG;QACZ,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ;KACH;AAED,IAAA,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAE,KAAK,CAAE,EAAG;AACrB,YAAA,OAAO,GAAG;QACd;QACA,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,OAAQ,KAAK,IAAI,IAAI,EAAG;YACpB,KAAK,IAAI,IAAI;AACb,YAAA,IAAI,EAAG;QACX;AAEA,QAAA,OAAO,KAAK,CAAC,OAAO,CAAE,CAAE,SAAS,CAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,IAAI,CAAE;IAClE;wGAtBS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCH/B,oBAAoB,CAAA;AAGT,IAAA,EAAA;AAAwB,IAAA,QAAA;IAFnC,QAAQ,GAAG,KAAK,EAAkB;IAE3C,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAChD,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,EAAE;gBACH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO;AACvC,gBAAA,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;AACb,oBAAA,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE;oBAC/B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5F;qBAAO;AACH,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,CAAC;gBACtE;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;wGAhBS,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACDD;;AAEG;MACmB,QAAQ,CAAA;AAC1B,IAAA,QAAQ;AACR,IAAA,IAAI;AACJ,IAAA,KAAK;AACL,IAAA,KAAK;IAEL,IAAW,UAAU,CAAC,GAAQ,EAAA;AAC1B,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,GAAG;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,KAAK,CAAC,EAAE;AACZ,gBAAA,UAAU,EAAE;AACf,aAAA,CAAC;QACN;IACJ;AAEQ,IAAA,YAAY;AAEpB;;;;AAIG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAO;AAClC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,EAAO;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAO;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAO;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IAC1B;AAEA;;;;AAIG;AACI,IAAA,OAAO,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AACnF,QAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACxC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,CAAuB,EAAE,CAAM,EAAE,CAAS,EAAE,CAAM,KAAI;YAC9E,IAAI,CAAC,EAAE;gBACH,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC;iBAAO;gBACH,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACrC;AACJ,QAAA,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC9C,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IAC9D;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AACpF,QAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;QAC7E,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACvD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IAC9D;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AACpF,QAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;QAC7E,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACvD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IAC9D;AAEA;;;;AAIG;AACI,IAAA,cAAc,CAAC,MAAc,EAAA;AAChC,QAAA,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,MAAM,KAAK,GAAG;IAC5D;AAEO,IAAA,WAAW,CAAC,KAA2B,EAAA;AAC1C,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YACtC,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;AAC1B,gBAAA,OAAO,QAAQ;YACnB;QACJ;AACA,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,gBAAgB,CAAC,KAA2B,EAAA;QAC/C,IAAI,QAAQ,GAAe,IAAI;AAC/B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YAClC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAClC,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE;oBAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtC;YACJ;QACJ;IACJ;AASH;AAED;;;;;AAKG;AACG,MAAO,WAAY,SAAQ,QAAQ,CAAA;AACrC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;IACX;AAEA;;;;AAIG;AACI,IAAA,GAAG,CAAC,KAA2B,EAAA;AAClC,QAAA,IAAI,IAAoB;AACxB,QAAA,IAAI,QAAa;AACjB,QAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;AAE7E,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtF,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC3G,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAChF,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAEnF,MAAM,KAAK,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAC1C,IAAI,KAAK,GAAG,CAAC;QACb,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,YAAY,GAAkB,IAAI;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE;AAEpC,QAAA,IAAI,GAAG,IAAI,cAAc,EAAE;QAE3B,IAAI,CAAC,UAAU,GAAG;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE;SAChB;AAED,QAAA,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAEzB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;;AAElC,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,gBAAA,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC/B,oBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC;AAC5B,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC/B;YACJ;QACJ;AAEA,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAElD,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAChC,YAAA,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC;QACjD;AAEA,QAAA,MAAM,SAAS,GAAG,CAAC,KAAoB,KAAI;AACvC,YAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACxB,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK;AAC3C,gBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK;gBAC5B,MAAM,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI;AAChC,gBAAA,MAAM,GAAG,QAAQ,CAAM,MAAM,EAAE,EAAE,CAAC;AAClC,gBAAA,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1C,gBAAA,MAAM,IAAI,GAAG;oBACT,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;AACvD,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,WAAW,EAAE;iBAChB;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACrD;AACJ,QAAA,CAAC;AAED,QAAA,MAAM,YAAY,GAAG,CAAC,MAAa,KAAI;YACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACpE,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1F,QAAA,CAAC;AAED,QAAA,MAAM,aAAa,GAAG,CAAC,MAAa,KAAI;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACpE,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC3F,QAAA,CAAC;AAED,QAAA,MAAM,aAAa,GAAG,CAAC,MAAa,KAAI;YACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACpE,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACpE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC3F,QAAA,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC;AAEnD,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAS,EAAS,EAAA;AACxC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;AACvB,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;oBACpB,aAAa,CAAC,EAAE,CAAC;gBACrB;YACJ;AACJ,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,YAAY;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;AAEvC,QAAA,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;AACzB,YAAA,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC/B,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;YACtC;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvB;AAEO,IAAA,MAAM,CAAC,KAA2B,EAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC,IAAI,QAAQ,EAAE;AACV,YAAA,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAChC;IACJ;AACH;;IC3PW;AAAZ,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AAEnC,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAEzB,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,YAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC3C,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,YAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AAErC,IAAA,YAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,YAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AAC3C,CAAC,EAlBW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;MAoBX,YAAY,CAAA;AACrB,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;IAEQ,KAAK,GAAwB,IAAI;IACjC,SAAS,GAAoC,IAAI;IACjD,SAAS,GAAkB,IAAI;AAEvC,IAAA,WAAA,CAAY,SAAuB,EAAE,SAAmC,EAAE,SAAS,GAAG,CAAC,EAAA;AACnF,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS;IAC/B;AACH;;ACjCD;;;;AAIG;MACmB,QAAQ,CAAA;AAwCP,IAAA,IAAA;AAvCX,IAAA,sBAAsB,GAA6B;AACvD,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,WAAW,EAAE;KAChB;AAEM,IAAA,OAAO;;AAGN,IAAA,GAAG;AACH,IAAA,YAAY,GAAG,MAAM,CAAyB,EAAE,CAAC;AACjD,IAAA,MAAM;AACN,IAAA,QAAQ;AACR,IAAA,cAAc;AACd,IAAA,SAAS;AAEjB,IAAA,IAAW,EAAE,GAAA;QACT,OAAO,IAAI,CAAC,GAAG;IACnB;AAEgB,IAAA,KAAK,GAAmC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAEtF,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;AAEA;;;;AAIG;IACH,WAAA,CAAmB,IAAY,EAAE,OAAkC,EAAA;QAAhD,IAAA,CAAA,IAAI,GAAJ,IAAI;QACnB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,IAAI,QAAQ,IAAI,UAAU,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AACpG,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,wEAAA,CAA0E,CAAC;QAC/F;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;IAC1E;AAEA;;;;AAIG;AACI,IAAA,WAAW,CAAC,OAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE;IAClD;AAEA;;;;AAIG;IACI,OAAO,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ;IACxB;AAEA;;;;AAIG;IACI,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,cAAc;IAC9B;AAEA;;;;AAIG;AACI,IAAA,IAAI,CAAC,IAAkB,EAAA;QAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACtB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;oBACnB,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;wBACjB,OAAO,CAAC,CAAC;oBACb;oBACA,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;AACjB,wBAAA,OAAO,CAAC;oBACZ;gBACJ;qBAAO;oBACH,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE;wBACzB,OAAO,CAAC,CAAC;oBACb;oBACA,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE;AACzB,wBAAA,OAAO,CAAC;oBACZ;AACA,oBAAA,OAAO,CAAC;gBACZ;AACJ,YAAA,CAAC,CAAC;QACN;aAAO;YACH,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,IAAI,CAAC,IAAI,CAAA,qCAAA,CAAuC,CAAC;QAC5F;IACJ;AAEA;;;;AAIG;AACI,IAAA,UAAU,CAAC,IAAkB,EAAA;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,GAAG,IAAI,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,YAAA,OAAO,IAAI;QACf;AACA,QAAA,OAAO,KAAK;IAChB;IAEO,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAA,EAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,QAAQ,CAAA,CAAE,CAAC;IAC5F;AAEO,IAAA,OAAO,CAAC,IAA0B,EAAA;QACrC,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,IAAI;AACA,YAAA,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC;QAAE,OAAO,EAAE,EAAE;YACT,MAAM,GAAG,KAAK;QAClB;QACA,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC;gBAClD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;AACxC,gBAAA,OAAO,IAAI;YACf;QACJ;aAAO;YACH,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;AACxC,YAAA,OAAO,IAAI;QACf;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1B,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,UAAU,CAAC,KAA2B,EAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YACZ,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,YAAA,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,YAAA,OAAO,IAAI;QACf;AACA,QAAA,OAAO,KAAK;IAChB;AAEO,IAAA,OAAO,CAAC,KAA2B,EAAA;QACtC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACzC,YAAA,OAAO,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACzG,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,SAAS,CAAC,OAAmB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC;IACJ;AAEO,IAAA,QAAQ,CAAC,KAA2B,EAAA;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3E;AACA,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,WAAW,CAAC,SAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC9B;IAEO,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;;;;AAIG;AACI,IAAA,aAAa,CAAC,MAAc,EAAA;AAC/B,QAAA,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,MAAM,KAAK,GAAG;IAC5D;AAEA;;AAEG;IACI,MAAM,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B;IACJ;IACO,MAAM,GAAA;AACT,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAChC;IACJ;IACO,MAAM,GAAA;QACT,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AACtC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC1B;IACJ;AACO,IAAA,UAAU,CAAC,IAA0B,EAAA;QACxC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtB;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;AACO,IAAA,gBAAgB,CAAC,IAA0B,EAAA;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACrD,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;QACxC;IACJ;AAEA;;AAEG;AAEI,IAAA,SAAS,CAAC,KAA2B,EAAA;QACxC;IACJ;AACO,IAAA,cAAc,CAAC,KAA2B,EAAA;QAC7C;IACJ;AACO,IAAA,YAAY,CAAC,KAA2B,EAAA;QAC3C;IACJ;AACO,IAAA,iBAAiB,CAAC,SAAkD,EAAA;QACvE;IACJ;AACO,IAAA,cAAc,CAAC,KAA2B,EAAA;QAC7C;IACJ;IACO,UAAU,CAAC,SAAkD,EAAE,SAAc,EAAA;QAChF;IACJ;IACO,cAAc,CAAC,KAA2B,EAAE,SAAiB,EAAA;QAChE;IACJ;IACO,mBAAmB,CAAC,KAA2B,EAAE,SAAc,EAAA;QAClE;IACJ;AACO,IAAA,SAAS,CAAC,KAA2B,EAAE,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;QACxF;IACJ;AACO,IAAA,OAAO,CAAC,KAA2B,EAAE,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;QACtF;IACJ;AACO,IAAA,QAAQ,CAAC,KAA2B,EAAE,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;QACvF;IACJ;AACO,IAAA,UAAU,CAAC,KAA2B,EAAE,SAAc,EAAE,OAAe,EAAE,QAAa,EAAA;QACzF;IACJ;AACO,IAAA,aAAa,CAAC,SAAkD,EAAA;QACnE;IACJ;AAEA;;AAEG;AAEI,IAAA,UAAU,CAAC,KAA2B,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACzB;AACO,IAAA,eAAe,CAAC,KAA2B,EAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;AACO,IAAA,aAAa,CAAC,KAA2B,EAAA;QAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;IACO,kBAAkB,GAAA;QACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAW,CAAC;IACvC;AACO,IAAA,eAAe,CAAC,KAA2B,EAAA;QAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACpD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IAC9B;IACO,oBAAoB,CAAC,KAA2B,EAAE,MAAW,EAAA;QAChE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC;AAC9D,QAAA,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC;IAC3C;IACO,eAAe,CAAC,KAA2B,EAAE,SAAiB,EAAA;QACjE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,CAAC;AAChE,QAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;IACtB;IACO,WAAW,GAAA;AACd,QAAA,MAAM,KAAK,GAA2B,IAAI,CAAC,YAAY,EAAE;AACzD,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,IAAI,OAAO,GAAG,CAAC;AACf,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;oBAC5B,OAAO,IAAI,GAAG;gBAClB;AAAO,qBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC3B,oBAAA,OAAO,IAAI,IAAI,CAAC,aAAa;gBACjC;YACJ;YACA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;AACtD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAW,EAAE,OAAO,CAAC;AACrC,YAAA,OAAO,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;QAC3C;IACJ;AACO,IAAA,cAAc,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AAC1F,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC/E,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACpD;AACO,IAAA,YAAY,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AACxF,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC9E,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IAClD;AACO,IAAA,aAAa,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AACzF,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAC9E,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACnD;AACO,IAAA,eAAe,CAAC,KAA2B,EAAE,QAAa,EAAE,MAAc,EAAE,OAAY,EAAA;AAC3F,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QAChF,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACrD;IACO,cAAc,GAAA;QACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAW,CAAC;IACnC;AAEO,IAAA,aAAa,CAAC,OAAY,EAAA;QAC7B,MAAM,MAAM,GAAQ,EAAE;AACtB,QAAA,IAAI,GAAQ,EAAE,GAAQ,EAAE,CAAM;QAE9B,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,MAAM;QACjB;QAEA,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AACzC,QAAA,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;AAC9B,YAAA,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACrB,YAAA,GAAG,GAAG;AACD,iBAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,iBAAA,IAAI;AACJ,iBAAA,WAAW,EAAE;AAClB,YAAA,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;YAE9B,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG;YAC9D;QACJ;AAEA,QAAA,OAAO,MAAM;IACjB;IACO,kBAAkB,CAAC,QAAa,EAAE,QAAa,EAAA;AAClD,QAAA,OAAO,QAAQ;IACnB;AAEO,IAAA,QAAQ,CAAC,IAAkB,EAAE,GAAG,IAAW,EAAA;AAC9C,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACjC,MAAM,GAAG,GAAiB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1C,gBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;oBACnB,QAAQ,IAAI;wBACR,KAAK,YAAY,CAAC,gBAAgB;wBAClC,KAAK,YAAY,CAAC,gBAAgB;wBAClC,KAAK,YAAY,CAAC,iBAAiB;wBACnC,KAAK,YAAY,CAAC,eAAe;wBACjC,KAAK,YAAY,CAAC,eAAe;wBACjC,KAAK,YAAY,CAAC,iBAAiB;wBACnC,KAAK,YAAY,CAAC,iBAAiB;wBACnC,KAAK,YAAY,CAAC,UAAU;4BACxB;gCAC+B,GAAG,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;4BACrD;4BACA;wBAEJ,KAAK,YAAY,CAAC,kBAAkB;wBACpC,KAAK,YAAY,CAAC,mBAAmB;4BACjC;AAC+B,gCAAA,GAAG,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;4BAC9D;4BACA;wBAEJ,KAAK,YAAY,CAAC,gBAAgB;wBAClC,KAAK,YAAY,CAAC,iBAAiB;wBACnC,KAAK,YAAY,CAAC,gBAAgB;wBAClC,KAAK,YAAY,CAAC,kBAAkB;4BAChC;gCAC+B,GAAG,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;4BAChF;4BACA;wBAEJ,SAAS;AACL,4BAAA,MAAM,IAAI,KAAK,CAAC,CAAA,+BAAA,CAAiC,CAAC;wBACtD;;gBAER;YACJ;QACJ;IACJ;AAEQ,IAAA,WAAW,CAAC,IAAkB,EAAA;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;oBACpE,OAAO,CAAC,GAAG;gBACf;YACJ;QACJ;QACA,OAAO,CAAC,CAAC;IACb;AAEQ,IAAA,aAAa,CAAC,MAAkB,EAAA;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AACrC,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;AAC9B,gBAAA,OAAO,IAAI;YACf;QACJ;AACA,QAAA,OAAO,KAAK;IAChB;AAIH;;ACzdK,MAAO,YAAa,SAAQ,QAAQ,CAAA;IAC9B,KAAK,GAAmB,EAAE;IAElC,WAAA,CAAY,QAAmC,EAAE,SAAoB,EAAA;AACjE,QAAA,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC;AAE/B,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC/B;QACA,IAAI,CAAC,IAAI,EAAE;IACf;IAEO,IAAI,GAAA;QACP,IAAI,CAAC,OAAO,EAAE;QAEd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC/C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACf,gBAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,GAAG;AAC5B,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;oBACvC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AAC1C,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC3C;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAC1B;AACH,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;AAChD,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;oBAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACvC,oBAAA,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,CAAuB,EAAE,CAAM,EAAE,CAAS,EAAE,CAAM,KAAI;wBAC9E,IAAI,CAAC,EAAE;4BACH,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACvC;6BAAO;4BACH,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACrC;AACJ,oBAAA,CAAC;oBACD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;oBAC9C,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC9D;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAC1B;AACH,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;AAChD,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;oBAC7E,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;oBACvD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC9D;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAC1B;AACH,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG;AAChD,gBAAA,IAAI,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvC,oBAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;oBAC7E,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;oBACxD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC9D;YACJ,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AAClB,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;YAC1B;AACH,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB;IAEO,OAAO,GAAA;AACV,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,CAAC,WAAW,EAAE;QACtB;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACnB;AACH;;IC/FW;AAAZ,CAAA,UAAY,UAAU,EAAA;AAClB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACzB,CAAC,EAHW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;MAOT,UAAU,CAAA;AACnB,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;IAEQ,KAAK,GAAG,EAAE;IACV,MAAM,GAAkB,IAAI;IAC5B,SAAS,GAAkB,IAAI;IAC/B,SAAS,GAAmD,IAAI;IAChE,KAAK,GAAsB,IAAI;AAEvC,IAAA,WAAA,CAAY,IAAY,EAAE,KAAyD,EAAE,YAA4B,MAAM,EAAA;AACnH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;YAC1B;QACJ;AAAO,aAAA,IAAI,KAAK,YAAY,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,QAAQ;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB;QACJ;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IACjD;AAEO,IAAA,QAAQ,CAAC,IAA0B,EAAA;QACtC,IAAI,MAAM,GAAG,KAAK;QAClB,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAClC;aAAO,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,EAAE;AAC3C,YAAA,MAAM,GAA6C,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC;QAC5E;aAAO;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAClD;AACA,QAAA,OAAO,MAAM;IACjB;AAEQ,IAAA,YAAY,CAAC,IAA0B,EAAA;QAC3C,IAAI,MAAM,GAAG,KAAK;AAClB,QAAA,QAAQ,IAAI,CAAC,SAAS;AAClB,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI;gBAC5D;AAEJ,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI;gBAC5D;AAEJ,YAAA,KAAK,MAAM;;AAEP,gBAAA,MAAM,UAAU,GAAkB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;gBACtH,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAS,IAAI,CAAC,MAAM,CAAC,EAAE;oBACrD,MAAM,GAAG,IAAI;gBACjB;gBACA;YAEJ,SAAS;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;YACrE;;AAEJ,QAAA,OAAO,MAAM;IACjB;AACH;;ACrEK,MAAO,yBAA0B,SAAQ,QAAQ,CAAA;AAG/B,IAAA,WAAA;AAFV,IAAA,aAAa,GAAkB,IAAI,OAAO,EAAQ;AAE5D,IAAA,WAAA,CAAoB,WAAuB,EAAA;AACvC,QAAA,KAAK,EAAE;QADS,IAAA,CAAA,WAAW,GAAX,WAAW;IAE/B;AAEA;;;;AAIG;IACI,MAAM,GAAG,CAAI,KAA2B,EAAA;AAC3C,QAAA,IAAI,QAAa;AACjB,QAAA,MAAM,QAAQ,GAA4C,KAAK,CAAC,WAAW,EAAE;AAE7E,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtF,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC3G,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAChF,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC;QAE9H,MAAM,IAAI,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAEzC,IAAI,CAAC,UAAU,GAAG;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE;SAChB;AAED,QAAA,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAEzB,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;;AAElC,YAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,gBAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,oBAAA,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACzB,wBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AACtB,wBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;oBAC/B;gBACJ;YACJ;QACJ;AAEA,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAElD,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAChC,YAAA,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC;QACjD;QAEA,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClD,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,eAAe,EAAE;AACpB,SAAA,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAI,IAAI,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAI,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IACnD;AAEO,IAAA,MAAM,aAAa,CACtB,KAA2B,EAC3B,aAAuC,EACvC,IAAY,EAAA;QAEZ,IAAI,KAAK,GAAG,CAAC;QACb,IAAI,MAAM,GAAG,CAAC;QACd,IAAI,YAAY,GAAkB,IAAI;AACtC,QAAA,MAAM,UAAU,GAAG,IAAI,YAAY,EAAE;AAErC,QAAA,IAAI,QAAa,EAAE,SAAc,EAAE,OAAY,EAAE,QAAa;AAE9D,QAAA,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CACnC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,GAAG,CAAC,CAAC,KAAmB,KAAI;AACxB,YAAA,QAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,aAAa,CAAC,cAAc;oBAC7B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;AACzC,oBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK;oBAC5B,MAAM,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI;AAC/B,oBAAA,MAAM,GAAG,QAAQ,CAAM,MAAM,EAAE,EAAE,CAAC;AAClC,oBAAA,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;AAC3C,oBAAA,MAAM,IAAI,GAAG;wBACT,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,wBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;AACvD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,WAAW,EAAE;qBAChB;AACD,oBAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;oBAClC,IAAI,QAAQ,EAAE;AACV,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBACrD;AACA,oBAAA,OAAO,KAAK;gBAEhB,KAAK,aAAa,CAAC,QAAQ;AACvB,oBAAA,QAAQ,GAAG,KAAK,CAAC,OAAO;AACxB,oBAAA,SAAS,GAAG,KAAK,CAAC,IAAI;AACtB,oBAAA,OAAO,GAAG,KAAK,CAAC,MAAM;AACtB,oBAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;oBAClC,IAAI,QAAQ,EAAE;wBACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;oBAC7F;AACA,oBAAA,OAAO,KAAK;AAChB,gBAAA;AACI,oBAAA,OAAO,KAAK;;AAExB,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAU,KAAI;YACtB,OAAO,CAAC,GAAG,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrF,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,EAAE,CAAC,SAAS,CAAC;QACxB,CAAC,CAAC,CACL,CAAC;IACN;AAEO,IAAA,MAAM,CAAC,KAA2B,EAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACzE,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAChC;IACJ;AACH;;MC3HY,oBAAoB,GAAG,IAAI,cAAc,CAA2B,sBAAsB;MAG1F,iBAAiB,CAAA;IAClB,eAAe,GAA8C,EAAE;AAC/D,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAElE,IAAA,WAAA,GAAA;QACI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAClC,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;QACtC;IACJ;IAEO,qBAAqB,CAAC,WAAmB,EAAE,QAAiD,EAAA;QAC/F,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,CAAA,SAAA,CAAW,CAAC;QAC3E;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClE;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG;YAChC;SACH;IACL;IAEO,OAAO,CAAC,WAAmB,EAAE,IAAkB,EAAE,UAAoC,EAAE,QAAQ,GAAG,CAAC,EAAA;AACtG,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjG;AAEO,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrD;AAEO,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;IACrD;AAEO,IAAA,WAAW,CAAC,WAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEhC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ;IACrD;IAEO,OAAO,CAAC,WAAmB,EAAE,IAA0B,EAAA;AAC1D,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;IACjE;IAEO,QAAQ,CAAC,WAAmB,EAAE,KAA6B,EAAA;AAC9D,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;AACvB,YAAA,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;QAClE;IACJ;AAEO,IAAA,QAAQ,CAAC,WAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;IACvD;IAEO,SAAS,CAAC,WAAmB,EAAE,IAA0B,EAAA;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;QACjE;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;IAC/D;AAEO,IAAA,SAAS,CAAC,WAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;IACvD;IAEO,UAAU,CAAC,WAAmB,EAAE,IAA0B,EAAA;AAC7D,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAEhC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;IACrE;AAEQ,IAAA,cAAc,CAAC,WAAmB,EAAA;QACtC,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,CAAA,iBAAA,CAAmB,CAAC;QACnF;IACJ;wGAhGS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;MAKa,qBAAqB,CAAA;;AAEvB,IAAA,OAAO,OAAO,CAAC,UAAA,GAAuC,EAAE,EAAA;QAC3D,OAAO;AACH,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE;SACzF;IACL;wGAPS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAHpB,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CACjG,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,CAAA,EAAA,CAAA;yGAElG,qBAAqB,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,CAAC;oBAC5G,OAAO,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY;AAC9G,iBAAA;;;ACPK,SAAU,sBAAsB,CAAC,MAAA,GAAmC,EAAE,EAAA;AACxE,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM;AACpD,KAAA,CAAC;AACN;;ACRA;;AAEG;;ACFH;;AAEG;;;;"}