{"version":3,"file":"editor-angular-wysiwyg.mjs","sources":["../../../projects/angular-editor/src/lib/angular-editor.service.ts","../../../projects/angular-editor/src/lib/utils.ts","../../../projects/angular-editor/src/lib/ae-select/ae-select.component.ts","../../../projects/angular-editor/src/lib/ae-select/ae-select.component.html","../../../projects/angular-editor/src/lib/angular-editor-toolbar.component.ts","../../../projects/angular-editor/src/lib/angular-editor-toolbar.component.html","../../../projects/angular-editor/src/lib/config.ts","../../../projects/angular-editor/src/lib/angular-editor.component.ts","../../../projects/angular-editor/src/lib/angular-editor.component.html","../../../projects/angular-editor/src/lib/ae-button/ae-button.component.ts","../../../projects/angular-editor/src/lib/ae-button/ae-button.component.html","../../../projects/angular-editor/src/lib/ae-toolbar-set/ae-toolbar-set.component.ts","../../../projects/angular-editor/src/lib/ae-toolbar-set/ae-toolbar-set.component.html","../../../projects/angular-editor/src/lib/angular-editor.module.ts","../../../projects/angular-editor/src/public-api.ts","../../../projects/angular-editor/src/editor-angular-wysiwyg.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\r\nimport { HttpClient, HttpEvent } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CustomClass } from './config';\r\n\r\nexport interface UploadResponse {\r\n  imageUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class AngularEditorService {\r\n  savedSelection: Range | null;\r\n  selectedText: string;\r\n  uploadUrl?: string;\r\n  uploadWithCredentials?: boolean;\r\n  currentFontName: string;\r\n  currentFontSize: string;\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    // @ts-ignore\r\n    @Inject(DOCUMENT) private doc: Document,\r\n  ) {\r\n    console.log(\"doc\", doc);\r\n  }\r\n\r\n  /**\r\n   * Executed command from editor header buttons exclude toggleEditorMode\r\n   * @param command string from triggerCommand\r\n   * @param value\r\n   */\r\n  executeCommand(command: string, value?: string) {\r\n    const commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\r\n    if (commands.includes(command)) {\r\n      this.doc.execCommand('formatBlock', false, command);\r\n      return;\r\n    }\r\n\r\n    this.doc.execCommand(command, false, value);\r\n  }\r\n\r\n  /**\r\n   * Create URL link\r\n   * @param url string from UI prompt\r\n   */\r\n  createLink(url: string) {\r\n    if (!url.includes('http')) {\r\n      this.doc.execCommand('createlink', false, url);\r\n    } else {\r\n      const newUrl =\r\n        '<a href=\"' + url + '\" target=\"_blank\">' + this.selectedText + '</a>';\r\n      this.insertHtml(newUrl);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * insert color either font or background\r\n   *\r\n   * @param color color to be inserted\r\n   * @param where where the color has to be inserted either text/background\r\n   */\r\n  insertColor(color: string, where: string): void {\r\n    const restored = this.restoreSelection();\r\n    if (restored) {\r\n      if (where === 'textColor') {\r\n        this.doc.execCommand('foreColor', false, color);\r\n      } else {\r\n        this.doc.execCommand('hiliteColor', false, color);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set font name\r\n   * @param fontName string\r\n   */\r\n  setFontName(fontName: string) {\r\n    this.doc.execCommand('fontName', false, fontName);\r\n    this.currentFontName = fontName;\r\n  }\r\n\r\n  /**\r\n   * Set font size\r\n   * @param fontSize string\r\n   */\r\n  setFontSize(fontSize: string) {\r\n    this.doc.execCommand('fontSize', false, fontSize);\r\n    this.currentFontSize = fontSize;\r\n  }\r\n  \r\n\r\n  /**\r\n   * Create raw HTML\r\n   * @param html HTML string\r\n   */\r\n  insertHtml(html: string): void {\r\n    const isHTMLInserted = this.doc.execCommand('insertHTML', false, html);\r\n    console.log(\"insertHTML\", html);\r\n    if (!isHTMLInserted) {\r\n      throw new Error('Unable to perform the operation');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * save selection when the editor is focussed out\r\n   */\r\n  public saveSelection = (): void => {\r\n \r\n    if (this.doc.getSelection) {\r\n      const sel = this.doc.getSelection() as Selection;\r\n      if (sel.getRangeAt && sel.rangeCount) {\r\n        this.savedSelection = sel.getRangeAt(0);\r\n        this.selectedText = sel.toString();\r\n      }\r\n    } else if (this.doc['getSelection'] && this.doc['createRange']) {\r\n      this.savedSelection = document.createRange();\r\n    } else {\r\n      this.savedSelection = null;\r\n    }\r\n  };\r\n  \r\n\r\n  selectEditorContent() {\r\n    const editorElement = this.doc.querySelector('.angular-editor-textarea');\r\n\r\n    if (window.getSelection && this.doc.createRange)\r\n    {\r\n      const selection = window.getSelection();\r\n      const range = this.doc.createRange();\r\n      range.selectNodeContents(editorElement);\r\n      selection.removeAllRanges();\r\n      selection.addRange(range);\r\n    } \r\n  }\r\n\r\n  deselectText() {\r\n    const sel = window.getSelection();\r\n    if (sel) {\r\n      sel.removeAllRanges();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * restore selection when the editor is focused in\r\n   *\r\n   * saved selection when the editor is focused out\r\n   */\r\n  restoreSelection(): boolean | undefined {\r\n    if (this.savedSelection) {\r\n      if (this.doc.getSelection) {\r\n        const sel = this.doc.getSelection() as Selection;\r\n        sel.removeAllRanges();\r\n        sel.addRange(this.savedSelection);\r\n        return true;\r\n      } else if (this.doc['getSelection'] /*&& this.savedSelection.select*/) {\r\n        return true;\r\n      }\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * setTimeout used for execute 'saveSelection' method in next event loop iteration\r\n   */\r\n  public executeInNextQueueIteration(\r\n    callbackFn: (...args: any[]) => any,\r\n    timeout = 1e2,\r\n  ): void {\r\n    setTimeout(callbackFn, timeout);\r\n  }\r\n\r\n  /**\r\n   * Upload file to uploadUrl\r\n   * @param file The file\r\n   */\r\n  uploadImage(file: File): Observable<HttpEvent<UploadResponse>> | undefined {\r\n    if (this.uploadUrl) {\r\n      const uploadData: FormData = new FormData();\r\n      uploadData.append('file', file, file.name);\r\n\r\n      return this.http.post<UploadResponse>(this.uploadUrl, uploadData, {\r\n        reportProgress: true,\r\n        observe: 'events',\r\n        withCredentials: this.uploadWithCredentials,\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Insert image with Url\r\n   * @param imageUrl The imageUrl.\r\n   */\r\n  insertImage(imageUrl: string) {\r\n    this.doc.execCommand('insertHTML', false, `<img src=\"${imageUrl}\"/>`);\r\n  }\r\n\r\n  setDefaultParagraphSeparator(separator: string) {\r\n    this.doc.execCommand('defaultParagraphSeparator', false, separator);\r\n  }\r\n\r\n  createCustomClass(customClass: CustomClass) {\r\n    let newTag = this.selectedText;\r\n    if (customClass) {\r\n      const tagName = customClass.tag ? customClass.tag : 'div';\r\n      if (!this.selectedText) this.selectedText = '&nbsp;';\r\n      newTag +=\r\n        '<' +\r\n        tagName +\r\n        ' class=\"' +\r\n        customClass.class +\r\n        '\">' +\r\n        this.selectedText +\r\n        '</' +\r\n        tagName +\r\n        '>';\r\n    }\r\n    this.insertHtml(newTag);\r\n  }\r\n\r\n  insertVideo(videoUrl: string) {\r\n    if (videoUrl.match('www.youtube.com')) {\r\n      this.insertYouTubeVideoTag(videoUrl);\r\n    }\r\n    if (videoUrl.match('vimeo.com')) {\r\n      this.insertVimeoVideoTag(videoUrl);\r\n    }\r\n  }\r\n\r\n  private insertYouTubeVideoTag(videoUrl: string): void {\r\n    const id = videoUrl.split('v=')[1];\r\n    const imageUrl = `https://img.youtube.com/vi/${id}/0.jpg`;\r\n    const thumbnail = `\r\n      <div style='position: relative'>\r\n        <a href='${videoUrl}' target='_blank'>\r\n          <img src=\"${imageUrl}\" alt=\"click to watch\"/>\r\n          <img style='position: absolute; left:200px; top:140px'\r\n          src=\"https://img.icons8.com/color/96/000000/youtube-play.png\"/>\r\n        </a>\r\n      </div>`;\r\n    this.insertHtml(thumbnail);\r\n  }\r\n\r\n  private insertVimeoVideoTag(videoUrl: string): void {\r\n    const sub = this.http\r\n      .get<any>(`https://vimeo.com/api/oembed.json?url=${videoUrl}`)\r\n      .subscribe((data) => {\r\n        const imageUrl = data.thumbnail_url_with_play_button;\r\n        const thumbnail = `<div>\r\n        <a href='${videoUrl}' target='_blank'>\r\n          <img src=\"${imageUrl}\" alt=\"${data.title}\"/>\r\n        </a>\r\n      </div>`;\r\n        this.insertHtml(thumbnail);\r\n        sub.unsubscribe();\r\n      });\r\n  }\r\n\r\n  nextNode(node: any) {\r\n    if (node.hasChildNodes()) {\r\n      return node.firstChild;\r\n    } else {\r\n      while (node && !node.nextSibling) {\r\n        node = node.parentNode;\r\n      }\r\n      if (!node) {\r\n        return null;\r\n      }\r\n      return node.nextSibling;\r\n    }\r\n  }\r\n\r\n  getRangeSelectedNodes(range, includePartiallySelectedContainers) {\r\n    let node = range.startContainer;\r\n    const endNode = range.endContainer;\r\n    let rangeNodes = [] as any[];\r\n\r\n    // Special case for a range that is contained within a single node\r\n    if (node === endNode) {\r\n      rangeNodes = [node];\r\n    } else {\r\n      // Iterate nodes until we hit the end container\r\n      while (node && node !== endNode) {\r\n        rangeNodes.push((node = this.nextNode(node)));\r\n      }\r\n\r\n      // Add partially selected nodes at the start of the range\r\n      node = range.startContainer;\r\n      while (node && node !== range.commonAncestorContainer) {\r\n        rangeNodes.unshift(node);\r\n        node = node.parentNode;\r\n      }\r\n    }\r\n\r\n    // Add ancestors of the range container, if required\r\n    if (includePartiallySelectedContainers) {\r\n      node = range.commonAncestorContainer;\r\n      while (node) {\r\n        rangeNodes.push(node);\r\n        node = node.parentNode;\r\n      }\r\n    }\r\n\r\n    return rangeNodes;\r\n  }\r\n\r\n  getSelectedNodes() {\r\n    const nodes = [] as any[];\r\n    if (this.doc.getSelection) {\r\n      const sel = this.doc.getSelection() as Selection;\r\n      for (let i = 0, len = sel.rangeCount; i < len; ++i) {\r\n        nodes.push.apply(\r\n          nodes,\r\n          this.getRangeSelectedNodes(sel.getRangeAt(i), true),\r\n        );\r\n      }\r\n    }\r\n    return nodes;\r\n  }\r\n\r\n  replaceWithOwnChildren(el) {\r\n    const parent = el.parentNode;\r\n    while (el.hasChildNodes()) {\r\n      parent.insertBefore(el.firstChild, el);\r\n    }\r\n    parent.removeChild(el);\r\n  }\r\n\r\n  removeSelectedElements(tagNames) {\r\n    const tagNamesArray = tagNames.toLowerCase().split(',');\r\n    this.getSelectedNodes().forEach((node) => {\r\n      if (\r\n        node.nodeType === 1 &&\r\n        tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1\r\n      ) {\r\n        this.replaceWithOwnChildren(node);\r\n      }\r\n    });\r\n  }\r\n\r\n  getInnerTextFromNode(node: HTMLElement): string | null {\r\n    if (!node) return null;\r\n    if (node.innerText) {\r\n      return node.innerText;\r\n    }\r\n    const text = [];\r\n    for (let child of Array.from(node.childNodes)) {\r\n      text.push(child.textContent);\r\n    }\r\n    return text.join('');\r\n  }\r\n\r\n  getInnerHTMLFromNode(node: HTMLElement): string | null {\r\n    if (!node) return null;\r\n    if (node.innerHTML) {\r\n      return node.innerHTML;\r\n    }\r\n    let combinedInnerHTML = '';\r\n    for (let i = 0; i < node.childNodes.length; i++) {\r\n      const childNode = node.childNodes[i] as HTMLElement;\r\n      if (childNode.nodeType === 1) {\r\n        combinedInnerHTML += childNode.innerHTML;\r\n      }\r\n    }\r\n    return combinedInnerHTML;\r\n  }\r\n\r\n  getFirstParentWithProperty(node: any, className: string) {\r\n    if (!node) return null;\r\n    if (node.classList?.contains(className)) {\r\n      return node;\r\n    }\r\n    return this.getFirstParentWithProperty(node.parentNode, className);\r\n  }\r\n}\r\n","export function isDefined(value: any) {\r\n  return value !== undefined && value !== null;\r\n}\r\n","import {\r\n  Attribute,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { isDefined } from '../utils';\r\n\r\nexport interface SelectOption {\r\n  label: string;\r\n  value: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'ae-select',\r\n  templateUrl: './ae-select.component.html',\r\n  styleUrls: ['./ae-select.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => AeSelectComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class AeSelectComponent implements OnInit, ControlValueAccessor {\r\n  @Input() options: SelectOption[] = [];\r\n  // eslint-disable-next-line @angular-eslint/no-input-rename\r\n  @Input('hidden') isHidden: boolean;\r\n\r\n  selectedOption: SelectOption;\r\n  disabled = false;\r\n  optionId = 0;\r\n\r\n  get label(): string {\r\n    return this.selectedOption && this.selectedOption.hasOwnProperty('label')\r\n      ? this.selectedOption.label\r\n      : 'Select';\r\n  }\r\n\r\n  opened = false;\r\n\r\n  get value(): string {\r\n    return this.selectedOption.value;\r\n  }\r\n\r\n  @HostBinding('style.display') hidden = 'inline-block';\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\r\n  @Output('change') changeEvent = new EventEmitter();\r\n\r\n  @ViewChild('labelButton', { static: true }) labelButton: ElementRef;\r\n\r\n  constructor(\r\n    private elRef: ElementRef,\r\n    private r: Renderer2,\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.selectedOption = this.options[0];\r\n    if (isDefined(this.isHidden) && this.isHidden) {\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    this.hidden = 'none';\r\n  }\r\n\r\n  optionSelect(option: SelectOption, event: MouseEvent) {\r\n    event.stopPropagation();\r\n    this.setValue(option.value);\r\n    this.onChange(this.selectedOption.value);\r\n    this.changeEvent.emit(this.selectedOption.value);\r\n    this.onTouched();\r\n    this.opened = false;\r\n  }\r\n\r\n  toggleOpen(event: MouseEvent) {\r\n    // event.stopPropagation();\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.opened = !this.opened;\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onClick($event: MouseEvent) {\r\n    if (!this.elRef.nativeElement.contains($event.target)) {\r\n      this.close();\r\n    }\r\n  }\r\n\r\n  close() {\r\n    this.opened = false;\r\n  }\r\n\r\n  get isOpen(): boolean {\r\n    return this.opened;\r\n  }\r\n\r\n  writeValue(value) {\r\n    if (!value || typeof value !== 'string') {\r\n      return;\r\n    }\r\n    this.setValue(value);\r\n  }\r\n\r\n  setValue(value) {\r\n    let index = 0;\r\n    const selectedEl = this.options.find((el, i) => {\r\n      index = i;\r\n      return el.value === value;\r\n    });\r\n    if (selectedEl) {\r\n      this.selectedOption = selectedEl;\r\n      this.optionId = index;\r\n    }\r\n  }\r\n\r\n  onChange: any = () => {};\r\n  onTouched: any = () => {};\r\n\r\n  registerOnChange(fn) {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn) {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.labelButton.nativeElement.disabled = isDisabled;\r\n    const div = this.labelButton.nativeElement;\r\n    const action = isDisabled ? 'addClass' : 'removeClass';\r\n    this.r[action](div, 'disabled');\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  @HostListener('keydown', ['$event'])\r\n  handleKeyDown($event: KeyboardEvent) {\r\n    if (!this.opened) {\r\n      return;\r\n    }\r\n    switch ($event.key) {\r\n      case 'ArrowDown':\r\n        this._handleArrowDown($event);\r\n        break;\r\n      case 'ArrowUp':\r\n        this._handleArrowUp($event);\r\n        break;\r\n      case 'Space':\r\n        this._handleSpace($event);\r\n        break;\r\n      case 'Enter':\r\n        this._handleEnter($event);\r\n        break;\r\n      case 'Tab':\r\n        this._handleTab($event);\r\n        break;\r\n      case 'Escape':\r\n        this.close();\r\n        $event.preventDefault();\r\n        break;\r\n      case 'Backspace':\r\n        this._handleBackspace();\r\n        break;\r\n    }\r\n  }\r\n\r\n  _handleArrowDown($event) {\r\n    if (this.optionId < this.options.length - 1) {\r\n      this.optionId++;\r\n    }\r\n  }\r\n\r\n  _handleArrowUp($event) {\r\n    if (this.optionId >= 1) {\r\n      this.optionId--;\r\n    }\r\n  }\r\n\r\n  _handleSpace($event) {}\r\n\r\n  _handleEnter($event) {\r\n    this.optionSelect(this.options[this.optionId], $event);\r\n  }\r\n\r\n  _handleTab($event) {}\r\n\r\n  _handleBackspace() {}\r\n}\r\n","<span class=\"ae-font ae-picker\" [ngClass]=\"{'ae-expanded':isOpen}\">\r\n  <button [tabIndex]=\"-1\" #labelButton tabindex=\"0\" type=\"button\" role=\"button\" class=\"ae-picker-label\" (click)=\"toggleOpen($event);\">{{label}}\r\n    <svg viewBox=\"0 0 18 18\">\r\n      <polygon class=\"ae-stroke\" points=\"7 11 9 13 11 11 7 11\"></polygon>\r\n      <polygon class=\"ae-stroke\" points=\"7 7 9 5 11 7 7 7\"></polygon>\r\n    </svg>\r\n  </button>\r\n  <span class=\"ae-picker-options\">\r\n    <button tabindex=\"-1\" type=\"button\" role=\"button\" class=\"ae-picker-item\"\r\n          *ngFor=\"let item of options; let i = index\"\r\n          [ngClass]=\"{'selected': item.value === value, 'focused': i === optionId}\"\r\n          (click)=\"optionSelect(item, $event)\">\r\n          {{item.label}}\r\n    </button>\r\n    <span class=\"dropdown-item\" *ngIf=\"!options.length\">No items for select</span>\r\n  </span>\r\n</span>\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { AngularEditorService, UploadResponse } from './angular-editor.service';\r\nimport { HttpResponse, HttpEvent } from '@angular/common/http';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { CustomClass } from './config';\r\nimport { SelectOption } from './ae-select/ae-select.component';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'angular-editor-toolbar',\r\n  templateUrl: './angular-editor-toolbar.component.html',\r\n  styleUrls: ['./angular-editor-toolbar.component.scss'],\r\n})\r\nexport class AngularEditorToolbarComponent {\r\n  htmlMode = false;\r\n  linkSelected = false;\r\n  block = 'default';\r\n  fontName = 'Times New Roman';\r\n  fontSize = '3';\r\n  foreColour;\r\n  backColor;\r\n\r\n  headings: SelectOption[] = [\r\n    {\r\n      label: 'Heading 1',\r\n      value: 'h1',\r\n    },\r\n    {\r\n      label: 'Heading 2',\r\n      value: 'h2',\r\n    },\r\n    {\r\n      label: 'Heading 3',\r\n      value: 'h3',\r\n    },\r\n    {\r\n      label: 'Heading 4',\r\n      value: 'h4',\r\n    },\r\n    {\r\n      label: 'Heading 5',\r\n      value: 'h5',\r\n    },\r\n    {\r\n      label: 'Heading 6',\r\n      value: 'h6',\r\n    },\r\n    {\r\n      label: 'Paragraph',\r\n      value: 'p',\r\n    },\r\n    {\r\n      label: 'Predefined',\r\n      value: 'pre',\r\n    },\r\n    {\r\n      label: 'Standard',\r\n      value: 'div',\r\n    },\r\n    {\r\n      label: 'default',\r\n      value: 'default',\r\n    },\r\n  ];\r\n\r\n  fontSizes: SelectOption[] = [\r\n    {\r\n      label: '1',\r\n      value: '1',\r\n    },\r\n    {\r\n      label: '2',\r\n      value: '2',\r\n    },\r\n    {\r\n      label: '3',\r\n      value: '3',\r\n    },\r\n    {\r\n      label: '4',\r\n      value: '4',\r\n    },\r\n    {\r\n      label: '5',\r\n      value: '5',\r\n    },\r\n    {\r\n      label: '6',\r\n      value: '6',\r\n    },\r\n    {\r\n      label: '7',\r\n      value: '7',\r\n    },\r\n  ];\r\n\r\n  customClassId = '-1';\r\n  _customClasses: CustomClass[];\r\n  customClassList: SelectOption[] = [{ label: '', value: '' }];\r\n\r\n  tagMap = {\r\n    BLOCKQUOTE: 'indent',\r\n    A: 'link',\r\n  };\r\n\r\n  select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];\r\n\r\n  buttons = [\r\n    'bold',\r\n    'italic',\r\n    'underline',\r\n    'strikeThrough',\r\n    'subscript',\r\n    'superscript',\r\n    'justifyLeft',\r\n    'justifyCenter',\r\n    'justifyRight',\r\n    'justifyFull',\r\n    'indent',\r\n    'outdent',\r\n    'insertUnorderedList',\r\n    'insertOrderedList',\r\n    'link',\r\n  ];\r\n\r\n  @Input() id: string;\r\n  @Input() uploadUrl: string;\r\n  @Input() upload: (file: File) => Observable<HttpEvent<UploadResponse>>;\r\n  @Input() showToolbar: boolean;\r\n  @Input() fonts: SelectOption[] = [{ label: '', value: '' }];\r\n\r\n  @Input()\r\n  set customClasses(classes: CustomClass[]) {\r\n    if (classes) {\r\n      this._customClasses = classes;\r\n      this.customClassList = this._customClasses.map((x, i) => ({\r\n        label: x.name,\r\n        value: i.toString(),\r\n      }));\r\n      this.customClassList.unshift({ label: 'Clear Class', value: '-1' });\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set defaultFontName(value: string) {\r\n    if (value) {\r\n      this.fontName = value;\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set defaultFontSize(value: string) {\r\n    if (value) {\r\n      this.fontSize = value;\r\n    }\r\n  }\r\n\r\n  @Input() hiddenButtons: string[][];\r\n\r\n  @Output() execute: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  @ViewChild('fileInput', { static: true }) myInputFile: ElementRef;\r\n\r\n  public get isLinkButtonDisabled(): boolean {\r\n    return this.htmlMode || !Boolean(this.editorService.selectedText);\r\n  }\r\n\r\n  constructor(\r\n    private r: Renderer2,\r\n    private editorService: AngularEditorService,\r\n    private er: ElementRef,\r\n    // @ts-ignore\r\n    @Inject(DOCUMENT) private doc: any,\r\n  ) {}\r\n\r\n  /**\r\n   * Trigger command from editor header buttons\r\n   * @param command string from toolbar buttons\r\n   */\r\n  triggerCommand(command: string) {\r\n    this.execute.emit(command);\r\n  }\r\n\r\n  /**\r\n   * highlight editor buttons when cursor moved or positioning\r\n   */\r\n  triggerButtons() {\r\n    if (!this.showToolbar) {\r\n      return;\r\n    }\r\n    this.buttons.forEach((e) => {\r\n      const result = this.doc.queryCommandState(e);\r\n      const elementById = this.doc.getElementById(e + '-' + this.id);\r\n      if (result) {\r\n        this.r.addClass(elementById, 'active');\r\n      } else {\r\n        this.r.removeClass(elementById, 'active');\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * trigger highlight editor buttons when cursor moved or positioning in block\r\n   */\r\n  triggerBlocks(nodes: Node[]) {\r\n    if (!this.showToolbar) {\r\n      return;\r\n    }\r\n    this.linkSelected = nodes.findIndex((x) => x.nodeName === 'A') > -1;\r\n    let found = false;\r\n    this.select.forEach((y) => {\r\n      const node = nodes.find((x) => x.nodeName === y);\r\n      if (node !== undefined && y === node.nodeName) {\r\n        if (found === false) {\r\n          this.block = node.nodeName.toLowerCase();\r\n          found = true;\r\n        }\r\n      } else if (found === false) {\r\n        this.block = 'default';\r\n      }\r\n    });\r\n\r\n    found = false;\r\n    if (this._customClasses) {\r\n      this._customClasses.forEach((y, index) => {\r\n        const node = nodes.find((x) => {\r\n          if (x instanceof Element) {\r\n            return x.className === y.class;\r\n          }\r\n        });\r\n        if (node !== undefined) {\r\n          if (found === false) {\r\n            this.customClassId = index.toString();\r\n            found = true;\r\n          }\r\n        } else if (found === false) {\r\n          this.customClassId = '-1';\r\n        }\r\n      });\r\n    }\r\n\r\n    Object.keys(this.tagMap).map((e) => {\r\n      const elementById = this.doc.getElementById(\r\n        this.tagMap[e] + '-' + this.id,\r\n      );\r\n      const node = nodes.find((x) => x.nodeName === e);\r\n      if (node !== undefined && e === node.nodeName) {\r\n        this.r.addClass(elementById, 'active');\r\n      } else {\r\n        this.r.removeClass(elementById, 'active');\r\n      }\r\n    });\r\n\r\n    this.foreColour = this.doc.queryCommandValue('ForeColor');\r\n    this.fontSize = this.doc.queryCommandValue('FontSize');\r\n    this.fontName = this.doc.queryCommandValue('FontName').replace(/\"/g, '');\r\n    this.backColor = this.doc.queryCommandValue('backColor');\r\n  }\r\n\r\n  /**\r\n   * insert URL link\r\n   */\r\n  insertUrl() {\r\n    let url: string | null = 'https://';\r\n    const selection = this.editorService.savedSelection;\r\n    if (\r\n      selection &&\r\n      selection.commonAncestorContainer?.parentElement?.nodeName === 'A'\r\n    ) {\r\n      const parent = selection.commonAncestorContainer\r\n        .parentElement as HTMLAnchorElement;\r\n      if (parent.href !== '') {\r\n        url = parent.href;\r\n      }\r\n    }\r\n    url = prompt('Insert URL link', url);\r\n    if (url && url !== '' && url !== 'https://') {\r\n      this.editorService.createLink(url);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * insert Video link\r\n   */\r\n  insertVideo() {\r\n    this.execute.emit('');\r\n    const url = prompt('Insert Video link', `https://`);\r\n    if (url && url !== '' && url !== `https://`) {\r\n      this.editorService.insertVideo(url);\r\n    }\r\n  }\r\n\r\n  /** insert color */\r\n  insertColor(color: string, where: string) {\r\n    this.editorService.insertColor(color, where);\r\n    this.execute.emit('');\r\n  }\r\n\r\n  /**\r\n   * set font Name/family\r\n   * @param foreColor string\r\n   */\r\n  setFontName(foreColor: string): void {\r\n    this.editorService.setFontName(foreColor);\r\n    this.execute.emit('');\r\n  }\r\n\r\n  /**\r\n   * set font Size\r\n   * @param fontSize string\r\n   */\r\n  setFontSize(fontSize: string): void {\r\n    this.editorService.setFontSize(fontSize);\r\n    this.execute.emit('');\r\n  }\r\n\r\n  /**\r\n   * toggle editor mode (WYSIWYG or SOURCE)\r\n   * @param m boolean\r\n   */\r\n  setEditorMode(m: boolean) {\r\n    const toggleEditorModeButton = this.doc.getElementById(\r\n      'toggleEditorMode' + '-' + this.id,\r\n    );\r\n    if (m) {\r\n      this.r.addClass(toggleEditorModeButton, 'active');\r\n    } else {\r\n      this.r.removeClass(toggleEditorModeButton, 'active');\r\n    }\r\n    this.htmlMode = m;\r\n  }\r\n\r\n  /**\r\n   * Upload image when file is selected.\r\n   */\r\n  onFileChanged(event) {\r\n    const file = event.target.files[0];\r\n    if (file.type.includes('image/')) {\r\n      if (this.upload) {\r\n        this.upload(file).subscribe((response: HttpResponse<UploadResponse>) =>\r\n          this.watchUploadImage(response, event),\r\n        );\r\n      } else if (this.uploadUrl) {\r\n        this.editorService\r\n          .uploadImage(file)\r\n          .subscribe((response: HttpResponse<UploadResponse>) =>\r\n            this.watchUploadImage(response, event),\r\n          );\r\n      } else {\r\n        const reader = new FileReader();\r\n        reader.onload = (e: ProgressEvent) => {\r\n          const fr = e.currentTarget as FileReader;\r\n          if (!fr || !fr.result) {\r\n            console.error(`No file selected.`);\r\n            return;\r\n          }\r\n          this.editorService.insertImage(fr.result.toString());\r\n        };\r\n        reader.readAsDataURL(file);\r\n      }\r\n    }\r\n  }\r\n\r\n  watchUploadImage(response: HttpResponse<{ imageUrl: string }>, event) {\r\n    if (!response?.body?.imageUrl) {\r\n      console.error(\r\n        `Request body is empty or imageUrl property is not on the response`,\r\n        response,\r\n      );\r\n      return;\r\n    }\r\n    const { imageUrl } = response.body;\r\n    this.editorService.insertImage(imageUrl);\r\n    event.srcElement.value = null;\r\n  }\r\n\r\n  /**\r\n   * Set custom class\r\n   */\r\n  setCustomClass(classId: string) {\r\n    if (classId === '-1') {\r\n      this.execute.emit('clear');\r\n    } else {\r\n      this.editorService.createCustomClass(this._customClasses[+classId]);\r\n    }\r\n  }\r\n\r\n  isButtonHidden(name: string): boolean {\r\n    if (!name) {\r\n      return false;\r\n    }\r\n    if (!(this.hiddenButtons instanceof Array)) {\r\n      return false;\r\n    }\r\n    let result: any;\r\n    for (const arr of this.hiddenButtons) {\r\n      if (arr instanceof Array) {\r\n        result = arr.find((item) => item === name);\r\n      }\r\n      if (result) {\r\n        break;\r\n      }\r\n    }\r\n    return result !== undefined;\r\n  }\r\n\r\n  focus() {\r\n    this.execute.emit('focus');\r\n  }\r\n}\r\n","<div class=\"angular-editor-toolbar\" *ngIf=\"showToolbar\">\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button type=\"button\" title=\"Undo\" class=\"angular-editor-button\" (click)=\"triggerCommand('undo')\"\r\n            [hidden]=\"isButtonHidden('undo')\" tabindex=\"-1\"><i\r\n      class='fa fa-undo'></i></button>\r\n    <button type=\"button\" title=\"Redo\" class=\"angular-editor-button\" (click)=\"triggerCommand('redo')\"\r\n            [hidden]=\"isButtonHidden('redo')\" tabindex=\"-1\"><i\r\n      class='fa fa-repeat'></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'bold-'+id\" type=\"button\" title=\"Bold\" class=\"angular-editor-button\" (click)=\"triggerCommand('bold')\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('bold')\" tabindex=\"-1\"><i class='fa fa-bold'></i></button>\r\n    <button [id]=\"'italic-'+id\" type=\"button\" title=\"Italic\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('italic')\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('italic')\" tabindex=\"-1\"><i class='fa fa-italic'></i>\r\n    </button>\r\n    <button [id]=\"'underline-'+id\" type=\"button\" title=\"Underline\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('underline')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('underline')\"\r\n            tabindex=\"-1\"><i class='fa fa-underline'></i></button>\r\n    <button [id]=\"'strikeThrough-'+id\" type=\"button\" title=\"Strikethrough\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('strikeThrough')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('strikeThrough')\"\r\n            tabindex=\"-1\"><i class='fa fa-strikethrough'></i></button>\r\n    <button [id]=\"'subscript-'+id\" type=\"button\" title=\"Subscript\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('subscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('subscript')\"\r\n            tabindex=\"-1\"><i class='fa fa-subscript'></i></button>\r\n    <button [id]=\"'superscript-'+id\" type=\"button\" title=\"Superscript\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('superscript')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('superscript')\"\r\n            tabindex=\"-1\"><i class='fa fa-superscript'></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'justifyLeft-'+id\" type=\"button\" title=\"Justify Left\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('justifyLeft')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyLeft')\"\r\n            tabindex=\"-1\"><i\r\n      class='fa fa-align-left'></i></button>\r\n    <button [id]=\"'justifyCenter-'+id\" type=\"button\" title=\"Justify Center\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('justifyCenter')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyCenter')\"\r\n            tabindex=\"-1\"><i\r\n      class='fa fa-align-center'></i></button>\r\n    <button [id]=\"'justifyRight-'+id\" type=\"button\" title=\"Justify Right\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('justifyRight')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyRight')\"\r\n            tabindex=\"-1\">\r\n      <i class='fa fa-align-right'></i></button>\r\n    <button [id]=\"'justifyFull-'+id\" type=\"button\" title=\"Justify Full\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('justifyFull')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('justifyFull')\"\r\n            tabindex=\"-1\"><i\r\n      class='fa fa-align-justify'></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'indent-'+id\" type=\"button\" title=\"Indent\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('indent')\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('indent')\" tabindex=\"-1\"><i\r\n      class='fa fa-indent'></i></button>\r\n    <button [id]=\"'outdent-'+id\" type=\"button\" title=\"Outdent\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('outdent')\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('outdent')\" tabindex=\"-1\"><i\r\n      class='fa fa-outdent'></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'insertUnorderedList-'+id\" type=\"button\" title=\"Unordered List\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('insertUnorderedList')\" [disabled]=\"htmlMode\"\r\n            [hidden]=\"isButtonHidden('insertUnorderedList')\" tabindex=\"-1\"><i\r\n      class='fa fa-list-ul'></i></button>\r\n    <button [id]=\"'insertOrderedList-'+id\" type=\"button\" title=\"Ordered List\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('insertOrderedList')\" [disabled]=\"htmlMode\"\r\n            [hidden]=\"isButtonHidden('insertOrderedList')\" tabindex=\"-1\"><i\r\n      class='fa fa-list-ol'></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n\r\n    <ae-select class=\"select-heading\" [options]=\"headings\"\r\n               [(ngModel)]=\"block\"\r\n               (change)=\"triggerCommand(block)\"\r\n               [disabled]=\"htmlMode\"\r\n               [hidden]=\"isButtonHidden('heading')\"\r\n               tabindex=\"-1\"></ae-select>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <ae-select class=\"select-font\" [options]=\"fonts\"\r\n               [(ngModel)]=\"fontName\"\r\n               (change)=\"setFontName(fontName)\"\r\n               [disabled]=\"htmlMode\"\r\n               tabindex=\"-1\"\r\n               title=\"Font Family\"></ae-select>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <ae-select class=\"select-font-size\" [options]=\"fontSizes\"\r\n               [(ngModel)]=\"fontSize\"\r\n               (change)=\"setFontSize(fontSize)\"\r\n               [disabled]=\"htmlMode\"\r\n               [hidden]=\"isButtonHidden('fontSize')\"\r\n               tabindex=\"-1\"\r\n               title=\"Font Size\">\r\n    </ae-select>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <input\r\n      style=\"display: none\"\r\n      type=\"color\" (change)=\"insertColor(fgInput.value, 'textColor')\"\r\n      #fgInput>\r\n    <button [id]=\"'foregroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; fgInput.click()\"\r\n            title=\"Text Color\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('textColor')\" tabindex=\"-1\"><span\r\n      class=\"color-label foreground\"><i class=\"fa fa-font\"></i></span>\r\n    </button>\r\n    <input\r\n      style=\"display: none\"\r\n      type=\"color\" (change)=\"insertColor(bgInput.value, 'backgroundColor')\"\r\n      #bgInput>\r\n    <button [id]=\"'backgroundColorPicker-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); ; bgInput.click()\"\r\n            title=\"Background Color\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('backgroundColor')\" tabindex=\"-1\"><span\r\n      class=\"color-label background\"><i class=\"fa fa-font\"></i></span>\r\n    </button>\r\n  </div>\r\n  <div *ngIf=\"_customClasses\" class=\"angular-editor-toolbar-set\">\r\n    <ae-select class=\"select-custom-style\" [options]=\"customClassList\"\r\n               [(ngModel)]=\"customClassId\"\r\n               (change)=\"setCustomClass(customClassId)\"\r\n               [disabled]=\"htmlMode\"\r\n               [hidden]=\"isButtonHidden('customClasses')\"\r\n               tabindex=\"-1\"></ae-select>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'link-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"insertUrl()\"\r\n            title=\"Insert Link\" [disabled]=\"isLinkButtonDisabled\" [hidden]=\"isButtonHidden('link')\" tabindex=\"-1\">\r\n      <i class=\"fa fa-link\"></i>\r\n    </button>\r\n    <button [id]=\"'unlink-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"triggerCommand('unlink')\"\r\n            title=\"Unlink\" [disabled]=\"htmlMode || !linkSelected\" [hidden]=\"isButtonHidden('unlink')\" tabindex=\"-1\">\r\n      <i class=\"fa fa-chain-broken\"></i>\r\n    </button>\r\n    <input\r\n      style=\"display: none\"\r\n      accept=\"image/*\"\r\n      type=\"file\" (change)=\"onFileChanged($event)\"\r\n      #fileInput>\r\n    <button [id]=\"'insertImage-'+id\" type=\"button\" class=\"angular-editor-button\" (click)=\"focus(); fileInput.click()\"\r\n            title=\"Insert Image\"\r\n            [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertImage')\" tabindex=\"-1\"><i class=\"fa fa-image\"></i>\r\n    </button>\r\n    <button [id]=\"'insertVideo-'+id\" type=\"button\" class=\"angular-editor-button\"\r\n            (click)=\"insertVideo()\" title=\"Insert Video\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('insertVideo')\"\r\n            tabindex=\"-1\"><i\r\n      class=\"fa fa-video-camera\"></i></button>\r\n    <button [id]=\"'insertHorizontalRule-'+id\" type=\"button\" title=\"Horizontal Line\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('insertHorizontalRule')\" [disabled]=\"htmlMode\"\r\n            [hidden]=\"isButtonHidden('insertHorizontalRule')\" tabindex=\"-1\"><i\r\n      class=\"fa fa-minus\"></i></button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'clearFormatting-'+id\" type=\"button\" title=\"Clear Formatting\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('removeFormat')\" [disabled]=\"htmlMode\" [hidden]=\"isButtonHidden('removeFormat')\"\r\n            tabindex=\"-1\"><i class='fa fa-remove'></i>\r\n    </button>\r\n  </div>\r\n  <div class=\"angular-editor-toolbar-set\">\r\n    <button [id]=\"'toggleEditorMode-'+id\" type=\"button\" title=\"HTML Code\" class=\"angular-editor-button\"\r\n            (click)=\"triggerCommand('toggleEditorMode')\" [hidden]=\"isButtonHidden('toggleEditorMode')\" tabindex=\"-1\"><i\r\n      class='fa fa-code'></i></button>\r\n  </div>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { UploadResponse } from './angular-editor.service';\r\nimport { HttpEvent } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface CustomClass {\r\n  name: string;\r\n  class: string;\r\n  tag?: string;\r\n}\r\n\r\nexport interface Font {\r\n  name: string;\r\n  class: string;\r\n}\r\n\r\nexport interface AngularEditorConfig {\r\n  editable?: boolean;\r\n  spellcheck?: boolean;\r\n  height?: 'auto' | string;\r\n  minHeight?: '0' | string;\r\n  maxHeight?: 'auto' | string;\r\n  /**\r\n   * @description background-color property of the editor textarea element\r\n   * @default 'white'\r\n   */\r\n  textAreaBackgroundColor?: string;\r\n  width?: 'auto' | string;\r\n  minWidth?: '0' | string;\r\n  translate?: 'yes' | 'now' | string;\r\n  enableToolbar?: boolean;\r\n  showToolbar?: boolean;\r\n  placeholder?: string;\r\n  defaultParagraphSeparator?: string;\r\n  defaultFontName?: string;\r\n  defaultFontSize?: '1' | '2' | '3' | '4' | '5' | '6' | '7' | string;\r\n  uploadUrl?: string;\r\n  upload?: (file: File) => Observable<HttpEvent<UploadResponse>>;\r\n  uploadWithCredentials?: boolean;\r\n  fonts?: Font[];\r\n  customClasses?: CustomClass[];\r\n  sanitize?: boolean;\r\n  toolbarPosition?: 'top' | 'bottom';\r\n  /**\r\n   * @description show outline on textarea when on focus\r\n   * @default true\r\n   */\r\n  outline?: boolean;\r\n  toolbarHiddenButtons?: string[][];\r\n  rawPaste?: boolean;\r\n  editHistoryLimit?: number;\r\n  /**\r\n   *  @description Number indicating how fast mouse drag will cause image to resize\r\n   *  @default 2\r\n   */\r\n  imageResizeSensitivity?: number;\r\n  /**\r\n   * @description Enable or disable text patter checks example '> ' and '* '\r\n   * @default true\r\n   */\r\n  textPatternsEnabled?: boolean;\r\n}\r\n\r\nexport const angularEditorConfig: AngularEditorConfig = {\r\n  editable: true,\r\n  spellcheck: true,\r\n  height: 'auto',\r\n  minHeight: '0',\r\n  maxHeight: 'auto',\r\n  textAreaBackgroundColor: 'white',\r\n  width: 'auto',\r\n  minWidth: '0',\r\n  translate: 'yes',\r\n  enableToolbar: true,\r\n  showToolbar: true,\r\n  placeholder: 'Enter text here...',\r\n  defaultParagraphSeparator: '',\r\n  defaultFontName: '',\r\n  defaultFontSize: '',\r\n  fonts: [\r\n    { class: 'arial', name: 'Arial' },\r\n    { class: 'times-new-roman', name: 'Times New Roman' },\r\n    { class: 'calibri', name: 'Calibri' },\r\n    { class: 'comic-sans-ms', name: 'Comic Sans MS' },\r\n  ],\r\n  // uploadUrl: 'v1/image',\r\n  uploadWithCredentials: false,\r\n  sanitize: true,\r\n  toolbarPosition: 'top',\r\n  outline: true,\r\n  /*toolbarHiddenButtons: [\r\n    ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\r\n    ['heading', 'fontName', 'fontSize', 'color'],\r\n    ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n    ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\r\n    ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\r\n    ['link', 'unlink', 'image', 'video']\r\n  ]*/\r\n  editHistoryLimit: 50,\r\n  imageResizeSensitivity: 2,\r\n  textPatternsEnabled: true,\r\n};\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  Attribute,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SecurityContext,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { AngularEditorToolbarComponent } from './angular-editor-toolbar.component';\r\nimport { AngularEditorService } from './angular-editor.service';\r\nimport { AngularEditorConfig, angularEditorConfig } from './config';\r\nimport { isDefined } from './utils';\r\nimport { Subject, throttleTime } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'angular-editor',\r\n  templateUrl: './angular-editor.component.html',\r\n  styleUrls: ['./angular-editor.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => AngularEditorComponent),\r\n      multi: true,\r\n    },\r\n    AngularEditorService,\r\n  ],\r\n})\r\nexport class AngularEditorComponent\r\n  implements OnInit, ControlValueAccessor, AfterViewInit, OnDestroy\r\n{\r\n  private onChange: (value: string) => void;\r\n  private onTouched: () => void;\r\n\r\n  modeVisual = true;\r\n  showPlaceholder = false;\r\n  disabled = false;\r\n  focused = false;\r\n  touched = false;\r\n  changed = false;\r\n  pasting = false;\r\n\r\n  mouseMoveEvtListener = () => {};\r\n  currentSelectedImage: any = null;\r\n  editSubject = new Subject();\r\n  editHistory = [] as any[];\r\n  currentHistoryIndex = -1;\r\n\r\n  focusInstance: any;\r\n  blurInstance: any;\r\n\r\n  fonts: { label: string, value: string }[] = [];\r\n\r\n\r\n  @Input() id = '';\r\n  @Input() config: AngularEditorConfig = angularEditorConfig;\r\n  @Input() placeholder = '';\r\n  @Input() tabIndex: number | null;\r\n\r\n  @Output() html;\r\n\r\n  @ViewChild('editor', { static: true }) textArea: ElementRef;\r\n  @ViewChild('editorWrapper', { static: true }) editorWrapper: ElementRef;\r\n  @ViewChild('editorToolbar') editorToolbar: AngularEditorToolbarComponent;\r\n  @ContentChild('customButtons') customButtonsTemplateRef?: TemplateRef<any>;\r\n  executeCommandFn = this.executeCommand.bind(this);\r\n\r\n  @Output() viewMode = new EventEmitter<boolean>();\r\n\r\n  /** emits `blur` event when focused out from the textarea */\r\n  // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\r\n  @Output('blur') blurEvent: EventEmitter<FocusEvent> =\r\n    new EventEmitter<FocusEvent>();\r\n\r\n  /** emits `focus` event when focused in to the textarea */\r\n  // eslint-disable-next-line @angular-eslint/no-output-rename, @angular-eslint/no-output-native\r\n  @Output('focus') focusEvent: EventEmitter<FocusEvent> =\r\n    new EventEmitter<FocusEvent>();\r\n\r\n  pastingCompleted: EventEmitter<any> = new EventEmitter();\r\n\r\n  \r\n  \r\n  @HostBinding('attr.tabindex') tabindex = -1;\r\n\r\n  @HostListener('focus')\r\n  onFocus() {\r\n    this.focus();\r\n  }\r\n\r\n  @HostListener('contextmenu')\r\n  preventContextMenu() {\r\n    this.unselectImage();\r\n  }\r\n\r\n  @HostListener('window:click', ['$event.target'])\r\n  onClick(e) {\r\n    if (!this.focused) return;\r\n    this.unselectImage();\r\n    if (!e || e.tagName !== 'IMG') return;\r\n    this.currentSelectedImage = e;\r\n    this.addResizeWrapper();\r\n    this.selectImage();\r\n    this.fontSettingsRefresh();\r\n    this.onContentChange(this.textArea.nativeElement);\r\n  }\r\n\r\n  constructor(\r\n    private r: Renderer2,\r\n    private editorService: AngularEditorService,\r\n    // @ts-ignore\r\n    @Inject(DOCUMENT) private doc: Document,\r\n    private sanitizer: DomSanitizer,\r\n    private cdRef: ChangeDetectorRef,\r\n    // @ts-ignore\r\n    @Attribute('tabindex') defaultTabIndex: string,\r\n    // @ts-ignore\r\n    @Attribute('autofocus') private autoFocus: any,\r\n  ) {\r\n    const parsedTabIndex = Number(defaultTabIndex);\r\n    this.tabIndex =\r\n      parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\r\n    this.editSubject\r\n      .pipe(throttleTime(200, undefined, { leading: false, trailing: true }))\r\n      .subscribe((html) => {\r\n        this.addHistory(html);\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.fonts = this.getFonts();\r\n    this.config.toolbarPosition = this.config.toolbarPosition\r\n      ? this.config.toolbarPosition\r\n      : angularEditorConfig.toolbarPosition;\r\n    this.config.editHistoryLimit = this.config.editHistoryLimit\r\n      ? this.config.editHistoryLimit\r\n      : angularEditorConfig.editHistoryLimit;\r\n    this.config.imageResizeSensitivity = this.config.imageResizeSensitivity\r\n      ? this.config.imageResizeSensitivity\r\n      : angularEditorConfig.imageResizeSensitivity;\r\n    this.config.textPatternsEnabled =\r\n      this.config.textPatternsEnabled == null\r\n        ? angularEditorConfig.textPatternsEnabled\r\n        : this.config.textPatternsEnabled;\r\n    \r\n        this.pastingCompleted.subscribe(() => {\r\n          this.editorService.setFontSize('3');\r\n      });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (isDefined(this.autoFocus)) {\r\n      this.focus();\r\n    }\r\n  }\r\n\r\n  ePos;\r\n  resizeImage = (currentSelected, renderer2) => (e) => {\r\n    if (!currentSelected) return;\r\n    const resizeSensitivity =\r\n      this.config.imageResizeSensitivity ||\r\n      angularEditorConfig.imageResizeSensitivity ||\r\n      2;\r\n    const currX = e.x != null ? e.x : e.clientX;\r\n    const dx = this.ePos - currX;\r\n    this.ePos = currX;\r\n    let nextWidth = currentSelected.width + dx * resizeSensitivity;\r\n    if (nextWidth <= 10) nextWidth = 10;\r\n    renderer2.setAttribute(currentSelected, 'width', `${nextWidth}px`);\r\n  };\r\n\r\n  selectImage(toStart = false) {\r\n    const selection = this.doc.getSelection() as Selection;\r\n    selection.removeAllRanges();\r\n    const range = this.doc.createRange();\r\n    if (!this.currentSelectedImage?.parentNode) {\r\n      return;\r\n    }\r\n    range.selectNode(this.currentSelectedImage);\r\n    range.collapse(toStart);\r\n    selection.addRange(range);\r\n    this.r.setStyle(this.textArea.nativeElement, 'caret-color', 'transparent');\r\n  }\r\n\r\n  // TODO: Move image stuff to another service or class\r\n  addResizeWrapper() {\r\n    const parent = this.currentSelectedImage.parentNode;\r\n    if (parent.classList?.contains('angular-editor-selected-image-wrapper'))\r\n      return;\r\n    const wrapper = this.r.createElement('div');\r\n    this.r.addClass(wrapper, 'angular-editor-selected-image-wrapper');\r\n    this.r.insertBefore(parent, wrapper, this.currentSelectedImage);\r\n    this.r.removeChild(parent, this.currentSelectedImage);\r\n    this.r.appendChild(wrapper, this.currentSelectedImage);\r\n    this.r.listen(wrapper, 'mousedown', (e) => {\r\n      e.preventDefault();\r\n      this.mouseMoveEvtListener();\r\n      this.ePos = e.x != null ? e.x : e.clientX;\r\n      this.mouseMoveEvtListener = this.r.listen(\r\n        this.doc,\r\n        'mousemove',\r\n        this.resizeImage(this.currentSelectedImage, this.r),\r\n      );\r\n    });\r\n  }\r\n\r\n  removeResizeWrapper() {\r\n    this.mouseMoveEvtListener();\r\n    const wrappers = this.doc.getElementsByClassName(\r\n      'angular-editor-selected-image-wrapper',\r\n    );\r\n    for (let i = wrappers.length - 1; i >= 0; i--) {\r\n      const wrapper = wrappers[i];\r\n      this.editorService.replaceWithOwnChildren(wrapper);\r\n    }\r\n  }\r\n\r\n  unselectImage() {\r\n    this.removeResizeWrapper();\r\n    if (!this.currentSelectedImage) return;\r\n    this.r.removeClass(\r\n      this.currentSelectedImage,\r\n      'angular-editor-selected-image',\r\n    );\r\n    this.currentSelectedImage = null;\r\n    this.onContentChange(this.textArea.nativeElement);\r\n    this.r.setStyle(this.textArea.nativeElement, 'caret-color', 'black');\r\n  }\r\n\r\n  selectPasted(event) {\r\n    console.log('event', event);\r\n    event.preventDefault();\r\n    const pastedContent = event.clipboardData.getData('text/html');\r\n    var regex = /<!--StartFragment-->(.*?)<!--EndFragment-->/;\r\n    var match = pastedContent.match(regex);\r\n    const range = this.doc.createRange();\r\n    const fragment = range.createContextualFragment(match[1]);\r\n    const selection = window.getSelection();\r\n    const currentRange = selection.getRangeAt(0);\r\n    currentRange.insertNode(fragment);\r\n    this.pastingCompleted.emit();\r\n}\r\n\r\n  onPaste(event: ClipboardEvent) {\r\n    this.pasting = true\r\n    // this.selectPasted(event)\r\n    this.fontSettingsRefresh();\r\n    if (this.config.rawPaste) {\r\n      event.preventDefault();\r\n      const text = event.clipboardData?.getData('text/plain');\r\n      // console.log(\"paste\", text);\r\n      document.execCommand('insertHTML', false, text);\r\n      return text;\r\n    }\r\n  }\r\n\r\n  setFontAndDeselect() {\r\n    this.selectEditorContent();\r\n    console.log(\"this.editorService.currentFontName\", this.editorService.currentFontName);\r\n    this.editorService.setFontName(this.editorService.currentFontName);\r\n    // this.editorService.setFontSize('3');\r\n    const editorElement = document.querySelector('.angular-editor-textarea') as HTMLElement;\r\n    this.removeAllStyles(editorElement);\r\n    \r\n\r\n    setTimeout(() => {\r\n      this.deselectText();\r\n      this.pasting = false\r\n\r\n    }, 100);\r\n    \r\n  }\r\n\r\n\r\n  removeAllStyles(parentElement: HTMLElement) {\r\n    const childElements = parentElement.children;\r\n    for (let i = 0; i < childElements.length; i++) {\r\n      const element = childElements[i] as HTMLElement;\r\n      element.style.removeProperty('font-weight');\r\n      element.style.removeProperty('font-style');\r\n      element.style.removeProperty('text-decoration');\r\n    }\r\n  }\r\n  \r\n  \r\n  \r\n\r\n  selectEditorContent() {\r\n    const editorElement = this.doc.querySelector('.angular-editor-textarea');\r\n\r\n    if (window.getSelection && this.doc.createRange)\r\n    {\r\n      const selection = window.getSelection();\r\n      const range = this.doc.createRange();\r\n      range.selectNodeContents(editorElement);\r\n      selection.removeAllRanges();\r\n      selection.addRange(range);\r\n    } \r\n  }\r\n\r\n  deselectText() {\r\n    const sel = window.getSelection();\r\n    if (sel) {\r\n      sel.removeAllRanges();\r\n    }\r\n  }\r\n\r\n  setContentAsCode(editableElement) {\r\n    const oContent = this.r.createText(editableElement.innerHTML);\r\n    this.r.setProperty(editableElement, 'innerHTML', '');\r\n    this.r.setProperty(editableElement, 'contentEditable', false);\r\n\r\n    const oPre = this.r.createElement('pre');\r\n    this.r.setStyle(oPre, 'margin', '0');\r\n    this.r.setStyle(oPre, 'outline', 'none');\r\n\r\n    const oCode = this.r.createElement('code');\r\n    this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\r\n    this.r.setStyle(oCode, 'display', 'block');\r\n    this.r.setStyle(oCode, 'white-space', 'pre-wrap');\r\n    this.r.setStyle(oCode, 'word-break', 'keep-all');\r\n    this.r.setStyle(oCode, 'outline', 'none');\r\n    this.r.setStyle(oCode, 'margin', '0');\r\n    this.r.setStyle(oCode, 'background-color', '#fff5b9');\r\n    this.r.setProperty(oCode, 'contentEditable', true);\r\n    this.r.appendChild(oCode, oContent);\r\n    this.focusInstance = this.r.listen(oCode, 'focus', (event) =>\r\n      this.onTextAreaFocus(event),\r\n    );\r\n    this.blurInstance = this.r.listen(oCode, 'blur', (event) =>\r\n      this.onTextAreaBlur(event),\r\n    );\r\n    this.r.appendChild(oPre, oCode);\r\n    this.r.appendChild(editableElement, oPre);\r\n\r\n    this.doc.execCommand('defaultParagraphSeparator', false, 'div');\r\n  }\r\n\r\n  setElementState() {\r\n    const state = this.editHistory[this.currentHistoryIndex];\r\n    this.r.setProperty(this.textArea.nativeElement, 'innerHTML', state);\r\n    if (!this.modeVisual) {\r\n      this.setContentAsCode(this.textArea.nativeElement);\r\n    }\r\n  }\r\n\r\n  ctrlZ(e) {\r\n    if (this.currentSelectedImage) {\r\n      this.unselectImage();\r\n    }\r\n  }\r\n\r\n  ctrlShiftZ(e) {\r\n    if (this.currentSelectedImage) {\r\n      this.unselectImage();\r\n    }\r\n  }\r\n\r\n  handleEnter(e) {\r\n    const sel = this.doc.getSelection() as Selection;\r\n    const focusNode = sel.focusNode as Node & HTMLElement & any;\r\n    const quoteParent = this.editorService.getFirstParentWithProperty(\r\n      focusNode,\r\n      'angular-editor-quote',\r\n    );\r\n    if (quoteParent && quoteParent.previousSibling) {\r\n      if (\r\n        quoteParent.innerHTML === '<br>' &&\r\n        quoteParent.previousSibling?.innerHTML === '<br>'\r\n      ) {\r\n        this.editorService.replaceWithOwnChildren(quoteParent.previousSibling);\r\n        this.editorService.replaceWithOwnChildren(quoteParent);\r\n        this.onContentChange(this.textArea.nativeElement, false);\r\n        return;\r\n      }\r\n      const previousSibling = quoteParent.previousSibling;\r\n      if (!previousSibling?.classList?.contains('angular-editor-quote')) {\r\n        return;\r\n      }\r\n      const previousSiblingInnerText = this.editorService\r\n        .getInnerTextFromNode(previousSibling)\r\n        ?.trim();\r\n      if (!previousSiblingInnerText || previousSiblingInnerText.length < 1) {\r\n        this.editorService.replaceWithOwnChildren(quoteParent.previousSibling);\r\n        const quoteParentInnerText =\r\n          this.editorService.getInnerTextFromNode(quoteParent);\r\n        if (!quoteParentInnerText?.trim()) {\r\n          this.editorService.replaceWithOwnChildren(quoteParent);\r\n        }\r\n        this.onContentChange(this.textArea.nativeElement, false);\r\n      }\r\n    }\r\n    if (this.editorService.currentFontName) {\r\n      this.editorService.setFontName(this.editorService.currentFontName);\r\n    }\r\n    if (this.editorService.currentFontSize) {\r\n      this.editorService.setFontSize(this.editorService.currentFontSize);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Executed command from editor header buttons\r\n   * @param command string from triggerCommand\r\n   * @param value\r\n   */\r\n  executeCommand(command: string, value?: string) {\r\n    this.focus();\r\n    if (command === 'focus') {\r\n      return;\r\n    }\r\n    if (command === 'toggleEditorMode') {\r\n      this.toggleEditorMode(this.modeVisual);\r\n    } else if (command !== '') {\r\n      if (command === 'clear') {\r\n        this.editorService.removeSelectedElements(this.getCustomTags());\r\n        this.onContentChange(this.textArea.nativeElement);\r\n      } else if (command === 'default') {\r\n        this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');\r\n        this.onContentChange(this.textArea.nativeElement);\r\n      } else {\r\n        this.editorService.executeCommand(command, value);\r\n      }\r\n      this.exec();\r\n    }\r\n\r\n    this.fontSettingsRefresh();\r\n\r\n    this.onContentChange(this.textArea.nativeElement);\r\n  }\r\n\r\n  onTextAreaFocus(event: FocusEvent): void {\r\n    if (this.focused) {\r\n      event.stopPropagation();\r\n      return;\r\n    }\r\n    this.focused = true;\r\n    this.focusEvent.emit(event);\r\n    if (!this.touched || !this.changed) {\r\n      this.editorService.executeInNextQueueIteration(() => {\r\n        this.configure();\r\n        this.touched = true;\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * @description fires when cursor leaves textarea\r\n   */\r\n  public onTextAreaMouseOut(event: MouseEvent): void {\r\n    this.editorService.saveSelection();\r\n  }\r\n\r\n  onTextAreaBlur(event: FocusEvent) {\r\n    this.unselectImage();\r\n    this.editorService.executeInNextQueueIteration(\r\n      this.editorService.saveSelection,\r\n    );\r\n\r\n    if (typeof this.onTouched === 'function') {\r\n      this.onTouched();\r\n    }\r\n\r\n    if (event.relatedTarget !== null) {\r\n      const parent = (event.relatedTarget as HTMLElement).parentElement;\r\n      if (\r\n        parent &&\r\n        !parent.classList.contains('angular-editor-toolbar-set') &&\r\n        !parent.classList.contains('ae-picker')\r\n      ) {\r\n        this.blurEvent.emit(event);\r\n        this.focused = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  hasParentTag(element: any, tagNames: string[]) {\r\n    if (!element) return null;\r\n    if (element && tagNames.includes(element.tagName)) {\r\n      return element.tagName;\r\n    }\r\n    return this.hasParentTag(element?.parentElement, tagNames);\r\n  }\r\n\r\n  fontSettingsRefresh() {\r\n    const currentFontName =\r\n      this.editorService.currentFontName || this.config.defaultFontName;\r\n    const currentFontSize =\r\n      this.editorService.currentFontSize || this.config.defaultFontSize;\r\n    if (currentFontName) {\r\n      this.editorService.setFontName(currentFontName);\r\n    }\r\n    if (currentFontSize) {\r\n      const selection = this.doc.getSelection();\r\n      const edRange = selection.getRangeAt(0);\r\n      let edNode = edRange.commonAncestorContainer;\r\n      const isHeader = this.hasParentTag(edNode, [\r\n        'H1',\r\n        'H2',\r\n        'H3',\r\n        'H4',\r\n        'H5',\r\n        'H6',\r\n      ]);\r\n      if (isHeader) {\r\n        let parent = edNode.parentElement;\r\n        while (parent) {\r\n          parent.removeAttribute('size');\r\n          parent = parent.parentElement;\r\n        }\r\n      } else {\r\n        this.editorService.setFontSize(currentFontSize);\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  focus the text area when the editor is focused\r\n   */\r\n  focus() {\r\n    if (this.modeVisual) {\r\n      this.textArea.nativeElement.focus();\r\n    } else {\r\n      const sourceText = this.doc.getElementById('sourceText' + this.id);\r\n      sourceText?.focus();\r\n      this.focused = true;\r\n    }\r\n    this.fontSettingsRefresh();\r\n  }\r\n\r\n  addHistory(html) {\r\n    if (\r\n      this.config.editHistoryLimit != null &&\r\n      this.editHistory.length >= this.config.editHistoryLimit\r\n    ) {\r\n      this.editHistory.shift();\r\n      this.currentHistoryIndex -= 1;\r\n    }\r\n    this.editHistory.length = this.currentHistoryIndex + 1;\r\n    this.editHistory.push(html);\r\n    this.currentHistoryIndex = this.editHistory.length - 1;\r\n  }\r\n\r\n  /**\r\n   * Executed from the contenteditable section while the input property changes\r\n   * @param element html element from contenteditable\r\n   */\r\n  onContentChange(element: any, addChangeToHistory = true): void {\r\n    let html = '';\r\n    if (this.modeVisual) {\r\n      html = element.innerHTML;\r\n    } else {\r\n      html = element.innerText;\r\n    }\r\n    if (!html || html === '<br>') {\r\n      html = '';\r\n    }\r\n    if (typeof this.onChange === 'function') {\r\n      this.onChange(\r\n        this.config.sanitize || this.config.sanitize === undefined\r\n          ? this.sanitizer.sanitize(SecurityContext.HTML, html) || html\r\n          : html,\r\n      );\r\n      if (!html !== this.showPlaceholder) {\r\n        this.togglePlaceholder(this.showPlaceholder);\r\n      }\r\n    }\r\n    if (addChangeToHistory) {\r\n      this.editSubject.next(html);\r\n    }\r\n    this.changed = true;\r\n  }\r\n\r\n  /**\r\n   * Set the function to be called\r\n   * when the control receives a change event.\r\n   *\r\n   * @param fn a function\r\n   */\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = (e) => (e === '<br>' ? fn('') : fn(e));\r\n  }\r\n\r\n  /**\r\n   * Set the function to be called\r\n   * when the control receives a touch event.\r\n   *\r\n   * @param fn a function\r\n   */\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  /**\r\n   * Write a new value to the element.\r\n   *\r\n   * @param value value to be executed when there is a change in contenteditable\r\n   */\r\n  writeValue(value: any): void {\r\n    if ((!value || value === '<br>' || value === '') !== this.showPlaceholder) {\r\n      this.togglePlaceholder(this.showPlaceholder);\r\n    }\r\n\r\n    if (value === undefined || value === '' || value === '<br>') {\r\n      value = null;\r\n    }\r\n\r\n    this.refreshView(value);\r\n  }\r\n\r\n  /**\r\n   * refresh view/HTML of the editor\r\n   *\r\n   * @param value html string from the editor\r\n   */\r\n  refreshView(value: string): void {\r\n    const normalizedValue = value === null ? '' : value;\r\n    this.r.setProperty(\r\n      this.textArea.nativeElement,\r\n      'innerHTML',\r\n      normalizedValue,\r\n    );\r\n    if (value !== null && this.editHistory.length === 0) {\r\n      this.editHistory.push(this.textArea.nativeElement.innerHTML);\r\n      this.currentHistoryIndex = 0;\r\n    }\r\n\r\n    return;\r\n  }\r\n\r\n  /**\r\n   * toggles placeholder based on input string\r\n   *\r\n   * @param value A HTML string from the editor\r\n   */\r\n  togglePlaceholder(value: boolean): void {\r\n    if (!value) {\r\n      this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');\r\n      this.showPlaceholder = true;\r\n    } else {\r\n      this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');\r\n      this.showPlaceholder = false;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Implements disabled state for this element\r\n   *\r\n   * @param isDisabled Disabled flag\r\n   */\r\n  setDisabledState(isDisabled: boolean): void {\r\n    const div = this.textArea.nativeElement;\r\n    const action = isDisabled ? 'addClass' : 'removeClass';\r\n    this.r[action](div, 'disabled');\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  /**\r\n   * toggles editor mode based on bToSource bool\r\n   *\r\n   * @param bToSource A boolean value from the editor\r\n   */\r\n  toggleEditorMode(bToSource: boolean) {\r\n    let oContent: any;\r\n    const editableElement = this.textArea.nativeElement;\r\n\r\n    if (bToSource) {\r\n      oContent = this.r.createText(editableElement.innerHTML);\r\n      this.r.setProperty(editableElement, 'innerHTML', '');\r\n      this.r.setProperty(editableElement, 'contentEditable', false);\r\n\r\n      const oPre = this.r.createElement('pre');\r\n      this.r.setStyle(oPre, 'margin', '0');\r\n      this.r.setStyle(oPre, 'outline', 'none');\r\n\r\n      const oCode = this.r.createElement('code');\r\n      this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\r\n      this.r.setStyle(oCode, 'display', 'block');\r\n      this.r.setStyle(oCode, 'white-space', 'pre-wrap');\r\n      this.r.setStyle(oCode, 'word-break', 'keep-all');\r\n      this.r.setStyle(oCode, 'outline', 'none');\r\n      this.r.setStyle(oCode, 'margin', '0');\r\n      this.r.setStyle(oCode, 'background-color', '#fff5b9');\r\n      this.r.setProperty(oCode, 'contentEditable', true);\r\n      this.r.appendChild(oCode, oContent);\r\n      this.focusInstance = this.r.listen(oCode, 'focus', (event) =>\r\n        this.onTextAreaFocus(event),\r\n      );\r\n      this.blurInstance = this.r.listen(oCode, 'blur', (event) =>\r\n        this.onTextAreaBlur(event),\r\n      );\r\n      this.r.appendChild(oPre, oCode);\r\n      this.r.appendChild(editableElement, oPre);\r\n\r\n      // ToDo move to service\r\n      this.doc.execCommand('defaultParagraphSeparator', false, 'div');\r\n\r\n      this.modeVisual = false;\r\n      this.viewMode.emit(false);\r\n      oCode.focus();\r\n    } else {\r\n      if (this.doc['querySelectorAll']) {\r\n        this.r.setProperty(\r\n          editableElement,\r\n          'innerHTML',\r\n          editableElement.innerText,\r\n        );\r\n      } else {\r\n        oContent = this.doc.createRange();\r\n        oContent.selectNodeContents(editableElement.firstChild);\r\n        this.r.setProperty(editableElement, 'innerHTML', oContent.toString());\r\n      }\r\n      this.r.setProperty(editableElement, 'contentEditable', true);\r\n      this.modeVisual = true;\r\n      this.viewMode.emit(true);\r\n      this.onContentChange(editableElement, false);\r\n      editableElement.focus();\r\n    }\r\n    this.editorToolbar.setEditorMode(!this.modeVisual);\r\n  }\r\n\r\n  textPatternCheck() {\r\n    if (this.config.textPatternsEnabled === false || !this.modeVisual) return;\r\n    if (!this.modeVisual) return;\r\n    const selection = this.doc.getSelection() as Selection;\r\n    const txtData = selection.anchorNode?.textContent;\r\n    const textPatternsMap = {\r\n      '1.': { command: 'insertOrderedList', offsets: [3] },\r\n      '*': { command: 'insertUnorderedList', offsets: [2] },\r\n      '>': {\r\n        command: () =>\r\n          this.editorService.createCustomClass({\r\n            name: 'quote',\r\n            class: 'angular-editor-quote',\r\n          }),\r\n        offsets: [2],\r\n      },\r\n    };\r\n    const patternDetected = textPatternsMap[txtData ? txtData.trim() : ''];\r\n    if (\r\n      patternDetected &&\r\n      patternDetected.command &&\r\n      patternDetected.offsets?.includes(selection.anchorOffset)\r\n    ) {\r\n      if (typeof patternDetected.command == 'string') {\r\n        this.doc.execCommand(patternDetected.command, false);\r\n        const edRange = selection.getRangeAt(0);\r\n        const edNode = edRange.commonAncestorContainer;\r\n        selection.removeAllRanges();\r\n        const range = this.doc.createRange();\r\n        range.selectNodeContents(edNode);\r\n        selection.addRange(range);\r\n        range.deleteContents();\r\n      } else {\r\n        const edRange = selection.getRangeAt(0);\r\n        const edNode = edRange.commonAncestorContainer;\r\n        selection.removeAllRanges();\r\n        const range = this.doc.createRange();\r\n        range.selectNodeContents(edNode);\r\n        selection.addRange(range);\r\n        patternDetected.command();\r\n      }\r\n    }\r\n    this.fontSettingsRefresh();\r\n  }\r\n\r\n  /**\r\n   * toggles editor buttons when cursor moved or positioning\r\n   *\r\n   * Send a node array from the contentEditable of the editor\r\n   */\r\n  exec($event: KeyboardEvent | any | null = null) {\r\n    if ($event && ($event.key === 'Delete' || $event.key === 'Backspace')) {\r\n      if (this.currentSelectedImage) {\r\n        this.removeResizeWrapper();\r\n        if ($event.key === 'Delete') {\r\n          this.selectImage(true);\r\n        }\r\n      } else if ($event.key === 'Backspace') {\r\n        const justifyRightOrCenterEnabled =\r\n          this.doc.queryCommandState('justifyCenter') ||\r\n          this.doc.queryCommandState('justifyRight');\r\n        const selection = this.doc.getSelection();\r\n        const txtData = selection?.anchorNode?.textContent;\r\n        const previousSiblingTxtData =\r\n          selection?.anchorNode?.previousSibling?.textContent;\r\n        if (\r\n          justifyRightOrCenterEnabled &&\r\n          txtData === '' &&\r\n          previousSiblingTxtData === ''\r\n        ) {\r\n          this.doc.execCommand('justifyLeft');\r\n        }\r\n      }\r\n      if (this.editorService.currentFontName) {\r\n        this.editorService.setFontName(this.editorService.currentFontName);\r\n      }\r\n      if (this.editorService.currentFontSize) {\r\n        this.editorService.setFontSize(this.editorService.currentFontSize);\r\n      }\r\n\r\n    }\r\n\r\n    this.editorToolbar.triggerButtons();\r\n\r\n    let userSelection;\r\n    if (this.doc.getSelection)\r\n    {\r\n      if (this.pasting) {\r\n        this.setFontAndDeselect();\r\n    }\r\n      userSelection = this.doc.getSelection();\r\n      this.editorService.executeInNextQueueIteration(\r\n        this.editorService.saveSelection,\r\n      );\r\n    }\r\n\r\n    let a = userSelection.focusNode;\r\n    const els = [] as any[];\r\n\r\n    while (a && a.id !== 'editor') {\r\n      els.unshift(a);\r\n      a = a.parentNode;\r\n    }\r\n\r\n    if ($event && $event.type === 'keyup' && $event.key === ' ') {\r\n      this.textPatternCheck();\r\n    }\r\n\r\n    this.editorToolbar.triggerBlocks(els);\r\n  }\r\n\r\n  private configure() {\r\n    this.editorService.uploadUrl = this.config.uploadUrl;\r\n    this.editorService.uploadWithCredentials =\r\n      this.config.uploadWithCredentials;\r\n    if (this.config.defaultParagraphSeparator) {\r\n      this.editorService.setDefaultParagraphSeparator(\r\n        this.config.defaultParagraphSeparator,\r\n      );\r\n    }\r\n  }\r\n\r\n  getFonts() {\r\n    const fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;\r\n    return fonts?.map(x => ({ label: x.name, value: x.name })) || [];\r\n  }\r\n\r\n  getCustomTags() {\r\n    const tags = ['span'];\r\n    this.config.customClasses?.forEach((x) => {\r\n      if (x.tag !== undefined) {\r\n        if (!tags.includes(x.tag)) {\r\n          tags.push(x.tag);\r\n        }\r\n      }\r\n    });\r\n    return tags.join(',');\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.blurInstance) {\r\n      this.blurInstance();\r\n    }\r\n    if (this.focusInstance) {\r\n      this.focusInstance();\r\n    }\r\n  }\r\n\r\n  filterStyles(html: string): string {\r\n    html = html.replace('position: fixed;', '');\r\n    return html;\r\n  }\r\n}\r\n","<div\r\n     class=\"angular-editor\"\r\n     #angularEditor\r\n     [style.width]=\"config.width\"\r\n     [style.minWidth]=\"config.minWidth\"\r\n>\r\n     <angular-editor-toolbar\r\n          *ngIf=\"config.toolbarPosition === 'top'\"\r\n          #editorToolbar\r\n          [id]=\"id\"\r\n          [uploadUrl]=\"config.uploadUrl\"\r\n          [upload]=\"config.upload\"\r\n          [showToolbar]=\"config.showToolbar !== undefined ? config.showToolbar : true\"\r\n          [fonts]=\"fonts\"\r\n          [customClasses]=\"config.customClasses\"\r\n          [defaultFontName]=\"config.defaultFontName\"\r\n          [defaultFontSize]=\"config.defaultFontSize\"\r\n          [hiddenButtons]=\"config.toolbarHiddenButtons\"\r\n          (execute)=\"executeCommand($event)\"\r\n     >\r\n       <ng-container\r\n         [ngTemplateOutlet]=\"customButtonsTemplateRef\"\r\n         [ngTemplateOutletContext]=\"{ executeCommandFn: this.executeCommandFn}\"\r\n       >\r\n       </ng-container>\r\n     </angular-editor-toolbar>\r\n\r\n     <div\r\n          class=\"angular-editor-wrapper\"\r\n          #editorWrapper\r\n     >\r\n          <div\r\n               #editor\r\n               class=\"angular-editor-textarea\"\r\n               [attr.contenteditable]=\"config.editable\"\r\n               [attr.tabindex]=\"disabled ? -1 : tabIndex\"\r\n               [attr.translate]=\"config.translate\"\r\n               [attr.spellcheck]=\"config.spellcheck\"\r\n               [style.height]=\"config.height\"\r\n               [style.minHeight]=\"config.minHeight\"\r\n               [style.maxHeight]=\"config.maxHeight\"\r\n               [style.backgroundColor]=\"config.textAreaBackgroundColor\"\r\n               [style.outline]=\"config.outline === false ? 'none': undefined\"\r\n               (input)=\"onContentChange($event?.target)\"\r\n               (focus)=\"onTextAreaFocus($event)\"\r\n               (blur)=\"onTextAreaBlur($event)\"\r\n               (click)=\"exec()\"\r\n               (keydown)=\"exec($event)\"\r\n               (keyup)=\"exec($event)\"\r\n               (mouseout)=\"onTextAreaMouseOut($event)\"\r\n               (paste)=\"onPaste($event)\"\r\n               (keydown.control.z)=\"ctrlZ($event)\"\r\n               (keydown.control.shift.z)=\"ctrlShiftZ($event)\"\r\n               (keyup.enter)=\"handleEnter($event)\"\r\n          >\r\n          </div>\r\n          <span class=\"angular-editor-placeholder\">{{ placeholder || config['placeholder'] }}</span>\r\n     </div>\r\n     <angular-editor-toolbar\r\n          *ngIf=\"config.toolbarPosition === 'bottom'\"\r\n          #editorToolbar\r\n          [id]=\"id\"\r\n          [uploadUrl]=\"config.uploadUrl\"\r\n          [upload]=\"config.upload\"\r\n          [showToolbar]=\"config.showToolbar !== undefined ? config.showToolbar : true\"\r\n          [fonts]=\"getFonts()\"\r\n          [customClasses]=\"config.customClasses\"\r\n          [defaultFontName]=\"config.defaultFontName\"\r\n          [defaultFontSize]=\"config.defaultFontSize\"\r\n          [hiddenButtons]=\"config.toolbarHiddenButtons\"\r\n          (execute)=\"executeCommand($event)\"\r\n     ></angular-editor-toolbar>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ae-button',\r\n  templateUrl: './ae-button.component.html',\r\n  styleUrls: ['./ae-button.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AeButtonComponent {\r\n  @Input() iconClass = '';\r\n  @Input() title = '';\r\n  @Output() buttonClick = new EventEmitter();\r\n\r\n  constructor() {}\r\n}\r\n","<button type=\"button\" [title]=\"title\" class=\"angular-editor-button\" (click)=\"buttonClick.emit()\" tabindex=\"-1\"><i\r\n    [class]=\"iconClass\"></i></button>\r\n\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ae-toolbar-set',\r\n  templateUrl: './ae-toolbar-set.component.html',\r\n  styleUrls: ['./ae-toolbar-set.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AeToolbarSetComponent {\r\n  constructor() {}\r\n}\r\n","<div class=\"angular-editor-toolbar-set\">\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { AngularEditorComponent } from './angular-editor.component';\r\nimport { AngularEditorToolbarComponent } from './angular-editor-toolbar.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AeSelectComponent } from './ae-select/ae-select.component';\r\nimport { AeButtonComponent } from './ae-button/ae-button.component';\r\nimport { AeToolbarSetComponent } from './ae-toolbar-set/ae-toolbar-set.component';\r\n\r\n@NgModule({\r\n  imports: [CommonModule, FormsModule, ReactiveFormsModule],\r\n  declarations: [\r\n    AngularEditorComponent,\r\n    AngularEditorToolbarComponent,\r\n    AeSelectComponent,\r\n    AeButtonComponent,\r\n    AeToolbarSetComponent,\r\n  ],\r\n  exports: [\r\n    AngularEditorComponent,\r\n    AngularEditorToolbarComponent,\r\n    AeButtonComponent,\r\n    AeToolbarSetComponent,\r\n  ],\r\n})\r\nexport class AngularEditorModule {}\r\n","/*\r\n * Public API Surface of angular-editor\r\n */\r\n\r\nexport * from './lib/angular-editor.service';\r\nexport * from './lib/angular-editor.component';\r\nexport * from './lib/ae-button/ae-button.component';\r\nexport * from './lib/ae-toolbar-set/ae-toolbar-set.component';\r\nexport * from './lib/ae-select/ae-select.component';\r\nexport * from './lib/angular-editor-toolbar.component';\r\nexport * from './lib/angular-editor.module';\r\nexport {\r\n  AngularEditorConfig,\r\n  CustomClass,\r\n  angularEditorConfig,\r\n} from './lib/config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4.AeSelectComponent","i1.AngularEditorService","i3","i4.AngularEditorToolbarComponent"],"mappings":";;;;;;;;;;MAWa,oBAAoB,CAAA;AASrB,IAAA,IAAA,CAAA;AAEkB,IAAA,GAAA,CAAA;AAV5B,IAAA,cAAc,CAAe;AAC7B,IAAA,YAAY,CAAS;AACrB,IAAA,SAAS,CAAU;AACnB,IAAA,qBAAqB,CAAW;AAChC,IAAA,eAAe,CAAS;AACxB,IAAA,eAAe,CAAS;AAExB,IAAA,WAAA,CACU,IAAgB;;IAEE,GAAa,EAAA;QAF/B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAEE,IAAG,CAAA,GAAA,GAAH,GAAG,CAAU;AAEvC,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACzB;AAED;;;;AAIG;IACH,cAAc,CAAC,OAAe,EAAE,KAAc,EAAA;AAC5C,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAClE,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO;AACR,SAAA;QAED,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KAC7C;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,MAAM,GACV,WAAW,GAAG,GAAG,GAAG,oBAAoB,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AACxE,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACzB,SAAA;KACF;AAED;;;;;AAKG;IACH,WAAW,CAAC,KAAa,EAAE,KAAa,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzC,QAAA,IAAI,QAAQ,EAAE;YACZ,IAAI,KAAK,KAAK,WAAW,EAAE;gBACzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACjD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;KACjC;AAGD;;;AAGG;AACH,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACvE,QAAA,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACpD,SAAA;KACF;AAED;;AAEG;IACI,aAAa,GAAG,MAAW;AAEhC,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;AACjD,YAAA,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE;gBACpC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;AACpC,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AAC9D,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;AACH,KAAC,CAAC;IAGF,mBAAmB,GAAA;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAC/C;AACE,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,YAAA,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACxC,SAAS,CAAC,eAAe,EAAE,CAAC;AAC5B,YAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAClC,QAAA,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,eAAe,EAAE,CAAC;AACvB,SAAA;KACF;AAED;;;;AAIG;IACH,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;gBACjD,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,gBAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClC,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;iBAAM,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,oCAAoC;AACrE,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;AAED;;AAEG;AACI,IAAA,2BAA2B,CAChC,UAAmC,EACnC,OAAO,GAAG,GAAG,EAAA;AAEb,QAAA,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KACjC;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,IAAU,EAAA;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,UAAU,GAAa,IAAI,QAAQ,EAAE,CAAC;YAC5C,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAChE,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,QAAQ;gBACjB,eAAe,EAAE,IAAI,CAAC,qBAAqB;AAC5C,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,CAAA,UAAA,EAAa,QAAQ,CAAA,GAAA,CAAK,CAAC,CAAC;KACvE;AAED,IAAA,4BAA4B,CAAC,SAAiB,EAAA;QAC5C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;KACrE;AAED,IAAA,iBAAiB,CAAC,WAAwB,EAAA;AACxC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,KAAK,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;YACrD,MAAM;gBACJ,GAAG;oBACH,OAAO;oBACP,UAAU;AACV,oBAAA,WAAW,CAAC,KAAK;oBACjB,IAAI;AACJ,oBAAA,IAAI,CAAC,YAAY;oBACjB,IAAI;oBACJ,OAAO;AACP,oBAAA,GAAG,CAAC;AACP,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAA;AACD,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,QAAgB,EAAA;QAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,MAAM,QAAQ,GAAG,CAA8B,2BAAA,EAAA,EAAE,QAAQ,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,CAAA;;mBAEH,QAAQ,CAAA;sBACL,QAAQ,CAAA;;;;aAIjB,CAAC;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC5B;AAEO,IAAA,mBAAmB,CAAC,QAAgB,EAAA;AAC1C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI;AAClB,aAAA,GAAG,CAAM,CAAA,sCAAA,EAAyC,QAAQ,CAAA,CAAE,CAAC;AAC7D,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,8BAA8B,CAAC;AACrD,YAAA,MAAM,SAAS,GAAG,CAAA;mBACP,QAAQ,CAAA;sBACL,QAAQ,CAAA,OAAA,EAAU,IAAI,CAAC,KAAK,CAAA;;aAErC,CAAC;AACN,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC3B,GAAG,CAAC,WAAW,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACN;AAED,IAAA,QAAQ,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC,UAAU,CAAC;AACxB,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAChC,gBAAA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;AACzB,SAAA;KACF;IAED,qBAAqB,CAAC,KAAK,EAAE,kCAAkC,EAAA;AAC7D,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC;AAChC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACnC,IAAI,UAAU,GAAG,EAAW,CAAC;;QAG7B,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC/B,gBAAA,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/C,aAAA;;AAGD,YAAA,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC;AAC5B,YAAA,OAAO,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,uBAAuB,EAAE;AACrD,gBAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,gBAAA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA;AACF,SAAA;;AAGD,QAAA,IAAI,kCAAkC,EAAE;AACtC,YAAA,IAAI,GAAG,KAAK,CAAC,uBAAuB,CAAC;AACrC,YAAA,OAAO,IAAI,EAAE;AACX,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,gBAAA,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACxB,aAAA;AACF,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,gBAAgB,GAAA;QACd,MAAM,KAAK,GAAG,EAAW,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;AACjD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;gBAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CACd,KAAK,EACL,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACpD,CAAC;AACH,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,sBAAsB,CAAC,EAAE,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC;AAC7B,QAAA,OAAO,EAAE,CAAC,aAAa,EAAE,EAAE;YACzB,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACxB;AAED,IAAA,sBAAsB,CAAC,QAAQ,EAAA;QAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACvC,YAAA,IACE,IAAI,CAAC,QAAQ,KAAK,CAAC;AACnB,gBAAA,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EACtD;AACA,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,oBAAoB,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,SAAA;QACD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtB;AAED,IAAA,oBAAoB,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,SAAA;QACD,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAgB,CAAC;AACpD,YAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC5B,gBAAA,iBAAiB,IAAI,SAAS,CAAC,SAAS,CAAC;AAC1C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,iBAAiB,CAAC;KAC1B;IAED,0BAA0B,CAAC,IAAS,EAAE,SAAiB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;KACpE;AA3WU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4CAWrB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAXP,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAYN,MAAM;2BAAC,QAAQ,CAAA;;;ACtBd,SAAU,SAAS,CAAC,KAAU,EAAA;AAClC,IAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAC/C;;MCkCa,iBAAiB,CAAA;AA6BlB,IAAA,KAAA,CAAA;AACA,IAAA,CAAA,CAAA;IA7BD,OAAO,GAAmB,EAAE,CAAC;;AAErB,IAAA,QAAQ,CAAU;AAEnC,IAAA,cAAc,CAAe;IAC7B,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,GAAG,CAAC,CAAC;AAEb,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC;AACvE,cAAE,IAAI,CAAC,cAAc,CAAC,KAAK;cACzB,QAAQ,CAAC;KACd;IAED,MAAM,GAAG,KAAK,CAAC;AAEf,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KAClC;IAE6B,MAAM,GAAG,cAAc,CAAC;;AAGpC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEP,IAAA,WAAW,CAAa;IAEpE,WACU,CAAA,KAAiB,EACjB,CAAY,EAAA;QADZ,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAC,CAAA,CAAA,GAAD,CAAC,CAAW;KAClB;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;IAED,YAAY,CAAC,MAAoB,EAAE,KAAiB,EAAA;QAClD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,KAAiB,EAAA;;QAE1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;KAC5B;AAGD,IAAA,OAAO,CAAC,MAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACrD,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,UAAU,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACvC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC7C,KAAK,GAAG,CAAC,CAAC;AACV,YAAA,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC;AAC5B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AAED,IAAA,QAAQ,GAAQ,MAAK,GAAG,CAAC;AACzB,IAAA,SAAS,GAAQ,MAAK,GAAG,CAAC;AAE1B,IAAA,gBAAgB,CAAC,EAAE,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAE,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU,CAAC;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC3C,MAAM,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;QACvD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;AAGD,IAAA,aAAa,CAAC,MAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO;AACR,SAAA;QACD,QAAQ,MAAM,CAAC,GAAG;AAChB,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM;AACR,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM;AACR,YAAA,KAAK,KAAK;AACR,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,cAAc,EAAE,CAAC;gBACxB,MAAM;AACR,YAAA,KAAK,WAAW;gBACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM;AACT,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,MAAM,EAAA;QACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;KACF;AAED,IAAA,cAAc,CAAC,MAAM,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;KACF;IAED,YAAY,CAAC,MAAM,EAAA,GAAI;AAEvB,IAAA,YAAY,CAAC,MAAM,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;KACxD;IAED,UAAU,CAAC,MAAM,EAAA,GAAI;AAErB,IAAA,gBAAgB,MAAK;uGArKV,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EARjB,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCH,k7BAiBA,EAAA,MAAA,EAAA,CAAA,mwEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDmBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGN,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,k7BAAA,EAAA,MAAA,EAAA,CAAA,mwEAAA,CAAA,EAAA,CAAA;uGAGQ,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEW,QAAQ,EAAA,CAAA;sBAAxB,KAAK;uBAAC,QAAQ,CAAA;gBAkBe,MAAM,EAAA,CAAA;sBAAnC,WAAW;uBAAC,eAAe,CAAA;gBAGV,WAAW,EAAA,CAAA;sBAA5B,MAAM;uBAAC,QAAQ,CAAA;gBAE4B,WAAW,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAoC1C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAsD1C,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME9HxB,6BAA6B,CAAA;AA2J9B,IAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,EAAA,CAAA;AAEkB,IAAA,GAAA,CAAA;IA9J5B,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAG,KAAK,CAAC;IACrB,KAAK,GAAG,SAAS,CAAC;IAClB,QAAQ,GAAG,iBAAiB,CAAC;IAC7B,QAAQ,GAAG,GAAG,CAAC;AACf,IAAA,UAAU,CAAC;AACX,IAAA,SAAS,CAAC;AAEV,IAAA,QAAQ,GAAmB;AACzB,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,KAAK,EAAE,KAAK;AACb,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,KAAK;AACb,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;KACF,CAAC;AAEF,IAAA,SAAS,GAAmB;AAC1B,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,GAAG;AACX,SAAA;KACF,CAAC;IAEF,aAAa,GAAG,IAAI,CAAC;AACrB,IAAA,cAAc,CAAgB;AAC9B,IAAA,eAAe,GAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAE7D,IAAA,MAAM,GAAG;AACP,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,CAAC,EAAE,MAAM;KACV,CAAC;IAEF,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEjE,IAAA,OAAO,GAAG;QACR,MAAM;QACN,QAAQ;QACR,WAAW;QACX,eAAe;QACf,WAAW;QACX,aAAa;QACb,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa;QACb,QAAQ;QACR,SAAS;QACT,qBAAqB;QACrB,mBAAmB;QACnB,MAAM;KACP,CAAC;AAEO,IAAA,EAAE,CAAS;AACX,IAAA,SAAS,CAAS;AAClB,IAAA,MAAM,CAAwD;AAC9D,IAAA,WAAW,CAAU;AACrB,IAAA,KAAK,GAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5D,IACI,aAAa,CAAC,OAAsB,EAAA;AACtC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;AAC9B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM;gBACxD,KAAK,EAAE,CAAC,CAAC,IAAI;AACb,gBAAA,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;AACpB,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,SAAA;KACF;IAED,IACI,eAAe,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;IAED,IACI,eAAe,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AAEQ,IAAA,aAAa,CAAa;AAEzB,IAAA,OAAO,GAAyB,IAAI,YAAY,EAAU,CAAC;AAE3B,IAAA,WAAW,CAAa;AAElE,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KACnE;AAED,IAAA,WAAA,CACU,CAAY,EACZ,aAAmC,EACnC,EAAc;;IAEI,GAAQ,EAAA;QAJ1B,IAAC,CAAA,CAAA,GAAD,CAAC,CAAW;QACZ,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;QACnC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAEI,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;KAChC;AAEJ;;;AAGG;AACH,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;AAED;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC3C,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACxB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7C,IAAI,KAAK,KAAK,KAAK,EAAE;oBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzC,KAAK,GAAG,IAAI,CAAC;AACd,iBAAA;AACF,aAAA;iBAAM,IAAI,KAAK,KAAK,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACxB,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,KAAK,GAAG,KAAK,CAAC;QACd,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;gBACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;oBAC5B,IAAI,CAAC,YAAY,OAAO,EAAE;AACxB,wBAAA,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC;AAChC,qBAAA;AACH,iBAAC,CAAC,CAAC;gBACH,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,IAAI,KAAK,KAAK,KAAK,EAAE;AACnB,wBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACtC,KAAK,GAAG,IAAI,CAAC;AACd,qBAAA;AACF,iBAAA;qBAAM,IAAI,KAAK,KAAK,KAAK,EAAE;AAC1B,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC3B,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAC/B,CAAC;AACF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC3C,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KAC1D;AAED;;AAEG;IACH,SAAS,GAAA;QACP,IAAI,GAAG,GAAkB,UAAU,CAAC;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AACpD,QAAA,IACE,SAAS;YACT,SAAS,CAAC,uBAAuB,EAAE,aAAa,EAAE,QAAQ,KAAK,GAAG,EAClE;AACA,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,uBAAuB;AAC7C,iBAAA,aAAkC,CAAC;AACtC,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,EAAE;AACtB,gBAAA,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,aAAA;AACF,SAAA;AACD,QAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,UAAU,EAAE;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACpC,SAAA;KACF;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAA,QAAA,CAAU,CAAC,CAAC;QACpD,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,CAAA,QAAA,CAAU,EAAE;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACrC,SAAA;KACF;;IAGD,WAAW,CAAC,KAAa,EAAE,KAAa,EAAA;QACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,SAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,aAAa,CAAC,CAAU,EAAA;AACtB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CACpD,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CACnC,CAAC;AACF,QAAA,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;AACtD,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;AAED;;AAEG;AACH,IAAA,aAAa,CAAC,KAAK,EAAA;QACjB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAsC,KACjE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CACvC,CAAC;AACH,aAAA;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACzB,gBAAA,IAAI,CAAC,aAAa;qBACf,WAAW,CAAC,IAAI,CAAC;AACjB,qBAAA,SAAS,CAAC,CAAC,QAAsC,KAChD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CACvC,CAAC;AACL,aAAA;AAAM,iBAAA;AACL,gBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAChC,gBAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAgB,KAAI;AACnC,oBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,aAA2B,CAAC;AACzC,oBAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;AACrB,wBAAA,OAAO,CAAC,KAAK,CAAC,CAAA,iBAAA,CAAmB,CAAC,CAAC;wBACnC,OAAO;AACR,qBAAA;AACD,oBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,iBAAC,CAAC;AACF,gBAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;KACF;IAED,gBAAgB,CAAC,QAA4C,EAAE,KAAK,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7B,YAAA,OAAO,CAAC,KAAK,CACX,mEAAmE,EACnE,QAAQ,CACT,CAAC;YACF,OAAO;AACR,SAAA;AACD,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,cAAc,CAAC,OAAe,EAAA;QAC5B,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,SAAA;KACF;AAED,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,IAAI,EAAE,IAAI,CAAC,aAAa,YAAY,KAAK,CAAC,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,MAAW,CAAC;AAChB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,GAAG,YAAY,KAAK,EAAE;AACxB,gBAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5C,aAAA;AACD,YAAA,IAAI,MAAM,EAAE;gBACV,MAAM;AACP,aAAA;AACF,SAAA;QACD,OAAO,MAAM,KAAK,SAAS,CAAC;KAC7B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;AA3YU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,sGA+J9B,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA/JP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,2cCxB1C,4oUAkKA,EAAA,MAAA,EAAA,CAAA,ghtCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD1Ia,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,4oUAAA,EAAA,MAAA,EAAA,CAAA,ghtCAAA,CAAA,EAAA,CAAA;;0BAmK/B,MAAM;2BAAC,QAAQ,CAAA;yCA/CT,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAGF,aAAa,EAAA,CAAA;sBADhB,KAAK;gBAaF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAQF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAOG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEI,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBAEmC,WAAW,EAAA,CAAA;sBAApD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AE9G7B,MAAA,mBAAmB,GAAwB;AACtD,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,uBAAuB,EAAE,OAAO;AAChC,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,WAAW,EAAE,oBAAoB;AACjC,IAAA,yBAAyB,EAAE,EAAE;AAC7B,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE;AACrD,QAAA,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;AACrC,QAAA,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE;AAClD,KAAA;;AAED,IAAA,qBAAqB,EAAE,KAAK;AAC5B,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,OAAO,EAAE,IAAI;AACb;;;;;;;AAOG;AACH,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,sBAAsB,EAAE,CAAC;AACzB,IAAA,mBAAmB,EAAE,IAAI;;;MCxDd,sBAAsB,CAAA;AAgFvB,IAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA;AAEkB,IAAA,GAAA,CAAA;AAClB,IAAA,SAAA,CAAA;AACA,IAAA,KAAA,CAAA;AAIwB,IAAA,SAAA,CAAA;AAtF1B,IAAA,QAAQ,CAA0B;AAClC,IAAA,SAAS,CAAa;IAE9B,UAAU,GAAG,IAAI,CAAC;IAClB,eAAe,GAAG,KAAK,CAAC;IACxB,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,KAAK,CAAC;AAEhB,IAAA,oBAAoB,GAAG,MAAK,GAAG,CAAC;IAChC,oBAAoB,GAAQ,IAAI,CAAC;AACjC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;IAC5B,WAAW,GAAG,EAAW,CAAC;IAC1B,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAEzB,IAAA,aAAa,CAAM;AACnB,IAAA,YAAY,CAAM;IAElB,KAAK,GAAuC,EAAE,CAAC;IAGtC,EAAE,GAAG,EAAE,CAAC;IACR,MAAM,GAAwB,mBAAmB,CAAC;IAClD,WAAW,GAAG,EAAE,CAAC;AACjB,IAAA,QAAQ,CAAgB;AAEvB,IAAA,IAAI,CAAC;AAEwB,IAAA,QAAQ,CAAa;AACd,IAAA,aAAa,CAAa;AAC5C,IAAA,aAAa,CAAgC;AAC1C,IAAA,wBAAwB,CAAoB;IAC3E,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAW,CAAC;;;AAIjC,IAAA,SAAS,GACvB,IAAI,YAAY,EAAc,CAAC;;;AAIhB,IAAA,UAAU,GACzB,IAAI,YAAY,EAAc,CAAC;AAEjC,IAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAE,CAAC;IAI3B,QAAQ,GAAG,CAAC,CAAC,CAAC;IAG5C,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAGD,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAGD,IAAA,OAAO,CAAC,CAAC,EAAA;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO;AACtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACnD;IAED,WACU,CAAA,CAAY,EACZ,aAAmC;;IAEjB,GAAa,EAC/B,SAAuB,EACvB,KAAwB;;IAET,eAAuB;;IAEd,SAAc,EAAA;QATtC,IAAC,CAAA,CAAA,GAAD,CAAC,CAAW;QACZ,IAAa,CAAA,aAAA,GAAb,aAAa,CAAsB;QAEjB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAU;QAC/B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QAIA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;AAE9C,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ;AACX,YAAA,cAAc,IAAI,cAAc,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC;AACjE,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe;AACvD,cAAE,IAAI,CAAC,MAAM,CAAC,eAAe;AAC7B,cAAE,mBAAmB,CAAC,eAAe,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB;AACzD,cAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC9B,cAAE,mBAAmB,CAAC,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB;AACrE,cAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;AACpC,cAAE,mBAAmB,CAAC,sBAAsB,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,mBAAmB;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI;kBACnC,mBAAmB,CAAC,mBAAmB;AACzC,kBAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAElC,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;KACN;IAED,eAAe,GAAA;AACb,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;AAED,IAAA,IAAI,CAAC;IACL,WAAW,GAAG,CAAC,eAAe,EAAE,SAAS,KAAK,CAAC,CAAC,KAAI;AAClD,QAAA,IAAI,CAAC,eAAe;YAAE,OAAO;AAC7B,QAAA,MAAM,iBAAiB,GACrB,IAAI,CAAC,MAAM,CAAC,sBAAsB;AAClC,YAAA,mBAAmB,CAAC,sBAAsB;AAC1C,YAAA,CAAC,CAAC;AACJ,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,GAAG,eAAe,CAAC,KAAK,GAAG,EAAE,GAAG,iBAAiB,CAAC;QAC/D,IAAI,SAAS,IAAI,EAAE;YAAE,SAAS,GAAG,EAAE,CAAC;QACpC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,CAAG,EAAA,SAAS,CAAI,EAAA,CAAA,CAAC,CAAC;AACrE,KAAC,CAAC;IAEF,WAAW,CAAC,OAAO,GAAG,KAAK,EAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;QACvD,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE;YAC1C,OAAO;AACR,SAAA;AACD,QAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC5C,QAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxB,QAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KAC5E;;IAGD,gBAAgB,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACpD,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,uCAAuC,CAAC;YACrE,OAAO;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,KAAI;YACxC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC1C,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CACvC,IAAI,CAAC,GAAG,EACR,WAAW,EACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAC9C,uCAAuC,CACxC,CAAC;AACF,QAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACpD,SAAA;KACF;IAED,aAAa,GAAA;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACvC,IAAI,CAAC,CAAC,CAAC,WAAW,CAChB,IAAI,CAAC,oBAAoB,EACzB,+BAA+B,CAChC,CAAC;AACF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;KACtE;AAED,IAAA,YAAY,CAAC,KAAK,EAAA;AAChB,QAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,KAAK,GAAG,6CAA6C,CAAC;QAC1D,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAEC,IAAA,OAAO,CAAC,KAAqB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;;QAEnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;;YAExD,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;;QAEnE,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAgB,CAAC;AACxF,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAGpC,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;SAErB,EAAE,GAAG,CAAC,CAAC;KAET;AAGD,IAAA,eAAe,CAAC,aAA0B,EAAA;AACxC,QAAA,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC;AAC7C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAgB,CAAC;AAChD,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC3C,YAAA,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACjD,SAAA;KACF;IAKD,mBAAmB,GAAA;QACjB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAEzE,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAC/C;AACE,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,YAAA,KAAK,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACxC,SAAS,CAAC,eAAe,EAAE,CAAC;AAC5B,YAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AAClC,QAAA,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,eAAe,EAAE,CAAC;AACvB,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,eAAe,EAAA;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAC5B,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,KACrD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAC3B,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACjE;IAED,eAAe,GAAA;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACpD,SAAA;KACF;AAED,IAAA,KAAK,CAAC,CAAC,EAAA;QACL,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,UAAU,CAAC,CAAC,EAAA;QACV,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,CAAC,EAAA;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;AACjD,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC,SAAqC,CAAC;AAC5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAC/D,SAAS,EACT,sBAAsB,CACvB,CAAC;AACF,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,eAAe,EAAE;AAC9C,YAAA,IACE,WAAW,CAAC,SAAS,KAAK,MAAM;AAChC,gBAAA,WAAW,CAAC,eAAe,EAAE,SAAS,KAAK,MAAM,EACjD;gBACA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBACzD,OAAO;AACR,aAAA;AACD,YAAA,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;YACpD,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE;gBACjE,OAAO;AACR,aAAA;AACD,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,aAAa;iBAChD,oBAAoB,CAAC,eAAe,CAAC;kBACpC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpE,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBACvE,MAAM,oBAAoB,GACxB,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE;AACjC,oBAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACxD,iBAAA;gBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC1D,aAAA;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpE,SAAA;KACF;AAED;;;;AAIG;IACH,cAAc,CAAC,OAAe,EAAE,KAAc,EAAA;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,OAAO;AACR,SAAA;QACD,IAAI,OAAO,KAAK,kBAAkB,EAAE;AAClC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,SAAA;aAAM,IAAI,OAAO,KAAK,EAAE,EAAE;YACzB,IAAI,OAAO,KAAK,OAAO,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACnD,aAAA;iBAAM,IAAI,OAAO,KAAK,SAAS,EAAE;AAChC,gBAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;gBACrE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACnD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACnD,aAAA;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KACnD;AAED,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,MAAK;gBAClD,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;AAEG;AACI,IAAA,kBAAkB,CAAC,KAAiB,EAAA;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;KACpC;AAED,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAC5C,IAAI,CAAC,aAAa,CAAC,aAAa,CACjC,CAAC;AAEF,QAAA,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE;AAChC,YAAA,MAAM,MAAM,GAAI,KAAK,CAAC,aAA6B,CAAC,aAAa,CAAC;AAClE,YAAA,IACE,MAAM;AACN,gBAAA,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC;gBACxD,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EACvC;AACA,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,aAAA;AACF,SAAA;KACF;IAED,YAAY,CAAC,OAAY,EAAE,QAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;QAC1B,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,OAAO,OAAO,CAAC,OAAO,CAAC;AACxB,SAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;KAC5D;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,eAAe,GACnB,IAAI,CAAC,aAAa,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AACpE,QAAA,MAAM,eAAe,GACnB,IAAI,CAAC,aAAa,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AACpE,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,eAAe,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,YAAA,IAAI,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;AAC7C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACzC,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,IAAI;AACL,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAClC,gBAAA,OAAO,MAAM,EAAE;AACb,oBAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAC/B,oBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,iBAAA;AACF,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AACjD,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,UAAU,EAAE,KAAK,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,IAAI,EAAA;AACb,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI;YACpC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EACvD;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;AAC/B,SAAA;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KACxD;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,OAAY,EAAE,kBAAkB,GAAG,IAAI,EAAA;QACrD,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;YAC5B,IAAI,GAAG,EAAE,CAAC;AACX,SAAA;AACD,QAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;AACxD,kBAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;kBAC3D,IAAI,CACT,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9C,aAAA;AACF,SAAA;AACD,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;AAED;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,EAAO,EAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;AAED;;;;;AAKG;AACH,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;AACzE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9C,SAAA;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,MAAM,EAAE;YAC3D,KAAK,GAAG,IAAI,CAAC;AACd,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,MAAM,eAAe,GAAG,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAC3B,WAAW,EACX,eAAe,CAChB,CAAC;QACF,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC9B,SAAA;QAED,OAAO;KACR;AAED;;;;AAIG;AACH,IAAA,iBAAiB,CAAC,KAAc,EAAA;QAC9B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QACxC,MAAM,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;QACvD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;AAED;;;;AAIG;AACH,IAAA,gBAAgB,CAAC,SAAkB,EAAA;AACjC,QAAA,IAAI,QAAa,CAAC;AAClB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEpD,QAAA,IAAI,SAAS,EAAE;YACb,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAE9D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KACvD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAC5B,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,KACrD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAC3B,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;;YAG1C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhE,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;AACf,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAChB,eAAe,EACf,WAAW,EACX,eAAe,CAAC,SAAS,CAC1B,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAClC,gBAAA,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvE,aAAA;YACD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC7C,eAAe,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACpD;IAED,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC1E,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAe,CAAC;AACvD,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC;AAClD,QAAA,MAAM,eAAe,GAAG;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YACpD,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;AACrD,YAAA,GAAG,EAAE;gBACH,OAAO,EAAE,MACP,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;AACnC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,KAAK,EAAE,sBAAsB;iBAC9B,CAAC;gBACJ,OAAO,EAAE,CAAC,CAAC,CAAC;AACb,aAAA;SACF,CAAC;AACF,QAAA,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACvE,QAAA,IACE,eAAe;AACf,YAAA,eAAe,CAAC,OAAO;YACvB,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EACzD;AACA,YAAA,IAAI,OAAO,eAAe,CAAC,OAAO,IAAI,QAAQ,EAAE;gBAC9C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;gBAC/C,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,gBAAA,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjC,gBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,aAAA;AAAM,iBAAA;gBACL,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;gBAC/C,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,gBAAA,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACjC,gBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC1B,eAAe,CAAC,OAAO,EAAE,CAAC;AAC3B,aAAA;AACF,SAAA;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED;;;;AAIG;IACH,IAAI,CAAC,SAAqC,IAAI,EAAA;AAC5C,QAAA,IAAI,MAAM,KAAK,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,EAAE;YACrE,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,gBAAA,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxB,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;gBACrC,MAAM,2BAA2B,GAC/B,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,eAAe,CAAC;AAC3C,oBAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1C,gBAAA,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;gBACnD,MAAM,sBAAsB,GAC1B,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,CAAC;AACtD,gBAAA,IACE,2BAA2B;AAC3B,oBAAA,OAAO,KAAK,EAAE;oBACd,sBAAsB,KAAK,EAAE,EAC7B;AACA,oBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACrC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;gBACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpE,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE;gBACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACpE,aAAA;AAEF,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;AAEpC,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EACzB;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,aAAA;AACC,YAAA,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAC5C,IAAI,CAAC,aAAa,CAAC,aAAa,CACjC,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;QAChC,MAAM,GAAG,GAAG,EAAW,CAAC;AAExB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC7B,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACf,YAAA,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE;YAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KACvC;IAEO,SAAS,GAAA;QACf,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,qBAAqB;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE;YACzC,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAC7C,IAAI,CAAC,MAAM,CAAC,yBAAyB,CACtC,CAAC;AACH,SAAA;KACF;IAED,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QAChF,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;KAClE;IAED,aAAa,GAAA;AACX,QAAA,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AACvC,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClB,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACvB;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACb;AA30BU,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAmFvB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,QAAQ,EAIL,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,UAAU,8BAEV,WAAW,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzFb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EATtB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;YACD,oBAAoB;AACrB,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCH,+oGAyEA,EAAA,MAAA,EAAA,CAAA,6kvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FD9Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGf,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;wBACD,oBAAoB;AACrB,qBAAA,EAAA,QAAA,EAAA,+oGAAA,EAAA,MAAA,EAAA,CAAA,6kvCAAA,CAAA,EAAA,CAAA;;0BAqFE,MAAM;2BAAC,QAAQ,CAAA;;0BAIf,SAAS;2BAAC,UAAU,CAAA;;0BAEpB,SAAS;2BAAC,WAAW,CAAA;yCA/Df,EAAE,EAAA,CAAA;sBAAV,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,IAAI,EAAA,CAAA;sBAAb,MAAM;gBAEgC,QAAQ,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACS,aAAa,EAAA,CAAA;sBAA1D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAChB,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBACK,wBAAwB,EAAA,CAAA;sBAAtD,YAAY;uBAAC,eAAe,CAAA;gBAGnB,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBAIS,SAAS,EAAA,CAAA;sBAAxB,MAAM;uBAAC,MAAM,CAAA;gBAKG,UAAU,EAAA,CAAA;sBAA1B,MAAM;uBAAC,OAAO,CAAA;gBAOe,QAAQ,EAAA,CAAA;sBAArC,WAAW;uBAAC,eAAe,CAAA;gBAG5B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;gBAMrB,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,aAAa,CAAA;gBAM3B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,cAAc,EAAE,CAAC,eAAe,CAAC,CAAA;;;MEhGpC,iBAAiB,CAAA;IACnB,SAAS,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,EAAE,CAAC;AACV,IAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAE3C,IAAA,WAAA,GAAA,GAAgB;uGALL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,8ICd9B,gLAGA,EAAA,MAAA,EAAA,CAAA,wotCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDWa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gLAAA,EAAA,MAAA,EAAA,CAAA,wotCAAA,CAAA,EAAA,CAAA;wDAG5B,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;METI,qBAAqB,CAAA;AAChC,IAAA,WAAA,GAAA,GAAgB;uGADL,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,sDCRlC,yFAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDKa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,aAAA,EAGX,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yFAAA,EAAA,CAAA;;;MEmB1B,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAb5B,sBAAsB;YACtB,6BAA6B;YAC7B,iBAAiB;YACjB,iBAAiB;AACjB,YAAA,qBAAqB,aANb,YAAY,EAAE,WAAW,EAAE,mBAAmB,aAStD,sBAAsB;YACtB,6BAA6B;YAC7B,iBAAiB;YACjB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAfpB,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAe7C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC;AACzD,oBAAA,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,6BAA6B;wBAC7B,iBAAiB;wBACjB,iBAAiB;wBACjB,qBAAqB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,6BAA6B;wBAC7B,iBAAiB;wBACjB,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;;ACxBD;;AAEG;;ACFH;;AAEG;;;;"}