{"version":3,"file":"ui-vts-kit-ng-vts-anchor.mjs","sources":["../../components/anchor/util.ts","../../components/anchor/anchor.component.ts","../../components/anchor/anchor-link.component.ts","../../components/anchor/anchor.module.ts","../../components/anchor/public-api.ts","../../components/anchor/ui-vts-kit-ng-vts-anchor.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport function getOffsetTop(element: HTMLElement, container: HTMLElement | Window): number {\n  if (!element || !element.getClientRects().length) {\n    return 0;\n  }\n  const rect = element.getBoundingClientRect();\n\n  if (rect.width || rect.height) {\n    if (container === window) {\n      const documentElement = element.ownerDocument!.documentElement!;\n      return rect.top - documentElement.clientTop;\n    }\n    return rect.top - (container as HTMLElement).getBoundingClientRect().top;\n  }\n\n  return rect.top;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { VtsConfigKey, VtsConfigService, WithConfig } from '@ui-vts-kit/ng-vts/core/config';\nimport { VtsScrollService } from '@ui-vts-kit/ng-vts/core/services';\nimport { BooleanInput, NgStyleInterface, NumberInput, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean, InputNumber } from '@ui-vts-kit/ng-vts/core/util';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil, throttleTime } from 'rxjs/operators';\n\nimport { VtsAnchorLinkComponent } from './anchor-link.component';\nimport { getOffsetTop } from './util';\n\ninterface Section {\n  comp: VtsAnchorLinkComponent;\n  top: number;\n}\n\nconst VTS_CONFIG_MODULE_NAME: VtsConfigKey = 'anchor';\nconst sharpMatcherRegx = /#([^#]+)$/;\n\n@Component({\n  selector: 'vts-anchor',\n  exportAs: 'vtsAnchor',\n  preserveWhitespaces: false,\n  template: `\n    <vts-affix *ngIf=\"vtsAffix; else content\" [vtsOffsetTop]=\"vtsOffsetTop\" [vtsTarget]=\"container\">\n      <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n    </vts-affix>\n    <ng-template #content>\n      <div class=\"vts-anchor-wrapper\" [ngStyle]=\"wrapperStyle\">\n        <div class=\"vts-anchor\" [ngClass]=\"{ fixed: !vtsAffix && !vtsShowInkInFixed }\">\n          <div class=\"vts-anchor-ink\">\n            <div class=\"vts-anchor-ink-ball\" #ink></div>\n          </div>\n          <ng-content></ng-content>\n        </div>\n      </div>\n    </ng-template>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VtsAnchorComponent implements OnDestroy, AfterViewInit, OnChanges {\n  readonly _vtsModuleName: VtsConfigKey = VTS_CONFIG_MODULE_NAME;\n  static ngAcceptInputType_vtsAffix: BooleanInput;\n  static ngAcceptInputType_vtsShowInkInFixed: BooleanInput;\n  static ngAcceptInputType_vtsBounds: NumberInput;\n  static ngAcceptInputType_vtsOffsetTop: NumberInput;\n\n  @ViewChild('ink', { static: false }) private ink!: ElementRef;\n\n  @Input() @InputBoolean() vtsAffix = true;\n\n  @Input()\n  @WithConfig()\n  @InputBoolean()\n  vtsShowInkInFixed: boolean = false;\n\n  @Input()\n  @WithConfig()\n  @InputNumber()\n  vtsBounds: number = 5;\n\n  @Input()\n  @InputNumber(undefined)\n  @WithConfig<number>()\n  vtsOffsetTop?: number = undefined;\n\n  @Input() vtsContainer?: string | HTMLElement;\n\n  @Output() readonly vtsClick = new EventEmitter<string>();\n  @Output() readonly vtsScroll = new EventEmitter<VtsAnchorLinkComponent>();\n\n  visible = false;\n  wrapperStyle: NgStyleInterface = { 'max-height': '100vh' };\n\n  container?: HTMLElement | Window;\n\n  private links: VtsAnchorLinkComponent[] = [];\n  private animating = false;\n  private destroy$ = new Subject();\n  private handleScrollTimeoutID: number | ReturnType<typeof setTimeout> = -1;\n\n  constructor(\n    @Inject(DOCUMENT) private doc: VtsSafeAny,\n    public vtsConfigService: VtsConfigService,\n    private scrollSrv: VtsScrollService,\n    private cdr: ChangeDetectorRef,\n    private platform: Platform,\n    private zone: NgZone,\n    private renderer: Renderer2\n  ) {}\n\n  registerLink(link: VtsAnchorLinkComponent): void {\n    this.links.push(link);\n  }\n\n  unregisterLink(link: VtsAnchorLinkComponent): void {\n    this.links.splice(this.links.indexOf(link), 1);\n  }\n\n  private getContainer(): HTMLElement | Window {\n    return this.container || window;\n  }\n\n  ngAfterViewInit(): void {\n    this.registerScrollEvent();\n  }\n\n  ngOnDestroy(): void {\n    clearTimeout(this.handleScrollTimeoutID);\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private registerScrollEvent(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.destroy$.next();\n    this.zone.runOutsideAngular(() => {\n      fromEvent(this.getContainer(), 'scroll')\n        .pipe(throttleTime(50), takeUntil(this.destroy$))\n        .subscribe(() => this.handleScroll());\n    });\n    // Browser would maintain the scrolling position when refreshing.\n    // So we have to delay calculation in avoid of getting a incorrect result.\n    this.handleScrollTimeoutID = setTimeout(() => this.handleScroll());\n  }\n\n  handleScroll(): void {\n    if (typeof document === 'undefined' || this.animating) {\n      return;\n    }\n\n    const sections: Section[] = [];\n    const scope = (this.vtsOffsetTop || 0) + this.vtsBounds;\n    this.links.forEach(comp => {\n      const sharpLinkMatch = sharpMatcherRegx.exec(comp.vtsHref.toString());\n      if (!sharpLinkMatch) {\n        return;\n      }\n      const target = this.doc.getElementById(sharpLinkMatch[1]);\n      if (target) {\n        const top = getOffsetTop(target, this.getContainer());\n        if (top < scope) {\n          sections.push({\n            top,\n            comp\n          });\n        }\n      }\n    });\n\n    this.visible = !!sections.length;\n    if (!this.visible) {\n      this.clearActive();\n      this.cdr.detectChanges();\n    } else {\n      const maxSection = sections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev));\n      this.handleActive(maxSection.comp);\n    }\n    this.setVisible();\n  }\n\n  private clearActive(): void {\n    this.links.forEach(i => {\n      i.unsetActive();\n    });\n  }\n\n  private handleActive(comp: VtsAnchorLinkComponent): void {\n    this.clearActive();\n    comp.setActive();\n    const linkNode = comp.getLinkTitleElement();\n    this.ink.nativeElement.style.top = `${linkNode.offsetTop + linkNode.clientHeight / 2 - 4.5}px`;\n    this.visible = true;\n    this.setVisible();\n    this.vtsScroll.emit(comp);\n  }\n\n  private setVisible(): void {\n    const visible = this.visible;\n    const visibleClassname = 'visible';\n    if (this.ink) {\n      if (visible) {\n        this.renderer.addClass(this.ink.nativeElement, visibleClassname);\n      } else {\n        this.renderer.removeClass(this.ink.nativeElement, visibleClassname);\n      }\n    }\n  }\n\n  handleScrollTo(linkComp: VtsAnchorLinkComponent): void {\n    const el = this.doc.querySelector(linkComp.vtsHref);\n    if (!el) {\n      return;\n    }\n\n    this.animating = true;\n    const containerScrollTop = this.scrollSrv.getScroll(this.getContainer());\n    const elOffsetTop = getOffsetTop(el, this.getContainer());\n    const targetScrollTop = containerScrollTop + elOffsetTop - (this.vtsOffsetTop || 0);\n    this.scrollSrv.scrollTo(this.getContainer(), targetScrollTop, {\n      callback: () => {\n        this.animating = false;\n        this.handleActive(linkComp);\n      }\n    });\n    this.vtsClick.emit(linkComp.vtsHref);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { vtsOffsetTop, vtsContainer } = changes;\n    if (vtsOffsetTop) {\n      this.wrapperStyle = {\n        'max-height': `calc(100vh - ${this.vtsOffsetTop}px)`\n      };\n    }\n    if (vtsContainer) {\n      const container = this.vtsContainer;\n      this.container =\n        typeof container === 'string' ? this.doc.querySelector(container) : container;\n      this.registerScrollEvent();\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { VtsAnchorComponent } from './anchor.component';\n\n@Component({\n  selector: 'vts-link',\n  exportAs: 'vtsLink',\n  preserveWhitespaces: false,\n  template: `\n    <a\n      #linkTitle\n      (click)=\"goToClick($event)\"\n      href=\"{{ vtsHref }}\"\n      class=\"vts-anchor-link-title\"\n      title=\"{{ titleStr }}\"\n    >\n      <span *ngIf=\"titleStr; else titleTpl || vtsTemplate\">{{ titleStr }}</span>\n    </a>\n    <ng-content></ng-content>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class VtsAnchorLinkComponent implements OnInit, OnDestroy {\n  @Input() vtsHref = '#';\n\n  titleStr: string | null = '';\n  titleTpl?: TemplateRef<VtsSafeAny>;\n\n  @Input()\n  set vtsTitle(value: string | TemplateRef<void>) {\n    if (value instanceof TemplateRef) {\n      this.titleStr = null;\n      this.titleTpl = value;\n    } else {\n      this.titleStr = value;\n    }\n  }\n\n  @ContentChild('vtsTemplate', { static: false })\n  vtsTemplate!: TemplateRef<void>;\n  @ViewChild('linkTitle') linkTitle!: ElementRef<HTMLAnchorElement>;\n\n  constructor(\n    public elementRef: ElementRef,\n    private anchorComp: VtsAnchorComponent,\n    private platform: Platform,\n    private renderer: Renderer2\n  ) {\n    this.renderer.addClass(elementRef.nativeElement, 'vts-anchor-link');\n  }\n\n  ngOnInit(): void {\n    this.anchorComp.registerLink(this);\n  }\n\n  getLinkTitleElement(): HTMLAnchorElement {\n    return this.linkTitle.nativeElement;\n  }\n\n  setActive(): void {\n    this.renderer.addClass(this.elementRef.nativeElement, 'vts-anchor-link-active');\n  }\n\n  unsetActive(): void {\n    this.renderer.removeClass(this.elementRef.nativeElement, 'vts-anchor-link-active');\n  }\n\n  goToClick(e: Event): void {\n    e.preventDefault();\n    e.stopPropagation();\n    if (this.platform.isBrowser) {\n      this.anchorComp.handleScrollTo(this);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.anchorComp.unregisterLink(this);\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VtsAffixModule } from '@ui-vts-kit/ng-vts/affix';\n\nimport { VtsAnchorLinkComponent } from './anchor-link.component';\nimport { VtsAnchorComponent } from './anchor.component';\n\n@NgModule({\n  declarations: [VtsAnchorComponent, VtsAnchorLinkComponent],\n  exports: [VtsAnchorComponent, VtsAnchorLinkComponent],\n  imports: [BidiModule, CommonModule, VtsAffixModule, PlatformModule]\n})\nexport class VtsAnchorModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './anchor-link.component';\nexport * from './anchor.component';\nexport * from './anchor.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VtsAnchorComponent","i2","i3"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;AAGG;AAEa,SAAA,YAAY,CAAC,OAAoB,EAAE,SAA+B,EAAA;IAChF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE;AAChD,QAAA,OAAO,CAAC,CAAC;AACV,KAAA;AACD,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAE7C,IAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;QAC7B,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,aAAc,CAAC,eAAgB,CAAC;AAChE,YAAA,OAAO,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC;AAC7C,SAAA;QACD,OAAO,IAAI,CAAC,GAAG,GAAI,SAAyB,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AAC1E,KAAA;IAED,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB;;ACoBA,MAAM,sBAAsB,GAAiB,QAAQ,CAAC;AACtD,MAAM,gBAAgB,GAAG,WAAW,CAAC;MAwBxB,kBAAkB,CAAA;AAyC7B,IAAA,WAAA,CAC4B,GAAe,EAClC,gBAAkC,EACjC,SAA2B,EAC3B,GAAsB,EACtB,QAAkB,EAClB,IAAY,EACZ,QAAmB,EAAA;QAND,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;QAClC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACjC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QA/CpB,IAAc,CAAA,cAAA,GAAiB,sBAAsB,CAAC;QAQtC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAKzC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QAKnC,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;QAKtB,IAAY,CAAA,YAAA,GAAY,SAAS,CAAC;AAIf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA0B,CAAC;QAE1E,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAA,CAAA,YAAY,GAAqB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAInD,IAAK,CAAA,KAAA,GAA6B,EAAE,CAAC;QACrC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,IAAqB,CAAA,qBAAA,GAA2C,CAAC,CAAC,CAAC;KAUvE;AAEJ,IAAA,YAAY,CAAC,IAA4B,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;AAED,IAAA,cAAc,CAAC,IAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAChD;IAEO,YAAY,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;KACjC;IAED,eAAe,GAAA;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC;AACrC,iBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAChD,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;;;AAGH,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACpE;IAED,YAAY,GAAA;QACV,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;YACrD,OAAO;AACR,SAAA;QAED,MAAM,QAAQ,GAAc,EAAE,CAAC;AAC/B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,YAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,cAAc,EAAE;gBACnB,OAAO;AACR,aAAA;AACD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,IAAI,MAAM,EAAE;gBACV,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBACtD,IAAI,GAAG,GAAG,KAAK,EAAE;oBACf,QAAQ,CAAC,IAAI,CAAC;wBACZ,GAAG;wBACH,IAAI;AACL,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;YACrB,CAAC,CAAC,WAAW,EAAE,CAAC;AAClB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,YAAY,CAAC,IAA4B,EAAA;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAG,EAAA,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,CAAA,EAAA,CAAI,CAAC;AAC/F,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,gBAAgB,GAAG,SAAS,CAAC;QACnC,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAClE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AACrE,aAAA;AACF,SAAA;KACF;AAED,IAAA,cAAc,CAAC,QAAgC,EAAA;AAC7C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1D,QAAA,MAAM,eAAe,GAAG,kBAAkB,GAAG,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE;YAC5D,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;aAC7B;AACF,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACtC;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;AAC/C,QAAA,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,YAAY,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,YAAY,CAAK,GAAA,CAAA;aACrD,CAAC;AACH,SAAA;AACD,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS;AACZ,gBAAA,OAAO,SAAS,KAAK,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YAChF,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,SAAA;KACF;AAvLU,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,kBAAkB,kBA0CnB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AA1CP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAlBnB,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,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,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAawB,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAAiB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKzC,UAAA,CAAA;AAFC,IAAA,UAAU,EAAE;AACZ,IAAA,YAAY,EAAE;AACoB,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKnC,UAAA,CAAA;AAFC,IAAA,UAAU,EAAE;AACZ,IAAA,WAAW,EAAE;AACQ,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAKtB,UAAA,CAAA;IAFC,WAAW,CAAC,SAAS,CAAC;AACtB,IAAA,UAAU,EAAU;AACa,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;4FAxBvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,mBAAmB,EAAE,KAAK;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;0BA2CI,MAAM;2BAAC,QAAQ,CAAA;8MAnC2B,GAAG,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEV,QAAQ,EAAA,CAAA;sBAAhC,KAAK;gBAKN,iBAAiB,EAAA,CAAA;sBAHhB,KAAK;gBAQN,SAAS,EAAA,CAAA;sBAHR,KAAK;gBAQN,YAAY,EAAA,CAAA;sBAHX,KAAK;gBAKG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEa,QAAQ,EAAA,CAAA;sBAA1B,MAAM;gBACY,SAAS,EAAA,CAAA;sBAA3B,MAAM;;;MCpDI,sBAAsB,CAAA;IAMjC,IACI,QAAQ,CAAC,KAAiC,EAAA;QAC5C,IAAI,KAAK,YAAY,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AAMD,IAAA,WAAA,CACS,UAAsB,EACrB,UAA8B,EAC9B,QAAkB,EAClB,QAAmB,EAAA;QAHpB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACrB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAvBpB,IAAO,CAAA,OAAA,GAAG,GAAG,CAAC;QAEvB,IAAQ,CAAA,QAAA,GAAkB,EAAE,CAAC;QAuB3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;KACrE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACpC;IAED,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;KACrC;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;KACjF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;KACpF;AAED,IAAA,SAAS,CAAC,CAAQ,EAAA;QAChB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KACtC;+GAvDU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAfvB,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAIU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,mBAAmB,EAAE,KAAK;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;8KAEU,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAMF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAWN,WAAW,EAAA,CAAA;sBADV,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEtB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;;;AC5DxB;;;AAGG;MAeU,eAAe,CAAA;+GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJX,YAAA,EAAA,CAAA,kBAAkB,EAAE,sBAAsB,aAE/C,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CADxD,EAAA,OAAA,EAAA,CAAA,kBAAkB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEvD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;AAC1D,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;oBACrD,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;AACpE,iBAAA,CAAA;;;ACjBD;;;AAGG;;ACHH;;AAEG;;;;"}