{"version":3,"file":"ngx-json-ui.mjs","sources":["../../../projects/ngx-json-ui/src/lib/shared/utilities/schema-property.util.ts","../../../projects/ngx-json-ui/src/lib/shared/base/base.component.ts","../../../projects/ngx-json-ui/src/lib/shared/components/type-not-found/type-not-found.component.ts","../../../projects/ngx-json-ui/src/lib/core/services/form-submit-broadcast.service.ts","../../../projects/ngx-json-ui/src/lib/shared/pipes/class-list.pipe.ts","../../../projects/ngx-json-ui/src/lib/shared/pipes/style-map.pipe.ts","../../../projects/ngx-json-ui/src/lib/components/structural/form/form.component.ts","../../../projects/ngx-json-ui/src/lib/components/structural/form/form.component.html","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/joi-validator.util.ts","../../../projects/ngx-json-ui/src/lib/core/models/system/extended-form-control.model.ts","../../../projects/ngx-json-ui/src/lib/features/validator/client/array-validators.ts","../../../projects/ngx-json-ui/src/lib/shared/utilities/form-schema-init.util.ts","../../../projects/ngx-json-ui/src/lib/features/components-mapping/tokens/component-mapping-config.token.ts","../../../projects/ngx-json-ui/src/lib/features/components-mapping/tokens/component-mappings.token.ts","../../../projects/ngx-json-ui/src/lib/components/display/divider/divider.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/divider/divider.component.html","../../../projects/ngx-json-ui/src/lib/shared/pipes/safe-html.pipe.ts","../../../projects/ngx-json-ui/src/lib/components/display/headline/headline.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/headline/headline.component.html","../../../projects/ngx-json-ui/src/lib/components/display/label/label.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/label/label.component.html","../../../projects/ngx-json-ui/src/lib/components/display/paragraph/paragraph.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/paragraph/paragraph.component.html","../../../projects/ngx-json-ui/src/lib/components/display/span/span.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/span/span.component.html","../../../projects/ngx-json-ui/src/lib/components/display/icon/icon.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/icon/icon.component.html","../../../projects/ngx-json-ui/src/lib/components/display/image/image.component.ts","../../../projects/ngx-json-ui/src/lib/components/display/image/image.component.html","../../../projects/ngx-json-ui/src/lib/core/services/region.service.ts","../../../projects/ngx-json-ui/src/lib/components/display/container/container.component.ts","../../../projects/ngx-json-ui/src/lib/shared/base/base-form-array.component.ts","../../../projects/ngx-json-ui/src/lib/shared/utilities/array-operations.util.ts","../../../projects/ngx-json-ui/src/lib/shared/utilities/pagination-helper.ts","../../../projects/ngx-json-ui/src/lib/features/data-population/models/dp-rule.model.ts","../../../projects/ngx-json-ui/src/lib/features/data-population/utilities/dpr-extract-variables.util.ts","../../../projects/ngx-json-ui/src/lib/features/data-population/services/data-population-rule.service.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/checkbox/checkbox.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/checkbox/checkbox.component.html","../../../projects/ngx-json-ui/src/lib/shared/base/base-form-control.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/hidden/hidden.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/hidden/hidden.component.html","../../../projects/ngx-json-ui/src/lib/shared/directives/constrained-number.directive.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/number/number.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/number/number.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/radio/radio.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/radio/radio.component.html","../../../projects/ngx-json-ui/src/lib/shared/directives/regex-mask.directive.ts","../../../projects/ngx-json-ui/src/lib/shared/directives/input-mask.directive.ts","../../../projects/ngx-json-ui/src/lib/shared/directives/case-insensitive-allowed-values.directive.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/text/text.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/text/text.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/textarea/textarea.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/textarea/textarea.component.html","../../../projects/ngx-json-ui/src/lib/features/actions/tokens/action-handler.token.ts","../../../projects/ngx-json-ui/src/lib/features/actions/services/action-factory.service.ts","../../../projects/ngx-json-ui/src/lib/components/actions/button/button.component.ts","../../../projects/ngx-json-ui/src/lib/components/actions/button/button.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/toggle/toggle.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/toggle/toggle.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/switch/switch.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/switch/switch.component.html","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/string-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/number-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/date-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/object-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/array-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/boolean-validator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/utilities/validator-schema-generator.util.ts","../../../projects/ngx-json-ui/src/lib/features/validator/services/joi-validator-factory.service.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/obj-array/obj-array.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/obj-array/obj-array.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/select-array/select-array.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/arrays/select-array/select-array.component.html","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/select/select.component.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/basic/select/select.component.html","../../../projects/ngx-json-ui/src/lib/components/overlay/toast/toast.component.ts","../../../projects/ngx-json-ui/src/lib/components/overlay/toast/toast.component.html","../../../projects/ngx-json-ui/src/lib/features/components-mapping/services/component-mapping.service.ts","../../../projects/ngx-json-ui/src/lib/core/services/component-factory.service.ts","../../../projects/ngx-json-ui/src/lib/components/overlay/modal/modal.component.ts","../../../projects/ngx-json-ui/src/lib/components/overlay/modal/modal.component.html","../../../projects/ngx-json-ui/src/lib/core/services/ngx-overlay.service.ts","../../../projects/ngx-json-ui/src/lib/core/services/notification.service.ts","../../../projects/ngx-json-ui/src/lib/interceptors/http-error.interceptor.ts","../../../projects/ngx-json-ui/src/lib/core/core.module.ts","../../../projects/ngx-json-ui/src/lib/core/services/http.service.ts","../../../projects/ngx-json-ui/src/lib/core/services/screen-loader.service.ts","../../../projects/ngx-json-ui/src/lib/features/actions/handlers/api-call.handler.ts","../../../projects/ngx-json-ui/src/lib/features/actions/handlers/load-screen.handler.ts","../../../projects/ngx-json-ui/src/lib/features/actions/handlers/navigation.handler.ts","../../../projects/ngx-json-ui/src/lib/features/actions/handlers/encoded-navigation.handler.ts","../../../projects/ngx-json-ui/src/lib/features/actions/handlers/redirection.handler.ts","../../../projects/ngx-json-ui/src/lib/features/actions/action-feature.module.ts","../../../projects/ngx-json-ui/src/lib/shared/pipes/shared-pipes.module.ts","../../../projects/ngx-json-ui/src/lib/shared/directives/has-tooltip.directive.ts","../../../projects/ngx-json-ui/src/lib/shared/directives/shared-directives.module.ts","../../../projects/ngx-json-ui/src/lib/components/actions/action-components.module.ts","../../../projects/ngx-json-ui/src/lib/components/display/display.module.ts","../../../projects/ngx-json-ui/src/lib/components/structural/structural.module.ts","../../../projects/ngx-json-ui/src/lib/components/form-control/form-control.module.ts","../../../projects/ngx-json-ui/src/lib/components/overlay/overlay.module.ts","../../../projects/ngx-json-ui/src/lib/form-builder.module.ts","../../../projects/ngx-json-ui/src/public-api.ts","../../../projects/ngx-json-ui/src/ngx-json-ui.ts"],"sourcesContent":["//implementing Json classes to overall component\r\nexport function  convertStringArrayIntoString(defaultClassName :string, classList: any): string {\r\n    // If classList is undefine, null or empty or  not type of string array return defaultClassName\r\n    if (!classList || classList.length === 0 || !Array.isArray(classList))\r\n      return defaultClassName;\r\n    \r\n    // Join classList string array with help of empty string and return as string\r\n    return classList.join(' ');\r\n    \r\n}\r\n  ","import { Directive, HostBinding, Input } from '@angular/core';\r\nimport { ComponentModel } from '../../core/models/component.model';\r\nimport { convertStringArrayIntoString } from '../utilities/schema-property.util';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n@Directive()           // ← tells Angular “process metadata on this class”\r\nexport abstract class BaseComponent<C extends ComponentModel = ComponentModel> {\r\n    constructor(protected sanitizer: DomSanitizer) {}\r\n    /** \r\n     * Importing the ComponentModel interface to define the structure of the component's configuration\r\n     * This interface is expected to be defined in the specified path\r\n     * The ComponentModel interface is likely to contain properties that define the component's behavior and appearance (Accept this field's as JSON ).\r\n     * The @Input decorator allows the component to receive data from its parent component\r\n     */\r\n    @Input() config!: C; // The component's configuration object\r\n    /** Binds to the host element’s `class` attr */\r\n    @HostBinding('class') hostClasses = '';\r\n    /** Binds to the host element’s `style` attr */\r\n    @HostBinding('style') hostStyles = '';\r\n    /** Binds to the element’s `class` attr */\r\n    classes: string='';\r\n    /** Binds to the element’s `style` attr */\r\n    styles: { [prop: string]: any } | null = null;\r\n    /**\r\n     * This method applies host configuration to the component.\r\n     * It takes an object with hostClass and hostStyle properties.\r\n     * It converts the hostClass to a string\r\n     * and assigns it to the hostClasses property.\r\n     * It also assigns the hostStyle to the hostStyles property.\r\n     * @param {ComponentModel} param0 - The host configuration object.\r\n     * @param {string} param0.hostClass - The class to be applied to the host element.\r\n     * @param {string} param0.hostStyle - The style to be applied to the host element.\r\n     * @returns {void}\r\n     * @protected\r\n     */\r\n    protected applyHostConfig({ hostClass, hostStyle }: C) {\r\n        // Convert to string if it's an array or null/undefined\r\n        // If it's a string, use it directly. If it's null/undefined, use an empty string.\r\n        this.hostClasses = typeof hostClass === 'string'\r\n        ? hostClass\r\n        : convertStringArrayIntoString('base', hostClass ?? []);\r\n        // Convert to string if it's an array or null/undefined\r\n        // If it's a string, use it directly. If it's null/undefined, use an empty string.\r\n        this.hostStyles = typeof hostStyle === 'string' ? hostStyle : '';\r\n        this.hostStyles = this.stringifyStyles(hostStyle) || '';\r\n    }\r\n    protected applyHostConfigViaClassStyle(config: C) {\r\n        // Convert to string if it's an array or null/undefined\r\n        // If it's a string, use it directly. If it's null/undefined, use an empty string.\r\n        this.hostClasses = typeof config.class === 'string'\r\n        ? config.class\r\n        : convertStringArrayIntoString('base', config.class ?? []);\r\n        // Convert to string if it's an array or null/undefined\r\n        // If it's a string, use it directly. If it's null/undefined, use an empty string.\r\n        this.hostStyles =this.stringifyStyles(config.style) ?? '';\r\n    }\r\n    /**  \r\n     * Converts a style‐object to a CSS string for HostBinding  \r\n     * This is useful for applying styles dynamically to the host element.\r\n     * @param {Record<string,string> | null} [styles] - The styles to be converted to a CSS string.\r\n     * @return {string} - The CSS string representation of the styles.\r\n     * @private\r\n     */\r\n    private stringifyStyles(styles?: Record<string,string> | null): string {\r\n        if (typeof styles === 'string') return styles;\r\n        return styles\r\n        ? Object.entries(styles)\r\n            .map(([k,v]) => `${k}:${v}`)\r\n            .join(';')\r\n        : '';\r\n    }    \r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'nju-type-not-found',\r\n  template: `<div class=\"nju-error\">Component type not found.</div>`\r\n})\r\nexport class TypeNotFoundComponent {\r\n@Input() config: any;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FormSubmitBroadcastService {\r\n  // BehaviorSubject holds the latest “submitted” flag.  \r\n  // We start at false (form not yet submitted).\r\n  public submitted$ = new BehaviorSubject<boolean>(false);\r\n\r\n  // Call this when the user clicks “Submit”\r\n  notifySubmitted() {\r\n    this.submitted$.next(true);\r\n  }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { convertStringArrayIntoString } from '../utilities/schema-property.util';\r\n\r\n@Pipe({\r\n  name: 'classList',\r\n  pure: true,\r\n  standalone: false,\r\n})\r\nexport class ClassListPipe implements PipeTransform {\r\n  /**\r\n   * Transforms a default class and an optional array of classes into a single string.\r\n    * @param classes Array of additional class names (or string if user provided direct class). \r\n    * @param defaultCls Base class to apply when array is empty or undefined.\r\n   */\r\n  transform(\r\n    classes: string[] | string | null | undefined,\r\n    defaultCls: string): string {\r\n    if (typeof classes === 'string') {\r\n      return classes;\r\n    }\r\n    return convertStringArrayIntoString(defaultCls, classes ?? []);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'styleMap',\r\n  pure: true,\r\n  standalone: false,\r\n})\r\nexport class StyleMapPipe implements PipeTransform {\r\n  /**\r\n   * Ensures a style binding input is an object for ngStyle.\r\n   * Accepts string (CSS text), object, null, or undefined.\r\n   * @param styles CSS text or style object.\r\n   * @returns Object for ngStyle or leaves string for attr.style.\r\n   */\r\n  transform(styles?: Record<string,string> | string | null): any {\r\n    if (typeof styles === 'string') {\r\n      return styles;\r\n    }\r\n    return styles ?? {};\r\n  }\r\n}","// Import core modules\r\nimport { \r\n  Component,\r\n  ViewContainerRef,\r\n  ViewChild,\r\n  OnChanges,\r\n  ChangeDetectionStrategy,\r\n  HostBinding,\r\n  SimpleChanges,\r\n  Input, \r\n  OnDestroy} from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormArray } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\nimport { FormComponentModel } from '../../../core/models/component-models/form-component.model';\r\nimport { JoiValidatorFactoryService } from '../../../features/validator/services/joi-validator-factory.service';\r\nimport { ComponentFactoryService } from '../../../core/services/component-factory.service';\r\n\r\nimport {FormSubmitService} from '../../../core/services/form-submit.service';\r\nimport { initFormControlSchema } from '../../../shared/utilities/form-schema-init.util';\r\nimport { FormSubmitBroadcastService } from '../../../core/services/form-submit-broadcast.service';\r\n\r\n@Component({\r\n  selector: 'nju-app-form',\r\n  templateUrl: './form.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormComponent extends BaseComponent<FormComponentModel> implements OnChanges, OnDestroy {\r\n  @HostBinding('id') id = ''; // Binding id to overall component\r\n  @HostBinding('attr.data-component-id') cid = ''; // Binding data-component-id to overall component\r\n  @Input() form!: FormGroup; // The parent form group, if applicable\r\n  // ViewChild decorator is used to get a reference to the dynamic component container in the template\r\n  // It allows you to dynamically load components into the view at runtime\r\n  // The read property specifies that we want to read the ViewContainerRef from the template reference variable 'formContainer'\r\n  @ViewChild('dynamicComponentGroup', { read: ViewContainerRef, static: true }) viewContainerRef!: ViewContainerRef;\r\n\r\n  // Subject is used to manage the lifecycle of the component and unsubscribe from observables when the component is destroyed\r\n  private destroy$ = new Subject<void>(); // Subject to signal when the component is destroyed\r\n\r\n  constructor(protected override sanitizer: DomSanitizer,\r\n              private submitBroadcastService: FormSubmitBroadcastService) { \r\n                super(sanitizer); \r\n              }\r\n\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config) {\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);\r\n      this.id = this.config['id'] || ''; // Set the id based on the config or default to empty string \r\n      this.cid=this.config[\"cid\"] || ''; // Set the cid based on the config or default to empty string\r\n      /* Initialize form controls based on the provided validator schema\r\n      \r\n      initFormControlSchema(\r\n        this.config.validatorSchema,\r\n        this.form,\r\n        this.fb,\r\n        this.joiValidatorFactoryService\r\n      );\r\n      console.log('Form initialized with schema:', this.form?.value);\r\n      // Render nested Json UI      \r\n      if(this.config.components){\r\n        this.viewContainerRef.clear();\r\n        this.componentFactoryService.loadComponents(\r\n          this.config.components ?? [],\r\n          this.viewContainerRef,\r\n          this.form,\r\n          this.config.validatorSchema\r\n        );\r\n      }\r\n      */\r\n      \r\n    }\r\n  }\r\n\r\n  // Handler for form submission\r\n  onSubmit(): void {\r\n    console.log('Form contain invalid value: ', this.form.value);\r\n     // 1) Mark the whole form (and all nested arrays/groups) touched first:\r\n    this.form.markAllAsTouched();\r\n    this.submitBroadcastService.notifySubmitted(); // Notify that the form has been submitted\r\n    if (!this.config.onSubmit?.novalidate && this.form.invalid) {\r\n      console.log('Form contain invalid value: ', this.form.value);\r\n      // Log all validation errors in the form and its nested structures      \r\n      this.getFormValidationErrors(this.form);\r\n      return;\r\n    }\r\n    /*\r\n    this.submitService\r\n      .submit(this.config.onSubmit!, this.form.value)\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        error: (err) => {\r\n          // Global error logging, could delegate to a NotificationService\r\n          console.error('Form submission error:', err);\r\n        }\r\n      });\r\n      */\r\n  }\r\n  /**\r\n   * Method to log all validation errors in the form and its nested structures\r\n   * Recursively logs all validation errors in a FormGroup/FormArray\r\n   */\r\n  private getFormValidationErrors(\r\n    control: FormGroup | FormArray,\r\n    parentKey: string = ''\r\n  ): void {\r\n    // 1) If this group/array itself has errors, log them\r\n    if (control.errors) {\r\n      console.error(\r\n        `Control: ${parentKey || '(root)'}, Errors:`,\r\n        control.errors\r\n      );\r\n    }\r\n  \r\n    // 2) Recurse into child controls\r\n    Object.keys(control.controls).forEach(name => {\r\n      const child = control.get(name)!;\r\n      const fullKey = parentKey ? `${parentKey}.${name}` : name;\r\n  \r\n      if (child instanceof FormGroup || child instanceof FormArray) {\r\n        // recurse for nested groups/arrays\r\n        this.getFormValidationErrors(child, fullKey);\r\n      } else if (child.errors) {\r\n        // primitive FormControl errors\r\n        Object.entries(child.errors).forEach(([errorKey, errorValue]) => {\r\n          console.error(\r\n            `Control: ${fullKey}, KeyError: ${errorKey}, ErrorValue:`,\r\n            errorValue\r\n          );\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n","<form [formGroup]=\"form\"\r\n        (ngSubmit)=\"onSubmit()\"\r\n        [ngClass]=\"config.class| classList:''\"\r\n        [ngStyle]=\"config.style | styleMap\">\r\n    <ng-template #dynamicComponentGroup></ng-template>\r\n</form>\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { JoiValidatorFactoryService } from '../services/joi-validator-factory.service';\r\n\r\nexport function joiValidatorUtil(controlName: string, schemaBody: any, validatorFactoryService: JoiValidatorFactoryService): ValidatorFn {\r\n    return (control: AbstractControl): ValidationErrors | null => {\r\n      const formData = { [controlName]: control.value };\r\n      const { error } = validatorFactoryService.validateSchema({ [controlName]: schemaBody }, formData);\r\n      if (error) {\r\n        const errors: ValidationErrors = {};\r\n        error.details.forEach(detail => {\r\n          errors[detail.context?.key || 'unknown'] = detail.message;\r\n        });\r\n        return errors;\r\n      }\r\n      return null;\r\n    };\r\n  }","import { FormControl } from '@angular/forms';\r\n\r\nexport class ExtendedFormControl extends FormControl {\r\n  metadata?: any;\r\n  constructor(formState: any, validatorOrOpts?: any, asyncValidator?: any) {\r\n    super(formState, validatorOrOpts, asyncValidator);\r\n  }\r\n}","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n/** Ensures the array has at least `min` items */\r\nexport function minItems(min: number): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null =>\r\n    Array.isArray(control.value) && control.value.length < min\r\n      ? { minItems: { required: min, actual: control.value.length } }\r\n      : null;\r\n}\r\n\r\n/** Ensures the array has at most `max` items */\r\nexport function maxItems(max: number): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null =>\r\n    Array.isArray(control.value) && control.value.length > max\r\n      ? { maxItems: { required: max, actual: control.value.length } }\r\n      : null;\r\n}\r\n\r\n/** Ensures all array items are unique */\r\nexport function uniqueItems(): ValidatorFn {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    const arr = control.value;\r\n    if (!Array.isArray(arr)) return null;\r\n    const seen = new Set<any>();\r\n    for (const v of arr) {\r\n      if (seen.has(v)) {\r\n        return { uniqueItems: true };\r\n      }\r\n      seen.add(v);\r\n    }\r\n    return null;\r\n  };\r\n}","import { FormBuilder, FormGroup, FormArray, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { joiValidatorUtil } from '../../features/validator/utilities/joi-validator.util';\r\nimport { JoiValidatorFactoryService } from '../../features/validator/services/joi-validator-factory.service';\r\nimport { ExtendedFormControl } from '../../core/models/system/extended-form-control.model';\r\nimport { maxItems, minItems, uniqueItems } from '../../features/validator/client/array-validators';\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n//////////////////////////////////////////////// Main Function /////////////////////////////////////////////////////////////////\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\nexport function initFormControlSchema(\r\n    schema: any, \r\n    parent: FormGroup, \r\n    fb: FormBuilder, \r\n    validatorFactoryService: JoiValidatorFactoryService, \r\n    defaultValues: any = {}\r\n) {\r\n    for (const key in schema) {\r\n        if (schema.hasOwnProperty(key)) {\r\n            const fieldSchema = schema[key];\r\n            const defaultValue = defaultValues[key] ?? fieldSchema.default ?? null; // Use provided default or schema default\r\n\r\n            if (fieldSchema.type === 'object') {\r\n                const objectDefaults = defaultValue && typeof defaultValue === 'object' ? defaultValue : {};\r\n                parent.addControl(key, createFormGroup(fieldSchema, fb, validatorFactoryService, objectDefaults));\r\n            } else if (fieldSchema.type === 'array') {\r\n                const arrayDefaults = Array.isArray(defaultValue) ? defaultValue : [];\r\n                parent.addControl(key, createFormArray(fieldSchema, fb, validatorFactoryService, arrayDefaults));\r\n            } else {\r\n                parent.addControl(key, createFormControl(fieldSchema, fb, validatorFactoryService, defaultValue));\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n//////////////////////////////////////////////// Core Functions /////////////////////////////////////////////////////////////////\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\nfunction createFormGroup(\r\n    schema: any, \r\n    fb: FormBuilder, \r\n    validatorFactoryService: JoiValidatorFactoryService, \r\n    defaultValues: any = {}\r\n): FormGroup {\r\n    const group = fb.group({});\r\n    \r\n    if (schema.object) {\r\n        initFormControlSchema(schema.object, group, fb, validatorFactoryService, defaultValues);\r\n    }\r\n\r\n    return group;\r\n}\r\nfunction createFormArray(\r\n    schema: any,\r\n    fb: FormBuilder,\r\n    validatorFactoryService: JoiValidatorFactoryService,\r\n    defaultValues: any[] = []\r\n  ): FormArray {\r\n    // 0) Safety: ensure `schema.array` exists\r\n    const arrDef = schema?.array;\r\n    if (!arrDef) {\r\n      console.warn('createFormArray: missing schema.array, returning empty FormArray');\r\n      return fb.array([], []);\r\n    }\r\n  \r\n    // 1) Safety: ensure item definition exists\r\n    const itemSchema = arrDef.items;\r\n    if (!itemSchema) {\r\n      console.warn('createFormArray: missing schema.array.items, cannot build children');\r\n      const fallbackValidators: ValidatorFn[] = [];\r\n      if (arrDef.minItems != null) fallbackValidators.push(minItems(arrDef.minItems));\r\n      if (arrDef.maxItems != null) fallbackValidators.push(maxItems(arrDef.maxItems));\r\n      if (arrDef.uniqueItems)      fallbackValidators.push(uniqueItems());\r\n      return fb.array([], fallbackValidators);\r\n    }\r\n  \r\n    // 2) Safety: ensure defaultValues is an array\r\n    let defaults: any[];\r\n    if (!Array.isArray(defaultValues)) {\r\n      console.warn(\r\n        `createFormArray: defaultValues for \"${schema?.name}\" is not an array, ignoring it`\r\n      );\r\n      defaults = [];\r\n    } else {\r\n      defaults = defaultValues;\r\n    }\r\n  \r\n    // 3) Build child controls\r\n    const controls = defaults.map(value =>\r\n      createFormItem(itemSchema, fb, validatorFactoryService, value)\r\n    );\r\n  \r\n    // 4) Collect array‐level validators\r\n    const arrayValidators: ValidatorFn[] = [];\r\n    if (arrDef.minItems != null) arrayValidators.push(minItems(arrDef.minItems));\r\n    if (arrDef.maxItems != null) arrayValidators.push(maxItems(arrDef.maxItems));\r\n    if (arrDef.uniqueItems)      arrayValidators.push(uniqueItems());\r\n  \r\n    // 5) Return the configured FormArray\r\n    return fb.array(controls, arrayValidators);\r\n  }\r\nfunction createFormItem(\r\n    schema: any, \r\n    fb: FormBuilder, \r\n    validatorFactoryService: JoiValidatorFactoryService, \r\n    defaultValue: any = {}\r\n): FormGroup | FormControl | FormArray {\r\n    if (schema.type === 'object') {\r\n        return createFormGroup(schema, fb, validatorFactoryService, defaultValue);\r\n    } else if (schema.type === 'array') {\r\n        const arrayDefaults = Array.isArray(defaultValue) ? defaultValue : schema.default ?? [];\r\n        return createFormArray(schema, fb, validatorFactoryService, arrayDefaults);\r\n    } else {\r\n        return createFormControl(schema, fb, validatorFactoryService, defaultValue);\r\n    }\r\n}\r\nfunction createFormControl(\r\n    schema: any,\r\n    fb: FormBuilder,\r\n    validatorFactoryService: JoiValidatorFactoryService,\r\n    defaultValue: any = null\r\n): FormControl {\r\n    const validators = getValidators(schema, validatorFactoryService);\r\n    \r\n    // Assign default values properly\r\n    const control = new ExtendedFormControl(defaultValue ?? '', validators);\r\n    control.metadata = extractConstraints(schema);\r\n\r\n    return control;\r\n}\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////// Supportive Functions //////////////////////////////////////////////////////////////////\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\nfunction getValidators(\r\n    schema: any,\r\n    validatorFactoryService: JoiValidatorFactoryService) {\r\n    const validators = [];\r\n    if (schema) {\r\n        validators.push(joiValidatorUtil('', schema, validatorFactoryService));\r\n    }\r\n    return validators;\r\n}\r\nfunction extractConstraints(schema: any) {\r\n    const constraints: any = { type: schema.type };\r\n\r\n    if (schema.string) {\r\n        if (schema.string.pattern) constraints.regexPattern = schema.string.pattern;\r\n        if (schema.string.min !== undefined) constraints.min = schema.string.min;\r\n        if (schema.string.max !== undefined) constraints.max = schema.string.max;\r\n        if (schema.string.length !== undefined) constraints.length = schema.string.length;\r\n        if (schema.string.case) constraints.case = schema.string.case;\r\n        if (schema.string.creditCard) constraints.maskPattern = \"9999-9999-9999-9999\";\r\n        if (schema.string.hostname) constraints.maskPattern = \"*{1,63}.*{1,63}\";\r\n        if (schema.string.ip) constraints.maskPattern = schema.string.ip.version.includes('ipv4') ? \"999.999.999.999\" : \"9999:9999:9999:9999:9999:9999:9999:9999\";\r\n        if (schema.string.email) constraints.maskPattern = \"*{1,63}@*{1,63}.*{2,6}\";\r\n        if (schema.string.alphanum) constraints.maskPattern = \"*{1,}\";\r\n        if (schema.string.insensitive) constraints.allowedValues = schema.string.insensitive;\r\n    }\r\n\r\n    if (schema.number) {\r\n        if (schema.number.port) constraints.port = schema.number.port;\r\n        if (schema.number.positive) constraints.positive = schema.number.positive;\r\n        if (schema.number.multiple !== undefined) constraints.multiple = schema.number.multiple;\r\n        if (schema.number.negative) constraints.negative = schema.number.negative;\r\n        if (schema.number.precision !== undefined) constraints.precision = schema.number.precision;\r\n        if (schema.number.less !== undefined) constraints.less = schema.number.less;\r\n        if (schema.number.greater !== undefined) constraints.greater = schema.number.greater;\r\n        if (schema.number.min !== undefined) constraints.min = schema.number.min;\r\n        if (schema.number.max !== undefined) constraints.max = schema.number.max;\r\n    }\r\n    if (schema.boolean) {\r\n        console.log('boolean:', schema.boolean);\r\n        if (schema.boolean.truthy)  constraints.truthy = schema.boolean.truthy;\r\n        if (schema.boolean.falsy)   constraints.falsy  = schema.boolean.falsy;\r\n        if (schema.boolean.sensitive) constraints.sensitive    = true;\r\n    }\r\n    return constraints;\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { ComponentMappingConfig } from '../models/component-mapping-config';\r\n\r\nexport const COMPONENT_MAPPING_CONFIG = new InjectionToken<ComponentMappingConfig>(\r\n  'COMPONENT_MAPPING_CONFIG',\r\n  {\r\n    providedIn: 'root',\r\n    factory: () => ({ useDefaultMappings: true })  // Defaults to using the built-in mappings.\r\n  }\r\n);","import { InjectionToken } from '@angular/core';\r\nimport { ComponentMappingModel } from '../models/component-mapping.model';\r\n\r\nexport const COMPONENT_MAPPINGS = new InjectionToken<ComponentMappingModel[]>(\r\n  'COMPONENT_MAPPINGS'\r\n);","import { ChangeDetectionStrategy, Component, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n\r\n@Component({\r\n  selector: 'nju-divider',\r\n  standalone: false,\r\n  templateUrl: './divider.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DividerComponent extends BaseComponent implements OnChanges  { \r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config) {\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);    \r\n    }\r\n  }\r\n}\r\n","<hr \r\n    [ngClass]=\"config.class | classList:'border-medium'\" \r\n    [ngStyle]=\"config.style | styleMap\"/>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n  name: 'safeHtml',\r\n  pure: true,\r\n  standalone: false,\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n  constructor(private sanitizer: DomSanitizer) {}\r\n\r\n  transform(html: string | null | undefined): SafeHtml {\r\n    // default to empty string if null/undefined\r\n    return this.sanitizer.bypassSecurityTrustHtml(html ?? '');\r\n  }\r\n}","import { ChangeDetectionStrategy, Component, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n@Component({\r\n  selector: 'nju-headline',\r\n  standalone: false,\r\n  templateUrl: './headline.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HeadlineComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config); \r\n    }\r\n  }\r\n}","<ng-container [ngSwitch]=\"config['tag']\">\r\n  <h1 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h1'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h1>\r\n  <h2 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h2'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h2>\r\n  <h3 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h3'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h3>\r\n  <h4 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h4'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h4>\r\n  <h5 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h5'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h5>\r\n  <h6 [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\" *ngSwitchCase=\"'h6'\" [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></h6>\r\n  <div [ngClass]=\"config.class | classList:''\" [ngStyle]=\"config.style | styleMap\"  *ngSwitchDefault [innerHTML]=\"config['text'] | safeHtml\" [attr.data-component-id]=\"config['cid']\"></div>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n\r\n@Component({\r\n  selector: 'nju-label',\r\n  standalone: false,\r\n  templateUrl: './label.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LabelComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n}","<label \r\n    [ngClass]=\"config.class | classList:'form-label'\"\r\n    [ngStyle]=\"config.style | styleMap\" \r\n    [attr.for]=\"config['controlId'] ?? null\"\r\n    [innerHTML]=\"config['text'] | safeHtml\"\r\n    [attr.data-component-id]=\"config['cid']\">\r\n</label>","import { ChangeDetectionStrategy, Component, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n@Component({\r\n  selector: 'nju-paragraph',\r\n  standalone: false,\r\n  templateUrl: './paragraph.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ParagraphComponent  extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n}\r\n","<p \r\n    [ngClass]=\"config.class | classList:'body-lg'\"\r\n    [ngStyle]=\"config.style | styleMap\"\r\n    [innerHTML]=\"config['text'] | safeHtml\"\r\n    [attr.data-component-id]=\"config['cid']\"></p>","import { ChangeDetectionStrategy, Component, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n\r\n@Component({\r\n  selector: 'nju-span',\r\n  templateUrl: './span.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpanComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n}\r\n","<span \r\n    [ngClass]=\"config.class | classList:''\"\r\n    [ngStyle]=\"config.style | styleMap\" \r\n    [innerHTML]=\"config['text'] | safeHtml\"\r\n    [attr.data-component-id]=\"config['cid']\">\r\n</span>","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n@Component({\r\n  selector: 'nju-icon',\r\n  templateUrl: './icon.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n}","<i [ngClass]=\"config.class| classList:''\" [ngStyle]=\"config.style | styleMap\"></i>","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\n\r\n@Component({\r\n  selector: 'nju-image',\r\n  templateUrl: './image.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ImageComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.applyHostConfig(this.config);   \r\n    }\r\n  }\r\n}\r\n","<img\r\n    [ngClass]=\"config.class | classList:''\" \r\n    [ngStyle]=\"config.style | styleMap\"\r\n    [attr.data-bs-custom-class]=\"config['tooltipCustomClass']\" \r\n    [attr.data-bs-toggle]=\"'tooltip'\"\r\n    [attr.data-bs-placement]=\"config['tooltipPlacement']\" \r\n    [attr.title]=\"config['tooltip']\" \r\n    [src]=\"config['src']\" />","import { Injectable, ViewContainerRef } from \"@angular/core\";\r\n\r\n// src/lib/services/region.service.ts\r\n@Injectable({providedIn:'root'})\r\nexport class RegionService {\r\n  private regions = new Map<string, ViewContainerRef>();\r\n  register(cid: string, vcr: ViewContainerRef) {\r\n    this.regions.set(cid, vcr);\r\n  }\r\n  unregister(cid: string) {\r\n    this.regions.delete(cid);\r\n  }\r\n  get(cid: string): ViewContainerRef | undefined {\r\n    return this.regions.get(cid);\r\n  }\r\n}","import { ChangeDetectionStrategy, Component, HostBinding, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\nimport { RegionService } from '../../../core/services/region.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n@Component({\r\n  selector: 'nju-container',\r\n  template: `<ng-template #dynamicComponentGroup></ng-template>`,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone:false,\r\n})\r\nexport class ContainerComponent extends BaseComponent implements OnChanges, OnDestroy { \r\n  // HostBinding decorator is used to bind properties to the host element of the component\r\n  // It allows you to bind properties to the host element of the component\r\n  constructor(\r\n    private regions: RegionService,\r\n    protected override sanitizer: DomSanitizer\r\n  ) {\r\n    super(sanitizer); \r\n  }\r\n  // HostBinding decorator is used to bind properties to the host element of the component\r\n  @HostBinding('id') id = ''; // Binding id to overall component\r\n  @HostBinding('attr.data-component-id') cid = ''; // Binding data-component-id to overall component\r\n  // ViewChild decorator is used to get a reference to the dynamic component container in the template\r\n  // It allows you to dynamically load components into the view at runtime\r\n  // The read property specifies that we want to read the ViewContainerRef from the template reference variable 'dynamicComponentGroup'\r\n  @ViewChild('dynamicComponentGroup', { read: ViewContainerRef, static: true }) viewContainerRef!: ViewContainerRef;\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config) {\r\n      // apply host and component level styling\r\n      this.applyHostConfigViaClassStyle(this.config); \r\n      this.id = this.config['id'] || ''; // Set the id based on the config or default to empty string \r\n      this.cid=this.config[\"cid\"] || ''; // Set the cid based on the config or default to empty string\r\n\r\n      const cid = this.config.cid || '';\r\n      this.regions.register(cid, this.viewContainerRef);\r\n    }\r\n  }\r\n  \r\n  ngOnDestroy() {\r\n    this.regions.unregister(this.config.cid || '');\r\n  }\r\n}","import {\r\n  Directive,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  OnDestroy,\r\n  ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { FormGroup, FormArray, FormBuilder, ValidationErrors } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { BaseComponent } from './base.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { FormSubmitBroadcastService } from '../../core/services/form-submit-broadcast.service';\r\nimport { FormControlComponentModel } from '../../core/models/component-models/form-control-component.model';\r\n\r\n@Directive()\r\nexport abstract class BaseFormArrayComponent<\r\n  M extends FormControlComponentModel = FormControlComponentModel\r\n> extends BaseComponent<M> implements OnChanges, OnDestroy {\r\n  /** Emits on destroy to clean up subscriptions */\r\n  private destroy$ = new Subject<void>();\r\n\r\n  /** Underlying FormArray */\r\n  protected formArray!: FormArray;\r\n\r\n  /** Parent FormGroup */\r\n  @Input() form!: FormGroup;\r\n\r\n  /** Bind config.name as host id */\r\n  @HostBinding('attr.id') hostId = '';\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected fb: FormBuilder,\r\n    protected submitBroadcastService: FormSubmitBroadcastService,\r\n    protected cdr: ChangeDetectorRef\r\n  ) {\r\n    super(sanitizer);\r\n\r\n    // Watch for form submissions to mark touched and trigger validation\r\n    this.submitBroadcastService.submitted$\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe(() => {\r\n        // Only proceed if formArray is initialized\r\n        if(this.formArray) {\r\n          this.formArray.markAsTouched();\r\n          this.formArray.updateValueAndValidity({ onlySelf: true });\r\n          this.cdr.markForCheck();\r\n        }        \r\n      });\r\n  }\r\n\r\n  /** Initialize or replace FormArray on config/form changes */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config && this.form) {\r\n      const name = this.config.name!;\r\n      this.hostId = name;\r\n\r\n      const existing = this.form.get(name);\r\n      if (existing instanceof FormArray) {\r\n        this.formArray = existing;\r\n      } else {\r\n        if (existing) this.form.removeControl(name);\r\n        this.formArray = this.fb.array([]);\r\n        this.form.addControl(name, this.formArray);\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Complete destroy$ to unsubscribe all streams */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /** Raw validation errors */\r\n  get arrayErrors(): ValidationErrors | null {\r\n    return this.formArray.errors;\r\n  }\r\n\r\n  /** Show errors if invalid after touch/dirty or submission */\r\n  get errorState(): boolean {\r\n    const touchedOrDirty = this.formArray.touched || this.formArray.dirty;\r\n    return this.formArray.invalid && (touchedOrDirty);\r\n  }\r\n}","\r\nimport { FormArray, FormControl } from '@angular/forms';\r\n\r\n// push remove selection function\r\nexport function pushRemoveSelection<T>(\r\n  selectedItems: T[],\r\n  formArray: FormArray,\r\n  validationSchema: any,\r\n  itemValue: T\r\n): void {\r\n  \r\n  const index = selectedItems.indexOf(itemValue);\r\n  if (index > -1) {\r\n    selectedItems.splice(index, 1);\r\n    const formIndex = formArray.controls.findIndex(control => control.value === itemValue);\r\n    if (formIndex !== -1) {\r\n      formArray.removeAt(formIndex);\r\n    }\r\n  } else {\r\n    const selectLimit = validationSchema.array.maxItems ?? Infinity; // Default to Infinity if select is not defined\r\n    if (selectedItems.length < selectLimit) {\r\n      selectedItems.push(itemValue);\r\n      const control = new FormControl(itemValue);\r\n      formArray.push(control);\r\n    } else {\r\n      console.warn(`You can only select up to ${selectLimit} items.`);\r\n    }\r\n  }\r\n}\r\n","import { Subscription, Observable } from 'rxjs';\r\n\r\nexport class PaginationHelper<T> {\r\n  items: T[] = [];\r\n  currentPage = 1;\r\n  searchKey = '';\r\n  private sub?: Subscription;\r\n\r\n  /**\r\n   * @param loader  a function that returns Observable<T[]> given (page, search)\r\n   */\r\n  constructor(private loader: (page: number, search: string) => Observable<T[]>) {}\r\n\r\n  /** Load a specific page (default = 1) */\r\n  load(page = 1, search = ''): void {\r\n    this.currentPage = page;\r\n    this.searchKey   = search;\r\n    this.sub?.unsubscribe();\r\n    this.sub = this.loader(page, search).subscribe(data => {\r\n      this.items = data;\r\n    });\r\n  }\r\n\r\n  /** Go to next page */\r\n  next(): void {\r\n    this.load(this.currentPage + 1, this.searchKey);\r\n  }\r\n\r\n  /** Go to previous page */\r\n  prev(): void {\r\n    if (this.currentPage > 1) {\r\n      this.load(this.currentPage - 1, this.searchKey);\r\n    }\r\n  }\r\n\r\n  /** Clean up subscription */\r\n  destroy(): void {\r\n    this.sub?.unsubscribe();\r\n  }\r\n\r\n  /** trackBy for *ngFor */\r\n  trackByIdx(_i: number, o: T): any {\r\n    // assume T has .value or fallback to index\r\n    return (o as any).value ?? _i;\r\n  }\r\n\r\n  /** unique ID helper */\r\n  genId(prefix: string, o: T, i: number): string {\r\n    return `${prefix}_${(o as any).value ?? i}_${i}`;\r\n  }\r\n}","export interface DpRule {\r\n    type: 'static' | 'dynamic';\r\n    options?: Array<{ label: string, value: string }>;\r\n    apiEndpoint?: string;\r\n    pagination?: boolean;\r\n    pageSize?: number;\r\n    enableServerSideSearch?: boolean;\r\n    searchParameter?: string;\r\n    autocomplete?: boolean;    \r\n  }\r\n\r\n  // Helper function to check if dpRule conforms to DpRule interface\r\nexport function isValidDpRule(dpRule: any): dpRule is DpRule {\r\n    // Perform the necessary checks here\r\n    // For example, you can check if required properties exist, if types match, etc.\r\n    // If all checks pass, return true; otherwise, return false\r\n    return dpRule &&\r\n           (dpRule.type === 'static' || dpRule.type === 'dynamic') &&\r\n           (dpRule.options === undefined || Array.isArray(dpRule.options)) &&\r\n           (dpRule.apiEndpoint === undefined || typeof dpRule.apiEndpoint === 'string' || dpRule.apiEndpoint === null) &&\r\n           (dpRule.pagination === undefined || typeof dpRule.pagination === 'boolean') &&\r\n           (dpRule.drRule === undefined || ['lazy', 'pre', 'caching'].includes(dpRule.drRule)) &&\r\n           (dpRule.autocomplete === undefined || typeof dpRule.autocomplete === 'boolean');\r\n  }\r\n","\r\n// util/extract-variables.util.ts\r\n\r\n/**\r\n * Extract variables (placeholders) from a JSON object or string.\r\n * Placeholders are expected to be in the format {{variable}}.\r\n */\r\nexport const extractVariablesFromJson = (json: any): Set<string> => {\r\n    const variables = new Set<string>();\r\n  \r\n    function recursiveExtract(obj: any): void {\r\n      if (typeof obj === \"string\") {\r\n        const matches = obj.match(/{{(.*?)}}/g); // Regex to match placeholders like {{variable}}\r\n        if (matches) {\r\n          matches.forEach((match) => { \r\n            variables.add(match.replace(/{{|}}/g, \"\").trim()); // Clean up placeholder and add to the set\r\n          });\r\n        }\r\n      } else if (Array.isArray(obj)) {\r\n        obj.forEach(recursiveExtract); // Recurse if it's an array\r\n      } else if (typeof obj === \"object\" && obj !== null) {\r\n        Object.values(obj).forEach(recursiveExtract); // Recurse if it's an object\r\n      }\r\n    }\r\n  \r\n    recursiveExtract(json); // Start recursive extraction\r\n    return variables;\r\n  };\r\n  ","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DpRule, isValidDpRule } from '../models/dp-rule.model';\r\nimport { extractVariablesFromJson } from '../utilities/dpr-extract-variables.util';\r\nimport { DprOptionModel } from '../models/dpr-option.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\n/**\r\n * Service to handle data population rules for dynamic form controls.\r\n * It fetches options based on the provided Data Population Rule (DPR).\r\n */\r\nexport class DataPopulationRuleService {\r\n  constructor(private http: HttpClient) {}\r\n\r\n  getOptions(\r\n    dpRule: DpRule,\r\n    page: number = 1,\r\n    searchKey?: string\r\n  ): Observable<DprOptionModel[]> {\r\n    if (!isValidDpRule(dpRule)) {\r\n      console.warn('Invalid dpRule provided:', dpRule);\r\n      return of([]);\r\n    }\r\n\r\n    if (dpRule.type === 'static') {\r\n      return of(dpRule.options || []);\r\n    }\r\n\r\n    if (dpRule.type === 'dynamic' && dpRule.apiEndpoint) {\r\n      let params = new HttpParams();\r\n\r\n      const pageSize = dpRule.pageSize || 10;\r\n      const skip = (page - 1) * pageSize;\r\n\r\n      if (dpRule.pagination) {\r\n        params = params\r\n          .set('skip', skip.toString())\r\n          .set('limit', pageSize.toString());\r\n      }\r\n\r\n      if (dpRule.enableServerSideSearch && dpRule.searchParameter && searchKey) {\r\n        const decodedParam = decodeURIComponent(dpRule.searchParameter);\r\n        const placeholders = Array.from(extractVariablesFromJson(decodedParam));\r\n\r\n        const replacedParam = placeholders.reduce((param, placeholder) => \r\n          param.replace(new RegExp(`{{${placeholder}}}`, 'g'), searchKey),\r\n          decodedParam\r\n        );\r\n\r\n        params = params.set('aggregation', replacedParam);\r\n\r\n        // Adjust limit if search is involved\r\n        params = params.set('limit', (skip + pageSize).toString());\r\n      }\r\n\r\n      return this.http.get<DprOptionModel[]>(dpRule.apiEndpoint, { params });\r\n    }\r\n\r\n    return of([]);\r\n  }\r\n}","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  OnDestroy\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n// Base class for FormArray-based components\r\nimport { BaseFormArrayComponent } from '../../../../shared/base/base-form-array.component';\r\n\r\n// Utility to add/remove selections\r\nimport { pushRemoveSelection } from '../../../../shared/utilities/array-operations.util';\r\n// Helper for paginated data\r\nimport { PaginationHelper } from '../../../../shared/utilities/pagination-helper';\r\n\r\n// Data population models and services\r\nimport { DprOptionModel } from '../../../../features/data-population/models/dpr-option.model';\r\nimport { DataPopulationRuleService } from '../../../../features/data-population/services/data-population-rule.service';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\nimport { ValidatorBodyModel } from '../../../../features/validator/models/joi-validators.model';\r\n\r\n// Map schema types to TS types\r\ntype ValidationTypeMap = Record<'string'|'number'|'integer'|'boolean'|'date', any>;\r\n// Helper to extract array item type\r\ntype ArrayItemType<S extends keyof ValidationTypeMap> = ValidationTypeMap[S];\r\n\r\n@Component({\r\n  selector: 'nju-checkbox',\r\n  templateUrl: './checkbox.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false\r\n})\r\nexport class CheckboxComponent<\r\n  S extends keyof ValidationTypeMap = 'string',\r\n  T = ArrayItemType<S>\r\n> extends BaseFormArrayComponent implements OnChanges, OnDestroy {\r\n  /** Joi-like validation schema for array items */\r\n  @Input() validationSchema!: ValidatorBodyModel;\r\n\r\n  /** Currently selected values */\r\n  selectedItems: T[] = [];\r\n\r\n  /** Pagination helper for dynamic options */\r\n  pager!: PaginationHelper<DprOptionModel>;\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected override fb: FormBuilder,\r\n    private dpService: DataPopulationRuleService,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService,\r\n    protected override cdr: ChangeDetectorRef\r\n  ) {\r\n    super(sanitizer, fb, submitBroadcastService, cdr);\r\n  }\r\n\r\n  /** Re-initialize on config change: styles, pagination, defaults */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes['config'] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n\r\n      // Setup pagination\r\n      this.pager = new PaginationHelper<DprOptionModel>((page, search) =>\r\n        this.dpService.getOptions(this.config.dpRule!, page, search) as Observable<DprOptionModel[]>\r\n      );\r\n      this.pager.load();\r\n\r\n      // Apply default selections\r\n      const defaults = this.formArray.value ?? [];\r\n      if (Array.isArray(defaults)) {\r\n        this.selectedItems = [...defaults];\r\n      }\r\n    }\r\n  }\r\n\r\n  /** Toggle selection, updating both array and model */\r\n  handleSelection(item: T): void {\r\n    pushRemoveSelection(this.selectedItems, this.formArray, this.validationSchema, item);\r\n  }\r\n\r\n  /** Allow select if under maxItems or already selected */\r\n  isSelectable(item: T): boolean {\r\n    const max = this.validationSchema.array?.maxItems ?? Infinity;\r\n    return this.selectedItems.includes(item) || this.selectedItems.length < max;\r\n  }\r\n\r\n  /** Current set of options */\r\n  get options(): DprOptionModel[] {\r\n    return this.pager?.items ?? [];\r\n  }\r\n\r\n  /** Pagination controls */\r\n  nextPage(): void { this.pager.next(); }\r\n  previousPage(): void { this.pager.prev(); }\r\n\r\n  /** Track items by index for ngFor */\r\n  trackByIndex = (_: number, __: DprOptionModel) => this.pager.trackByIdx;\r\n\r\n  /** Unique ID per option for labels */\r\n  getOptionId = (opt: DprOptionModel, idx: number): string =>\r\n    this.pager.genId(this.config.name!, opt, idx);\r\n\r\n  /** Cast input to generic type */\r\n  castValue(value: any): T { return value as T; }\r\n\r\n  /** Cleanup resources */\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this.pager.destroy();\r\n  }\r\n}\r\n","<div [class]=\"config['groupClass'] | classList:'checkbox-group'\"\r\n     [ngStyle]=\"config['groupStyle'] | styleMap\"\r\n     *ngFor=\"let option of options; let i = index\">\r\n  <input \r\n    type=\"checkbox\"\r\n    [ngClass]=\"config.class | classList:'checkbox checkbox-primary'\"\r\n    [ngStyle]=\"config.style | styleMap\"\r\n    [id]=\"getOptionId(option, i)\"\r\n    [value]=\"option.value\"\r\n    (click)=\"isSelectable(castValue(option.value)) && handleSelection(castValue(option.value))\"\r\n    [checked]=\"selectedItems.includes(castValue(option.value))\"\r\n    [disabled]=\"!isSelectable(castValue(option.value))\" />\r\n  <label \r\n    [for]=\"getOptionId(option, i)\"\r\n    [class]=\"config['labelClass'] | classList:'checkbox-label'\"\r\n    [ngStyle]=\"config['labelStyle'] | styleMap\"\r\n    [innerHTML]=\"option.label | safeHtml\">\r\n  </label>\r\n</div>\r\n<!-- Array‐level validation messages -->\r\n<p *ngIf=\"errorState\" class=\"error-message\" style=\"display: block;\">\r\n  <ng-container *ngIf=\"arrayErrors?.['minItems'] as minErr\">\r\n    Select at least {{ minErr.required }} items\r\n    (you have {{ minErr.actual }}).\r\n  </ng-container>\r\n  <ng-container *ngIf=\"arrayErrors?.['maxItems'] as maxErr\">\r\n    Select at most {{ maxErr.required }} items\r\n    (you have {{ maxErr.actual }}).\r\n  </ng-container>\r\n  <ng-container *ngIf=\"arrayErrors?.['uniqueItems']\">\r\n    All selected items must be unique.\r\n  </ng-container>\r\n</p>","// src/lib/shared/base/base-form-control.component.ts\r\nimport {\r\n    Directive,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    OnDestroy,\r\n    Optional,\r\n    HostBinding\r\n  } from '@angular/core';\r\n  import {\r\n    FormGroup,\r\n    AbstractControl,\r\n    FormGroupDirective,\r\n    FormControl\r\n  } from '@angular/forms';\r\n  import { Subject, Subscription, takeUntil } from 'rxjs';\r\n  import { BaseComponent } from './base.component';\r\n  import { DomSanitizer } from '@angular/platform-browser';\r\nimport { FormControlComponentModel } from '../../core/models/component-models/form-control-component.model';\r\nimport { FormSubmitBroadcastService } from '../../core/services/form-submit-broadcast.service';\r\n  \r\n  /**\r\n   * Base class for all reactive form controls (input, checkbox, radio, select, nested FormGroup, etc.).\r\n   * - Grabs the control by name from the parent FormGroup\r\n   * - Applies host class/style via BaseComponent\r\n   * - Exposes control state, errors, and value changes\r\n   *\r\n   * @typeParam M - the ComponentModel type for config\r\n   * @typeParam C - the AbstractControl subclass (default FormControl)\r\n   */\r\n\r\n  @Directive() // allow Angular to process metadata\r\n  export abstract class BaseFormControlComponent<\r\n    M extends FormControlComponentModel = FormControlComponentModel,\r\n    C extends AbstractControl = FormControl\r\n  > extends BaseComponent<M> implements OnChanges, OnDestroy {\r\n    /** Reference to the specific control instance (FormControl or FormGroup) */\r\n    control!: C;\r\n    @Input() form!: FormGroup; // The parent form group, if applicable\r\n    @Input() submitted = false; // Flag to indicate if the form has been submitted\r\n    private statusSub?: Subscription;\r\n    private destroy$ = new Subject<void>();\r\n    /** Host element id for label association */\r\n    @HostBinding('attr.id') hostId = '';\r\n  \r\n    constructor(\r\n        protected override sanitizer: DomSanitizer,\r\n        protected submitBroadcastService: FormSubmitBroadcastService\r\n    ) {\r\n      super(sanitizer);\r\n    }\r\n    ngOnInit() {\r\n      this.submitBroadcastService.submitted$\r\n        .pipe(takeUntil(this.destroy$))\r\n        .subscribe(flag => {\r\n          this.submitted = flag; \r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n      if (changes['config'] && this.config && this.form) {\r\n        // Determine control by name\r\n        const name = this.config.name;\r\n        this.hostId = name ?? '';\r\n        const found = name ? this.form.get(name) : null;\r\n        if (found) {\r\n          this.control = found as C;\r\n          // Ensure control's value is correctly set\r\n          if (this.control.value !== undefined && this.control.value !== '') {\r\n            this.control.setValue(this.control.value);\r\n          }\r\n\r\n          const isDisabled= this.config.disabled || false;\r\n          if (isDisabled) {\r\n            this.control.disable();\r\n          }\r\n          \r\n        } else {\r\n          console.error(`FormControl '${name}' not found in FormGroup`);\r\n        }\r\n  \r\n        // (Optional) subscribe to status changes if needed\r\n        this.statusSub?.unsubscribe();\r\n        if (this.control && 'statusChanges' in this.control) {\r\n          this.statusSub = this.control.statusChanges.subscribe();\r\n        }\r\n      }\r\n    }\r\n  \r\n    ngOnDestroy(): void {\r\n      this.statusSub?.unsubscribe();\r\n      this.destroy$.next();\r\n    this.destroy$.complete();\r\n    }\r\n  \r\n    get errorState(): boolean {\r\n      // Check if the control is invalid\r\n      return !!this.control &&\r\n             this.control.invalid &&\r\n             (this.control.dirty || this.control.touched || this.submitted);\r\n    }\r\n    /** The control's value, or null if not set */\r\n    get getControlErrorMessage(): string {\r\n      if (this.control.errors) {\r\n        return Object.keys(this.control.errors).map(key => {\r\n          return this.control.errors![key];\r\n        }).join('. ');\r\n      }\r\n      return '';\r\n    }\r\n  /**\r\n   * Handles input change event and updates the form control.\r\n   * @param event The input event from the text field.\r\n   * @param constraints The constraints for the input (e.g., max length, case).\r\n   * @returns void\r\n   * This method enforces constraints such as maximum length, exact length, and case (lower/upper).\r\n   * It also updates the form control value without triggering additional events to prevent loops.\r\n   */\r\n  handleInputChange(event: Event,constraints: any): void {\r\n    const input = event.target as HTMLInputElement;\r\n    let value = input.value;\r\n    const { max, length, case: letterCase } = constraints;\r\n\r\n    // 1) enforce an absolute maximum\r\n    if (max != null && value.length > max) {\r\n      value = value.slice(0, max);\r\n    }\r\n\r\n    // 2) enforce an exact-length cap (optional; only when you really want EXACT)\r\n    if (length != null && value.length > length) {\r\n      value = value.slice(0, length);\r\n    }\r\n\r\n    // 3) enforce lower/upper case\r\n    if (letterCase === 'lower') {\r\n      value = value.toLowerCase();\r\n    } else if (letterCase === 'upper') {\r\n      value = value.toUpperCase();\r\n    }\r\n\r\n    // only update the DOM/control if you actually changed it\r\n    if (value !== input.value) {\r\n      input.value = value;\r\n    }\r\n    this.control.setValue(value, { emitEvent: false }); \r\n    // {emitEvent: false} so you don’t trigger a loop of valueChanges→handleInputChange\r\n  }\r\n}\r\n  ","// Import core modules\r\nimport { \r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\n@Component({\r\n  selector: 'nju-hidden',\r\n  templateUrl: './hidden.component.html',\r\n  standalone:false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HiddenComponent extends BaseFormControlComponent<FormControlComponentModel,FormControl> implements OnChanges \r\n{}","<div [formGroup]=\"form\">\r\n        <input type=\"hidden\"\r\n                [formControl]=\"control\"\r\n                [attr.name]=\"config.name\" />\r\n</div>","import {\r\n    Directive,\r\n    HostListener,\r\n    Input,\r\n    ElementRef\r\n  } from '@angular/core';\r\n  \r\n  @Directive({\r\n    selector: '[appConstrainedNumber]',\r\n    standalone: false,\r\n  })\r\n  export class ConstrainedNumberDirective {\r\n    /** decimal places to allow; if unset → integer‐only */\r\n    @Input() precision: number|undefined;\r\n    /** allow a leading minus? */\r\n    @Input() allowNegative = false;\r\n    /** clamp these on blur */\r\n    @Input() min?: number;\r\n    @Input() max?: number;\r\n    @Input() greater?: number;\r\n    @Input() less?: number;\r\n  \r\n    constructor(private el: ElementRef<HTMLInputElement>) {}\r\n    /**\r\n     * \r\n     * @returns RegExp\r\n     * Builds a regular expression pattern based on the precision and constraints provided.\r\n     * The pattern allows for optional negative sign, digits, and decimal part based on the precision.\r\n     * The decimal part is optional and can have a maximum number of digits defined by the precision.\r\n     * The pattern is used to validate the input value in the onKeydown and onPaste methods.\r\n     */\r\n    private buildPattern(): RegExp {\r\n      const prec = this.precision;\r\n      const allowDec = prec != null;\r\n      const sign = this.allowNegative ? '-?' : '';\r\n      const decimalPart = allowDec\r\n        ? `(\\\\.\\\\d{0,${prec}})?`\r\n        : ``;\r\n      return new RegExp(`^${sign}\\\\d*${decimalPart}$`);\r\n    }\r\n    /**\r\n     * \r\n     * @param e KeyboardEvent\r\n     * Handles keydown events on the input element. It prevents invalid keystrokes based on the defined pattern.\r\n     * The method allows navigation keys, backspace, delete, and copy/paste operations.\r\n     * It checks if the new value after the keystroke matches the pattern. If not, it prevents the default action.\r\n     * @returns \r\n     */\r\n    @HostListener('keydown', ['$event'])\r\n    onKeydown(e: KeyboardEvent) {\r\n      // allow navigation, backspace, copy/paste, etc.\r\n      if (\r\n        ['Backspace','Tab','Delete','ArrowLeft','ArrowRight','Home','End']\r\n          .includes(e.key) ||\r\n        e.ctrlKey || e.metaKey\r\n      ) return;\r\n  \r\n      const input = this.el.nativeElement;\r\n      const p    = this.buildPattern();\r\n      // imagine the new value if we accept this keystroke\r\n      const { selectionStart: s, selectionEnd: t, value } = input;\r\n      const next = value.slice(0, s!) + e.key + value.slice(t!);\r\n  \r\n      if (!p.test(next)) {\r\n        e.preventDefault();\r\n      }\r\n    }\r\n    /**\r\n     * \r\n     * @param e ClipboardEvent\r\n     * Handles paste events on the input element. It prevents pasting invalid values based on the defined pattern.\r\n     * The method checks if the pasted value, when combined with the current value of the input, matches the pattern.\r\n     * If not, it prevents the paste action.\r\n     * \r\n     */\r\n    @HostListener('paste', ['$event'])\r\n    onPaste(e: ClipboardEvent) {\r\n      const paste = e.clipboardData?.getData('text') || '';\r\n      const input = this.el.nativeElement;\r\n      const p = this.buildPattern();\r\n      const { selectionStart: s, selectionEnd: t, value } = input;\r\n      const next = value.slice(0, s!) + paste + value.slice(t!);\r\n  \r\n      if (!p.test(next)) {\r\n        e.preventDefault();\r\n      }\r\n    }\r\n    /**\r\n     * Handles blur events on the input element. It validates the input value and clamps it within the defined min/max range.\r\n     * It also ensures that the value is greater than the defined greater constraint and less than the defined less constraint.\r\n     * If the value is NaN or doesn't meet the constraints, it sets the input value to an empty string.\r\n     * * The method is called when the input loses focus, ensuring that the value is valid before further processing.\r\n     * @returns void\r\n     */\r\n    @HostListener('blur')\r\n    onBlur() {\r\n      const input = this.el.nativeElement;\r\n      let v = input.value;\r\n      let num = v === '' || v === '-' || v === '.' ? NaN : Number(v);\r\n  \r\n      if (!isNaN(num)) {\r\n        if (this.min    != null && num < this.min)    num = this.min;\r\n        if (this.max    != null && num > this.max)    num = this.max;\r\n        if (this.greater!= null && num <= this.greater) num = this.greater + (this.precision!=null ? 1/Math.pow(10,this.precision) : 1);\r\n        if (this.less   != null && num >= this.less)    num = this.less - (this.precision!=null ? 1/Math.pow(10,this.precision) : 1);\r\n      }\r\n  \r\n      input.value = isNaN(num) ? '' : String(num);\r\n    }\r\n  }","// Import core modules\r\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n// Import utility functions\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\n\r\n@Component({\r\n  selector: 'nju-number',\r\n  templateUrl: './number.component.html',\r\n  standalone:false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NumberComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel,ExtendedFormControl>\r\n  implements OnChanges {\r\n  constraints: any = {};\r\n  /**\r\n   * Called whenever the @Input() config changes.\r\n   * Initializes styling via BaseFormControlComponent and loads dynamic options.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes[\"config\"] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n      this.constraints = this.control.metadata || {}; // Apply constraints      \r\n    }\r\n  }\r\n}","<input type=\"text\"\r\n              [formControl]=\"control\"\r\n              [attr.name]=\"config.name\"\r\n              [id]=\"config.id\"\r\n              [placeholder]=\"config.placeholder\"\r\n              [readonly]=\"config.readOnly\"\r\n              [ngClass]=\"[\r\n              (config.class | classList:'input-custom'),\r\n              errorState ? (config.errorInputClass ?? 'error') : ''\r\n              ]\"\r\n              [ngStyle]=\"config.style | styleMap\"       \r\n              inputmode=\"decimal\"\r\n              [attr.min]=\"constraints.min ?? null\"\r\n              [attr.max]=\"constraints.max ?? null\"\r\n              appConstrainedNumber\r\n                     [precision]=\"constraints.precision\"\r\n                     [allowNegative]=\"constraints.negative\"\r\n                     [min]=\"constraints.min\"\r\n                     [max]=\"constraints.max\"\r\n                     [greater]=\"constraints.greater\"\r\n                     [less]=\"constraints.less\"\r\n              />\r\n<p \r\n       *ngIf=\"errorState\" \r\n       [ngClass]=\"config.errorMessageClass ?? 'error-message'\">\r\n       {{ getControlErrorMessage | json }}\r\n</p>","// Import Angular core modules\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\n\r\n// Import models\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\nimport { DprOptionModel } from '../../../../features/data-population/models/dpr-option.model';\r\n\r\n// Import services and utilities\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { PaginationHelper } from '../../../../shared/utilities/pagination-helper';\r\nimport { DataPopulationRuleService } from '../../../../features/data-population/services/data-population-rule.service';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\n\r\n@Component({\r\n  selector: 'nju-radio',\r\n  templateUrl: './radio.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n/**\r\n * `RadioComponent` is a reusable Angular form control that renders radio button options.\r\n * It supports dynamic data loading through pagination and can render as a dropdown or inline buttons.\r\n *\r\n * Inherits common behavior from `BaseFormControlComponent` including config, control, and DOM handling.\r\n *\r\n * @template FormControlComponentModel - Configuration model for the component.\r\n * @template ExtendedFormControl - Custom form control extending Angular's AbstractControl.\r\n */\r\nexport class RadioComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel, ExtendedFormControl>\r\n  implements OnChanges\r\n{\r\n  /** Constraints parsed from form control metadata for validations or masks */\r\n  constraints: any = {};\r\n\r\n  /** Pagination helper instance for paginated option loading */\r\n  pager!: PaginationHelper<DprOptionModel>;\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    private dpService: DataPopulationRuleService,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService\r\n  ) {\r\n    super(sanitizer, submitBroadcastService);\r\n  }\r\n\r\n  /**\r\n   * Lifecycle hook triggered when input properties change.\r\n   * Handles re-initialization of pager and config updates.\r\n   *\r\n   * @param changes - The object containing property change information.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n\r\n    if (changes['config'] && this.config) {\r\n      // Apply base component configuration styles, class bindings, etc.\r\n      this.applyHostConfig(this.config);\r\n      console.log('constrait:', this.constraints);\r\n      // Load validation or constraint metadata if available\r\n      this.constraints = this.control.metadata || {};\r\n\r\n      // Initialize the pagination helper with option fetcher\r\n      this.pager = new PaginationHelper<DprOptionModel>((page, search) =>\r\n        this.dpService.getOptions(this.config.dpRule!, page, search) as Observable<DprOptionModel[]>\r\n      );\r\n\r\n      // Load the first page of options\r\n      this.pager.load();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Applies dynamic class based on option content.\r\n   * Used for skin type 'dropdown' rendering.\r\n   *\r\n   * @param option - The option to style.\r\n   * @returns CSS class string for the dropdown option.\r\n   */\r\n  applyDropdownOptionClass(option: any): string {\r\n    return option?.hover?.includes('no-hover') ? 'disabled-div radioDropdown' : 'dropdown-item';\r\n  }\r\n\r\n  /**\r\n   * Determines if the current skin is a dropdown.\r\n   * Used to toggle template rendering logic.\r\n   */\r\n  get isDropdownSkin(): boolean {\r\n    return this.config['skin']?.type === 'dropdown';\r\n  }\r\n\r\n  /**\r\n   * Handles the radio button selection change.\r\n   * Updates the reactive form control value and marks it as touched.\r\n   *\r\n   * @param value - Selected value to assign to the form control.\r\n   */\r\n  onSelectionChange(value: string): void {\r\n    this.control.setValue(value);\r\n    this.control.markAsTouched();\r\n  }\r\n\r\n  /**\r\n   * Returns the currently loaded options from pager.\r\n   */\r\n  get options(): DprOptionModel[] {\r\n    return this.pager?.items || [];\r\n  }\r\n\r\n  /** Loads the next page of radio options */\r\n  nextPage() {\r\n    this.pager.next();\r\n  }\r\n\r\n  /** Loads the previous page of radio options */\r\n  previousPage() {\r\n    this.pager.prev();\r\n  }\r\n\r\n  /** TrackBy function for *ngFor to optimize DOM re-rendering */\r\n  trackByValue = this.pager?.trackByIdx.bind(this.pager);\r\n\r\n  /**\r\n   * Generates unique option ID for accessibility and tracking.\r\n   *\r\n   * @param opt - Current option item.\r\n   * @param i - Index of the option.\r\n   */\r\n  getOptionId = (opt: DprOptionModel, i: number) =>\r\n    this.pager.genId(this.config.name!, opt, i);\r\n\r\n  /**\r\n   * Lifecycle hook triggered on component destruction.\r\n   * Cleans up pager resources and calls base class destroy logic.\r\n   */\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this.pager?.destroy();\r\n  }\r\n}","<div  [class]=\"config['groupClass'] | classList:'radio-group'\" \r\n        [ngStyle]=\"config['groupStyle'] | styleMap\"\r\n        *ngFor=\"let option of options; trackBy: trackByValue; let i = index\"\r\n        >\r\n  <input\r\n    type=\"radio\"\r\n    [id]=\"getOptionId(option, i)\"\r\n    [name]=\"config.name!\"\r\n    [formControl]=\"control\"\r\n    [value]=\"option.value\"\r\n    [ngClass]=\"[(config.class | classList:'radio-primary')]\"\r\n    [ngStyle]=\"config.style | styleMap\"\r\n    [attr.aria-checked]=\"control.value === option.value\"\r\n    (change)=\"onSelectionChange(option.value)\"\r\n    [class.error]=\"control.invalid && (control.dirty || control.touched)\"\r\n  />\r\n  <label\r\n    [for]=\"getOptionId(option, i)\"\r\n    [class]=\"config['labelClass'] | classList:'radio-label'\"\r\n    [ngStyle]=\"config['labelStyle'] | styleMap\"\r\n    [innerHTML]=\"option.label\"\r\n  ></label>\r\n</div>\r\n<p \r\n  *ngIf=\"errorState\" \r\n  [ngClass]=\"config.errorMessageClass ?? 'error-message'\" style=\"display: block;\">\r\n  {{ getControlErrorMessage | json }}\r\n</p>","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport Inputmask from 'inputmask';\r\n\r\n@Directive({\r\n  selector: '[appInputMask]',\r\n  standalone:false\r\n})\r\n\r\nexport class RegexMaskDirective implements OnChanges {\r\n  @Input() regexPattern?: string;\r\n\r\n  private inputMask: Inputmask.Instance | null = null;\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['regexPattern']) {\r\n      this.applyMask();\r\n    }\r\n  }\r\n\r\n  private applyMask(): void {\r\n    if (this.inputMask) {\r\n      this.inputMask.remove();\r\n    }\r\n\r\n    if (this.regexPattern) {\r\n      this.inputMask = new Inputmask({\r\n        regex: this.regexPattern,\r\n        placeholder: '_'\r\n      });\r\n      this.inputMask.mask(this.el.nativeElement);\r\n    }\r\n  }\r\n}","import { Directive, ElementRef, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport Inputmask from 'inputmask';\r\n\r\n@Directive({\r\n  selector: '[appInputMask]',\r\n  standalone:false\r\n})\r\nexport class InputMaskDirective implements OnChanges {\r\n  @Input() maskPattern?: string;\r\n\r\n  private inputMask: Inputmask.Instance | null = null;\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['maskPattern']) {\r\n      this.applyMask();\r\n    }\r\n  }\r\n\r\n  private applyMask(): void {\r\n    if (this.inputMask) {\r\n      this.inputMask.remove();\r\n    }\r\n\r\n    if (this.maskPattern) {\r\n      this.inputMask = new Inputmask(this.maskPattern);\r\n      this.inputMask.mask(this.el.nativeElement);\r\n    }\r\n  }\r\n}","import { Directive, ElementRef, HostListener, Input, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appCaseInsensitiveAllowedValues]',\r\n  standalone: false\r\n})\r\nexport class CaseInsensitiveAllowedValuesDirective implements OnInit {\r\n  @Input() allowedValues: string[] | undefined;\r\n\r\n  constructor(private el: ElementRef) {}\r\n\r\n  ngOnInit() {\r\n    this.updateAllowedValues();\r\n  }\r\n\r\n  updateAllowedValues() {\r\n    if (this.allowedValues && this.allowedValues.length > 0) {\r\n      this.allowedValues = this.allowedValues.map(value => value.toLowerCase());\r\n    }\r\n  }\r\n\r\n  @HostListener('input', ['$event'])\r\n  onInput(event: any) {\r\n    let value = this.el.nativeElement.value.toLowerCase();\r\n\r\n    if (this.allowedValues && this.allowedValues.length > 0) {\r\n      const isValidPrefix = this.allowedValues.some(allowedValue => allowedValue.startsWith(value));\r\n      if (!isValidPrefix) {\r\n        const previousValue = this.el.nativeElement.getAttribute('data-previous-value') || '';\r\n        this.el.nativeElement.value = previousValue;\r\n        event.target.value = previousValue;\r\n      } else {\r\n        this.el.nativeElement.setAttribute('data-previous-value', value);\r\n      }\r\n    }\r\n  }\r\n}","// Import core modules\r\nimport { \r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\n@Component({\r\n  selector: 'nju-text',\r\n  templateUrl: './text.component.html',\r\n  standalone:false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TextComponent extends BaseFormControlComponent<FormControlComponentModel,ExtendedFormControl> implements OnChanges {\r\n  // Constraints object for joi validation and other rules\r\n  constraints: any = {};\r\n  /**\r\n   * Called whenever the @Input() config changes.\r\n   * Initializes styling via BaseFormControlComponent and loads dynamic options.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes[\"config\"] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n      console.log('Text Input:', this.control, this.control.metadata);\r\n      this.constraints = this.control.metadata || {}; // Apply constraints      \r\n    }\r\n  }    \r\n}","<input\r\n       type=\"text\"\r\n       [formControl]=\"control\"\r\n       [attr.name]=\"config.name\"\r\n       [attr.readOnly]=\"config.readOnly\"\r\n       [id]=\"config.id\"\r\n       [placeholder]=\"config.placeholder\"\r\n       [ngClass]=\"[\r\n              (config.class | classList:'input-custom'),\r\n              errorState ? (config.errorInputClass ?? 'error') : ''\r\n              ]\"\r\n       [ngStyle]=\"config.style | styleMap\"\r\n       (input)=\"handleInputChange($event,constraints)\"\r\n       appInputMask [maskPattern]=\"constraints.maskPattern\"\r\n       appRegexMask [regexPattern]=\"constraints.regexPattern\"\r\n       appCaseInsensitiveAllowedValues [allowedValues]=\"constraints.allowedValues\"\r\n     />\r\n<p \r\n  *ngIf=\"errorState\" \r\n  [ngClass]=\"config.errorMessageClass ?? 'error-message'\">\r\n     {{ getControlErrorMessage | json }}\r\n</p>","// Import core modules\r\nimport { \r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\n@Component({\r\n  selector: 'nju-textarea',\r\n  templateUrl: './textarea.component.html',\r\n  standalone:false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TextareaComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel,ExtendedFormControl>\r\n  implements OnChanges {\r\n  rows: number = 1; // Default number of rows for textarea\r\n  constraints: any = {}; // Validation constraints\r\n\r\n  /**\r\n   * Lifecycle hook executed when the component is initialized.\r\n   * Called whenever the @Input() config changes.\r\n   * Initializes styling via BaseFormControlComponent and loads dynamic options.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes[\"config\"] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n      this.constraints = this.control.metadata || {}; // Apply constraints      \r\n      // Set the number of rows if specified in config\r\n      if (this.config?.rows) {\r\n        this.rows = isNaN(this.config.rows)? 1 : this.config.rows; // Default to 1 if not a number\r\n      }\r\n    }\r\n  }\r\n}","<textarea [formControl]=\"control\"\r\n        [attr.name]=\"config.name\"\r\n        [id]=\"config.id\"\r\n        [placeholder]=\"config.placeholder\"\r\n        [readonly]=\"config.readOnly\"\r\n        [rows]=\"rows\"\r\n        [ngClass]=\"[\r\n              (config.class | classList:'textarea-custom textarea-scrollbar'),\r\n              errorState ? (config.errorInputClass ?? 'error') : ''\r\n              ]\"\r\n        [ngStyle]=\"config.style | styleMap\"\r\n        (input)=\"handleInputChange($event,constraints)\"\r\n        appInputMask [maskPattern]=\"constraints.maskPattern\"\r\n       appRegexMask [regexPattern]=\"constraints.regexPattern\"\r\n       appCaseInsensitiveAllowedValues [allowedValues]=\"constraints.allowedValues\"></textarea>\r\n<p \r\n        *ngIf=\"errorState\" \r\n        [ngClass]=\"config.errorMessageClass ?? 'error-message'\">\r\n        {{ getControlErrorMessage | json }}\r\n</p>","import { InjectionToken } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\n\r\n/** Multi-provider token for all action handlers */\r\nexport const ACTION_HANDLERS = new InjectionToken<ActionHandler[]>('ACTION_HANDLERS');\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { ACTION_HANDLERS } from '../tokens/action-handler.token';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionContainer, ActionConfig } from '../models/action-config.model';\r\nimport { Observable, of, throwError } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ActionFactoryService {\r\n  constructor(\r\n    @Inject(ACTION_HANDLERS) private handlers: ActionHandler[]\r\n  ) {}\r\n  /**\r\n   * Delegates the action to the appropriate handler.\r\n   */\r\n  performCustomAction(container: ActionContainer): Observable<any> {\r\n    const action: ActionConfig = container.action;\r\n    const handler = this.handlers.find(h => h.canHandle(action.actionType));\r\n    if (!handler) {\r\n      return throwError(() => new Error(`Unknown action type: ${action.actionType}`));\r\n    }\r\n\r\n    const result = handler.handle(action);\r\n    return result instanceof Observable ? result : of(result);\r\n  }\r\n}","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  HostListener\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\nimport { ActionFactoryService } from '../../../features/actions/services/action-factory.service';\r\nimport { ButtonComponentModel } from '../../../core/models/component-models/button-component.model';\r\n@Component({\r\n  selector: 'nju-button',\r\n  templateUrl: \"./button.component.html\",\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ButtonComponent\r\n  extends BaseComponent<ButtonComponentModel>\r\n  implements OnChanges\r\n{\r\n  form!: FormGroup; // The parent form group, if applicable\r\n  constructor(\r\n    protected override sanitizer: DomSanitizer,\r\n    private actionFactory: ActionFactoryService\r\n  ) {\r\n    super(sanitizer);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n\r\n  /** Handle all button clicks in one place */\r\n  @HostListener('click', ['$event'])\r\n  handleClick(evt: MouseEvent) {\r\n    const type = this.config.btnType ?? 'button';\r\n    switch (type) {\r\n      case 'submit':\r\n        // Let native <button type=\"submit\"> do its work\r\n        return;\r\n\r\n      case 'reset':\r\n        this.form?.reset();\r\n        return;\r\n\r\n      case 'button':\r\n      default:\r\n        if (this.config.action) {\r\n          // subscribe so async handlers (API calls) actually run\r\n          this.actionFactory\r\n            .performCustomAction(this.config.action)\r\n            .subscribe({\r\n              error: err => console.error('Action failed:', err)\r\n            });\r\n        }\r\n    }\r\n  }\r\n}","<!-- Render a button with HTML content -->\r\n<button \r\n    [type]=\"config['btnType']\"\r\n    [ngClass]=\"config.class | classList:'btn btn-primary'\" \r\n    [ngStyle]=\"config.style | styleMap\"\r\n    [id]=\"config['id']\"\r\n    [attr.data-component-id]=\"config['cid']\"\r\n    [disabled]=\"config['enableFormDisability'] && config['enableFormDisability']===true ? form.invalid : config['disabled']\"\r\n    [class.readonly]=\"config['readonly']\"\r\n    [innerHTML]=\"config['text']\"\r\n    (click)=\"handleClick($event)\">\r\n</button>\r\n","// Import core modules\r\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\n\r\n@Component({\r\n  selector: 'nju-toggle',\r\n  templateUrl: './toggle.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToggleComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel, ExtendedFormControl>\r\n  implements OnChanges\r\n{\r\n  constraints: any = {};\r\n \r\n   constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService\r\n  ) {\r\n    super(sanitizer, submitBroadcastService);\r\n  }\r\n\r\n  /**\r\n   * Lifecycle hook triggered when input properties change.\r\n   * Handles re-initialization of pager and config updates.\r\n   *\r\n   * @param changes - The object containing property change information.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n\r\n    if (changes['config'] && this.config) {\r\n      // Apply base component configuration styles, class bindings, etc.\r\n      this.applyHostConfig(this.config);\r\n      \r\n      // Load validation or constraint metadata if available\r\n      this.constraints = this.control.metadata || {};\r\n      console.log('constrait:', this.constraints);\r\n    }\r\n  }\r\n  /**\r\n   * Handles toggle switch change event.\r\n   * @param event The change event from the toggle switch.\r\n   */\r\n  onToggleChange(event: Event): void {\r\n    const isChecked = (event.target as HTMLInputElement).checked;\r\n    // Update form control value\r\n    this.control.setValue(isChecked);\r\n    console.log(`Switch value changed:`, isChecked);\r\n  }\r\n}","<ng-container *ngIf=\"config && control\">\r\n  <div\r\n    [class]=\"config['groupClass'] | classList:'switch-group'\"\r\n    [ngStyle]=\"config['groupStyle'] | styleMap\"\r\n    role=\"switch\"\r\n    [attr.aria-checked]=\"control.value\"\r\n  >\r\n    <input\r\n      type=\"checkbox\"\r\n      [formControl]=\"control\"\r\n      [attr.name]=\"config.name\"\r\n      [id]=\"config.name + '_toggle'\"\r\n      [ngClass]=\"[\r\n        (config.class | classList:'switch switch-primary'),\r\n        errorState ? (config.errorInputClass ?? 'error') : ''\r\n      ]\"\r\n      (change)=\"onToggleChange($event)\"\r\n    />\r\n    <label\r\n      [for]=\"config.name + '_toggle'\"\r\n      [class]=\"config['labelClass'] | classList:'switch-label'\"\r\n      [ngStyle]=\"config['labelStyle'] | styleMap\"\r\n      [innerHTML]=\"config['text']\"\r\n    ></label>\r\n  </div>\r\n  <p *ngIf=\"errorState\" class=\"error-message\" style=\"display: block;\">\r\n    {{ getControlErrorMessage }}\r\n  </p>\r\n</ng-container>","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\nimport { ExtendedFormControl } from '../../../../core/models/system/extended-form-control.model';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\n\r\n@Component({\r\n  selector: 'nju-switch',\r\n  templateUrl: './switch.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SwitchComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel, ExtendedFormControl>\r\n  implements OnChanges\r\n{\r\n  // Holds constraints or additional validation metadata for the control\r\n  constraints: any = {};\r\n\r\n  // Array of switch button definitions from config\r\n  switchButtons: any[] = [];\r\n\r\n  // Default group class and style (can be overridden via config)\r\n  defaultActiveClass: string = 'btn btn-primary';\r\n  defaultInactiveClass: string = 'btn btn-plain';\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService\r\n  ) {\r\n    super(sanitizer, submitBroadcastService);\r\n  }\r\n\r\n  /**\r\n   * Called when any @Input properties change.\r\n   * Applies updated config and re-evaluates switch button state.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n\r\n    if (changes['config'] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n      this.switchButtons = this.config['switchButtons'] || [];\r\n      this.constraints = this.control?.metadata || {};\r\n\r\n      // Initialize state based on existing control value\r\n      this.updateButtonStates(this.control?.value);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Triggered when a user selects a switch button.\r\n   * Updates UI state and form control value accordingly.\r\n   * \r\n   * @param selectedButton - Button object selected by the user\r\n   */\r\n  onSwitchButtonClick(selectedButton: any): void {\r\n    if (!this.switchButtons?.length) return;\r\n\r\n    this.updateButtonStates(selectedButton.value);\r\n    this.control?.setValue(selectedButton.value);\r\n  }\r\n\r\n  /**\r\n   * Marks active/inactive buttons based on the selected value.\r\n   * Applies CSS class dynamically from config or default.\r\n   * \r\n   * @param value - The current selected value\r\n   */\r\n  private updateButtonStates(value: any): void {\r\n    const activeClass = this.config?.['activeClass'] ?? this.defaultActiveClass;\r\n    const inactiveClass = this.config?.['inactiveClass'] ?? this.defaultInactiveClass;\r\n\r\n    this.switchButtons.forEach((button, index) => {\r\n      button.checked = button.value === value;\r\n      button.class = button.checked ? activeClass : inactiveClass;\r\n\r\n      // Assign a runtime unique ID if not provided\r\n      button._runtimeId = `switch-btn-${index}`;\r\n    });\r\n  }\r\n}","<!-- \r\n  Switch Button Group \r\n  Applies class and style from config. Falls back to default class if not set.\r\n-->\r\n<div\r\n  [class]=\"config['groupClass'] | classList:'switch-btn btn-group-sm'\"\r\n  [ngStyle]=\"config['groupStyle'] | styleMap\"\r\n>\r\n  <!-- Iterate over switch buttons -->\r\n  <ng-container *ngFor=\"let button of switchButtons\">\r\n    \r\n    <!-- \r\n      Input: Custom-styled radio button for switch effect \r\n      - Hidden default radio with visible label acting as button\r\n      - ID is auto-generated if not present\r\n    -->\r\n    <input\r\n      type=\"radio\"\r\n      class=\"btn-check\"\r\n      [formControl]=\"control\"\r\n      [id]=\"button._runtimeId\"\r\n      [checked]=\"button.checked\"\r\n      [value]=\"button.value\"\r\n      (click)=\"onSwitchButtonClick(button)\"\r\n    />\r\n\r\n    <!-- \r\n      Label: Acts as visible button \r\n      - Uses class from config or falls back to plain button style\r\n    -->\r\n    <label\r\n      [class]=\"button.class || config['inactiveClass'] || 'btn btn-plain'\"\r\n      [for]=\"button._runtimeId\"\r\n      [innerHTML]=\"button.label\"\r\n    ></label>\r\n\r\n  </ng-container>\r\n</div>\r\n\r\n<!-- Show validation error message if any -->\r\n<p *ngIf=\"errorState\" class=\"error-message\" style=\"display: block;\">\r\n  {{ getControlErrorMessage }}\r\n</p>","import * as Joi from 'joi';\r\nimport { StringValidatorModel } from '../models/joi-validators.model';\r\n\r\nexport const applyStringValidation = (fieldSchema: Joi.StringSchema, validators: StringValidatorModel): Joi.StringSchema => {\r\n    if (validators.pattern) {\r\n        fieldSchema = fieldSchema.pattern(new RegExp(validators.pattern)).messages({\r\n            \"string.pattern.base\": \"Invalid format\",\r\n        });\r\n    }\r\n    if (validators.creditCard) {\r\n        fieldSchema = fieldSchema.creditCard();\r\n    }\r\n    if (validators.hostname) {\r\n        fieldSchema = fieldSchema.hostname();\r\n    }\r\n    if (validators.alphanum) {\r\n        fieldSchema = fieldSchema.alphanum();\r\n    }\r\n    if (validators.length !== undefined) {\r\n        fieldSchema = fieldSchema.length(validators.length);\r\n    }\r\n    if (validators.insensitive) {\r\n        fieldSchema = fieldSchema.valid(...validators.insensitive).insensitive();\r\n    }\r\n    if (validators.ip) {\r\n        const ipOptions: any = { version: validators.ip.version };\r\n        if (validators.ip.cidr === \"required\") {\r\n            ipOptions.cidr = \"required\";\r\n        }\r\n        fieldSchema = fieldSchema.ip(ipOptions);\r\n    }\r\n    if (validators.domain) {\r\n        fieldSchema = (fieldSchema as Joi.StringSchema).domain({\r\n            allowFullyQualified: validators.domain.allowFullyQualified,\r\n            allowUnicode: validators.domain.allowUnicode,\r\n            minDomainSegments: validators.domain.minDomainSegments,\r\n            maxDomainSegments: validators.domain.maxDomainSegments,\r\n            tlds: { allow: false } // Provide a list of common TLDs by default it disable user can enter any domain\r\n        });\r\n    }\r\n    if (validators.email) {\r\n        fieldSchema = (fieldSchema as Joi.StringSchema).email({\r\n            allowFullyQualified: validators.email.allowFullyQualified,\r\n            allowUnicode: validators.email.allowUnicode,\r\n            minDomainSegments: validators.email.minDomainSegments,\r\n            maxDomainSegments: validators.email.maxDomainSegments,\r\n            ignoreLength: validators.email.ignoreLength,\r\n            multiple: validators.email.multiple,\r\n            separator: validators.email.separator,\r\n            tlds: { allow: false } // Provide a list of common TLDs by default it disable user can enter any domain\r\n        });\r\n    }\r\n    if (validators.base64) {\r\n        fieldSchema = (fieldSchema as Joi.StringSchema).base64({\r\n            paddingRequired: validators.base64.paddingRequired\r\n        });\r\n    }\r\n    if (validators.case) {\r\n        fieldSchema = fieldSchema.case(validators.case);\r\n    }\r\n    if (validators.token) {\r\n        fieldSchema = fieldSchema.token();\r\n    }\r\n    if (validators.uri) {\r\n        fieldSchema = fieldSchema.uri({ scheme: ['http', 'https'] }).messages({\r\n            'string.uri': `Invalid URI format`,\r\n        });\r\n    }\r\n    if (validators.dataUri) {\r\n        fieldSchema = fieldSchema.dataUri().messages({\r\n            'string.dataUri': `Invalid data URI format`,\r\n        });\r\n    }\r\n    if (validators.min !== undefined) {\r\n        fieldSchema = fieldSchema.min(validators.min);\r\n    }\r\n    if (validators.max !== undefined) {\r\n        fieldSchema = fieldSchema.max(validators.max);\r\n    }\r\n    return fieldSchema;\r\n};","import * as Joi from 'joi';\r\nimport { NumberValidatorModel } from '../models/joi-validators.model'; \r\n\r\nexport const applyNumberValidation = (fieldSchema: Joi.NumberSchema, validators: NumberValidatorModel): Joi.NumberSchema => {\r\n    if (validators.port) {\r\n        fieldSchema = fieldSchema.port();\r\n    }\r\n    if (validators.positive) {\r\n        fieldSchema = fieldSchema.positive();\r\n    }\r\n    if (validators.negative) {\r\n        fieldSchema = fieldSchema.negative();\r\n    }\r\n    if (validators.multiple !== undefined) {\r\n        fieldSchema = fieldSchema.multiple(validators.multiple);\r\n    }\r\n    if (validators.precision !== undefined) {\r\n        fieldSchema = fieldSchema.precision(validators.precision);\r\n    }\r\n    if (validators.less !== undefined) {\r\n        fieldSchema = fieldSchema.less(validators.less);\r\n    }\r\n    if (validators.greater !== undefined) {\r\n        fieldSchema = fieldSchema.greater(validators.greater);\r\n    }\r\n    if (validators.min !== undefined) {\r\n        fieldSchema = fieldSchema.min(validators.min);\r\n    }\r\n    if (validators.max !== undefined) {\r\n        fieldSchema = fieldSchema.max(validators.max);\r\n    }\r\n    return fieldSchema;\r\n};","import * as Joi from 'joi';\r\nimport { DateValidatorModel } from '../models/joi-validators.model';\r\n\r\nexport const applyDateValidation = (fieldSchema: Joi.DateSchema, validators: DateValidatorModel): Joi.DateSchema => {\r\n    if (validators.less !== undefined) {\r\n        fieldSchema = fieldSchema.less(validators.less === 'now' ? 'now' : new Date(validators.less));\r\n    }\r\n    if (validators.greater !== undefined) {\r\n        fieldSchema = fieldSchema.greater(validators.greater === 'now' ? 'now' : new Date(validators.greater));\r\n    }\r\n    if (validators.iso) {\r\n        fieldSchema = fieldSchema.iso();\r\n    }\r\n    if (validators.timestamp) {\r\n        fieldSchema = fieldSchema.timestamp(validators.timestamp);\r\n    }\r\n    if (validators.min !== undefined) {\r\n        fieldSchema = fieldSchema.min(validators.min);\r\n    }\r\n    if (validators.max !== undefined) {\r\n        fieldSchema = fieldSchema.max(validators.max);\r\n    }\r\n    return fieldSchema;\r\n};","import * as Joi from 'joi';\r\nimport { ValidatorBodyModel } from '../models/joi-validators.model';\r\nimport createValidatorSchemaUtil from './validator-schema-generator.util';\r\n\r\nexport const applyObjectValidation = (fieldSchema: Joi.ObjectSchema, validators: ValidatorBodyModel): Joi.ObjectSchema => {\r\n    if (validators.object && validators.object.schema) {\r\n        const nestedSchema = createValidatorSchemaUtil(validators.object.schema);\r\n        fieldSchema = fieldSchema.keys(nestedSchema.describe()['keys']);\r\n    }\r\n    return fieldSchema;\r\n};\r\n","import * as Joi from 'joi';\r\nimport { ArrayValidatorModel } from '../models/joi-validators.model';\r\nimport createValidatorSchemaUtil from './validator-schema-generator.util';\r\n\r\nexport const applyArrayValidation = (fieldSchema: Joi.ArraySchema, validators: ArrayValidatorModel): Joi.ArraySchema => {\r\n    if (validators.items) {\r\n        const itemSchema = createValidatorSchemaUtil({ item: validators.items });\r\n        fieldSchema = fieldSchema.items(itemSchema.describe()['keys'].item);\r\n        \r\n    }\r\n    if (validators.minItems !== undefined) {\r\n        fieldSchema = fieldSchema.min(validators.minItems).messages({\r\n            \"array.min\": `Minimum ${validators.minItems} items required`,\r\n        });\r\n    }\r\n    if (validators.maxItems !== undefined) {\r\n        fieldSchema = fieldSchema.max(validators.maxItems).messages({\r\n            \"array.max\": `Maximum ${validators.maxItems} items allowed`,\r\n        });\r\n    }\r\n    if (validators.uniqueItems) {\r\n        fieldSchema = fieldSchema.unique().messages({\r\n            \"array.unique\": \"Items must be unique\",\r\n        });\r\n    }\r\n    return fieldSchema;\r\n};","import * as Joi from 'joi';\r\nimport { BooleanValidatorModel } from \"../models/joi-validators.model\";\r\n\r\nexport const applyBooleanValidators = (fieldSchema: Joi.BooleanSchema, validators: BooleanValidatorModel): Joi.BooleanSchema => {\r\n    if (validators.falsy) {\r\n        fieldSchema = fieldSchema.falsy(validators.falsy);\r\n    }\r\n    if (validators.truthy) {\r\n        fieldSchema = fieldSchema.truthy(validators.truthy);\r\n    }\r\n    if (validators.sensitive) {\r\n        fieldSchema = fieldSchema.sensitive();\r\n    }\r\n\r\n     // ← enforce exact boolean if mustBe is set\r\n    if (validators.mustBe === true) {\r\n        fieldSchema = fieldSchema\r\n        .valid(true)\r\n        .messages({ 'any.only': 'Error: This field requires a value of \"true\"' });\r\n    }\r\n    if (validators.mustBe === false) {\r\n        fieldSchema = fieldSchema\r\n        .valid(false)\r\n        .messages({ 'any.only': 'Error: This field requires a value of \"false\"' });\r\n    }\r\n    return fieldSchema;\r\n};","import * as Joi from 'joi';\r\nimport { SchemaValidatorBodyModel } from '../models/joi-validators.model';\r\nimport { applyStringValidation } from './string-validator.util';\r\nimport { applyNumberValidation } from './number-validator.util';\r\nimport { applyDateValidation } from './date-validator.util'; \r\nimport { applyObjectValidation } from './object-validator.util';\r\nimport { applyArrayValidation } from './array-validator.util';\r\nimport { applyBooleanValidators } from './boolean-validator.util';\r\n\r\n// Predefined Joi types map\r\nconst typeMap: Record<string, Joi.AnySchema> = {\r\n  string:  Joi.string(),\r\n  number:  Joi.number(),\r\n  integer: Joi.number().integer(),\r\n  date:    Joi.date(),\r\n  boolean: Joi.boolean(),\r\n  array:   Joi.array(),\r\n  object:  Joi.object(),\r\n};\r\n\r\n// Default validation messages\r\nconst defaultMessages = {\r\n  required: 'This field is required',\r\n  empty:    'This field can be empty',\r\n};\r\n\r\n/**\r\n * Applies default value and required/allow-empty rules to a schema.\r\n */\r\nfunction applyDefaultAndRequired(\r\n  schema: Joi.AnySchema,\r\n  validators: any\r\n): Joi.AnySchema {\r\n  if (validators.default !== undefined) {\r\n    schema = schema.empty('').default(validators.default);\r\n  }\r\n  if (validators.required) {\r\n    schema = schema.required().messages({ 'any.required': defaultMessages.required });\r\n  } else if (validators.type === 'string') {\r\n    schema = (schema as Joi.StringSchema)\r\n      .allow('')\r\n      .messages({ 'string.empty': defaultMessages.empty });\r\n  }\r\n  return schema;\r\n}\r\n\r\n/**\r\n * Creates a Joi validation schema from a SchemaValidatorBodyModel.\r\n */\r\nconst ValidatorSchemaGeneratorUtil = (\r\n  body: SchemaValidatorBodyModel\r\n): Joi.ObjectSchema => {\r\n  const schemaMap: Record<string, Joi.AnySchema> = {};\r\n\r\n  for (const [field, validators] of Object.entries(body)) {\r\n    // Base type schema\r\n    let fieldSchema = typeMap[validators.type] ?? Joi.any();\r\n\r\n    // Apply default & required/allow-empty logic\r\n    fieldSchema = applyDefaultAndRequired(fieldSchema, validators);\r\n\r\n    // Apply type-specific rules\r\n    switch (validators.type) {\r\n      case 'string':\r\n        fieldSchema = applyStringValidation(\r\n          fieldSchema as Joi.StringSchema,\r\n          validators.string ?? {}\r\n        );\r\n        break;\r\n      case 'number':\r\n      case 'integer':\r\n        fieldSchema = applyNumberValidation(\r\n          fieldSchema as Joi.NumberSchema,\r\n          validators.number ?? {}\r\n        );\r\n        break;\r\n      case 'date':\r\n        fieldSchema = applyDateValidation(\r\n          fieldSchema as Joi.DateSchema,\r\n          validators.date ?? {}\r\n        );\r\n        break;\r\n      case 'object':\r\n        fieldSchema = applyObjectValidation(\r\n          fieldSchema as Joi.ObjectSchema,\r\n          validators\r\n        );\r\n        break;\r\n      case 'array':\r\n        fieldSchema = applyArrayValidation(\r\n          fieldSchema as Joi.ArraySchema,\r\n          validators.array ?? {}\r\n        );\r\n        break;\r\n      case 'boolean':\r\n        // Apply truthy/falsy/sensitive logic\r\n        fieldSchema = applyBooleanValidators(\r\n          fieldSchema as Joi.BooleanSchema,\r\n          validators.boolean ?? {}\r\n        );\r\n        break;\r\n      default:\r\n        // no additional rules\r\n        break;\r\n    }\r\n\r\n    schemaMap[field] = fieldSchema;\r\n  }\r\n\r\n  // Build and return the final Joi schema\r\n  return Joi.object(schemaMap)\r\n    .prefs({ abortEarly: false, allowUnknown: false });\r\n};\r\n\r\nexport default ValidatorSchemaGeneratorUtil;","import { Injectable } from '@angular/core';\r\nimport ValidatorSchemaGeneratorUtil from '../utilities/validator-schema-generator.util';  // Adjust the import path as needed\r\nimport { SchemaValidatorBodyModel } from '../models/joi-validators.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class JoiValidatorFactoryService {\r\n  validateSchema(schemaBody: SchemaValidatorBodyModel, formData: any) {\r\n    const schema = ValidatorSchemaGeneratorUtil(schemaBody);\r\n    return schema.validate(formData, { abortEarly: false });\r\n  }\r\n}","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  QueryList,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  ViewChildren,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { FormArray, FormBuilder, FormGroup, AbstractControl } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { BaseFormArrayComponent } from '../../../../shared/base/base-form-array.component';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\nimport { ComponentFactoryService } from '../../../../core/services/component-factory.service';\r\nimport { JoiValidatorFactoryService } from '../../../../features/validator/services/joi-validator-factory.service';\r\nimport { initFormControlSchema } from '../../../../shared/utilities/form-schema-init.util';\r\n\r\n@Component({\r\n  selector: 'nju-obj-array',\r\n  templateUrl: './obj-array.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ObjArrayComponent\r\n  extends BaseFormArrayComponent\r\n  implements OnChanges, OnDestroy, AfterViewInit\r\n{\r\n  @Input() validationSchema!: any;\r\n\r\n  @ViewChildren('dynamicComponentArray', { read: ViewContainerRef })\r\n  viewContainerRefs!: QueryList<ViewContainerRef>;\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected override fb: FormBuilder,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService,\r\n    protected override cdr: ChangeDetectorRef,\r\n    private renderer: Renderer2,\r\n    private el: ElementRef,\r\n    private componentFactoryService: ComponentFactoryService,\r\n    private joiValidatorFactoryService: JoiValidatorFactoryService\r\n  ) {\r\n    super(sanitizer, fb, submitBroadcastService, cdr);\r\n  }\r\n\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes['config'] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.loadInitialComponents();\r\n    this.setupEventListeners();\r\n    this.updateAddButtonState();\r\n  }\r\n\r\n  addControl(defaultValues: any = {}, loadComponent: boolean = true): void {\r\n    const group = this.fb.group({});\r\n    initFormControlSchema(\r\n      this.validationSchema?.array?.items?.object,\r\n      group,\r\n      this.fb,\r\n      this.joiValidatorFactoryService,\r\n      defaultValues\r\n    );\r\n    this.formArray.push(group);\r\n\r\n    this.cdr.detectChanges();\r\n\r\n    setTimeout(() => {\r\n      const index = this.formArray.length - 1;\r\n      const container = this.viewContainerRefs.toArray()[index];\r\n      if (!container) {\r\n        console.error(`❌ No ViewContainerRef found at index ${index}`);\r\n        return;\r\n      }\r\n      this.loadComponentGroup(container, group);\r\n    }, 0);\r\n  }\r\n\r\n  removeControl(index: number): void {\r\n    this.formArray.removeAt(index);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  getControls(): AbstractControl[] {\r\n    return (this.form.get(this.config.name ?? '') as FormArray)?.controls ?? [];\r\n  }\r\n\r\n  trackByIndex(index: number): number {\r\n    return index;\r\n  }\r\n\r\n  private loadInitialComponents(): void {\r\n    this.viewContainerRefs.forEach((ref, i) => {\r\n      if (i < this.formArray.length) {\r\n        this.loadComponentGroup(ref, this.formArray.at(i) as FormGroup);\r\n      }\r\n    });\r\n  }\r\n\r\n  private loadComponentGroup(viewContainerRef: ViewContainerRef, group: FormGroup): void {\r\n    this.componentFactoryService.loadComponents(\r\n      this.config?.components ?? [],\r\n      viewContainerRef,\r\n      group,\r\n      this.validationSchema\r\n    );\r\n  }\r\n\r\n  private setupEventListeners(): void {\r\n    // Remove button listener\r\n    this.renderer.listen(this.el.nativeElement, 'click', (event: Event) => {\r\n      const target = event.target as HTMLElement;\r\n      const removeBtn = target.closest(`.${this.config['removeBtnClass']}`);\r\n      if (removeBtn) {\r\n        this.handleRemoveClick(removeBtn as HTMLElement);\r\n      }\r\n    });\r\n\r\n    // Add button listener\r\n    this.renderer.listen(this.el.nativeElement.parentElement, 'click', (event: Event) => {\r\n      const target = event.target as HTMLElement;\r\n      const addBtn = target.closest(`.${this.config['addBtnClass']}`);\r\n      if (addBtn) {\r\n        this.addControl();\r\n        this.updateAddButtonState();\r\n        this.cdr.detectChanges();\r\n      }\r\n    });\r\n  }\r\n\r\n  private handleRemoveClick(target: HTMLElement): void {\r\n    const wrapper = target.closest('.formArrayComponent');\r\n    if (!wrapper) return;\r\n\r\n    const index = parseInt(wrapper.getAttribute('data-index') ?? '', 10);\r\n    if (!isNaN(index)) {\r\n      this.removeControl(index);\r\n      this.updateAddButtonState();\r\n      this.cdr.detectChanges();\r\n    }\r\n  }\r\n\r\n  private updateAddButtonState(): void {\r\n  const maxItems = this.validationSchema?.array?.maxItems;\r\n  const addBtnClass = this.config['addBtnClass'];\r\n\r\n  if (!addBtnClass || maxItems === undefined) return;\r\n\r\n  // Find all matching buttons (e.g., .add-question-btn)\r\n  const buttons = this.el.nativeElement.parentElement.querySelectorAll(`.${addBtnClass}`);\r\n\r\n  buttons.forEach((btn: HTMLElement) => {\r\n    if (this.formArray.length >= maxItems) {\r\n      this.renderer.setAttribute(btn, 'disabled', 'true');\r\n    } else {\r\n      this.renderer.removeAttribute(btn, 'disabled');\r\n    }\r\n  });\r\n}\r\n}\r\n","\r\n<div [formGroup]=\"form\">\r\n  <div formArrayName=\"{{config.name}}\">\r\n    <!-- Array‐level validation messages -->\r\n    <p *ngIf=\"errorState\" class=\"error-message\" style=\"display: block;\">\r\n      <ng-container *ngIf=\"arrayErrors?.['minItems'] as minErr\">\r\n        Select at least {{ minErr.required }} items\r\n        (you have {{ minErr.actual }}).\r\n      </ng-container>\r\n      <ng-container *ngIf=\"arrayErrors?.['maxItems'] as maxErr\">\r\n        Select at most {{ maxErr.required }} items\r\n        (you have {{ maxErr.actual }}).\r\n      </ng-container>\r\n      <ng-container *ngIf=\"arrayErrors?.['uniqueItems']\">\r\n        All selected items must be unique.\r\n      </ng-container>\r\n    </p>\r\n    <div\r\n      *ngFor=\"let control of getControls(); let i = index; trackBy: trackByIndex\"\r\n      [formGroupName]=\"i\"\r\n      [attr.data-index]=\"i\"\r\n      class=\"formArrayComponent\"\r\n    >\r\n      <!-- Debug: Show index -->\r\n      <!-- <div class=\"debug\">Index: {{ i }}</div> -->\r\n      <ng-template #dynamicComponentArray></ng-template>\r\n    </div>\r\n  </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FormGroup, FormArray, FormBuilder } from '@angular/forms';\r\nimport { BaseFormArrayComponent } from '../../../../shared/base/base-form-array.component';\r\nimport { DataPopulationRuleService } from '../../../../features/data-population/services/data-population-rule.service';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { PaginationHelper } from '../../../../shared/utilities/pagination-helper';\r\nimport { DprOptionModel } from '../../../../features/data-population/models/dpr-option.model';\r\nimport { Observable } from 'rxjs';\r\nimport { pushRemoveSelection } from '../../../../shared/utilities/array-operations.util';\r\n// Map schema types to TS types\r\ntype ValidationTypeMap = Record<'string'|'number'|'integer'|'boolean'|'date', any>;\r\n// Helper to extract array item type\r\ntype ArrayItemType<S extends keyof ValidationTypeMap> = ValidationTypeMap[S];\r\n\r\n@Component({\r\n  selector: 'nju-select-array',\r\n  templateUrl: './select-array.component.html',\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false\r\n})\r\nexport class SelectArrayComponent<\r\n  S extends keyof ValidationTypeMap = 'string',\r\n  T = ArrayItemType<S>\r\n> extends BaseFormArrayComponent implements OnChanges, OnDestroy \r\n{\r\n  @Input() validationSchema!: any;\r\n  selectedItems: T[] = [];\r\n  /** Pagination helper for dynamic options */\r\n    pager!: PaginationHelper<DprOptionModel>;\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    protected override fb: FormBuilder,\r\n    private dpService: DataPopulationRuleService,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService,\r\n    protected override cdr: ChangeDetectorRef\r\n  ) {\r\n    super(sanitizer, fb, submitBroadcastService, cdr);\r\n  }\r\n  \r\n  /** Re-initialize on config change: styles, pagination, defaults */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n    if (changes['config'] && this.config) {\r\n      this.applyHostConfig(this.config);\r\n\r\n      // Setup pagination\r\n      this.pager = new PaginationHelper<DprOptionModel>((page, search) =>\r\n        this.dpService.getOptions(this.config.dpRule!, page, search) as Observable<DprOptionModel[]>\r\n      );\r\n      this.pager.load();\r\n\r\n      // Apply default selections\r\n      const defaults = this.formArray.value ?? [];\r\n      if (Array.isArray(defaults)) {\r\n        this.selectedItems = [...defaults];\r\n      }\r\n    }\r\n  }\r\n\r\n  // push remove value in array\r\n  handleSelection(itemValue: T): void {\r\n    pushRemoveSelection(this.selectedItems, this.formArray, this.validationSchema, itemValue);\r\n  }\r\n\r\n    /** Cast input to generic type */\r\n  castValue(value: any): T { return value as T; }\r\n}\r\n","<div class=\"dropdown select-custom js-no-select\" [formGroup]=\"form\">\r\n    <div>\r\n      <input type=\"text\" data-bs-toggle=\"dropdown\" [attr.id]=\"config['id']\" [disabled]=\"config['disabled']\" \r\n      [class]=\"config['inputClass'] |  classList:'input-custom'\"\r\n      [ngStyle]=\"config['inputStyle'] | styleMap\"\r\n      [placeholder]=\"config['placeholder']\"\r\n      data-bs-auto-close=\"outside\" />\r\n      <div role=\"listbox\"\r\n      [class]=\"config['dropdownClass'] |  classList:'dropdown-menu menu-items-lg'\"\r\n      [ngStyle]=\"config['dropdownStyle'] | styleMap\">\r\n        <div role=\"option\" *ngFor=\"let item of config.dpRule?.options\" class=\"dropdown-item\"\r\n          [class.active]=\"selectedItems.includes(castValue(item.value))\" (click)=\"handleSelection(castValue(item.value))\">\r\n          {{ item.label }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <div class=\"applied-filter-labels\" *ngIf=\"selectedItems.length !== 0\">\r\n    <span *ngFor=\"let item of selectedItems\"\r\n    [class]=\"config['labelClass'] |  classList:'label label-sm label-body-sm'\"\r\n    [ngStyle]=\"config['labelStyle'] | styleMap\">\r\n      <span>{{ item }}</span>\r\n      <i class=\"ph ph-x icon icon-2xs\" role=\"button\" (click)=\"handleSelection(item)\"></i>\r\n    </span>\r\n  </div>","// Import core modules\r\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { BaseFormControlComponent } from '../../../../shared/base/base-form-control.component';\r\nimport { FormControlComponentModel } from '../../../../core/models/component-models/form-control-component.model';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { DataPopulationRuleService } from '../../../../features/data-population/services/data-population-rule.service';\r\nimport { FormSubmitBroadcastService } from '../../../../core/services/form-submit-broadcast.service';\r\nimport { DprOptionModel } from '../../../../features/data-population/models/dpr-option.model';\r\nimport { PaginationHelper } from '../../../../shared/utilities/pagination-helper';\r\nimport { Observable } from 'rxjs';\r\n@Component({\r\n  selector: 'nju-select',\r\n  templateUrl: './select.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  standalone: false\r\n})\r\nexport class SelectComponent\r\n  extends BaseFormControlComponent<FormControlComponentModel, FormControl>\r\n  implements OnChanges\r\n{\r\n  dropdownOpen: boolean = false; // Dropdown visibility toggle\r\n\r\n /** Pagination helper instance for paginated option loading */\r\n  pager!: PaginationHelper<DprOptionModel>;\r\n\r\n  constructor(\r\n    sanitizer: DomSanitizer,\r\n    private dpService: DataPopulationRuleService,\r\n    protected override submitBroadcastService: FormSubmitBroadcastService,\r\n    private renderer: Renderer2,\r\n    private el: ElementRef\r\n  ) {\r\n    super(sanitizer, submitBroadcastService);\r\n  }\r\n  /**\r\n   * Lifecycle hook triggered when input properties change.\r\n   * Handles re-initialization of pager and config updates.\r\n   *\r\n   * @param changes - The object containing property change information.\r\n   */\r\n  override ngOnChanges(changes: SimpleChanges): void {\r\n    super.ngOnChanges(changes);\r\n\r\n    if (changes['config'] && this.config) {\r\n      // Apply base component configuration styles, class bindings, etc.\r\n      this.applyHostConfig(this.config);\r\n      // Initialize the pagination helper with option fetcher\r\n      this.pager = new PaginationHelper<DprOptionModel>((page, search) =>\r\n        this.dpService.getOptions(this.config.dpRule!, page, search) as Observable<DprOptionModel[]>\r\n      );\r\n\r\n      // Load the first page of options\r\n      this.pager.load();\r\n\r\n      this.setupDropdownClickListener();\r\n    }\r\n  }\r\n  /**\r\n   * Attaches an event listener for handling dropdown selection.\r\n   */\r\n  private setupDropdownClickListener(): void {\r\n    this.renderer.listen(this.el.nativeElement, 'click', (event: Event) => {\r\n      const target = event.target as HTMLElement;\r\n      if (target.classList.contains('dropdown-item')) {\r\n        this.onDropdownItemClick(target);\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Toggles the dropdown menu.\r\n   */\r\n  toggleDropdown(): void {\r\n    this.dropdownOpen = !this.dropdownOpen;\r\n  }\r\n\r\n  /**\r\n   * Handles dropdown item selection and updates form values.\r\n   * @param target The clicked dropdown item element.\r\n   */\r\n  private onDropdownItemClick(target: HTMLElement): void {\r\n    // Remove 'active' class and aria-selected from all siblings\r\n    const dropdownItems = target.parentElement?.children;\r\n    if (dropdownItems) {\r\n      Array.from(dropdownItems).forEach((item) => {\r\n        this.renderer.removeClass(item, 'active');\r\n        this.renderer.setAttribute(item, 'aria-selected', 'false');\r\n      });\r\n    }\r\n\r\n    // Set 'active' class and aria-selected on the clicked item\r\n    this.renderer.addClass(target, 'active');\r\n    this.renderer.setAttribute(target, 'aria-selected', 'true');\r\n\r\n    // Retrieve selected label and value\r\n    const selectedLabel = target.textContent?.trim() || '';\r\n    const selectedValue = target.getAttribute('data-val') || '';\r\n\r\n    // Update FormGroup values\r\n    this.control.setValue(selectedValue);\r\n    this.control.markAsTouched();\r\n\r\n    // Update input's display text and data attribute\r\n    const input = this.el.nativeElement.querySelector('.input-custom');\r\n    if (input) {\r\n      this.renderer.setProperty(input, 'value', selectedLabel);\r\n      this.renderer.setAttribute(input, 'data-val', selectedValue);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Returns the currently loaded options from pager.\r\n   */\r\n  get options(): DprOptionModel[] {\r\n    return this.pager?.items || [];\r\n  }\r\n\r\n  /** Loads the next page of radio options */\r\n  nextPage() {\r\n    this.pager.next();\r\n  }\r\n\r\n  /** Loads the previous page of radio options */\r\n  previousPage() {\r\n    this.pager.prev();\r\n  }\r\n\r\n  /** TrackBy function for *ngFor to optimize DOM re-rendering */\r\n  trackByValue = this.pager?.trackByIdx.bind(this.pager);\r\n\r\n  /**\r\n   * Lifecycle hook triggered on component destruction.\r\n   * Cleans up pager resources and calls base class destroy logic.\r\n   */\r\n  override ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n    this.pager?.destroy();\r\n  }\r\n}","<div class=\"dropdown select-custom\">\r\n  <!-- Form Group Wrapper -->  \r\n  <input \r\n    type=\"text\" readonly\r\n    [class]=\"config['inputClass'] | classList:'input-custom'\"\r\n    [ngStyle]=\"config['inputStyle'] | styleMap\"\r\n    [placeholder]=\"config['placeholder']\"\r\n    [value]=\"\" \r\n    [attr.id]=\"config['name']\"\r\n    aria-expanded=\"dropdownOpen\"\r\n    aria-haspopup=\"listbox\"\r\n    data-bs-toggle=\"dropdown\"\r\n    data-bs-auto-close=true\r\n  />\r\n\r\n  <!-- Dropdown Menu -->\r\n  <div role=\"listbox\"\r\n      [class]=\"config['dropdownClass'] | classList:'dropdown-menu menu-items-lg'\"\r\n      [ngStyle]=\"config['dropdownStyle'] | styleMap\"\r\n      [ngClass]=\"{ show: dropdownOpen }\"\r\n      [attr.aria-labelledby]=\"config['id']\">\r\n    <button \r\n      *ngFor=\"let option of options; trackBy: trackByValue; let i = index\"\r\n      type=\"button\"\r\n      role=\"option\"\r\n      class=\"dropdown-item\" \r\n      [attr.data-val]=\"option.value\">\r\n      {{ option.label }}\r\n    </button>\r\n  </div>\r\n</div> \r\n  ","import { \r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  OnChanges,\r\n  SimpleChanges\r\n} from '@angular/core';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n@Component({\r\n  selector: 'nju-toast',\r\n  templateUrl: './toast.component.html',\r\n  standalone: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ToastComponent extends BaseComponent implements OnChanges {\r\n  // ngOnChanges is a lifecycle hook that is called when any data-bound input properties change\r\n  // This is where you can perform any additional logic when the input properties change\r\n  // In this case, it is used to update the host classes and styles based on the component's configuration\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    // Check if the 'config' input property has changed\r\n    // If it has, and the config is defined, apply the host and component configuration\r\n    if (changes['config'] && this.config) {\r\n      // Set css styling variable from json schema\r\n      // apply host and component level styling\r\n      this.hostClasses = 'd-flex justify-content-center';\r\n    }\r\n  }\r\n}\r\n","<div \r\n        [ngClass]=\"config['class'] | classList:'toast toast-custom'\"\r\n        class=\"fade show\"\r\n        [ngStyle]=\"config['style'] | styleMap\"\r\n        role=\"alert\"\r\n        aria-live=\"assertive\"\r\n        aria-atomic=\"true\" \r\n        [innerHTML]=\"config['text'] | safeHtml\">\r\n</div>","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { ComponentMappingModel } from '../models/component-mapping.model';\r\nimport { TypeNotFoundComponent } from '../../../shared/components/type-not-found/type-not-found.component';\r\n// ... import additional components as needed\r\nimport { ModalComponent } from '../../../components/overlay/modal/modal.component';\r\nimport { COMPONENT_MAPPING_CONFIG } from '../tokens/component-mapping-config.token';\r\nimport { COMPONENT_MAPPINGS } from '../tokens/component-mappings.token';\r\nimport { ComponentMappingConfig } from '../models/component-mapping-config';\r\nimport { DividerComponent } from '../../../components/display/divider/divider.component';\r\nimport { HeadlineComponent } from '../../../components/display/headline/headline.component';\r\nimport { LabelComponent } from '../../../components/display/label/label.component';\r\nimport { ParagraphComponent } from '../../../components/display/paragraph/paragraph.component';\r\nimport { SpanComponent } from '../../../components/display/span/span.component';\r\nimport { IconComponent } from '../../../components/display/icon/icon.component';\r\nimport { ImageComponent } from '../../../components/display/image/image.component';\r\nimport { ContainerComponent } from '../../../components/display/container/container.component';\r\nimport { CheckboxComponent } from '../../../components/form-control/arrays/checkbox/checkbox.component';\r\nimport { HiddenComponent } from '../../../components/form-control/basic/hidden/hidden.component';\r\nimport { NumberComponent } from '../../../components/form-control/basic/number/number.component';\r\nimport { RadioComponent } from '../../../components/form-control/basic/radio/radio.component';\r\nimport { TextComponent } from '../../../components/form-control/basic/text/text.component';\r\nimport { TextareaComponent } from '../../../components/form-control/basic/textarea/textarea.component';\r\nimport { ButtonComponent } from '../../../components/actions/button/button.component';\r\nimport { FormComponent } from '../../../components/structural/form/form.component';\r\nimport { ToggleComponent } from '../../../components/form-control/basic/toggle/toggle.component';\r\nimport { SwitchComponent } from '../../../components/form-control/basic/switch/switch.component';\r\nimport { ObjArrayComponent } from '../../../components/form-control/arrays/obj-array/obj-array.component';\r\nimport { SelectArrayComponent } from '../../../components/form-control/arrays/select-array/select-array.component';\r\nimport { SelectComponent } from '../../../components/form-control/basic/select/select.component';\r\nimport { ToastComponent } from '../../../components/overlay/toast/toast.component';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ComponentMappingService {\r\n  private mappings: { [key: string]: ComponentMappingModel } = {};\r\n\r\n  constructor(\r\n    @Optional() @Inject(COMPONENT_MAPPING_CONFIG) config: ComponentMappingConfig,\r\n    @Optional() @Inject(COMPONENT_MAPPINGS) customMappings?: ComponentMappingModel[]\r\n  ) {\r\n    // Check configuration flag to decide whether to load default mappings.\r\n    if (config?.useDefaultMappings ?? true) {\r\n      this.mappings = {\r\n        'divider': { schema: 'display', alias: 'divider', component: DividerComponent },\r\n        'headline': { schema: 'display', alias: 'headline', component: HeadlineComponent },\r\n        'label': { schema: 'display', alias: 'label', component: LabelComponent },\r\n        'paragraph': { schema: 'display', alias: 'paragraph', component: ParagraphComponent },\r\n        'icon': { schema: 'display', alias: 'icon', component: IconComponent },\r\n        'image': { schema: 'display', alias: 'image', component: ImageComponent },\r\n        'span': { schema: 'display', alias: 'span', component: SpanComponent },\r\n        'container': { schema: 'display', alias: 'container', component: ContainerComponent },\r\n        'group': { schema: 'display', alias: 'group', component: ContainerComponent },\r\n        'horizontalLayout': { schema: 'display', alias: 'horizontalLayout', component: ContainerComponent },\r\n        'verticalLayout': { schema: 'display', alias: 'verticalLayout', component: ContainerComponent },\r\n\r\n        // Form-Control Component Schema Mapping\r\n        'checkbox': { schema: 'form-control', alias: 'checkbox', component: CheckboxComponent },\r\n        'hidden': { schema: 'form-control', alias: 'hidden', component: HiddenComponent },\r\n        'number': { schema: 'form-control', alias: 'number', component: NumberComponent },\r\n        'integer': { schema: 'form-control', alias: 'integer', component: NumberComponent },\r\n        'radio': { schema: 'form-control', alias: 'radio', component: RadioComponent },\r\n        'text': { schema: 'form-control', alias: 'text', component: TextComponent },\r\n        'textarea': { schema: 'form-control', alias: 'textarea', component: TextareaComponent },\r\n        'toggle': { schema: 'form-control', alias: 'toggle', component: ToggleComponent },\r\n        'switch': { schema: 'form-control', alias: 'switch', component: SwitchComponent },\r\n        'formArray': { schema: 'form-control', alias: 'formArray', component: ObjArrayComponent },\r\n        'formArraySelect': { schema: 'formArray', alias: 'form', component: SelectArrayComponent },\r\n\r\n        'selectPicker': { schema: 'atom', alias: 'controlPicker', component: SelectComponent },\r\n        'select': { schema: 'atom', alias: 'controlPicker', component: SelectComponent },\r\n\r\n        // Action\r\n        'button': { schema: 'action', alias: 'button', component: ButtonComponent },\r\n\r\n        //Structural\r\n        'form': { schema: 'structural', alias: 'form', component: FormComponent },\r\n\r\n        'toast': { schema: 'overlay', alias: 'toast', component: ToastComponent },\r\n        'modal': { schema: 'overlay', alias: 'modal', component: ModalComponent },\r\n      };\r\n    }\r\n    // Merge custom mappings (if any) into the mappings object.\r\n    if (customMappings) {\r\n      customMappings.forEach(mapping => {\r\n        this.mappings[mapping.alias] = mapping;\r\n      });\r\n    }\r\n  }\r\n\r\n  public getMapping(type: string): ComponentMappingModel {\r\n    return this.mappings[type] || {\r\n      schema: 'atom',\r\n      alias: 'unknown',\r\n      component: TypeNotFoundComponent\r\n    };\r\n  }\r\n}","import { Injectable, ComponentRef, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup, FormArray, FormBuilder } from '@angular/forms';\r\nimport { ComponentMappingService } from '../../features/components-mapping/services/component-mapping.service';\r\nimport { ComponentModel } from '../models/component.model';\r\nimport { TypeNotFoundComponent } from '../../shared/components/type-not-found/type-not-found.component';\r\nimport { NgxOverlayService } from './ngx-overlay.service';\r\nimport { OverlayData } from '../models/overlay-data.model';\r\nimport { FormComponent } from '../../components/structural/form/form.component';\r\nimport { initFormControlSchema } from '../../shared/utilities/form-schema-init.util';\r\nimport { JoiValidatorFactoryService } from '../../features/validator/services/joi-validator-factory.service';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ComponentFactoryService {\r\n  constructor(\r\n    private mappingService: ComponentMappingService,\r\n    private overlayService: NgxOverlayService,\r\n    private fb: FormBuilder,\r\n    private joiValidatorFactoryService: JoiValidatorFactoryService,\r\n  ) {}\r\n\r\n  /**\r\n   * Loads one or more components based on the provided configuration.\r\n   * @param config A single ComponentModel or an array of ComponentModel objects.\r\n   * @param container The container (ViewContainerRef) where components should be added.\r\n   * @param form (Optional) The parent FormGroup/FormArray for form components.\r\n   * @param validationSchema (Optional) Validation configuration used for form controls.\r\n   */\r\n  loadComponents(\r\n    config: ComponentModel | ComponentModel[],\r\n    container: ViewContainerRef,\r\n    form?: FormGroup | FormArray,\r\n    validationSchema?: any\r\n  ): void {\r\n    if (Array.isArray(config)) {\r\n      config.forEach(c => this.loadSingleComponent(c, container, form, validationSchema));\r\n    } else {\r\n      this.loadSingleComponent(config, container, form, validationSchema);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Loads a single component based on its configuration.\r\n   * For 'formGroup' types, it recursively loads child components into the corresponding sub-form.\r\n   * @param componentConfig The configuration for the component.\r\n   * @param container The ViewContainerRef to create the component in.\r\n   * @param form (Optional) The parent FormGroup/FormArray.\r\n   * @param validationSchema (Optional) Validation configuration for form controls.\r\n   */\r\n  private loadSingleComponent(\r\n    componentConfig: ComponentModel,\r\n    container: ViewContainerRef,\r\n    form?: FormGroup | FormArray,\r\n    validationSchema?: any,\r\n  ): void {\r\n  \r\n    // ─── 1) TOP‐LEVEL FORM ───────────────────────────────────────────────────────\r\n    // If this config is your \"form\" type, handle it in one shot:\r\n    if (componentConfig.type === 'form') {\r\n      // 1.1 Create the FormComponent that wraps a <form [formGroup]>…\r\n      const formRef = container.createComponent(FormComponent);\r\n      formRef.setInput('config', componentConfig);\r\n  \r\n      // 1.2 Build your FormGroup (via your initFormControlSchema / Joi service, or FormBuilder)\r\n      const fg = this.fb.group({});\r\n      \r\n      initFormControlSchema(\r\n        componentConfig[\"validatorSchema\"],\r\n        fg,\r\n        this.fb,\r\n        this.joiValidatorFactoryService\r\n      );\r\n      formRef.setInput('form', fg);\r\n      console.log('FormArray', fg.value);\r\n      // 1.3 Render *only* its children inside that form wrapper\r\n      this.loadComponents(\r\n        componentConfig.components ?? [],\r\n        formRef.instance.viewContainerRef,\r\n        fg,\r\n        componentConfig[\"validatorSchema\"]\r\n      );\r\n      return;\r\n    }\r\n  \r\n    // ─── 2) OVERLAY TYPES ──────────────────────────────────────────────────────\r\n    if (['modal','toast','alert','offcanvas'].includes(componentConfig.type)) {\r\n      const overlayData: OverlayData = { config: componentConfig, form, validationSchema };\r\n      if (componentConfig.type === 'modal') this.overlayService.openModal(overlayData);\r\n      else if (componentConfig.type === 'toast') this.overlayService.openToast(overlayData);\r\n      else console.error(`Unsupported overlay: ${componentConfig.type}`);\r\n      return;\r\n    }\r\n    // ─── 3) NESTED formGroup ONLY (no <form> wrapper) ─────────────────────────\r\n    if (componentConfig.type === 'formGroup' && form) {\r\n      // ...your existing formGroup‐only logic here…\r\n      // recurse into its children with the same container (no new <form>)\r\n      const childForm = form.get(componentConfig.name??\"\") as FormGroup;\r\n      this.loadComponents(componentConfig.components ?? [], container, childForm, validationSchema);\r\n      return;\r\n    }\r\n\r\n     // ✅ Step 4: FormArray support\r\n  if (\r\n    ['formArray', 'formArraySelect', 'formArrayCheckbox'].includes(componentConfig.type) &&\r\n    form\r\n  ) {\r\n    const ref = container.createComponent(\r\n      this.mappingService.getMapping(componentConfig.type)?.component || TypeNotFoundComponent\r\n    );\r\n\r\n    ref.setInput('config', componentConfig);\r\n    ref.setInput('form', form);\r\n    ref.setInput('validationSchema', this.findValidationSchema(validationSchema, componentConfig.name ?? ''));\r\n    \r\n    return;\r\n  }\r\n  \r\n    // ─── 4) STANDARD COMPONENT ────────────────────────────────────────────────\r\n    const mapping      = this.mappingService.getMapping(componentConfig.type) || {};\r\n    const componentCls = mapping.component || TypeNotFoundComponent;\r\n    const cmpDef       = (componentCls as any).ɵcmp;\r\n    const ref          = container.createComponent(componentCls);\r\n  \r\n    // 4.1 wire up config always\r\n    ref.setInput('config', componentConfig);\r\n  \r\n    // 4.2 only wire up form if the target component actually has a `@Input() form`\r\n    if (form && cmpDef?.inputs?.hasOwnProperty('form')) {\r\n      ref.setInput('form', form);\r\n    }\r\n  \r\n    // 4.3 wire up validationSchema if needed\r\n    if (form && ['checkbox'].includes(componentConfig.type)) \r\n    {\r\n      const key = componentConfig.name;\r\n      ref.setInput(\r\n        'validationSchema',\r\n        componentConfig.type === 'collapse'\r\n          ? validationSchema\r\n          : this.findValidationSchema(validationSchema, key??\"\")\r\n      );\r\n    }\r\n  \r\n    // ─── 5) RECURSE CHILDREN ─────────────────────────────────────────────────\r\n    if (Array.isArray(componentConfig.components)) {\r\n      const childContainer =\r\n        (ref.instance as any).viewContainerRef ||\r\n        (ref.instance as any).container ||\r\n        container;\r\n      this.loadComponents(\r\n        componentConfig.components,\r\n        childContainer,\r\n        form,\r\n        validationSchema\r\n      );\r\n    }\r\n  }\r\n  \r\n  /**\r\n   * Recursively searches a validation schema for a specific key.\r\n   * @param schema The validation schema object.\r\n   * @param key The key to search for.\r\n   * @returns The matching schema section or null if not found.\r\n   */\r\n  private findValidationSchema(schema: any, key: string): any | null {\r\n    if (!schema) return null;\r\n    for (const k in schema) {\r\n      if (k === 'default') continue;\r\n      if (k === key) return schema[k];\r\n      if (typeof schema[k] === 'object' && schema[k] !== null) {\r\n        const result = this.findValidationSchema(schema[k], key);\r\n        if (result) return result;\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n}","import {\r\n  Component,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  ViewChild,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { BaseComponent } from '../../../shared/base/base.component';\r\nimport { ComponentFactoryService } from '../../../core/services/component-factory.service';\r\nimport { ComponentModel } from '../../../core/models/component.model';\r\n\r\n@Component({\r\n  selector: 'app-modal',\r\n  templateUrl: './modal.component.html',\r\n  standalone: false\r\n})\r\nexport class ModalComponent extends BaseComponent implements OnChanges {\r\n  /**\r\n   * Reference to the CDK Overlay instance. Used to dispose/close the modal.\r\n   */\r\n  @Input() overlayRef!: OverlayRef;\r\n  /**\r\n   * Configuration object for the modal. Contains header, body, and footer components.\r\n   */\r\n  @ViewChild('dynamicComponentModalBody', { read: ViewContainerRef, static: true })\r\n  private bodyContainer!: ViewContainerRef;\r\n\r\n  constructor(\r\n    private componentFactory: ComponentFactoryService,\r\n    sanitizer: DomSanitizer\r\n  ) {\r\n    super(sanitizer);\r\n  }\r\n\r\n  /**\r\n   * Respond to changes in @Input properties. Applies host styling and renders dynamic children.\r\n   */\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['config'] && this.config) {\r\n      // Apply CSS classes and styles from the JSON config\r\n      this.applyHostConfig(this.config);\r\n      // Load header, body, and footer components dynamically\r\n      this.loadBodyComponents();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Capture all clicks within the modal. Close the modal when an element\r\n   * (or its ancestor) with class 'closeModal' is clicked.\r\n   */\r\n  @HostListener('click', ['$event'])\r\n  onHostClick(event: MouseEvent): void {\r\n    const target = event.target as HTMLElement;\r\n    if (target.closest('.closeModal')) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  /** Load and render components specified in config.body.components */\r\n  private loadBodyComponents(): void {\r\n    const bodyComponents: ComponentModel[] = this.config[\"components\"] || [];\r\n    bodyComponents.forEach(cfg =>\r\n      this.componentFactory.loadComponents(cfg, this.bodyContainer)\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Close the modal by disposing its overlay.\r\n   */\r\n  close(): void {\r\n    this.overlayRef.dispose();\r\n  }\r\n\r\n  /**\r\n   * Explicit close handler for template elements (e.g., <a> tags). Prevents default behavior and closes.\r\n   */\r\n  onClose(event: MouseEvent): void {\r\n    event.preventDefault();\r\n    this.close();\r\n  }\r\n}\r\n","<!-- modal.component.html -->\r\n<!--\r\n  The root container for the modal.  \r\n  Applies CSS classes, inline styles, and attributes from the `config` object.\r\n-->\r\n<div\r\n  role=\"dialog\"\r\n  [class]=\"config['class'] | classList:'modal fade show'\"\r\n  [ngStyle]=\"config['style'] | styleMap\"\r\n  tabindex=\"-1\"\r\n  [attr.id]=\"config['id']\"\r\n>\r\n  <!--\r\n    Modal dialog wrapper.  \r\n    Use Bootstrap utility classes for size, centering, and scroll behavior.\r\n  -->\r\n  <div \r\n    class=\"modal-dialog modal-dialog-centered modal-dialog-scrollable justify-content-center\"\r\n    [ngClass]=\"config['dialogClass'] | classList:'modal-lg'\"\r\n    [ngStyle]=\"config['dialogStyle'] | styleMap\"\r\n    >\r\n\r\n    <!--\r\n      Modal content container.  \r\n      Populates container classes and styles from JSON config.\r\n    -->\r\n    <div\r\n      [class]=\"config['modalContentClass'] | classList:'modal-content'\"\r\n      [ngStyle]=\"config['modalContentStyle'] | styleMap\"\r\n    >\r\n\r\n      <!--\r\n        Modal header section.  \r\n        Renders dynamic header components and displays title.\r\n      -->\r\n      <div\r\n        [class]=\"config['header']?.headerClass | classList:'modal-header'\"\r\n        [ngStyle]=\"config['header']?.headerStyle | styleMap\"\r\n      >\r\n        <!-- Title text -->\r\n        <h5\r\n          [ngClass]=\"config['header']?.titleClass | classList:'modal-title'\"\r\n        >\r\n          {{ config['header']?.title }}\r\n        </h5>\r\n\r\n        <!-- Close button. Adds .closeModal class to trigger host listener in component -->\r\n        <a\r\n          href=\"#\"\r\n          role=\"button\"\r\n          class=\"closeModal\"\r\n          aria-label=\"Close\"\r\n          (click)=\"onClose($event)\"\r\n        >\r\n          <i class=\"ph ph-x color-subdued icon icon-sm icon-interactive\"></i>\r\n        </a>\r\n      </div>\r\n      <!--\r\n        Modal body section.  \r\n        Renders main content and dynamic body components.\r\n      -->\r\n      <ng-template #dynamicComponentModalBody></ng-template>\r\n\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Injectable, Injector, SimpleChange } from '@angular/core';\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ModalComponent } from '../../components/overlay/modal/modal.component';\r\nimport { OverlayData } from '../models/overlay-data.model';\r\nimport { ToastComponent } from '../../components/overlay/toast/toast.component';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgxOverlayService {\r\n  constructor(private overlay: Overlay, private injector: Injector) {}\r\n\r\n  /**\r\n   * Opens a modal overlay.\r\n   * @param data Data to pass to the ModalComponent.\r\n   */\r\n  openModal(data?: OverlayData): OverlayRef {\r\n    const config = this.getDefaultConfig();\r\n    const overlayRef = this.overlay.create(config);\r\n    \r\n    // Automatically close the modal when the backdrop is clicked.\r\n    overlayRef.backdropClick().subscribe(() => overlayRef.dispose());\r\n\r\n    const portal = new ComponentPortal(ModalComponent, null, this.createInjector(data));\r\n    const componentRef= overlayRef.attach(portal);\r\n    // now manually set the @Input() on the component instance\r\n    if (data?.config) {\r\n      componentRef.instance.config = data.config;\r\n      componentRef.instance.overlayRef = overlayRef;\r\n      // 2) manually invoke ngOnChanges\r\n      componentRef.instance.ngOnChanges({\r\n        config: new SimpleChange(null, data?.config, true)\r\n      });\r\n\r\n      // 3) force change detection so the template updates\r\n      componentRef.changeDetectorRef.detectChanges();\r\n\r\n            // if you need to trigger change-detection:\r\n      componentRef.changeDetectorRef.markForCheck();\r\n    }\r\n    \r\n    return overlayRef;\r\n  }\r\n\r\n  /**\r\n   * Opens a toast overlay.\r\n   * @param data Data to pass to the ToastComponent.\r\n   */\r\n  openToast(data?: OverlayData): OverlayRef {\r\n    const config = this.getDefaultConfig({\r\n      hasBackdrop: true,\r\n      panelClass: 'nju-toast-overlay',\r\n      positionStrategy: this.overlay\r\n        .position()\r\n        .global()\r\n        .bottom('20px')\r\n        .centerHorizontally()\r\n    });\r\n\r\n    const overlayRef = this.overlay.create(config);\r\n    const portal = new ComponentPortal(ToastComponent);\r\n\r\n    // attach returns a ComponentRef<ToastComponent>\r\n    const componentRef = overlayRef.attach(portal);\r\n    // now manually set the @Input() on the component instance\r\n    if (data?.config) {\r\n      componentRef.instance.config = data.config;\r\n\r\n      // 2) manually invoke ngOnChanges\r\n      componentRef.instance.ngOnChanges({\r\n        config: new SimpleChange(null, data?.config, true)\r\n      });\r\n\r\n      // 3) force change detection so the template updates\r\n      componentRef.changeDetectorRef.detectChanges();\r\n\r\n            // if you need to trigger change-detection:\r\n      componentRef.changeDetectorRef.markForCheck();\r\n    }\r\n\r\n    // 3) figure out how long before auto-close\r\n    //    - if JSON provided closeTime (in seconds) use that\r\n    //    - otherwise default to 10 seconds\r\n    const secs = data?.config?.closeTimeSec;\r\n    const timeoutMs = (typeof secs === 'number' ? secs : 10) * 1000;\r\n\r\n    // 4) schedule the disposal\r\n    const id = setTimeout(() => {\r\n      overlayRef.dispose();\r\n      clearTimeout(id);\r\n    }, timeoutMs);\r\n\r\n    return overlayRef;\r\n  }\r\n  /**\r\n   * Returns a default OverlayConfig object merged with any additional options.\r\n   */\r\n  private getDefaultConfig(options?: Partial<OverlayConfig>): OverlayConfig {\r\n    const defaultConfig = new OverlayConfig({\r\n      hasBackdrop: true,\r\n      backdropClass: 'cdk-overlay-dark-backdrop',\r\n      panelClass: 'nju-overlay-panel',\r\n      scrollStrategy: this.overlay.scrollStrategies.block(),\r\n      positionStrategy: this.overlay\r\n        .position()\r\n        .global()\r\n        .centerHorizontally()\r\n        .centerVertically()\r\n    });\r\n    return { ...defaultConfig, ...options };\r\n  }\r\n\r\n  /**\r\n   * Creates a simple injector to pass data into the overlay component.\r\n   * For more advanced data passing, you might create a custom InjectionToken and PortalInjector.\r\n   */\r\n  private createInjector(data?: OverlayData): Injector {\r\n    // In this minimal implementation we simply return the root injector.\r\n    // Extend this function if you need to pass custom tokens/data.\r\n    return this.injector;\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { Notification } from '../models/notification.model';\r\n/**\r\n * Centralized service to manage in-app notifications.\r\n * Components can subscribe to `notifications$` to display messages.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class NotificationService {\r\n  private notificationSubject = new Subject<Notification>();\r\n  /** Stream of notifications to display */\r\n  readonly notifications$: Observable<Notification> = this.notificationSubject.asObservable();\r\n\r\n  /** Emit a success notification */\r\n  showSuccess(message: string, duration = 3000): void {\r\n    this.notify({ type: 'success', message, duration });\r\n  }\r\n\r\n  /** Emit an error notification */\r\n  showError(message: string, duration = 5000): void {\r\n    this.notify({ type: 'error', message, duration });\r\n  }\r\n\r\n  /** Emit an info notification */\r\n  showInfo(message: string, duration = 3000): void {\r\n    this.notify({ type: 'info', message, duration });\r\n  }\r\n\r\n  /** Emit a warning notification */\r\n  showWarning(message: string, duration = 4000): void {\r\n    this.notify({ type: 'warning', message, duration });\r\n  }\r\n\r\n  /** Internal helper to push a notification into the stream */\r\n  private notify(notification: Notification): void {\r\n    this.notificationSubject.next(notification);\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { NotificationService } from '../core/services/notification.service';\r\n\r\n/**\r\n * Intercepts HTTP requests and handles errors centrally.\r\n */\r\n@Injectable()\r\nexport class HttpErrorInterceptor implements HttpInterceptor {\r\n    constructor(private notification: NotificationService) {}\r\n  \r\n    intercept(req: HttpRequest<any>, next: HttpHandler) {\r\n        // If it isn’t our library call, let it pass untouched:\r\n        if (!req.headers.has('NGX-JSON-UI-LIBRARY-REQUEST')) {\r\n        return next.handle(req);\r\n        }\r\n    \r\n        // Otherwise apply our error logic:\r\n        return next.handle(req).pipe(\r\n        catchError((err: HttpErrorResponse) => {\r\n            // Extract a user-friendly message\r\n            const msg = err.error?.message || err.statusText || 'Library error';\r\n            // Delegate to a centralized notification or logging service\r\n            this.notification.showError(msg);\r\n            console.error('Library HTTP Error:', err);\r\n            // Rethrow so callers can still handle if needed\r\n            return throwError(() => err);\r\n        })\r\n        );\r\n    }\r\n}","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { HttpErrorInterceptor } from '../interceptors/http-error.interceptor';\r\n/**\r\n * CoreModule for the JSON UI library.\r\n * Registers global providers like HTTP interceptor via forRoot().\r\n */\r\n@NgModule({})\r\nexport class CoreModule {\r\n  /**\r\n   * Call in your app’s root module to initialize HttpClient and interceptor.\r\n   */\r\n  static forRoot(): ModuleWithProviders<CoreModule> {\r\n    return {\r\n      ngModule: CoreModule,\r\n      providers: [\r\n        provideHttpClient(withInterceptorsFromDi()),\r\n        { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true }\r\n      ]\r\n    };\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { catchError, finalize } from 'rxjs/operators';\r\n\r\n/**\r\n * Global HTTP service that wraps Angular's HttpClient to manage a loading indicator.\r\n * It exposes a \"loading$\" observable that emits true when a request starts\r\n * and false when it completes (if showLoader is enabled), and delegates\r\n * actual requests to HttpClient.\r\n */\r\nexport interface HttpOptions {\r\n  /** Whether to show a global loading spinner during this request */\r\n  showLoader?: boolean;\r\n  /** Optional HTTP headers */\r\n  headers?: HttpHeaders;\r\n  /** Optional query parameters */\r\n  params?: HttpParams;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpService {\r\n  /**\r\n   * Internal subject tracking current loading state. When true, a loader is active.\r\n   */\r\n  private loadingSubject = new BehaviorSubject<boolean>(false);\r\n  /** Observable consumers can subscribe to show/hide a global spinner */\r\n  loading$ = this.loadingSubject.asObservable();\r\n\r\n  constructor(private http: HttpClient) {}\r\n\r\n  /**\r\n   * Core request wrapper.\r\n   * - If options.showLoader is true, emits loadingSubject.next(true) before the request\r\n   * - Delegates to HttpClient.request<T>\r\n   * - Uses finalize() to emit loadingSubject.next(false) when the request ends (success or error)\r\n   */\r\n  private request<T>(\r\n    method: string,\r\n    url: string,\r\n    body: any = null,\r\n    options?: HttpOptions\r\n    ): Observable<T> {\r\n    // 1) Start loader if needed\r\n    if (options?.showLoader) {\r\n      this.loadingSubject.next(true);\r\n    }\r\n  \r\n    // 2) Tag this request as “library‐owned”\r\n    const libIncludedHeaders = (options?.headers ?? new HttpHeaders())\r\n      .set('NGX-JSON-UI-LIBRARY-REQUEST', 'true');\r\n  \r\n    // 3) Delegate to HttpClient\r\n    return this.http.request<T>(method, url, {\r\n      body,\r\n      headers: libIncludedHeaders,\r\n      params: options?.params,\r\n    }).pipe(\r\n      finalize(() => {\r\n        if (options?.showLoader) this.loadingSubject.next(false);\r\n      }),\r\n      catchError(err => {\r\n        console.error('HTTP request error:', err);\r\n        return throwError(() => err);\r\n      })\r\n    );\r\n  }\r\n  \r\n  /**\r\n   * Shortcut for GET requests. Builds HttpParams from a plain object.\r\n   */\r\n  get<T>(\r\n    url: string,\r\n    params?: Record<string, any>,\r\n    options?: HttpOptions\r\n  ): Observable<T> {\r\n    const httpParams = new HttpParams({ fromObject: params || {} });\r\n    return this.request<T>('GET', url, null, { ...options, params: httpParams });\r\n  }\r\n\r\n  /** Convenience methods for other HTTP verbs **/\r\n  post<T>(url: string, body: any, options?: HttpOptions): Observable<T> {\r\n    return this.request<T>('POST', url, body, options);\r\n  }\r\n\r\n  put<T>(url: string, body: any, options?: HttpOptions): Observable<T> {\r\n    return this.request<T>('PUT', url, body, options);\r\n  }\r\n\r\n  patch<T>(url: string, body: any, options?: HttpOptions): Observable<T> {\r\n    return this.request<T>('PATCH', url, body, options);\r\n  }\r\n\r\n  delete<T>(\r\n    url: string,\r\n    params?: Record<string, any>,\r\n    options?: HttpOptions\r\n  ): Observable<T> {\r\n    const httpParams = new HttpParams({ fromObject: params || {} });\r\n    return this.request<T>('DELETE', url, null, { ...options, params: httpParams });\r\n  }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RegionService } from \"./region.service\";\r\nimport { ComponentFactoryService } from \"./component-factory.service\";\r\nimport { ComponentModel } from \"../models/component.model\";\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class ScreenLoaderService {\r\n  constructor(\r\n    private regions: RegionService,\r\n    private factory: ComponentFactoryService\r\n  ) {}\r\n\r\n  /**  \r\n   * Replace exactly ONE container’s contents  \r\n   * (or fallback to a “default” CID if none is given).  \r\n   */\r\n  load(\r\n    componentJson: ComponentModel,\r\n    containerCid: string = 'root'   // or whatever you choose as your top-level CID\r\n  ) {\r\n    const vcr = this.regions.get(containerCid);\r\n    if (!vcr) {\r\n      console.warn(`No container registered with cid=\"${containerCid}\"`);\r\n      return;\r\n    }\r\n    vcr.clear();\r\n    this.factory.loadComponents(componentJson, vcr);\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionConfig } from '../models/action-config.model';\r\nimport { HttpService } from '../../../core/services/http.service';\r\nimport { ScreenLoaderService } from '../../../core/services/screen-loader.service';\r\nimport { Observable, map } from 'rxjs';\r\nimport { ComponentModel } from '../../../core/models/component.model';\r\n\r\n@Injectable()\r\nexport class ApiCallHandler implements ActionHandler {\r\n  constructor(\r\n    private http: HttpService,\r\n    private screenLoader: ScreenLoaderService\r\n  ) {}\r\n\r\n  canHandle(type: ActionConfig['actionType']): boolean {\r\n    return type === 'apiCall';\r\n  }\r\n\r\n  handle(config: ActionConfig): Observable<void> {\r\n    const { apiConfig, loaderStatus } = config as Extract<ActionConfig, { actionType: 'apiCall' }>;\r\n    const { url, method = 'GET', body, containerId } = apiConfig;\r\n    const opts = { showLoader: loaderStatus?.showLoader ?? false };\r\n    let request$ =\r\n      method === 'GET'\r\n        ? this.http.get<ComponentModel>(url, undefined, opts)\r\n        : method === 'POST'\r\n        ? this.http.post<ComponentModel>(url, JSON.parse(atob(body ?? '')), opts)\r\n        : method === 'DELETE'\r\n        ? this.http.delete<ComponentModel>(url, JSON.parse(atob(body ?? '')), opts)\r\n        : this.http.get<ComponentModel>(url, undefined, opts);\r\n\r\n    return request$.pipe(\r\n      map(response => {\r\n        this.screenLoader.load(response, containerId);\r\n      })\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionConfig } from '../models/action-config.model';\r\nimport { ScreenLoaderService } from '../../../core/services/screen-loader.service';\r\n\r\n@Injectable()\r\nexport class LoadScreenHandler implements ActionHandler {\r\n  constructor(private screenLoader: ScreenLoaderService) {}\r\n\r\n  canHandle(type: ActionConfig['actionType']): boolean {\r\n    return type === 'loadScreen';\r\n  }\r\n\r\n  handle(config: ActionConfig): void {\r\n    const { componentJson, containerId } =\r\n      (config as Extract<ActionConfig, { actionType: 'loadScreen' }>).loadScreenConfig;\r\n    this.screenLoader.load(componentJson, containerId);\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionConfig } from '../models/action-config.model';\r\nimport { Router } from '@angular/router';\r\nimport { of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavigationHandler implements ActionHandler {\r\n  constructor(private router: Router) {}\r\n\r\n  canHandle(type: ActionConfig['actionType']): boolean {\r\n    return type === 'navigate';\r\n  }\r\n\r\n  handle(config: ActionConfig) {\r\n    const { path, data } = (config as Extract<ActionConfig, { actionType: 'navigate' }>).route;\r\n    this.router.navigate([path], { queryParams: data });\r\n    return of(void 0);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionConfig } from '../models/action-config.model';\r\nimport { Router } from '@angular/router';\r\nimport { of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class EncodedNavigationHandler implements ActionHandler {\r\n  constructor(private router: Router) {}\r\n\r\n  canHandle(type: ActionConfig['actionType']): boolean {\r\n    return type === 'encodedNavigate';\r\n  }\r\n\r\n  handle(config: ActionConfig) {\r\n    const { path, data } = (config as Extract<ActionConfig, { actionType: 'encodedNavigate' }>).route;\r\n    const encoded = btoa(JSON.stringify(data));\r\n    this.router.navigate([path], { queryParams: { param: encoded } });\r\n    return of(void 0);\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ActionHandler } from '../interfaces/action-handler.interface';\r\nimport { ActionConfig } from '../models/action-config.model';\r\n\r\n@Injectable()\r\nexport class RedirectionHandler implements ActionHandler {\r\n  canHandle(type: ActionConfig['actionType']): boolean {\r\n    return type === 'redirect';\r\n  }\r\n\r\n  handle(config: ActionConfig): void {\r\n    const url = (config as Extract<ActionConfig, { actionType: 'redirect' }>).redirectionUrl;\r\n    window.location.href = url;\r\n  }\r\n}","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { ACTION_HANDLERS } from './tokens/action-handler.token';\r\nimport { ApiCallHandler } from './handlers/api-call.handler';\r\nimport { LoadScreenHandler } from './handlers/load-screen.handler';\r\nimport { NavigationHandler } from './handlers/navigation.handler';\r\nimport { EncodedNavigationHandler } from './handlers/encoded-navigation.handler';\r\nimport { RedirectionHandler } from './handlers/redirection.handler';\r\n\r\n/**\r\n * CoreModule for the JSON UI library.\r\n * Registers global providers like HTTP interceptor via forRoot().\r\n */\r\n@NgModule({})\r\nexport class ActionFeatureModule {\r\n  /**\r\n   * Call in your app’s root module to initialize HttpClient and interceptor.\r\n   */\r\n  static forRoot(): ModuleWithProviders<ActionFeatureModule> {\r\n    return {\r\n      ngModule: ActionFeatureModule,\r\n      providers: [\r\n        provideHttpClient(withInterceptorsFromDi()),\r\n        { provide: ACTION_HANDLERS, useClass: ApiCallHandler,         multi: true },\r\n        { provide: ACTION_HANDLERS, useClass: LoadScreenHandler,      multi: true },\r\n        { provide: ACTION_HANDLERS, useClass: NavigationHandler,      multi: true },\r\n        { provide: ACTION_HANDLERS, useClass: EncodedNavigationHandler,multi: true },\r\n        { provide: ACTION_HANDLERS, useClass: RedirectionHandler,     multi: true }\r\n      ]\r\n    };\r\n  }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\nimport { ClassListPipe } from './class-list.pipe';\r\nimport { StyleMapPipe } from './style-map.pipe';\r\n// import other pipes here...\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SafeHtmlPipe,\r\n    ClassListPipe,\r\n    StyleMapPipe\r\n  ],\r\n  imports: [CommonModule],\r\n  exports: [\r\n    SafeHtmlPipe,\r\n    ClassListPipe,\r\n    StyleMapPipe\r\n  ]\r\n})\r\nexport class SharedPipesModule {}","import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[appHasTooltip]',\r\n    standalone:false\r\n})\r\n\r\nexport class HasTooltipDirective implements OnInit {\r\n    @Input() tooltip: { position: string, text: string } | undefined; // Input property to receive tooltip data from the parent component\r\n\r\n    // Constructor for the directive, injecting ElementRef to get direct access to the host DOM element\r\n    constructor(private el: ElementRef) { }\r\n\r\n    // Lifecycle method in angular called when the component is initialized\r\n    ngOnInit() {\r\n        this.setupTooltip(); // Call setupTooltip method to initialize the tooltip\r\n    }\r\n\r\n    // Method to setup the tooltip attributes on the host element\r\n    private setupTooltip() {\r\n        // Check if tooltip is defined, and the text property is not empty, null, or undefined\r\n        if (this.tooltip && this.tooltip.text && this.tooltip.text.trim().length > 0) {\r\n            this.el.nativeElement.setAttribute('data-bs-toggle', 'tooltip');\r\n            this.el.nativeElement.setAttribute('data-bs-placement', this.tooltip.position);\r\n            this.el.nativeElement.setAttribute('title', this.tooltip.text);\r\n        } else {\r\n            // If the condition is not met, remove the tooltip attributes to prevent an empty tooltip from being shown\r\n            this.el.nativeElement.removeAttribute('data-bs-toggle');\r\n            this.el.nativeElement.removeAttribute('data-bs-placement');\r\n            this.el.nativeElement.removeAttribute('title');\r\n        }\r\n    }\r\n}\r\n","  import { NgModule } from '@angular/core';\r\nimport { HasTooltipDirective } from './has-tooltip.directive';\r\nimport { RegexMaskDirective } from './regex-mask.directive';\r\nimport { InputMaskDirective } from './input-mask.directive';\r\nimport { CaseInsensitiveAllowedValuesDirective } from './case-insensitive-allowed-values.directive';\r\nimport { ConstrainedNumberDirective } from './constrained-number.directive';\r\n// import other pipes here...\r\n\r\n@NgModule({\r\n  declarations: [\r\n    HasTooltipDirective,\r\n    RegexMaskDirective,\r\n    InputMaskDirective,\r\n    CaseInsensitiveAllowedValuesDirective,\r\n    ConstrainedNumberDirective\r\n  ],\r\n  exports: [\r\n    HasTooltipDirective,\r\n    RegexMaskDirective,\r\n    InputMaskDirective,\r\n    CaseInsensitiveAllowedValuesDirective,\r\n    ConstrainedNumberDirective\r\n  ]\r\n})\r\nexport class SharedDirectivesModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedPipesModule } from '../../shared/pipes/shared-pipes.module';\r\nimport { SharedDirectivesModule } from '../../shared/directives/shared-directives.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ButtonComponent } from './button/button.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ButtonComponent\r\n  ],\r\n  imports:[\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormsModule,\r\n    SharedPipesModule,\r\n    SharedDirectivesModule\r\n  ],\r\n  exports: [\r\n    ButtonComponent\r\n  ]\r\n})\r\nexport class ActionComponentsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LabelComponent } from './label/label.component';\r\nimport { HeadlineComponent } from './headline/headline.component';\r\nimport { ParagraphComponent } from './paragraph/paragraph.component';\r\nimport { DividerComponent } from './divider/divider.component';\r\nimport { SharedPipesModule } from '../../shared/pipes/shared-pipes.module';\r\nimport { SpanComponent } from './span/span.component';\r\nimport { IconComponent } from './icon/icon.component';\r\nimport { ImageComponent } from './image/image.component';\r\nimport { SharedDirectivesModule } from '../../shared/directives/shared-directives.module';\r\nimport { ContainerComponent } from './container/container.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ContainerComponent,\r\n    DividerComponent,\r\n    HeadlineComponent,\r\n    IconComponent,\r\n    ImageComponent,\r\n    LabelComponent,\r\n    ParagraphComponent,\r\n    SpanComponent   \r\n  ],\r\n  imports:[\r\n    CommonModule,\r\n    SharedPipesModule,\r\n    SharedDirectivesModule\r\n  ],\r\n  exports: [\r\n    ContainerComponent,\r\n    DividerComponent,\r\n    HeadlineComponent,\r\n    IconComponent,\r\n    ImageComponent,\r\n    LabelComponent,\r\n    ParagraphComponent,\r\n    SpanComponent\r\n  ]\r\n})\r\nexport class DisplayModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedPipesModule } from '../../shared/pipes/shared-pipes.module';\r\nimport { SharedDirectivesModule } from '../../shared/directives/shared-directives.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormComponent } from './form/form.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    FormComponent\r\n  ],\r\n  imports:[\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormsModule,\r\n    SharedPipesModule,\r\n    SharedDirectivesModule\r\n  ],\r\n  exports: [\r\n    FormComponent\r\n  ]\r\n})\r\nexport class StructuralModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedPipesModule } from '../../shared/pipes/shared-pipes.module';\r\nimport { SharedDirectivesModule } from '../../shared/directives/shared-directives.module';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CheckboxComponent } from './arrays/checkbox/checkbox.component';\r\nimport { HiddenComponent } from './basic/hidden/hidden.component';\r\nimport { NumberComponent } from './basic/number/number.component';\r\nimport { TextareaComponent } from './basic/textarea/textarea.component';\r\nimport { RadioComponent } from './basic/radio/radio.component';\r\nimport { TextComponent } from './basic/text/text.component';\r\nimport { ToggleComponent } from './basic/toggle/toggle.component';\r\nimport { SwitchComponent } from './basic/switch/switch.component';\r\nimport { ObjArrayComponent } from './arrays/obj-array/obj-array.component';\r\nimport { SelectArrayComponent } from './arrays/select-array/select-array.component';\r\nimport { SelectComponent } from './basic/select/select.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CheckboxComponent,\r\n    HiddenComponent,\r\n    NumberComponent,\r\n    TextareaComponent,\r\n    RadioComponent,\r\n    TextComponent,\r\n    ToggleComponent,\r\n    SwitchComponent,\r\n    ObjArrayComponent,\r\n    SelectArrayComponent,\r\n    SelectComponent\r\n  ],\r\n  imports:[\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormsModule,\r\n    SharedPipesModule,\r\n    SharedDirectivesModule\r\n  ],\r\n  exports: [\r\n    CheckboxComponent,\r\n    HiddenComponent,\r\n    NumberComponent,\r\n    TextareaComponent,\r\n    RadioComponent,\r\n    TextComponent,\r\n    ToggleComponent,\r\n    SwitchComponent,\r\n    ObjArrayComponent,\r\n    SelectArrayComponent,\r\n    SelectComponent\r\n  ]\r\n})\r\nexport class FormControlModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SharedPipesModule } from '../../shared/pipes/shared-pipes.module';\r\nimport { SharedDirectivesModule } from '../../shared/directives/shared-directives.module';\r\nimport { ToastComponent } from './toast/toast.component';\r\nimport { ModalComponent } from './modal/modal.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ToastComponent,\r\n    ModalComponent\r\n  ],\r\n  imports:[\r\n    CommonModule,\r\n    SharedPipesModule,\r\n    SharedDirectivesModule\r\n  ],\r\n  exports: [\r\n    ToastComponent,\r\n    ModalComponent\r\n  ]\r\n})\r\nexport class DialogueModule { }\r\n","// File: src/lib/form-builder.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\n// Import your ModalComponent\r\nimport { ModalComponent } from './components/overlay/modal/modal.component';\r\n\r\n// Import overlay service if you plan to provide it from this module\r\nimport { NgxOverlayService } from './core/services/ngx-overlay.service';\r\nimport { CoreModule } from './core/core.module';\r\nimport { ActionFeatureModule } from './features/actions/action-feature.module';\r\nimport { ActionComponentsModule } from './components/actions/action-components.module';\r\nimport { DisplayModule } from './components/display/display.module';\r\nimport { StructuralModule } from './components/structural/structural.module';\r\nimport { FormControlModule } from './components/form-control/form-control.module';\r\nimport { DialogueModule } from './components/overlay/overlay.module';\r\n\r\n@NgModule({\r\n    imports: [\r\n      CommonModule,\r\n      CoreModule.forRoot(),\r\n      ActionFeatureModule.forRoot(),\r\n      OverlayModule,\r\n      ActionComponentsModule,\r\n      DisplayModule,\r\n      StructuralModule,\r\n      FormControlModule,\r\n      DialogueModule\r\n    ],\r\n    exports: [\r\n    ],\r\n    providers: [\r\n      NgxOverlayService\r\n    ]\r\n  })\r\n  export class FormBuilderModule {}","/*\r\n * Public API Surface of ngx-json-ui\r\n */\r\n\r\n// public-api.ts\r\nexport * from './lib/form-builder.module';\r\nexport * from './lib/core/services/ngx-overlay.service';\r\nexport * from './lib/core/services/component-factory.service';\r\nexport * from './lib/core/models/component.model'\r\n\r\n\r\n/* Exporting the component mapping service and related models\r\n    * This allows users to customize the component mappings used in the library.\r\n    * The ComponentMappingService is responsible for managing these mappings.\r\n    * The ComponentMappingModel defines the structure of a mapping, including the schema, alias, and component.\r\n    * The ComponentMappingConfig interface allows users to configure whether to use default mappings or not.\r\n    * The COMPONENT_MAPPING_CONFIG and COMPONENT_MAPPINGS tokens are used for dependency injection,\r\n        providers: [\r\n            // Disable default mappings.\r\n            {\r\n            provide: COMPONENT_MAPPING_CONFIG,\r\n            useValue: { useDefaultMappings: false }\r\n            },\r\n            // Provide custom mapping for the \"label\" component.\r\n            {\r\n            provide: COMPONENT_MAPPINGS,\r\n            useValue: <ComponentMappingModel>{\r\n                schema: 'atom',\r\n                alias: 'label',\r\n                component: LabelComponent\r\n            },\r\n            multi: true\r\n            },\r\n            // Provide custom mapping for the \"field\" component.\r\n            {\r\n            provide: COMPONENT_MAPPINGS,\r\n            useValue: <ComponentMappingModel>{\r\n                schema: 'atom',\r\n                alias: 'field',\r\n                component: FieldComponent\r\n            },\r\n            multi: true\r\n            }\r\n        ],\r\n\r\n    */\r\n\r\nexport * from './lib/features/components-mapping/services/component-mapping.service';\r\nexport * from './lib/features/components-mapping/models/component-mapping.model';\r\nexport * from './lib/features/components-mapping/models/component-mapping-config';\r\nexport * from './lib/features/components-mapping/tokens/component-mapping-config.token';\r\nexport * from './lib/features/components-mapping/tokens/component-mappings.token';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.FormSubmitBroadcastService","i3","i4","i5.ClassListPipe","i6.StyleMapPipe","i1","i2.ClassListPipe","i3.StyleMapPipe","i2.SafeHtmlPipe","i3.ClassListPipe","i4.StyleMapPipe","i1.RegionService","i2","i3.FormSubmitBroadcastService","i3.DataPopulationRuleService","i4.FormSubmitBroadcastService","i5","i6.SafeHtmlPipe","i7.ClassListPipe","i8.StyleMapPipe","takeUntil","i3.ConstrainedNumberDirective","i4.ClassListPipe","i5.StyleMapPipe","i2.DataPopulationRuleService","i6.ClassListPipe","i7.StyleMapPipe","i3.RegexMaskDirective","i4.InputMaskDirective","i5.CaseInsensitiveAllowedValuesDirective","i2.ActionFactoryService","createValidatorSchemaUtil","i4.ComponentFactoryService","i5.JoiValidatorFactoryService","i6","i1.ComponentMappingService","i2.NgxOverlayService","i4.JoiValidatorFactoryService","i1.ComponentFactoryService","i1.NotificationService","i2.ComponentFactoryService","i1.HttpService","i2.ScreenLoaderService","i1.ScreenLoaderService","i1.CoreModule","i2.ActionFeatureModule"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AACiB,SAAA,4BAA4B,CAAC,gBAAwB,EAAE,SAAc,EAAA;;AAElF,IAAA,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACnE,QAAA,OAAO,gBAAgB;;AAGzB,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAE9B;;MCJsB,aAAa,CAAA;AAC/B,IAAA,WAAA,CAAsB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;QAST,IAAW,CAAA,WAAA,GAAG,EAAE;;QAEhB,IAAU,CAAA,UAAA,GAAG,EAAE;;QAErC,IAAO,CAAA,OAAA,GAAS,EAAE;;QAElB,IAAM,CAAA,MAAA,GAAmC,IAAI;;AAC7C;;;;;;;;;;;AAWG;AACO,IAAA,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,EAAK,EAAA;;;AAGjD,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,SAAS,KAAK;AACxC,cAAE;cACA,4BAA4B,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;;;AAGvD,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,EAAE;QAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE;;AAEjD,IAAA,4BAA4B,CAAC,MAAS,EAAA;;;QAG5C,IAAI,CAAC,WAAW,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK;cACzC,MAAM,CAAC;cACP,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;;;AAG1D,QAAA,IAAI,CAAC,UAAU,GAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;;AAE7D;;;;;;AAMG;AACK,IAAA,eAAe,CAAC,MAAqC,EAAA;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM;AAC7C,QAAA,OAAO;AACP,cAAE,MAAM,CAAC,OAAO,CAAC,MAAM;AAClB,iBAAA,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAG,EAAA,CAAC,CAAI,CAAA,EAAA,CAAC,EAAE;iBAC1B,IAAI,CAAC,GAAG;cACX,EAAE;;8GA/DU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;iFASY,MAAM,EAAA,CAAA;sBAAd;gBAEqB,WAAW,EAAA,CAAA;sBAAhC,WAAW;uBAAC,OAAO;gBAEE,UAAU,EAAA,CAAA;sBAA/B,WAAW;uBAAC,OAAO;;;MCXX,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4GAFtB,CAAwD,sDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAEvD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAwD,sDAAA;AACnE,iBAAA;8BAEQ,MAAM,EAAA,CAAA;sBAAd;;;MCHY,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;;;AAIS,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAMxD;;IAHC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;8GAPjB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCKrB,aAAa,CAAA;AACxB;;;;AAIG;IACH,SAAS,CACP,OAA6C,EAC7C,UAAkB,EAAA;AAClB,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,OAAO,OAAO;;QAEhB,OAAO,4BAA4B,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;;8GAZrD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MCAY,YAAY,CAAA;AACvB;;;;;AAKG;AACH,IAAA,SAAS,CAAC,MAA8C,EAAA;AACtD,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,MAAM;;QAEf,OAAO,MAAM,IAAI,EAAE;;8GAXV,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;ACND;AA8BM,MAAO,aAAc,SAAQ,aAAiC,CAAA;IAYlE,WAA+B,CAAA,SAAuB,EAClC,sBAAkD,EAAA;QACxD,KAAK,CAAC,SAAS,CAAC;QAFC,IAAS,CAAA,SAAA,GAAT,SAAS;QACpB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;AAZvB,QAAA,IAAA,CAAA,EAAE,GAAG,EAAE,CAAC;AACY,QAAA,IAAA,CAAA,GAAG,GAAG,EAAE,CAAC;;AAQxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;;;;;AAUvC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAClC;;;;;;;;;;;;;;;;;;;AAmBE;;;;IAMN,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE5D,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC;;AAEF;;;;;;;;;;AAUI;;AAEN;;;AAGG;AACK,IAAA,uBAAuB,CAC7B,OAA8B,EAC9B,SAAA,GAAoB,EAAE,EAAA;;AAGtB,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,SAAA,EAAY,SAAS,IAAI,QAAQ,CAAA,SAAA,CAAW,EAC5C,OAAO,CAAC,MAAM,CACf;;;AAIH,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE;AAChC,YAAA,MAAM,OAAO,GAAG,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,GAAG,IAAI;YAEzD,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,YAAY,SAAS,EAAE;;AAE5D,gBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;;AACvC,iBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;;AAEvB,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAI;oBAC9D,OAAO,CAAC,KAAK,CACX,CAAY,SAAA,EAAA,OAAO,CAAe,YAAA,EAAA,QAAQ,CAAe,aAAA,CAAA,EACzD,UAAU,CACX;AACH,iBAAC,CAAC;;AAEN,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;8GAhHf,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOoB,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC9D,gPAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDwBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEZ,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gPAAA,EAAA;uHAG5B,EAAE,EAAA,CAAA;sBAApB,WAAW;uBAAC,IAAI;gBACsB,GAAG,EAAA,CAAA;sBAAzC,WAAW;uBAAC,wBAAwB;gBAC5B,IAAI,EAAA,CAAA;sBAAZ;gBAI6E,gBAAgB,EAAA,CAAA;sBAA7F,SAAS;uBAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;SElC9D,gBAAgB,CAAC,WAAmB,EAAE,UAAe,EAAE,uBAAmD,EAAA;IACtH,OAAO,CAAC,OAAwB,KAA6B;QAC3D,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE;AACjD,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,EAAE,EAAE,QAAQ,CAAC;QACjG,IAAI,KAAK,EAAE;YACT,MAAM,MAAM,GAAqB,EAAE;AACnC,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,gBAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO;AAC3D,aAAC,CAAC;AACF,YAAA,OAAO,MAAM;;AAEf,QAAA,OAAO,IAAI;AACb,KAAC;AACH;;ACdI,MAAO,mBAAoB,SAAQ,WAAW,CAAA;AAElD,IAAA,WAAA,CAAY,SAAc,EAAE,eAAqB,EAAE,cAAoB,EAAA;AACrE,QAAA,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC;;AAEpD;;ACLD;AACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,OAAO,CAAC,OAAwB,KAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG;AACrD,UAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;UAC3D,IAAI;AACZ;AAEA;AACM,SAAU,QAAQ,CAAC,GAAW,EAAA;IAClC,OAAO,CAAC,OAAwB,KAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG;AACrD,UAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;UAC3D,IAAI;AACZ;AAEA;SACgB,WAAW,GAAA;IACzB,OAAO,CAAC,OAAwB,KAA6B;AAC3D,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAO;AAC3B,QAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACf,gBAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE;;AAE9B,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAEb,QAAA,OAAO,IAAI;AACb,KAAC;AACH;;AC3BA;AACA;AACA;AACgB,SAAA,qBAAqB,CACjC,MAAW,EACX,MAAiB,EACjB,EAAe,EACf,uBAAmD,EACnD,aAAA,GAAqB,EAAE,EAAA;AAEvB,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACtB,QAAA,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;AAC/B,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;AAEvE,YAAA,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/B,gBAAA,MAAM,cAAc,GAAG,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,GAAG,YAAY,GAAG,EAAE;AAC3F,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;;AAC9F,iBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,OAAO,EAAE;AACrC,gBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,EAAE;AACrE,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;;iBAC7F;AACH,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,WAAW,EAAE,EAAE,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC;;;;AAIjH;AAEA;AACA;AACA;AACA,SAAS,eAAe,CACpB,MAAW,EACX,EAAe,EACf,uBAAmD,EACnD,aAAA,GAAqB,EAAE,EAAA;IAEvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAE1B,IAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACf,QAAA,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,uBAAuB,EAAE,aAAa,CAAC;;AAG3F,IAAA,OAAO,KAAK;AAChB;AACA,SAAS,eAAe,CACpB,MAAW,EACX,EAAe,EACf,uBAAmD,EACnD,aAAA,GAAuB,EAAE,EAAA;;AAGzB,IAAA,MAAM,MAAM,GAAG,MAAM,EAAE,KAAK;IAC5B,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC;QAChF,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;;;AAIzB,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK;IAC/B,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC;QAClF,MAAM,kBAAkB,GAAkB,EAAE;AAC5C,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;YAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;YAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,WAAW;AAAO,YAAA,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC;;;AAIzC,IAAA,IAAI,QAAe;IACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACjC,OAAO,CAAC,IAAI,CACV,CAAA,oCAAA,EAAuC,MAAM,EAAE,IAAI,CAAgC,8BAAA,CAAA,CACpF;QACD,QAAQ,GAAG,EAAE;;SACR;QACL,QAAQ,GAAG,aAAa;;;IAI1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,IACjC,cAAc,CAAC,UAAU,EAAE,EAAE,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAC/D;;IAGD,MAAM,eAAe,GAAkB,EAAE;AACzC,IAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;QAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5E,IAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;QAAE,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,WAAW;AAAO,QAAA,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;IAGhE,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC5C;AACF,SAAS,cAAc,CACnB,MAAW,EACX,EAAe,EACf,uBAAmD,EACnD,YAAA,GAAoB,EAAE,EAAA;AAEtB,IAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC1B,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,uBAAuB,EAAE,YAAY,CAAC;;AACtE,SAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;QAChC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE;QACvF,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,uBAAuB,EAAE,aAAa,CAAC;;SACvE;QACH,OAAO,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,uBAAuB,EAAE,YAAY,CAAC;;AAEnF;AACA,SAAS,iBAAiB,CACtB,MAAW,EACX,EAAe,EACf,uBAAmD,EACnD,YAAA,GAAoB,IAAI,EAAA;IAExB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,uBAAuB,CAAC;;IAGjE,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,YAAY,IAAI,EAAE,EAAE,UAAU,CAAC;AACvE,IAAA,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAE7C,IAAA,OAAO,OAAO;AAClB;AACA;AACA;AACA;AACA,SAAS,aAAa,CAClB,MAAW,EACX,uBAAmD,EAAA;IACnD,MAAM,UAAU,GAAG,EAAE;IACrB,IAAI,MAAM,EAAE;AACR,QAAA,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;;AAE1E,IAAA,OAAO,UAAU;AACrB;AACA,SAAS,kBAAkB,CAAC,MAAW,EAAA;IACnC,MAAM,WAAW,GAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;AAE9C,IAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACf,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;YAAE,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;AAC3E,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;AACxE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;AACxE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;AACjF,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;AAC7D,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU;AAAE,YAAA,WAAW,CAAC,WAAW,GAAG,qBAAqB;AAC7E,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;AAAE,YAAA,WAAW,CAAC,WAAW,GAAG,iBAAiB;AACvE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,iBAAiB,GAAG,yCAAyC;AACzJ,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK;AAAE,YAAA,WAAW,CAAC,WAAW,GAAG,wBAAwB;AAC3E,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;AAAE,YAAA,WAAW,CAAC,WAAW,GAAG,OAAO;AAC7D,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW;YAAE,WAAW,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW;;AAGxF,IAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACf,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI;YAAE,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;AAC7D,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;AACzE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;AACvF,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ;AACzE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS;AAC1F,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;AAC3E,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS;YAAE,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;AACpF,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;AACxE,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;;AAE5E,IAAA,IAAI,MAAM,CAAC,OAAO,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;YAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;AACtE,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK;YAAI,WAAW,CAAC,KAAK,GAAI,MAAM,CAAC,OAAO,CAAC,KAAK;AACrE,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS;AAAE,YAAA,WAAW,CAAC,SAAS,GAAM,IAAI;;AAEjE,IAAA,OAAO,WAAW;AACtB;;MC5Ka,wBAAwB,GAAG,IAAI,cAAc,CACxD,0BAA0B,EAC1B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAA;;MCLU,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB;;ACKhB,MAAO,gBAAiB,SAAQ,aAAa,CAAA;;;;AAIjD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAP1B,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,oHCT7B,oHAEyC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDO5B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACX,UAAA,EAAA,KAAK,EAEA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oHAAA,EAAA;;;MECpC,YAAY,CAAA;AACvB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;AAE7B,IAAA,SAAS,CAAC,IAA+B,EAAA;;QAEvC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE,CAAC;;8GALhD,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;ACCK,MAAO,iBAAkB,SAAQ,aAAa,CAAA;;;;AAIlD,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qHCR9B,08CAQe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDAF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACZ,UAAA,EAAA,KAAK,EAEA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,08CAAA,EAAA;;;AEG3C,MAAO,cAAe,SAAQ,aAAa,CAAA;;;;AAI/C,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kHCT3B,oRAMQ,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDGK,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA,KAAK,EAEA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,oRAAA,EAAA;;;AEC3C,MAAO,kBAAoB,SAAQ,aAAa,CAAA;;;;AAIpD,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sHCR/B,kNAIiD,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDIpC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACb,UAAA,EAAA,KAAK,EAEA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kNAAA,EAAA;;;AEG3C,MAAO,aAAc,SAAQ,aAAa,CAAA;;;;AAI9C,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,iHCT1B,sNAKO,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDIM,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAER,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sNAAA,EAAA;;;AEC3C,MAAO,aAAc,SAAQ,aAAa,CAAA;;;;AAI9C,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,iHCR1B,wFAAkF,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDQrE,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAER,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wFAAA,EAAA;;;AEG3C,MAAO,cAAe,SAAQ,aAAa,CAAA;;;;AAI/C,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;8GAV1B,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kHCT3B,kWAO4B,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDEf,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAET,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kWAAA,EAAA;;;AELjD;MAEa,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAA4B;AAUtD;IATC,QAAQ,CAAC,GAAW,EAAE,GAAqB,EAAA;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;;AAE5B,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE1B,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;;8GATnB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADF,MAAM,EAAA,CAAA,CAAA;;2FACjB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAC,UAAU,EAAC,MAAM,EAAC;;;ACOzB,MAAO,kBAAmB,SAAQ,aAAa,CAAA;;;IAGnD,WACU,CAAA,OAAsB,EACX,SAAuB,EAAA;QAE1C,KAAK,CAAC,SAAS,CAAC;QAHR,IAAO,CAAA,OAAA,GAAP,OAAO;QACI,IAAS,CAAA,SAAA,GAAT,SAAS;;AAKX,QAAA,IAAA,CAAA,EAAE,GAAG,EAAE,CAAC;AACY,QAAA,IAAA,CAAA,GAAG,GAAG,EAAE,CAAC;;;;;AAQhD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,GAAG,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAElC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;;;IAIrD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;;8GAhCrC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAee,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBlD,CAAoD,kDAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAInD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAoD,kDAAA,CAAA;oBAC9D,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAC,KAAK;AACjB,iBAAA;0GAWoB,EAAE,EAAA,CAAA;sBAApB,WAAW;uBAAC,IAAI;gBACsB,GAAG,EAAA,CAAA;sBAAzC,WAAW;uBAAC,wBAAwB;gBAIyC,gBAAgB,EAAA,CAAA;sBAA7F,SAAS;uBAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;;;ACPxE,MAAgB,sBAEpB,SAAQ,aAAgB,CAAA;AAaxB,IAAA,WAAA,CACE,SAAuB,EACb,EAAe,EACf,sBAAkD,EAClD,GAAsB,EAAA;QAEhC,KAAK,CAAC,SAAS,CAAC;QAJN,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;;AAfP,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;QASd,IAAM,CAAA,MAAA,GAAG,EAAE;;QAWjC,IAAI,CAAC,sBAAsB,CAAC;AACzB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,MAAK;;AAEd,YAAA,IAAG,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;gBAC9B,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAE3B,SAAC,CAAC;;;AAIN,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAK;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,QAAQ,YAAY,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;;iBACpB;AACL,gBAAA,IAAI,QAAQ;AAAE,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;;;;;IAMhD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;;AAI1B,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;;;AAI9B,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;QACrE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,cAAc,CAAC;;8GAnE/B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C;iLAWU,IAAI,EAAA,CAAA;sBAAZ;gBAGuB,MAAM,EAAA,CAAA;sBAA7B,WAAW;uBAAC,SAAS;;;AC5BxB;AACM,SAAU,mBAAmB,CACjC,aAAkB,EAClB,SAAoB,EACpB,gBAAqB,EACrB,SAAY,EAAA;IAGZ,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9C,IAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,QAAA,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9B,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;AACtF,QAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AACpB,YAAA,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;;;SAE1B;QACL,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAChE,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,WAAW,EAAE;AACtC,YAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC;AAC1C,YAAA,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;;aAClB;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,WAAW,CAAA,OAAA,CAAS,CAAC;;;AAGrE;;MC1Ba,gBAAgB,CAAA;AAM3B;;AAEG;AACH,IAAA,WAAA,CAAoB,MAAyD,EAAA;QAAzD,IAAM,CAAA,MAAA,GAAN,MAAM;QAR1B,IAAK,CAAA,KAAA,GAAQ,EAAE;QACf,IAAW,CAAA,WAAA,GAAG,CAAC;QACf,IAAS,CAAA,SAAA,GAAG,EAAE;;;AASd,IAAA,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,SAAS,GAAK,MAAM;AACzB,QAAA,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACpD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACnB,SAAC,CAAC;;;IAIJ,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;;;IAIjD,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;;;;IAKnD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;;;IAIzB,UAAU,CAAC,EAAU,EAAE,CAAI,EAAA;;AAEzB,QAAA,OAAQ,CAAS,CAAC,KAAK,IAAI,EAAE;;;AAI/B,IAAA,KAAK,CAAC,MAAc,EAAE,CAAI,EAAE,CAAS,EAAA;QACnC,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAK,CAAS,CAAC,KAAK,IAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;;AAEnD;;ACvCC;AACI,SAAU,aAAa,CAAC,MAAW,EAAA;;;;AAIrC,IAAA,OAAO,MAAM;SACL,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;AACvD,SAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/D,SAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC;AAC3G,SAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC;SAC1E,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnF,SAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;AACxF;;ACtBF;AAEA;;;AAGG;AACI,MAAM,wBAAwB,GAAG,CAAC,IAAS,KAAiB;AAC/D,IAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU;IAEnC,SAAS,gBAAgB,CAAC,GAAQ,EAAA;AAChC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,oBAAA,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,iBAAC,CAAC;;;AAEC,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;;aACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAClD,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;;;AAIjD,IAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,IAAA,OAAO,SAAS;AAClB,CAAC;;ACjBH;;;AAGG;MACU,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;;AAExB,IAAA,UAAU,CACR,MAAc,EACd,IAAe,GAAA,CAAC,EAChB,SAAkB,EAAA;AAElB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC;AAChD,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;AAGf,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;;QAGjC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE;AACnD,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAE7B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE;YACtC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ;AAElC,YAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,gBAAA,MAAM,GAAG;AACN,qBAAA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;qBAC3B,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;;YAGtC,IAAI,MAAM,CAAC,sBAAsB,IAAI,MAAM,CAAC,eAAe,IAAI,SAAS,EAAE;gBACxE,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC/D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAEvE,gBAAA,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,KAC3D,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAK,EAAA,EAAA,WAAW,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAC/D,YAAY,CACb;gBAED,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC;;AAGjD,gBAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;;AAG5D,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;;AAGxE,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC;;8GA/CJ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cANxB,MAAM,EAAA,CAAA,CAAA;;2FAMP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC6BK,MAAO,iBAGX,SAAQ,sBAAsB,CAAA;IAU9B,WACE,CAAA,SAAuB,EACJ,EAAe,EAC1B,SAAoC,EACzB,sBAAkD,EAClD,GAAsB,EAAA;QAEzC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC;QAL9B,IAAE,CAAA,EAAA,GAAF,EAAE;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;;QAVxB,IAAa,CAAA,aAAA,GAAQ,EAAE;;AAwDvB,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,CAAS,EAAE,EAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU;;QAGvE,IAAW,CAAA,WAAA,GAAG,CAAC,GAAmB,EAAE,GAAW,KAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAK,EAAE,GAAG,EAAE,GAAG,CAAC;;;AA5CtC,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAiB,CAAC,IAAI,EAAE,MAAM,KAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,EAAE,IAAI,EAAE,MAAM,CAAiC,CAC7F;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;YAGjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC;;;;;AAMxC,IAAA,eAAe,CAAC,IAAO,EAAA;AACrB,QAAA,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;;;AAItF,IAAA,YAAY,CAAC,IAAO,EAAA;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,IAAI,QAAQ;AAC7D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG;;;AAI7E,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;;;IAIhC,QAAQ,GAAA,EAAW,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACrC,YAAY,GAAA,EAAW,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;;AAUzC,IAAA,SAAS,CAAC,KAAU,EAAA,EAAO,OAAO,KAAU,CAAC;;IAGpC,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;8GA5EX,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,uKCtC9B,09CAgCI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDMS,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEP,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,09CAAA,EAAA;sNAOR,gBAAgB,EAAA,CAAA;sBAAxB;;;AE3CH;AAsBE;;;;;;;;AAQG;AAGG,MAAgB,wBAGpB,SAAQ,aAAgB,CAAA;IAUxB,WACuB,CAAA,SAAuB,EAChC,sBAAkD,EAAA;QAE9D,KAAK,CAAC,SAAS,CAAC;QAHK,IAAS,CAAA,SAAA,GAAT,SAAS;QAClB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;AAR3B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;;QAEd,IAAM,CAAA,MAAA,GAAG,EAAE;;IAQnC,QAAQ,GAAA;QACN,IAAI,CAAC,sBAAsB,CAAC;AACzB,aAAA,IAAI,CAACC,WAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACvB,SAAC,CAAC;;AAGN,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;;AAEjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI;YAC/C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAU;;AAEzB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,EAAE;oBACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;gBAG3C,MAAM,UAAU,GAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK;gBAC/C,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;;;iBAGnB;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAA,wBAAA,CAA0B,CAAC;;;AAI/D,YAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;YAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE;gBACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;;;;IAK7D,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;;AAGxB,IAAA,IAAI,UAAU,GAAA;;AAEZ,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,OAAO,CAAC,OAAO;AACpB,aAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC;;;AAGvE,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAG;gBAChD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,GAAG,CAAC;AAClC,aAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEf,QAAA,OAAO,EAAE;;AAEb;;;;;;;AAOG;IACH,iBAAiB,CAAC,KAAY,EAAC,WAAgB,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;QACvB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,WAAW;;QAGrD,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;YACrC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;;;QAI7B,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;YAC3C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;;;AAIhC,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;;AACtB,aAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AACjC,YAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;;;AAI7B,QAAA,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AACzB,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;8GAhH9B,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAD7C;uHAOU,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAIuB,MAAM,EAAA,CAAA;sBAA7B,WAAW;uBAAC,SAAS;;;AC5C1B;AAcM,MAAO,eAAgB,SAAQ,wBAA+D,CAAA;8GAAvF,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,8FCd5B,uKAIM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDUO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEX,UAAA,EAAA,KAAK,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uKAAA,EAAA;;;MEDlC,0BAA0B,CAAA;AAWrC,IAAA,WAAA,CAAoB,EAAgC,EAAA;QAAhC,IAAE,CAAA,EAAA,GAAF,EAAE;;QAPb,IAAa,CAAA,aAAA,GAAG,KAAK;;AAQ9B;;;;;;;AAOG;IACK,YAAY,GAAA;AAClB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE;QAC3C,MAAM,WAAW,GAAG;cAChB,CAAa,UAAA,EAAA,IAAI,CAAK,GAAA;cACtB,EAAE;QACN,OAAO,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,IAAI,CAAO,IAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAC;;AAElD;;;;;;;AAOG;AAEH,IAAA,SAAS,CAAC,CAAgB,EAAA;;AAExB,QAAA,IACE,CAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,EAAC,WAAW,EAAC,YAAY,EAAC,MAAM,EAAC,KAAK;AAC9D,aAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AAClB,YAAA,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO;YACtB;AAEF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,CAAC,GAAM,IAAI,CAAC,YAAY,EAAE;;AAEhC,QAAA,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAE,CAAC;QAEzD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE;;;AAGtB;;;;;;;AAOG;AAEH,IAAA,OAAO,CAAC,CAAiB,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7B,QAAA,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK;AAC3D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAE,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAE,CAAC;QAEzD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE;;;AAGtB;;;;;;AAMG;IAEH,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AACnC,QAAA,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK;QACnB,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AAE9D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,IAAI,CAAC,GAAG,IAAO,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AAAK,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG;YAC5D,IAAI,IAAI,CAAC,GAAG,IAAO,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AAAK,gBAAA,GAAG,GAAG,IAAI,CAAC,GAAG;YAC5D,IAAI,IAAI,CAAC,OAAO,IAAG,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO;AAAE,gBAAA,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAE,IAAI,GAAG,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/H,IAAI,IAAI,CAAC,IAAI,IAAM,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI;AAAK,gBAAA,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAE,IAAI,GAAG,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAG9H,QAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC;;8GAhGlC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;+EAGU,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBA6BD,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBA4BnC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAoBjC,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,MAAM;;;AC9FxB;AAaM,MAAO,eACX,SAAQ,wBAAuE,CAAA;AAPjF,IAAA,WAAA,GAAA;;QASE,IAAW,CAAA,WAAA,GAAQ,EAAE;AAYtB;AAXC;;;AAGG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;;;8GAZxC,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mHCb5B,irCA0BI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDbS,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEX,UAAA,EAAA,KAAK,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,irCAAA,EAAA;;;AEXjD;AA2BA;;;;;;;;AAQG;AACG,MAAO,cACX,SAAQ,wBAAwE,CAAA;AAShF,IAAA,WAAA,CACE,SAAuB,EACf,SAAoC,EACzB,sBAAkD,EAAA;AAErE,QAAA,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC;QAHhC,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;;QAR3C,IAAW,CAAA,WAAA,GAAQ,EAAE;;AAuFrB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAEtD;;;;;AAKG;QACH,IAAW,CAAA,WAAA,GAAG,CAAC,GAAmB,EAAE,CAAS,KAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAK,EAAE,GAAG,EAAE,CAAC,CAAC;;AAnF7C;;;;;AAKG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAE1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;;YAE3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;;AAG9C,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAiB,CAAC,IAAI,EAAE,MAAM,KAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,EAAE,IAAI,EAAE,MAAM,CAAiC,CAC7F;;AAGD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;;AAIrB;;;;;;AAMG;AACH,IAAA,wBAAwB,CAAC,MAAW,EAAA;AAClC,QAAA,OAAO,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,4BAA4B,GAAG,eAAe;;AAG7F;;;AAGG;AACH,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,UAAU;;AAGjD;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;;AAG9B;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;;;IAIhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;;IAInB,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAenB;;;AAGG;IACM,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;;8GA7GZ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kHCpC3B,ilCA2BI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAuB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDSS,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAET,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ilCAAA,EAAA;;;MEjBpC,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;QAFd,IAAS,CAAA,SAAA,GAA8B,IAAI;;AAInD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,EAAE;;;IAIZ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;;AAGzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,gBAAA,WAAW,EAAE;AACd,aAAA,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;;;8GAvBnC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAC;AACZ,iBAAA;+EAGU,YAAY,EAAA,CAAA;sBAApB;;;MCFU,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;QAFd,IAAS,CAAA,SAAA,GAA8B,IAAI;;AAInD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,EAAE;;;IAIZ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;;AAGzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;;;8GApBnC,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAC;AACZ,iBAAA;+EAEU,WAAW,EAAA,CAAA;sBAAnB;;;MCFU,qCAAqC,CAAA;AAGhD,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;;IAEtB,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;;IAG5B,mBAAmB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;;;AAK7E,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE;AAErD,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,EAAE;gBACrF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa;AAC3C,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa;;iBAC7B;gBACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC;;;;8GA1B3D,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArC,qCAAqC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE;AACb,iBAAA;+EAEU,aAAa,EAAA,CAAA;sBAArB;gBAeD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACrBnC;AAgBM,MAAO,aAAc,SAAQ,wBAAuE,CAAA;AAN1G,IAAA,WAAA,GAAA;;;QAQE,IAAW,CAAA,WAAA,GAAQ,EAAE;AAatB;AAZC;;;AAGG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC/D,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;;;8GAZxC,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,iHChB1B,63BAqBI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAoB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDLS,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAET,UAAA,EAAA,KAAK,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,63BAAA,EAAA;;;AEdjD;AAgBM,MAAO,iBACX,SAAQ,wBAAuE,CAAA;AAPjF,IAAA,WAAA,GAAA;;AASE,QAAA,IAAA,CAAA,IAAI,GAAW,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,WAAW,GAAQ,EAAE,CAAC;AAkBvB;AAhBC;;;;AAIG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;;AAE/C,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;gBACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;;;8GAlBrD,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qHChB9B,k6BAmBI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAoB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDHS,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEb,UAAA,EAAA,KAAK,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k6BAAA,EAAA;;;AEXjD;AACO,MAAM,eAAe,GAAG,IAAI,cAAc,CAAkB,iBAAiB,CAAC;;MCGxE,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CACmC,QAAyB,EAAA;QAAzB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAE3C;;AAEG;AACH,IAAA,mBAAmB,CAAC,SAA0B,EAAA;AAC5C,QAAA,MAAM,MAAM,GAAiB,SAAS,CAAC,MAAM;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,MAAM,CAAC,UAAU,CAAE,CAAA,CAAC,CAAC;;QAGjF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACrC,QAAA,OAAO,MAAM,YAAY,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;;AAfhD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAErB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAFd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAG7B,MAAM;2BAAC,eAAe;;;ACUrB,MAAO,eACX,SAAQ,aAAmC,CAAA;IAI3C,WACqB,CAAA,SAAuB,EAClC,aAAmC,EAAA;QAE3C,KAAK,CAAC,SAAS,CAAC;QAHG,IAAS,CAAA,SAAA,GAAT,SAAS;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa;;AAKvB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;;AAMrC,IAAA,WAAW,CAAC,GAAe,EAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ;QAC5C,QAAQ,IAAI;AACV,YAAA,KAAK,QAAQ;;gBAEX;AAEF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAClB;AAEF,YAAA,KAAK,QAAQ;AACb,YAAA;AACE,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;;AAEtB,oBAAA,IAAI,CAAC;AACF,yBAAA,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;AACtC,yBAAA,SAAS,CAAC;AACT,wBAAA,KAAK,EAAE,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG;AAClD,qBAAA,CAAC;;;;8GAvCD,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4KCnB5B,yiBAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAqB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDOa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yiBAAA,EAAA;iHAsB/C,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AEtCnC;AAeM,MAAO,eACX,SAAQ,wBAAwE,CAAA;IAK/E,WACC,CAAA,SAAuB,EACJ,sBAAkD,EAAA;AAErE,QAAA,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC;QAFrB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QAJ3C,IAAW,CAAA,WAAA,GAAQ,EAAE;;AASrB;;;;;AAKG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAE1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;YAGjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;YAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC;;;AAG/C;;;AAGG;AACH,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,SAAS,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;;AAE5D,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AAChC,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC;;8GAvCtC,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mHCf5B,0/BA4Be,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDbF,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0/BAAA,EAAA;;;AEK3C,MAAO,eACX,SAAQ,wBAAwE,CAAA;IAahF,WACE,CAAA,SAAuB,EACJ,sBAAkD,EAAA;AAErE,QAAA,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC;QAFrB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;;QAX3C,IAAW,CAAA,WAAA,GAAQ,EAAE;;QAGrB,IAAa,CAAA,aAAA,GAAU,EAAE;;QAGzB,IAAkB,CAAA,kBAAA,GAAW,iBAAiB;QAC9C,IAAoB,CAAA,oBAAA,GAAW,eAAe;;AAS9C;;;AAGG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAE1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;;YAG/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;;;AAIhD;;;;;AAKG;AACH,IAAA,mBAAmB,CAAC,cAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM;YAAE;AAEjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;;AAG9C;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,KAAU,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,kBAAkB;AAC3E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,IAAI,CAAC,oBAAoB;QAEjF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK;AACvC,YAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,WAAW,GAAG,aAAa;;AAG3D,YAAA,MAAM,CAAC,UAAU,GAAG,CAAc,WAAA,EAAA,KAAK,EAAE;AAC3C,SAAC,CAAC;;8GAnEO,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mHClB5B,61CA0CI,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDxBS,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,61CAAA,EAAA;;;AEb1C,MAAM,qBAAqB,GAAG,CAAC,WAA6B,EAAE,UAAgC,KAAsB;AACvH,IAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACpB,QAAA,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvE,YAAA,qBAAqB,EAAE,gBAAgB;AAC1C,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,UAAU,EAAE;AACvB,QAAA,WAAW,GAAG,WAAW,CAAC,UAAU,EAAE;;AAE1C,IAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,QAAA,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;;AAExC,IAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,QAAA,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;;AAExC,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;QACjC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;AAEvD,IAAA,IAAI,UAAU,CAAC,WAAW,EAAE;AACxB,QAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;;AAE5E,IAAA,IAAI,UAAU,CAAC,EAAE,EAAE;QACf,MAAM,SAAS,GAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QACzD,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;AACnC,YAAA,SAAS,CAAC,IAAI,GAAG,UAAU;;AAE/B,QAAA,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC;;AAE3C,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACnB,QAAA,WAAW,GAAI,WAAgC,CAAC,MAAM,CAAC;AACnD,YAAA,mBAAmB,EAAE,UAAU,CAAC,MAAM,CAAC,mBAAmB;AAC1D,YAAA,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY;AAC5C,YAAA,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,iBAAiB;AACtD,YAAA,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,iBAAiB;AACtD,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACzB,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AAClB,QAAA,WAAW,GAAI,WAAgC,CAAC,KAAK,CAAC;AAClD,YAAA,mBAAmB,EAAE,UAAU,CAAC,KAAK,CAAC,mBAAmB;AACzD,YAAA,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;AAC3C,YAAA,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;AACrD,YAAA,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB;AACrD,YAAA,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY;AAC3C,YAAA,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ;AACnC,YAAA,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS;AACrC,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACzB,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACnB,QAAA,WAAW,GAAI,WAAgC,CAAC,MAAM,CAAC;AACnD,YAAA,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC;AACtC,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,IAAI,EAAE;QACjB,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEnD,IAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AAClB,QAAA,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE;;AAErC,IAAA,IAAI,UAAU,CAAC,GAAG,EAAE;AAChB,QAAA,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;AAClE,YAAA,YAAY,EAAE,CAAoB,kBAAA,CAAA;AACrC,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACpB,QAAA,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;AACzC,YAAA,gBAAgB,EAAE,CAAyB,uBAAA,CAAA;AAC9C,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,OAAO,WAAW;AACtB,CAAC;;AC7EM,MAAM,qBAAqB,GAAG,CAAC,WAA6B,EAAE,UAAgC,KAAsB;AACvH,IAAA,IAAI,UAAU,CAAC,IAAI,EAAE;AACjB,QAAA,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE;;AAEpC,IAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,QAAA,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;;AAExC,IAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,QAAA,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE;;AAExC,IAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAE3D,IAAA,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,EAAE;QACpC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;;AAE7D,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QAC/B,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEnD,IAAA,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;QAClC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;;AAEzD,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,OAAO,WAAW;AACtB,CAAC;;AC7BM,MAAM,mBAAmB,GAAG,CAAC,WAA2B,EAAE,UAA8B,KAAoB;AAC/G,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;QAC/B,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;;AAEjG,IAAA,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;QAClC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;AAE1G,IAAA,IAAI,UAAU,CAAC,GAAG,EAAE;AAChB,QAAA,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;;AAEnC,IAAA,IAAI,UAAU,CAAC,SAAS,EAAE;QACtB,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;;AAE7D,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;QAC9B,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;;AAEjD,IAAA,OAAO,WAAW;AACtB,CAAC;;ACnBM,MAAM,qBAAqB,GAAG,CAAC,WAA6B,EAAE,UAA8B,KAAsB;IACrH,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE;QAC/C,MAAM,YAAY,GAAG2B,4BAAyB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACxE,QAAA,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;;AAEnE,IAAA,OAAO,WAAW;AACtB,CAAC;;ACNM,MAAM,oBAAoB,GAAG,CAAC,WAA4B,EAAE,UAA+B,KAAqB;AACnH,IAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AAClB,QAAA,MAAM,UAAU,GAAGA,4BAAyB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;AACxE,QAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;AAGvE,IAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACxD,YAAA,WAAW,EAAE,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAiB,eAAA,CAAA;AAC/D,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;AACxD,YAAA,WAAW,EAAE,CAAA,QAAA,EAAW,UAAU,CAAC,QAAQ,CAAgB,cAAA,CAAA;AAC9D,SAAA,CAAC;;AAEN,IAAA,IAAI,UAAU,CAAC,WAAW,EAAE;AACxB,QAAA,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;AACxC,YAAA,cAAc,EAAE,sBAAsB;AACzC,SAAA,CAAC;;AAEN,IAAA,OAAO,WAAW;AACtB,CAAC;;ACvBM,MAAM,sBAAsB,GAAG,CAAC,WAA8B,EAAE,UAAiC,KAAuB;AAC3H,IAAA,IAAI,UAAU,CAAC,KAAK,EAAE;QAClB,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;;AAErD,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE;QACnB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;;AAEvD,IAAA,IAAI,UAAU,CAAC,SAAS,EAAE;AACtB,QAAA,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE;;;AAIzC,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE;AAC5B,QAAA,WAAW,GAAG;aACb,KAAK,CAAC,IAAI;AACV,aAAA,QAAQ,CAAC,EAAE,UAAU,EAAE,8CAA8C,EAAE,CAAC;;AAE7E,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,KAAK,EAAE;AAC7B,QAAA,WAAW,GAAG;aACb,KAAK,CAAC,KAAK;AACX,aAAA,QAAQ,CAAC,EAAE,UAAU,EAAE,+CAA+C,EAAE,CAAC;;AAE9E,IAAA,OAAO,WAAW;AACtB,CAAC;;ACjBD;AACA,MAAM,OAAO,GAAkC;AAC7C,IAAA,MAAM,EAAG,GAAG,CAAC,MAAM,EAAE;AACrB,IAAA,MAAM,EAAG,GAAG,CAAC,MAAM,EAAE;AACrB,IAAA,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;AAC/B,IAAA,IAAI,EAAK,GAAG,CAAC,IAAI,EAAE;AACnB,IAAA,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;AACtB,IAAA,KAAK,EAAI,GAAG,CAAC,KAAK,EAAE;AACpB,IAAA,MAAM,EAAG,GAAG,CAAC,MAAM,EAAE;CACtB;AAED;AACA,MAAM,eAAe,GAAG;AACtB,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,KAAK,EAAK,yBAAyB;CACpC;AAED;;AAEG;AACH,SAAS,uBAAuB,CAC9B,MAAqB,EACrB,UAAe,EAAA;AAEf,IAAA,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;AACpC,QAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;;AAEvD,IAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,QAAA,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC;;AAC5E,SAAA,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAA,MAAM,GAAI;aACP,KAAK,CAAC,EAAE;aACR,QAAQ,CAAC,EAAE,cAAc,EAAE,eAAe,CAAC,KAAK,EAAE,CAAC;;AAExD,IAAA,OAAO,MAAM;AACf;AAEA;;AAEG;AACH,MAAM,4BAA4B,GAAG,CACnC,IAA8B,KACV;IACpB,MAAM,SAAS,GAAkC,EAAE;AAEnD,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;AAEtD,QAAA,IAAI,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE;;AAGvD,QAAA,WAAW,GAAG,uBAAuB,CAAC,WAAW,EAAE,UAAU,CAAC;;AAG9D,QAAA,QAAQ,UAAU,CAAC,IAAI;AACrB,YAAA,KAAK,QAAQ;gBACX,WAAW,GAAG,qBAAqB,CACjC,WAA+B,EAC/B,UAAU,CAAC,MAAM,IAAI,EAAE,CACxB;gBACD;AACF,YAAA,KAAK,QAAQ;AACb,YAAA,KAAK,SAAS;gBACZ,WAAW,GAAG,qBAAqB,CACjC,WAA+B,EAC/B,UAAU,CAAC,MAAM,IAAI,EAAE,CACxB;gBACD;AACF,YAAA,KAAK,MAAM;gBACT,WAAW,GAAG,mBAAmB,CAC/B,WAA6B,EAC7B,UAAU,CAAC,IAAI,IAAI,EAAE,CACtB;gBACD;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,WAAW,GAAG,qBAAqB,CACjC,WAA+B,EAC/B,UAAU,CACX;gBACD;AACF,YAAA,KAAK,OAAO;gBACV,WAAW,GAAG,oBAAoB,CAChC,WAA8B,EAC9B,UAAU,CAAC,KAAK,IAAI,EAAE,CACvB;gBACD;AACF,YAAA,KAAK,SAAS;;gBAEZ,WAAW,GAAG,sBAAsB,CAClC,WAAgC,EAChC,UAAU,CAAC,OAAO,IAAI,EAAE,CACzB;gBACD;AACF,YAAA;;gBAEE;;AAGJ,QAAA,SAAS,CAAC,KAAK,CAAC,GAAG,WAAW;;;AAIhC,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS;SACxB,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACtD,CAAC;;MCzGY,0BAA0B,CAAA;IACrC,cAAc,CAAC,UAAoC,EAAE,QAAa,EAAA;AAChE,QAAA,MAAM,MAAM,GAAG,4BAA4B,CAAC,UAAU,CAAC;AACvD,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;;8GAH9C,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACwBK,MAAO,iBACX,SAAQ,sBAAsB,CAAA;AAQ9B,IAAA,WAAA,CACE,SAAuB,EACJ,EAAe,EACf,sBAAkD,EAClD,GAAsB,EACjC,QAAmB,EACnB,EAAc,EACd,uBAAgD,EAChD,0BAAsD,EAAA;QAE9D,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC;QAR9B,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB;QACvB,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;;AAK3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;;IAIrC,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,oBAAoB,EAAE;;AAG7B,IAAA,UAAU,CAAC,aAAA,GAAqB,EAAE,EAAE,gBAAyB,IAAI,EAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,qBAAqB,CACnB,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAC3C,KAAK,EACL,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,0BAA0B,EAC/B,aAAa,CACd;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAExB,UAAU,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;YACzD,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,KAAK,CAAA,CAAE,CAAC;gBAC9D;;AAEF,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC;SAC1C,EAAE,CAAC,CAAC;;AAGP,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,WAAW,GAAA;AACT,QAAA,OAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAe,EAAE,QAAQ,IAAI,EAAE;;AAG7E,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,OAAO,KAAK;;IAGN,qBAAqB,GAAA;QAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;YACxC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC7B,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAc,CAAC;;AAEnE,SAAC,CAAC;;IAGI,kBAAkB,CAAC,gBAAkC,EAAE,KAAgB,EAAA;QAC7E,IAAI,CAAC,uBAAuB,CAAC,cAAc,CACzC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,EAC7B,gBAAgB,EAChB,KAAK,EACL,IAAI,CAAC,gBAAgB,CACtB;;IAGK,mBAAmB,GAAA;;AAEzB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,KAAY,KAAI;AACpE,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA,CAAE,CAAC;YACrE,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAwB,CAAC;;AAEpD,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,KAAY,KAAI;AAClF,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;YAC/D,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAE5B,SAAC,CAAC;;AAGI,IAAA,iBAAiB,CAAC,MAAmB,EAAA;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;;IAIpB,oBAAoB,GAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AAE9C,QAAA,IAAI,CAAC,WAAW,IAAI,QAAQ,KAAK,SAAS;YAAE;;AAG5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAC;AAEvF,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAgB,KAAI;YACnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,QAAQ,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC;;iBAC9C;gBACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC;;AAElD,SAAC,CAAC;;8GA1IS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMmB,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCjE,ynCA4BM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDEO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAEb,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ynCAAA,EAAA;2SAMtC,gBAAgB,EAAA,CAAA;sBAAxB;gBAGD,iBAAiB,EAAA,CAAA;sBADhB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;AEf7D,MAAO,oBAGX,SAAQ,sBAAsB,CAAA;IAO9B,WACE,CAAA,SAAuB,EACJ,EAAe,EAC1B,SAAoC,EACzB,sBAAkD,EAClD,GAAsB,EAAA;QAEzC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC;QAL9B,IAAE,CAAA,EAAA,GAAF,EAAE;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG;QATxB,IAAa,CAAA,aAAA,GAAQ,EAAE;;;AAed,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAiB,CAAC,IAAI,EAAE,MAAM,KAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,EAAE,IAAI,EAAE,MAAM,CAAiC,CAC7F;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;YAGjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AAC3C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC;;;;;AAMxC,IAAA,eAAe,CAAC,SAAY,EAAA;AAC1B,QAAA,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC;;;AAI3F,IAAA,SAAS,CAAC,KAAU,EAAA,EAAO,OAAO,KAAU,CAAC;8GA9ClC,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2KCrBjC,u0CAwBQ,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAS,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDHK,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAET,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACrC,KAAK,EAAA,QAAA,EAAA,u0CAAA,EAAA;sNAOR,gBAAgB,EAAA,CAAA;sBAAxB;;;AE1BH;AAiBM,MAAO,eACX,SAAQ,wBAAgE,CAAA;IAQxE,WACE,CAAA,SAAuB,EACf,SAAoC,EACzB,sBAAkD,EAC7D,QAAmB,EACnB,EAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC;QALhC,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB;QACjC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAE,CAAA,EAAA,GAAF,EAAE;AAVZ,QAAA,IAAA,CAAA,YAAY,GAAY,KAAK,CAAC;;AA4G9B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AA9FtD;;;;;AAKG;AACM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAE1B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEjC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAiB,CAAC,IAAI,EAAE,MAAM,KAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,EAAE,IAAI,EAAE,MAAM,CAAiC,CAC7F;;AAGD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAEjB,IAAI,CAAC,0BAA0B,EAAE;;;AAGrC;;AAEG;IACK,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,KAAY,KAAI;AACpE,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;YAC1C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;;AAEpC,SAAC,CAAC;;AAGJ;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;;AAGxC;;;AAGG;AACK,IAAA,mBAAmB,CAAC,MAAmB,EAAA;;AAE7C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,QAAQ;QACpD,IAAI,aAAa,EAAE;YACjB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;AAC5D,aAAC,CAAC;;;QAIJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC;;QAG3D,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QACtD,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE;;AAG3D,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;;AAG5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC;QAClE,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC;YACxD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,CAAC;;;AAIhE;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;;;IAIhC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;;IAInB,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;AAMnB;;;AAGG;IACM,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;;8GAxHZ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,mHCjB5B,4jCA+BE,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDdW,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEL,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,4jCAAA,EAAA;;;AEDb,MAAO,cAAe,SAAQ,aAAa,CAAA;;;;AAI/C,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAGhC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;;AAGpC,YAAA,IAAI,CAAC,WAAW,GAAG,+BAA+B;;;8GAV3C,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kHCd3B,kUAQM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDMO,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAET,UAAA,EAAA,KAAK,EACA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kUAAA,EAAA;;;MEqBpC,uBAAuB,CAAA;IAGlC,WACgD,CAAA,MAA8B,EACpC,cAAwC,EAAA;QAJ1E,IAAQ,CAAA,QAAA,GAA6C,EAAE;;AAO7D,QAAA,IAAI,MAAM,EAAE,kBAAkB,IAAI,IAAI,EAAE;YACtC,IAAI,CAAC,QAAQ,GAAG;AACd,gBAAA,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE;AAC/E,gBAAA,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;AAClF,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AACzE,gBAAA,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACrF,gBAAA,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;AACtE,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AACzE,gBAAA,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;AACtE,gBAAA,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACrF,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE;AAC7E,gBAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACnG,gBAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE;;AAG/F,gBAAA,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACvF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;AACjF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;AACjF,gBAAA,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE;AACnF,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AAC9E,gBAAA,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;AAC3E,gBAAA,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACvF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;AACjF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;AACjF,gBAAA,WAAW,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACzF,gBAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE;AAE1F,gBAAA,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE;AACtF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE;;AAGhF,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;;AAG3E,gBAAA,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;AAEzE,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;AACzE,gBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;aAC1E;;;QAGH,IAAI,cAAc,EAAE;AAClB,YAAA,cAAc,CAAC,OAAO,CAAC,OAAO,IAAG;gBAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;AACxC,aAAC,CAAC;;;AAIC,IAAA,UAAU,CAAC,IAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAC5B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE;SACZ;;8GA7DQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAIZ,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACxB,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAL7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAKI;;0BAAY,MAAM;2BAAC,wBAAwB;;0BAC3C;;0BAAY,MAAM;2BAAC,kBAAkB;;;MCzB7B,uBAAuB,CAAA;AAClC,IAAA,WAAA,CACU,cAAuC,EACvC,cAAiC,EACjC,EAAe,EACf,0BAAsD,EAAA;QAHtD,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B;;AAGpC;;;;;;AAMG;AACH,IAAA,cAAc,CACZ,MAAyC,EACzC,SAA2B,EAC3B,IAA4B,EAC5B,gBAAsB,EAAA;AAEtB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;;aAC9E;YACL,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC;;;AAIvE;;;;;;;AAOG;AACK,IAAA,mBAAmB,CACzB,eAA+B,EAC/B,SAA2B,EAC3B,IAA4B,EAC5B,gBAAsB,EAAA;;;AAKtB,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,MAAM,EAAE;;YAEnC,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC;AACxD,YAAA,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;;YAG3C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAE5B,YAAA,qBAAqB,CACnB,eAAe,CAAC,iBAAiB,CAAC,EAClC,EAAE,EACF,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,0BAA0B,CAChC;AACD,YAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CAAC;;YAElC,IAAI,CAAC,cAAc,CACjB,eAAe,CAAC,UAAU,IAAI,EAAE,EAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EACjC,EAAE,EACF,eAAe,CAAC,iBAAiB,CAAC,CACnC;YACD;;;AAIF,QAAA,IAAI,CAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YACxE,MAAM,WAAW,GAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE;AACpF,YAAA,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3E,iBAAA,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC;;gBAChF,OAAO,CAAC,KAAK,CAAC,CAAA,qBAAA,EAAwB,eAAe,CAAC,IAAI,CAAE,CAAA,CAAC;YAClE;;;QAGF,IAAI,eAAe,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,EAAE;;;AAGhD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAE,EAAE,CAAc;AACjE,YAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;YAC7F;;;AAIJ,QAAA,IACE,CAAC,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AACpF,YAAA,IAAI,EACJ;YACA,MAAM,GAAG,GAAG,SAAS,CAAC,eAAe,CACnC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,qBAAqB,CACzF;AAED,YAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;AACvC,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1B,YAAA,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAEzG;;;AAIA,QAAA,MAAM,OAAO,GAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE;AAC/E,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB;AAC/D,QAAA,MAAM,MAAM,GAAU,YAAoB,CAAC,IAAI;QAC/C,MAAM,GAAG,GAAY,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC;;AAG5D,QAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;;QAGvC,IAAI,IAAI,IAAI,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE;AAClD,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;;;AAI5B,QAAA,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EACvD;AACE,YAAA,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI;YAChC,GAAG,CAAC,QAAQ,CACV,kBAAkB,EAClB,eAAe,CAAC,IAAI,KAAK;AACvB,kBAAE;AACF,kBAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,IAAE,EAAE,CAAC,CACzD;;;QAIH,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;AAC7C,YAAA,MAAM,cAAc,GACjB,GAAG,CAAC,QAAgB,CAAC,gBAAgB;gBACrC,GAAG,CAAC,QAAgB,CAAC,SAAS;AAC/B,gBAAA,SAAS;AACX,YAAA,IAAI,CAAC,cAAc,CACjB,eAAe,CAAC,UAAU,EAC1B,cAAc,EACd,IAAI,EACJ,gBAAgB,CACjB;;;AAIL;;;;;AAKG;IACK,oBAAoB,CAAC,MAAW,EAAE,GAAW,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;AACxB,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,IAAI,CAAC,KAAK,SAAS;gBAAE;YACrB,IAAI,CAAC,KAAK,GAAG;AAAE,gBAAA,OAAO,MAAM,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AACvD,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACxD,gBAAA,IAAI,MAAM;AAAE,oBAAA,OAAO,MAAM;;;AAG7B,QAAA,OAAO,IAAI;;8GAjKF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAyB,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAoC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACQK,MAAO,cAAe,SAAQ,aAAa,CAAA;IAW/C,WACU,CAAA,gBAAyC,EACjD,SAAuB,EAAA;QAEvB,KAAK,CAAC,SAAS,CAAC;QAHR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAM1B;;AAEG;AACH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEpC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;YAEjC,IAAI,CAAC,kBAAkB,EAAE;;;AAI7B;;;AAGG;AAEH,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACjC,IAAI,CAAC,KAAK,EAAE;;;;IAKR,kBAAkB,GAAA;QACxB,MAAM,cAAc,GAAqB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;QACxE,cAAc,CAAC,OAAO,CAAC,GAAG,IACxB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAC9D;;AAGH;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;AAG3B;;AAEG;AACH,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,KAAK,EAAE;;8GA9DH,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1B,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAQuB,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlE,6mEAkEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAqB,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD9Ca,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAET,KAAK,EAAA,QAAA,EAAA,6mEAAA,EAAA;oHAMR,UAAU,EAAA,CAAA;sBAAlB;gBAKO,aAAa,EAAA,CAAA;sBADpB,SAAS;uBAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;gBA2BhF,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ME7CtB,iBAAiB,CAAA;IAC5B,WAAoB,CAAA,OAAgB,EAAU,QAAkB,EAAA;QAA5C,IAAO,CAAA,OAAA,GAAP,OAAO;QAAmB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAEtD;;;AAGG;AACH,IAAA,SAAS,CAAC,IAAkB,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;;AAG9C,QAAA,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;AAEhE,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,YAAY,GAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;;AAE7C,QAAA,IAAI,IAAI,EAAE,MAAM,EAAE;YAChB,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1C,YAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU;;AAE7C,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAChC,MAAM,EAAE,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClD,aAAA,CAAC;;AAGF,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAG9C,YAAA,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAG/C,QAAA,OAAO,UAAU;;AAGnB;;;AAGG;AACH,IAAA,SAAS,CAAC,IAAkB,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,UAAU,EAAE,mBAAmB;YAC/B,gBAAgB,EAAE,IAAI,CAAC;AACpB,iBAAA,QAAQ;AACR,iBAAA,MAAM;iBACN,MAAM,CAAC,MAAM;AACb,iBAAA,kBAAkB;AACtB,SAAA,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,cAAc,CAAC;;QAGlD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;;AAE9C,QAAA,IAAI,IAAI,EAAE,MAAM,EAAE;YAChB,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;;AAG1C,YAAA,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAChC,MAAM,EAAE,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAClD,aAAA,CAAC;;AAGF,YAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAG9C,YAAA,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;;;AAM/C,QAAA,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY;AACvC,QAAA,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI;;AAG/D,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,MAAK;YACzB,UAAU,CAAC,OAAO,EAAE;YACpB,YAAY,CAAC,EAAE,CAAC;SACjB,EAAE,SAAS,CAAC;AAEb,QAAA,OAAO,UAAU;;AAEnB;;AAEG;AACK,IAAA,gBAAgB,CAAC,OAAgC,EAAA;AACvD,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACtC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,UAAU,EAAE,mBAAmB;YAC/B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,gBAAgB,EAAE,IAAI,CAAC;AACpB,iBAAA,QAAQ;AACR,iBAAA,MAAM;AACN,iBAAA,kBAAkB;AAClB,iBAAA,gBAAgB;AACpB,SAAA,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,EAAE;;AAGzC;;;AAGG;AACK,IAAA,cAAc,CAAC,IAAkB,EAAA;;;QAGvC,OAAO,IAAI,CAAC,QAAQ;;8GA9GX,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACLD;;;AAGG;MAEU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAgB;;AAEhD,QAAA,IAAA,CAAA,cAAc,GAA6B,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AA0B5F;;AAvBC,IAAA,WAAW,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;;AAIrD,IAAA,SAAS,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;;AAInD,IAAA,QAAQ,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;;AAIlD,IAAA,WAAW,CAAC,OAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;;AAI7C,IAAA,MAAM,CAAC,YAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;;8GA3BlC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACDlC;;AAEG;MAEU,oBAAoB,CAAA;AAC7B,IAAA,WAAA,CAAoB,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY;;IAEhC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;;QAE9C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE;AACrD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;;AAIvB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,UAAU,CAAC,CAAC,GAAsB,KAAI;;AAElC,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,eAAe;;AAEnE,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAChC,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC;;AAEzC,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;SAC/B,CAAC,CACD;;8GApBI,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAkC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACND;;;AAGG;MAEU,UAAU,CAAA;AACrB;;AAEG;AACH,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,SAAS,EAAE;gBACT,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;gBAC3C,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI;AAC1E;SACF;;8GAXQ,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAV,UAAU,EAAA,CAAA,CAAA;+GAAV,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,QAAQ;mBAAC,EAAE;;;MCcC,WAAW,CAAA;AAQtB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAPxB;;AAEG;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;AAE5D,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAI7C;;;;;AAKG;IACK,OAAO,CACb,MAAc,EACd,GAAW,EACX,IAAY,GAAA,IAAI,EAChB,OAAqB,EAAA;;AAGrB,QAAA,IAAI,OAAO,EAAE,UAAU,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;QAIhC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,WAAW,EAAE;AAC9D,aAAA,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC;;QAG7C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,GAAG,EAAE;YACvC,IAAI;AACJ,YAAA,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,OAAO,EAAE,MAAM;AACxB,SAAA,CAAC,CAAC,IAAI,CACL,QAAQ,CAAC,MAAK;YACZ,IAAI,OAAO,EAAE,UAAU;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1D,SAAC,CAAC,EACF,UAAU,CAAC,GAAG,IAAG;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC;AACzC,YAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;SAC7B,CAAC,CACH;;AAGH;;AAEG;AACH,IAAA,GAAG,CACD,GAAW,EACX,MAA4B,EAC5B,OAAqB,EAAA;AAErB,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AAC/D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;;;AAI9E,IAAA,IAAI,CAAI,GAAW,EAAE,IAAS,EAAE,OAAqB,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAGpD,IAAA,GAAG,CAAI,GAAW,EAAE,IAAS,EAAE,OAAqB,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAGnD,IAAA,KAAK,CAAI,GAAW,EAAE,IAAS,EAAE,OAAqB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;;AAGrD,IAAA,MAAM,CACJ,GAAW,EACX,MAA4B,EAC5B,OAAqB,EAAA;AAErB,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AAC/D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;;8GA9EtE,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlC,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA,CAAA;;2FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCdrB,mBAAmB,CAAA;IAC9B,WACU,CAAA,OAAsB,EACtB,OAAgC,EAAA;QADhC,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;;AAGjB;;;AAGG;AACH,IAAA,IAAI,CACF,aAA6B,EAC7B,YAAuB,GAAA,MAAM;;QAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,CAAC,IAAI,CAAC,qCAAqC,YAAY,CAAA,CAAA,CAAG,CAAC;YAClE;;QAEF,GAAG,CAAC,KAAK,EAAE;QACX,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,GAAG,CAAC;;8GApBtC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA6B,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADR,MAAM,EAAA,CAAA,CAAA;;2FACjB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAC,UAAU,EAAC,MAAM,EAAC;;;MCIlB,cAAc,CAAA;IACzB,WACU,CAAA,IAAiB,EACjB,YAAiC,EAAA;QADjC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAGtB,IAAA,SAAS,CAAC,IAAgC,EAAA;QACxC,OAAO,IAAI,KAAK,SAAS;;AAG3B,IAAA,MAAM,CAAC,MAAoB,EAAA;AACzB,QAAA,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAA0D;AAC9F,QAAA,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS;QAC5D,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,KAAK,EAAE;AAC9D,QAAA,IAAI,QAAQ,GACV,MAAM,KAAK;AACT,cAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,GAAG,EAAE,SAAS,EAAE,IAAI;cAClD,MAAM,KAAK;kBACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI;kBACtE,MAAM,KAAK;sBACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAiB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI;AAC1E,sBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC;QAEzD,OAAO,QAAQ,CAAC,IAAI,CAClB,GAAG,CAAC,QAAQ,IAAG;YACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;SAC9C,CAAC,CACH;;8GA3BQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;MCFY,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAAoB,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAEhC,IAAA,SAAS,CAAC,IAAgC,EAAA;QACxC,OAAO,IAAI,KAAK,YAAY;;AAG9B,IAAA,MAAM,CAAC,MAAoB,EAAA;QACzB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,GACjC,MAA8D,CAAC,gBAAgB;QAClF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;;8GAVzC,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCEY,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;AAE1B,IAAA,SAAS,CAAC,IAAgC,EAAA;QACxC,OAAO,IAAI,KAAK,UAAU;;AAG5B,IAAA,MAAM,CAAC,MAAoB,EAAA;QACzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAI,MAA4D,CAAC,KAAK;AAC1F,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACnD,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;;8GAVR,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCCY,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM;;AAE1B,IAAA,SAAS,CAAC,IAAgC,EAAA;QACxC,OAAO,IAAI,KAAK,iBAAiB;;AAGnC,IAAA,MAAM,CAAC,MAAoB,EAAA;QACzB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAI,MAAmE,CAAC,KAAK;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AACjE,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;;8GAXR,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MCDY,kBAAkB,CAAA;AAC7B,IAAA,SAAS,CAAC,IAAgC,EAAA;QACxC,OAAO,IAAI,KAAK,UAAU;;AAG5B,IAAA,MAAM,CAAC,MAAoB,EAAA;AACzB,QAAA,MAAM,GAAG,GAAI,MAA4D,CAAC,cAAc;AACxF,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG;;8GAPjB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACKD;;;AAGG;MAEU,mBAAmB,CAAA;AAC9B;;AAEG;AACH,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE;gBACT,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;gBAC3C,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAU,KAAK,EAAE,IAAI,EAAE;gBAC3E,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAO,KAAK,EAAE,IAAI,EAAE;gBAC3E,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAO,KAAK,EAAE,IAAI,EAAE;gBAC3E,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,EAAC,KAAK,EAAE,IAAI,EAAE;gBAC5E,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,kBAAkB,EAAM,KAAK,EAAE,IAAI;AAC1E;SACF;;8GAfQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,QAAQ;mBAAC,EAAE;;;ACPZ;MAea,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAX1B,YAAY;YACZ,aAAa;YACb,YAAY,CAAA,EAAA,OAAA,EAAA,CAEJ,YAAY,CAAA,EAAA,OAAA,EAAA,CAEpB,YAAY;YACZ,aAAa;YACb,YAAY,CAAA,EAAA,CAAA,CAAA;AAGH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAPlB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAOX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,YAAY;wBACZ,aAAa;wBACb;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb;AACD;AACF,iBAAA;;;MCbY,mBAAmB,CAAA;;AAI5B,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;;;IAGtB,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC;;;IAIhB,YAAY,GAAA;;QAEhB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1E,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC;AAC/D,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;;aAC3D;;YAEH,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,mBAAmB,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC;;;8GAtB7C,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAC;AACd,iBAAA;+EAGY,OAAO,EAAA,CAAA;sBAAf;;;ACFL;MAkBa,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAd/B,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,qCAAqC;AACrC,YAAA,0BAA0B,aAG1B,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,qCAAqC;YACrC,0BAA0B,CAAA,EAAA,CAAA,CAAA;+GAGjB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,mBAAmB;wBACnB,kBAAkB;wBAClB,kBAAkB;wBAClB,qCAAqC;wBACrC;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,kBAAkB;wBAClB,kBAAkB;wBAClB,qCAAqC;wBACrC;AACD;AACF,iBAAA;;;MCDY,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,CAb/B,eAAe,CAAA,EAAA,OAAA,EAAA,CAGf,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;AACjB,YAAA,sBAAsB,aAGtB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAV/B,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAMb,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MCmBY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAzBtB,kBAAkB;YAClB,gBAAgB;YAChB,iBAAiB;YACjB,aAAa;YACb,cAAc;YACd,cAAc;YACd,kBAAkB;AAClB,YAAA,aAAa,aAGb,YAAY;YACZ,iBAAiB;AACjB,YAAA,sBAAsB,aAGtB,kBAAkB;YAClB,gBAAgB;YAChB,iBAAiB;YACjB,aAAa;YACb,cAAc;YACd,cAAc;YACd,kBAAkB;YAClB,aAAa,CAAA,EAAA,CAAA,CAAA;AAGJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAftB,YAAY;YACZ,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAab,aAAa,EAAA,UAAA,EAAA,CAAA;kBA3BzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,kBAAkB;wBAClB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,gBAAgB;wBAChB,iBAAiB;wBACjB,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,kBAAkB;wBAClB;AACD;AACF,iBAAA;;;MCjBY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAbzB,aAAa,CAAA,EAAA,OAAA,EAAA,CAGb,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;AACjB,YAAA,sBAAsB,aAGtB,aAAa,CAAA,EAAA,CAAA,CAAA;AAGJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAVzB,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAMb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ;AACD,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;MC+BY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAjC1B,iBAAiB;YACjB,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,oBAAoB;AACpB,YAAA,eAAe,aAGf,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;AACjB,YAAA,sBAAsB,aAGtB,iBAAiB;YACjB,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,oBAAoB;YACpB,eAAe,CAAA,EAAA,CAAA,CAAA;AAGN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YApB1B,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAgBb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnC7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;wBACpB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;wBACpB;AACD;AACF,iBAAA;;;MC7BY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAbvB,cAAc;AACd,YAAA,cAAc,aAGd,YAAY;YACZ,iBAAiB;AACjB,YAAA,sBAAsB,aAGtB,cAAc;YACd,cAAc,CAAA,EAAA,CAAA,CAAA;AAGL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YATvB,YAAY;YACZ,iBAAiB;YACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAOb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,cAAc;wBACd;AACD,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd;AACD;AACF,iBAAA;;;ACrBD;MAoCe,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,OAAA,EAAA,CAhB1B,YAAY,EAAAuC,UAAA,EAAAC,mBAAA,EAGZ,aAAa;YACb,sBAAsB;YACtB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,cAAc,CAAA,EAAA,CAAA,CAAA;AAQL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJjB,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAdC,YAAY;YACZ,UAAU,CAAC,OAAO,EAAE;YACpB,mBAAmB,CAAC,OAAO,EAAE;YAC7B,aAAa;YACb,sBAAsB;YACtB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAQL,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,UAAU,CAAC,OAAO,EAAE;wBACpB,mBAAmB,CAAC,OAAO,EAAE;wBAC7B,aAAa;wBACb,sBAAsB;wBACtB,aAAa;wBACb,gBAAgB;wBAChB,iBAAiB;wBACjB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;ACnCH;;AAEG;AAEH;;ACJA;;AAEG;;;;"}