{"version":3,"file":"ngx-quill-upload-ivy.mjs","sources":["../../src/utils/Constants/index.ts","../../src/utils/Helpers/index.ts","../../src/handlers/Styled.ts","../../src/handlers/BaseHandler.ts","../../src/blots/ImageBlot/index.ts","../../src/blots/VideoBlot/index.ts","../../src/handlers/VideoHandler/index.ts","../../src/handlers/ImageHandler/index.ts","../../ngx-quill-upload-ivy.ts"],"sourcesContent":["export default {\n  ID_SPLIT_FLAG: '__ID_SPLIT__',\n  QUILL_UPLOAD_HOLDER_CLASS_NAME: 'quill-upload-progress',\n  DEFAULT_STYLES: `\n    .quill-progress-wrapper {\n      height: 0.25rem;\n      position: relative;\n      background: #f3efe6;\n      overflow: hidden;\n      margin-top: 0;\n    }\n\n    .quill-progress-wrapper span {\n      display: block;\n      height: 100%;\n    }\n\n    .quill-progress {\n      background-color: #3498db;\n      animation: progressBar 10s ease-in-out;\n      animation-fill-mode:both;\n    }\n\n    @keyframes progressBar {\n      0% { width: 0; }\n      100% { width: 100%; }\n    }\n\n    .d-none {\n      display: none;\n    }\n\n    .quill-upload-progress {\n      opacity: 0.3;\n    }\n  `,\n  blots: {\n    video: 'video',\n    image: 'image',\n  },\n  LOADING_CLASS_NAME: 'quill-progress-wrapper',\n  NONE_DISPLAY_CLASS_NAME: 'd-none',\n};\n","import Constants from '../Constants';\n\nexport default class Helper {\n  id = 0;\n  prefix = 'QUILL_UPLOAD_HANDLER';\n  generateID(): string {\n    const id = this.id;\n    this.id = id + 1;\n    return `${this.prefix}-${id}`;\n  }\n  loadingHTML(): string {\n    return `<div id=\"${Constants.ID_SPLIT_FLAG}.QUILL-LOADING\">\n                        <span style=\"width:90%;\"><span class=\"quill-progress\">\n                        </span></span>\n                      </div>`;\n  }\n}\n\n","import { Constants } from '../utils';\n\nclass Styled {\n  private styles: any;\n  private eStyle: HTMLStyleElement;\n  constructor(styles?) {\n    this.styles = styles;\n\n    this.setUp();\n  }\n\n  setUp() {\n    this.eStyle = document.createElement('style');\n    this.eStyle.type = 'text/css';\n    document.getElementsByTagName('head')[0].appendChild(this.eStyle);\n  }\n\n  setStyle(styles) {\n    this.styles = styles;\n  }\n\n  apply() {\n    this.eStyle.appendChild(\n      document.createTextNode(this.styles || Constants.DEFAULT_STYLES)\n    );\n  }\n}\n\nexport default Styled;\n","import Styled from './Styled';\nimport { Constants, Helpers } from '../utils';\n\ninterface Range {\n  index: number;\n  length: number;\n}\n\nexport interface Options {\n  accepts: string[];\n  upload(file: File): Promise<string>;\n}\n\nclass BaseHandler {\n  quill: any;\n  options: Options;\n  range: Range | null;\n  handler: string;\n  loading: HTMLElement;\n  fileHolder: HTMLInputElement;\n  handlerId: string;\n  helpers = new Helpers();\n  allowedFormatRegex: RegExp;\n  possibleExtension: Set<string>;\n\n  constructor(quill, options: Options) {\n    this.quill = quill;\n    this.options = options;\n    this.range = null;\n\n    new Styled().apply();\n\n    if (this.isNotExistLoading()) {\n      const node = document.createElement('div');\n      node.innerHTML = this.helpers.loadingHTML();\n\n      this.quill.container.appendChild(node);\n    }\n\n    if (typeof this.options.upload !== 'function') {\n      console.warn('[Missing config] upload function that returns a promise is required');\n    }\n\n    setTimeout(() => {\n      if (!this.options.accepts) {\n        if (this.handler === Constants.blots.image) {\n          this.options.accepts = ['jpg', 'jpeg', 'png'];\n        }\n        if (this.handler === Constants.blots.video) {\n          this.options.accepts = ['mp4', 'webm'];\n        }\n      }\n\n      if (this.handler === Constants.blots.image) {\n        this.possibleExtension = new Set(['apng', 'bmp', 'gif', 'ico', 'cur', 'jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp', 'png', 'svg', 'tif', 'tiff', 'webp']);\n      }\n      if (this.handler === Constants.blots.video) {\n        this.possibleExtension = new Set(['mp4', 'webm', '3gp', 'mp4', 'mpeg', 'quickTime', 'ogg']);\n      }\n\n      this.allowedFormatRegex = new RegExp('^(' + this.options.accepts.filter((el) => this.possibleExtension.has(el.toLowerCase()))\n      .reduce((acc, el, i) => acc.concat(i !== 0 ? `|${el}` : `${el}`), '') + ')$', 'i');\n    }, 1);\n  }\n\n  applyForToolbar() {\n    const toolbar = this.quill.getModule('toolbar');\n    this.loading = document.getElementById(\n      `${Constants.ID_SPLIT_FLAG}.QUILL-LOADING`\n    );\n    toolbar.addHandler(this.handler, this.selectLocalFile.bind(this));\n  }\n\n  selectLocalFile() {\n    this.range = this.quill.getSelection();\n    this.fileHolder = document.createElement('input');\n    this.fileHolder.setAttribute('type', 'file');\n    this.fileHolder.setAttribute('accept', `${this.handler}/*`);\n    this.fileHolder.onchange = this.fileChanged.bind(this);\n    this.fileHolder.click();\n  }\n\n  loadFile(context) {\n    this.loading.removeAttribute('class');\n    this.loading.setAttribute('class', Constants.LOADING_CLASS_NAME);\n\n    const file = context.fileHolder.files[0];\n    this.handlerId = this.helpers.generateID();\n\n    const fileReader = new FileReader();\n    fileReader.addEventListener('load', () => {\n      this.insertBase64Data(fileReader.result, this.handlerId);\n    }, false);\n\n    if (!file) {\n      console.warn('[File not found] Something was wrong, please try again!!');\n      return null;\n    }\n\n    fileReader.readAsDataURL(file);\n\n    return { file, handlerId: this.handlerId };\n  }\n\n  fileChanged() {\n    const { file, handlerId } = this.loadFile(this);\n\n    if (!file) {\n      return;\n    }\n\n    const extension = file.name.split('.').pop();\n\n    if (!this.isValidExtension(extension)) {\n      console.warn(\n        '[Wrong Format] Format was wrong, please try with correct format!!'\n      );\n    }\n\n    if (!this.hasValidMimeType(file.type)) {\n      console.warn(\n        `[Incorrect Mime Type] The MIME Type of uploaded file is not ${this.handler}!!`\n      );\n    }\n\n    this.embedFile(file, handlerId);\n  }\n\n  embedFile(file: File, handlerId: string) {\n    this.options.upload(file).then(\n      (url) => {\n        this.insertFileToEditor(url, handlerId);\n        this.loading.removeAttribute('class');\n        this.loading.setAttribute('class', Constants.NONE_DISPLAY_CLASS_NAME);\n      },\n      (error) => {\n        this.loading.removeAttribute('class');\n        this.loading.setAttribute('class', Constants.NONE_DISPLAY_CLASS_NAME);\n        setTimeout(() => {\n          const el = document.getElementById(handlerId);\n          el.remove();\n        }, 1000);\n      }\n    );\n  }\n\n  insertBase64Data(url: string | ArrayBuffer, handlerId: string) {\n    const range = this.range;\n    this.quill.insertEmbed(\n      range.index,\n      this.handler,\n      `${handlerId}${Constants.ID_SPLIT_FLAG}${url}`\n    );\n\n    const el = document.getElementById(handlerId);\n\n    if (el) {\n      el.setAttribute('class', Constants.QUILL_UPLOAD_HOLDER_CLASS_NAME);\n    }\n  }\n\n  insertFileToEditor(url: string, handlerId: string) {\n    const el = document.getElementById(handlerId);\n    if (el) {\n      el.setAttribute('src', url);\n      el.removeAttribute('id');\n      el.removeAttribute('class');\n    }\n  }\n\n  isValidExtension(extension: string) {\n    return extension && this.allowedFormatRegex.test(extension);\n  }\n\n  hasValidMimeType(type: string) {\n    return type && type.startsWith(this.handler);\n  }\n\n  isNotExistLoading() {\n    const loading = document.getElementById(\n      `${Constants.ID_SPLIT_FLAG}.QUILL-LOADING`\n    );\n\n    return loading == null;\n  }\n}\n\nexport default BaseHandler;\n","import Quill from 'quill';\nimport { Constants } from '../../utils';\n\nconst blotPath = 'formats/image';\nconst BlockEmbed: EmbedBlot = Quill.import(blotPath);\n\ninterface EmbedBlot {\n  new(...args: any[]): EmbedBlot;\n  domNode: HTMLImageElement;\n  format(name, value);\n  create(value?);\n}\n\nconst SUPPORTED_ATTRIBUTES = [\n  'alt',\n  'height',\n  'width',\n  'style'\n];\n\nclass ImageBlot extends BlockEmbed {\n  static tagName: string;\n  static blotName: string;\n  static className: string;\n\n  static create(value): HTMLElement {\n    let id: string;\n    let src: string;\n\n    if (typeof value === 'object' && !value.url) {\n      return super.create();\n    }\n\n    const arr = value.url\n      ? value.url.split(Constants.ID_SPLIT_FLAG)\n      : value.split(Constants.ID_SPLIT_FLAG);\n    if (arr.length > 1) {\n      id = arr[0];\n      src = arr[1];\n    } else {\n      src = value;\n    }\n\n    const node = super.create(src);\n    if (typeof src === 'string') {\n      node.setAttribute('src', src);\n    }\n\n    if (typeof src === 'object') {\n      node.setAttribute('src', (src as any).url);\n    }\n\n    if (id) {\n      node.setAttribute('id', id);\n    }\n\n    return node;\n  }\n\n  static value(node): object {\n    return {\n      alt: node.getAttribute('alt'),\n      url: node.getAttribute('src'),\n    };\n  }\n\n  static formats(domNode) {\n    return SUPPORTED_ATTRIBUTES.reduce(function (formats, attribute) {\n      if (domNode.hasAttribute(attribute)) {\n        formats[attribute] = domNode.getAttribute(attribute);\n      }\n      return formats;\n    }, {});\n  }\n\n  format(name, value) {\n    if (SUPPORTED_ATTRIBUTES.indexOf(name) > -1) {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n}\n\nImageBlot.tagName = 'img';\nImageBlot.blotName = Constants.blots.image;\nImageBlot.className = 'quill-upload-image';\n\nexport default ImageBlot;\n","import Quill from 'quill';\nimport { Constants } from '../../utils';\n\nconst blotPath = 'blots/block/embed';\nconst BlockEmbed = Quill.import(blotPath);\n\nclass VideoBlot extends BlockEmbed {\n  static className: string;\n  static blotName: string;\n  static tagName: string;\n  domNode: any;\n\n  static create(value): HTMLElement {\n    let id: string;\n    let src: string;\n\n    if (typeof value === 'object' && !value.url) {\n      return super.create();\n    }\n    const arr = value.url\n      ? value.url.split(Constants.ID_SPLIT_FLAG)\n      : value.split(Constants.ID_SPLIT_FLAG);\n    if (arr.length > 1) {\n      id = arr[0];\n      src = arr[1];\n    } else {\n      src = value;\n    }\n\n    const node = super.create(src);\n    if (typeof src === 'string') {\n      node.setAttribute('src', src);\n    }\n\n    if (typeof src === 'object') {\n      node.setAttribute('src', (src as any).url);\n    }\n\n    if (id) {\n      node.setAttribute('id', id);\n    }\n\n    node.setAttribute('controls', true);\n    node.setAttribute('controlsList', 'nodownload');\n    node.setAttribute('width', '100%');\n\n    return node;\n  }\n\n  static formats(node) {\n    const format: any = {};\n    if (node.hasAttribute('height')) {\n      format.height = node.getAttribute('height');\n    }\n    if (node.hasAttribute('width')) {\n      format.width = node.getAttribute('width');\n    }\n    return format;\n  }\n\n  static value(node) {\n    return node.getAttribute('src');\n  }\n\n  format(name, value) {\n    if (name === 'height' || name === 'width') {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name, value);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n}\n\nVideoBlot.tagName = 'video';\nVideoBlot.blotName = Constants.blots.video;\nVideoBlot.className = 'quill-upload-video';\n\nexport default VideoBlot;\n","import BaseHandler, { Options } from '../BaseHandler';\nimport { Constants } from '../../utils';\nimport { VideoBlot } from '../../blots';\nimport Quill from 'quill';\n\nclass VideoHandler extends BaseHandler {\n  constructor(quill, options: Options) {\n    super(quill, options);\n\n    this.handler = Constants.blots.video;\n    this.applyForToolbar();\n    Quill.register('formats/video', VideoBlot);\n  }\n\n}\n\nexport default VideoHandler;\n","import BaseHandler, { Options } from '../BaseHandler';\nimport { Constants } from '../../utils';\nimport Quill from 'quill';\nimport { ImageBlot } from '../../blots';\n\nclass ImageHandler extends BaseHandler {\n  constructor(quill, options: Options) {\n    super(quill, options);\n\n    this.handler = Constants.blots.image;\n    this.applyForToolbar();\n    Quill.register(ImageBlot, true);\n  }\n\n}\n\nexport default ImageHandler;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["Helpers","blotPath","BlockEmbed"],"mappings":";;AAAA,gBAAe;AACb,IAAA,aAAa,EAAE,cAAc;AAC7B,IAAA,8BAA8B,EAAE,uBAAuB;AACvD,IAAA,cAAc,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCf,EAAA,CAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;AACD,IAAA,kBAAkB,EAAE,wBAAwB;AAC5C,IAAA,uBAAuB,EAAE,QAAQ;CAClC;;ACxCa,MAAO,MAAM,CAAA;IACzB,EAAE,GAAG,CAAC,CAAC;IACP,MAAM,GAAG,sBAAsB,CAAC;IAChC,UAAU,GAAA;AACR,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACjB,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,EAAE,EAAE,CAAC;KAC/B;IACD,WAAW,GAAA;QACT,OAAO,CAAA,SAAA,EAAY,SAAS,CAAC,aAAa,CAAA;;;6BAGjB,CAAC;KAC3B;AACF;;ACdD,MAAM,MAAM,CAAA;AACF,IAAA,MAAM,CAAM;AACZ,IAAA,MAAM,CAAmB;AACjC,IAAA,WAAA,CAAY,MAAO,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAED,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;AAC9B,QAAA,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnE;AAED,IAAA,QAAQ,CAAC,MAAM,EAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CACrB,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,cAAc,CAAC,CACjE,CAAC;KACH;AACF;;ACbD,MAAM,WAAW,CAAA;AACf,IAAA,KAAK,CAAM;AACX,IAAA,OAAO,CAAU;AACjB,IAAA,KAAK,CAAe;AACpB,IAAA,OAAO,CAAS;AAChB,IAAA,OAAO,CAAc;AACrB,IAAA,UAAU,CAAmB;AAC7B,IAAA,SAAS,CAAS;AAClB,IAAA,OAAO,GAAG,IAAIA,MAAO,EAAE,CAAC;AACxB,IAAA,kBAAkB,CAAS;AAC3B,IAAA,iBAAiB,CAAc;IAE/B,WAAY,CAAA,KAAK,EAAE,OAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;AAErB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAE5C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE;AAC7C,YAAA,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;AACrF,SAAA;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACzB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1C,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC/C,iBAAA;gBACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC1C,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,iBAAA;AACF,aAAA;YAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1C,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACpJ,aAAA;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7F,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5H,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA,CAAA,EAAI,EAAE,CAAE,CAAA,GAAG,GAAG,EAAE,CAAA,CAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;SACpF,EAAE,CAAC,CAAC,CAAC;KACP;IAED,eAAe,GAAA;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,cAAc,CACpC,CAAA,EAAG,SAAS,CAAC,aAAa,CAAA,cAAA,CAAgB,CAC3C,CAAC;AACF,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnE;IAED,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,EAAA,CAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;AAED,IAAA,QAAQ,CAAC,OAAO,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAE3C,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AACpC,QAAA,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;YACvC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1D,EAAE,KAAK,CAAC,CAAC;QAEV,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;AACzE,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;KAC5C;IAED,WAAW,GAAA;AACT,QAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;AAE7C,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CACV,mEAAmE,CACpE,CAAC;AACH,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO,CAAC,IAAI,CACV,CAAA,4DAAA,EAA+D,IAAI,CAAC,OAAO,CAAI,EAAA,CAAA,CAChF,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACjC;IAED,SAAS,CAAC,IAAU,EAAE,SAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC5B,CAAC,GAAG,KAAI;AACN,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;AACxE,SAAC,EACD,CAAC,KAAK,KAAI;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;YACtE,UAAU,CAAC,MAAK;gBACd,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC9C,EAAE,CAAC,MAAM,EAAE,CAAC;aACb,EAAE,IAAI,CAAC,CAAC;AACX,SAAC,CACF,CAAC;KACH;IAED,gBAAgB,CAAC,GAAyB,EAAE,SAAiB,EAAA;AAC3D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,WAAW,CACpB,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,OAAO,EACZ,CAAA,EAAG,SAAS,CAAA,EAAG,SAAS,CAAC,aAAa,CAAG,EAAA,GAAG,CAAE,CAAA,CAC/C,CAAC;QAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAE9C,QAAA,IAAI,EAAE,EAAE;YACN,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,8BAA8B,CAAC,CAAC;AACpE,SAAA;KACF;IAED,kBAAkB,CAAC,GAAW,EAAE,SAAiB,EAAA;QAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9C,QAAA,IAAI,EAAE,EAAE;AACN,YAAA,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5B,YAAA,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC7B,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QAChC,OAAO,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7D;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;QAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9C;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CACrC,CAAG,EAAA,SAAS,CAAC,aAAa,CAAgB,cAAA,CAAA,CAC3C,CAAC;QAEF,OAAO,OAAO,IAAI,IAAI,CAAC;KACxB;AACF;;ACtLD,MAAMC,UAAQ,GAAG,eAAe,CAAC;AACjC,MAAMC,YAAU,GAAc,KAAK,CAAC,MAAM,CAACD,UAAQ,CAAC,CAAC;AASrD,MAAM,oBAAoB,GAAG;IAC3B,KAAK;IACL,QAAQ;IACR,OAAO;IACP,OAAO;CACR,CAAC;AAEF,MAAM,SAAU,SAAQC,YAAU,CAAA;IAChC,OAAO,OAAO,CAAS;IACvB,OAAO,QAAQ,CAAS;IACxB,OAAO,SAAS,CAAS;IAEzB,OAAO,MAAM,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,EAAU,CAAC;AACf,QAAA,IAAI,GAAW,CAAC;QAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;cACjB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;cACxC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACzC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,YAAA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACd,SAAA;AAAM,aAAA;YACL,GAAG,GAAG,KAAK,CAAC;AACb,SAAA;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAG,GAAW,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC,IAAI,EAAA;QACf,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC7B,YAAA,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;SAC9B,CAAC;KACH;IAED,OAAO,OAAO,CAAC,OAAO,EAAA;AACpB,QAAA,OAAO,oBAAoB,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,SAAS,EAAA;AAC7D,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBACnC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACtD,aAAA;AACD,YAAA,OAAO,OAAO,CAAC;SAChB,EAAE,EAAE,CAAC,CAAC;KACR;IAED,MAAM,CAAC,IAAI,EAAE,KAAK,EAAA;QAChB,IAAI,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3C,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;AACF,CAAA;AAED,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3C,SAAS,CAAC,SAAS,GAAG,oBAAoB;;ACvF1C,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,SAAU,SAAQ,UAAU,CAAA;IAChC,OAAO,SAAS,CAAS;IACzB,OAAO,QAAQ,CAAS;IACxB,OAAO,OAAO,CAAS;AACvB,IAAA,OAAO,CAAM;IAEb,OAAO,MAAM,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,EAAU,CAAC;AACf,QAAA,IAAI,GAAW,CAAC;QAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;cACjB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;cACxC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACzC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,YAAA,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,YAAA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACd,SAAA;AAAM,aAAA;YACL,GAAG,GAAG,KAAK,CAAC;AACb,SAAA;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAG,GAAW,CAAC,GAAG,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,EAAE,EAAE;AACN,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAEnC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,OAAO,CAAC,IAAI,EAAA;QACjB,MAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAC/B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC9B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,KAAK,CAAC,IAAI,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,MAAM,CAAC,IAAI,EAAE,KAAK,EAAA;AAChB,QAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;AACzC,YAAA,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;AACF,CAAA;AAED,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5B,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3C,SAAS,CAAC,SAAS,GAAG,oBAAoB;;AC1E1C,MAAM,YAAa,SAAQ,WAAW,CAAA;IACpC,WAAY,CAAA,KAAK,EAAE,OAAgB,EAAA;AACjC,QAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;KAC5C;AAEF;;ACTD,MAAM,YAAa,SAAQ,WAAW,CAAA;IACpC,WAAY,CAAA,KAAK,EAAE,OAAgB,EAAA;AACjC,QAAA,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KACjC;AAEF;;ACdD;;AAEG;;;;"}