{"version":3,"file":"toppy-ivy.mjs","sources":["../../../projects/toppy/src/lib/models.ts","../../../projects/toppy/src/lib/position/position.ts","../../../projects/toppy/src/lib/position/fullscreen-position.ts","../../../projects/toppy/src/lib/utils.ts","../../../projects/toppy/src/lib/position/global-position.ts","../../../projects/toppy/src/lib/position/relative-position.ts","../../../projects/toppy/src/lib/position/slide-position.ts","../../../projects/toppy/src/lib/config.ts","../../../projects/toppy/src/lib/toppy.component.ts","../../../projects/toppy/src/lib/template.html","../../../projects/toppy/src/lib/toppy-control.ts","../../../projects/toppy/src/lib/toppy.ts","../../../projects/toppy/src/lib/toppy.module.ts","../../../projects/toppy/src/toppy-ivy.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\nimport { ToppyPosition } from './position/position';\n\nexport interface PositionMeta {\n  top?: number;\n  left?: number;\n  bottom?: number;\n  right?: number;\n  height?: number | string;\n  width?: number | string;\n  position?: string;\n  extra?: string;\n}\n\nenum p {\n  TOP = 't',\n  LEFT = 'l',\n  RIGHT = 'r',\n  BOTTOM = 'b',\n  TOP_LEFT = 'tl',\n  TOP_RIGHT = 'tr',\n  BOTTOM_LEFT = 'bl',\n  BOTTOM_RIGHT = 'br'\n}\n\nenum o {\n  LEFT_TOP = 'lt',\n  RIGHT_TOP = 'rt',\n  LEFT_BOTTOM = 'lb',\n  RIGHT_BOTTOM = 'rb'\n}\n\nenum i {\n  CENTER = 'c'\n}\nexport const OutsidePlacement = {\n  ...p,\n  ...o\n};\nexport const InsidePlacement = {\n  ...p,\n  ...i\n};\nexport type OutsidePlacement = p | o;\nexport type InsidePlacement = p | i;\n\nexport enum SlidePlacement {\n  LEFT = 'l',\n  RIGHT = 'r'\n}\n\nexport interface ContainerSize {\n  width: string | number;\n  height: string | number;\n}\n\nexport interface ToppyConfig {\n  backdrop: boolean;\n  containerClass: string;\n  wrapperClass: string;\n  backdropClass: string;\n  listenWindowEvents: boolean;\n  closeOnDocClick: boolean;\n  bodyClass: string;\n  closeOnEsc: boolean;\n  windowResizeCallback: () => void;\n  docClickCallback: () => void;\n}\n\nexport interface ComponentType<T> {\n  new (...args: any[]): T;\n}\n\nexport type TID = string;\n\nexport type ToppyEventName = 't_open' | 't_close' | 't_dynpos' | 't_detach' | 't_posupdate' | 't_compins';\n\nexport interface ToppyEvent {\n  from: TID;\n  name: ToppyEventName;\n  data?: any;\n}\n\nexport const enum ContentType {\n  STRING = 's',\n  HTML = 'h',\n  TEMPLATE = 't',\n  COMPONENT = 'c'\n}\nexport type ContentData = string | TemplateRef<any> | ComponentType<any>;\nexport type ContentProps = { [x: string]: any } | any;\n\nexport interface Content {\n  type?: ContentType;\n  data: ContentData;\n  props?: ContentProps;\n}\n\nexport interface Inputs {\n  position: ToppyPosition | null;\n  config: ToppyConfig;\n  content: Content;\n  tid: TID;\n}\n","export abstract class ToppyPosition {\n  protected config = {};\n  abstract getPositions(host: HTMLElement): any;\n\n  getClassName(): string {\n    return this.constructor.name.replace('Pos', '-pos').toLowerCase();\n  }\n\n  updateConfig(config) {\n    this.config = { ...this.config, ...config };\n  }\n\n  init(tid: string) {}\n}\n","import { PositionMeta } from '../models';\nimport { ToppyPosition } from './position';\n\nexport class FullscreenPosition extends ToppyPosition {\n  getPositions(): PositionMeta {\n    return { top: 0, left: 0, width: '100%', height: '100%', position: 'fixed' };\n  }\n}\n","import { TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { Content, ContentData, ContentProps, ContentType, ToppyEvent, ToppyEventName } from './models';\n\nexport function getContent(data: ContentData, props: ContentProps = {}): Content {\n  let type: ContentType = ContentType.COMPONENT;\n\n  if (typeof data === 'string' && props['hasHTML']) type = ContentType.HTML;\n  else if (typeof data === 'string') type = ContentType.STRING;\n  else if (data instanceof TemplateRef) type = ContentType.TEMPLATE;\n\n  return { data, type, props };\n}\n\nexport function createId() {\n  return Math.random()\n    .toString(36)\n    .substring(2, 5);\n}\n\n/* html dom utils */\n\nexport function cssClass(method: 'add' | 'remove', cls: string[], target: string = 'body') {\n  document.querySelector(target).classList[method](...cls);\n}\n\nexport function toCss(styleObj) {\n  return Object.keys(styleObj)\n    .map(x => `${x}:${styleObj[x]}${typeof styleObj[x] === 'number' ? 'px' : ''}`)\n    .join(';');\n}\n\nexport function percentToCss(max, percentage: string): string {\n  let number = Number(percentage.slice(0, -1));\n  if (number > 100) {\n    number = 100;\n  }\n  return `calc(${max}px - ${100 - number}%)`;\n}\n\nexport function setWH(src, host, key, value) {\n  if (typeof value === 'number') {\n    host[key] = value = Math.abs(value);\n  }\n\n  if (typeof value === 'string' && value.endsWith('%')) {\n    value = percentToCss(src[key], value);\n  }\n\n  return value;\n}\n\nexport const BodyEl = document.querySelector('body');\n\n/* events */\n\nclass BusClass {\n  private _e: Subject<ToppyEvent> = new Subject();\n  send(from: string, name: ToppyEventName, data: any = null): void {\n    this._e.next({ from, name, data });\n  }\n  listen(from: string, name: ToppyEventName): Observable<any> {\n    return this._e.asObservable().pipe(\n      filter(e => e.from === from && e.name === name),\n      map(e => e.data)\n    );\n  }\n\n  stop(): void {\n    this._e.complete();\n  }\n}\nexport const Bus = new BusClass();\n","import { InsidePlacement } from '../models';\nimport { setWH } from '../utils';\nimport { ToppyPosition } from './position';\n\ninterface GlobalPositionConfig {\n  placement?: InsidePlacement;\n  offset?: number;\n  width?: string | number;\n  height?: string | number;\n}\n\nexport class GlobalPosition extends ToppyPosition {\n  protected config: GlobalPositionConfig = { placement: InsidePlacement.CENTER, width: 100, height: 100, offset: 0 };\n\n  constructor(config: GlobalPositionConfig) {\n    super();\n    this.updateConfig(config);\n  }\n  getPositions(hostEl?: HTMLElement) {\n    const host = hostEl!.getBoundingClientRect() as any;\n    const src = {\n      width: window['innerWidth'],\n      height: window['innerHeight']\n    };\n    let { width: w, height: h } = this.config;\n\n    w = setWH(src, host, 'width', w);\n    h = setWH(src, host, 'height', h);\n\n    const props = this.calc(this.config.placement!, src, host);\n    return {\n      ...props,\n      width: w,\n      height: h,\n      position: 'fixed',\n      extra: this.config.placement\n    };\n  }\n\n  private calc(placement: InsidePlacement, src, host) {\n    const [main, sub] = placement.split('');\n    const p: any = {};\n\n    if (main === 't') {\n      p.top = this.config.offset;\n    }\n    if (main === 'b') {\n      p.bottom = this.config.offset;\n    }\n    if ((main === 'l' || main === 'r' || main === 'c') && !sub) {\n      p.top = (src.height - host.height) / 2;\n    }\n\n    if ((main === 't' || main === 'b' || main === 'c') && !sub) {\n      p.left = (src.width - host.width) / 2;\n    }\n    if ((main === 'l' && !sub) || sub === 'l') {\n      p.left = this.config.offset;\n    }\n    if ((main === 'r' && !sub) || sub === 'r') {\n      p.right = this.config.offset;\n    }\n\n    return p;\n  }\n}\n","import { OutsidePlacement, PositionMeta } from '../models';\nimport { Bus, setWH } from '../utils';\nimport { ToppyPosition } from './position';\n\ninterface RelativePositionConfig {\n  src: HTMLElement;\n  placement?: OutsidePlacement;\n  autoUpdate?: boolean;\n  width?: string | number;\n  height?: string | number;\n}\n\nexport class RelativePosition extends ToppyPosition {\n  protected config: RelativePositionConfig = {\n    src: null,\n    placement: OutsidePlacement.TOP,\n    autoUpdate: false,\n    width: 'auto',\n    height: 'auto'\n  };\n  obs: MutationObserver;\n  constructor(config: RelativePositionConfig) {\n    super();\n    this.updateConfig(config);\n  }\n  init(tid: string): void {\n    if (this.config.autoUpdate) this.listenDrag(tid);\n  }\n\n  getPositions(targetEl: HTMLElement): Pick<PositionMeta, any> {\n    const s = this.getCoords(this.config.src);\n    const h = this.getCoords(targetEl);\n    let { width: w, height: ht } = this.config;\n\n    w = setWH(s, h, 'width', w);\n    ht = setWH(s, h, 'height', ht);\n\n    const { pos, props } = this.calculatePos(this.config.placement, s, h);\n    return { ...this.round(props), width: w, height: ht, extra: pos };\n  }\n\n  private getCoords(elem: HTMLElement): PositionMeta {\n    return elem.getBoundingClientRect();\n  }\n\n  private calc(placement: OutsidePlacement, src, host): object {\n    const [main, sub] = placement.split('');\n    const p = { left: 0, top: 0 };\n    if ((main === 't' || main === 'b') && !sub) {\n      p.left = src.left + (src.width - host.width) / 2;\n    }\n\n    if ((main === 't' || main === 'b') && sub) {\n      p.left = src.left;\n    }\n    if ((main === 't' || main === 'b') && sub === 'r') {\n      p.left = src.left + src.width - host.width;\n    }\n    if (main === 'l') {\n      p.left = src.left - host.width;\n    }\n    if (main === 'r') {\n      p.left = src.right;\n    }\n\n    if (main === 't') {\n      p.top = src.top - host.height;\n    }\n    if (main === 'b') {\n      p.top = src.top + src.height;\n    }\n    if (main === 'l' || main === 'r') {\n      p.top = src.top + (src.height - host.height) / 2;\n    }\n    if (sub === 't' && (main === 'l' || main === 'r')) {\n      p.top = src.top;\n    }\n    if (sub === 'b' && (main === 'l' || main === 'r')) {\n      p.top = src.top + src.height - host.height;\n    }\n    return p;\n  }\n\n  private calculatePos(pos, s, h, c = true): { [x: string]: any } {\n    const props = this.calc(pos, s, h);\n\n    if (c && this.config.autoUpdate && this.isOverflowed({ ...props, width: h.width, height: h.height })) {\n      return this.calculatePos(this.nextPosition(pos), s, h, false);\n    }\n\n    return { pos, props };\n  }\n\n  private isOverflowed(props: { [x: string]: any }): boolean {\n    const { innerHeight, innerWidth } = window;\n    props.bottom = props.top + props.height;\n    props.right = props.left + props.width;\n    return props.bottom > innerHeight || props.top <= 0 || props.left <= 0 || props.right > innerWidth;\n  }\n\n  private nextPosition(current: OutsidePlacement): string {\n    const placements = ['t', 'b', 'l', 'r', 'tl', 'bl', 'tr', 'br', 'lt', 'rt', 'lb', 'rb'];\n\n    const index = placements.indexOf(current);\n    const even = index % 2 === 0;\n    return even ? placements[index + 1] : placements[index - 1];\n  }\n\n  private round(props: object): object {\n    Object.keys(props).forEach(x => (props[x] = Math.round(props[x])));\n    return props;\n  }\n\n  private listenDrag(tid: string): void {\n    if (this.obs) this.obs.disconnect();\n    this.obs = new MutationObserver(mutationsList => {\n      for (const mutation of mutationsList) {\n        if (mutation.type === 'attributes') Bus.send(tid, 't_dynpos');\n      }\n    });\n\n    this.obs.observe(this.config.src, {\n      attributeFilter: ['style']\n    });\n  }\n}\n","import { PositionMeta, SlidePlacement } from '../models';\nimport { ToppyPosition } from './position';\n\ninterface SlidePlacementConfig {\n  placement?: SlidePlacement;\n  width?: string;\n}\n\nexport class SlidePosition extends ToppyPosition {\n  protected config: SlidePlacementConfig = { placement: SlidePlacement.LEFT, width: '30%' };\n\n  constructor(config: SlidePlacementConfig) {\n    super();\n    this.config = { ...this.config, ...config };\n  }\n  getPositions(): PositionMeta {\n    const props = this.config.placement === SlidePlacement.LEFT ? { left: 0 } : { right: 0 };\n    return {\n      ...props,\n      top: 0,\n      width: this.config.width,\n      height: '100%',\n      position: 'fixed',\n      extra: this.config.placement\n    };\n  }\n}\n","import { ToppyConfig } from './models';\n\nexport const DefaultConfig: ToppyConfig = {\n  containerClass: 't-overlay',\n  bodyClass: 't-open',\n  wrapperClass: '',\n  backdropClass: '',\n  backdrop: false,\n  closeOnDocClick: false,\n  listenWindowEvents: true,\n  closeOnEsc: false,\n  windowResizeCallback: () => {},\n  docClickCallback: () => {}\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentFactoryResolver,\n  ElementRef,\n  Injector,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith, takeUntil, tap } from 'rxjs/operators';\nimport { Content, ContentType, TID, ToppyConfig } from './models';\nimport { ToppyPosition } from './position/position';\nimport { Bus, cssClass, toCss } from './utils';\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'toppy',\n  templateUrl: './template.html',\n  styleUrls: ['./styles.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToppyComponent implements OnInit, AfterViewInit, OnDestroy {\n  @ViewChild('compOutlet', { read: ViewContainerRef }) compOutlet: ViewContainerRef;\n  content: Content = {\n    type: ContentType.STRING,\n    data: '',\n    props: {}\n  };\n  config: ToppyConfig;\n  position: ToppyPosition;\n  tid: TID;\n  el: HTMLElement | any;\n  wrapperEl: HTMLElement | any;\n  extra: string;\n  pinj: any;\n  compInstance;\n  private die: Subject<1> = new Subject();\n\n  constructor(\n    public inj: Injector,\n    private cd: ChangeDetectorRef,\n    private compResolver: ComponentFactoryResolver,\n    private elRef: ElementRef\n  ) {\n    this.pinj = Injector;\n  }\n\n  ngOnInit() {\n    this.el = this.elRef.nativeElement;\n    this.wrapperEl = this.el.querySelector('.t-wrapper');\n    let cls = ['t-container', this.config.containerClass, this.position.getClassName()];\n    if (this.config.closeOnDocClick) {\n      cls = cls.concat(['no-pointers']);\n    }\n    this.el.setAttribute('data-tid', this.tid);\n    cssClass('add', cls, `[data-tid='${[this.tid]}']`);\n    cssClass('add', [this.config.bodyClass]);\n  }\n\n  ngAfterViewInit() {\n    this.listenPos().subscribe();\n    if (this.content.type === ContentType.COMPONENT) {\n      this.compInstance = this.setComponent(this.content.props);\n      Bus.send(this.tid, 't_compins', this.compInstance);\n    }\n  }\n\n  setComponent(props) {\n    const compRef = this.compOutlet.createComponent(\n      this.compResolver.resolveComponentFactory(this.content.data as any)\n    );\n    Object.assign(compRef.instance, props);\n    compRef.changeDetectorRef.detectChanges();\n    return compRef.instance;\n  }\n\n  updateTextContent(data: string): void {\n    if (this.content.type === ContentType.STRING) {\n      this.content.data = data;\n      this.cd.detectChanges();\n    }\n  }\n\n  ngOnDestroy(): void {\n    cssClass('remove', [this.config.bodyClass]);\n    this.die.next(1);\n    Bus.send(this.tid, 't_detach');\n  }\n\n  private listenPos(): Observable<any> {\n    return Bus.listen(this.tid, 't_dynpos').pipe(\n      startWith(1),\n      takeUntil(this.die),\n      tap(e => {\n        if (!e || !e.x) return this.setPos();\n        const coords = { left: e.x, top: e.y };\n        this.wrapperEl.style = toCss(coords);\n      })\n    );\n  }\n\n  private setPos(): void {\n    const { extra, ...coords } = this.position.getPositions(this.wrapperEl);\n    if (this.extra !== extra) {\n      this.extra = extra;\n      this.cd.detectChanges();\n    }\n    Object.assign(coords, { visibility: 'visible', opacity: '1' });\n    this.wrapperEl.style = toCss(coords);\n    Bus.send(this.tid, 't_posupdate');\n  }\n}\n","<div class=\"t-backdrop\" *ngIf=\"config.backdrop\" [ngClass]=\"config.backdropClass\"></div>\n<div class=\"t-wrapper\" [ngClass]=\"config.wrapperClass\" [class]=\"extra\" #wrapperEl>\n  <ng-container [ngSwitch]=\"content.type\">\n    <ng-container *ngSwitchCase=\"'s'\">\n      <div [class]=\"content.props.class\">{{ content.data }}</div>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'h'\"> <div [innerHTML]=\"content.data\"></div> </ng-container>\n    <ng-container *ngSwitchCase=\"'t'\">\n      <ng-container *ngTemplateOutlet=\"content.data; context: { $implicit: content.props }\"></ng-container>\n    </ng-container>\n    <ng-container *ngSwitchCase=\"'c'\"> <ng-template #compOutlet></ng-template> </ng-container>\n  </ng-container>\n</div>\n","import {\n  ApplicationRef,\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Injector,\n  ViewContainerRef,\n  ViewRef\n} from '@angular/core';\nimport { Observable, Subject, animationFrameScheduler, fromEvent, merge as mergeObs } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, observeOn, skipWhile, takeUntil, tap } from 'rxjs/operators';\nimport { Content, ContentData, ContentProps, TID, ToppyConfig, ToppyEventName } from './models';\nimport { ToppyPosition } from './position/position';\nimport { ToppyComponent } from './toppy.component';\nimport { BodyEl, Bus, getContent } from './utils';\n\nexport class ToppyControl {\n  position: ToppyPosition;\n  config: ToppyConfig;\n  content: Content;\n  tid: TID;\n  updateTextContent: Subject<string> = new Subject();\n  hostView: ViewRef;\n  comp: ToppyComponent;\n  compRef: ComponentRef<ToppyComponent>;\n\n  private viewEl: HTMLElement;\n  private isOpen = false;\n  private compFac: ComponentFactory<ToppyComponent>;\n  private die: Subject<1> = new Subject();\n\n  constructor(\n    private appRef: ApplicationRef, \n    private compResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {\n    this.updateTextContent.subscribe(content => {\n      if (this.isOpen) this.comp.updateTextContent(content);\n    });\n  }\n\n  open(): void {\n    if (this.isOpen) return;\n\n    this.attach();\n    if (this.viewEl) {\n      mergeObs(this.onDocumentClick(), this.onWindowResize(), this.onEscClick()).subscribe();\n      setTimeout(() => Bus.send(this.tid, 't_dynpos'), 1);\n    }\n\n    Bus.send(this.tid, 't_open');\n    this.isOpen = true;\n  }\n\n  close(): void {\n    if (!this.isOpen) return;\n\n    this.dettach();\n    this.die.next(1);\n    Bus.send(this.tid, 't_close');\n    this.isOpen = false;\n  }\n\n  toggle(): void {\n    return this.isOpen ? this.close() : this.open();\n  }\n\n  onEscClick(): Observable<any> {\n    return fromEvent(BodyEl!, 'keydown').pipe(\n      takeUntil(this.die),\n      skipWhile(() => !this.config.closeOnEsc),\n      filter((e: any) => (e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27) && e.target.nodeName === 'BODY'),\n      tap(e => e.preventDefault()),\n      map(e => e.target),\n      tap(() => this.close())\n    );\n  }\n\n  onDocumentClick(): Observable<any> {\n    return fromEvent(this.viewEl, 'click').pipe(\n      takeUntil(this.die),\n      map((e: any) => e.target),\n      skipWhile(() => !this.config.closeOnDocClick),\n      filter(this.isNotHostElement.bind(this)),\n      tap(() => {\n        this.config.docClickCallback();\n        this.close();\n      })\n    );\n  }\n\n  onWindowResize(): Observable<any> {\n    const onResize = fromEvent(window, 'resize');\n    const onScroll = fromEvent(window, 'scroll', { passive: true });\n    return mergeObs(onResize, onScroll).pipe(\n      skipWhile(() => !this.config.listenWindowEvents),\n      takeUntil(this.die),\n      debounceTime(5),\n      observeOn(animationFrameScheduler),\n      distinctUntilChanged(),\n      tap(() => {\n        Bus.send(this.tid, 't_dynpos');\n        this.config.windowResizeCallback();\n      })\n    );\n  }\n\n  changePosition(newPosition: ToppyPosition): void {\n    this.position = newPosition;\n  }\n\n  updatePosition(positionConfig: any): void {\n    this.position.updateConfig(positionConfig);\n  }\n\n  updateContent(content: ContentData, props: ContentProps = {}): void {\n    this.content = getContent(content, { ...this.content.props, ...props });\n  }\n\n  listen(eventName: ToppyEventName) {\n    return Bus.listen(this.tid, eventName);\n  }\n\n  private isNotHostElement(el): boolean {\n    const wrapperEl = this.viewEl.querySelector('.t-wrapper');\n    return el !== wrapperEl && !wrapperEl?.contains(el);\n  }\n\n  private attach(): void {\n    /* create component */\n    this.compFac = this.compResolver.resolveComponentFactory(ToppyComponent);\n    this.compRef = this.compFac.create(this.injector);\n    this.comp = this.compRef.instance;\n\n    /* assign props */\n    const { position, content, config, tid } = this;\n    content.props.close = this.close.bind(this);\n    Object.assign(this.comp, { position, content, config, tid });\n\n    /* attach view */\n    this.hostView = this.compRef.hostView;\n    this.appRef.attachView(this.hostView);\n    this.viewEl = (this.hostView as any).rootNodes[0];\n    BodyEl!.appendChild(this.viewEl);\n  }\n\n  private dettach(): void {\n    if (!this.hostView) return;\n\n    this.appRef.detachView(this.hostView);\n    this.compRef.destroy();\n    this.hostView = this.viewEl = this.comp = null;\n  }\n}\n","import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector } from '@angular/core';\nimport { DefaultConfig } from './config';\nimport { ContentData, ContentProps, ContentType, Inputs, InsidePlacement, TID, ToppyConfig } from './models';\nimport { GlobalPosition } from './position';\nimport { ToppyPosition } from './position/position';\nimport { ToppyControl } from './toppy-control';\nimport { Bus, createId, getContent } from './utils';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Toppy {\n  static controls: { [key: string]: ToppyControl } = {};\n  private tid: TID;\n  private inputs: Inputs = {\n    position: null,\n    config: DefaultConfig,\n    content: { type: ContentType.STRING, data: 'hello', props: {} },\n    tid: null\n  };\n\n  constructor(private injector: Injector) {\n    this.inputs.position = new GlobalPosition({ placement: InsidePlacement.TOP });\n  }\n\n  position(position: ToppyPosition): Toppy {\n    this.inputs.position = position;\n    return this;\n  }\n\n  config(config: Partial<ToppyConfig>): Toppy {\n    this.inputs.config = { ...DefaultConfig, ...config };\n    return this;\n  }\n\n  content(data: ContentData, props: ContentProps = {}): Toppy {\n    this.inputs.content = getContent(data, props);\n    return this;\n  }\n\n  create(key: string = null): ToppyControl {\n    this.tid = this.inputs.tid = key || createId();\n\n    const injector = Injector.create(\n      [\n        {\n          provide: ToppyControl,\n          deps: [ApplicationRef, ComponentFactoryResolver, Injector]\n        }\n      ],\n      this.injector\n    );\n\n    const tc = injector.get(ToppyControl);\n    if (Toppy.controls[this.tid]) {\n      this.tid = createId();\n    }\n    this.inputs.position.init(this.tid);\n    Toppy.controls[this.tid] = Object.assign(tc, this.inputs);\n    return tc;\n  }\n\n  getCtrl(tid: TID): ToppyControl {\n    return Toppy.controls[tid];\n  }\n\n  destroy() {\n    // tslint:disable-next-line:forin\n    for (const key in Toppy.controls) {\n      Toppy.controls[key].close();\n    }\n    Toppy.controls = {};\n    Bus.stop();\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ToppyComponent } from './toppy.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ToppyComponent]\n})\nexport class ToppyModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["mergeObs"],"mappings":";;;;;;;AAcA,IAAK,CASJ,CAAA;AATD,CAAA,UAAK,CAAC,EAAA;AACJ,IAAA,CAAA,CAAA,KAAA,CAAA,GAAA,GAAS,CAAA;AACT,IAAA,CAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV,IAAA,CAAA,CAAA,OAAA,CAAA,GAAA,GAAW,CAAA;AACX,IAAA,CAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACZ,IAAA,CAAA,CAAA,UAAA,CAAA,GAAA,IAAe,CAAA;AACf,IAAA,CAAA,CAAA,WAAA,CAAA,GAAA,IAAgB,CAAA;AAChB,IAAA,CAAA,CAAA,aAAA,CAAA,GAAA,IAAkB,CAAA;AAClB,IAAA,CAAA,CAAA,cAAA,CAAA,GAAA,IAAmB,CAAA;AACrB,CAAC,EATI,CAAC,KAAD,CAAC,GASL,EAAA,CAAA,CAAA,CAAA;AAED,IAAK,CAKJ,CAAA;AALD,CAAA,UAAK,CAAC,EAAA;AACJ,IAAA,CAAA,CAAA,UAAA,CAAA,GAAA,IAAe,CAAA;AACf,IAAA,CAAA,CAAA,WAAA,CAAA,GAAA,IAAgB,CAAA;AAChB,IAAA,CAAA,CAAA,aAAA,CAAA,GAAA,IAAkB,CAAA;AAClB,IAAA,CAAA,CAAA,cAAA,CAAA,GAAA,IAAmB,CAAA;AACrB,CAAC,EALI,CAAC,KAAD,CAAC,GAKL,EAAA,CAAA,CAAA,CAAA;AAED,IAAK,CAEJ,CAAA;AAFD,CAAA,UAAK,CAAC,EAAA;AACJ,IAAA,CAAA,CAAA,QAAA,CAAA,GAAA,GAAY,CAAA;AACd,CAAC,EAFI,CAAC,KAAD,CAAC,GAEL,EAAA,CAAA,CAAA,CAAA;AACY,MAAA,gBAAgB,GAAG;AAC9B,IAAA,GAAG,CAAC;AACJ,IAAA,GAAG,CAAC;EACJ;AACW,MAAA,eAAe,GAAG;AAC7B,IAAA,GAAG,CAAC;AACJ,IAAA,GAAG,CAAC;EACJ;IAIU,eAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,GAAU,CAAA;AACV,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,GAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;MCjDqB,aAAa,CAAA;IACvB,MAAM,GAAG,EAAE,CAAC;IAGtB,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;KACnE;AAED,IAAA,YAAY,CAAC,MAAM,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;KAC7C;IAED,IAAI,CAAC,GAAW,EAAA,GAAI;AACrB;;ACVK,MAAO,kBAAmB,SAAQ,aAAa,CAAA;IACnD,YAAY,GAAA;QACV,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;KAC9E;AACF;;SCFe,UAAU,CAAC,IAAiB,EAAE,QAAsB,EAAE,EAAA;IACpE,IAAI,IAAI,mCAAsC;IAE9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC;AAAE,QAAA,IAAI,8BAAoB;SACrE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,IAAI,gCAAsB;SACxD,IAAI,IAAI,YAAY,WAAW;AAAE,QAAA,IAAI,kCAAwB;AAElE,IAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;SAEe,QAAQ,GAAA;IACtB,OAAO,IAAI,CAAC,MAAM,EAAE;SACjB,QAAQ,CAAC,EAAE,CAAC;AACZ,SAAA,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;AAEM,SAAU,QAAQ,CAAC,MAAwB,EAAE,GAAa,EAAE,SAAiB,MAAM,EAAA;AACvF,IAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3D,CAAC;AAEK,SAAU,KAAK,CAAC,QAAQ,EAAA;AAC5B,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzB,SAAA,GAAG,CAAC,CAAC,IAAI,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,CAAC,CAAC,CAAG,EAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC;SAC7E,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAEe,SAAA,YAAY,CAAC,GAAG,EAAE,UAAkB,EAAA;AAClD,IAAA,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAA,IAAI,MAAM,GAAG,GAAG,EAAE;QAChB,MAAM,GAAG,GAAG,CAAC;KACd;AACD,IAAA,OAAO,QAAQ,GAAG,CAAA,KAAA,EAAQ,GAAG,GAAG,MAAM,IAAI,CAAC;AAC7C,CAAC;AAEK,SAAU,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAA;AACzC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACrC;AAED,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACpD,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;KACvC;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAErD;AAEA,MAAM,QAAQ,CAAA;AACJ,IAAA,EAAE,GAAwB,IAAI,OAAO,EAAE,CAAC;AAChD,IAAA,IAAI,CAAC,IAAY,EAAE,IAAoB,EAAE,OAAY,IAAI,EAAA;AACvD,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;IACD,MAAM,CAAC,IAAY,EAAE,IAAoB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,CAChC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAC/C,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CACjB,CAAC;KACH;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;KACpB;AACF,CAAA;AACM,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE;;AC9D3B,MAAO,cAAe,SAAQ,aAAa,CAAA;IACrC,MAAM,GAAyB,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAEnH,IAAA,WAAA,CAAY,MAA4B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAC3B;AACD,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAG,MAAO,CAAC,qBAAqB,EAAS,CAAC;AACpD,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;AAC3B,YAAA,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;SAC9B,CAAC;AACF,QAAA,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1C,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAElC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAO;AACL,YAAA,GAAG,KAAK;AACR,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SAC7B,CAAC;KACH;AAEO,IAAA,IAAI,CAAC,SAA0B,EAAE,GAAG,EAAE,IAAI,EAAA;AAChD,QAAA,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAQ,EAAE,CAAC;AAElB,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC5B;AACD,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC/B;AACD,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;AAC1D,YAAA,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;AAC1D,YAAA,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;SACvC;AACD,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE;YACzC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC7B;AACD,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE;YACzC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B;AAED,QAAA,OAAO,CAAC,CAAC;KACV;AACF;;ACrDK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AACvC,IAAA,MAAM,GAA2B;AACzC,QAAA,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,gBAAgB,CAAC,GAAG;AAC/B,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;KACf,CAAC;AACF,IAAA,GAAG,CAAmB;AACtB,IAAA,WAAA,CAAY,MAA8B,EAAA;AACxC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAC3B;AACD,IAAA,IAAI,CAAC,GAAW,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KAClD;AAED,IAAA,YAAY,CAAC,QAAqB,EAAA;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAA,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3C,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5B,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE/B,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;KACnE;AAEO,IAAA,SAAS,CAAC,IAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;KACrC;AAEO,IAAA,IAAI,CAAC,SAA2B,EAAE,GAAG,EAAE,IAAI,EAAA;AACjD,QAAA,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;AAC1C,YAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;SAClD;AAED,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,EAAE;AACzC,YAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;SACnB;AACD,QAAA,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE;AACjD,YAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;AACD,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;SAChC;AACD,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;AAChB,YAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;SACpB;AAED,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;SAC/B;AACD,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;SAC9B;QACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;AAChC,YAAA,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;SAClD;AACD,QAAA,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACjD,YAAA,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;SACjB;AACD,QAAA,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACjD,YAAA,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC5C;AACD,QAAA,OAAO,CAAC,CAAC;KACV;IAEO,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AACpG,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC/D;AAED,QAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;KACvB;AAEO,IAAA,YAAY,CAAC,KAA2B,EAAA;AAC9C,QAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC3C,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACxC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,GAAG,WAAW,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;KACpG;AAEO,IAAA,YAAY,CAAC,OAAyB,EAAA;QAC5C,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAExF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC7D;AAEO,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;QAC5B,IAAI,IAAI,CAAC,GAAG;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,IAAI,gBAAgB,CAAC,aAAa,IAAG;AAC9C,YAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;AACpC,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY;AAAE,oBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;aAC/D;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAChC,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,SAAA,CAAC,CAAC;KACJ;AACF;;ACrHK,MAAO,aAAc,SAAQ,aAAa,CAAA;AACpC,IAAA,MAAM,GAAyB,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAE1F,IAAA,WAAA,CAAY,MAA4B,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;KAC7C;IACD,YAAY,GAAA;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,cAAc,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACzF,OAAO;AACL,YAAA,GAAG,KAAK;AACR,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SAC7B,CAAC;KACH;AACF;;ACxBM,MAAM,aAAa,GAAgB;AACxC,IAAA,cAAc,EAAE,WAAW;AAC3B,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,oBAAoB,EAAE,MAAK,GAAG;AAC9B,IAAA,gBAAgB,EAAE,MAAK,GAAG;CAC3B;;MCaY,cAAc,CAAA;AAkBhB,IAAA,GAAA,CAAA;AACC,IAAA,EAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,KAAA,CAAA;AApB2C,IAAA,UAAU,CAAmB;AAClF,IAAA,OAAO,GAAY;AACjB,QAAA,IAAI,EAAoB,GAAA;AACxB,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,EAAE;KACV,CAAC;AACF,IAAA,MAAM,CAAc;AACpB,IAAA,QAAQ,CAAgB;AACxB,IAAA,GAAG,CAAM;AACT,IAAA,EAAE,CAAoB;AACtB,IAAA,SAAS,CAAoB;AAC7B,IAAA,KAAK,CAAS;AACd,IAAA,IAAI,CAAM;AACV,IAAA,YAAY,CAAC;AACL,IAAA,GAAG,GAAe,IAAI,OAAO,EAAE,CAAC;AAExC,IAAA,WAAA,CACS,GAAa,EACZ,EAAqB,EACrB,YAAsC,EACtC,KAAiB,EAAA;QAHlB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAU;QACZ,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QACrB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA0B;QACtC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAEzB,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;KACtB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACrD,QAAA,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AACpF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC/B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAAA,WAAA,EAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;KAC1C;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAA,GAAA,8BAA4B;AAC/C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;KACF;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAC7C,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAW,CAAC,CACpE,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvC,QAAA,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC;KACzB;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAA,GAAA,2BAAyB;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;SACzB;KACF;IAED,WAAW,GAAA;QACT,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAChC;IAEO,SAAS,GAAA;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI,CAC1C,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,YAAA,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACtC,CAAC,CACH,CAAC;KACH;IAEO,MAAM,GAAA;AACZ,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;SACzB;AACD,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;KACnC;0HAzFU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAAd,cAAc,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACQ,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BnD,2vBAaA,EAAA,MAAA,EAAA,CAAA,iVAAA,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,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDaa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BAEE,OAAO,EAAA,eAAA,EAGA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2vBAAA,EAAA,MAAA,EAAA,CAAA,iVAAA,CAAA,EAAA,CAAA;6KAGM,UAAU,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;MEXxC,YAAY,CAAA;AAgBb,IAAA,MAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAjBV,IAAA,QAAQ,CAAgB;AACxB,IAAA,MAAM,CAAc;AACpB,IAAA,OAAO,CAAU;AACjB,IAAA,GAAG,CAAM;AACT,IAAA,iBAAiB,GAAoB,IAAI,OAAO,EAAE,CAAC;AACnD,IAAA,QAAQ,CAAU;AAClB,IAAA,IAAI,CAAiB;AACrB,IAAA,OAAO,CAA+B;AAE9B,IAAA,MAAM,CAAc;IACpB,MAAM,GAAG,KAAK,CAAC;AACf,IAAA,OAAO,CAAmC;AAC1C,IAAA,GAAG,GAAe,IAAI,OAAO,EAAE,CAAC;AAExC,IAAA,WAAA,CACU,MAAsB,EACtB,YAAsC,EACtC,QAAkB,EAAA;QAFlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA0B;QACtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAE1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,IAAG;YACzC,IAAI,IAAI,CAAC,MAAM;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;KACJ;IAED,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAAA,KAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;AACvF,YAAA,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;SACrD;QAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KACpB;IAED,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD;IAED,UAAU,GAAA;QACR,OAAO,SAAS,CAAC,MAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CACvC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EACxC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,EAC/G,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC,EAC5B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAClB,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CACxB,CAAC;KACH;IAED,eAAe,GAAA;QACb,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CACzC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,MAAM,CAAC,EACzB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAC7C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACxC,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC,CACH,CAAC;KACH;IAED,cAAc,GAAA;QACZ,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,OAAOA,KAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAChD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EACnB,YAAY,CAAC,CAAC,CAAC,EACf,SAAS,CAAC,uBAAuB,CAAC,EAClC,oBAAoB,EAAE,EACtB,GAAG,CAAC,MAAK;YACP,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;SACpC,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,WAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;KAC7B;AAED,IAAA,cAAc,CAAC,cAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KAC5C;AAED,IAAA,aAAa,CAAC,OAAoB,EAAE,KAAA,GAAsB,EAAE,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;KACzE;AAED,IAAA,MAAM,CAAC,SAAyB,EAAA;QAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;KACxC;AAEO,IAAA,gBAAgB,CAAC,EAAE,EAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,EAAE,KAAK,SAAS,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrD;IAEO,MAAM,GAAA;;QAEZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;;QAGlC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;;QAG7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,QAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,MAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;IAEO,OAAO,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAChD;AACF;;MC9IY,KAAK,CAAA;AAUI,IAAA,QAAA,CAAA;AATpB,IAAA,OAAO,QAAQ,GAAoC,EAAE,CAAC;AAC9C,IAAA,GAAG,CAAM;AACT,IAAA,MAAM,GAAW;AACvB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,OAAO,EAAE,EAAE,IAAI,EAAA,GAAA,2BAAsB,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;AAC/D,QAAA,GAAG,EAAE,IAAI;KACV,CAAC;AAEF,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;KAC/E;AAED,IAAA,QAAQ,CAAC,QAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAA4B,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;AACrD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,IAAiB,EAAE,KAAA,GAAsB,EAAE,EAAA;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CAAC,MAAc,IAAI,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;AAE/C,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC9B;AACE,YAAA;AACE,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,IAAI,EAAE,CAAC,cAAc,EAAE,wBAAwB,EAAE,QAAQ,CAAC;AAC3D,aAAA;AACF,SAAA,EACD,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,OAAO,CAAC,GAAQ,EAAA;AACd,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,OAAO,GAAA;;AAEL,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE;YAChC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAC7B;AACD,QAAA,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,EAAE,CAAC;KACZ;0HA9DU,KAAK,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAL,uBAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAK,cAFJ,MAAM,EAAA,CAAA,CAAA;;2FAEP,KAAK,EAAA,UAAA,EAAA,CAAA;kBAHjB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCFY,WAAW,CAAA;0HAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2HAAX,WAAW,EAAA,YAAA,EAAA,CAFP,cAAc,CAAA,EAAA,OAAA,EAAA,CADnB,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAHZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,cAAc,CAAC;AAC/B,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}