{"version":3,"file":"kuro-samurai-ngx-samurai-button.mjs","sources":["../../../projects/button/src/lib/button.directive.ts","../../../projects/button/src/lib/config.class.ts","../../../projects/button/src/public-api.ts","../../../projects/button/src/kuro-samurai-ngx-samurai-button.ts"],"sourcesContent":["import {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  HostListener,\n  Inject,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { SamuraiButtonConfig } from './config.class';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n  selector: '[samuraiButton]',\n  standalone: true,\n})\nexport class SamuraiButtonDirective implements OnInit, AfterContentInit {\n  constructor(\n    @Inject(DOCUMENT) private document: Document,\n    private element: ElementRef<HTMLButtonElement>\n  ) {}\n\n  private text: string = '';\n\n  @HostListener('mouseenter') setStyle(): void {\n    switch (this.hoverStyle) {\n      case 'BOTH_SIDES':\n        this.element.nativeElement.style.boxShadow = `inset -10.5em 0 0 0 ${this.hoverColor}, inset 10.5em 0 0 0 ${this.hoverColor}`;\n        break;\n\n      case 'GLOW':\n        this.element.nativeElement.style.boxShadow = `0 0 5px ${this.backgroundColor}, 0 0 25px ${this.backgroundColor}`;\n        this.element.nativeElement.style.transform = `scale(110%)`;\n        break;\n\n      case 'NEON_BORDER':\n        this.element.nativeElement.style.filter = `drop-shadow(0 0 12px ${this.borderColor})`;\n        break;\n\n      case 'FILL':\n        this.element.nativeElement.style.color = this.hoverColor;\n        this.element.nativeElement.style.backgroundColor = this.borderColor;\n        break;\n    }\n  }\n\n  @HostListener('mouseleave') removeStyle(): void {\n    switch (this.hoverStyle) {\n      case 'BOTH_SIDES':\n        this.element.nativeElement.style.boxShadow = ``;\n        break;\n\n      case 'GLOW':\n        this.element.nativeElement.style.boxShadow = ``;\n        this.element.nativeElement.style.transform = `scale(100%)`;\n        break;\n\n      case 'NEON_BORDER':\n        this.element.nativeElement.style.filter = '';\n        break;\n\n      case 'FILL':\n        this.element.nativeElement.style.color = this.color;\n        this.element.nativeElement.style.backgroundColor = `transparent`;\n        break;\n    }\n  }\n\n  @HostListener('click') @Input() btnAction = () =>\n    console.log('Button Clicked!');\n\n  @Input() preStyled?:\n    | 'PRIMARY_TEXT'\n    | 'ACCENT_TEXT'\n    | 'SUCCESS_TEXT'\n    | 'WARNING_TEXT'\n    | 'DANGER_TEXT'\n    | 'PRIMARY_ICON'\n    | 'ACCENT_ICON'\n    | 'SUCCESS_ICON'\n    | 'WARNING_ICON'\n    | 'DANGER_ICON';\n\n  @Input() config?: SamuraiButtonConfig;\n\n  @Input() variation: 'FILLED' | 'OUTLINED' | 'CONTENT_ONLY' = 'FILLED';\n  @Input() content: 'TEXT' | 'TEXT_ICON' | 'ICON' = 'TEXT';\n  @Input() hoverStyle:\n    | 'LEFT_TO_RIGHT'\n    | 'RIGHT_TO_LEFT'\n    | 'BOTH_SIDES'\n    | 'SHUTTER_UP'\n    | 'SHUTTER_DOWN'\n    | 'GLOW'\n    | 'NEON_BORDER'\n    | 'FILL'\n    | 'NONE' = 'NONE';\n  @Input() borderRadius: 'NORMAL' | 'ROUND' | 'SHARP' = 'NORMAL';\n  @Input() state: 'ENABLED' | 'PENDING' | 'DONE' | 'FAILED' | 'DISABLED' =\n    'ENABLED'; // ! not all states implemented yet\n\n  @Input() icon: string = 'favorite';\n  @Input() iconStyle: 'filled' | 'outlined' | 'round' | 'sharp' | 'two-tone' =\n    'round';\n\n  @Input() color: string = '#000000';\n  @Input() backgroundColor: string = '#ffffff';\n  @Input() hoverColor: string = '#0000aa';\n  @Input() borderColor: string = '#000000';\n  @Input() effectSpeed: 'FAST' | 'NORMAL' | 'SLOW' = 'NORMAL'; // ! not implemented yet\n  @Input() colorDetection: boolean = true;\n  @Input() hoverColorDetection: boolean = true;\n  @Input() i18n: boolean = true;\n\n  private backgroundColorHSL?: { h: number; s: number; l: number };\n\n  private setContent(): void {\n    let beforeElement = this.document.createElement('span');\n    let disabledElement = this.document.createElement('span');\n\n    this.element.nativeElement.innerText = '';\n    this.element.nativeElement.setAttribute('title', this.text);\n    this.element.nativeElement.style.color = this.color;\n    this.element.nativeElement.style.backgroundColor = this.backgroundColor;\n    this.element.nativeElement.style.borderColor = this.borderColor;\n    this.element.nativeElement.style.display = 'flex';\n    this.element.nativeElement.style.position = 'relative';\n    this.element.nativeElement.style.border = '2px solid';\n    this.element.nativeElement.style.transition = 'all 0.2s ease-in';\n    this.element.nativeElement.style.overflow = 'hidden';\n    this.element.nativeElement.style.justifyContent = 'center';\n    this.element.nativeElement.style.alignItems = 'center';\n    this.element.nativeElement.classList.add('samurai-button');\n    // this.element.nativeElement.style.padding = '4px 16px';\n    // this.element.nativeElement.style.width = 'fit-content';\n    // this.element.nativeElement.style.height = 'fit-content';\n\n    if (this.text && (this.content == 'TEXT' || this.content == 'TEXT_ICON')) {\n      let element = this.document.createElement('p');\n      let text = this.document.createTextNode(this.text);\n\n      element.appendChild(text);\n\n      element.style.color = 'inherit';\n      element.style.fontSize = 'inherit';\n      element.style.zIndex = '2';\n\n      this.element.nativeElement.appendChild(element);\n    }\n\n    if (this.content == 'TEXT_ICON' || this.content == 'ICON') {\n      let element = this.document.createElement('span');\n      let icon = this.document.createTextNode(this.icon);\n\n      element.appendChild(icon);\n\n      element.style.color = 'inherit';\n      element.style.fontSize = 'inherit';\n      element.classList.add(\n        `material-icons${\n          this.iconStyle == 'filled' ? '' : '-' + this.iconStyle\n        }`\n      );\n\n      if (this.content == 'TEXT_ICON') element.style.marginRight = '8px';\n\n      this.element.nativeElement.prepend(element);\n    }\n\n    disabledElement.classList.add('samurai-disabled');\n\n    if (this.state == 'DISABLED') disabledElement.style.display = 'inline';\n    else disabledElement.style.display = 'none';\n\n    this.element.nativeElement.append(disabledElement);\n\n    beforeElement.classList.add('samurai-before');\n    beforeElement.style.color = this.hoverColor;\n    beforeElement.style.backgroundColor = this.hoverColor;\n    beforeElement.style.position = 'absolute';\n    beforeElement.style.zIndex = '1';\n\n    this.element.nativeElement.prepend(beforeElement);\n  }\n\n  private getClass(): any {\n    switch (this.hoverStyle) {\n      case 'LEFT_TO_RIGHT':\n        return 'samurai-left-to-right';\n\n      case 'SHUTTER_UP':\n        return 'samurai-shutter-up';\n\n      case 'SHUTTER_DOWN':\n        return 'samurai-shutter-down';\n    }\n  }\n\n  ngOnInit(): void {\n    if (this.preStyled)\n      switch (this.preStyled) {\n        case 'PRIMARY_TEXT':\n          this.backgroundColor = '#64B5F6';\n          this.hoverStyle = 'LEFT_TO_RIGHT';\n          this.hoverColor = '#2196F3';\n          break;\n\n        case 'ACCENT_TEXT':\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#F6A564';\n          this.borderColor = '#F6A564';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n\n        case 'SUCCESS_TEXT':\n          this.backgroundColor = '#81C784';\n          this.hoverStyle = 'LEFT_TO_RIGHT';\n          this.hoverColor = '#4CAF50';\n          break;\n\n        case 'WARNING_TEXT':\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#FFD54F';\n          this.borderColor = '#FFD54F';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n\n        case 'DANGER_TEXT':\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#EF5350';\n          this.borderColor = '#EF5350';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n\n        case 'PRIMARY_ICON':\n          this.content = 'ICON';\n          this.backgroundColor = '#64B5F6';\n          this.hoverColor = '#2196F3';\n          this.hoverStyle = 'GLOW';\n          break;\n\n        case 'ACCENT_ICON':\n          this.content = 'ICON';\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#F6A564';\n          this.borderColor = '#F6A564';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n\n        case 'SUCCESS_ICON':\n          this.content = 'ICON';\n          this.backgroundColor = '#81C784';\n          this.hoverColor = '#4CAF50';\n          this.hoverStyle = 'GLOW';\n          break;\n\n        case 'WARNING_ICON':\n          this.content = 'ICON';\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#FFD54F';\n          this.borderColor = '#FFD54F';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n\n        case 'DANGER_ICON':\n          this.content = 'ICON';\n          this.variation = 'OUTLINED';\n          this.backgroundColor = 'transparent';\n          this.color = '#EF5350';\n          this.borderColor = '#EF5350';\n          this.hoverStyle = 'FILL';\n          this.hoverColor = '#000';\n          break;\n      }\n\n    if (this.config)\n      for (const key in this.config)\n        switch (key) {\n          case 'variation':\n            this.variation = this.config[key];\n            break;\n\n          case 'content':\n            this.content = this.config[key];\n            break;\n\n          case 'hoverStyle':\n            this.hoverStyle = this.config[key];\n            break;\n\n          case 'borderRadius':\n            this.borderRadius = this.config[key];\n            break;\n\n          case 'state':\n            this.state = this.config[key];\n            break;\n\n          case 'colorDetection':\n            this.colorDetection = this.config[key];\n            break;\n\n          case 'i18n':\n            this.i18n = this.config[key];\n            break;\n\n          case 'icon':\n            this.icon = this.config[key];\n            break;\n\n          case 'iconStyle':\n            this.iconStyle = this.config[key];\n            break;\n\n          case 'color':\n            this.color = this.config[key];\n            break;\n\n          case 'backgroundColor':\n            this.backgroundColor = this.config[key];\n            break;\n\n          case 'hoverColor':\n            this.hoverColor = this.config[key];\n            break;\n        }\n\n    if (\n      this.hoverColorDetection &&\n      this.backgroundColor?.length == 7 &&\n      (this.hoverStyle == 'LEFT_TO_RIGHT' ||\n        this.hoverStyle == 'RIGHT_TO_LEFT' ||\n        this.hoverStyle == 'BOTH_SIDES' ||\n        this.hoverStyle == 'SHUTTER_DOWN' ||\n        this.hoverStyle == 'SHUTTER_UP')\n    ) {\n      let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n        this.backgroundColor\n      );\n\n      if (result) {\n        let r = parseInt(result[1], 16) / 255;\n        let g = parseInt(result[2], 16) / 255;\n        let b = parseInt(result[3], 16) / 255;\n\n        let max = Math.max(r, g, b);\n        let min = Math.min(r, g, b);\n\n        let h!: number;\n        let s: number;\n        let l = (max + min) / 2;\n\n        if (max == min) h = s = 0; // ? achromatic\n        else {\n          let d = max - min;\n\n          s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n          switch (max) {\n            case r:\n              h = (g - b) / d + (g < b ? 6 : 0);\n              break;\n\n            case g:\n              h = (b - r) / d + 2;\n              break;\n\n            case b:\n              h = (r - g) / d + 4;\n              break;\n          }\n\n          h /= 6;\n        }\n\n        h = Math.round(360 * h);\n        s = s * 100;\n        s = Math.round(s);\n        l = l * 100;\n        l = Math.round(l);\n\n        this.backgroundColorHSL = { h, s, l };\n        this.backgroundColor = `hsl(${h}, ${s}%, ${l}%)`;\n        this.hoverColor = `hsl(${h}, ${l - 20 >= 50 ? s : s + 9}%, ${l - 10}%)`;\n      }\n    }\n\n    if (\n      this.colorDetection &&\n      this.backgroundColor?.length == 7 &&\n      this.variation == 'FILLED'\n    ) {\n      if (this.backgroundColorHSL) {\n        if (this.backgroundColorHSL.l > 50) this.color = '#000000';\n        else if (this.backgroundColorHSL.l <= 50) this.color = '#ffffff';\n      } else {\n        let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n          this.backgroundColor\n        );\n\n        if (result) {\n          let r = parseInt(result[1], 16) / 255;\n          let g = parseInt(result[2], 16) / 255;\n          let b = parseInt(result[3], 16) / 255;\n\n          let max = Math.max(r, g, b);\n          let min = Math.min(r, g, b);\n\n          let l = (max + min) / 2;\n\n          l = l * 100;\n          l = Math.round(l);\n\n          if (l > 50) this.color = '#000000';\n          else if (l <= 50) this.color = '#ffffff';\n        }\n      }\n    }\n  }\n\n  ngAfterContentInit(): void {\n    this.text = this.element.nativeElement.innerText;\n\n    this.setContent();\n\n    switch (this.state) {\n      case 'ENABLED':\n        switch (this.variation) {\n          case 'FILLED':\n            this.element.nativeElement.style.border = 'none';\n            break;\n\n          case 'OUTLINED':\n            this.element.nativeElement.style.backgroundColor = 'transparent';\n            this.element.nativeElement.style.borderColor = this.color;\n            break;\n\n          case 'CONTENT_ONLY':\n            this.element.nativeElement.style.border = 'none';\n            this.element.nativeElement.style.backgroundColor = 'transparent';\n            this.element.nativeElement.classList.add('samurai-text-underline');\n            break;\n        }\n        break;\n\n      case 'DISABLED':\n        this.hoverStyle = 'NONE';\n        this.element.nativeElement.style.cursor = 'not-allowed';\n        break;\n\n      case 'PENDING':\n        break;\n\n      case 'DONE':\n        break;\n\n      case 'FAILED':\n        break;\n    }\n\n    switch (this.borderRadius) {\n      case 'NORMAL':\n        this.element.nativeElement.style.borderRadius = `${\n          this.element.nativeElement.offsetHeight / 5\n        }px`;\n        break;\n\n      case 'ROUND':\n        this.element.nativeElement.style.borderRadius = `10000px`;\n        break;\n\n      case 'SHARP':\n        this.element.nativeElement.style.borderRadius = `2px`;\n        break;\n    }\n\n    if (this.content == 'ICON') {\n      this.element.nativeElement.style.padding = '8px';\n    }\n\n    if (this.i18n) {\n      this.element.nativeElement.setAttribute('i18n', '');\n      this.element.nativeElement.setAttribute('i18n-title', '');\n    }\n\n    this.element.nativeElement.classList.add(this.getClass());\n  }\n}\n","export class SamuraiButtonConfig {\n  private _variation: 'FILLED' | 'OUTLINED' | 'CONTENT_ONLY' = 'FILLED';\n  private _content: 'TEXT' | 'TEXT_ICON' | 'ICON' = 'TEXT';\n  private _hoverStyle:\n    | 'LEFT_TO_RIGHT'\n    | 'BOTH_SIDES'\n    | 'SHUTTER_UP'\n    | 'SHUTTER_DOWN'\n    | 'GLOW'\n    | 'NEON_BORDER'\n    | 'FILL'\n    | 'NONE' = 'LEFT_TO_RIGHT';\n  private _borderRadius: 'NORMAL' | 'ROUND' | 'SHARP' = 'NORMAL';\n  private _state: 'ENABLED' | 'PENDING' | 'DONE' | 'FAILED' | 'DISABLED' =\n    'ENABLED';\n  private _colorDetection: boolean = true;\n  private _hoverColorDetection: boolean = true;\n  private _i18n: boolean = false;\n  private _icon: string = 'favorite';\n  private _iconStyle: 'filled' | 'outlined' | 'round' | 'sharp' | 'two-tone' =\n    'round';\n  private _color: string = '#000000';\n  private _backgroundColor: string = '#ffffff';\n  private _hoverColor: string = '#0000aa';\n  private _borderColor: string = '#000000';\n\n  public get variation(): 'FILLED' | 'OUTLINED' | 'CONTENT_ONLY' {\n    return this._variation;\n  }\n\n  public set variation(value: 'FILLED' | 'OUTLINED' | 'CONTENT_ONLY') {\n    this._variation = value;\n  }\n\n  public get content(): 'TEXT' | 'TEXT_ICON' | 'ICON' {\n    return this._content;\n  }\n\n  public set content(value: 'TEXT' | 'TEXT_ICON' | 'ICON') {\n    this._content = value;\n  }\n\n  public get hoverStyle():\n    | 'LEFT_TO_RIGHT'\n    | 'BOTH_SIDES'\n    | 'SHUTTER_UP'\n    | 'SHUTTER_DOWN'\n    | 'GLOW'\n    | 'NEON_BORDER'\n    | 'FILL'\n    | 'NONE' {\n    return this._hoverStyle;\n  }\n\n  public set hoverStyle(\n    value:\n      | 'LEFT_TO_RIGHT'\n      | 'BOTH_SIDES'\n      | 'SHUTTER_UP'\n      | 'SHUTTER_DOWN'\n      | 'GLOW'\n      | 'NEON_BORDER'\n      | 'FILL'\n      | 'NONE'\n  ) {\n    this._hoverStyle = value;\n  }\n\n  public get borderRadius(): 'NORMAL' | 'ROUND' | 'SHARP' {\n    return this._borderRadius;\n  }\n\n  public set borderRadius(value: 'NORMAL' | 'ROUND' | 'SHARP') {\n    this._borderRadius = value;\n  }\n\n  public get state(): 'ENABLED' | 'PENDING' | 'DONE' | 'FAILED' | 'DISABLED' {\n    return this._state;\n  }\n\n  public set state(\n    value: 'ENABLED' | 'PENDING' | 'DONE' | 'FAILED' | 'DISABLED'\n  ) {\n    this._state = value;\n  }\n\n  public get colorDetection(): boolean {\n    return this._colorDetection;\n  }\n\n  public set colorDetection(value: boolean) {\n    this._colorDetection = value;\n  }\n\n  public get hoverColorDetection(): boolean {\n    return this._hoverColorDetection;\n  }\n\n  public set hoverColorDetection(value: boolean) {\n    this._hoverColorDetection = value;\n  }\n\n  public get i18n(): boolean {\n    return this._i18n;\n  }\n\n  public set i18n(value: boolean) {\n    this._i18n = value;\n  }\n\n  public get icon(): string {\n    return this._icon;\n  }\n\n  public set icon(value: string) {\n    this._icon = value;\n  }\n\n  public get iconStyle():\n    | 'filled'\n    | 'outlined'\n    | 'round'\n    | 'sharp'\n    | 'two-tone' {\n    return this._iconStyle;\n  }\n\n  public set iconStyle(\n    value: 'filled' | 'outlined' | 'round' | 'sharp' | 'two-tone'\n  ) {\n    this._iconStyle = value;\n  }\n\n  public get color(): string {\n    return this._color;\n  }\n\n  public set color(value: string) {\n    this._color = value;\n  }\n\n  public get backgroundColor(): string {\n    return this._backgroundColor;\n  }\n\n  public set backgroundColor(value: string) {\n    this._backgroundColor = value;\n  }\n\n  public get hoverColor(): string {\n    return this._hoverColor;\n  }\n\n  public set hoverColor(value: string) {\n    this._hoverColor = value;\n  }\n\n  public get borderColor(): string {\n    return this._borderColor;\n  }\n\n  public set borderColor(value: string) {\n    this._borderColor = value;\n  }\n\n  constructor(\n    variation: 'FILLED' | 'OUTLINED' | 'CONTENT_ONLY' = 'FILLED',\n    content: 'TEXT' | 'TEXT_ICON' | 'ICON' = 'TEXT_ICON',\n    hoverStyle:\n      | 'LEFT_TO_RIGHT'\n      | 'BOTH_SIDES'\n      | 'SHUTTER_UP'\n      | 'SHUTTER_DOWN'\n      | 'GLOW'\n      | 'NEON_BORDER'\n      | 'FILL'\n      | 'NONE' = 'LEFT_TO_RIGHT',\n    borderRadius: 'NORMAL' | 'ROUND' | 'SHARP' = 'NORMAL',\n    state: 'ENABLED' | 'DISABLED' = 'ENABLED',\n    colorDetection: boolean = true,\n    hoverColorDetection: boolean = true,\n    i18n: boolean = false,\n    icon: string = 'favorite',\n    iconStyle:\n      | 'filled'\n      | 'outlined'\n      | 'round'\n      | 'sharp'\n      | 'two-tone' = 'filled',\n    color: string = '#000000',\n    backgroundColor: string = '#ffffff',\n    hoverColor: string = '#0000aa',\n    borderColor: string = '#000000'\n  ) {\n    this.variation = variation;\n    this.content = content;\n    this.hoverStyle = hoverStyle;\n    this.borderRadius = borderRadius;\n    this.state = state;\n    this.colorDetection = colorDetection;\n    this.hoverColorDetection = hoverColorDetection;\n    this.i18n = i18n;\n    this.icon = icon;\n    this.iconStyle = iconStyle;\n    this.color = color;\n    this.backgroundColor = backgroundColor;\n    this.hoverColor = hoverColor;\n    this.borderColor = borderColor;\n  }\n}\n","/*\n * Public API Surface of samurai-button\n */\n\nexport * from './lib/button.directive';\nexport * from './lib/config.class';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAYA,MAIa,sBAAsB,CAAA;IACjC,WAC4B,CAAA,QAAkB,EACpC,OAAsC,EAAA;QADpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAGxC,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QA8CM,IAAS,CAAA,SAAA,GAAG,MAC1C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAgBxB,IAAS,CAAA,SAAA,GAA2C,QAAQ,CAAC;QAC7D,IAAO,CAAA,OAAA,GAAkC,MAAM,CAAC;QAChD,IAAU,CAAA,UAAA,GASN,MAAM,CAAC;QACX,IAAY,CAAA,YAAA,GAAiC,QAAQ,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GACZ,SAAS,CAAC;QAEH,IAAI,CAAA,IAAA,GAAW,UAAU,CAAC;QAC1B,IAAS,CAAA,SAAA,GAChB,OAAO,CAAC;QAED,IAAK,CAAA,KAAA,GAAW,SAAS,CAAC;QAC1B,IAAe,CAAA,eAAA,GAAW,SAAS,CAAC;QACpC,IAAU,CAAA,UAAA,GAAW,SAAS,CAAC;QAC/B,IAAW,CAAA,WAAA,GAAW,SAAS,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAA+B,QAAQ,CAAC;QACnD,IAAc,CAAA,cAAA,GAAY,IAAI,CAAC;QAC/B,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;QACpC,IAAI,CAAA,IAAA,GAAY,IAAI,CAAC;KA5F1B;IAIwB,QAAQ,GAAA;QAClC,QAAQ,IAAI,CAAC,UAAU;AACrB,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAuB,oBAAA,EAAA,IAAI,CAAC,UAAU,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7H,MAAM;AAER,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAW,QAAA,EAAA,IAAI,CAAC,eAAe,CAAA,WAAA,EAAc,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,CAAa,CAAC;gBAC3D,MAAM;AAER,YAAA,KAAK,aAAa;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAwB,qBAAA,EAAA,IAAI,CAAC,WAAW,GAAG,CAAC;gBACtF,MAAM;AAER,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AACzD,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;gBACpE,MAAM;AACT,SAAA;KACF;IAE2B,WAAW,GAAA;QACrC,QAAQ,IAAI,CAAC,UAAU;AACrB,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,CAAE,CAAC;gBAChD,MAAM;AAER,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,CAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,CAAa,CAAC;gBAC3D,MAAM;AAER,YAAA,KAAK,aAAa;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;gBAC7C,MAAM;AAER,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,WAAA,CAAa,CAAC;gBACjE,MAAM;AACT,SAAA;KACF;IAkDO,UAAU,GAAA;QAChB,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,kBAAkB,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;;;;AAK3D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,EAAE;YACxE,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEnD,YAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAE1B,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AAChC,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnC,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjD,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE;YACzD,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAClD,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEnD,YAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAE1B,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AAChC,YAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YACnC,OAAO,CAAC,SAAS,CAAC,GAAG,CACnB,iBACE,IAAI,CAAC,SAAS,IAAI,QAAQ,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,SAC/C,CAAE,CAAA,CACH,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,OAAO,IAAI,WAAW;AAAE,gBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;YAEnE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAElD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU;AAAE,YAAA,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;;AAClE,YAAA,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEnD,QAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9C,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC;AACtD,QAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC1C,QAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACnD;IAEO,QAAQ,GAAA;QACd,QAAQ,IAAI,CAAC,UAAU;AACrB,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAO,uBAAuB,CAAC;AAEjC,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,oBAAoB,CAAC;AAE9B,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,sBAAsB,CAAC;AACjC,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS;YAChB,QAAQ,IAAI,CAAC,SAAS;AACpB,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,oBAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;AAClC,oBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,MAAM;AAER,gBAAA,KAAK,aAAa;AAChB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,oBAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;AAClC,oBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,MAAM;AAER,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,aAAa;AAChB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,oBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,oBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,aAAa;AAChB,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,oBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACjC,oBAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AAER,gBAAA,KAAK,aAAa;AAChB,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC5B,oBAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;oBACzB,MAAM;AACT,aAAA;QAEH,IAAI,IAAI,CAAC,MAAM;AACb,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM;AAC3B,gBAAA,QAAQ,GAAG;AACT,oBAAA,KAAK,WAAW;wBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM;AAER,oBAAA,KAAK,SAAS;wBACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChC,MAAM;AAER,oBAAA,KAAK,YAAY;wBACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACnC,MAAM;AAER,oBAAA,KAAK,cAAc;wBACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACrC,MAAM;AAER,oBAAA,KAAK,OAAO;wBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM;AAER,oBAAA,KAAK,gBAAgB;wBACnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACvC,MAAM;AAER,oBAAA,KAAK,MAAM;wBACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM;AAER,oBAAA,KAAK,MAAM;wBACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM;AAER,oBAAA,KAAK,WAAW;wBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM;AAER,oBAAA,KAAK,OAAO;wBACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM;AAER,oBAAA,KAAK,iBAAiB;wBACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACxC,MAAM;AAER,oBAAA,KAAK,YAAY;wBACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACnC,MAAM;AACT,iBAAA;QAEL,IACE,IAAI,CAAC,mBAAmB;AACxB,YAAA,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;AACjC,aAAC,IAAI,CAAC,UAAU,IAAI,eAAe;gBACjC,IAAI,CAAC,UAAU,IAAI,eAAe;gBAClC,IAAI,CAAC,UAAU,IAAI,YAAY;gBAC/B,IAAI,CAAC,UAAU,IAAI,cAAc;AACjC,gBAAA,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,EAClC;YACA,IAAI,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAC3D,IAAI,CAAC,eAAe,CACrB,CAAC;AAEF,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AACtC,gBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AACtC,gBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAEtC,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B,gBAAA,IAAI,CAAU,CAAC;AACf,gBAAA,IAAI,CAAS,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;gBAExB,IAAI,GAAG,IAAI,GAAG;AAAE,oBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrB,qBAAA;AACH,oBAAA,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;oBAElB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AAEpD,oBAAA,QAAQ,GAAG;AACT,wBAAA,KAAK,CAAC;4BACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClC,MAAM;AAER,wBAAA,KAAK,CAAC;4BACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACpB,MAAM;AAER,wBAAA,KAAK,CAAC;4BACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACpB,MAAM;AACT,qBAAA;oBAED,CAAC,IAAI,CAAC,CAAC;AACR,iBAAA;gBAED,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB,gBAAA,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACZ,gBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,gBAAA,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACZ,gBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAElB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,eAAe,GAAG,CAAO,IAAA,EAAA,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,CAAC,CAAA,EAAA,CAAI,CAAC;gBACjD,IAAI,CAAC,UAAU,GAAG,CAAO,IAAA,EAAA,CAAC,CAAK,EAAA,EAAA,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,GAAA,EAAM,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;AACzE,aAAA;AACF,SAAA;QAED,IACE,IAAI,CAAC,cAAc;AACnB,YAAA,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,SAAS,IAAI,QAAQ,EAC1B;YACA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE;AAAE,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACtD,qBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;AAAE,oBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAClE,aAAA;AAAM,iBAAA;gBACL,IAAI,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAC3D,IAAI,CAAC,eAAe,CACrB,CAAC;AAEF,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AACtC,oBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AACtC,oBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAEtC,oBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,oBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAExB,oBAAA,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACZ,oBAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAElB,IAAI,CAAC,GAAG,EAAE;AAAE,wBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;yBAC9B,IAAI,CAAC,IAAI,EAAE;AAAE,wBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC1C,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;QAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,QAAQ,IAAI,CAAC,KAAK;AAChB,YAAA,KAAK,SAAS;gBACZ,QAAQ,IAAI,CAAC,SAAS;AACpB,oBAAA,KAAK,QAAQ;wBACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;wBACjD,MAAM;AAER,oBAAA,KAAK,UAAU;wBACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;AACjE,wBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC1D,MAAM;AAER,oBAAA,KAAK,cAAc;wBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;wBACjD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;wBACjE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;wBACnE,MAAM;AACT,iBAAA;gBACD,MAAM;AAER,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;gBACxD,MAAM;AAER,YAAA,KAAK,SAAS;gBACZ,MAAM;AAER,YAAA,KAAK,MAAM;gBACT,MAAM;AAER,YAAA,KAAK,QAAQ;gBACX,MAAM;AACT,SAAA;QAED,QAAQ,IAAI,CAAC,YAAY;AACvB,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,EAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,GAAG,CAC5C,IAAI,CAAC;gBACL,MAAM;AAER,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,OAAA,CAAS,CAAC;gBAC1D,MAAM;AAER,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,CAAA,GAAA,CAAK,CAAC;gBACtD,MAAM;AACT,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAClD,SAAA;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC3D,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC3D;AAheU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAEvB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAFP,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAGI,MAAM;2BAAC,QAAQ,CAAA;qEAMU,QAAQ,EAAA,CAAA;sBAAnC,YAAY;uBAAC,YAAY,CAAA;gBAsBE,WAAW,EAAA,CAAA;sBAAtC,YAAY;uBAAC,YAAY,CAAA;gBAsBM,SAAS,EAAA,CAAA;sBAAxC,YAAY;uBAAC,OAAO,CAAA;;sBAAG,KAAK;gBAGpB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAYG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAUG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MChHK,mBAAmB,CAAA;AA0B9B,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAW,SAAS,CAAC,KAA6C,EAAA;AAChE,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAW,OAAO,CAAC,KAAoC,EAAA;AACrD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,UAAU,GAAA;QASnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAED,IAAW,UAAU,CACnB,KAQU,EAAA;AAEV,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAW,YAAY,CAAC,KAAmC,EAAA;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAW,KAAK,CACd,KAA6D,EAAA;AAE7D,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,IAAW,cAAc,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;IAED,IAAW,mBAAmB,CAAC,KAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACnC;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAW,IAAI,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAW,IAAI,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,IAAW,SAAS,GAAA;QAMlB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAW,SAAS,CAClB,KAA6D,EAAA;AAE7D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAED,IAAW,eAAe,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAED,IAAW,UAAU,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IAAW,WAAW,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAED,IAAA,WAAA,CACE,YAAoD,QAAQ,EAC5D,UAAyC,WAAW,EACpD,aAQa,eAAe,EAC5B,YAA6C,GAAA,QAAQ,EACrD,KAAgC,GAAA,SAAS,EACzC,cAA0B,GAAA,IAAI,EAC9B,mBAA+B,GAAA,IAAI,EACnC,IAAA,GAAgB,KAAK,EACrB,IAAA,GAAe,UAAU,EACzB,SAAA,GAKiB,QAAQ,EACzB,KAAA,GAAgB,SAAS,EACzB,kBAA0B,SAAS,EACnC,aAAqB,SAAS,EAC9B,cAAsB,SAAS,EAAA;QA/LzB,IAAU,CAAA,UAAA,GAA2C,QAAQ,CAAC;QAC9D,IAAQ,CAAA,QAAA,GAAkC,MAAM,CAAC;QACjD,IAAW,CAAA,WAAA,GAQN,eAAe,CAAC;QACrB,IAAa,CAAA,aAAA,GAAiC,QAAQ,CAAC;QACvD,IAAM,CAAA,MAAA,GACZ,SAAS,CAAC;QACJ,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;QAChC,IAAoB,CAAA,oBAAA,GAAY,IAAI,CAAC;QACrC,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;QACvB,IAAK,CAAA,KAAA,GAAW,UAAU,CAAC;QAC3B,IAAU,CAAA,UAAA,GAChB,OAAO,CAAC;QACF,IAAM,CAAA,MAAA,GAAW,SAAS,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAAW,SAAS,CAAC;QACrC,IAAW,CAAA,WAAA,GAAW,SAAS,CAAC;QAChC,IAAY,CAAA,YAAA,GAAW,SAAS,CAAC;AA0KvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAChC;AACF;;ACjND;;AAEG;;ACFH;;AAEG;;;;"}