{"version":3,"file":"ngx-render-material-forms.mjs","sources":["../../../projects/ngx-render-material-forms/src/lib/ngx-render-material-forms.service.ts","../../../projects/ngx-render-material-forms/src/lib/ngx-render-material-forms.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/Webform.ts","../../../projects/ngx-render-material-forms/src/lib/components/Base.ts","../../../projects/ngx-render-material-forms/src/lib/FormioControl.ts","../../../projects/ngx-render-material-forms/src/lib/components/MaterialComponent.ts","../../../projects/ngx-render-material-forms/src/lib/const/LabelPositions.ts","../../../projects/ngx-render-material-forms/src/lib/components/label/label.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/label/label.component.html","../../../projects/ngx-render-material-forms/src/lib/components/formio-form-field/formio-form-field.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/formio-form-field/formio-form-field.component.html","../../../projects/ngx-render-material-forms/src/lib/components/textfield/textfield.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/password/password.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/email/email.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/url/url.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/phonenumber/phonenumber.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/number/number.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/currency/currency.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/day/day.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/hidden/hidden.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/html/html.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/tags/tags.component.ts","../../../projects/ngx-render-material-forms/src/lib/const/ButtonsThemes.ts","../../../projects/ngx-render-material-forms/src/lib/components/button/button.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/button/button.component.html","../../../projects/ngx-render-material-forms/src/lib/components/textarea/textarea.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/MaterialNestedComponent.ts","../../../projects/ngx-render-material-forms/src/lib/components/panel/panel.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/columns/columns.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/container/container.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/tabs/tabs.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/time/time.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/calendar/calendar.component.ts","../../../projects/ngx-render-material-forms/src/lib/directives/mask.directive.ts","../../../projects/ngx-render-material-forms/src/lib/components/date/date.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/checkbox/checkbox.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/fieldset/fieldset.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/content/content.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/signature/signature.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/survey/survey.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/radio/radio.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/selectboxes/selectboxes.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/common.service.ts","../../../projects/ngx-render-material-forms/src/lib/components/select/select.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/well/well.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/confirmation-dialog/confirmation-dialog.component.html","../../../projects/ngx-render-material-forms/src/lib/components/add-on-products/add-on-products.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/add-on-products/add-on-products.component.html","../../../projects/ngx-render-material-forms/src/lib/components/datagrid/datagrid.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/editgrid/editgrid.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/editgrid/editgrid.component.html","../../../projects/ngx-render-material-forms/src/lib/components/table/table.component.ts","../../../projects/ngx-render-material-forms/src/lib/components/formio.wizard.ts","../../../projects/ngx-render-material-forms/src/lib/components/index.ts","../../../projects/ngx-render-material-forms/src/lib/renderer.ts","../../../projects/ngx-render-material-forms/src/lib/formio.component.ts","../../../projects/ngx-render-material-forms/src/lib/ngx-render-material-forms.module.ts","../../../projects/ngx-render-material-forms/src/public-api.ts","../../../projects/ngx-render-material-forms/src/ngx-render-material-forms.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgxRenderMaterialFormsService {\r\n\r\n  constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'NgxMat-NgxRenderMaterialForms',\r\n  template: `\r\n    <p>\r\n      ngx-render-material-forms works!\r\n    </p>\r\n  `,\r\n  styles: [\r\n  ]\r\n})\r\nexport class NgxRenderMaterialFormsComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","import Webform from 'formiojs/Webform.js';\r\nWebform.prototype.redraw = function() {\r\n  return this.render();\r\n};\r\nWebform.prototype.clear = function() {\r\n  const viewContainer = this.viewContainer ? this.viewContainer() : null;\r\n  if (viewContainer) {\r\n    viewContainer.clear(); \r\n  }\r\n};\r\nWebform.prototype.render = function() {\r\n  if (this.viewContainer && this.viewContainer()) {\r\n    this.clear();\r\n    this.renderComponents();\r\n    this.setValue(this._submission);\r\n  }\r\n};\r\n","import FormioComponent from 'formiojs/components/_classes/component/Component.js';\r\n\r\nexport default (() => {\r\n  const beforeSubmit = FormioComponent.prototype.beforeSubmit;\r\n  FormioComponent.prototype.beforeSubmit = function(...args) {\r\n    if (this.materialComponent) {\r\n      this.materialComponent.beforeSubmit();\r\n    }\r\n    return beforeSubmit.call(this, ...args);\r\n  };\r\n\r\n  Object.defineProperty(FormioComponent.prototype, 'disabled', {\r\n    set(disabled) {\r\n      this._disabled = disabled;\r\n      if (this.materialComponent) {\r\n        this.materialComponent.setDisabled(disabled);\r\n      }\r\n    }\r\n  });\r\n\r\n  Object.defineProperty(FormioComponent.prototype, 'visible', {\r\n    set(visible) {\r\n      if (this._visible !== visible) {\r\n        this._visible = visible;\r\n        this.clearOnHide();\r\n        this.redraw();\r\n      }\r\n      if (this.materialComponent) {\r\n        this.materialComponent.setVisible(visible);\r\n      }\r\n    }\r\n  });\r\n  return FormioComponent;\r\n})();\r\n\r\n","import { FormControl, ValidationErrors } from '@angular/forms';\r\nimport unescape from 'lodash/unescape';\r\n\r\n// @dynamic\r\nexport class FormioControl extends FormControl {\r\n  public instance: any;\r\n\r\n  static customValidator(control: FormioControl): Promise<ValidationErrors> {\r\n    return new Promise((resolve) => {\r\n      if (control.instance) {\r\n        control.instance.validateResolve = resolve;\r\n      } else {\r\n        resolve(null);\r\n      }\r\n    });\r\n  }\r\n\r\n  constructor(...args) {\r\n    super(args[0], [], [FormioControl.customValidator.bind(FormioControl)]);\r\n  }\r\n\r\n  setInstance(instance: any) {\r\n    this.instance = instance;\r\n    const setCustomValidity = instance.setCustomValidity;\r\n    instance.setCustomValidity = (message: any, dirty, external, isWarning = false) => {\r\n      let decodedMessage = message;\r\n      if (Array.isArray(message)) {\r\n        decodedMessage = message.map(msg => Object.assign(msg, { message: unescape(msg.message) }));\r\n      }\r\n      else if (message) {\r\n        decodedMessage = unescape(message);\r\n      }\r\n\r\n      setCustomValidity.call(instance, decodedMessage, dirty, external, isWarning);\r\n      if (instance.validateResolve) {\r\n        instance.validateResolve(decodedMessage ? {custom: true} : null);\r\n      }\r\n    };\r\n  }\r\n}\r\n","import {Component, Input, ViewChild, ElementRef, ChangeDetectorRef, AfterViewInit, OnInit} from '@angular/core';\r\nimport FormioComponent from './Base';\r\nimport Validator from 'formiojs/validator/Validator.js';\r\nimport { FormioControl } from '../FormioControl';\r\nimport get from 'lodash/get';\r\n\r\n@Component({\r\n  selector: 'mat-formio-comp',\r\n  template: '<mat-card appearance=\"outlined\">Unknown Component: {{ instance.component.type }}</mat-card>'\r\n})\r\nexport class MaterialComponent implements AfterViewInit, OnInit {\r\n  @Input() instance: any;\r\n  @ViewChild('input') input: ElementRef;\r\n  @Input() control: FormioControl = new FormioControl();\r\n  constructor(public element: ElementRef, public ref: ChangeDetectorRef) {}\r\n\r\n  setInstance(instance: any) {\r\n    this.control.setInstance(instance);\r\n    instance.materialComponent = this;\r\n    this.instance = instance;\r\n    this.instance.disabled = this.instance.shouldDisabled;\r\n    this.setVisible(this.instance.visible);\r\n    this.renderComponents();\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.instance) {\r\n      if (this.shouldValidateOnInit()) {\r\n        this.storeFormData();\r\n        this.validateOnInit();\r\n      }\r\n      this.instance.component.defaultValue ? this.setValue(this.instance.component.defaultValue) : '';\r\n    }\r\n  }\r\n\r\n  validateOnInit() {\r\n    const {key} = this.instance.component;\r\n    const validationValue = this.getFormValue(this.instance.path);\r\n\r\n    if (validationValue === null) {\r\n      return;\r\n    }\r\n\r\n    this.instance.setPristine(false);\r\n\r\n    const validationResult = Validator.checkComponent(\r\n      this.instance,\r\n      {[key]: validationValue},\r\n      {[key]: validationValue}\r\n    );\r\n\r\n    if (validationResult.length) {\r\n      this.instance.setCustomValidity(validationResult, false);\r\n      if (!!validationValue) {\r\n        this.control.markAsTouched();\r\n      }\r\n      this.ref.detectChanges();\r\n    }\r\n  }\r\n\r\n  storeFormData() {\r\n    if (this.instance.parent && this.instance.parent.submission && this.instance.parent.submission.data) {\r\n      sessionStorage.setItem('formData', JSON.stringify(this.instance.parent.submission.data));\r\n    }\r\n  }\r\n\r\n  getFormValue(path) {\r\n    const formData = JSON.parse(sessionStorage.getItem('formData'));\r\n\r\n    if (!formData) {\r\n      return null;\r\n    }\r\n\r\n    return get(formData, path);\r\n  }\r\n\r\n  renderComponents() {}\r\n\r\n  onChange(keepInputRaw?: boolean) {\r\n    let value = this.getValue();\r\n\r\n    if (value === undefined || value === null) {\r\n      value = this.instance.emptyValue;\r\n    }\r\n\r\n    if (this.input && this.input.nativeElement.mask && value && !keepInputRaw) {\r\n      this.input.nativeElement.mask.textMaskInputElement.update(value);\r\n      this.control.setValue(this.input.nativeElement.value);\r\n      value = this.getValue();\r\n    }\r\n    this.instance.updateValue(value, {modified: true});\r\n  }\r\n\r\n  getValue() {\r\n    return this.control.value;\r\n  }\r\n\r\n  setValue(value) {\r\n    this.control.setValue(value);\r\n  }\r\n\r\n  beforeSubmit() {\r\n    this.control.markAsTouched();\r\n  }\r\n\r\n  hasError() {\r\n    return !!this.instance && !!this.instance.error;\r\n  }\r\n\r\n  shouldValidateOnInit() {\r\n    if (!this.instance) {\r\n      return;\r\n    }\r\n\r\n    return this.instance.options.validateOnInit\r\n      || this.instance.parent.options.validateOnInit;\r\n  }\r\n\r\n  setDisabled(disabled) {\r\n    if (disabled) {\r\n      this.control.disable();\r\n    } else {\r\n      this.control.enable();\r\n    }\r\n  }\r\n\r\n  setVisible(visible) {\r\n    if (this.element && this.element.nativeElement) {\r\n      if (visible) {\r\n        this.element.nativeElement.removeAttribute('hidden');\r\n        this.element.nativeElement.style.visibility = 'visible';\r\n        this.element.nativeElement.style.position = 'relative';\r\n      } else {\r\n        this.element.nativeElement.setAttribute('hidden', true);\r\n        this.element.nativeElement.style.visibility = 'hidden';\r\n        this.element.nativeElement.style.position = 'absolute';\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.element && this.element.nativeElement && this.instance) {\r\n      // Add custom classes to elements.\r\n      if (this.instance.component.customClass) {\r\n        this.element.nativeElement.classList.add(this.instance.component.customClass);\r\n      }\r\n    }\r\n\r\n    if (this.input) {\r\n      // Set the input masks.\r\n      const mask = this.instance?.component?.inputMask || this.instance?.component?.mask;\r\n      if (mask) {\r\n        this.instance.setInputMask(this.input.nativeElement);\r\n      }\r\n      this.instance.addFocusBlurEvents(this.input.nativeElement);\r\n    }\r\n  }\r\n}\r\n\r\nFormioComponent.MaterialComponent = MaterialComponent;\r\nexport { FormioComponent };\r\n","export enum LabelPositions {\r\n  RIGHT_RIGHT = 'right-right',\r\n  RIGHT_LEFT = 'right-left',\r\n  LEFT_LEFT = 'left-left',\r\n  LEFT_RIGHT = 'left-right',\r\n  BOTTOM = 'bottom',\r\n  TOP = 'top',\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  // tslint:disable-next-line:component-selector\r\n  selector: 'span[matFormioLabel]',\r\n  templateUrl: './label.component.html',\r\n  styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent {\r\n  @Input() instance;\r\n}\r\n","<ng-container *ngIf=\"instance\">\r\n  {{ instance.component.label }}<span class=\"required-star\" *ngIf=\"instance.component.validate.required\">*</span>\r\n  <mat-icon *ngIf=\"instance.component.tooltip\" style=\"font-size: 1rem;\"\r\n            matTooltip=\"{{ instance.component.tooltip }}\" matSuffix\r\n  >\r\n    info\r\n  </mat-icon>\r\n</ng-container>\r\n","import { Component, Input, TemplateRef } from '@angular/core';\r\nimport { LabelPositions } from '../../const/LabelPositions';\r\n\r\n@Component({\r\n  selector: 'mat-formio-form-field',\r\n  templateUrl: './formio-form-field.component.html',\r\n  styleUrls: ['./formio-form-field.component.css']\r\n})\r\nexport class FormioFormFieldComponent {\r\n  private _instance;\r\n  public labelPositions = LabelPositions;\r\n  @Input() labelTemplate: TemplateRef<any>;\r\n  @Input() renderTopLabel = false;\r\n  @Input() showDescription = true;\r\n  @Input() renderElementOnly = false;\r\n\r\n  @Input('instance')\r\n  set instance(instance) {\r\n    this._instance = instance;\r\n    if (instance) {\r\n      this.componentTemplateContext = {$implicit: this.hasLabel(['top'])};\r\n    }\r\n  }\r\n\r\n  get instance() {\r\n    return this._instance;\r\n  }\r\n\r\n  @Input() componentTemplate: TemplateRef<any>;\r\n  componentTemplateContext;\r\n\r\n  hasLabel(labelPositions?: string[]) {\r\n    const { component } = this.instance;\r\n    const hasNoLabel = !component.label || component.hideLabel;\r\n    const labelPositionIsNotSpecified = !labelPositions ||\r\n                                        !labelPositions.length ||\r\n                                        !component.labelPosition;\r\n\r\n    if (hasNoLabel || labelPositionIsNotSpecified || this.renderElementOnly) {\r\n      return false;\r\n    }\r\n\r\n    if (labelPositions.includes(component.labelPosition)) {\r\n      return true;\r\n    }\r\n  }\r\n}\r\n","<div class=\"mat-formio-component-wrapper\" *ngIf=\"instance && !renderElementOnly\"\r\n     [ngClass]=\"{\r\n        'mat-formio-label-right': hasLabel([labelPositions.RIGHT_RIGHT, labelPositions.RIGHT_LEFT]),\r\n        'mat-formio-label-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.LEFT_RIGHT])\r\n     }\"\r\n>\r\n  <span *ngIf=\"renderTopLabel && hasLabel([labelPositions.TOP])\"\r\n        class=\"mat-formio-label\"\r\n        [ngClass]=\"{\r\n          'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\r\n          'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\r\n        }\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\r\n  </span>\r\n\r\n  <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\r\n\r\n  <span *ngIf=\"hasLabel([\r\n                          labelPositions.BOTTOM,\r\n                          labelPositions.RIGHT_RIGHT,\r\n                          labelPositions.RIGHT_LEFT,\r\n                          labelPositions.LEFT_LEFT,\r\n                          labelPositions.LEFT_RIGHT\r\n                        ])\"\r\n        class=\"mat-formio-label\"\r\n        [ngClass]=\"{\r\n          'mat-formio-label-align-right': hasLabel([labelPositions.LEFT_RIGHT, labelPositions.RIGHT_RIGHT]),\r\n          'mat-formio-label-align-left': hasLabel([labelPositions.LEFT_LEFT, labelPositions.RIGHT_LEFT])\r\n        }\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"labelTemplate || defaultLabel\"></ng-container>\r\n  </span>\r\n\r\n  <mat-hint *ngIf=\"showDescription && instance.component.description\" class=\"mat-formio-component-description\">\r\n    {{ instance.component.description }}\r\n  </mat-hint>\r\n</div>\r\n\r\n<div class=\"mat-formio-component-wrapper\" *ngIf=\"renderElementOnly\">\r\n  <div class=\"mat-formio-component\" *ngTemplateOutlet=\"componentTemplate; context: componentTemplateContext\"></div>\r\n</div>\r\n\r\n<ng-template #defaultLabel>\r\n  <mat-label>\r\n    <span style=\"display: block;\"\r\n          [instance]=\"instance\" matFormioLabel>\r\n    </span>\r\n  </mat-label>\r\n</ng-template>\r\n","import { Component, OnInit, AfterContentInit } from '@angular/core';\r\nimport TextFieldComponent from 'formiojs/components/textfield/TextField.js';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\n\r\nexport const TEXTFIELD_TEMPLATE = `\r\n  <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n  <ng-template #componentTemplate let-hasLabel>\r\n    <mat-form-field [appearance]=\"getFormFieldAppearance()\" fxFill>\r\n\r\n      <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n      </mat-label>\r\n\r\n      <span *ngIf=\"instance.component.prefix && instance.type !== 'currency'\"\r\n            matPrefix\r\n      >\r\n        {{ instance.component.prefix }}&nbsp;\r\n      </span>\r\n      <input matInput\r\n            type=\"{{ inputType }}\"\r\n            [formControl]=\"control\"\r\n            [placeholder]=\"instance.component.placeholder\"\r\n            (input)=\"onChange()\" #input\r\n            [ngClass]=\"{ 'show-invalid': inputType=='email' }\"\r\n      >\r\n      <span *ngIf=\"instance.component.suffix\" matSuffix>{{ instance.component.suffix }}</span>\r\n\r\n      <mat-hint *ngIf=\"instance.component.showWordCount || instance.component.showCharCount\">\r\n        {{ getHint() }}\r\n      </mat-hint>\r\n\r\n      <br/>\r\n      <mat-error *ngIf=\"isError()\" >{{ getErrorMessage() }}</mat-error>\r\n    </mat-form-field>\r\n  </ng-template>\r\n`;\r\n\r\n@Component({\r\n  selector: 'mat-formio-textfield',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialTextfieldComponent extends MaterialComponent implements AfterContentInit {\r\n  public inputType = 'text';\r\n  controlHasError: boolean;\r\n\r\n  ngAfterContentInit() {\r\n    if (this.instance && this.control && this.instance.component.disabled) {\r\n      this.control.disable();\r\n    }\r\n  }\r\n\r\n  getHint() {\r\n    if (!this.instance || !this.control || !this.control.value) {\r\n      return '';\r\n    }\r\n\r\n    const { showWordCount, showCharCount } = this.instance.component;\r\n\r\n    if (showWordCount && showCharCount) {\r\n      return `${this.getWordsCount()} words, ${this.control.value.length} characters`;\r\n    } else if (showWordCount) {\r\n      return `${this.getWordsCount()} words`;\r\n    } else {\r\n      return `${this.control.value.length} characters`;\r\n    }\r\n  }\r\n\r\n  getWordsCount() {\r\n    const matches = this.control.value ? this.control.value.match(/[\\w\\d’'-]+/gi) : [];\r\n    return matches ? matches.length : 0;\r\n  }\r\n\r\n  getFormFieldAppearance() {\r\n    const appearances = ['legacy', 'standard', 'fill', 'outline'];\r\n    const appearance = this.instance.component.appearance ? this.instance.component.appearance.toLowerCase() : '';\r\n    return appearances.includes(appearance) ? appearance : undefined;\r\n  }\r\n\r\n  isError() {\r\n    if (this.instance.error) {\r\n      this.control.setErrors(this.instance.component.validate);\r\n      return true;\r\n    }\r\n    else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  getErrorMessage() {\r\n    if (this.instance.error && this.instance.error.messages) {\r\n      const { messages } = this.instance.error;\r\n\r\n      if (messages.length) {\r\n        for (const msg of messages) {\r\n          //this.control.hasError(msg.context.validator)\r\n          if (this.instance.type == 'phoneNumber' || this.instance.type == 'email') {\r\n            this.controlHasError = true;\r\n          } else {\r\n            this.controlHasError = this.control.hasError(msg.context.validator)\r\n          }\r\n          if (msg.context && this.controlHasError) {\r\n            if (this.instance && this.instance.parent && this.instance.parent._data) {\r\n              if (this.instance.parent._data.submit) {\r\n                this.control.markAllAsTouched();\r\n              }\r\n            }\r\n            return this.instance.error ? this.instance.error.message : '';\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\nTextFieldComponent.MaterialComponent = MaterialTextfieldComponent;\r\nexport { TextFieldComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport PasswordComponent from 'formiojs/components/password/Password.js';\r\n@Component({\r\n  selector: 'mat-formio-password',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialPasswordComponent extends MaterialTextfieldComponent {\r\n  public inputType = 'password';\r\n}\r\nPasswordComponent.MaterialComponent = MaterialPasswordComponent;\r\nexport { PasswordComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport EmailComponent from 'formiojs/components/email/Email.js';\r\n@Component({\r\n  selector: 'mat-formio-email',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialEmailComponent extends MaterialTextfieldComponent {\r\n  public inputType = 'email';\r\n}\r\nEmailComponent.MaterialComponent = MaterialEmailComponent;\r\nexport { EmailComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport UrlComponent from 'formiojs/components/url/Url.js';\r\n@Component({\r\n  selector: 'mat-formio-url',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialUrlComponent extends MaterialTextfieldComponent {\r\n  public inputType = 'url';\r\n}\r\nUrlComponent.MaterialComponent = MaterialUrlComponent;\r\nexport { UrlComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport PhoneNumberComponent from 'formiojs/components/phonenumber/PhoneNumber.js';\r\n@Component({\r\n  selector: 'mat-formio-phonenumber',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialPhoneNumberComponent extends MaterialTextfieldComponent {\r\n  public inputType = 'text';\r\n}\r\nPhoneNumberComponent.MaterialComponent = MaterialPhoneNumberComponent;\r\nexport { PhoneNumberComponent };\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\r\nimport { MaterialTextfieldComponent, TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport NumberComponent from 'formiojs/components/number/Number.js';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n  selector: 'mat-formio-number',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialNumberComponent extends MaterialTextfieldComponent implements AfterViewInit {\r\n  public inputType = 'text';\r\n\r\n  constructor(public element: ElementRef, public ref: ChangeDetectorRef, private renderer: Renderer2) {\r\n    super(element, ref);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    super.ngAfterViewInit();\r\n    if (this.instance) {\r\n      const { instance } = this;\r\n\r\n        this.renderer.listen(this.input.nativeElement, 'blur', () => {\r\n          let value = instance.parseValue(this.control.value);\r\n          value = instance.formatValue(value);\r\n          value = instance.getValueAsString(value);\r\n          this.control.setValue(value);\r\n        });\r\n\r\n    }\r\n  }\r\n\r\n  getValue() {\r\n    let value = this.control.value;\r\n    if (value && this.instance) {\r\n      value = value.replace(this.instance.prefix, '');\r\n      return !_.isNil(value) && value !== '' ? this.instance.parseNumber(value) : value;\r\n    }\r\n    return value;\r\n  }\r\n\r\n  setValue(value) {\r\n    if (this.instance) {\r\n      const { instance } = this;\r\n      value = instance.formatValue(instance.parseValue(value));\r\n    }\r\n    else {\r\n      value = value.toString();\r\n    }\r\n\r\n    return super.setValue(value);\r\n  }\r\n\r\n  onChange() {\r\n    super.onChange(true);\r\n  }\r\n}\r\nNumberComponent.MaterialComponent = MaterialNumberComponent;\r\nexport { NumberComponent };\r\n","import { Component } from '@angular/core';\r\nimport { TEXTFIELD_TEMPLATE } from '../textfield/textfield.component';\r\nimport { MaterialNumberComponent } from '../number/number.component';\r\nimport CurrencyComponent from 'formiojs/components/currency/Currency.js';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n  selector: 'mat-formio-currency',\r\n  template: TEXTFIELD_TEMPLATE\r\n})\r\nexport class MaterialCurrencyComponent extends MaterialNumberComponent {\r\n  public inputType = 'text';\r\n\r\n  onChange() {\r\n    let newValue;\r\n     newValue = _.isNil(this.getValue()) ? '' : this.getValue();\r\n    if(!(Number.isNaN(newValue))){\r\n      this.instance.updateValue(newValue, {modified: true});\r\n    } else {\r\n      newValue = '';\r\n      this.instance.updateValue(newValue, {modified: true});\r\n    }\r\n  }\r\n}\r\nCurrencyComponent.MaterialComponent = MaterialCurrencyComponent;\r\nexport { CurrencyComponent };\r\n","import { Component } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport DayComponent from 'formiojs/components/day/Day.js';\r\nimport { momentDate } from 'formiojs/utils/utils.js';\r\nDayComponent.prototype.getFieldValue = function(name) {\r\n  return this.refs[name] ? this.refs[name].value : '';\r\n};\r\n\r\n@Component({\r\n  selector: 'mat-formio-day',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-label *ngIf=\"hasLabel\">\r\n        <span [instance]=\"instance\" matFormioLabel></span>\r\n      </mat-label>\r\n      <mat-form-field *ngIf=\"instance.dayFirst && instance.showDay\">\r\n        <mat-label *ngIf=\"!instance.component.hideInputLabels\">Day</mat-label>\r\n        <mat-select [formControl]=\"dayControl\" (selectionChange)=\"onChange()\" [required]=\"instance.dayRequired\">\r\n          <mat-option *ngFor=\"let day of instance.days\" [value]=\"day.value\">\r\n            {{day.label}}\r\n          </mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n      <mat-form-field *ngIf=\"instance.showMonth\">\r\n        <mat-label *ngIf=\"!instance.component.hideInputLabels\">Month</mat-label>\r\n        <mat-select [formControl]=\"monthControl\" (selectionChange)=\"onChange()\" [required]=\"instance.monthRequired\">\r\n          <mat-option *ngFor=\"let month of instance.months\" [value]=\"month.value\">\r\n            {{month.label}}\r\n          </mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n      <mat-form-field *ngIf=\"!instance.dayFirst && instance.showDay\">\r\n        <mat-label *ngIf=\"!instance.component.hideInputLabels\">Day</mat-label>\r\n        <mat-select [formControl]=\"dayControl\" (selectionChange)=\"onChange()\" [required]=\"instance.dayRequired\">\r\n          <mat-option *ngFor=\"let day of instance.days\" [value]=\"day.value\">\r\n            {{day.label}}\r\n          </mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n      <mat-form-field *ngIf=\"instance.showYear\">\r\n        <mat-label *ngIf=\"!instance.component.hideInputLabels\">Year</mat-label>\r\n        <mat-select [formControl]=\"yearControl\" (selectionChange)=\"onChange()\" [required]=\"instance.yearRequired\">\r\n          <mat-option *ngFor=\"let year of instance.years\" [value]=\"year.value\">\r\n            {{year.label}}\r\n          </mat-option>\r\n        </mat-select>\r\n      </mat-form-field>\r\n      <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialDayComponent extends MaterialComponent {\r\n  public dayControl: FormControl = new FormControl();\r\n  public monthControl: FormControl = new FormControl();\r\n  public yearControl: FormControl = new FormControl();\r\n  setInstance(instance) {\r\n    // Add stub methods to match dom elements.\r\n    (this.dayControl as any).setAttribute = () => {};\r\n    (this.dayControl as any).removeAttribute = () => {};\r\n    (this.monthControl as any).setAttribute = () => {};\r\n    (this.monthControl as any).removeAttribute = () => {};\r\n    (this.yearControl as any).setAttribute = () => {};\r\n    (this.yearControl as any).removeAttribute = () => {};\r\n    instance.refs = {\r\n      day: this.dayControl,\r\n      month: this.monthControl,\r\n      year: this.yearControl\r\n    };\r\n    return super.setInstance(instance);\r\n  }\r\n\r\n  setDisabled(disabled) {\r\n    if (disabled) {\r\n      this.dayControl.disable();\r\n      this.monthControl.disable();\r\n      this.yearControl.disable();\r\n    } else {\r\n      this.dayControl.enable();\r\n      this.monthControl.enable();\r\n      this.yearControl.enable();\r\n    }\r\n  }\r\n\r\n  getValue() {\r\n    return this.instance.getDate();\r\n  }\r\n\r\n  setValue(value) {\r\n    if (value) {\r\n      this.dayControl.setValue(parseInt(momentDate(value).format('D')));\r\n      this.monthControl.setValue(parseInt(momentDate(value).format('M')));\r\n      this.yearControl.setValue(parseInt(momentDate(value).format('YYYY')));\r\n    }\r\n    this.instance.setValueAt(0, value);\r\n  }\r\n}\r\nDayComponent.MaterialComponent = MaterialDayComponent;\r\nexport { DayComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport HiddenComponent from 'formiojs/components/hidden/Hidden.js';\r\n@Component({\r\n  selector: 'mat-formio-hidden',\r\n  template: `<input matInput type=\"hidden\" [formControl]=\"control\" #input>`\r\n})\r\nexport class MaterialHiddenComponent extends MaterialComponent {}\r\nHiddenComponent.MaterialComponent = MaterialHiddenComponent;\r\nexport { HiddenComponent };\r\n","import { Component, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport HtmlComponent from 'formiojs/components/html/HTML.js';\r\n\r\n@Component({\r\n  selector: 'mat-formio-html',\r\n  template: `<div #htmlBody></div>`\r\n})\r\nexport class MaterialHtmlComponent extends MaterialComponent implements AfterViewInit {\r\n  @ViewChild('htmlBody') htmlBody: ElementRef;\r\n\r\n  ngAfterViewInit() {\r\n    super.ngAfterViewInit();\r\n    if (this.instance.component.refreshOnChange) {\r\n      this.instance.checkRefreshOn = () => {\r\n        this.htmlBody.nativeElement.innerHTML = this.instance.renderContent();\r\n      };\r\n    }\r\n  }\r\n}\r\nHtmlComponent.MaterialComponent = MaterialHtmlComponent;\r\nexport { HtmlComponent };\r\n","import { Component } from '@angular/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport TagsComponent from 'formiojs/components/tags/Tags.js';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\n\r\n@Component({\r\n  selector: 'mat-formio-tags',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-form-field class=\"example-chip-list\" fxFill>\r\n\r\n        <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n\r\n        <mat-chip-grid #chipList [attr.aria-label]=\"instance.component.label\">\r\n          <mat-chip-row *ngFor=\"let tag of tags; index as i;\"\r\n                    [removable]=\"true\"\r\n                    (removed)=\"remove(i)\"\r\n          >\r\n            {{tag}}\r\n            <mat-icon matChipRemove>cancel</mat-icon>\r\n          </mat-chip-row>\r\n\r\n          <input [formControl]=\"control\"\r\n                 [matChipInputFor]=\"chipList\"\r\n                 [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n                 [matChipInputAddOnBlur]=\"true\"\r\n                 (matChipInputTokenEnd)=\"add($event)\"\r\n          >\r\n        </mat-chip-grid>\r\n      </mat-form-field>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialTagsComponent extends MaterialComponent {\r\n  readonly separatorKeysCodes: number[] = [ENTER, COMMA];\r\n  tags: string[] = [];\r\n  add(event: MatChipInputEvent): void {\r\n    const input = event.input;\r\n    const value = event.value;\r\n    if ((value || '').trim()) {\r\n      this.tags.push(value.trim());\r\n    }\r\n    if (input) {\r\n      input.value = '';\r\n    }\r\n    this.onChange();\r\n  }\r\n\r\n  remove(index): void {\r\n    if (index >= 0 && index < this.tags.length) {\r\n      this.tags.splice(index, 1);\r\n    }\r\n    this.onChange();\r\n  }\r\n\r\n  getValue() {\r\n    return (this.instance.component.storeas === 'string') ? this.tags.join(this.instance.delimiter) : this.tags;\r\n  }\r\n\r\n  setValue(value) {\r\n    if (typeof value === 'string') {\r\n      value = value.split(this.instance.delimiter);\r\n    }\r\n    if (value && !Array.isArray(value)) {\r\n      value = [value];\r\n    }\r\n    this.tags = value;\r\n  }\r\n}\r\n(TagsComponent as any).MaterialComponent = MaterialTagsComponent;\r\nexport { TagsComponent };\r\n","export enum ButtonsThemes {\r\n  PRIMARY = 'primary',\r\n  SECONDARY = 'secondary',\r\n  INFO = 'info',\r\n  WARNING = 'warning',\r\n  DANGER = 'danger',\r\n  SUCCESS = 'success'\r\n}\r\n\r\nexport enum AngularButtonsThemes {\r\n  WARN = 'warn',\r\n  PRIMARY = 'primary',\r\n  BASIC = 'basic',\r\n  ACCENT = 'accent'\r\n}\r\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\r\nimport ButtonComponent from 'formiojs/components/button/Button.js';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport { AngularButtonsThemes, ButtonsThemes } from '../../const/ButtonsThemes';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\n@Component({\r\n  selector: 'mat-formio-button',\r\n  templateUrl: './button.component.html',\r\n  styleUrls: ['./button.component.css']\r\n})\r\nexport class MaterialButtonComponent extends MaterialComponent {\r\n  public loading = false;\r\n  public done = false;\r\n  public error = false;\r\n  public disabled = false;\r\n  public clicked = false;\r\n  walkmeClass: string = '';\r\n  constructor(public element: ElementRef, public ref: ChangeDetectorRef, private dialog: MatDialog) {\r\n    super(element, ref);\r\n  }\r\n  get color() {\r\n    if (this.error) {\r\n      return AngularButtonsThemes.WARN;\r\n    }\r\n    const theme = this.angularButtonTheme;\r\n    return theme || AngularButtonsThemes.PRIMARY;\r\n  }\r\n\r\n  get angularButtonTheme() {\r\n    switch (this.instance.component.theme) {\r\n      case ButtonsThemes.PRIMARY:\r\n        return AngularButtonsThemes.PRIMARY;\r\n\r\n      case ButtonsThemes.WARNING:\r\n        return AngularButtonsThemes.ACCENT;\r\n\r\n      case ButtonsThemes.DANGER:\r\n        return AngularButtonsThemes.WARN;\r\n\r\n      case ButtonsThemes.SECONDARY:\r\n        return AngularButtonsThemes.BASIC;\r\n\r\n      default:\r\n        return '';\r\n    }\r\n  }\r\n\r\n  get buttonClass() {\r\n    let className = this.instance.component.block ? 'mat-formio-button-block' : '';\r\n    className += this.instance.component.size ? ` mat-formio-button-${this.instance.component.size}` : '';\r\n    className += !this.angularButtonTheme ? ` mat-formio-theme-${this.instance.component.theme}` : '';\r\n    const attributes = this.instance?.component?.attributes;\r\n    if (attributes) {\r\n      const buttonType = attributes.buttonType || '';\r\n      const programName = attributes.programName || '';\r\n      this.walkmeClass = `walkme-${buttonType}-${programName}`.toLowerCase();\r\n    }\r\n    return className;\r\n  }\r\n\r\n  onClick(event) {\r\n    this.clicked = true;\r\n    this.instance.onClick(event);\r\n  }\r\n\r\n  getValue() {\r\n    return this.clicked;\r\n  }\r\n\r\n  setState(loading, error, done) {\r\n    this.loading = loading;\r\n    this.done = done;\r\n    this.error = error;\r\n  }\r\n\r\n  getIconFontSet(icon: string) {\r\n    const fontSet = icon.split(' ')[0];\r\n    return fontSet;\r\n  }\r\n\r\n  getIconName(icon: string) {\r\n    return icon.replace(this.getIconFontSet(icon), '');\r\n  }\r\n\r\n  setInstance(instance) {\r\n    const retVal = super.setInstance(instance);\r\n    this.disabled = instance.shouldDisabled;\r\n    instance.on('submitButton', () => this.setState(true, false, false));\r\n    instance.on('submitDone', () => this.setState(false, false, true));\r\n    instance.on('submitError', () => this.setState(false, true, false));\r\n    instance.on('requestButton', () => this.setState(true, false, false));\r\n    instance.on('requestDone', () => this.setState(false, false, true));\r\n    instance.on('change', (event) => {\r\n      this.disabled = this.instance.shouldDisabled || (this.instance.component.disableOnInvalid && !event.isValid);\r\n      if (event.isValid) {\r\n        this.loading = false;\r\n        this.error = false;\r\n      }\r\n    });\r\n    return retVal;\r\n  }\r\n}\r\nButtonComponent.MaterialComponent = MaterialButtonComponent;\r\nexport { ButtonComponent };\r\n","<button *ngIf=\"instance && instance.component.label != 'Click to add Products'\"\r\n        [ngClass]=\"[buttonClass, walkmeClass]\"\r\n        type=\"{{ instance.component.action }}\"\r\n        mat-raised-button [color]=\"color\"\r\n        [disabled]=\"disabled\"\r\n        (click)=\"instance.onClick($event)\"\r\n>\r\n\r\n\r\n  <mat-icon *ngIf=\"instance.component.leftIcon\">{{instance.component.leftIcon}}</mat-icon>\r\n  <mat-icon *ngIf=\"done\">done</mat-icon>\r\n  <mat-icon *ngIf=\"error\">close</mat-icon>\r\n  <mat-icon class=\"mat-icon-spin\" *ngIf=\"loading\">autorenew</mat-icon>\r\n  {{ instance.component.label }}\r\n  <mat-icon *ngIf=\"instance.component.rightIcon\">{{instance.component.rightIcon}}</mat-icon>\r\n</button>\r\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport TextAreaComponent from 'formiojs/components/textarea/TextArea.js';\r\nimport isNil from 'lodash/isNil';\r\n\r\n@Component({\r\n  selector: 'mat-formio-textarea',\r\n  styleUrls: ['./textarea.component.css'],\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-form-field class=\"mat-formio-textarea\"\r\n                      [ngClass]=\"{'editor-enabled': !!instance.component.editor}\"\r\n                      fxFill\r\n                      fxFlexAlign=\"center\"\r\n      >\r\n        <mat-label fxFill *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n        <span *ngIf=\"instance.component.prefix\" matPrefix>{{ instance.component.prefix }}&nbsp;</span>\r\n        <textarea matInput\r\n                  [placeholder]=\"instance.component.placeholder\"\r\n                  [formControl]=\"control\"\r\n                  [rows]=\"(instance.component.rows || 3)\"\r\n                  (input)=\"onChange()\"\r\n                   #textarea\r\n        >\r\n        </textarea>\r\n        <span *ngIf=\"instance.component.suffix\" matSuffix>{{ instance.component.suffix }}</span>\r\n        <mat-error *ngIf=\"instance.error\">{{ getErrorMessage() }}</mat-error>\r\n      </mat-form-field>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialTextareaComponent extends MaterialComponent implements AfterViewInit {\r\n  @ViewChild('textarea') textarea: ElementRef;\r\n\r\n  ngAfterViewInit() {\r\n    if (this.element && this.element.nativeElement && this.instance) {\r\n      // Add custom classes to elements.\r\n      if (this.instance.component.customClass) {\r\n        this.element.nativeElement.classList.add(this.instance.component.customClass);\r\n      }\r\n    }\r\n    // Attach the element so the wysiwyg will work.\r\n    this.instance.attachElement(this.textarea.nativeElement);\r\n  }\r\n\r\n  getErrorMessage() {\r\n    // Check if instance and necessary properties exist\r\n    if (this.instance && this.instance.parent && this.instance.parent._data) {\r\n      if (this.instance.parent._data.submit) {\r\n        this.control.markAllAsTouched();\r\n      }\r\n    }\r\n\r\n    // Return the error message if it exists\r\n    return this.instance.error ? this.instance.error.message : '';\r\n  }\r\n\r\n\r\n  getValue() {\r\n    return isNil(this.control.value) ? '' : this.control.value;\r\n  }\r\n}\r\nTextAreaComponent.MaterialComponent = MaterialTextareaComponent;\r\nexport { TextAreaComponent };\r\n","import { AfterViewInit, Component, QueryList, ViewChildren, ViewContainerRef } from '@angular/core';\r\nimport { MaterialComponent } from './MaterialComponent';\r\n\r\n@Component({\r\n  selector: 'mat-formio-nested',\r\n  template: '<ng-template #components></ng-template>'\r\n})\r\nexport class MaterialNestedComponent extends MaterialComponent implements AfterViewInit {\r\n  public viewContainers;\r\n  @ViewChildren('components', {read: ViewContainerRef}) components: QueryList<ViewContainerRef>;\r\n  setInstance(instance: any) {\r\n    instance.viewContainer = () => {\r\n      return this.viewContainers ? this.viewContainers[0] : null;\r\n    };\r\n    super.setInstance(instance);\r\n  }\r\n\r\n  renderComponents() {\r\n    if (this.instance.renderComponents) {\r\n      this.instance.renderComponents();\r\n    }\r\n  }\r\n\r\n  render() {\r\n    this.viewContainers = this.components.toArray();\r\n    this.renderComponents();\r\n    this.ref.detectChanges();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.components.changes.subscribe(() => this.render());\r\n    this.render();\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport PanelComponent from 'formiojs/components/panel/Panel.js';\r\n@Component({\r\n  selector: 'mat-formio-panel',\r\n  template: `\r\n    <mat-card appearance=\"outlined\" *ngIf=\"!instance.component.collapsible\">\r\n      <mat-card-title *ngIf=\"instance?.component?.title\">\r\n        {{ instance.component.title }}\r\n      </mat-card-title>\r\n      <mat-card-content fxLayout=\"column\" fxLayoutGap=\"1em\">\r\n        <ng-template #components></ng-template>\r\n      </mat-card-content>\r\n    </mat-card>\r\n    <mat-expansion-panel *ngIf=\"instance.component.collapsible\"\r\n                         [expanded]=\"!instance.component.collapsed\"\r\n    >\r\n      <mat-expansion-panel-header *ngIf=\"instance?.component?.title\">\r\n        <mat-panel-title>\r\n          {{ instance.component.title }}\r\n        </mat-panel-title>\r\n      </mat-expansion-panel-header>\r\n      <ng-template #components></ng-template>\r\n    </mat-expansion-panel>\r\n  `,\r\n  styles: [\r\n    ':host { margin-bottom: 1em; }'\r\n  ]\r\n})\r\nexport class MaterialPanelComponent extends MaterialNestedComponent {}\r\nPanelComponent.MaterialComponent = MaterialPanelComponent;\r\nexport { PanelComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport ColumnsComponent from 'formiojs/components/columns/Columns.js';\r\n\r\n@Component({\r\n  selector: 'mat-formio-columns',\r\n  template: `\r\n    <div class=\"container\"\r\n         fxLayout=\"row\"\r\n         fxLayout.xs=\"column\"\r\n         fxLayoutWrap\r\n         fxLayoutGap=\"{{ flexGap }}%\"\r\n         fxLayoutAlign=\"center\"\r\n    >\r\n      <div\r\n        *ngFor=\"let column of instance.component.columns; let i = index\"\r\n        [fxFlex]=\"flexWidth(column, i)\"\r\n        fxLayout=\"column\"\r\n        fxLayoutGap=\"1em\">\r\n        <ng-template #components></ng-template>\r\n      </div>\r\n    </div>\r\n  `,\r\n  styles: []\r\n})\r\nexport class MaterialColumnsComponent extends MaterialNestedComponent {\r\n  public flexGap = 0.5;\r\n  public totalSpace = 0;\r\n  setInstance(instance: any) {\r\n    this.totalSpace = 100 - ((instance.component.columns.length - 1) * this.flexGap);\r\n    super.setInstance(instance);\r\n    instance.viewContainer = (component) => {\r\n      return this.viewContainers ? this.viewContainers[component.column] : null;\r\n    };\r\n  }\r\n\r\n  flexWidth(column, index) {\r\n    if (index >= (this.instance.component.columns.length - 1)) {\r\n      return Math.ceil(((parseFloat(column.width) / 12) * this.totalSpace)) + '%';\r\n    } else {\r\n      return Math.floor(((parseFloat(column.width) / 12) * this.totalSpace)) + '%';\r\n    }\r\n  }\r\n}\r\nColumnsComponent.MaterialComponent = MaterialColumnsComponent;\r\nexport { ColumnsComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport ContainerComponent from 'formiojs/components/container/Container.js';\r\n@Component({\r\n  selector: 'mat-formio-container',\r\n  template: `\r\n    <div fxLayout=\"column\" fxLayoutGap=\"1em\">\r\n      <ng-template #components></ng-template>\r\n    </div>`\r\n})\r\nexport class MaterialContainerComponent extends MaterialNestedComponent { }\r\nContainerComponent.MaterialComponent = MaterialContainerComponent;\r\nexport { ContainerComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport TabsComponent from 'formiojs/components/tabs/Tabs.js';\r\n\r\n@Component({\r\n  selector: 'mat-formio-tabs',\r\n  template: `\r\n    <mat-tab-group>\r\n      <mat-tab *ngFor=\"let tab of instance.component.components\" [label]=\"tab.label\">\r\n        <div fxLayout=\"column\" fxLayoutGap=\"1em\" style=\"border: 1px dotted rgba(0, 0, 0, 0.125)\">\r\n          <ng-template #components></ng-template>\r\n        </div>\r\n      </mat-tab>\r\n    </mat-tab-group>\r\n  `\r\n})\r\nexport class MaterialTabsComponent extends MaterialNestedComponent {\r\n  setInstance(instance: any) {\r\n    super.setInstance(instance);\r\n    instance.viewContainer = (component) => {\r\n      return this.viewContainers ? this.viewContainers[component.tab] : null;\r\n    };\r\n  }\r\n}\r\nTabsComponent.MaterialComponent = MaterialTabsComponent;\r\nexport { TabsComponent };\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport TimeComponent from 'formiojs/components/time/Time.js';\r\nimport * as moment_ from 'moment';\r\n@Component({\r\n  selector: 'mat-formio-time',\r\n  template: `\r\n    <mat-formio-form-field\r\n      [instance]=\"instance\"\r\n      [componentTemplate]=\"componentTemplate\"\r\n      [renderElementOnly]=\"renderElementOnly\"\r\n    ></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-label fxFill *ngIf=\"hasLabel\">\r\n        <span [instance]=\"instance\" matFormioLabel></span>\r\n      </mat-label>\r\n\r\n      <div style=\"display: block\">\r\n        <div fxLayout=\"row\" fxLayoutGap=\"5%\">\r\n          <input\r\n            [formControl]=\"hourControl\"\r\n            [step]=\"hourStep\"\r\n            [min]=\"0\"\r\n            [max]=\"12\"\r\n            type=\"number\"\r\n            fxFlex=\"25%\"\r\n            (input)=\"onChange()\"\r\n          >\r\n          <input\r\n            [formControl]=\"minuteControl\"\r\n            [step]=\"minuteStep\"\r\n            [min]=\"0\"\r\n            [max]=\"59\"\r\n            type=\"number\"\r\n            fxFlex=\"25%\"\r\n            (input)=\"onChange()\"\r\n          >\r\n          <input\r\n            [formControl]=\"secondControl\"\r\n            [step]=\"secondStep\"\r\n            [min]=\"0\"\r\n            [max]=\"59\"\r\n            type=\"number\"\r\n            fxFlex=\"25%\"\r\n            (input)=\"onChange()\"\r\n            *ngIf=\"instance?.component?.dataFormat === 'HH:mm:ss' ||\r\n             instance?.component?.dataFormat === 'HH:mm:ss.SSS'\"\r\n          >\r\n          <button\r\n            [disabled]=\"instance?.component?.disabled\"\r\n            fxFlex=\"25%\"\r\n            (click)=\"changePeriod()\"\r\n          >\r\n            {{period}}\r\n          </button>\r\n        </div>\r\n        <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n      </div>\r\n    </ng-template>\r\n  `\r\n})\r\n\r\nexport class MaterialTimeComponent extends MaterialComponent {\r\n  public disabled = false;\r\n  public period = 'AM';\r\n  public hourControl: FormControl = new FormControl();\r\n  public minuteControl: FormControl = new FormControl();\r\n  public secondControl: FormControl = new FormControl();\r\n  @Output() selectedEvent = new EventEmitter<any>();\r\n  @Input() hourStep = 1;\r\n  @Input() minuteStep = 1;\r\n  @Input() secondStep = 1;\r\n  @Input() renderElementOnly = false;\r\n\r\n  setDisabled(disabled) {\r\n    if (disabled) {\r\n      this.hourControl.disable();\r\n      this.minuteControl.disable();\r\n      this.secondControl.disable();\r\n    }\r\n  }\r\n\r\n  get dataFormat() {\r\n    let format = this.instance.component.dataFormat;\r\n    format = format ? format : 'HH:mm';\r\n    return format;\r\n  }\r\n\r\n  setInstance(instance) {\r\n    super.setInstance(instance);\r\n    // this.control.setValue('00:00:00');\r\n    this.onChange();\r\n  }\r\n\r\n  onChange() {\r\n    const hours = this.hourControl.value;\r\n    const minutes = this.minuteControl.value || '00';\r\n    const seconds = this.secondControl.value || '';\r\n    const rawValue = `${hours || '00'}:${minutes}${seconds ? ':' + seconds : ''} ${this.period}`;\r\n    let value = this.getTwentyFourHourTime(rawValue);\r\n\r\n    if (!hours) {\r\n      value = this.instance.emptyValue;\r\n    }\r\n\r\n    this.control.setValue(value);\r\n    if (this.instance) {\r\n      super.onChange();\r\n    }\r\n    this.selectedEvent.emit(this.control);\r\n  }\r\n\r\n  setValue(value) {\r\n    if (!value) {\r\n      return;\r\n    }\r\n    super.setValue(value);\r\n    const [hourValue, minuteValue, period] = value.split(':');\r\n    this.hourControl.setValue(hourValue);\r\n    this.minuteControl.setValue(minuteValue);\r\n    // fix for default value with seconds instead of period\r\n    this.period = period === ('AM' || 'PM') ? period : this.period;\r\n  }\r\n\r\n  getTwentyFourHourTime(amPmString) {\r\n    const moment = moment_;\r\n    return moment(amPmString, ['h:mm:ss A']).format(this.dataFormat);\r\n  }\r\n\r\n  changePeriod() {\r\n    this.period = this.period === 'AM' ? 'PM' : 'AM';\r\n    this.onChange();\r\n  }\r\n}\r\n\r\nTimeComponent.MaterialComponent = MaterialTimeComponent;\r\nexport { TimeComponent };\r\n","import {Component, EventEmitter, Input, NgModule, Output, ViewChild} from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\n@Component({\r\n  selector: 'mat-formio-calendar',\r\n  styles: [\r\n    `.calendar, .formio-time {\r\n           padding: 16px;\r\n           background-color: white;\r\n           box-shadow: 0 2px 1px -1px rgba(0,0,0,.2), 0 1px 1px 0 rgba(0,0,0,.14), 0 1px 3px 0 rgba(0,0,0,.12);\r\n         }\r\n         .formio-time {\r\n           display: flex;\r\n         }\r\n         `\r\n  ],\r\n  template: `\r\n    <div class=\"container\" fxLayout=\"row\" fxLayout.xs=\"column\" fxLayoutGap=\"0.5%\">\r\n      <div [ngStyle]=\"getPopupStyles()\">\r\n        <mat-card appearance=\"outlined\" style=\"padding: 0;\">\r\n          <mat-calendar\r\n                  [dateFilter]=\"dateFilter\"\r\n                  [maxDate]=\"maxDate\"\r\n                  [minDate]=\"minDate\"\r\n                  [selected]=\"selectedDate\"\r\n                  (selectedChange)=\"onDate($event)\"\r\n                  class=\"calendar\"\r\n                  *ngIf=\"enableDate !== false\"\r\n          >\r\n          </mat-calendar>\r\n          <mat-formio-time\r\n                  #time\r\n                  [hourStep]=\"hourStep\"\r\n                  [instance]=\"instance\"\r\n                  [renderElementOnly]=\"true\"\r\n                  [minuteStep]=\"minuteStep\"\r\n                  (selectedEvent)=\"onTime($event)\"\r\n                  class=\"ml-3 formio-time\"\r\n                  *ngIf=\"enableTime\"\r\n          >\r\n          </mat-formio-time>\r\n        </mat-card>\r\n      </div>\r\n    </div>\r\n  `\r\n})\r\n\r\nexport class MaterialCalendarComponent extends MaterialComponent {\r\n  public selectedDate: any;\r\n  public selectedTime: any;\r\n  public selectedTimeComponent: any;\r\n\r\n  @ViewChild('time') time;\r\n\r\n  @Input() enableDate: boolean;\r\n  @Input() enableTime: boolean;\r\n  @Input() minDate: any;\r\n  @Input() maxDate: any;\r\n  @Input() dateFilter: any;\r\n  @Input() hourStep: any;\r\n  @Input() minuteStep: any;\r\n  @Output() timeSelectEvent = new EventEmitter<any>();\r\n  @Output() dateSelectEvent = new EventEmitter<any>();\r\n\r\n  setInstance(instance: any) {\r\n    super.setInstance(instance);\r\n  }\r\n\r\n  setExistedDate(value) {\r\n    this.selectedDate = value;\r\n  }\r\n\r\n  setExistedTime(value, forTime) {\r\n    this.selectedTime = value;\r\n    this.time.setValue(forTime);\r\n  }\r\n\r\n  onDate(event){\r\n    this.selectedDate = event;\r\n    this.dateSelectEvent.emit(this.selectedDate);\r\n  }\r\n\r\n  onTime(event) {\r\n    this.selectedTime = event.value;\r\n    this.timeSelectEvent.emit(this.selectedTime);\r\n  }\r\n\r\n  getPopupStyles() {\r\n    return {\r\n      position: 'absolute',\r\n      zIndex: '1000',\r\n      display: 'flex',\r\n      maxWidth: '100%',\r\n      maxHeight: '100%',\r\n      top: '90px',\r\n      left: '30px'\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, forwardRef, Input } from '@angular/core';\r\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Directive({\r\n  selector: 'input[matMask]',\r\n  providers: [\r\n    {provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MaskDirective},\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MaskDirective),\r\n      multi: true,\r\n    }\r\n  ]\r\n})\r\nexport class MaskDirective {\r\n  @Input('matMask') format: (value: string) => string;\r\n  private _value: string | null;\r\n\r\n  constructor(private elementRef: ElementRef<HTMLInputElement>) {}\r\n\r\n\r\n  get value(): string | null {\r\n    return this._value;\r\n  }\r\n\r\n  @Input('value')\r\n  set value(value: string | null) {\r\n    this._value = value;\r\n    this.formatValue(value);\r\n  }\r\n\r\n  private formatValue(value: string | null) {\r\n    if (value !== null) {\r\n      this.elementRef.nativeElement.value = this.format(value);\r\n    }\r\n    else {\r\n      this.elementRef.nativeElement.value = '';\r\n    }\r\n  }\r\n\r\n  _onChange(value: any): void {\r\n  }\r\n\r\n  writeValue(value: any) {\r\n    this._value = value;\r\n    this.formatValue(this._value); // format Value\r\n  }\r\n\r\n  registerOnChange(fn: (value: any) => void) {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched() {\r\n  }\r\n}\r\n","import { Component, ViewChild } from '@angular/core'\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport DateTimeComponent from 'formiojs/components/datetime/DateTime.js';\r\nimport { momentDate } from 'formiojs/utils/utils.js';\r\nimport { FormControl } from '@angular/forms';\r\n@Component({\r\n  selector: 'mat-formio-date',\r\n  host: {\r\n    '(document:click)': 'clickOutside($event)',\r\n  },\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-label *ngIf=\"hasLabel\" fxFill>\r\n        <span [instance]=\"instance\" matFormioLabel></span>\r\n      </mat-label>\r\n\r\n      <form class=\"example-form\">\r\n        <mat-datepicker-toggle [disabled]=\"isDisabled()\" (click)=\"toggleCalendar($event)\">\r\n          <mat-icon matDatepickerToggleIcon *ngIf=\"enableTime && !enableDate\">schedule</mat-icon>\r\n        </mat-datepicker-toggle>\r\n        <mat-form-field class=\"example-full-width\">\r\n          <input\r\n            *ngIf=\"enableTime && enableDate\"\r\n            matInput\r\n            type=\"datetime-local\"\r\n            [placeholder]=\"instance.component.placeholder\"\r\n            [formControl]=\"displayControl\"\r\n            (input)=\"onChangeInput()\"\r\n            [readonly]=\"!allowManualInput\"\r\n          >\r\n          <input\r\n            *ngIf=\"enableTime && !enableDate\"\r\n            matInput\r\n            [placeholder]=\"instance.component.placeholder\"\r\n            [formControl]=\"displayControl\"\r\n            [matMask]=\"formatTime\"\r\n            (input)=\"onChangeInput()\"\r\n            [readonly]=\"!allowManualInput\"\r\n          >\r\n          <input\r\n            *ngIf=\"!enableTime && enableDate\"\r\n            matInput\r\n            [placeholder]=\"instance.component.placeholder\"\r\n            [formControl]=\"displayControl\"\r\n            (input)=\"onChangeInput()\"\r\n            [readonly]=\"!allowManualInput\"\r\n          >\r\n        </mat-form-field>\r\n\r\n        <mat-formio-calendar\r\n          #calendar\r\n          [minDate]=\"instance.component.datePicker.minDate || ''\"\r\n          [maxDate]=\"instance.component.datePicker.maxDate || ''\"\r\n          [dateFilter]=\"dateFilter\"\r\n          [hidden]=\"!isPickerOpened\"\r\n          (dateSelectEvent)=\"onChangeDate($event)\"\r\n          (timeSelectEvent)=\"onChangeTime($event)\"\r\n          [enableDate]=\"enableDate\"\r\n          [enableTime]=\"enableTime\"\r\n          [hourStep]=\"instance.component.timePicker.hourStep\"\r\n          [minuteStep]=\"instance.component.timePicker.minuteStep\"\r\n          [instance]=\"instance\"\r\n        ></mat-formio-calendar>\r\n        <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n      </form>\r\n    </ng-template>\r\n  `\r\n})\r\n\r\nexport class MaterialDateComponent extends MaterialComponent {\r\n  public timeControl: FormControl = new FormControl();\r\n  public displayControl: FormControl = new FormControl();\r\n  public isPickerOpened: boolean;\r\n  public selectedDate: any;\r\n  public selectedTime: any = '00:00';\r\n  public allowManualInput: boolean = true;\r\n\r\n  @ViewChild('calendar') calendar;\r\n\r\n  get enableDate() {\r\n    return this.instance && this.instance.component.enableDate !== false;\r\n  }\r\n\r\n  get enableTime() {\r\n    return this.instance && this.instance.component.enableTime === true;\r\n  }\r\n\r\n  setDisplayControlValue(value = null) {\r\n    const format = `YYYY-MM-DD${this.enableTime ? 'THH:mm' : ''}`;\r\n    value = value || this.getDateTimeValue();\r\n\r\n    if (value) {\r\n      this.displayControl.setValue(momentDate(value).format(format));\r\n    }\r\n    else {\r\n      this.displayControl.setValue('');\r\n    }\r\n  }\r\n\r\n  onChangeDate(event) {\r\n    this.selectedDate = momentDate(event).utc().format();\r\n    this.control.setValue(this.selectedDate);\r\n    this.setDateTime();\r\n  }\r\n\r\n  onChangeTime(time) {\r\n    this.selectedTime = time;\r\n    if (this.selectedDate || (this.enableTime && !this.enableDate)) {\r\n      this.setDateTime();\r\n    }\r\n  }\r\n\r\n  onChangeInput() {\r\n    const value = this.dateFilter(this.displayControl.value) &&\r\n      this.checkMinMax(this.displayControl.value) ? this.displayControl.value : '';\r\n\r\n    this.control.setValue(value);\r\n    this.onChange();\r\n  }\r\n\r\n  getDateTimeValue() {\r\n    let newDate = '';\r\n    let isSelectedTime = false;\r\n\r\n    if (this.calendar && this.calendar.selectedTime) {\r\n      const { selectedTime } = this.calendar;\r\n      isSelectedTime = true;\r\n\r\n      if (this.selectedTime !== selectedTime) {\r\n        this.selectedTime = selectedTime;\r\n      }\r\n    }\r\n\r\n    if (this.enableTime && this.enableDate) {\r\n      const [hours, minutes] = this.selectedTime.split(':');\r\n      newDate = isSelectedTime\r\n        ? momentDate(this.selectedDate)\r\n          .hours(Number.parseInt(hours))\r\n          .minutes(Number.parseInt(minutes))\r\n          .utc()\r\n        : this.selectedDate;\r\n    }\r\n\r\n    if (!this.enableTime && this.enableDate) {\r\n      newDate = this.selectedDate;\r\n    }\r\n\r\n    if (this.enableTime && !this.enableDate) {\r\n      const [hours, minutes] = this.selectedTime.split(':');\r\n      newDate = momentDate(new Date())\r\n        .hours(Number.parseInt(hours))\r\n        .minutes(Number.parseInt(minutes))\r\n        .seconds(0)\r\n        .utc();\r\n    }\r\n\r\n    return newDate;\r\n  }\r\n\r\n  setDateTime() {\r\n    this.control.setValue(this.getDateTimeValue());\r\n    this.onChange();\r\n  }\r\n\r\n  setInstance(instance: any) {\r\n    super.setInstance(instance);\r\n    this.isDisabled() ? this.control.disable() : this.control.enable();\r\n    this.isDisabled() ? this.displayControl.disable() : this.displayControl.enable();\r\n\r\n    if (this.instance) {\r\n      this.allowManualInput = this.instance.component.allowInput === false ? false : true;\r\n      if (this.instance.component && this.instance.component.datePicker) {\r\n        const { minDate: min, maxDate: max } = this.instance.component.datePicker;\r\n\r\n        // It improves the date to the full format if the customer set only a year. Otherwise we will have conflicts into the moment.js.\r\n        const { minDate, maxDate } = this.improveMinMaxDate(min, max);\r\n        this.instance.component.datePicker.minDate = minDate;\r\n        this.instance.component.datePicker.maxDate = maxDate;\r\n      }\r\n    }\r\n  }\r\n\r\n  toggleCalendar(event) {\r\n    if (!this.isDisabled()) {\r\n      if (!this.isPickerOpened) {\r\n        const date = this.getValue();\r\n        if (date && this.checkMinMax(date)) {\r\n          if (this.enableDate && this.calendar && !this.calendar.selectedDate) {\r\n            this.calendar.setExistedDate(momentDate(date).toDate())\r\n          }\r\n\r\n          if (this.enableTime && this.calendar && !this.calendar.selectedTime) {\r\n            const time = momentDate(date)\r\n            this.calendar.setExistedTime(time.format('HH:mm'), time.format('h:mm:A'))\r\n          }\r\n        }\r\n      }\r\n      this.isPickerOpened = !this.isPickerOpened;\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  isDisabled() {\r\n    const { readonly, disabled } = this.instance.component;\r\n    return readonly || disabled || this.instance.root.options.readOnly\r\n  }\r\n\r\n  public formatTime = (value) => {\r\n    if (!value) {\r\n      return this.instance.emptyValue;\r\n    }\r\n    return momentDate(value).format(this.instance.component.format);\r\n  }\r\n\r\n  setValue(value) {\r\n    if (this.dateFilter(value) && this.checkMinMax(value)) {\r\n      this.setDisplayControlValue(value);\r\n      super.setValue(value);\r\n    }\r\n  }\r\n\r\n  onChange() {\r\n    const value = this.dateFilter(this.getValue()) && this.checkMinMax(this.getValue()) ? this.getValue() : '';\r\n    this.setDisplayControlValue(value);\r\n  }\r\n\r\n  beforeSubmit() {\r\n    this.onChange();\r\n    super.beforeSubmit();\r\n  }\r\n\r\n  checkMinMax(value) {\r\n    let isValid = true;\r\n    const { minDate: min, maxDate: max } = this.instance.component.datePicker;\r\n    const { minDate, maxDate } = this.improveMinMaxDate(min, max);\r\n\r\n    if (minDate) {\r\n      isValid = momentDate(value).isSameOrAfter(minDate);\r\n    }\r\n    if (maxDate && isValid) {\r\n      isValid = momentDate(value).isSameOrBefore(maxDate);\r\n    }\r\n    return isValid;\r\n  }\r\n\r\n  disableWeekends(d: Date) {\r\n    if (d && d.getDay) {\r\n      const day = d.getDay();\r\n      return day !== 0 && day !== 6;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  disableDates(dates: Array<string>, d: Date) {\r\n    const formattedDates = dates.map((date) => momentDate(date).format('YYYY-MM-DD'));\r\n    return !formattedDates.includes(momentDate(d).format('YYYY-MM-DD'));\r\n  }\r\n\r\n  dateFilter = (d: Date | null): boolean => {\r\n    const isValid = this.instance.component.datePicker.disableWeekends ? this.disableWeekends(d) : true;\r\n    return this.instance.component.widget.disabledDates && isValid ?\r\n      this.disableDates(this.instance.component.widget.disabledDates.split(','), d) : isValid;\r\n  }\r\n\r\n  clickOutside(event) {\r\n    if (this.isPickerOpened && (event.target.classList.value == \"mat-calendar-body-cell-content mat-focus-indicator mat-calendar-body-today\" || event.target.classList.value == \"mat-calendar-body\" || event.target.classList.value == \"mat-calendar-body-cell mat-calendar-body-active\" || event.target.classList.value == '' || event.target.classList.value == \"mat-calendar-body-label\" || event.target.classList.value == \"mat-calendar-table-header-divider\" || event.target.classList.value == \"mat-calendar-controls\" || event.target.classList.value == \"mat-button-wrapper\" || event.target.classList.value == \"mat-calendar-header\" || event.target.classList.value == \"mat-calendar-arrow mat-calendar-invert\" || event.target.classList.value == \"mat-calendar-content cdk-focused cdk-mouse-focused\" || event.target.classList.value == \"mat-calendar calendar ng-star-inserted\" || event.target.classList.value == \"mat-focus-indicator mat-calendar-period-button mat-button mat-button-base cdk-focused cdk-mouse-focused\" || event.target.classList.value == 'mat-calendar-body-cell-content mat-focus-indicator' || event.target.classList.value == \"mat-focus-indicator mat-calendar-next-button mat-icon-button mat-button-base cdk-focused cdk-mouse-focused\" || event.target.classList.value == \"mat-focus-indicator mat-calendar-previous-button mat-icon-button mat-button-base cdk-focused cdk-mouse-focused\")) {\r\n      this.isPickerOpened = true;\r\n    } else {\r\n      if (event.target.classList.value == 'mat-calendar-body-cell-content mat-focus-indicator mat-calendar-body-selected' && this.isPickerOpened) {\r\n        this.toggleCalendar(event);\r\n      } else {\r\n        this.isPickerOpened = false;\r\n      }\r\n    }\r\n    // if (event.target.classList.contains('mat-calendar-body-selected') && this.isPickerOpened) {\r\n    //   this.toggleCalendar(event);\r\n    // }\r\n\r\n  }\r\n\r\n  improveMinMaxDate(minDate, maxDate) {\r\n    if (minDate && minDate.length === 4) {\r\n      minDate = momentDate(`${minDate}-01-01`).format('YYYY-MM-DD');\r\n    }\r\n\r\n    if (maxDate && maxDate.length === 4) {\r\n      maxDate = momentDate(`${maxDate}-01-01`).subtract(1, 'day').format('YYYY-MM-DD');\r\n    }\r\n    return { minDate, maxDate };\r\n  }\r\n}\r\nDateTimeComponent.MaterialComponent = MaterialDateComponent;\r\nexport { DateTimeComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\n// import CheckboxComponent from 'formiojs/components/checkbox/Checkbox.js';\r\nimport CheckboxComponent from 'formiojs/components/checkbox/Checkbox.js';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n  selector: 'mat-formio-checkbox',\r\n  template: `\r\n    <mat-checkbox (change)=\"onChange()\" [ngClass]=\"{'validation-error' : !!instance.error}\"\r\n                  [formControl]=\"control\"\r\n    >\r\n      <span matFormioLabel [instance]=\"instance\"></span>\r\n      <mat-icon *ngIf=\"instance.component.tooltip\" matSuffix\r\n                matTooltip=\"{{ instance.component.tooltip }}\" style=\"font-size: 1rem;\">info\r\n      </mat-icon>\r\n    </mat-checkbox>\r\n    <mat-hint>\r\n      {{ instance.component.description  }}\r\n    </mat-hint>\r\n    <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n  `,\r\n  styles:[`\r\n/* TODO(mdc-migration): The following rule targets internal classes of checkbox that may no longer apply for the MDC version. */\r\n::ng-deep .mat-mdc-checkbox.validation-error .mat-checkbox-frame {border-color: red; }`]\r\n})\r\nexport class MaterialCheckboxComponent extends MaterialComponent {\r\n  getValue() {\r\n    return _.isNil(this.control.value) ? '' : this.control.value;\r\n  }\r\n}\r\nCheckboxComponent.MaterialComponent = MaterialCheckboxComponent;\r\nexport { CheckboxComponent };\r\n","import { Component } from '@angular/core';\r\nimport FieldsetComponent from 'formiojs/components/fieldset/Fieldset.js';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\n@Component({\r\n  selector: 'mat-formio-fieldset',\r\n  template: `\r\n    <fieldset>\r\n      <legend [attr.ref]=\"'header'\">\r\n        {{ instance.component.legend }}\r\n        <mat-icon *ngIf=\"instance.component.tooltip\"\r\n                  matSuffix\r\n                  matTooltip=\"{{ instance.component.tooltip }}\"\r\n        >\r\n          info\r\n        </mat-icon>\r\n      </legend>\r\n      <div class=\"fieldset-body\" [attr.ref]=\"instance.component.key\" fxLayout=\"column\" fxLayoutGap=\"1em\">\r\n        <ng-template #components></ng-template>\r\n      </div>\r\n    </fieldset>\r\n  `,\r\n  styles: []\r\n})\r\nexport class MaterialFieldsetComponent extends MaterialNestedComponent {}\r\nFieldsetComponent.MaterialComponent = MaterialFieldsetComponent;\r\nexport { FieldsetComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport ContentComponent from 'formiojs/components/content/Content.js';\r\n@Component({\r\n  selector: 'mat-formio-content',\r\n  template: `<div [innerHTML]=\"instance.content\"></div>`\r\n})\r\nexport class MaterialContentComponent extends MaterialComponent {}\r\nContentComponent.MaterialComponent = MaterialContentComponent;\r\nexport { ContentComponent };\r\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport SignatureComponent from 'formiojs/components/signature/Signature.js';\r\n@Component({\r\n  selector: 'mat-formio-signature',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <div #signature>\r\n\r\n        <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n\r\n        <button mat-icon-button [ngStyle]=\"{position: 'absolute'}\" ref=\"refresh\">\r\n          <mat-icon>refresh</mat-icon>\r\n        </button>\r\n\r\n        <div class=\"signature-pad-body\"\r\n             [ngStyle]=\"{width: instance.component.width, height: instance.component.height, padding: 0, margin: 0}\"\r\n             [attr.tabindex]=\"instance.component.tabindex || 0\"\r\n             ref=\"padBody\"\r\n        >\r\n          <canvas class=\"signature-pad-canvas\"\r\n                  [attr.height]=\"instance.component.height\"\r\n                  ref=\"canvas\"\r\n          ></canvas>\r\n          <img fxFlexFill [ngStyle]=\"{display: 'none' }\" ref=\"signatureImage\">\r\n        </div>\r\n        <div *ngIf=\"instance.component.footer\"\r\n             class=\"signature-pad-footer\"\r\n             fxLayout=\"row\"\r\n             fxLayoutAlign=\"center center\"\r\n        >\r\n          <mat-hint>{{ instance.t(instance.component.footer) }}</mat-hint>\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialSignatureComponent extends MaterialComponent implements AfterViewInit {\r\n  @ViewChild('signature') signatureElement: ElementRef;\r\n\r\n  renderComponents() {\r\n    if (this.signatureElement) {\r\n      this.instance.attach(this.signatureElement.nativeElement);\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.renderComponents();\r\n  }\r\n}\r\nSignatureComponent.MaterialComponent = MaterialSignatureComponent;\r\nexport { SignatureComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport SurveyComponent from 'formiojs/components/survey/Survey.js';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n    selector: 'mat-formio-survey',\r\n    template: `\r\n\r\n      <mat-formio-form-field\r\n              [instance]=\"instance\"\r\n              [componentTemplate]=\"componentTemplate\"\r\n              [showDescription]=\"false\"\r\n      ></mat-formio-form-field>\r\n      <ng-template #componentTemplate let-hasLabel>\r\n\r\n        <table class=\"mat-elevation-z8 mat-table\" fxFill>\r\n          <thead>\r\n          <tr class=\"mat-header-row\">\r\n            <th class=\"mat-header-cell\">\r\n              <h2 *ngIf=\"hasLabel\">\r\n                <span [instance]=\"instance\" matFormioLabel></span>\r\n              </h2>\r\n            </th>\r\n            <th class=\"mat-header-cell\"\r\n                *ngFor=\"let value of instance.component.values\"\r\n                style=\"text-align: center;\"\r\n            >\r\n              {{ value.label }}\r\n            </th>\r\n          </tr>\r\n          </thead>\r\n\r\n          <tbody>\r\n          <tr class=\"mat-row\" *ngFor=\"let question of instance.component.questions; index as i;\">\r\n            <td class=\"mat-cell\">{{ question.label }}</td>\r\n            <td class=\"mat-cell\"\r\n                *ngFor=\"let value of instance.component.values; index as j;\"\r\n                style=\"text-align: center;\"\r\n            >\r\n              <mat-radio-group (change)=\"onChange()\"\r\n                               [formControl]=\"getFormControl(question.value)\"\r\n                               [name]=\"getUniqueName(question.value)\"\r\n              >\r\n                <mat-radio-button [value]=\"value.value\"></mat-radio-button>\r\n              </mat-radio-group>\r\n            </td>\r\n          </tr>\r\n          <mat-hint *ngIf=\"instance.component.description\" class=\"mat-formio-component-description\">\r\n            {{ instance.component.description }}\r\n          </mat-hint>\r\n          </tbody>\r\n\r\n          <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n        </table>\r\n      </ng-template>\r\n    `\r\n})\r\nexport class MaterialSurveyComponent extends MaterialComponent {\r\n  public controls: any = {};\r\n  getFormControl(question) {\r\n    if (!this.controls[question]) {\r\n      this.controls[question] = new FormControl();\r\n      if (this.instance.shouldDisabled) {\r\n        this.controls[question].disable();\r\n      }\r\n    }\r\n    return this.controls[question];\r\n  }\r\n\r\n  setDisabled(disabled) {\r\n    const method = disabled ? 'disable' : 'enable';\r\n    for (const question in this.controls) {\r\n      if (this.controls.hasOwnProperty(question)) {\r\n        this.controls[question][method]();\r\n      }\r\n    }\r\n  }\r\n\r\n  getValue() {\r\n    const values = {};\r\n    for (const question in this.controls) {\r\n      if (this.controls.hasOwnProperty(question)) {\r\n        values[question] = this.controls[question].value || false;\r\n      }\r\n    }\r\n    return values;\r\n  }\r\n\r\n  setValue(value) {\r\n    for (const question in value) {\r\n      if (value.hasOwnProperty(question)) {\r\n        const control = this.getFormControl(question);\r\n        if (control) {\r\n          control.setValue(value[question] || false);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  getUniqueName(question) {\r\n    return `${this.instance.id}-${question}`;\r\n  }\r\n}\r\nSurveyComponent.MaterialComponent = MaterialSurveyComponent;\r\nexport { SurveyComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport RadioComponent from 'formiojs/components/radio/Radio.js';\r\n\r\n@Component({\r\n  selector: 'mat-formio-radio',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <div fxLayout=\"column\">\r\n        <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n\r\n        <mat-radio-group\r\n                (change)=\"onChange()\"\r\n                [formControl]=\"control\"\r\n                fxFlexOffset=\"10px\"\r\n                fxLayout=\"{{ getLayout() }}\"\r\n                fxLayoutGap=\"10px\"\r\n        >\r\n          <mat-radio-button *ngFor=\"let option of instance.component.values\"\r\n                            value=\"{{ option.value }}\"\r\n                            [checked]=\"isRadioChecked(option)\"\r\n                            (keyup.space)=\"clearValue($event, option)\"\r\n                            (click)=\"clearValue($event, option)\"\r\n          >\r\n            {{ option.label }}\r\n          </mat-radio-button>\r\n          <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n        </mat-radio-group>\r\n      </div>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialRadioComponent extends MaterialComponent {\r\n  getLayout() {\r\n    return this.instance.component.inline ? 'row' : 'column';\r\n  }\r\n\r\n  isRadioChecked(option) {\r\n    return option.value === this.instance.dataValue;\r\n  }\r\n\r\n  clearValue(event, option) {\r\n    if (this.isRadioChecked(option)) {\r\n      event.preventDefault();\r\n      this.deselectValue();\r\n    }\r\n  }\r\n\r\n  deselectValue() {\r\n    this.instance.updateValue(null, {\r\n      modified: true,\r\n    });\r\n  }\r\n}\r\nRadioComponent.MaterialComponent = MaterialRadioComponent;\r\nexport { RadioComponent };\r\n","import { Component } from '@angular/core';\r\nimport { MaterialRadioComponent } from '../radio/radio.component';\r\nimport SelectBoxesComponent from 'formiojs/components/selectboxes/SelectBoxes.js';\r\n@Component({\r\n  selector: 'mat-formio-selectboxes',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <div fxLayout=\"column\">\r\n        <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n        <div\r\n                fxFlexOffset=\"10px\"\r\n                fxLayout=\"{{ getLayout() }}\"\r\n                fxLayoutGap=\"10px\"\r\n        >\r\n          <mat-checkbox\r\n                  *ngFor=\"let option of instance.component.values\"\r\n                  (change)=\"onChange()\"\r\n                  [(ngModel)]=\"value[option.value]\"\r\n                  [disabled]=\"disabled\"\r\n          >\r\n            {{ option.label }}\r\n          </mat-checkbox>\r\n          <mat-error *ngIf=\"instance.error\">{{ instance.error.message }}</mat-error>\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n  `\r\n})\r\nexport class MaterialSelectBoxesComponent extends MaterialRadioComponent {\r\n  public value: any = {};\r\n  public disabled = false;\r\n\r\n  setInstance(instance) {\r\n    instance.component.values.forEach((option) => {\r\n      this.value[option.value] = false;\r\n    });\r\n    super.setInstance(instance);\r\n  }\r\n\r\n  getValue() {\r\n    return this.value;\r\n  }\r\n\r\n  setValue(value) {\r\n    const normalizedValue = this.instance.normalizeValue(value);\r\n    for (const prop in normalizedValue) {\r\n      if (normalizedValue.hasOwnProperty(prop)) {\r\n        this.value[prop] = normalizedValue[prop];\r\n      }\r\n    }\r\n  }\r\n\r\n  setDisabled(disabled) {\r\n    this.disabled = !!disabled;\r\n  }\r\n\r\n  onChange() {\r\n    this.instance.updateValue(this.getValue(), {modified: true});\r\n    this.instance.triggerChange({modified: true});\r\n  }\r\n}\r\nSelectBoxesComponent.MaterialComponent = MaterialSelectBoxesComponent;\r\nexport { SelectBoxesComponent };\r\n","import { Injectable } from '@angular/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport * as CryptoJS from 'crypto-js';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\ninterface VendorProductsResponse {\r\n  code: number;\r\n  data: any;\r\n  message: string;\r\n  statusCode: number;\r\n}\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CommonService {\r\n  paramsData: any;\r\n  includeDescription: any;\r\n  vendorId: any;\r\n  onlyActive: any;\r\n  currentUser: any;\r\n  private dropdownItemsSubject = new BehaviorSubject<any[]>([]);\r\n  dropdownItems$ = this.dropdownItemsSubject.asObservable();\r\n  private setFlag = new BehaviorSubject<boolean>(false); // Initialize with false\r\n  dropdownflag$ = this.setFlag.asObservable(); // Observable that emits the boolean value\r\n  holy: any = '';\r\n  grail: any = '';\r\n  //static sort_5 = '4sw==';\r\n  private sort_5 = 'oOA==';\r\n  private Lsort_5 = 'L/w==';\r\n  private Jsort_5 = 'BaQ==';\r\n  private Psort_5 = 'WVQ==';\r\n\r\n  //static sales_2 = '2+T2NX';\r\n  private sales_2 = 'gupVC1';\r\n  private Lsales_2 = 'DyLI+G';\r\n  private Jsales_2 = '5g63ak';\r\n  private Psales_2 = 'HFQDgE';\r\n\r\n  //static Mobile_4 = 'RR12R';\r\n  private Mobile_4 = 'NV9VK';\r\n  private LMobile_4 = '+P91l';\r\n  private JMobile_4 = 'N+Bxw';\r\n  private PMobile_4 = 'j4UMt';\r\n\r\n  //static Id_2 = 'qUBQE';\r\n  private Id_2 = 'W7TJv';\r\n  private LId_2 = 'kAJ87';\r\n  private JId_2 = 'I4PMB';\r\n  private PId_2 = '4Ha4U';\r\n\r\n  // static Name_1 = '8F/';\r\n  private Name_1 = 'd3u';\r\n  private LName_1 = 'UwX';\r\n  private JName_1 = 'mCc';\r\n  private PName_1 = 'nyP';\r\n\r\n  private city = 'Vq';//1\r\n  private state = 'drA2';//4\r\n  private region = 'E/f';//2\r\n  private territory = 'gZnA==';//6\r\n  private country = '2sMK';//5\r\n  private continent = 'Q5N2X';//3\r\n  private Jcity = 'lk';//1\r\n  private Jstate = 'rswL';//4\r\n  private Jregion = 'xsH';//2\r\n  private Jterritory = 'Xsow==';//6\r\n  private Jcountry = 'n0bs';//5\r\n  private Jcontinent = 'hQOoI';//3\r\n\r\n  private Lcity = 'Aw';//1\r\n  private Lstate = 'hrmx';//4\r\n  private Lregion = 'MMC';//2\r\n  private Lterritory = 'vVGQ==';//6\r\n  private Lcountry = 'IqPc';//5\r\n  private Lcontinent = 'CttR+';//3\r\n\r\n  private Pcity = '7h';//1\r\n  private Pstate = 'JtNz';//4\r\n  private Pregion = 'FTl';//2\r\n  private Pterritory = '/v+g==';//6\r\n  private Pcountry = 'WFDd';//5\r\n  private Pcontinent = 'sDt6N';//3\r\n\r\n\r\n  constructor(public http: HttpClient) {\r\n    this.currentUser = JSON.parse(localStorage.getItem('currentUser'));\r\n    this.holy = CryptoJS.enc.Base64.parse(this.getcombodeal());\r\n    this.grail = CryptoJS.enc.Base64.parse(this.getglobedata());\r\n\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n  }\r\n\r\n  getBaseApiUrl(): string | null {\r\n    const baseUrlMapping = {\r\n      'bG9jYWxob3N0': 'http://localhost:58504',\r\n      'bGluY29sbi52YXJ0b3BpYS5jb20=': 'https://lincoln-api.vartopia.com',\r\n      'c3RhZ2UudmFydG9waWEuY29t': 'https://stage-api.vartopia.com',\r\n      'bXkudmFydG9waWEuY29t': 'https://reagan-api.vartopia.com',\r\n      'amFja3Nvbi52YXJ0b3BpYS5jb20=': 'https://jackson-api.vartopia.com',\r\n      'dWF0LnZhcnRvcGlhLmNvbQ==': 'https://uat-api.vartopia.com'\r\n    };\r\n\r\n    // Get the current hostname\r\n    const hostname = window.location.hostname;\r\n    return baseUrlMapping[btoa(hostname)] || null;\r\n  }\r\n\r\n  scrumble(msg) {\r\n    if (!isNullOrUndefined(msg)) {\r\n      var conceal = this.getcampaign(msg, this.holy, this.grail);\r\n      var sha256 = CryptoJS.HmacSHA256(CryptoJS.enc.Base64.stringify(this.grail) + conceal.toString(), CryptoJS.enc.Base64.stringify(this.holy));\r\n      var hashInBase64 = CryptoJS.enc.Base64.stringify(sha256);\r\n      let keyValue = {\r\n        \"value\": conceal.toString(),\r\n        \"mac\": hashInBase64\r\n      };\r\n      var result = JSON.stringify(keyValue);\r\n      var jumbled = CryptoJS.enc.Utf8.parse(result);\r\n      return CryptoJS.enc.Base64.stringify(jumbled);\r\n    }\r\n  }\r\n\r\n  getcampaign(data: any, holy: any, grail: any) {\r\n    return CryptoJS.AES.encrypt(data.toString(), holy,\r\n      {\r\n        blockSize: 128,\r\n        iv: grail,\r\n        mode: CryptoJS.mode.CBC,\r\n        padding: CryptoJS.pad.Pkcs7\r\n      });\r\n  }\r\n\r\n  /* Intialization of api path and queryparams */\r\n  initializeApiPath(getUrl, queryParams: any): Observable<any> {\r\n    if (queryParams?.length) {\r\n      const changeToObject = this.convertToObject(queryParams);\r\n      if (Object.keys(changeToObject).length) {\r\n        const queryString = this.convertToQueryString(changeToObject);\r\n        const baseApiUrl = this.getBaseApiUrl();\r\n        var apiUrl = `${baseApiUrl}/api/` + getUrl;\r\n        apiUrl += '?' + queryString;\r\n        return this.http.get<VendorProductsResponse>(apiUrl);\r\n      }\r\n    }\r\n  }\r\n\r\n  /* Functon for convert array to object */\r\n  convertToObject(queryParams) {\r\n    if (queryParams.length) {\r\n      var obj = {};\r\n      queryParams.forEach(function (item) {\r\n        obj[item.key] = item.value;\r\n      });\r\n      return obj;\r\n    }\r\n  }\r\n\r\n  loadProducts(pageNumber, pazeSize, search: string = '', onlyActive: boolean = true, description: boolean = false, levelOneId: any, levelTwoId: any, levelThreeId: any, levelFourId: any): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    const programId = this.getValueByKey(this.paramsData, 'programId');\r\n    let apiUrl = `${baseApiUrl}/api/VendorFormBuilder/GetVendorProductsV2?vendorId=${vendorId}&pageNumber=${pageNumber}&pageSize=${pazeSize}&search=${search}&onlyActive=${onlyActive}&includeDescription=${description}&levelOne=${levelOneId}&levelTwo=${levelTwoId}&levelThree=${levelThreeId}&levelFour=${levelFourId}`;\r\n    if (programId) {\r\n      apiUrl += `&programId=${programId}`;\r\n    }\r\n    return this.http.get<VendorProductsResponse>(apiUrl);\r\n  }\r\n\r\n  listSubCategory(category: string): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductsSubCategory?vendorId=${vendorId}&categoryName=${category}`)\r\n  }\r\n\r\n  /* Append key and value to query string */\r\n  convertToQueryString(queryParams) {\r\n    const queryString = Object.keys(queryParams)\r\n      .map(key => {\r\n        if (queryParams[key] !== '' && queryParams[key] !== null) {\r\n          return encodeURIComponent(key) + '=' + encodeURIComponent(queryParams[key]);\r\n        } else {\r\n          if (queryParams.hasOwnProperty('search')) {\r\n            return encodeURIComponent(key) + '=' + encodeURIComponent(queryParams[key]);\r\n          }\r\n        }\r\n      })\r\n      .join('&');\r\n    return queryString;\r\n  }\r\n\r\n  listProductCategory(): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductsCategory?vendorId=${vendorId}`);\r\n  }\r\n\r\n  productLevelOne(): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelOne?vendorId=${vendorId}`);\r\n  }\r\n\r\n  productLevelTwo(levelOneId: any): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelTwo?levelOneId=${levelOneId}&vendorId=${vendorId}`);\r\n  }\r\n\r\n  productLevelThree(levelOneId: any, levelTwoId: any): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelThree?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&vendorId=${vendorId}`);\r\n  }\r\n\r\n  productLevelFour(levelOneId: any, levelTwoId: any, levelThreeId: any): Observable<any> {\r\n    this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const baseApiUrl = this.getBaseApiUrl();\r\n    const vendorId = this.getValueByKey(this.paramsData, 'vendorId');\r\n    return this.http.get<VendorProductsResponse>(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelFour?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&levelThreeId=${levelThreeId}&vendorId=${vendorId}`);\r\n  }\r\n\r\n  // Function to get value by key from the array\r\n  getValueByKey(data, key) {\r\n    if (!data || data.length === 0) {\r\n      return null;\r\n    }\r\n    const item = data.find(kv => kv.key.toLowerCase() === key.toLowerCase());\r\n    return item ? item.value : null;\r\n  }\r\n\r\n  /* Function for verify numbers and numbers with comma seperated values */\r\n  onlyNumbers(str) {\r\n    if (str) {\r\n      return /^[0-9.,]+$/.test(str);\r\n    }\r\n  }\r\n  /* End */\r\n\r\n  setDropdownItems(items: any[]) {\r\n    this.dropdownItemsSubject.next(items);\r\n  }\r\n\r\n  getDropdownItems() {\r\n    return this.dropdownItemsSubject.getValue();\r\n  }\r\n\r\n  setDropDownFlag(flag: boolean) {\r\n    this.setFlag.next(flag)\r\n  }\r\n\r\n  getDropDownFlag() {\r\n    return this.setFlag.getValue();\r\n  }\r\n\r\n  /*Funtion to check if property is matched with given attributes in formBuilder or not */\r\n  checkIsAttributeTrue(newProductPickerFlag, attributeName) {\r\n    return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key =>\r\n      key.toLocaleLowerCase() === attributeName.toLowerCase() &&\r\n      newProductPickerFlag[key].toLowerCase() === \"true\"\r\n    );\r\n  }\r\n\r\n  getglobedata(): String {\r\n    const hostMappings: { [key: string]: string } = {\r\n      'c3RhZ2UudmFydG9waWEuY29t': this.city + this.region + this.continent + this.state + this.country + this.territory,\r\n      'bGluY29sbi52YXJ0b3BpYS5jb20=': this.Lcity + this.Lregion + this.Lcontinent + this.Lstate + this.Lcountry + this.Lterritory,\r\n      'amFja3Nvbi52YXJ0b3BpYS5jb20=': this.Jcity + this.Jregion + this.Jcontinent + this.Jstate + this.Jcountry + this.Jterritory,\r\n      'bXkudmFydG9waWEuY29t': this.Pcity + this.Pregion + this.Pcontinent + this.Pstate + this.Pcountry + this.Pterritory,\r\n      'bG9jYWxob3N0': this.city + this.region + this.continent + this.state + this.country + this.territory,\r\n      'dWF0LnZhcnRvcGlhLmNvbQ==': this.Jcity + this.Jregion + this.Jcontinent + this.Jstate + this.Jcountry + this.Jterritory\r\n    };\r\n    const hostname = window.location.hostname;\r\n    return hostMappings[btoa(hostname)] || '';\r\n  }\r\n\r\n  getcombodeal(): string {\r\n    const hostMappings: { [key: string]: string } = {\r\n      'c3RhZ2UudmFydG9waWEuY29t': this.Name_1 + this.sales_2 + this.Id_2 + this.Mobile_4 + this.sort_5,\r\n      'bGluY29sbi52YXJ0b3BpYS5jb20=': this.LName_1 + this.Lsales_2 + this.LId_2 + this.LMobile_4 + this.Lsort_5,\r\n      'amFja3Nvbi52YXJ0b3BpYS5jb20=': this.JName_1 + this.Jsales_2 + this.JId_2 + this.JMobile_4 + this.Jsort_5,\r\n      'bXkudmFydG9waWEuY29t': this.PName_1 + this.Psales_2 + this.PId_2 + this.PMobile_4 + this.Psort_5,\r\n      'bG9jYWxob3N0': this.Name_1 + this.sales_2 + this.Id_2 + this.Mobile_4 + this.sort_5,\r\n      'dWF0LnZhcnRvcGlhLmNvbQ==': this.JName_1 + this.Jsales_2 + this.JId_2 + this.JMobile_4 + this.Jsort_5\r\n      \r\n    };\r\n    const hostname = window.location.hostname;\r\n    return hostMappings[btoa(hostname)] || '';\r\n  }\r\n}","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { MaterialComponent } from '../MaterialComponent';\r\nimport SelectComponent from 'formiojs/components/select/Select.js';\r\nimport _ from 'lodash';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil, tap } from 'rxjs/operators';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { CommonService } from '../common.service';\r\n@Component({\r\n  selector: 'mat-formio-select',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\"></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-form-field fxFill>\r\n\r\n        <mat-label *ngIf=\"hasLabel\">\r\n          <span [instance]=\"instance\" matFormioLabel></span>\r\n        </mat-label>\r\n\r\n        <span *ngIf=\"instance.component.prefix\" matPrefix>\r\n          {{ instance.component.prefix }}&nbsp;\r\n        </span>\r\n        <mat-select\r\n                [multiple]=\"instance.component.multiple\"\r\n                [formControl]=\"control\"\r\n                [placeholder]=\"instance.component.placeholder\"\r\n                (selectionChange)=\"onChange()\"\r\n                [compareWith]=\"compareObjects\"\r\n                #productSelect\r\n                [panelClass]=\"addCustomClass(instance.component.key)\"\r\n        >\r\n        <mat-option>\r\n        <ngx-mat-select-search [searching]=\"instance.component.key.toLowerCase() === 'vendorproductid' ? searching : false\" (input)=\"onInputChange($event)\" placeholderLabel=\"Type to search\" [formControl]=\"websiteMultiFilterCtrl\"> \r\n        <mat-icon ngxMatSelectSearchClear (click)=\"clearProducts()\">close</mat-icon>\r\n        </ngx-mat-select-search>\r\n      </mat-option>\r\n\r\n      <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.value\" class=\"virtual-full-view\">\r\n          <span [innerHTML]=\"option.label\"></span>\r\n        </mat-option>   \r\n          <mat-option *ngIf=\"!filteredOptionsLength\" disabled>\r\n            <span>Nothing was found</span>\r\n          </mat-option>\r\n        </mat-select>\r\n\r\n        <span *ngIf=\"instance.component.suffix\" matSuffix>\r\n          {{ instance.component.suffix }}\r\n        </span>\r\n          <mat-error *ngIf=\"isError()\" >{{ getErrorMessage() }}</mat-error>\r\n      </mat-form-field>\r\n    </ng-template>\r\n  `,\r\n  styles: [`\r\n  .example-viewport {\r\n    height: 200px;\r\n  }\r\n  \r\n  .product-picker {\r\n    overflow-x: hidden; /* Disable horizontal scrolling */\r\n  }\r\n\r\n  .virtual-full-view {\r\n    height: auto !important;\r\n    white-space: normal !important;\r\n    line-height: 1.4 !important;\r\n    text-overflow: initial !important;\r\n    min-height: 48px !important;\r\n    overflow: initial !important;\r\n    padding-top: 10px !important;\r\n    padding-bottom: 10px !important;\r\n  }\r\n\r\n  ::ng-deep .product-picker .cdk-virtual-scroll-content-wrapper {\r\n   width: 100% !important;\r\n  }\r\n\r\n  .virtual-full-view .mat-pseudo-checkbox {\r\n    align-self: top !important;\r\n  }\r\n\r\n`]\r\n})\r\nexport class MaterialSelectComponent extends MaterialComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  selectOptions: Promise<any[]>;\r\n  filteredOptions: Promise<any[]>;\r\n  filteredOptionsLength: number;\r\n  selectOptionsResolve: any;\r\n  public websiteMultiCtrl: FormControl = new FormControl();\r\n  public websiteMultiFilterCtrl: FormControl = new FormControl();\r\n  @ViewChild('multiSelect', { static: true }) multiSelect: MatSelect;\r\n  protected _onDestroy = new Subject();\r\n  @ViewChild('productSelect') selectElem: MatSelect;\r\n  // Variables to track pagination\r\n  pageNumber = 1;\r\n  pageSize = 20;\r\n  totalPages = 0;\r\n  searchQuery = '';\r\n  productsloadingFlag: boolean = false;\r\n  public searching = false;\r\n  productList: any[] = [];\r\n  selectedValue: any = '';\r\n  searchItem = \"\";\r\n  // Variable to hold the reference to the current panel element\r\n  private currentPanelElement: HTMLElement | null = null;\r\n  openCounter: number = 1\r\n  firstDropdownItems: any = [];\r\n  secondDropdownItems: any = [];\r\n  storeValue: any = []\r\n  storeDependentItems: any = [];\r\n  executionFlag: boolean = false;\r\n  private apiCounter: number = 0;\r\n  checkAttribute: any;\r\n  constructor(public element: ElementRef, public ref: ChangeDetectorRef, public http: HttpClient, public commonService: CommonService) {\r\n    super(element, ref);\r\n  }\r\n\r\n  onInputChange(event: any) {\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid' && event.target.value === '') {\r\n      this.onClearAll();\r\n    }\r\n  }\r\n\r\n  clearProducts() {\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n      this.onClearAll();\r\n      this.searchItem = \"\";\r\n\r\n    }\r\n  }\r\n\r\n  registerPanelScrollEvent(selectElem: MatSelect) {\r\n    if (selectElem && selectElem?.panel) {\r\n      // const panelElement = selectElem.panel.nativeElement;\r\n      this.currentPanelElement = selectElem.panel.nativeElement;\r\n      this.currentPanelElement.addEventListener('scroll', this.onScroll.bind(this));\r\n    }\r\n  }\r\n\r\n  addCustomClass(key) {\r\n    return 'walkme_select_' + key;\r\n  }\r\n\r\n  onScroll(event) {\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n      const scrollElement = event.target;\r\n      if (!scrollElement) return; // Ensure scrollElement is not undefined\r\n      const trackHeight = scrollElement.scrollHeight - scrollElement.offsetHeight;\r\n      if (isNaN(trackHeight) || trackHeight <= 0) return; // Check if trackHeight is valid\r\n      if (this.openCounter < 2) {\r\n        const retrievedObject = JSON.parse(localStorage.getItem('storageObject'));\r\n        this.totalPages = Number(retrievedObject?.totalPages);\r\n        this.productsloadingFlag = true;\r\n        this.productList = retrievedObject?.dataSource;\r\n      }\r\n      if (this.productsloadingFlag && Math.floor(scrollElement?.scrollTop / trackHeight * 100) > 50) {\r\n        this.productsloadingFlag = false;\r\n        this.openCounter = this.openCounter + 1;\r\n        if (this.pageNumber < this.totalPages) {\r\n          this.pageNumber = this.pageNumber + 1;\r\n          this.searching = true;\r\n          this.loadData(this.pageNumber, this.pageSize, this.searchQuery)\r\n        } else {\r\n          this.productsloadingFlag = true;\r\n          this.searching = false;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // Function to get value by key from the array\r\n  getValueByKey(data, key) {\r\n    if (!data || data.length === 0) {\r\n      return null; // Return null if data is empty or undefined\r\n    }\r\n    const item = data.find(kv => kv.key.toLowerCase() === key.toLowerCase());\r\n    return item ? item.value : null;\r\n  }\r\n\r\n\r\n  loadData(pageNumber, pageSize, searchQuery) {\r\n    const paramsData = JSON.parse(localStorage.getItem('productPickerParams'));\r\n    const includeDescription = this.getValueByKey(paramsData, 'includeDescription');\r\n    const vendorId = this.getValueByKey(paramsData, 'vendorId');\r\n    const onlyActive = this.getValueByKey(paramsData, 'onlyActive');\r\n    const includeCountry = this.getValueByKey(paramsData, 'filterProductBasedOnCustomerCountry');\r\n    const programId = this.getValueByKey(paramsData, \"programId\");\r\n    var currentUser = JSON.parse(localStorage.getItem('currentUser'));\r\n    let headers;\r\n    if (currentUser && currentUser.Tokens && currentUser.Tokens.AccessToken) {\r\n      var accessToken = currentUser.Tokens.AccessToken;\r\n      headers = new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': 'Bearer ' + accessToken\r\n      });\r\n    } else {\r\n      console.error('User not authenticated or tokens missing.');\r\n    }\r\n\r\n    const envendorId = this.commonService.scrumble(vendorId)\r\n    const enpageNumber = this.commonService.scrumble(pageNumber)\r\n    const enpageSize = this.commonService.scrumble(pageSize);\r\n    const ensearchQuery = this.commonService.scrumble(searchQuery);\r\n    const encodeIncludeCountry = this.commonService.scrumble(includeCountry);\r\n    let enactive = this.commonService.scrumble(onlyActive);\r\n    const enprogramId = this.commonService.scrumble(programId);\r\n    //Check if enactive is undefined, null, or blank\r\n    if (enactive === undefined || enactive === null || enactive === '') {\r\n      enactive = this.commonService.scrumble(true); // Set default value to true\r\n    }\r\n\r\n    // Scrumble and handle the includeDescription parameter\r\n    let endescription = this.commonService.scrumble(includeDescription);\r\n    if (!endescription) {\r\n      endescription = this.commonService.scrumble(false);  // Set to 'false' if undefined, null, or blank\r\n    }\r\n\r\n    const baseUrlMapping = {\r\n      'bG9jYWxob3N0': 'http://localhost:58504',\r\n      'bGluY29sbi52YXJ0b3BpYS5jb20=': 'https://lincoln-api.vartopia.com',\r\n      'c3RhZ2UudmFydG9waWEuY29t': 'https://stage-api.vartopia.com',\r\n      'bXkudmFydG9waWEuY29t': 'https://reagan-api.vartopia.com',\r\n      'amFja3Nvbi52YXJ0b3BpYS5jb20=': 'https://jackson-api.vartopia.com',\r\n      'dWF0LnZhcnRvcGlhLmNvbQ==': 'https://uat-api.vartopia.com'\r\n    };\r\n    // Get the current hostname\r\n    const hostname = window.location.hostname;\r\n    const baseApiUrl = baseUrlMapping[btoa(hostname)] || null;\r\n    interface VendorProductsResponse {\r\n      code: number;\r\n      data: any;\r\n      message: string;\r\n      statusCode: number;\r\n    }\r\n    let url = `${baseApiUrl}/api/VendorFormBuilder/GetVendorProducts?vendorId=${envendorId}&pageNumber=${enpageNumber}&pageSize=${enpageSize}&search=${ensearchQuery}&onlyActive=${enactive}&includeDescription=${endescription}`;\r\n    if (enprogramId && programId) {\r\n      url += `&programId=${enprogramId}`;\r\n    }\r\n    // Only add includeCountryId if it has a valid value\r\n    if (encodeIncludeCountry !== null && encodeIncludeCountry !== undefined && this.isFilterProductBasedOnCustomerCountryValid(this.instance.component.data)) {\r\n      url += `&filterProductBasedOnCustomerCountry=${encodeIncludeCountry}`;\r\n    }\r\n\r\n    this.http.get<VendorProductsResponse>(url, { headers }).subscribe(response => {\r\n      if (response && response.code === 200) {\r\n        if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n          this.totalPages = response?.data?.totalPages;\r\n          const data = response.data.dataSource;\r\n          this.filteredOptionsLength = data.length;\r\n          if (this.productList.length > 0) {\r\n            data.map(item => {\r\n              return item\r\n            }).forEach(i => this.productList.push(i))\r\n          } else {\r\n            this.productList = data;\r\n          }\r\n          // Update filteredOptions with transformedData\r\n          var allProductList = this.transformResponseData(this.productList);\r\n          this.filteredOptions = Promise.resolve(allProductList);\r\n          this.searching = false;\r\n          this.productsloadingFlag = true;\r\n          setTimeout(() => {\r\n            const ele = this.selectElem?.panel?.nativeElement;\r\n            if (ele) {\r\n              const trackHeight = ele.scrollHeight - ele.offsetHeight\r\n              const middlePosition = trackHeight / 2 - 50;\r\n              ele.scrollTo({ top: middlePosition, behavior: 'auto' });\r\n            } else {\r\n              console.log('Panel element is not available yet.');\r\n            }\r\n\r\n          }, 250);\r\n        }\r\n\r\n      }\r\n    });\r\n  }\r\n\r\n  // Utility function to transform response data\r\n  transformResponseData(data: Array<{ text: any, value: any, date: any }> | null | undefined): Array<{ label: string, value: number, date: string }> {\r\n    // Check if data is not null, undefined, and is an array with elements\r\n    if (data && Array.isArray(data) && data.length > 0) {\r\n      return data.map(item => ({\r\n        label: item.text,\r\n        value: item.value,\r\n        date: item.date\r\n      }));\r\n    } else {\r\n      // Return an empty array if data is null, undefined, or empty\r\n      return [];\r\n    }\r\n  }\r\n\r\n\r\n\r\n  filterWebsiteMulti() {\r\n    if (!this.selectOptions) {\r\n      return;\r\n    }\r\n    let search = this.websiteMultiFilterCtrl.value;\r\n    search = search.toLowerCase();\r\n    this.filteredOptions = this.selectOptions.then((options) => {\r\n      const filtered = options.filter((option) => option.label.replace(/<\\/?span[^>]*>/g, \"\").toLowerCase().indexOf(search) !== -1);\r\n      this.filteredOptionsLength = filtered.length;\r\n      return filtered;\r\n    });\r\n  }\r\n\r\n\r\n  ngOnDestroy() {\r\n    this._onDestroy.next('');\r\n    this._onDestroy.complete();\r\n    if (this.currentPanelElement) {\r\n      this.currentPanelElement.removeEventListener('scroll', this.onScroll.bind(this));\r\n    }\r\n  }\r\n\r\n\r\n  /*End*/\r\n  setInstance(instance: any) {\r\n    super.setInstance(instance);\r\n    this.instance.triggerUpdate();\r\n  }\r\n\r\n  onClearAll() {\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.searchQuery = '';\r\n      this.searching = false;\r\n      this.productList = [];\r\n      this.selectedValue = '';\r\n      this.loadData(this.pageNumber, this.pageSize, this.searchQuery);\r\n    }\r\n  }\r\n\r\n  updateSecondDropdown(value: any) {\r\n    const paramsData = JSON.parse(localStorage.getItem('cascadingDropdownsParamsone'));\r\n    const vendorId = this.getValueByKey(paramsData, 'vendorId');\r\n    const dealId = this.getValueByKey(paramsData, 'dealId');\r\n    const isEdit = this.getValueByKey(paramsData, 'isEdit');\r\n    let finalParams;\r\n    this.instance?.parent?.components?.length && this.instance.parent.components.forEach(items => {\r\n      if (this.checkVendorRefItems(items)) {\r\n        const apiEndPoint = items?.component?.selectValues;\r\n        if (apiEndPoint != '') {\r\n          var parameters = [\r\n            {\r\n              \"key\": \"userId\",\r\n              \"value\": JSON.parse(localStorage.getItem('currentUser')).UserId\r\n            },\r\n            {\r\n              \"key\": \"vendorId\",\r\n              \"value\": vendorId\r\n            },\r\n            {\r\n              \"key\": \"loginUserId\",\r\n              \"value\": JSON.parse(localStorage.getItem('currentUser')).UserId\r\n            },\r\n            {\r\n              \"key\": \"country\",\r\n              \"value\": typeof value === 'string' ? value.trim() : ''\r\n            },\r\n            {\r\n              \"key\": \"dataValue\",\r\n              \"value\": typeof value === 'string' ? value.trim() : ''\r\n            },\r\n            {\r\n              \"key\": \"dealId\",\r\n              \"value\": dealId\r\n            },\r\n            {\r\n              \"key\": \"isEdit\",\r\n              \"value\": isEdit\r\n            },\r\n            {\r\n              \"key\": \"referenceListName\",\r\n              \"value\": items?.component?.key\r\n            },\r\n            {\r\n              \"key\": \"referenceListFieldName\",\r\n              \"value\": this.instance?.component?.key\r\n            }\r\n          ]\r\n          finalParams = parameters?.filter(f1 => items?.component?.data?.headers.some(f2 => f1.key === f2.key));\r\n          if (Array.isArray(finalParams)) {\r\n            const index = finalParams.findIndex(param => param.key === 'dataValue');\r\n            if (index !== -1) {\r\n              // If the object exists, update its value\r\n              finalParams[index].value = value;\r\n            } else {\r\n              // If the object doesn't exist, add it to the array\r\n              finalParams.push({ key: 'dataValue', value: value });\r\n            }\r\n            this.commonService.initializeApiPath(apiEndPoint, finalParams).subscribe(response => {\r\n              if (response && response.code === 200) {\r\n                this.secondDropdownItems = response.data;\r\n                this.commonService.setDropdownItems(this.secondDropdownItems);\r\n              }\r\n            });\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.element && this.element.nativeElement && this.instance) {\r\n      // Add custom classes to elements.\r\n      if (this.instance.component.customClass) {\r\n        this.element.nativeElement.classList.add(this.instance.component.customClass);\r\n      }\r\n    }\r\n    this.selectElem.openedChange.subscribe(async (isOpen: boolean) => {\r\n      let i = 0\r\n      if (isOpen) {\r\n        const newProductPickerFlag = this.instance?.component?.attributes;\r\n        let checkInvokeFromLibrary = this.commonService.checkIsAttributeTrue(newProductPickerFlag, \"invokeFromLibrary\")\r\n        const firstLevel = (this.getVendorRefList(this.instance) && checkInvokeFromLibrary);\r\n        if (firstLevel) {\r\n          this.selectElem.valueChange.subscribe(res => {\r\n            this.commonService.setDropDownFlag(true);\r\n            if (i === 0) {\r\n              this.updateSecondDropdown(res);\r\n            }\r\n            i++\r\n          });\r\n        }\r\n\r\n\r\n\r\n        if (this.checkVendorRefItems(this.instance) && checkInvokeFromLibrary) {\r\n          this.storeDependentItems = [];\r\n          this.secondDropdownItems = this.commonService.getDropdownItems();\r\n          if (this.secondDropdownItems?.length) {\r\n            this.secondDropdownItems.forEach((renderElement, index, array) => {\r\n              this.storeDependentItems.push({ label: renderElement['text'], value: this.commonService.onlyNumbers(renderElement['value']) ? renderElement['value'] + ' ' : renderElement['value'] });\r\n            });\r\n          }\r\n          if (!this.commonService.getDropDownFlag()) {\r\n            this.storeDependentItems = this.instance.component.data.values;\r\n          }\r\n          this.filteredOptions = Promise.resolve(this.storeDependentItems);\r\n          this.selectOptions = Promise.resolve(this.storeDependentItems);\r\n          this.selectOptions.then(result => {\r\n            this.filteredOptionsLength = result.length\r\n          });\r\n        }\r\n      }\r\n    });\r\n\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n      this.selectElem.openedChange.subscribe((isOpen: boolean) => {\r\n        if (isOpen) {\r\n          this.pageNumber = 1;\r\n          this.pageSize = 20;\r\n          if (this.searchQuery?.length > 0) {\r\n            if (this.searchItem?.length > 0) {\r\n              this.websiteMultiFilterCtrl.setValue(this.searchItem);\r\n              this.ref.detectChanges();\r\n            }\r\n          }\r\n          // this.searchQuery = '';\r\n          this.searching = false;\r\n          //this.loadData(this.pageNumber, this.pageSize, this.searchQuery);\r\n          this.registerPanelScrollEvent(this.selectElem);\r\n        } else {\r\n          this.removePanelScrollEvent();\r\n          this.searching = false;\r\n          // this.selectedValue = this.getValue();\r\n          // if (this.selectedValue?.toString().length == 0) {\r\n          //   this.productList = [];\r\n          //   this.pageNumber = 1;\r\n          //   this.pageSize = 20;\r\n          //   this.searchQuery = '';\r\n          //   this.loadData(this.pageNumber, this.pageSize, this.searchQuery);\r\n          // }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  removePanelScrollEvent() {\r\n    // Remove the scroll event listener\r\n    if (this.currentPanelElement) {\r\n      this.currentPanelElement.removeEventListener('scroll', this.onScroll.bind(this));\r\n      this.currentPanelElement = null;\r\n    }\r\n  }\r\n\r\n\r\n\r\n  ngOnInit() {\r\n    /*new logic */\r\n    if (this.instance.component.key.toLowerCase() === 'vendorproductid') {\r\n      this.websiteMultiFilterCtrl.valueChanges\r\n        .pipe(\r\n          debounceTime(1000), // Time in milliseconds between key events\r\n          //  tap(() => this.searching = true),\r\n          distinctUntilChanged(),\r\n          takeUntil(this._onDestroy))\r\n        .subscribe((searchQuery) => {\r\n          if (searchQuery != '') {\r\n\r\n            this.pageNumber = 1;\r\n            this.pageSize = 20;\r\n            this.productList = [];\r\n            this.searching = true;\r\n            this.searchQuery = searchQuery;\r\n            this.searchItem = searchQuery\r\n            this.loadData(this.pageNumber, this.pageSize, searchQuery);\r\n          }\r\n        });\r\n    } else {\r\n      this.websiteMultiFilterCtrl.valueChanges\r\n        .pipe(\r\n          takeUntil(this._onDestroy))\r\n        .subscribe(() => {\r\n          this.filterWebsiteMulti();\r\n        });\r\n    }\r\n    /*End */\r\n    this.selectOptions = new Promise((resolve) => {\r\n      this.selectOptionsResolve = resolve;\r\n    });\r\n    this.selectOptions.then((options) => {\r\n      this.filteredOptionsLength = options.length;\r\n    });\r\n\r\n    this.filteredOptions = this.selectOptions;\r\n  }\r\n\r\n  onSelectionChange(event: any, submitData: any, attributes: any) {\r\n\r\n  }\r\n\r\n  checkVendorRefItems(instance) {\r\n    const selectValues = instance.component['selectValues'];\r\n    const dataUrl = instance.component['data']?.url;\r\n    const isSelectValuesValid = selectValues != null && selectValues !== '' && selectValues !== undefined;\r\n    const isDataUrlInvalid = dataUrl == null || dataUrl === '' || dataUrl === undefined;\r\n    return isSelectValuesValid && isDataUrlInvalid;\r\n  }\r\n\r\n  getVendorRefList(instance) {\r\n    const dataUrl = instance.component['data']?.url;\r\n    const isSelectValuesValid = dataUrl != null && dataUrl !== '' && dataUrl !== undefined;\r\n    return isSelectValuesValid;\r\n  }\r\n\r\n  isError() {\r\n    if (this.instance.error) {\r\n      this.control.setErrors(this.instance.component.validate);\r\n      return true;\r\n    }\r\n    else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  getErrorMessage() {\r\n    if (this.instance.error && this.instance.error.messages) {\r\n      const { messages } = this.instance.error;\r\n      if (messages.length) {\r\n        for (const msg of messages) {\r\n          if (msg.context) {\r\n            if (this.instance && this.instance.parent && this.instance.parent._data) {\r\n              if (this.instance.parent._data.submit) {\r\n                this.control.markAllAsTouched();\r\n              }\r\n            }\r\n            return this.instance.error ? this.instance.error.message : '';\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  compareObjects(o1: any, o2: any): boolean {\r\n    return _.isEqual(o1, o2);\r\n  }\r\n\r\n  isFilterProductBasedOnCustomerCountryValid(data) {\r\n    if (data && data.headers && Array.isArray(data.headers)) {\r\n      const header = data.headers.find(h => h.key === 'filterProductBasedOnCustomerCountry');\r\n      if (\r\n        header &&\r\n        header.value !== null &&\r\n        header.value !== undefined &&\r\n        header.value.trim() !== \"\" &&\r\n        header.value.trim().toLowerCase() === \"true\"\r\n      ) {\r\n        return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n}\r\nSelectComponent.MaterialComponent = MaterialSelectComponent;\r\n\r\n// Make sure we detect changes when new items make their way into the select dropdown.\r\nconst setItems = SelectComponent.prototype.setItems;\r\nSelectComponent.prototype.setItems = function (...args) {\r\n  setItems.call(this, ...args);\r\n  if (this.materialComponent && this.materialComponent.selectOptionsResolve) {\r\n    this.materialComponent.selectOptionsResolve(this.selectOptions);\r\n  }\r\n};\r\n\r\nexport { SelectComponent };","import { Component } from '@angular/core';\r\nimport WellComponent from 'formiojs/components/well/Well.js';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\n@Component({\r\n  selector: 'mat-formio-well',\r\n  template: `\r\n    <mat-card appearance=\"outlined\">\r\n      <mat-card-content fxLayout=\"column\"\r\n                        fxLayoutGap=\"1em\"\r\n                        [ngStyle]=\"{\r\n                           'background-color':'#f5f5f5',\r\n                           'padding': '1.5em'\r\n                         }\"\r\n      >\r\n        <ng-template #components></ng-template>\r\n      </mat-card-content>\r\n    </mat-card>\r\n  `,\r\n  styles: []\r\n})\r\nexport class MaterialWellComponent extends MaterialNestedComponent {}\r\nWellComponent.MaterialComponent = MaterialWellComponent;\r\nexport { WellComponent };\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n  selector: 'NgxMat-confirmation-dialog',\r\n  templateUrl: './confirmation-dialog.component.html',\r\n  styleUrls: ['./confirmation-dialog.component.css']\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit {\r\n\r\n  constructor(public dialogRef: MatDialogRef<ConfirmationDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n}\r\n","<div class=\"dialog-container\">\r\n<h2 mat-dialog-title class=\"data-grid-alert\">Alert</h2>\r\n<mat-dialog-content class=\"data-grid-popup-body\">\r\n   {{data.message}}\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"data-grid-popup-footer\">\r\n    <button mat-button [mat-dialog-close]=\"true\" color=\"warn\" *ngIf=\"data.buttonStatus\">Delete</button>\r\n    <button mat-button [mat-dialog-close]=\"false\" [ngClass]=\"{'data-grid-closed-btn': !data.buttonStatus}\">{{data.buttonStatus ? 'Cancel': 'Close'}}</button>\r\n</mat-dialog-actions>\r\n</div>","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\r\nimport { CommonService } from '../common.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\nexport interface Product {\r\n  productName: string;\r\n  productDescription: string;\r\n  quantity: any,\r\n  price: any,\r\n  text: any,\r\n  id: any,\r\n  value: any,\r\n  otherInformation0: any,\r\n  otherInformation1: any,\r\n  otherInformation2: any\r\n}\r\n\r\n@Component({\r\n  selector: 'ngx-mat-add-on-products',\r\n  templateUrl: './add-on-products.component.html',\r\n  styleUrls: ['./add-on-products.component.css'],\r\n  animations: [\r\n    trigger('slideDown', [\r\n      state('hidden', style({ height: '0px', opacity: 0, overflow: 'hidden' })),\r\n      state('visible', style({ height: '*', opacity: 1 })),\r\n      transition('hidden => visible', [\r\n        animate('300ms ease-out')\r\n      ]),\r\n      transition('visible => hidden', [\r\n        animate('300ms ease-in')\r\n      ])\r\n    ])\r\n  ]\r\n})\r\nexport class AddOnProductsComponent implements AfterViewInit, OnInit {\r\n  form: FormGroup;\r\n  dropdownOne: string[] = [];\r\n  dropdownTwo: string[] = [];\r\n  dropdownThree: string[] = [];\r\n  dropdownFour: string[] = [];\r\n  filteredDropdownOne: string[] = [];\r\n  filteredDropdownTwo: string[] = [];\r\n  filteredDropdownThree: string[] = [];\r\n  filteredDropdownFour: string[] = [];\r\n  addProductsColumns: string[] = ['select', 'productName', 'skuNumber', 'inventory'];\r\n  showAllproductsColumns: string[] = ['delete', 'productName', 'categoryName', 'subCategory', 'Quantity', 'price', 'skuNumber', 'inventory', 'cost'];\r\n  quantityList: number[] = [5, 10, 15, 20, 25];\r\n  ELEMENT_DATA: Product[] = [];\r\n  dataSource = new MatTableDataSource<Product>();\r\n  selection = new SelectionModel<any>(true, []);\r\n  selectedDataSource = new MatTableDataSource<Product>([]);\r\n  selectedCategory: any = null;\r\n  selectedSubCategory: any = null;\r\n  showCategory: boolean = false;\r\n  showSubcategory: boolean = false;\r\n  showPrice: boolean = true;\r\n  showQuantity: boolean = true;\r\n  showSkuNumber: boolean = false;\r\n  showInventory: boolean = false;\r\n  showNewProductPicker: boolean = true;\r\n  setCategory: string = '';\r\n  setSubCategory: string = '';\r\n  loadingFlag: boolean = false;\r\n  pageNumber = 1;\r\n  pageSize = 20;\r\n  totalPages = 0;\r\n  searchQuery = '';\r\n  itemList: any[] = [];\r\n  trackHeight: any;\r\n  prevScrollPosition = 0; // Track the previous scroll position\r\n  @ViewChild('firstscrollableDiv') firstscrollableDiv: ElementRef;\r\n  spinnerFlag: boolean = false;\r\n  dropdownL1: boolean = false;\r\n  dropdownL2: boolean = false;\r\n  dropdownL3: boolean = false;\r\n  dropdownL4: boolean = false;\r\n  dropdownL1Label: string = '';\r\n  dropdownL2Label: string = '';\r\n  dropdownL3Label: string = '';\r\n  dropdownL4Label: string = '';\r\n  dropDownCount: number = 0;\r\n  levelOneId: any = '';\r\n  levelTwoId: any = '';\r\n  levelThreeId: any = '';\r\n  levelFourId: any = '';\r\n  disablePrice: boolean = true;\r\n  checkSubmissionStatus: boolean = false;\r\n  currentPage: string = 'select-products';\r\n  isVisible: boolean = true;\r\n  isDisabled2: boolean = true;\r\n  isDisabled3: boolean = true;\r\n  isDisabled4: boolean = true;\r\n  isPriceDisable: boolean = true;\r\n  activeFiltersCount: number = 0;\r\n  emptyImage: string = '/i/table-grid-empty-state.svg';\r\n  getTotalRecords: number = 0;\r\n  priceFieldLable: string = 'Price';\r\n  targetCost: string = 'Your Target Cost';\r\n  showCost: boolean = false;\r\n  skuTweek: string = 'SKU Number';\r\n  costTweek: string = 'Your Target Cost';\r\n  priceTweek: string = 'Price';\r\n  productTweek: string = 'Product Name';\r\n  quantityTweek: string = 'Quantity';\r\n  categoryTweek: string = 'Category Name';\r\n  subCategoryTweek: string = 'Sub Category';\r\n  inventoryTweek: string = 'Inventory';\r\n  alphanumeric: boolean = false;\r\n\r\n  constructor(\r\n    public matDialogRef: MatDialogRef<AddOnProductsComponent>,\r\n    @Inject(MAT_DIALOG_DATA) data: any,\r\n    private fb: FormBuilder,\r\n    private dialog: MatDialog,\r\n    private commonSevice: CommonService\r\n  ) {\r\n    this.showCategory = data.dropdownsFlag.showDialogCategory;\r\n    this.showSubcategory = data.dropdownsFlag.showDialogSubCategory;\r\n    this.showPrice = data.dropdownsFlag.showDialogPrice;\r\n    this.showQuantity = data.dropdownsFlag.showDialogQuantity;\r\n    this.showSkuNumber = data.dropdownsFlag.showDialogSkuNumber;\r\n    this.showInventory = data.dropdownsFlag.showDialogInventory;\r\n    this.showNewProductPicker = data.dropdownsFlag.showNewProductPicker;\r\n    this.dropdownL1 = data.dropdownsFlag.dropdownL1;\r\n    this.dropdownL2 = data.dropdownsFlag.dropdownL2;\r\n    this.dropdownL3 = data.dropdownsFlag.dropdownL3;\r\n    this.dropdownL4 = data.dropdownsFlag.dropdownL4;\r\n    this.dropdownL1Label = data.dropdownsFlag.dropdownL1Label;\r\n    this.dropdownL2Label = data.dropdownsFlag.dropdownL2Label;\r\n    this.dropdownL3Label = data.dropdownsFlag.dropdownL3Label;\r\n    this.dropdownL4Label = data.dropdownsFlag.dropdownL4Label;\r\n    this.checkSubmissionStatus = data.dropdownsFlag.checkSubmissionStatus;\r\n    this.dropDownCount = this.countTrueDropdowns(data.dropdownsFlag);\r\n    this.selection = new SelectionModel<Product>(true, data.selectedProducts || []);\r\n    this.isPriceDisable = data.dropdownsFlag.priceDisable;\r\n    this.skuTweek = data.dropdownsFlag?.skuTweek || \"SKU Number\";\r\n    this.costTweek = data.dropdownsFlag?.costTweek || \"Your Target Cost\";\r\n    this.priceTweek = data.dropdownsFlag?.priceTweek || \"Price\";\r\n    this.productTweek = data.dropdownsFlag?.productTweek || \"Product Name\";\r\n    this.quantityTweek = data.dropdownsFlag?.quantityTweek || \"Quantity\";\r\n    this.showCost = data.dropdownsFlag?.showDialogCost;\r\n    this.categoryTweek = data.dropdownsFlag?.categoryTweek || \"Category Name\";\r\n    this.subCategoryTweek = data.dropdownsFlag?.subCategoryTweek || \"Sub Category\";\r\n    this.inventoryTweek = data.dropdownsFlag?.inventoryTweek || \"Inventory\";\r\n    this.alphanumeric = data.dropdownsFlag.alphanumeric;\r\n    if (!this.showCategory) {\r\n      this.removeColumn('categoryName');\r\n    }\r\n    if (!this.showPrice) {\r\n      this.removeColumn('price');\r\n    }\r\n    if (!this.showSubcategory) {\r\n      this.removeColumn('subCategory');\r\n    }\r\n    if (!this.showQuantity) {\r\n      this.removeColumn('Quantity');\r\n    }\r\n    if (!this.showSkuNumber) {\r\n      this.removeColumn('skuNumber');\r\n    }\r\n    if (!this.showInventory) {\r\n      this.removeColumn('inventory');\r\n    }\r\n    if (!this.showCost) {\r\n      this.removeColumn('cost');\r\n    }\r\n  }\r\n\r\n  removeColumn(columnName: string) {\r\n    this.showAllproductsColumns = this.showAllproductsColumns.filter(column => column !== columnName);\r\n    this.addProductsColumns = this.addProductsColumns.filter(column => column !== columnName);\r\n  }\r\n\r\n  initializeFormArray() {\r\n    const selectedProductsArray = this.form.get('selectedProducts') as FormArray;\r\n    if (!selectedProductsArray) {\r\n      console.error('selectedProducts FormArray not initialized.');\r\n      return;\r\n    }\r\n\r\n    this.selection.selected.forEach(product => {\r\n      selectedProductsArray.push(this.fb.group({\r\n        price: [product?.price ?? '', this.showPrice && !this.isPriceDisable ? Validators.required : []],\r\n        text: [product?.text || ''],\r\n        quantity: [product.quantity || '', Validators.required],\r\n        category: [product?.category || ''],\r\n        subCategory: [product?.subCategory || ''],\r\n        value: [product?.value || ''],\r\n        otherInformation0: [product?.otherInformation0 || '', this.showCost ? Validators.required : []],\r\n        otherInformation1: [product?.otherInformation1 || ''],\r\n        otherInformation2: [product?.otherInformation2 || '']\r\n      }));\r\n    });\r\n\r\n    selectedProductsArray.controls.forEach(control => {\r\n      this.isPriceDisable ? control.get('price')?.disable() : control.get('price')?.enable();\r\n    });\r\n\r\n\r\n    this.selectedDataSource.data = [...this.selection.selected];\r\n  }\r\n\r\n  initializeDataSources() {\r\n    // Debugging logs to trace issues\r\n    if (Array.isArray(this.selection?.selected) && Array.isArray(this.dataSource?.data) && this.selection?.selected?.length) {\r\n      this.selection?.selected?.forEach(selectedProduct => {\r\n        const index = this.dataSource.data.findIndex(product => product.value === selectedProduct.value);\r\n        if (index >= 0) {\r\n          this.dataSource.data[index] = selectedProduct;\r\n        }\r\n      });\r\n      this.selectedDataSource.data = [...this.selection.selected];\r\n    } else {\r\n      console.warn('No selected products found.');\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n  }\r\n\r\n\r\n  ngOnInit(): void {\r\n    this.form = this.fb.group({\r\n      dropdownLevel1: [{ value: '', disabled: false }],\r\n      dropdownLevel2: [{ value: '', disabled: true }],\r\n      dropdownLevel3: [{ value: '', disabled: true }],\r\n      dropdownLevel4: [{ value: '', disabled: true }],\r\n      searchProductName: [''],\r\n      selectedProducts: this.fb.array([])\r\n    });\r\n    this.initializeFormArray();\r\n\r\n    if (this.dropdownL1) {\r\n      this.loadDropdownL1();\r\n    }\r\n\r\n    this.form.get('dropdownLevel1').valueChanges\r\n      .pipe(\r\n        startWith(''),\r\n        map(value =>\r\n          this.filterProducts(value, 'category1'))\r\n      ).subscribe(l1 => {\r\n        this.filteredDropdownOne = l1;\r\n      });\r\n    this.form.get('dropdownLevel2').valueChanges\r\n      .pipe(\r\n        startWith(''),\r\n        map(value => this.filterProducts(value, 'category2'))\r\n      ).subscribe(l2 => {\r\n        this.filteredDropdownTwo = l2;\r\n      });\r\n    this.form.get('dropdownLevel3').valueChanges\r\n      .pipe(\r\n        startWith(''),\r\n        map(value => this.filterProducts(value, 'category3'))\r\n      ).subscribe(l3 => {\r\n        this.filteredDropdownThree = l3;\r\n      });\r\n    this.form.get('dropdownLevel4').valueChanges\r\n      .pipe(\r\n        startWith(''),\r\n        map(value => this.filterProducts(value, 'category4'))\r\n      ).subscribe(l4 => {\r\n        this.filteredDropdownFour = l4;\r\n      });\r\n  }\r\n\r\n  handleDropdownFilter() {\r\n    const searchQuery = this.form.controls.searchProductName?.value?.trim(); // Trim to remove blank spaces\r\n    const levelOneId = this.form.controls.dropdownLevel1?.value?.id;\r\n    this.loadingFlag = false;\r\n    if (this.firstscrollableDiv) {\r\n      this.firstscrollableDiv.nativeElement.scrollTop = 0;\r\n    }\r\n    if ((searchQuery && searchQuery !== '') || (levelOneId && levelOneId !== null && levelOneId !== undefined)) {\r\n      let productName = this.form.controls.searchProductName?.value || '';\r\n      // Check if the length exceeds 100 and truncate if necessary\r\n      if (productName?.length > 100) {\r\n        productName = productName.substring(0, 100);\r\n      }\r\n      this.searchQuery = encodeURIComponent(productName);\r\n      this.levelOneId = this.form.controls.dropdownLevel1.value?.id;\r\n      this.levelTwoId = this.form.controls.dropdownLevel2.value?.id;\r\n      this.levelThreeId = this.form.controls.dropdownLevel3.value?.id;\r\n      this.levelFourId = this.form.controls.dropdownLevel4.value?.id;\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.getProducts(false);\r\n    }\r\n    this.updateActiveFiltersCount();\r\n  }\r\n\r\n  loadDropdownL1() {\r\n    this.spinnerFlag = true;\r\n    this.commonSevice.productLevelOne().subscribe(response => {\r\n      this.spinnerFlag = false\r\n      if (response && response.code === 200) {\r\n        this.dropdownOne = response.data;\r\n        this.filteredDropdownOne = this.filterProducts('', 'category1');\r\n      }\r\n    });\r\n  }\r\n\r\n  loadDropdownL2(levelOneId: any) {\r\n    this.spinnerFlag = true;\r\n    this.commonSevice.productLevelTwo(levelOneId).subscribe(response => {\r\n      this.spinnerFlag = false\r\n      if (response && response.code === 200) {\r\n        this.dropdownTwo = response.data;\r\n        this.filteredDropdownTwo = this.filterProducts('', 'category2');\r\n      }\r\n    });\r\n  }\r\n\r\n  loadDropdownL3(levelOneId: any, levelTwoId: any) {\r\n    this.spinnerFlag = true;\r\n    this.commonSevice.productLevelThree(levelOneId, levelTwoId).subscribe(response => {\r\n      this.spinnerFlag = false\r\n      if (response && response.code === 200) {\r\n        this.dropdownThree = response.data;\r\n        this.filteredDropdownThree = this.filterProducts('', 'category3');\r\n      }\r\n    });\r\n  }\r\n\r\n  loadDropdownL4(levelOneId: any, levelTwoId: any, levelThreeId: any) {\r\n    this.spinnerFlag = true;\r\n    this.commonSevice.productLevelFour(levelOneId, levelTwoId, levelThreeId).subscribe(response => {\r\n      this.spinnerFlag = false\r\n      if (response && response.code === 200) {\r\n        this.dropdownFour = response.data;\r\n        this.filteredDropdownFour = this.filterProducts('', 'category4');\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  filterProducts(value: string, cat: string): string[] {\r\n    const filterValue = typeof value === 'string' ? value?.toLowerCase() : value;\r\n    let data: string[];\r\n\r\n    /*Dynamically assign the data array based on the category*/\r\n    switch (cat) {\r\n      case 'category1':\r\n        data = this.dropdownOne;\r\n        break;\r\n      case 'category2':\r\n        data = this.dropdownTwo;\r\n        break;\r\n      case 'category3':\r\n        data = this.dropdownThree;\r\n        break;\r\n      case 'category4':\r\n        data = this.dropdownFour;\r\n        break;\r\n      default:\r\n        data = [];\r\n    }\r\n\r\n    if (!filterValue) {\r\n      return data;\r\n    } else {\r\n      return data?.filter(option => option['name']?.toLowerCase().includes(filterValue));\r\n    }\r\n  }\r\n\r\n\r\n  onSubmit() {\r\n    if (this.form.valid) {\r\n      this.matDialogRef.close({\r\n        data: {\r\n          status: true,\r\n          items: this.form.getRawValue()\r\n        }\r\n      });\r\n    } else {\r\n      this.form.markAllAsTouched();\r\n      setTimeout(() => {\r\n        this.scrollToFirstInvalidControl();\r\n      });\r\n    }\r\n  }\r\n\r\n  isAllSelected(): boolean {\r\n    const numSelected = this.selection.selected.length;\r\n    const numRows = this.dataSource.data.length;\r\n    return numSelected === numRows;\r\n  }\r\n\r\n  isIndeterminate(): boolean {\r\n    const numSelected = this.selection.selected.length;\r\n    const numRows = this.dataSource.data.length;\r\n    return numSelected > 0 && numSelected < numRows;\r\n  }\r\n\r\n  masterToggle() {\r\n    this.isAllSelected()\r\n      ? this.selection.clear()\r\n      : this.dataSource.data.forEach(row => this.selection.select(row));\r\n    this.updateSelectedProducts();\r\n  }\r\n\r\n  toggleSelection(row: Product) {\r\n    // Check if the product is already selected\r\n    const alreadySelected = this.selection.selected.some(selected => selected.value === row.value);\r\n    if (alreadySelected) {\r\n      // If the product is already selected, deselect it\r\n      this.selection.deselect(row);\r\n    } else {\r\n      // If not already selected, select it\r\n      this.selection.select(row);\r\n    }\r\n    // Update selected products to ensure no duplicates\r\n    this.updateSelectedProducts();\r\n\r\n  }\r\n\r\n\r\n  // Getter for the FormArray\r\n  get selectedProducts(): FormArray {\r\n    return this.form.get('selectedProducts') as FormArray;\r\n  }\r\n\r\n  updateSelectedProducts() {\r\n    if (Array.isArray(this.selection.selected)) {\r\n      // Deduplicate selected products\r\n      const uniqueProducts = Array.from(\r\n        new Map(this.selection.selected.map(product => [product.value, product])).values()\r\n      );\r\n      this.selection.clear();\r\n      uniqueProducts.forEach(product => this.selection.select(product));\r\n\r\n      this.selectedDataSource.data = [...this.selection.selected];\r\n      const selectedProductsArray = this.selectedProducts;\r\n      selectedProductsArray.clear();\r\n      this.selection?.selected?.forEach((product, index) => {\r\n        if (!product?.value) {\r\n          console.error('Product value (SKU) is missing at index:', index, product);\r\n          return;\r\n        }\r\n        const productFormGroup = this.fb.group({\r\n          price: [product?.price ?? '', this.showPrice && !this.isPriceDisable ? Validators.required : []],\r\n          text: [product?.text || ''],\r\n          quantity: [product?.quantity ?? '', this.showQuantity ? Validators.required : []],\r\n          category: [product?.category || ''],\r\n          subCategory: [product?.subCategory || ''],\r\n          value: [product?.value || ''],\r\n          otherInformation0: [product?.otherInformation0 || '', this.showCost ? Validators.required : []],\r\n          otherInformation1: [product?.otherInformation1 || ''],\r\n          otherInformation2: [product?.otherInformation2 ?? '']\r\n        });\r\n        if (productFormGroup) {\r\n          selectedProductsArray.push(productFormGroup);\r\n        } else {\r\n          console.error(`Failed to create FormGroup for product at index ${index}.`);\r\n        }\r\n      });\r\n      selectedProductsArray.controls.forEach((control, index) => {\r\n        if (control instanceof FormGroup) {\r\n          const priceControl = control.get('price');\r\n          if (priceControl) {\r\n            this.isPriceDisable ? priceControl.disable() : priceControl.enable();\r\n          } else {\r\n            console.error(`Price control is missing in FormGroup at index ${index}.`);\r\n          }\r\n        } else {\r\n          console.error(`Unexpected control type at index ${index}:`, control);\r\n        }\r\n      });\r\n    } else {\r\n      console.error('Selection.selected is not an array:', this.selection.selected);\r\n    }\r\n  }\r\n\r\n\r\n  getTotalRows(): number {\r\n    return this.dataSource.data.length;\r\n  }\r\n\r\n  getSelectedRowsCount(): number {\r\n    return this.selection.selected.length;\r\n  }\r\n\r\n  onOptionSelected(event: any, category: string) {\r\n    let selectedValue;\r\n    if (event && event.option && event.option.value !== undefined) {\r\n      selectedValue = event.option.value.id;\r\n    } else {\r\n      selectedValue = event;\r\n    }\r\n    if (category === 'category1') {\r\n      this.levelOneId = selectedValue;\r\n      this.form.get('dropdownLevel2').setValue(null);\r\n      this.form.get('dropdownLevel3').setValue(null);\r\n      this.form.get('dropdownLevel4').setValue(null);\r\n      this.filteredDropdownTwo = [];\r\n      this.filteredDropdownThree = [];\r\n      this.filteredDropdownFour = [];\r\n      if (this.dropdownL2 && this.levelOneId) {\r\n        this.form.get('dropdownLevel2')?.enable();\r\n        this.form.get('dropdownLevel3')?.disable();\r\n        this.form.get('dropdownLevel4')?.disable();\r\n        this.isDisabled2 = false;\r\n        this.loadDropdownL2(this.levelOneId);\r\n      } else {\r\n        this.form.get('dropdownLevel2')?.disable();\r\n        this.form.get('dropdownLevel3')?.disable();\r\n        this.form.get('dropdownLevel4')?.disable();\r\n        this.form.get('dropdownLevel2').setValue(null);\r\n        this.form.get('dropdownLevel3').setValue(null);\r\n        this.form.get('dropdownLevel4').setValue(null);\r\n        //this.levelOneId = null;\r\n        this.levelTwoId = null;\r\n        this.levelThreeId = null;\r\n        this.levelFourId = null;\r\n        this.isDisabled2 = true;\r\n        this.isDisabled3 = true;\r\n        this.isDisabled4 = true;\r\n      }\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.getProducts(false);\r\n    }\r\n    if (category === 'category2') {\r\n      this.levelTwoId = selectedValue;\r\n      this.form.get('dropdownLevel3').setValue(null);\r\n      this.form.get('dropdownLevel4').setValue(null);\r\n      this.filteredDropdownThree = [];\r\n      if (this.dropdownL3 && this.levelOneId && this.levelTwoId) {\r\n        this.form.get('dropdownLevel3')?.enable();\r\n        this.form.get('dropdownLevel4')?.disable();\r\n        this.isDisabled3 = false;\r\n        this.loadDropdownL3(this.levelOneId, this.levelTwoId);\r\n      } else {\r\n        this.form.get('dropdownLevel3')?.disable();\r\n        this.form.get('dropdownLevel4')?.disable();\r\n        this.form.get('dropdownLevel3').setValue(null);\r\n        this.form.get('dropdownLevel4').setValue(null);\r\n        //this.levelTwoId = null;\r\n        this.levelThreeId = null;\r\n        this.levelFourId = null;\r\n        this.isDisabled3 = true;\r\n        this.isDisabled4 = true;\r\n      }\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.getProducts(false);\r\n    }\r\n    if (category === 'category3') {\r\n      this.levelThreeId = selectedValue;\r\n      this.form.get('dropdownLevel4').setValue(null);\r\n      this.filteredDropdownFour = [];\r\n      if (this.dropdownL4 && this.levelOneId && this.levelTwoId && this.levelThreeId) {\r\n        this.form.get('dropdownLevel4')?.enable();\r\n        this.isDisabled4 = false;\r\n        this.loadDropdownL4(this.levelOneId, this.levelTwoId, this.levelThreeId);\r\n      } else {\r\n        this.form.get('dropdownLevel4')?.disable();\r\n        this.form.get('dropdownLevel4').setValue(null);\r\n        //this.levelThreeId = null;\r\n        this.levelFourId = null;\r\n        this.isDisabled4 = true;\r\n      }\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.getProducts(false);\r\n    }\r\n    if (category === 'category4') {\r\n      this.levelFourId = selectedValue;\r\n      this.pageNumber = 1;\r\n      this.pageSize = 20;\r\n      this.getProducts(false);\r\n    }\r\n    this.updateActiveFiltersCount();\r\n  }\r\n\r\n  getProducts(flag: boolean) {\r\n    this.spinnerFlag = true;\r\n    const search = this.searchQuery;\r\n    const levelOneId = this.levelOneId ? this.levelOneId : 0;\r\n    const levelTwoId = this.levelTwoId ? this.levelTwoId : 0;\r\n    const levelThreeId = this.levelThreeId ? this.levelThreeId : 0;\r\n    const levelFourId = this.levelFourId ? this.levelFourId : 0;\r\n    if (this.shouldResetTable(search, levelOneId, levelTwoId, levelThreeId, levelFourId)) {\r\n      this.resetTable();\r\n      return;\r\n    }\r\n    this.commonSevice.loadProducts(this.pageNumber, this.pageSize, search, true, false, levelOneId, levelTwoId, levelThreeId, levelFourId).subscribe(response => {\r\n      this.spinnerFlag = false;\r\n      if (response && response.code === 200) {\r\n        this.totalPages = response?.data?.totalPages;\r\n        const data = response.data.dataSource;\r\n        this.getTotalRecords = response.data.totalRecords\r\n        // Sync selection state with new data\r\n        data.forEach(product => {\r\n          const existingProduct = this.selection.selected.find(p => p.value === product.value);\r\n          if (existingProduct) {\r\n            Object.assign(product, existingProduct); // Replace product with existing reference\r\n            this.selection.select(product); // Mark as selected\r\n            this.updateSelectedProducts();\r\n          }\r\n        });\r\n\r\n        // Avoid duplicates in the dataSource\r\n        const existingProductValues = new Set(this.dataSource.data.map(product => product.value));\r\n        const uniqueNewData = data.filter(product => !existingProductValues.has(product.value));\r\n        if (this.dataSource.data.length > 0 && flag) {\r\n          // data.forEach(item => this.dataSource.data.push(item));\r\n          this.dataSource.data = [...this.dataSource.data, ...uniqueNewData];\r\n        } else {\r\n          this.dataSource.data = data;\r\n        }\r\n\r\n        this.loadingFlag = true;\r\n        setTimeout(() => {\r\n          const middlePosition = this.trackHeight / 2 - 50;\r\n          if (this.firstscrollableDiv && this.firstscrollableDiv.nativeElement && flag) {\r\n            this.firstscrollableDiv.nativeElement.scrollTo({ top: middlePosition, behavior: 'auto' });\r\n          }\r\n        }, 250);\r\n        this.initializeDataSources();\r\n      }\r\n    });\r\n  }\r\n\r\n  removeRow(event: Event, element: Product) {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    let message = 'Are you sure you want to delete this product?';\r\n    let showButton = true;\r\n    const index = this.selectedDataSource.data.indexOf(element);\r\n    if (index >= 0) {\r\n      if (this.selectedDataSource.data.length === 1 && !this.checkSubmissionStatus) {\r\n        message = 'Please select at least one product.';\r\n        showButton = false;\r\n      }\r\n      const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n        disableClose: true,\r\n        width: '90%',\r\n        maxWidth: '400px',\r\n        data: { message: message, buttonStatus: showButton }\r\n      });\r\n      dialogRef.afterClosed().subscribe(result => {\r\n        if (result) {\r\n          this.selectedDataSource.data.splice(index, 1);\r\n          this.selectedDataSource._updateChangeSubscription();\r\n          this.selection.deselect(element);\r\n          const selectedProductsArray = this.form.get('selectedProducts') as FormArray;\r\n          const productIndex = selectedProductsArray.controls.findIndex(control => control.value.value === element.value);\r\n          if (productIndex >= 0) {\r\n            selectedProductsArray.removeAt(productIndex);\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  onScroll(event: any) {\r\n    this.trackHeight = event.target.scrollHeight - event.target.offsetHeight;\r\n    if (this.loadingFlag && (Math.floor(event.target.scrollTop / this.trackHeight * 100) > 50)) {\r\n      this.loadingFlag = false;\r\n      if (this.pageNumber < this.totalPages) {\r\n        this.pageNumber = this.pageNumber + 1;\r\n        this.getProducts(true);\r\n      } else {\r\n        this.loadingFlag = true;\r\n      }\r\n    }\r\n    this.prevScrollPosition = event.target.scrollTop;\r\n  }\r\n\r\n  countTrueDropdowns(obj) {\r\n    // Dynamically find all keys that start with 'dropdownL' and are boolean (true/false)\r\n    return Object.keys(obj)\r\n      .filter(key => key.startsWith('dropdownL') && typeof obj[key] === 'boolean' && obj[key] === true)\r\n      .length;\r\n  }\r\n\r\n  /* Use the property that should display in the input field */\r\n  displayFn(option): string {\r\n    return option ? option.name : '';\r\n  }\r\n\r\n  onQuantityChange(event: any, index: number): void {\r\n    const value = event.target.value;\r\n    const quantityControl = this.selectedProducts.at(index).get('quantity');\r\n\r\n    if (!quantityControl) return;\r\n\r\n    // Clear any previous errors\r\n    quantityControl.setErrors(null);\r\n\r\n    // If the value is empty, set 'required' error\r\n    if (value === '' || value === null) {\r\n      quantityControl.setErrors({ 'required': true });\r\n    }\r\n    // If the value is less than 1, set 'min' error\r\n    else if (Number(value) < 1) {\r\n      quantityControl.setErrors({ 'min': true });\r\n    }\r\n    // If the value is not an integer, set 'pattern' error\r\n    else if (!/^\\d+$/.test(value)) {\r\n      quantityControl.setErrors({ 'pattern': true });\r\n    }\r\n  }\r\n\r\n\r\n  goToNextPage() {\r\n    this.currentPage = 'edit-save';\r\n  }\r\n\r\n  goToPreviousPage() {\r\n    this.currentPage = 'select-products';\r\n  }\r\n\r\n  toggleSection() {\r\n    this.isVisible = !this.isVisible;\r\n  }\r\n\r\n  clearField(field: string, category: string, event: Event) {\r\n    event?.stopPropagation(); // Stop event propagation to prevent dropdown reopen\r\n    this.form.get(field)?.setValue(null);\r\n    if (category === 'category1') {\r\n      this.onOptionSelected(null, 'category1');\r\n    } else if (category === 'category2') {\r\n      this.onOptionSelected(null, 'category2');\r\n    } else if (category === 'category3') {\r\n      this.onOptionSelected(null, 'category3');\r\n    } else if (category === 'category4') {\r\n      this.levelFourId = null;\r\n      this.onOptionSelected(null, 'category4');\r\n    }\r\n    this.updateActiveFiltersCount();\r\n  }\r\n\r\n  onInputChange(event: Event, category: string) {\r\n    const inputValue = (event.target as HTMLInputElement).value;\r\n    if (!inputValue) {\r\n      // Handle case where input is cleared\r\n      this.clearField(`dropdownLevel${this.getDropdownLevel(category)}`, category, null);\r\n    }\r\n  }\r\n\r\n  getDropdownLevel(category: string): number {\r\n    switch (category) {\r\n      case 'category1': return 1;\r\n      case 'category2': return 2;\r\n      case 'category3': return 3;\r\n      case 'category4': return 4;\r\n      default: return 0;\r\n    }\r\n  }\r\n\r\n  updateActiveFiltersCount() {\r\n    this.activeFiltersCount = 0;\r\n    if (this.searchQuery !== '') this.activeFiltersCount++;\r\n    if (this.form.get('dropdownLevel1').value) this.activeFiltersCount++;\r\n    if (this.form.get('dropdownLevel2').value) this.activeFiltersCount++;\r\n    if (this.form.get('dropdownLevel3').value) this.activeFiltersCount++;\r\n    if (this.form.get('dropdownLevel4').value) this.activeFiltersCount++;\r\n  }\r\n\r\n  clearIfEmpty(event: any) {\r\n    if (!event.target.value) {\r\n      this.form.controls['searchProductName'].setValue('');\r\n      this.searchQuery = '';\r\n      const search = this.searchQuery;\r\n      const levelOneId = this.levelOneId ? this.levelOneId : 0;\r\n      const levelTwoId = this.levelTwoId ? this.levelTwoId : 0;\r\n      const levelThreeId = this.levelThreeId ? this.levelThreeId : 0;\r\n      const levelFourId = this.levelFourId ? this.levelFourId : 0;\r\n      if (this.shouldResetTable(search, levelOneId, levelTwoId, levelThreeId, levelFourId)) {\r\n        this.resetTable();\r\n        return;\r\n      }\r\n    }\r\n  }\r\n\r\n  resetTable() {\r\n    this.form.get('dropdownLevel1').setValue(null);\r\n    this.form.get('dropdownLevel2').setValue(null);\r\n    this.form.get('dropdownLevel3').setValue(null);\r\n    this.form.get('dropdownLevel4').setValue(null);\r\n    this.form.get('dropdownLevel2')?.disable();\r\n    this.form.get('dropdownLevel3')?.disable();\r\n    this.form.get('dropdownLevel4')?.disable();\r\n    this.levelOneId = 0;\r\n    this.levelTwoId = 0;\r\n    this.levelThreeId = 0;\r\n    this.levelFourId = 0;\r\n    this.pageNumber = 1;\r\n    this.pageSize = 20;\r\n    this.form.controls['searchProductName'].setValue('');\r\n    this.searchQuery = '';\r\n    this.dataSource.data = [];\r\n    this.spinnerFlag = false;\r\n    this.updateActiveFiltersCount();\r\n  }\r\n\r\n  shouldResetTable(search: string, levelOneId: number, levelTwoId: number, levelThreeId: number, levelFourId: number): boolean {\r\n    return search === '' && levelOneId === 0 && levelTwoId === 0 && levelThreeId === 0 && levelFourId === 0;\r\n  }\r\n\r\n  /* This function will manage price and cost validation */\r\n  applyValidationRule(event: any, index: number, controlName: string) {\r\n    const value = event.target.value.trim();\r\n    const control = this.selectedProducts.at(index).get(controlName);\r\n    if (!control) return;\r\n\r\n    // Clear any previous errors\r\n    control.setErrors(null);\r\n    // If the value is empty, set 'required' error\r\n    if (value === '' || value === null) {\r\n      control.setErrors({ 'required': true });\r\n      return;\r\n    }\r\n    if (controlName === 'otherInformation0' && this.alphanumeric) {\r\n      // Allow all characters — no restrictions\r\n      return;\r\n    } else {\r\n      // Check if value contains only numbers and decimals (but no alphabets or special characters)\r\n      if (!/^\\d*\\.?\\d*$/.test(value)) {\r\n        event.target.value = value.replace(/[^0-9.]/g, '');\r\n        control.setErrors({ 'invalidFormat': true });\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  restrictInput(event: KeyboardEvent, controlName: string) {\r\n    const key = event.key;\r\n    const inputElement = (event.target as HTMLInputElement);\r\n    const inputValue = inputElement.value;\r\n    if (controlName === 'otherInformation0' && this.alphanumeric) {\r\n      // Allow all characters — no restrictions\r\n      return;\r\n    } else {\r\n      // Allow numbers and one decimal, but prevent everything else\r\n      if (!/[\\d.]/.test(key) || (key === '.' && inputValue.includes('.'))) {\r\n        event.preventDefault();\r\n      }\r\n    }\r\n  }\r\n\r\n  handlePaste(event: ClipboardEvent, controlName: string) {\r\n    const pasteData = event.clipboardData?.getData('text') || '';\r\n    if (controlName === 'otherInformation0' && this.alphanumeric) {\r\n      //  Allow all characters — no restrictions\r\n      return;\r\n    } else {\r\n      // If pasted value is not a valid number, prevent pasting\r\n      if (!/^\\d*\\.?\\d*$/.test(pasteData)) {\r\n        event.preventDefault();\r\n      }\r\n    }\r\n  }\r\n\r\n  scrollToFirstInvalidControl() {\r\n    const dialogContent = document.querySelector(\r\n      '.mat-dialog-content'\r\n    ) as HTMLElement;\r\n\r\n    const firstMatError = dialogContent?.querySelector(\r\n      'mat-error'\r\n    ) as HTMLElement;\r\n\r\n    if (!dialogContent || !firstMatError) return;\r\n\r\n    const matFormField = firstMatError.closest('mat-form-field') as HTMLElement;\r\n    if (!matFormField) return;\r\n\r\n    dialogContent.scrollTop = dialogContent.scrollTop + 1;\r\n    matFormField.scrollIntoView({\r\n      behavior: 'smooth',\r\n      block: 'center'\r\n    });\r\n\r\n    setTimeout(() => {\r\n      const input = matFormField.querySelector(\r\n        'input, select, textarea'\r\n      ) as HTMLElement;\r\n      input?.focus();\r\n    }, 300);\r\n  }\r\n\r\n\r\n\r\n}\r\n","<div *ngIf=\"spinnerFlag\" class=\"OverlayDiv\">\r\n    <div class=\"OverlayDivContent\">\r\n        <mat-spinner></mat-spinner>\r\n    </div>\r\n</div>\r\n<div class=\"mat-dialog-heading\">\r\n    <h1 mat-dialog-title>Add Products</h1>\r\n</div>\r\n\r\n<mat-dialog-content [ngClass]=\"dataSource?.data?.length > 0 ? 'products-scroll-visible': ''\">\r\n    <div class=\"mat-dialog-content\">\r\n        <!--Search Start-->\r\n        <div class=\"basic-search\" [hidden]=\"currentPage !== 'select-products'\">\r\n            <div class=\"basic-search-wrp\">\r\n                <div class=\"search-icon\">\r\n                    <svg width=\"80\" height=\"80\" viewBox=\"0 0 24 25\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                        transform=\"rotate(0 0 0)\">\r\n                        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n                            d=\"M11.25 2.75C6.14154 2.75 2 6.89029 2 11.998C2 17.1056 6.14154 21.2459 11.25 21.2459C13.5335 21.2459 15.6238 20.4187 17.2373 19.0475L20.7182 22.5287C21.011 22.8216 21.4859 22.8217 21.7788 22.5288C22.0717 22.2359 22.0718 21.761 21.7789 21.4681L18.2983 17.9872C19.6714 16.3736 20.5 14.2826 20.5 11.998C20.5 6.89029 16.3585 2.75 11.25 2.75ZM3.5 11.998C3.5 7.71905 6.96962 4.25 11.25 4.25C15.5304 4.25 19 7.71905 19 11.998C19 16.2769 15.5304 19.7459 11.25 19.7459C6.96962 19.7459 3.5 16.2769 3.5 11.998Z\" />\r\n                    </svg>\r\n                </div>\r\n                <form [formGroup]=\"form\">\r\n                    <div class=\"input-search\">\r\n                        <input (keydown.enter)=\"handleDropdownFilter(); $event.stopPropagation()\" type=\"text\" matInput\r\n                            placeholder=\"Search Product\" formControlName=\"searchProductName\"\r\n                            (input)=\"clearIfEmpty($event)\">\r\n                    </div>\r\n                </form>\r\n                <!-- <div class=\"advfilter\">\r\n                    <button class=\"adv\" (click)=\"toggleSection();$event.stopPropagation();\">\r\n                        <mat-icon class=\"material-icons-round\" aria-hidden=\"false\"\r\n                            aria-label=\"tune\">tune\r\n                        </mat-icon>\r\n                        <span *ngIf=\"activeFiltersCount > 0\" class=\"custom-badge\">{{ activeFiltersCount }}</span>\r\n                    </button>\r\n                </div> -->\r\n            </div>\r\n            <div class=\"search-btn\">\r\n                <button mat-raised-button color=\"primary\"\r\n                    (click)=\"handleDropdownFilter();$event.stopPropagation();\">Search</button>\r\n            </div>\r\n        </div>\r\n        <!--Search End-->\r\n        <div class=\"product-selector\">\r\n            <div [hidden]=\"currentPage !== 'select-products'\">\r\n                <form [formGroup]=\"form\">\r\n                    <div class=\"product-selection-container\" *ngIf=\"isVisible && dropdownL1\">\r\n                        <div class=\"dropdown-selection\" *ngIf=\"dropdownL1\">\r\n                            <div [ngClass]=\"dropDownCount === 1 ? 'no-child': 'child'\">\r\n                                <div class=\"title-adv\">\r\n                                    <h5>Advanced Filters</h5>\r\n                                    <button class=\"clr-all-picker\" type=\"button\" (click)=\"resetTable()\"\r\n                                        *ngIf=\"activeFiltersCount > 0\">Clear All</button>\r\n                                </div>\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-lg-6\">\r\n                                        <div class=\"example-full-width\">\r\n                                            <mat-form-field *ngIf=\"dropdownL1\" class=\"example-full-width\">\r\n                                                <mat-label>{{dropdownL1Label}}</mat-label>\r\n                                                <input type=\"text\" matInput formControlName=\"dropdownLevel1\"\r\n                                                    [matAutocomplete]=\"auto3\"\r\n                                                    (input)=\"onInputChange($event, 'category1')\">\r\n                                                <mat-autocomplete [displayWith]=\"displayFn\" #auto3=\"matAutocomplete\"\r\n                                                    (optionSelected)=\"onOptionSelected($event, 'category1')\">\r\n                                                    <mat-option *ngFor=\"let option of filteredDropdownOne\"\r\n                                                        [value]=\"option\">{{option.name}}</mat-option>\r\n                                                </mat-autocomplete>\r\n                                                <mat-icon matSuffix *ngIf=\"form.get('dropdownLevel1').value\"\r\n                                                    (click)=\"clearField('dropdownLevel1', 'category1', $event)\"\r\n                                                    class=\"iconclose\">close</mat-icon>\r\n                                                <mat-icon class=\"icondropdown\" matSuffix>arrow_drop_down</mat-icon>\r\n                                            </mat-form-field>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"col-lg-6\">\r\n                                        <div class=\"example-full-width\">\r\n                                            <mat-form-field *ngIf=\"dropdownL2\" class=\"example-full-width\">\r\n                                                <mat-label>{{dropdownL2Label}}</mat-label>\r\n                                                <input type=\"text\" matInput formControlName=\"dropdownLevel2\"\r\n                                                    [matAutocomplete]=\"auto4\"\r\n                                                    (input)=\"onInputChange($event, 'category2')\">\r\n                                                <mat-autocomplete [displayWith]=\"displayFn\" #auto4=\"matAutocomplete\"\r\n                                                    (optionSelected)=\"onOptionSelected($event, 'category2')\">\r\n                                                    <mat-option *ngFor=\"let option of filteredDropdownTwo\"\r\n                                                        [value]=\"option\">{{option.name}}</mat-option>\r\n                                                </mat-autocomplete>\r\n                                                <mat-icon matSuffix *ngIf=\"form.get('dropdownLevel2').value\"\r\n                                                    (click)=\"clearField('dropdownLevel2', 'category2', $event)\"\r\n                                                    class=\"iconclose\">close</mat-icon>\r\n                                                <mat-icon class=\"icondropdown\" matSuffix\r\n                                                    [ngClass]=\"{'disabled-icon': isDisabled2}\">arrow_drop_down</mat-icon>\r\n                                            </mat-form-field>\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"col-lg-6\">\r\n                                        <div class=\"example-full-width\">\r\n                                            <mat-form-field *ngIf=\"dropdownL3\" class=\"example-full-width\">\r\n                                                <mat-label>{{dropdownL3Label}}</mat-label>\r\n                                                <input type=\"text\" matInput formControlName=\"dropdownLevel3\"\r\n                                                    [matAutocomplete]=\"auto5\"\r\n                                                    (input)=\"onInputChange($event, 'category3')\">\r\n                                                <mat-autocomplete [displayWith]=\"displayFn\" #auto5=\"matAutocomplete\"\r\n                                                    (optionSelected)=\"onOptionSelected($event, 'category3')\">\r\n                                                    <mat-option *ngFor=\"let option of filteredDropdownThree\"\r\n                                                        [value]=\"option\">{{option.name}}</mat-option>\r\n                                                </mat-autocomplete>\r\n                                                <mat-icon matSuffix *ngIf=\"form.get('dropdownLevel3').value\"\r\n                                                    (click)=\"clearField('dropdownLevel3', 'category3', $event)\"\r\n                                                    class=\"iconclose\">close</mat-icon>\r\n                                                <mat-icon class=\"icondropdown\" matSuffix\r\n                                                    [ngClass]=\"{'disable-icon': isDisabled3}\">arrow_drop_down</mat-icon>\r\n                                            </mat-form-field>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"col-lg-6\">\r\n                                        <div class=\"example-full-width\">\r\n                                            <mat-form-field *ngIf=\"dropdownL4\" class=\"example-full-width\">\r\n                                                <mat-label>{{dropdownL4Label}}</mat-label>\r\n                                                <input type=\"text\" matInput formControlName=\"dropdownLevel4\"\r\n                                                    [matAutocomplete]=\"auto6\"\r\n                                                    (input)=\"onInputChange($event, 'category4')\">\r\n                                                <mat-autocomplete [displayWith]=\"displayFn\" #auto6=\"matAutocomplete\"\r\n                                                    (optionSelected)=\"onOptionSelected($event, 'category4')\">\r\n                                                    <mat-option *ngFor=\"let option of filteredDropdownFour\"\r\n                                                        [value]=\"option\">{{option.name}}</mat-option>\r\n                                                </mat-autocomplete>\r\n                                                <mat-icon matSuffix *ngIf=\"form.get('dropdownLevel4').value\"\r\n                                                    (click)=\"clearField('dropdownLevel4', 'category4', $event)\"\r\n                                                    class=\"iconclose\">close</mat-icon>\r\n                                                <mat-icon class=\"icondropdown\" matSuffix\r\n                                                    [ngClass]=\"{'disable-icon': isDisabled4}\">arrow_drop_down</mat-icon>\r\n                                            </mat-form-field>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #firstscrollableDiv id=\"firstscrollableDiv\" class=\"new-class first-div\"\r\n                        (scroll)=\"onScroll($event)\" [ngClass]=\"dataSource?.data?.length > 0 ? 'tbl-record-found': ''\">\r\n                        <table mat-table [dataSource]=\"dataSource\" class=\"mat-table abc\"\r\n                            *ngIf=\"dataSource && dataSource?.data?.length > 0; else noData\">\r\n                            <ng-container matColumnDef=\"select\">\r\n                                <th mat-header-cell *matHeaderCellDef>\r\n                                </th>\r\n                                <td mat-cell *matCellDef=\"let row\" class=\"checkbox-picker-pointer\">\r\n                                    <mat-checkbox color=\"primary\" (click)=\"$event.stopPropagation()\"\r\n                                        (change)=\"$event ? toggleSelection(row) : null\"\r\n                                        [checked]=\"selection.isSelected(row)\"></mat-checkbox>\r\n                                </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"productName\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{productTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element?.text}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"skuNumber\" *ngIf=\"showSkuNumber\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{skuTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element?.otherInformation0}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"inventory\" *ngIf=\"showInventory\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{inventoryTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element?.otherInformation1}} </td>\r\n                            </ng-container>\r\n                            <tr mat-header-row *matHeaderRowDef=\"addProductsColumns\"></tr>\r\n                            <tr mat-row *matRowDef=\"let row; columns: addProductsColumns;\"\r\n                                [class.selected]=\"selection.isSelected(row)\"></tr>\r\n                        </table>\r\n                        <ng-template #noData>\r\n                            <div class=\"no-data-message\">\r\n                                <!--No data found.-->\r\n                                <div class=\"pp-empty-state\">\r\n                                    <div class=\"img-empty-state\">\r\n                                        <img [src]=\"emptyImage\" alt=\"\">\r\n                                    </div>\r\n                                    <h3>No records to show at the moment</h3>\r\n                                    <p>Please modify your search criteria to find the desired result</p>\r\n                                </div>\r\n\r\n                            </div>\r\n                        </ng-template>\r\n                    </div>\r\n                    <div class=\"row-summary\" *ngIf=\"dataSource && dataSource?.data?.length > 0\">\r\n                        <div>Selected: <strong>{{ getSelectedRowsCount() }}</strong> </div>\r\n                        <div>Total Records: <strong>{{ getTotalRecords }}</strong></div>\r\n                    </div>\r\n                </form>\r\n            </div>\r\n\r\n            <div [hidden]=\"currentPage !== 'edit-save'\">\r\n                <form [formGroup]=\"form\">\r\n                    <div class=\"new-class\"\r\n                        [ngClass]=\"selectedDataSource && selectedDataSource.data.length > 0 ? 'added-products': ''\">\r\n                        <table mat-table [dataSource]=\"selectedDataSource\"\r\n                            *ngIf=\"selectedDataSource && selectedDataSource.data.length > 0; else showBlank\">\r\n                            <ng-container matColumnDef=\"delete\">\r\n                                <th mat-header-cell *matHeaderCellDef></th>\r\n                                <td mat-cell *matCellDef=\"let element\">\r\n                                    <button class=\"delete-btn-picker\" mat-button\r\n                                        (click)=\"$event.stopPropagation();removeRow($event, element)\">\r\n                                        <mat-icon aria-hidden=\"false\" aria-label=\"Remove row\">delete</mat-icon>\r\n                                    </button>\r\n                                </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"productName\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{productTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"categoryName\" *ngIf=\"showCategory\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{categoryTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element.category}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"subCategory\" *ngIf=\"showSubcategory\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{subCategoryTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\"> {{element.subCategory}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n                                <th mat-header-cell *matHeaderCellDef>{{priceTweek}}</th>\r\n                                <td mat-cell *matCellDef=\"let element; let i = index\">\r\n                                    <mat-form-field class=\"example-full-width select-price\">\r\n                                        <mat-label>{{priceTweek}}</mat-label>\r\n                                        <input matInput [formControl]=\"selectedProducts.at(i).get('price')\"\r\n                                            (input)=\"applyValidationRule($event, i, 'price')\"\r\n                                            (keypress)=\"restrictInput($event, '')\" (paste)=\"handlePaste($event, '')\">\r\n                                        <mat-error *ngIf=\"selectedProducts.at(i).get('price').hasError('required')\">\r\n                                            This field is required\r\n                                        </mat-error>\r\n                                    </mat-form-field>\r\n                                </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"Quantity\" *ngIf=\"showQuantity\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{quantityTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element; let i = index\">\r\n                                    <mat-form-field class=\"example-full-width\">\r\n                                        <mat-label>{{quantityTweek}}</mat-label>\r\n                                        <input matInput [formControl]=\"selectedProducts.at(i).get('quantity')\"\r\n                                            type=\"number\" min=\"1\" step=\"1\" (input)=\"onQuantityChange($event, i)\">\r\n                                        <mat-error *ngIf=\"selectedProducts.at(i).get('quantity').hasError('required')\">\r\n                                            This field is required\r\n                                        </mat-error>\r\n                                        <mat-error *ngIf=\"selectedProducts.at(i).get('quantity').hasError('min')\">\r\n                                            Quantity can not be less than 1\r\n                                        </mat-error>\r\n                                        <mat-error *ngIf=\"selectedProducts.at(i).get('quantity').hasError('pattern')\">\r\n                                            Decimals not allowed\r\n                                        </mat-error>\r\n                                    </mat-form-field>\r\n                                </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"skuNumber\" *ngIf=\"showSkuNumber\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{skuTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\">{{element?.otherInformation0}} </td>\r\n                            </ng-container>\r\n                            <ng-container matColumnDef=\"inventory\" *ngIf=\"showInventory\">\r\n                                <th mat-header-cell *matHeaderCellDef> {{inventoryTweek}} </th>\r\n                                <td mat-cell *matCellDef=\"let element\">{{element?.otherInformation1}} </td>\r\n                            </ng-container>\r\n\r\n                            <ng-container matColumnDef=\"cost\" *ngIf=\"showCost\">\r\n                                <th mat-header-cell *matHeaderCellDef>{{costTweek}}</th>\r\n                                <td mat-cell *matCellDef=\"let element; let i = index\">\r\n                                    <mat-form-field class=\"example-full-width select-cost\">\r\n                                        <mat-label>{{costTweek}}</mat-label>\r\n                                        <input matInput [formControl]=\"selectedProducts.at(i).get('otherInformation0')\"\r\n                                            (input)=\"applyValidationRule($event, i, 'otherInformation0')\"\r\n                                            (keypress)=\"restrictInput($event, 'otherInformation0')\" (paste)=\"handlePaste($event, 'otherInformation0')\">\r\n                                        <mat-error\r\n                                            *ngIf=\"selectedProducts.at(i).get('otherInformation0').hasError('required')\">\r\n                                            This field is required\r\n                                        </mat-error>\r\n                                    </mat-form-field>\r\n                                </td>\r\n                            </ng-container>\r\n                            <tr mat-header-row *matHeaderRowDef=\"showAllproductsColumns\"></tr>\r\n                            <tr mat-row *matRowDef=\"let row; columns: showAllproductsColumns;\"></tr>\r\n                        </table>\r\n                        <!-- <ng-template #showBlank>\r\n                            <div class=\"no-data-message\">\r\n                                No data found.\r\n                            </div>\r\n                        </ng-template> -->\r\n                        <ng-template #showBlank>\r\n                            <div class=\"no-data-message\">\r\n                                <div class=\"pp-empty-state\">\r\n                                    <div class=\"img-empty-state\">\r\n                                        <img [src]=\"emptyImage\" alt=\"\">\r\n                                    </div>\r\n                                    <h3>No Product added</h3>\r\n                                    <p>Please go back and start adding products</p>\r\n                                </div>\r\n                            </div>\r\n                        </ng-template>\r\n                    </div>\r\n                </form>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n    <div class=\"tabs-action-step-one\" *ngIf=\"currentPage === 'select-products'\">\r\n        <div>\r\n            <button mat-button (click)=\"goToNextPage()\" [disabled]=\"selection.selected.length ? false : true\"\r\n                color=\"primary\" mat-raised-button>Edit Selected Products</button>\r\n        </div>\r\n        <div>\r\n            <button mat-button (click)=\"goToNextPage()\" [disabled]=\"selection.selected.length ? false : true\"\r\n                color=\"primary\" mat-raised-button>Next</button>\r\n            <button mat-button [mat-dialog-close]=\"false\">Cancel</button>\r\n        </div>\r\n    </div>\r\n    <div class=\"tabs-action\" *ngIf=\"currentPage === 'edit-save'\">\r\n        <div class=\"tab-action-wrp\">\r\n            <button mat-button (click)=\"goToPreviousPage()\">Back</button>\r\n            <button mat-button type=\"submit\" color=\"primary\" mat-raised-button (click)=\"onSubmit()\">Add/Update</button>\r\n        </div>\r\n    </div>\r\n</mat-dialog-actions>","import { Attribute, ChangeDetectorRef, Component, ElementRef } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport DataGridComponent from 'formiojs/components/datagrid/DataGrid.js';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';\r\nimport { AddOnProductsComponent } from '../add-on-products/add-on-products.component';\r\nimport { CommonService } from '../common.service';\r\nexport interface Product {\r\n  productName: string;\r\n  quantity: number;\r\n  price: number;\r\n}\r\nconst ELEMENT_DATA: Product[] = [\r\n];\r\n@Component({\r\n  selector: 'mat-formio-datagrid',\r\n  template: `\r\n    <mat-formio-form-field [instance]=\"instance\"\r\n                           [componentTemplate]=\"componentTemplate\"\r\n                           [labelTemplate]=\"labelTemplate\"\r\n    ></mat-formio-form-field>\r\n    <ng-template #componentTemplate let-hasLabel>\r\n      <mat-card appearance=\"outlined\" fxFill>\r\n        <ng-container *ngIf=\"hasLabel\">\r\n          <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\r\n        </ng-container>\r\n        <mat-card-content>\r\n\r\n  <!-- Message when no products are found -->\r\n  <div class=\"no-data-message\" *ngIf=\"!showDataGrid || (dataSource?.data?.length === 0 && !showNewProductPicker)\">\r\n    No products found. Please add some products.\r\n  </div>\r\n\r\n  <ng-container *ngIf=\"showDataGrid\">\r\n          <mat-card-actions\r\n                  *ngIf=\"instance.hasAddButton() && (instance.component.addAnotherPosition === 'both' || instance.component.addAnotherPosition === 'top')\">\r\n            <button mat-raised-button color=\"primary\" (click)=\"addAnother()\">\r\n              <mat-icon>add</mat-icon>\r\n              {{instance.component.addAnother || 'Add Another'}}\r\n            </button>\r\n          </mat-card-actions>\r\n<ng-container *ngIf=\"!showNewProductPicker\">\r\n<div class=\"mat-elevation-z8\">\r\n          <table\r\n                  mat-table\r\n                  [dataSource]=\"dataSource\"\r\n                  class=\"mat-elevation-z8\"\r\n                  fxFill\r\n                  cdkDropList\r\n                  [cdkDropListData]=\"dataSource\"\r\n                  (cdkDropListDropped)=\"dropTable($event)\" *ngIf=\"!isCustomerCountryFiltered || !emptyArray; else noDataMessage\">\r\n                  \r\n            \r\n            <ng-container *ngFor=\"let column of formColumns\" [matColumnDef]=\"column\">\r\n              <th mat-header-cell *matHeaderCellDef>{{ getColumnLabel(columns[column]) }}</th>\r\n              <td mat-cell *matCellDef=\"let i = index;\" [attr.rowIndex]=\"i\" [attr.component]=\"column\">\r\n                <ng-template #components></ng-template>\r\n              </td>\r\n            </ng-container>\r\n            <ng-container matColumnDef=\"__removeRow\">\r\n              <th mat-header-cell *matHeaderCellDef></th>\r\n              <td mat-cell *matCellDef=\"let i = index;\">\r\n                <button mat-button *ngIf=\"instance.hasRemoveButtons()\" (click)=\"removeRow(i)\">\r\n                  <mat-icon aria-hidden=\"false\" aria-label=\"Remove row\">delete</mat-icon>\r\n                </button>\r\n              </td>\r\n            </ng-container>\r\n            <ng-container matColumnDef=\"position\" *ngIf=\"instance.component.reorder\">\r\n              <th mat-header-cell *matHeaderCellDef> No.</th>\r\n              <td mat-cell *matCellDef=\"let element\">\r\n                <mat-icon cdkDragHandle>reorder</mat-icon>\r\n              </td>\r\n            </ng-container>\r\n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n            <div *ngIf=\"instance?.component?.reorder\">\r\n              <tr class=\"datagrid-row\" mat-row *matRowDef=\"let row; columns: displayedColumns;\" cdkDrag\r\n                  [cdkDragData]=\"row\"></tr>\r\n            </div>\r\n            <div *ngIf=\"!instance?.component?.reorder\">\r\n              <tr class=\"datagrid-row\" mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n            </div>\r\n          </table>\r\n          </div>\r\n</ng-container>\r\n\r\n<!-- Default Message -->\r\n<ng-template #noDataMessage>\r\n  <div class=\"no-data-message\" *ngIf=\"isCustomerCountryFiltered && emptyArray && !showNewProductPicker\">\r\n    <span>\r\n      No Product found with the selected Customer country.\r\n    </span>\r\n  </div>\r\n</ng-template>\r\n\r\n    <table mat-table [dataSource]=\"dataSourceNew\" class=\"mat-table\" *ngIf=\"dataSourceNew.length > 0 && showNewProductPicker; else noData\" >\r\n    <!-- Product Name Column -->\r\n    <ng-container matColumnDef=\"productName\">\r\n      <th mat-header-cell *matHeaderCellDef> {{productTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element.text}} </td>\r\n    </ng-container>\r\n\r\n    <!-- Quantity Column -->\r\n    <ng-container matColumnDef=\"quantity\" *ngIf=\"showQuantity\">\r\n      <th mat-header-cell *matHeaderCellDef> {{ quantityTweek }} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element.quantity}} </td>\r\n    </ng-container>\r\n\r\n    <!-- Price Column -->\r\n    <ng-container matColumnDef=\"price\" *ngIf=\"showPrice\">\r\n      <th mat-header-cell *matHeaderCellDef> {{priceTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element.price}} </td>\r\n    </ng-container>\r\n\r\n     <!-- Category Column -->\r\n    <ng-container matColumnDef=\"category\" *ngIf=\"showCategory\">\r\n      <th mat-header-cell *matHeaderCellDef> {{categoryTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element.category}} </td>\r\n    </ng-container>\r\n\r\n        <!-- Category Column -->\r\n    <ng-container matColumnDef=\"subCategory\" *ngIf=\"showSubcategory\">\r\n      <th mat-header-cell *matHeaderCellDef> {{subCategoryTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element.subCategory}} </td>\r\n    </ng-container>\r\n\r\n        <!-- SKU Column -->\r\n    <ng-container matColumnDef=\"skuNumber\" *ngIf=\"showSkuNumber\">\r\n      <th mat-header-cell *matHeaderCellDef> {{skuTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element?.otherInformation0}} </td>\r\n    </ng-container>\r\n\r\n    <!-- Inventory Column -->\r\n    <ng-container matColumnDef=\"inventory\" *ngIf=\"showInventory\">\r\n      <th mat-header-cell *matHeaderCellDef> {{inventoryTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element?.otherInformation1}} </td>\r\n    </ng-container>\r\n\r\n    <!-- Your Target Cost -->\r\n    <ng-container matColumnDef=\"cost\" *ngIf=\"showCost\">\r\n      <th mat-header-cell *matHeaderCellDef> {{costTweek}} </th>\r\n      <td mat-cell *matCellDef=\"let element\"> {{element?.otherInformation0 || element?.otherInformation2}} </td>\r\n    </ng-container>\r\n\r\n    <tr mat-header-row *matHeaderRowDef=\"displayedColumnsNew\"></tr>\r\n    <tr mat-row *matRowDef=\"let row; columns: displayedColumnsNew;\"></tr>\r\n  </table>\r\n  <ng-template #noData>\r\n  <div class=\"no-data-message\" *ngIf=\"showNewProductPicker\">\r\n   <ng-container *ngIf=\"showNewProductPicker && !isCustomerCountryFiltered\">\r\n      No products found. Please add some products.\r\n    </ng-container>\r\n     <ng-container *ngIf=\"showNewProductPicker && isCustomerCountryFiltered\">\r\n      No products found. Please add some products.\r\n    </ng-container>\r\n    </div>\r\n  </ng-template>\r\n\r\n</ng-container>\r\n\r\n        </mat-card-content>\r\n        <mat-card-actions *ngIf=\"instance.hasAddButton() && instance.component.addAnotherPosition !== 'top'\">\r\n          <button class = \"picker2new-btn\" mat-raised-button color=\"primary\" (click)=\"addAnother()\" *ngIf=\"!(isCustomerCountryFiltered && emptyArray && !showNewProductPicker)\">\r\n            <mat-icon>add</mat-icon>\r\n            {{instance.component.addAnother || 'Add Another'}}\r\n          </button>\r\n        </mat-card-actions>\r\n      </mat-card>\r\n    </ng-template>\r\n\r\n    <ng-template #labelTemplate>\r\n      <mat-card-title>\r\n        <span [instance]=\"instance\" matFormioLabel></span>\r\n      </mat-card-title>\r\n    </ng-template>\r\n  `,\r\n  styles: [\r\n    `.datagrid-row { height: auto; } .mat-mdc-table{ width: 100% } .mat-mdc-header-cell, .mat-mdc-cell{ padding: 8px } .no-data-message {display: flex; justify-content: center; align-items: center; text-align: center; padding:20px; margin: 0 20px 0; font-size: 18px;color: #888;} /* TODO(mdc-migration): The following rule targets internal classes of button that may no longer apply for the MDC version. */\r\n      ::ng-deep .picker2new-btn.cdk-program-focused .mat-button-focus-overlay{opacity: 0}`\r\n  ]\r\n})\r\nexport class MaterialDataGridComponent extends MaterialNestedComponent {\r\n\r\n  constructor(public element: ElementRef, public ref: ChangeDetectorRef, private dialog: MatDialog, public commonService: CommonService) {\r\n    super(element, ref);\r\n    if (this.element && this.element.nativeElement && this.instance) {\r\n      // Add custom classes to elements.\r\n      if (this.instance.component.customClass) {\r\n        this.element.nativeElement.classList.add(this.instance.component.customClass);\r\n      }\r\n    }\r\n  }\r\n  displayedColumns: string[];\r\n  formColumns: string[];\r\n  columns: any;\r\n  dataSource = new MatTableDataSource();\r\n  dataSourceNew = ELEMENT_DATA;\r\n  displayedColumnsNew: string[] = ['productName', 'category', 'subCategory', 'quantity', 'price', 'skuNumber', 'inventory', 'cost'];\r\n  showNewProductPicker: boolean = false;\r\n  showCategory: boolean = false;\r\n  showSubcategory: boolean = false;\r\n  showPrice: boolean = true;\r\n  showQuantity: boolean = true;\r\n  showSkuNumber: boolean = false;\r\n  showInventory: boolean = false;\r\n  hasInitialized: boolean = false;\r\n  checkSubmissionStatus: boolean = false;\r\n  showDataGrid: boolean = true;\r\n  hasValueAndEditMode: boolean = false;\r\n  dropdownL1: boolean = false;\r\n  dropdownL2: boolean = false;\r\n  dropdownL3: boolean = false;\r\n  dropdownL4: boolean = false;\r\n  showDialogQuantity: boolean = false;\r\n  showDialogPrice: boolean = false;\r\n  showDialogCategory: boolean = false;\r\n  showDialogSkuNumber: boolean = false;\r\n  showDialogInventory: boolean = false;\r\n  showDialogSubCategory: boolean = false;\r\n  dropdownL1Label: string = '';\r\n  dropdownL2Label: string = '';\r\n  dropdownL3Label: string = '';\r\n  dropdownL4Label: string = '';\r\n  dealId: any;\r\n  isCustomerCountryFiltered: boolean = false;\r\n  emptyArray: boolean = false;\r\n  isPriceDisable: boolean = true;\r\n  priceTweek: string = 'Price';\r\n  skuTweek: string = 'SKU Number';\r\n  costTweek: string = 'Your Target Cost';\r\n  showCost: boolean = false;\r\n  showDialogCost: boolean = false;\r\n  quantityTweek: string = 'Quantity';\r\n  productTweek: string = 'Product Name';\r\n  categoryTweek: string = 'Category Name';\r\n  subCategoryTweek: string = 'Sub Category';\r\n  inventoryTweek: string = 'Inventory';\r\n  alphanumeric: boolean = false;\r\n  getColumnLabel(column) {\r\n    return column.label || column.key;\r\n  }\r\n\r\n\r\n\r\n  getLabelName(newProductPickerFlag, attributeName) {\r\n    if (newProductPickerFlag && Object.keys(newProductPickerFlag).some(key =>\r\n      key.toLocaleLowerCase() === attributeName.toLowerCase())) {\r\n      // Find the key that matches attributeName case-insensitively\r\n      const matchingKey = Object.keys(newProductPickerFlag).find(key =>\r\n        key.toLocaleLowerCase() === attributeName.toLowerCase()\r\n      );\r\n      // Return the value of the matching key\r\n      return newProductPickerFlag[matchingKey];\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n\r\n  // ngOnInit(): void {\r\n\r\n  // }\r\n\r\n  setInstance(instance: any) {\r\n    const checkAttribute = instance?.component?.attributes;\r\n    this.showNewProductPicker = this.commonService.checkIsAttributeTrue(checkAttribute, \"newproductpicker\");\r\n    this.showCategory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showCategory\");\r\n    this.showSubcategory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showSubcategory\");\r\n    this.showPrice = this.commonService.checkIsAttributeTrue(checkAttribute, \"showPrice\");\r\n    this.showQuantity = this.commonService.checkIsAttributeTrue(checkAttribute, \"showQuantity\");\r\n    this.showSkuNumber = this.commonService.checkIsAttributeTrue(checkAttribute, \"showSkuNumber\");\r\n    this.showInventory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showInventory\")\r\n    this.showDialogQuantity = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogQuantity\");\r\n    this.showDialogPrice = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogPrice\");\r\n    this.showDialogCategory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogCategory\");\r\n    this.showDialogSkuNumber = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogSkuNumber\");\r\n    this.showDialogInventory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogInventory\");\r\n    this.showDialogSubCategory = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogSubCategory\");\r\n    this.isCustomerCountryFiltered = this.commonService.checkIsAttributeTrue(checkAttribute, \"filterProductBasedOnCustomerCountry\");\r\n    this.isPriceDisable = this.commonService.checkIsAttributeTrue(checkAttribute, \"isPriceDisable\");\r\n    this.showCost = this.commonService.checkIsAttributeTrue(checkAttribute, \"showCost\");\r\n    this.showDialogCost = this.commonService.checkIsAttributeTrue(checkAttribute, \"showDialogCost\");\r\n    this.alphanumeric = this.commonService.checkIsAttributeTrue(checkAttribute, \"Alphanumeric\");\r\n    const l1 = this.getLabelName(checkAttribute, \"dropdownL1\");\r\n    const l2 = this.getLabelName(checkAttribute, \"dropdownL2\");\r\n    const l3 = this.getLabelName(checkAttribute, \"dropdownL3\");\r\n    const l4 = this.getLabelName(checkAttribute, \"dropdownL4\");\r\n    const price = this.getLabelName(checkAttribute, \"priceLabel\");\r\n    const sku = this.getLabelName(checkAttribute, \"skuLabel\");\r\n    const cost = this.getLabelName(checkAttribute, \"costLabel\");\r\n    const quantity = this.getLabelName(checkAttribute, \"quantityLabel\");\r\n    const product = this.getLabelName(checkAttribute, \"productLabel\");\r\n    const category = this.getLabelName(checkAttribute, \"categoryLabel\");\r\n    const subCategory = this.getLabelName(checkAttribute, \"subCategoryLabel\");\r\n    const inventory = this.getLabelName(checkAttribute, \"inventoryLabel\");\r\n    this.dropdownL1 = l1 !== null && l1 !== undefined && (typeof l1 === 'string' ? l1.trim() !== \"\" : l1 !== \"\") ? true : false;\r\n    this.dropdownL2 = l2 !== null && l2 !== undefined && (typeof l2 === 'string' ? l2.trim() !== \"\" : l2 !== \"\") ? true : false;\r\n    this.dropdownL3 = l3 !== null && l3 !== undefined && (typeof l3 === 'string' ? l3.trim() !== \"\" : l3 !== \"\") ? true : false;\r\n    this.dropdownL4 = l4 !== null && l4 !== undefined && (typeof l4 === 'string' ? l4.trim() !== \"\" : l4 !== \"\") ? true : false;\r\n    const priceTweek = price !== null && price !== undefined && (typeof price === 'string' ? price.trim() !== \"\" : price !== \"\") ? true : false;\r\n    const skuTweek = sku !== null && sku !== undefined && (typeof sku === 'string' ? sku.trim() !== \"\" : sku !== \"\") ? true : false;\r\n    const costTweek = cost !== null && cost !== undefined && (typeof cost === 'string' ? cost.trim() !== \"\" : cost !== \"\") ? true : false;\r\n    const quantityTweek = quantity !== null && quantity !== undefined && (typeof quantity === 'string' ? quantity.trim() !== \"\" : quantity !== \"\") ? true : false;\r\n    const productTweek = product !== null && product !== undefined && (typeof product === 'string' ? product.trim() !== \"\" : product !== \"\") ? true : false;\r\n    const categoryTweek = category !== null && category !== undefined && (typeof category === 'string' ? category.trim() !== \"\" : category !== \"\") ? true : false;\r\n    const subCategoryTweek = subCategory !== null && subCategory !== undefined && (typeof subCategory === 'string' ? subCategory.trim() !== \"\" : subCategory !== \"\") ? true : false;\r\n    const inventoryTweek = inventory !== null && inventory !== undefined && (typeof inventory === 'string' ? inventory.trim() !== \"\" : inventory !== \"\") ? true : false;\r\n    if (this.dropdownL1) {\r\n      this.dropdownL1Label = l1;\r\n    }\r\n    if (this.dropdownL2) {\r\n      this.dropdownL2Label = l2;\r\n    }\r\n    if (this.dropdownL3) {\r\n      this.dropdownL3Label = l3;\r\n    }\r\n    if (this.dropdownL4) {\r\n      this.dropdownL4Label = l4;\r\n    }\r\n    if (priceTweek) {\r\n      this.priceTweek = price;\r\n    }\r\n\r\n    if (skuTweek) {\r\n      this.skuTweek = sku;\r\n    }\r\n\r\n    if (costTweek) {\r\n      this.costTweek = cost;\r\n    }\r\n    if (quantityTweek) {\r\n      this.quantityTweek = quantity;\r\n    }\r\n\r\n    if (productTweek) {\r\n      this.productTweek = product;\r\n    }\r\n    if (categoryTweek) {\r\n      this.categoryTweek = category;\r\n    }\r\n    if (subCategoryTweek) {\r\n      this.subCategoryTweek = subCategory;\r\n    }\r\n    if (inventoryTweek) {\r\n      this.inventoryTweek = inventory;\r\n    }\r\n    this.checkSubmissionStatus = this.commonService.checkIsAttributeTrue(checkAttribute, 'isProductOptional');\r\n    this.hasValueAndEditMode = (checkAttribute?.hasValue === 'yes') && (checkAttribute?.editMode === 'true');\r\n    const retrievedObject = JSON.parse(localStorage.getItem('storageObject'));\r\n    this.emptyArray = retrievedObject?.dataSource?.length < 1 ? true : false;\r\n    super.setInstance(instance);\r\n    if (this.showNewProductPicker && !this.hasInitialized) {\r\n      if (!this.showCategory) {\r\n        this.removeColumn('category');\r\n      }\r\n      if (!this.showQuantity) {\r\n        this.removeColumn('quantity');\r\n      }\r\n      if (!this.showPrice) {\r\n        this.removeColumn('price');\r\n      }\r\n      if (!this.showSubcategory) {\r\n        this.removeColumn('subCategory');\r\n      }\r\n      if (!this.showSkuNumber) {\r\n        this.removeColumn('skuNumber');\r\n      }\r\n      if (!this.showInventory) {\r\n        this.removeColumn('inventory')\r\n      }\r\n      if (!this.showCost) {\r\n        this.removeColumn('cost');\r\n      }\r\n      this.dealId = this.getLabelName(checkAttribute, \"dealId\");\r\n      localStorage.setItem(\"currentDealId\", this.dealId);\r\n      const storedData = localStorage.getItem(`showGridPickerProducts-${this.dealId}`) || '';\r\n      const parsedData = JSON.parse(storedData || 'null');\r\n      this.dataSourceNew = Array.isArray(parsedData) ? parsedData : [];\r\n\r\n      // Set flag to true to prevent further execution\r\n      this.hasInitialized = true;\r\n    } else {\r\n      this.dataSource.data = instance.dataValue;\r\n    }\r\n    //this.checkSubmissionStatus && \r\n    if (this.checkSubmissionStatus && !this.hasValueAndEditMode) {\r\n      this.showDataGrid = false;\r\n      this.dataSource.data = []\r\n    } else {\r\n      this.showDataGrid = true;\r\n      this.dataSource.data = instance.dataValue;\r\n    }\r\n    this.columns = {};\r\n    this.displayedColumns = [];\r\n    this.formColumns = [];\r\n    instance.getColumns().map((column) => {\r\n      this.formColumns.push(column.key);\r\n      this.displayedColumns.push(column.key);\r\n      this.columns[column.key] = column;\r\n    });\r\n    this.displayedColumns.push('__removeRow');\r\n    if (this.instance.component.reorder) {\r\n      this.displayedColumns.push('position');\r\n    }\r\n    instance.viewContainer = (component) => {\r\n      let viewContainer;\r\n      if (this.instance.component.disabled) {\r\n        component.component.disabled = true;\r\n      }\r\n      this.viewContainers.forEach((container) => {\r\n        const td = container.element.nativeElement.parentNode;\r\n        if (\r\n          component.rowIndex === parseInt(td.getAttribute('rowIndex'), 10) &&\r\n          component.component.key === td.getAttribute('component')\r\n        ) {\r\n          viewContainer = container;\r\n        }\r\n      });\r\n\r\n      return viewContainer ? viewContainer : null;\r\n    };\r\n\r\n    if (this.element && this.element.nativeElement && this.instance) {\r\n      // Add custom classes to elements.\r\n      if (this.instance.component.customClass) {\r\n        this.element.nativeElement.classList.add(this.instance.component.customClass);\r\n      }\r\n    }\r\n  }\r\n\r\n  removeColumn(columnName: string) {\r\n    this.displayedColumnsNew = this.displayedColumnsNew.filter(column => column !== columnName);\r\n  }\r\n\r\n  addAnotherOld() {\r\n    this.showDataGrid = true;\r\n    this.checkRowsNumber();\r\n    this.instance.addRow();\r\n    if (this.dataSource.data.length < this.instance.rows.length) {\r\n      this.dataSource.data.push({});\r\n    }\r\n    this.dataSource.data = [...this.dataSource.data];\r\n  }\r\n\r\n  addAnother() {\r\n    this.showDataGrid = true;\r\n    if (this.showNewProductPicker) {\r\n      localStorage.setItem('currentDealId', this.dealId);\r\n      const diologeRef = this.dialog.open(AddOnProductsComponent, {\r\n        disableClose: true,\r\n        width: '90%',\r\n        maxWidth: '1000px',\r\n        autoFocus: false,\r\n        data: { dropdownsFlag: { showDialogInventory: this.showDialogInventory, showInventory: this.showInventory, inventoryTweek: this.inventoryTweek, quantityTweek: this.quantityTweek, subCategoryTweek: this.subCategoryTweek, categoryTweek: this.categoryTweek, productTweek: this.productTweek, costTweek: this.costTweek, skuTweek: this.skuTweek, priceTweek: this.priceTweek, showDialogCost: this.showDialogCost, showNewProductPicker: this.showNewProductPicker, showDialogSubCategory: this.showDialogSubCategory, showDialogSkuNumber: this.showDialogSkuNumber, showDialogCategory: this.showDialogCategory, showDialogPrice: this.showDialogPrice, showDialogQuantity: this.showDialogQuantity, dropdownL1: this.dropdownL1, dropdownL2: this.dropdownL2, dropdownL3: this.dropdownL3, dropdownL4: this.dropdownL4, dropdownL1Label: this.dropdownL1Label, dropdownL2Label: this.dropdownL2Label, dropdownL3Label: this.dropdownL3Label, dropdownL4Label: this.dropdownL4Label, checkSubmissionStatus: this.checkSubmissionStatus, priceDisable: this.isPriceDisable, alphanumeric: this.alphanumeric }, selectedProducts: this.dataSourceNew }\r\n      })\r\n        .afterClosed().subscribe(response => {\r\n          this.instance.addRow();\r\n          if (response?.data?.status) {\r\n            this.instance.addRow();\r\n            if (!this.showCategory) {\r\n              this.removeColumn('category');\r\n            }\r\n            if (!this.showQuantity) {\r\n              this.removeColumn('quantity');\r\n            }\r\n            if (!this.showPrice) {\r\n              this.removeColumn('price');\r\n            }\r\n            if (!this.showSubcategory) {\r\n              this.removeColumn('subCategory');\r\n            }\r\n            if (!this.showInventory) {\r\n              this.removeColumn('inventory');\r\n            }\r\n            const selectedProductsCopy = JSON.parse(JSON.stringify(response.data.items.selectedProducts));\r\n            localStorage.setItem(`selectedProducts-${this.dealId}`, JSON.stringify(this.addPriceProperty(selectedProductsCopy)));\r\n            this.dataSourceNew = response.data.items.selectedProducts;\r\n            this.showDataGrid = true;\r\n            this.instance.component.defaultValue = response.data.items.selectedProducts;\r\n          }\r\n        });\r\n    } else {\r\n      this.checkRowsNumber();\r\n      this.instance.addRow();\r\n      if (this.dataSource.data.length < this.instance.rows.length) {\r\n        this.dataSource.data.push({});\r\n      }\r\n      this.dataSource.data = [...this.dataSource.data];\r\n    }\r\n\r\n  }\r\n\r\n  addPriceProperty(selectedProducts) {\r\n    return selectedProducts.map(products => {\r\n      return {\r\n        ...products,\r\n        priceDisable: this.isPriceDisable ? true : false\r\n      }\r\n    })\r\n  }\r\n  checkRowsNumber() {\r\n    while (this.instance.rows.length < this.dataSource.data.length) {\r\n      this.instance.addRow();\r\n    }\r\n  }\r\n\r\n  removeRow(index) {\r\n    let message = 'Are you sure you want to delete this product?';\r\n    let showButton = true;\r\n    if (this.dataSource?.data?.length === 1 && !this.checkSubmissionStatus) {\r\n      message = 'Please select at least one product.';\r\n      showButton = false;\r\n    }\r\n    const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n      disableClose: true,\r\n      width: '90%',\r\n      maxWidth: '400px',\r\n      data: { message: message, buttonStatus: showButton }\r\n    });\r\n    dialogRef.afterClosed().subscribe(result => {\r\n      if (result) {\r\n        if (this.dataSource?.data?.length === 1 && this.checkSubmissionStatus) {\r\n          this.showDataGrid = false;\r\n        }\r\n        // User confirmed, proceed with deletion\r\n        this.instance.removeRow(index);\r\n        this.dataSource.data.splice(index, 1);\r\n        this.dataSource.data = [...this.dataSource.data];\r\n      }\r\n    });\r\n  }\r\n\r\n  dropTable(event: CdkDragDrop<any>) {\r\n    const prevIndex = this.dataSource.data.findIndex((d) => d === event.item.data);\r\n    moveItemInArray(this.control.value, prevIndex, event.currentIndex);\r\n    this.renderComponents();\r\n  }\r\n\r\n  renderComponents() {\r\n    this.instance.getRows();\r\n    this.instance.setValue(this.control.value || []);\r\n  }\r\n\r\n  setValue(value: [] | null) {\r\n    const gridLength = value ? value.length : 0;\r\n    while (this.instance.rows.length < gridLength) {\r\n      this.addAnother();\r\n      this.instance.dataValue = value;\r\n      this.instance.setValue(value);\r\n    }\r\n\r\n    if (!value && this.instance.component.clearOnHide) {\r\n      this.dataSource = new MatTableDataSource(this.instance.defaultValue);\r\n    }\r\n    super.setValue(value);\r\n  }\r\n}\r\nDataGridComponent.MaterialComponent = MaterialDataGridComponent;\r\nexport { DataGridComponent };","import {\r\n  Component,\r\n  ViewChild,\r\n  ViewChildren,\r\n  QueryList,\r\n  ElementRef,\r\n  AfterViewInit\r\n} from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport EditGridComponent from 'formiojs/components/editgrid/EditGrid.js';\r\nimport { FormioComponent } from '../../formio.component';\r\nimport Components from 'formiojs/components/Components';\r\nimport isString from 'lodash/isString';\r\n\r\nenum EditRowState {\r\n  NEW = 'new',\r\n  EDITING ='editing',\r\n  SAVED = 'saved',\r\n  REMOVED = 'removed',\r\n  DRAFT = 'draft'\r\n};\r\n\r\n/* tslint:disable no-bitwise only-arrow-functions */\r\nconst hashCode = function(str) {\r\n  let hash = 0;\r\n  let i = 0;\r\n  let chr;\r\n  str = str.replace(/\\s/g, '');\r\n  if (str.length === 0) {\r\n    return hash;\r\n  }\r\n  for (i = 0; i < str.length; i++) {\r\n    chr   = str.charCodeAt(i);\r\n    hash  = ((hash << 5) - hash) + chr;\r\n    hash |= 0; // Convert to 32bit integer\r\n  }\r\n  return hash;\r\n};\r\n/* tslint:enable no-bitwise only-arrow-functions */\r\n\r\n// Do nothing to createRowComponents, let mat-formio handle it.\r\n/* tslint:disable only-arrow-functions */\r\nEditGridComponent.prototype.createRowComponents = function() {\r\n  return [];\r\n};\r\n\r\nconst checkRow = EditGridComponent.prototype.checkRow;\r\nEditGridComponent.prototype.checkRow = function(data, editRow, flags: any = {}) {\r\n  if (flags.checkRow) {\r\n    return checkRow.call(this, data, editRow, flags);\r\n  } else {\r\n    return true;\r\n  }\r\n};\r\n/* tslint:enable only-arrow-functions */\r\n\r\nconst DEFAULT_HEADER_TEMPLATES = [\r\n  hashCode((EditGridComponent as any).defaultHeaderTemplate),\r\n  hashCode(`\r\n  <div class=\"row\">\r\n    {% (components || []).forEach(function(component) { %}\r\n      <div class=\"col-sm-2\">{{ component.label }}</div>\r\n    {% }) %}\r\n  </div>`)\r\n];\r\n\r\nconst DEFAULT_ROW_TEMPLATES = [\r\n  hashCode((EditGridComponent as any).defaultRowTemplate),\r\n  hashCode(`<div class=\"row\">\r\n  {% util.eachComponent(components, function(component) { %}\r\n    <div class=\"col-sm-2\">\r\n      {{ getView(component, row[component.key]) }}\r\n    </div>\r\n  {% }) %}\r\n  {% if (!instance.options.readOnly) { %}\r\n    <div class=\"col-sm-2\">\r\n      <div class=\"btn-group pull-right\">\r\n        <button class=\"btn btn-default btn-sm editRow\">Edit</button>\r\n        <button class=\"btn btn-danger btn-sm removeRow\">Delete</button>\r\n      </div>\r\n    </div>\r\n  {% } %}\r\n</div>`)\r\n];\r\n\r\n@Component({\r\n  selector: 'mat-formio-editgrid',\r\n  styleUrls: ['./editgrid.component.css'],\r\n  templateUrl: './editgrid.component.html'\r\n})\r\nexport class MaterialEditGridComponent extends MaterialNestedComponent implements AfterViewInit {\r\n  @ViewChild('header') headerElement: ElementRef;\r\n  @ViewChild('footer') footerElement: ElementRef;\r\n  @ViewChildren('rows') rowElements: QueryList<ElementRef>;\r\n  @ViewChildren('forms') forms: QueryList<FormioComponent>;\r\n  public header: string;\r\n  public footer: string;\r\n  public displayedColumns: string[];\r\n  public columns: any = {};\r\n  public colWidth = 0;\r\n  public valid = true;\r\n  public RowStates = EditRowState;\r\n\r\n  getRowTemplate(content) {\r\n    return `<mat-list style=\"display: flex;\">\r\n      {% (components || []).forEach(function(component) { %}\r\n        {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}\r\n          <mat-list-item style=\"width: {{ colWidth }}%; margin: 0 0.8rem\">${content}</mat-list-item>\r\n        {% } %}\r\n      {% }) %}\r\n    </mat-list>`;\r\n}\r\n\r\n  validate(index) {\r\n    if (!this.forms) {\r\n      return;\r\n    }\r\n    const forms = this.forms.toArray();\r\n    if (!forms[index]) {\r\n      return;\r\n    }\r\n    const formioComponent = forms[index];\r\n    const {data} = formioComponent.formio.submission;\r\n    const isInvalid = Object.keys(data).some(\r\n      value => isString(data[value]) && data[value].length === 0\r\n    );\r\n\r\n    if (isInvalid) {\r\n      this.valid = false;\r\n    } else {\r\n      this.valid = true;\r\n    }\r\n  }\r\n\r\n  setInstance(instance) {\r\n    if (\r\n      instance.component.templates.header &&\r\n      (DEFAULT_HEADER_TEMPLATES.indexOf(hashCode(instance.component.templates.header)) !== -1)\r\n    ) {\r\n      instance.component.templates.header = this.getRowTemplate('{{ component.label }}');\r\n    }\r\n\r\n    if (instance.component.templates.row &&\r\n      (DEFAULT_ROW_TEMPLATES.indexOf(hashCode(instance.component.templates.row)) !== -1)\r\n    ) {\r\n      instance.component.templates.row = this.getRowTemplate('{{ getView(component, row[component.key]) }}');\r\n    }\r\n\r\n    this.displayedColumns = instance.component.components.map((comp) => {\r\n      if (comp.hasOwnProperty('tableView') && !comp.tableView) {\r\n        return false;\r\n      }\r\n\r\n      this.columns[comp.key] = comp;\r\n      return comp.key;\r\n    }).filter(name => !!name);\r\n    const dataValue = instance.dataValue || [];\r\n    this.colWidth = instance.component.components.length ? Math.floor(100 / instance.component.components.length) : 100;\r\n    if (instance.component.templates && instance.component.templates.header) {\r\n      this.header = instance.renderString(instance.component.templates.header, {\r\n        components: instance.component.components,\r\n        value: dataValue,\r\n        colWidth: this.colWidth\r\n      });\r\n    }\r\n    if (instance.component.templates && instance.component.templates.footer) {\r\n      this.footer = instance.renderString(instance.component.templates.footer, {\r\n        components: instance.component.components,\r\n        value: dataValue,\r\n        colWidth: this.colWidth\r\n      });\r\n    }\r\n    setTimeout(() => {\r\n      this.renderTemplate(this.headerElement, this.header);\r\n      this.renderTemplate(this.footerElement, this.footer);\r\n    }, 0);\r\n    super.setInstance(instance);\r\n  }\r\n\r\n  addAnother() {\r\n    const row = this.instance.addRow();\r\n  }\r\n\r\n  editRow(row, index) {\r\n    const { state } = row;\r\n    const { NEW, REMOVED } = this.RowStates;\r\n\r\n    if (state === NEW || state === REMOVED) {\r\n      return;\r\n    }\r\n    this.instance.editRow(index);\r\n    const forms = this.forms.toArray();\r\n    if (forms[index]) {\r\n      forms[index].formio.submission = {data: JSON.parse(JSON.stringify(row.data))};\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Updates the row template.\r\n   *\r\n   * @param row\r\n   * @param index\r\n   */\r\n  updateRowTemplate(rowElement: ElementRef, index, comps) {\r\n    const self = this;\r\n    const editRow: any = {...this.instance.editRows[index]};\r\n    if (editRow.state !== this.RowStates.NEW) {\r\n      this.renderTemplate(rowElement, this.instance.renderString(this.instance.component.templates.row, {\r\n        row: this.instance.dataValue[index] || {},\r\n        data: this.instance.data,\r\n        rowIndex: index,\r\n        colWidth: this.colWidth,\r\n        components: this.instance.component.components,\r\n        getView: function getView(component, data) {\r\n          if (!comps[component.type]) {\r\n            comps[component.type] = Components.create(component, {}, {}, true);\r\n          }\r\n          return comps[component.type] ? comps[component.type].getView(data) : '';\r\n        }\r\n      }));\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Saves a row.\r\n   *\r\n   * @param row - The edit grid row.\r\n   * @param index - The index for this row.\r\n   */\r\n  saveRow(row, index) {\r\n    const forms = this.forms.toArray();\r\n    if (forms[index]) {\r\n      const formioComponent = forms[index];\r\n      row.data = JSON.parse(JSON.stringify(formioComponent.formio.submission.data));\r\n      this.instance.saveRow(index);\r\n      const rows = this.rowElements.toArray();\r\n      if (rows && rows[index]) {\r\n        this.updateRowTemplate(rows[index], index, {});\r\n      }\r\n    }\r\n  }\r\n\r\n  cancelRow(index) {\r\n    this.instance.cancelRow(index);\r\n    this.valid = true;\r\n  }\r\n\r\n  renderTemplate(element: ElementRef, template) {\r\n    if (!element || !element.nativeElement) {\r\n      return;\r\n    }\r\n    element.nativeElement.innerHTML = template;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.rowElements.changes.subscribe((rows: QueryList<ElementRef>) => {\r\n      const rowCache = {};\r\n      rows.forEach((row: ElementRef, index) => this.updateRowTemplate(row, index, rowCache));\r\n    });\r\n  }\r\n}\r\nEditGridComponent.MaterialComponent = MaterialEditGridComponent;\r\nexport { EditGridComponent };\r\n","<!-- <mat-formio-form-field [instance]=\"instance\" [componentTemplate]=\"componentTemplate\" [labelTemplate]=\"labelTemplate\">\r\n</mat-formio-form-field>\r\n<ng-template #componentTemplate let-hasLabel>\r\n\r\n  <span fxLayout=\"column\" fxLayoutGap=\"1em\" fxFill>\r\n    <ng-container *ngIf=\"hasLabel\">\r\n      <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\r\n    </ng-container>\r\n    <mat-accordion>\r\n      <mat-expansion-panel *ngIf=\"header\" disabled=\"true\">\r\n        <mat-expansion-panel-header>\r\n          <span #header fxFill></span>\r\n        </mat-expansion-panel-header>\r\n      </mat-expansion-panel>\r\n\r\n      <mat-expansion-panel *ngFor=\"let row of instance.editRows; index as i;\" [expanded]=\"instance.isOpen(row)\">\r\n        <mat-expansion-panel-header (click)=\"editRow(row, i)\">\r\n          <span *ngIf=\"row.state !== RowStates.NEW\" #rows fxFill></span>\r\n        </mat-expansion-panel-header>\r\n\r\n        <mat-formio [form]=\"instance.component\" #forms (change)=\"validate(i)\"></mat-formio>\r\n\r\n        <span fxLayout=\"row\" fxLayoutGap=\"1em\">\r\n          <button mat-raised-button color=\"primary\" [disabled]=\"!valid\" (click)=\"saveRow(row, i)\">Save</button>\r\n          <button mat-raised-button color=\"secondary\" (click)=\"cancelRow(i)\">Cancel</button>\r\n          <button mat-raised-button color=\"warn\" (click)=\"instance.removeRow(i)\" class=\"delete-button\">\r\n            <mat-icon>delete</mat-icon>\r\n          </button>\r\n        </span>\r\n      </mat-expansion-panel>\r\n\r\n      <mat-expansion-panel *ngIf=\"footer\" disabled=\"true\">\r\n        <mat-expansion-panel-header>\r\n          <span #footer></span>\r\n        </mat-expansion-panel-header>\r\n      </mat-expansion-panel>\r\n    </mat-accordion>\r\n\r\n    <span fxFill=\"none\" *ngIf=\"instance.hasAddButton()\">\r\n      <button mat-raised-button color=\"primary\" (click)=\"addAnother()\">\r\n        <mat-icon>add</mat-icon> Add Another\r\n      </button>\r\n    </span>\r\n  </span>\r\n</ng-template>\r\n\r\n<ng-template #labelTemplate>\r\n  <mat-card-title>\r\n    <span [instance]=\"instance\" matFormioLabel></span>\r\n  </mat-card-title>\r\n</ng-template> -->\r\n","import { Component } from '@angular/core';\r\nimport { MaterialNestedComponent } from '../MaterialNestedComponent';\r\nimport TableComponent from 'formiojs/components/table/Table.js';\r\n\r\n@Component({\r\n  selector: 'mat-formio-table',\r\n  styleUrls: [ './table.component.css' ],\r\n  template: `\r\n      <table class=\"mat-table\" style=\"width: 100%;\" [ngClass]=\"{'is-bordered' : instance.component.bordered}\">\r\n        <thead>\r\n        <tr class=\"mat-header-row\">\r\n          <th *ngFor=\"let header of instance.component.header\"\r\n              class=\"mat-header-cell\"\r\n          >\r\n            {{ instance.t(header) }}\r\n          </th>\r\n        </tr>\r\n        </thead>\r\n\r\n        <tbody>\r\n        <tr *ngFor=\"let row of instance.table; let i = index\"\r\n            role=\"row\"\r\n            class=\"mat-row\"\r\n            [ngClass]=\"{\r\n                'is-hover': instance.component.hover,\r\n                'is-striped': instance.component.striped && i % 2 === 0\r\n              }\"\r\n        >\r\n          <td *ngFor=\"let col of row\"\r\n              role=\"gridcell\"\r\n              class=\"mat-cell\"\r\n              [ngClass]=\"getTableColClasses()\"\r\n          >\r\n            <ng-template #components></ng-template>\r\n          </td>\r\n        </tr>\r\n        </tbody>\r\n      </table>\r\n  `\r\n})\r\nexport class MaterialTableComponent extends MaterialNestedComponent {\r\n\r\n  setInstance(instance: any) {\r\n    super.setInstance(instance);\r\n    instance.viewContainer = (component) => {\r\n      return this.viewContainers ?\r\n        this.viewContainers[(component.tableRow * this.instance.component.numCols) + component.tableColumn] :\r\n        null;\r\n    };\r\n  }\r\n\r\n  getTableColClasses() {\r\n    if (!this.instance) {\r\n      return;\r\n    }\r\n    const {condensed, cellAlignment} = this.instance.component;\r\n    return {\r\n      'is-condensed': condensed,\r\n      ...(cellAlignment && {[cellAlignment]: true})\r\n    }\r\n  }\r\n}\r\nTableComponent.MaterialComponent = MaterialTableComponent;\r\nexport { TableComponent };\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport Wizard from 'formiojs/Wizard';\r\nimport Displays from 'formiojs/displays/Displays';\r\nimport { MaterialNestedComponent } from './MaterialNestedComponent';\r\n\r\n@Component({\r\n  selector: 'mat-formio-wizard',\r\n  styles: [\r\n    ':host .navigation-button-row { margin-top: 8px; }',\r\n    ':host .navigation-button-row button { margin-right: 8px; }'\r\n  ],\r\n  template: `\r\n    <mat-horizontal-stepper [linear]=\"isLinear\" #stepper>\r\n      <mat-step *ngFor=\"let page of instance.pages\" [label]=\"page.component.title\">\r\n        <ng-template #components></ng-template>\r\n        <div class=\"navigation-button-row\">\r\n          <button *ngIf=\"instance.hasButton('cancel')\" mat-raised-button (click)=\"resetWizard()\">Cancel</button>\r\n          <button *ngIf=\"instance.hasButton('previous')\" mat-raised-button color=\"primary\" (click)=\"prevPage()\">Previous</button>\r\n          <button *ngIf=\"instance.hasButton('next')\" mat-raised-button color=\"primary\" (click)=\"nextPage()\">Next</button>\r\n          <button *ngIf=\"instance.hasButton('submit')\" mat-raised-button color=\"primary\" (click)=\"submit()\">Submit</button>\r\n        </div>\r\n      </mat-step>\r\n    </mat-horizontal-stepper>`\r\n})\r\nexport class MaterialWizardComponent extends MaterialNestedComponent {\r\n  @ViewChild('stepper', {static: true}) stepper: MatStepper;\r\n  public isLinear = true;\r\n  private prevNumOfPages = 0;\r\n\r\n  setInstance(instance: any) {\r\n    this.isLinear = (\r\n      instance.options &&\r\n      instance.options.breadcrumbSettings &&\r\n      instance.options.breadcrumbSettings.clickable\r\n    ) ? false : true;\r\n\r\n    this.updatePages(instance);\r\n    instance.on('pagesChanged', () => this.updatePages());\r\n\r\n    super.setInstance(instance);\r\n  }\r\n\r\n  updatePages(instance = this.instance) {\r\n    if (this.prevNumOfPages !== instance.pages.length) {\r\n      instance.pages.forEach((page, pageIndex) => {\r\n        page.viewContainer = () => {\r\n          return this.viewContainers ? this.viewContainers[pageIndex] : null;\r\n        };\r\n      });\r\n      this.prevNumOfPages = instance.pages.length;\r\n    }\r\n  }\r\n\r\n  resetWizard() {\r\n    this.instance.cancel();\r\n    this.stepper.reset();\r\n  }\r\n\r\n  nextPage() {\r\n    this.instance.nextPage().then(() => this.stepper.next());\r\n  }\r\n\r\n  prevPage() {\r\n    this.instance.prevPage().then(() => this.stepper.previous());\r\n  }\r\n\r\n  submit() {\r\n    this.instance.submit();\r\n  }\r\n\r\n  renderComponents() {\r\n    if (this.instance.renderComponents && this.instance.pages) {\r\n      this.instance.renderComponents(this.instance.pages.reduce((comps, page) => {\r\n        return comps.concat(page.components);\r\n      }, []));\r\n    }\r\n  }\r\n}\r\nWizard.MaterialComponent = MaterialWizardComponent;\r\nDisplays.addDisplay('wizard', Wizard);\r\nexport { Wizard };\r\n","declare var require: any\r\nconst Components = require('formiojs/components/Components').default;\r\nimport Component from 'formiojs/components/_classes/component/Component.js';\r\n\r\nimport { TextFieldComponent } from './textfield/textfield.component';\r\nimport { PasswordComponent } from './password/password.component';\r\nimport { EmailComponent } from './email/email.component';\r\nimport { UrlComponent } from './url/url.component';\r\nimport { PhoneNumberComponent } from './phonenumber/phonenumber.component';\r\nimport { NumberComponent } from './number/number.component';\r\nimport { CurrencyComponent } from './currency/currency.component';\r\nimport { DayComponent } from './day/day.component';\r\nimport { HiddenComponent } from './hidden/hidden.component';\r\nimport { HtmlComponent } from './html/html.component';\r\nimport { TagsComponent } from './tags/tags.component';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { TextAreaComponent } from './textarea/textarea.component';\r\nimport { PanelComponent } from './panel/panel.component';\r\nimport { ColumnsComponent } from './columns/columns.component';\r\nimport { ContainerComponent } from './container/container.component';\r\nimport { TabsComponent } from './tabs/tabs.component';\r\nimport { DateTimeComponent } from './date/date.component';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\nimport { FieldsetComponent } from './fieldset/fieldset.component';\r\nimport { ContentComponent } from './content/content.component';\r\nimport { SignatureComponent } from './signature/signature.component';\r\nimport { SurveyComponent } from './survey/survey.component';\r\nimport { SelectBoxesComponent } from './selectboxes/selectboxes.component';\r\nimport { RadioComponent } from './radio/radio.component';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { WellComponent } from './well/well.component';\r\nimport { DataGridComponent } from './datagrid/datagrid.component';\r\nimport { EditGridComponent } from './editgrid/editgrid.component';\r\nimport { TableComponent } from './table/table.component';\r\nimport { FormioComponent } from './MaterialComponent';\r\nimport { Wizard } from './formio.wizard';\r\nimport { TimeComponent } from './time/time.component'\r\n\r\n// Set the components.\r\nconst components: any = {\r\n  textfield: TextFieldComponent,\r\n  password: PasswordComponent,\r\n  url: UrlComponent,\r\n  checkbox: CheckboxComponent,\r\n  email: EmailComponent,\r\n  phoneNumber: PhoneNumberComponent,\r\n  number: NumberComponent,\r\n  currency: CurrencyComponent,\r\n  day: DayComponent,\r\n  hidden: HiddenComponent,\r\n  htmlelement: HtmlComponent,\r\n  tags: TagsComponent,\r\n  textarea: TextAreaComponent,\r\n  button: ButtonComponent,\r\n  datetime: DateTimeComponent,\r\n  panel: PanelComponent,\r\n  columns: ColumnsComponent,\r\n  tabs: TabsComponent,\r\n  table: TableComponent,\r\n  well: WellComponent,\r\n  fieldset: FieldsetComponent,\r\n  content: ContentComponent,\r\n  signature: SignatureComponent,\r\n  survey: SurveyComponent,\r\n  selectboxes: SelectBoxesComponent,\r\n  radio: RadioComponent,\r\n  select: SelectComponent,\r\n  container: ContainerComponent,\r\n  datagrid: DataGridComponent,\r\n  editgrid: EditGridComponent,\r\n  unknown: FormioComponent,\r\n  time: TimeComponent,\r\n  wizard: Wizard\r\n};\r\n\r\nexport function getComponents() {\r\n  for (const type of Object.keys(components)) {\r\n    const CompClass = components[type];\r\n    CompClass.prototype.render = (function () {\r\n      if (this.materialComponent) {\r\n        return this.materialComponent.renderComponents();\r\n      }\r\n\r\n      const viewContainer = this.parent ? this.parent.viewContainer(this) : this.viewContainer(this);\r\n      if (!viewContainer) {\r\n        return;\r\n      }\r\n      const factory = this.options.viewResolver.resolveComponentFactory(CompClass.MaterialComponent);\r\n      const componentRef = viewContainer.createComponent(factory);\r\n      (componentRef.instance as any).setInstance(this);\r\n    });\r\n\r\n    const setValue = CompClass.prototype.setValue;\r\n    CompClass.prototype.setValue = (function (...args) {\r\n      if (this.materialComponent) {\r\n        this.materialComponent.setValue(args[0]);\r\n      }\r\n      return setValue.call(this, ...args);\r\n    });\r\n\r\n    components[type] = CompClass;\r\n  }\r\n\r\n  return components;\r\n}\r\n\r\nexport function registerComponent(name: string, CompClass: any) {\r\n\r\n  class DummyComponent extends Component {};\r\n  const formIOComp = (DummyComponent as any);\r\n\r\n  formIOComp.MaterialComponent = CompClass;\r\n  formIOComp.prototype.render = (function () {\r\n    if (this.materialComponent) {\r\n      return this.materialComponent;\r\n    }\r\n    const viewContainer = this.parent ? this.parent.viewContainer(this) : this.viewContainer(this);\r\n    if (!viewContainer) {\r\n      return;\r\n    }\r\n    const factory = this.options.viewResolver.resolveComponentFactory(formIOComp.MaterialComponent);\r\n    const componentRef = viewContainer.createComponent(factory);\r\n    (componentRef.instance as any).setInstance(this);\r\n  });\r\n\r\n  const setValue = formIOComp.prototype.setValue;\r\n  formIOComp.prototype.setValue = (function (...args) {\r\n    if (this.materialComponent) {\r\n      this.materialComponent.setValue(args[0]);\r\n    }\r\n    return setValue.call(this, ...args);\r\n  });\r\n\r\n  Components.addComponent(name, formIOComp);\r\n\r\n}\r\n","declare var require: any\r\nconst Components = require('formiojs/components/Components').default;\r\nimport './components/Webform';\r\nimport { getComponents, registerComponent } from './components';\r\nconst Formio = require('formiojs/Formio').default;\r\nconst Form = require('formiojs/Form').default;\r\nconst Utils = require('formiojs/utils').default;\r\n\r\nfunction initRenderer() {\r\n    Components.setComponents(getComponents());\r\n    Formio.Components = Components;\r\n    Formio.Templates = {};\r\n}\r\n\r\nexport { Form, Utils, Components, Formio, initRenderer, registerComponent };\r\n","import { Component, Optional, ChangeDetectorRef, ViewContainerRef, ViewChild, ComponentFactoryResolver, NgZone, Input, Output } from '@angular/core';\r\nimport { FormioAppConfig, FormioBaseComponent } from '@formio/angular';\r\nimport { Form } from './renderer';\r\nimport { get } from 'lodash';\r\n@Component({\r\n  selector: 'mat-formio',\r\n  styles: [\r\n    `.alert-danger {\r\n           color: #721c24;\r\n           background-color: #f8d7da;\r\n           border-color: #f5c6cb;\r\n         }\r\n         .alert-success {\r\n           color: #155724;\r\n           background-color: #d4edda;\r\n           border-color: #c3e6cb;\r\n         }\r\n         .alert {\r\n           position: relative;\r\n           padding: .75rem 1.25rem;\r\n           margin-bottom: 0.5rem;\r\n           border: 1px solid transparent;\r\n           border-radius: .25rem;\r\n         }\r\n         ::ng-deep mat-card {\r\n             box-sizing: border-box;\r\n             -moz-box-sizing: border-box;\r\n         }\r\n         `\r\n  ],\r\n  template: `\r\n    <mat-spinner *ngIf=\"isLoading\"></mat-spinner>\r\n    <div *ngIf=\"!this.options?.disableAlerts\">\r\n      <div *ngFor=\"let alert of alerts.alerts\"\r\n           class=\"alert alert-{{ alert.type }}\"\r\n           role=\"alert\"\r\n      >\r\n        {{ alert.message }}\r\n      </div>\r\n    </div>\r\n    <div fxLayout=\"column\" fxLayoutGap=\"1em\">\r\n      <ng-template #formio></ng-template>\r\n    </div>\r\n  `\r\n})\r\nexport class FormioComponent extends FormioBaseComponent {\r\n  @ViewChild('formio', {static: true, read: ViewContainerRef}) formioViewContainer: ViewContainerRef;\r\n  constructor(\r\n    private resolver: ComponentFactoryResolver,\r\n    private cd: ChangeDetectorRef,\r\n    public ngZone: NgZone,\r\n    @Optional() public config: FormioAppConfig\r\n  ) {\r\n    super(ngZone, config);\r\n  }\r\n\r\n  getRendererOptions(): any {\r\n    const rendererOptions = super.getRendererOptions();\r\n    return {...rendererOptions, validateOnInit: get(rendererOptions, 'validateOnInit', true) }\r\n  }\r\n\r\n  createRenderer() {\r\n    const options = this.getRendererOptions();\r\n    const flags = {\r\n      validateOnInit: options.validateOnInit\r\n    };\r\n    options.viewResolver = this.resolver;\r\n    const form = new Form();\r\n    form._form = this.form;\r\n    form.options = options;\r\n    form.options.events = form.events;\r\n    form.instance = form.create(this.form.display);\r\n    form.instance.viewContainer = () => this.formioViewContainer;\r\n    if (this.submission && this.submission.data) {\r\n      form.instance.data = this.submission.data;\r\n    }\r\n    this.ngZone.run(() => form.instance.setForm(this.form, flags)\r\n      .then(() => form.readyResolve(form.instance))\r\n      .catch(() => form.readyReject())\r\n    );\r\n    return form.instance;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { NgxRenderMaterialFormsComponent } from './ngx-render-material-forms.component';\r\nimport {MatDialogModule} from '@angular/material/dialog';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { initRenderer } from './renderer';\r\nimport { FormioComponent } from './formio.component';\r\nimport { MaterialComponent } from './components/MaterialComponent';\r\nimport { MaterialNestedComponent } from './components/MaterialNestedComponent';\r\nimport { MaterialButtonComponent } from './components/button/button.component';\r\nimport { MaterialTextfieldComponent } from './components/textfield/textfield.component';\r\nimport { MaterialPasswordComponent } from './components/password/password.component';\r\nimport { MaterialUrlComponent } from './components/url/url.component';\r\nimport { MaterialEmailComponent } from './components/email/email.component';\r\nimport { MaterialPhoneNumberComponent } from './components/phonenumber/phonenumber.component';\r\nimport { MaterialNumberComponent } from './components/number/number.component';\r\nimport { MaterialHiddenComponent } from './components/hidden/hidden.component';\r\nimport { MaterialHtmlComponent } from './components/html/html.component';\r\nimport { MaterialTagsComponent } from './components/tags/tags.component';\r\nimport { MaterialCurrencyComponent } from './components/currency/currency.component';\r\nimport { MaterialDayComponent } from './components/day/day.component';\r\nimport { MaterialTextareaComponent } from './components/textarea/textarea.component';\r\nimport { MaterialColumnsComponent } from './components/columns/columns.component';\r\nimport { MaterialContainerComponent } from './components/container/container.component';\r\nimport { MaterialCheckboxComponent } from './components/checkbox/checkbox.component';\r\nimport { MaterialFieldsetComponent } from './components/fieldset/fieldset.component';\r\nimport { MaterialContentComponent } from './components/content/content.component';\r\nimport { MaterialSignatureComponent } from './components/signature/signature.component';\r\nimport { MaterialSurveyComponent } from './components/survey/survey.component';\r\nimport { MaterialSelectBoxesComponent } from './components/selectboxes/selectboxes.component';\r\nimport { MaterialRadioComponent } from './components/radio/radio.component';\r\nimport { MaterialSelectComponent } from './components/select/select.component';\r\nimport { MaterialPanelComponent } from './components/panel/panel.component';\r\nimport { MaterialTabsComponent } from './components/tabs/tabs.component';\r\nimport { MaterialTableComponent } from './components/table/table.component';\r\nimport { MaterialDateComponent } from './components/date/date.component';\r\nimport { MaterialDataGridComponent } from './components/datagrid/datagrid.component';\r\nimport { MaterialEditGridComponent } from './components/editgrid/editgrid.component';\r\nimport { MaterialWellComponent } from './components/well/well.component';\r\nimport { MaterialWizardComponent } from './components/formio.wizard';\r\nimport { MaterialTimeComponent } from './components/time/time.component';\r\nimport { MaterialCalendarComponent } from './components/calendar/calendar.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FormioFormFieldComponent } from './components/formio-form-field/formio-form-field.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { MaskDirective } from './directives/mask.directive';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\r\nimport { AddOnProductsComponent } from './components/add-on-products/add-on-products.component';\r\n\r\nexport {\r\n  FormioComponent,\r\n  MaterialButtonComponent,\r\n  MaterialTextfieldComponent,\r\n  MaterialPasswordComponent,\r\n  MaterialUrlComponent,\r\n  MaterialEmailComponent,\r\n  MaterialPhoneNumberComponent,\r\n  MaterialNumberComponent,\r\n  MaterialCurrencyComponent,\r\n  MaterialDayComponent,\r\n  MaterialHiddenComponent,\r\n  MaterialHtmlComponent,\r\n  MaterialTagsComponent,\r\n  MaterialTableComponent,\r\n  MaterialTextareaComponent,\r\n  MaterialColumnsComponent,\r\n  MaterialContainerComponent,\r\n  MaterialDataGridComponent,\r\n  MaterialEditGridComponent,\r\n  MaterialPanelComponent,\r\n  MaterialCheckboxComponent,\r\n  MaterialFieldsetComponent,\r\n  MaterialContentComponent,\r\n  MaterialSignatureComponent,\r\n  MaterialSurveyComponent,\r\n  MaterialSelectBoxesComponent,\r\n  MaterialRadioComponent,\r\n  MaterialSelectComponent,\r\n  MaterialTabsComponent,\r\n  MaterialDateComponent,\r\n  MaterialWellComponent,\r\n  MaterialComponent,\r\n  MaterialNestedComponent,\r\n  MaterialTimeComponent \r\n};\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxRenderMaterialFormsComponent,\r\n    FormioComponent,\r\n    MaterialButtonComponent,\r\n    MaterialTextfieldComponent,\r\n    MaterialPasswordComponent,\r\n    MaterialUrlComponent,\r\n    MaterialEmailComponent,\r\n    MaterialPhoneNumberComponent,\r\n    MaterialNumberComponent,\r\n    MaterialCurrencyComponent,\r\n    MaterialDayComponent,\r\n    MaterialHiddenComponent,\r\n    MaterialHtmlComponent,\r\n    MaterialTagsComponent,\r\n    MaterialTextareaComponent,\r\n    MaterialColumnsComponent,\r\n    MaterialContainerComponent,\r\n    MaterialDataGridComponent,\r\n    MaterialEditGridComponent,\r\n    MaterialPanelComponent,\r\n    MaterialCheckboxComponent,\r\n    MaterialFieldsetComponent,\r\n    MaterialContentComponent,\r\n    MaterialSignatureComponent,\r\n    MaterialSurveyComponent,\r\n    MaterialSelectBoxesComponent,\r\n    MaterialRadioComponent,\r\n    MaterialSelectComponent,\r\n    MaterialTabsComponent,\r\n    MaterialTableComponent,\r\n    MaterialDateComponent,\r\n    MaterialWellComponent,\r\n    MaterialWizardComponent,\r\n    MaterialComponent,\r\n    MaterialNestedComponent,\r\n    MaterialTimeComponent,\r\n    MaterialCalendarComponent,\r\n    FormioFormFieldComponent,\r\n    LabelComponent,\r\n    MaskDirective,\r\n    ConfirmationDialogComponent,\r\n    AddOnProductsComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatInputModule,\r\n    MatButtonModule,\r\n    MatInputModule,\r\n    MatFormFieldModule,\r\n    MatCheckboxModule,\r\n    MatRadioModule,\r\n    MatSelectModule,\r\n    MatListModule,\r\n    MatChipsModule,\r\n    MatExpansionModule,\r\n    MatButtonModule,\r\n    MatTabsModule,\r\n    MatTableModule,\r\n    MatNativeDateModule,\r\n    MatDatepickerModule,\r\n    MatProgressSpinnerModule,\r\n    MatTooltipModule,\r\n    MatIconModule,\r\n    FlexLayoutModule,\r\n    MatStepperModule,\r\n    MatCardModule,\r\n    DragDropModule,\r\n    ScrollingModule,\r\n    NgxMatSelectSearchModule,\r\n    MatDialogModule,\r\n    HttpClientModule,\r\n\r\n    MatAutocompleteModule\r\n  ],\r\n  exports: [\r\n    MatAutocompleteModule,\r\n    NgxRenderMaterialFormsComponent,\r\n    FormioComponent,\r\n    MatInputModule,\r\n    MatFormFieldModule,\r\n    MatCheckboxModule,\r\n    MatRadioModule,\r\n    MatSelectModule,\r\n    MatListModule,\r\n    MatChipsModule,\r\n    MatExpansionModule,\r\n    MatButtonModule,\r\n    MatCardModule,\r\n    MatTabsModule,\r\n    MatTableModule,\r\n    MatNativeDateModule,\r\n    MatDatepickerModule,\r\n    MatProgressSpinnerModule,\r\n    MatTooltipModule,\r\n    MatIconModule,\r\n    DragDropModule,\r\n    MatStepperModule,\r\n    FlexLayoutModule,\r\n    ScrollingModule,\r\n    NgxMatSelectSearchModule,\r\n    MatDialogModule,\r\n    HttpClientModule\r\n  ],\r\n  entryComponents: [\r\n    MaterialButtonComponent,\r\n    MaterialTextfieldComponent,\r\n    MaterialPasswordComponent,\r\n    MaterialUrlComponent,\r\n    MaterialEmailComponent,\r\n    MaterialPhoneNumberComponent,\r\n    MaterialNumberComponent,\r\n    MaterialCurrencyComponent,\r\n    MaterialDayComponent,\r\n    MaterialHiddenComponent,\r\n    MaterialHtmlComponent,\r\n    MaterialTagsComponent,\r\n    MaterialTextareaComponent,\r\n    MaterialColumnsComponent,\r\n    MaterialContainerComponent,\r\n    MaterialDataGridComponent,\r\n    MaterialEditGridComponent,\r\n    MaterialPanelComponent,\r\n    MaterialCheckboxComponent,\r\n    MaterialFieldsetComponent,\r\n    MaterialContentComponent,\r\n    MaterialSignatureComponent,\r\n    MaterialSurveyComponent,\r\n    MaterialSelectBoxesComponent,\r\n    MaterialRadioComponent,\r\n    MaterialSelectComponent,\r\n    MaterialTabsComponent,\r\n    MaterialTableComponent,\r\n    MaterialDateComponent,\r\n    MaterialWellComponent,\r\n    MaterialComponent,\r\n    MaterialNestedComponent,\r\n    MaterialTimeComponent,\r\n    MaterialWizardComponent\r\n  ]\r\n})\r\nexport class NgxRenderMaterialFormsModule { \r\n  constructor() {\r\n    initRenderer();\r\n  }\r\n}\r\n\r\nexport * from './renderer';\r\n","/*\r\n * Public API Surface of ngx-render-material-forms\r\n */\r\n\r\nexport * from './lib/ngx-render-material-forms.service';\r\nexport * from './lib/ngx-render-material-forms.component';\r\nexport * from './lib/ngx-render-material-forms.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FormioComponent","i1","i2","i4","i3","i4.LabelComponent","i7.FormioFormFieldComponent","i8.LabelComponent","i5","i6.FormioFormFieldComponent","i7.LabelComponent","i6","i5.FormioFormFieldComponent","i6.LabelComponent","i6.MaterialTimeComponent","i7","i8.MaterialCalendarComponent","i9.FormioFormFieldComponent","i10.LabelComponent","i11.MaskDirective","i2.CommonService","i8","i9","i11.FormioFormFieldComponent","i12.LabelComponent","i3.CommonService","i10","i12","i13","i10.FormioFormFieldComponent","i11.LabelComponent","Components","Component","get"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,6BAA6B,CAAA;AAExC,IAAA,WAAA,GAAA,GAAiB;;2HAFN,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA,CAAA;4FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCQY,+BAA+B,CAAA;AAE1C,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;6HALU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EARhC,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAIU,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAV3C,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAC/B,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,CAAA;;;ACPH,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAA;AACzB,IAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC,CAAC;AACF,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,YAAA;AACxB,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC;AACvE,IAAA,IAAI,aAAa,EAAE;QACjB,aAAa,CAAC,KAAK,EAAE,CAAC;AACvB,KAAA;AACH,CAAC,CAAC;AACF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAA;IACzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,KAAA;AACH,CAAC;;ACdD,wBAAe,CAAC,MAAK;AACnB,IAAA,MAAM,YAAY,GAAGA,iBAAe,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5D,IAAAA,iBAAe,CAAC,SAAS,CAAC,YAAY,GAAG,UAAS,GAAG,IAAI,EAAA;QACvD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC1C,KAAC,CAAC;IAEF,MAAM,CAAC,cAAc,CAACA,iBAAe,CAAC,SAAS,EAAE,UAAU,EAAE;AAC3D,QAAA,GAAG,CAAC,QAAQ,EAAA;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9C,aAAA;SACF;AACF,KAAA,CAAC,CAAC;IAEH,MAAM,CAAC,cAAc,CAACA,iBAAe,CAAC,SAAS,EAAE,SAAS,EAAE;AAC1D,QAAA,GAAG,CAAC,OAAO,EAAA;AACT,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC7B,gBAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;YACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAA;SACF;AACF,KAAA,CAAC,CAAC;AACH,IAAA,OAAOA,iBAAe,CAAC;AACzB,CAAC,GAAG;;AC9BJ;AACM,MAAO,aAAc,SAAQ,WAAW,CAAA;IAG5C,OAAO,eAAe,CAAC,OAAsB,EAAA;AAC3C,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE;AACpB,gBAAA,OAAO,CAAC,QAAQ,CAAC,eAAe,GAAG,OAAO,CAAC;AAC5C,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,IAAI,CAAC,CAAC;AACf,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAA,CAAY,GAAG,IAAI,EAAA;AACjB,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KACzE;AAED,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AACrD,QAAA,QAAQ,CAAC,iBAAiB,GAAG,CAAC,OAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK,KAAI;YAChF,IAAI,cAAc,GAAG,OAAO,CAAC;AAC7B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1B,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,aAAA;AACI,iBAAA,IAAI,OAAO,EAAE;AAChB,gBAAA,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpC,aAAA;AAED,YAAA,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAI,QAAQ,CAAC,eAAe,EAAE;AAC5B,gBAAA,QAAQ,CAAC,eAAe,CAAC,cAAc,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,CAAC;AAClE,aAAA;AACH,SAAC,CAAC;KACH;AACF;;MC7BY,iBAAiB,CAAA;IAI5B,WAAmB,CAAA,OAAmB,EAAS,GAAsB,EAAA;AAAlD,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAS,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAD5D,QAAA,IAAA,CAAA,OAAO,GAAkB,IAAI,aAAa,EAAE,CAAC;KACmB;AAEzE,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,aAAA;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACjG,SAAA;KACF;IAED,cAAc,GAAA;QACZ,MAAM,EAAC,GAAG,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9D,IAAI,eAAe,KAAK,IAAI,EAAE;YAC5B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEjC,MAAM,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAC/C,IAAI,CAAC,QAAQ,EACb,EAAC,CAAC,GAAG,GAAG,eAAe,EAAC,EACxB,EAAC,CAAC,GAAG,GAAG,eAAe,EAAC,CACzB,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,eAAe,EAAE;AACrB,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC9B,aAAA;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;KACF;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;YACnG,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1F,SAAA;KACF;AAED,IAAA,YAAY,CAAC,IAAI,EAAA;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC5B;AAED,IAAA,gBAAgB,MAAK;AAErB,IAAA,QAAQ,CAAC,YAAsB,EAAA;AAC7B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE5B,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;AACzE,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;KACpD;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC3B;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;KAC9B;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;KACjD;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc;eACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACvB,SAAA;KACF;AAED,IAAA,UAAU,CAAC,OAAO,EAAA;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9C,YAAA,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACxD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBACvD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACxD,aAAA;AACF,SAAA;KACF;IAED,eAAe,GAAA;;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE/D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;;YAEd,MAAM,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAA,CAAC;AACnF,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACtD,aAAA;YACD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC5D,SAAA;KACF;;+GAlJU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,6MAFlB,6FAA6F,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAE5F,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,6FAA6F;iBACxG,CAAA;iIAEU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACc,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBACT,OAAO,EAAA,CAAA;sBAAf,KAAK;;AAkJRD,iBAAe,CAAC,iBAAiB,GAAG,iBAAiB;;AC/JrD,IAAY,cAOX,CAAA;AAPD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAPW,cAAc,KAAd,cAAc,GAOzB,EAAA,CAAA,CAAA;;MCCY,cAAc,CAAA;;4GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,8FCR3B,+WAQA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDAa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BAEE,sBAAsB,EAAA,QAAA,EAAA,+WAAA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,CAAA;8BAKvB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEDK,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAc,CAAA,cAAA,GAAG,cAAc,CAAC;AAE9B,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AACvB,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KAgCpC;IA9BC,IACI,QAAQ,CAAC,QAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,wBAAwB,GAAG,EAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC;AACrE,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAKD,IAAA,QAAQ,CAAC,cAAyB,EAAA;AAChC,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,SAAS,CAAC;QAC3D,MAAM,2BAA2B,GAAG,CAAC,cAAc;YACf,CAAC,cAAc,CAAC,MAAM;YACtB,CAAC,SAAS,CAAC,aAAa,CAAC;AAE7D,QAAA,IAAI,UAAU,IAAI,2BAA2B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;AACpD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;;sHArCU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,qRCRrC,+uEAkDA,EAAA,MAAA,EAAA,CAAA,qqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD1Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,+uEAAA,EAAA,MAAA,EAAA,CAAA,qqBAAA,CAAA,EAAA,CAAA;8BAOxB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAGF,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,UAAU,CAAA;gBAYR,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;AExBD,MAAM,kBAAkB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjC,CAAC;AAMI,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AAJjE,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;KAsE3B;IAnEC,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACxB,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1D,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QAED,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEjE,IAAI,aAAa,IAAI,aAAa,EAAE;AAClC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,aAAa,EAAE,CAAW,QAAA,EAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,aAAa,CAAC;AACjF,SAAA;AAAM,aAAA,IAAI,aAAa,EAAE;AACxB,YAAA,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;AACxC,SAAA;AAAM,aAAA;YACL,OAAO,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA,WAAA,CAAa,CAAC;AAClD,SAAA;KACF;IAED,aAAa,GAAA;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;QACnF,OAAO,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KACrC;IAED,sBAAsB,GAAA;QACpB,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AAC9G,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;KAClE;IAED,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACI,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEzC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,gBAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;;AAE1B,oBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,EAAE;AACxE,wBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACpE,qBAAA;AACD,oBAAA,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;AACvC,wBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;4BACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACrC,gCAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACjC,6BAAA;AACF,yBAAA;AACD,wBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC/D,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;wHAtEU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4GAA1B,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAD,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAyED,kBAAkB,CAAC,iBAAiB,GAAG,0BAA0B;;AC1G3D,MAAO,yBAA0B,SAAQ,0BAA0B,CAAA;AAJzE,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,UAAU,CAAC;KAC/B;;uHAFY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAAzB,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAID,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;ACHzD,MAAO,sBAAuB,SAAQ,0BAA0B,CAAA;AAJtE,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;KAC5B;;oHAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAtB,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAID,cAAc,CAAC,iBAAiB,GAAG,sBAAsB;;ACHnD,MAAO,oBAAqB,SAAQ,0BAA0B,CAAA;AAJpE,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAC1B;;kHAFY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAApB,oBAAoB,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAID,YAAY,CAAC,iBAAiB,GAAG,oBAAoB;;ACH/C,MAAO,4BAA6B,SAAQ,0BAA0B,CAAA;AAJ5E,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;KAC3B;;0HAFY,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAA5B,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAID,oBAAoB,CAAC,iBAAiB,GAAG,4BAA4B;;ACD/D,MAAO,uBAAwB,SAAQ,0BAA0B,CAAA;AAGrE,IAAA,WAAA,CAAmB,OAAmB,EAAS,GAAsB,EAAU,QAAmB,EAAA;AAChG,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AADH,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAS,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAF3F,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;KAIzB;IAED,eAAe,GAAA;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AAExB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,MAAK;AAC1D,gBAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpD,gBAAA,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,gBAAA,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;AAEN,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC1B,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACnF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;AAC1B,YAAA,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,SAAA;AACI,aAAA;AACH,YAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,QAAQ,GAAA;AACN,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACtB;;qHA7CU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAvB,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAgDD,eAAe,CAAC,iBAAiB,GAAG,uBAAuB;;AC9CrD,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;AAJtE,IAAA,WAAA,GAAA;;AAKS,QAAA,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;KAY3B;IAVC,QAAQ,GAAA;AACN,QAAA,IAAI,QAAQ,CAAC;QACZ,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5D,IAAG,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACvD,SAAA;AAAM,aAAA;YACL,QAAQ,GAAG,EAAE,CAAC;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AACvD,SAAA;KACF;;uHAZU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAAzB,yBAAyB,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0qCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;AAeD,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;ACnB/D,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,UAAS,IAAI,EAAA;IAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACtD,CAAC,CAAC;AA8CI,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AA5C3D,IAAA,WAAA,GAAA;;AA6CS,QAAA,IAAA,CAAA,UAAU,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;KAyCrD;AAxCC,IAAA,WAAW,CAAC,QAAQ,EAAA;;QAEjB,IAAI,CAAC,UAAkB,CAAC,YAAY,GAAG,MAAO,GAAC,CAAC;QAChD,IAAI,CAAC,UAAkB,CAAC,eAAe,GAAG,MAAO,GAAC,CAAC;QACnD,IAAI,CAAC,YAAoB,CAAC,YAAY,GAAG,MAAO,GAAC,CAAC;QAClD,IAAI,CAAC,YAAoB,CAAC,eAAe,GAAG,MAAO,GAAC,CAAC;QACrD,IAAI,CAAC,WAAmB,CAAC,YAAY,GAAG,MAAO,GAAC,CAAC;QACjD,IAAI,CAAC,WAAmB,CAAC,eAAe,GAAG,MAAO,GAAC,CAAC;QACrD,QAAQ,CAAC,IAAI,GAAG;YACd,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,IAAI,EAAE,IAAI,CAAC,WAAW;SACvB,CAAC;AACF,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACpC;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KAChC;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,SAAA;QACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;KACpC;;kHA3CU,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EA1CrB,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,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,EAAAH,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5ChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA;iBACF,CAAA;;AA8CD,YAAY,CAAC,iBAAiB,GAAG,oBAAoB;;AC3F/C,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;;qHAAjD,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,gFAFxB,CAA+D,6DAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,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,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,EAAAC,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAE9D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA+D,6DAAA,CAAA;iBAC1E,CAAA;;AAED,eAAe,CAAC,iBAAiB,GAAG,uBAAuB;;ACArD,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IAG1D,eAAe,GAAA;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE;AAC3C,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,MAAK;AAClC,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;AACxE,aAAC,CAAC;AACH,SAAA;KACF;;mHAVU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,oLAFtB,CAAuB,qBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAEtB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAuB,qBAAA,CAAA;iBAClC,CAAA;8BAEwB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;;AAWvB,aAAa,CAAC,iBAAiB,GAAG,qBAAqB;;ACiBjD,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AA/B5D,IAAA,WAAA,GAAA;;QAgCW,IAAA,CAAA,kBAAkB,GAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvD,QAAA,IAAI,CAAA,IAAA,GAAa,EAAE,CAAC;KAiCrB;AAhCC,IAAA,GAAG,CAAC,KAAwB,EAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAED,IAAA,MAAM,CAAC,KAAK,EAAA;QACV,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5B,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KAC7G;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAA;QACD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACjB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;;mHAlCU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EA7BtB,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAE,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA/BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA;iBACF,CAAA;;AAqCA,aAAqB,CAAC,iBAAiB,GAAG,qBAAqB;;ACzEhE,IAAY,aAOX,CAAA;AAPD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAPW,aAAa,KAAb,aAAa,GAOxB,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,oBAKX,CAAA;AALD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EALW,oBAAoB,KAApB,oBAAoB,GAK/B,EAAA,CAAA,CAAA;;ACHK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAO5D,IAAA,WAAA,CAAmB,OAAmB,EAAS,GAAsB,EAAU,MAAiB,EAAA;AAC9F,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AADH,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAS,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AANzF,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AACb,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AACd,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;KAGxB;AACD,IAAA,IAAI,KAAK,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAClC,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACtC,QAAA,OAAO,KAAK,IAAI,oBAAoB,CAAC,OAAO,CAAC;KAC9C;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;YACnC,KAAK,aAAa,CAAC,OAAO;gBACxB,OAAO,oBAAoB,CAAC,OAAO,CAAC;YAEtC,KAAK,aAAa,CAAC,OAAO;gBACxB,OAAO,oBAAoB,CAAC,MAAM,CAAC;YAErC,KAAK,aAAa,CAAC,MAAM;gBACvB,OAAO,oBAAoB,CAAC,IAAI,CAAC;YAEnC,KAAK,aAAa,CAAC,SAAS;gBAC1B,OAAO,oBAAoB,CAAC,KAAK,CAAC;AAEpC,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;;AACb,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,yBAAyB,GAAG,EAAE,CAAC;QAC/E,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAA,mBAAA,EAAsB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QACtG,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QAClG,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;AACxD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;AAC/C,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,CAAU,OAAA,EAAA,UAAU,CAAI,CAAA,EAAA,WAAW,CAAE,CAAA,CAAC,WAAW,EAAE,CAAC;AACxE,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KACpD;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;AACxC,QAAA,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrE,QAAA,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,QAAA,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,QAAQ,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACtE,QAAA,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAI;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7G,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACf;;qHA1FU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,gFCXpC,6uBAgBA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDLa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,6uBAAA,EAAA,MAAA,EAAA,CAAA,4kBAAA,CAAA,EAAA,CAAA;;AAgG/B,eAAe,CAAC,iBAAiB,GAAG,uBAAuB;;AErErD,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;IAG9D,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE/D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KAC1D;IAED,eAAe,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;YACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACrC,gBAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACjC,aAAA;AACF,SAAA;;AAGD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;KAC/D;IAGD,QAAQ,GAAA;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC5D;;uHA7BU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EA1B1B,QAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAJ,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA7BrC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAErB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA,CAAA;8BAGsB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;;AA8BvB,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;AC1DzD,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAG5D,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,QAAQ,CAAC,aAAa,GAAG,MAAK;AAC5B,YAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7D,SAAC,CAAC;AACF,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAClC,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;;qHAzBU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAvB,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEC,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJzC,yCAAyC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAExC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,yCAAyC;iBACpD,CAAA;8BAGuD,UAAU,EAAA,CAAA;sBAA/D,YAAY;gBAAC,IAAA,EAAA,CAAA,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAA;;;ACoBhD,MAAO,sBAAuB,SAAQ,uBAAuB,CAAA;;oHAAtD,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAxBvB,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAKU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA1BlC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,CAAA;;AAMH,cAAc,CAAC,iBAAiB,GAAG,sBAAsB;;ACLnD,MAAO,wBAAyB,SAAQ,uBAAuB,CAAA;AArBrE,IAAA,WAAA,GAAA;;AAsBS,QAAA,IAAO,CAAA,OAAA,GAAG,GAAG,CAAC;AACd,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;KAgBvB;AAfC,IAAA,WAAW,CAAC,QAAa,EAAA;QACvB,IAAI,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AACjF,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,QAAQ,CAAC,aAAa,GAAG,CAAC,SAAS,KAAI;AACrC,YAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AAC5E,SAAC,CAAC;KACH;IAED,SAAS,CAAC,MAAM,EAAE,KAAK,EAAA;AACrB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACzD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC;AAC7E,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC;AAC9E,SAAA;KACF;;sHAjBU,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAnBzB,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;GAgBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBArBpC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACpB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,CAAA;;AAsBH,gBAAgB,CAAC,iBAAiB,GAAG,wBAAwB;;AClCvD,MAAO,0BAA2B,SAAQ,uBAAuB,CAAA;;wHAA1D,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAL3B,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;WAGD,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;AAGD,UAAA,CAAA;iBACV,CAAA;;AAED,kBAAkB,CAAC,iBAAiB,GAAG,0BAA0B;;ACK3D,MAAO,qBAAsB,SAAQ,uBAAuB,CAAA;AAChE,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,QAAQ,CAAC,aAAa,GAAG,CAAC,SAAS,KAAI;AACrC,YAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACzE,SAAC,CAAC;KACH;;mHANU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAVtB,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;GAQT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,EAAA,CAAA;iBACF,CAAA;;AASD,aAAa,CAAC,iBAAiB,GAAG,qBAAqB;;ACuCjD,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AA1D5D,IAAA,WAAA,GAAA;;AA2DS,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AACd,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;AACzC,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AACb,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KA6DpC;AA3DC,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;QAChD,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnC,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;QAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAA,EAAG,KAAK,IAAI,IAAI,CAAI,CAAA,EAAA,OAAO,CAAG,EAAA,OAAO,GAAG,GAAG,GAAG,OAAO,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC;QAC7F,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,QAAQ,EAAE,CAAC;AAClB,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;AACD,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;QAEzC,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM,IAAI,IAAI,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KAChE;AAED,IAAA,qBAAqB,CAAC,UAAU,EAAA;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC;AACvB,QAAA,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAClE;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;;mHAtEU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAxDtB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,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,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1DjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA;iBACF,CAAA;8BAQW,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACE,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;AA+DR,aAAa,CAAC,iBAAiB,GAAG,qBAAqB;;AC1FjD,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;AA5ChE,IAAA,WAAA,GAAA;;AA0DY,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAC1C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;KAoCrD;AAlCC,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7B;AAED,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;IAED,cAAc,CAAC,KAAK,EAAE,OAAO,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC7B;AAED,IAAA,MAAM,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9C;AAED,IAAA,MAAM,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9C;IAED,cAAc,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,IAAI,EAAE,MAAM;SACb,CAAA;KACF;;uHAlDU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EA/B1B,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA5CrC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAYrB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,CAAA;8BAQkB,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;gBAER,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MC9CI,aAAa,CAAA;AAIxB,IAAA,WAAA,CAAoB,UAAwC,EAAA;AAAxC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAA8B;KAAI;AAGhE,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IACI,KAAK,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;AAEO,IAAA,WAAW,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;AACI,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;AAC1C,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAU,EAAA;KACnB;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,iBAAiB,GAAA;KAChB;;2GAvCU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EATb,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA,EAAC,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,aAAa,EAAC;AAC/D,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAC,OAAO,EAAE,wBAAwB,EAAE,WAAW,eAAe,EAAC;AAC/D,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;iBACF,CAAA;iGAEmB,MAAM,EAAA,CAAA;sBAAvB,KAAK;uBAAC,SAAS,CAAA;gBAWZ,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,OAAO,CAAA;;;AC4CV,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAjE5D,IAAA,WAAA,GAAA;;AAkES,QAAA,IAAA,CAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,cAAc,GAAgB,IAAI,WAAW,EAAE,CAAC;AAGhD,QAAA,IAAY,CAAA,YAAA,GAAQ,OAAO,CAAC;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;AAoIjC,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAK,KAAI;YAC5B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACjC,aAAA;AACD,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClE,SAAC,CAAA;AA8CD,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAc,KAAa;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACpG,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO;gBAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC;AAC5F,SAAC,CAAA;KA4BF;AAnNC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,CAAC;KACtE;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC;KACrE;IAED,sBAAsB,CAAC,KAAK,GAAG,IAAI,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,CAAa,UAAA,EAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,EAAE,EAAE,CAAC;AAC9D,QAAA,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEzC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,SAAA;AACI,aAAA;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,SAAA;KACF;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED,IAAA,YAAY,CAAC,IAAI,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;IAED,aAAa,GAAA;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,EAAE,CAAC;AAE/E,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;IAED,gBAAgB,GAAA;QACd,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC/C,YAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,cAAc,GAAG,IAAI,CAAC;AAEtB,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;AACtC,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAClC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,YAAA,OAAO,GAAG,cAAc;AACtB,kBAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5B,qBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,qBAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAA,GAAG,EAAE;AACR,kBAAE,IAAI,CAAC,YAAY,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7B,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,YAAA,OAAO,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;AAC7B,iBAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,iBAAA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACjC,OAAO,CAAC,CAAC,CAAC;AACV,iBAAA,GAAG,EAAE,CAAC;AACV,SAAA;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAED,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAEjF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;AACpF,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE;AACjE,gBAAA,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;;AAG1E,gBAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AACtD,aAAA;AACF,SAAA;KACF;AAED,IAAA,cAAc,CAAC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAClC,oBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AACnE,wBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AACxD,qBAAA;AAED,oBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AACnE,wBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;AAC7B,wBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC1E,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;YAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;AACzB,SAAA;KACF;IAED,UAAU,GAAA;QACR,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACvD,QAAA,OAAO,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;KACnE;AASD,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC3G,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACpC;IAED,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,KAAK,CAAC,YAAY,EAAE,CAAC;KACtB;AAED,IAAA,WAAW,CAAC,KAAK,EAAA;QACf,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;AAC1E,QAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE9D,QAAA,IAAI,OAAO,EAAE;YACX,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpD,SAAA;QACD,IAAI,OAAO,IAAI,OAAO,EAAE;YACtB,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,eAAe,CAAC,CAAO,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvB,YAAA,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,YAAY,CAAC,KAAoB,EAAE,CAAO,EAAA;QACxC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAClF,QAAA,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;KACrE;AAQD,IAAA,YAAY,CAAC,KAAK,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,4EAA4E,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,iDAAiD,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,yBAAyB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,mCAAmC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,uBAAuB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,qBAAqB,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,wCAAwC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,oDAAoD,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,wCAAwC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,yGAAyG,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,oDAAoD,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,4GAA4G,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,gHAAgH,CAAC,EAAE;AACp2C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,+EAA+E,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1I,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC7B,aAAA;AACF,SAAA;;;;KAKF;IAED,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAA;AAChC,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,UAAU,CAAC,CAAA,EAAG,OAAO,CAAA,MAAA,CAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,UAAU,CAAC,GAAG,OAAO,CAAA,MAAA,CAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;KAC7B;;mHA5NU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EA5DtB,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,QAAA,EAAA,8CAAA,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,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,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,EAAAV,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAjEjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,sBAAsB;AAC3C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDT,EAAA,CAAA;iBACF,CAAA;8BAUwB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU,CAAA;;AAsNvB,iBAAiB,CAAC,iBAAiB,GAAG,qBAAqB;;AC1QrD,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;IAC9D,QAAQ,GAAA;QACN,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC9D;;uHAHU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAlB1B,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAf,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAKU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;;AAUH,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;ACRzD,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;;uHAAzD,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAlB1B,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;GAeT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBApBrC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,CAAA;;AAIH,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;ACjBzD,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;;sHAAlD,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iFAFzB,4CAA4C,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAE3C,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAA4C,0CAAA,CAAA;iBACvD,CAAA;;AAED,gBAAgB,CAAC,iBAAiB,GAAG,wBAAwB;;ACgCvD,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;IAG/D,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC3D,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;wHAXU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAnC3B,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArCtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA;iBACF,CAAA;8BAEyB,gBAAgB,EAAA,CAAA;sBAAvC,SAAS;uBAAC,WAAW,CAAA;;AAYxB,kBAAkB,CAAC,iBAAiB,GAAG,0BAA0B;;ACK3D,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AArD9D,IAAA,WAAA,GAAA;;AAsDS,QAAA,IAAQ,CAAA,QAAA,GAAQ,EAAE,CAAC;KA4C3B;AA3CC,IAAA,cAAc,CAAC,QAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5C,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;AACnC,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAChC;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;QAClB,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC/C,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AACnC,aAAA;AACF,SAAA;KACF;IAED,QAAQ,GAAA;QACN,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC1C,gBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;AAC3D,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;AAC5B,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC9C,gBAAA,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;AAC5C,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,aAAa,CAAC,QAAQ,EAAA;QACpB,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC;KAC1C;;qHA5CU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAnDtB,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArDnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,IAAA,CAAA;iBACJ,CAAA;;AA+CD,eAAe,CAAC,iBAAiB,GAAG,uBAAuB;;ACrErD,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;IAC3D,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;KAC1D;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;QACnB,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;KACjD;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;AAC9B,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;KACJ;;oHApBU,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EA7BvB,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,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,EAAAN,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,oSAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA/BlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA;iBACF,CAAA;;AAuBD,cAAc,CAAC,iBAAiB,GAAG,sBAAsB;;AC1BnD,MAAO,4BAA6B,SAAQ,sBAAsB,CAAA;AA5BxE,IAAA,WAAA,GAAA;;AA6BS,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;AAChB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KA8BzB;AA5BC,IAAA,WAAW,CAAC,QAAQ,EAAA;QAClB,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACnC,SAAC,CAAC,CAAC;AACH,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;AAClC,YAAA,IAAI,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1C,aAAA;AACF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;KAC5B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;KAC/C;;0HA/BU,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EA1B7B,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,oSAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA5BxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA;iBACF,CAAA;;AAkCD,oBAAoB,CAAC,iBAAiB,GAAG,4BAA4B;;MClDxD,aAAa,CAAA;AAsExB,IAAA,WAAA,CAAmB,IAAgB,EAAA;AAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAhE3B,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC,CAAC;QAC9D,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAClD,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACtD,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAA,IAAA,GAAQ,EAAE,CAAC;AACf,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;;AAER,QAAA,IAAM,CAAA,MAAA,GAAG,OAAO,CAAC;AACjB,QAAA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;AAClB,QAAA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;AAClB,QAAA,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;;AAGlB,QAAA,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC;AACnB,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC;;AAGpB,QAAA,IAAQ,CAAA,QAAA,GAAG,OAAO,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;AACpB,QAAA,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;AACpB,QAAA,IAAS,CAAA,SAAA,GAAG,OAAO,CAAC;;AAGpB,QAAA,IAAI,CAAA,IAAA,GAAG,OAAO,CAAC;AACf,QAAA,IAAK,CAAA,KAAA,GAAG,OAAO,CAAC;AAChB,QAAA,IAAK,CAAA,KAAA,GAAG,OAAO,CAAC;AAChB,QAAA,IAAK,CAAA,KAAA,GAAG,OAAO,CAAC;;AAGhB,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AACf,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC;AACZ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC;AACf,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC;AACf,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC;AACrB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC;AACjB,QAAA,IAAA,CAAA,SAAS,GAAG,OAAO,CAAC;AACpB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC;AACb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;AAChB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,CAAC;AAErB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC;AACb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;AAChB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,CAAC;AAErB,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC;AACb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;AAChB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC;AAClB,QAAA,IAAA,CAAA,UAAU,GAAG,OAAO,CAAC;AAI3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;KAC3E;IAED,aAAa,GAAA;AACX,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,cAAc,EAAE,wBAAwB;AACxC,YAAA,8BAA8B,EAAE,kCAAkC;AAClE,YAAA,0BAA0B,EAAE,gCAAgC;AAC5D,YAAA,sBAAsB,EAAE,iCAAiC;AACzD,YAAA,8BAA8B,EAAE,kCAAkC;AAClE,YAAA,0BAA0B,EAAE,8BAA8B;SAC3D,CAAC;;AAGF,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC;KAC/C;AAED,IAAA,QAAQ,CAAC,GAAG,EAAA;AACV,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,YAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3I,YAAA,IAAI,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,YAAA,IAAI,QAAQ,GAAG;AACb,gBAAA,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;AAC3B,gBAAA,KAAK,EAAE,YAAY;aACpB,CAAC;YACF,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,YAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAA;KACF;AAED,IAAA,WAAW,CAAC,IAAS,EAAE,IAAS,EAAE,KAAU,EAAA;AAC1C,QAAA,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAC/C;AACE,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACvB,YAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK;AAC5B,SAAA,CAAC,CAAC;KACN;;IAGD,iBAAiB,CAAC,MAAM,EAAE,WAAgB,EAAA;AACxC,QAAA,IAAI,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACzD,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE;gBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC9D,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,gBAAA,IAAI,MAAM,GAAG,CAAA,EAAG,UAAU,CAAO,KAAA,CAAA,GAAG,MAAM,CAAC;AAC3C,gBAAA,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,MAAM,CAAC,CAAC;AACtD,aAAA;AACF,SAAA;KACF;;AAGD,IAAA,eAAe,CAAC,WAAW,EAAA;QACzB,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,YAAA,WAAW,CAAC,OAAO,CAAC,UAAU,IAAI,EAAA;gBAChC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;KACF;IAED,YAAY,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAiB,GAAA,EAAE,EAAE,UAAsB,GAAA,IAAI,EAAE,WAAuB,GAAA,KAAK,EAAE,UAAe,EAAE,UAAe,EAAE,YAAiB,EAAE,WAAgB,EAAA;AACrL,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnE,IAAI,MAAM,GAAG,CAAA,EAAG,UAAU,CAAA,oDAAA,EAAuD,QAAQ,CAAe,YAAA,EAAA,UAAU,CAAa,UAAA,EAAA,QAAQ,CAAW,QAAA,EAAA,MAAM,eAAe,UAAU,CAAA,oBAAA,EAAuB,WAAW,CAAA,UAAA,EAAa,UAAU,CAAA,UAAA,EAAa,UAAU,CAAA,YAAA,EAAe,YAAY,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAC;AACxT,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,IAAI,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,CAAC;AACrC,SAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,MAAM,CAAC,CAAC;KACtD;AAED,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAA,EAAG,UAAU,CAAA,uDAAA,EAA0D,QAAQ,CAAA,cAAA,EAAiB,QAAQ,CAAA,CAAE,CAAC,CAAA;KACzJ;;AAGD,IAAA,oBAAoB,CAAC,WAAW,EAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,GAAG,CAAC,GAAG,IAAG;AACT,YAAA,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;AACxD,gBAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACxC,oBAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,iBAAA;AACF,aAAA;AACH,SAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAG,EAAA,UAAU,CAAuD,oDAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAC;KAC9H;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAG,EAAA,UAAU,CAAsD,mDAAA,EAAA,QAAQ,CAAE,CAAA,CAAC,CAAC;KAC7H;AAED,IAAA,eAAe,CAAC,UAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAA,EAAG,UAAU,CAAA,qDAAA,EAAwD,UAAU,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAC,CAAC;KACtJ;IAED,iBAAiB,CAAC,UAAe,EAAE,UAAe,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,CAAG,EAAA,UAAU,CAA0D,uDAAA,EAAA,UAAU,eAAe,UAAU,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAC,CAAC;KACjL;AAED,IAAA,gBAAgB,CAAC,UAAe,EAAE,UAAe,EAAE,YAAiB,EAAA;AAClE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,UAAU,CAAA,sDAAA,EAAyD,UAAU,CAAA,YAAA,EAAe,UAAU,CAAiB,cAAA,EAAA,YAAY,aAAa,QAAQ,CAAA,CAAE,CAAC,CAAC;KAC7M;;IAGD,aAAa,CAAC,IAAI,EAAE,GAAG,EAAA;QACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACjC;;AAGD,IAAA,WAAW,CAAC,GAAG,EAAA;AACb,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,SAAA;KACF;;AAGD,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;KAC7C;AAED,IAAA,eAAe,CAAC,IAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACxB;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KAChC;;IAGD,oBAAoB,CAAC,oBAAoB,EAAE,aAAa,EAAA;QACtD,OAAO,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,IACvE,GAAG,CAAC,iBAAiB,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE;YACvD,oBAAoB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CACnD,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,MAAM,YAAY,GAA8B;YAC9C,0BAA0B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;YACjH,8BAA8B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;YAC3H,8BAA8B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;YAC3H,sBAAsB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;YACnH,cAAc,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;YACrG,0BAA0B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU;SACxH,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3C;IAED,YAAY,GAAA;AACV,QAAA,MAAM,YAAY,GAA8B;AAC9C,YAAA,0BAA0B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM;AAChG,YAAA,8BAA8B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;AACzG,YAAA,8BAA8B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;AACzG,YAAA,sBAAsB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;AACjG,YAAA,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM;AACpF,YAAA,0BAA0B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO;SAEtG,CAAC;AACF,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;KAC3C;;2GAvRU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACuEK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AA8B5D,IAAA,WAAA,CAAmB,OAAmB,EAAS,GAAsB,EAAS,IAAgB,EAAS,aAA4B,EAAA;AACjI,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AADH,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAS,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAS,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAS,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAzB5H,QAAA,IAAA,CAAA,gBAAgB,GAAgB,IAAI,WAAW,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,sBAAsB,GAAgB,IAAI,WAAW,EAAE,CAAC;AAErD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;;AAGrC,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAW,CAAA,WAAA,GAAU,EAAE,CAAC;AACxB,QAAA,IAAa,CAAA,aAAA,GAAQ,EAAE,CAAC;AACxB,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;;AAER,QAAA,IAAmB,CAAA,mBAAA,GAAuB,IAAI,CAAC;AACvD,QAAA,IAAW,CAAA,WAAA,GAAW,CAAC,CAAA;AACvB,QAAA,IAAkB,CAAA,kBAAA,GAAQ,EAAE,CAAC;AAC7B,QAAA,IAAmB,CAAA,mBAAA,GAAQ,EAAE,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAA;AACpB,QAAA,IAAmB,CAAA,mBAAA,GAAQ,EAAE,CAAC;AAC9B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AACvB,QAAA,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;KAI9B;AAED,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,EAAE;YAChG,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;YACnE,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAEtB,SAAA;KACF;AAED,IAAA,wBAAwB,CAAC,UAAqB,EAAA;QAC5C,IAAI,UAAU,KAAI,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,KAAK,CAAA,EAAE;;YAEnC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,SAAA;KACF;AAED,IAAA,cAAc,CAAC,GAAG,EAAA;QAChB,OAAO,gBAAgB,GAAG,GAAG,CAAC;KAC/B;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;AACnE,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa;AAAE,gBAAA,OAAO;YAC3B,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;AAC5E,YAAA,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC;AAAE,gBAAA,OAAO;AACnD,YAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AACxB,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,UAAU,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,IAAI,CAAC,WAAW,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,UAAU,CAAC;AAChD,aAAA;YACD,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,SAAS,IAAG,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;AAC7F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACxC,gBAAA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;oBACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtC,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;AAChE,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;;IAGD,aAAa,CAAC,IAAI,EAAE,GAAG,EAAA;QACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACjC;AAGD,IAAA,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAA;AACxC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,CAAC;QAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC9D,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,OAAO,CAAC;QACZ,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE;AACvE,YAAA,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;YACjD,OAAO,GAAG,IAAI,WAAW,CAAC;AACxB,gBAAA,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,SAAS,GAAG,WAAW;AACzC,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC5D,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;;QAE3D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;YAClE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;;QAGD,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,EAAE;YAClB,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,cAAc,EAAE,wBAAwB;AACxC,YAAA,8BAA8B,EAAE,kCAAkC;AAClE,YAAA,0BAA0B,EAAE,gCAAgC;AAC5D,YAAA,sBAAsB,EAAE,iCAAiC;AACzD,YAAA,8BAA8B,EAAE,kCAAkC;AAClE,YAAA,0BAA0B,EAAE,8BAA8B;SAC3D,CAAC;;AAEF,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC;AAO1D,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,UAAU,CAAA,kDAAA,EAAqD,UAAU,CAAe,YAAA,EAAA,YAAY,CAAa,UAAA,EAAA,UAAU,WAAW,aAAa,CAAA,YAAA,EAAe,QAAQ,CAAuB,oBAAA,EAAA,aAAa,EAAE,CAAC;QAC9N,IAAI,WAAW,IAAI,SAAS,EAAE;AAC5B,YAAA,GAAG,IAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAC;AACpC,SAAA;;QAED,IAAI,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,KAAK,SAAS,IAAI,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACxJ,YAAA,GAAG,IAAI,CAAA,qCAAA,EAAwC,oBAAoB,CAAA,CAAE,CAAC;AACvE,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;;AAC3E,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;AACnE,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC;AAC7C,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC;AACzC,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,wBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;AACd,4BAAA,OAAO,IAAI,CAAA;AACb,yBAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,qBAAA;;oBAED,IAAI,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAClE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvD,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;oBAChC,UAAU,CAAC,MAAK;;wBACd,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAC;AAClD,wBAAA,IAAI,GAAG,EAAE;4BACP,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;AACvD,4BAAA,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AAC5C,4BAAA,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACzD,yBAAA;AAAM,6BAAA;AACL,4BAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACpD,yBAAA;qBAEF,EAAE,GAAG,CAAC,CAAC;AACT,iBAAA;AAEF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;AAGD,IAAA,qBAAqB,CAAC,IAAoE,EAAA;;AAExF,QAAA,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK;gBACvB,KAAK,EAAE,IAAI,CAAC,IAAI;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,aAAA,CAAC,CAAC,CAAC;AACL,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;KACF;IAID,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AAC/C,QAAA,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AACzD,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9H,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7C,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,CAAC,CAAC;KACJ;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,SAAA;KACF;;AAID,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;KAC/B;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;AACnE,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACjE,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,KAAU,EAAA;;AAC7B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,IAAI,WAAW,CAAC;QAChB,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAG;;AAC3F,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAA,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,CAAC;gBACnD,IAAI,WAAW,IAAI,EAAE,EAAE;AACrB,oBAAA,IAAI,UAAU,GAAG;AACf,wBAAA;AACE,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;AAChE,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,UAAU;AACjB,4BAAA,OAAO,EAAE,QAAQ;AAClB,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,aAAa;AACpB,4BAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;AAChE,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,OAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACvD,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,WAAW;AAClB,4BAAA,OAAO,EAAE,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;AACvD,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,OAAO,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,OAAO,EAAE,MAAM;AAChB,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,mBAAmB;4BAC1B,OAAO,EAAE,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG;AAC/B,yBAAA;AACD,wBAAA;AACE,4BAAA,KAAK,EAAE,wBAAwB;4BAC/B,OAAO,EAAE,MAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG;AACvC,yBAAA;qBACF,CAAA;oBACD,WAAW,GAAG,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,EAAE,IAAG,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,0CAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA,EAAA,CAAC,CAAC;AACtG,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9B,wBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;AACxE,wBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;;AAEhB,4BAAA,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAClC,yBAAA;AAAM,6BAAA;;AAEL,4BAAA,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,yBAAA;AACD,wBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAClF,4BAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gCAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC;gCACzC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/D,6BAAA;AACH,yBAAC,CAAC,CAAC;AACJ,qBAAA;AACF,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE/D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAO,MAAe,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;YAC/D,IAAI,CAAC,GAAG,CAAC,CAAA;AACT,YAAA,IAAI,MAAM,EAAE;gBACV,MAAM,oBAAoB,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;AAClE,gBAAA,IAAI,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAA;AAC/G,gBAAA,MAAM,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC;AACpF,gBAAA,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,IAAG;AAC1C,wBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;wBACzC,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,4BAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAChC,yBAAA;AACD,wBAAA,CAAC,EAAE,CAAA;AACL,qBAAC,CAAC,CAAC;AACJ,iBAAA;gBAID,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE;AACrE,oBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;oBAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AACjE,oBAAA,IAAI,MAAA,IAAI,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACpC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,KAAI;4BAC/D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACzL,yBAAC,CAAC,CAAC;AACJ,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE;AACzC,wBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAChE,qBAAA;oBACD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBACjE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC/D,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,IAAG;AAC/B,wBAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAA;AAC5C,qBAAC,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;SACF,CAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;YACnE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;;AACzD,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAA,MAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,EAAE;wBAChC,IAAI,CAAA,MAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,IAAG,CAAC,EAAE;4BAC/B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,4BAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,yBAAA;AACF,qBAAA;;AAED,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;AAEvB,oBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;;;;;;;;AASxB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,sBAAsB,GAAA;;QAEpB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACjC,SAAA;KACF;IAID,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;YACnE,IAAI,CAAC,sBAAsB,CAAC,YAAY;AACrC,iBAAA,IAAI,CACH,YAAY,CAAC,IAAI,CAAC;;YAElB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5B,iBAAA,SAAS,CAAC,CAAC,WAAW,KAAI;gBACzB,IAAI,WAAW,IAAI,EAAE,EAAE;AAErB,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,oBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,oBAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAA;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5D,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,sBAAsB,CAAC,YAAY;AACrC,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC5B,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5B,aAAC,CAAC,CAAC;AACN,SAAA;;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3C,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AACtC,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAClC,YAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;AAC9C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;KAC3C;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAE,UAAe,EAAE,UAAe,EAAA;KAE7D;AAED,IAAA,mBAAmB,CAAC,QAAQ,EAAA;;QAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC;AAChD,QAAA,MAAM,mBAAmB,GAAG,YAAY,IAAI,IAAI,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,KAAK,SAAS,CAAC;AACtG,QAAA,MAAM,gBAAgB,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,SAAS,CAAC;QACpF,OAAO,mBAAmB,IAAI,gBAAgB,CAAC;KAChD;AAED,IAAA,gBAAgB,CAAC,QAAQ,EAAA;;QACvB,MAAM,OAAO,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC;AAChD,QAAA,MAAM,mBAAmB,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,SAAS,CAAC;AACvF,QAAA,OAAO,mBAAmB,CAAC;KAC5B;IAED,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACI,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,gBAAA,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;oBAC1B,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,wBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;4BACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;AACrC,gCAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACjC,6BAAA;AACF,yBAAA;AACD,wBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AAC/D,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,cAAc,CAAC,EAAO,EAAE,EAAO,EAAA;QAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC1B;AAED,IAAA,0CAA0C,CAAC,IAAI,EAAA;AAC7C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACvD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,qCAAqC,CAAC,CAAC;AACvF,YAAA,IACE,MAAM;gBACN,MAAM,CAAC,KAAK,KAAK,IAAI;gBACrB,MAAM,CAAC,KAAK,KAAK,SAAS;AAC1B,gBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAC5C;AACA,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;qHAjgBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAxExB,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ucAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FA+BU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA1EnC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ucAAA,CAAA,EAAA,CAAA;qLAsC2C,WAAW,EAAA,CAAA;sBAAtD,SAAS;gBAAC,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEd,UAAU,EAAA,CAAA;sBAArC,SAAS;uBAAC,eAAe,CAAA;;AA2f5B,eAAe,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;AAE5D;AACA,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC;AACpD,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,EAAA;IACpD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;QACzE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjE,KAAA;AACH,CAAC;;AC7kBK,MAAO,qBAAsB,SAAQ,uBAAuB,CAAA;;mHAArD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAftB,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;GAYT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAjBjC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,CAAA;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,CAAA;;AAIH,aAAa,CAAC,iBAAiB,GAAG,qBAAqB;;MCb1C,2BAA2B,CAAA;IAEtC,WAAmB,CAAA,SAAoD,EAAkC,IAAS,EAAA;AAA/F,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAA2C;AAAkC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAAK;IAEvH,QAAQ,GAAA;KACP;;AALU,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,gDAE2C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAFrF,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,kECRxC,wjBASM,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDDO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,wjBAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,CAAA;;;8BAMoC,MAAM;+BAAC,eAAe,CAAA;;;;ME8BrF,sBAAsB,CAAA;IA2EjC,WACS,CAAA,YAAkD,EAChC,IAAS,EAC1B,EAAe,EACf,MAAiB,EACjB,YAA2B,EAAA;;AAJ5B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAsC;AAEjD,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;AACf,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AACjB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAe;AA9ErC,QAAA,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAa,EAAE,CAAC;AAC7B,QAAA,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;AAC5B,QAAA,IAAmB,CAAA,mBAAA,GAAa,EAAE,CAAC;AACnC,QAAA,IAAmB,CAAA,mBAAA,GAAa,EAAE,CAAC;AACnC,QAAA,IAAqB,CAAA,qBAAA,GAAa,EAAE,CAAC;AACrC,QAAA,IAAoB,CAAA,oBAAA,GAAa,EAAE,CAAC;AACpC,QAAA,IAAkB,CAAA,kBAAA,GAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACnF,IAAsB,CAAA,sBAAA,GAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACnJ,QAAA,IAAA,CAAA,YAAY,GAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAY,CAAA,YAAA,GAAc,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,kBAAkB,EAAW,CAAC;QAC/C,IAAS,CAAA,SAAA,GAAG,IAAI,cAAc,CAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAA,CAAA,kBAAkB,GAAG,IAAI,kBAAkB,CAAU,EAAE,CAAC,CAAC;AACzD,QAAA,IAAgB,CAAA,gBAAA,GAAQ,IAAI,CAAC;AAC7B,QAAA,IAAmB,CAAA,mBAAA,GAAQ,IAAI,CAAC;AAChC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAoB,CAAA,oBAAA,GAAY,IAAI,CAAC;AACrC,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AACzB,QAAA,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;AAErB,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,CAAC;AAEvB,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAC1B,QAAA,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;AACvB,QAAA,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;AACtB,QAAA,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;AACvC,QAAA,IAAW,CAAA,WAAA,GAAW,iBAAiB,CAAC;AACxC,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;AAC5B,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;AAC5B,QAAA,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;AAC/B,QAAA,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;AAC/B,QAAA,IAAU,CAAA,UAAA,GAAW,+BAA+B,CAAC;AACrD,QAAA,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;AAC5B,QAAA,IAAe,CAAA,eAAA,GAAW,OAAO,CAAC;AAClC,QAAA,IAAU,CAAA,UAAA,GAAW,kBAAkB,CAAC;AACxC,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAW,YAAY,CAAC;AAChC,QAAA,IAAS,CAAA,SAAA,GAAW,kBAAkB,CAAC;AACvC,QAAA,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;AAC7B,QAAA,IAAY,CAAA,YAAA,GAAW,cAAc,CAAC;AACtC,QAAA,IAAa,CAAA,aAAA,GAAW,UAAU,CAAC;AACnC,QAAA,IAAa,CAAA,aAAA,GAAW,eAAe,CAAC;AACxC,QAAA,IAAgB,CAAA,gBAAA,GAAW,cAAc,CAAC;AAC1C,QAAA,IAAc,CAAA,cAAA,GAAW,WAAW,CAAC;AACrC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAS5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;QAC5D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAU,IAAI,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,YAAY,CAAC;AAC7D,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,KAAI,kBAAkB,CAAC;AACrE,QAAA,IAAI,CAAC,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,KAAI,OAAO,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAY,KAAI,cAAc,CAAC;AACvE,QAAA,IAAI,CAAC,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,UAAU,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,eAAe,CAAC;AAC1E,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,gBAAgB,KAAI,cAAc,CAAC;AAC/E,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,cAAc,KAAI,WAAW,CAAC;QACxE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,SAAA;KACF;AAED,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC;KAC3F;IAED,mBAAmB,GAAA;QACjB,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAc,CAAC;QAC7E,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC7D,OAAO;AACR,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;;YACxC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvC,gBAAA,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AAChG,gBAAA,IAAI,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,KAAI,EAAE,CAAC;gBAC3B,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACvD,gBAAA,QAAQ,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,KAAI,EAAE,CAAC;AACnC,gBAAA,WAAW,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,KAAI,EAAE,CAAC;AACzC,gBAAA,KAAK,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC;gBAC7B,iBAAiB,EAAE,CAAC,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,iBAAiB,KAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC/F,gBAAA,iBAAiB,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,KAAI,EAAE,CAAC;AACrD,gBAAA,iBAAiB,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,KAAI,EAAE,CAAC;AACtD,aAAA,CAAC,CAAC,CAAC;AACN,SAAC,CAAC,CAAC;AAEH,QAAA,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;;AAC/C,YAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;AACzF,SAAC,CAAC,CAAC;AAGH,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,qBAAqB,GAAA;;;AAEnB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAA,EAAE;YACvH,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,eAAe,IAAG;gBAClD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC;gBACjG,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;AAC/C,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7D,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC7C,SAAA;KACF;IAED,eAAe,GAAA;KACd;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACxB,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAChD,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,iBAAiB,EAAE,CAAC,EAAE,CAAC;YACvB,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACpC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY;aACzC,IAAI,CACH,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IACP,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAC3C,CAAC,SAAS,CAAC,EAAE,IAAG;AACf,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY;aACzC,IAAI,CACH,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACtD,CAAC,SAAS,CAAC,EAAE,IAAG;AACf,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY;aACzC,IAAI,CACH,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACtD,CAAC,SAAS,CAAC,EAAE,IAAG;AACf,YAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;QACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,YAAY;aACzC,IAAI,CACH,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACtD,CAAC,SAAS,CAAC,EAAE,IAAG;AACf,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;KACN;IAED,oBAAoB,GAAA;;AAClB,QAAA,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,0CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE,CAAC;AACxE,QAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE,MAAM,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,CAAC,EAAE;AAC1G,YAAA,IAAI,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,EAAE,CAAC;;YAEpE,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,MAAM,IAAG,GAAG,EAAE;gBAC7B,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AACvD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;AACxB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACjE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,UAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AACjE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;AACxB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACjE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,CAAC,UAAe,EAAE,UAAe,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC/E,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;AACxB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACnC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACnE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,UAAe,EAAE,UAAe,EAAE,YAAiB,EAAA;AAChE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC5F,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;AACxB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAClE,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAGD,cAAc,CAAC,KAAa,EAAE,GAAW,EAAA;QACvC,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,WAAW,EAAE,GAAG,KAAK,CAAC;AAC7E,QAAA,IAAI,IAAc,CAAC;;AAGnB,QAAA,QAAQ,GAAG;AACT,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC1B,MAAM;AACR,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBACzB,MAAM;AACR,YAAA;gBACE,IAAI,GAAG,EAAE,CAAC;AACb,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,MAAM,CAAC,MAAM,IAAG,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,MAAM,CAAC,MAAM,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAAG,CAAA,QAAQ,CAAC,WAAW,CAAC,CAAA,EAAA,CAAC,CAAC;AACpF,SAAA;KACF;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,EAAE;AACJ,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,iBAAA;AACF,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7B,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,aAAa,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5C,OAAO,WAAW,KAAK,OAAO,CAAC;KAChC;IAED,eAAe,GAAA;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5C,QAAA,OAAO,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC;KACjD;IAED,YAAY,GAAA;QACV,IAAI,CAAC,aAAa,EAAE;AAClB,cAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;cACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED,IAAA,eAAe,CAAC,GAAY,EAAA;;QAE1B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/F,QAAA,IAAI,eAAe,EAAE;;AAEnB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAE/B;;AAID,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAc,CAAC;KACvD;IAED,sBAAsB,GAAA;;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;;AAE1C,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACnF,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAElE,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5D,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACpD,qBAAqB,CAAC,KAAK,EAAE,CAAC;AAC9B,YAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,0CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;;gBACnD,IAAI,EAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,EAAE;oBACnB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC1E,OAAO;AACR,iBAAA;AACD,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,oBAAA,KAAK,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AAChG,oBAAA,IAAI,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,IAAI,KAAI,EAAE,CAAC;oBAC3B,QAAQ,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AACjF,oBAAA,QAAQ,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,QAAQ,KAAI,EAAE,CAAC;AACnC,oBAAA,WAAW,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,WAAW,KAAI,EAAE,CAAC;AACzC,oBAAA,KAAK,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC;oBAC7B,iBAAiB,EAAE,CAAC,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,iBAAiB,KAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC/F,oBAAA,iBAAiB,EAAE,CAAC,CAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,KAAI,EAAE,CAAC;AACrD,oBAAA,iBAAiB,EAAE,CAAC,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,iBAAiB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AACtD,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,gBAAgB,EAAE;AACpB,oBAAA,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,CAAC,KAAK,CAAC,mDAAmD,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;AAC5E,iBAAA;AACH,aAAC,CAAC,CAAC;YACH,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;gBACxD,IAAI,OAAO,YAAY,SAAS,EAAE;oBAChC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1C,oBAAA,IAAI,YAAY,EAAE;AAChB,wBAAA,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;AACtE,qBAAA;AAAM,yBAAA;AACL,wBAAA,OAAO,CAAC,KAAK,CAAC,kDAAkD,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC;AAC3E,qBAAA;AACF,iBAAA;AAAM,qBAAA;oBACL,OAAO,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,KAAK,CAAG,CAAA,CAAA,EAAE,OAAO,CAAC,CAAC;AACtE,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/E,SAAA;KACF;IAGD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;KACpC;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;KACvC;IAED,gBAAgB,CAAC,KAAU,EAAE,QAAgB,EAAA;;AAC3C,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC7D,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACvC,SAAA;AAAM,aAAA;YACL,aAAa,GAAG,KAAK,CAAC;AACvB,SAAA;QACD,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtC,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;gBAC1C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;gBAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;gBAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;gBAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAE/C,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;QACD,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;gBACzD,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;gBAC1C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACvD,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;gBAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAE/C,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;QACD,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC9E,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;AAC1C,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAE/C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;QACD,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;AAED,IAAA,WAAW,CAAC,IAAa,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACzD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACzD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE;YACpF,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;;AAC1J,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACrC,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,CAAC;AAC7C,gBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;gBACtC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAA;;AAEjD,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAG;oBACrB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AACrF,oBAAA,IAAI,eAAe,EAAE;wBACnB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;wBACxC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/B,qBAAA;AACH,iBAAC,CAAC,CAAC;;gBAGH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE;;AAE3C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC;AACpE,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,iBAAA;AAED,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,UAAU,CAAC,MAAK;oBACd,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;oBACjD,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,IAAI,IAAI,EAAE;AAC5E,wBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAC3F,qBAAA;iBACF,EAAE,GAAG,CAAC,CAAC;gBACR,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,SAAS,CAAC,KAAY,EAAE,OAAgB,EAAA;QACtC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,+CAA+C,CAAC;QAC9D,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC5E,OAAO,GAAG,qCAAqC,CAAC;gBAChD,UAAU,GAAG,KAAK,CAAC;AACpB,aAAA;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;AAC9D,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE;AACrD,aAAA,CAAC,CAAC;YACH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AACzC,gBAAA,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,oBAAA,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;AACpD,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACjC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAc,CAAC;oBAC7E,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChH,IAAI,YAAY,IAAI,CAAC,EAAE;AACrB,wBAAA,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC9C,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QACzE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;AAC1F,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;gBACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,aAAA;AACF,SAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;KAClD;AAED,IAAA,kBAAkB,CAAC,GAAG,EAAA;;AAEpB,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAChG,aAAA,MAAM,CAAC;KACX;;AAGD,IAAA,SAAS,CAAC,MAAM,EAAA;QACd,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;KAClC;IAED,gBAAgB,CAAC,KAAU,EAAE,KAAa,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;;AAG7B,QAAA,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAGhC,QAAA,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;YAClC,eAAe,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,SAAA;;AAEI,aAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC1B,eAAe,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,SAAA;;AAEI,aAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,SAAA;KACF;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;KACtC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;AAED,IAAA,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAY,EAAA;;QACtD,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,eAAe,EAAE,CAAC;AACzB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1C,SAAA;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1C,SAAA;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1C,SAAA;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1C,SAAA;QACD,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,aAAa,CAAC,KAAY,EAAE,QAAgB,EAAA;AAC1C,QAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,UAAU,EAAE;;AAEf,YAAA,IAAI,CAAC,UAAU,CAAC,CAAgB,aAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpF,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AAC/B,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3B,YAAA,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3B,YAAA,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3B,YAAA,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3B,YAAA,SAAS,OAAO,CAAC,CAAC;AACnB,SAAA;KACF;IAED,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KACtE;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACzD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACzD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC/D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE;gBACpF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO;AACR,aAAA;AACF,SAAA;KACF;IAED,UAAU,GAAA;;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;QAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;QAC3C,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,gBAAgB,CAAC,MAAc,EAAE,UAAkB,EAAE,UAAkB,EAAE,YAAoB,EAAE,WAAmB,EAAA;AAChH,QAAA,OAAO,MAAM,KAAK,EAAE,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,CAAC;KACzG;;AAGD,IAAA,mBAAmB,CAAC,KAAU,EAAE,KAAa,EAAE,WAAmB,EAAA;QAChE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;;AAGrB,QAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;AAExB,QAAA,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE;YAClC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;;YAE5D,OAAO;AACR,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;KACF;IAGD,aAAa,CAAC,KAAoB,EAAE,WAAmB,EAAA;AACrD,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AACtB,QAAA,MAAM,YAAY,GAAI,KAAK,CAAC,MAA2B,CAAC;AACxD,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;;YAE5D,OAAO;AACR,SAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACnE,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;KACF;IAED,WAAW,CAAC,KAAqB,EAAE,WAAmB,EAAA;;AACpD,QAAA,MAAM,SAAS,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,CAAC,MAAM,CAAC,KAAI,EAAE,CAAC;AAC7D,QAAA,IAAI,WAAW,KAAK,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;;YAE5D,OAAO;AACR,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;KACF;IAED,2BAA2B,GAAA;QACzB,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAC1C,qBAAqB,CACP,CAAC;AAEjB,QAAA,MAAM,aAAa,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAb,aAAa,CAAE,aAAa,CAChD,WAAW,CACG,CAAC;AAEjB,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa;YAAE,OAAO;QAE7C,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAgB,CAAC;AAC5E,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;QACtD,YAAY,CAAC,cAAc,CAAC;AAC1B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,QAAQ;AAChB,SAAA,CAAC,CAAC;QAEH,UAAU,CAAC,MAAK;YACd,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CACtC,yBAAyB,CACX,CAAC;AACjB,YAAA,KAAK,aAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,KAAK,EAAE,CAAC;SAChB,EAAE,GAAG,CAAC,CAAC;KACT;;AAj1BU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,gDA6EvB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGA7Ed,sBAAsB,EAAA,QAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxCnC,u/uBA6TqB,EDlSP,MAAA,EAAA,CAAA,wuKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,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,aAAA,EAAA,QAAA,EAAA,8CAAA,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,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,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,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,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,KAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,8BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,WAAW,EAAE;AACnB,YAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzE,YAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,UAAU,CAAC,mBAAmB,EAAE;gBAC9B,OAAO,CAAC,gBAAgB,CAAC;aAC1B,CAAC;YACF,UAAU,CAAC,mBAAmB,EAAE;gBAC9B,OAAO,CAAC,eAAe,CAAC;aACzB,CAAC;SACH,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGvB,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;AACnB,4BAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzE,4BAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;4BACpD,UAAU,CAAC,mBAAmB,EAAE;gCAC9B,OAAO,CAAC,gBAAgB,CAAC;6BAC1B,CAAC;4BACF,UAAU,CAAC,mBAAmB,EAAE;gCAC9B,OAAO,CAAC,eAAe,CAAC;6BACzB,CAAC;yBACH,CAAC;qBACH,EAAA,QAAA,EAAA,u/uBAAA,EAAA,MAAA,EAAA,CAAA,wuKAAA,CAAA,EAAA,CAAA;;;8BA+EE,MAAM;+BAAC,eAAe,CAAA;;yBAzCQ,kBAAkB,EAAA,CAAA;sBAAlD,SAAS;uBAAC,oBAAoB,CAAA;;;AE9DjC,MAAM,YAAY,GAAc,EAC/B,CAAC;AAuKI,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;AAEpE,IAAA,WAAA,CAAmB,OAAmB,EAAS,GAAsB,EAAU,MAAiB,EAAS,aAA4B,EAAA;AACnI,QAAA,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AADH,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAAS,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAU,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AAAS,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAYrI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACtC,QAAA,IAAa,CAAA,aAAA,GAAG,YAAY,CAAC;QAC7B,IAAA,CAAA,mBAAmB,GAAa,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAClI,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AACtC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;AACvC,QAAA,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AACrC,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AACpC,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AACpC,QAAA,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AACrC,QAAA,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AACrC,QAAA,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;AACvC,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;AAE7B,QAAA,IAAyB,CAAA,yBAAA,GAAY,KAAK,CAAC;AAC3C,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;AAC/B,QAAA,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;AAC7B,QAAA,IAAQ,CAAA,QAAA,GAAW,YAAY,CAAC;AAChC,QAAA,IAAS,CAAA,SAAA,GAAW,kBAAkB,CAAC;AACvC,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAC1B,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAa,CAAA,aAAA,GAAW,UAAU,CAAC;AACnC,QAAA,IAAY,CAAA,YAAA,GAAW,cAAc,CAAC;AACtC,QAAA,IAAa,CAAA,aAAA,GAAW,eAAe,CAAC;AACxC,QAAA,IAAgB,CAAA,gBAAA,GAAW,cAAc,CAAC;AAC1C,QAAA,IAAc,CAAA,cAAA,GAAW,WAAW,CAAC;AACrC,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AApD5B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE/D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;KACF;AA+CD,IAAA,cAAc,CAAC,MAAM,EAAA;AACnB,QAAA,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC;KACnC;IAID,YAAY,CAAC,oBAAoB,EAAE,aAAa,EAAA;QAC9C,IAAI,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,IACpE,GAAG,CAAC,iBAAiB,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE;;YAE1D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,IAC5D,GAAG,CAAC,iBAAiB,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CACxD,CAAC;;AAEF,YAAA,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACX;;;AAOD,IAAA,WAAW,CAAC,QAAa,EAAA;;AACvB,QAAA,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;AACvD,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;AAC7F,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAClG,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;AAC1G,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;AAC1G,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAC9G,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;AAChI,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5F,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5H,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5H,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5H,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,KAAK,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5H,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,KAAK,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC5I,QAAA,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAChI,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,KAAK,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACtI,QAAA,MAAM,aAAa,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9J,QAAA,MAAM,YAAY,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,KAAK,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACxJ,QAAA,MAAM,aAAa,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAC9J,QAAA,MAAM,gBAAgB,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,KAAK,OAAO,WAAW,KAAK,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,WAAW,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAChL,QAAA,MAAM,cAAc,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,KAAK,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;QACpK,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAC1G,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAA,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAc,CAAE,QAAQ,MAAK,KAAK,MAAM,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAd,cAAc,CAAE,QAAQ,MAAK,MAAM,CAAC,CAAC;AACzG,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,GAAG,CAAA,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,UAAU,0CAAE,MAAM,IAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AACzE,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAClC,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,aAAA;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC1D,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,YAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA,uBAAA,EAA0B,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC,IAAI,EAAE,CAAC;YACvF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;;AAGjE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC3C,SAAA;;QAED,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC3D,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAA;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACpC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,QAAQ,CAAC,aAAa,GAAG,CAAC,SAAS,KAAI;AACrC,YAAA,IAAI,aAAa,CAAC;AAClB,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE;AACpC,gBAAA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,aAAA;YACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;gBACxC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;AACtD,gBAAA,IACE,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;oBAChE,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EACxD;oBACA,aAAa,GAAG,SAAS,CAAC;AAC3B,iBAAA;AACH,aAAC,CAAC,CAAC;YAEH,OAAO,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC;AAC9C,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAE/D,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACvC,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;KACF;AAED,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC;KAC7F;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;YAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAClD;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC1D,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE;aAC1lC,CAAC;AACC,iBAAA,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;;AAClC,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AAC1B,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,wBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/B,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,wBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC/B,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,wBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAClC,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,wBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAChC,qBAAA;AACD,oBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC9F,YAAY,CAAC,OAAO,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;oBACrH,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC1D,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAC7E,iBAAA;AACH,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,SAAA;KAEF;AAED,IAAA,gBAAgB,CAAC,gBAAgB,EAAA;AAC/B,QAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,IAAG;AACrC,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,QAAQ,CAAA,EAAA,EACX,YAAY,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,KAAK,EACjD,CAAA,CAAA;AACH,SAAC,CAAC,CAAA;KACH;IACD,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACxB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAK,EAAA;;QACb,IAAI,OAAO,GAAG,+CAA+C,CAAC;QAC9D,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACtE,OAAO,GAAG,qCAAqC,CAAC;YAChD,UAAU,GAAG,KAAK,CAAC;AACpB,SAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;AAC9D,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE;AACrD,SAAA,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;;AACzC,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACrE,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3B,iBAAA;;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,KAAuB,EAAA;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,QAAA,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAClD;AAED,IAAA,QAAQ,CAAC,KAAgB,EAAA;AACvB,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE;YAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtE,SAAA;AACD,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACvB;;uHAtXU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EApK1B,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8JT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,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,EAAA,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,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,KAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAMU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAtKrC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8JT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wUAAA,CAAA,EAAA,CAAA;;AA8XH,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;AChiB/D,IAAK,YAMJ,CAAA;AAND,CAAA,UAAK,YAAY,EAAA;AACf,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAkB,CAAA;AAClB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANI,YAAY,KAAZ,YAAY,GAMhB,EAAA,CAAA,CAAA,CAAA;AAAA,CAAC;AAEF;AACA,MAAM,QAAQ,GAAG,UAAS,GAAG,EAAA;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAA,IAAI,GAAG,CAAC;IACR,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7B,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,GAAG,GAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAA,IAAI,GAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,CAAC;AACX,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AAEA;AACA;AACA,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAA;AAChD,IAAA,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC;AACtD,iBAAiB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAS,IAAI,EAAE,OAAO,EAAE,KAAA,GAAa,EAAE,EAAA;IAC5E,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClD,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH,CAAC,CAAC;AACF;AAEA,MAAM,wBAAwB,GAAG;AAC/B,IAAA,QAAQ,CAAE,iBAAyB,CAAC,qBAAqB,CAAC;AAC1D,IAAA,QAAQ,CAAC,CAAA;;;;;SAKF,CAAC;CACT,CAAC;AAEF,MAAM,qBAAqB,GAAG;AAC5B,IAAA,QAAQ,CAAE,iBAAyB,CAAC,kBAAkB,CAAC;AACvD,IAAA,QAAQ,CAAC,CAAA;;;;;;;;;;;;;;OAcJ,CAAC;CACP,CAAC;AAOI,MAAO,yBAA0B,SAAQ,uBAAuB,CAAA;AALtE,IAAA,WAAA,GAAA;;AAaS,QAAA,IAAO,CAAA,OAAA,GAAQ,EAAE,CAAC;AAClB,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AACb,QAAA,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AACb,QAAA,IAAS,CAAA,SAAA,GAAG,YAAY,CAAC;KA+JjC;AA7JC,IAAA,cAAc,CAAC,OAAO,EAAA;QACpB,OAAO,CAAA;;;4EAGiE,OAAO,CAAA;;;gBAGnE,CAAC;KAChB;AAEC,IAAA,QAAQ,CAAC,KAAK,EAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;AACR,SAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,EAAC,IAAI,EAAC,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;AACjD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACtC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAC3D,CAAC;AAEF,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IACE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM;AACnC,aAAC,wBAAwB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EACxF;AACA,YAAA,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;AAClC,aAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAClF;AACA,YAAA,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAC;AACxG,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACjE,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACvD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,SAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AACpH,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE;AACvE,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE;AACvE,gBAAA,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU;AACzC,gBAAA,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE;AACvE,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE;AACvE,gBAAA,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,UAAU;AACzC,gBAAA,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC,CAAC;AACJ,SAAA;QACD,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACtD,EAAE,CAAC,CAAC,CAAC;AACN,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,UAAU,GAAA;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KACpC;IAED,OAAO,CAAC,GAAG,EAAE,KAAK,EAAA;AAChB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AAExC,QAAA,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO,EAAE;YACtC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC;AAC/E,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,UAAsB,EAAE,KAAK,EAAE,KAAK,EAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,OAAO,GAAY,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;gBAChG,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE;AACzC,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACxB,gBAAA,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU;AAC9C,gBAAA,OAAO,EAAE,SAAS,OAAO,CAAC,SAAS,EAAE,IAAI,EAAA;AACvC,oBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC1B,wBAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAGC,YAAU,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACpE,qBAAA;oBACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;iBACzE;AACF,aAAA,CAAC,CAAC,CAAC;AACL,SAAA;KACF;AAED;;;;;AAKG;IACH,OAAO,CAAC,GAAG,EAAE,KAAK,EAAA;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACxC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAChD,aAAA;AACF,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;IAED,cAAc,CAAC,OAAmB,EAAE,QAAQ,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YACtC,OAAO;AACR,SAAA;AACD,QAAA,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC5C;IAED,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAA2B,KAAI;YACjE,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAe,EAAE,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzF,SAAC,CAAC,CAAC;KACJ;;uHAzKU,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,kaC1FtC,ssEAmDA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,CAAA,CAAA;4FDuCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,ssEAAA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,CAAA;8BAKV,aAAa,EAAA,CAAA;sBAAjC,SAAS;uBAAC,QAAQ,CAAA;gBACE,aAAa,EAAA,CAAA;sBAAjC,SAAS;uBAAC,QAAQ,CAAA;gBACG,WAAW,EAAA,CAAA;sBAAhC,YAAY;uBAAC,MAAM,CAAA;gBACG,KAAK,EAAA,CAAA;sBAA3B,YAAY;uBAAC,OAAO,CAAA;;AAuKvB,iBAAiB,CAAC,iBAAiB,GAAG,yBAAyB;;AE7NzD,MAAO,sBAAuB,SAAQ,uBAAuB,CAAA;AAEjE,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,QAAQ,CAAC,aAAa,GAAG,CAAC,SAAS,KAAI;AACrC,YAAA,OAAO,IAAI,CAAC,cAAc;gBACxB,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC;AACnG,gBAAA,IAAI,CAAC;AACT,SAAC,CAAC;KACH;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;QACD,MAAM,EAAC,SAAS,EAAE,aAAa,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC3D,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EACE,cAAc,EAAE,SAAS,EAAA,GACrB,aAAa,IAAI,EAAC,CAAC,aAAa,GAAG,IAAI,EAAC,EAC7C,CAAA;KACF;;oHApBU,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAjCvB,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApClC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAElB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qSAAA,CAAA,EAAA,CAAA;;AAwBH,cAAc,CAAC,iBAAiB,GAAG,sBAAsB;;ACrCnD,MAAO,uBAAwB,SAAQ,uBAAuB,CAAA;AAnBpE,IAAA,WAAA,GAAA;;AAqBS,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;KAkD5B;AAhDC,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CACd,QAAQ,CAAC,OAAO;YAChB,QAAQ,CAAC,OAAO,CAAC,kBAAkB;AACnC,YAAA,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,IAC3C,KAAK,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC3B,QAAA,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAEtD,QAAA,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAA;QAClC,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;YACjD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;AACzC,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAK;AACxB,oBAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AACrE,iBAAC,CAAC;AACJ,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;KAC1D;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC9D;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KACxB;IAED,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;gBACxE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,aAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACT,SAAA;KACF;;qHApDU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAbxB,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWkB,6BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gDAAA,EAAA,yDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEjB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAKnB,QAAA,EAAA,CAAA;;;;;;;;;;;8BAWkB,EAAA,MAAA,EAAA,CAAA,gDAAA,EAAA,yDAAA,CAAA,EAAA,CAAA;8BAGU,OAAO,EAAA,CAAA;sBAA5C,SAAS;gBAAC,IAAA,EAAA,CAAA,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAA;;AAqDtC,MAAM,CAAC,iBAAiB,GAAG,uBAAuB,CAAC;AACnD,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;;AC/ErC,MAAM2B,YAAU,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC,OAAO,CAAC;AAqCrE;AACA,MAAM,UAAU,GAAQ;AACtB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,GAAG,EAAE,YAAY;AACjB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,KAAK,EAAE,cAAc;AACrB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,OAAO,EAAE/B,iBAAe;AACxB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,MAAM;CACf,CAAC;SAEc,aAAa,GAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC1C,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,YAAA;YAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;AAClD,aAAA;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/F,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO;AACR,aAAA;AACD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC/F,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3D,YAAA,YAAY,CAAC,QAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC9C,SAAS,CAAC,SAAS,CAAC,QAAQ,IAAI,UAAU,GAAG,IAAI,EAAA;YAC/C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAA;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AAEH,QAAA,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAC9B,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;AAEe,SAAA,iBAAiB,CAAC,IAAY,EAAE,SAAc,EAAA;IAE5D,MAAM,uBAAuBgC,iBAAS,CAAA;AAAG,KAAA;IAAA,CAAC;IAC1C,MAAM,UAAU,GAAI,cAAsB,CAAC;AAE3C,IAAA,UAAU,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACzC,IAAA,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,YAAA;QAC7B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC/B,SAAA;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;AACR,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,uBAAuB,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,YAAY,CAAC,QAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnD,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC/C,UAAU,CAAC,SAAS,CAAC,QAAQ,IAAI,UAAU,GAAG,IAAI,EAAA;QAChD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,SAAA;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AACtC,KAAC,CAAC,CAAC;AAEH,IAAAD,YAAU,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAE5C;;ACtIM,MAAA,UAAU,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC,QAAQ;AAG/D,MAAA,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,QAAQ;AAC5C,MAAA,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ;AACxC,MAAA,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ;AAEhD,SAAS,YAAY,GAAA;AACjB,IAAA,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;AAC1C,IAAA,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,IAAA,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1B;;ACiCM,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;AAEtD,IAAA,WAAA,CACU,QAAkC,EAClC,EAAqB,EACtB,MAAc,EACF,MAAuB,EAAA;AAE1C,QAAA,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AALd,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0B;AAClC,QAAA,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;AACtB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AACF,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;KAG3C;IAED,kBAAkB,GAAA;AAChB,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;AACnD,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAW,eAAe,CAAA,EAAA,EAAE,cAAc,EAAEE,KAAG,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAA,CAAA;KAC3F;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1C,QAAA,MAAM,KAAK,GAAG;YACZ,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC;AACF,QAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;QAC7D,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1D,aAAA,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5C,KAAK,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CACjC,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;6GApCU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAf,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACgB,gBAAgB,EAhBhD,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;GAaT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzC3B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAyBZ,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA,CAAA;;;8BAQE,QAAQ;;yBALkD,mBAAmB,EAAA,CAAA;sBAA/E,SAAS;uBAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAC,CAAA;;;MCiNhD,4BAA4B,CAAA;AACvC,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,EAAE,CAAC;KAChB;;0HAHU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iBA9IrC,+BAA+B;QAC/B,eAAe;QACf,uBAAuB;QACvB,0BAA0B;QAC1B,yBAAyB;QACzB,oBAAoB;QACpB,sBAAsB;QACtB,4BAA4B;QAC5B,uBAAuB;QACvB,yBAAyB;QACzB,oBAAoB;QACpB,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,yBAAyB;QACzB,wBAAwB;QACxB,0BAA0B;QAC1B,yBAAyB;QACzB,yBAAyB;QACzB,sBAAsB;QACtB,yBAAyB;QACzB,yBAAyB;QACzB,wBAAwB;QACxB,0BAA0B;QAC1B,uBAAuB;QACvB,4BAA4B;QAC5B,sBAAsB;QACtB,uBAAuB;QACvB,qBAAqB;QACrB,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,uBAAuB;QACvB,iBAAiB;QACjB,uBAAuB;QACvB,qBAAqB;QACrB,yBAAyB;QACzB,wBAAwB;QACxB,cAAc;QACd,aAAa;QACb,2BAA2B;AAC3B,QAAA,sBAAsB,aAGtB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,gBAAgB;QAChB,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,eAAe;QACf,wBAAwB;QACxB,eAAe;QACf,gBAAgB;AAEhB,QAAA,qBAAqB,aAGrB,qBAAqB;QACrB,+BAA+B;QAC/B,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,wBAAwB;QACxB,eAAe;QACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAuCP,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAlGrC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,gBAAgB;QAChB,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,eAAe;QACf,wBAAwB;QACxB,eAAe;QACf,gBAAgB;AAEhB,QAAA,qBAAqB,EAGrB,qBAAqB;QAGrB,cAAc;QACd,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,aAAa;QACb,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,aAAa;QACb,aAAa;QACb,cAAc;QACd,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,wBAAwB;QACxB,eAAe;QACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;4FAuCP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAhJxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,+BAA+B;wBAC/B,eAAe;wBACf,uBAAuB;wBACvB,0BAA0B;wBAC1B,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,4BAA4B;wBAC5B,uBAAuB;wBACvB,yBAAyB;wBACzB,oBAAoB;wBACpB,uBAAuB;wBACvB,qBAAqB;wBACrB,qBAAqB;wBACrB,yBAAyB;wBACzB,wBAAwB;wBACxB,0BAA0B;wBAC1B,yBAAyB;wBACzB,yBAAyB;wBACzB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;wBACzB,wBAAwB;wBACxB,0BAA0B;wBAC1B,uBAAuB;wBACvB,4BAA4B;wBAC5B,sBAAsB;wBACtB,uBAAuB;wBACvB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,qBAAqB;wBACrB,uBAAuB;wBACvB,iBAAiB;wBACjB,uBAAuB;wBACvB,qBAAqB;wBACrB,yBAAyB;wBACzB,wBAAwB;wBACxB,cAAc;wBACd,aAAa;wBACb,2BAA2B;wBAC3B,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,kBAAkB;wBAClB,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnB,wBAAwB;wBACxB,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,wBAAwB;wBACxB,eAAe;wBACf,gBAAgB;wBAEhB,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,+BAA+B;wBAC/B,eAAe;wBACf,cAAc;wBACd,kBAAkB;wBAClB,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,kBAAkB;wBAClB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnB,wBAAwB;wBACxB,gBAAgB;wBAChB,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,wBAAwB;wBACxB,eAAe;wBACf,gBAAgB;AACjB,qBAAA;AACD,oBAAA,eAAe,EAAE;wBACf,uBAAuB;wBACvB,0BAA0B;wBAC1B,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,4BAA4B;wBAC5B,uBAAuB;wBACvB,yBAAyB;wBACzB,oBAAoB;wBACpB,uBAAuB;wBACvB,qBAAqB;wBACrB,qBAAqB;wBACrB,yBAAyB;wBACzB,wBAAwB;wBACxB,0BAA0B;wBAC1B,yBAAyB;wBACzB,yBAAyB;wBACzB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;wBACzB,wBAAwB;wBACxB,0BAA0B;wBAC1B,uBAAuB;wBACvB,4BAA4B;wBAC5B,sBAAsB;wBACtB,uBAAuB;wBACvB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB,qBAAqB;wBACrB,iBAAiB;wBACjB,uBAAuB;wBACvB,qBAAqB;wBACrB,uBAAuB;AACxB,qBAAA;iBACF,CAAA;;;AC9PD;;AAEG;;ACFH;;AAEG;;;;"}