{"version":3,"file":"editorjs-DRigIPdN.js","sources":["../../../node_modules/@editorjs/editorjs/dist/editorjs.mjs","../../../node_modules/@editorjs/header/dist/header.mjs","../../../node_modules/@editorjs/list/dist/editorjs-list.mjs"],"sourcesContent":["(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode(\".ce-hint--align-start{text-align:left}.ce-hint--align-center{text-align:center}.ce-hint__description{opacity:.6;margin-top:3px}\")),document.head.appendChild(e)}}catch(t){console.error(\"vite-plugin-css-injected-by-js\",t)}})();\nvar Ce = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Ke(n) {\n return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, \"default\") ? n.default : n;\n}\nfunction Xn(n) {\n if (n.__esModule)\n return n;\n var e = n.default;\n if (typeof e == \"function\") {\n var t = function o() {\n return this instanceof o ? Reflect.construct(e, arguments, this.constructor) : e.apply(this, arguments);\n };\n t.prototype = e.prototype;\n } else\n t = {};\n return Object.defineProperty(t, \"__esModule\", { value: !0 }), Object.keys(n).forEach(function(o) {\n var i = Object.getOwnPropertyDescriptor(n, o);\n Object.defineProperty(t, o, i.get ? i : {\n enumerable: !0,\n get: function() {\n return n[o];\n }\n });\n }), t;\n}\nfunction ot() {\n}\nObject.assign(ot, {\n default: ot,\n register: ot,\n revert: function() {\n },\n __esModule: !0\n});\nElement.prototype.matches || (Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function(n) {\n const e = (this.document || this.ownerDocument).querySelectorAll(n);\n let t = e.length;\n for (; --t >= 0 && e.item(t) !== this; )\n ;\n return t > -1;\n});\nElement.prototype.closest || (Element.prototype.closest = function(n) {\n let e = this;\n if (!document.documentElement.contains(e))\n return null;\n do {\n if (e.matches(n))\n return e;\n e = e.parentElement || e.parentNode;\n } while (e !== null);\n return null;\n});\nElement.prototype.prepend || (Element.prototype.prepend = function(e) {\n const t = document.createDocumentFragment();\n Array.isArray(e) || (e = [e]), e.forEach((o) => {\n const i = o instanceof Node;\n t.appendChild(i ? o : document.createTextNode(o));\n }), this.insertBefore(t, this.firstChild);\n});\nElement.prototype.scrollIntoViewIfNeeded || (Element.prototype.scrollIntoViewIfNeeded = function(n) {\n n = arguments.length === 0 ? !0 : !!n;\n const e = this.parentNode, t = window.getComputedStyle(e, null), o = parseInt(t.getPropertyValue(\"border-top-width\")), i = parseInt(t.getPropertyValue(\"border-left-width\")), s = this.offsetTop - e.offsetTop < e.scrollTop, r = this.offsetTop - e.offsetTop + this.clientHeight - o > e.scrollTop + e.clientHeight, a = this.offsetLeft - e.offsetLeft < e.scrollLeft, l = this.offsetLeft - e.offsetLeft + this.clientWidth - i > e.scrollLeft + e.clientWidth, c = s && !r;\n (s || r) && n && (e.scrollTop = this.offsetTop - e.offsetTop - e.clientHeight / 2 - o + this.clientHeight / 2), (a || l) && n && (e.scrollLeft = this.offsetLeft - e.offsetLeft - e.clientWidth / 2 - i + this.clientWidth / 2), (s || r || a || l) && !n && this.scrollIntoView(c);\n});\nwindow.requestIdleCallback = window.requestIdleCallback || function(n) {\n const e = Date.now();\n return setTimeout(function() {\n n({\n didTimeout: !1,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - e));\n }\n });\n }, 1);\n};\nwindow.cancelIdleCallback = window.cancelIdleCallback || function(n) {\n clearTimeout(n);\n};\nlet Vn = (n = 21) => crypto.getRandomValues(new Uint8Array(n)).reduce((e, t) => (t &= 63, t < 36 ? e += t.toString(36) : t < 62 ? e += (t - 26).toString(36).toUpperCase() : t > 62 ? e += \"-\" : e += \"_\", e), \"\");\nvar Lo = /* @__PURE__ */ ((n) => (n.VERBOSE = \"VERBOSE\", n.INFO = \"INFO\", n.WARN = \"WARN\", n.ERROR = \"ERROR\", n))(Lo || {});\nconst y = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91,\n SLASH: 191\n}, qn = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nfunction Ie(n, e, t = \"log\", o, i = \"color: inherit\") {\n if (!(\"console\" in window) || !window.console[t])\n return;\n const s = [\"info\", \"log\", \"warn\", \"error\"].includes(t), r = [];\n switch (Ie.logLevel) {\n case \"ERROR\":\n if (t !== \"error\")\n return;\n break;\n case \"WARN\":\n if (![\"error\", \"warn\"].includes(t))\n return;\n break;\n case \"INFO\":\n if (!s || n)\n return;\n break;\n }\n o && r.push(o);\n const a = \"Editor.js 2.31.0-rc.7\", l = `line-height: 1em;\n color: #006FEA;\n display: inline-block;\n font-size: 11px;\n line-height: 1em;\n background-color: #fff;\n padding: 4px 9px;\n border-radius: 30px;\n border: 1px solid rgba(56, 138, 229, 0.16);\n margin: 4px 5px 4px 0;`;\n n && (s ? (r.unshift(l, i), e = `%c${a}%c ${e}`) : e = `( ${a} )${e}`);\n try {\n s ? o ? console[t](`${e} %o`, ...r) : console[t](e, ...r) : console[t](e);\n } catch {\n }\n}\nIe.logLevel = \"VERBOSE\";\nfunction Zn(n) {\n Ie.logLevel = n;\n}\nconst S = Ie.bind(window, !1), X = Ie.bind(window, !0);\nfunction le(n) {\n return Object.prototype.toString.call(n).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction A(n) {\n return le(n) === \"function\" || le(n) === \"asyncfunction\";\n}\nfunction D(n) {\n return le(n) === \"object\";\n}\nfunction te(n) {\n return le(n) === \"string\";\n}\nfunction Gn(n) {\n return le(n) === \"boolean\";\n}\nfunction yo(n) {\n return le(n) === \"number\";\n}\nfunction wo(n) {\n return le(n) === \"undefined\";\n}\nfunction V(n) {\n return n ? Object.keys(n).length === 0 && n.constructor === Object : !0;\n}\nfunction Po(n) {\n return n > 47 && n < 58 || // number keys\n n === 32 || n === 13 || // Space bar & return key(s)\n n === 229 || // processing key input for certain languages — Chinese, Japanese, etc.\n n > 64 && n < 91 || // letter keys\n n > 95 && n < 112 || // Numpad keys\n n > 185 && n < 193 || // ;=,-./` (in order)\n n > 218 && n < 223;\n}\nasync function Qn(n, e = () => {\n}, t = () => {\n}) {\n async function o(i, s, r) {\n try {\n await i.function(i.data), await s(wo(i.data) ? {} : i.data);\n } catch {\n r(wo(i.data) ? {} : i.data);\n }\n }\n return n.reduce(async (i, s) => (await i, o(s, e, t)), Promise.resolve());\n}\nfunction No(n) {\n return Array.prototype.slice.call(n);\n}\nfunction Fe(n, e) {\n return function() {\n const t = this, o = arguments;\n window.setTimeout(() => n.apply(t, o), e);\n };\n}\nfunction Jn(n) {\n return n.name.split(\".\").pop();\n}\nfunction ei(n) {\n return /^[-\\w]+\\/([-+\\w]+|\\*)$/.test(n);\n}\nfunction Eo(n, e, t) {\n let o;\n return (...i) => {\n const s = this, r = () => {\n o = null, t || n.apply(s, i);\n }, a = t && !o;\n window.clearTimeout(o), o = window.setTimeout(r, e), a && n.apply(s, i);\n };\n}\nfunction dt(n, e, t = void 0) {\n let o, i, s, r = null, a = 0;\n t || (t = {});\n const l = function() {\n a = t.leading === !1 ? 0 : Date.now(), r = null, s = n.apply(o, i), r || (o = i = null);\n };\n return function() {\n const c = Date.now();\n !a && t.leading === !1 && (a = c);\n const u = e - (c - a);\n return o = this, i = arguments, u <= 0 || u > e ? (r && (clearTimeout(r), r = null), a = c, s = n.apply(o, i), r || (o = i = null)) : !r && t.trailing !== !1 && (r = setTimeout(l, u)), s;\n };\n}\nfunction ti() {\n const n = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, e = Object.keys(n).find((t) => window.navigator.appVersion.toLowerCase().indexOf(t) !== -1);\n return e && (n[e] = !0), n;\n}\nfunction je(n) {\n return n[0].toUpperCase() + n.slice(1);\n}\nfunction ut(n, ...e) {\n if (!e.length)\n return n;\n const t = e.shift();\n if (D(n) && D(t))\n for (const o in t)\n D(t[o]) ? (n[o] || Object.assign(n, { [o]: {} }), ut(n[o], t[o])) : Object.assign(n, { [o]: t[o] });\n return ut(n, ...e);\n}\nfunction vt(n) {\n const e = ti();\n return n = n.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \" + \"), e.mac ? n = n.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : n = n.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), n;\n}\nfunction oi(n) {\n try {\n return new URL(n).href;\n } catch {\n }\n return n.substring(0, 2) === \"//\" ? window.location.protocol + n : window.location.origin + n;\n}\nfunction ni() {\n return Vn(10);\n}\nfunction ii(n) {\n window.open(n, \"_blank\");\n}\nfunction si(n = \"\") {\n return `${n}${Math.floor(Math.random() * 1e8).toString(16)}`;\n}\nfunction ht(n, e, t) {\n const o = `«${e}» is deprecated and will be removed in the next major release. Please use the «${t}» instead.`;\n n && X(o, \"warn\");\n}\nfunction me(n, e, t) {\n const o = t.value ? \"value\" : \"get\", i = t[o], s = `#${e}Cache`;\n if (t[o] = function(...r) {\n return this[s] === void 0 && (this[s] = i.apply(this, ...r)), this[s];\n }, o === \"get\" && t.set) {\n const r = t.set;\n t.set = function(a) {\n delete n[s], r.apply(this, a);\n };\n }\n return t;\n}\nconst Ro = 650;\nfunction be() {\n return window.matchMedia(`(max-width: ${Ro}px)`).matches;\n}\nconst pt = typeof window < \"u\" && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction ri(n, e) {\n const t = Array.isArray(n) || D(n), o = Array.isArray(e) || D(e);\n return t || o ? JSON.stringify(n) === JSON.stringify(e) : n === e;\n}\nclass d {\n /**\n * Check if passed tag has no closed tag\n *\n * @param {HTMLElement} tag - element to check\n * @returns {boolean}\n */\n static isSingleTag(e) {\n return e.tagName && [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Check if element is BR or WBR\n *\n * @param {HTMLElement} element - element to check\n * @returns {boolean}\n */\n static isLineBreakTag(e) {\n return e && e.tagName && [\n \"BR\",\n \"WBR\"\n ].includes(e.tagName);\n }\n /**\n * Helper for making Elements with class name and attributes\n *\n * @param {string} tagName - new Element tag name\n * @param {string[]|string} [classNames] - list or name of CSS class name(s)\n * @param {object} [attributes] - any attributes\n * @returns {HTMLElement}\n */\n static make(e, t = null, o = {}) {\n const i = document.createElement(e);\n if (Array.isArray(t)) {\n const s = t.filter((r) => r !== void 0);\n i.classList.add(...s);\n } else\n t && i.classList.add(t);\n for (const s in o)\n Object.prototype.hasOwnProperty.call(o, s) && (i[s] = o[s]);\n return i;\n }\n /**\n * Creates Text Node with the passed content\n *\n * @param {string} content - text content\n * @returns {Text}\n */\n static text(e) {\n return document.createTextNode(e);\n }\n /**\n * Append one or several elements to the parent\n *\n * @param {Element|DocumentFragment} parent - where to append\n * @param {Element|Element[]|DocumentFragment|Text|Text[]} elements - element or elements list\n */\n static append(e, t) {\n Array.isArray(t) ? t.forEach((o) => e.appendChild(o)) : e.appendChild(t);\n }\n /**\n * Append element or a couple to the beginning of the parent elements\n *\n * @param {Element} parent - where to append\n * @param {Element|Element[]} elements - element or elements list\n */\n static prepend(e, t) {\n Array.isArray(t) ? (t = t.reverse(), t.forEach((o) => e.prepend(o))) : e.prepend(t);\n }\n /**\n * Swap two elements in parent\n *\n * @param {HTMLElement} el1 - from\n * @param {HTMLElement} el2 - to\n * @deprecated\n */\n static swap(e, t) {\n const o = document.createElement(\"div\"), i = e.parentNode;\n i.insertBefore(o, e), i.insertBefore(e, t), i.insertBefore(t, o), i.removeChild(o);\n }\n /**\n * Selector Decorator\n *\n * Returns first match\n *\n * @param {Element} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {Element}\n */\n static find(e = document, t) {\n return e.querySelector(t);\n }\n /**\n * Get Element by Id\n *\n * @param {string} id - id to find\n * @returns {HTMLElement | null}\n */\n static get(e) {\n return document.getElementById(e);\n }\n /**\n * Selector Decorator.\n *\n * Returns all matches\n *\n * @param {Element|Document} el - element we searching inside. Default - DOM Document\n * @param {string} selector - searching string\n * @returns {NodeList}\n */\n static findAll(e = document, t) {\n return e.querySelectorAll(t);\n }\n /**\n * Returns CSS selector for all text inputs\n */\n static get allInputsSelector() {\n return \"[contenteditable=true], textarea, input:not([type]), \" + [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"].map((t) => `input[type=\"${t}\"]`).join(\", \");\n }\n /**\n * Find all contenteditable, textarea and editable input elements passed holder contains\n *\n * @param holder - element where to find inputs\n */\n static findAllInputs(e) {\n return No(e.querySelectorAll(d.allInputsSelector)).reduce((t, o) => d.isNativeInput(o) || d.containsOnlyInlineElements(o) ? [...t, o] : [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Search for deepest node which is Leaf.\n * Leaf is the vertex that doesn't have any child nodes\n *\n * @description Method recursively goes throw the all Node until it finds the Leaf\n * @param {Node} node - root Node. From this vertex we start Deep-first search\n * {@link https://en.wikipedia.org/wiki/Depth-first_search}\n * @param {boolean} [atLast] - find last text node\n * @returns - it can be text Node or Element Node, so that caret will able to work with it\n * Can return null if node is Document or DocumentFragment, or node is not attached to the DOM\n */\n static getDeepestNode(e, t = !1) {\n const o = t ? \"lastChild\" : \"firstChild\", i = t ? \"previousSibling\" : \"nextSibling\";\n if (e && e.nodeType === Node.ELEMENT_NODE && e[o]) {\n let s = e[o];\n if (d.isSingleTag(s) && !d.isNativeInput(s) && !d.isLineBreakTag(s))\n if (s[i])\n s = s[i];\n else if (s.parentNode[i])\n s = s.parentNode[i];\n else\n return s.parentNode;\n return this.getDeepestNode(s, t);\n }\n return e;\n }\n /**\n * Check if object is DOM node\n *\n * @param {*} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isElement(e) {\n return yo(e) ? !1 : e && e.nodeType && e.nodeType === Node.ELEMENT_NODE;\n }\n /**\n * Check if object is DocumentFragment node\n *\n * @param {object} node - object to check\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isFragment(e) {\n return yo(e) ? !1 : e && e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n }\n /**\n * Check if passed element is contenteditable\n *\n * @param {HTMLElement} element - html element to check\n * @returns {boolean}\n */\n static isContentEditable(e) {\n return e.contentEditable === \"true\";\n }\n /**\n * Checks target if it is native input\n *\n * @param {*} target - HTML element or string\n * @returns {boolean}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static isNativeInput(e) {\n const t = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return e && e.tagName ? t.includes(e.tagName) : !1;\n }\n /**\n * Checks if we can set caret\n *\n * @param {HTMLElement} target - target to check\n * @returns {boolean}\n */\n static canSetCaret(e) {\n let t = !0;\n if (d.isNativeInput(e))\n switch (e.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n t = !1;\n break;\n }\n else\n t = d.isContentEditable(e);\n return t;\n }\n /**\n * Checks node if it is empty\n *\n * @description Method checks simple Node without any childs for emptiness\n * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method\n * @param {Node} node - node to check\n * @param {string} [ignoreChars] - char or substring to treat as empty\n * @returns {boolean} true if it is empty\n */\n static isNodeEmpty(e, t) {\n let o;\n return this.isSingleTag(e) && !this.isLineBreakTag(e) ? !1 : (this.isElement(e) && this.isNativeInput(e) ? o = e.value : o = e.textContent.replace(\"​\", \"\"), t && (o = o.replace(new RegExp(t, \"g\"), \"\")), o.length === 0);\n }\n /**\n * checks node if it is doesn't have any child nodes\n *\n * @param {Node} node - node to check\n * @returns {boolean}\n */\n static isLeaf(e) {\n return e ? e.childNodes.length === 0 : !1;\n }\n /**\n * breadth-first search (BFS)\n * {@link https://en.wikipedia.org/wiki/Breadth-first_search}\n *\n * @description Pushes to stack all DOM leafs and checks for emptiness\n * @param {Node} node - node to check\n * @param {string} [ignoreChars] - char or substring to treat as empty\n * @returns {boolean}\n */\n static isEmpty(e, t) {\n const o = [e];\n for (; o.length > 0; )\n if (e = o.shift(), !!e) {\n if (this.isLeaf(e) && !this.isNodeEmpty(e, t))\n return !1;\n e.childNodes && o.push(...Array.from(e.childNodes));\n }\n return !0;\n }\n /**\n * Check if string contains html elements\n *\n * @param {string} str - string to check\n * @returns {boolean}\n */\n static isHTMLString(e) {\n const t = d.make(\"div\");\n return t.innerHTML = e, t.childElementCount > 0;\n }\n /**\n * Return length of node`s text content\n *\n * @param {Node} node - node with content\n * @returns {number}\n */\n static getContentLength(e) {\n return d.isNativeInput(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : e.textContent.length;\n }\n /**\n * Return array of names of block html elements\n *\n * @returns {string[]}\n */\n static get blockElements() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n }\n /**\n * Check if passed content includes only inline elements\n *\n * @param {string|HTMLElement} data - element or html string\n * @returns {boolean}\n */\n static containsOnlyInlineElements(e) {\n let t;\n te(e) ? (t = document.createElement(\"div\"), t.innerHTML = e) : t = e;\n const o = (i) => !d.blockElements.includes(i.tagName.toLowerCase()) && Array.from(i.children).every(o);\n return Array.from(t.children).every(o);\n }\n /**\n * Find and return all block elements in the passed parent (including subtree)\n *\n * @param {HTMLElement} parent - root element\n * @returns {HTMLElement[]}\n */\n static getDeepestBlockElements(e) {\n return d.containsOnlyInlineElements(e) ? [e] : Array.from(e.children).reduce((t, o) => [...t, ...d.getDeepestBlockElements(o)], []);\n }\n /**\n * Helper for get holder from {string} or return HTMLElement\n *\n * @param {string | HTMLElement} element - holder's id or holder's HTML Element\n * @returns {HTMLElement}\n */\n static getHolder(e) {\n return te(e) ? document.getElementById(e) : e;\n }\n /**\n * Returns true if element is anchor (is A tag)\n *\n * @param {Element} element - element to check\n * @returns {boolean}\n */\n static isAnchor(e) {\n return e.tagName.toLowerCase() === \"a\";\n }\n /**\n * Return element's offset related to the document\n *\n * @todo handle case when editor initialized in scrollable popup\n * @param el - element to compute offset\n */\n static offset(e) {\n const t = e.getBoundingClientRect(), o = window.pageXOffset || document.documentElement.scrollLeft, i = window.pageYOffset || document.documentElement.scrollTop, s = t.top + i, r = t.left + o;\n return {\n top: s,\n left: r,\n bottom: s + t.height,\n right: r + t.width\n };\n }\n}\nfunction ai(n) {\n return !/[^\\t\\n\\r ]/.test(n);\n}\nfunction li(n) {\n const e = window.getComputedStyle(n), t = parseFloat(e.fontSize), o = parseFloat(e.lineHeight) || t * 1.2, i = parseFloat(e.paddingTop), s = parseFloat(e.borderTopWidth), r = parseFloat(e.marginTop), a = t * 0.8, l = (o - t) / 2;\n return r + s + i + l + a;\n}\nfunction Do(n) {\n n.dataset.empty = d.isEmpty(n) ? \"true\" : \"false\";\n}\nconst ci = {\n blockTunes: {\n toggler: {\n \"Click to tune\": \"\",\n \"or drag to move\": \"\"\n }\n },\n inlineToolbar: {\n converter: {\n \"Convert to\": \"\"\n }\n },\n toolbar: {\n toolbox: {\n Add: \"\"\n }\n },\n popover: {\n Filter: \"\",\n \"Nothing found\": \"\",\n \"Convert to\": \"\"\n }\n}, di = {\n Text: \"\",\n Link: \"\",\n Bold: \"\",\n Italic: \"\"\n}, ui = {\n link: {\n \"Add a link\": \"\"\n },\n stub: {\n \"The block can not be displayed correctly.\": \"\"\n }\n}, hi = {\n delete: {\n Delete: \"\",\n \"Click to delete\": \"\"\n },\n moveUp: {\n \"Move up\": \"\"\n },\n moveDown: {\n \"Move down\": \"\"\n }\n}, Fo = {\n ui: ci,\n toolNames: di,\n tools: ui,\n blockTunes: hi\n}, jo = class he {\n /**\n * Type-safe translation for internal UI texts:\n * Perform translation of the string by namespace and a key\n *\n * @example I18n.ui(I18nInternalNS.ui.blockTunes.toggler, 'Click to tune')\n * @param internalNamespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static ui(e, t) {\n return he._t(e, t);\n }\n /**\n * Translate for external strings that is not presented in default dictionary.\n * For example, for user-specified tool names\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static t(e, t) {\n return he._t(e, t);\n }\n /**\n * Adjust module for using external dictionary\n *\n * @param dictionary - new messages list to override default\n */\n static setDictionary(e) {\n he.currentDictionary = e;\n }\n /**\n * Perform translation both for internal and external namespaces\n * If there is no translation found, returns passed key as a translated message\n *\n * @param namespace - path to translated string in dictionary\n * @param dictKey - dictionary key. Better to use default locale original text\n */\n static _t(e, t) {\n const o = he.getNamespace(e);\n return !o || !o[t] ? t : o[t];\n }\n /**\n * Find messages section by namespace path\n *\n * @param namespace - path to section\n */\n static getNamespace(e) {\n return e.split(\".\").reduce((o, i) => !o || !Object.keys(o).length ? {} : o[i], he.currentDictionary);\n }\n};\njo.currentDictionary = Fo;\nlet z = jo;\nclass Ho extends Error {\n}\nclass Oe {\n constructor() {\n this.subscribers = {};\n }\n /**\n * Subscribe any event on callback\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n on(e, t) {\n e in this.subscribers || (this.subscribers[e] = []), this.subscribers[e].push(t);\n }\n /**\n * Subscribe any event on callback. Callback will be called once and be removed from subscribers array after call.\n *\n * @param eventName - event name\n * @param callback - subscriber\n */\n once(e, t) {\n e in this.subscribers || (this.subscribers[e] = []);\n const o = (i) => {\n const s = t(i), r = this.subscribers[e].indexOf(o);\n return r !== -1 && this.subscribers[e].splice(r, 1), s;\n };\n this.subscribers[e].push(o);\n }\n /**\n * Emit callbacks with passed data\n *\n * @param eventName - event name\n * @param data - subscribers get this data when they were fired\n */\n emit(e, t) {\n V(this.subscribers) || !this.subscribers[e] || this.subscribers[e].reduce((o, i) => {\n const s = i(o);\n return s !== void 0 ? s : o;\n }, t);\n }\n /**\n * Unsubscribe callback from event\n *\n * @param eventName - event name\n * @param callback - event handler\n */\n off(e, t) {\n if (this.subscribers[e] === void 0) {\n console.warn(`EventDispatcher .off(): there is no subscribers for event \"${e.toString()}\". Probably, .off() called before .on()`);\n return;\n }\n for (let o = 0; o < this.subscribers[e].length; o++)\n if (this.subscribers[e][o] === t) {\n delete this.subscribers[e][o];\n break;\n }\n }\n /**\n * Destroyer\n * clears subscribers list\n */\n destroy() {\n this.subscribers = {};\n }\n}\nfunction J(n) {\n Object.setPrototypeOf(this, {\n /**\n * Block id\n *\n * @returns {string}\n */\n get id() {\n return n.id;\n },\n /**\n * Tool name\n *\n * @returns {string}\n */\n get name() {\n return n.name;\n },\n /**\n * Tool config passed on Editor's initialization\n *\n * @returns {ToolConfig}\n */\n get config() {\n return n.config;\n },\n /**\n * .ce-block element, that wraps plugin contents\n *\n * @returns {HTMLElement}\n */\n get holder() {\n return n.holder;\n },\n /**\n * True if Block content is empty\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return n.isEmpty;\n },\n /**\n * True if Block is selected with Cross-Block selection\n *\n * @returns {boolean}\n */\n get selected() {\n return n.selected;\n },\n /**\n * Set Block's stretch state\n *\n * @param {boolean} state — state to set\n */\n set stretched(t) {\n n.stretched = t;\n },\n /**\n * True if Block is stretched\n *\n * @returns {boolean}\n */\n get stretched() {\n return n.stretched;\n },\n /**\n * True if Block has inputs to be focused\n */\n get focusable() {\n return n.focusable;\n },\n /**\n * Call Tool method with errors handler under-the-hood\n *\n * @param {string} methodName - method to call\n * @param {object} param - object with parameters\n * @returns {unknown}\n */\n call(t, o) {\n return n.call(t, o);\n },\n /**\n * Save Block content\n *\n * @returns {Promise}\n */\n save() {\n return n.save();\n },\n /**\n * Validate Block data\n *\n * @param {BlockToolData} data - data to validate\n * @returns {Promise}\n */\n validate(t) {\n return n.validate(t);\n },\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n n.dispatchChange();\n },\n /**\n * Tool could specify several entries to be displayed at the Toolbox (for example, \"Heading 1\", \"Heading 2\", \"Heading 3\")\n * This method returns the entry that is related to the Block (depended on the Block data)\n */\n getActiveToolboxEntry() {\n return n.getActiveToolboxEntry();\n }\n });\n}\nclass _e {\n constructor() {\n this.allListeners = [];\n }\n /**\n * Assigns event listener on element and returns unique identifier\n *\n * @param {EventTarget} element - DOM element that needs to be listened\n * @param {string} eventType - event type\n * @param {Function} handler - method that will be fired on event\n * @param {boolean|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n on(e, t, o, i = !1) {\n const s = si(\"l\"), r = {\n id: s,\n element: e,\n eventType: t,\n handler: o,\n options: i\n };\n if (!this.findOne(e, t, o))\n return this.allListeners.push(r), e.addEventListener(t, o, i), s;\n }\n /**\n * Removes event listener from element\n *\n * @param {EventTarget} element - DOM element that we removing listener\n * @param {string} eventType - event type\n * @param {Function} handler - remove handler, if element listens several handlers on the same event type\n * @param {boolean|AddEventListenerOptions} options - useCapture or {capture, passive, once}\n */\n off(e, t, o, i) {\n const s = this.findAll(e, t, o);\n s.forEach((r, a) => {\n const l = this.allListeners.indexOf(s[a]);\n l > -1 && (this.allListeners.splice(l, 1), r.element.removeEventListener(r.eventType, r.handler, r.options));\n });\n }\n /**\n * Removes listener by id\n *\n * @param {string} id - listener identifier\n */\n offById(e) {\n const t = this.findById(e);\n t && t.element.removeEventListener(t.eventType, t.handler, t.options);\n }\n /**\n * Finds and returns first listener by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} [eventType] - event type\n * @param {Function} [handler] - event handler\n * @returns {ListenerData|null}\n */\n findOne(e, t, o) {\n const i = this.findAll(e, t, o);\n return i.length > 0 ? i[0] : null;\n }\n /**\n * Return all stored listeners by passed params\n *\n * @param {EventTarget} element - event target\n * @param {string} eventType - event type\n * @param {Function} handler - event handler\n * @returns {ListenerData[]}\n */\n findAll(e, t, o) {\n let i;\n const s = e ? this.findByEventTarget(e) : [];\n return e && t && o ? i = s.filter((r) => r.eventType === t && r.handler === o) : e && t ? i = s.filter((r) => r.eventType === t) : i = s, i;\n }\n /**\n * Removes all listeners\n */\n removeAll() {\n this.allListeners.map((e) => {\n e.element.removeEventListener(e.eventType, e.handler, e.options);\n }), this.allListeners = [];\n }\n /**\n * Module cleanup on destruction\n */\n destroy() {\n this.removeAll();\n }\n /**\n * Search method: looks for listener by passed element\n *\n * @param {EventTarget} element - searching element\n * @returns {Array} listeners that found on element\n */\n findByEventTarget(e) {\n return this.allListeners.filter((t) => {\n if (t.element === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed event type\n *\n * @param {string} eventType - event type\n * @returns {ListenerData[]} listeners that found on element\n */\n findByType(e) {\n return this.allListeners.filter((t) => {\n if (t.eventType === e)\n return t;\n });\n }\n /**\n * Search method: looks for listener by passed handler\n *\n * @param {Function} handler - event handler\n * @returns {ListenerData[]} listeners that found on element\n */\n findByHandler(e) {\n return this.allListeners.filter((t) => {\n if (t.handler === e)\n return t;\n });\n }\n /**\n * Returns listener data found by id\n *\n * @param {string} id - listener identifier\n * @returns {ListenerData}\n */\n findById(e) {\n return this.allListeners.find((t) => t.id === e);\n }\n}\nclass E {\n /**\n * @class\n * @param options - Module options\n * @param options.config - Module config\n * @param options.eventsDispatcher - Common event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n if (this.nodes = {}, this.listeners = new _e(), this.readOnlyMutableListeners = {\n /**\n * Assigns event listener on DOM element and pushes into special array that might be removed\n *\n * @param {EventTarget} element - DOM Element\n * @param {string} eventType - Event name\n * @param {Function} handler - Event handler\n * @param {boolean|AddEventListenerOptions} options - Listening options\n */\n on: (o, i, s, r = !1) => {\n this.mutableListenerIds.push(\n this.listeners.on(o, i, s, r)\n );\n },\n /**\n * Clears all mutable listeners\n */\n clearAll: () => {\n for (const o of this.mutableListenerIds)\n this.listeners.offById(o);\n this.mutableListenerIds = [];\n }\n }, this.mutableListenerIds = [], new.target === E)\n throw new TypeError(\"Constructors for abstract class Module are not allowed.\");\n this.config = e, this.eventsDispatcher = t;\n }\n /**\n * Editor modules setter\n *\n * @param {EditorModules} Editor - Editor's Modules\n */\n set state(e) {\n this.Editor = e;\n }\n /**\n * Remove memorized nodes\n */\n removeAllNodes() {\n for (const e in this.nodes) {\n const t = this.nodes[e];\n t instanceof HTMLElement && t.remove();\n }\n }\n /**\n * Returns true if current direction is RTL (Right-To-Left)\n */\n get isRtl() {\n return this.config.i18n.direction === \"rtl\";\n }\n}\nclass b {\n constructor() {\n this.instance = null, this.selection = null, this.savedSelectionRange = null, this.isFakeBackgroundEnabled = !1, this.commandBackground = \"backColor\", this.commandRemoveFormat = \"removeFormat\";\n }\n /**\n * Editor styles\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n static get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorZone: \"codex-editor__redactor\"\n };\n }\n /**\n * Returns selected anchor\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorNode}\n *\n * @returns {Node|null}\n */\n static get anchorNode() {\n const e = window.getSelection();\n return e ? e.anchorNode : null;\n }\n /**\n * Returns selected anchor element\n *\n * @returns {Element|null}\n */\n static get anchorElement() {\n const e = window.getSelection();\n if (!e)\n return null;\n const t = e.anchorNode;\n return t ? d.isElement(t) ? t : t.parentElement : null;\n }\n /**\n * Returns selection offset according to the anchor node\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorOffset}\n *\n * @returns {number|null}\n */\n static get anchorOffset() {\n const e = window.getSelection();\n return e ? e.anchorOffset : null;\n }\n /**\n * Is current selection range collapsed\n *\n * @returns {boolean|null}\n */\n static get isCollapsed() {\n const e = window.getSelection();\n return e ? e.isCollapsed : null;\n }\n /**\n * Check current selection if it is at Editor's zone\n *\n * @returns {boolean}\n */\n static get isAtEditor() {\n return this.isSelectionAtEditor(b.get());\n }\n /**\n * Check if passed selection is at Editor's zone\n *\n * @param selection - Selection object to check\n */\n static isSelectionAtEditor(e) {\n if (!e)\n return !1;\n let t = e.anchorNode || e.focusNode;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${b.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Check if passed range at Editor zone\n *\n * @param range - range to check\n */\n static isRangeAtEditor(e) {\n if (!e)\n return;\n let t = e.startContainer;\n t && t.nodeType === Node.TEXT_NODE && (t = t.parentNode);\n let o = null;\n return t && t instanceof Element && (o = t.closest(`.${b.CSS.editorZone}`)), o ? o.nodeType === Node.ELEMENT_NODE : !1;\n }\n /**\n * Methods return boolean that true if selection exists on the page\n */\n static get isSelectionExists() {\n return !!b.get().anchorNode;\n }\n /**\n * Return first range\n *\n * @returns {Range|null}\n */\n static get range() {\n return this.getRangeFromSelection(this.get());\n }\n /**\n * Returns range from passed Selection object\n *\n * @param selection - Selection object to get Range from\n */\n static getRangeFromSelection(e) {\n return e && e.rangeCount ? e.getRangeAt(0) : null;\n }\n /**\n * Calculates position and size of selected text\n *\n * @returns {DOMRect | ClientRect}\n */\n static get rect() {\n let e = document.selection, t, o = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n if (e && e.type !== \"Control\")\n return e = e, t = e.createRange(), o.x = t.boundingLeft, o.y = t.boundingTop, o.width = t.boundingWidth, o.height = t.boundingHeight, o;\n if (!window.getSelection)\n return S(\"Method window.getSelection is not supported\", \"warn\"), o;\n if (e = window.getSelection(), e.rangeCount === null || isNaN(e.rangeCount))\n return S(\"Method SelectionUtils.rangeCount is not supported\", \"warn\"), o;\n if (e.rangeCount === 0)\n return o;\n if (t = e.getRangeAt(0).cloneRange(), t.getBoundingClientRect && (o = t.getBoundingClientRect()), o.x === 0 && o.y === 0) {\n const i = document.createElement(\"span\");\n if (i.getBoundingClientRect) {\n i.appendChild(document.createTextNode(\"​\")), t.insertNode(i), o = i.getBoundingClientRect();\n const s = i.parentNode;\n s.removeChild(i), s.normalize();\n }\n }\n return o;\n }\n /**\n * Returns selected text as String\n *\n * @returns {string}\n */\n static get text() {\n return window.getSelection ? window.getSelection().toString() : \"\";\n }\n /**\n * Returns window SelectionUtils\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Window/getSelection}\n *\n * @returns {Selection}\n */\n static get() {\n return window.getSelection();\n }\n /**\n * Set focus to contenteditable or native input element\n *\n * @param element - element where to set focus\n * @param offset - offset of cursor\n */\n static setCursor(e, t = 0) {\n const o = document.createRange(), i = window.getSelection();\n return d.isNativeInput(e) ? d.canSetCaret(e) ? (e.focus(), e.selectionStart = e.selectionEnd = t, e.getBoundingClientRect()) : void 0 : (o.setStart(e, t), o.setEnd(e, t), i.removeAllRanges(), i.addRange(o), o.getBoundingClientRect());\n }\n /**\n * Check if current range exists and belongs to container\n *\n * @param container - where range should be\n */\n static isRangeInsideContainer(e) {\n const t = b.range;\n return t === null ? !1 : e.contains(t.startContainer);\n }\n /**\n * Adds fake cursor to the current range\n */\n static addFakeCursor() {\n const e = b.range;\n if (e === null)\n return;\n const t = d.make(\"span\", \"codex-editor__fake-cursor\");\n t.dataset.mutationFree = \"true\", e.collapse(), e.insertNode(t);\n }\n /**\n * Check if passed element contains a fake cursor\n *\n * @param el - where to check\n */\n static isFakeCursorInsideContainer(e) {\n return d.find(e, \".codex-editor__fake-cursor\") !== null;\n }\n /**\n * Removes fake cursor from a container\n *\n * @param container - container to look for\n */\n static removeFakeCursor(e = document.body) {\n const t = d.find(e, \".codex-editor__fake-cursor\");\n t && t.remove();\n }\n /**\n * Removes fake background\n */\n removeFakeBackground() {\n this.isFakeBackgroundEnabled && (this.isFakeBackgroundEnabled = !1, document.execCommand(this.commandRemoveFormat));\n }\n /**\n * Sets fake background\n */\n setFakeBackground() {\n document.execCommand(this.commandBackground, !1, \"#a8d6ff\"), this.isFakeBackgroundEnabled = !0;\n }\n /**\n * Save SelectionUtils's range\n */\n save() {\n this.savedSelectionRange = b.range;\n }\n /**\n * Restore saved SelectionUtils's range\n */\n restore() {\n if (!this.savedSelectionRange)\n return;\n const e = window.getSelection();\n e.removeAllRanges(), e.addRange(this.savedSelectionRange);\n }\n /**\n * Clears saved selection\n */\n clearSaved() {\n this.savedSelectionRange = null;\n }\n /**\n * Collapse current selection\n */\n collapseToEnd() {\n const e = window.getSelection(), t = document.createRange();\n t.selectNodeContents(e.focusNode), t.collapse(!1), e.removeAllRanges(), e.addRange(t);\n }\n /**\n * Looks ahead to find passed tag from current selection\n *\n * @param {string} tagName - tag to found\n * @param {string} [className] - tag's class name\n * @param {number} [searchDepth] - count of tags that can be included. For better performance.\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t, o = 10) {\n const i = window.getSelection();\n let s = null;\n return !i || !i.anchorNode || !i.focusNode ? null : ([\n /** the Node in which the selection begins */\n i.anchorNode,\n /** the Node in which the selection ends */\n i.focusNode\n ].forEach((a) => {\n let l = o;\n for (; l > 0 && a.parentNode && !(a.tagName === e && (s = a, t && a.classList && !a.classList.contains(t) && (s = null), s)); )\n a = a.parentNode, l--;\n }), s);\n }\n /**\n * Expands selection range to the passed parent node\n *\n * @param {HTMLElement} element - element which contents should be selected\n */\n expandToTag(e) {\n const t = window.getSelection();\n t.removeAllRanges();\n const o = document.createRange();\n o.selectNodeContents(e), t.addRange(o);\n }\n}\nfunction pi(n, e) {\n const { type: t, target: o, addedNodes: i, removedNodes: s } = n;\n return n.type === \"attributes\" && n.attributeName === \"data-empty\" ? !1 : !!(e.contains(o) || t === \"childList\" && (Array.from(i).some((l) => l === e) || Array.from(s).some((l) => l === e)));\n}\nconst ft = \"redactor dom changed\", $o = \"block changed\", zo = \"fake cursor is about to be toggled\", Uo = \"fake cursor have been set\", Te = \"editor mobile layout toggled\";\nfunction gt(n, e) {\n if (!n.conversionConfig)\n return !1;\n const t = n.conversionConfig[e];\n return A(t) || te(t);\n}\nfunction He(n, e) {\n return gt(n.tool, e);\n}\nfunction Wo(n, e) {\n return Object.entries(n).some(([t, o]) => e[t] && ri(e[t], o));\n}\nasync function Yo(n, e) {\n const o = (await n.save()).data, i = e.find((s) => s.name === n.name);\n return i !== void 0 && !gt(i, \"export\") ? [] : e.reduce((s, r) => {\n if (!gt(r, \"import\") || r.toolbox === void 0)\n return s;\n const a = r.toolbox.filter((l) => {\n if (V(l) || l.icon === void 0)\n return !1;\n if (l.data !== void 0) {\n if (Wo(l.data, o))\n return !1;\n } else if (r.name === n.name)\n return !1;\n return !0;\n });\n return s.push({\n ...r,\n toolbox: a\n }), s;\n }, []);\n}\nfunction xo(n, e) {\n return n.mergeable ? n.name === e.name ? !0 : He(e, \"export\") && He(n, \"import\") : !1;\n}\nfunction fi(n, e) {\n const t = e == null ? void 0 : e.export;\n return A(t) ? t(n) : te(t) ? n[t] : (t !== void 0 && S(\"Conversion «export» property must be a string or function. String means key of saved data object to export. Function should export processed string to export.\"), \"\");\n}\nfunction Bo(n, e, t) {\n const o = e == null ? void 0 : e.import;\n return A(o) ? o(n, t) : te(o) ? {\n [o]: n\n } : (o !== void 0 && S(\"Conversion «import» property must be a string or function. String means key of tool data to import. Function accepts a imported string and return composed tool data.\"), {});\n}\nvar _ = /* @__PURE__ */ ((n) => (n.Default = \"default\", n.Separator = \"separator\", n.Html = \"html\", n))(_ || {}), ee = /* @__PURE__ */ ((n) => (n.APPEND_CALLBACK = \"appendCallback\", n.RENDERED = \"rendered\", n.MOVED = \"moved\", n.UPDATED = \"updated\", n.REMOVED = \"removed\", n.ON_PASTE = \"onPaste\", n))(ee || {});\nclass R extends Oe {\n /**\n * @param options - block constructor options\n * @param [options.id] - block's id. Will be generated if omitted.\n * @param options.data - Tool's initial data\n * @param options.tool — block's tool\n * @param options.api - Editor API module for pass it to the Block Tunes\n * @param options.readOnly - Read-Only flag\n * @param [eventBus] - Editor common event bus. Allows to subscribe on some Editor events. Could be omitted when \"virtual\" Block is created. See BlocksAPI@composeBlockData.\n */\n constructor({\n id: e = ni(),\n data: t,\n tool: o,\n readOnly: i,\n tunesData: s\n }, r) {\n super(), this.cachedInputs = [], this.toolRenderedElement = null, this.tunesInstances = /* @__PURE__ */ new Map(), this.defaultTunesInstances = /* @__PURE__ */ new Map(), this.unavailableTunesData = {}, this.inputIndex = 0, this.editorEventBus = null, this.handleFocus = () => {\n this.dropInputsCache(), this.updateCurrentInput();\n }, this.didMutated = (a = void 0) => {\n const l = a === void 0, c = a instanceof InputEvent;\n !l && !c && this.detectToolRootChange(a);\n let u;\n l || c ? u = !0 : u = !(a.length > 0 && a.every((p) => {\n const { addedNodes: g, removedNodes: f, target: v } = p;\n return [\n ...Array.from(g),\n ...Array.from(f),\n v\n ].some((T) => (d.isElement(T) || (T = T.parentElement), T && T.closest('[data-mutation-free=\"true\"]') !== null));\n })), u && (this.dropInputsCache(), this.updateCurrentInput(), this.toggleInputsEmptyMark(), this.call(\n \"updated\"\n /* UPDATED */\n ), this.emit(\"didMutated\", this));\n }, this.name = o.name, this.id = e, this.settings = o.settings, this.config = o.settings.config || {}, this.editorEventBus = r || null, this.blockAPI = new J(this), this.tool = o, this.toolInstance = o.create(t, this.blockAPI, i), this.tunes = o.tunes, this.composeTunes(s), this.holder = this.compose(), window.requestIdleCallback(() => {\n this.watchBlockMutations(), this.addInputEvents(), this.toggleInputsEmptyMark();\n });\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n wrapper: \"ce-block\",\n wrapperStretched: \"ce-block--stretched\",\n content: \"ce-block__content\",\n selected: \"ce-block--selected\",\n dropTarget: \"ce-block--drop-target\"\n };\n }\n /**\n * Find and return all editable elements (contenteditable and native inputs) in the Tool HTML\n */\n get inputs() {\n if (this.cachedInputs.length !== 0)\n return this.cachedInputs;\n const e = d.findAllInputs(this.holder);\n return this.inputIndex > e.length - 1 && (this.inputIndex = e.length - 1), this.cachedInputs = e, e;\n }\n /**\n * Return current Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get currentInput() {\n return this.inputs[this.inputIndex];\n }\n /**\n * Set input index to the passed element\n *\n * @param element - HTML Element to set as current input\n */\n set currentInput(e) {\n const t = this.inputs.findIndex((o) => o === e || o.contains(e));\n t !== -1 && (this.inputIndex = t);\n }\n /**\n * Return first Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get firstInput() {\n return this.inputs[0];\n }\n /**\n * Return first Tool`s input\n * If Block doesn't contain inputs, return undefined\n */\n get lastInput() {\n const e = this.inputs;\n return e[e.length - 1];\n }\n /**\n * Return next Tool`s input or undefined if it doesn't exist\n * If Block doesn't contain inputs, return undefined\n */\n get nextInput() {\n return this.inputs[this.inputIndex + 1];\n }\n /**\n * Return previous Tool`s input or undefined if it doesn't exist\n * If Block doesn't contain inputs, return undefined\n */\n get previousInput() {\n return this.inputs[this.inputIndex - 1];\n }\n /**\n * Get Block's JSON data\n *\n * @returns {object}\n */\n get data() {\n return this.save().then((e) => e && !V(e.data) ? e.data : {});\n }\n /**\n * Returns tool's sanitizer config\n *\n * @returns {object}\n */\n get sanitize() {\n return this.tool.sanitizeConfig;\n }\n /**\n * is block mergeable\n * We plugin have merge function then we call it mergeable\n *\n * @returns {boolean}\n */\n get mergeable() {\n return A(this.toolInstance.merge);\n }\n /**\n * If Block contains inputs, it is focusable\n */\n get focusable() {\n return this.inputs.length !== 0;\n }\n /**\n * Check block for emptiness\n *\n * @returns {boolean}\n */\n get isEmpty() {\n const e = d.isEmpty(this.pluginsContent, \"/\"), t = !this.hasMedia;\n return e && t;\n }\n /**\n * Check if block has a media content such as images, iframe and other\n *\n * @returns {boolean}\n */\n get hasMedia() {\n const e = [\n \"img\",\n \"iframe\",\n \"video\",\n \"audio\",\n \"source\",\n \"input\",\n \"textarea\",\n \"twitterwidget\"\n ];\n return !!this.holder.querySelector(e.join(\",\"));\n }\n /**\n * Set selected state\n * We don't need to mark Block as Selected when it is empty\n *\n * @param {boolean} state - 'true' to select, 'false' to remove selection\n */\n set selected(e) {\n var i, s;\n this.holder.classList.toggle(R.CSS.selected, e);\n const t = e === !0 && b.isRangeInsideContainer(this.holder), o = e === !1 && b.isFakeCursorInsideContainer(this.holder);\n (t || o) && ((i = this.editorEventBus) == null || i.emit(zo, { state: e }), t ? b.addFakeCursor() : b.removeFakeCursor(this.holder), (s = this.editorEventBus) == null || s.emit(Uo, { state: e }));\n }\n /**\n * Returns True if it is Selected\n *\n * @returns {boolean}\n */\n get selected() {\n return this.holder.classList.contains(R.CSS.selected);\n }\n /**\n * Set stretched state\n *\n * @param {boolean} state - 'true' to enable, 'false' to disable stretched state\n */\n set stretched(e) {\n this.holder.classList.toggle(R.CSS.wrapperStretched, e);\n }\n /**\n * Return Block's stretched state\n *\n * @returns {boolean}\n */\n get stretched() {\n return this.holder.classList.contains(R.CSS.wrapperStretched);\n }\n /**\n * Toggle drop target state\n *\n * @param {boolean} state - 'true' if block is drop target, false otherwise\n */\n set dropTarget(e) {\n this.holder.classList.toggle(R.CSS.dropTarget, e);\n }\n /**\n * Returns Plugins content\n *\n * @returns {HTMLElement}\n */\n get pluginsContent() {\n return this.toolRenderedElement;\n }\n /**\n * Calls Tool's method\n *\n * Method checks tool property {MethodName}. Fires method with passes params If it is instance of Function\n *\n * @param {string} methodName - method to call\n * @param {object} params - method argument\n */\n call(e, t) {\n if (A(this.toolInstance[e])) {\n e === \"appendCallback\" && S(\n \"`appendCallback` hook is deprecated and will be removed in the next major release. Use `rendered` hook instead\",\n \"warn\"\n );\n try {\n this.toolInstance[e].call(this.toolInstance, t);\n } catch (o) {\n S(`Error during '${e}' call: ${o.message}`, \"error\");\n }\n }\n }\n /**\n * Call plugins merge method\n *\n * @param {BlockToolData} data - data to merge\n */\n async mergeWith(e) {\n await this.toolInstance.merge(e);\n }\n /**\n * Extracts data from Block\n * Groups Tool's save processing time\n *\n * @returns {object}\n */\n async save() {\n const e = await this.toolInstance.save(this.pluginsContent), t = this.unavailableTunesData;\n [\n ...this.tunesInstances.entries(),\n ...this.defaultTunesInstances.entries()\n ].forEach(([s, r]) => {\n if (A(r.save))\n try {\n t[s] = r.save();\n } catch (a) {\n S(`Tune ${r.constructor.name} save method throws an Error %o`, \"warn\", a);\n }\n });\n const o = window.performance.now();\n let i;\n return Promise.resolve(e).then((s) => (i = window.performance.now(), {\n id: this.id,\n tool: this.name,\n data: s,\n tunes: t,\n time: i - o\n })).catch((s) => {\n S(`Saving process for ${this.name} tool failed due to the ${s}`, \"log\", \"red\");\n });\n }\n /**\n * Uses Tool's validation method to check the correctness of output data\n * Tool's validation method is optional\n *\n * @description Method returns true|false whether data passed the validation or not\n * @param {BlockToolData} data - data to validate\n * @returns {Promise} valid\n */\n async validate(e) {\n let t = !0;\n return this.toolInstance.validate instanceof Function && (t = await this.toolInstance.validate(e)), t;\n }\n /**\n * Returns data to render in Block Tunes menu.\n * Splits block tunes into 2 groups: block specific tunes and common tunes\n */\n getTunes() {\n const e = [], t = [], o = typeof this.toolInstance.renderSettings == \"function\" ? this.toolInstance.renderSettings() : [];\n return d.isElement(o) ? e.push({\n type: _.Html,\n element: o\n }) : Array.isArray(o) ? e.push(...o) : e.push(o), [\n ...this.tunesInstances.values(),\n ...this.defaultTunesInstances.values()\n ].map((s) => s.render()).forEach((s) => {\n d.isElement(s) ? t.push({\n type: _.Html,\n element: s\n }) : Array.isArray(s) ? t.push(...s) : t.push(s);\n }), {\n toolTunes: e,\n commonTunes: t\n };\n }\n /**\n * Update current input index with selection anchor node\n */\n updateCurrentInput() {\n this.currentInput = d.isNativeInput(document.activeElement) || !b.anchorNode ? document.activeElement : b.anchorNode;\n }\n /**\n * Allows to say Editor that Block was changed. Used to manually trigger Editor's 'onChange' callback\n * Can be useful for block changes invisible for editor core.\n */\n dispatchChange() {\n this.didMutated();\n }\n /**\n * Call Tool instance destroy method\n */\n destroy() {\n this.unwatchBlockMutations(), this.removeInputEvents(), super.destroy(), A(this.toolInstance.destroy) && this.toolInstance.destroy();\n }\n /**\n * Tool could specify several entries to be displayed at the Toolbox (for example, \"Heading 1\", \"Heading 2\", \"Heading 3\")\n * This method returns the entry that is related to the Block (depended on the Block data)\n */\n async getActiveToolboxEntry() {\n const e = this.tool.toolbox;\n if (e.length === 1)\n return Promise.resolve(this.tool.toolbox[0]);\n const t = await this.data, o = e;\n return o == null ? void 0 : o.find((i) => Wo(i.data, t));\n }\n /**\n * Exports Block data as string using conversion config\n */\n async exportDataAsString() {\n const e = await this.data;\n return fi(e, this.tool.conversionConfig);\n }\n /**\n * Make default Block wrappers and put Tool`s content there\n *\n * @returns {HTMLDivElement}\n */\n compose() {\n const e = d.make(\"div\", R.CSS.wrapper), t = d.make(\"div\", R.CSS.content), o = this.toolInstance.render();\n e.setAttribute(\"data-cy\", \"block-wrapper\"), e.dataset.id = this.id, this.toolRenderedElement = o, t.appendChild(this.toolRenderedElement);\n let i = t;\n return [...this.tunesInstances.values(), ...this.defaultTunesInstances.values()].forEach((s) => {\n if (A(s.wrap))\n try {\n i = s.wrap(i);\n } catch (r) {\n S(`Tune ${s.constructor.name} wrap method throws an Error %o`, \"warn\", r);\n }\n }), e.appendChild(i), e;\n }\n /**\n * Instantiate Block Tunes\n *\n * @param tunesData - current Block tunes data\n * @private\n */\n composeTunes(e) {\n Array.from(this.tunes.values()).forEach((t) => {\n (t.isInternal ? this.defaultTunesInstances : this.tunesInstances).set(t.name, t.create(e[t.name], this.blockAPI));\n }), Object.entries(e).forEach(([t, o]) => {\n this.tunesInstances.has(t) || (this.unavailableTunesData[t] = o);\n });\n }\n /**\n * Adds focus event listeners to all inputs and contenteditable\n */\n addInputEvents() {\n this.inputs.forEach((e) => {\n e.addEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.addEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * removes focus event listeners from all inputs and contenteditable\n */\n removeInputEvents() {\n this.inputs.forEach((e) => {\n e.removeEventListener(\"focus\", this.handleFocus), d.isNativeInput(e) && e.removeEventListener(\"input\", this.didMutated);\n });\n }\n /**\n * Listen common editor Dom Changed event and detect mutations related to the Block\n */\n watchBlockMutations() {\n var e;\n this.redactorDomChangedCallback = (t) => {\n const { mutations: o } = t;\n o.some((s) => pi(s, this.toolRenderedElement)) && this.didMutated(o);\n }, (e = this.editorEventBus) == null || e.on(ft, this.redactorDomChangedCallback);\n }\n /**\n * Remove redactor dom change event listener\n */\n unwatchBlockMutations() {\n var e;\n (e = this.editorEventBus) == null || e.off(ft, this.redactorDomChangedCallback);\n }\n /**\n * Sometimes Tool can replace own main element, for example H2 -> H4 or UL -> OL\n * We need to detect such changes and update a link to tools main element with the new one\n *\n * @param mutations - records of block content mutations\n */\n detectToolRootChange(e) {\n e.forEach((t) => {\n if (Array.from(t.removedNodes).includes(this.toolRenderedElement)) {\n const i = t.addedNodes[t.addedNodes.length - 1];\n this.toolRenderedElement = i;\n }\n });\n }\n /**\n * Clears inputs cached value\n */\n dropInputsCache() {\n this.cachedInputs = [];\n }\n /**\n * Mark inputs with 'data-empty' attribute with the empty state\n */\n toggleInputsEmptyMark() {\n this.inputs.forEach(Do);\n }\n}\nclass gi extends E {\n constructor() {\n super(...arguments), this.insert = (e = this.config.defaultBlock, t = {}, o = {}, i, s, r, a) => {\n const l = this.Editor.BlockManager.insert({\n id: a,\n tool: e,\n data: t,\n index: i,\n needToFocus: s,\n replace: r\n });\n return new J(l);\n }, this.composeBlockData = async (e) => {\n const t = this.Editor.Tools.blockTools.get(e);\n return new R({\n tool: t,\n api: this.Editor.API,\n readOnly: !0,\n data: {},\n tunesData: {}\n }).data;\n }, this.update = async (e, t, o) => {\n const { BlockManager: i } = this.Editor, s = i.getBlockById(e);\n if (s === void 0)\n throw new Error(`Block with id \"${e}\" not found`);\n const r = await i.update(s, t, o);\n return new J(r);\n }, this.convert = async (e, t, o) => {\n var h, p;\n const { BlockManager: i, Tools: s } = this.Editor, r = i.getBlockById(e);\n if (!r)\n throw new Error(`Block with id \"${e}\" not found`);\n const a = s.blockTools.get(r.name), l = s.blockTools.get(t);\n if (!l)\n throw new Error(`Block Tool with type \"${t}\" not found`);\n const c = ((h = a == null ? void 0 : a.conversionConfig) == null ? void 0 : h.export) !== void 0, u = ((p = l.conversionConfig) == null ? void 0 : p.import) !== void 0;\n if (c && u) {\n const g = await i.convert(r, t, o);\n return new J(g);\n } else {\n const g = [\n c ? !1 : je(r.name),\n u ? !1 : je(t)\n ].filter(Boolean).join(\" and \");\n throw new Error(`Conversion from \"${r.name}\" to \"${t}\" is not possible. ${g} tool(s) should provide a \"conversionConfig\"`);\n }\n }, this.insertMany = (e, t = this.Editor.BlockManager.blocks.length - 1) => {\n this.validateIndex(t);\n const o = e.map(({ id: i, type: s, data: r }) => this.Editor.BlockManager.composeBlock({\n id: i,\n tool: s || this.config.defaultBlock,\n data: r\n }));\n return this.Editor.BlockManager.insertMany(o, t), o.map((i) => new J(i));\n };\n }\n /**\n * Available methods\n *\n * @returns {Blocks}\n */\n get methods() {\n return {\n clear: () => this.clear(),\n render: (e) => this.render(e),\n renderFromHTML: (e) => this.renderFromHTML(e),\n delete: (e) => this.delete(e),\n swap: (e, t) => this.swap(e, t),\n move: (e, t) => this.move(e, t),\n getBlockByIndex: (e) => this.getBlockByIndex(e),\n getById: (e) => this.getById(e),\n getCurrentBlockIndex: () => this.getCurrentBlockIndex(),\n getBlockIndex: (e) => this.getBlockIndex(e),\n getBlocksCount: () => this.getBlocksCount(),\n getBlockByElement: (e) => this.getBlockByElement(e),\n stretchBlock: (e, t = !0) => this.stretchBlock(e, t),\n insertNewBlock: () => this.insertNewBlock(),\n insert: this.insert,\n insertMany: this.insertMany,\n update: this.update,\n composeBlockData: this.composeBlockData,\n convert: this.convert\n };\n }\n /**\n * Returns Blocks count\n *\n * @returns {number}\n */\n getBlocksCount() {\n return this.Editor.BlockManager.blocks.length;\n }\n /**\n * Returns current block index\n *\n * @returns {number}\n */\n getCurrentBlockIndex() {\n return this.Editor.BlockManager.currentBlockIndex;\n }\n /**\n * Returns the index of Block by id;\n *\n * @param id - block id\n */\n getBlockIndex(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n if (!t) {\n X(\"There is no block with id `\" + e + \"`\", \"warn\");\n return;\n }\n return this.Editor.BlockManager.getBlockIndex(t);\n }\n /**\n * Returns BlockAPI object by Block index\n *\n * @param {number} index - index to get\n */\n getBlockByIndex(e) {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n if (t === void 0) {\n X(\"There is no block at index `\" + e + \"`\", \"warn\");\n return;\n }\n return new J(t);\n }\n /**\n * Returns BlockAPI object by Block id\n *\n * @param id - id of block to get\n */\n getById(e) {\n const t = this.Editor.BlockManager.getBlockById(e);\n return t === void 0 ? (X(\"There is no block with id `\" + e + \"`\", \"warn\"), null) : new J(t);\n }\n /**\n * Get Block API object by any child html element\n *\n * @param element - html element to get Block by\n */\n getBlockByElement(e) {\n const t = this.Editor.BlockManager.getBlock(e);\n if (t === void 0) {\n X(\"There is no block corresponding to element `\" + e + \"`\", \"warn\");\n return;\n }\n return new J(t);\n }\n /**\n * Call Block Manager method that swap Blocks\n *\n * @param {number} fromIndex - position of first Block\n * @param {number} toIndex - position of second Block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n S(\n \"`blocks.swap()` method is deprecated and will be removed in the next major release. Use `block.move()` method instead\",\n \"info\"\n ), this.Editor.BlockManager.swap(e, t);\n }\n /**\n * Move block from one index to another\n *\n * @param {number} toIndex - index to move to\n * @param {number} fromIndex - index to move from\n */\n move(e, t) {\n this.Editor.BlockManager.move(e, t);\n }\n /**\n * Deletes Block\n *\n * @param {number} blockIndex - index of Block to delete\n */\n delete(e = this.Editor.BlockManager.currentBlockIndex) {\n try {\n const t = this.Editor.BlockManager.getBlockByIndex(e);\n this.Editor.BlockManager.removeBlock(t);\n } catch (t) {\n X(t, \"warn\");\n return;\n }\n this.Editor.BlockManager.blocks.length === 0 && this.Editor.BlockManager.insert(), this.Editor.BlockManager.currentBlock && this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock, this.Editor.Caret.positions.END), this.Editor.Toolbar.close();\n }\n /**\n * Clear Editor's area\n */\n async clear() {\n await this.Editor.BlockManager.clear(!0), this.Editor.InlineToolbar.close();\n }\n /**\n * Fills Editor with Blocks data\n *\n * @param {OutputData} data — Saved Editor data\n */\n async render(e) {\n if (e === void 0 || e.blocks === void 0)\n throw new Error(\"Incorrect data passed to the render() method\");\n this.Editor.ModificationsObserver.disable(), await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(e.blocks), this.Editor.ModificationsObserver.enable();\n }\n /**\n * Render passed HTML string\n *\n * @param {string} data - HTML string to render\n * @returns {Promise}\n */\n renderFromHTML(e) {\n return this.Editor.BlockManager.clear(), this.Editor.Paste.processText(e, !0);\n }\n /**\n * Stretch Block's content\n *\n * @param {number} index - index of Block to stretch\n * @param {boolean} status - true to enable, false to disable\n * @deprecated Use BlockAPI interface to stretch Blocks\n */\n stretchBlock(e, t = !0) {\n ht(\n !0,\n \"blocks.stretchBlock()\",\n \"BlockAPI\"\n );\n const o = this.Editor.BlockManager.getBlockByIndex(e);\n o && (o.stretched = t);\n }\n /**\n * Insert new Block\n * After set caret to this Block\n *\n * @todo remove in 3.0.0\n * @deprecated with insert() method\n */\n insertNewBlock() {\n S(\"Method blocks.insertNewBlock() is deprecated and it will be removed in the next major release. Use blocks.insert() instead.\", \"warn\"), this.insert();\n }\n /**\n * Validated block index and throws an error if it's invalid\n *\n * @param index - index to validate\n */\n validateIndex(e) {\n if (typeof e != \"number\")\n throw new Error(\"Index should be a number\");\n if (e < 0)\n throw new Error(\"Index should be greater than or equal to 0\");\n if (e === null)\n throw new Error(\"Index should be greater than or equal to 0\");\n }\n}\nfunction mi(n, e) {\n return typeof n == \"number\" ? e.BlockManager.getBlockByIndex(n) : typeof n == \"string\" ? e.BlockManager.getBlockById(n) : e.BlockManager.getBlockById(n.id);\n}\nclass bi extends E {\n constructor() {\n super(...arguments), this.setToFirstBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.firstBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.firstBlock, e, t), !0) : !1, this.setToLastBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.lastBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.lastBlock, e, t), !0) : !1, this.setToPreviousBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.previousBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.previousBlock, e, t), !0) : !1, this.setToNextBlock = (e = this.Editor.Caret.positions.DEFAULT, t = 0) => this.Editor.BlockManager.nextBlock ? (this.Editor.Caret.setToBlock(this.Editor.BlockManager.nextBlock, e, t), !0) : !1, this.setToBlock = (e, t = this.Editor.Caret.positions.DEFAULT, o = 0) => {\n const i = mi(e, this.Editor);\n return i === void 0 ? !1 : (this.Editor.Caret.setToBlock(i, t, o), !0);\n }, this.focus = (e = !1) => e ? this.setToLastBlock(this.Editor.Caret.positions.END) : this.setToFirstBlock(this.Editor.Caret.positions.START);\n }\n /**\n * Available methods\n *\n * @returns {Caret}\n */\n get methods() {\n return {\n setToFirstBlock: this.setToFirstBlock,\n setToLastBlock: this.setToLastBlock,\n setToPreviousBlock: this.setToPreviousBlock,\n setToNextBlock: this.setToNextBlock,\n setToBlock: this.setToBlock,\n focus: this.focus\n };\n }\n}\nclass vi extends E {\n /**\n * Available methods\n *\n * @returns {Events}\n */\n get methods() {\n return {\n emit: (e, t) => this.emit(e, t),\n off: (e, t) => this.off(e, t),\n on: (e, t) => this.on(e, t)\n };\n }\n /**\n * Subscribe on Events\n *\n * @param {string} eventName - event name to subscribe\n * @param {Function} callback - event handler\n */\n on(e, t) {\n this.eventsDispatcher.on(e, t);\n }\n /**\n * Emit event with data\n *\n * @param {string} eventName - event to emit\n * @param {object} data - event's data\n */\n emit(e, t) {\n this.eventsDispatcher.emit(e, t);\n }\n /**\n * Unsubscribe from Event\n *\n * @param {string} eventName - event to unsubscribe\n * @param {Function} callback - event handler\n */\n off(e, t) {\n this.eventsDispatcher.off(e, t);\n }\n}\nclass kt extends E {\n /**\n * Return namespace section for tool or block tune\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n static getNamespace(e, t) {\n return t ? `blockTunes.${e}` : `tools.${e}`;\n }\n /**\n * Return I18n API methods with global dictionary access\n */\n get methods() {\n return {\n t: () => {\n X(\"I18n.t() method can be accessed only from Tools\", \"warn\");\n }\n };\n }\n /**\n * Return I18n API methods with tool namespaced dictionary\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n getMethodsForTool(e, t) {\n return Object.assign(\n this.methods,\n {\n t: (o) => z.t(kt.getNamespace(e, t), o)\n }\n );\n }\n}\nclass ki extends E {\n /**\n * Editor.js Core API modules\n */\n get methods() {\n return {\n blocks: this.Editor.BlocksAPI.methods,\n caret: this.Editor.CaretAPI.methods,\n tools: this.Editor.ToolsAPI.methods,\n events: this.Editor.EventsAPI.methods,\n listeners: this.Editor.ListenersAPI.methods,\n notifier: this.Editor.NotifierAPI.methods,\n sanitizer: this.Editor.SanitizerAPI.methods,\n saver: this.Editor.SaverAPI.methods,\n selection: this.Editor.SelectionAPI.methods,\n styles: this.Editor.StylesAPI.classes,\n toolbar: this.Editor.ToolbarAPI.methods,\n inlineToolbar: this.Editor.InlineToolbarAPI.methods,\n tooltip: this.Editor.TooltipAPI.methods,\n i18n: this.Editor.I18nAPI.methods,\n readOnly: this.Editor.ReadOnlyAPI.methods,\n ui: this.Editor.UiAPI.methods\n };\n }\n /**\n * Returns Editor.js Core API methods for passed tool\n *\n * @param toolName - tool name\n * @param isTune - is tool a block tune\n */\n getMethodsForTool(e, t) {\n return Object.assign(\n this.methods,\n {\n i18n: this.Editor.I18nAPI.getMethodsForTool(e, t)\n }\n );\n }\n}\nclass yi extends E {\n /**\n * Available methods\n *\n * @returns {InlineToolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open()\n };\n }\n /**\n * Open Inline Toolbar\n */\n open() {\n this.Editor.InlineToolbar.tryToShow();\n }\n /**\n * Close Inline Toolbar\n */\n close() {\n this.Editor.InlineToolbar.close();\n }\n}\nclass wi extends E {\n /**\n * Available methods\n *\n * @returns {Listeners}\n */\n get methods() {\n return {\n on: (e, t, o, i) => this.on(e, t, o, i),\n off: (e, t, o, i) => this.off(e, t, o, i),\n offById: (e) => this.offById(e)\n };\n }\n /**\n * Ads a DOM event listener. Return it's id.\n *\n * @param {HTMLElement} element - Element to set handler to\n * @param {string} eventType - event type\n * @param {() => void} handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n on(e, t, o, i) {\n return this.listeners.on(e, t, o, i);\n }\n /**\n * Removes DOM listener from element\n *\n * @param {Element} element - Element to remove handler from\n * @param eventType - event type\n * @param handler - event handler\n * @param {boolean} useCapture - capture event or not\n */\n off(e, t, o, i) {\n this.listeners.off(e, t, o, i);\n }\n /**\n * Removes DOM listener by the listener id\n *\n * @param id - id of the listener to remove\n */\n offById(e) {\n this.listeners.offById(e);\n }\n}\nvar Ko = { exports: {} };\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, a) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: a });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var l in s)\n i.d(a, l, (function(c) {\n return s[c];\n }).bind(null, l));\n return a;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"/\", i(i.s = 0);\n }([function(t, o, i) {\n i(1), /*!\n * Codex JavaScript Notification module\n * https://github.com/codex-team/js-notifier\n */\n t.exports = function() {\n var s = i(6), r = \"cdx-notify--bounce-in\", a = null;\n return { show: function(l) {\n if (l.message) {\n (function() {\n if (a)\n return !0;\n a = s.getWrapper(), document.body.appendChild(a);\n })();\n var c = null, u = l.time || 8e3;\n switch (l.type) {\n case \"confirm\":\n c = s.confirm(l);\n break;\n case \"prompt\":\n c = s.prompt(l);\n break;\n default:\n c = s.alert(l), window.setTimeout(function() {\n c.remove();\n }, u);\n }\n a.appendChild(c), c.classList.add(r);\n }\n } };\n }();\n }, function(t, o, i) {\n var s = i(2);\n typeof s == \"string\" && (s = [[t.i, s, \"\"]]);\n var r = { hmr: !0, transform: void 0, insertInto: void 0 };\n i(4)(s, r), s.locals && (t.exports = s.locals);\n }, function(t, o, i) {\n (t.exports = i(3)(!1)).push([t.i, `.cdx-notify--error{background:#fffbfb!important}.cdx-notify--error::before{background:#fb5d5d!important}.cdx-notify__input{max-width:130px;padding:5px 10px;background:#f7f7f7;border:0;border-radius:3px;font-size:13px;color:#656b7c;outline:0}.cdx-notify__input:-ms-input-placeholder{color:#656b7c}.cdx-notify__input::placeholder{color:#656b7c}.cdx-notify__input:focus:-ms-input-placeholder{color:rgba(101,107,124,.3)}.cdx-notify__input:focus::placeholder{color:rgba(101,107,124,.3)}.cdx-notify__button{border:none;border-radius:3px;font-size:13px;padding:5px 10px;cursor:pointer}.cdx-notify__button:last-child{margin-left:10px}.cdx-notify__button--cancel{background:#f2f5f7;box-shadow:0 2px 1px 0 rgba(16,19,29,0);color:#656b7c}.cdx-notify__button--cancel:hover{background:#eee}.cdx-notify__button--confirm{background:#34c992;box-shadow:0 1px 1px 0 rgba(18,49,35,.05);color:#fff}.cdx-notify__button--confirm:hover{background:#33b082}.cdx-notify__btns-wrapper{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:5px}.cdx-notify__cross{position:absolute;top:5px;right:5px;width:10px;height:10px;padding:5px;opacity:.54;cursor:pointer}.cdx-notify__cross::after,.cdx-notify__cross::before{content:'';position:absolute;left:9px;top:5px;height:12px;width:2px;background:#575d67}.cdx-notify__cross::before{transform:rotate(-45deg)}.cdx-notify__cross::after{transform:rotate(45deg)}.cdx-notify__cross:hover{opacity:1}.cdx-notifies{position:fixed;z-index:2;bottom:20px;left:20px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen,Ubuntu,Cantarell,\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.cdx-notify{position:relative;width:220px;margin-top:15px;padding:13px 16px;background:#fff;box-shadow:0 11px 17px 0 rgba(23,32,61,.13);border-radius:5px;font-size:14px;line-height:1.4em;word-wrap:break-word}.cdx-notify::before{content:'';position:absolute;display:block;top:0;left:0;width:3px;height:calc(100% - 6px);margin:3px;border-radius:5px;background:0 0}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.cdx-notify--bounce-in{animation-name:bounceIn;animation-duration:.6s;animation-iteration-count:1}.cdx-notify--success{background:#fafffe!important}.cdx-notify--success::before{background:#41ffb1!important}`, \"\"]);\n }, function(t, o) {\n t.exports = function(i) {\n var s = [];\n return s.toString = function() {\n return this.map(function(r) {\n var a = function(l, c) {\n var u = l[1] || \"\", h = l[3];\n if (!h)\n return u;\n if (c && typeof btoa == \"function\") {\n var p = (f = h, \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(f)))) + \" */\"), g = h.sources.map(function(v) {\n return \"/*# sourceURL=\" + h.sourceRoot + v + \" */\";\n });\n return [u].concat(g).concat([p]).join(`\n`);\n }\n var f;\n return [u].join(`\n`);\n }(r, i);\n return r[2] ? \"@media \" + r[2] + \"{\" + a + \"}\" : a;\n }).join(\"\");\n }, s.i = function(r, a) {\n typeof r == \"string\" && (r = [[null, r, \"\"]]);\n for (var l = {}, c = 0; c < this.length; c++) {\n var u = this[c][0];\n typeof u == \"number\" && (l[u] = !0);\n }\n for (c = 0; c < r.length; c++) {\n var h = r[c];\n typeof h[0] == \"number\" && l[h[0]] || (a && !h[2] ? h[2] = a : a && (h[2] = \"(\" + h[2] + \") and (\" + a + \")\"), s.push(h));\n }\n }, s;\n };\n }, function(t, o, i) {\n var s, r, a = {}, l = (s = function() {\n return window && document && document.all && !window.atob;\n }, function() {\n return r === void 0 && (r = s.apply(this, arguments)), r;\n }), c = function(k) {\n var m = {};\n return function(w) {\n if (typeof w == \"function\")\n return w();\n if (m[w] === void 0) {\n var x = (function(I) {\n return document.querySelector(I);\n }).call(this, w);\n if (window.HTMLIFrameElement && x instanceof window.HTMLIFrameElement)\n try {\n x = x.contentDocument.head;\n } catch {\n x = null;\n }\n m[w] = x;\n }\n return m[w];\n };\n }(), u = null, h = 0, p = [], g = i(5);\n function f(k, m) {\n for (var w = 0; w < k.length; w++) {\n var x = k[w], I = a[x.id];\n if (I) {\n I.refs++;\n for (var C = 0; C < I.parts.length; C++)\n I.parts[C](x.parts[C]);\n for (; C < x.parts.length; C++)\n I.parts.push(F(x.parts[C], m));\n } else {\n var N = [];\n for (C = 0; C < x.parts.length; C++)\n N.push(F(x.parts[C], m));\n a[x.id] = { id: x.id, refs: 1, parts: N };\n }\n }\n }\n function v(k, m) {\n for (var w = [], x = {}, I = 0; I < k.length; I++) {\n var C = k[I], N = m.base ? C[0] + m.base : C[0], B = { css: C[1], media: C[2], sourceMap: C[3] };\n x[N] ? x[N].parts.push(B) : w.push(x[N] = { id: N, parts: [B] });\n }\n return w;\n }\n function O(k, m) {\n var w = c(k.insertInto);\n if (!w)\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n var x = p[p.length - 1];\n if (k.insertAt === \"top\")\n x ? x.nextSibling ? w.insertBefore(m, x.nextSibling) : w.appendChild(m) : w.insertBefore(m, w.firstChild), p.push(m);\n else if (k.insertAt === \"bottom\")\n w.appendChild(m);\n else {\n if (typeof k.insertAt != \"object\" || !k.insertAt.before)\n throw new Error(`[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n`);\n var I = c(k.insertInto + \" \" + k.insertAt.before);\n w.insertBefore(m, I);\n }\n }\n function T(k) {\n if (k.parentNode === null)\n return !1;\n k.parentNode.removeChild(k);\n var m = p.indexOf(k);\n m >= 0 && p.splice(m, 1);\n }\n function M(k) {\n var m = document.createElement(\"style\");\n return k.attrs.type === void 0 && (k.attrs.type = \"text/css\"), q(m, k.attrs), O(k, m), m;\n }\n function q(k, m) {\n Object.keys(m).forEach(function(w) {\n k.setAttribute(w, m[w]);\n });\n }\n function F(k, m) {\n var w, x, I, C;\n if (m.transform && k.css) {\n if (!(C = m.transform(k.css)))\n return function() {\n };\n k.css = C;\n }\n if (m.singleton) {\n var N = h++;\n w = u || (u = M(m)), x = ie.bind(null, w, N, !1), I = ie.bind(null, w, N, !0);\n } else\n k.sourceMap && typeof URL == \"function\" && typeof URL.createObjectURL == \"function\" && typeof URL.revokeObjectURL == \"function\" && typeof Blob == \"function\" && typeof btoa == \"function\" ? (w = function(B) {\n var W = document.createElement(\"link\");\n return B.attrs.type === void 0 && (B.attrs.type = \"text/css\"), B.attrs.rel = \"stylesheet\", q(W, B.attrs), O(B, W), W;\n }(m), x = (function(B, W, ve) {\n var se = ve.css, tt = ve.sourceMap, Yn = W.convertToAbsoluteUrls === void 0 && tt;\n (W.convertToAbsoluteUrls || Yn) && (se = g(se)), tt && (se += `\n/*# sourceMappingURL=data:application/json;base64,` + btoa(unescape(encodeURIComponent(JSON.stringify(tt)))) + \" */\");\n var Kn = new Blob([se], { type: \"text/css\" }), ko = B.href;\n B.href = URL.createObjectURL(Kn), ko && URL.revokeObjectURL(ko);\n }).bind(null, w, m), I = function() {\n T(w), w.href && URL.revokeObjectURL(w.href);\n }) : (w = M(m), x = (function(B, W) {\n var ve = W.css, se = W.media;\n if (se && B.setAttribute(\"media\", se), B.styleSheet)\n B.styleSheet.cssText = ve;\n else {\n for (; B.firstChild; )\n B.removeChild(B.firstChild);\n B.appendChild(document.createTextNode(ve));\n }\n }).bind(null, w), I = function() {\n T(w);\n });\n return x(k), function(B) {\n if (B) {\n if (B.css === k.css && B.media === k.media && B.sourceMap === k.sourceMap)\n return;\n x(k = B);\n } else\n I();\n };\n }\n t.exports = function(k, m) {\n if (typeof DEBUG < \"u\" && DEBUG && typeof document != \"object\")\n throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n (m = m || {}).attrs = typeof m.attrs == \"object\" ? m.attrs : {}, m.singleton || typeof m.singleton == \"boolean\" || (m.singleton = l()), m.insertInto || (m.insertInto = \"head\"), m.insertAt || (m.insertAt = \"bottom\");\n var w = v(k, m);\n return f(w, m), function(x) {\n for (var I = [], C = 0; C < w.length; C++) {\n var N = w[C];\n (B = a[N.id]).refs--, I.push(B);\n }\n for (x && f(v(x, m), m), C = 0; C < I.length; C++) {\n var B;\n if ((B = I[C]).refs === 0) {\n for (var W = 0; W < B.parts.length; W++)\n B.parts[W]();\n delete a[B.id];\n }\n }\n };\n };\n var H, Q = (H = [], function(k, m) {\n return H[k] = m, H.filter(Boolean).join(`\n`);\n });\n function ie(k, m, w, x) {\n var I = w ? \"\" : x.css;\n if (k.styleSheet)\n k.styleSheet.cssText = Q(m, I);\n else {\n var C = document.createTextNode(I), N = k.childNodes;\n N[m] && k.removeChild(N[m]), N.length ? k.insertBefore(C, N[m]) : k.appendChild(C);\n }\n }\n }, function(t, o) {\n t.exports = function(i) {\n var s = typeof window < \"u\" && window.location;\n if (!s)\n throw new Error(\"fixUrls requires window.location\");\n if (!i || typeof i != \"string\")\n return i;\n var r = s.protocol + \"//\" + s.host, a = r + s.pathname.replace(/\\/[^\\/]*$/, \"/\");\n return i.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(l, c) {\n var u, h = c.trim().replace(/^\"(.*)\"$/, function(p, g) {\n return g;\n }).replace(/^'(.*)'$/, function(p, g) {\n return g;\n });\n return /^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(h) ? l : (u = h.indexOf(\"//\") === 0 ? h : h.indexOf(\"/\") === 0 ? r + h : a + h.replace(/^\\.\\//, \"\"), \"url(\" + JSON.stringify(u) + \")\");\n });\n };\n }, function(t, o, i) {\n var s, r, a, l, c, u, h, p, g;\n t.exports = (s = \"cdx-notifies\", r = \"cdx-notify\", a = \"cdx-notify__cross\", l = \"cdx-notify__button--confirm\", c = \"cdx-notify__button--cancel\", u = \"cdx-notify__input\", h = \"cdx-notify__button\", p = \"cdx-notify__btns-wrapper\", { alert: g = function(f) {\n var v = document.createElement(\"DIV\"), O = document.createElement(\"DIV\"), T = f.message, M = f.style;\n return v.classList.add(r), M && v.classList.add(r + \"--\" + M), v.innerHTML = T, O.classList.add(a), O.addEventListener(\"click\", v.remove.bind(v)), v.appendChild(O), v;\n }, confirm: function(f) {\n var v = g(f), O = document.createElement(\"div\"), T = document.createElement(\"button\"), M = document.createElement(\"button\"), q = v.querySelector(\".\" + a), F = f.cancelHandler, H = f.okHandler;\n return O.classList.add(p), T.innerHTML = f.okText || \"Confirm\", M.innerHTML = f.cancelText || \"Cancel\", T.classList.add(h), M.classList.add(h), T.classList.add(l), M.classList.add(c), F && typeof F == \"function\" && (M.addEventListener(\"click\", F), q.addEventListener(\"click\", F)), H && typeof H == \"function\" && T.addEventListener(\"click\", H), T.addEventListener(\"click\", v.remove.bind(v)), M.addEventListener(\"click\", v.remove.bind(v)), O.appendChild(T), O.appendChild(M), v.appendChild(O), v;\n }, prompt: function(f) {\n var v = g(f), O = document.createElement(\"div\"), T = document.createElement(\"button\"), M = document.createElement(\"input\"), q = v.querySelector(\".\" + a), F = f.cancelHandler, H = f.okHandler;\n return O.classList.add(p), T.innerHTML = f.okText || \"Ok\", T.classList.add(h), T.classList.add(l), M.classList.add(u), f.placeholder && M.setAttribute(\"placeholder\", f.placeholder), f.default && (M.value = f.default), f.inputType && (M.type = f.inputType), F && typeof F == \"function\" && q.addEventListener(\"click\", F), H && typeof H == \"function\" && T.addEventListener(\"click\", function() {\n H(M.value);\n }), T.addEventListener(\"click\", v.remove.bind(v)), O.appendChild(M), O.appendChild(T), v.appendChild(O), v;\n }, getWrapper: function() {\n var f = document.createElement(\"DIV\");\n return f.classList.add(s), f;\n } });\n }]);\n });\n})(Ko);\nvar Ei = Ko.exports;\nconst xi = /* @__PURE__ */ Ke(Ei);\nclass Bi {\n /**\n * Show web notification\n *\n * @param {NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions} options - notification options\n */\n show(e) {\n xi.show(e);\n }\n}\nclass Ci extends E {\n /**\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.notifier = new Bi();\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e) => this.show(e)\n };\n }\n /**\n * Show notification\n *\n * @param {NotifierOptions} options - message option\n */\n show(e) {\n return this.notifier.show(e);\n }\n}\nclass Ti extends E {\n /**\n * Available methods\n */\n get methods() {\n const e = () => this.isEnabled;\n return {\n toggle: (t) => this.toggle(t),\n get isEnabled() {\n return e();\n }\n };\n }\n /**\n * Set or toggle read-only state\n *\n * @param {boolean|undefined} state - set or toggle state\n * @returns {boolean} current value\n */\n toggle(e) {\n return this.Editor.ReadOnly.toggle(e);\n }\n /**\n * Returns current read-only state\n */\n get isEnabled() {\n return this.Editor.ReadOnly.isEnabled;\n }\n}\nvar Xo = { exports: {} };\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(Ce, function() {\n function t(h) {\n var p = h.tags, g = Object.keys(p), f = g.map(function(v) {\n return typeof p[v];\n }).every(function(v) {\n return v === \"object\" || v === \"boolean\" || v === \"function\";\n });\n if (!f)\n throw new Error(\"The configuration was invalid\");\n this.config = h;\n }\n var o = [\"P\", \"LI\", \"TD\", \"TH\", \"DIV\", \"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\", \"PRE\"];\n function i(h) {\n return o.indexOf(h.nodeName) !== -1;\n }\n var s = [\"A\", \"B\", \"STRONG\", \"I\", \"EM\", \"SUB\", \"SUP\", \"U\", \"STRIKE\"];\n function r(h) {\n return s.indexOf(h.nodeName) !== -1;\n }\n t.prototype.clean = function(h) {\n const p = document.implementation.createHTMLDocument(), g = p.createElement(\"div\");\n return g.innerHTML = h, this._sanitize(p, g), g.innerHTML;\n }, t.prototype._sanitize = function(h, p) {\n var g = a(h, p), f = g.firstChild();\n if (f)\n do {\n if (f.nodeType === Node.TEXT_NODE)\n if (f.data.trim() === \"\" && (f.previousElementSibling && i(f.previousElementSibling) || f.nextElementSibling && i(f.nextElementSibling))) {\n p.removeChild(f), this._sanitize(h, p);\n break;\n } else\n continue;\n if (f.nodeType === Node.COMMENT_NODE) {\n p.removeChild(f), this._sanitize(h, p);\n break;\n }\n var v = r(f), O;\n v && (O = Array.prototype.some.call(f.childNodes, i));\n var T = !!p.parentNode, M = i(p) && i(f) && T, q = f.nodeName.toLowerCase(), F = l(this.config, q, f), H = v && O;\n if (H || c(f, F) || !this.config.keepNestedBlockElements && M) {\n if (!(f.nodeName === \"SCRIPT\" || f.nodeName === \"STYLE\"))\n for (; f.childNodes.length > 0; )\n p.insertBefore(f.childNodes[0], f);\n p.removeChild(f), this._sanitize(h, p);\n break;\n }\n for (var Q = 0; Q < f.attributes.length; Q += 1) {\n var ie = f.attributes[Q];\n u(ie, F, f) && (f.removeAttribute(ie.name), Q = Q - 1);\n }\n this._sanitize(h, f);\n } while (f = g.nextSibling());\n };\n function a(h, p) {\n return h.createTreeWalker(\n p,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null,\n !1\n );\n }\n function l(h, p, g) {\n return typeof h.tags[p] == \"function\" ? h.tags[p](g) : h.tags[p];\n }\n function c(h, p) {\n return typeof p > \"u\" ? !0 : typeof p == \"boolean\" ? !p : !1;\n }\n function u(h, p, g) {\n var f = h.name.toLowerCase();\n return p === !0 ? !1 : typeof p[f] == \"function\" ? !p[f](h.value, g) : typeof p[f] > \"u\" || p[f] === !1 ? !0 : typeof p[f] == \"string\" ? p[f] !== h.value : !1;\n }\n return t;\n });\n})(Xo);\nvar Si = Xo.exports;\nconst Ii = /* @__PURE__ */ Ke(Si);\nfunction yt(n, e) {\n return n.map((t) => {\n const o = A(e) ? e(t.tool) : e;\n return V(o) || (t.data = wt(t.data, o)), t;\n });\n}\nfunction Z(n, e = {}) {\n const t = {\n tags: e\n };\n return new Ii(t).clean(n);\n}\nfunction wt(n, e) {\n return Array.isArray(n) ? Oi(n, e) : D(n) ? _i(n, e) : te(n) ? Mi(n, e) : n;\n}\nfunction Oi(n, e) {\n return n.map((t) => wt(t, e));\n}\nfunction _i(n, e) {\n const t = {};\n for (const o in n) {\n if (!Object.prototype.hasOwnProperty.call(n, o))\n continue;\n const i = n[o], s = Ai(e[o]) ? e[o] : e;\n t[o] = wt(i, s);\n }\n return t;\n}\nfunction Mi(n, e) {\n return D(e) ? Z(n, e) : e === !1 ? Z(n, {}) : n;\n}\nfunction Ai(n) {\n return D(n) || Gn(n) || A(n);\n}\nclass Li extends E {\n /**\n * Available methods\n *\n * @returns {SanitizerConfig}\n */\n get methods() {\n return {\n clean: (e, t) => this.clean(e, t)\n };\n }\n /**\n * Perform sanitizing of a string\n *\n * @param {string} taintString - what to sanitize\n * @param {SanitizerConfig} config - sanitizer config\n * @returns {string}\n */\n clean(e, t) {\n return Z(e, t);\n }\n}\nclass Pi extends E {\n /**\n * Available methods\n *\n * @returns {Saver}\n */\n get methods() {\n return {\n save: () => this.save()\n };\n }\n /**\n * Return Editor's data\n *\n * @returns {OutputData}\n */\n save() {\n const e = \"Editor's content can not be saved in read-only mode\";\n return this.Editor.ReadOnly.isEnabled ? (X(e, \"warn\"), Promise.reject(new Error(e))) : this.Editor.Saver.save();\n }\n}\nclass Ni extends E {\n constructor() {\n super(...arguments), this.selectionUtils = new b();\n }\n /**\n * Available methods\n *\n * @returns {SelectionAPIInterface}\n */\n get methods() {\n return {\n findParentTag: (e, t) => this.findParentTag(e, t),\n expandToTag: (e) => this.expandToTag(e),\n save: () => this.selectionUtils.save(),\n restore: () => this.selectionUtils.restore(),\n setFakeBackground: () => this.selectionUtils.setFakeBackground(),\n removeFakeBackground: () => this.selectionUtils.removeFakeBackground()\n };\n }\n /**\n * Looks ahead from selection and find passed tag with class name\n *\n * @param {string} tagName - tag to find\n * @param {string} className - tag's class name\n * @returns {HTMLElement|null}\n */\n findParentTag(e, t) {\n return this.selectionUtils.findParentTag(e, t);\n }\n /**\n * Expand selection to passed tag\n *\n * @param {HTMLElement} node - tag that should contain selection\n */\n expandToTag(e) {\n this.selectionUtils.expandToTag(e);\n }\n}\nclass Ri extends E {\n /**\n * Available methods\n */\n get methods() {\n return {\n getBlockTools: () => Array.from(this.Editor.Tools.blockTools.values())\n };\n }\n}\nclass Di extends E {\n /**\n * Exported classes\n */\n get classes() {\n return {\n /**\n * Base Block styles\n */\n block: \"cdx-block\",\n /**\n * Inline Tools styles\n */\n inlineToolButton: \"ce-inline-tool\",\n inlineToolButtonActive: \"ce-inline-tool--active\",\n /**\n * UI elements\n */\n input: \"cdx-input\",\n loader: \"cdx-loader\",\n button: \"cdx-button\",\n /**\n * Settings styles\n */\n settingsButton: \"cdx-settings-button\",\n settingsButtonActive: \"cdx-settings-button--active\"\n };\n }\n}\nclass Fi extends E {\n /**\n * Available methods\n *\n * @returns {Toolbar}\n */\n get methods() {\n return {\n close: () => this.close(),\n open: () => this.open(),\n toggleBlockSettings: (e) => this.toggleBlockSettings(e),\n toggleToolbox: (e) => this.toggleToolbox(e)\n };\n }\n /**\n * Open toolbar\n */\n open() {\n this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * Close toolbar and all included elements\n */\n close() {\n this.Editor.Toolbar.close();\n }\n /**\n * Toggles Block Setting of the current block\n *\n * @param {boolean} openingState — opening state of Block Setting\n */\n toggleBlockSettings(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n X(\"Could't toggle the Toolbar because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.BlockSettings.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.BlockSettings.open()) : this.Editor.BlockSettings.close();\n }\n /**\n * Open toolbox\n *\n * @param {boolean} openingState - Opening state of toolbox\n */\n toggleToolbox(e) {\n if (this.Editor.BlockManager.currentBlockIndex === -1) {\n X(\"Could't toggle the Toolbox because there is no block selected \", \"warn\");\n return;\n }\n e ?? !this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open()) : this.Editor.Toolbar.toolbox.close();\n }\n}\nvar Vo = { exports: {} };\n/*!\n * CodeX.Tooltips\n * \n * @version 1.0.5\n * \n * @licence MIT\n * @author CodeX \n * \n * \n */\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, a) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: a });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var l in s)\n i.d(a, l, (function(c) {\n return s[c];\n }).bind(null, l));\n return a;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n t.exports = i(1);\n }, function(t, o, i) {\n i.r(o), i.d(o, \"default\", function() {\n return s;\n });\n class s {\n constructor() {\n this.nodes = { wrapper: null, content: null }, this.showed = !1, this.offsetTop = 10, this.offsetLeft = 10, this.offsetRight = 10, this.hidingDelay = 0, this.handleWindowScroll = () => {\n this.showed && this.hide(!0);\n }, this.loadStyles(), this.prepare(), window.addEventListener(\"scroll\", this.handleWindowScroll, { passive: !0 });\n }\n get CSS() {\n return { tooltip: \"ct\", tooltipContent: \"ct__content\", tooltipShown: \"ct--shown\", placement: { left: \"ct--left\", bottom: \"ct--bottom\", right: \"ct--right\", top: \"ct--top\" } };\n }\n show(a, l, c) {\n this.nodes.wrapper || this.prepare(), this.hidingTimeout && clearTimeout(this.hidingTimeout);\n const u = Object.assign({ placement: \"bottom\", marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0, delay: 70, hidingDelay: 0 }, c);\n if (u.hidingDelay && (this.hidingDelay = u.hidingDelay), this.nodes.content.innerHTML = \"\", typeof l == \"string\")\n this.nodes.content.appendChild(document.createTextNode(l));\n else {\n if (!(l instanceof Node))\n throw Error(\"[CodeX Tooltip] Wrong type of «content» passed. It should be an instance of Node or String. But \" + typeof l + \" given.\");\n this.nodes.content.appendChild(l);\n }\n switch (this.nodes.wrapper.classList.remove(...Object.values(this.CSS.placement)), u.placement) {\n case \"top\":\n this.placeTop(a, u);\n break;\n case \"left\":\n this.placeLeft(a, u);\n break;\n case \"right\":\n this.placeRight(a, u);\n break;\n case \"bottom\":\n default:\n this.placeBottom(a, u);\n }\n u && u.delay ? this.showingTimeout = setTimeout(() => {\n this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0;\n }, u.delay) : (this.nodes.wrapper.classList.add(this.CSS.tooltipShown), this.showed = !0);\n }\n hide(a = !1) {\n if (this.hidingDelay && !a)\n return this.hidingTimeout && clearTimeout(this.hidingTimeout), void (this.hidingTimeout = setTimeout(() => {\n this.hide(!0);\n }, this.hidingDelay));\n this.nodes.wrapper.classList.remove(this.CSS.tooltipShown), this.showed = !1, this.showingTimeout && clearTimeout(this.showingTimeout);\n }\n onHover(a, l, c) {\n a.addEventListener(\"mouseenter\", () => {\n this.show(a, l, c);\n }), a.addEventListener(\"mouseleave\", () => {\n this.hide();\n });\n }\n destroy() {\n this.nodes.wrapper.remove(), window.removeEventListener(\"scroll\", this.handleWindowScroll);\n }\n prepare() {\n this.nodes.wrapper = this.make(\"div\", this.CSS.tooltip), this.nodes.content = this.make(\"div\", this.CSS.tooltipContent), this.append(this.nodes.wrapper, this.nodes.content), this.append(document.body, this.nodes.wrapper);\n }\n loadStyles() {\n const a = \"codex-tooltips-style\";\n if (document.getElementById(a))\n return;\n const l = i(2), c = this.make(\"style\", null, { textContent: l.toString(), id: a });\n this.prepend(document.head, c);\n }\n placeBottom(a, l) {\n const c = a.getBoundingClientRect(), u = c.left + a.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.bottom + window.pageYOffset + this.offsetTop + l.marginTop;\n this.applyPlacement(\"bottom\", u, h);\n }\n placeTop(a, l) {\n const c = a.getBoundingClientRect(), u = c.left + a.clientWidth / 2 - this.nodes.wrapper.offsetWidth / 2, h = c.top + window.pageYOffset - this.nodes.wrapper.clientHeight - this.offsetTop;\n this.applyPlacement(\"top\", u, h);\n }\n placeLeft(a, l) {\n const c = a.getBoundingClientRect(), u = c.left - this.nodes.wrapper.offsetWidth - this.offsetLeft - l.marginLeft, h = c.top + window.pageYOffset + a.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"left\", u, h);\n }\n placeRight(a, l) {\n const c = a.getBoundingClientRect(), u = c.right + this.offsetRight + l.marginRight, h = c.top + window.pageYOffset + a.clientHeight / 2 - this.nodes.wrapper.offsetHeight / 2;\n this.applyPlacement(\"right\", u, h);\n }\n applyPlacement(a, l, c) {\n this.nodes.wrapper.classList.add(this.CSS.placement[a]), this.nodes.wrapper.style.left = l + \"px\", this.nodes.wrapper.style.top = c + \"px\";\n }\n make(a, l = null, c = {}) {\n const u = document.createElement(a);\n Array.isArray(l) ? u.classList.add(...l) : l && u.classList.add(l);\n for (const h in c)\n c.hasOwnProperty(h) && (u[h] = c[h]);\n return u;\n }\n append(a, l) {\n Array.isArray(l) ? l.forEach((c) => a.appendChild(c)) : a.appendChild(l);\n }\n prepend(a, l) {\n Array.isArray(l) ? (l = l.reverse()).forEach((c) => a.prepend(c)) : a.prepend(l);\n }\n }\n }, function(t, o) {\n t.exports = `.ct{z-index:999;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;-webkit-transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1);transition:opacity 50ms ease-in,transform 70ms cubic-bezier(.215,.61,.355,1),-webkit-transform 70ms cubic-bezier(.215,.61,.355,1);will-change:opacity,top,left;-webkit-box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);box-shadow:0 8px 12px 0 rgba(29,32,43,.17),0 4px 5px -3px rgba(5,6,12,.49);border-radius:9px}.ct,.ct:before{position:absolute;top:0;left:0}.ct:before{content:\"\";bottom:0;right:0;background-color:#1d202b;z-index:-1;border-radius:4px}@supports(-webkit-mask-box-image:url(\"\")){.ct:before{border-radius:0;-webkit-mask-box-image:url('data:image/svg+xml;charset=utf-8,') 48% 41% 37.9% 53.3%}}@media (--mobile){.ct{display:none}}.ct__content{padding:6px 10px;color:#cdd1e0;font-size:12px;text-align:center;letter-spacing:.02em;line-height:1em}.ct:after{content:\"\";width:8px;height:8px;position:absolute;background-color:#1d202b;z-index:-1}.ct--bottom{-webkit-transform:translateY(5px);transform:translateY(5px)}.ct--bottom:after{top:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--top{-webkit-transform:translateY(-5px);transform:translateY(-5px)}.ct--top:after{top:auto;bottom:-3px;left:50%;-webkit-transform:translateX(-50%) rotate(-45deg);transform:translateX(-50%) rotate(-45deg)}.ct--left{-webkit-transform:translateX(-5px);transform:translateX(-5px)}.ct--left:after{top:50%;left:auto;right:0;-webkit-transform:translate(41.6%,-50%) rotate(-45deg);transform:translate(41.6%,-50%) rotate(-45deg)}.ct--right{-webkit-transform:translateX(5px);transform:translateX(5px)}.ct--right:after{top:50%;left:0;-webkit-transform:translate(-41.6%,-50%) rotate(-45deg);transform:translate(-41.6%,-50%) rotate(-45deg)}.ct--shown{opacity:1;-webkit-transform:none;transform:none}`;\n }]).default;\n });\n})(Vo);\nvar ji = Vo.exports;\nconst Hi = /* @__PURE__ */ Ke(ji);\nlet U = null;\nfunction Et() {\n U || (U = new Hi());\n}\nfunction $i(n, e, t) {\n Et(), U == null || U.show(n, e, t);\n}\nfunction $e(n = !1) {\n Et(), U == null || U.hide(n);\n}\nfunction ze(n, e, t) {\n Et(), U == null || U.onHover(n, e, t);\n}\nfunction zi() {\n U == null || U.destroy(), U = null;\n}\nclass Ui extends E {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n });\n }\n /**\n * Available methods\n */\n get methods() {\n return {\n show: (e, t, o) => this.show(e, t, o),\n hide: () => this.hide(),\n onHover: (e, t, o) => this.onHover(e, t, o)\n };\n }\n /**\n * Method show tooltip on element with passed HTML content\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n show(e, t, o) {\n $i(e, t, o);\n }\n /**\n * Method hides tooltip on HTML page\n */\n hide() {\n $e();\n }\n /**\n * Decorator for showing Tooltip by mouseenter/mouseleave\n *\n * @param {HTMLElement} element - element on which tooltip should be shown\n * @param {TooltipContent} content - tooltip content\n * @param {TooltipOptions} options - tooltip options\n */\n onHover(e, t, o) {\n ze(e, t, o);\n }\n}\nclass Wi extends E {\n /**\n * Available methods / getters\n */\n get methods() {\n return {\n nodes: this.editorNodes\n /**\n * There can be added some UI methods, like toggleThinMode() etc\n */\n };\n }\n /**\n * Exported classes\n */\n get editorNodes() {\n return {\n /**\n * Top-level editor instance wrapper\n */\n wrapper: this.Editor.UI.nodes.wrapper,\n /**\n * Element that holds all the Blocks\n */\n redactor: this.Editor.UI.nodes.redactor\n };\n }\n}\nfunction qo(n, e) {\n const t = {};\n return Object.entries(n).forEach(([o, i]) => {\n if (D(i)) {\n const s = e ? `${e}.${o}` : o;\n Object.values(i).every((a) => te(a)) ? t[o] = s : t[o] = qo(i, s);\n return;\n }\n t[o] = i;\n }), t;\n}\nconst K = qo(Fo);\nfunction Yi(n, e) {\n const t = {};\n return Object.keys(n).forEach((o) => {\n const i = e[o];\n i !== void 0 ? t[i] = n[o] : t[o] = n[o];\n }), t;\n}\nconst Zo = class Ee {\n /**\n * @param {HTMLElement[]} nodeList — the list of iterable HTML-items\n * @param {string} focusedCssClass - user-provided CSS-class that will be set in flipping process\n */\n constructor(e, t) {\n this.cursor = -1, this.items = [], this.items = e || [], this.focusedCssClass = t;\n }\n /**\n * Returns Focused button Node\n *\n * @returns {HTMLElement}\n */\n get currentItem() {\n return this.cursor === -1 ? null : this.items[this.cursor];\n }\n /**\n * Sets cursor to specified position\n *\n * @param cursorPosition - new cursor position\n */\n setCursor(e) {\n e < this.items.length && e >= -1 && (this.dropCursor(), this.cursor = e, this.items[this.cursor].classList.add(this.focusedCssClass));\n }\n /**\n * Sets items. Can be used when iterable items changed dynamically\n *\n * @param {HTMLElement[]} nodeList - nodes to iterate\n */\n setItems(e) {\n this.items = e;\n }\n /**\n * Sets cursor next to the current\n */\n next() {\n this.cursor = this.leafNodesAndReturnIndex(Ee.directions.RIGHT);\n }\n /**\n * Sets cursor before current\n */\n previous() {\n this.cursor = this.leafNodesAndReturnIndex(Ee.directions.LEFT);\n }\n /**\n * Sets cursor to the default position and removes CSS-class from previously focused item\n */\n dropCursor() {\n this.cursor !== -1 && (this.items[this.cursor].classList.remove(this.focusedCssClass), this.cursor = -1);\n }\n /**\n * Leafs nodes inside the target list from active element\n *\n * @param {string} direction - leaf direction. Can be 'left' or 'right'\n * @returns {number} index of focused node\n */\n leafNodesAndReturnIndex(e) {\n if (this.items.length === 0)\n return this.cursor;\n let t = this.cursor;\n return t === -1 ? t = e === Ee.directions.RIGHT ? -1 : 0 : this.items[t].classList.remove(this.focusedCssClass), e === Ee.directions.RIGHT ? t = (t + 1) % this.items.length : t = (this.items.length + t - 1) % this.items.length, d.canSetCaret(this.items[t]) && Fe(() => b.setCursor(this.items[t]), 50)(), this.items[t].classList.add(this.focusedCssClass), t;\n }\n};\nZo.directions = {\n RIGHT: \"right\",\n LEFT: \"left\"\n};\nlet ke = Zo;\nclass ce {\n /**\n * @param options - different constructing settings\n */\n constructor(e) {\n this.iterator = null, this.activated = !1, this.flipCallbacks = [], this.onKeyDown = (t) => {\n if (this.isEventReadyForHandling(t))\n switch (ce.usedKeys.includes(t.keyCode) && t.preventDefault(), t.keyCode) {\n case y.TAB:\n this.handleTabPress(t);\n break;\n case y.LEFT:\n case y.UP:\n this.flipLeft();\n break;\n case y.RIGHT:\n case y.DOWN:\n this.flipRight();\n break;\n case y.ENTER:\n this.handleEnterPress(t);\n break;\n }\n }, this.iterator = new ke(e.items, e.focusedItemClass), this.activateCallback = e.activateCallback, this.allowedKeys = e.allowedKeys || ce.usedKeys;\n }\n /**\n * True if flipper is currently activated\n */\n get isActivated() {\n return this.activated;\n }\n /**\n * Array of keys (codes) that is handled by Flipper\n * Used to:\n * - preventDefault only for this keys, not all keydowns (@see constructor)\n * - to skip external behaviours only for these keys, when filler is activated (@see BlockEvents@arrowRightAndDown)\n */\n static get usedKeys() {\n return [\n y.TAB,\n y.LEFT,\n y.RIGHT,\n y.ENTER,\n y.UP,\n y.DOWN\n ];\n }\n /**\n * Active tab/arrows handling by flipper\n *\n * @param items - Some modules (like, InlineToolbar, BlockSettings) might refresh buttons dynamically\n * @param cursorPosition - index of the item that should be focused once flipper is activated\n */\n activate(e, t) {\n this.activated = !0, e && this.iterator.setItems(e), t !== void 0 && this.iterator.setCursor(t), document.addEventListener(\"keydown\", this.onKeyDown, !0);\n }\n /**\n * Disable tab/arrows handling by flipper\n */\n deactivate() {\n this.activated = !1, this.dropCursor(), document.removeEventListener(\"keydown\", this.onKeyDown);\n }\n /**\n * Focus first item\n */\n focusFirst() {\n this.dropCursor(), this.flipRight();\n }\n /**\n * Focuses previous flipper iterator item\n */\n flipLeft() {\n this.iterator.previous(), this.flipCallback();\n }\n /**\n * Focuses next flipper iterator item\n */\n flipRight() {\n this.iterator.next(), this.flipCallback();\n }\n /**\n * Return true if some button is focused\n */\n hasFocus() {\n return !!this.iterator.currentItem;\n }\n /**\n * Registeres function that should be executed on each navigation action\n *\n * @param cb - function to execute\n */\n onFlip(e) {\n this.flipCallbacks.push(e);\n }\n /**\n * Unregisteres function that is executed on each navigation action\n *\n * @param cb - function to stop executing\n */\n removeOnFlip(e) {\n this.flipCallbacks = this.flipCallbacks.filter((t) => t !== e);\n }\n /**\n * Drops flipper's iterator cursor\n *\n * @see DomIterator#dropCursor\n */\n dropCursor() {\n this.iterator.dropCursor();\n }\n /**\n * This function is fired before handling flipper keycodes\n * The result of this function defines if it is need to be handled or not\n *\n * @param {KeyboardEvent} event - keydown keyboard event\n * @returns {boolean}\n */\n isEventReadyForHandling(e) {\n return this.activated && this.allowedKeys.includes(e.keyCode);\n }\n /**\n * When flipper is activated tab press will leaf the items\n *\n * @param {KeyboardEvent} event - tab keydown event\n */\n handleTabPress(e) {\n switch (e.shiftKey ? ke.directions.LEFT : ke.directions.RIGHT) {\n case ke.directions.RIGHT:\n this.flipRight();\n break;\n case ke.directions.LEFT:\n this.flipLeft();\n break;\n }\n }\n /**\n * Enter press will click current item if flipper is activated\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n handleEnterPress(e) {\n this.activated && (this.iterator.currentItem && (e.stopPropagation(), e.preventDefault(), this.iterator.currentItem.click()), A(this.activateCallback) && this.activateCallback(this.iterator.currentItem));\n }\n /**\n * Fired after flipping in any direction\n */\n flipCallback() {\n this.iterator.currentItem && this.iterator.currentItem.scrollIntoViewIfNeeded(), this.flipCallbacks.forEach((e) => e());\n }\n}\nconst Ki = '', Xi = '', Vi = '', qi = '', Zi = '', Gi = '', Qi = '', Ji = '', Co = '', es = '', ts = '', Go = '', os = '', ns = '', is = '', ss = \"__\", rs = \"--\";\nfunction ne(n) {\n return (e, t) => [[n, e].filter((i) => !!i).join(ss), t].filter((i) => !!i).join(rs);\n}\nconst ye = ne(\"ce-hint\"), we = {\n root: ye(),\n alignedStart: ye(null, \"align-left\"),\n alignedCenter: ye(null, \"align-center\"),\n title: ye(\"title\"),\n description: ye(\"description\")\n};\nclass as {\n /**\n * Constructs the hint content instance\n *\n * @param params - hint content parameters\n */\n constructor(e) {\n this.nodes = {\n root: d.make(\"div\", [we.root, e.alignment === \"center\" ? we.alignedCenter : we.alignedStart]),\n title: d.make(\"div\", we.title, { textContent: e.title })\n }, this.nodes.root.appendChild(this.nodes.title), e.description !== void 0 && (this.nodes.description = d.make(\"div\", we.description, { textContent: e.description }), this.nodes.root.appendChild(this.nodes.description));\n }\n /**\n * Returns the root element of the hint content\n */\n getElement() {\n return this.nodes.root;\n }\n}\nclass xt {\n /**\n * Constructs the instance\n *\n * @param params - instance parameters\n */\n constructor(e) {\n this.params = e;\n }\n /**\n * Item name if exists\n */\n get name() {\n if (this.params !== void 0 && \"name\" in this.params)\n return this.params.name;\n }\n /**\n * Destroys the instance\n */\n destroy() {\n $e();\n }\n /**\n * Called when children popover is opened (if exists)\n */\n onChildrenOpen() {\n var e;\n this.params !== void 0 && \"children\" in this.params && typeof ((e = this.params.children) == null ? void 0 : e.onOpen) == \"function\" && this.params.children.onOpen();\n }\n /**\n * Called when children popover is closed (if exists)\n */\n onChildrenClose() {\n var e;\n this.params !== void 0 && \"children\" in this.params && typeof ((e = this.params.children) == null ? void 0 : e.onClose) == \"function\" && this.params.children.onClose();\n }\n /**\n * Called on popover item click\n */\n handleClick() {\n var e, t;\n this.params !== void 0 && \"onActivate\" in this.params && ((t = (e = this.params).onActivate) == null || t.call(e, this.params));\n }\n /**\n * Adds hint to the item element if hint data is provided\n *\n * @param itemElement - popover item root element to add hint to\n * @param hintData - hint data\n */\n addHint(e, t) {\n const o = new as(t);\n ze(e, o.getElement(), {\n placement: t.position,\n hidingDelay: 100\n });\n }\n /**\n * Returns item children that are represented as popover items\n */\n get children() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.items) !== void 0 ? this.params.children.items : [];\n }\n /**\n * Returns true if item has any type of children\n */\n get hasChildren() {\n return this.children.length > 0;\n }\n /**\n * Returns true if item children should be open instantly after popover is opened and not on item click/hover\n */\n get isChildrenOpen() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.isOpen) === !0;\n }\n /**\n * True if item children items should be navigatable via keyboard\n */\n get isChildrenFlippable() {\n var e;\n return !(this.params === void 0 || !(\"children\" in this.params) || ((e = this.params.children) == null ? void 0 : e.isFlippable) === !1);\n }\n /**\n * Returns true if item has children that should be searchable\n */\n get isChildrenSearchable() {\n var e;\n return this.params !== void 0 && \"children\" in this.params && ((e = this.params.children) == null ? void 0 : e.searchable) === !0;\n }\n /**\n * True if popover should close once item is activated\n */\n get closeOnActivate() {\n return this.params !== void 0 && \"closeOnActivate\" in this.params && this.params.closeOnActivate;\n }\n /**\n * True if item is active\n */\n get isActive() {\n return this.params === void 0 || !(\"isActive\" in this.params) ? !1 : typeof this.params.isActive == \"function\" ? this.params.isActive() : this.params.isActive === !0;\n }\n}\nconst Y = ne(\"ce-popover-item\"), L = {\n container: Y(),\n active: Y(null, \"active\"),\n disabled: Y(null, \"disabled\"),\n focused: Y(null, \"focused\"),\n hidden: Y(null, \"hidden\"),\n confirmationState: Y(null, \"confirmation\"),\n noHover: Y(null, \"no-hover\"),\n noFocus: Y(null, \"no-focus\"),\n title: Y(\"title\"),\n secondaryTitle: Y(\"secondary-title\"),\n icon: Y(\"icon\"),\n iconTool: Y(\"icon\", \"tool\"),\n iconChevronRight: Y(\"icon\", \"chevron-right\"),\n wobbleAnimation: ne(\"wobble\")()\n};\nclass re extends xt {\n /**\n * Constructs popover item instance\n *\n * @param params - popover item construction params\n * @param renderParams - popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n super(e), this.params = e, this.nodes = {\n root: null,\n icon: null\n }, this.confirmationState = null, this.removeSpecialFocusBehavior = () => {\n var o;\n (o = this.nodes.root) == null || o.classList.remove(L.noFocus);\n }, this.removeSpecialHoverBehavior = () => {\n var o;\n (o = this.nodes.root) == null || o.classList.remove(L.noHover);\n }, this.onErrorAnimationEnd = () => {\n var o, i;\n (o = this.nodes.icon) == null || o.classList.remove(L.wobbleAnimation), (i = this.nodes.icon) == null || i.removeEventListener(\"animationend\", this.onErrorAnimationEnd);\n }, this.nodes.root = this.make(e, t);\n }\n /**\n * True if item is disabled and hence not clickable\n */\n get isDisabled() {\n return this.params.isDisabled === !0;\n }\n /**\n * Exposes popover item toggle parameter\n */\n get toggle() {\n return this.params.toggle;\n }\n /**\n * Item title\n */\n get title() {\n return this.params.title;\n }\n /**\n * True if confirmation state is enabled for popover item\n */\n get isConfirmationStateEnabled() {\n return this.confirmationState !== null;\n }\n /**\n * True if item is focused in keyboard navigation process\n */\n get isFocused() {\n return this.nodes.root === null ? !1 : this.nodes.root.classList.contains(L.focused);\n }\n /**\n * Returns popover item root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Called on popover item click\n */\n handleClick() {\n if (this.isConfirmationStateEnabled && this.confirmationState !== null) {\n this.activateOrEnableConfirmationMode(this.confirmationState);\n return;\n }\n this.activateOrEnableConfirmationMode(this.params);\n }\n /**\n * Toggles item active state\n *\n * @param isActive - true if item should strictly should become active\n */\n toggleActive(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(L.active, e);\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(L.hidden, e);\n }\n /**\n * Resets popover item to its original state\n */\n reset() {\n this.isConfirmationStateEnabled && this.disableConfirmationMode();\n }\n /**\n * Method called once item becomes focused during keyboard navigation\n */\n onFocus() {\n this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Constructs HTML element corresponding to popover item params\n *\n * @param params - item construction params\n * @param renderParams - popover item render params\n */\n make(e, t) {\n var s, r;\n const o = (t == null ? void 0 : t.wrapperTag) || \"div\", i = d.make(o, L.container, {\n type: o === \"button\" ? \"button\" : void 0\n });\n return e.name && (i.dataset.itemName = e.name), this.nodes.icon = d.make(\"div\", [L.icon, L.iconTool], {\n innerHTML: e.icon || Qi\n }), i.appendChild(this.nodes.icon), e.title !== void 0 && i.appendChild(d.make(\"div\", L.title, {\n innerHTML: e.title || \"\"\n })), e.secondaryLabel && i.appendChild(d.make(\"div\", L.secondaryTitle, {\n textContent: e.secondaryLabel\n })), this.hasChildren && i.appendChild(d.make(\"div\", [L.icon, L.iconChevronRight], {\n innerHTML: qi\n })), this.isActive && i.classList.add(L.active), e.isDisabled && i.classList.add(L.disabled), e.hint !== void 0 && ((s = t == null ? void 0 : t.hint) == null ? void 0 : s.enabled) !== !1 && this.addHint(i, {\n ...e.hint,\n position: ((r = t == null ? void 0 : t.hint) == null ? void 0 : r.position) || \"right\"\n }), i;\n }\n /**\n * Activates confirmation mode for the item.\n *\n * @param newState - new popover item params that should be applied\n */\n enableConfirmationMode(e) {\n if (this.nodes.root === null)\n return;\n const t = {\n ...this.params,\n ...e,\n confirmation: \"confirmation\" in e ? e.confirmation : void 0\n }, o = this.make(t);\n this.nodes.root.innerHTML = o.innerHTML, this.nodes.root.classList.add(L.confirmationState), this.confirmationState = e, this.enableSpecialHoverAndFocusBehavior();\n }\n /**\n * Returns item to its original state\n */\n disableConfirmationMode() {\n if (this.nodes.root === null)\n return;\n const e = this.make(this.params);\n this.nodes.root.innerHTML = e.innerHTML, this.nodes.root.classList.remove(L.confirmationState), this.confirmationState = null, this.disableSpecialHoverAndFocusBehavior();\n }\n /**\n * Enables special focus and hover behavior for item in confirmation state.\n * This is needed to prevent item from being highlighted as hovered/focused just after click.\n */\n enableSpecialHoverAndFocusBehavior() {\n var e, t, o;\n (e = this.nodes.root) == null || e.classList.add(L.noHover), (t = this.nodes.root) == null || t.classList.add(L.noFocus), (o = this.nodes.root) == null || o.addEventListener(\"mouseleave\", this.removeSpecialHoverBehavior, { once: !0 });\n }\n /**\n * Disables special focus and hover behavior\n */\n disableSpecialHoverAndFocusBehavior() {\n var e;\n this.removeSpecialFocusBehavior(), this.removeSpecialHoverBehavior(), (e = this.nodes.root) == null || e.removeEventListener(\"mouseleave\", this.removeSpecialHoverBehavior);\n }\n /**\n * Executes item's onActivate callback if the item has no confirmation configured\n *\n * @param item - item to activate or bring to confirmation mode\n */\n activateOrEnableConfirmationMode(e) {\n var t;\n if (!(\"confirmation\" in e) || e.confirmation === void 0)\n try {\n (t = e.onActivate) == null || t.call(e, e), this.disableConfirmationMode();\n } catch {\n this.animateError();\n }\n else\n this.enableConfirmationMode(e.confirmation);\n }\n /**\n * Animates item which symbolizes that error occured while executing 'onActivate()' callback\n */\n animateError() {\n var e, t, o;\n (e = this.nodes.icon) != null && e.classList.contains(L.wobbleAnimation) || ((t = this.nodes.icon) == null || t.classList.add(L.wobbleAnimation), (o = this.nodes.icon) == null || o.addEventListener(\"animationend\", this.onErrorAnimationEnd));\n }\n}\nconst nt = ne(\"ce-popover-item-separator\"), it = {\n container: nt(),\n line: nt(\"line\"),\n hidden: nt(null, \"hidden\")\n};\nclass Qo extends xt {\n /**\n * Constructs the instance\n */\n constructor() {\n super(), this.nodes = {\n root: d.make(\"div\", it.container),\n line: d.make(\"div\", it.line)\n }, this.nodes.root.appendChild(this.nodes.line);\n }\n /**\n * Returns popover separator root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(it.hidden, e);\n }\n}\nvar G = /* @__PURE__ */ ((n) => (n.Closed = \"closed\", n.ClosedOnActivate = \"closed-on-activate\", n))(G || {});\nconst $ = ne(\"ce-popover\"), P = {\n popover: $(),\n popoverContainer: $(\"container\"),\n popoverOpenTop: $(null, \"open-top\"),\n popoverOpenLeft: $(null, \"open-left\"),\n popoverOpened: $(null, \"opened\"),\n search: $(\"search\"),\n nothingFoundMessage: $(\"nothing-found-message\"),\n nothingFoundMessageDisplayed: $(\"nothing-found-message\", \"displayed\"),\n items: $(\"items\"),\n overlay: $(\"overlay\"),\n overlayHidden: $(\"overlay\", \"hidden\"),\n popoverNested: $(null, \"nested\"),\n getPopoverNestedClass: (n) => $(null, `nested-level-${n.toString()}`),\n popoverInline: $(null, \"inline\"),\n popoverHeader: $(\"header\")\n};\nvar fe = /* @__PURE__ */ ((n) => (n.NestingLevel = \"--nesting-level\", n.PopoverHeight = \"--popover-height\", n.InlinePopoverWidth = \"--inline-popover-width\", n.TriggerItemLeft = \"--trigger-item-left\", n.TriggerItemTop = \"--trigger-item-top\", n))(fe || {});\nconst To = ne(\"ce-popover-item-html\"), So = {\n root: To(),\n hidden: To(null, \"hidden\")\n};\nclass Se extends xt {\n /**\n * Constructs the instance\n *\n * @param params – instance parameters\n * @param renderParams – popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n var o, i;\n super(e), this.nodes = {\n root: d.make(\"div\", So.root)\n }, this.nodes.root.appendChild(e.element), e.name && (this.nodes.root.dataset.itemName = e.name), e.hint !== void 0 && ((o = t == null ? void 0 : t.hint) == null ? void 0 : o.enabled) !== !1 && this.addHint(this.nodes.root, {\n ...e.hint,\n position: ((i = t == null ? void 0 : t.hint) == null ? void 0 : i.position) || \"right\"\n });\n }\n /**\n * Returns popover item root element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Toggles item hidden state\n *\n * @param isHidden - true if item should be hidden\n */\n toggleHidden(e) {\n var t;\n (t = this.nodes.root) == null || t.classList.toggle(So.hidden, e);\n }\n /**\n * Returns list of buttons and inputs inside custom content\n */\n getControls() {\n const e = this.nodes.root.querySelectorAll(\n `button, ${d.allInputsSelector}`\n );\n return Array.from(e);\n }\n}\nclass Jo extends Oe {\n /**\n * Constructs the instance\n *\n * @param params - popover construction params\n * @param itemsRenderParams - popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t = {}) {\n super(), this.params = e, this.itemsRenderParams = t, this.listeners = new _e(), this.messages = {\n nothingFound: \"Nothing found\",\n search: \"Search\"\n }, this.items = this.buildItems(e.items), e.messages && (this.messages = {\n ...this.messages,\n ...e.messages\n }), this.nodes = {}, this.nodes.popoverContainer = d.make(\"div\", [P.popoverContainer]), this.nodes.nothingFoundMessage = d.make(\"div\", [P.nothingFoundMessage], {\n textContent: this.messages.nothingFound\n }), this.nodes.popoverContainer.appendChild(this.nodes.nothingFoundMessage), this.nodes.items = d.make(\"div\", [P.items]), this.items.forEach((o) => {\n const i = o.getElement();\n i !== null && this.nodes.items.appendChild(i);\n }), this.nodes.popoverContainer.appendChild(this.nodes.items), this.listeners.on(this.nodes.popoverContainer, \"click\", (o) => this.handleClick(o)), this.nodes.popover = d.make(\"div\", [\n P.popover,\n this.params.class\n ]), this.nodes.popover.appendChild(this.nodes.popoverContainer);\n }\n /**\n * List of default popover items that are searchable and may have confirmation state\n */\n get itemsDefault() {\n return this.items.filter((e) => e instanceof re);\n }\n /**\n * Returns HTML element corresponding to the popover\n */\n getElement() {\n return this.nodes.popover;\n }\n /**\n * Open popover\n */\n show() {\n this.nodes.popover.classList.add(P.popoverOpened), this.search !== void 0 && this.search.focus();\n }\n /**\n * Closes popover\n */\n hide() {\n this.nodes.popover.classList.remove(P.popoverOpened), this.nodes.popover.classList.remove(P.popoverOpenTop), this.itemsDefault.forEach((e) => e.reset()), this.search !== void 0 && this.search.clear(), this.emit(G.Closed);\n }\n /**\n * Clears memory\n */\n destroy() {\n var e;\n this.items.forEach((t) => t.destroy()), this.nodes.popover.remove(), this.listeners.removeAll(), (e = this.search) == null || e.destroy();\n }\n /**\n * Looks for the item by name and imitates click on it\n *\n * @param name - name of the item to activate\n */\n activateItemByName(e) {\n const t = this.items.find((o) => o.name === e);\n this.handleItemClick(t);\n }\n /**\n * Factory method for creating popover items\n *\n * @param items - list of items params\n */\n buildItems(e) {\n return e.map((t) => {\n switch (t.type) {\n case _.Separator:\n return new Qo();\n case _.Html:\n return new Se(t, this.itemsRenderParams[_.Html]);\n default:\n return new re(t, this.itemsRenderParams[_.Default]);\n }\n });\n }\n /**\n * Retrieves popover item that is the target of the specified event\n *\n * @param event - event to retrieve popover item from\n */\n getTargetItem(e) {\n return this.items.filter((t) => t instanceof re || t instanceof Se).find((t) => {\n const o = t.getElement();\n return o === null ? !1 : e.composedPath().includes(o);\n });\n }\n /**\n * Handles popover item click\n *\n * @param item - item to handle click of\n */\n handleItemClick(e) {\n if (!(\"isDisabled\" in e && e.isDisabled)) {\n if (e.hasChildren) {\n this.showNestedItems(e), \"handleClick\" in e && typeof e.handleClick == \"function\" && e.handleClick();\n return;\n }\n this.itemsDefault.filter((t) => t !== e).forEach((t) => t.reset()), \"handleClick\" in e && typeof e.handleClick == \"function\" && e.handleClick(), this.toggleItemActivenessIfNeeded(e), e.closeOnActivate && (this.hide(), this.emit(G.ClosedOnActivate));\n }\n }\n /**\n * Handles clicks inside popover\n *\n * @param event - item to handle click of\n */\n handleClick(e) {\n const t = this.getTargetItem(e);\n t !== void 0 && this.handleItemClick(t);\n }\n /**\n * - Toggles item active state, if clicked popover item has property 'toggle' set to true.\n *\n * - Performs radiobutton-like behavior if the item has property 'toggle' set to string key.\n * (All the other items with the same key get inactive, and the item gets active)\n *\n * @param clickedItem - popover item that was clicked\n */\n toggleItemActivenessIfNeeded(e) {\n if (e instanceof re && (e.toggle === !0 && e.toggleActive(), typeof e.toggle == \"string\")) {\n const t = this.itemsDefault.filter((o) => o.toggle === e.toggle);\n if (t.length === 1) {\n e.toggleActive();\n return;\n }\n t.forEach((o) => {\n o.toggleActive(o === e);\n });\n }\n }\n}\nvar Ue = /* @__PURE__ */ ((n) => (n.Search = \"search\", n))(Ue || {});\nconst st = ne(\"cdx-search-field\"), rt = {\n wrapper: st(),\n icon: st(\"icon\"),\n input: st(\"input\")\n};\nclass ls extends Oe {\n /**\n * @param options - available config\n * @param options.items - searchable items list\n * @param options.placeholder - input placeholder\n */\n constructor({ items: e, placeholder: t }) {\n super(), this.listeners = new _e(), this.items = e, this.wrapper = d.make(\"div\", rt.wrapper);\n const o = d.make(\"div\", rt.icon, {\n innerHTML: os\n });\n this.input = d.make(\"input\", rt.input, {\n placeholder: t,\n /**\n * Used to prevent focusing on the input by Tab key\n * (Popover in the Toolbar lays below the blocks,\n * so Tab in the last block will focus this hidden input if this property is not set)\n */\n tabIndex: -1\n }), this.wrapper.appendChild(o), this.wrapper.appendChild(this.input), this.listeners.on(this.input, \"input\", () => {\n this.searchQuery = this.input.value, this.emit(Ue.Search, {\n query: this.searchQuery,\n items: this.foundItems\n });\n });\n }\n /**\n * Returns search field element\n */\n getElement() {\n return this.wrapper;\n }\n /**\n * Sets focus to the input\n */\n focus() {\n this.input.focus();\n }\n /**\n * Clears search query and results\n */\n clear() {\n this.input.value = \"\", this.searchQuery = \"\", this.emit(Ue.Search, {\n query: \"\",\n items: this.foundItems\n });\n }\n /**\n * Clears memory\n */\n destroy() {\n this.listeners.removeAll();\n }\n /**\n * Returns list of found items for the current search query\n */\n get foundItems() {\n return this.items.filter((e) => this.checkItem(e));\n }\n /**\n * Contains logic for checking whether passed item conforms the search query\n *\n * @param item - item to be checked\n */\n checkItem(e) {\n var i, s;\n const t = ((i = e.title) == null ? void 0 : i.toLowerCase()) || \"\", o = (s = this.searchQuery) == null ? void 0 : s.toLowerCase();\n return o !== void 0 ? t.includes(o) : !1;\n }\n}\nvar cs = Object.defineProperty, ds = Object.getOwnPropertyDescriptor, us = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? ds(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && cs(e, t, i), i;\n};\nconst en = class tn extends Jo {\n /**\n * Construct the instance\n *\n * @param params - popover params\n * @param itemsRenderParams – popover item render params.\n * The parameters that are not set by user via popover api but rather depend on technical implementation\n */\n constructor(e, t) {\n super(e, t), this.nestingLevel = 0, this.nestedPopoverTriggerItem = null, this.previouslyHoveredItem = null, this.scopeElement = document.body, this.hide = () => {\n var o;\n super.hide(), this.destroyNestedPopoverIfExists(), (o = this.flipper) == null || o.deactivate(), this.previouslyHoveredItem = null;\n }, this.onFlip = () => {\n const o = this.itemsDefault.find((i) => i.isFocused);\n o == null || o.onFocus();\n }, this.onSearch = (o) => {\n var a;\n const i = o.query === \"\", s = o.items.length === 0;\n this.items.forEach((l) => {\n let c = !1;\n l instanceof re ? c = !o.items.includes(l) : (l instanceof Qo || l instanceof Se) && (c = s || !i), l.toggleHidden(c);\n }), this.toggleNothingFoundMessage(s);\n const r = o.query === \"\" ? this.flippableElements : o.items.map((l) => l.getElement());\n (a = this.flipper) != null && a.isActivated && (this.flipper.deactivate(), this.flipper.activate(r));\n }, e.nestingLevel !== void 0 && (this.nestingLevel = e.nestingLevel), this.nestingLevel > 0 && this.nodes.popover.classList.add(P.popoverNested), e.scopeElement !== void 0 && (this.scopeElement = e.scopeElement), this.nodes.popoverContainer !== null && this.listeners.on(this.nodes.popoverContainer, \"mouseover\", (o) => this.handleHover(o)), e.searchable && this.addSearch(), e.flippable !== !1 && (this.flipper = new ce({\n items: this.flippableElements,\n focusedItemClass: L.focused,\n allowedKeys: [\n y.TAB,\n y.UP,\n y.DOWN,\n y.ENTER\n ]\n }), this.flipper.onFlip(this.onFlip));\n }\n /**\n * Returns true if some item inside popover is focused\n */\n hasFocus() {\n return this.flipper === void 0 ? !1 : this.flipper.hasFocus();\n }\n /**\n * Scroll position inside items container of the popover\n */\n get scrollTop() {\n return this.nodes.items === null ? 0 : this.nodes.items.scrollTop;\n }\n /**\n * Returns visible element offset top\n */\n get offsetTop() {\n return this.nodes.popoverContainer === null ? 0 : this.nodes.popoverContainer.offsetTop;\n }\n /**\n * Open popover\n */\n show() {\n var e;\n this.nodes.popover.style.setProperty(fe.PopoverHeight, this.size.height + \"px\"), this.shouldOpenBottom || this.nodes.popover.classList.add(P.popoverOpenTop), this.shouldOpenRight || this.nodes.popover.classList.add(P.popoverOpenLeft), super.show(), (e = this.flipper) == null || e.activate(this.flippableElements);\n }\n /**\n * Clears memory\n */\n destroy() {\n this.hide(), super.destroy();\n }\n /**\n * Handles displaying nested items for the item.\n *\n * @param item – item to show nested popover for\n */\n showNestedItems(e) {\n this.nestedPopover !== null && this.nestedPopover !== void 0 || (this.nestedPopoverTriggerItem = e, this.showNestedPopoverForItem(e));\n }\n /**\n * Handles hover events inside popover items container\n *\n * @param event - hover event data\n */\n handleHover(e) {\n const t = this.getTargetItem(e);\n t !== void 0 && this.previouslyHoveredItem !== t && (this.destroyNestedPopoverIfExists(), this.previouslyHoveredItem = t, t.hasChildren && this.showNestedPopoverForItem(t));\n }\n /**\n * Sets CSS variable with position of item near which nested popover should be displayed.\n * Is used for correct positioning of the nested popover\n *\n * @param nestedPopoverEl - nested popover element\n * @param item – item near which nested popover should be displayed\n */\n setTriggerItemPosition(e, t) {\n const o = t.getElement(), i = (o ? o.offsetTop : 0) - this.scrollTop, s = this.offsetTop + i;\n e.style.setProperty(fe.TriggerItemTop, s + \"px\");\n }\n /**\n * Destroys existing nested popover\n */\n destroyNestedPopoverIfExists() {\n var e, t;\n this.nestedPopover === void 0 || this.nestedPopover === null || (this.nestedPopover.off(G.ClosedOnActivate, this.hide), this.nestedPopover.hide(), this.nestedPopover.destroy(), this.nestedPopover.getElement().remove(), this.nestedPopover = null, (e = this.flipper) == null || e.activate(this.flippableElements), (t = this.nestedPopoverTriggerItem) == null || t.onChildrenClose());\n }\n /**\n * Creates and displays nested popover for specified item.\n * Is used only on desktop\n *\n * @param item - item to display nested popover by\n */\n showNestedPopoverForItem(e) {\n var o;\n this.nestedPopover = new tn({\n searchable: e.isChildrenSearchable,\n items: e.children,\n nestingLevel: this.nestingLevel + 1,\n flippable: e.isChildrenFlippable,\n messages: this.messages\n }), e.onChildrenOpen(), this.nestedPopover.on(G.ClosedOnActivate, this.hide);\n const t = this.nestedPopover.getElement();\n return this.nodes.popover.appendChild(t), this.setTriggerItemPosition(t, e), t.style.setProperty(fe.NestingLevel, this.nestedPopover.nestingLevel.toString()), this.nestedPopover.show(), (o = this.flipper) == null || o.deactivate(), this.nestedPopover;\n }\n /**\n * Checks if popover should be opened bottom.\n * It should happen when there is enough space below or not enough space above\n */\n get shouldOpenBottom() {\n if (this.nodes.popover === void 0 || this.nodes.popover === null)\n return !1;\n const e = this.nodes.popoverContainer.getBoundingClientRect(), t = this.scopeElement.getBoundingClientRect(), o = this.size.height, i = e.top + o, s = e.top - o, r = Math.min(window.innerHeight, t.bottom);\n return s < t.top || i <= r;\n }\n /**\n * Checks if popover should be opened left.\n * It should happen when there is enough space in the right or not enough space in the left\n */\n get shouldOpenRight() {\n if (this.nodes.popover === void 0 || this.nodes.popover === null)\n return !1;\n const e = this.nodes.popover.getBoundingClientRect(), t = this.scopeElement.getBoundingClientRect(), o = this.size.width, i = e.right + o, s = e.left - o, r = Math.min(window.innerWidth, t.right);\n return s < t.left || i <= r;\n }\n get size() {\n var i;\n const e = {\n height: 0,\n width: 0\n };\n if (this.nodes.popover === null)\n return e;\n const t = this.nodes.popover.cloneNode(!0);\n t.style.visibility = \"hidden\", t.style.position = \"absolute\", t.style.top = \"-1000px\", t.classList.add(P.popoverOpened), (i = t.querySelector(\".\" + P.popoverNested)) == null || i.remove(), document.body.appendChild(t);\n const o = t.querySelector(\".\" + P.popoverContainer);\n return e.height = o.offsetHeight, e.width = o.offsetWidth, t.remove(), e;\n }\n /**\n * Returns list of elements available for keyboard navigation.\n */\n get flippableElements() {\n return this.items.map((t) => {\n if (t instanceof re)\n return t.getElement();\n if (t instanceof Se)\n return t.getControls();\n }).flat().filter((t) => t != null);\n }\n /**\n * Adds search to the popover\n */\n addSearch() {\n this.search = new ls({\n items: this.itemsDefault,\n placeholder: this.messages.search\n }), this.search.on(Ue.Search, this.onSearch);\n const e = this.search.getElement();\n e.classList.add(P.search), this.nodes.popoverContainer.insertBefore(e, this.nodes.popoverContainer.firstChild);\n }\n /**\n * Toggles nothing found message visibility\n *\n * @param isDisplayed - true if the message should be displayed\n */\n toggleNothingFoundMessage(e) {\n this.nodes.nothingFoundMessage.classList.toggle(P.nothingFoundMessageDisplayed, e);\n }\n};\nus([\n me\n], en.prototype, \"size\", 1);\nlet Bt = en;\nclass hs extends Bt {\n /**\n * Constructs the instance\n *\n * @param params - instance parameters\n */\n constructor(e) {\n const t = !be();\n super(\n {\n ...e,\n class: P.popoverInline\n },\n {\n [_.Default]: {\n /**\n * We use button instead of div here to fix bug associated with focus loss (which leads to selection change) on click in safari\n *\n * @todo figure out better way to solve the issue\n */\n wrapperTag: \"button\",\n hint: {\n position: \"top\",\n alignment: \"center\",\n enabled: t\n }\n },\n [_.Html]: {\n hint: {\n position: \"top\",\n alignment: \"center\",\n enabled: t\n }\n }\n }\n ), this.items.forEach((o) => {\n !(o instanceof re) && !(o instanceof Se) || o.hasChildren && o.isChildrenOpen && this.showNestedItems(o);\n });\n }\n /**\n * Returns visible element offset top\n */\n get offsetLeft() {\n return this.nodes.popoverContainer === null ? 0 : this.nodes.popoverContainer.offsetLeft;\n }\n /**\n * Open popover\n */\n show() {\n this.nestingLevel === 0 && this.nodes.popover.style.setProperty(\n fe.InlinePopoverWidth,\n this.size.width + \"px\"\n ), super.show();\n }\n /**\n * Disable hover event handling.\n * Overrides parent's class behavior\n */\n handleHover() {\n }\n /**\n * Sets CSS variable with position of item near which nested popover should be displayed.\n * Is used to position nested popover right below clicked item\n *\n * @param nestedPopoverEl - nested popover element\n * @param item – item near which nested popover should be displayed\n */\n setTriggerItemPosition(e, t) {\n const o = t.getElement(), i = o ? o.offsetLeft : 0, s = this.offsetLeft + i;\n e.style.setProperty(\n fe.TriggerItemLeft,\n s + \"px\"\n );\n }\n /**\n * Handles displaying nested items for the item.\n * Overriding in order to add toggling behaviour\n *\n * @param item – item to toggle nested popover for\n */\n showNestedItems(e) {\n if (this.nestedPopoverTriggerItem === e) {\n this.destroyNestedPopoverIfExists(), this.nestedPopoverTriggerItem = null;\n return;\n }\n super.showNestedItems(e);\n }\n /**\n * Creates and displays nested popover for specified item.\n * Is used only on desktop\n *\n * @param item - item to display nested popover by\n */\n showNestedPopoverForItem(e) {\n const t = super.showNestedPopoverForItem(e);\n return t.getElement().classList.add(P.getPopoverNestedClass(t.nestingLevel)), t;\n }\n /**\n * Overrides default item click handling.\n * Helps to close nested popover once other item is clicked.\n *\n * @param item - clicked item\n */\n handleItemClick(e) {\n var t;\n e !== this.nestedPopoverTriggerItem && ((t = this.nestedPopoverTriggerItem) == null || t.handleClick(), super.destroyNestedPopoverIfExists()), super.handleItemClick(e);\n }\n}\nconst on = class xe {\n constructor() {\n this.scrollPosition = null;\n }\n /**\n * Locks body element scroll\n */\n lock() {\n pt ? this.lockHard() : document.body.classList.add(xe.CSS.scrollLocked);\n }\n /**\n * Unlocks body element scroll\n */\n unlock() {\n pt ? this.unlockHard() : document.body.classList.remove(xe.CSS.scrollLocked);\n }\n /**\n * Locks scroll in a hard way (via setting fixed position to body element)\n */\n lockHard() {\n this.scrollPosition = window.pageYOffset, document.documentElement.style.setProperty(\n \"--window-scroll-offset\",\n `${this.scrollPosition}px`\n ), document.body.classList.add(xe.CSS.scrollLockedHard);\n }\n /**\n * Unlocks hard scroll lock\n */\n unlockHard() {\n document.body.classList.remove(xe.CSS.scrollLockedHard), this.scrollPosition !== null && window.scrollTo(0, this.scrollPosition), this.scrollPosition = null;\n }\n};\non.CSS = {\n scrollLocked: \"ce-scroll-locked\",\n scrollLockedHard: \"ce-scroll-locked--hard\"\n};\nlet ps = on;\nconst at = ne(\"ce-popover-header\"), lt = {\n root: at(),\n text: at(\"text\"),\n backButton: at(\"back-button\")\n};\nclass fs {\n /**\n * Constructs the instance\n *\n * @param params - popover header params\n */\n constructor({ text: e, onBackButtonClick: t }) {\n this.listeners = new _e(), this.text = e, this.onBackButtonClick = t, this.nodes = {\n root: d.make(\"div\", [lt.root]),\n backButton: d.make(\"button\", [lt.backButton]),\n text: d.make(\"div\", [lt.text])\n }, this.nodes.backButton.innerHTML = Vi, this.nodes.root.appendChild(this.nodes.backButton), this.listeners.on(this.nodes.backButton, \"click\", this.onBackButtonClick), this.nodes.text.innerText = this.text, this.nodes.root.appendChild(this.nodes.text);\n }\n /**\n * Returns popover header root html element\n */\n getElement() {\n return this.nodes.root;\n }\n /**\n * Destroys the instance\n */\n destroy() {\n this.nodes.root.remove(), this.listeners.destroy();\n }\n}\nclass gs {\n constructor() {\n this.history = [];\n }\n /**\n * Push new popover state\n *\n * @param state - new state\n */\n push(e) {\n this.history.push(e);\n }\n /**\n * Pop last popover state\n */\n pop() {\n return this.history.pop();\n }\n /**\n * Title retrieved from the current state\n */\n get currentTitle() {\n return this.history.length === 0 ? \"\" : this.history[this.history.length - 1].title;\n }\n /**\n * Items list retrieved from the current state\n */\n get currentItems() {\n return this.history.length === 0 ? [] : this.history[this.history.length - 1].items;\n }\n /**\n * Returns history to initial popover state\n */\n reset() {\n for (; this.history.length > 1; )\n this.pop();\n }\n}\nclass nn extends Jo {\n /**\n * Construct the instance\n *\n * @param params - popover params\n */\n constructor(e) {\n super(e, {\n [_.Default]: {\n hint: {\n enabled: !1\n }\n },\n [_.Html]: {\n hint: {\n enabled: !1\n }\n }\n }), this.scrollLocker = new ps(), this.history = new gs(), this.isHidden = !0, this.nodes.overlay = d.make(\"div\", [P.overlay, P.overlayHidden]), this.nodes.popover.insertBefore(this.nodes.overlay, this.nodes.popover.firstChild), this.listeners.on(this.nodes.overlay, \"click\", () => {\n this.hide();\n }), this.history.push({ items: e.items });\n }\n /**\n * Open popover\n */\n show() {\n this.nodes.overlay.classList.remove(P.overlayHidden), super.show(), this.scrollLocker.lock(), this.isHidden = !1;\n }\n /**\n * Closes popover\n */\n hide() {\n this.isHidden || (super.hide(), this.nodes.overlay.classList.add(P.overlayHidden), this.scrollLocker.unlock(), this.history.reset(), this.isHidden = !0);\n }\n /**\n * Clears memory\n */\n destroy() {\n super.destroy(), this.scrollLocker.unlock();\n }\n /**\n * Handles displaying nested items for the item\n *\n * @param item – item to show nested popover for\n */\n showNestedItems(e) {\n this.updateItemsAndHeader(e.children, e.title), this.history.push({\n title: e.title,\n items: e.children\n });\n }\n /**\n * Removes rendered popover items and header and displays new ones\n *\n * @param items - new popover items\n * @param title - new popover header text\n */\n updateItemsAndHeader(e, t) {\n if (this.header !== null && this.header !== void 0 && (this.header.destroy(), this.header = null), t !== void 0) {\n this.header = new fs({\n text: t,\n onBackButtonClick: () => {\n this.history.pop(), this.updateItemsAndHeader(this.history.currentItems, this.history.currentTitle);\n }\n });\n const o = this.header.getElement();\n o !== null && this.nodes.popoverContainer.insertBefore(o, this.nodes.popoverContainer.firstChild);\n }\n this.items.forEach((o) => {\n var i;\n return (i = o.getElement()) == null ? void 0 : i.remove();\n }), this.items = this.buildItems(e), this.items.forEach((o) => {\n var s;\n const i = o.getElement();\n i !== null && ((s = this.nodes.items) == null || s.appendChild(i));\n });\n }\n}\nclass ms extends E {\n constructor() {\n super(...arguments), this.opened = !1, this.selection = new b(), this.popover = null, this.close = () => {\n this.opened && (this.opened = !1, b.isAtEditor || this.selection.restore(), this.selection.clearSaved(), !this.Editor.CrossBlockSelection.isCrossBlockSelectionStarted && this.Editor.BlockManager.currentBlock && this.Editor.BlockSelection.unselectBlock(this.Editor.BlockManager.currentBlock), this.eventsDispatcher.emit(this.events.closed), this.popover && (this.popover.off(G.Closed, this.onPopoverClose), this.popover.destroy(), this.popover.getElement().remove(), this.popover = null));\n }, this.onPopoverClose = () => {\n this.close();\n };\n }\n /**\n * Module Events\n */\n get events() {\n return {\n opened: \"block-settings-opened\",\n closed: \"block-settings-closed\"\n };\n }\n /**\n * Block Settings CSS\n */\n get CSS() {\n return {\n settings: \"ce-settings\"\n };\n }\n /**\n * Getter for inner popover's flipper instance\n *\n * @todo remove once BlockSettings becomes standalone non-module class\n */\n get flipper() {\n var e;\n if (this.popover !== null)\n return \"flipper\" in this.popover ? (e = this.popover) == null ? void 0 : e.flipper : void 0;\n }\n /**\n * Panel with block settings with 2 sections:\n * - Tool's Settings\n * - Default Settings [Move, Remove, etc]\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [this.CSS.settings]), this.nodes.wrapper.setAttribute(\"data-cy\", \"block-tunes\"), this.eventsDispatcher.on(Te, this.close);\n }\n /**\n * Destroys module\n */\n destroy() {\n this.removeAllNodes(), this.listeners.destroy(), this.eventsDispatcher.off(Te, this.close);\n }\n /**\n * Open Block Settings pane\n *\n * @param targetBlock - near which Block we should open BlockSettings\n */\n async open(e = this.Editor.BlockManager.currentBlock) {\n var s;\n this.opened = !0, this.selection.save(), this.Editor.BlockSelection.selectBlock(e), this.Editor.BlockSelection.clearCache();\n const { toolTunes: t, commonTunes: o } = e.getTunes();\n this.eventsDispatcher.emit(this.events.opened);\n const i = be() ? nn : Bt;\n this.popover = new i({\n searchable: !0,\n items: await this.getTunesItems(e, o, t),\n scopeElement: this.Editor.API.methods.ui.nodes.redactor,\n messages: {\n nothingFound: z.ui(K.ui.popover, \"Nothing found\"),\n search: z.ui(K.ui.popover, \"Filter\")\n }\n }), this.popover.on(G.Closed, this.onPopoverClose), (s = this.nodes.wrapper) == null || s.append(this.popover.getElement()), this.popover.show();\n }\n /**\n * Returns root block settings element\n */\n getElement() {\n return this.nodes.wrapper;\n }\n /**\n * Returns list of items to be displayed in block tunes menu.\n * Merges tool specific tunes, conversion menu and common tunes in one list in predefined order\n *\n * @param currentBlock – block we are about to open block tunes for\n * @param commonTunes – common tunes\n * @param toolTunes - tool specific tunes\n */\n async getTunesItems(e, t, o) {\n const i = [];\n o !== void 0 && o.length > 0 && (i.push(...o), i.push({\n type: _.Separator\n }));\n const s = Array.from(this.Editor.Tools.blockTools.values()), a = (await Yo(e, s)).reduce((l, c) => (c.toolbox.forEach((u) => {\n l.push({\n icon: u.icon,\n title: z.t(K.toolNames, u.title),\n name: c.name,\n closeOnActivate: !0,\n onActivate: async () => {\n const { BlockManager: h, Caret: p, Toolbar: g } = this.Editor, f = await h.convert(e, c.name, u.data);\n g.close(), p.setToBlock(f, p.positions.END);\n }\n });\n }), l), []);\n return a.length > 0 && (i.push({\n icon: Go,\n name: \"convert-to\",\n title: z.ui(K.ui.popover, \"Convert to\"),\n children: {\n searchable: !0,\n items: a\n }\n }), i.push({\n type: _.Separator\n })), i.push(...t), i.map((l) => this.resolveTuneAliases(l));\n }\n /**\n * Resolves aliases in tunes menu items\n *\n * @param item - item with resolved aliases\n */\n resolveTuneAliases(e) {\n if (e.type === _.Separator || e.type === _.Html)\n return e;\n const t = Yi(e, { label: \"title\" });\n return e.confirmation && (t.confirmation = this.resolveTuneAliases(e.confirmation)), t;\n }\n}\nvar sn = { exports: {} };\n/*!\n * Library for handling keyboard shortcuts\n * @copyright CodeX (https://codex.so)\n * @license MIT\n * @author CodeX (https://codex.so)\n * @version 1.2.0\n */\n(function(n, e) {\n (function(t, o) {\n n.exports = o();\n })(window, function() {\n return function(t) {\n var o = {};\n function i(s) {\n if (o[s])\n return o[s].exports;\n var r = o[s] = { i: s, l: !1, exports: {} };\n return t[s].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n return i.m = t, i.c = o, i.d = function(s, r, a) {\n i.o(s, r) || Object.defineProperty(s, r, { enumerable: !0, get: a });\n }, i.r = function(s) {\n typeof Symbol < \"u\" && Symbol.toStringTag && Object.defineProperty(s, Symbol.toStringTag, { value: \"Module\" }), Object.defineProperty(s, \"__esModule\", { value: !0 });\n }, i.t = function(s, r) {\n if (1 & r && (s = i(s)), 8 & r || 4 & r && typeof s == \"object\" && s && s.__esModule)\n return s;\n var a = /* @__PURE__ */ Object.create(null);\n if (i.r(a), Object.defineProperty(a, \"default\", { enumerable: !0, value: s }), 2 & r && typeof s != \"string\")\n for (var l in s)\n i.d(a, l, (function(c) {\n return s[c];\n }).bind(null, l));\n return a;\n }, i.n = function(s) {\n var r = s && s.__esModule ? function() {\n return s.default;\n } : function() {\n return s;\n };\n return i.d(r, \"a\", r), r;\n }, i.o = function(s, r) {\n return Object.prototype.hasOwnProperty.call(s, r);\n }, i.p = \"\", i(i.s = 0);\n }([function(t, o, i) {\n function s(l, c) {\n for (var u = 0; u < c.length; u++) {\n var h = c[u];\n h.enumerable = h.enumerable || !1, h.configurable = !0, \"value\" in h && (h.writable = !0), Object.defineProperty(l, h.key, h);\n }\n }\n function r(l, c, u) {\n return c && s(l.prototype, c), u && s(l, u), l;\n }\n i.r(o);\n var a = function() {\n function l(c) {\n var u = this;\n (function(h, p) {\n if (!(h instanceof p))\n throw new TypeError(\"Cannot call a class as a function\");\n })(this, l), this.commands = {}, this.keys = {}, this.name = c.name, this.parseShortcutName(c.name), this.element = c.on, this.callback = c.callback, this.executeShortcut = function(h) {\n u.execute(h);\n }, this.element.addEventListener(\"keydown\", this.executeShortcut, !1);\n }\n return r(l, null, [{ key: \"supportedCommands\", get: function() {\n return { SHIFT: [\"SHIFT\"], CMD: [\"CMD\", \"CONTROL\", \"COMMAND\", \"WINDOWS\", \"CTRL\"], ALT: [\"ALT\", \"OPTION\"] };\n } }, { key: \"keyCodes\", get: function() {\n return { 0: 48, 1: 49, 2: 50, 3: 51, 4: 52, 5: 53, 6: 54, 7: 55, 8: 56, 9: 57, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, BACKSPACE: 8, ENTER: 13, ESCAPE: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, INSERT: 45, DELETE: 46, \".\": 190 };\n } }]), r(l, [{ key: \"parseShortcutName\", value: function(c) {\n c = c.split(\"+\");\n for (var u = 0; u < c.length; u++) {\n c[u] = c[u].toUpperCase();\n var h = !1;\n for (var p in l.supportedCommands)\n if (l.supportedCommands[p].includes(c[u])) {\n h = this.commands[p] = !0;\n break;\n }\n h || (this.keys[c[u]] = !0);\n }\n for (var g in l.supportedCommands)\n this.commands[g] || (this.commands[g] = !1);\n } }, { key: \"execute\", value: function(c) {\n var u, h = { CMD: c.ctrlKey || c.metaKey, SHIFT: c.shiftKey, ALT: c.altKey }, p = !0;\n for (u in this.commands)\n this.commands[u] !== h[u] && (p = !1);\n var g, f = !0;\n for (g in this.keys)\n f = f && c.keyCode === l.keyCodes[g];\n p && f && this.callback(c);\n } }, { key: \"remove\", value: function() {\n this.element.removeEventListener(\"keydown\", this.executeShortcut);\n } }]), l;\n }();\n o.default = a;\n }]).default;\n });\n})(sn);\nvar bs = sn.exports;\nconst vs = /* @__PURE__ */ Ke(bs);\nclass ks {\n constructor() {\n this.registeredShortcuts = /* @__PURE__ */ new Map();\n }\n /**\n * Register shortcut\n *\n * @param shortcut - shortcut options\n */\n add(e) {\n if (this.findShortcut(e.on, e.name))\n throw Error(\n `Shortcut ${e.name} is already registered for ${e.on}. Please remove it before add a new handler.`\n );\n const o = new vs({\n name: e.name,\n on: e.on,\n callback: e.handler\n }), i = this.registeredShortcuts.get(e.on) || [];\n this.registeredShortcuts.set(e.on, [...i, o]);\n }\n /**\n * Remove shortcut\n *\n * @param element - Element shortcut is set for\n * @param name - shortcut name\n */\n remove(e, t) {\n const o = this.findShortcut(e, t);\n if (!o)\n return;\n o.remove();\n const i = this.registeredShortcuts.get(e);\n this.registeredShortcuts.set(e, i.filter((s) => s !== o));\n }\n /**\n * Get Shortcut instance if exist\n *\n * @param element - Element shorcut is set for\n * @param shortcut - shortcut name\n * @returns {number} index - shortcut index if exist\n */\n findShortcut(e, t) {\n return (this.registeredShortcuts.get(e) || []).find(({ name: i }) => i === t);\n }\n}\nconst ge = new ks();\nvar ys = Object.defineProperty, ws = Object.getOwnPropertyDescriptor, rn = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? ws(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && ys(e, t, i), i;\n}, Le = /* @__PURE__ */ ((n) => (n.Opened = \"toolbox-opened\", n.Closed = \"toolbox-closed\", n.BlockAdded = \"toolbox-block-added\", n))(Le || {});\nconst Ct = class an extends Oe {\n /**\n * Toolbox constructor\n *\n * @param options - available parameters\n * @param options.api - Editor API methods\n * @param options.tools - Tools available to check whether some of them should be displayed at the Toolbox or not\n */\n constructor({ api: e, tools: t, i18nLabels: o }) {\n super(), this.opened = !1, this.listeners = new _e(), this.popover = null, this.handleMobileLayoutToggle = () => {\n this.destroyPopover(), this.initPopover();\n }, this.onPopoverClose = () => {\n this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }, this.api = e, this.tools = t, this.i18nLabels = o, this.enableShortcuts(), this.nodes = {\n toolbox: d.make(\"div\", an.CSS.toolbox)\n }, this.initPopover(), this.nodes.toolbox.setAttribute(\"data-cy\", \"toolbox\"), this.api.events.on(Te, this.handleMobileLayoutToggle);\n }\n /**\n * Returns True if Toolbox is Empty and nothing to show\n *\n * @returns {boolean}\n */\n get isEmpty() {\n return this.toolsToBeDisplayed.length === 0;\n }\n /**\n * CSS styles\n */\n static get CSS() {\n return {\n toolbox: \"ce-toolbox\"\n };\n }\n /**\n * Returns root block settings element\n */\n getElement() {\n return this.nodes.toolbox;\n }\n /**\n * Returns true if the Toolbox has the Flipper activated and the Flipper has selected button\n */\n hasFocus() {\n if (this.popover !== null)\n return \"hasFocus\" in this.popover ? this.popover.hasFocus() : void 0;\n }\n /**\n * Destroy Module\n */\n destroy() {\n var e;\n super.destroy(), this.nodes && this.nodes.toolbox && this.nodes.toolbox.remove(), this.removeAllShortcuts(), (e = this.popover) == null || e.off(G.Closed, this.onPopoverClose), this.listeners.destroy(), this.api.events.off(Te, this.handleMobileLayoutToggle);\n }\n /**\n * Toolbox Tool's button click handler\n *\n * @param toolName - tool type to be activated\n * @param blockDataOverrides - Block data predefined by the activated Toolbox item\n */\n toolButtonActivated(e, t) {\n this.insertNewBlock(e, t);\n }\n /**\n * Open Toolbox with Tools\n */\n open() {\n var e;\n this.isEmpty || ((e = this.popover) == null || e.show(), this.opened = !0, this.emit(\n \"toolbox-opened\"\n /* Opened */\n ));\n }\n /**\n * Close Toolbox\n */\n close() {\n var e;\n (e = this.popover) == null || e.hide(), this.opened = !1, this.emit(\n \"toolbox-closed\"\n /* Closed */\n );\n }\n /**\n * Close Toolbox\n */\n toggle() {\n this.opened ? this.close() : this.open();\n }\n /**\n * Creates toolbox popover and appends it inside wrapper element\n */\n initPopover() {\n var t;\n const e = be() ? nn : Bt;\n this.popover = new e({\n scopeElement: this.api.ui.nodes.redactor,\n searchable: !0,\n messages: {\n nothingFound: this.i18nLabels.nothingFound,\n search: this.i18nLabels.filter\n },\n items: this.toolboxItemsToBeDisplayed\n }), this.popover.on(G.Closed, this.onPopoverClose), (t = this.nodes.toolbox) == null || t.append(this.popover.getElement());\n }\n /**\n * Destroys popover instance and removes it from DOM\n */\n destroyPopover() {\n this.popover !== null && (this.popover.hide(), this.popover.off(G.Closed, this.onPopoverClose), this.popover.destroy(), this.popover = null), this.nodes.toolbox !== null && (this.nodes.toolbox.innerHTML = \"\");\n }\n get toolsToBeDisplayed() {\n const e = [];\n return this.tools.forEach((t) => {\n t.toolbox && e.push(t);\n }), e;\n }\n get toolboxItemsToBeDisplayed() {\n const e = (t, o, i = !0) => ({\n icon: t.icon,\n title: z.t(K.toolNames, t.title || je(o.name)),\n name: o.name,\n onActivate: () => {\n this.toolButtonActivated(o.name, t.data);\n },\n secondaryLabel: o.shortcut && i ? vt(o.shortcut) : \"\"\n });\n return this.toolsToBeDisplayed.reduce((t, o) => (Array.isArray(o.toolbox) ? o.toolbox.forEach((i, s) => {\n t.push(e(i, o, s === 0));\n }) : o.toolbox !== void 0 && t.push(e(o.toolbox, o)), t), []);\n }\n /**\n * Iterate all tools and enable theirs shortcuts if specified\n */\n enableShortcuts() {\n this.toolsToBeDisplayed.forEach((e) => {\n const t = e.shortcut;\n t && this.enableShortcutForTool(e.name, t);\n });\n }\n /**\n * Enable shortcut Block Tool implemented shortcut\n *\n * @param {string} toolName - Tool name\n * @param {string} shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcutForTool(e, t) {\n ge.add({\n name: t,\n on: this.api.ui.nodes.redactor,\n handler: async (o) => {\n o.preventDefault();\n const i = this.api.blocks.getCurrentBlockIndex(), s = this.api.blocks.getBlockByIndex(i);\n if (s)\n try {\n const r = await this.api.blocks.convert(s.id, e);\n this.api.caret.setToBlock(r, \"end\");\n return;\n } catch {\n }\n this.insertNewBlock(e);\n }\n });\n }\n /**\n * Removes all added shortcuts\n * Fired when the Read-Only mode is activated\n */\n removeAllShortcuts() {\n this.toolsToBeDisplayed.forEach((e) => {\n const t = e.shortcut;\n t && ge.remove(this.api.ui.nodes.redactor, t);\n });\n }\n /**\n * Inserts new block\n * Can be called when button clicked on Toolbox or by ShortcutData\n *\n * @param {string} toolName - Tool name\n * @param blockDataOverrides - predefined Block data\n */\n async insertNewBlock(e, t) {\n const o = this.api.blocks.getCurrentBlockIndex(), i = this.api.blocks.getBlockByIndex(o);\n if (!i)\n return;\n const s = i.isEmpty ? o : o + 1;\n let r;\n if (t) {\n const l = await this.api.blocks.composeBlockData(e);\n r = Object.assign(l, t);\n }\n const a = this.api.blocks.insert(\n e,\n r,\n void 0,\n s,\n void 0,\n i.isEmpty\n );\n a.call(ee.APPEND_CALLBACK), this.api.caret.setToBlock(s), this.emit(\"toolbox-block-added\", {\n block: a\n }), this.api.toolbar.close();\n }\n};\nrn([\n me\n], Ct.prototype, \"toolsToBeDisplayed\", 1);\nrn([\n me\n], Ct.prototype, \"toolboxItemsToBeDisplayed\", 1);\nlet Es = Ct;\nconst ln = \"block hovered\";\nasync function xs(n, e) {\n const t = navigator.keyboard;\n if (!t)\n return e;\n try {\n return (await t.getLayoutMap()).get(n) || e;\n } catch (o) {\n return console.error(o), e;\n }\n}\nclass Bs extends E {\n /**\n * @class\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.toolboxInstance = null;\n }\n /**\n * CSS styles\n *\n * @returns {object}\n */\n get CSS() {\n return {\n toolbar: \"ce-toolbar\",\n content: \"ce-toolbar__content\",\n actions: \"ce-toolbar__actions\",\n actionsOpened: \"ce-toolbar__actions--opened\",\n toolbarOpened: \"ce-toolbar--opened\",\n openedToolboxHolderModifier: \"codex-editor--toolbox-opened\",\n plusButton: \"ce-toolbar__plus\",\n plusButtonShortcut: \"ce-toolbar__plus-shortcut\",\n settingsToggler: \"ce-toolbar__settings-btn\",\n settingsTogglerHidden: \"ce-toolbar__settings-btn--hidden\"\n };\n }\n /**\n * Returns the Toolbar opening state\n *\n * @returns {boolean}\n */\n get opened() {\n return this.nodes.wrapper.classList.contains(this.CSS.toolbarOpened);\n }\n /**\n * Public interface for accessing the Toolbox\n */\n get toolbox() {\n var e;\n return {\n opened: (e = this.toolboxInstance) == null ? void 0 : e.opened,\n close: () => {\n var t;\n (t = this.toolboxInstance) == null || t.close();\n },\n open: () => {\n if (this.toolboxInstance === null) {\n S(\"toolbox.open() called before initialization is finished\", \"warn\");\n return;\n }\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.toolboxInstance.open();\n },\n toggle: () => {\n if (this.toolboxInstance === null) {\n S(\"toolbox.toggle() called before initialization is finished\", \"warn\");\n return;\n }\n this.toolboxInstance.toggle();\n },\n hasFocus: () => {\n var t;\n return (t = this.toolboxInstance) == null ? void 0 : t.hasFocus();\n }\n };\n }\n /**\n * Block actions appearance manipulations\n */\n get blockActions() {\n return {\n hide: () => {\n this.nodes.actions.classList.remove(this.CSS.actionsOpened);\n },\n show: () => {\n this.nodes.actions.classList.add(this.CSS.actionsOpened);\n }\n };\n }\n /**\n * Methods for working with Block Tunes toggler\n */\n get blockTunesToggler() {\n return {\n hide: () => this.nodes.settingsToggler.classList.add(this.CSS.settingsTogglerHidden),\n show: () => this.nodes.settingsToggler.classList.remove(this.CSS.settingsTogglerHidden)\n };\n }\n /**\n * Toggles read-only mode\n *\n * @param {boolean} readOnlyEnabled - read-only mode\n */\n toggleReadOnly(e) {\n e ? (this.destroy(), this.Editor.BlockSettings.destroy(), this.disableModuleBindings()) : window.requestIdleCallback(() => {\n this.drawUI(), this.enableModuleBindings();\n }, { timeout: 2e3 });\n }\n /**\n * Move Toolbar to the passed (or current) Block\n *\n * @param block - block to move Toolbar near it\n */\n moveAndOpen(e = this.Editor.BlockManager.currentBlock) {\n if (this.toolboxInstance === null) {\n S(\"Can't open Toolbar since Editor initialization is not finished yet\", \"warn\");\n return;\n }\n if (this.toolboxInstance.opened && this.toolboxInstance.close(), this.Editor.BlockSettings.opened && this.Editor.BlockSettings.close(), !e)\n return;\n this.hoveredBlock = e;\n const t = e.holder, { isMobile: o } = this.Editor.UI;\n let i;\n const s = 20, r = e.firstInput, a = t.getBoundingClientRect(), l = r !== void 0 ? r.getBoundingClientRect() : null, c = l !== null ? l.top - a.top : null, u = c !== null ? c > s : void 0;\n if (o)\n i = t.offsetTop + t.offsetHeight;\n else if (r === void 0 || u) {\n const h = parseInt(window.getComputedStyle(e.pluginsContent).paddingTop);\n i = t.offsetTop + h;\n } else {\n const h = li(r), p = parseInt(window.getComputedStyle(this.nodes.plusButton).height, 10), g = 8;\n i = t.offsetTop + h - p + g + c;\n }\n this.nodes.wrapper.style.top = `${Math.floor(i)}px`, this.Editor.BlockManager.blocks.length === 1 && e.isEmpty ? this.blockTunesToggler.hide() : this.blockTunesToggler.show(), this.open();\n }\n /**\n * Close the Toolbar\n */\n close() {\n var e, t;\n this.Editor.ReadOnly.isEnabled || ((e = this.nodes.wrapper) == null || e.classList.remove(this.CSS.toolbarOpened), this.blockActions.hide(), (t = this.toolboxInstance) == null || t.close(), this.Editor.BlockSettings.close(), this.reset());\n }\n /**\n * Reset the Toolbar position to prevent DOM height growth, for example after blocks deletion\n */\n reset() {\n this.nodes.wrapper.style.top = \"unset\";\n }\n /**\n * Open Toolbar with Plus Button and Actions\n *\n * @param {boolean} withBlockActions - by default, Toolbar opens with Block Actions.\n * This flag allows to open Toolbar without Actions.\n */\n open(e = !0) {\n this.nodes.wrapper.classList.add(this.CSS.toolbarOpened), e ? this.blockActions.show() : this.blockActions.hide();\n }\n /**\n * Draws Toolbar elements\n */\n async make() {\n this.nodes.wrapper = d.make(\"div\", this.CSS.toolbar), [\"content\", \"actions\"].forEach((s) => {\n this.nodes[s] = d.make(\"div\", this.CSS[s]);\n }), d.append(this.nodes.wrapper, this.nodes.content), d.append(this.nodes.content, this.nodes.actions), this.nodes.plusButton = d.make(\"div\", this.CSS.plusButton, {\n innerHTML: ts\n }), d.append(this.nodes.actions, this.nodes.plusButton), this.readOnlyMutableListeners.on(this.nodes.plusButton, \"click\", () => {\n $e(!0), this.plusButtonClicked();\n }, !1);\n const e = d.make(\"div\");\n e.appendChild(document.createTextNode(z.ui(K.ui.toolbar.toolbox, \"Add\"))), e.appendChild(d.make(\"div\", this.CSS.plusButtonShortcut, {\n textContent: \"/\"\n })), ze(this.nodes.plusButton, e, {\n hidingDelay: 400\n }), this.nodes.settingsToggler = d.make(\"span\", this.CSS.settingsToggler, {\n innerHTML: es\n }), d.append(this.nodes.actions, this.nodes.settingsToggler);\n const t = d.make(\"div\"), o = d.text(z.ui(K.ui.blockTunes.toggler, \"Click to tune\")), i = await xs(\"Slash\", \"/\");\n t.appendChild(o), t.appendChild(d.make(\"div\", this.CSS.plusButtonShortcut, {\n textContent: vt(`CMD + ${i}`)\n })), ze(this.nodes.settingsToggler, t, {\n hidingDelay: 400\n }), d.append(this.nodes.actions, this.makeToolbox()), d.append(this.nodes.actions, this.Editor.BlockSettings.getElement()), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n }\n /**\n * Creates the Toolbox instance and return it's rendered element\n */\n makeToolbox() {\n return this.toolboxInstance = new Es({\n api: this.Editor.API.methods,\n tools: this.Editor.Tools.blockTools,\n i18nLabels: {\n filter: z.ui(K.ui.popover, \"Filter\"),\n nothingFound: z.ui(K.ui.popover, \"Nothing found\")\n }\n }), this.toolboxInstance.on(Le.Opened, () => {\n this.Editor.UI.nodes.wrapper.classList.add(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(Le.Closed, () => {\n this.Editor.UI.nodes.wrapper.classList.remove(this.CSS.openedToolboxHolderModifier);\n }), this.toolboxInstance.on(Le.BlockAdded, ({ block: e }) => {\n const { BlockManager: t, Caret: o } = this.Editor, i = t.getBlockById(e.id);\n i.inputs.length === 0 && (i === t.lastBlock ? (t.insertAtEnd(), o.setToBlock(t.lastBlock)) : o.setToBlock(t.nextBlock));\n }), this.toolboxInstance.getElement();\n }\n /**\n * Handler for Plus Button\n */\n plusButtonClicked() {\n var e;\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, (e = this.toolboxInstance) == null || e.toggle();\n }\n /**\n * Enable bindings\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(this.nodes.settingsToggler, \"mousedown\", (e) => {\n var t;\n e.stopPropagation(), this.settingsTogglerClicked(), (t = this.toolboxInstance) != null && t.opened && this.toolboxInstance.close(), $e(!0);\n }, !0), be() || this.eventsDispatcher.on(ln, (e) => {\n var t;\n this.Editor.BlockSettings.opened || (t = this.toolboxInstance) != null && t.opened || this.moveAndOpen(e.block);\n });\n }\n /**\n * Disable bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Clicks on the Block Settings toggler\n */\n settingsTogglerClicked() {\n this.Editor.BlockManager.currentBlock = this.hoveredBlock, this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.BlockSettings.open(this.hoveredBlock);\n }\n /**\n * Draws Toolbar UI\n *\n * Toolbar contains BlockSettings and Toolbox.\n * That's why at first we draw its components and then Toolbar itself\n *\n * Steps:\n * - Make Toolbar dependent components like BlockSettings, Toolbox and so on\n * - Make itself and append dependent nodes to itself\n *\n */\n drawUI() {\n this.Editor.BlockSettings.make(), this.make();\n }\n /**\n * Removes all created and saved HTMLElements\n * It is used in Read-Only mode\n */\n destroy() {\n this.removeAllNodes(), this.toolboxInstance && this.toolboxInstance.destroy();\n }\n}\nvar ae = /* @__PURE__ */ ((n) => (n[n.Block = 0] = \"Block\", n[n.Inline = 1] = \"Inline\", n[n.Tune = 2] = \"Tune\", n))(ae || {}), Pe = /* @__PURE__ */ ((n) => (n.Shortcut = \"shortcut\", n.Toolbox = \"toolbox\", n.EnabledInlineTools = \"inlineToolbar\", n.EnabledBlockTunes = \"tunes\", n.Config = \"config\", n))(Pe || {}), cn = /* @__PURE__ */ ((n) => (n.Shortcut = \"shortcut\", n.SanitizeConfig = \"sanitize\", n))(cn || {}), pe = /* @__PURE__ */ ((n) => (n.IsEnabledLineBreaks = \"enableLineBreaks\", n.Toolbox = \"toolbox\", n.ConversionConfig = \"conversionConfig\", n.IsReadOnlySupported = \"isReadOnlySupported\", n.PasteConfig = \"pasteConfig\", n))(pe || {}), We = /* @__PURE__ */ ((n) => (n.IsInline = \"isInline\", n.Title = \"title\", n.IsReadOnlySupported = \"isReadOnlySupported\", n))(We || {}), mt = /* @__PURE__ */ ((n) => (n.IsTune = \"isTune\", n))(mt || {});\nclass Tt {\n /**\n * @class\n * @param {ConstructorOptions} options - Constructor options\n */\n constructor({\n name: e,\n constructable: t,\n config: o,\n api: i,\n isDefault: s,\n isInternal: r = !1,\n defaultPlaceholder: a\n }) {\n this.api = i, this.name = e, this.constructable = t, this.config = o, this.isDefault = s, this.isInternal = r, this.defaultPlaceholder = a;\n }\n /**\n * Returns Tool user configuration\n */\n get settings() {\n const e = this.config.config || {};\n return this.isDefault && !(\"placeholder\" in e) && this.defaultPlaceholder && (e.placeholder = this.defaultPlaceholder), e;\n }\n /**\n * Calls Tool's reset method\n */\n reset() {\n if (A(this.constructable.reset))\n return this.constructable.reset();\n }\n /**\n * Calls Tool's prepare method\n */\n prepare() {\n if (A(this.constructable.prepare))\n return this.constructable.prepare({\n toolName: this.name,\n config: this.settings\n });\n }\n /**\n * Returns shortcut for Tool (internal or specified by user)\n */\n get shortcut() {\n const e = this.constructable.shortcut;\n return this.config.shortcut || e;\n }\n /**\n * Returns Tool's sanitizer configuration\n */\n get sanitizeConfig() {\n return this.constructable.sanitize || {};\n }\n /**\n * Returns true if Tools is inline\n */\n isInline() {\n return this.type === ae.Inline;\n }\n /**\n * Returns true if Tools is block\n */\n isBlock() {\n return this.type === ae.Block;\n }\n /**\n * Returns true if Tools is tune\n */\n isTune() {\n return this.type === ae.Tune;\n }\n}\nclass Cs extends E {\n /**\n * @param moduleConfiguration - Module Configuration\n * @param moduleConfiguration.config - Editor's config\n * @param moduleConfiguration.eventsDispatcher - Editor's event dispatcher\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.CSS = {\n inlineToolbar: \"ce-inline-toolbar\"\n }, this.opened = !1, this.popover = null, this.toolbarVerticalMargin = be() ? 20 : 6, this.tools = /* @__PURE__ */ new Map(), window.requestIdleCallback(() => {\n this.make();\n }, { timeout: 2e3 });\n }\n /**\n * Moving / appearance\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Shows Inline Toolbar if something is selected\n *\n * @param [needToClose] - pass true to close toolbar if it is not allowed.\n * Avoid to use it just for closing IT, better call .close() clearly.\n */\n async tryToShow(e = !1) {\n e && this.close(), this.allowedToShow() && (await this.open(), this.Editor.Toolbar.close());\n }\n /**\n * Hides Inline Toolbar\n */\n close() {\n var e, t;\n if (this.opened) {\n for (const [o, i] of this.tools) {\n const s = this.getToolShortcut(o.name);\n s !== void 0 && ge.remove(this.Editor.UI.nodes.redactor, s), A(i.clear) && i.clear();\n }\n this.tools = /* @__PURE__ */ new Map(), this.reset(), this.opened = !1, (e = this.popover) == null || e.hide(), (t = this.popover) == null || t.destroy(), this.popover = null;\n }\n }\n /**\n * Check if node is contained by Inline Toolbar\n *\n * @param {Node} node — node to check\n */\n containsNode(e) {\n return this.nodes.wrapper === void 0 ? !1 : this.nodes.wrapper.contains(e);\n }\n /**\n * Removes UI and its components\n */\n destroy() {\n var e;\n this.removeAllNodes(), (e = this.popover) == null || e.destroy(), this.popover = null;\n }\n /**\n * Making DOM\n */\n make() {\n this.nodes.wrapper = d.make(\"div\", [\n this.CSS.inlineToolbar,\n ...this.isRtl ? [this.Editor.UI.CSS.editorRtlFix] : []\n ]), this.nodes.wrapper.setAttribute(\"data-cy\", \"inline-toolbar\"), d.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n }\n /**\n * Shows Inline Toolbar\n */\n async open() {\n var t;\n if (this.opened)\n return;\n this.opened = !0, this.popover !== null && this.popover.destroy(), this.createToolsInstances();\n const e = await this.getPopoverItems();\n this.popover = new hs({\n items: e,\n scopeElement: this.Editor.API.methods.ui.nodes.redactor,\n messages: {\n nothingFound: z.ui(K.ui.popover, \"Nothing found\"),\n search: z.ui(K.ui.popover, \"Filter\")\n }\n }), this.move(this.popover.size.width), (t = this.nodes.wrapper) == null || t.append(this.popover.getElement()), this.popover.show();\n }\n /**\n * Move Toolbar to the selected text\n *\n * @param popoverWidth - width of the toolbar popover\n */\n move(e) {\n const t = b.rect, o = this.Editor.UI.nodes.wrapper.getBoundingClientRect(), i = {\n x: t.x - o.x,\n y: t.y + t.height - // + window.scrollY\n o.top + this.toolbarVerticalMargin\n };\n i.x + e + o.x > this.Editor.UI.contentRect.right && (i.x = this.Editor.UI.contentRect.right - e - o.x), this.nodes.wrapper.style.left = Math.floor(i.x) + \"px\", this.nodes.wrapper.style.top = Math.floor(i.y) + \"px\";\n }\n /**\n * Clear orientation classes and reset position\n */\n reset() {\n this.nodes.wrapper.style.left = \"0\", this.nodes.wrapper.style.top = \"0\";\n }\n /**\n * Need to show Inline Toolbar or not\n */\n allowedToShow() {\n const e = [\"IMG\", \"INPUT\"], t = b.get(), o = b.text;\n if (!t || !t.anchorNode || t.isCollapsed || o.length < 1)\n return !1;\n const i = d.isElement(t.anchorNode) ? t.anchorNode : t.anchorNode.parentElement;\n if (i === null || t !== null && e.includes(i.tagName))\n return !1;\n const s = this.Editor.BlockManager.getBlock(t.anchorNode);\n return !s || this.getTools().some((c) => s.tool.inlineTools.has(c.name)) === !1 ? !1 : i.closest(\"[contenteditable]\") !== null;\n }\n /**\n * Working with Tools\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n /**\n * Returns tools that are available for current block\n *\n * Used to check if Inline Toolbar could be shown\n * and to render tools in the Inline Toolbar\n */\n getTools() {\n const e = this.Editor.BlockManager.currentBlock;\n return e ? Array.from(e.tool.inlineTools.values()).filter((o) => !(this.Editor.ReadOnly.isEnabled && o.isReadOnlySupported !== !0)) : [];\n }\n /**\n * Constructs tools instances and saves them to this.tools\n */\n createToolsInstances() {\n this.tools = /* @__PURE__ */ new Map(), this.getTools().forEach((t) => {\n const o = t.create();\n this.tools.set(t, o);\n });\n }\n /**\n * Returns Popover Items for tools segregated by their appearance type: regular items and custom html elements.\n */\n async getPopoverItems() {\n const e = [];\n let t = 0;\n for (const [o, i] of this.tools) {\n const s = await i.render(), r = this.getToolShortcut(o.name);\n if (r !== void 0)\n try {\n this.enableShortcuts(o.name, r);\n } catch {\n }\n const a = r !== void 0 ? vt(r) : void 0, l = z.t(\n K.toolNames,\n o.title || je(o.name)\n );\n [s].flat().forEach((c) => {\n var h, p;\n const u = {\n name: o.name,\n onActivate: () => {\n this.toolClicked(i);\n },\n hint: {\n title: l,\n description: a\n }\n };\n if (d.isElement(c)) {\n const g = {\n ...u,\n element: c,\n type: _.Html\n };\n if (A(i.renderActions)) {\n const f = i.renderActions();\n g.children = {\n isOpen: (h = i.checkState) == null ? void 0 : h.call(i, b.get()),\n /** Disable keyboard navigation in actions, as it might conflict with enter press handling */\n isFlippable: !1,\n items: [\n {\n type: _.Html,\n element: f\n }\n ]\n };\n } else\n (p = i.checkState) == null || p.call(i, b.get());\n e.push(g);\n } else if (c.type === _.Html)\n e.push({\n ...u,\n ...c,\n type: _.Html\n });\n else if (c.type === _.Separator)\n e.push({\n type: _.Separator\n });\n else {\n const g = {\n ...u,\n ...c,\n type: _.Default\n };\n \"children\" in g && t !== 0 && e.push({\n type: _.Separator\n }), e.push(g), \"children\" in g && t < this.tools.size - 1 && e.push({\n type: _.Separator\n });\n }\n }), t++;\n }\n return e;\n }\n /**\n * Get shortcut name for tool\n *\n * @param toolName — Tool name\n */\n getToolShortcut(e) {\n const { Tools: t } = this.Editor, o = t.inlineTools.get(e), i = t.internal.inlineTools;\n return Array.from(i.keys()).includes(e) ? this.inlineTools[e][cn.Shortcut] : o == null ? void 0 : o.shortcut;\n }\n /**\n * Enable Tool shortcut with Editor Shortcuts Module\n *\n * @param toolName - tool name\n * @param shortcut - shortcut according to the ShortcutData Module format\n */\n enableShortcuts(e, t) {\n ge.add({\n name: t,\n handler: (o) => {\n var s;\n const { currentBlock: i } = this.Editor.BlockManager;\n i && i.tool.enabledInlineTools && (o.preventDefault(), (s = this.popover) == null || s.activateItemByName(e));\n },\n /**\n * We need to bind shortcut to the document to make it work in read-only mode\n */\n on: document\n });\n }\n /**\n * Inline Tool button clicks\n *\n * @param tool - Tool's instance\n */\n toolClicked(e) {\n var o;\n const t = b.range;\n (o = e.surround) == null || o.call(e, t), this.checkToolsState();\n }\n /**\n * Check Tools` state by selection\n */\n checkToolsState() {\n var e;\n (e = this.tools) == null || e.forEach((t) => {\n var o;\n (o = t.checkState) == null || o.call(t, b.get());\n });\n }\n /**\n * Get inline tools tools\n * Tools that has isInline is true\n */\n get inlineTools() {\n const e = {};\n return Array.from(this.Editor.Tools.inlineTools.entries()).forEach(([t, o]) => {\n e[t] = o.create();\n }), e;\n }\n}\nfunction dn() {\n const n = window.getSelection();\n if (n === null)\n return [null, 0];\n let e = n.focusNode, t = n.focusOffset;\n return e === null ? [null, 0] : (e.nodeType !== Node.TEXT_NODE && e.childNodes.length > 0 && (e.childNodes[t] ? (e = e.childNodes[t], t = 0) : (e = e.childNodes[t - 1], t = e.textContent.length)), [e, t]);\n}\nfunction un(n, e, t, o) {\n const i = document.createRange();\n o === \"left\" ? (i.setStart(n, 0), i.setEnd(e, t)) : (i.setStart(e, t), i.setEnd(n, n.childNodes.length));\n const s = i.cloneContents(), r = document.createElement(\"div\");\n r.appendChild(s);\n const a = r.textContent || \"\";\n return ai(a);\n}\nfunction Ne(n) {\n const e = d.getDeepestNode(n);\n if (e === null || d.isEmpty(n))\n return !0;\n if (d.isNativeInput(e))\n return e.selectionEnd === 0;\n if (d.isEmpty(n))\n return !0;\n const [t, o] = dn();\n return t === null ? !1 : un(n, t, o, \"left\");\n}\nfunction Re(n) {\n const e = d.getDeepestNode(n, !0);\n if (e === null)\n return !0;\n if (d.isNativeInput(e))\n return e.selectionEnd === e.value.length;\n const [t, o] = dn();\n return t === null ? !1 : un(n, t, o, \"right\");\n}\nvar hn = {}, St = {}, Xe = {}, de = {}, It = {}, Ot = {};\nObject.defineProperty(Ot, \"__esModule\", { value: !0 });\nOt.allInputsSelector = Ts;\nfunction Ts() {\n var n = [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"];\n return \"[contenteditable=true], textarea, input:not([type]), \" + n.map(function(e) {\n return 'input[type=\"'.concat(e, '\"]');\n }).join(\", \");\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.allInputsSelector = void 0;\n var e = Ot;\n Object.defineProperty(n, \"allInputsSelector\", { enumerable: !0, get: function() {\n return e.allInputsSelector;\n } });\n})(It);\nvar ue = {}, _t = {};\nObject.defineProperty(_t, \"__esModule\", { value: !0 });\n_t.isNativeInput = Ss;\nfunction Ss(n) {\n var e = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return n && n.tagName ? e.includes(n.tagName) : !1;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isNativeInput = void 0;\n var e = _t;\n Object.defineProperty(n, \"isNativeInput\", { enumerable: !0, get: function() {\n return e.isNativeInput;\n } });\n})(ue);\nvar pn = {}, Mt = {};\nObject.defineProperty(Mt, \"__esModule\", { value: !0 });\nMt.append = Is;\nfunction Is(n, e) {\n Array.isArray(e) ? e.forEach(function(t) {\n n.appendChild(t);\n }) : n.appendChild(e);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.append = void 0;\n var e = Mt;\n Object.defineProperty(n, \"append\", { enumerable: !0, get: function() {\n return e.append;\n } });\n})(pn);\nvar At = {}, Lt = {};\nObject.defineProperty(Lt, \"__esModule\", { value: !0 });\nLt.blockElements = Os;\nfunction Os() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.blockElements = void 0;\n var e = Lt;\n Object.defineProperty(n, \"blockElements\", { enumerable: !0, get: function() {\n return e.blockElements;\n } });\n})(At);\nvar fn = {}, Pt = {};\nObject.defineProperty(Pt, \"__esModule\", { value: !0 });\nPt.calculateBaseline = _s;\nfunction _s(n) {\n var e = window.getComputedStyle(n), t = parseFloat(e.fontSize), o = parseFloat(e.lineHeight) || t * 1.2, i = parseFloat(e.paddingTop), s = parseFloat(e.borderTopWidth), r = parseFloat(e.marginTop), a = t * 0.8, l = (o - t) / 2, c = r + s + i + l + a;\n return c;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.calculateBaseline = void 0;\n var e = Pt;\n Object.defineProperty(n, \"calculateBaseline\", { enumerable: !0, get: function() {\n return e.calculateBaseline;\n } });\n})(fn);\nvar gn = {}, Nt = {}, Rt = {}, Dt = {};\nObject.defineProperty(Dt, \"__esModule\", { value: !0 });\nDt.isContentEditable = Ms;\nfunction Ms(n) {\n return n.contentEditable === \"true\";\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isContentEditable = void 0;\n var e = Dt;\n Object.defineProperty(n, \"isContentEditable\", { enumerable: !0, get: function() {\n return e.isContentEditable;\n } });\n})(Rt);\nObject.defineProperty(Nt, \"__esModule\", { value: !0 });\nNt.canSetCaret = Ps;\nvar As = ue, Ls = Rt;\nfunction Ps(n) {\n var e = !0;\n if ((0, As.isNativeInput)(n))\n switch (n.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n e = !1;\n break;\n }\n else\n e = (0, Ls.isContentEditable)(n);\n return e;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.canSetCaret = void 0;\n var e = Nt;\n Object.defineProperty(n, \"canSetCaret\", { enumerable: !0, get: function() {\n return e.canSetCaret;\n } });\n})(gn);\nvar Ve = {}, Ft = {};\nfunction Ns(n, e, t) {\n const o = t.value !== void 0 ? \"value\" : \"get\", i = t[o], s = `#${e}Cache`;\n if (t[o] = function(...r) {\n return this[s] === void 0 && (this[s] = i.apply(this, r)), this[s];\n }, o === \"get\" && t.set) {\n const r = t.set;\n t.set = function(a) {\n delete n[s], r.apply(this, a);\n };\n }\n return t;\n}\nfunction mn() {\n const n = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, e = Object.keys(n).find((t) => window.navigator.appVersion.toLowerCase().indexOf(t) !== -1);\n return e !== void 0 && (n[e] = !0), n;\n}\nfunction jt(n) {\n return n != null && n !== \"\" && (typeof n != \"object\" || Object.keys(n).length > 0);\n}\nfunction Rs(n) {\n return !jt(n);\n}\nconst Ds = () => typeof window < \"u\" && window.navigator !== null && jt(window.navigator.platform) && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction Fs(n) {\n const e = mn();\n return n = n.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \"+\"), e.mac ? n = n.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : n = n.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), n;\n}\nfunction js(n) {\n return n[0].toUpperCase() + n.slice(1);\n}\nfunction Hs(n) {\n const e = document.createElement(\"div\");\n e.style.position = \"absolute\", e.style.left = \"-999px\", e.style.bottom = \"-999px\", e.innerHTML = n, document.body.appendChild(e);\n const t = window.getSelection(), o = document.createRange();\n if (o.selectNode(e), t === null)\n throw new Error(\"Cannot copy text to clipboard\");\n t.removeAllRanges(), t.addRange(o), document.execCommand(\"copy\"), document.body.removeChild(e);\n}\nfunction $s(n, e, t) {\n let o;\n return (...i) => {\n const s = this, r = () => {\n o = void 0, t !== !0 && n.apply(s, i);\n }, a = t === !0 && o !== void 0;\n window.clearTimeout(o), o = window.setTimeout(r, e), a && n.apply(s, i);\n };\n}\nfunction oe(n) {\n return Object.prototype.toString.call(n).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction zs(n) {\n return oe(n) === \"boolean\";\n}\nfunction bn(n) {\n return oe(n) === \"function\" || oe(n) === \"asyncfunction\";\n}\nfunction Us(n) {\n return bn(n) && /^\\s*class\\s+/.test(n.toString());\n}\nfunction Ws(n) {\n return oe(n) === \"number\";\n}\nfunction De(n) {\n return oe(n) === \"object\";\n}\nfunction Ys(n) {\n return Promise.resolve(n) === n;\n}\nfunction Ks(n) {\n return oe(n) === \"string\";\n}\nfunction Xs(n) {\n return oe(n) === \"undefined\";\n}\nfunction bt(n, ...e) {\n if (!e.length)\n return n;\n const t = e.shift();\n if (De(n) && De(t))\n for (const o in t)\n De(t[o]) ? (n[o] === void 0 && Object.assign(n, { [o]: {} }), bt(n[o], t[o])) : Object.assign(n, { [o]: t[o] });\n return bt(n, ...e);\n}\nfunction Vs(n, e, t) {\n const o = `«${e}» is deprecated and will be removed in the next major release. Please use the «${t}» instead.`;\n n && console.warn(o);\n}\nfunction qs(n) {\n try {\n return new URL(n).href;\n } catch {\n }\n return n.substring(0, 2) === \"//\" ? window.location.protocol + n : window.location.origin + n;\n}\nfunction Zs(n) {\n return n > 47 && n < 58 || n === 32 || n === 13 || n === 229 || n > 64 && n < 91 || n > 95 && n < 112 || n > 185 && n < 193 || n > 218 && n < 223;\n}\nconst Gs = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91,\n SLASH: 191\n}, Qs = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nlet Js = class {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n * @param operation - promise should be added to queue\n */\n add(e) {\n return new Promise((t, o) => {\n this.completed = this.completed.then(e).then(t).catch(o);\n });\n }\n};\nfunction er(n, e, t = void 0) {\n let o, i, s, r = null, a = 0;\n t || (t = {});\n const l = function() {\n a = t.leading === !1 ? 0 : Date.now(), r = null, s = n.apply(o, i), r === null && (o = i = null);\n };\n return function() {\n const c = Date.now();\n !a && t.leading === !1 && (a = c);\n const u = e - (c - a);\n return o = this, i = arguments, u <= 0 || u > e ? (r && (clearTimeout(r), r = null), a = c, s = n.apply(o, i), r === null && (o = i = null)) : !r && t.trailing !== !1 && (r = setTimeout(l, u)), s;\n };\n}\nconst tr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n PromiseQueue: Js,\n beautifyShortcut: Fs,\n cacheable: Ns,\n capitalize: js,\n copyTextToClipboard: Hs,\n debounce: $s,\n deepMerge: bt,\n deprecationAssert: Vs,\n getUserOS: mn,\n getValidUrl: qs,\n isBoolean: zs,\n isClass: Us,\n isEmpty: Rs,\n isFunction: bn,\n isIosDevice: Ds,\n isNumber: Ws,\n isObject: De,\n isPrintableKey: Zs,\n isPromise: Ys,\n isString: Ks,\n isUndefined: Xs,\n keyCodes: Gs,\n mouseButtons: Qs,\n notEmpty: jt,\n throttle: er,\n typeOf: oe\n}, Symbol.toStringTag, { value: \"Module\" })), Ht = /* @__PURE__ */ Xn(tr);\nObject.defineProperty(Ft, \"__esModule\", { value: !0 });\nFt.containsOnlyInlineElements = ir;\nvar or = Ht, nr = At;\nfunction ir(n) {\n var e;\n (0, or.isString)(n) ? (e = document.createElement(\"div\"), e.innerHTML = n) : e = n;\n var t = function(o) {\n return !(0, nr.blockElements)().includes(o.tagName.toLowerCase()) && Array.from(o.children).every(t);\n };\n return Array.from(e.children).every(t);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.containsOnlyInlineElements = void 0;\n var e = Ft;\n Object.defineProperty(n, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return e.containsOnlyInlineElements;\n } });\n})(Ve);\nvar vn = {}, $t = {}, qe = {}, zt = {};\nObject.defineProperty(zt, \"__esModule\", { value: !0 });\nzt.make = sr;\nfunction sr(n, e, t) {\n var o;\n e === void 0 && (e = null), t === void 0 && (t = {});\n var i = document.createElement(n);\n if (Array.isArray(e)) {\n var s = e.filter(function(a) {\n return a !== void 0;\n });\n (o = i.classList).add.apply(o, s);\n } else\n e !== null && i.classList.add(e);\n for (var r in t)\n Object.prototype.hasOwnProperty.call(t, r) && (i[r] = t[r]);\n return i;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.make = void 0;\n var e = zt;\n Object.defineProperty(n, \"make\", { enumerable: !0, get: function() {\n return e.make;\n } });\n})(qe);\nObject.defineProperty($t, \"__esModule\", { value: !0 });\n$t.fragmentToString = ar;\nvar rr = qe;\nfunction ar(n) {\n var e = (0, rr.make)(\"div\");\n return e.appendChild(n), e.innerHTML;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.fragmentToString = void 0;\n var e = $t;\n Object.defineProperty(n, \"fragmentToString\", { enumerable: !0, get: function() {\n return e.fragmentToString;\n } });\n})(vn);\nvar kn = {}, Ut = {};\nObject.defineProperty(Ut, \"__esModule\", { value: !0 });\nUt.getContentLength = cr;\nvar lr = ue;\nfunction cr(n) {\n var e, t;\n return (0, lr.isNativeInput)(n) ? n.value.length : n.nodeType === Node.TEXT_NODE ? n.length : (t = (e = n.textContent) === null || e === void 0 ? void 0 : e.length) !== null && t !== void 0 ? t : 0;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getContentLength = void 0;\n var e = Ut;\n Object.defineProperty(n, \"getContentLength\", { enumerable: !0, get: function() {\n return e.getContentLength;\n } });\n})(kn);\nvar Wt = {}, Yt = {}, Io = Ce && Ce.__spreadArray || function(n, e, t) {\n if (t || arguments.length === 2)\n for (var o = 0, i = e.length, s; o < i; o++)\n (s || !(o in e)) && (s || (s = Array.prototype.slice.call(e, 0, o)), s[o] = e[o]);\n return n.concat(s || Array.prototype.slice.call(e));\n};\nObject.defineProperty(Yt, \"__esModule\", { value: !0 });\nYt.getDeepestBlockElements = yn;\nvar dr = Ve;\nfunction yn(n) {\n return (0, dr.containsOnlyInlineElements)(n) ? [n] : Array.from(n.children).reduce(function(e, t) {\n return Io(Io([], e, !0), yn(t), !0);\n }, []);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getDeepestBlockElements = void 0;\n var e = Yt;\n Object.defineProperty(n, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return e.getDeepestBlockElements;\n } });\n})(Wt);\nvar wn = {}, Kt = {}, Ze = {}, Xt = {};\nObject.defineProperty(Xt, \"__esModule\", { value: !0 });\nXt.isLineBreakTag = ur;\nfunction ur(n) {\n return [\n \"BR\",\n \"WBR\"\n ].includes(n.tagName);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isLineBreakTag = void 0;\n var e = Xt;\n Object.defineProperty(n, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return e.isLineBreakTag;\n } });\n})(Ze);\nvar Ge = {}, Vt = {};\nObject.defineProperty(Vt, \"__esModule\", { value: !0 });\nVt.isSingleTag = hr;\nfunction hr(n) {\n return [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(n.tagName);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isSingleTag = void 0;\n var e = Vt;\n Object.defineProperty(n, \"isSingleTag\", { enumerable: !0, get: function() {\n return e.isSingleTag;\n } });\n})(Ge);\nObject.defineProperty(Kt, \"__esModule\", { value: !0 });\nKt.getDeepestNode = En;\nvar pr = ue, fr = Ze, gr = Ge;\nfunction En(n, e) {\n e === void 0 && (e = !1);\n var t = e ? \"lastChild\" : \"firstChild\", o = e ? \"previousSibling\" : \"nextSibling\";\n if (n.nodeType === Node.ELEMENT_NODE && n[t]) {\n var i = n[t];\n if ((0, gr.isSingleTag)(i) && !(0, pr.isNativeInput)(i) && !(0, fr.isLineBreakTag)(i))\n if (i[o])\n i = i[o];\n else if (i.parentNode !== null && i.parentNode[o])\n i = i.parentNode[o];\n else\n return i.parentNode;\n return En(i, e);\n }\n return n;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getDeepestNode = void 0;\n var e = Kt;\n Object.defineProperty(n, \"getDeepestNode\", { enumerable: !0, get: function() {\n return e.getDeepestNode;\n } });\n})(wn);\nvar xn = {}, qt = {}, Me = Ce && Ce.__spreadArray || function(n, e, t) {\n if (t || arguments.length === 2)\n for (var o = 0, i = e.length, s; o < i; o++)\n (s || !(o in e)) && (s || (s = Array.prototype.slice.call(e, 0, o)), s[o] = e[o]);\n return n.concat(s || Array.prototype.slice.call(e));\n};\nObject.defineProperty(qt, \"__esModule\", { value: !0 });\nqt.findAllInputs = yr;\nvar mr = Ve, br = Wt, vr = It, kr = ue;\nfunction yr(n) {\n return Array.from(n.querySelectorAll((0, vr.allInputsSelector)())).reduce(function(e, t) {\n return (0, kr.isNativeInput)(t) || (0, mr.containsOnlyInlineElements)(t) ? Me(Me([], e, !0), [t], !1) : Me(Me([], e, !0), (0, br.getDeepestBlockElements)(t), !0);\n }, []);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.findAllInputs = void 0;\n var e = qt;\n Object.defineProperty(n, \"findAllInputs\", { enumerable: !0, get: function() {\n return e.findAllInputs;\n } });\n})(xn);\nvar Bn = {}, Zt = {};\nObject.defineProperty(Zt, \"__esModule\", { value: !0 });\nZt.isCollapsedWhitespaces = wr;\nfunction wr(n) {\n return !/[^\\t\\n\\r ]/.test(n);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isCollapsedWhitespaces = void 0;\n var e = Zt;\n Object.defineProperty(n, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return e.isCollapsedWhitespaces;\n } });\n})(Bn);\nvar Gt = {}, Qt = {};\nObject.defineProperty(Qt, \"__esModule\", { value: !0 });\nQt.isElement = xr;\nvar Er = Ht;\nfunction xr(n) {\n return (0, Er.isNumber)(n) ? !1 : !!n && !!n.nodeType && n.nodeType === Node.ELEMENT_NODE;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isElement = void 0;\n var e = Qt;\n Object.defineProperty(n, \"isElement\", { enumerable: !0, get: function() {\n return e.isElement;\n } });\n})(Gt);\nvar Cn = {}, Jt = {}, eo = {}, to = {};\nObject.defineProperty(to, \"__esModule\", { value: !0 });\nto.isLeaf = Br;\nfunction Br(n) {\n return n === null ? !1 : n.childNodes.length === 0;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isLeaf = void 0;\n var e = to;\n Object.defineProperty(n, \"isLeaf\", { enumerable: !0, get: function() {\n return e.isLeaf;\n } });\n})(eo);\nvar oo = {}, no = {};\nObject.defineProperty(no, \"__esModule\", { value: !0 });\nno.isNodeEmpty = Or;\nvar Cr = Ze, Tr = Gt, Sr = ue, Ir = Ge;\nfunction Or(n, e) {\n var t = \"\";\n return (0, Ir.isSingleTag)(n) && !(0, Cr.isLineBreakTag)(n) ? !1 : ((0, Tr.isElement)(n) && (0, Sr.isNativeInput)(n) ? t = n.value : n.textContent !== null && (t = n.textContent.replace(\"​\", \"\")), e !== void 0 && (t = t.replace(new RegExp(e, \"g\"), \"\")), t.trim().length === 0);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isNodeEmpty = void 0;\n var e = no;\n Object.defineProperty(n, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return e.isNodeEmpty;\n } });\n})(oo);\nObject.defineProperty(Jt, \"__esModule\", { value: !0 });\nJt.isEmpty = Ar;\nvar _r = eo, Mr = oo;\nfunction Ar(n, e) {\n n.normalize();\n for (var t = [n]; t.length > 0; ) {\n var o = t.shift();\n if (o) {\n if (n = o, (0, _r.isLeaf)(n) && !(0, Mr.isNodeEmpty)(n, e))\n return !1;\n t.push.apply(t, Array.from(n.childNodes));\n }\n }\n return !0;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isEmpty = void 0;\n var e = Jt;\n Object.defineProperty(n, \"isEmpty\", { enumerable: !0, get: function() {\n return e.isEmpty;\n } });\n})(Cn);\nvar Tn = {}, io = {};\nObject.defineProperty(io, \"__esModule\", { value: !0 });\nio.isFragment = Pr;\nvar Lr = Ht;\nfunction Pr(n) {\n return (0, Lr.isNumber)(n) ? !1 : !!n && !!n.nodeType && n.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isFragment = void 0;\n var e = io;\n Object.defineProperty(n, \"isFragment\", { enumerable: !0, get: function() {\n return e.isFragment;\n } });\n})(Tn);\nvar Sn = {}, so = {};\nObject.defineProperty(so, \"__esModule\", { value: !0 });\nso.isHTMLString = Rr;\nvar Nr = qe;\nfunction Rr(n) {\n var e = (0, Nr.make)(\"div\");\n return e.innerHTML = n, e.childElementCount > 0;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isHTMLString = void 0;\n var e = so;\n Object.defineProperty(n, \"isHTMLString\", { enumerable: !0, get: function() {\n return e.isHTMLString;\n } });\n})(Sn);\nvar In = {}, ro = {};\nObject.defineProperty(ro, \"__esModule\", { value: !0 });\nro.offset = Dr;\nfunction Dr(n) {\n var e = n.getBoundingClientRect(), t = window.pageXOffset || document.documentElement.scrollLeft, o = window.pageYOffset || document.documentElement.scrollTop, i = e.top + o, s = e.left + t;\n return {\n top: i,\n left: s,\n bottom: i + e.height,\n right: s + e.width\n };\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.offset = void 0;\n var e = ro;\n Object.defineProperty(n, \"offset\", { enumerable: !0, get: function() {\n return e.offset;\n } });\n})(In);\nvar On = {}, ao = {};\nObject.defineProperty(ao, \"__esModule\", { value: !0 });\nao.prepend = Fr;\nfunction Fr(n, e) {\n Array.isArray(e) ? (e = e.reverse(), e.forEach(function(t) {\n return n.prepend(t);\n })) : n.prepend(e);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.prepend = void 0;\n var e = ao;\n Object.defineProperty(n, \"prepend\", { enumerable: !0, get: function() {\n return e.prepend;\n } });\n})(On);\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.prepend = n.offset = n.make = n.isLineBreakTag = n.isSingleTag = n.isNodeEmpty = n.isLeaf = n.isHTMLString = n.isFragment = n.isEmpty = n.isElement = n.isContentEditable = n.isCollapsedWhitespaces = n.findAllInputs = n.isNativeInput = n.allInputsSelector = n.getDeepestNode = n.getDeepestBlockElements = n.getContentLength = n.fragmentToString = n.containsOnlyInlineElements = n.canSetCaret = n.calculateBaseline = n.blockElements = n.append = void 0;\n var e = It;\n Object.defineProperty(n, \"allInputsSelector\", { enumerable: !0, get: function() {\n return e.allInputsSelector;\n } });\n var t = ue;\n Object.defineProperty(n, \"isNativeInput\", { enumerable: !0, get: function() {\n return t.isNativeInput;\n } });\n var o = pn;\n Object.defineProperty(n, \"append\", { enumerable: !0, get: function() {\n return o.append;\n } });\n var i = At;\n Object.defineProperty(n, \"blockElements\", { enumerable: !0, get: function() {\n return i.blockElements;\n } });\n var s = fn;\n Object.defineProperty(n, \"calculateBaseline\", { enumerable: !0, get: function() {\n return s.calculateBaseline;\n } });\n var r = gn;\n Object.defineProperty(n, \"canSetCaret\", { enumerable: !0, get: function() {\n return r.canSetCaret;\n } });\n var a = Ve;\n Object.defineProperty(n, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return a.containsOnlyInlineElements;\n } });\n var l = vn;\n Object.defineProperty(n, \"fragmentToString\", { enumerable: !0, get: function() {\n return l.fragmentToString;\n } });\n var c = kn;\n Object.defineProperty(n, \"getContentLength\", { enumerable: !0, get: function() {\n return c.getContentLength;\n } });\n var u = Wt;\n Object.defineProperty(n, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return u.getDeepestBlockElements;\n } });\n var h = wn;\n Object.defineProperty(n, \"getDeepestNode\", { enumerable: !0, get: function() {\n return h.getDeepestNode;\n } });\n var p = xn;\n Object.defineProperty(n, \"findAllInputs\", { enumerable: !0, get: function() {\n return p.findAllInputs;\n } });\n var g = Bn;\n Object.defineProperty(n, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return g.isCollapsedWhitespaces;\n } });\n var f = Rt;\n Object.defineProperty(n, \"isContentEditable\", { enumerable: !0, get: function() {\n return f.isContentEditable;\n } });\n var v = Gt;\n Object.defineProperty(n, \"isElement\", { enumerable: !0, get: function() {\n return v.isElement;\n } });\n var O = Cn;\n Object.defineProperty(n, \"isEmpty\", { enumerable: !0, get: function() {\n return O.isEmpty;\n } });\n var T = Tn;\n Object.defineProperty(n, \"isFragment\", { enumerable: !0, get: function() {\n return T.isFragment;\n } });\n var M = Sn;\n Object.defineProperty(n, \"isHTMLString\", { enumerable: !0, get: function() {\n return M.isHTMLString;\n } });\n var q = eo;\n Object.defineProperty(n, \"isLeaf\", { enumerable: !0, get: function() {\n return q.isLeaf;\n } });\n var F = oo;\n Object.defineProperty(n, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return F.isNodeEmpty;\n } });\n var H = Ze;\n Object.defineProperty(n, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return H.isLineBreakTag;\n } });\n var Q = Ge;\n Object.defineProperty(n, \"isSingleTag\", { enumerable: !0, get: function() {\n return Q.isSingleTag;\n } });\n var ie = qe;\n Object.defineProperty(n, \"make\", { enumerable: !0, get: function() {\n return ie.make;\n } });\n var k = In;\n Object.defineProperty(n, \"offset\", { enumerable: !0, get: function() {\n return k.offset;\n } });\n var m = On;\n Object.defineProperty(n, \"prepend\", { enumerable: !0, get: function() {\n return m.prepend;\n } });\n})(de);\nvar Qe = {};\nObject.defineProperty(Qe, \"__esModule\", { value: !0 });\nQe.getContenteditableSlice = Hr;\nvar jr = de;\nfunction Hr(n, e, t, o, i) {\n var s;\n i === void 0 && (i = !1);\n var r = document.createRange();\n if (o === \"left\" ? (r.setStart(n, 0), r.setEnd(e, t)) : (r.setStart(e, t), r.setEnd(n, n.childNodes.length)), i === !0) {\n var a = r.extractContents();\n return (0, jr.fragmentToString)(a);\n }\n var l = r.cloneContents(), c = document.createElement(\"div\");\n c.appendChild(l);\n var u = (s = c.textContent) !== null && s !== void 0 ? s : \"\";\n return u;\n}\nObject.defineProperty(Xe, \"__esModule\", { value: !0 });\nXe.checkContenteditableSliceForEmptiness = Ur;\nvar $r = de, zr = Qe;\nfunction Ur(n, e, t, o) {\n var i = (0, zr.getContenteditableSlice)(n, e, t, o);\n return (0, $r.isCollapsedWhitespaces)(i);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.checkContenteditableSliceForEmptiness = void 0;\n var e = Xe;\n Object.defineProperty(n, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return e.checkContenteditableSliceForEmptiness;\n } });\n})(St);\nvar _n = {};\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getContenteditableSlice = void 0;\n var e = Qe;\n Object.defineProperty(n, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return e.getContenteditableSlice;\n } });\n})(_n);\nvar Mn = {}, lo = {};\nObject.defineProperty(lo, \"__esModule\", { value: !0 });\nlo.focus = Yr;\nvar Wr = de;\nfunction Yr(n, e) {\n var t, o;\n if (e === void 0 && (e = !0), (0, Wr.isNativeInput)(n)) {\n n.focus();\n var i = e ? 0 : n.value.length;\n n.setSelectionRange(i, i);\n } else {\n var s = document.createRange(), r = window.getSelection();\n if (!r)\n return;\n var a = function(p) {\n var g = document.createTextNode(\"\");\n p.appendChild(g), s.setStart(g, 0), s.setEnd(g, 0);\n }, l = function(p) {\n return p != null;\n }, c = n.childNodes, u = e ? c[0] : c[c.length - 1];\n if (l(u)) {\n for (; l(u) && u.nodeType !== Node.TEXT_NODE; )\n u = e ? u.firstChild : u.lastChild;\n if (l(u) && u.nodeType === Node.TEXT_NODE) {\n var h = (o = (t = u.textContent) === null || t === void 0 ? void 0 : t.length) !== null && o !== void 0 ? o : 0, i = e ? 0 : h;\n s.setStart(u, i), s.setEnd(u, i);\n } else\n a(n);\n } else\n a(n);\n r.removeAllRanges(), r.addRange(s);\n }\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.focus = void 0;\n var e = lo;\n Object.defineProperty(n, \"focus\", { enumerable: !0, get: function() {\n return e.focus;\n } });\n})(Mn);\nvar co = {}, Je = {};\nObject.defineProperty(Je, \"__esModule\", { value: !0 });\nJe.getCaretNodeAndOffset = Kr;\nfunction Kr() {\n var n = window.getSelection();\n if (n === null)\n return [null, 0];\n var e = n.focusNode, t = n.focusOffset;\n return e === null ? [null, 0] : (e.nodeType !== Node.TEXT_NODE && e.childNodes.length > 0 && (e.childNodes[t] !== void 0 ? (e = e.childNodes[t], t = 0) : (e = e.childNodes[t - 1], e.textContent !== null && (t = e.textContent.length))), [e, t]);\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getCaretNodeAndOffset = void 0;\n var e = Je;\n Object.defineProperty(n, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return e.getCaretNodeAndOffset;\n } });\n})(co);\nvar An = {}, et = {};\nObject.defineProperty(et, \"__esModule\", { value: !0 });\net.getRange = Xr;\nfunction Xr() {\n var n = window.getSelection();\n return n && n.rangeCount ? n.getRangeAt(0) : null;\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.getRange = void 0;\n var e = et;\n Object.defineProperty(n, \"getRange\", { enumerable: !0, get: function() {\n return e.getRange;\n } });\n})(An);\nvar Ln = {}, uo = {};\nObject.defineProperty(uo, \"__esModule\", { value: !0 });\nuo.isCaretAtEndOfInput = Zr;\nvar Oo = de, Vr = co, qr = St;\nfunction Zr(n) {\n var e = (0, Oo.getDeepestNode)(n, !0);\n if (e === null)\n return !0;\n if ((0, Oo.isNativeInput)(e))\n return e.selectionEnd === e.value.length;\n var t = (0, Vr.getCaretNodeAndOffset)(), o = t[0], i = t[1];\n return o === null ? !1 : (0, qr.checkContenteditableSliceForEmptiness)(n, o, i, \"right\");\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isCaretAtEndOfInput = void 0;\n var e = uo;\n Object.defineProperty(n, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return e.isCaretAtEndOfInput;\n } });\n})(Ln);\nvar Pn = {}, ho = {};\nObject.defineProperty(ho, \"__esModule\", { value: !0 });\nho.isCaretAtStartOfInput = Jr;\nvar Ae = de, Gr = Je, Qr = Xe;\nfunction Jr(n) {\n var e = (0, Ae.getDeepestNode)(n);\n if (e === null || (0, Ae.isEmpty)(n))\n return !0;\n if ((0, Ae.isNativeInput)(e))\n return e.selectionEnd === 0;\n if ((0, Ae.isEmpty)(n))\n return !0;\n var t = (0, Gr.getCaretNodeAndOffset)(), o = t[0], i = t[1];\n return o === null ? !1 : (0, Qr.checkContenteditableSliceForEmptiness)(n, o, i, \"left\");\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.isCaretAtStartOfInput = void 0;\n var e = ho;\n Object.defineProperty(n, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return e.isCaretAtStartOfInput;\n } });\n})(Pn);\nvar Nn = {}, po = {};\nObject.defineProperty(po, \"__esModule\", { value: !0 });\npo.save = oa;\nvar ea = de, ta = et;\nfunction oa() {\n var n = (0, ta.getRange)(), e = (0, ea.make)(\"span\");\n if (e.id = \"cursor\", e.hidden = !0, !!n)\n return n.insertNode(e), function() {\n var o = window.getSelection();\n o && (n.setStartAfter(e), n.setEndAfter(e), o.removeAllRanges(), o.addRange(n), setTimeout(function() {\n e.remove();\n }, 150));\n };\n}\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.save = void 0;\n var e = po;\n Object.defineProperty(n, \"save\", { enumerable: !0, get: function() {\n return e.save;\n } });\n})(Nn);\n(function(n) {\n Object.defineProperty(n, \"__esModule\", { value: !0 }), n.save = n.isCaretAtStartOfInput = n.isCaretAtEndOfInput = n.getRange = n.getCaretNodeAndOffset = n.focus = n.getContenteditableSlice = n.checkContenteditableSliceForEmptiness = void 0;\n var e = St;\n Object.defineProperty(n, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return e.checkContenteditableSliceForEmptiness;\n } });\n var t = _n;\n Object.defineProperty(n, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return t.getContenteditableSlice;\n } });\n var o = Mn;\n Object.defineProperty(n, \"focus\", { enumerable: !0, get: function() {\n return o.focus;\n } });\n var i = co;\n Object.defineProperty(n, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return i.getCaretNodeAndOffset;\n } });\n var s = An;\n Object.defineProperty(n, \"getRange\", { enumerable: !0, get: function() {\n return s.getRange;\n } });\n var r = Ln;\n Object.defineProperty(n, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return r.isCaretAtEndOfInput;\n } });\n var a = Pn;\n Object.defineProperty(n, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return a.isCaretAtStartOfInput;\n } });\n var l = Nn;\n Object.defineProperty(n, \"save\", { enumerable: !0, get: function() {\n return l.save;\n } });\n})(hn);\nclass na extends E {\n /**\n * All keydowns on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n keydown(e) {\n switch (this.beforeKeydownProcessing(e), e.keyCode) {\n case y.BACKSPACE:\n this.backspace(e);\n break;\n case y.DELETE:\n this.delete(e);\n break;\n case y.ENTER:\n this.enter(e);\n break;\n case y.DOWN:\n case y.RIGHT:\n this.arrowRightAndDown(e);\n break;\n case y.UP:\n case y.LEFT:\n this.arrowLeftAndUp(e);\n break;\n case y.TAB:\n this.tabPressed(e);\n break;\n }\n e.key === \"/\" && !e.ctrlKey && !e.metaKey && this.slashPressed(e), e.code === \"Slash\" && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this.commandSlashPressed());\n }\n /**\n * Fires on keydown before event processing\n *\n * @param {KeyboardEvent} event - keydown\n */\n beforeKeydownProcessing(e) {\n this.needToolbarClosing(e) && Po(e.keyCode) && (this.Editor.Toolbar.close(), e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || this.Editor.BlockSelection.clearSelection(e));\n }\n /**\n * Key up on Block:\n * - shows Inline Toolbar if something selected\n * - shows conversion toolbar with 85% of block selection\n *\n * @param {KeyboardEvent} event - keyup event\n */\n keyup(e) {\n e.shiftKey || this.Editor.UI.checkEmptiness();\n }\n /**\n * Add drop target styles\n *\n * @param {DragEvent} event - drag over event\n */\n dragOver(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !0;\n }\n /**\n * Remove drop target style\n *\n * @param {DragEvent} event - drag leave event\n */\n dragLeave(e) {\n const t = this.Editor.BlockManager.getBlockByChildNode(e.target);\n t.dropTarget = !1;\n }\n /**\n * Copying selected blocks\n * Before putting to the clipboard we sanitize all blocks and then copy to the clipboard\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandC(e) {\n const { BlockSelection: t } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e);\n }\n /**\n * Copy and Delete selected Blocks\n *\n * @param {ClipboardEvent} event - clipboard event\n */\n handleCommandX(e) {\n const { BlockSelection: t, BlockManager: o, Caret: i } = this.Editor;\n t.anyBlockSelected && t.copySelectedBlocks(e).then(() => {\n const s = o.removeSelectedBlocks(), r = o.insertDefaultBlockAtIndex(s, !0);\n i.setToBlock(r, i.positions.START), t.clearSelection(e);\n });\n }\n /**\n * Tab pressed inside a Block.\n *\n * @param {KeyboardEvent} event - keydown\n */\n tabPressed(e) {\n const { InlineToolbar: t, Caret: o } = this.Editor;\n if (t.opened)\n return;\n (e.shiftKey ? o.navigatePrevious(!0) : o.navigateNext(!0)) && e.preventDefault();\n }\n /**\n * '/' + 'command' keydown inside a Block\n */\n commandSlashPressed() {\n this.Editor.BlockSelection.selectedBlocks.length > 1 || this.activateBlockSettings();\n }\n /**\n * '/' keydown inside a Block\n *\n * @param event - keydown\n */\n slashPressed(e) {\n this.Editor.BlockManager.currentBlock.isEmpty && (e.preventDefault(), this.Editor.Caret.insertContentAtCaretPosition(\"/\"), this.activateToolbox());\n }\n /**\n * ENTER pressed on block\n *\n * @param {KeyboardEvent} event - keydown\n */\n enter(e) {\n const { BlockManager: t, UI: o } = this.Editor, i = t.currentBlock;\n if (i === void 0 || i.tool.isLineBreaksEnabled || o.someToolbarOpened && o.someFlipperButtonFocused || e.shiftKey && !pt)\n return;\n let s = i;\n i.currentInput !== void 0 && Ne(i.currentInput) && !i.hasMedia ? this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex) : i.currentInput && Re(i.currentInput) ? s = this.Editor.BlockManager.insertDefaultBlockAtIndex(this.Editor.BlockManager.currentBlockIndex + 1) : s = this.Editor.BlockManager.split(), this.Editor.Caret.setToBlock(s), this.Editor.Toolbar.moveAndOpen(s), e.preventDefault();\n }\n /**\n * Handle backspace keydown on Block\n *\n * @param {KeyboardEvent} event - keydown\n */\n backspace(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, previousBlock: s } = t;\n if (i === void 0 || !b.isCollapsed || !i.currentInput || !Ne(i.currentInput))\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.firstInput)) {\n o.navigatePrevious();\n return;\n }\n if (s === null)\n return;\n if (s.isEmpty) {\n t.removeBlock(s);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i);\n const l = t.currentBlock;\n o.setToBlock(l, o.positions.END);\n return;\n }\n xo(s, i) ? this.mergeBlocks(s, i) : o.setToBlock(s, o.positions.END);\n }\n /**\n * Handles delete keydown on Block\n * Removes char after the caret.\n * If caret is at the end of the block, merge next block with current\n *\n * @param {KeyboardEvent} event - keydown\n */\n delete(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { currentBlock: i, nextBlock: s } = t;\n if (!b.isCollapsed || !Re(i.currentInput))\n return;\n if (e.preventDefault(), this.Editor.Toolbar.close(), !(i.currentInput === i.lastInput)) {\n o.navigateNext();\n return;\n }\n if (s === null)\n return;\n if (s.isEmpty) {\n t.removeBlock(s);\n return;\n }\n if (i.isEmpty) {\n t.removeBlock(i), o.setToBlock(s, o.positions.START);\n return;\n }\n xo(i, s) ? this.mergeBlocks(i, s) : o.setToBlock(s, o.positions.START);\n }\n /**\n * Merge passed Blocks\n *\n * @param targetBlock - to which Block we want to merge\n * @param blockToMerge - what Block we want to merge\n */\n mergeBlocks(e, t) {\n const { BlockManager: o, Toolbar: i } = this.Editor;\n e.lastInput !== void 0 && (hn.focus(e.lastInput, !1), o.mergeBlocks(e, t).then(() => {\n i.close();\n }));\n }\n /**\n * Handle right and down keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowRightAndDown(e) {\n const t = ce.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === y.TAB);\n if (this.Editor.UI.someToolbarOpened && t)\n return;\n this.Editor.Toolbar.close();\n const { currentBlock: o } = this.Editor.BlockManager, s = ((o == null ? void 0 : o.currentInput) !== void 0 ? Re(o.currentInput) : void 0) || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === y.DOWN && s) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState();\n return;\n }\n if (e.keyCode === y.DOWN || e.keyCode === y.RIGHT && !this.isRtl ? this.Editor.Caret.navigateNext() : this.Editor.Caret.navigatePrevious()) {\n e.preventDefault();\n return;\n }\n Fe(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Handle left and up keyboard keys\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n arrowLeftAndUp(e) {\n if (this.Editor.UI.someToolbarOpened) {\n if (ce.usedKeys.includes(e.keyCode) && (!e.shiftKey || e.keyCode === y.TAB))\n return;\n this.Editor.UI.closeAllToolbars();\n }\n this.Editor.Toolbar.close();\n const { currentBlock: t } = this.Editor.BlockManager, i = ((t == null ? void 0 : t.currentInput) !== void 0 ? Ne(t.currentInput) : void 0) || this.Editor.BlockSelection.anyBlockSelected;\n if (e.shiftKey && e.keyCode === y.UP && i) {\n this.Editor.CrossBlockSelection.toggleBlockSelectedState(!1);\n return;\n }\n if (e.keyCode === y.UP || e.keyCode === y.LEFT && !this.isRtl ? this.Editor.Caret.navigatePrevious() : this.Editor.Caret.navigateNext()) {\n e.preventDefault();\n return;\n }\n Fe(() => {\n this.Editor.BlockManager.currentBlock && this.Editor.BlockManager.currentBlock.updateCurrentInput();\n }, 20)(), this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Cases when we need to close Toolbar\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n needToolbarClosing(e) {\n const t = e.keyCode === y.ENTER && this.Editor.Toolbar.toolbox.opened, o = e.keyCode === y.ENTER && this.Editor.BlockSettings.opened, i = e.keyCode === y.ENTER && this.Editor.InlineToolbar.opened, s = e.keyCode === y.TAB;\n return !(e.shiftKey || s || t || o || i);\n }\n /**\n * If Toolbox is not open, then just open it and show plus button\n */\n activateToolbox() {\n this.Editor.Toolbar.opened || this.Editor.Toolbar.moveAndOpen(), this.Editor.Toolbar.toolbox.open();\n }\n /**\n * Open Toolbar and show BlockSettings before flipping Tools\n */\n activateBlockSettings() {\n this.Editor.Toolbar.opened || this.Editor.Toolbar.moveAndOpen(), this.Editor.BlockSettings.opened || this.Editor.BlockSettings.open();\n }\n}\nclass ct {\n /**\n * @class\n * @param {HTMLElement} workingArea — editor`s working node\n */\n constructor(e) {\n this.blocks = [], this.workingArea = e;\n }\n /**\n * Get length of Block instances array\n *\n * @returns {number}\n */\n get length() {\n return this.blocks.length;\n }\n /**\n * Get Block instances array\n *\n * @returns {Block[]}\n */\n get array() {\n return this.blocks;\n }\n /**\n * Get blocks html elements array\n *\n * @returns {HTMLElement[]}\n */\n get nodes() {\n return No(this.workingArea.children);\n }\n /**\n * Proxy trap to implement array-like setter\n *\n * @example\n * blocks[0] = new Block(...)\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — block index or any Blocks class property key to set\n * @param {Block} value — value to set\n * @returns {boolean}\n */\n static set(e, t, o) {\n return isNaN(Number(t)) ? (Reflect.set(e, t, o), !0) : (e.insert(+t, o), !0);\n }\n /**\n * Proxy trap to implement array-like getter\n *\n * @param {Blocks} instance — Blocks instance\n * @param {PropertyKey} property — Blocks class property key\n * @returns {Block|*}\n */\n static get(e, t) {\n return isNaN(Number(t)) ? Reflect.get(e, t) : e.get(+t);\n }\n /**\n * Push new Block to the blocks array and append it to working area\n *\n * @param {Block} block - Block to add\n */\n push(e) {\n this.blocks.push(e), this.insertToDOM(e);\n }\n /**\n * Swaps blocks with indexes first and second\n *\n * @param {number} first - first block index\n * @param {number} second - second block index\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n const o = this.blocks[t];\n d.swap(this.blocks[e].holder, o.holder), this.blocks[t] = this.blocks[e], this.blocks[e] = o;\n }\n /**\n * Move a block from one to another index\n *\n * @param {number} toIndex - new index of the block\n * @param {number} fromIndex - block to move\n */\n move(e, t) {\n const o = this.blocks.splice(t, 1)[0], i = e - 1, s = Math.max(0, i), r = this.blocks[s];\n e > 0 ? this.insertToDOM(o, \"afterend\", r) : this.insertToDOM(o, \"beforebegin\", r), this.blocks.splice(e, 0, o);\n const a = this.composeBlockEvent(\"move\", {\n fromIndex: t,\n toIndex: e\n });\n o.call(ee.MOVED, a);\n }\n /**\n * Insert new Block at passed index\n *\n * @param {number} index — index to insert Block\n * @param {Block} block — Block to insert\n * @param {boolean} replace — it true, replace block on given index\n */\n insert(e, t, o = !1) {\n if (!this.length) {\n this.push(t);\n return;\n }\n e > this.length && (e = this.length), o && (this.blocks[e].holder.remove(), this.blocks[e].call(ee.REMOVED));\n const i = o ? 1 : 0;\n if (this.blocks.splice(e, i, t), e > 0) {\n const s = this.blocks[e - 1];\n this.insertToDOM(t, \"afterend\", s);\n } else {\n const s = this.blocks[e + 1];\n s ? this.insertToDOM(t, \"beforebegin\", s) : this.insertToDOM(t);\n }\n }\n /**\n * Replaces block under passed index with passed block\n *\n * @param index - index of existed block\n * @param block - new block\n */\n replace(e, t) {\n if (this.blocks[e] === void 0)\n throw Error(\"Incorrect index\");\n this.blocks[e].holder.replaceWith(t.holder), this.blocks[e] = t;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index to insert blocks at\n */\n insertMany(e, t) {\n const o = new DocumentFragment();\n for (const i of e)\n o.appendChild(i.holder);\n if (this.length > 0) {\n if (t > 0) {\n const i = Math.min(t - 1, this.length - 1);\n this.blocks[i].holder.after(o);\n } else\n t === 0 && this.workingArea.prepend(o);\n this.blocks.splice(t, 0, ...e);\n } else\n this.blocks.push(...e), this.workingArea.appendChild(o);\n e.forEach((i) => i.call(ee.RENDERED));\n }\n /**\n * Remove block\n *\n * @param {number} index - index of Block to remove\n */\n remove(e) {\n isNaN(e) && (e = this.length - 1), this.blocks[e].holder.remove(), this.blocks[e].call(ee.REMOVED), this.blocks.splice(e, 1);\n }\n /**\n * Remove all blocks\n */\n removeAll() {\n this.workingArea.innerHTML = \"\", this.blocks.forEach((e) => e.call(ee.REMOVED)), this.blocks.length = 0;\n }\n /**\n * Insert Block after passed target\n *\n * @todo decide if this method is necessary\n * @param {Block} targetBlock — target after which Block should be inserted\n * @param {Block} newBlock — Block to insert\n */\n insertAfter(e, t) {\n const o = this.blocks.indexOf(e);\n this.insert(o + 1, t);\n }\n /**\n * Get Block by index\n *\n * @param {number} index — Block index\n * @returns {Block}\n */\n get(e) {\n return this.blocks[e];\n }\n /**\n * Return index of passed Block\n *\n * @param {Block} block - Block to find\n * @returns {number}\n */\n indexOf(e) {\n return this.blocks.indexOf(e);\n }\n /**\n * Insert new Block into DOM\n *\n * @param {Block} block - Block to insert\n * @param {InsertPosition} position — insert position (if set, will use insertAdjacentElement)\n * @param {Block} target — Block related to position\n */\n insertToDOM(e, t, o) {\n t ? o.holder.insertAdjacentElement(t, e.holder) : this.workingArea.appendChild(e.holder), e.call(ee.RENDERED);\n }\n /**\n * Composes Block event with passed type and details\n *\n * @param {string} type - event type\n * @param {object} detail - event detail\n */\n composeBlockEvent(e, t) {\n return new CustomEvent(e, {\n detail: t\n });\n }\n}\nconst _o = \"block-removed\", Mo = \"block-added\", ia = \"block-moved\", Ao = \"block-changed\";\nclass sa {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n *\n * @param operation - promise should be added to queue\n */\n add(e) {\n return new Promise((t, o) => {\n this.completed = this.completed.then(e).then(t).catch(o);\n });\n }\n}\nclass ra extends E {\n constructor() {\n super(...arguments), this._currentBlockIndex = -1, this._blocks = null;\n }\n /**\n * Returns current Block index\n *\n * @returns {number}\n */\n get currentBlockIndex() {\n return this._currentBlockIndex;\n }\n /**\n * Set current Block index and fire Block lifecycle callbacks\n *\n * @param {number} newIndex - index of Block to set as current\n */\n set currentBlockIndex(e) {\n this._currentBlockIndex = e;\n }\n /**\n * returns first Block\n *\n * @returns {Block}\n */\n get firstBlock() {\n return this._blocks[0];\n }\n /**\n * returns last Block\n *\n * @returns {Block}\n */\n get lastBlock() {\n return this._blocks[this._blocks.length - 1];\n }\n /**\n * Get current Block instance\n *\n * @returns {Block}\n */\n get currentBlock() {\n return this._blocks[this.currentBlockIndex];\n }\n /**\n * Set passed Block as a current\n *\n * @param block - block to set as a current\n */\n set currentBlock(e) {\n this.currentBlockIndex = this.getBlockIndex(e);\n }\n /**\n * Returns next Block instance\n *\n * @returns {Block|null}\n */\n get nextBlock() {\n return this.currentBlockIndex === this._blocks.length - 1 ? null : this._blocks[this.currentBlockIndex + 1];\n }\n /**\n * Return first Block with inputs after current Block\n *\n * @returns {Block | undefined}\n */\n get nextContentfulBlock() {\n return this.blocks.slice(this.currentBlockIndex + 1).find((t) => !!t.inputs.length);\n }\n /**\n * Return first Block with inputs before current Block\n *\n * @returns {Block | undefined}\n */\n get previousContentfulBlock() {\n return this.blocks.slice(0, this.currentBlockIndex).reverse().find((t) => !!t.inputs.length);\n }\n /**\n * Returns previous Block instance\n *\n * @returns {Block|null}\n */\n get previousBlock() {\n return this.currentBlockIndex === 0 ? null : this._blocks[this.currentBlockIndex - 1];\n }\n /**\n * Get array of Block instances\n *\n * @returns {Block[]} {@link Blocks#array}\n */\n get blocks() {\n return this._blocks.array;\n }\n /**\n * Check if each Block is empty\n *\n * @returns {boolean}\n */\n get isEditorEmpty() {\n return this.blocks.every((e) => e.isEmpty);\n }\n /**\n * Should be called after Editor.UI preparation\n * Define this._blocks property\n */\n prepare() {\n const e = new ct(this.Editor.UI.nodes.redactor);\n this._blocks = new Proxy(e, {\n set: ct.set,\n get: ct.get\n }), this.listeners.on(\n document,\n \"copy\",\n (t) => this.Editor.BlockEvents.handleCommandC(t)\n );\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - Unbind event handlers from created Blocks\n *\n * if readOnly is false:\n * - Bind event handlers to all existing Blocks\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Creates Block instance by tool name\n *\n * @param {object} options - block creation options\n * @param {string} options.tool - tools passed in editor config {@link EditorConfig#tools}\n * @param {string} [options.id] - unique id for this block\n * @param {BlockToolData} [options.data] - constructor params\n * @returns {Block}\n */\n composeBlock({\n tool: e,\n data: t = {},\n id: o = void 0,\n tunes: i = {}\n }) {\n const s = this.Editor.ReadOnly.isEnabled, r = this.Editor.Tools.blockTools.get(e), a = new R({\n id: o,\n data: t,\n tool: r,\n api: this.Editor.API,\n readOnly: s,\n tunesData: i\n }, this.eventsDispatcher);\n return s || window.requestIdleCallback(() => {\n this.bindBlockEvents(a);\n }, { timeout: 2e3 }), a;\n }\n /**\n * Insert new block into _blocks\n *\n * @param {object} options - insert options\n * @param {string} [options.id] - block's unique id\n * @param {string} [options.tool] - plugin name, by default method inserts the default block type\n * @param {object} [options.data] - plugin data\n * @param {number} [options.index] - index where to insert new Block\n * @param {boolean} [options.needToFocus] - flag shows if needed to update current Block index\n * @param {boolean} [options.replace] - flag shows if block by passed index should be replaced with inserted one\n * @returns {Block}\n */\n insert({\n id: e = void 0,\n tool: t = this.config.defaultBlock,\n data: o = {},\n index: i,\n needToFocus: s = !0,\n replace: r = !1,\n tunes: a = {}\n } = {}) {\n let l = i;\n l === void 0 && (l = this.currentBlockIndex + (r ? 0 : 1));\n const c = this.composeBlock({\n id: e,\n tool: t,\n data: o,\n tunes: a\n });\n return r && this.blockDidMutated(_o, this.getBlockByIndex(l), {\n index: l\n }), this._blocks.insert(l, c, r), this.blockDidMutated(Mo, c, {\n index: l\n }), s ? this.currentBlockIndex = l : l <= this.currentBlockIndex && this.currentBlockIndex++, c;\n }\n /**\n * Inserts several blocks at once\n *\n * @param blocks - blocks to insert\n * @param index - index where to insert\n */\n insertMany(e, t = 0) {\n this._blocks.insertMany(e, t);\n }\n /**\n * Update Block data.\n *\n * Currently we don't have an 'update' method in the Tools API, so we just create a new block with the same id and type\n * Should not trigger 'block-removed' or 'block-added' events.\n *\n * If neither data nor tunes is provided, return the provided block instead.\n *\n * @param block - block to update\n * @param data - (optional) new data\n * @param tunes - (optional) tune data\n */\n async update(e, t, o) {\n if (!t && !o)\n return e;\n const i = await e.data, s = this.composeBlock({\n id: e.id,\n tool: e.name,\n data: Object.assign({}, i, t ?? {}),\n tunes: o ?? e.tunes\n }), r = this.getBlockIndex(e);\n return this._blocks.replace(r, s), this.blockDidMutated(Ao, s, {\n index: r\n }), s;\n }\n /**\n * Replace passed Block with the new one with specified Tool and data\n *\n * @param block - block to replace\n * @param newTool - new Tool name\n * @param data - new Tool data\n */\n replace(e, t, o) {\n const i = this.getBlockIndex(e);\n return this.insert({\n tool: t,\n data: o,\n index: i,\n replace: !0\n });\n }\n /**\n * Insert pasted content. Call onPaste callback after insert.\n *\n * @param {string} toolName - name of Tool to insert\n * @param {PasteEvent} pasteEvent - pasted data\n * @param {boolean} replace - should replace current block\n */\n paste(e, t, o = !1) {\n const i = this.insert({\n tool: e,\n replace: o\n });\n try {\n window.requestIdleCallback(() => {\n i.call(ee.ON_PASTE, t);\n });\n } catch (s) {\n S(`${e}: onPaste callback call is failed`, \"error\", s);\n }\n return i;\n }\n /**\n * Insert new default block at passed index\n *\n * @param {number} index - index where Block should be inserted\n * @param {boolean} needToFocus - if true, updates current Block index\n *\n * TODO: Remove method and use insert() with index instead (?)\n * @returns {Block} inserted Block\n */\n insertDefaultBlockAtIndex(e, t = !1) {\n const o = this.composeBlock({ tool: this.config.defaultBlock });\n return this._blocks[e] = o, this.blockDidMutated(Mo, o, {\n index: e\n }), t ? this.currentBlockIndex = e : e <= this.currentBlockIndex && this.currentBlockIndex++, o;\n }\n /**\n * Always inserts at the end\n *\n * @returns {Block}\n */\n insertAtEnd() {\n return this.currentBlockIndex = this.blocks.length - 1, this.insert();\n }\n /**\n * Merge two blocks\n *\n * @param {Block} targetBlock - previous block will be append to this block\n * @param {Block} blockToMerge - block that will be merged with target block\n * @returns {Promise} - the sequence that can be continued\n */\n async mergeBlocks(e, t) {\n let o;\n if (e.name === t.name && e.mergeable) {\n const i = await t.data;\n if (V(i)) {\n console.error(\"Could not merge Block. Failed to extract original Block data.\");\n return;\n }\n const [s] = yt([i], e.tool.sanitizeConfig);\n o = s;\n } else if (e.mergeable && He(t, \"export\") && He(e, \"import\")) {\n const i = await t.exportDataAsString(), s = Z(i, e.tool.sanitizeConfig);\n o = Bo(s, e.tool.conversionConfig);\n }\n o !== void 0 && (await e.mergeWith(o), this.removeBlock(t), this.currentBlockIndex = this._blocks.indexOf(e));\n }\n /**\n * Remove passed Block\n *\n * @param block - Block to remove\n * @param addLastBlock - if true, adds new default block at the end. @todo remove this logic and use event-bus instead\n */\n removeBlock(e, t = !0) {\n return new Promise((o) => {\n const i = this._blocks.indexOf(e);\n if (!this.validateIndex(i))\n throw new Error(\"Can't find a Block to remove\");\n e.destroy(), this._blocks.remove(i), this.blockDidMutated(_o, e, {\n index: i\n }), this.currentBlockIndex >= i && this.currentBlockIndex--, this.blocks.length ? i === 0 && (this.currentBlockIndex = 0) : (this.unsetCurrentBlock(), t && this.insert()), o();\n });\n }\n /**\n * Remove only selected Blocks\n * and returns first Block index where started removing...\n *\n * @returns {number|undefined}\n */\n removeSelectedBlocks() {\n let e;\n for (let t = this.blocks.length - 1; t >= 0; t--)\n this.blocks[t].selected && (this.removeBlock(this.blocks[t]), e = t);\n return e;\n }\n /**\n * Attention!\n * After removing insert the new default typed Block and focus on it\n * Removes all blocks\n */\n removeAllBlocks() {\n for (let e = this.blocks.length - 1; e >= 0; e--)\n this._blocks.remove(e);\n this.unsetCurrentBlock(), this.insert(), this.currentBlock.firstInput.focus();\n }\n /**\n * Split current Block\n * 1. Extract content from Caret position to the Block`s end\n * 2. Insert a new Block below current one with extracted content\n *\n * @returns {Block}\n */\n split() {\n const e = this.Editor.Caret.extractFragmentFromCaretPosition(), t = d.make(\"div\");\n t.appendChild(e);\n const o = {\n text: d.isEmpty(t) ? \"\" : t.innerHTML\n };\n return this.insert({ data: o });\n }\n /**\n * Returns Block by passed index\n *\n * @param {number} index - index to get. -1 to get last\n * @returns {Block}\n */\n getBlockByIndex(e) {\n return e === -1 && (e = this._blocks.length - 1), this._blocks[e];\n }\n /**\n * Returns an index for passed Block\n *\n * @param block - block to find index\n */\n getBlockIndex(e) {\n return this._blocks.indexOf(e);\n }\n /**\n * Returns the Block by passed id\n *\n * @param id - id of block to get\n * @returns {Block}\n */\n getBlockById(e) {\n return this._blocks.array.find((t) => t.id === e);\n }\n /**\n * Get Block instance by html element\n *\n * @param {Node} element - html element to get Block by\n */\n getBlock(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = this._blocks.nodes, o = e.closest(`.${R.CSS.wrapper}`), i = t.indexOf(o);\n if (i >= 0)\n return this._blocks[i];\n }\n /**\n * 1) Find first-level Block from passed child Node\n * 2) Mark it as current\n *\n * @param {Node} childNode - look ahead from this node.\n * @returns {Block | undefined} can return undefined in case when the passed child note is not a part of the current editor instance\n */\n setCurrentBlockByChildNode(e) {\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${R.CSS.wrapper}`);\n if (!t)\n return;\n const o = t.closest(`.${this.Editor.UI.CSS.editorWrapper}`);\n if (o != null && o.isEqualNode(this.Editor.UI.nodes.wrapper))\n return this.currentBlockIndex = this._blocks.nodes.indexOf(t), this.currentBlock.updateCurrentInput(), this.currentBlock;\n }\n /**\n * Return block which contents passed node\n *\n * @param {Node} childNode - node to get Block by\n * @returns {Block}\n */\n getBlockByChildNode(e) {\n if (!e || !(e instanceof Node))\n return;\n d.isElement(e) || (e = e.parentNode);\n const t = e.closest(`.${R.CSS.wrapper}`);\n return this.blocks.find((o) => o.holder === t);\n }\n /**\n * Swap Blocks Position\n *\n * @param {number} fromIndex - index of first block\n * @param {number} toIndex - index of second block\n * @deprecated — use 'move' instead\n */\n swap(e, t) {\n this._blocks.swap(e, t), this.currentBlockIndex = t;\n }\n /**\n * Move a block to a new index\n *\n * @param {number} toIndex - index where to move Block\n * @param {number} fromIndex - index of Block to move\n */\n move(e, t = this.currentBlockIndex) {\n if (isNaN(e) || isNaN(t)) {\n S(\"Warning during 'move' call: incorrect indices provided.\", \"warn\");\n return;\n }\n if (!this.validateIndex(e) || !this.validateIndex(t)) {\n S(\"Warning during 'move' call: indices cannot be lower than 0 or greater than the amount of blocks.\", \"warn\");\n return;\n }\n this._blocks.move(e, t), this.currentBlockIndex = e, this.blockDidMutated(ia, this.currentBlock, {\n fromIndex: t,\n toIndex: e\n });\n }\n /**\n * Converts passed Block to the new Tool\n * Uses Conversion Config\n *\n * @param blockToConvert - Block that should be converted\n * @param targetToolName - name of the Tool to convert to\n * @param blockDataOverrides - optional new Block data overrides\n */\n async convert(e, t, o) {\n if (!await e.save())\n throw new Error(\"Could not convert Block. Failed to extract original Block data.\");\n const s = this.Editor.Tools.blockTools.get(t);\n if (!s)\n throw new Error(`Could not convert Block. Tool «${t}» not found.`);\n const r = await e.exportDataAsString(), a = Z(\n r,\n s.sanitizeConfig\n );\n let l = Bo(a, s.conversionConfig, s.settings);\n return o && (l = Object.assign(l, o)), this.replace(e, s.name, l);\n }\n /**\n * Sets current Block Index -1 which means unknown\n * and clear highlights\n */\n unsetCurrentBlock() {\n this.currentBlockIndex = -1;\n }\n /**\n * Clears Editor\n *\n * @param {boolean} needToAddDefaultBlock - 1) in internal calls (for example, in api.blocks.render)\n * we don't need to add an empty default block\n * 2) in api.blocks.clear we should add empty block\n */\n async clear(e = !1) {\n const t = new sa();\n this.blocks.forEach((o) => {\n t.add(async () => {\n await this.removeBlock(o, !1);\n });\n }), await t.completed, this.unsetCurrentBlock(), e && this.insert(), this.Editor.UI.checkEmptiness();\n }\n /**\n * Cleans up all the block tools' resources\n * This is called when editor is destroyed\n */\n async destroy() {\n await Promise.all(this.blocks.map((e) => e.destroy()));\n }\n /**\n * Bind Block events\n *\n * @param {Block} block - Block to which event should be bound\n */\n bindBlockEvents(e) {\n const { BlockEvents: t } = this.Editor;\n this.readOnlyMutableListeners.on(e.holder, \"keydown\", (o) => {\n t.keydown(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"keyup\", (o) => {\n t.keyup(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragover\", (o) => {\n t.dragOver(o);\n }), this.readOnlyMutableListeners.on(e.holder, \"dragleave\", (o) => {\n t.dragLeave(o);\n }), e.on(\"didMutated\", (o) => this.blockDidMutated(Ao, o, {\n index: this.getBlockIndex(o)\n }));\n }\n /**\n * Disable mutable handlers and bindings\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Enables all module handlers and bindings for all Blocks\n */\n enableModuleBindings() {\n this.readOnlyMutableListeners.on(\n document,\n \"cut\",\n (e) => this.Editor.BlockEvents.handleCommandX(e)\n ), this.blocks.forEach((e) => {\n this.bindBlockEvents(e);\n });\n }\n /**\n * Validates that the given index is not lower than 0 or higher than the amount of blocks\n *\n * @param {number} index - index of blocks array to validate\n * @returns {boolean}\n */\n validateIndex(e) {\n return !(e < 0 || e >= this._blocks.length);\n }\n /**\n * Block mutation callback\n *\n * @param mutationType - what happened with block\n * @param block - mutated block\n * @param detailData - additional data to pass with change event\n */\n blockDidMutated(e, t, o) {\n const i = new CustomEvent(e, {\n detail: {\n target: new J(t),\n ...o\n }\n });\n return this.eventsDispatcher.emit($o, {\n event: i\n }), t;\n }\n}\nclass aa extends E {\n constructor() {\n super(...arguments), this.anyBlockSelectedCache = null, this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n }\n /**\n * Sanitizer Config\n *\n * @returns {SanitizerConfig}\n */\n get sanitizerConfig() {\n return {\n p: {},\n h1: {},\n h2: {},\n h3: {},\n h4: {},\n h5: {},\n h6: {},\n ol: {},\n ul: {},\n li: {},\n br: !0,\n img: {\n src: !0,\n width: !0,\n height: !0\n },\n a: {\n href: !0\n },\n b: {},\n i: {},\n u: {}\n };\n }\n /**\n * Flag that identifies all Blocks selection\n *\n * @returns {boolean}\n */\n get allBlocksSelected() {\n const { BlockManager: e } = this.Editor;\n return e.blocks.every((t) => t.selected === !0);\n }\n /**\n * Set selected all blocks\n *\n * @param {boolean} state - state to set\n */\n set allBlocksSelected(e) {\n const { BlockManager: t } = this.Editor;\n t.blocks.forEach((o) => {\n o.selected = e;\n }), this.clearCache();\n }\n /**\n * Flag that identifies any Block selection\n *\n * @returns {boolean}\n */\n get anyBlockSelected() {\n const { BlockManager: e } = this.Editor;\n return this.anyBlockSelectedCache === null && (this.anyBlockSelectedCache = e.blocks.some((t) => t.selected === !0)), this.anyBlockSelectedCache;\n }\n /**\n * Return selected Blocks array\n *\n * @returns {Block[]}\n */\n get selectedBlocks() {\n return this.Editor.BlockManager.blocks.filter((e) => e.selected);\n }\n /**\n * Module Preparation\n * Registers Shortcuts CMD+A and CMD+C\n * to select all and copy them\n */\n prepare() {\n this.selection = new b(), ge.add({\n name: \"CMD+A\",\n handler: (e) => {\n const { BlockManager: t, ReadOnly: o } = this.Editor;\n if (o.isEnabled) {\n e.preventDefault(), this.selectAllBlocks();\n return;\n }\n t.currentBlock && this.handleCommandA(e);\n },\n on: this.Editor.UI.nodes.redactor\n });\n }\n /**\n * Toggle read-only state\n *\n * - Remove all ranges\n * - Unselect all Blocks\n */\n toggleReadOnly() {\n b.get().removeAllRanges(), this.allBlocksSelected = !1;\n }\n /**\n * Remove selection of Block\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n unSelectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor;\n let o;\n isNaN(e) ? o = t.currentBlock : o = t.getBlockByIndex(e), o.selected = !1, this.clearCache();\n }\n /**\n * Clear selection from Blocks\n *\n * @param {Event} reason - event caused clear of selection\n * @param {boolean} restoreSelection - if true, restore saved selection\n */\n clearSelection(e, t = !1) {\n const { BlockManager: o, Caret: i, RectangleSelection: s } = this.Editor;\n this.needToSelectAll = !1, this.nativeInputSelected = !1, this.readyToBlockSelection = !1;\n const r = e && e instanceof KeyboardEvent, a = r && Po(e.keyCode);\n if (this.anyBlockSelected && r && a && !b.isSelectionExists) {\n const l = o.removeSelectedBlocks();\n o.insertDefaultBlockAtIndex(l, !0), i.setToBlock(o.currentBlock), Fe(() => {\n const c = e.key;\n i.insertContentAtCaretPosition(c.length > 1 ? \"\" : c);\n }, 20)();\n }\n if (this.Editor.CrossBlockSelection.clear(e), !this.anyBlockSelected || s.isRectActivated()) {\n this.Editor.RectangleSelection.clearSelection();\n return;\n }\n t && this.selection.restore(), this.allBlocksSelected = !1;\n }\n /**\n * Reduce each Block and copy its content\n *\n * @param {ClipboardEvent} e - copy/cut event\n * @returns {Promise}\n */\n copySelectedBlocks(e) {\n e.preventDefault();\n const t = d.make(\"div\");\n this.selectedBlocks.forEach((s) => {\n const r = Z(s.holder.innerHTML, this.sanitizerConfig), a = d.make(\"p\");\n a.innerHTML = r, t.appendChild(a);\n });\n const o = Array.from(t.childNodes).map((s) => s.textContent).join(`\n\n`), i = t.innerHTML;\n return e.clipboardData.setData(\"text/plain\", o), e.clipboardData.setData(\"text/html\", i), Promise.all(this.selectedBlocks.map((s) => s.save())).then((s) => {\n try {\n e.clipboardData.setData(this.Editor.Paste.MIME_TYPE, JSON.stringify(s));\n } catch {\n }\n });\n }\n /**\n * Select Block by its index\n *\n * @param {number?} index - Block index according to the BlockManager's indexes\n */\n selectBlockByIndex(e) {\n const { BlockManager: t } = this.Editor, o = t.getBlockByIndex(e);\n o !== void 0 && this.selectBlock(o);\n }\n /**\n * Select passed Block\n *\n * @param {Block} block - Block to select\n */\n selectBlock(e) {\n this.selection.save(), b.get().removeAllRanges(), e.selected = !0, this.clearCache(), this.Editor.InlineToolbar.close();\n }\n /**\n * Remove selection from passed Block\n *\n * @param {Block} block - Block to unselect\n */\n unselectBlock(e) {\n e.selected = !1, this.clearCache();\n }\n /**\n * Clear anyBlockSelected cache\n */\n clearCache() {\n this.anyBlockSelectedCache = null;\n }\n /**\n * Module destruction\n * De-registers Shortcut CMD+A\n */\n destroy() {\n ge.remove(this.Editor.UI.nodes.redactor, \"CMD+A\");\n }\n /**\n * First CMD+A selects all input content by native behaviour,\n * next CMD+A keypress selects all blocks\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n handleCommandA(e) {\n if (this.Editor.RectangleSelection.clearSelection(), d.isNativeInput(e.target) && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n const t = this.Editor.BlockManager.getBlock(e.target), o = t.inputs;\n if (o.length > 1 && !this.readyToBlockSelection) {\n this.readyToBlockSelection = !0;\n return;\n }\n if (o.length === 1 && !this.needToSelectAll) {\n this.needToSelectAll = !0;\n return;\n }\n this.needToSelectAll ? (e.preventDefault(), this.selectAllBlocks(), this.needToSelectAll = !1, this.readyToBlockSelection = !1) : this.readyToBlockSelection && (e.preventDefault(), this.selectBlock(t), this.needToSelectAll = !0);\n }\n /**\n * Select All Blocks\n * Each Block has selected setter that makes Block copyable\n */\n selectAllBlocks() {\n this.selection.save(), b.get().removeAllRanges(), this.allBlocksSelected = !0, this.Editor.InlineToolbar.close();\n }\n}\nclass Ye extends E {\n /**\n * Allowed caret positions in input\n *\n * @static\n * @returns {{START: string, END: string, DEFAULT: string}}\n */\n get positions() {\n return {\n START: \"start\",\n END: \"end\",\n DEFAULT: \"default\"\n };\n }\n /**\n * Elements styles that can be useful for Caret Module\n */\n static get CSS() {\n return {\n shadowCaret: \"cdx-shadow-caret\"\n };\n }\n /**\n * Method gets Block instance and puts caret to the text node with offset\n * There two ways that method applies caret position:\n * - first found text node: sets at the beginning, but you can pass an offset\n * - last found text node: sets at the end of the node. Also, you can customize the behaviour\n *\n * @param {Block} block - Block class\n * @param {string} position - position where to set caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToBlock(e, t = this.positions.DEFAULT, o = 0) {\n var c;\n const { BlockManager: i, BlockSelection: s } = this.Editor;\n if (s.clearSelection(), !e.focusable) {\n (c = window.getSelection()) == null || c.removeAllRanges(), s.selectBlock(e), i.currentBlock = e;\n return;\n }\n let r;\n switch (t) {\n case this.positions.START:\n r = e.firstInput;\n break;\n case this.positions.END:\n r = e.lastInput;\n break;\n default:\n r = e.currentInput;\n }\n if (!r)\n return;\n const a = d.getDeepestNode(r, t === this.positions.END), l = d.getContentLength(a);\n switch (!0) {\n case t === this.positions.START:\n o = 0;\n break;\n case t === this.positions.END:\n case o > l:\n o = l;\n break;\n }\n this.set(a, o), i.setCurrentBlockByChildNode(e.holder), i.currentBlock.currentInput = r;\n }\n /**\n * Set caret to the current input of current Block.\n *\n * @param {HTMLElement} input - input where caret should be set\n * @param {string} position - position of the caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n setToInput(e, t = this.positions.DEFAULT, o = 0) {\n const { currentBlock: i } = this.Editor.BlockManager, s = d.getDeepestNode(e);\n switch (t) {\n case this.positions.START:\n this.set(s, 0);\n break;\n case this.positions.END:\n this.set(s, d.getContentLength(s));\n break;\n default:\n o && this.set(s, o);\n }\n i.currentInput = e;\n }\n /**\n * Creates Document Range and sets caret to the element with offset\n *\n * @param {HTMLElement} element - target node.\n * @param {number} offset - offset\n */\n set(e, t = 0) {\n const { top: i, bottom: s } = b.setCursor(e, t), { innerHeight: r } = window;\n i < 0 ? window.scrollBy(0, i - 30) : s > r && window.scrollBy(0, s - r + 30);\n }\n /**\n * Set Caret to the last Block\n * If last block is not empty, append another empty block\n */\n setToTheLastBlock() {\n const e = this.Editor.BlockManager.lastBlock;\n if (e)\n if (e.tool.isDefault && e.isEmpty)\n this.setToBlock(e);\n else {\n const t = this.Editor.BlockManager.insertAtEnd();\n this.setToBlock(t);\n }\n }\n /**\n * Extract content fragment of current Block from Caret position to the end of the Block\n */\n extractFragmentFromCaretPosition() {\n const e = b.get();\n if (e.rangeCount) {\n const t = e.getRangeAt(0), o = this.Editor.BlockManager.currentBlock.currentInput;\n if (t.deleteContents(), o)\n if (d.isNativeInput(o)) {\n const i = o, s = document.createDocumentFragment(), r = i.value.substring(0, i.selectionStart), a = i.value.substring(i.selectionStart);\n return s.textContent = a, i.value = r, s;\n } else {\n const i = t.cloneRange();\n return i.selectNodeContents(o), i.setStart(t.endContainer, t.endOffset), i.extractContents();\n }\n }\n }\n /**\n * Set's caret to the next Block or Tool`s input\n * Before moving caret, we should check if caret position is at the end of Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {boolean} force - pass true to skip check for caret position\n */\n navigateNext(e = !1) {\n const { BlockManager: t } = this.Editor, { currentBlock: o, nextBlock: i } = t;\n if (o === void 0)\n return !1;\n const { nextInput: s, currentInput: r } = o, a = r !== void 0 ? Re(r) : void 0;\n let l = i;\n const c = e || a || !o.focusable;\n if (s && c)\n return this.setToInput(s, this.positions.START), !0;\n if (l === null) {\n if (o.tool.isDefault || !c)\n return !1;\n l = t.insertAtEnd();\n }\n return c ? (this.setToBlock(l, this.positions.START), !0) : !1;\n }\n /**\n * Set's caret to the previous Tool`s input or Block\n * Before moving caret, we should check if caret position is start of the Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {boolean} force - pass true to skip check for caret position\n */\n navigatePrevious(e = !1) {\n const { currentBlock: t, previousBlock: o } = this.Editor.BlockManager;\n if (!t)\n return !1;\n const { previousInput: i, currentInput: s } = t, r = s !== void 0 ? Ne(s) : void 0, a = e || r || !t.focusable;\n return i && a ? (this.setToInput(i, this.positions.END), !0) : o !== null && a ? (this.setToBlock(o, this.positions.END), !0) : !1;\n }\n /**\n * Inserts shadow element after passed element where caret can be placed\n *\n * @param {Element} element - element after which shadow caret should be inserted\n */\n createShadow(e) {\n const t = document.createElement(\"span\");\n t.classList.add(Ye.CSS.shadowCaret), e.insertAdjacentElement(\"beforeend\", t);\n }\n /**\n * Restores caret position\n *\n * @param {HTMLElement} element - element where caret should be restored\n */\n restoreCaret(e) {\n const t = e.querySelector(`.${Ye.CSS.shadowCaret}`);\n if (!t)\n return;\n new b().expandToTag(t);\n const i = document.createRange();\n i.selectNode(t), i.extractContents();\n }\n /**\n * Inserts passed content at caret position\n *\n * @param {string} content - content to insert\n */\n insertContentAtCaretPosition(e) {\n const t = document.createDocumentFragment(), o = document.createElement(\"div\"), i = b.get(), s = b.range;\n o.innerHTML = e, Array.from(o.childNodes).forEach((c) => t.appendChild(c)), t.childNodes.length === 0 && t.appendChild(new Text());\n const r = t.lastChild;\n s.deleteContents(), s.insertNode(t);\n const a = document.createRange(), l = r.nodeType === Node.TEXT_NODE ? r : r.firstChild;\n l !== null && l.textContent !== null && a.setStart(l, l.textContent.length), i.removeAllRanges(), i.addRange(a);\n }\n}\nclass la extends E {\n constructor() {\n super(...arguments), this.onMouseUp = () => {\n this.listeners.off(document, \"mouseover\", this.onMouseOver), this.listeners.off(document, \"mouseup\", this.onMouseUp);\n }, this.onMouseOver = (e) => {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n if (e.relatedTarget === null && e.target === null)\n return;\n const i = t.getBlockByChildNode(e.relatedTarget) || this.lastSelectedBlock, s = t.getBlockByChildNode(e.target);\n if (!(!i || !s) && s !== i) {\n if (i === this.firstSelectedBlock) {\n b.get().removeAllRanges(), i.selected = !0, s.selected = !0, o.clearCache();\n return;\n }\n if (s === this.firstSelectedBlock) {\n i.selected = !1, s.selected = !1, o.clearCache();\n return;\n }\n this.Editor.InlineToolbar.close(), this.toggleBlocksSelectedState(i, s), this.lastSelectedBlock = s;\n }\n };\n }\n /**\n * Module preparation\n *\n * @returns {Promise}\n */\n async prepare() {\n this.listeners.on(document, \"mousedown\", (e) => {\n this.enableCrossBlockSelection(e);\n });\n }\n /**\n * Sets up listeners\n *\n * @param {MouseEvent} event - mouse down event\n */\n watchSelection(e) {\n if (e.button !== qn.LEFT)\n return;\n const { BlockManager: t } = this.Editor;\n this.firstSelectedBlock = t.getBlock(e.target), this.lastSelectedBlock = this.firstSelectedBlock, this.listeners.on(document, \"mouseover\", this.onMouseOver), this.listeners.on(document, \"mouseup\", this.onMouseUp);\n }\n /**\n * Return boolean is cross block selection started:\n * there should be at least 2 selected blocks\n */\n get isCrossBlockSelectionStarted() {\n return !!this.firstSelectedBlock && !!this.lastSelectedBlock && this.firstSelectedBlock !== this.lastSelectedBlock;\n }\n /**\n * Change selection state of the next Block\n * Used for CBS via Shift + arrow keys\n *\n * @param {boolean} next - if true, toggle next block. Previous otherwise\n */\n toggleBlockSelectedState(e = !0) {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n this.lastSelectedBlock || (this.lastSelectedBlock = this.firstSelectedBlock = t.currentBlock), this.firstSelectedBlock === this.lastSelectedBlock && (this.firstSelectedBlock.selected = !0, o.clearCache(), b.get().removeAllRanges());\n const i = t.blocks.indexOf(this.lastSelectedBlock) + (e ? 1 : -1), s = t.blocks[i];\n s && (this.lastSelectedBlock.selected !== s.selected ? (s.selected = !0, o.clearCache()) : (this.lastSelectedBlock.selected = !1, o.clearCache()), this.lastSelectedBlock = s, this.Editor.InlineToolbar.close(), s.holder.scrollIntoView({\n block: \"nearest\"\n }));\n }\n /**\n * Clear saved state\n *\n * @param {Event} reason - event caused clear of selection\n */\n clear(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor, s = t.blocks.indexOf(this.firstSelectedBlock), r = t.blocks.indexOf(this.lastSelectedBlock);\n if (o.anyBlockSelected && s > -1 && r > -1 && e && e instanceof KeyboardEvent)\n switch (e.keyCode) {\n case y.DOWN:\n case y.RIGHT:\n i.setToBlock(t.blocks[Math.max(s, r)], i.positions.END);\n break;\n case y.UP:\n case y.LEFT:\n i.setToBlock(t.blocks[Math.min(s, r)], i.positions.START);\n break;\n default:\n i.setToBlock(t.blocks[Math.max(s, r)], i.positions.END);\n }\n this.firstSelectedBlock = this.lastSelectedBlock = null;\n }\n /**\n * Enables Cross Block Selection\n *\n * @param {MouseEvent} event - mouse down event\n */\n enableCrossBlockSelection(e) {\n const { UI: t } = this.Editor;\n b.isCollapsed || this.Editor.BlockSelection.clearSelection(e), t.nodes.redactor.contains(e.target) ? this.watchSelection(e) : this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * Change blocks selection state between passed two blocks.\n *\n * @param {Block} firstBlock - first block in range\n * @param {Block} lastBlock - last block in range\n */\n toggleBlocksSelectedState(e, t) {\n const { BlockManager: o, BlockSelection: i } = this.Editor, s = o.blocks.indexOf(e), r = o.blocks.indexOf(t), a = e.selected !== t.selected;\n for (let l = Math.min(s, r); l <= Math.max(s, r); l++) {\n const c = o.blocks[l];\n c !== this.firstSelectedBlock && c !== (a ? e : t) && (o.blocks[l].selected = !o.blocks[l].selected, i.clearCache());\n }\n }\n}\nclass ca extends E {\n constructor() {\n super(...arguments), this.isStartedAtEditor = !1;\n }\n /**\n * Toggle read-only state\n *\n * if state is true:\n * - disable all drag-n-drop event handlers\n *\n * if state is false:\n * - restore drag-n-drop event handlers\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.disableModuleBindings() : this.enableModuleBindings();\n }\n /**\n * Add drag events listeners to editor zone\n */\n enableModuleBindings() {\n const { UI: e } = this.Editor;\n this.readOnlyMutableListeners.on(e.nodes.holder, \"drop\", async (t) => {\n await this.processDrop(t);\n }, !0), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragstart\", () => {\n this.processDragStart();\n }), this.readOnlyMutableListeners.on(e.nodes.holder, \"dragover\", (t) => {\n this.processDragOver(t);\n }, !0);\n }\n /**\n * Unbind drag-n-drop event handlers\n */\n disableModuleBindings() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Handle drop event\n *\n * @param {DragEvent} dropEvent - drop event\n */\n async processDrop(e) {\n const {\n BlockManager: t,\n Paste: o,\n Caret: i\n } = this.Editor;\n e.preventDefault(), t.blocks.forEach((r) => {\n r.dropTarget = !1;\n }), b.isAtEditor && !b.isCollapsed && this.isStartedAtEditor && document.execCommand(\"delete\"), this.isStartedAtEditor = !1;\n const s = t.setCurrentBlockByChildNode(e.target);\n if (s)\n this.Editor.Caret.setToBlock(s, i.positions.END);\n else {\n const r = t.setCurrentBlockByChildNode(t.lastBlock.holder);\n this.Editor.Caret.setToBlock(r, i.positions.END);\n }\n await o.processDataTransfer(e.dataTransfer, !0);\n }\n /**\n * Handle drag start event\n */\n processDragStart() {\n b.isAtEditor && !b.isCollapsed && (this.isStartedAtEditor = !0), this.Editor.InlineToolbar.close();\n }\n /**\n * @param {DragEvent} dragEvent - drag event\n */\n processDragOver(e) {\n e.preventDefault();\n }\n}\nconst da = 180, ua = 400;\nclass ha extends E {\n /**\n * Prepare the module\n *\n * @param options - options used by the modification observer module\n * @param options.config - Editor configuration object\n * @param options.eventsDispatcher - common Editor event bus\n */\n constructor({ config: e, eventsDispatcher: t }) {\n super({\n config: e,\n eventsDispatcher: t\n }), this.disabled = !1, this.batchingTimeout = null, this.batchingOnChangeQueue = /* @__PURE__ */ new Map(), this.batchTime = ua, this.mutationObserver = new MutationObserver((o) => {\n this.redactorChanged(o);\n }), this.eventsDispatcher.on($o, (o) => {\n this.particularBlockChanged(o.event);\n }), this.eventsDispatcher.on(zo, () => {\n this.disable();\n }), this.eventsDispatcher.on(Uo, () => {\n this.enable();\n });\n }\n /**\n * Enables onChange event\n */\n enable() {\n this.mutationObserver.observe(\n this.Editor.UI.nodes.redactor,\n {\n childList: !0,\n subtree: !0,\n characterData: !0,\n attributes: !0\n }\n ), this.disabled = !1;\n }\n /**\n * Disables onChange event\n */\n disable() {\n this.mutationObserver.disconnect(), this.disabled = !0;\n }\n /**\n * Call onChange event passed to Editor.js configuration\n *\n * @param event - some of our custom change events\n */\n particularBlockChanged(e) {\n this.disabled || !A(this.config.onChange) || (this.batchingOnChangeQueue.set(`block:${e.detail.target.id}:event:${e.type}`, e), this.batchingTimeout && clearTimeout(this.batchingTimeout), this.batchingTimeout = setTimeout(() => {\n let t;\n this.batchingOnChangeQueue.size === 1 ? t = this.batchingOnChangeQueue.values().next().value : t = Array.from(this.batchingOnChangeQueue.values()), this.config.onChange && this.config.onChange(this.Editor.API.methods, t), this.batchingOnChangeQueue.clear();\n }, this.batchTime));\n }\n /**\n * Fired on every blocks wrapper dom change\n *\n * @param mutations - mutations happened\n */\n redactorChanged(e) {\n this.eventsDispatcher.emit(ft, {\n mutations: e\n });\n }\n}\nconst Rn = class Dn extends E {\n constructor() {\n super(...arguments), this.MIME_TYPE = \"application/x-editor-js\", this.toolsTags = {}, this.tagsByTool = {}, this.toolsPatterns = [], this.toolsFiles = {}, this.exceptionList = [], this.processTool = (e) => {\n try {\n const t = e.create({}, {}, !1);\n if (e.pasteConfig === !1) {\n this.exceptionList.push(e.name);\n return;\n }\n if (!A(t.onPaste))\n return;\n this.getTagsConfig(e), this.getFilesConfig(e), this.getPatternsConfig(e);\n } catch (t) {\n S(\n `Paste handling for «${e.name}» Tool hasn't been set up because of the error`,\n \"warn\",\n t\n );\n }\n }, this.handlePasteEvent = async (e) => {\n const { BlockManager: t, Toolbar: o } = this.Editor, i = t.setCurrentBlockByChildNode(e.target);\n !i || this.isNativeBehaviour(e.target) && !e.clipboardData.types.includes(\"Files\") || i && this.exceptionList.includes(i.name) || (e.preventDefault(), this.processDataTransfer(e.clipboardData), o.close());\n };\n }\n /**\n * Set onPaste callback and collect tools` paste configurations\n */\n async prepare() {\n this.processTools();\n }\n /**\n * Set read-only state\n *\n * @param {boolean} readOnlyEnabled - read only flag value\n */\n toggleReadOnly(e) {\n e ? this.unsetCallback() : this.setCallback();\n }\n /**\n * Handle pasted or dropped data transfer object\n *\n * @param {DataTransfer} dataTransfer - pasted or dropped data transfer object\n * @param {boolean} isDragNDrop - true if data transfer comes from drag'n'drop events\n */\n async processDataTransfer(e, t = !1) {\n const { Tools: o } = this.Editor, i = e.types;\n if ((i.includes ? i.includes(\"Files\") : i.contains(\"Files\")) && !V(this.toolsFiles)) {\n await this.processFiles(e.files);\n return;\n }\n const r = e.getData(this.MIME_TYPE), a = e.getData(\"text/plain\");\n let l = e.getData(\"text/html\");\n if (r)\n try {\n this.insertEditorJSData(JSON.parse(r));\n return;\n } catch {\n }\n t && a.trim() && l.trim() && (l = \"

\" + (l.trim() ? l : a) + \"

\");\n const c = Object.keys(this.toolsTags).reduce((p, g) => (p[g.toLowerCase()] = this.toolsTags[g].sanitizationConfig ?? {}, p), {}), u = Object.assign({}, c, o.getAllInlineToolsSanitizeConfig(), { br: {} }), h = Z(l, u);\n !h.trim() || h.trim() === a || !d.isHTMLString(h) ? await this.processText(a) : await this.processText(h, !0);\n }\n /**\n * Process pasted text and divide them into Blocks\n *\n * @param {string} data - text to process. Can be HTML or plain.\n * @param {boolean} isHTML - if passed string is HTML, this parameter should be true\n */\n async processText(e, t = !1) {\n const { Caret: o, BlockManager: i } = this.Editor, s = t ? this.processHTML(e) : this.processPlain(e);\n if (!s.length)\n return;\n if (s.length === 1) {\n s[0].isBlock ? this.processSingleBlock(s.pop()) : this.processInlinePaste(s.pop());\n return;\n }\n const a = i.currentBlock && i.currentBlock.tool.isDefault && i.currentBlock.isEmpty;\n s.map(\n async (l, c) => this.insertBlock(l, c === 0 && a)\n ), i.currentBlock && o.setToBlock(i.currentBlock, o.positions.END);\n }\n /**\n * Set onPaste callback handler\n */\n setCallback() {\n this.listeners.on(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Unset onPaste callback handler\n */\n unsetCallback() {\n this.listeners.off(this.Editor.UI.nodes.holder, \"paste\", this.handlePasteEvent);\n }\n /**\n * Get and process tool`s paste configs\n */\n processTools() {\n const e = this.Editor.Tools.blockTools;\n Array.from(e.values()).forEach(this.processTool);\n }\n /**\n * Get tags name list from either tag name or sanitization config.\n *\n * @param {string | object} tagOrSanitizeConfig - tag name or sanitize config object.\n * @returns {string[]} array of tags.\n */\n collectTagNames(e) {\n return te(e) ? [e] : D(e) ? Object.keys(e) : [];\n }\n /**\n * Get tags to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getTagsConfig(e) {\n if (e.pasteConfig === !1)\n return;\n const t = e.pasteConfig.tags || [], o = [];\n t.forEach((i) => {\n const s = this.collectTagNames(i);\n o.push(...s), s.forEach((r) => {\n if (Object.prototype.hasOwnProperty.call(this.toolsTags, r)) {\n S(\n `Paste handler for «${e.name}» Tool on «${r}» tag is skipped because it is already used by «${this.toolsTags[r].tool.name}» Tool.`,\n \"warn\"\n );\n return;\n }\n const a = D(i) ? i[r] : null;\n this.toolsTags[r.toUpperCase()] = {\n tool: e,\n sanitizationConfig: a\n };\n });\n }), this.tagsByTool[e.name] = o.map((i) => i.toUpperCase());\n }\n /**\n * Get files` types and extensions to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getFilesConfig(e) {\n if (e.pasteConfig === !1)\n return;\n const { files: t = {} } = e.pasteConfig;\n let { extensions: o, mimeTypes: i } = t;\n !o && !i || (o && !Array.isArray(o) && (S(`«extensions» property of the onDrop config for «${e.name}» Tool should be an array`), o = []), i && !Array.isArray(i) && (S(`«mimeTypes» property of the onDrop config for «${e.name}» Tool should be an array`), i = []), i && (i = i.filter((s) => ei(s) ? !0 : (S(`MIME type value «${s}» for the «${e.name}» Tool is not a valid MIME type`, \"warn\"), !1))), this.toolsFiles[e.name] = {\n extensions: o || [],\n mimeTypes: i || []\n });\n }\n /**\n * Get RegExp patterns to substitute by Tool\n *\n * @param tool - BlockTool object\n */\n getPatternsConfig(e) {\n e.pasteConfig === !1 || !e.pasteConfig.patterns || V(e.pasteConfig.patterns) || Object.entries(e.pasteConfig.patterns).forEach(([t, o]) => {\n o instanceof RegExp || S(\n `Pattern ${o} for «${e.name}» Tool is skipped because it should be a Regexp instance.`,\n \"warn\"\n ), this.toolsPatterns.push({\n key: t,\n pattern: o,\n tool: e\n });\n });\n }\n /**\n * Check if browser behavior suits better\n *\n * @param {EventTarget} element - element where content has been pasted\n * @returns {boolean}\n */\n isNativeBehaviour(e) {\n return d.isNativeInput(e);\n }\n /**\n * Get files from data transfer object and insert related Tools\n *\n * @param {FileList} items - pasted or dropped items\n */\n async processFiles(e) {\n const { BlockManager: t } = this.Editor;\n let o;\n o = await Promise.all(\n Array.from(e).map((r) => this.processFile(r))\n ), o = o.filter((r) => !!r);\n const s = t.currentBlock.tool.isDefault && t.currentBlock.isEmpty;\n o.forEach(\n (r, a) => {\n t.paste(r.type, r.event, a === 0 && s);\n }\n );\n }\n /**\n * Get information about file and find Tool to handle it\n *\n * @param {File} file - file to process\n */\n async processFile(e) {\n const t = Jn(e), o = Object.entries(this.toolsFiles).find(([r, { mimeTypes: a, extensions: l }]) => {\n const [c, u] = e.type.split(\"/\"), h = l.find((g) => g.toLowerCase() === t.toLowerCase()), p = a.find((g) => {\n const [f, v] = g.split(\"/\");\n return f === c && (v === u || v === \"*\");\n });\n return !!h || !!p;\n });\n if (!o)\n return;\n const [i] = o;\n return {\n event: this.composePasteEvent(\"file\", {\n file: e\n }),\n type: i\n };\n }\n /**\n * Split HTML string to blocks and return it as array of Block data\n *\n * @param {string} innerHTML - html string to process\n * @returns {PasteData[]}\n */\n processHTML(e) {\n const { Tools: t } = this.Editor, o = d.make(\"DIV\");\n return o.innerHTML = e, this.getNodes(o).map((s) => {\n let r, a = t.defaultTool, l = !1;\n switch (s.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n r = d.make(\"div\"), r.appendChild(s);\n break;\n case Node.ELEMENT_NODE:\n r = s, l = !0, this.toolsTags[r.tagName] && (a = this.toolsTags[r.tagName].tool);\n break;\n }\n const { tags: c } = a.pasteConfig || { tags: [] }, u = c.reduce((g, f) => (this.collectTagNames(f).forEach((O) => {\n const T = D(f) ? f[O] : null;\n g[O.toLowerCase()] = T || {};\n }), g), {}), h = Object.assign({}, u, a.baseSanitizeConfig);\n if (r.tagName.toLowerCase() === \"table\") {\n const g = Z(r.outerHTML, h);\n r = d.make(\"div\", void 0, {\n innerHTML: g\n }).firstChild;\n } else\n r.innerHTML = Z(r.innerHTML, h);\n const p = this.composePasteEvent(\"tag\", {\n data: r\n });\n return {\n content: r,\n isBlock: l,\n tool: a.name,\n event: p\n };\n }).filter((s) => {\n const r = d.isEmpty(s.content), a = d.isSingleTag(s.content);\n return !r || a;\n });\n }\n /**\n * Split plain text by new line symbols and return it as array of Block data\n *\n * @param {string} plain - string to process\n * @returns {PasteData[]}\n */\n processPlain(e) {\n const { defaultBlock: t } = this.config;\n if (!e)\n return [];\n const o = t;\n return e.split(/\\r?\\n/).filter((i) => i.trim()).map((i) => {\n const s = d.make(\"div\");\n s.textContent = i;\n const r = this.composePasteEvent(\"tag\", {\n data: s\n });\n return {\n content: s,\n tool: o,\n isBlock: !1,\n event: r\n };\n });\n }\n /**\n * Process paste of single Block tool content\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processSingleBlock(e) {\n const { Caret: t, BlockManager: o } = this.Editor, { currentBlock: i } = o;\n if (!i || e.tool !== i.name || !d.containsOnlyInlineElements(e.content.innerHTML)) {\n this.insertBlock(e, (i == null ? void 0 : i.tool.isDefault) && i.isEmpty);\n return;\n }\n t.insertContentAtCaretPosition(e.content.innerHTML);\n }\n /**\n * Process paste to single Block:\n * 1. Find patterns` matches\n * 2. Insert new block if it is not the same type as current one\n * 3. Just insert text if there is no substitutions\n *\n * @param {PasteData} dataToInsert - data of Block to insert\n */\n async processInlinePaste(e) {\n const { BlockManager: t, Caret: o } = this.Editor, { content: i } = e;\n if (t.currentBlock && t.currentBlock.tool.isDefault && i.textContent.length < Dn.PATTERN_PROCESSING_MAX_LENGTH) {\n const r = await this.processPattern(i.textContent);\n if (r) {\n const a = t.currentBlock && t.currentBlock.tool.isDefault && t.currentBlock.isEmpty, l = t.paste(r.tool, r.event, a);\n o.setToBlock(l, o.positions.END);\n return;\n }\n }\n if (t.currentBlock && t.currentBlock.currentInput) {\n const r = t.currentBlock.tool.baseSanitizeConfig;\n document.execCommand(\n \"insertHTML\",\n !1,\n Z(i.innerHTML, r)\n );\n } else\n this.insertBlock(e);\n }\n /**\n * Get patterns` matches\n *\n * @param {string} text - text to process\n * @returns {Promise<{event: PasteEvent, tool: string}>}\n */\n async processPattern(e) {\n const t = this.toolsPatterns.find((i) => {\n const s = i.pattern.exec(e);\n return s ? e === s.shift() : !1;\n });\n return t ? {\n event: this.composePasteEvent(\"pattern\", {\n key: t.key,\n data: e\n }),\n tool: t.tool.name\n } : void 0;\n }\n /**\n * Insert pasted Block content to Editor\n *\n * @param {PasteData} data - data to insert\n * @param {boolean} canReplaceCurrentBlock - if true and is current Block is empty, will replace current Block\n * @returns {void}\n */\n insertBlock(e, t = !1) {\n const { BlockManager: o, Caret: i } = this.Editor, { currentBlock: s } = o;\n let r;\n if (t && s && s.isEmpty) {\n r = o.paste(e.tool, e.event, !0), i.setToBlock(r, i.positions.END);\n return;\n }\n r = o.paste(e.tool, e.event), i.setToBlock(r, i.positions.END);\n }\n /**\n * Insert data passed as application/x-editor-js JSON\n *\n * @param {Array} blocks — Blocks' data to insert\n * @returns {void}\n */\n insertEditorJSData(e) {\n const { BlockManager: t, Caret: o, Tools: i } = this.Editor;\n yt(\n e,\n (r) => i.blockTools.get(r).sanitizeConfig\n ).forEach(({ tool: r, data: a }, l) => {\n let c = !1;\n l === 0 && (c = t.currentBlock && t.currentBlock.tool.isDefault && t.currentBlock.isEmpty);\n const u = t.insert({\n tool: r,\n data: a,\n replace: c\n });\n o.setToBlock(u, o.positions.END);\n });\n }\n /**\n * Fetch nodes from Element node\n *\n * @param {Node} node - current node\n * @param {Node[]} nodes - processed nodes\n * @param {Node} destNode - destination node\n */\n processElementNode(e, t, o) {\n const i = Object.keys(this.toolsTags), s = e, { tool: r } = this.toolsTags[s.tagName] || {}, a = this.tagsByTool[r == null ? void 0 : r.name] || [], l = i.includes(s.tagName), c = d.blockElements.includes(s.tagName.toLowerCase()), u = Array.from(s.children).some(\n ({ tagName: p }) => i.includes(p) && !a.includes(p)\n ), h = Array.from(s.children).some(\n ({ tagName: p }) => d.blockElements.includes(p.toLowerCase())\n );\n if (!c && !l && !u)\n return o.appendChild(s), [...t, o];\n if (l && !u || c && !h && !u)\n return [...t, o, s];\n }\n /**\n * Recursively divide HTML string to two types of nodes:\n * 1. Block element\n * 2. Document Fragments contained text and markup tags like a, b, i etc.\n *\n * @param {Node} wrapper - wrapper of paster HTML content\n * @returns {Node[]}\n */\n getNodes(e) {\n const t = Array.from(e.childNodes);\n let o;\n const i = (s, r) => {\n if (d.isEmpty(r) && !d.isSingleTag(r))\n return s;\n const a = s[s.length - 1];\n let l = new DocumentFragment();\n switch (a && d.isFragment(a) && (l = s.pop()), r.nodeType) {\n case Node.ELEMENT_NODE:\n if (o = this.processElementNode(r, s, l), o)\n return o;\n break;\n case Node.TEXT_NODE:\n return l.appendChild(r), [...s, l];\n default:\n return [...s, l];\n }\n return [...s, ...Array.from(r.childNodes).reduce(i, [])];\n };\n return t.reduce(i, []);\n }\n /**\n * Compose paste event with passed type and detail\n *\n * @param {string} type - event type\n * @param {PasteEventDetail} detail - event detail\n */\n composePasteEvent(e, t) {\n return new CustomEvent(e, {\n detail: t\n });\n }\n};\nRn.PATTERN_PROCESSING_MAX_LENGTH = 450;\nlet pa = Rn;\nclass fa extends E {\n constructor() {\n super(...arguments), this.toolsDontSupportReadOnly = [], this.readOnlyEnabled = !1;\n }\n /**\n * Returns state of read only mode\n */\n get isEnabled() {\n return this.readOnlyEnabled;\n }\n /**\n * Set initial state\n */\n async prepare() {\n const { Tools: e } = this.Editor, { blockTools: t } = e, o = [];\n Array.from(t.entries()).forEach(([i, s]) => {\n s.isReadOnlySupported || o.push(i);\n }), this.toolsDontSupportReadOnly = o, this.config.readOnly && o.length > 0 && this.throwCriticalError(), this.toggle(this.config.readOnly, !0);\n }\n /**\n * Set read-only mode or toggle current state\n * Call all Modules `toggleReadOnly` method and re-render Editor\n *\n * @param state - (optional) read-only state or toggle\n * @param isInitial - (optional) true when editor is initializing\n */\n async toggle(e = !this.readOnlyEnabled, t = !1) {\n e && this.toolsDontSupportReadOnly.length > 0 && this.throwCriticalError();\n const o = this.readOnlyEnabled;\n this.readOnlyEnabled = e;\n for (const s in this.Editor)\n this.Editor[s].toggleReadOnly && this.Editor[s].toggleReadOnly(e);\n if (o === e)\n return this.readOnlyEnabled;\n if (t)\n return this.readOnlyEnabled;\n this.Editor.ModificationsObserver.disable();\n const i = await this.Editor.Saver.save();\n return await this.Editor.BlockManager.clear(), await this.Editor.Renderer.render(i.blocks), this.Editor.ModificationsObserver.enable(), this.readOnlyEnabled;\n }\n /**\n * Throws an error about tools which don't support read-only mode\n */\n throwCriticalError() {\n throw new Ho(\n `To enable read-only mode all connected tools should support it. Tools ${this.toolsDontSupportReadOnly.join(\", \")} don't support read-only mode.`\n );\n }\n}\nclass Be extends E {\n constructor() {\n super(...arguments), this.isRectSelectionActivated = !1, this.SCROLL_SPEED = 3, this.HEIGHT_OF_SCROLL_ZONE = 40, this.BOTTOM_SCROLL_ZONE = 1, this.TOP_SCROLL_ZONE = 2, this.MAIN_MOUSE_BUTTON = 0, this.mousedown = !1, this.isScrolling = !1, this.inScrollZone = null, this.startX = 0, this.startY = 0, this.mouseX = 0, this.mouseY = 0, this.stackOfSelected = [], this.listenerIds = [];\n }\n /**\n * CSS classes for the Block\n *\n * @returns {{wrapper: string, content: string}}\n */\n static get CSS() {\n return {\n overlay: \"codex-editor-overlay\",\n overlayContainer: \"codex-editor-overlay__container\",\n rect: \"codex-editor-overlay__rectangle\",\n topScrollZone: \"codex-editor-overlay__scroll-zone--top\",\n bottomScrollZone: \"codex-editor-overlay__scroll-zone--bottom\"\n };\n }\n /**\n * Module Preparation\n * Creating rect and hang handlers\n */\n prepare() {\n this.enableModuleBindings();\n }\n /**\n * Init rect params\n *\n * @param {number} pageX - X coord of mouse\n * @param {number} pageY - Y coord of mouse\n */\n startSelection(e, t) {\n const o = document.elementFromPoint(e - window.pageXOffset, t - window.pageYOffset);\n o.closest(`.${this.Editor.Toolbar.CSS.toolbar}`) || (this.Editor.BlockSelection.allBlocksSelected = !1, this.clearSelection(), this.stackOfSelected = []);\n const s = [\n `.${R.CSS.content}`,\n `.${this.Editor.Toolbar.CSS.toolbar}`,\n `.${this.Editor.InlineToolbar.CSS.inlineToolbar}`\n ], r = o.closest(\".\" + this.Editor.UI.CSS.editorWrapper), a = s.some((l) => !!o.closest(l));\n !r || a || (this.mousedown = !0, this.startX = e, this.startY = t);\n }\n /**\n * Clear all params to end selection\n */\n endSelection() {\n this.mousedown = !1, this.startX = 0, this.startY = 0, this.overlayRectangle.style.display = \"none\";\n }\n /**\n * is RectSelection Activated\n */\n isRectActivated() {\n return this.isRectSelectionActivated;\n }\n /**\n * Mark that selection is end\n */\n clearSelection() {\n this.isRectSelectionActivated = !1;\n }\n /**\n * Sets Module necessary event handlers\n */\n enableModuleBindings() {\n const { container: e } = this.genHTML();\n this.listeners.on(e, \"mousedown\", (t) => {\n this.processMouseDown(t);\n }, !1), this.listeners.on(document.body, \"mousemove\", dt((t) => {\n this.processMouseMove(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseleave\", () => {\n this.processMouseLeave();\n }), this.listeners.on(window, \"scroll\", dt((t) => {\n this.processScroll(t);\n }, 10), {\n passive: !0\n }), this.listeners.on(document.body, \"mouseup\", () => {\n this.processMouseUp();\n }, !1);\n }\n /**\n * Handle mouse down events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseDown(e) {\n if (e.button !== this.MAIN_MOUSE_BUTTON)\n return;\n e.target.closest(d.allInputsSelector) !== null || this.startSelection(e.pageX, e.pageY);\n }\n /**\n * Handle mouse move events\n *\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processMouseMove(e) {\n this.changingRectangle(e), this.scrollByZones(e.clientY);\n }\n /**\n * Handle mouse leave\n */\n processMouseLeave() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * @param {MouseEvent} mouseEvent - mouse event payload\n */\n processScroll(e) {\n this.changingRectangle(e);\n }\n /**\n * Handle mouse up\n */\n processMouseUp() {\n this.clearSelection(), this.endSelection();\n }\n /**\n * Scroll If mouse in scroll zone\n *\n * @param {number} clientY - Y coord of mouse\n */\n scrollByZones(e) {\n if (this.inScrollZone = null, e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.TOP_SCROLL_ZONE), document.documentElement.clientHeight - e <= this.HEIGHT_OF_SCROLL_ZONE && (this.inScrollZone = this.BOTTOM_SCROLL_ZONE), !this.inScrollZone) {\n this.isScrolling = !1;\n return;\n }\n this.isScrolling || (this.scrollVertical(this.inScrollZone === this.TOP_SCROLL_ZONE ? -this.SCROLL_SPEED : this.SCROLL_SPEED), this.isScrolling = !0);\n }\n /**\n * Generates required HTML elements\n *\n * @returns {Object}\n */\n genHTML() {\n const { UI: e } = this.Editor, t = e.nodes.holder.querySelector(\".\" + e.CSS.editorWrapper), o = d.make(\"div\", Be.CSS.overlay, {}), i = d.make(\"div\", Be.CSS.overlayContainer, {}), s = d.make(\"div\", Be.CSS.rect, {});\n return i.appendChild(s), o.appendChild(i), t.appendChild(o), this.overlayRectangle = s, {\n container: t,\n overlay: o\n };\n }\n /**\n * Activates scrolling if blockSelection is active and mouse is in scroll zone\n *\n * @param {number} speed - speed of scrolling\n */\n scrollVertical(e) {\n if (!(this.inScrollZone && this.mousedown))\n return;\n const t = window.pageYOffset;\n window.scrollBy(0, e), this.mouseY += window.pageYOffset - t, setTimeout(() => {\n this.scrollVertical(e);\n }, 0);\n }\n /**\n * Handles the change in the rectangle and its effect\n *\n * @param {MouseEvent} event - mouse event\n */\n changingRectangle(e) {\n if (!this.mousedown)\n return;\n e.pageY !== void 0 && (this.mouseX = e.pageX, this.mouseY = e.pageY);\n const { rightPos: t, leftPos: o, index: i } = this.genInfoForMouseSelection(), s = this.startX > t && this.mouseX > t, r = this.startX < o && this.mouseX < o;\n this.rectCrossesBlocks = !(s || r), this.isRectSelectionActivated || (this.rectCrossesBlocks = !1, this.isRectSelectionActivated = !0, this.shrinkRectangleToPoint(), this.overlayRectangle.style.display = \"block\"), this.updateRectangleSize(), this.Editor.Toolbar.close(), i !== void 0 && (this.trySelectNextBlock(i), this.inverseSelection(), b.get().removeAllRanges());\n }\n /**\n * Shrink rect to singular point\n */\n shrinkRectangleToPoint() {\n this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`;\n }\n /**\n * Select or unselect all of blocks in array if rect is out or in selectable area\n */\n inverseSelection() {\n const t = this.Editor.BlockManager.getBlockByIndex(this.stackOfSelected[0]).selected;\n if (this.rectCrossesBlocks && !t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.selectBlockByIndex(o);\n if (!this.rectCrossesBlocks && t)\n for (const o of this.stackOfSelected)\n this.Editor.BlockSelection.unSelectBlockByIndex(o);\n }\n /**\n * Updates size of rectangle\n */\n updateRectangleSize() {\n this.mouseY >= this.startY ? (this.overlayRectangle.style.top = `${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.bottom = `calc(100% - ${this.mouseY - window.pageYOffset}px`) : (this.overlayRectangle.style.bottom = `calc(100% - ${this.startY - window.pageYOffset}px`, this.overlayRectangle.style.top = `${this.mouseY - window.pageYOffset}px`), this.mouseX >= this.startX ? (this.overlayRectangle.style.left = `${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.right = `calc(100% - ${this.mouseX - window.pageXOffset}px`) : (this.overlayRectangle.style.right = `calc(100% - ${this.startX - window.pageXOffset}px`, this.overlayRectangle.style.left = `${this.mouseX - window.pageXOffset}px`);\n }\n /**\n * Collects information needed to determine the behavior of the rectangle\n *\n * @returns {object} index - index next Block, leftPos - start of left border of Block, rightPos - right border\n */\n genInfoForMouseSelection() {\n const t = document.body.offsetWidth / 2, o = this.mouseY - window.pageYOffset, i = document.elementFromPoint(t, o), s = this.Editor.BlockManager.getBlockByChildNode(i);\n let r;\n s !== void 0 && (r = this.Editor.BlockManager.blocks.findIndex((h) => h.holder === s.holder));\n const a = this.Editor.BlockManager.lastBlock.holder.querySelector(\".\" + R.CSS.content), l = Number.parseInt(window.getComputedStyle(a).width, 10) / 2, c = t - l, u = t + l;\n return {\n index: r,\n leftPos: c,\n rightPos: u\n };\n }\n /**\n * Select block with index index\n *\n * @param index - index of block in redactor\n */\n addBlockInSelection(e) {\n this.rectCrossesBlocks && this.Editor.BlockSelection.selectBlockByIndex(e), this.stackOfSelected.push(e);\n }\n /**\n * Adds a block to the selection and determines which blocks should be selected\n *\n * @param {object} index - index of new block in the reactor\n */\n trySelectNextBlock(e) {\n const t = this.stackOfSelected[this.stackOfSelected.length - 1] === e, o = this.stackOfSelected.length, i = 1, s = -1, r = 0;\n if (t)\n return;\n const a = this.stackOfSelected[o - 1] - this.stackOfSelected[o - 2] > 0;\n let l = r;\n o > 1 && (l = a ? i : s);\n const c = e > this.stackOfSelected[o - 1] && l === i, u = e < this.stackOfSelected[o - 1] && l === s, p = !(c || u || l === r);\n if (!p && (e > this.stackOfSelected[o - 1] || this.stackOfSelected[o - 1] === void 0)) {\n let v = this.stackOfSelected[o - 1] + 1 || e;\n for (v; v <= e; v++)\n this.addBlockInSelection(v);\n return;\n }\n if (!p && e < this.stackOfSelected[o - 1]) {\n for (let v = this.stackOfSelected[o - 1] - 1; v >= e; v--)\n this.addBlockInSelection(v);\n return;\n }\n if (!p)\n return;\n let g = o - 1, f;\n for (e > this.stackOfSelected[o - 1] ? f = () => e > this.stackOfSelected[g] : f = () => e < this.stackOfSelected[g]; f(); )\n this.rectCrossesBlocks && this.Editor.BlockSelection.unSelectBlockByIndex(this.stackOfSelected[g]), this.stackOfSelected.pop(), g--;\n }\n}\nclass ga extends E {\n /**\n * Renders passed blocks as one batch\n *\n * @param blocksData - blocks to render\n */\n async render(e) {\n return new Promise((t) => {\n const { Tools: o, BlockManager: i } = this.Editor;\n if (e.length === 0)\n i.insert();\n else {\n const s = e.map(({ type: r, data: a, tunes: l, id: c }) => {\n o.available.has(r) === !1 && (X(`Tool «${r}» is not found. Check 'tools' property at the Editor.js config.`, \"warn\"), a = this.composeStubDataForTool(r, a, c), r = o.stubTool);\n let u;\n try {\n u = i.composeBlock({\n id: c,\n tool: r,\n data: a,\n tunes: l\n });\n } catch (h) {\n S(`Block «${r}» skipped because of plugins error`, \"error\", {\n data: a,\n error: h\n }), a = this.composeStubDataForTool(r, a, c), r = o.stubTool, u = i.composeBlock({\n id: c,\n tool: r,\n data: a,\n tunes: l\n });\n }\n return u;\n });\n i.insertMany(s);\n }\n window.requestIdleCallback(() => {\n t();\n }, { timeout: 2e3 });\n });\n }\n /**\n * Create data for the Stub Tool that will be used instead of unavailable tool\n *\n * @param tool - unavailable tool name to stub\n * @param data - data of unavailable block\n * @param [id] - id of unavailable block\n */\n composeStubDataForTool(e, t, o) {\n const { Tools: i } = this.Editor;\n let s = e;\n if (i.unavailable.has(e)) {\n const r = i.unavailable.get(e).toolbox;\n r !== void 0 && r[0].title !== void 0 && (s = r[0].title);\n }\n return {\n savedData: {\n id: o,\n type: e,\n data: t\n },\n title: s\n };\n }\n}\nclass ma extends E {\n /**\n * Composes new chain of Promises to fire them alternatelly\n *\n * @returns {OutputData}\n */\n async save() {\n const { BlockManager: e, Tools: t } = this.Editor, o = e.blocks, i = [];\n try {\n o.forEach((a) => {\n i.push(this.getSavedData(a));\n });\n const s = await Promise.all(i), r = await yt(s, (a) => t.blockTools.get(a).sanitizeConfig);\n return this.makeOutput(r);\n } catch (s) {\n X(\"Saving failed due to the Error %o\", \"error\", s);\n }\n }\n /**\n * Saves and validates\n *\n * @param {Block} block - Editor's Tool\n * @returns {ValidatedData} - Tool's validated data\n */\n async getSavedData(e) {\n const t = await e.save(), o = t && await e.validate(t.data);\n return {\n ...t,\n isValid: o\n };\n }\n /**\n * Creates output object with saved data, time and version of editor\n *\n * @param {ValidatedData} allExtractedData - data extracted from Blocks\n * @returns {OutputData}\n */\n makeOutput(e) {\n const t = [];\n return e.forEach(({ id: o, tool: i, data: s, tunes: r, isValid: a }) => {\n if (!a) {\n S(`Block «${i}» skipped because saved data is invalid`);\n return;\n }\n if (i === this.Editor.Tools.stubTool) {\n t.push(s);\n return;\n }\n const l = {\n id: o,\n type: i,\n data: s,\n ...!V(r) && {\n tunes: r\n }\n };\n t.push(l);\n }), {\n time: +/* @__PURE__ */ new Date(),\n blocks: t,\n version: \"2.31.0-rc.7\"\n };\n }\n}\n(function() {\n try {\n if (typeof document < \"u\") {\n var n = document.createElement(\"style\");\n n.appendChild(document.createTextNode(\".ce-paragraph{line-height:1.6em;outline:none}.ce-block:only-of-type .ce-paragraph[data-placeholder-active]:empty:before,.ce-block:only-of-type .ce-paragraph[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active)}.ce-paragraph p:first-of-type{margin-top:0}.ce-paragraph p:last-of-type{margin-bottom:0}\")), document.head.appendChild(n);\n }\n } catch (e) {\n console.error(\"vite-plugin-css-injected-by-js\", e);\n }\n})();\nconst ba = '';\nfunction va(n) {\n const e = document.createElement(\"div\");\n e.innerHTML = n.trim();\n const t = document.createDocumentFragment();\n return t.append(...Array.from(e.childNodes)), t;\n}\n/**\n * Base Paragraph Block for the Editor.js.\n * Represents a regular text block\n *\n * @author CodeX (team@codex.so)\n * @copyright CodeX 2018\n * @license The MIT License (MIT)\n */\nclass fo {\n /**\n * Default placeholder for Paragraph Tool\n *\n * @returns {string}\n * @class\n */\n static get DEFAULT_PLACEHOLDER() {\n return \"\";\n }\n /**\n * Render plugin`s main Element and fill it with saved data\n *\n * @param {object} params - constructor params\n * @param {ParagraphData} params.data - previously saved data\n * @param {ParagraphConfig} params.config - user config for Tool\n * @param {object} params.api - editor.js api\n * @param {boolean} readOnly - read only mode flag\n */\n constructor({ data: e, config: t, api: o, readOnly: i }) {\n this.api = o, this.readOnly = i, this._CSS = {\n block: this.api.styles.block,\n wrapper: \"ce-paragraph\"\n }, this.readOnly || (this.onKeyUp = this.onKeyUp.bind(this)), this._placeholder = t.placeholder ? t.placeholder : fo.DEFAULT_PLACEHOLDER, this._data = e ?? {}, this._element = null, this._preserveBlank = t.preserveBlank ?? !1;\n }\n /**\n * Check if text content is empty and set empty string to inner html.\n * We need this because some browsers (e.g. Safari) insert
into empty contenteditanle elements\n *\n * @param {KeyboardEvent} e - key up event\n */\n onKeyUp(e) {\n if (e.code !== \"Backspace\" && e.code !== \"Delete\" || !this._element)\n return;\n const { textContent: t } = this._element;\n t === \"\" && (this._element.innerHTML = \"\");\n }\n /**\n * Create Tool's view\n *\n * @returns {HTMLDivElement}\n * @private\n */\n drawView() {\n const e = document.createElement(\"DIV\");\n return e.classList.add(this._CSS.wrapper, this._CSS.block), e.contentEditable = \"false\", e.dataset.placeholderActive = this.api.i18n.t(this._placeholder), this._data.text && (e.innerHTML = this._data.text), this.readOnly || (e.contentEditable = \"true\", e.addEventListener(\"keyup\", this.onKeyUp)), e;\n }\n /**\n * Return Tool's view\n *\n * @returns {HTMLDivElement}\n */\n render() {\n return this._element = this.drawView(), this._element;\n }\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {ParagraphData} data\n * @public\n */\n merge(e) {\n if (!this._element)\n return;\n this._data.text += e.text;\n const t = va(e.text);\n this._element.appendChild(t), this._element.normalize();\n }\n /**\n * Validate Paragraph block data:\n * - check for emptiness\n *\n * @param {ParagraphData} savedData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(e) {\n return !(e.text.trim() === \"\" && !this._preserveBlank);\n }\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLDivElement} toolsContent - Paragraph tools rendered view\n * @returns {ParagraphData} - saved data\n * @public\n */\n save(e) {\n return {\n text: e.innerHTML\n };\n }\n /**\n * On paste callback fired from Editor.\n *\n * @param {HTMLPasteEvent} event - event with pasted data\n */\n onPaste(e) {\n const t = {\n text: e.detail.data.innerHTML\n };\n this._data = t, window.requestAnimationFrame(() => {\n this._element && (this._element.innerHTML = this._data.text || \"\");\n });\n }\n /**\n * Enable Conversion Toolbar. Paragraph can be converted to/from other tools\n * @returns {ConversionConfig}\n */\n static get conversionConfig() {\n return {\n export: \"text\",\n // to convert Paragraph to other block, use 'text' property of saved data\n import: \"text\"\n // to covert other block's exported string to Paragraph, fill 'text' property of tool data\n };\n }\n /**\n * Sanitizer rules\n * @returns {SanitizerConfig} - Edtior.js sanitizer config\n */\n static get sanitize() {\n return {\n text: {\n br: !0\n }\n };\n }\n /**\n * Returns true to notify the core that read-only mode is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Used by Editor paste handling API.\n * Provides configuration to handle P tags.\n *\n * @returns {PasteConfig} - Paragraph Paste Setting\n */\n static get pasteConfig() {\n return {\n tags: [\"P\"]\n };\n }\n /**\n * Icon and title for displaying at the Toolbox\n *\n * @returns {ToolboxConfig} - Paragraph Toolbox Setting\n */\n static get toolbox() {\n return {\n icon: ba,\n title: \"Text\"\n };\n }\n}\nclass go {\n constructor() {\n this.commandName = \"bold\";\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n b: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return {\n icon: Ki,\n name: \"bold\",\n onActivate: () => {\n document.execCommand(this.commandName);\n },\n isActive: () => document.queryCommandState(this.commandName)\n };\n }\n /**\n * Set a shortcut\n *\n * @returns {boolean}\n */\n get shortcut() {\n return \"CMD+B\";\n }\n}\ngo.isInline = !0;\ngo.title = \"Bold\";\nclass mo {\n constructor() {\n this.commandName = \"italic\", this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--italic\"\n }, this.nodes = {\n button: null\n };\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n i: {}\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = Ji, this.nodes.button;\n }\n /**\n * Wrap range with tag\n */\n surround() {\n document.execCommand(this.commandName);\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = document.queryCommandState(this.commandName);\n return this.nodes.button.classList.toggle(this.CSS.buttonActive, e), e;\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+I\";\n }\n}\nmo.isInline = !0;\nmo.title = \"Italic\";\nclass bo {\n /**\n * @param api - Editor.js API\n */\n constructor({ api: e }) {\n this.commandLink = \"createLink\", this.commandUnlink = \"unlink\", this.ENTER_KEY = 13, this.CSS = {\n button: \"ce-inline-tool\",\n buttonActive: \"ce-inline-tool--active\",\n buttonModifier: \"ce-inline-tool--link\",\n buttonUnlink: \"ce-inline-tool--unlink\",\n input: \"ce-inline-tool-input\",\n inputShowed: \"ce-inline-tool-input--showed\"\n }, this.nodes = {\n button: null,\n input: null\n }, this.inputOpened = !1, this.toolbar = e.toolbar, this.inlineToolbar = e.inlineToolbar, this.notifier = e.notifier, this.i18n = e.i18n, this.selection = new b();\n }\n /**\n * Sanitizer Rule\n * Leave tags\n *\n * @returns {object}\n */\n static get sanitize() {\n return {\n a: {\n href: !0,\n target: \"_blank\",\n rel: \"nofollow\"\n }\n };\n }\n /**\n * Create button for Inline Toolbar\n */\n render() {\n return this.nodes.button = document.createElement(\"button\"), this.nodes.button.type = \"button\", this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier), this.nodes.button.innerHTML = Co, this.nodes.button;\n }\n /**\n * Input for the link\n */\n renderActions() {\n return this.nodes.input = document.createElement(\"input\"), this.nodes.input.placeholder = this.i18n.t(\"Add a link\"), this.nodes.input.enterKeyHint = \"done\", this.nodes.input.classList.add(this.CSS.input), this.nodes.input.addEventListener(\"keydown\", (e) => {\n e.keyCode === this.ENTER_KEY && this.enterPressed(e);\n }), this.nodes.input;\n }\n /**\n * Handle clicks on the Inline Toolbar icon\n *\n * @param {Range} range - range to wrap with link\n */\n surround(e) {\n if (e) {\n this.inputOpened ? (this.selection.restore(), this.selection.removeFakeBackground()) : (this.selection.setFakeBackground(), this.selection.save());\n const t = this.selection.findParentTag(\"A\");\n if (t) {\n this.selection.expandToTag(t), this.unlink(), this.closeActions(), this.checkState(), this.toolbar.close();\n return;\n }\n }\n this.toggleActions();\n }\n /**\n * Check selection and set activated state to button if there are tag\n */\n checkState() {\n const e = this.selection.findParentTag(\"A\");\n if (e) {\n this.nodes.button.innerHTML = ns, this.nodes.button.classList.add(this.CSS.buttonUnlink), this.nodes.button.classList.add(this.CSS.buttonActive), this.openActions();\n const t = e.getAttribute(\"href\");\n this.nodes.input.value = t !== \"null\" ? t : \"\", this.selection.save();\n } else\n this.nodes.button.innerHTML = Co, this.nodes.button.classList.remove(this.CSS.buttonUnlink), this.nodes.button.classList.remove(this.CSS.buttonActive);\n return !!e;\n }\n /**\n * Function called with Inline Toolbar closing\n */\n clear() {\n this.closeActions();\n }\n /**\n * Set a shortcut\n */\n get shortcut() {\n return \"CMD+K\";\n }\n /**\n * Show/close link input\n */\n toggleActions() {\n this.inputOpened ? this.closeActions(!1) : this.openActions(!0);\n }\n /**\n * @param {boolean} needFocus - on link creation we need to focus input. On editing - nope.\n */\n openActions(e = !1) {\n this.nodes.input.classList.add(this.CSS.inputShowed), e && this.nodes.input.focus(), this.inputOpened = !0;\n }\n /**\n * Close input\n *\n * @param {boolean} clearSavedSelection — we don't need to clear saved selection\n * on toggle-clicks on the icon of opened Toolbar\n */\n closeActions(e = !0) {\n if (this.selection.isFakeBackgroundEnabled) {\n const t = new b();\n t.save(), this.selection.restore(), this.selection.removeFakeBackground(), t.restore();\n }\n this.nodes.input.classList.remove(this.CSS.inputShowed), this.nodes.input.value = \"\", e && this.selection.clearSaved(), this.inputOpened = !1;\n }\n /**\n * Enter pressed on input\n *\n * @param {KeyboardEvent} event - enter keydown event\n */\n enterPressed(e) {\n let t = this.nodes.input.value || \"\";\n if (!t.trim()) {\n this.selection.restore(), this.unlink(), e.preventDefault(), this.closeActions();\n return;\n }\n if (!this.validateURL(t)) {\n this.notifier.show({\n message: \"Pasted link is not valid.\",\n style: \"error\"\n }), S(\"Incorrect Link pasted\", \"warn\", t);\n return;\n }\n t = this.prepareLink(t), this.selection.restore(), this.selection.removeFakeBackground(), this.insertLink(t), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation(), this.selection.collapseToEnd(), this.inlineToolbar.close();\n }\n /**\n * Detects if passed string is URL\n *\n * @param {string} str - string to validate\n * @returns {boolean}\n */\n validateURL(e) {\n return !/\\s/.test(e);\n }\n /**\n * Process link before injection\n * - sanitize\n * - add protocol for links like 'google.com'\n *\n * @param {string} link - raw user input\n */\n prepareLink(e) {\n return e = e.trim(), e = this.addProtocol(e), e;\n }\n /**\n * Add 'http' protocol to the links like 'vc.ru', 'google.com'\n *\n * @param {string} link - string to process\n */\n addProtocol(e) {\n if (/^(\\w+):(\\/\\/)?/.test(e))\n return e;\n const t = /^\\/[^/\\s]/.test(e), o = e.substring(0, 1) === \"#\", i = /^\\/\\/[^/\\s]/.test(e);\n return !t && !o && !i && (e = \"http://\" + e), e;\n }\n /**\n * Inserts tag with \"href\"\n *\n * @param {string} link - \"href\" value\n */\n insertLink(e) {\n const t = this.selection.findParentTag(\"A\");\n t && this.selection.expandToTag(t), document.execCommand(this.commandLink, !1, e);\n }\n /**\n * Removes tag\n */\n unlink() {\n document.execCommand(this.commandUnlink);\n }\n}\nbo.isInline = !0;\nbo.title = \"Link\";\nclass Fn {\n /**\n * @param api - Editor.js API\n */\n constructor({ api: e }) {\n this.i18nAPI = e.i18n, this.blocksAPI = e.blocks, this.selectionAPI = e.selection, this.toolsAPI = e.tools, this.caretAPI = e.caret;\n }\n /**\n * Returns tool's UI config\n */\n async render() {\n const e = b.get(), t = this.blocksAPI.getBlockByElement(e.anchorNode);\n if (t === void 0)\n return [];\n const o = this.toolsAPI.getBlockTools(), i = await Yo(t, o);\n if (i.length === 0)\n return [];\n const s = i.reduce((c, u) => {\n var h;\n return (h = u.toolbox) == null || h.forEach((p) => {\n c.push({\n icon: p.icon,\n title: z.t(K.toolNames, p.title),\n name: u.name,\n closeOnActivate: !0,\n onActivate: async () => {\n const g = await this.blocksAPI.convert(t.id, u.name, p.data);\n this.caretAPI.setToBlock(g, \"end\");\n }\n });\n }), c;\n }, []), r = await t.getActiveToolboxEntry(), a = r !== void 0 ? r.icon : Go, l = !be();\n return {\n icon: a,\n name: \"convert-to\",\n hint: {\n title: this.i18nAPI.t(\"Convert to\")\n },\n children: {\n searchable: l,\n items: s,\n onOpen: () => {\n l && (this.selectionAPI.setFakeBackground(), this.selectionAPI.save());\n },\n onClose: () => {\n l && (this.selectionAPI.restore(), this.selectionAPI.removeFakeBackground());\n }\n }\n };\n }\n}\nFn.isInline = !0;\nclass jn {\n /**\n * @param options - constructor options\n * @param options.data - stub tool data\n * @param options.api - Editor.js API\n */\n constructor({ data: e, api: t }) {\n this.CSS = {\n wrapper: \"ce-stub\",\n info: \"ce-stub__info\",\n title: \"ce-stub__title\",\n subtitle: \"ce-stub__subtitle\"\n }, this.api = t, this.title = e.title || this.api.i18n.t(\"Error\"), this.subtitle = this.api.i18n.t(\"The block can not be displayed correctly.\"), this.savedData = e.savedData, this.wrapper = this.make();\n }\n /**\n * Returns stub holder\n *\n * @returns {HTMLElement}\n */\n render() {\n return this.wrapper;\n }\n /**\n * Return original Tool data\n *\n * @returns {BlockToolData}\n */\n save() {\n return this.savedData;\n }\n /**\n * Create Tool html markup\n *\n * @returns {HTMLElement}\n */\n make() {\n const e = d.make(\"div\", this.CSS.wrapper), t = is, o = d.make(\"div\", this.CSS.info), i = d.make(\"div\", this.CSS.title, {\n textContent: this.title\n }), s = d.make(\"div\", this.CSS.subtitle, {\n textContent: this.subtitle\n });\n return e.innerHTML = t, o.appendChild(i), o.appendChild(s), e.appendChild(o), e;\n }\n}\njn.isReadOnlySupported = !0;\nclass ka extends Tt {\n constructor() {\n super(...arguments), this.type = ae.Inline;\n }\n /**\n * Returns title for Inline Tool if specified by user\n */\n get title() {\n return this.constructable[We.Title];\n }\n /**\n * Constructs new InlineTool instance from constructable\n */\n create() {\n return new this.constructable({\n api: this.api,\n config: this.settings\n });\n }\n /**\n * Allows inline tool to be available in read-only mode\n * Can be used, for example, by comments tool\n */\n get isReadOnlySupported() {\n return this.constructable[We.IsReadOnlySupported] ?? !1;\n }\n}\nclass ya extends Tt {\n constructor() {\n super(...arguments), this.type = ae.Tune;\n }\n /**\n * Constructs new BlockTune instance from constructable\n *\n * @param data - Tune data\n * @param block - Block API object\n */\n create(e, t) {\n return new this.constructable({\n api: this.api,\n config: this.settings,\n block: t,\n data: e\n });\n }\n}\nclass j extends Map {\n /**\n * Returns Block Tools collection\n */\n get blockTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isBlock());\n return new j(e);\n }\n /**\n * Returns Inline Tools collection\n */\n get inlineTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInline());\n return new j(e);\n }\n /**\n * Returns Block Tunes collection\n */\n get blockTunes() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isTune());\n return new j(e);\n }\n /**\n * Returns internal Tools collection\n */\n get internalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => t.isInternal);\n return new j(e);\n }\n /**\n * Returns Tools collection provided by user\n */\n get externalTools() {\n const e = Array.from(this.entries()).filter(([, t]) => !t.isInternal);\n return new j(e);\n }\n}\nvar wa = Object.defineProperty, Ea = Object.getOwnPropertyDescriptor, Hn = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Ea(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && wa(e, t, i), i;\n};\nclass vo extends Tt {\n constructor() {\n super(...arguments), this.type = ae.Block, this.inlineTools = new j(), this.tunes = new j();\n }\n /**\n * Creates new Tool instance\n *\n * @param data - Tool data\n * @param block - BlockAPI for current Block\n * @param readOnly - True if Editor is in read-only mode\n */\n create(e, t, o) {\n return new this.constructable({\n data: e,\n block: t,\n readOnly: o,\n api: this.api,\n config: this.settings\n });\n }\n /**\n * Returns true if read-only mode is supported by Tool\n */\n get isReadOnlySupported() {\n return this.constructable[pe.IsReadOnlySupported] === !0;\n }\n /**\n * Returns true if Tool supports linebreaks\n */\n get isLineBreaksEnabled() {\n return this.constructable[pe.IsEnabledLineBreaks];\n }\n /**\n * Returns Tool toolbox configuration (internal or user-specified).\n *\n * Merges internal and user-defined toolbox configs based on the following rules:\n *\n * - If both internal and user-defined toolbox configs are arrays their items are merged.\n * Length of the second one is kept.\n *\n * - If both are objects their properties are merged.\n *\n * - If one is an object and another is an array than internal config is replaced with user-defined\n * config. This is made to allow user to override default tool's toolbox representation (single/multiple entries)\n */\n get toolbox() {\n const e = this.constructable[pe.Toolbox], t = this.config[Pe.Toolbox];\n if (!V(e) && t !== !1)\n return t ? Array.isArray(e) ? Array.isArray(t) ? t.map((o, i) => {\n const s = e[i];\n return s ? {\n ...s,\n ...o\n } : o;\n }) : [t] : Array.isArray(t) ? t : [\n {\n ...e,\n ...t\n }\n ] : Array.isArray(e) ? e : [e];\n }\n /**\n * Returns Tool conversion configuration\n */\n get conversionConfig() {\n return this.constructable[pe.ConversionConfig];\n }\n /**\n * Returns enabled inline tools for Tool\n */\n get enabledInlineTools() {\n return this.config[Pe.EnabledInlineTools] || !1;\n }\n /**\n * Returns enabled tunes for Tool\n */\n get enabledBlockTunes() {\n return this.config[Pe.EnabledBlockTunes];\n }\n /**\n * Returns Tool paste configuration\n */\n get pasteConfig() {\n return this.constructable[pe.PasteConfig] ?? {};\n }\n get sanitizeConfig() {\n const e = super.sanitizeConfig, t = this.baseSanitizeConfig;\n if (V(e))\n return t;\n const o = {};\n for (const i in e)\n if (Object.prototype.hasOwnProperty.call(e, i)) {\n const s = e[i];\n D(s) ? o[i] = Object.assign({}, t, s) : o[i] = s;\n }\n return o;\n }\n get baseSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), Array.from(this.tunes.values()).forEach((t) => Object.assign(e, t.sanitizeConfig)), e;\n }\n}\nHn([\n me\n], vo.prototype, \"sanitizeConfig\", 1);\nHn([\n me\n], vo.prototype, \"baseSanitizeConfig\", 1);\nclass xa {\n /**\n * @class\n * @param config - tools config\n * @param editorConfig - EditorJS config\n * @param api - EditorJS API module\n */\n constructor(e, t, o) {\n this.api = o, this.config = e, this.editorConfig = t;\n }\n /**\n * Returns Tool object based on it's type\n *\n * @param name - tool name\n */\n get(e) {\n const { class: t, isInternal: o = !1, ...i } = this.config[e], s = this.getConstructor(t), r = t[mt.IsTune];\n return new s({\n name: e,\n constructable: t,\n config: i,\n api: this.api.getMethodsForTool(e, r),\n isDefault: e === this.editorConfig.defaultBlock,\n defaultPlaceholder: this.editorConfig.placeholder,\n isInternal: o\n });\n }\n /**\n * Find appropriate Tool object constructor for Tool constructable\n *\n * @param constructable - Tools constructable\n */\n getConstructor(e) {\n switch (!0) {\n case e[We.IsInline]:\n return ka;\n case e[mt.IsTune]:\n return ya;\n default:\n return vo;\n }\n }\n}\nclass $n {\n /**\n * MoveDownTune constructor\n *\n * @param {API} api — Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: Xi,\n title: this.api.i18n.t(\"Move down\"),\n onActivate: () => this.handleClick(),\n name: \"move-down\"\n };\n }\n /**\n * Handle clicks on 'move down' button\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e + 1);\n if (!t)\n throw new Error(\"Unable to move Block down since it is already the last\");\n const o = t.holder, i = o.getBoundingClientRect();\n let s = Math.abs(window.innerHeight - o.offsetHeight);\n i.top < window.innerHeight && (s = window.scrollY + o.offsetHeight), window.scrollTo(0, s), this.api.blocks.move(e + 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\n$n.isTune = !0;\nclass zn {\n /**\n * DeleteTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: Gi,\n title: this.api.i18n.t(\"Delete\"),\n name: \"delete\",\n confirmation: {\n title: this.api.i18n.t(\"Click to delete\"),\n onActivate: () => this.handleClick()\n }\n };\n }\n /**\n * Delete block conditions passed\n */\n handleClick() {\n this.api.blocks.delete();\n }\n}\nzn.isTune = !0;\nclass Un {\n /**\n * MoveUpTune constructor\n *\n * @param {API} api - Editor's API\n */\n constructor({ api: e }) {\n this.CSS = {\n animation: \"wobble\"\n }, this.api = e;\n }\n /**\n * Tune's appearance in block settings menu\n */\n render() {\n return {\n icon: Zi,\n title: this.api.i18n.t(\"Move up\"),\n onActivate: () => this.handleClick(),\n name: \"move-up\"\n };\n }\n /**\n * Move current block up\n */\n handleClick() {\n const e = this.api.blocks.getCurrentBlockIndex(), t = this.api.blocks.getBlockByIndex(e), o = this.api.blocks.getBlockByIndex(e - 1);\n if (e === 0 || !t || !o)\n throw new Error(\"Unable to move Block up since it is already the first\");\n const i = t.holder, s = o.holder, r = i.getBoundingClientRect(), a = s.getBoundingClientRect();\n let l;\n a.top > 0 ? l = Math.abs(r.top) - Math.abs(a.top) : l = Math.abs(r.top) + a.height, window.scrollBy(0, -1 * l), this.api.blocks.move(e - 1), this.api.toolbar.toggleBlockSettings(!0);\n }\n}\nUn.isTune = !0;\nvar Ba = Object.defineProperty, Ca = Object.getOwnPropertyDescriptor, Ta = (n, e, t, o) => {\n for (var i = o > 1 ? void 0 : o ? Ca(e, t) : e, s = n.length - 1, r; s >= 0; s--)\n (r = n[s]) && (i = (o ? r(e, t, i) : r(i)) || i);\n return o && i && Ba(e, t, i), i;\n};\nclass Wn extends E {\n constructor() {\n super(...arguments), this.stubTool = \"stub\", this.toolsAvailable = new j(), this.toolsUnavailable = new j();\n }\n /**\n * Returns available Tools\n */\n get available() {\n return this.toolsAvailable;\n }\n /**\n * Returns unavailable Tools\n */\n get unavailable() {\n return this.toolsUnavailable;\n }\n /**\n * Return Tools for the Inline Toolbar\n */\n get inlineTools() {\n return this.available.inlineTools;\n }\n /**\n * Return editor block tools\n */\n get blockTools() {\n return this.available.blockTools;\n }\n /**\n * Return available Block Tunes\n *\n * @returns {object} - object of Inline Tool's classes\n */\n get blockTunes() {\n return this.available.blockTunes;\n }\n /**\n * Returns default Tool object\n */\n get defaultTool() {\n return this.blockTools.get(this.config.defaultBlock);\n }\n /**\n * Returns internal tools\n */\n get internal() {\n return this.available.internalTools;\n }\n /**\n * Creates instances via passed or default configuration\n *\n * @returns {Promise}\n */\n async prepare() {\n if (this.validateTools(), this.config.tools = ut({}, this.internalTools, this.config.tools), !Object.prototype.hasOwnProperty.call(this.config, \"tools\") || Object.keys(this.config.tools).length === 0)\n throw Error(\"Can't start without tools\");\n const e = this.prepareConfig();\n this.factory = new xa(e, this.config, this.Editor.API);\n const t = this.getListOfPrepareFunctions(e);\n if (t.length === 0)\n return Promise.resolve();\n await Qn(t, (o) => {\n this.toolPrepareMethodSuccess(o);\n }, (o) => {\n this.toolPrepareMethodFallback(o);\n }), this.prepareBlockTools();\n }\n getAllInlineToolsSanitizeConfig() {\n const e = {};\n return Array.from(this.inlineTools.values()).forEach((t) => {\n Object.assign(e, t.sanitizeConfig);\n }), e;\n }\n /**\n * Calls each Tool reset method to clean up anything set by Tool\n */\n destroy() {\n Object.values(this.available).forEach(async (e) => {\n A(e.reset) && await e.reset();\n });\n }\n /**\n * Returns internal tools\n * Includes Bold, Italic, Link and Paragraph\n */\n get internalTools() {\n return {\n convertTo: {\n class: Fn,\n isInternal: !0\n },\n link: {\n class: bo,\n isInternal: !0\n },\n bold: {\n class: go,\n isInternal: !0\n },\n italic: {\n class: mo,\n isInternal: !0\n },\n paragraph: {\n class: fo,\n inlineToolbar: !0,\n isInternal: !0\n },\n stub: {\n class: jn,\n isInternal: !0\n },\n moveUp: {\n class: Un,\n isInternal: !0\n },\n delete: {\n class: zn,\n isInternal: !0\n },\n moveDown: {\n class: $n,\n isInternal: !0\n }\n };\n }\n /**\n * Tool prepare method success callback\n *\n * @param {object} data - append tool to available list\n */\n toolPrepareMethodSuccess(e) {\n const t = this.factory.get(e.toolName);\n if (t.isInline()) {\n const i = [\"render\"].filter((s) => !t.create()[s]);\n if (i.length) {\n S(\n `Incorrect Inline Tool: ${t.name}. Some of required methods is not implemented %o`,\n \"warn\",\n i\n ), this.toolsUnavailable.set(t.name, t);\n return;\n }\n }\n this.toolsAvailable.set(t.name, t);\n }\n /**\n * Tool prepare method fail callback\n *\n * @param {object} data - append tool to unavailable list\n */\n toolPrepareMethodFallback(e) {\n this.toolsUnavailable.set(e.toolName, this.factory.get(e.toolName));\n }\n /**\n * Binds prepare function of plugins with user or default config\n *\n * @returns {Array} list of functions that needs to be fired sequentially\n * @param config - tools config\n */\n getListOfPrepareFunctions(e) {\n const t = [];\n return Object.entries(e).forEach(([o, i]) => {\n t.push({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n function: A(i.class.prepare) ? i.class.prepare : () => {\n },\n data: {\n toolName: o,\n config: i.config\n }\n });\n }), t;\n }\n /**\n * Assign enabled Inline Tools and Block Tunes for Block Tool\n */\n prepareBlockTools() {\n Array.from(this.blockTools.values()).forEach((e) => {\n this.assignInlineToolsToBlockTool(e), this.assignBlockTunesToBlockTool(e);\n });\n }\n /**\n * Assign enabled Inline Tools for Block Tool\n *\n * @param tool - Block Tool\n */\n assignInlineToolsToBlockTool(e) {\n if (this.config.inlineToolbar !== !1) {\n if (e.enabledInlineTools === !0) {\n e.inlineTools = new j(\n Array.isArray(this.config.inlineToolbar) ? this.config.inlineToolbar.map((t) => [t, this.inlineTools.get(t)]) : Array.from(this.inlineTools.entries())\n );\n return;\n }\n Array.isArray(e.enabledInlineTools) && (e.inlineTools = new j(\n /** Prepend ConvertTo Inline Tool */\n [\"convertTo\", ...e.enabledInlineTools].map((t) => [t, this.inlineTools.get(t)])\n ));\n }\n }\n /**\n * Assign enabled Block Tunes for Block Tool\n *\n * @param tool — Block Tool\n */\n assignBlockTunesToBlockTool(e) {\n if (e.enabledBlockTunes !== !1) {\n if (Array.isArray(e.enabledBlockTunes)) {\n const t = new j(\n e.enabledBlockTunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new j([...t, ...this.blockTunes.internalTools]);\n return;\n }\n if (Array.isArray(this.config.tunes)) {\n const t = new j(\n this.config.tunes.map((o) => [o, this.blockTunes.get(o)])\n );\n e.tunes = new j([...t, ...this.blockTunes.internalTools]);\n return;\n }\n e.tunes = this.blockTunes.internalTools;\n }\n }\n /**\n * Validate Tools configuration objects and throw Error for user if it is invalid\n */\n validateTools() {\n for (const e in this.config.tools)\n if (Object.prototype.hasOwnProperty.call(this.config.tools, e)) {\n if (e in this.internalTools)\n return;\n const t = this.config.tools[e];\n if (!A(t) && !A(t.class))\n throw Error(\n `Tool «${e}» must be a constructor function or an object with function in the «class» property`\n );\n }\n }\n /**\n * Unify tools config\n */\n prepareConfig() {\n const e = {};\n for (const t in this.config.tools)\n D(this.config.tools[t]) ? e[t] = this.config.tools[t] : e[t] = { class: this.config.tools[t] };\n return e;\n }\n}\nTa([\n me\n], Wn.prototype, \"getAllInlineToolsSanitizeConfig\", 1);\nconst Sa = `:root{--selectionColor: #e1f2ff;--inlineSelectionColor: #d4ecff;--bg-light: #eff2f5;--grayText: #707684;--color-dark: #1D202B;--color-active-icon: #388AE5;--color-gray-border: rgba(201, 201, 204, .48);--content-width: 650px;--narrow-mode-right-padding: 50px;--toolbox-buttons-size: 26px;--toolbox-buttons-size--mobile: 36px;--icon-size: 20px;--icon-size--mobile: 28px;--block-padding-vertical: .4em;--color-line-gray: #EFF0F1 }.codex-editor{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1}.codex-editor .hide{display:none}.codex-editor__redactor [contenteditable]:empty:after{content:\"\\\\feff\"}@media (min-width: 651px){.codex-editor--narrow .codex-editor__redactor{margin-right:50px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .codex-editor__redactor{margin-left:50px;margin-right:0}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__actions{right:-5px}}.codex-editor-copyable{position:absolute;height:1px;width:1px;top:-400%;opacity:.001}.codex-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;pointer-events:none;overflow:hidden}.codex-editor-overlay__container{position:relative;pointer-events:auto;z-index:0}.codex-editor-overlay__rectangle{position:absolute;pointer-events:none;background-color:#2eaadc33;border:1px solid transparent}.codex-editor svg{max-height:100%}.codex-editor path{stroke:currentColor}.codex-editor ::-moz-selection{background-color:#d4ecff}.codex-editor ::selection{background-color:#d4ecff}.codex-editor--toolbox-opened [contentEditable=true][data-placeholder]:focus:before{opacity:0!important}.ce-scroll-locked{overflow:hidden}.ce-scroll-locked--hard{overflow:hidden;top:calc(-1 * var(--window-scroll-offset));position:fixed;width:100%}.ce-toolbar{position:absolute;left:0;right:0;top:0;-webkit-transition:opacity .1s ease;transition:opacity .1s ease;will-change:opacity,top;display:none}.ce-toolbar--opened{display:block}.ce-toolbar__content{max-width:650px;margin:0 auto;position:relative}.ce-toolbar__plus{color:#1d202b;cursor:pointer;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0}@media (max-width: 650px){.ce-toolbar__plus{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__plus:hover{background-color:#eff2f5}}.ce-toolbar__plus--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.ce-toolbar__plus-shortcut{opacity:.6;word-spacing:-2px;margin-top:5px}@media (max-width: 650px){.ce-toolbar__plus{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__plus--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__plus--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__actions{position:absolute;right:100%;opacity:0;display:-webkit-box;display:-ms-flexbox;display:flex;padding-right:5px}.ce-toolbar__actions--opened{opacity:1}@media (max-width: 650px){.ce-toolbar__actions{right:auto}}.ce-toolbar__settings-btn{color:#1d202b;width:26px;height:26px;border-radius:7px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;margin-left:3px;cursor:pointer;user-select:none}@media (max-width: 650px){.ce-toolbar__settings-btn{width:36px;height:36px}}@media (hover: hover){.ce-toolbar__settings-btn:hover{background-color:#eff2f5}}.ce-toolbar__settings-btn--active{background-color:#eff2f5;-webkit-animation:bounceIn .75s 1;animation:bounceIn .75s 1;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@media (min-width: 651px){.ce-toolbar__settings-btn{width:24px}}.ce-toolbar__settings-btn--hidden{display:none}@media (max-width: 650px){.ce-toolbar__settings-btn{position:absolute;background-color:#fff;border:1px solid #E8E8EB;-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.13);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;z-index:2;position:static}.ce-toolbar__settings-btn--left-oriented:before{left:15px;margin-left:0}.ce-toolbar__settings-btn--right-oriented:before{left:auto;right:15px;margin-left:0}}.ce-toolbar__plus svg,.ce-toolbar__settings-btn svg{width:24px;height:24px}@media (min-width: 651px){.codex-editor--narrow .ce-toolbar__plus{left:5px}}@media (min-width: 651px){.codex-editor--narrow .ce-toolbox .ce-popover{right:0;left:auto;left:initial}}.ce-inline-toolbar{--y-offset: 8px;--color-background-icon-active: rgba(56, 138, 229, .1);--color-text-icon-active: #388AE5;--color-text-primary: black;position:absolute;visibility:hidden;-webkit-transition:opacity .25s ease;transition:opacity .25s ease;will-change:opacity,left,top;top:0;left:0;z-index:3;opacity:1;visibility:visible}.ce-inline-toolbar [hidden]{display:none!important}.ce-inline-toolbar__toggler-and-button-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;padding:0 6px}.ce-inline-toolbar__buttons{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown{display:-webkit-box;display:-ms-flexbox;display:flex;padding:6px;margin:0 6px 0 -6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;border-right:1px solid rgba(201,201,204,.48);-webkit-box-sizing:border-box;box-sizing:border-box}@media (hover: hover){.ce-inline-toolbar__dropdown:hover{background:#eff2f5}}.ce-inline-toolbar__dropdown--hidden{display:none}.ce-inline-toolbar__dropdown-content,.ce-inline-toolbar__dropdown-arrow{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-inline-toolbar__dropdown-content svg,.ce-inline-toolbar__dropdown-arrow svg{width:20px;height:20px}.ce-inline-toolbar__shortcut{opacity:.6;word-spacing:-3px;margin-top:3px}.ce-inline-tool{color:var(--color-text-primary);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:0;border-radius:4px;line-height:normal;height:100%;padding:0;width:28px;background-color:transparent;cursor:pointer}@media (max-width: 650px){.ce-inline-tool{width:36px;height:36px}}@media (hover: hover){.ce-inline-tool:hover{background-color:#f8f8f8}}.ce-inline-tool svg{display:block;width:20px;height:20px}@media (max-width: 650px){.ce-inline-tool svg{width:28px;height:28px}}.ce-inline-tool--link .icon--unlink,.ce-inline-tool--unlink .icon--link{display:none}.ce-inline-tool--unlink .icon--unlink{display:inline-block;margin-bottom:-1px}.ce-inline-tool-input{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:4px 8px;font-size:14px;line-height:22px;outline:none;margin:0;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;display:none;font-weight:500;-webkit-appearance:none;font-family:inherit}@media (max-width: 650px){.ce-inline-tool-input{font-size:15px;font-weight:500}}.ce-inline-tool-input::-webkit-input-placeholder{color:#707684}.ce-inline-tool-input::-moz-placeholder{color:#707684}.ce-inline-tool-input:-ms-input-placeholder{color:#707684}.ce-inline-tool-input::-ms-input-placeholder{color:#707684}.ce-inline-tool-input::placeholder{color:#707684}.ce-inline-tool-input--showed{display:block}.ce-inline-tool--active{background:var(--color-background-icon-active);color:var(--color-text-icon-active)}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.ce-block{-webkit-animation:fade-in .3s ease;animation:fade-in .3s ease;-webkit-animation-fill-mode:none;animation-fill-mode:none;-webkit-animation-fill-mode:initial;animation-fill-mode:initial}.ce-block:first-of-type{margin-top:0}.ce-block--selected .ce-block__content{background:#e1f2ff}.ce-block--selected .ce-block__content [contenteditable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ce-block--selected .ce-block__content img,.ce-block--selected .ce-block__content .ce-stub{opacity:.55}.ce-block--stretched .ce-block__content{max-width:none}.ce-block__content{position:relative;max-width:650px;margin:0 auto;-webkit-transition:background-color .15s ease;transition:background-color .15s ease}.ce-block--drop-target .ce-block__content:before{content:\"\";position:absolute;top:100%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #388AE5;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{content:\"\";position:absolute;top:100%;height:1px;width:100%;color:#388ae5;background:repeating-linear-gradient(90deg,#388AE5,#388AE5 1px,#fff 1px,#fff 6px)}.ce-block a{cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline}.ce-block b{font-weight:700}.ce-block i{font-style:italic}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}20%{-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}60%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes selectionBounce{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}50%{-webkit-transform:scale3d(1.01,1.01,1.01);transform:scale3d(1.01,1.01,1.01)}70%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@-webkit-keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}@keyframes buttonClicked{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(.95,.95,.95);transform:scale3d(.95,.95,.95)}60%{-webkit-transform:scale3d(1.02,1.02,1.02);transform:scale3d(1.02,1.02,1.02)}80%{-webkit-transform:scale3d(1,1,1);transform:scaleZ(1)}}.cdx-block{padding:.4em 0}.cdx-block::-webkit-input-placeholder{line-height:normal!important}.cdx-input{border:1px solid rgba(201,201,204,.48);-webkit-box-shadow:inset 0 1px 2px 0 rgba(35,44,72,.06);box-shadow:inset 0 1px 2px #232c480f;border-radius:3px;padding:10px 12px;outline:none;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.cdx-input[data-placeholder]:before{position:static!important}.cdx-input[data-placeholder]:before{display:inline-block;width:0;white-space:nowrap;pointer-events:none}.cdx-settings-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:3px;cursor:pointer;border:0;outline:none;background-color:transparent;vertical-align:bottom;color:inherit;margin:0;min-width:26px;min-height:26px}.cdx-settings-button--focused{background:rgba(34,186,255,.08)!important}.cdx-settings-button--focused{-webkit-box-shadow:inset 0 0 0px 1px rgba(7,161,227,.08);box-shadow:inset 0 0 0 1px #07a1e314}.cdx-settings-button--focused-animated{-webkit-animation-name:buttonClicked;animation-name:buttonClicked;-webkit-animation-duration:.25s;animation-duration:.25s}.cdx-settings-button--active{color:#388ae5}.cdx-settings-button svg{width:auto;height:auto}@media (max-width: 650px){.cdx-settings-button svg{width:28px;height:28px}}@media (max-width: 650px){.cdx-settings-button{width:36px;height:36px;border-radius:8px}}@media (hover: hover){.cdx-settings-button:hover{background-color:#eff2f5}}.cdx-loader{position:relative;border:1px solid rgba(201,201,204,.48)}.cdx-loader:before{content:\"\";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-11px 0 0 -11px;border:2px solid rgba(201,201,204,.48);border-left-color:#388ae5;border-radius:50%;-webkit-animation:cdxRotation 1.2s infinite linear;animation:cdxRotation 1.2s infinite linear}@-webkit-keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes cdxRotation{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cdx-button{padding:13px;border-radius:3px;border:1px solid rgba(201,201,204,.48);font-size:14.9px;background:#fff;-webkit-box-shadow:0 2px 2px 0 rgba(18,30,57,.04);box-shadow:0 2px 2px #121e390a;color:#707684;text-align:center;cursor:pointer}@media (hover: hover){.cdx-button:hover{background:#FBFCFE;-webkit-box-shadow:0 1px 3px 0 rgba(18,30,57,.08);box-shadow:0 1px 3px #121e3914}}.cdx-button svg{height:20px;margin-right:.2em;margin-top:-2px}.ce-stub{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 18px;margin:10px 0;border-radius:10px;background:#eff2f5;border:1px solid #EFF0F1;color:#707684;font-size:14px}.ce-stub svg{width:20px;height:20px}.ce-stub__info{margin-left:14px}.ce-stub__title{font-weight:500;text-transform:capitalize}.codex-editor.codex-editor--rtl{direction:rtl}.codex-editor.codex-editor--rtl .cdx-list{padding-left:0;padding-right:40px}.codex-editor.codex-editor--rtl .ce-toolbar__plus{right:-26px;left:auto}.codex-editor.codex-editor--rtl .ce-toolbar__actions{right:auto;left:-26px}@media (max-width: 650px){.codex-editor.codex-editor--rtl .ce-toolbar__actions{margin-left:0;margin-right:auto;padding-right:0;padding-left:10px}}.codex-editor.codex-editor--rtl .ce-settings{left:5px;right:auto}.codex-editor.codex-editor--rtl .ce-settings:before{right:auto;left:25px}.codex-editor.codex-editor--rtl .ce-settings__button:not(:nth-child(3n+3)){margin-left:3px;margin-right:0}.codex-editor.codex-editor--rtl .ce-conversion-tool__icon{margin-right:0;margin-left:10px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown{border-right:0px solid transparent;border-left:1px solid rgba(201,201,204,.48);margin:0 -6px 0 6px}.codex-editor.codex-editor--rtl .ce-inline-toolbar__dropdown .icon--toggler-down{margin-left:0;margin-right:4px}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__plus{left:0;right:5px}}@media (min-width: 651px){.codex-editor--narrow.codex-editor--rtl .ce-toolbar__actions{left:-5px}}.cdx-search-field{--icon-margin-right: 10px;background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-search-field__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:var(--icon-margin-right)}.cdx-search-field__icon svg{width:20px;height:20px;color:#707684}.cdx-search-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - 26px - var(--icon-margin-right))}.cdx-search-field__input::-webkit-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-moz-placeholder{color:#707684;font-weight:500}.cdx-search-field__input:-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::-ms-input-placeholder{color:#707684;font-weight:500}.cdx-search-field__input::placeholder{color:#707684;font-weight:500}.ce-popover{--border-radius: 6px;--width: 200px;--max-height: 270px;--padding: 6px;--offset-from-target: 8px;--color-border: #EFF0F1;--color-shadow: rgba(13, 20, 33, .1);--color-background: white;--color-text-primary: black;--color-text-secondary: #707684;--color-border-icon: rgba(201, 201, 204, .48);--color-border-icon-disabled: #EFF0F1;--color-text-icon-active: #388AE5;--color-background-icon-active: rgba(56, 138, 229, .1);--color-background-item-focus: rgba(34, 186, 255, .08);--color-shadow-item-focus: rgba(7, 161, 227, .08);--color-background-item-hover: #F8F8F8;--color-background-item-confirm: #E24A4A;--color-background-item-confirm-hover: #CE4343;--popover-top: calc(100% + var(--offset-from-target));--popover-left: 0;--nested-popover-overlap: 4px;--icon-size: 20px;--item-padding: 3px;--item-height: calc(var(--icon-size) + 2 * var(--item-padding))}.ce-popover__container{min-width:var(--width);width:var(--width);max-height:var(--max-height);border-radius:var(--border-radius);overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0px 3px 15px -3px var(--color-shadow);box-shadow:0 3px 15px -3px var(--color-shadow);position:absolute;left:var(--popover-left);top:var(--popover-top);background:var(--color-background);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;z-index:4;opacity:0;max-height:0;pointer-events:none;padding:0;border:none}.ce-popover--opened>.ce-popover__container{opacity:1;padding:var(--padding);max-height:var(--max-height);pointer-events:auto;-webkit-animation:panelShowing .1s ease;animation:panelShowing .1s ease;border:1px solid var(--color-border)}@media (max-width: 650px){.ce-popover--opened>.ce-popover__container{-webkit-animation:panelShowingMobile .25s ease;animation:panelShowingMobile .25s ease}}.ce-popover--open-top .ce-popover__container{--popover-top: calc(-1 * (var(--offset-from-target) + var(--popover-height)))}.ce-popover--open-left .ce-popover__container{--popover-left: calc(-1 * var(--width) + 100%)}.ce-popover__items{overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@media (max-width: 650px){.ce-popover__overlay{position:fixed;top:0;bottom:0;left:0;right:0;background:#1D202B;z-index:3;opacity:.5;-webkit-transition:opacity .12s ease-in;transition:opacity .12s ease-in;will-change:opacity;visibility:visible}}.ce-popover__overlay--hidden{display:none}@media (max-width: 650px){.ce-popover .ce-popover__container{--offset: 5px;position:fixed;max-width:none;min-width:calc(100% - var(--offset) * 2);left:var(--offset);right:var(--offset);bottom:calc(var(--offset) + env(safe-area-inset-bottom));top:auto;border-radius:10px}}.ce-popover__search{margin-bottom:5px}.ce-popover__nothing-found-message{color:#707684;display:none;cursor:default;padding:3px;font-size:14px;line-height:20px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ce-popover__nothing-found-message--displayed{display:block}.ce-popover--nested .ce-popover__container{--popover-left: calc(var(--nesting-level) * (var(--width) - var(--nested-popover-overlap)));top:calc(var(--trigger-item-top) - var(--nested-popover-overlap));position:absolute}.ce-popover--open-top.ce-popover--nested .ce-popover__container{top:calc(var(--trigger-item-top) - var(--popover-height) + var(--item-height) + var(--offset-from-target) + var(--nested-popover-overlap))}.ce-popover--open-left .ce-popover--nested .ce-popover__container{--popover-left: calc(-1 * (var(--nesting-level) + 1) * var(--width) + 100%)}.ce-popover-item-separator{padding:4px 3px}.ce-popover-item-separator--hidden{display:none}.ce-popover-item-separator__line{height:1px;background:var(--color-border);width:100%}.ce-popover-item-html--hidden{display:none}.ce-popover-item{--border-radius: 6px;border-radius:var(--border-radius);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--item-padding);color:var(--color-text-primary);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;background:transparent}@media (max-width: 650px){.ce-popover-item{padding:4px}}.ce-popover-item:not(:last-of-type){margin-bottom:1px}.ce-popover-item__icon{width:26px;height:26px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ce-popover-item__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-popover-item__icon{width:36px;height:36px;border-radius:8px}.ce-popover-item__icon svg{width:28px;height:28px}}.ce-popover-item__icon--tool{margin-right:4px}.ce-popover-item__title{font-size:14px;line-height:20px;font-weight:500;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:auto}@media (max-width: 650px){.ce-popover-item__title{font-size:16px}}.ce-popover-item__secondary-title{color:var(--color-text-secondary);font-size:12px;white-space:nowrap;letter-spacing:-.1em;padding-right:5px;opacity:.6}@media (max-width: 650px){.ce-popover-item__secondary-title{display:none}}.ce-popover-item--active{background:var(--color-background-icon-active);color:var(--color-text-icon-active)}.ce-popover-item--disabled{color:var(--color-text-secondary);cursor:default;pointer-events:none}.ce-popover-item--focused:not(.ce-popover-item--no-focus){background:var(--color-background-item-focus)!important}.ce-popover-item--hidden{display:none}@media (hover: hover){.ce-popover-item:hover{cursor:pointer}.ce-popover-item:hover:not(.ce-popover-item--no-hover){background-color:var(--color-background-item-hover)}}.ce-popover-item--confirmation{background:var(--color-background-item-confirm)}.ce-popover-item--confirmation .ce-popover-item__title,.ce-popover-item--confirmation .ce-popover-item__icon{color:#fff}@media (hover: hover){.ce-popover-item--confirmation:not(.ce-popover-item--no-hover):hover{background:var(--color-background-item-confirm-hover)}}.ce-popover-item--confirmation:not(.ce-popover-item--no-focus).ce-popover-item--focused{background:var(--color-background-item-confirm-hover)!important}@-webkit-keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes panelShowingMobile{0%{opacity:0;-webkit-transform:translateY(14px) scale(.98);transform:translateY(14px) scale(.98)}70%{opacity:1;-webkit-transform:translateY(-4px);transform:translateY(-4px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble;-webkit-animation-duration:.4s;animation-duration:.4s}@-webkit-keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-9%,0,0);transform:translate3d(-9%,0,0)}30%{-webkit-transform:translate3d(9%,0,0);transform:translate3d(9%,0,0)}45%{-webkit-transform:translate3d(-4%,0,0);transform:translate3d(-4%,0,0)}60%{-webkit-transform:translate3d(4%,0,0);transform:translate3d(4%,0,0)}75%{-webkit-transform:translate3d(-1%,0,0);transform:translate3d(-1%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translateZ(0)}}.ce-popover-header{margin-bottom:8px;margin-top:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-popover-header__text{font-size:18px;font-weight:600}.ce-popover-header__back-button{border:0;background:transparent;width:36px;height:36px;color:var(--color-text-primary)}.ce-popover-header__back-button svg{display:block;width:28px;height:28px}.ce-popover--inline{--height: 38px;--height-mobile: 46px;--container-padding: 4px;position:relative}.ce-popover--inline .ce-popover__custom-content{margin-bottom:0}.ce-popover--inline .ce-popover__items{display:-webkit-box;display:-ms-flexbox;display:flex}.ce-popover--inline .ce-popover__container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:var(--container-padding);height:var(--height);top:0;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;width:-webkit-max-content;width:-moz-max-content;width:max-content;-webkit-animation:none;animation:none}@media (max-width: 650px){.ce-popover--inline .ce-popover__container{height:var(--height-mobile);position:absolute}}.ce-popover--inline .ce-popover-item-separator{padding:0 4px}.ce-popover--inline .ce-popover-item-separator__line{height:100%;width:1px}.ce-popover--inline .ce-popover-item{border-radius:4px;padding:4px}.ce-popover--inline .ce-popover-item__icon--tool{-webkit-box-shadow:none;box-shadow:none;background:transparent;margin-right:0}.ce-popover--inline .ce-popover-item__icon{width:auto;width:initial;height:auto;height:initial}.ce-popover--inline .ce-popover-item__icon svg{width:20px;height:20px}@media (max-width: 650px){.ce-popover--inline .ce-popover-item__icon svg{width:28px;height:28px}}.ce-popover--inline .ce-popover-item:not(:last-of-type){margin-bottom:0;margin-bottom:initial}.ce-popover--inline .ce-popover-item-html{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ce-popover--inline .ce-popover-item__icon--chevron-right{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.ce-popover--inline .ce-popover--nested-level-1 .ce-popover__container{--offset: 3px;left:0;top:calc(var(--height) + var(--offset))}@media (max-width: 650px){.ce-popover--inline .ce-popover--nested-level-1 .ce-popover__container{top:calc(var(--height-mobile) + var(--offset))}}.ce-popover--inline .ce-popover--nested .ce-popover__container{min-width:var(--width);width:var(--width);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;padding:6px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.ce-popover--inline .ce-popover--nested .ce-popover__items{display:block;width:100%}.ce-popover--inline .ce-popover--nested .ce-popover-item{border-radius:6px;padding:3px}@media (max-width: 650px){.ce-popover--inline .ce-popover--nested .ce-popover-item{padding:4px}}.ce-popover--inline .ce-popover--nested .ce-popover-item__icon--tool{margin-right:4px}.ce-popover--inline .ce-popover--nested .ce-popover-item__icon{width:26px;height:26px}.ce-popover--inline .ce-popover--nested .ce-popover-item-separator{padding:4px 3px}.ce-popover--inline .ce-popover--nested .ce-popover-item-separator__line{width:100%;height:1px}.codex-editor [data-placeholder]:empty:before,.codex-editor [data-placeholder][data-empty=true]:before{pointer-events:none;color:#707684;cursor:text;content:attr(data-placeholder)}.codex-editor [data-placeholder-active]:empty:before,.codex-editor [data-placeholder-active][data-empty=true]:before{pointer-events:none;color:#707684;cursor:text}.codex-editor [data-placeholder-active]:empty:focus:before,.codex-editor [data-placeholder-active][data-empty=true]:focus:before{content:attr(data-placeholder-active)}\n`;\nclass Ia extends E {\n constructor() {\n super(...arguments), this.isMobile = !1, this.contentRectCache = null, this.resizeDebouncer = Eo(() => {\n this.windowResize();\n }, 200), this.selectionChangeDebounced = Eo(() => {\n this.selectionChanged();\n }, da), this.documentTouchedListener = (e) => {\n this.documentTouched(e);\n };\n }\n /**\n * Editor.js UI CSS class names\n *\n * @returns {{editorWrapper: string, editorZone: string}}\n */\n get CSS() {\n return {\n editorWrapper: \"codex-editor\",\n editorWrapperNarrow: \"codex-editor--narrow\",\n editorZone: \"codex-editor__redactor\",\n editorZoneHidden: \"codex-editor__redactor--hidden\",\n editorEmpty: \"codex-editor--empty\",\n editorRtlFix: \"codex-editor--rtl\"\n };\n }\n /**\n * Return Width of center column of Editor\n *\n * @returns {DOMRect}\n */\n get contentRect() {\n if (this.contentRectCache !== null)\n return this.contentRectCache;\n const e = this.nodes.wrapper.querySelector(`.${R.CSS.content}`);\n return e ? (this.contentRectCache = e.getBoundingClientRect(), this.contentRectCache) : {\n width: 650,\n left: 0,\n right: 0\n };\n }\n /**\n * Making main interface\n */\n async prepare() {\n this.setIsMobile(), this.make(), this.loadStyles();\n }\n /**\n * Toggle read-only state\n *\n * If readOnly is true:\n * - removes all listeners from main UI module elements\n *\n * if readOnly is false:\n * - enables all listeners to UI module elements\n *\n * @param {boolean} readOnlyEnabled - \"read only\" state\n */\n toggleReadOnly(e) {\n e ? this.unbindReadOnlySensitiveListeners() : window.requestIdleCallback(() => {\n this.bindReadOnlySensitiveListeners();\n }, {\n timeout: 2e3\n });\n }\n /**\n * Check if Editor is empty and set CSS class to wrapper\n */\n checkEmptiness() {\n const { BlockManager: e } = this.Editor;\n this.nodes.wrapper.classList.toggle(this.CSS.editorEmpty, e.isEditorEmpty);\n }\n /**\n * Check if one of Toolbar is opened\n * Used to prevent global keydowns (for example, Enter) conflicts with Enter-on-toolbar\n *\n * @returns {boolean}\n */\n get someToolbarOpened() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o } = this.Editor;\n return !!(t.opened || o.opened || e.toolbox.opened);\n }\n /**\n * Check for some Flipper-buttons is under focus\n */\n get someFlipperButtonFocused() {\n return this.Editor.Toolbar.toolbox.hasFocus() ? !0 : Object.entries(this.Editor).filter(([e, t]) => t.flipper instanceof ce).some(([e, t]) => t.flipper.hasFocus());\n }\n /**\n * Clean editor`s UI\n */\n destroy() {\n this.nodes.holder.innerHTML = \"\", this.unbindReadOnlyInsensitiveListeners();\n }\n /**\n * Close all Editor's toolbars\n */\n closeAllToolbars() {\n const { Toolbar: e, BlockSettings: t, InlineToolbar: o } = this.Editor;\n t.close(), o.close(), e.toolbox.close();\n }\n /**\n * Check for mobile mode and save the result\n */\n setIsMobile() {\n const e = window.innerWidth < Ro;\n e !== this.isMobile && this.eventsDispatcher.emit(Te, {\n isEnabled: this.isMobile\n }), this.isMobile = e;\n }\n /**\n * Makes Editor.js interface\n */\n make() {\n this.nodes.holder = d.getHolder(this.config.holder), this.nodes.wrapper = d.make(\"div\", [\n this.CSS.editorWrapper,\n ...this.isRtl ? [this.CSS.editorRtlFix] : []\n ]), this.nodes.redactor = d.make(\"div\", this.CSS.editorZone), this.nodes.holder.offsetWidth < this.contentRect.width && this.nodes.wrapper.classList.add(this.CSS.editorWrapperNarrow), this.nodes.redactor.style.paddingBottom = this.config.minHeight + \"px\", this.nodes.wrapper.appendChild(this.nodes.redactor), this.nodes.holder.appendChild(this.nodes.wrapper), this.bindReadOnlyInsensitiveListeners();\n }\n /**\n * Appends CSS\n */\n loadStyles() {\n const e = \"editor-js-styles\";\n if (d.get(e))\n return;\n const t = d.make(\"style\", null, {\n id: e,\n textContent: Sa.toString()\n });\n this.config.style && !V(this.config.style) && this.config.style.nonce && t.setAttribute(\"nonce\", this.config.style.nonce), d.prepend(document.head, t);\n }\n /**\n * Adds listeners that should work both in read-only and read-write modes\n */\n bindReadOnlyInsensitiveListeners() {\n this.listeners.on(document, \"selectionchange\", this.selectionChangeDebounced), this.listeners.on(window, \"resize\", this.resizeDebouncer, {\n passive: !0\n }), this.listeners.on(this.nodes.redactor, \"mousedown\", this.documentTouchedListener, {\n capture: !0,\n passive: !0\n }), this.listeners.on(this.nodes.redactor, \"touchstart\", this.documentTouchedListener, {\n capture: !0,\n passive: !0\n });\n }\n /**\n * Removes listeners that should work both in read-only and read-write modes\n */\n unbindReadOnlyInsensitiveListeners() {\n this.listeners.off(document, \"selectionchange\", this.selectionChangeDebounced), this.listeners.off(window, \"resize\", this.resizeDebouncer), this.listeners.off(this.nodes.redactor, \"mousedown\", this.documentTouchedListener), this.listeners.off(this.nodes.redactor, \"touchstart\", this.documentTouchedListener);\n }\n /**\n * Adds listeners that should work only in read-only mode\n */\n bindReadOnlySensitiveListeners() {\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"click\", (e) => {\n this.redactorClicked(e);\n }, !1), this.readOnlyMutableListeners.on(document, \"keydown\", (e) => {\n this.documentKeydown(e);\n }, !0), this.readOnlyMutableListeners.on(document, \"mousedown\", (e) => {\n this.documentClicked(e);\n }, !0), this.watchBlockHoveredEvents(), this.enableInputsEmptyMark();\n }\n /**\n * Listen redactor mousemove to emit 'block-hovered' event\n */\n watchBlockHoveredEvents() {\n let e;\n this.readOnlyMutableListeners.on(this.nodes.redactor, \"mousemove\", dt((t) => {\n const o = t.target.closest(\".ce-block\");\n this.Editor.BlockSelection.anyBlockSelected || o && e !== o && (e = o, this.eventsDispatcher.emit(ln, {\n block: this.Editor.BlockManager.getBlockByChildNode(o)\n }));\n }, 20), {\n passive: !0\n });\n }\n /**\n * Unbind events that should work only in read-only mode\n */\n unbindReadOnlySensitiveListeners() {\n this.readOnlyMutableListeners.clearAll();\n }\n /**\n * Resize window handler\n */\n windowResize() {\n this.contentRectCache = null, this.setIsMobile();\n }\n /**\n * All keydowns on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n documentKeydown(e) {\n switch (e.keyCode) {\n case y.ENTER:\n this.enterPressed(e);\n break;\n case y.BACKSPACE:\n case y.DELETE:\n this.backspacePressed(e);\n break;\n case y.ESC:\n this.escapePressed(e);\n break;\n default:\n this.defaultBehaviour(e);\n break;\n }\n }\n /**\n * Ignore all other document's keydown events\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n defaultBehaviour(e) {\n const { currentBlock: t } = this.Editor.BlockManager, o = e.target.closest(`.${this.CSS.editorWrapper}`), i = e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;\n if (t !== void 0 && o === null) {\n this.Editor.BlockEvents.keydown(e);\n return;\n }\n o || t && i || (this.Editor.BlockManager.unsetCurrentBlock(), this.Editor.Toolbar.close());\n }\n /**\n * @param {KeyboardEvent} event - keyboard event\n */\n backspacePressed(e) {\n const { BlockManager: t, BlockSelection: o, Caret: i } = this.Editor;\n if (o.anyBlockSelected && !b.isSelectionExists) {\n const s = t.removeSelectedBlocks(), r = t.insertDefaultBlockAtIndex(s, !0);\n i.setToBlock(r, i.positions.START), o.clearSelection(e), e.preventDefault(), e.stopPropagation(), e.stopImmediatePropagation();\n }\n }\n /**\n * Escape pressed\n * If some of Toolbar components are opened, then close it otherwise close Toolbar\n *\n * @param {Event} event - escape keydown event\n */\n escapePressed(e) {\n this.Editor.BlockSelection.clearSelection(e), this.Editor.Toolbar.toolbox.opened ? (this.Editor.Toolbar.toolbox.close(), this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock, this.Editor.Caret.positions.END)) : this.Editor.BlockSettings.opened ? this.Editor.BlockSettings.close() : this.Editor.InlineToolbar.opened ? this.Editor.InlineToolbar.close() : this.Editor.Toolbar.close();\n }\n /**\n * Enter pressed on document\n *\n * @param {KeyboardEvent} event - keyboard event\n */\n enterPressed(e) {\n const { BlockManager: t, BlockSelection: o } = this.Editor;\n if (this.someToolbarOpened)\n return;\n const i = t.currentBlockIndex >= 0;\n if (o.anyBlockSelected && !b.isSelectionExists) {\n o.clearSelection(e), e.preventDefault(), e.stopImmediatePropagation(), e.stopPropagation();\n return;\n }\n if (!this.someToolbarOpened && i && e.target.tagName === \"BODY\") {\n const s = this.Editor.BlockManager.insert();\n e.preventDefault(), this.Editor.Caret.setToBlock(s), this.Editor.Toolbar.moveAndOpen(s);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * All clicks on document\n *\n * @param {MouseEvent} event - Click event\n */\n documentClicked(e) {\n var a, l;\n if (!e.isTrusted)\n return;\n const t = e.target;\n this.nodes.holder.contains(t) || b.isAtEditor || (this.Editor.BlockManager.unsetCurrentBlock(), this.Editor.Toolbar.close());\n const i = (a = this.Editor.BlockSettings.nodes.wrapper) == null ? void 0 : a.contains(t), s = (l = this.Editor.Toolbar.nodes.settingsToggler) == null ? void 0 : l.contains(t), r = i || s;\n if (this.Editor.BlockSettings.opened && !r) {\n this.Editor.BlockSettings.close();\n const c = this.Editor.BlockManager.getBlockByChildNode(t);\n this.Editor.Toolbar.moveAndOpen(c);\n }\n this.Editor.BlockSelection.clearSelection(e);\n }\n /**\n * First touch on editor\n * Fired before click\n *\n * Used to change current block — we need to do it before 'selectionChange' event.\n * Also:\n * - Move and show the Toolbar\n * - Set a Caret\n *\n * @param event - touch or mouse event\n */\n documentTouched(e) {\n let t = e.target;\n if (t === this.nodes.redactor) {\n const o = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX, i = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;\n t = document.elementFromPoint(o, i);\n }\n try {\n this.Editor.BlockManager.setCurrentBlockByChildNode(t);\n } catch {\n this.Editor.RectangleSelection.isRectActivated() || this.Editor.Caret.setToTheLastBlock();\n }\n this.Editor.ReadOnly.isEnabled || this.Editor.Toolbar.moveAndOpen();\n }\n /**\n * All clicks on the redactor zone\n *\n * @param {MouseEvent} event - click event\n * @description\n * - By clicks on the Editor's bottom zone:\n * - if last Block is empty, set a Caret to this\n * - otherwise, add a new empty Block and set a Caret to that\n */\n redactorClicked(e) {\n if (!b.isCollapsed)\n return;\n const t = e.target, o = e.metaKey || e.ctrlKey;\n if (d.isAnchor(t) && o) {\n e.stopImmediatePropagation(), e.stopPropagation();\n const i = t.getAttribute(\"href\"), s = oi(i);\n ii(s);\n return;\n }\n this.processBottomZoneClick(e);\n }\n /**\n * Check if user clicks on the Editor's bottom zone:\n * - set caret to the last block\n * - or add new empty block\n *\n * @param event - click event\n */\n processBottomZoneClick(e) {\n const t = this.Editor.BlockManager.getBlockByIndex(-1), o = d.offset(t.holder).bottom, i = e.pageY, { BlockSelection: s } = this.Editor;\n if (e.target instanceof Element && e.target.isEqualNode(this.nodes.redactor) && /**\n * If there is cross block selection started, target will be equal to redactor so we need additional check\n */\n !s.anyBlockSelected && /**\n * Prevent caret jumping (to last block) when clicking between blocks\n */\n o < i) {\n e.stopImmediatePropagation(), e.stopPropagation();\n const { BlockManager: a, Caret: l, Toolbar: c } = this.Editor;\n (!a.lastBlock.tool.isDefault || !a.lastBlock.isEmpty) && a.insertAtEnd(), l.setToTheLastBlock(), c.moveAndOpen(a.lastBlock);\n }\n }\n /**\n * Handle selection changes on mobile devices\n * Uses for showing the Inline Toolbar\n */\n selectionChanged() {\n const { CrossBlockSelection: e, BlockSelection: t } = this.Editor, o = b.anchorElement;\n if (e.isCrossBlockSelectionStarted && t.anyBlockSelected && b.get().removeAllRanges(), !o) {\n b.range || this.Editor.InlineToolbar.close();\n return;\n }\n const i = o.closest(`.${R.CSS.content}`);\n (i === null || i.closest(`.${b.CSS.editorWrapper}`) !== this.nodes.wrapper) && (this.Editor.InlineToolbar.containsNode(o) || this.Editor.InlineToolbar.close(), !(o.dataset.inlineToolbar === \"true\")) || (this.Editor.BlockManager.currentBlock || this.Editor.BlockManager.setCurrentBlockByChildNode(o), this.Editor.InlineToolbar.tryToShow(!0));\n }\n /**\n * Editor.js provides and ability to show placeholders for empty contenteditable elements\n *\n * This method watches for input and focus events and toggles 'data-empty' attribute\n * to workaroud the case, when inputs contains only
s and has no visible content\n * Then, CSS could rely on this attribute to show placeholders\n */\n enableInputsEmptyMark() {\n function e(t) {\n const o = t.target;\n Do(o);\n }\n this.readOnlyMutableListeners.on(this.nodes.wrapper, \"input\", e), this.readOnlyMutableListeners.on(this.nodes.wrapper, \"focusin\", e), this.readOnlyMutableListeners.on(this.nodes.wrapper, \"focusout\", e);\n }\n}\nconst Oa = {\n // API Modules\n BlocksAPI: gi,\n CaretAPI: bi,\n EventsAPI: vi,\n I18nAPI: kt,\n API: ki,\n InlineToolbarAPI: yi,\n ListenersAPI: wi,\n NotifierAPI: Ci,\n ReadOnlyAPI: Ti,\n SanitizerAPI: Li,\n SaverAPI: Pi,\n SelectionAPI: Ni,\n ToolsAPI: Ri,\n StylesAPI: Di,\n ToolbarAPI: Fi,\n TooltipAPI: Ui,\n UiAPI: Wi,\n // Toolbar Modules\n BlockSettings: ms,\n Toolbar: Bs,\n InlineToolbar: Cs,\n // Modules\n BlockEvents: na,\n BlockManager: ra,\n BlockSelection: aa,\n Caret: Ye,\n CrossBlockSelection: la,\n DragNDrop: ca,\n ModificationsObserver: ha,\n Paste: pa,\n ReadOnly: fa,\n RectangleSelection: Be,\n Renderer: ga,\n Saver: ma,\n Tools: Wn,\n UI: Ia\n};\nclass _a {\n /**\n * @param {EditorConfig} config - user configuration\n */\n constructor(e) {\n this.moduleInstances = {}, this.eventsDispatcher = new Oe();\n let t, o;\n this.isReady = new Promise((i, s) => {\n t = i, o = s;\n }), Promise.resolve().then(async () => {\n this.configuration = e, this.validate(), this.init(), await this.start(), await this.render();\n const { BlockManager: i, Caret: s, UI: r, ModificationsObserver: a } = this.moduleInstances;\n r.checkEmptiness(), a.enable(), this.configuration.autofocus === !0 && this.configuration.readOnly !== !0 && s.setToBlock(i.blocks[0], s.positions.START), t();\n }).catch((i) => {\n S(`Editor.js is not ready because of ${i}`, \"error\"), o(i);\n });\n }\n /**\n * Setting for configuration\n *\n * @param {EditorConfig|string} config - Editor's config to set\n */\n set configuration(e) {\n var o, i;\n D(e) ? this.config = {\n ...e\n } : this.config = {\n holder: e\n }, ht(!!this.config.holderId, \"config.holderId\", \"config.holder\"), this.config.holderId && !this.config.holder && (this.config.holder = this.config.holderId, this.config.holderId = null), this.config.holder == null && (this.config.holder = \"editorjs\"), this.config.logLevel || (this.config.logLevel = Lo.VERBOSE), Zn(this.config.logLevel), ht(!!this.config.initialBlock, \"config.initialBlock\", \"config.defaultBlock\"), this.config.defaultBlock = this.config.defaultBlock || this.config.initialBlock || \"paragraph\", this.config.minHeight = this.config.minHeight !== void 0 ? this.config.minHeight : 300;\n const t = {\n type: this.config.defaultBlock,\n data: {}\n };\n this.config.placeholder = this.config.placeholder || !1, this.config.sanitizer = this.config.sanitizer || {\n p: !0,\n b: !0,\n a: !0\n }, this.config.hideToolbar = this.config.hideToolbar ? this.config.hideToolbar : !1, this.config.tools = this.config.tools || {}, this.config.i18n = this.config.i18n || {}, this.config.data = this.config.data || { blocks: [] }, this.config.onReady = this.config.onReady || (() => {\n }), this.config.onChange = this.config.onChange || (() => {\n }), this.config.inlineToolbar = this.config.inlineToolbar !== void 0 ? this.config.inlineToolbar : !0, (V(this.config.data) || !this.config.data.blocks || this.config.data.blocks.length === 0) && (this.config.data = { blocks: [t] }), this.config.readOnly = this.config.readOnly || !1, (o = this.config.i18n) != null && o.messages && z.setDictionary(this.config.i18n.messages), this.config.i18n.direction = ((i = this.config.i18n) == null ? void 0 : i.direction) || \"ltr\";\n }\n /**\n * Returns private property\n *\n * @returns {EditorConfig}\n */\n get configuration() {\n return this.config;\n }\n /**\n * Checks for required fields in Editor's config\n */\n validate() {\n const { holderId: e, holder: t } = this.config;\n if (e && t)\n throw Error(\"«holderId» and «holder» param can't assign at the same time.\");\n if (te(t) && !d.get(t))\n throw Error(`element with ID «${t}» is missing. Pass correct holder's ID.`);\n if (t && D(t) && !d.isElement(t))\n throw Error(\"«holder» value must be an Element node\");\n }\n /**\n * Initializes modules:\n * - make and save instances\n * - configure\n */\n init() {\n this.constructModules(), this.configureModules();\n }\n /**\n * Start Editor!\n *\n * Get list of modules that needs to be prepared and return a sequence (Promise)\n *\n * @returns {Promise}\n */\n async start() {\n await [\n \"Tools\",\n \"UI\",\n \"BlockManager\",\n \"Paste\",\n \"BlockSelection\",\n \"RectangleSelection\",\n \"CrossBlockSelection\",\n \"ReadOnly\"\n ].reduce(\n (t, o) => t.then(async () => {\n try {\n await this.moduleInstances[o].prepare();\n } catch (i) {\n if (i instanceof Ho)\n throw new Error(i.message);\n S(`Module ${o} was skipped because of %o`, \"warn\", i);\n }\n }),\n Promise.resolve()\n );\n }\n /**\n * Render initial data\n */\n render() {\n return this.moduleInstances.Renderer.render(this.config.data.blocks);\n }\n /**\n * Make modules instances and save it to the @property this.moduleInstances\n */\n constructModules() {\n Object.entries(Oa).forEach(([e, t]) => {\n try {\n this.moduleInstances[e] = new t({\n config: this.configuration,\n eventsDispatcher: this.eventsDispatcher\n });\n } catch (o) {\n S(\"[constructModules]\", `Module ${e} skipped because`, \"error\", o);\n }\n });\n }\n /**\n * Modules instances configuration:\n * - pass other modules to the 'state' property\n * - ...\n */\n configureModules() {\n for (const e in this.moduleInstances)\n Object.prototype.hasOwnProperty.call(this.moduleInstances, e) && (this.moduleInstances[e].state = this.getModulesDiff(e));\n }\n /**\n * Return modules without passed name\n *\n * @param {string} name - module for witch modules difference should be calculated\n */\n getModulesDiff(e) {\n const t = {};\n for (const o in this.moduleInstances)\n o !== e && (t[o] = this.moduleInstances[o]);\n return t;\n }\n}\n/**\n * Editor.js\n *\n * @license Apache-2.0\n * @see Editor.js \n * @author CodeX Team \n */\nclass Aa {\n /** Editor version */\n static get version() {\n return \"2.31.0-rc.7\";\n }\n /**\n * @param {EditorConfig|string|undefined} [configuration] - user configuration\n */\n constructor(e) {\n let t = () => {\n };\n D(e) && A(e.onReady) && (t = e.onReady);\n const o = new _a(e);\n this.isReady = o.isReady.then(() => {\n this.exportAPI(o), t();\n });\n }\n /**\n * Export external API methods\n *\n * @param {Core} editor — Editor's instance\n */\n exportAPI(e) {\n const t = [\"configuration\"], o = () => {\n Object.values(e.moduleInstances).forEach((s) => {\n A(s.destroy) && s.destroy(), s.listeners.removeAll();\n }), zi(), e = null;\n for (const s in this)\n Object.prototype.hasOwnProperty.call(this, s) && delete this[s];\n Object.setPrototypeOf(this, null);\n };\n t.forEach((s) => {\n this[s] = e[s];\n }), this.destroy = o, Object.setPrototypeOf(this, e.moduleInstances.API.methods), delete this.exportAPI, Object.entries({\n blocks: {\n clear: \"clear\",\n render: \"render\"\n },\n caret: {\n focus: \"focus\"\n },\n events: {\n on: \"on\",\n off: \"off\",\n emit: \"emit\"\n },\n saver: {\n save: \"save\"\n }\n }).forEach(([s, r]) => {\n Object.entries(r).forEach(([a, l]) => {\n this[l] = e.moduleInstances.API.methods[s][a];\n });\n });\n }\n}\nexport {\n Aa as default\n};\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode(\".ce-header{padding:.6em 0 3px;margin:0;line-height:1.25em;outline:none}.ce-header p,.ce-header div{padding:0!important;margin:0!important}\")),document.head.appendChild(e)}}catch(n){console.error(\"vite-plugin-css-injected-by-js\",n)}})();\nconst a = '', l = '', o = '', h = '', d = '', u = '', g = '';\n/**\n * Header block for the Editor.js.\n *\n * @author CodeX (team@ifmo.su)\n * @copyright CodeX 2018\n * @license MIT\n * @version 2.0.0\n */\nclass v {\n constructor({ data: e, config: t, api: s, readOnly: r }) {\n this.api = s, this.readOnly = r, this._settings = t, this._data = this.normalizeData(e), this._element = this.getTag();\n }\n /**\n * Styles\n */\n get _CSS() {\n return {\n block: this.api.styles.block,\n wrapper: \"ce-header\"\n };\n }\n /**\n * Check if data is valid\n * \n * @param {any} data - data to check\n * @returns {data is HeaderData}\n * @private\n */\n isHeaderData(e) {\n return e.text !== void 0;\n }\n /**\n * Normalize input data\n *\n * @param {HeaderData} data - saved data to process\n *\n * @returns {HeaderData}\n * @private\n */\n normalizeData(e) {\n const t = { text: \"\", level: this.defaultLevel.number };\n return this.isHeaderData(e) && (t.text = e.text || \"\", e.level !== void 0 && !isNaN(parseInt(e.level.toString())) && (t.level = parseInt(e.level.toString()))), t;\n }\n /**\n * Return Tool's view\n *\n * @returns {HTMLHeadingElement}\n * @public\n */\n render() {\n return this._element;\n }\n /**\n * Returns header block tunes config\n *\n * @returns {Array}\n */\n renderSettings() {\n return this.levels.map((e) => ({\n icon: e.svg,\n label: this.api.i18n.t(`Heading ${e.number}`),\n onActivate: () => this.setLevel(e.number),\n closeOnActivate: !0,\n isActive: this.currentLevel.number === e.number,\n render: () => document.createElement(\"div\")\n }));\n }\n /**\n * Callback for Block's settings buttons\n *\n * @param {number} level - level to set\n */\n setLevel(e) {\n this.data = {\n level: e,\n text: this.data.text\n };\n }\n /**\n * Method that specified how to merge two Text blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * @param {HeaderData} data - saved data to merger with current block\n * @public\n */\n merge(e) {\n this._element.insertAdjacentHTML(\"beforeend\", e.text);\n }\n /**\n * Validate Text block data:\n * - check for emptiness\n *\n * @param {HeaderData} blockData — data received after saving\n * @returns {boolean} false if saved data is not correct, otherwise true\n * @public\n */\n validate(e) {\n return e.text.trim() !== \"\";\n }\n /**\n * Extract Tool's data from the view\n *\n * @param {HTMLHeadingElement} toolsContent - Text tools rendered view\n * @returns {HeaderData} - saved data\n * @public\n */\n save(e) {\n return {\n text: e.innerHTML,\n level: this.currentLevel.number\n };\n }\n /**\n * Allow Header to be converted to/from other blocks\n */\n static get conversionConfig() {\n return {\n export: \"text\",\n // use 'text' property for other blocks\n import: \"text\"\n // fill 'text' property from other block's export string\n };\n }\n /**\n * Sanitizer Rules\n */\n static get sanitize() {\n return {\n level: !1,\n text: {}\n };\n }\n /**\n * Returns true to notify core that read-only is supported\n *\n * @returns {boolean}\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Get current Tools`s data\n *\n * @returns {HeaderData} Current data\n * @private\n */\n get data() {\n return this._data.text = this._element.innerHTML, this._data.level = this.currentLevel.number, this._data;\n }\n /**\n * Store data in plugin:\n * - at the this._data property\n * - at the HTML\n *\n * @param {HeaderData} data — data to set\n * @private\n */\n set data(e) {\n if (this._data = this.normalizeData(e), e.level !== void 0 && this._element.parentNode) {\n const t = this.getTag();\n t.innerHTML = this._element.innerHTML, this._element.parentNode.replaceChild(t, this._element), this._element = t;\n }\n e.text !== void 0 && (this._element.innerHTML = this._data.text || \"\");\n }\n /**\n * Get tag for target level\n * By default returns second-leveled header\n *\n * @returns {HTMLElement}\n */\n getTag() {\n const e = document.createElement(this.currentLevel.tag);\n return e.innerHTML = this._data.text || \"\", e.classList.add(this._CSS.wrapper), e.contentEditable = this.readOnly ? \"false\" : \"true\", e.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || \"\"), e;\n }\n /**\n * Get current level\n *\n * @returns {level}\n */\n get currentLevel() {\n let e = this.levels.find((t) => t.number === this._data.level);\n return e || (e = this.defaultLevel), e;\n }\n /**\n * Return default level\n *\n * @returns {level}\n */\n get defaultLevel() {\n if (this._settings.defaultLevel) {\n const e = this.levels.find((t) => t.number === this._settings.defaultLevel);\n if (e)\n return e;\n console.warn(\"(ง'̀-'́)ง Heading Tool: the default level specified was not found in available levels\");\n }\n return this.levels[1];\n }\n /**\n * @typedef {object} level\n * @property {number} number - level number\n * @property {string} tag - tag corresponds with level number\n * @property {string} svg - icon\n */\n /**\n * Available header levels\n *\n * @returns {level[]}\n */\n get levels() {\n const e = [\n {\n number: 1,\n tag: \"H1\",\n svg: a\n },\n {\n number: 2,\n tag: \"H2\",\n svg: l\n },\n {\n number: 3,\n tag: \"H3\",\n svg: o\n },\n {\n number: 4,\n tag: \"H4\",\n svg: h\n },\n {\n number: 5,\n tag: \"H5\",\n svg: d\n },\n {\n number: 6,\n tag: \"H6\",\n svg: u\n }\n ];\n return this._settings.levels ? e.filter(\n (t) => this._settings.levels.includes(t.number)\n ) : e;\n }\n /**\n * Handle H1-H6 tags on paste to substitute it with header Tool\n *\n * @param {PasteEvent} event - event with pasted content\n */\n onPaste(e) {\n const t = e.detail;\n if (\"data\" in t) {\n const s = t.data;\n let r = this.defaultLevel.number;\n switch (s.tagName) {\n case \"H1\":\n r = 1;\n break;\n case \"H2\":\n r = 2;\n break;\n case \"H3\":\n r = 3;\n break;\n case \"H4\":\n r = 4;\n break;\n case \"H5\":\n r = 5;\n break;\n case \"H6\":\n r = 6;\n break;\n }\n this._settings.levels && (r = this._settings.levels.reduce((n, i) => Math.abs(i - r) < Math.abs(n - r) ? i : n)), this.data = {\n level: r,\n text: s.innerHTML\n };\n }\n }\n /**\n * Used by Editor.js paste handling API.\n * Provides configuration to handle H1-H6 tags.\n *\n * @returns {{handler: (function(HTMLElement): {text: string}), tags: string[]}}\n */\n static get pasteConfig() {\n return {\n tags: [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]\n };\n }\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n *\n * @returns {{icon: string, title: string}}\n */\n static get toolbox() {\n return {\n icon: g,\n title: \"Heading\"\n };\n }\n}\nexport {\n v as default\n};\n","(function(){\"use strict\";try{if(typeof document<\"u\"){var e=document.createElement(\"style\");e.appendChild(document.createTextNode('.cdx-list{margin:0;padding:0;outline:none;display:grid;counter-reset:item;gap:var(--spacing-s);padding:var(--spacing-xs);--spacing-s: 8px;--spacing-xs: 6px;--list-counter-type: numeric;--radius-border: 5px;--checkbox-background: #fff;--color-border: #C9C9C9;--color-bg-checked: #369FFF;--line-height: 1.45em;--color-bg-checked-hover: #0059AB;--color-tick: #fff;--size-checkbox: 1.2em}.cdx-list__item{line-height:var(--line-height);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-template-areas:\"checkbox content\" \". child\"}.cdx-list__item-children{display:grid;grid-area:child;gap:var(--spacing-s);padding-top:var(--spacing-s)}.cdx-list__item [contenteditable]{outline:none}.cdx-list__item-content{word-break:break-word;white-space:pre-wrap;grid-area:content;padding-left:var(--spacing-s)}.cdx-list__item:before{counter-increment:item;white-space:nowrap}.cdx-list-ordered .cdx-list__item:before{content:counters(item,\".\",var(--list-counter-type)) \".\"}.cdx-list-ordered{counter-reset:item}.cdx-list-unordered .cdx-list__item:before{content:\"•\"}.cdx-list-checklist .cdx-list__item:before{content:\"\"}.cdx-list__settings .cdx-settings-button{width:50%}.cdx-list__checkbox{padding-top:calc((var(--line-height) - var(--size-checkbox)) / 2);grid-area:checkbox;width:var(--size-checkbox);height:var(--size-checkbox);display:flex;cursor:pointer}.cdx-list__checkbox svg{opacity:0;height:var(--size-checkbox);width:var(--size-checkbox);left:-1px;top:-1px;position:absolute}@media (hover: hover){.cdx-list__checkbox:not(.cdx-list__checkbox--no-hover):hover .cdx-list__checkbox-check svg{opacity:1}}.cdx-list__checkbox--checked{line-height:var(--line-height)}@media (hover: hover){.cdx-list__checkbox--checked:not(.cdx-list__checkbox--checked--no-hover):hover .cdx-checklist__checkbox-check{background:var(--color-bg-checked-hover);border-color:var(--color-bg-checked-hover)}}.cdx-list__checkbox--checked .cdx-list__checkbox-check{background:var(--color-bg-checked);border-color:var(--color-bg-checked)}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg{opacity:1}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg path{stroke:var(--color-tick)}.cdx-list__checkbox--checked .cdx-list__checkbox-check:before{opacity:0;visibility:visible;transform:scale(2.5)}.cdx-list__checkbox-check{cursor:pointer;display:inline-block;position:relative;margin:0 auto;width:var(--size-checkbox);height:var(--size-checkbox);box-sizing:border-box;border-radius:var(--radius-border);border:1px solid var(--color-border);background:var(--checkbox-background)}.cdx-list__checkbox-check:before{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:100%;background-color:var(--color-bg-checked);visibility:hidden;pointer-events:none;transform:scale(1);transition:transform .4s ease-out,opacity .4s}.cdx-list-start-with-field{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-list-start-with-field--invalid{background:#FFECED;border:1px solid #E13F3F}.cdx-list-start-with-field--invalid .cdx-list-start-with-field__input{color:#e13f3f}.cdx-list-start-with-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - var(--toolbox-buttons-size) - var(--icon-margin-right))}.cdx-list-start-with-field__input::placeholder{color:var(--grayText);font-weight:500}')),document.head.appendChild(e)}}catch(c){console.error(\"vite-plugin-css-injected-by-js\",c)}})();\nconst Ct = '', Ae = '', $e = '', Be = '', St = '', Ot = '', kt = '', _t = '', Et = '', It = '';\nvar A = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction wt(e) {\n if (e.__esModule)\n return e;\n var t = e.default;\n if (typeof t == \"function\") {\n var n = function r() {\n return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n };\n n.prototype = t.prototype;\n } else\n n = {};\n return Object.defineProperty(n, \"__esModule\", { value: !0 }), Object.keys(e).forEach(function(r) {\n var i = Object.getOwnPropertyDescriptor(e, r);\n Object.defineProperty(n, r, i.get ? i : {\n enumerable: !0,\n get: function() {\n return e[r];\n }\n });\n }), n;\n}\nvar c = {}, V = {}, Y = {};\nObject.defineProperty(Y, \"__esModule\", { value: !0 });\nY.allInputsSelector = Pt;\nfunction Pt() {\n var e = [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\"];\n return \"[contenteditable=true], textarea, input:not([type]), \" + e.map(function(t) {\n return 'input[type=\"'.concat(t, '\"]');\n }).join(\", \");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.allInputsSelector = void 0;\n var t = Y;\n Object.defineProperty(e, \"allInputsSelector\", { enumerable: !0, get: function() {\n return t.allInputsSelector;\n } });\n})(V);\nvar k = {}, J = {};\nObject.defineProperty(J, \"__esModule\", { value: !0 });\nJ.isNativeInput = jt;\nfunction jt(e) {\n var t = [\n \"INPUT\",\n \"TEXTAREA\"\n ];\n return e && e.tagName ? t.includes(e.tagName) : !1;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isNativeInput = void 0;\n var t = J;\n Object.defineProperty(e, \"isNativeInput\", { enumerable: !0, get: function() {\n return t.isNativeInput;\n } });\n})(k);\nvar Fe = {}, Q = {};\nObject.defineProperty(Q, \"__esModule\", { value: !0 });\nQ.append = Tt;\nfunction Tt(e, t) {\n Array.isArray(t) ? t.forEach(function(n) {\n e.appendChild(n);\n }) : e.appendChild(t);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.append = void 0;\n var t = Q;\n Object.defineProperty(e, \"append\", { enumerable: !0, get: function() {\n return t.append;\n } });\n})(Fe);\nvar Z = {}, x = {};\nObject.defineProperty(x, \"__esModule\", { value: !0 });\nx.blockElements = Lt;\nfunction Lt() {\n return [\n \"address\",\n \"article\",\n \"aside\",\n \"blockquote\",\n \"canvas\",\n \"div\",\n \"dl\",\n \"dt\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"li\",\n \"main\",\n \"nav\",\n \"noscript\",\n \"ol\",\n \"output\",\n \"p\",\n \"pre\",\n \"ruby\",\n \"section\",\n \"table\",\n \"tbody\",\n \"thead\",\n \"tr\",\n \"tfoot\",\n \"ul\",\n \"video\"\n ];\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.blockElements = void 0;\n var t = x;\n Object.defineProperty(e, \"blockElements\", { enumerable: !0, get: function() {\n return t.blockElements;\n } });\n})(Z);\nvar Re = {}, ee = {};\nObject.defineProperty(ee, \"__esModule\", { value: !0 });\nee.calculateBaseline = Mt;\nfunction Mt(e) {\n var t = window.getComputedStyle(e), n = parseFloat(t.fontSize), r = parseFloat(t.lineHeight) || n * 1.2, i = parseFloat(t.paddingTop), a = parseFloat(t.borderTopWidth), l = parseFloat(t.marginTop), s = n * 0.8, o = (r - n) / 2, d = l + a + i + o + s;\n return d;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.calculateBaseline = void 0;\n var t = ee;\n Object.defineProperty(e, \"calculateBaseline\", { enumerable: !0, get: function() {\n return t.calculateBaseline;\n } });\n})(Re);\nvar qe = {}, te = {}, ne = {}, re = {};\nObject.defineProperty(re, \"__esModule\", { value: !0 });\nre.isContentEditable = Nt;\nfunction Nt(e) {\n return e.contentEditable === \"true\";\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isContentEditable = void 0;\n var t = re;\n Object.defineProperty(e, \"isContentEditable\", { enumerable: !0, get: function() {\n return t.isContentEditable;\n } });\n})(ne);\nObject.defineProperty(te, \"__esModule\", { value: !0 });\nte.canSetCaret = Bt;\nvar At = k, $t = ne;\nfunction Bt(e) {\n var t = !0;\n if ((0, At.isNativeInput)(e))\n switch (e.type) {\n case \"file\":\n case \"checkbox\":\n case \"radio\":\n case \"hidden\":\n case \"submit\":\n case \"button\":\n case \"image\":\n case \"reset\":\n t = !1;\n break;\n }\n else\n t = (0, $t.isContentEditable)(e);\n return t;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.canSetCaret = void 0;\n var t = te;\n Object.defineProperty(e, \"canSetCaret\", { enumerable: !0, get: function() {\n return t.canSetCaret;\n } });\n})(qe);\nvar $ = {}, ie = {};\nfunction Wt(e, t, n) {\n const r = n.value !== void 0 ? \"value\" : \"get\", i = n[r], a = `#${t}Cache`;\n if (n[r] = function(...l) {\n return this[a] === void 0 && (this[a] = i.apply(this, l)), this[a];\n }, r === \"get\" && n.set) {\n const l = n.set;\n n.set = function(s) {\n delete e[a], l.apply(this, s);\n };\n }\n return n;\n}\nfunction Ue() {\n const e = {\n win: !1,\n mac: !1,\n x11: !1,\n linux: !1\n }, t = Object.keys(e).find((n) => window.navigator.appVersion.toLowerCase().indexOf(n) !== -1);\n return t !== void 0 && (e[t] = !0), e;\n}\nfunction ae(e) {\n return e != null && e !== \"\" && (typeof e != \"object\" || Object.keys(e).length > 0);\n}\nfunction Dt(e) {\n return !ae(e);\n}\nconst Ht = () => typeof window < \"u\" && window.navigator !== null && ae(window.navigator.platform) && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === \"MacIntel\" && window.navigator.maxTouchPoints > 1);\nfunction Ft(e) {\n const t = Ue();\n return e = e.replace(/shift/gi, \"⇧\").replace(/backspace/gi, \"⌫\").replace(/enter/gi, \"⏎\").replace(/up/gi, \"↑\").replace(/left/gi, \"→\").replace(/down/gi, \"↓\").replace(/right/gi, \"←\").replace(/escape/gi, \"⎋\").replace(/insert/gi, \"Ins\").replace(/delete/gi, \"␡\").replace(/\\+/gi, \"+\"), t.mac ? e = e.replace(/ctrl|cmd/gi, \"⌘\").replace(/alt/gi, \"⌥\") : e = e.replace(/cmd/gi, \"Ctrl\").replace(/windows/gi, \"WIN\"), e;\n}\nfunction Rt(e) {\n return e[0].toUpperCase() + e.slice(1);\n}\nfunction qt(e) {\n const t = document.createElement(\"div\");\n t.style.position = \"absolute\", t.style.left = \"-999px\", t.style.bottom = \"-999px\", t.innerHTML = e, document.body.appendChild(t);\n const n = window.getSelection(), r = document.createRange();\n if (r.selectNode(t), n === null)\n throw new Error(\"Cannot copy text to clipboard\");\n n.removeAllRanges(), n.addRange(r), document.execCommand(\"copy\"), document.body.removeChild(t);\n}\nfunction Ut(e, t, n) {\n let r;\n return (...i) => {\n const a = this, l = () => {\n r = void 0, n !== !0 && e.apply(a, i);\n }, s = n === !0 && r !== void 0;\n window.clearTimeout(r), r = window.setTimeout(l, t), s && e.apply(a, i);\n };\n}\nfunction S(e) {\n return Object.prototype.toString.call(e).match(/\\s([a-zA-Z]+)/)[1].toLowerCase();\n}\nfunction zt(e) {\n return S(e) === \"boolean\";\n}\nfunction ze(e) {\n return S(e) === \"function\" || S(e) === \"asyncfunction\";\n}\nfunction Kt(e) {\n return ze(e) && /^\\s*class\\s+/.test(e.toString());\n}\nfunction Xt(e) {\n return S(e) === \"number\";\n}\nfunction M(e) {\n return S(e) === \"object\";\n}\nfunction Gt(e) {\n return Promise.resolve(e) === e;\n}\nfunction Vt(e) {\n return S(e) === \"string\";\n}\nfunction Yt(e) {\n return S(e) === \"undefined\";\n}\nfunction X(e, ...t) {\n if (!t.length)\n return e;\n const n = t.shift();\n if (M(e) && M(n))\n for (const r in n)\n M(n[r]) ? (e[r] === void 0 && Object.assign(e, { [r]: {} }), X(e[r], n[r])) : Object.assign(e, { [r]: n[r] });\n return X(e, ...t);\n}\nfunction Jt(e, t, n) {\n const r = `«${t}» is deprecated and will be removed in the next major release. Please use the «${n}» instead.`;\n e && console.warn(r);\n}\nfunction Qt(e) {\n try {\n return new URL(e).href;\n } catch {\n }\n return e.substring(0, 2) === \"//\" ? window.location.protocol + e : window.location.origin + e;\n}\nfunction Zt(e) {\n return e > 47 && e < 58 || e === 32 || e === 13 || e === 229 || e > 64 && e < 91 || e > 95 && e < 112 || e > 185 && e < 193 || e > 218 && e < 223;\n}\nconst xt = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n LEFT: 37,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n DELETE: 46,\n META: 91,\n SLASH: 191\n}, en = {\n LEFT: 0,\n WHEEL: 1,\n RIGHT: 2,\n BACKWARD: 3,\n FORWARD: 4\n};\nclass tn {\n constructor() {\n this.completed = Promise.resolve();\n }\n /**\n * Add new promise to queue\n * @param operation - promise should be added to queue\n */\n add(t) {\n return new Promise((n, r) => {\n this.completed = this.completed.then(t).then(n).catch(r);\n });\n }\n}\nfunction nn(e, t, n = void 0) {\n let r, i, a, l = null, s = 0;\n n || (n = {});\n const o = function() {\n s = n.leading === !1 ? 0 : Date.now(), l = null, a = e.apply(r, i), l === null && (r = i = null);\n };\n return function() {\n const d = Date.now();\n !s && n.leading === !1 && (s = d);\n const u = t - (d - s);\n return r = this, i = arguments, u <= 0 || u > t ? (l && (clearTimeout(l), l = null), s = d, a = e.apply(r, i), l === null && (r = i = null)) : !l && n.trailing !== !1 && (l = setTimeout(o, u)), a;\n };\n}\nconst rn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n PromiseQueue: tn,\n beautifyShortcut: Ft,\n cacheable: Wt,\n capitalize: Rt,\n copyTextToClipboard: qt,\n debounce: Ut,\n deepMerge: X,\n deprecationAssert: Jt,\n getUserOS: Ue,\n getValidUrl: Qt,\n isBoolean: zt,\n isClass: Kt,\n isEmpty: Dt,\n isFunction: ze,\n isIosDevice: Ht,\n isNumber: Xt,\n isObject: M,\n isPrintableKey: Zt,\n isPromise: Gt,\n isString: Vt,\n isUndefined: Yt,\n keyCodes: xt,\n mouseButtons: en,\n notEmpty: ae,\n throttle: nn,\n typeOf: S\n}, Symbol.toStringTag, { value: \"Module\" })), le = /* @__PURE__ */ wt(rn);\nObject.defineProperty(ie, \"__esModule\", { value: !0 });\nie.containsOnlyInlineElements = sn;\nvar an = le, ln = Z;\nfunction sn(e) {\n var t;\n (0, an.isString)(e) ? (t = document.createElement(\"div\"), t.innerHTML = e) : t = e;\n var n = function(r) {\n return !(0, ln.blockElements)().includes(r.tagName.toLowerCase()) && Array.from(r.children).every(n);\n };\n return Array.from(t.children).every(n);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.containsOnlyInlineElements = void 0;\n var t = ie;\n Object.defineProperty(e, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return t.containsOnlyInlineElements;\n } });\n})($);\nvar Ke = {}, se = {}, B = {}, oe = {};\nObject.defineProperty(oe, \"__esModule\", { value: !0 });\noe.make = on;\nfunction on(e, t, n) {\n var r;\n t === void 0 && (t = null), n === void 0 && (n = {});\n var i = document.createElement(e);\n if (Array.isArray(t)) {\n var a = t.filter(function(s) {\n return s !== void 0;\n });\n (r = i.classList).add.apply(r, a);\n } else\n t !== null && i.classList.add(t);\n for (var l in n)\n Object.prototype.hasOwnProperty.call(n, l) && (i[l] = n[l]);\n return i;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.make = void 0;\n var t = oe;\n Object.defineProperty(e, \"make\", { enumerable: !0, get: function() {\n return t.make;\n } });\n})(B);\nObject.defineProperty(se, \"__esModule\", { value: !0 });\nse.fragmentToString = cn;\nvar un = B;\nfunction cn(e) {\n var t = (0, un.make)(\"div\");\n return t.appendChild(e), t.innerHTML;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.fragmentToString = void 0;\n var t = se;\n Object.defineProperty(e, \"fragmentToString\", { enumerable: !0, get: function() {\n return t.fragmentToString;\n } });\n})(Ke);\nvar Xe = {}, ue = {};\nObject.defineProperty(ue, \"__esModule\", { value: !0 });\nue.getContentLength = fn;\nvar dn = k;\nfunction fn(e) {\n var t, n;\n return (0, dn.isNativeInput)(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : (n = (t = e.textContent) === null || t === void 0 ? void 0 : t.length) !== null && n !== void 0 ? n : 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getContentLength = void 0;\n var t = ue;\n Object.defineProperty(e, \"getContentLength\", { enumerable: !0, get: function() {\n return t.getContentLength;\n } });\n})(Xe);\nvar ce = {}, de = {}, We = A && A.__spreadArray || function(e, t, n) {\n if (n || arguments.length === 2)\n for (var r = 0, i = t.length, a; r < i; r++)\n (a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);\n return e.concat(a || Array.prototype.slice.call(t));\n};\nObject.defineProperty(de, \"__esModule\", { value: !0 });\nde.getDeepestBlockElements = Ge;\nvar pn = $;\nfunction Ge(e) {\n return (0, pn.containsOnlyInlineElements)(e) ? [e] : Array.from(e.children).reduce(function(t, n) {\n return We(We([], t, !0), Ge(n), !0);\n }, []);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getDeepestBlockElements = void 0;\n var t = de;\n Object.defineProperty(e, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return t.getDeepestBlockElements;\n } });\n})(ce);\nvar Ve = {}, fe = {}, W = {}, pe = {};\nObject.defineProperty(pe, \"__esModule\", { value: !0 });\npe.isLineBreakTag = mn;\nfunction mn(e) {\n return [\n \"BR\",\n \"WBR\"\n ].includes(e.tagName);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isLineBreakTag = void 0;\n var t = pe;\n Object.defineProperty(e, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return t.isLineBreakTag;\n } });\n})(W);\nvar D = {}, me = {};\nObject.defineProperty(me, \"__esModule\", { value: !0 });\nme.isSingleTag = hn;\nfunction hn(e) {\n return [\n \"AREA\",\n \"BASE\",\n \"BR\",\n \"COL\",\n \"COMMAND\",\n \"EMBED\",\n \"HR\",\n \"IMG\",\n \"INPUT\",\n \"KEYGEN\",\n \"LINK\",\n \"META\",\n \"PARAM\",\n \"SOURCE\",\n \"TRACK\",\n \"WBR\"\n ].includes(e.tagName);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isSingleTag = void 0;\n var t = me;\n Object.defineProperty(e, \"isSingleTag\", { enumerable: !0, get: function() {\n return t.isSingleTag;\n } });\n})(D);\nObject.defineProperty(fe, \"__esModule\", { value: !0 });\nfe.getDeepestNode = Ye;\nvar gn = k, vn = W, bn = D;\nfunction Ye(e, t) {\n t === void 0 && (t = !1);\n var n = t ? \"lastChild\" : \"firstChild\", r = t ? \"previousSibling\" : \"nextSibling\";\n if (e.nodeType === Node.ELEMENT_NODE && e[n]) {\n var i = e[n];\n if ((0, bn.isSingleTag)(i) && !(0, gn.isNativeInput)(i) && !(0, vn.isLineBreakTag)(i))\n if (i[r])\n i = i[r];\n else if (i.parentNode !== null && i.parentNode[r])\n i = i.parentNode[r];\n else\n return i.parentNode;\n return Ye(i, t);\n }\n return e;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getDeepestNode = void 0;\n var t = fe;\n Object.defineProperty(e, \"getDeepestNode\", { enumerable: !0, get: function() {\n return t.getDeepestNode;\n } });\n})(Ve);\nvar Je = {}, he = {}, j = A && A.__spreadArray || function(e, t, n) {\n if (n || arguments.length === 2)\n for (var r = 0, i = t.length, a; r < i; r++)\n (a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);\n return e.concat(a || Array.prototype.slice.call(t));\n};\nObject.defineProperty(he, \"__esModule\", { value: !0 });\nhe.findAllInputs = kn;\nvar yn = $, Cn = ce, Sn = V, On = k;\nfunction kn(e) {\n return Array.from(e.querySelectorAll((0, Sn.allInputsSelector)())).reduce(function(t, n) {\n return (0, On.isNativeInput)(n) || (0, yn.containsOnlyInlineElements)(n) ? j(j([], t, !0), [n], !1) : j(j([], t, !0), (0, Cn.getDeepestBlockElements)(n), !0);\n }, []);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.findAllInputs = void 0;\n var t = he;\n Object.defineProperty(e, \"findAllInputs\", { enumerable: !0, get: function() {\n return t.findAllInputs;\n } });\n})(Je);\nvar Qe = {}, ge = {};\nObject.defineProperty(ge, \"__esModule\", { value: !0 });\nge.isCollapsedWhitespaces = _n;\nfunction _n(e) {\n return !/[^\\t\\n\\r ]/.test(e);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCollapsedWhitespaces = void 0;\n var t = ge;\n Object.defineProperty(e, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return t.isCollapsedWhitespaces;\n } });\n})(Qe);\nvar ve = {}, be = {};\nObject.defineProperty(be, \"__esModule\", { value: !0 });\nbe.isElement = In;\nvar En = le;\nfunction In(e) {\n return (0, En.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.ELEMENT_NODE;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isElement = void 0;\n var t = be;\n Object.defineProperty(e, \"isElement\", { enumerable: !0, get: function() {\n return t.isElement;\n } });\n})(ve);\nvar Ze = {}, ye = {}, Ce = {}, Se = {};\nObject.defineProperty(Se, \"__esModule\", { value: !0 });\nSe.isLeaf = wn;\nfunction wn(e) {\n return e === null ? !1 : e.childNodes.length === 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isLeaf = void 0;\n var t = Se;\n Object.defineProperty(e, \"isLeaf\", { enumerable: !0, get: function() {\n return t.isLeaf;\n } });\n})(Ce);\nvar Oe = {}, ke = {};\nObject.defineProperty(ke, \"__esModule\", { value: !0 });\nke.isNodeEmpty = Mn;\nvar Pn = W, jn = ve, Tn = k, Ln = D;\nfunction Mn(e, t) {\n var n = \"\";\n return (0, Ln.isSingleTag)(e) && !(0, Pn.isLineBreakTag)(e) ? !1 : ((0, jn.isElement)(e) && (0, Tn.isNativeInput)(e) ? n = e.value : e.textContent !== null && (n = e.textContent.replace(\"​\", \"\")), t !== void 0 && (n = n.replace(new RegExp(t, \"g\"), \"\")), n.trim().length === 0);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isNodeEmpty = void 0;\n var t = ke;\n Object.defineProperty(e, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return t.isNodeEmpty;\n } });\n})(Oe);\nObject.defineProperty(ye, \"__esModule\", { value: !0 });\nye.isEmpty = $n;\nvar Nn = Ce, An = Oe;\nfunction $n(e, t) {\n e.normalize();\n for (var n = [e]; n.length > 0; ) {\n var r = n.shift();\n if (r) {\n if (e = r, (0, Nn.isLeaf)(e) && !(0, An.isNodeEmpty)(e, t))\n return !1;\n n.push.apply(n, Array.from(e.childNodes));\n }\n }\n return !0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isEmpty = void 0;\n var t = ye;\n Object.defineProperty(e, \"isEmpty\", { enumerable: !0, get: function() {\n return t.isEmpty;\n } });\n})(Ze);\nvar xe = {}, _e = {};\nObject.defineProperty(_e, \"__esModule\", { value: !0 });\n_e.isFragment = Wn;\nvar Bn = le;\nfunction Wn(e) {\n return (0, Bn.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isFragment = void 0;\n var t = _e;\n Object.defineProperty(e, \"isFragment\", { enumerable: !0, get: function() {\n return t.isFragment;\n } });\n})(xe);\nvar et = {}, Ee = {};\nObject.defineProperty(Ee, \"__esModule\", { value: !0 });\nEe.isHTMLString = Hn;\nvar Dn = B;\nfunction Hn(e) {\n var t = (0, Dn.make)(\"div\");\n return t.innerHTML = e, t.childElementCount > 0;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isHTMLString = void 0;\n var t = Ee;\n Object.defineProperty(e, \"isHTMLString\", { enumerable: !0, get: function() {\n return t.isHTMLString;\n } });\n})(et);\nvar tt = {}, Ie = {};\nObject.defineProperty(Ie, \"__esModule\", { value: !0 });\nIe.offset = Fn;\nfunction Fn(e) {\n var t = e.getBoundingClientRect(), n = window.pageXOffset || document.documentElement.scrollLeft, r = window.pageYOffset || document.documentElement.scrollTop, i = t.top + r, a = t.left + n;\n return {\n top: i,\n left: a,\n bottom: i + t.height,\n right: a + t.width\n };\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.offset = void 0;\n var t = Ie;\n Object.defineProperty(e, \"offset\", { enumerable: !0, get: function() {\n return t.offset;\n } });\n})(tt);\nvar nt = {}, we = {};\nObject.defineProperty(we, \"__esModule\", { value: !0 });\nwe.prepend = Rn;\nfunction Rn(e, t) {\n Array.isArray(t) ? (t = t.reverse(), t.forEach(function(n) {\n return e.prepend(n);\n })) : e.prepend(t);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.prepend = void 0;\n var t = we;\n Object.defineProperty(e, \"prepend\", { enumerable: !0, get: function() {\n return t.prepend;\n } });\n})(nt);\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.prepend = e.offset = e.make = e.isLineBreakTag = e.isSingleTag = e.isNodeEmpty = e.isLeaf = e.isHTMLString = e.isFragment = e.isEmpty = e.isElement = e.isContentEditable = e.isCollapsedWhitespaces = e.findAllInputs = e.isNativeInput = e.allInputsSelector = e.getDeepestNode = e.getDeepestBlockElements = e.getContentLength = e.fragmentToString = e.containsOnlyInlineElements = e.canSetCaret = e.calculateBaseline = e.blockElements = e.append = void 0;\n var t = V;\n Object.defineProperty(e, \"allInputsSelector\", { enumerable: !0, get: function() {\n return t.allInputsSelector;\n } });\n var n = k;\n Object.defineProperty(e, \"isNativeInput\", { enumerable: !0, get: function() {\n return n.isNativeInput;\n } });\n var r = Fe;\n Object.defineProperty(e, \"append\", { enumerable: !0, get: function() {\n return r.append;\n } });\n var i = Z;\n Object.defineProperty(e, \"blockElements\", { enumerable: !0, get: function() {\n return i.blockElements;\n } });\n var a = Re;\n Object.defineProperty(e, \"calculateBaseline\", { enumerable: !0, get: function() {\n return a.calculateBaseline;\n } });\n var l = qe;\n Object.defineProperty(e, \"canSetCaret\", { enumerable: !0, get: function() {\n return l.canSetCaret;\n } });\n var s = $;\n Object.defineProperty(e, \"containsOnlyInlineElements\", { enumerable: !0, get: function() {\n return s.containsOnlyInlineElements;\n } });\n var o = Ke;\n Object.defineProperty(e, \"fragmentToString\", { enumerable: !0, get: function() {\n return o.fragmentToString;\n } });\n var d = Xe;\n Object.defineProperty(e, \"getContentLength\", { enumerable: !0, get: function() {\n return d.getContentLength;\n } });\n var u = ce;\n Object.defineProperty(e, \"getDeepestBlockElements\", { enumerable: !0, get: function() {\n return u.getDeepestBlockElements;\n } });\n var p = Ve;\n Object.defineProperty(e, \"getDeepestNode\", { enumerable: !0, get: function() {\n return p.getDeepestNode;\n } });\n var g = Je;\n Object.defineProperty(e, \"findAllInputs\", { enumerable: !0, get: function() {\n return g.findAllInputs;\n } });\n var w = Qe;\n Object.defineProperty(e, \"isCollapsedWhitespaces\", { enumerable: !0, get: function() {\n return w.isCollapsedWhitespaces;\n } });\n var _ = ne;\n Object.defineProperty(e, \"isContentEditable\", { enumerable: !0, get: function() {\n return _.isContentEditable;\n } });\n var ut = ve;\n Object.defineProperty(e, \"isElement\", { enumerable: !0, get: function() {\n return ut.isElement;\n } });\n var ct = Ze;\n Object.defineProperty(e, \"isEmpty\", { enumerable: !0, get: function() {\n return ct.isEmpty;\n } });\n var dt = xe;\n Object.defineProperty(e, \"isFragment\", { enumerable: !0, get: function() {\n return dt.isFragment;\n } });\n var ft = et;\n Object.defineProperty(e, \"isHTMLString\", { enumerable: !0, get: function() {\n return ft.isHTMLString;\n } });\n var pt = Ce;\n Object.defineProperty(e, \"isLeaf\", { enumerable: !0, get: function() {\n return pt.isLeaf;\n } });\n var mt = Oe;\n Object.defineProperty(e, \"isNodeEmpty\", { enumerable: !0, get: function() {\n return mt.isNodeEmpty;\n } });\n var ht = W;\n Object.defineProperty(e, \"isLineBreakTag\", { enumerable: !0, get: function() {\n return ht.isLineBreakTag;\n } });\n var gt = D;\n Object.defineProperty(e, \"isSingleTag\", { enumerable: !0, get: function() {\n return gt.isSingleTag;\n } });\n var vt = B;\n Object.defineProperty(e, \"make\", { enumerable: !0, get: function() {\n return vt.make;\n } });\n var bt = tt;\n Object.defineProperty(e, \"offset\", { enumerable: !0, get: function() {\n return bt.offset;\n } });\n var yt = nt;\n Object.defineProperty(e, \"prepend\", { enumerable: !0, get: function() {\n return yt.prepend;\n } });\n})(c);\nconst h = \"cdx-list\", m = {\n wrapper: h,\n item: `${h}__item`,\n itemContent: `${h}__item-content`,\n itemChildren: `${h}__item-children`\n};\nclass v {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...m,\n orderedList: `${h}-ordered`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ol wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ol element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? n = c.make(\"ol\", [v.CSS.wrapper, v.CSS.orderedList]) : n = c.make(\"ol\", [v.CSS.orderedList, v.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param _meta - meta of the list item unused in rendering of the ordered list\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", v.CSS.item), i = c.make(\"div\", v.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n });\n return r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${v.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Returns item meta, for ordered list\n * @returns item meta object\n */\n getItemMeta() {\n return {};\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return {};\n }\n}\nclass b {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...m,\n unorderedList: `${h}-unordered`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ol wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ul element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? n = c.make(\"ul\", [b.CSS.wrapper, b.CSS.unorderedList]) : n = c.make(\"ul\", [b.CSS.unorderedList, b.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param _meta - meta of the list item unused in rendering of the unordered list\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", b.CSS.item), i = c.make(\"div\", b.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n });\n return r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${b.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Returns item meta, for unordered list\n * @returns Item meta object\n */\n getItemMeta() {\n return {};\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return {};\n }\n}\nfunction O(e) {\n return e.nodeType === Node.ELEMENT_NODE;\n}\nvar P = {}, Pe = {}, H = {}, F = {};\nObject.defineProperty(F, \"__esModule\", { value: !0 });\nF.getContenteditableSlice = Un;\nvar qn = c;\nfunction Un(e, t, n, r, i) {\n var a;\n i === void 0 && (i = !1);\n var l = document.createRange();\n if (r === \"left\" ? (l.setStart(e, 0), l.setEnd(t, n)) : (l.setStart(t, n), l.setEnd(e, e.childNodes.length)), i === !0) {\n var s = l.extractContents();\n return (0, qn.fragmentToString)(s);\n }\n var o = l.cloneContents(), d = document.createElement(\"div\");\n d.appendChild(o);\n var u = (a = d.textContent) !== null && a !== void 0 ? a : \"\";\n return u;\n}\nObject.defineProperty(H, \"__esModule\", { value: !0 });\nH.checkContenteditableSliceForEmptiness = Xn;\nvar zn = c, Kn = F;\nfunction Xn(e, t, n, r) {\n var i = (0, Kn.getContenteditableSlice)(e, t, n, r);\n return (0, zn.isCollapsedWhitespaces)(i);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.checkContenteditableSliceForEmptiness = void 0;\n var t = H;\n Object.defineProperty(e, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return t.checkContenteditableSliceForEmptiness;\n } });\n})(Pe);\nvar rt = {};\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getContenteditableSlice = void 0;\n var t = F;\n Object.defineProperty(e, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return t.getContenteditableSlice;\n } });\n})(rt);\nvar it = {}, je = {};\nObject.defineProperty(je, \"__esModule\", { value: !0 });\nje.focus = Vn;\nvar Gn = c;\nfunction Vn(e, t) {\n var n, r;\n if (t === void 0 && (t = !0), (0, Gn.isNativeInput)(e)) {\n e.focus();\n var i = t ? 0 : e.value.length;\n e.setSelectionRange(i, i);\n } else {\n var a = document.createRange(), l = window.getSelection();\n if (!l)\n return;\n var s = function(g, w) {\n w === void 0 && (w = !1);\n var _ = document.createTextNode(\"\");\n w ? g.insertBefore(_, g.firstChild) : g.appendChild(_), a.setStart(_, 0), a.setEnd(_, 0);\n }, o = function(g) {\n return g != null;\n }, d = e.childNodes, u = t ? d[0] : d[d.length - 1];\n if (o(u)) {\n for (; o(u) && u.nodeType !== Node.TEXT_NODE; )\n u = t ? u.firstChild : u.lastChild;\n if (o(u) && u.nodeType === Node.TEXT_NODE) {\n var p = (r = (n = u.textContent) === null || n === void 0 ? void 0 : n.length) !== null && r !== void 0 ? r : 0, i = t ? 0 : p;\n a.setStart(u, i), a.setEnd(u, i);\n } else\n s(e, t);\n } else\n s(e);\n l.removeAllRanges(), l.addRange(a);\n }\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.focus = void 0;\n var t = je;\n Object.defineProperty(e, \"focus\", { enumerable: !0, get: function() {\n return t.focus;\n } });\n})(it);\nvar Te = {}, R = {};\nObject.defineProperty(R, \"__esModule\", { value: !0 });\nR.getCaretNodeAndOffset = Yn;\nfunction Yn() {\n var e = window.getSelection();\n if (e === null)\n return [null, 0];\n var t = e.focusNode, n = e.focusOffset;\n return t === null ? [null, 0] : (t.nodeType !== Node.TEXT_NODE && t.childNodes.length > 0 && (t.childNodes[n] !== void 0 ? (t = t.childNodes[n], n = 0) : (t = t.childNodes[n - 1], t.textContent !== null && (n = t.textContent.length))), [t, n]);\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getCaretNodeAndOffset = void 0;\n var t = R;\n Object.defineProperty(e, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return t.getCaretNodeAndOffset;\n } });\n})(Te);\nvar at = {}, q = {};\nObject.defineProperty(q, \"__esModule\", { value: !0 });\nq.getRange = Jn;\nfunction Jn() {\n var e = window.getSelection();\n return e && e.rangeCount ? e.getRangeAt(0) : null;\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getRange = void 0;\n var t = q;\n Object.defineProperty(e, \"getRange\", { enumerable: !0, get: function() {\n return t.getRange;\n } });\n})(at);\nvar lt = {}, Le = {};\nObject.defineProperty(Le, \"__esModule\", { value: !0 });\nLe.isCaretAtEndOfInput = xn;\nvar De = c, Qn = Te, Zn = Pe;\nfunction xn(e) {\n var t = (0, De.getDeepestNode)(e, !0);\n if (t === null)\n return !0;\n if ((0, De.isNativeInput)(t))\n return t.selectionEnd === t.value.length;\n var n = (0, Qn.getCaretNodeAndOffset)(), r = n[0], i = n[1];\n return r === null ? !1 : (0, Zn.checkContenteditableSliceForEmptiness)(e, r, i, \"right\");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCaretAtEndOfInput = void 0;\n var t = Le;\n Object.defineProperty(e, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return t.isCaretAtEndOfInput;\n } });\n})(lt);\nvar st = {}, Me = {};\nObject.defineProperty(Me, \"__esModule\", { value: !0 });\nMe.isCaretAtStartOfInput = nr;\nvar T = c, er = R, tr = H;\nfunction nr(e) {\n var t = (0, T.getDeepestNode)(e);\n if (t === null || (0, T.isEmpty)(e))\n return !0;\n if ((0, T.isNativeInput)(t))\n return t.selectionEnd === 0;\n if ((0, T.isEmpty)(e))\n return !0;\n var n = (0, er.getCaretNodeAndOffset)(), r = n[0], i = n[1];\n return r === null ? !1 : (0, tr.checkContenteditableSliceForEmptiness)(e, r, i, \"left\");\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.isCaretAtStartOfInput = void 0;\n var t = Me;\n Object.defineProperty(e, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return t.isCaretAtStartOfInput;\n } });\n})(st);\nvar ot = {}, Ne = {};\nObject.defineProperty(Ne, \"__esModule\", { value: !0 });\nNe.save = ar;\nvar rr = c, ir = q;\nfunction ar() {\n var e = (0, ir.getRange)(), t = (0, rr.make)(\"span\");\n if (t.id = \"cursor\", t.hidden = !0, !!e)\n return e.insertNode(t), function() {\n var r = window.getSelection();\n r && (e.setStartAfter(t), e.setEndAfter(t), r.removeAllRanges(), r.addRange(e), setTimeout(function() {\n t.remove();\n }, 150));\n };\n}\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.save = void 0;\n var t = Ne;\n Object.defineProperty(e, \"save\", { enumerable: !0, get: function() {\n return t.save;\n } });\n})(ot);\n(function(e) {\n Object.defineProperty(e, \"__esModule\", { value: !0 }), e.save = e.isCaretAtStartOfInput = e.isCaretAtEndOfInput = e.getRange = e.getCaretNodeAndOffset = e.focus = e.getContenteditableSlice = e.checkContenteditableSliceForEmptiness = void 0;\n var t = Pe;\n Object.defineProperty(e, \"checkContenteditableSliceForEmptiness\", { enumerable: !0, get: function() {\n return t.checkContenteditableSliceForEmptiness;\n } });\n var n = rt;\n Object.defineProperty(e, \"getContenteditableSlice\", { enumerable: !0, get: function() {\n return n.getContenteditableSlice;\n } });\n var r = it;\n Object.defineProperty(e, \"focus\", { enumerable: !0, get: function() {\n return r.focus;\n } });\n var i = Te;\n Object.defineProperty(e, \"getCaretNodeAndOffset\", { enumerable: !0, get: function() {\n return i.getCaretNodeAndOffset;\n } });\n var a = at;\n Object.defineProperty(e, \"getRange\", { enumerable: !0, get: function() {\n return a.getRange;\n } });\n var l = lt;\n Object.defineProperty(e, \"isCaretAtEndOfInput\", { enumerable: !0, get: function() {\n return l.isCaretAtEndOfInput;\n } });\n var s = st;\n Object.defineProperty(e, \"isCaretAtStartOfInput\", { enumerable: !0, get: function() {\n return s.isCaretAtStartOfInput;\n } });\n var o = ot;\n Object.defineProperty(e, \"save\", { enumerable: !0, get: function() {\n return o.save;\n } });\n})(P);\nclass f {\n /**\n * Getter for all CSS classes used in unordered list rendering\n */\n static get CSS() {\n return {\n ...m,\n checklist: `${h}-checklist`,\n itemChecked: `${h}__checkbox--checked`,\n noHover: `${h}__checkbox--no-hover`,\n checkbox: `${h}__checkbox-check`,\n checkboxContainer: `${h}__checkbox`\n };\n }\n /**\n * Assign passed readonly mode and config to relevant class properties\n * @param readonly - read-only mode flag\n * @param config - user config for Tool\n */\n constructor(t, n) {\n this.config = n, this.readOnly = t;\n }\n /**\n * Renders ul wrapper for list\n * @param isRoot - boolean variable that represents level of the wrappre (root or childList)\n * @returns - created html ul element\n */\n renderWrapper(t) {\n let n;\n return t === !0 ? (n = c.make(\"ul\", [f.CSS.wrapper, f.CSS.checklist]), n.addEventListener(\"click\", (r) => {\n const i = r.target;\n if (i) {\n const a = i.closest(`.${f.CSS.checkboxContainer}`);\n a && a.contains(i) && this.toggleCheckbox(a);\n }\n })) : n = c.make(\"ul\", [f.CSS.checklist, f.CSS.itemChildren]), n;\n }\n /**\n * Redners list item element\n * @param content - content used in list item rendering\n * @param meta - meta of the list item used in rendering of the checklist\n * @returns - created html list item element\n */\n renderItem(t, n) {\n const r = c.make(\"li\", [f.CSS.item, f.CSS.item]), i = c.make(\"div\", f.CSS.itemContent, {\n innerHTML: t,\n contentEditable: (!this.readOnly).toString()\n }), a = c.make(\"span\", f.CSS.checkbox), l = c.make(\"div\", f.CSS.checkboxContainer);\n return n.checked === !0 && l.classList.add(f.CSS.itemChecked), a.innerHTML = Ct, l.appendChild(a), r.appendChild(l), r.appendChild(i), r;\n }\n /**\n * Return the item content\n * @param item - item wrapper (
  • )\n * @returns - item content string\n */\n getItemContent(t) {\n const n = t.querySelector(`.${f.CSS.itemContent}`);\n return !n || c.isEmpty(n) ? \"\" : n.innerHTML;\n }\n /**\n * Return meta object of certain element\n * @param item - will be returned meta information of this item\n * @returns Item meta object\n */\n getItemMeta(t) {\n const n = t.querySelector(`.${f.CSS.checkboxContainer}`);\n return {\n checked: n ? n.classList.contains(f.CSS.itemChecked) : !1\n };\n }\n /**\n * Returns default item meta used on creation of the new item\n */\n composeDefaultMeta() {\n return { checked: !1 };\n }\n /**\n * Toggle checklist item state\n * @param checkbox - checkbox element to be toggled\n */\n toggleCheckbox(t) {\n t.classList.toggle(f.CSS.itemChecked), t.classList.add(f.CSS.noHover), t.addEventListener(\"mouseleave\", () => this.removeSpecialHoverBehavior(t), { once: !0 });\n }\n /**\n * Removes class responsible for special hover behavior on an item\n * @param el - item wrapper\n */\n removeSpecialHoverBehavior(t) {\n t.classList.remove(f.CSS.noHover);\n }\n}\nfunction U(e, t = \"after\") {\n const n = [];\n let r;\n function i(a) {\n switch (t) {\n case \"after\":\n return a.nextElementSibling;\n case \"before\":\n return a.previousElementSibling;\n }\n }\n for (r = i(e); r !== null; )\n n.push(r), r = i(r);\n return n.length !== 0 ? n : null;\n}\nfunction y(e, t = !0) {\n let n = e;\n return e.classList.contains(m.item) && (n = e.querySelector(`.${m.itemChildren}`)), n === null ? [] : t ? Array.from(n.querySelectorAll(`:scope > .${m.item}`)) : Array.from(n.querySelectorAll(`.${m.item}`));\n}\nfunction lr(e) {\n return e.nextElementSibling === null;\n}\nfunction sr(e) {\n return e.querySelector(`.${m.itemChildren}`) !== null;\n}\nfunction C(e) {\n return e.querySelector(`.${m.itemChildren}`);\n}\nfunction z(e) {\n let t = e;\n e.classList.contains(m.item) && (t = C(e)), t !== null && y(t).length === 0 && t.remove();\n}\nfunction N(e) {\n return e.querySelector(`.${m.itemContent}`);\n}\nfunction E(e, t = !0) {\n const n = N(e);\n n && P.focus(n, t);\n}\nclass K {\n /**\n * Getter method to get current item\n * @returns current list item or null if caret position is not undefined\n */\n get currentItem() {\n const t = window.getSelection();\n if (!t)\n return null;\n let n = t.anchorNode;\n return !n || (O(n) || (n = n.parentNode), !n) || !O(n) ? null : n.closest(`.${m.item}`);\n }\n /**\n * Method that returns nesting level of the current item, null if there is no selection\n */\n get currentItemLevel() {\n const t = this.currentItem;\n if (t === null)\n return null;\n let n = t.parentNode, r = 0;\n for (; n !== null && n !== this.listWrapper; )\n O(n) && n.classList.contains(m.item) && (r += 1), n = n.parentNode;\n return r + 1;\n }\n /**\n * Assign all passed params and renderer to relevant class properties\n * @param params - tool constructor options\n * @param params.data - previously saved data\n * @param params.config - user config for Tool\n * @param params.api - Editor.js API\n * @param params.readOnly - read-only mode flag\n * @param renderer - renderer instance initialized in tool class\n */\n constructor({ data: t, config: n, api: r, readOnly: i, block: a }, l) {\n this.config = n, this.data = t, this.readOnly = i, this.api = r, this.block = a, this.renderer = l;\n }\n /**\n * Function that is responsible for rendering list with contents\n * @returns Filled with content wrapper element of the list\n */\n render() {\n return this.listWrapper = this.renderer.renderWrapper(!0), this.data.items.length ? this.appendItems(this.data.items, this.listWrapper) : this.appendItems(\n [\n {\n content: \"\",\n meta: {},\n items: []\n }\n ],\n this.listWrapper\n ), this.readOnly || this.listWrapper.addEventListener(\n \"keydown\",\n (t) => {\n switch (t.key) {\n case \"Enter\":\n this.enterPressed(t);\n break;\n case \"Backspace\":\n this.backspace(t);\n break;\n case \"Tab\":\n t.shiftKey ? this.shiftTab(t) : this.addTab(t);\n break;\n }\n },\n !1\n ), \"start\" in this.data.meta && this.data.meta.start !== void 0 && this.changeStartWith(this.data.meta.start), \"counterType\" in this.data.meta && this.data.meta.counterType !== void 0 && this.changeCounters(this.data.meta.counterType), this.listWrapper;\n }\n /**\n * Function that is responsible for list content saving\n * @param wrapper - optional argument wrapper\n * @returns whole list saved data if wrapper not passes, otherwise will return data of the passed wrapper\n */\n save(t) {\n const n = t ?? this.listWrapper, r = (l) => y(l).map((o) => {\n const d = C(o), u = this.renderer.getItemContent(o), p = this.renderer.getItemMeta(o), g = d ? r(d) : [];\n return {\n content: u,\n meta: p,\n items: g\n };\n }), i = n ? r(n) : [];\n let a = {\n style: this.data.style,\n meta: {},\n items: i\n };\n return this.data.style === \"ordered\" && (a.meta = {\n start: this.data.meta.start,\n counterType: this.data.meta.counterType\n }), a;\n }\n /**\n * On paste sanitzation config. Allow only tags that are allowed in the Tool.\n * @returns - config that determines tags supposted by paste handler\n * @todo - refactor and move to list instance\n */\n static get pasteConfig() {\n return {\n tags: [\"OL\", \"UL\", \"LI\"]\n };\n }\n /**\n * Method that specified hot to merge two List blocks.\n * Called by Editor.js by backspace at the beginning of the Block\n *\n * Content of the first item of the next List would be merged with deepest item in current list\n * Other items of the next List would be appended to the current list without any changes in nesting levels\n * @param data - data of the second list to be merged with current\n */\n merge(t) {\n const n = this.block.holder.querySelectorAll(`.${m.item}`), r = n[n.length - 1], i = N(r);\n if (r === null || i === null || (i.insertAdjacentHTML(\"beforeend\", t.items[0].content), this.listWrapper === void 0))\n return;\n const a = y(this.listWrapper);\n if (a.length === 0)\n return;\n const l = a[a.length - 1];\n let s = C(l);\n const o = t.items.shift();\n o !== void 0 && (o.items.length !== 0 && (s === null && (s = this.renderer.renderWrapper(!1)), this.appendItems(o.items, s)), t.items.length > 0 && this.appendItems(t.items, this.listWrapper));\n }\n /**\n * On paste callback that is fired from Editor.\n * @param event - event with pasted data\n * @todo - refactor and move to list instance\n */\n onPaste(t) {\n const n = t.detail.data;\n this.data = this.pasteHandler(n);\n const r = this.listWrapper;\n r && r.parentNode && r.parentNode.replaceChild(this.render(), r);\n }\n /**\n * Handle UL, OL and LI tags paste and returns List data\n * @param element - html element that contains whole list\n * @todo - refactor and move to list instance\n */\n pasteHandler(t) {\n const { tagName: n } = t;\n let r = \"unordered\", i;\n switch (n) {\n case \"OL\":\n r = \"ordered\", i = \"ol\";\n break;\n case \"UL\":\n case \"LI\":\n r = \"unordered\", i = \"ul\";\n }\n const a = {\n style: r,\n meta: {},\n items: []\n };\n r === \"ordered\" && (this.data.meta.counterType = \"numeric\", this.data.meta.start = 1);\n const l = (s) => Array.from(s.querySelectorAll(\":scope > li\")).map((d) => {\n const u = d.querySelector(`:scope > ${i}`), p = u ? l(u) : [];\n return {\n content: d.innerHTML ?? \"\",\n meta: {},\n items: p\n };\n });\n return a.items = l(t), a;\n }\n /**\n * Changes ordered list start property value\n * @param index - new value of the start property\n */\n changeStartWith(t) {\n this.listWrapper.style.setProperty(\"counter-reset\", `item ${t - 1}`), this.data.meta.start = t;\n }\n /**\n * Changes ordered list counterType property value\n * @param counterType - new value of the counterType value\n */\n changeCounters(t) {\n this.listWrapper.style.setProperty(\"--list-counter-type\", t), this.data.meta.counterType = t;\n }\n /**\n * Handles Enter keypress\n * @param event - keydown\n */\n enterPressed(t) {\n var s;\n const n = this.currentItem;\n if (t.stopPropagation(), t.preventDefault(), t.isComposing || n === null)\n return;\n const r = ((s = this.renderer) == null ? void 0 : s.getItemContent(n).trim().length) === 0, i = n.parentNode === this.listWrapper, a = n.previousElementSibling === null, l = this.api.blocks.getCurrentBlockIndex();\n if (i && r)\n if (lr(n) && !sr(n)) {\n a ? this.convertItemToDefaultBlock(l, !0) : this.convertItemToDefaultBlock();\n return;\n } else {\n this.splitList(n);\n return;\n }\n else if (r) {\n this.unshiftItem(n);\n return;\n } else\n this.splitItem(n);\n }\n /**\n * Handle backspace\n * @param event - keydown\n */\n backspace(t) {\n var r;\n const n = this.currentItem;\n if (n !== null && P.isCaretAtStartOfInput(n) && ((r = window.getSelection()) == null ? void 0 : r.isCollapsed) !== !1) {\n if (t.stopPropagation(), n.parentNode === this.listWrapper && n.previousElementSibling === null) {\n this.convertFirstItemToDefaultBlock();\n return;\n }\n t.preventDefault(), this.mergeItemWithPrevious(n);\n }\n }\n /**\n * Reduce indentation for current item\n * @param event - keydown\n */\n shiftTab(t) {\n t.stopPropagation(), t.preventDefault(), this.currentItem !== null && this.unshiftItem(this.currentItem);\n }\n /**\n * Decrease indentation of the passed item\n * @param item - list item to be unshifted\n */\n unshiftItem(t) {\n if (!t.parentNode || !O(t.parentNode))\n return;\n const n = t.parentNode.closest(`.${m.item}`);\n if (!n)\n return;\n let r = C(t);\n if (t.parentElement === null)\n return;\n const i = U(t);\n i !== null && (r === null && (r = this.renderer.renderWrapper(!1)), i.forEach((a) => {\n r.appendChild(a);\n }), t.appendChild(r)), n.after(t), E(t, !1), z(n);\n }\n /**\n * Method that is used for list splitting and moving trailing items to the new separated list\n * @param item - current item html element\n */\n splitList(t) {\n const n = y(t), r = this.block, i = this.api.blocks.getCurrentBlockIndex();\n if (n.length !== 0) {\n const o = n[0];\n this.unshiftItem(o), E(t, !1);\n }\n if (t.previousElementSibling === null && t.parentNode === this.listWrapper) {\n this.convertItemToDefaultBlock(i);\n return;\n }\n const a = U(t);\n if (a === null)\n return;\n const l = this.renderer.renderWrapper(!0);\n a.forEach((o) => {\n l.appendChild(o);\n });\n const s = this.save(l);\n s.meta.start = this.data.style == \"ordered\" ? 1 : void 0, this.api.blocks.insert(r == null ? void 0 : r.name, s, this.config, i + 1), this.convertItemToDefaultBlock(i + 1), l.remove();\n }\n /**\n * Method that is used for splitting item content and moving trailing content to the new sibling item\n * @param currentItem - current item html element\n */\n splitItem(t) {\n const [n, r] = P.getCaretNodeAndOffset();\n if (n === null)\n return;\n const i = N(t);\n let a;\n i === null ? a = \"\" : a = P.getContenteditableSlice(i, n, r, \"right\", !0);\n const l = C(t), s = this.renderItem(a);\n t == null || t.after(s), l && s.appendChild(l), E(s);\n }\n /**\n * Method that is used for merging current item with previous one\n * Content of the current item would be appended to the previous item\n * Current item children would not change nesting level\n * @param item - current item html element\n */\n mergeItemWithPrevious(t) {\n const n = t.previousElementSibling, r = t.parentNode;\n if (r === null || !O(r))\n return;\n const i = r.closest(`.${m.item}`);\n if (!n && !i || n && !O(n))\n return;\n let a;\n if (n) {\n const p = y(n, !1);\n p.length !== 0 && p.length !== 0 ? a = p[p.length - 1] : a = n;\n } else\n a = i;\n const l = this.renderer.getItemContent(t);\n if (!a)\n return;\n E(a, !1);\n const s = N(a);\n if (s === null)\n return;\n s.insertAdjacentHTML(\"beforeend\", l);\n const o = y(t);\n if (o.length === 0) {\n t.remove(), z(a);\n return;\n }\n const d = n || i, u = C(d) ?? this.renderer.renderWrapper(!1);\n n ? o.forEach((p) => {\n u.appendChild(p);\n }) : o.forEach((p) => {\n u.prepend(p);\n }), C(d) === null && a.appendChild(u), t.remove();\n }\n /**\n * Add indentation to current item\n * @param event - keydown\n */\n addTab(t) {\n var a;\n t.stopPropagation(), t.preventDefault();\n const n = this.currentItem;\n if (!n)\n return;\n if (((a = this.config) == null ? void 0 : a.maxLevel) !== void 0) {\n const l = this.currentItemLevel;\n if (l !== null && l === this.config.maxLevel)\n return;\n }\n const r = n.previousSibling;\n if (r === null || !O(r))\n return;\n const i = C(r);\n if (i)\n i.appendChild(n), y(n).forEach((s) => {\n i.appendChild(s);\n });\n else {\n const l = this.renderer.renderWrapper(!1);\n l.appendChild(n), y(n).forEach((o) => {\n l.appendChild(o);\n }), r.appendChild(l);\n }\n z(n), E(n, !1);\n }\n /**\n * Convert current item to default block with passed index\n * @param newBloxkIndex - optional parameter represents index, where would be inseted default block\n * @param removeList - optional parameter, that represents condition, if List should be removed\n */\n convertItemToDefaultBlock(t, n) {\n let r;\n const i = this.currentItem, a = i !== null ? this.renderer.getItemContent(i) : \"\";\n n === !0 && this.api.blocks.delete(), t !== void 0 ? r = this.api.blocks.insert(void 0, { text: a }, void 0, t) : r = this.api.blocks.insert(), i == null || i.remove(), this.api.caret.setToBlock(r, \"start\");\n }\n /**\n * Convert first item of the list to default block\n * This method could be called when backspace button pressed at start of the first item of the list\n * First item of the list would be converted to the paragraph and first item children would be unshifted\n */\n convertFirstItemToDefaultBlock() {\n const t = this.currentItem;\n if (t === null)\n return;\n const n = y(t);\n if (n.length !== 0) {\n const l = n[0];\n this.unshiftItem(l), E(t);\n }\n const r = U(t), i = this.api.blocks.getCurrentBlockIndex(), a = r === null;\n this.convertItemToDefaultBlock(i, a);\n }\n /**\n * Method that calls render function of the renderer with a necessary item meta cast\n * @param itemContent - content to be rendered in new item\n * @param meta - meta used in list item rendering\n * @returns html element of the rendered item\n */\n renderItem(t, n) {\n const r = n ?? this.renderer.composeDefaultMeta();\n switch (!0) {\n case this.renderer instanceof v:\n return this.renderer.renderItem(t, r);\n case this.renderer instanceof b:\n return this.renderer.renderItem(t, r);\n default:\n return this.renderer.renderItem(t, r);\n }\n }\n /**\n * Renders children list\n * @param items - list data used in item rendering\n * @param parentElement - where to append passed items\n */\n appendItems(t, n) {\n t.forEach((r) => {\n var a;\n const i = this.renderItem(r.content, r.meta);\n if (n.appendChild(i), r.items.length) {\n const l = (a = this.renderer) == null ? void 0 : a.renderWrapper(!1);\n this.appendItems(r.items, l), i.appendChild(l);\n }\n });\n }\n}\nconst I = {\n wrapper: `${h}-start-with-field`,\n input: `${h}-start-with-field__input`,\n startWithElementWrapperInvalid: `${h}-start-with-field--invalid`\n};\nfunction or(e, { value: t, placeholder: n, attributes: r, sanitize: i }) {\n const a = c.make(\"div\", I.wrapper), l = c.make(\"input\", I.input, {\n placeholder: n,\n /**\n * Used to prevent focusing on the input by Tab key\n * (Popover in the Toolbar lays below the blocks,\n * so Tab in the last block will focus this hidden input if this property is not set)\n */\n tabIndex: -1,\n /**\n * Value of the start property, if it is not specified, then it is set to one\n */\n value: t\n });\n for (const s in r)\n l.setAttribute(s, r[s]);\n return a.appendChild(l), l.addEventListener(\"input\", () => {\n i !== void 0 && (l.value = i(l.value));\n const s = l.checkValidity();\n !s && !a.classList.contains(I.startWithElementWrapperInvalid) && a.classList.add(I.startWithElementWrapperInvalid), s && a.classList.contains(I.startWithElementWrapperInvalid) && a.classList.remove(I.startWithElementWrapperInvalid), s && e(l.value);\n }), a;\n}\nconst L = /* @__PURE__ */ new Map([\n /**\n * Value that represents default arabic numbers for counters\n */\n [\"Numeric\", \"numeric\"],\n /**\n * Value that represents lower roman numbers for counteres\n */\n [\"Lower Roman\", \"lower-roman\"],\n /**\n * Value that represents upper roman numbers for counters\n */\n [\"Upper Roman\", \"upper-roman\"],\n /**\n * Value that represents lower alpha characters for counters\n */\n [\"Lower Alpha\", \"lower-alpha\"],\n /**\n * Value that represents upper alpha characters for counters\n */\n [\"Upper Alpha\", \"upper-alpha\"]\n]), He = /* @__PURE__ */ new Map([\n /**\n * Value that represents Icon for Numeric counter type\n */\n [\"numeric\", St],\n /**\n * Value that represents Icon for Lower Roman counter type\n */\n [\"lower-roman\", Ot],\n /**\n * Value that represents Icon for Upper Roman counter type\n */\n [\"upper-roman\", kt],\n /**\n * Value that represents Icon for Lower Alpha counter type\n */\n [\"lower-alpha\", Et],\n /**\n * Value that represents Icon for Upper Alpha counter type\n */\n [\"upper-alpha\", _t]\n]);\nfunction ur(e) {\n return e.replace(/\\D+/g, \"\");\n}\nfunction cr(e) {\n return typeof e.items[0] == \"string\";\n}\nfunction dr(e) {\n return !(\"meta\" in e);\n}\nfunction fr(e) {\n return typeof e.items[0] != \"string\" && \"text\" in e.items[0] && \"checked\" in e.items[0] && typeof e.items[0].text == \"string\" && typeof e.items[0].checked == \"boolean\";\n}\nfunction pr(e) {\n const t = [];\n return cr(e) ? (e.items.forEach((n) => {\n t.push({\n content: n,\n meta: {},\n items: []\n });\n }), {\n style: e.style,\n meta: {},\n items: t\n }) : fr(e) ? (e.items.forEach((n) => {\n t.push({\n content: n.text,\n meta: {\n checked: n.checked\n },\n items: []\n });\n }), {\n style: \"checklist\",\n meta: {},\n items: t\n }) : dr(e) ? {\n style: e.style,\n meta: {},\n items: e.items\n } : e;\n}\nclass G {\n /**\n * Notify core that read-only mode is supported\n */\n static get isReadOnlySupported() {\n return !0;\n }\n /**\n * Allow to use native Enter behaviour\n */\n static get enableLineBreaks() {\n return !0;\n }\n /**\n * Get Tool toolbox settings\n * icon - Tool icon's SVG\n * title - title to show in toolbox\n */\n static get toolbox() {\n return [\n {\n icon: $e,\n title: \"Unordered List\",\n data: {\n style: \"unordered\"\n }\n },\n {\n icon: Be,\n title: \"Ordered List\",\n data: {\n style: \"ordered\"\n }\n },\n {\n icon: Ae,\n title: \"Checklist\",\n data: {\n style: \"checklist\"\n }\n }\n ];\n }\n /**\n * On paste sanitzation config. Allow only tags that are allowed in the Tool.\n * @returns - paste config object used in editor\n */\n static get pasteConfig() {\n return {\n tags: [\"OL\", \"UL\", \"LI\"]\n };\n }\n /**\n * Convert from text to list with import and export list to text\n */\n static get conversionConfig() {\n return {\n export: (t) => G.joinRecursive(t),\n import: (t, n) => ({\n meta: {},\n items: [\n {\n content: t,\n meta: {},\n items: []\n }\n ],\n style: (n == null ? void 0 : n.defaultStyle) !== void 0 ? n.defaultStyle : \"unordered\"\n })\n };\n }\n /**\n * Get list style name\n */\n get listStyle() {\n return this.data.style || this.defaultListStyle;\n }\n /**\n * Set list style\n * @param style - new style to set\n */\n set listStyle(t) {\n var r;\n this.data.style = t, this.changeTabulatorByStyle();\n const n = this.list.render();\n (r = this.listElement) == null || r.replaceWith(n), this.listElement = n;\n }\n /**\n * Render plugin`s main Element and fill it with saved data\n * @param params - tool constructor options\n * @param params.data - previously saved data\n * @param params.config - user config for Tool\n * @param params.api - Editor.js API\n * @param params.readOnly - read-only mode flag\n */\n constructor({ data: t, config: n, api: r, readOnly: i, block: a }) {\n var s;\n this.api = r, this.readOnly = i, this.config = n, this.block = a, this.defaultListStyle = ((s = this.config) == null ? void 0 : s.defaultStyle) || \"unordered\";\n const l = {\n style: this.defaultListStyle,\n meta: {},\n items: []\n };\n this.data = Object.keys(t).length ? pr(t) : l, this.listStyle === \"ordered\" && this.data.meta.counterType === void 0 && (this.data.meta.counterType = \"numeric\"), this.changeTabulatorByStyle();\n }\n /**\n * Convert from list to text for conversionConfig\n * @param data - current data of the list\n * @returns - string of the recursively merged contents of the items of the list\n */\n static joinRecursive(t) {\n return t.items.map((n) => `${n.content} ${G.joinRecursive(n)}`).join(\"\");\n }\n /**\n * Function that is responsible for content rendering\n * @returns rendered list wrapper with all contents\n */\n render() {\n return this.listElement = this.list.render(), this.listElement;\n }\n /**\n * Function that is responsible for content saving\n * @returns formatted content used in editor\n */\n save() {\n return this.data = this.list.save(), this.data;\n }\n /**\n * Function that is responsible for mergind two lists into one\n * @param data - data of the next standing list, that should be merged with current\n */\n merge(t) {\n this.list.merge(t);\n }\n /**\n * Creates Block Tune allowing to change the list style\n * @returns array of tune configs\n */\n renderSettings() {\n const t = [\n {\n label: this.api.i18n.t(\"Unordered\"),\n icon: $e,\n closeOnActivate: !0,\n isActive: this.listStyle == \"unordered\",\n onActivate: () => {\n this.listStyle = \"unordered\";\n }\n },\n {\n label: this.api.i18n.t(\"Ordered\"),\n icon: Be,\n closeOnActivate: !0,\n isActive: this.listStyle == \"ordered\",\n onActivate: () => {\n this.listStyle = \"ordered\";\n }\n },\n {\n label: this.api.i18n.t(\"Checklist\"),\n icon: Ae,\n closeOnActivate: !0,\n isActive: this.listStyle == \"checklist\",\n onActivate: () => {\n this.listStyle = \"checklist\";\n }\n }\n ];\n if (this.listStyle === \"ordered\") {\n const n = or(\n (a) => this.changeStartWith(Number(a)),\n {\n value: String(this.data.meta.start ?? 1),\n placeholder: \"\",\n attributes: {\n required: \"true\"\n },\n sanitize: (a) => ur(a)\n }\n ), r = [\n {\n label: this.api.i18n.t(\"Start with\"),\n icon: It,\n children: {\n items: [\n {\n element: n,\n // @ts-expect-error ts(2820) can not use PopoverItem enum from editor.js types\n type: \"html\"\n }\n ]\n }\n }\n ], i = {\n label: this.api.i18n.t(\"Counter type\"),\n icon: He.get(this.data.meta.counterType),\n children: {\n items: []\n }\n };\n L.forEach((a, l) => {\n i.children.items.push({\n title: this.api.i18n.t(l),\n icon: He.get(L.get(l)),\n isActive: this.data.meta.counterType === L.get(l),\n closeOnActivate: !0,\n onActivate: () => {\n this.changeCounters(L.get(l));\n }\n });\n }), t.push({ type: \"separator\" }, ...r, i);\n }\n return t;\n }\n /**\n * On paste callback that is fired from Editor.\n * @param event - event with pasted data\n */\n onPaste(t) {\n const { tagName: n } = t.detail.data;\n switch (n) {\n case \"OL\":\n this.listStyle = \"ordered\";\n break;\n case \"UL\":\n case \"LI\":\n this.listStyle = \"unordered\";\n }\n this.list.onPaste(t);\n }\n /**\n * Handle UL, OL and LI tags paste and returns List data\n * @param element - html element that contains whole list\n */\n pasteHandler(t) {\n return this.list.pasteHandler(t);\n }\n /**\n * Changes ordered list counterType property value\n * @param counterType - new value of the counterType value\n */\n changeCounters(t) {\n var n;\n (n = this.list) == null || n.changeCounters(t), this.data.meta.counterType = t;\n }\n /**\n * Changes ordered list start property value\n * @param index - new value of the start property\n */\n changeStartWith(t) {\n var n;\n (n = this.list) == null || n.changeStartWith(t), this.data.meta.start = t;\n }\n /**\n * This method allows changing tabulator respectfully to passed style\n */\n changeTabulatorByStyle() {\n switch (this.listStyle) {\n case \"ordered\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new v(this.readOnly, this.config)\n );\n break;\n case \"unordered\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new b(this.readOnly, this.config)\n );\n break;\n case \"checklist\":\n this.list = new K(\n {\n data: this.data,\n readOnly: this.readOnly,\n api: this.api,\n config: this.config,\n block: this.block\n },\n new f(this.readOnly, this.config)\n );\n break;\n }\n }\n}\nexport {\n G as default\n};\n"],"names":["e","t","Ce","Ke","n","Xn","o","ot","i","s","r","Vn","Lo","y","qn","Ie","Zn","S","X","le","A","D","te","Gn","yo","wo","V","Po","Qn","No","Fe","Jn","ei","Eo","dt","u","ti","je","ut","vt","oi","ni","ii","si","ht","me","Ro","be","pt","ri","d$1","d","ai","li","Do","ci","di","ui","hi","Fo","jo","he","z","Ho","Oe$1","J","_e$1","E$1","E","_e","b$1","b","a","l","pi","ft","$o","zo","Uo","Te","gt","He","Wo","Yo","xo","fi","Bo","ee","R","Oe","p","g","f","v","T","gi","h","c","mi","bi","vi","kt","ki","yi","wi","Ko","k","x","C","F","N","B","O","M","ie","W","ve","se","tt","Yn","Kn","ko","H","Q","Ei","xi","Bi","Ci","Ti","Xo","Si","Ii","yt","wt","Z","Oi","_i","Mi","Ai","Li","Pi","Ni","Ri","Di","Fi","Vo","ji","Hi","U","Et","$i","$e","ze","zi","Ui","Wi","qo","K","Yi","Zo","Ee","ke","ce$1","ce","Ki","Xi","Vi","qi","Zi","Gi","Qi","Ji","Co","es","ts","Go","os","ns","is","ss","rs","ne","ye","we","as","xt$1","Y","L","xt","nt","it","Qo","G","$","P","fe","To","So","Jo","re","Se","Ue","st","rt","ls","cs","ds","us","en","tn","Bt","hs","on","xe","ps","at","lt","fs","gs","ms","nn","sn","bs","vs","ks","ge","ys","ws","rn","Le","Ct","an","Es","ln","xs","Bs","ae","Pe","cn","pe","We","mt","Tt$1","Cs","dn","un","Ne","Re","hn","St","Xe","de","It","Ot","Ts","ue","_t","Ss","pn","Mt","Is","At","Lt","Os","fn","Pt","_s","gn","Nt","Rt","Dt","Ms","Ps","As","Ls","Ve","Ft","Ns","mn","jt","Rs","Ds","Fs","js","Hs","$s","oe","zs","bn","Us","Ws","De","Ys","Ks","Xs","bt","Vs","qs","Zs","Gs","Qs","Js","er","tr","Ht","ir","or","nr","vn","$t","qe","zt","sr","ar","rr","kn","Ut","cr","lr","Wt","Yt","Io","yn","dr","wn","Kt","Ze","Xt","ur","Ge","Vt","hr","En","pr","fr","gr","xn","qt","Me","yr","mr","br","vr","kr","Bn","Zt","wr","Gt","Qt","xr","Er","Cn","Jt","eo","to","Br","oo","no","Or","Cr","Tr","Sr","Ir","Ar","_r","Mr","Tn","io","Pr","Lr","Sn","so","Rr","Nr","In","ro","Dr","On","ao","Fr","Qe","Hr","jr","Ur","$r","zr","_n","Mn","lo","Yr","Wr","co","Je","Kr","An","et","Xr","Ln","uo","Zr","Oo","Vr","qr","Pn","ho","Jr","Ae","Gr","Qr","Nn","po","oa","ea","ta","na","ct","_o","Mo","ia","Ao","sa","ra","aa","Ye","la","ca","da","ua","ha","Rn","Dn","pa","fa","Be","ga","ma","ba","va","fo","go","mo","bo","Fn$1","Fn","jn$1","jn","ka","Tt","ya","j","wa","Ea","Hn","vo","xa","$n$1","$n","zn$1","zn","Un$1","Un","Ba","Ca","Ta","Wn","Sa","Ia","Oa","_a","Aa","v$1","w","_","m","q","I"],"mappings":"CAAC,UAAU,CAAc,GAAG,CAAC,GAAG,OAAO,SAAS,IAAI,CAAC,IAAIA,EAAE,SAAS,cAAc,OAAO,EAAEA,EAAE,YAAY,SAAS,eAAe,iIAAiI,CAAC,EAAE,SAAS,KAAK,YAAYA,CAAC,CAAC,CAAC,OAAOC,EAAE,CAAC,QAAQ,MAAM,iCAAiCA,CAAC,CAAC,CAAC,GAAI,EAClW,IAAIC,GAAK,OAAO,WAAa,IAAM,WAAa,OAAO,OAAS,IAAM,OAAS,OAAO,OAAS,IAAM,OAAS,OAAO,KAAO,IAAM,KAAO,CAAE,EAC3I,SAASC,GAAGC,EAAG,CACb,OAAOA,GAAKA,EAAE,YAAc,OAAO,UAAU,eAAe,KAAKA,EAAG,SAAS,EAAIA,EAAE,QAAUA,CAC/F,CACA,SAASC,GAAGD,EAAG,CACb,GAAIA,EAAE,WACJ,OAAOA,EACT,IAAI,EAAIA,EAAE,QACV,GAAI,OAAO,GAAK,WAAY,CAC1B,IAAI,EAAI,SAASE,GAAI,CACnB,OAAO,gBAAgBA,EAAI,QAAQ,UAAU,EAAG,UAAW,KAAK,WAAW,EAAI,EAAE,MAAM,KAAM,SAAS,CACvG,EACD,EAAE,UAAY,EAAE,SACjB,MACC,EAAI,CAAE,EACR,OAAO,OAAO,eAAe,EAAG,aAAc,CAAE,MAAO,EAAI,CAAA,EAAG,OAAO,KAAKF,CAAC,EAAE,QAAQ,SAASE,EAAG,CAC/F,IAAI,EAAI,OAAO,yBAAyBF,EAAGE,CAAC,EAC5C,OAAO,eAAe,EAAGA,EAAG,EAAE,IAAM,EAAI,CACtC,WAAY,GACZ,IAAK,UAAW,CACd,OAAOF,EAAEE,CAAC,CAClB,CACA,CAAK,CACF,CAAA,EAAG,CACN,CACA,SAASC,IAAK,CACd,CACA,OAAO,OAAOA,GAAI,CAChB,QAASA,GACT,SAAUA,GACV,OAAQ,UAAW,CAClB,EACD,WAAY,EACd,CAAC,EACD,QAAQ,UAAU,UAAY,QAAQ,UAAU,QAAU,QAAQ,UAAU,iBAAmB,QAAQ,UAAU,oBAAsB,QAAQ,UAAU,mBAAqB,QAAQ,UAAU,kBAAoB,QAAQ,UAAU,uBAAyB,SAASH,EAAG,CACzQ,MAAM,GAAK,KAAK,UAAY,KAAK,eAAe,iBAAiBA,CAAC,EAClE,IAAI,EAAI,EAAE,OACV,KAAO,EAAE,GAAK,GAAK,EAAE,KAAK,CAAC,IAAM,MAC/B,CACF,OAAO,EAAI,EACb,GACA,QAAQ,UAAU,UAAY,QAAQ,UAAU,QAAU,SAASA,EAAG,CACpE,IAAI,EAAI,KACR,GAAI,CAAC,SAAS,gBAAgB,SAAS,CAAC,EACtC,OAAO,KACT,EAAG,CACD,GAAI,EAAE,QAAQA,CAAC,EACb,OAAO,EACT,EAAI,EAAE,eAAiB,EAAE,UAC1B,OAAQ,IAAM,MACf,OAAO,IACT,GACA,QAAQ,UAAU,UAAY,QAAQ,UAAU,QAAU,SAASJ,EAAG,CACpE,MAAMC,EAAI,SAAS,uBAAwB,EAC3C,MAAM,QAAQD,CAAC,IAAMA,EAAI,CAACA,CAAC,GAAIA,EAAE,QAASM,GAAM,CAC9C,MAAME,EAAIF,aAAa,KACvBL,EAAE,YAAYO,EAAIF,EAAI,SAAS,eAAeA,CAAC,CAAC,CACjD,CAAA,EAAG,KAAK,aAAaL,EAAG,KAAK,UAAU,CAC1C,GACA,QAAQ,UAAU,yBAA2B,QAAQ,UAAU,uBAAyB,SAASG,EAAG,CAClGA,EAAI,UAAU,SAAW,EAAI,GAAK,CAAC,CAACA,EACpC,MAAM,EAAI,KAAK,WAAY,EAAI,OAAO,iBAAiB,EAAG,IAAI,EAAGE,EAAI,SAAS,EAAE,iBAAiB,kBAAkB,CAAC,EAAG,EAAI,SAAS,EAAE,iBAAiB,mBAAmB,CAAC,EAAGG,EAAI,KAAK,UAAY,EAAE,UAAY,EAAE,UAAWC,EAAI,KAAK,UAAY,EAAE,UAAY,KAAK,aAAeJ,EAAI,EAAE,UAAY,EAAE,aAAc,EAAI,KAAK,WAAa,EAAE,WAAa,EAAE,WAAY,EAAI,KAAK,WAAa,EAAE,WAAa,KAAK,YAAc,EAAI,EAAE,WAAa,EAAE,YAAa,EAAIG,GAAK,CAACC,GAC7cD,GAAKC,IAAMN,IAAM,EAAE,UAAY,KAAK,UAAY,EAAE,UAAY,EAAE,aAAe,EAAIE,EAAI,KAAK,aAAe,IAAK,GAAK,IAAMF,IAAM,EAAE,WAAa,KAAK,WAAa,EAAE,WAAa,EAAE,YAAc,EAAI,EAAI,KAAK,YAAc,IAAKK,GAAKC,GAAK,GAAK,IAAM,CAACN,GAAK,KAAK,eAAe,CAAC,CACpR,GACA,OAAO,oBAAsB,OAAO,qBAAuB,SAASA,EAAG,CACrE,MAAM,EAAI,KAAK,IAAK,EACpB,OAAO,WAAW,UAAW,CAC3BA,EAAE,CACA,WAAY,GACZ,cAAe,UAAW,CACxB,OAAO,KAAK,IAAI,EAAG,IAAM,KAAK,IAAG,EAAK,EAAE,CAChD,CACA,CAAK,CACF,EAAE,CAAC,CACN,EACA,OAAO,mBAAqB,OAAO,oBAAsB,SAASA,EAAG,CACnE,aAAaA,CAAC,CAChB,EACA,IAAIO,GAAK,CAACP,EAAI,KAAO,OAAO,gBAAgB,IAAI,WAAWA,CAAC,CAAC,EAAE,OAAO,CAAC,EAAG,KAAO,GAAK,GAAI,EAAI,GAAK,GAAK,EAAE,SAAS,EAAE,EAAI,EAAI,GAAK,IAAM,EAAI,IAAI,SAAS,EAAE,EAAE,YAAW,EAAK,EAAI,GAAK,GAAK,IAAM,GAAK,IAAK,GAAI,EAAE,EACjN,IAAIQ,IAAuBR,IAAOA,EAAE,QAAU,UAAWA,EAAE,KAAO,OAAQA,EAAE,KAAO,OAAQA,EAAE,MAAQ,QAASA,IAAIQ,IAAM,EAAE,EAC1H,MAAMC,EAAI,CACR,UAAW,EACX,IAAK,EACL,MAAO,GAIP,IAAK,GAEL,KAAM,GACN,GAAI,GACJ,KAAM,GACN,MAAO,GACP,OAAQ,EAGV,EAAGC,GAAK,CACN,KAAM,CAKR,EACA,SAASC,GAAGX,EAAG,EAAG,EAAI,MAAOE,EAAG,EAAI,iBAAkB,CACpD,GAAI,EAAE,YAAa,SAAW,CAAC,OAAO,QAAQ,CAAC,EAC7C,OACF,MAAMG,EAAI,CAAC,OAAQ,MAAO,OAAQ,OAAO,EAAE,SAAS,CAAC,EAAGC,EAAI,CAAE,EAC9D,OAAQK,GAAG,SAAQ,CACjB,IAAK,QACH,GAAI,IAAM,QACR,OACF,MACF,IAAK,OACH,GAAI,CAAC,CAAC,QAAS,MAAM,EAAE,SAAS,CAAC,EAC/B,OACF,MACF,IAAK,OACH,GAAI,CAACN,GAAKL,EACR,OACF,KACN,CACEE,GAAKI,EAAE,KAAKJ,CAAC,EACb,MAAM,EAAI,wBAUVF,IAAMK,GAAKC,EAAE,QAV0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAUf,CAAC,EAAG,EAAI,KAAK,CAAC,MAAM,CAAC,IAAM,EAAI,KAAK,CAAC,KAAK,CAAC,IACnE,GAAI,CACFD,EAAIH,EAAI,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAO,GAAGI,CAAC,EAAI,QAAQ,CAAC,EAAE,EAAG,GAAGA,CAAC,EAAI,QAAQ,CAAC,EAAE,CAAC,CAC5E,MAAU,CACV,CACA,CACAK,GAAG,SAAW,UACd,SAASC,GAAGZ,EAAG,CACbW,GAAG,SAAWX,CAChB,CACA,MAAMa,EAAIF,GAAG,KAAK,OAAQ,EAAE,EAAGG,EAAIH,GAAG,KAAK,OAAQ,EAAE,EACrD,SAASI,GAAGf,EAAG,CACb,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC,EAAE,YAAa,CAClF,CACA,SAASgB,EAAEhB,EAAG,CACZ,OAAOe,GAAGf,CAAC,IAAM,YAAce,GAAGf,CAAC,IAAM,eAC3C,CACA,SAASiB,EAAEjB,EAAG,CACZ,OAAOe,GAAGf,CAAC,IAAM,QACnB,CACA,SAASkB,GAAGlB,EAAG,CACb,OAAOe,GAAGf,CAAC,IAAM,QACnB,CACA,SAASmB,GAAGnB,EAAG,CACb,OAAOe,GAAGf,CAAC,IAAM,SACnB,CACA,SAASoB,GAAGpB,EAAG,CACb,OAAOe,GAAGf,CAAC,IAAM,QACnB,CACA,SAASqB,GAAGrB,EAAG,CACb,OAAOe,GAAGf,CAAC,IAAM,WACnB,CACA,SAASsB,EAAEtB,EAAG,CACZ,OAAOA,EAAI,OAAO,KAAKA,CAAC,EAAE,SAAW,GAAKA,EAAE,cAAgB,OAAS,EACvE,CACA,SAASuB,GAAGvB,EAAG,CACb,OAAOA,EAAI,IAAMA,EAAI,IACrBA,IAAM,IAAMA,IAAM,IAClBA,IAAM,KACNA,EAAI,IAAMA,EAAI,IACdA,EAAI,IAAMA,EAAI,KACdA,EAAI,KAAOA,EAAI,KACfA,EAAI,KAAOA,EAAI,GACjB,CACA,eAAewB,GAAGxB,EAAG,EAAI,IAAM,CAC/B,EAAG,EAAI,IAAM,CACb,EAAG,CACD,eAAeE,EAAE,EAAGG,EAAGC,EAAG,CACxB,GAAI,CACF,MAAM,EAAE,SAAS,EAAE,IAAI,EAAG,MAAMD,EAAEgB,GAAG,EAAE,IAAI,EAAI,CAAA,EAAK,EAAE,IAAI,CAChE,MAAY,CACNf,EAAEe,GAAG,EAAE,IAAI,EAAI,CAAE,EAAG,EAAE,IAAI,CAChC,CACA,CACE,OAAOrB,EAAE,OAAO,MAAO,EAAGK,KAAO,MAAM,EAAGH,EAAEG,EAAG,EAAG,CAAC,GAAI,QAAQ,QAAO,CAAE,CAC1E,CACA,SAASoB,GAAGzB,EAAG,CACb,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAC,CACrC,CACA,SAAS0B,GAAG1B,EAAG,EAAG,CAChB,OAAO,UAAW,CAChB,MAAM,EAAI,KAAME,EAAI,UACpB,OAAO,WAAW,IAAMF,EAAE,MAAM,EAAGE,CAAC,EAAG,CAAC,CACzC,CACH,CACA,SAASyB,GAAG3B,EAAG,CACb,OAAOA,EAAE,KAAK,MAAM,GAAG,EAAE,IAAK,CAChC,CACA,SAAS4B,GAAG5B,EAAG,CACb,MAAO,yBAAyB,KAAKA,CAAC,CACxC,CACA,SAAS6B,GAAG7B,EAAG,EAAG,EAAG,CACnB,IAAIE,EACJ,MAAO,IAAI,IAAM,CACV,MAACG,EAAI,KAAMC,EAAI,IAAM,CACxBJ,EAAI,KAAWF,EAAE,MAAMK,EAAG,CAAC,CAC5B,EACD,OAAO,aAAaH,CAAC,EAAGA,EAAI,OAAO,WAAWI,EAAG,CAAC,CACnD,CACH,CACA,SAASwB,GAAG9B,EAAG,EAAG,EAAI,OAAQ,CAC5B,IAAIE,EAAG,EAAGG,EAAGC,EAAI,KAAM,EAAI,EAC3B,IAAM,EAAI,IACV,MAAM,EAAI,UAAW,CACnB,EAAI,EAAE,UAAY,GAAK,EAAI,KAAK,IAAK,EAAEA,EAAI,KAAMD,EAAIL,EAAE,MAAME,EAAG,CAAC,EAAGI,IAAMJ,EAAI,EAAI,KACnF,EACD,OAAO,UAAW,CAChB,MAAM,EAAI,KAAK,IAAK,EACpB,CAAC,GAAK,EAAE,UAAY,KAAO,EAAI,GAC/B,MAAM6B,EAAI,GAAK,EAAI,GACnB,OAAO7B,EAAI,KAAM,EAAI,UAAW6B,GAAK,GAAKA,EAAI,GAAKzB,IAAM,aAAaA,CAAC,EAAGA,EAAI,MAAO,EAAI,EAAGD,EAAIL,EAAE,MAAME,EAAG,CAAC,EAAGI,IAAMJ,EAAI,EAAI,OAAS,CAACI,GAAK,EAAE,WAAa,KAAOA,EAAI,WAAW,EAAGyB,CAAC,GAAI1B,CAC1L,CACH,CACA,SAAS2B,IAAK,CACZ,MAAMhC,EAAI,CACR,IAAK,GACL,IAAK,GACL,IAAK,GACL,MAAO,EACX,EAAK,EAAI,OAAO,KAAKA,CAAC,EAAE,KAAM,GAAM,OAAO,UAAU,WAAW,YAAW,EAAG,QAAQ,CAAC,IAAM,EAAE,EAC7F,OAAO,IAAMA,EAAE,CAAC,EAAI,IAAKA,CAC3B,CACA,SAASiC,GAAGjC,EAAG,CACb,OAAOA,EAAE,CAAC,EAAE,YAAa,EAAGA,EAAE,MAAM,CAAC,CACvC,CACA,SAASkC,GAAGlC,KAAM,EAAG,CACnB,GAAI,CAAC,EAAE,OACL,OAAOA,EACT,MAAM,EAAI,EAAE,MAAO,EACnB,GAAIiB,EAAEjB,CAAC,GAAKiB,EAAE,CAAC,EACb,UAAWf,KAAK,EACde,EAAE,EAAEf,CAAC,CAAC,GAAKF,EAAEE,CAAC,GAAK,OAAO,OAAOF,EAAG,CAAE,CAACE,CAAC,EAAG,CAAE,CAAA,CAAE,EAAGgC,GAAGlC,EAAEE,CAAC,EAAG,EAAEA,CAAC,CAAC,GAAK,OAAO,OAAOF,EAAG,CAAE,CAACE,CAAC,EAAG,EAAEA,CAAC,CAAC,CAAE,EACtG,OAAOgC,GAAGlC,EAAG,GAAG,CAAC,CACnB,CACA,SAASmC,GAAGnC,EAAG,CACb,MAAM,EAAIgC,GAAI,EACd,OAAOhC,EAAIA,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,cAAe,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,WAAY,KAAK,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,OAAQ,KAAK,EAAG,EAAE,IAAMA,EAAIA,EAAE,QAAQ,aAAc,GAAG,EAAE,QAAQ,QAAS,GAAG,EAAIA,EAAIA,EAAE,QAAQ,QAAS,MAAM,EAAE,QAAQ,YAAa,KAAK,EAAGA,CACxZ,CACA,SAASoC,GAAGpC,EAAG,CACb,GAAI,CACF,OAAO,IAAI,IAAIA,CAAC,EAAE,IACtB,MAAU,CACV,CACE,OAAOA,EAAE,UAAU,EAAG,CAAC,IAAM,KAAO,OAAO,SAAS,SAAWA,EAAI,OAAO,SAAS,OAASA,CAC9F,CACA,SAASqC,IAAK,CACZ,OAAO9B,GAAG,EAAE,CACd,CACA,SAAS+B,GAAGtC,EAAG,CACb,OAAO,KAAKA,EAAG,QAAQ,CACzB,CACA,SAASuC,GAAGvC,EAAI,GAAI,CAClB,MAAO,GAAGA,CAAC,GAAG,KAAK,MAAM,KAAK,OAAM,EAAK,GAAG,EAAE,SAAS,EAAE,CAAC,EAC5D,CACA,SAASwC,GAAGxC,EAAG,EAAG,EAAG,CACnB,MAAME,EAAI,IAAI,CAAC,kFAAkF,CAAC,aAClGF,GAAKc,EAAEZ,EAAG,MAAM,CAClB,CACA,SAASuC,GAAGzC,EAAG,EAAG,EAAG,CACnB,MAAME,EAAI,EAAE,MAAQ,QAAU,MAAO,EAAI,EAAEA,CAAC,EAAGG,EAAI,IAAI,CAAC,QACxD,GAAI,EAAEH,CAAC,EAAI,YAAYI,EAAG,CACxB,OAAO,KAAKD,CAAC,IAAM,SAAW,KAAKA,CAAC,EAAI,EAAE,MAAM,KAAM,GAAGC,CAAC,GAAI,KAAKD,CAAC,CACrE,EAAEH,IAAM,OAAS,EAAE,IAAK,CACvB,MAAMI,EAAI,EAAE,IACZ,EAAE,IAAM,SAAS,EAAG,CAClB,OAAON,EAAEK,CAAC,EAAGC,EAAE,MAAM,KAAM,CAAC,CAC7B,CACL,CACE,OAAO,CACT,CACA,MAAMoC,GAAK,IACX,SAASC,IAAK,CACZ,OAAO,OAAO,WAAW,eAAeD,EAAE,KAAK,EAAE,OACnD,CACA,MAAME,GAAK,OAAO,OAAS,KAAO,OAAO,WAAa,OAAO,UAAU,WAAa,iBAAiB,KAAK,OAAO,UAAU,QAAQ,GAAK,OAAO,UAAU,WAAa,YAAc,OAAO,UAAU,eAAiB,GACtN,SAASC,GAAG7C,EAAG,EAAG,CAChB,MAAM,EAAI,MAAM,QAAQA,CAAC,GAAKiB,EAAEjB,CAAC,EAAGE,EAAI,MAAM,QAAQ,CAAC,GAAKe,EAAE,CAAC,EAC/D,OAAO,GAAKf,EAAI,KAAK,UAAUF,CAAC,IAAM,KAAK,UAAU,CAAC,EAAIA,IAAM,CAClE,CACA,IAAA8C,EAAA,MAAMC,CAAE,CAON,OAAO,YAAY,EAAG,CACpB,OAAO,EAAE,SAAW,CAClB,OACA,OACA,KACA,MACA,UACA,QACA,KACA,MACA,QACA,SACA,OACA,OACA,QACA,SACA,QACA,KACN,EAAM,SAAS,EAAE,OAAO,CACxB,CAOE,OAAO,eAAe,EAAG,CACvB,OAAO,GAAK,EAAE,SAAW,CACvB,KACA,KACN,EAAM,SAAS,EAAE,OAAO,CACxB,CASE,OAAO,KAAK,EAAG,EAAI,KAAM7C,EAAI,CAAA,EAAI,CAC/B,MAAM,EAAI,SAAS,cAAc,CAAC,EAClC,GAAI,MAAM,QAAQ,CAAC,EAAG,CACpB,MAAMG,EAAI,EAAE,OAAQC,GAAMA,IAAM,MAAM,EACtC,EAAE,UAAU,IAAI,GAAGD,CAAC,CACrB,MACC,GAAK,EAAE,UAAU,IAAI,CAAC,EACxB,UAAWA,KAAKH,EACd,OAAO,UAAU,eAAe,KAAKA,EAAGG,CAAC,IAAM,EAAEA,CAAC,EAAIH,EAAEG,CAAC,GAC3D,OAAO,CACX,CAOE,OAAO,KAAK,EAAG,CACb,OAAO,SAAS,eAAe,CAAC,CACpC,CAOE,OAAO,OAAO,EAAG,EAAG,CAClB,MAAM,QAAQ,CAAC,EAAI,EAAE,QAASH,GAAM,EAAE,YAAYA,CAAC,CAAC,EAAI,EAAE,YAAY,CAAC,CAC3E,CAOE,OAAO,QAAQ,EAAG,EAAG,CACnB,MAAM,QAAQ,CAAC,GAAK,EAAI,EAAE,QAAS,EAAE,EAAE,QAASA,GAAM,EAAE,QAAQA,CAAC,CAAC,GAAK,EAAE,QAAQ,CAAC,CACtF,CAQE,OAAO,KAAK,EAAG,EAAG,CAChB,MAAMA,EAAI,SAAS,cAAc,KAAK,EAAG,EAAI,EAAE,WAC/C,EAAE,aAAaA,EAAG,CAAC,EAAG,EAAE,aAAa,EAAG,CAAC,EAAG,EAAE,aAAa,EAAGA,CAAC,EAAG,EAAE,YAAYA,CAAC,CACrF,CAUE,OAAO,KAAK,EAAI,SAAU,EAAG,CAC3B,OAAO,EAAE,cAAc,CAAC,CAC5B,CAOE,OAAO,IAAI,EAAG,CACZ,OAAO,SAAS,eAAe,CAAC,CACpC,CAUE,OAAO,QAAQ,EAAI,SAAU,EAAG,CAC9B,OAAO,EAAE,iBAAiB,CAAC,CAC/B,CAIE,WAAW,mBAAoB,CAC7B,MAAO,wDAA0D,CAAC,OAAQ,WAAY,QAAS,SAAU,SAAU,MAAO,KAAK,EAAE,IAAKL,GAAM,eAAeA,CAAC,IAAI,EAAE,KAAK,IAAI,CAC/K,CAME,OAAO,cAAc,EAAG,CACtB,OAAO4B,GAAG,EAAE,iBAAiBsB,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,EAAG7C,IAAM6C,EAAE,cAAc7C,CAAC,GAAK6C,EAAE,2BAA2B7C,CAAC,EAAI,CAAC,GAAG,EAAGA,CAAC,EAAI,CAAC,GAAG,EAAG,GAAG6C,EAAE,wBAAwB7C,CAAC,CAAC,EAAG,CAAA,CAAE,CACvL,CAYE,OAAO,eAAe,EAAG,EAAI,GAAI,CAC/B,MAAMA,EAAI,EAAI,YAAc,aAAc,EAAI,EAAI,kBAAoB,cACtE,GAAI,GAAK,EAAE,WAAa,KAAK,cAAgB,EAAEA,CAAC,EAAG,CACjD,IAAIG,EAAI,EAAEH,CAAC,EACX,GAAI6C,EAAE,YAAY1C,CAAC,GAAK,CAAC0C,EAAE,cAAc1C,CAAC,GAAK,CAAC0C,EAAE,eAAe1C,CAAC,EAChE,GAAIA,EAAE,CAAC,EACLA,EAAIA,EAAE,CAAC,UACAA,EAAE,WAAW,CAAC,EACrBA,EAAIA,EAAE,WAAW,CAAC,MAElB,QAAOA,EAAE,WACb,OAAO,KAAK,eAAeA,EAAG,CAAC,CACrC,CACI,OAAO,CACX,CAQE,OAAO,UAAU,EAAG,CAClB,OAAOe,GAAG,CAAC,EAAI,GAAK,GAAK,EAAE,UAAY,EAAE,WAAa,KAAK,YAC/D,CAQE,OAAO,WAAW,EAAG,CACnB,OAAOA,GAAG,CAAC,EAAI,GAAK,GAAK,EAAE,UAAY,EAAE,WAAa,KAAK,sBAC/D,CAOE,OAAO,kBAAkB,EAAG,CAC1B,OAAO,EAAE,kBAAoB,MACjC,CAQE,OAAO,cAAc,EAAG,CACtB,MAAM,EAAI,CACR,QACA,UACD,EACD,OAAO,GAAK,EAAE,QAAU,EAAE,SAAS,EAAE,OAAO,EAAI,EACpD,CAOE,OAAO,YAAY,EAAG,CACpB,IAAI,EAAI,GACR,GAAI2B,EAAE,cAAc,CAAC,EACnB,OAAQ,EAAE,KAAI,CACZ,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,QACH,EAAI,GACJ,KACV,MAEM,EAAIA,EAAE,kBAAkB,CAAC,EAC3B,OAAO,CACX,CAUE,OAAO,YAAY,EAAG,EAAG,CACvB,IAAI7C,EACJ,OAAO,KAAK,YAAY,CAAC,GAAK,CAAC,KAAK,eAAe,CAAC,EAAI,IAAM,KAAK,UAAU,CAAC,GAAK,KAAK,cAAc,CAAC,EAAIA,EAAI,EAAE,MAAQA,EAAI,EAAE,YAAY,QAAQ,IAAK,EAAE,EAAG,IAAMA,EAAIA,EAAE,QAAQ,IAAI,OAAO,EAAG,GAAG,EAAG,EAAE,GAAIA,EAAE,SAAW,EAC5N,CAOE,OAAO,OAAO,EAAG,CACf,OAAO,EAAI,EAAE,WAAW,SAAW,EAAI,EAC3C,CAUE,OAAO,QAAQ,EAAG,EAAG,CACnB,MAAMA,EAAI,CAAC,CAAC,EACZ,KAAOA,EAAE,OAAS,GAChB,GAAI,EAAIA,EAAE,MAAK,EAAI,CAAC,CAAC,EAAG,CACtB,GAAI,KAAK,OAAO,CAAC,GAAK,CAAC,KAAK,YAAY,EAAG,CAAC,EAC1C,MAAO,GACT,EAAE,YAAcA,EAAE,KAAK,GAAG,MAAM,KAAK,EAAE,UAAU,CAAC,CAC1D,CACI,MAAO,EACX,CAOE,OAAO,aAAa,EAAG,CACrB,MAAM,EAAI6C,EAAE,KAAK,KAAK,EACtB,OAAO,EAAE,UAAY,EAAG,EAAE,kBAAoB,CAClD,CAOE,OAAO,iBAAiB,EAAG,CACzB,OAAOA,EAAE,cAAc,CAAC,EAAI,EAAE,MAAM,OAAS,EAAE,WAAa,KAAK,UAAY,EAAE,OAAS,EAAE,YAAY,MAC1G,CAME,WAAW,eAAgB,CACzB,MAAO,CACL,UACA,UACA,QACA,aACA,SACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,KACA,OACA,MACA,WACA,KACA,SACA,IACA,MACA,OACA,UACA,QACA,QACA,QACA,KACA,QACA,KACA,OACD,CACL,CAOE,OAAO,2BAA2B,EAAG,CACnC,IAAI,EACJ7B,GAAG,CAAC,GAAK,EAAI,SAAS,cAAc,KAAK,EAAG,EAAE,UAAY,GAAK,EAAI,EACnE,MAAMhB,EAAK,GAAM,CAAC6C,EAAE,cAAc,SAAS,EAAE,QAAQ,YAAa,CAAA,GAAK,MAAM,KAAK,EAAE,QAAQ,EAAE,MAAM7C,CAAC,EACrG,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,MAAMA,CAAC,CACzC,CAOE,OAAO,wBAAwB,EAAG,CAChC,OAAO6C,EAAE,2BAA2B,CAAC,EAAI,CAAC,CAAC,EAAI,MAAM,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAG7C,IAAM,CAAC,GAAG,EAAG,GAAG6C,EAAE,wBAAwB7C,CAAC,CAAC,EAAG,EAAE,CACtI,CAOE,OAAO,UAAU,EAAG,CAClB,OAAOgB,GAAG,CAAC,EAAI,SAAS,eAAe,CAAC,EAAI,CAChD,CAOE,OAAO,SAAS,EAAG,CACjB,OAAO,EAAE,QAAQ,YAAW,IAAO,GACvC,CAOE,OAAO,OAAO,EAAG,CACf,MAAM,EAAI,EAAE,sBAAqB,EAAIhB,EAAI,OAAO,aAAe,SAAS,gBAAgB,WAAY,EAAI,OAAO,aAAe,SAAS,gBAAgB,UAAWG,EAAI,EAAE,IAAM,EAAGC,EAAI,EAAE,KAAOJ,EAC9L,MAAO,CACL,IAAKG,EACL,KAAMC,EACN,OAAQD,EAAI,EAAE,OACd,MAAOC,EAAI,EAAE,KACd,CACL,CACA,EACA,SAAS0C,GAAGhD,EAAG,CACb,MAAO,CAAC,aAAa,KAAKA,CAAC,CAC7B,CACA,SAASiD,GAAGjD,EAAG,CACb,MAAM,EAAI,OAAO,iBAAiBA,CAAC,EAAG,EAAI,WAAW,EAAE,QAAQ,EAAGE,EAAI,WAAW,EAAE,UAAU,GAAK,EAAI,IAAK,EAAI,WAAW,EAAE,UAAU,EAAGG,EAAI,WAAW,EAAE,cAAc,EAAGC,EAAI,WAAW,EAAE,SAAS,EAAG,EAAI,EAAI,GAAK,GAAKJ,EAAI,GAAK,EACnO,OAAOI,EAAID,EAAI,EAAI,EAAI,CACzB,CACA,SAAS6C,GAAGlD,EAAG,CACbA,EAAE,QAAQ,MAAQ+C,EAAE,QAAQ/C,CAAC,EAAI,OAAS,OAC5C,CACA,MAAMmD,GAAK,CACT,WAAY,CACV,QAAS,CACP,gBAAiB,GACjB,kBAAmB,EACzB,CACG,EACD,cAAe,CACb,UAAW,CACT,aAAc,EACpB,CACG,EACD,QAAS,CACP,QAAS,CACP,IAAK,EACX,CACG,EACD,QAAS,CACP,OAAQ,GACR,gBAAiB,GACjB,aAAc,EAClB,CACA,EAAGC,GAAK,CACN,KAAM,GACN,KAAM,GACN,KAAM,GACN,OAAQ,EACV,EAAGC,GAAK,CACN,KAAM,CACJ,aAAc,EACf,EACD,KAAM,CACJ,4CAA6C,EACjD,CACA,EAAGC,GAAK,CACN,OAAQ,CACN,OAAQ,GACR,kBAAmB,EACpB,EACD,OAAQ,CACN,UAAW,EACZ,EACD,SAAU,CACR,YAAa,EACjB,CACA,EAAGC,GAAK,CACN,GAAIJ,GACJ,UAAWC,GACX,MAAOC,GACP,WAAYC,EACd,EAAGE,GAAK,MAAMC,EAAG,CASf,OAAO,GAAG,EAAG,EAAG,CACd,OAAOA,GAAG,GAAG,EAAG,CAAC,CACrB,CAQE,OAAO,EAAE,EAAG,EAAG,CACb,OAAOA,GAAG,GAAG,EAAG,CAAC,CACrB,CAME,OAAO,cAAc,EAAG,CACtBA,GAAG,kBAAoB,CAC3B,CAQE,OAAO,GAAG,EAAG,EAAG,CACd,MAAMvD,EAAIuD,GAAG,aAAa,CAAC,EAC3B,MAAO,CAACvD,GAAK,CAACA,EAAE,CAAC,EAAI,EAAIA,EAAE,CAAC,CAChC,CAME,OAAO,aAAa,EAAG,CACrB,OAAO,EAAE,MAAM,GAAG,EAAE,OAAO,CAACA,EAAGE,IAAM,CAACF,GAAK,CAAC,OAAO,KAAKA,CAAC,EAAE,OAAS,CAAA,EAAKA,EAAEE,CAAC,EAAGqD,GAAG,iBAAiB,CACvG,CACA,EACAD,GAAG,kBAAoBD,GACvB,IAAIG,EAAIF,GACR,MAAMG,WAAW,KAAM,CACvB,CACA,IAAAC,GAAA,KAAS,CACP,aAAc,CACZ,KAAK,YAAc,CAAE,CACzB,CAOE,GAAG,EAAG,EAAG,CACP,KAAK,KAAK,cAAgB,KAAK,YAAY,CAAC,EAAI,IAAK,KAAK,YAAY,CAAC,EAAE,KAAK,CAAC,CACnF,CAOE,KAAK,EAAG,EAAG,CACT,KAAK,KAAK,cAAgB,KAAK,YAAY,CAAC,EAAI,IAChD,MAAM1D,EAAK,GAAM,CACf,MAAMG,EAAI,EAAE,CAAC,EAAGC,EAAI,KAAK,YAAY,CAAC,EAAE,QAAQJ,CAAC,EACjD,OAAOI,IAAM,IAAM,KAAK,YAAY,CAAC,EAAE,OAAOA,EAAG,CAAC,EAAGD,CACtD,EACD,KAAK,YAAY,CAAC,EAAE,KAAKH,CAAC,CAC9B,CAOE,KAAK,EAAG,EAAG,CACToB,EAAE,KAAK,WAAW,GAAK,CAAC,KAAK,YAAY,CAAC,GAAK,KAAK,YAAY,CAAC,EAAE,OAAO,CAACpB,EAAG,IAAM,CAClF,MAAMG,EAAI,EAAEH,CAAC,EACb,OAAOG,IAAM,OAASA,EAAIH,CAC3B,EAAE,CAAC,CACR,CAOE,IAAI,EAAG,EAAG,CACR,GAAI,KAAK,YAAY,CAAC,IAAM,OAAQ,CAClC,QAAQ,KAAK,8DAA8D,EAAE,SAAQ,CAAE,yCAAyC,EAChI,MACN,CACI,QAASA,EAAI,EAAGA,EAAI,KAAK,YAAY,CAAC,EAAE,OAAQA,IAC9C,GAAI,KAAK,YAAY,CAAC,EAAEA,CAAC,IAAM,EAAG,CAChC,OAAO,KAAK,YAAY,CAAC,EAAEA,CAAC,EAC5B,KACR,CACA,CAKE,SAAU,CACR,KAAK,YAAc,CAAE,CACzB,CACA,EACA,SAAS2D,GAAE7D,EAAG,CACZ,OAAO,eAAe,KAAM,CAM1B,IAAI,IAAK,CACP,OAAOA,EAAE,EACV,EAMD,IAAI,MAAO,CACT,OAAOA,EAAE,IACV,EAMD,IAAI,QAAS,CACX,OAAOA,EAAE,MACV,EAMD,IAAI,QAAS,CACX,OAAOA,EAAE,MACV,EAMD,IAAI,SAAU,CACZ,OAAOA,EAAE,OACV,EAMD,IAAI,UAAW,CACb,OAAOA,EAAE,QACV,EAMD,IAAI,UAAUH,EAAG,CACfG,EAAE,UAAYH,CACf,EAMD,IAAI,WAAY,CACd,OAAOG,EAAE,SACV,EAID,IAAI,WAAY,CACd,OAAOA,EAAE,SACV,EAQD,KAAKH,EAAGK,EAAG,CACT,OAAOF,EAAE,KAAKH,EAAGK,CAAC,CACnB,EAMD,MAAO,CACL,OAAOF,EAAE,KAAM,CAChB,EAOD,SAASH,EAAG,CACV,OAAOG,EAAE,SAASH,CAAC,CACpB,EAKD,gBAAiB,CACfG,EAAE,eAAgB,CACnB,EAKD,uBAAwB,CACtB,OAAOA,EAAE,sBAAuB,CACtC,CACA,CAAG,CACH,CACA,IAAA8D,GAAA,KAAS,CACP,aAAc,CACZ,KAAK,aAAe,CAAE,CAC1B,CASE,GAAG,EAAG,EAAG5D,EAAG,EAAI,GAAI,CAClB,MAAMG,EAAIkC,GAAG,GAAG,EAAGjC,EAAI,CACrB,GAAID,EACJ,QAAS,EACT,UAAW,EACX,QAASH,EACT,QAAS,CACV,EACD,GAAI,CAAC,KAAK,QAAQ,EAAG,EAAGA,CAAC,EACvB,OAAO,KAAK,aAAa,KAAKI,CAAC,EAAG,EAAE,iBAAiB,EAAGJ,EAAG,CAAC,EAAGG,CACrE,CASE,IAAI,EAAG,EAAGH,EAAG,EAAG,CACd,MAAMG,EAAI,KAAK,QAAQ,EAAG,EAAGH,CAAC,EAC9BG,EAAE,QAAQ,CAACC,EAAG,IAAM,CAClB,MAAM,EAAI,KAAK,aAAa,QAAQD,EAAE,CAAC,CAAC,EACxC,EAAI,KAAO,KAAK,aAAa,OAAO,EAAG,CAAC,EAAGC,EAAE,QAAQ,oBAAoBA,EAAE,UAAWA,EAAE,QAASA,EAAE,OAAO,EAChH,CAAK,CACL,CAME,QAAQ,EAAG,CACT,MAAM,EAAI,KAAK,SAAS,CAAC,EACzB,GAAK,EAAE,QAAQ,oBAAoB,EAAE,UAAW,EAAE,QAAS,EAAE,OAAO,CACxE,CASE,QAAQ,EAAG,EAAGJ,EAAG,CACf,MAAM,EAAI,KAAK,QAAQ,EAAG,EAAGA,CAAC,EAC9B,OAAO,EAAE,OAAS,EAAI,EAAE,CAAC,EAAI,IACjC,CASE,QAAQ,EAAG,EAAGA,EAAG,CACf,IAAI,EACJ,MAAMG,EAAI,EAAI,KAAK,kBAAkB,CAAC,EAAI,CAAE,EAC5C,OAAO,GAAK,GAAKH,EAAI,EAAIG,EAAE,OAAQC,GAAMA,EAAE,YAAc,GAAKA,EAAE,UAAYJ,CAAC,EAAI,GAAK,EAAI,EAAIG,EAAE,OAAQC,GAAMA,EAAE,YAAc,CAAC,EAAI,EAAID,EAAG,CAC9I,CAIE,WAAY,CACV,KAAK,aAAa,IAAK,GAAM,CAC3B,EAAE,QAAQ,oBAAoB,EAAE,UAAW,EAAE,QAAS,EAAE,OAAO,CACrE,CAAK,EAAG,KAAK,aAAe,CAAE,CAC9B,CAIE,SAAU,CACR,KAAK,UAAW,CACpB,CAOE,kBAAkB,EAAG,CACnB,OAAO,KAAK,aAAa,OAAQ,GAAM,CACrC,GAAI,EAAE,UAAY,EAChB,OAAO,CACf,CAAK,CACL,CAOE,WAAW,EAAG,CACZ,OAAO,KAAK,aAAa,OAAQ,GAAM,CACrC,GAAI,EAAE,YAAc,EAClB,OAAO,CACf,CAAK,CACL,CAOE,cAAc,EAAG,CACf,OAAO,KAAK,aAAa,OAAQ,GAAM,CACrC,GAAI,EAAE,UAAY,EAChB,OAAO,CACf,CAAK,CACL,CAOE,SAAS,EAAG,CACV,OAAO,KAAK,aAAa,KAAM,GAAM,EAAE,KAAO,CAAC,CACnD,CACA,EACA0D,EAAA,MAAMC,EAAE,CAON,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,GAAI,KAAK,MAAQ,CAAA,EAAI,KAAK,UAAY,IAAIC,GAAM,KAAK,yBAA2B,CAS9E,GAAI,CAAC/D,EAAG,EAAGG,EAAGC,EAAI,KAAO,CACvB,KAAK,mBAAmB,KACtB,KAAK,UAAU,GAAGJ,EAAG,EAAGG,EAAGC,CAAC,CAC7B,CACF,EAID,SAAU,IAAM,CACd,UAAWJ,KAAK,KAAK,mBACnB,KAAK,UAAU,QAAQA,CAAC,EAC1B,KAAK,mBAAqB,CAAE,CACpC,CACK,EAAE,KAAK,mBAAqB,CAAE,EAAE,aAAe8D,GAC9C,MAAM,IAAI,UAAU,yDAAyD,EAC/E,KAAK,OAAS,EAAG,KAAK,iBAAmB,CAC7C,CAME,IAAI,MAAM,EAAG,CACX,KAAK,OAAS,CAClB,CAIE,gBAAiB,CACf,UAAW,KAAK,KAAK,MAAO,CAC1B,MAAM,EAAI,KAAK,MAAM,CAAC,EACtB,aAAa,aAAe,EAAE,OAAQ,CAC5C,CACA,CAIE,IAAI,OAAQ,CACV,OAAO,KAAK,OAAO,KAAK,YAAc,KAC1C,CACA,EACAE,EAAA,MAAMC,EAAE,CACN,aAAc,CACZ,KAAK,SAAW,KAAM,KAAK,UAAY,KAAM,KAAK,oBAAsB,KAAM,KAAK,wBAA0B,GAAI,KAAK,kBAAoB,YAAa,KAAK,oBAAsB,cACtL,CAME,WAAW,KAAM,CACf,MAAO,CACL,cAAe,eACf,WAAY,wBACb,CACL,CAOE,WAAW,YAAa,CACtB,MAAM,EAAI,OAAO,aAAc,EAC/B,OAAO,EAAI,EAAE,WAAa,IAC9B,CAME,WAAW,eAAgB,CACzB,MAAM,EAAI,OAAO,aAAc,EAC/B,GAAI,CAAC,EACH,OAAO,KACT,MAAM,EAAI,EAAE,WACZ,OAAO,EAAIpB,EAAE,UAAU,CAAC,EAAI,EAAI,EAAE,cAAgB,IACtD,CAOE,WAAW,cAAe,CACxB,MAAM,EAAI,OAAO,aAAc,EAC/B,OAAO,EAAI,EAAE,aAAe,IAChC,CAME,WAAW,aAAc,CACvB,MAAM,EAAI,OAAO,aAAc,EAC/B,OAAO,EAAI,EAAE,YAAc,IAC/B,CAME,WAAW,YAAa,CACtB,OAAO,KAAK,oBAAoBoB,GAAE,IAAG,CAAE,CAC3C,CAME,OAAO,oBAAoB,EAAG,CAC5B,GAAI,CAAC,EACH,MAAO,GACT,IAAI,EAAI,EAAE,YAAc,EAAE,UAC1B,GAAK,EAAE,WAAa,KAAK,YAAc,EAAI,EAAE,YAC7C,IAAIjE,EAAI,KACR,OAAO,GAAK,aAAa,UAAYA,EAAI,EAAE,QAAQ,IAAIiE,GAAE,IAAI,UAAU,EAAE,GAAIjE,EAAIA,EAAE,WAAa,KAAK,aAAe,EACxH,CAME,OAAO,gBAAgB,EAAG,CACxB,GAAI,CAAC,EACH,OACF,IAAI,EAAI,EAAE,eACV,GAAK,EAAE,WAAa,KAAK,YAAc,EAAI,EAAE,YAC7C,IAAIA,EAAI,KACR,OAAO,GAAK,aAAa,UAAYA,EAAI,EAAE,QAAQ,IAAIiE,GAAE,IAAI,UAAU,EAAE,GAAIjE,EAAIA,EAAE,WAAa,KAAK,aAAe,EACxH,CAIE,WAAW,mBAAoB,CAC7B,MAAO,CAAC,CAACiE,GAAE,IAAG,EAAG,UACrB,CAME,WAAW,OAAQ,CACjB,OAAO,KAAK,sBAAsB,KAAK,IAAG,CAAE,CAChD,CAME,OAAO,sBAAsB,EAAG,CAC9B,OAAO,GAAK,EAAE,WAAa,EAAE,WAAW,CAAC,EAAI,IACjD,CAME,WAAW,MAAO,CAChB,IAAI,EAAI,SAAS,UAAW,EAAGjE,EAAI,CACjC,EAAG,EACH,EAAG,EACH,MAAO,EACP,OAAQ,CACT,EACD,GAAI,GAAK,EAAE,OAAS,UAClB,OAAO,EAAI,EAAG,EAAI,EAAE,cAAeA,EAAE,EAAI,EAAE,aAAcA,EAAE,EAAI,EAAE,YAAaA,EAAE,MAAQ,EAAE,cAAeA,EAAE,OAAS,EAAE,eAAgBA,EACxI,GAAI,CAAC,OAAO,aACV,OAAOW,EAAE,8CAA+C,MAAM,EAAGX,EACnE,GAAI,EAAI,OAAO,eAAgB,EAAE,aAAe,MAAQ,MAAM,EAAE,UAAU,EACxE,OAAOW,EAAE,oDAAqD,MAAM,EAAGX,EACzE,GAAI,EAAE,aAAe,EACnB,OAAOA,EACT,GAAI,EAAI,EAAE,WAAW,CAAC,EAAE,WAAY,EAAE,EAAE,wBAA0BA,EAAI,EAAE,sBAAqB,GAAKA,EAAE,IAAM,GAAKA,EAAE,IAAM,EAAG,CACxH,MAAM,EAAI,SAAS,cAAc,MAAM,EACvC,GAAI,EAAE,sBAAuB,CAC3B,EAAE,YAAY,SAAS,eAAe,GAAG,CAAC,EAAG,EAAE,WAAW,CAAC,EAAGA,EAAI,EAAE,sBAAuB,EAC3F,MAAMG,EAAI,EAAE,WACZA,EAAE,YAAY,CAAC,EAAGA,EAAE,UAAW,CACvC,CACA,CACI,OAAOH,CACX,CAME,WAAW,MAAO,CAChB,OAAO,OAAO,aAAe,OAAO,aAAc,EAAC,SAAQ,EAAK,EACpE,CAOE,OAAO,KAAM,CACX,OAAO,OAAO,aAAc,CAChC,CAOE,OAAO,UAAU,EAAG,EAAI,EAAG,CACzB,MAAMA,EAAI,SAAS,YAAa,EAAE,EAAI,OAAO,aAAc,EAC3D,OAAO6C,EAAE,cAAc,CAAC,EAAIA,EAAE,YAAY,CAAC,GAAK,EAAE,MAAO,EAAE,EAAE,eAAiB,EAAE,aAAe,EAAG,EAAE,sBAAuB,GAAI,QAAU7C,EAAE,SAAS,EAAG,CAAC,EAAGA,EAAE,OAAO,EAAG,CAAC,EAAG,EAAE,gBAAiB,EAAE,EAAE,SAASA,CAAC,EAAGA,EAAE,wBACrN,CAME,OAAO,uBAAuB,EAAG,CAC/B,MAAM,EAAIiE,GAAE,MACZ,OAAO,IAAM,KAAO,GAAK,EAAE,SAAS,EAAE,cAAc,CACxD,CAIE,OAAO,eAAgB,CACrB,MAAM,EAAIA,GAAE,MACZ,GAAI,IAAM,KACR,OACF,MAAM,EAAIpB,EAAE,KAAK,OAAQ,2BAA2B,EACpD,EAAE,QAAQ,aAAe,OAAQ,EAAE,WAAY,EAAE,WAAW,CAAC,CACjE,CAME,OAAO,4BAA4B,EAAG,CACpC,OAAOA,EAAE,KAAK,EAAG,4BAA4B,IAAM,IACvD,CAME,OAAO,iBAAiB,EAAI,SAAS,KAAM,CACzC,MAAM,EAAIA,EAAE,KAAK,EAAG,4BAA4B,EAChD,GAAK,EAAE,OAAQ,CACnB,CAIE,sBAAuB,CACrB,KAAK,0BAA4B,KAAK,wBAA0B,GAAI,SAAS,YAAY,KAAK,mBAAmB,EACrH,CAIE,mBAAoB,CAClB,SAAS,YAAY,KAAK,kBAAmB,GAAI,SAAS,EAAG,KAAK,wBAA0B,EAChG,CAIE,MAAO,CACL,KAAK,oBAAsBoB,GAAE,KACjC,CAIE,SAAU,CACR,GAAI,CAAC,KAAK,oBACR,OACF,MAAM,EAAI,OAAO,aAAc,EAC/B,EAAE,gBAAe,EAAI,EAAE,SAAS,KAAK,mBAAmB,CAC5D,CAIE,YAAa,CACX,KAAK,oBAAsB,IAC/B,CAIE,eAAgB,CACd,MAAM,EAAI,OAAO,aAAc,EAAE,EAAI,SAAS,YAAa,EAC3D,EAAE,mBAAmB,EAAE,SAAS,EAAG,EAAE,SAAS,EAAE,EAAG,EAAE,gBAAe,EAAI,EAAE,SAAS,CAAC,CACxF,CASE,cAAc,EAAG,EAAGjE,EAAI,GAAI,CAC1B,MAAM,EAAI,OAAO,aAAc,EAC/B,IAAIG,EAAI,KACR,MAAO,CAAC,GAAK,CAAC,EAAE,YAAc,CAAC,EAAE,UAAY,MAAQ,CAEnD,EAAE,WAEF,EAAE,SACR,EAAM,QAAS+D,GAAM,CACf,IAAIC,EAAInE,EACR,KAAOmE,EAAI,GAAKD,EAAE,YAAc,EAAEA,EAAE,UAAY,IAAM/D,EAAI+D,EAAG,GAAKA,EAAE,WAAa,CAACA,EAAE,UAAU,SAAS,CAAC,IAAM/D,EAAI,MAAOA,KACvH+D,EAAIA,EAAE,WAAYC,GACrB,CAAA,EAAGhE,EACR,CAME,YAAY,EAAG,CACb,MAAM,EAAI,OAAO,aAAc,EAC/B,EAAE,gBAAiB,EACnB,MAAMH,EAAI,SAAS,YAAa,EAChCA,EAAE,mBAAmB,CAAC,EAAG,EAAE,SAASA,CAAC,CACzC,CACA,EACA,SAASoE,GAAGtE,EAAG,EAAG,CAChB,KAAM,CAAE,KAAM,EAAG,OAAQE,EAAG,WAAY,EAAG,aAAcG,CAAC,EAAKL,EAC/D,OAAOA,EAAE,OAAS,cAAgBA,EAAE,gBAAkB,aAAe,GAAK,CAAC,EAAE,EAAE,SAASE,CAAC,GAAK,IAAM,cAAgB,MAAM,KAAK,CAAC,EAAE,KAAMmE,GAAMA,IAAM,CAAC,GAAK,MAAM,KAAKhE,CAAC,EAAE,KAAMgE,GAAMA,IAAM,CAAC,GAC7L,CACA,MAAME,GAAK,uBAAwBC,GAAK,gBAAiBC,GAAK,qCAAsCC,GAAK,4BAA6BC,GAAK,+BAC3I,SAASC,GAAG5E,EAAG,EAAG,CAChB,GAAI,CAACA,EAAE,iBACL,MAAO,GACT,MAAM,EAAIA,EAAE,iBAAiB,CAAC,EAC9B,OAAOgB,EAAE,CAAC,GAAKE,GAAG,CAAC,CACrB,CACA,SAAS2D,GAAG7E,EAAG,EAAG,CAChB,OAAO4E,GAAG5E,EAAE,KAAM,CAAC,CACrB,CACA,SAAS8E,GAAG9E,EAAG,EAAG,CAChB,OAAO,OAAO,QAAQA,CAAC,EAAE,KAAK,CAAC,CAAC,EAAGE,CAAC,IAAM,EAAE,CAAC,GAAK2C,GAAG,EAAE,CAAC,EAAG3C,CAAC,CAAC,CAC/D,CACA,eAAe6E,GAAG/E,EAAG,EAAG,CACtB,MAAME,GAAK,MAAMF,EAAE,KAAM,GAAE,KAAMI,EAAI,EAAE,KAAMC,GAAMA,EAAE,OAASL,EAAE,IAAI,EACpE,OAAOI,IAAM,QAAU,CAACwE,GAAGxE,EAAG,QAAQ,EAAI,CAAA,EAAK,EAAE,OAAO,CAACC,EAAG,IAAM,CAChE,GAAI,CAACuE,GAAG,EAAG,QAAQ,GAAK,EAAE,UAAY,OACpC,OAAOvE,EACT,MAAM+D,EAAI,EAAE,QAAQ,OAAQC,GAAM,CAChC,GAAI/C,EAAE+C,CAAC,GAAKA,EAAE,OAAS,OACrB,MAAO,GACT,GAAIA,EAAE,OAAS,QACb,GAAIS,GAAGT,EAAE,KAAMnE,CAAC,EACd,MAAO,WACA,EAAE,OAASF,EAAE,KACtB,MAAO,GACT,MAAO,EACb,CAAK,EACD,OAAOK,EAAE,KAAK,CACZ,GAAG,EACH,QAAS+D,CACV,CAAA,EAAG/D,CACL,EAAE,EAAE,CACP,CACA,SAAS2E,GAAGhF,EAAG,EAAG,CAChB,OAAOA,EAAE,UAAYA,EAAE,OAAS,EAAE,KAAO,GAAK6E,GAAG,EAAG,QAAQ,GAAKA,GAAG7E,EAAG,QAAQ,EAAI,EACrF,CACA,SAASiF,GAAGjF,EAAG,EAAG,CAChB,MAAM,EAAI,GAAK,KAAO,OAAS,EAAE,OACjC,OAAOgB,EAAE,CAAC,EAAI,EAAEhB,CAAC,EAAIkB,GAAG,CAAC,EAAIlB,EAAE,CAAC,GAAK,IAAM,QAAUa,EAAE,gKAAgK,EAAG,GAC5N,CACA,SAASqE,GAAGlF,EAAG,EAAG,EAAG,CACnB,MAAME,EAAI,GAAK,KAAO,OAAS,EAAE,OACjC,OAAOc,EAAEd,CAAC,EAAIA,EAAEF,EAAG,CAAC,EAAIkB,GAAGhB,CAAC,EAAI,CAC9B,CAACA,CAAC,EAAGF,CACN,GAAIE,IAAM,QAAUW,EAAE,uKAAuK,EAAG,CAAA,EACnM,CACA,IAAI,GAAsBb,IAAOA,EAAE,QAAU,UAAWA,EAAE,UAAY,YAAaA,EAAE,KAAO,OAAQA,IAAI,GAAK,CAAE,CAAA,EAAGmF,IAAuBnF,IAAOA,EAAE,gBAAkB,iBAAkBA,EAAE,SAAW,WAAYA,EAAE,MAAQ,QAASA,EAAE,QAAU,UAAWA,EAAE,QAAU,UAAWA,EAAE,SAAW,UAAWA,IAAImF,IAAM,EAAE,SACpT,MAAMC,WAAUC,EAAG,CAUjB,YAAY,CACV,GAAI,EAAIhD,GAAI,EACZ,KAAM,EACN,KAAMnC,EACN,SAAU,EACV,UAAWG,CACZ,EAAEC,EAAG,CACJ,MAAO,EAAE,KAAK,aAAe,CAAA,EAAI,KAAK,oBAAsB,KAAM,KAAK,eAAiC,IAAI,IAAO,KAAK,sBAAwC,IAAI,IAAO,KAAK,qBAAuB,CAAA,EAAI,KAAK,WAAa,EAAG,KAAK,eAAiB,KAAM,KAAK,YAAc,IAAM,CACnR,KAAK,gBAAe,EAAI,KAAK,mBAAoB,CAClD,EAAE,KAAK,WAAa,CAAC,EAAI,SAAW,CACnC,MAAM,EAAI,IAAM,OAAQ,EAAI,aAAa,WACzC,CAAC,GAAK,CAAC,GAAK,KAAK,qBAAqB,CAAC,EACvC,IAAIyB,EACJ,GAAK,EAAIA,EAAI,GAAKA,EAAI,EAAE,EAAE,OAAS,GAAK,EAAE,MAAOuD,GAAM,CACrD,KAAM,CAAE,WAAYC,EAAG,aAAcC,EAAG,OAAQC,CAAC,EAAKH,EACtD,MAAO,CACL,GAAG,MAAM,KAAKC,CAAC,EACf,GAAG,MAAM,KAAKC,CAAC,EACfC,CACV,EAAU,KAAMC,IAAO3C,EAAE,UAAU2C,CAAC,IAAMA,EAAIA,EAAE,eAAgBA,GAAKA,EAAE,QAAQ,6BAA6B,IAAM,KAAK,CAChH,CAAA,GAAI3D,IAAM,KAAK,gBAAe,EAAI,KAAK,mBAAkB,EAAI,KAAK,sBAAuB,EAAE,KAAK,KAC/F,SAED,EAAE,KAAK,KAAK,aAAc,IAAI,EAChC,EAAE,KAAK,KAAO7B,EAAE,KAAM,KAAK,GAAK,EAAG,KAAK,SAAWA,EAAE,SAAU,KAAK,OAASA,EAAE,SAAS,QAAU,CAAA,EAAI,KAAK,eAAiBI,GAAK,KAAM,KAAK,SAAW,IAAIuD,GAAE,IAAI,EAAG,KAAK,KAAO3D,EAAG,KAAK,aAAeA,EAAE,OAAO,EAAG,KAAK,SAAU,CAAC,EAAG,KAAK,MAAQA,EAAE,MAAO,KAAK,aAAaG,CAAC,EAAG,KAAK,OAAS,KAAK,QAAO,EAAI,OAAO,oBAAoB,IAAM,CAChV,KAAK,oBAAmB,EAAI,KAAK,eAAgB,EAAE,KAAK,sBAAuB,CACrF,CAAK,CACL,CAME,WAAW,KAAM,CACf,MAAO,CACL,QAAS,WACT,iBAAkB,sBAClB,QAAS,oBACT,SAAU,qBACV,WAAY,uBACb,CACL,CAIE,IAAI,QAAS,CACX,GAAI,KAAK,aAAa,SAAW,EAC/B,OAAO,KAAK,aACd,MAAM,EAAI0C,EAAE,cAAc,KAAK,MAAM,EACrC,OAAO,KAAK,WAAa,EAAE,OAAS,IAAM,KAAK,WAAa,EAAE,OAAS,GAAI,KAAK,aAAe,EAAG,CACtG,CAKE,IAAI,cAAe,CACjB,OAAO,KAAK,OAAO,KAAK,UAAU,CACtC,CAME,IAAI,aAAa,EAAG,CAClB,MAAM,EAAI,KAAK,OAAO,UAAW7C,GAAMA,IAAM,GAAKA,EAAE,SAAS,CAAC,CAAC,EAC/D,IAAM,KAAO,KAAK,WAAa,EACnC,CAKE,IAAI,YAAa,CACf,OAAO,KAAK,OAAO,CAAC,CACxB,CAKE,IAAI,WAAY,CACd,MAAM,EAAI,KAAK,OACf,OAAO,EAAE,EAAE,OAAS,CAAC,CACzB,CAKE,IAAI,WAAY,CACd,OAAO,KAAK,OAAO,KAAK,WAAa,CAAC,CAC1C,CAKE,IAAI,eAAgB,CAClB,OAAO,KAAK,OAAO,KAAK,WAAa,CAAC,CAC1C,CAME,IAAI,MAAO,CACT,OAAO,KAAK,KAAI,EAAG,KAAM,GAAM,GAAK,CAACoB,EAAE,EAAE,IAAI,EAAI,EAAE,KAAO,CAAA,CAAE,CAChE,CAME,IAAI,UAAW,CACb,OAAO,KAAK,KAAK,cACrB,CAOE,IAAI,WAAY,CACd,OAAON,EAAE,KAAK,aAAa,KAAK,CACpC,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,OAAO,SAAW,CAClC,CAME,IAAI,SAAU,CACZ,MAAM,EAAI+B,EAAE,QAAQ,KAAK,eAAgB,GAAG,EAAG,EAAI,CAAC,KAAK,SACzD,OAAO,GAAK,CAChB,CAME,IAAI,UAAW,CACb,MAAM,EAAI,CACR,MACA,SACA,QACA,QACA,SACA,QACA,WACA,eACD,EACD,MAAO,CAAC,CAAC,KAAK,OAAO,cAAc,EAAE,KAAK,GAAG,CAAC,CAClD,CAOE,IAAI,SAAS,EAAG,CACd,IAAI3C,EAAGC,EACP,KAAK,OAAO,UAAU,OAAO+E,GAAE,IAAI,SAAU,CAAC,EAC9C,MAAMvF,EAAI,IAAM,IAAMsE,EAAE,uBAAuB,KAAK,MAAM,EAAGjE,EAAI,IAAM,IAAMiE,EAAE,4BAA4B,KAAK,MAAM,GACrHtE,GAAKK,MAAQE,EAAI,KAAK,iBAAmB,MAAQA,EAAE,KAAKqE,GAAI,CAAE,MAAO,CAAC,CAAE,EAAG5E,EAAIsE,EAAE,cAAe,EAAGA,EAAE,iBAAiB,KAAK,MAAM,GAAI9D,EAAI,KAAK,iBAAmB,MAAQA,EAAE,KAAKqE,GAAI,CAAE,MAAO,CAAC,CAAE,EACrM,CAME,IAAI,UAAW,CACb,OAAO,KAAK,OAAO,UAAU,SAASU,GAAE,IAAI,QAAQ,CACxD,CAME,IAAI,UAAU,EAAG,CACf,KAAK,OAAO,UAAU,OAAOA,GAAE,IAAI,iBAAkB,CAAC,CAC1D,CAME,IAAI,WAAY,CACd,OAAO,KAAK,OAAO,UAAU,SAASA,GAAE,IAAI,gBAAgB,CAChE,CAME,IAAI,WAAW,EAAG,CAChB,KAAK,OAAO,UAAU,OAAOA,GAAE,IAAI,WAAY,CAAC,CACpD,CAME,IAAI,gBAAiB,CACnB,OAAO,KAAK,mBAChB,CASE,KAAK,EAAG,EAAG,CACT,GAAIpE,EAAE,KAAK,aAAa,CAAC,CAAC,EAAG,CAC3B,IAAM,kBAAoBH,EACxB,iHACA,MACD,EACD,GAAI,CACF,KAAK,aAAa,CAAC,EAAE,KAAK,KAAK,aAAc,CAAC,CAC/C,OAAQX,EAAG,CACVW,EAAE,iBAAiB,CAAC,WAAWX,EAAE,OAAO,GAAI,OAAO,CAC3D,CACA,CACA,CAME,MAAM,UAAU,EAAG,CACjB,MAAM,KAAK,aAAa,MAAM,CAAC,CACnC,CAOE,MAAM,MAAO,CACX,MAAM,EAAI,MAAM,KAAK,aAAa,KAAK,KAAK,cAAc,EAAG,EAAI,KAAK,qBACtE,CACE,GAAG,KAAK,eAAe,QAAS,EAChC,GAAG,KAAK,sBAAsB,QAAO,CACtC,EAAC,QAAQ,CAAC,CAACG,EAAGC,CAAC,IAAM,CACpB,GAAIU,EAAEV,EAAE,IAAI,EACV,GAAI,CACF,EAAED,CAAC,EAAIC,EAAE,KAAM,CAChB,OAAQ,EAAG,CACVO,EAAE,QAAQP,EAAE,YAAY,IAAI,kCAAmC,OAAQ,CAAC,CAClF,CACA,CAAK,EACD,MAAMJ,EAAI,OAAO,YAAY,IAAK,EAClC,IAAI,EACJ,OAAO,QAAQ,QAAQ,CAAC,EAAE,KAAMG,IAAO,EAAI,OAAO,YAAY,IAAG,EAAI,CACnE,GAAI,KAAK,GACT,KAAM,KAAK,KACX,KAAMA,EACN,MAAO,EACP,KAAM,EAAIH,CAChB,EAAM,EAAE,MAAOG,GAAM,CACfQ,EAAE,sBAAsB,KAAK,IAAI,2BAA2BR,CAAC,GAAI,MAAO,KAAK,CACnF,CAAK,CACL,CASE,MAAM,SAAS,EAAG,CAChB,IAAI,EAAI,GACR,OAAO,KAAK,aAAa,oBAAoB,WAAa,EAAI,MAAM,KAAK,aAAa,SAAS,CAAC,GAAI,CACxG,CAKE,UAAW,CACT,MAAM,EAAI,CAAE,EAAE,EAAI,CAAE,EAAEH,EAAI,OAAO,KAAK,aAAa,gBAAkB,WAAa,KAAK,aAAa,eAAgB,EAAG,CAAE,EACzH,OAAO6C,EAAE,UAAU7C,CAAC,EAAI,EAAE,KAAK,CAC7B,KAAM,EAAE,KACR,QAASA,CACV,CAAA,EAAI,MAAM,QAAQA,CAAC,EAAI,EAAE,KAAK,GAAGA,CAAC,EAAI,EAAE,KAAKA,CAAC,EAAG,CAChD,GAAG,KAAK,eAAe,OAAQ,EAC/B,GAAG,KAAK,sBAAsB,OAAM,CAC1C,EAAM,IAAKG,GAAMA,EAAE,OAAM,CAAE,EAAE,QAASA,GAAM,CACtC0C,EAAE,UAAU1C,CAAC,EAAI,EAAE,KAAK,CACtB,KAAM,EAAE,KACR,QAASA,CACV,CAAA,EAAI,MAAM,QAAQA,CAAC,EAAI,EAAE,KAAK,GAAGA,CAAC,EAAI,EAAE,KAAKA,CAAC,CACrD,CAAK,EAAG,CACF,UAAW,EACX,YAAa,CACd,CACL,CAIE,oBAAqB,CACnB,KAAK,aAAe0C,EAAE,cAAc,SAAS,aAAa,GAAK,CAACoB,EAAE,WAAa,SAAS,cAAgBA,EAAE,UAC9G,CAKE,gBAAiB,CACf,KAAK,WAAY,CACrB,CAIE,SAAU,CACR,KAAK,sBAAqB,EAAI,KAAK,kBAAmB,EAAE,MAAM,QAAO,EAAInD,EAAE,KAAK,aAAa,OAAO,GAAK,KAAK,aAAa,QAAS,CACxI,CAKE,MAAM,uBAAwB,CAC5B,MAAM,EAAI,KAAK,KAAK,QACpB,GAAI,EAAE,SAAW,EACf,OAAO,QAAQ,QAAQ,KAAK,KAAK,QAAQ,CAAC,CAAC,EAC7C,MAAM,EAAI,MAAM,KAAK,KAAMd,EAAI,EAC/B,OAAOA,GAAK,KAAO,OAASA,EAAE,KAAM,GAAM4E,GAAG,EAAE,KAAM,CAAC,CAAC,CAC3D,CAIE,MAAM,oBAAqB,CACzB,MAAM,EAAI,MAAM,KAAK,KACrB,OAAOG,GAAG,EAAG,KAAK,KAAK,gBAAgB,CAC3C,CAME,SAAU,CACR,MAAM,EAAIlC,EAAE,KAAK,MAAOqC,GAAE,IAAI,OAAO,EAAG,EAAIrC,EAAE,KAAK,MAAOqC,GAAE,IAAI,OAAO,EAAGlF,EAAI,KAAK,aAAa,OAAQ,EACxG,EAAE,aAAa,UAAW,eAAe,EAAG,EAAE,QAAQ,GAAK,KAAK,GAAI,KAAK,oBAAsBA,EAAG,EAAE,YAAY,KAAK,mBAAmB,EACxI,IAAI,EAAI,EACR,MAAO,CAAC,GAAG,KAAK,eAAe,OAAM,EAAI,GAAG,KAAK,sBAAsB,OAAQ,CAAA,EAAE,QAASG,GAAM,CAC9F,GAAIW,EAAEX,EAAE,IAAI,EACV,GAAI,CACF,EAAIA,EAAE,KAAK,CAAC,CACb,OAAQC,EAAG,CACVO,EAAE,QAAQR,EAAE,YAAY,IAAI,kCAAmC,OAAQC,CAAC,CAClF,CACK,CAAA,EAAG,EAAE,YAAY,CAAC,EAAG,CAC1B,CAOE,aAAa,EAAG,CACd,MAAM,KAAK,KAAK,MAAM,OAAM,CAAE,EAAE,QAAS,GAAM,EAC5C,EAAE,WAAa,KAAK,sBAAwB,KAAK,gBAAgB,IAAI,EAAE,KAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAG,KAAK,QAAQ,CAAC,CACtH,CAAK,EAAG,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAGJ,CAAC,IAAM,CACxC,KAAK,eAAe,IAAI,CAAC,IAAM,KAAK,qBAAqB,CAAC,EAAIA,EACpE,CAAK,CACL,CAIE,gBAAiB,CACf,KAAK,OAAO,QAAS,GAAM,CACzB,EAAE,iBAAiB,QAAS,KAAK,WAAW,EAAG6C,EAAE,cAAc,CAAC,GAAK,EAAE,iBAAiB,QAAS,KAAK,UAAU,CACtH,CAAK,CACL,CAIE,mBAAoB,CAClB,KAAK,OAAO,QAAS,GAAM,CACzB,EAAE,oBAAoB,QAAS,KAAK,WAAW,EAAGA,EAAE,cAAc,CAAC,GAAK,EAAE,oBAAoB,QAAS,KAAK,UAAU,CAC5H,CAAK,CACL,CAIE,qBAAsB,CACpB,IAAI,EACJ,KAAK,2BAA8B,GAAM,CACvC,KAAM,CAAE,UAAW7C,CAAC,EAAK,EACzBA,EAAE,KAAMG,GAAMiE,GAAGjE,EAAG,KAAK,mBAAmB,CAAC,GAAK,KAAK,WAAWH,CAAC,CACzE,GAAQ,EAAI,KAAK,iBAAmB,MAAQ,EAAE,GAAGqE,GAAI,KAAK,0BAA0B,CACpF,CAIE,uBAAwB,CACtB,IAAI,GACH,EAAI,KAAK,iBAAmB,MAAQ,EAAE,IAAIA,GAAI,KAAK,0BAA0B,CAClF,CAOE,qBAAqB,EAAG,CACtB,EAAE,QAAS,GAAM,CACf,GAAI,MAAM,KAAK,EAAE,YAAY,EAAE,SAAS,KAAK,mBAAmB,EAAG,CACjE,MAAMnE,EAAI,EAAE,WAAW,EAAE,WAAW,OAAS,CAAC,EAC9C,KAAK,oBAAsBA,CACnC,CACA,CAAK,CACL,CAIE,iBAAkB,CAChB,KAAK,aAAe,CAAE,CAC1B,CAIE,uBAAwB,CACtB,KAAK,OAAO,QAAQ8C,EAAE,CAC1B,CACA,EACA,MAAMyC,WAAW3B,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,OAAS,CAAC,EAAI,KAAK,OAAO,aAAc,EAAI,CAAE,EAAE9D,EAAI,CAAA,EAAI,EAAGG,EAAGC,EAAG,IAAM,CAC/F,MAAM,EAAI,KAAK,OAAO,aAAa,OAAO,CACxC,GAAI,EACJ,KAAM,EACN,KAAM,EACN,MAAO,EACP,YAAaD,EACb,QAASC,CACjB,CAAO,EACD,OAAO,IAAIuD,GAAE,CAAC,CACpB,EAAO,KAAK,iBAAmB,MAAO,GAAM,CACtC,MAAM,EAAI,KAAK,OAAO,MAAM,WAAW,IAAI,CAAC,EAC5C,OAAO,IAAIuB,GAAE,CACX,KAAM,EACN,IAAK,KAAK,OAAO,IACjB,SAAU,GACV,KAAM,CAAE,EACR,UAAW,CAAA,CACZ,CAAA,EAAE,IACJ,EAAE,KAAK,OAAS,MAAO,EAAG,EAAGlF,IAAM,CAClC,KAAM,CAAE,aAAc,CAAC,EAAK,KAAK,OAAQG,EAAI,EAAE,aAAa,CAAC,EAC7D,GAAIA,IAAM,OACR,MAAM,IAAI,MAAM,kBAAkB,CAAC,aAAa,EAClD,MAAMC,EAAI,MAAM,EAAE,OAAOD,EAAG,EAAGH,CAAC,EAChC,OAAO,IAAI2D,GAAEvD,CAAC,CACf,EAAE,KAAK,QAAU,MAAO,EAAG,EAAGJ,IAAM,CACnC,IAAI0F,EAAGN,EACP,KAAM,CAAE,aAAclF,EAAG,MAAOC,CAAG,EAAG,KAAK,OAAQC,EAAIF,EAAE,aAAa,CAAC,EACvE,GAAI,CAACE,EACH,MAAM,IAAI,MAAM,kBAAkB,CAAC,aAAa,EAClD,MAAM8D,EAAI/D,EAAE,WAAW,IAAIC,EAAE,IAAI,EAAG+D,EAAIhE,EAAE,WAAW,IAAI,CAAC,EAC1D,GAAI,CAACgE,EACH,MAAM,IAAI,MAAM,yBAAyB,CAAC,aAAa,EACzD,MAAMwB,IAAMD,EAAIxB,GAAK,KAAO,OAASA,EAAE,mBAAqB,KAAO,OAASwB,EAAE,UAAY,OAAQ7D,IAAMuD,EAAIjB,EAAE,mBAAqB,KAAO,OAASiB,EAAE,UAAY,OACjK,GAAIO,GAAK9D,EAAG,CACV,MAAM,EAAI,MAAM3B,EAAE,QAAQE,EAAG,EAAGJ,CAAC,EACjC,OAAO,IAAI2D,GAAE,CAAC,CACtB,KAAa,CACL,MAAM,EAAI,CACRgC,EAAI,GAAK5D,GAAG3B,EAAE,IAAI,EAClByB,EAAI,GAAKE,GAAG,CAAC,CACd,EAAC,OAAO,OAAO,EAAE,KAAK,OAAO,EAC9B,MAAM,IAAI,MAAM,oBAAoB3B,EAAE,IAAI,SAAS,CAAC,sBAAsB,CAAC,8CAA8C,CACjI,CACK,EAAE,KAAK,WAAa,CAAC,EAAG,EAAI,KAAK,OAAO,aAAa,OAAO,OAAS,IAAM,CAC1E,KAAK,cAAc,CAAC,EACpB,MAAMJ,EAAI,EAAE,IAAI,CAAC,CAAE,GAAI,EAAG,KAAMG,EAAG,KAAMC,CAAG,IAAK,KAAK,OAAO,aAAa,aAAa,CACrF,GAAI,EACJ,KAAMD,GAAK,KAAK,OAAO,aACvB,KAAMC,CACd,CAAO,CAAC,EACF,OAAO,KAAK,OAAO,aAAa,WAAWJ,EAAG,CAAC,EAAGA,EAAE,IAAK,GAAM,IAAI2D,GAAE,CAAC,CAAC,CACxE,CACL,CAME,IAAI,SAAU,CACZ,MAAO,CACL,MAAO,IAAM,KAAK,MAAO,EACzB,OAAS,GAAM,KAAK,OAAO,CAAC,EAC5B,eAAiB,GAAM,KAAK,eAAe,CAAC,EAC5C,OAAS,GAAM,KAAK,OAAO,CAAC,EAC5B,KAAM,CAAC,EAAG,IAAM,KAAK,KAAK,EAAG,CAAC,EAC9B,KAAM,CAAC,EAAG,IAAM,KAAK,KAAK,EAAG,CAAC,EAC9B,gBAAkB,GAAM,KAAK,gBAAgB,CAAC,EAC9C,QAAU,GAAM,KAAK,QAAQ,CAAC,EAC9B,qBAAsB,IAAM,KAAK,qBAAsB,EACvD,cAAgB,GAAM,KAAK,cAAc,CAAC,EAC1C,eAAgB,IAAM,KAAK,eAAgB,EAC3C,kBAAoB,GAAM,KAAK,kBAAkB,CAAC,EAClD,aAAc,CAAC,EAAG,EAAI,KAAO,KAAK,aAAa,EAAG,CAAC,EACnD,eAAgB,IAAM,KAAK,eAAgB,EAC3C,OAAQ,KAAK,OACb,WAAY,KAAK,WACjB,OAAQ,KAAK,OACb,iBAAkB,KAAK,iBACvB,QAAS,KAAK,OACf,CACL,CAME,gBAAiB,CACf,OAAO,KAAK,OAAO,aAAa,OAAO,MAC3C,CAME,sBAAuB,CACrB,OAAO,KAAK,OAAO,aAAa,iBACpC,CAME,cAAc,EAAG,CACf,MAAM,EAAI,KAAK,OAAO,aAAa,aAAa,CAAC,EACjD,GAAI,CAAC,EAAG,CACN/C,EAAE,8BAAgC,EAAI,IAAK,MAAM,EACjD,MACN,CACI,OAAO,KAAK,OAAO,aAAa,cAAc,CAAC,CACnD,CAME,gBAAgB,EAAG,CACjB,MAAM,EAAI,KAAK,OAAO,aAAa,gBAAgB,CAAC,EACpD,GAAI,IAAM,OAAQ,CAChBA,EAAE,+BAAiC,EAAI,IAAK,MAAM,EAClD,MACN,CACI,OAAO,IAAI+C,GAAE,CAAC,CAClB,CAME,QAAQ,EAAG,CACT,MAAM,EAAI,KAAK,OAAO,aAAa,aAAa,CAAC,EACjD,OAAO,IAAM,QAAU/C,EAAE,8BAAgC,EAAI,IAAK,MAAM,EAAG,MAAQ,IAAI+C,GAAE,CAAC,CAC9F,CAME,kBAAkB,EAAG,CACnB,MAAM,EAAI,KAAK,OAAO,aAAa,SAAS,CAAC,EAC7C,GAAI,IAAM,OAAQ,CAChB/C,EAAE,+CAAiD,EAAI,IAAK,MAAM,EAClE,MACN,CACI,OAAO,IAAI+C,GAAE,CAAC,CAClB,CAQE,KAAK,EAAG,EAAG,CACThD,EACE,wHACA,MACN,EAAO,KAAK,OAAO,aAAa,KAAK,EAAG,CAAC,CACzC,CAOE,KAAK,EAAG,EAAG,CACT,KAAK,OAAO,aAAa,KAAK,EAAG,CAAC,CACtC,CAME,OAAO,EAAI,KAAK,OAAO,aAAa,kBAAmB,CACrD,GAAI,CACF,MAAM,EAAI,KAAK,OAAO,aAAa,gBAAgB,CAAC,EACpD,KAAK,OAAO,aAAa,YAAY,CAAC,CACvC,OAAQ,EAAG,CACVC,EAAE,EAAG,MAAM,EACX,MACN,CACI,KAAK,OAAO,aAAa,OAAO,SAAW,GAAK,KAAK,OAAO,aAAa,OAAM,EAAI,KAAK,OAAO,aAAa,cAAgB,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,aAAc,KAAK,OAAO,MAAM,UAAU,GAAG,EAAG,KAAK,OAAO,QAAQ,MAAO,CACjQ,CAIE,MAAM,OAAQ,CACZ,MAAM,KAAK,OAAO,aAAa,MAAM,EAAE,EAAG,KAAK,OAAO,cAAc,MAAO,CAC/E,CAME,MAAM,OAAO,EAAG,CACd,GAAI,IAAM,QAAU,EAAE,SAAW,OAC/B,MAAM,IAAI,MAAM,8CAA8C,EAChE,KAAK,OAAO,sBAAsB,QAAS,EAAE,MAAM,KAAK,OAAO,aAAa,QAAS,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE,MAAM,EAAG,KAAK,OAAO,sBAAsB,OAAQ,CAChL,CAOE,eAAe,EAAG,CAChB,OAAO,KAAK,OAAO,aAAa,MAAO,EAAE,KAAK,OAAO,MAAM,YAAY,EAAG,EAAE,CAChF,CAQE,aAAa,EAAG,EAAI,GAAI,CACtB0B,GACE,GACA,wBACA,UACD,EACD,MAAMtC,EAAI,KAAK,OAAO,aAAa,gBAAgB,CAAC,EACpDA,IAAMA,EAAE,UAAY,EACxB,CAQE,gBAAiB,CACfW,EAAE,8HAA+H,MAAM,EAAG,KAAK,OAAQ,CAC3J,CAME,cAAc,EAAG,CACf,GAAI,OAAO,GAAK,SACd,MAAM,IAAI,MAAM,0BAA0B,EAC5C,GAAI,EAAI,EACN,MAAM,IAAI,MAAM,4CAA4C,EAC9D,GAAI,IAAM,KACR,MAAM,IAAI,MAAM,4CAA4C,CAClE,CACA,CACA,SAASiF,GAAG9F,EAAG,EAAG,CAChB,OAAO,OAAOA,GAAK,SAAW,EAAE,aAAa,gBAAgBA,CAAC,EAAI,OAAOA,GAAK,SAAW,EAAE,aAAa,aAAaA,CAAC,EAAI,EAAE,aAAa,aAAaA,EAAE,EAAE,CAC5J,CACA,MAAM+F,WAAW/B,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,gBAAkB,CAAC,EAAI,KAAK,OAAO,MAAM,UAAU,QAAS,EAAI,IAAM,KAAK,OAAO,aAAa,YAAc,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,WAAY,EAAG,CAAC,EAAG,IAAM,GAAI,KAAK,eAAiB,CAAC,EAAI,KAAK,OAAO,MAAM,UAAU,QAAS,EAAI,IAAM,KAAK,OAAO,aAAa,WAAa,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,UAAW,EAAG,CAAC,EAAG,IAAM,GAAI,KAAK,mBAAqB,CAAC,EAAI,KAAK,OAAO,MAAM,UAAU,QAAS,EAAI,IAAM,KAAK,OAAO,aAAa,eAAiB,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,cAAe,EAAG,CAAC,EAAG,IAAM,GAAI,KAAK,eAAiB,CAAC,EAAI,KAAK,OAAO,MAAM,UAAU,QAAS,EAAI,IAAM,KAAK,OAAO,aAAa,WAAa,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,UAAW,EAAG,CAAC,EAAG,IAAM,GAAI,KAAK,WAAa,CAAC,EAAG,EAAI,KAAK,OAAO,MAAM,UAAU,QAAS9D,EAAI,IAAM,CACn3B,MAAM,EAAI4F,GAAG,EAAG,KAAK,MAAM,EAC3B,OAAO,IAAM,OAAS,IAAM,KAAK,OAAO,MAAM,WAAW,EAAG,EAAG5F,CAAC,EAAG,GACzE,EAAO,KAAK,MAAQ,CAAC,EAAI,KAAO,EAAI,KAAK,eAAe,KAAK,OAAO,MAAM,UAAU,GAAG,EAAI,KAAK,gBAAgB,KAAK,OAAO,MAAM,UAAU,KAAK,CACjJ,CAME,IAAI,SAAU,CACZ,MAAO,CACL,gBAAiB,KAAK,gBACtB,eAAgB,KAAK,eACrB,mBAAoB,KAAK,mBACzB,eAAgB,KAAK,eACrB,WAAY,KAAK,WACjB,MAAO,KAAK,KACb,CACL,CACA,CACA,MAAM8F,WAAWhC,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,KAAM,CAAC,EAAG,IAAM,KAAK,KAAK,EAAG,CAAC,EAC9B,IAAK,CAAC,EAAG,IAAM,KAAK,IAAI,EAAG,CAAC,EAC5B,GAAI,CAAC,EAAG,IAAM,KAAK,GAAG,EAAG,CAAC,CAC3B,CACL,CAOE,GAAG,EAAG,EAAG,CACP,KAAK,iBAAiB,GAAG,EAAG,CAAC,CACjC,CAOE,KAAK,EAAG,EAAG,CACT,KAAK,iBAAiB,KAAK,EAAG,CAAC,CACnC,CAOE,IAAI,EAAG,EAAG,CACR,KAAK,iBAAiB,IAAI,EAAG,CAAC,CAClC,CACA,QACA,MAAMiC,WAAWjC,CAAE,CAOjB,OAAO,aAAa,EAAG,EAAG,CACxB,OAAO,EAAI,cAAc,CAAC,GAAK,SAAS,CAAC,EAC7C,CAIE,IAAI,SAAU,CACZ,MAAO,CACL,EAAG,IAAM,CACPlD,EAAE,kDAAmD,MAAM,CACnE,CACK,CACL,CAOE,kBAAkB,EAAG,EAAG,CACtB,OAAO,OAAO,OACZ,KAAK,QACL,CACE,EAAIZ,GAAMwD,EAAE,EAAEuC,GAAG,aAAa,EAAG,CAAC,EAAG/F,CAAC,CAC9C,CACK,CACL,CACA,EACA,MAAMgG,WAAWlC,CAAE,CAIjB,IAAI,SAAU,CACZ,MAAO,CACL,OAAQ,KAAK,OAAO,UAAU,QAC9B,MAAO,KAAK,OAAO,SAAS,QAC5B,MAAO,KAAK,OAAO,SAAS,QAC5B,OAAQ,KAAK,OAAO,UAAU,QAC9B,UAAW,KAAK,OAAO,aAAa,QACpC,SAAU,KAAK,OAAO,YAAY,QAClC,UAAW,KAAK,OAAO,aAAa,QACpC,MAAO,KAAK,OAAO,SAAS,QAC5B,UAAW,KAAK,OAAO,aAAa,QACpC,OAAQ,KAAK,OAAO,UAAU,QAC9B,QAAS,KAAK,OAAO,WAAW,QAChC,cAAe,KAAK,OAAO,iBAAiB,QAC5C,QAAS,KAAK,OAAO,WAAW,QAChC,KAAM,KAAK,OAAO,QAAQ,QAC1B,SAAU,KAAK,OAAO,YAAY,QAClC,GAAI,KAAK,OAAO,MAAM,OACvB,CACL,CAOE,kBAAkB,EAAG,EAAG,CACtB,OAAO,OAAO,OACZ,KAAK,QACL,CACE,KAAM,KAAK,OAAO,QAAQ,kBAAkB,EAAG,CAAC,CACxD,CACK,CACL,CACA,CACA,MAAMmC,WAAWnC,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,MAAO,IAAM,KAAK,MAAO,EACzB,KAAM,IAAM,KAAK,KAAI,CACtB,CACL,CAIE,MAAO,CACL,KAAK,OAAO,cAAc,UAAW,CACzC,CAIE,OAAQ,CACN,KAAK,OAAO,cAAc,MAAO,CACrC,CACA,CACA,MAAMoC,WAAWpC,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,GAAI,CAAC,EAAG,EAAG9D,EAAG,IAAM,KAAK,GAAG,EAAG,EAAGA,EAAG,CAAC,EACtC,IAAK,CAAC,EAAG,EAAGA,EAAG,IAAM,KAAK,IAAI,EAAG,EAAGA,EAAG,CAAC,EACxC,QAAU,GAAM,KAAK,QAAQ,CAAC,CAC/B,CACL,CASE,GAAG,EAAG,EAAGA,EAAG,EAAG,CACb,OAAO,KAAK,UAAU,GAAG,EAAG,EAAGA,EAAG,CAAC,CACvC,CASE,IAAI,EAAG,EAAGA,EAAG,EAAG,CACd,KAAK,UAAU,IAAI,EAAG,EAAGA,EAAG,CAAC,CACjC,CAME,QAAQ,EAAG,CACT,KAAK,UAAU,QAAQ,CAAC,CAC5B,CACA,CACA,IAAImG,GAAK,CAAE,QAAS,EAAI,GACvB,SAASrG,EAAG,EAAG,EACb,SAAS,EAAGE,EAAG,CACdF,EAAE,QAAUE,EAAG,CAChB,GAAE,OAAQ,UAAW,CACpB,OAAO,SAAS,EAAG,CACjB,IAAIA,EAAI,CAAE,EACV,SAAS,EAAEG,EAAG,CACZ,GAAIH,EAAEG,CAAC,EACL,OAAOH,EAAEG,CAAC,EAAE,QACd,IAAIC,EAAIJ,EAAEG,CAAC,EAAI,CAAE,EAAGA,EAAG,EAAG,GAAI,QAAS,EAAI,EAC3C,OAAO,EAAEA,CAAC,EAAE,KAAKC,EAAE,QAASA,EAAGA,EAAE,QAAS,CAAC,EAAGA,EAAE,EAAI,GAAIA,EAAE,OAClE,CACM,OAAO,EAAE,EAAI,EAAG,EAAE,EAAIJ,EAAG,EAAE,EAAI,SAASG,EAAGC,EAAG,EAAG,CAC/C,EAAE,EAAED,EAAGC,CAAC,GAAK,OAAO,eAAeD,EAAGC,EAAG,CAAE,WAAY,GAAI,IAAK,CAAC,CAAE,CAC3E,EAAS,EAAE,EAAI,SAASD,EAAG,CACnB,OAAO,OAAS,KAAO,OAAO,aAAe,OAAO,eAAeA,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,EAAG,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,CACrK,EAAE,EAAE,EAAI,SAASA,EAAGC,EAAG,CACtB,GAAI,EAAIA,IAAMD,EAAI,EAAEA,CAAC,GAAI,EAAIC,GAAK,EAAIA,GAAK,OAAOD,GAAK,UAAYA,GAAKA,EAAE,WACxE,OAAOA,EACT,IAAI,EAAoB,OAAO,OAAO,IAAI,EAC1C,GAAI,EAAE,EAAE,CAAC,EAAG,OAAO,eAAe,EAAG,UAAW,CAAE,WAAY,GAAI,MAAOA,CAAG,CAAA,EAAG,EAAIC,GAAK,OAAOD,GAAK,SAClG,QAAS,KAAKA,EACZ,EAAE,EAAE,EAAG,GAAI,SAAS,EAAG,CACrB,OAAOA,EAAE,CAAC,CACxB,GAAe,KAAK,KAAM,CAAC,CAAC,EACpB,OAAO,CACf,EAAS,EAAE,EAAI,SAASA,EAAG,CACnB,IAAIC,EAAID,GAAKA,EAAE,WAAa,UAAW,CACrC,OAAOA,EAAE,OACnB,EAAY,UAAW,CACb,OAAOA,CACR,EACD,OAAO,EAAE,EAAEC,EAAG,IAAKA,CAAC,EAAGA,CACxB,EAAE,EAAE,EAAI,SAASD,EAAGC,EAAG,CACtB,OAAO,OAAO,UAAU,eAAe,KAAKD,EAAGC,CAAC,CACxD,EAAS,EAAE,EAAI,IAAK,EAAE,EAAE,EAAI,CAAC,CACxB,EAAC,CAAC,SAAS,EAAGJ,EAAG,EAAG,CACnB,EAAE,CAAC,EAIH,EAAE,QAAU,UAAW,CACrB,IAAIG,EAAI,EAAE,CAAC,EAAGC,EAAI,wBAAyB,EAAI,KAC/C,MAAO,CAAE,KAAM,SAAS,EAAG,CACzB,GAAI,EAAE,QAAS,EACZ,UAAW,CACV,GAAI,EACF,MAAO,GACT,EAAID,EAAE,WAAY,EAAE,SAAS,KAAK,YAAY,CAAC,CAC7D,GAAgB,EACJ,IAAI,EAAI,KAAM0B,EAAI,EAAE,MAAQ,IAC5B,OAAQ,EAAE,KAAI,CACZ,IAAK,UACH,EAAI1B,EAAE,QAAQ,CAAC,EACf,MACF,IAAK,SACH,EAAIA,EAAE,OAAO,CAAC,EACd,MACF,QACE,EAAIA,EAAE,MAAM,CAAC,EAAG,OAAO,WAAW,UAAW,CAC3C,EAAE,OAAQ,CACX,EAAE0B,CAAC,CACpB,CACY,EAAE,YAAY,CAAC,EAAG,EAAE,UAAU,IAAIzB,CAAC,CAC/C,CACA,CAAW,CACX,EAAS,CACT,EAAO,SAAS,EAAGJ,EAAG,EAAG,CACnB,IAAIG,EAAI,EAAE,CAAC,EACX,OAAOA,GAAK,WAAaA,EAAI,CAAC,CAAC,EAAE,EAAGA,EAAG,EAAE,CAAC,GAC1C,IAAIC,EAAI,CAAE,IAAK,GAAI,UAAW,OAAQ,WAAY,MAAQ,EAC1D,EAAE,CAAC,EAAED,EAAGC,CAAC,EAAGD,EAAE,SAAW,EAAE,QAAUA,EAAE,OAC7C,EAAO,SAAS,EAAGH,EAAG,EAAG,EAClB,EAAE,QAAU,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,EAAG,ozEAAqzE,EAAE,CAAC,CACh2E,EAAO,SAAS,EAAGA,EAAG,CAChB,EAAE,QAAU,SAAS,EAAG,CACtB,IAAIG,EAAI,CAAE,EACV,OAAOA,EAAE,SAAW,UAAW,CAC7B,OAAO,KAAK,IAAI,SAASC,EAAG,CAC1B,IAAI,EAAI,SAAS,EAAG,EAAG,CACrB,IAAIyB,EAAI,EAAE,CAAC,GAAK,GAAI6D,EAAI,EAAE,CAAC,EAC3B,GAAI,CAACA,EACH,OAAO7D,EACT,GAAI,GAAK,OAAO,MAAQ,WAAY,CAClC,IAAI,GAAK,EAAI6D,EAAG,mEAAqE,KAAK,SAAS,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAI,OAAQ,EAAIA,EAAE,QAAQ,IAAI,SAASH,EAAG,CACjL,MAAO,iBAAmBG,EAAE,WAAaH,EAAI,KAC/D,CAAiB,EACD,MAAO,CAAC1D,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK;AAAA,CACrD,CACD,CACc,IAAI,EACJ,MAAO,CAACA,CAAC,EAAE,KAAK;AAAA,CAC7B,CACD,EAAczB,EAAG,CAAC,EACN,OAAOA,EAAE,CAAC,EAAI,UAAYA,EAAE,CAAC,EAAI,IAAM,EAAI,IAAM,CAC7D,CAAW,EAAE,KAAK,EAAE,CACX,EAAED,EAAE,EAAI,SAASC,EAAG,EAAG,CACtB,OAAOA,GAAK,WAAaA,EAAI,CAAC,CAAC,KAAMA,EAAG,EAAE,CAAC,GAC3C,QAAS,EAAI,CAAE,EAAE,EAAI,EAAG,EAAI,KAAK,OAAQ,IAAK,CAC5C,IAAIyB,EAAI,KAAK,CAAC,EAAE,CAAC,EACjB,OAAOA,GAAK,WAAa,EAAEA,CAAC,EAAI,GAC5C,CACU,IAAK,EAAI,EAAG,EAAIzB,EAAE,OAAQ,IAAK,CAC7B,IAAIsF,EAAItF,EAAE,CAAC,EACX,OAAOsF,EAAE,CAAC,GAAK,UAAY,EAAEA,EAAE,CAAC,CAAC,IAAM,GAAK,CAACA,EAAE,CAAC,EAAIA,EAAE,CAAC,EAAI,EAAI,IAAMA,EAAE,CAAC,EAAI,IAAMA,EAAE,CAAC,EAAI,UAAY,EAAI,KAAMvF,EAAE,KAAKuF,CAAC,EACnI,CACA,EAAWvF,CACJ,CACP,EAAO,SAAS,EAAGH,EAAG,EAAG,CACnB,IAAIG,EAAGC,EAAG,EAAI,CAAA,EAAI,GAAKD,EAAI,UAAW,CACpC,OAAO,QAAU,UAAY,SAAS,KAAO,CAAC,OAAO,IAC7D,EAAS,UAAW,CACZ,OAAOC,IAAM,SAAWA,EAAID,EAAE,MAAM,KAAM,SAAS,GAAIC,CAC/D,GAAU,EAAI,SAASgG,EAAG,CAClB,IAAI,EAAI,CAAE,EACV,OAAO,SAAS,EAAG,CACjB,GAAI,OAAO,GAAK,WACd,OAAO,EAAG,EACZ,GAAI,EAAE,CAAC,IAAM,OAAQ,CACnB,IAAIC,GAAK,SAAS,EAAG,CACnB,OAAO,SAAS,cAAc,CAAC,CAC7C,GAAe,KAAK,KAAM,CAAC,EACf,GAAI,OAAO,mBAAqBA,aAAa,OAAO,kBAClD,GAAI,CACFA,EAAIA,EAAE,gBAAgB,IACtC,MAAsB,CACNA,EAAI,IACpB,CACY,EAAE,CAAC,EAAIA,CACnB,CACU,OAAO,EAAE,CAAC,CACX,CACT,IAAWxE,EAAI,KAAM6D,EAAI,EAAG,EAAI,GAAI,EAAI,EAAE,CAAC,EACrC,SAAS,EAAEU,EAAG,EAAG,CACf,QAAS,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAAK,CACjC,IAAIC,EAAID,EAAE,CAAC,EAAG,EAAI,EAAEC,EAAE,EAAE,EACxB,GAAI,EAAG,CACL,EAAE,OACF,QAASC,EAAI,EAAGA,EAAI,EAAE,MAAM,OAAQA,IAClC,EAAE,MAAMA,CAAC,EAAED,EAAE,MAAMC,CAAC,CAAC,EACvB,KAAOA,EAAID,EAAE,MAAM,OAAQC,IACzB,EAAE,MAAM,KAAKC,EAAEF,EAAE,MAAMC,CAAC,EAAG,CAAC,CAAC,CAC3C,KAAiB,CACL,IAAIE,EAAI,CAAE,EACV,IAAKF,EAAI,EAAGA,EAAID,EAAE,MAAM,OAAQC,IAC9BE,EAAE,KAAKD,EAAEF,EAAE,MAAMC,CAAC,EAAG,CAAC,CAAC,EACzB,EAAED,EAAE,EAAE,EAAI,CAAE,GAAIA,EAAE,GAAI,KAAM,EAAG,MAAOG,CAAG,CACrD,CACA,CACA,CACM,SAASjB,EAAEa,EAAG,EAAG,CACf,QAAS,EAAI,GAAIC,EAAI,CAAA,EAAI,EAAI,EAAG,EAAID,EAAE,OAAQ,IAAK,CACjD,IAAIE,EAAIF,EAAE,CAAC,EAAGI,EAAI,EAAE,KAAOF,EAAE,CAAC,EAAI,EAAE,KAAOA,EAAE,CAAC,EAAGG,EAAI,CAAE,IAAKH,EAAE,CAAC,EAAG,MAAOA,EAAE,CAAC,EAAG,UAAWA,EAAE,CAAC,CAAG,EAChGD,EAAEG,CAAC,EAAIH,EAAEG,CAAC,EAAE,MAAM,KAAKC,CAAC,EAAI,EAAE,KAAKJ,EAAEG,CAAC,EAAI,CAAE,GAAIA,EAAG,MAAO,CAACC,CAAC,EAAG,CACzE,CACQ,OAAO,CACf,CACM,SAASC,EAAEN,EAAG,EAAG,CACf,IAAI,EAAI,EAAEA,EAAE,UAAU,EACtB,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,6GAA6G,EAC/H,IAAIC,EAAI,EAAE,EAAE,OAAS,CAAC,EACtB,GAAID,EAAE,WAAa,MACjBC,EAAIA,EAAE,YAAc,EAAE,aAAa,EAAGA,EAAE,WAAW,EAAI,EAAE,YAAY,CAAC,EAAI,EAAE,aAAa,EAAG,EAAE,UAAU,EAAG,EAAE,KAAK,CAAC,UAC5GD,EAAE,WAAa,SACtB,EAAE,YAAY,CAAC,MACZ,CACH,GAAI,OAAOA,EAAE,UAAY,UAAY,CAACA,EAAE,SAAS,OAC/C,MAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA,CAK3B,EACS,IAAI,EAAI,EAAEA,EAAE,WAAa,IAAMA,EAAE,SAAS,MAAM,EAChD,EAAE,aAAa,EAAG,CAAC,CAC7B,CACA,CACM,SAASZ,EAAEY,EAAG,CACZ,GAAIA,EAAE,aAAe,KACnB,MAAO,GACTA,EAAE,WAAW,YAAYA,CAAC,EAC1B,IAAI,EAAI,EAAE,QAAQA,CAAC,EACnB,GAAK,GAAK,EAAE,OAAO,EAAG,CAAC,CAC/B,CACM,SAASO,EAAEP,EAAG,CACZ,IAAI,EAAI,SAAS,cAAc,OAAO,EACtC,OAAOA,EAAE,MAAM,OAAS,SAAWA,EAAE,MAAM,KAAO,YAAa,EAAE,EAAGA,EAAE,KAAK,EAAGM,EAAEN,EAAG,CAAC,EAAG,CAC/F,CACM,SAAS,EAAEA,EAAG,EAAG,CACf,OAAO,KAAK,CAAC,EAAE,QAAQ,SAAS,EAAG,CACjCA,EAAE,aAAa,EAAG,EAAE,CAAC,CAAC,CAChC,CAAS,CACT,CACM,SAASG,EAAEH,EAAG,EAAG,CACf,IAAI,EAAGC,EAAG,EAAGC,EACb,GAAI,EAAE,WAAaF,EAAE,IAAK,CACxB,GAAI,EAAEE,EAAI,EAAE,UAAUF,EAAE,GAAG,GACzB,OAAO,UAAW,CACjB,EACHA,EAAE,IAAME,CAClB,CACQ,GAAI,EAAE,UAAW,CACf,IAAIE,EAAId,IACR,EAAI7D,IAAMA,EAAI8E,EAAE,CAAC,GAAIN,EAAIO,GAAG,KAAK,KAAM,EAAGJ,EAAG,EAAE,EAAG,EAAII,GAAG,KAAK,KAAM,EAAGJ,EAAG,EAAE,CAC7E,MACCJ,EAAE,WAAa,OAAO,KAAO,YAAc,OAAO,IAAI,iBAAmB,YAAc,OAAO,IAAI,iBAAmB,YAAc,OAAO,MAAQ,YAAc,OAAO,MAAQ,YAAc,EAAI,SAASK,EAAG,CAC3M,IAAII,EAAI,SAAS,cAAc,MAAM,EACrC,OAAOJ,EAAE,MAAM,OAAS,SAAWA,EAAE,MAAM,KAAO,YAAaA,EAAE,MAAM,IAAM,aAAc,EAAEI,EAAGJ,EAAE,KAAK,EAAGC,EAAED,EAAGI,CAAC,EAAGA,CAC/H,EAAY,CAAC,EAAGR,GAAK,SAASI,EAAGI,EAAGC,GAAI,CAC5B,IAAIC,GAAKD,GAAG,IAAKE,GAAKF,GAAG,UAAWG,GAAKJ,EAAE,wBAA0B,QAAUG,IAC9EH,EAAE,uBAAyBI,MAAQF,GAAK,EAAEA,EAAE,GAAIC,KAAOD,IAAM;AAAA,oDACpB,KAAK,SAAS,mBAAmB,KAAK,UAAUC,EAAE,CAAC,CAAC,CAAC,EAAI,OACnG,IAAIE,GAAK,IAAI,KAAK,CAACH,EAAE,EAAG,CAAE,KAAM,UAAY,CAAA,EAAGI,GAAKV,EAAE,KACtDA,EAAE,KAAO,IAAI,gBAAgBS,EAAE,EAAGC,IAAM,IAAI,gBAAgBA,EAAE,CAC1E,GAAa,KAAK,KAAM,EAAG,CAAC,EAAG,EAAI,UAAW,CAClC3B,EAAE,CAAC,EAAG,EAAE,MAAQ,IAAI,gBAAgB,EAAE,IAAI,CACtD,IAAgB,EAAImB,EAAE,CAAC,EAAGN,GAAK,SAASI,EAAGI,EAAG,CAClC,IAAIC,GAAKD,EAAE,IAAKE,GAAKF,EAAE,MACvB,GAAIE,IAAMN,EAAE,aAAa,QAASM,EAAE,EAAGN,EAAE,WACvCA,EAAE,WAAW,QAAUK,OACpB,CACH,KAAOL,EAAE,YACPA,EAAE,YAAYA,EAAE,UAAU,EAC5BA,EAAE,YAAY,SAAS,eAAeK,EAAE,CAAC,CACvD,CACW,GAAE,KAAK,KAAM,CAAC,EAAG,EAAI,UAAW,CAC/BtB,EAAE,CAAC,CACf,GACQ,OAAOa,EAAED,CAAC,EAAG,SAASK,EAAG,CACvB,GAAIA,EAAG,CACL,GAAIA,EAAE,MAAQL,EAAE,KAAOK,EAAE,QAAUL,EAAE,OAASK,EAAE,YAAcL,EAAE,UAC9D,OACFC,EAAED,EAAIK,CAAC,CACR,MACC,EAAG,CACN,CACT,CACM,EAAE,QAAU,SAASL,EAAG,EAAG,CACzB,GAAI,OAAO,MAAQ,KAAO,OAAS,OAAO,UAAY,SACpD,MAAM,IAAI,MAAM,8DAA8D,GAC/E,EAAI,GAAK,CAAA,GAAI,MAAQ,OAAO,EAAE,OAAS,SAAW,EAAE,MAAQ,CAAE,EAAE,EAAE,WAAa,OAAO,EAAE,WAAa,YAAc,EAAE,UAAY,EAAG,GAAG,EAAE,aAAe,EAAE,WAAa,QAAS,EAAE,WAAa,EAAE,SAAW,UAC7M,IAAI,EAAIb,EAAEa,EAAG,CAAC,EACd,OAAO,EAAE,EAAG,CAAC,EAAG,SAASC,EAAG,CAC1B,QAAS,EAAI,CAAE,EAAEC,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACzC,IAAIE,EAAI,EAAEF,CAAC,GACVG,EAAI,EAAED,EAAE,EAAE,GAAG,OAAQ,EAAE,KAAKC,CAAC,CAC1C,CACU,IAAKJ,GAAK,EAAEd,EAAEc,EAAG,CAAC,EAAG,CAAC,EAAGC,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjD,IAAIG,EACJ,IAAKA,EAAI,EAAEH,CAAC,GAAG,OAAS,EAAG,CACzB,QAASO,EAAI,EAAGA,EAAIJ,EAAE,MAAM,OAAQI,IAClCJ,EAAE,MAAMI,CAAC,EAAG,EACd,OAAO,EAAEJ,EAAE,EAAE,CAC3B,CACA,CACS,CACF,EACD,IAAIW,EAAGC,GAAKD,EAAI,CAAA,EAAI,SAAShB,EAAG,EAAG,CACjC,OAAOgB,EAAEhB,CAAC,EAAI,EAAGgB,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAC/C,CACD,GACM,SAASR,GAAGR,EAAG,EAAG,EAAGC,EAAG,CACtB,IAAI,EAAI,EAAI,GAAKA,EAAE,IACnB,GAAID,EAAE,WACJA,EAAE,WAAW,QAAUiB,EAAE,EAAG,CAAC,MAC1B,CACH,IAAIf,EAAI,SAAS,eAAe,CAAC,EAAGE,EAAIJ,EAAE,WAC1CI,EAAE,CAAC,GAAKJ,EAAE,YAAYI,EAAE,CAAC,CAAC,EAAGA,EAAE,OAASJ,EAAE,aAAaE,EAAGE,EAAE,CAAC,CAAC,EAAIJ,EAAE,YAAYE,CAAC,CAC3F,CACA,CACA,EAAO,SAAS,EAAGtG,EAAG,CAChB,EAAE,QAAU,SAAS,EAAG,CACtB,IAAIG,EAAI,OAAO,OAAS,KAAO,OAAO,SACtC,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,kCAAkC,EACpD,GAAI,CAAC,GAAK,OAAO,GAAK,SACpB,OAAO,EACT,IAAIC,EAAID,EAAE,SAAW,KAAOA,EAAE,KAAM,EAAIC,EAAID,EAAE,SAAS,QAAQ,YAAa,GAAG,EAC/E,OAAO,EAAE,QAAQ,sDAAuD,SAAS,EAAG,EAAG,CACrF,IAAI0B,EAAG6D,EAAI,EAAE,KAAI,EAAG,QAAQ,WAAY,SAAS,EAAG,EAAG,CACrD,OAAO,CACR,CAAA,EAAE,QAAQ,WAAY,SAAS,EAAG,EAAG,CACpC,OAAO,CACnB,CAAW,EACD,MAAO,oDAAoD,KAAKA,CAAC,EAAI,GAAK7D,EAAI6D,EAAE,QAAQ,IAAI,IAAM,EAAIA,EAAIA,EAAE,QAAQ,GAAG,IAAM,EAAItF,EAAIsF,EAAI,EAAIA,EAAE,QAAQ,QAAS,EAAE,EAAG,OAAS,KAAK,UAAU7D,CAAC,EAAI,IAC5M,CAAS,CACF,CACP,EAAO,SAAS,EAAG7B,EAAG,EAAG,CACnB,IAAIG,EAAGC,EAAG,EAAG,EAAG,EAAGyB,EAAG6D,EAAG,EAAG,EAC5B,EAAE,SAAWvF,EAAI,eAAgBC,EAAI,aAAc,EAAI,oBAAqB,EAAI,8BAA+B,EAAI,6BAA8ByB,EAAI,oBAAqB6D,EAAI,qBAAsB,EAAI,2BAA4B,CAAE,MAAO,EAAI,SAAS,EAAG,CAC3P,IAAIH,EAAI,SAAS,cAAc,KAAK,EAAGmB,EAAI,SAAS,cAAc,KAAK,EAAGlB,EAAI,EAAE,QAASmB,EAAI,EAAE,MAC/F,OAAOpB,EAAE,UAAU,IAAInF,CAAC,EAAGuG,GAAKpB,EAAE,UAAU,IAAInF,EAAI,KAAOuG,CAAC,EAAGpB,EAAE,UAAYC,EAAGkB,EAAE,UAAU,IAAI,CAAC,EAAGA,EAAE,iBAAiB,QAASnB,EAAE,OAAO,KAAKA,CAAC,CAAC,EAAGA,EAAE,YAAYmB,CAAC,EAAGnB,CAC7K,EAAS,QAAS,SAAS,EAAG,CACtB,IAAIA,EAAI,EAAE,CAAC,EAAGmB,EAAI,SAAS,cAAc,KAAK,EAAGlB,EAAI,SAAS,cAAc,QAAQ,EAAGmB,EAAI,SAAS,cAAc,QAAQ,EAAG,EAAIpB,EAAE,cAAc,IAAM,CAAC,EAAGgB,EAAI,EAAE,cAAea,EAAI,EAAE,UACtL,OAAOV,EAAE,UAAU,IAAI,CAAC,EAAGlB,EAAE,UAAY,EAAE,QAAU,UAAWmB,EAAE,UAAY,EAAE,YAAc,SAAUnB,EAAE,UAAU,IAAIE,CAAC,EAAGiB,EAAE,UAAU,IAAIjB,CAAC,EAAGF,EAAE,UAAU,IAAI,CAAC,EAAGmB,EAAE,UAAU,IAAI,CAAC,EAAGJ,GAAK,OAAOA,GAAK,aAAeI,EAAE,iBAAiB,QAASJ,CAAC,EAAG,EAAE,iBAAiB,QAASA,CAAC,GAAIa,GAAK,OAAOA,GAAK,YAAc5B,EAAE,iBAAiB,QAAS4B,CAAC,EAAG5B,EAAE,iBAAiB,QAASD,EAAE,OAAO,KAAKA,CAAC,CAAC,EAAGoB,EAAE,iBAAiB,QAASpB,EAAE,OAAO,KAAKA,CAAC,CAAC,EAAGmB,EAAE,YAAYlB,CAAC,EAAGkB,EAAE,YAAYC,CAAC,EAAGpB,EAAE,YAAYmB,CAAC,EAAGnB,CACpf,EAAS,OAAQ,SAAS,EAAG,CACrB,IAAIA,EAAI,EAAE,CAAC,EAAGmB,EAAI,SAAS,cAAc,KAAK,EAAGlB,EAAI,SAAS,cAAc,QAAQ,EAAGmB,EAAI,SAAS,cAAc,OAAO,EAAG,EAAIpB,EAAE,cAAc,IAAM,CAAC,EAAGgB,EAAI,EAAE,cAAea,EAAI,EAAE,UACrL,OAAOV,EAAE,UAAU,IAAI,CAAC,EAAGlB,EAAE,UAAY,EAAE,QAAU,KAAMA,EAAE,UAAU,IAAIE,CAAC,EAAGF,EAAE,UAAU,IAAI,CAAC,EAAGmB,EAAE,UAAU,IAAI9E,CAAC,EAAG,EAAE,aAAe8E,EAAE,aAAa,cAAe,EAAE,WAAW,EAAG,EAAE,UAAYA,EAAE,MAAQ,EAAE,SAAU,EAAE,YAAcA,EAAE,KAAO,EAAE,WAAYJ,GAAK,OAAOA,GAAK,YAAc,EAAE,iBAAiB,QAASA,CAAC,EAAGa,GAAK,OAAOA,GAAK,YAAc5B,EAAE,iBAAiB,QAAS,UAAW,CACpY4B,EAAET,EAAE,KAAK,CACnB,CAAS,EAAGnB,EAAE,iBAAiB,QAASD,EAAE,OAAO,KAAKA,CAAC,CAAC,EAAGmB,EAAE,YAAYC,CAAC,EAAGD,EAAE,YAAYlB,CAAC,EAAGD,EAAE,YAAYmB,CAAC,EAAGnB,CAC1G,EAAE,WAAY,UAAW,CACxB,IAAI,EAAI,SAAS,cAAc,KAAK,EACpC,OAAO,EAAE,UAAU,IAAIpF,CAAC,EAAG,CACnC,GACA,CAAK,CAAC,CACN,CAAG,CACH,GAAGgG,EAAE,EACL,IAAImB,GAAKnB,GAAG,QACZ,MAAMoB,GAAqB1H,GAAGyH,EAAE,EAChC,MAAME,EAAG,CAMP,KAAK,EAAG,CACND,GAAG,KAAK,CAAC,CACb,CACA,CACA,MAAME,WAAW3D,CAAE,CAMjB,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,MAAM,CACJ,OAAQ,EACR,iBAAkB,CACnB,CAAA,EAAG,KAAK,SAAW,IAAI0D,EAC5B,CAIE,IAAI,SAAU,CACZ,MAAO,CACL,KAAO,GAAM,KAAK,KAAK,CAAC,CACzB,CACL,CAME,KAAK,EAAG,CACN,OAAO,KAAK,SAAS,KAAK,CAAC,CAC/B,CACA,CACA,MAAME,WAAW5D,CAAE,CAIjB,IAAI,SAAU,CACZ,MAAM,EAAI,IAAM,KAAK,UACrB,MAAO,CACL,OAAS,GAAM,KAAK,OAAO,CAAC,EAC5B,IAAI,WAAY,CACd,OAAO,EAAG,CAClB,CACK,CACL,CAOE,OAAO,EAAG,CACR,OAAO,KAAK,OAAO,SAAS,OAAO,CAAC,CACxC,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,OAAO,SAAS,SAChC,CACA,CACA,IAAI6D,GAAK,CAAE,QAAS,EAAI,GACvB,SAAS7H,EAAG,EAAG,EACb,SAAS,EAAGE,EAAG,CACdF,EAAE,QAAUE,EAAG,CAChB,GAAEJ,GAAI,UAAW,CAChB,SAAS,EAAE8F,EAAG,CACZ,IAAI,EAAIA,EAAE,KAAM,EAAI,OAAO,KAAK,CAAC,EAAG,EAAI,EAAE,IAAI,SAASH,EAAG,CACxD,OAAO,OAAO,EAAEA,CAAC,CACzB,CAAO,EAAE,MAAM,SAASA,EAAG,CACnB,OAAOA,IAAM,UAAYA,IAAM,WAAaA,IAAM,UAC1D,CAAO,EACD,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,+BAA+B,EACjD,KAAK,OAASG,CACpB,CACI,IAAI1F,EAAI,CAAC,IAAK,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAK,EAChF,SAAS,EAAE0F,EAAG,CACZ,OAAO1F,EAAE,QAAQ0F,EAAE,QAAQ,IAAM,EACvC,CACI,IAAIvF,EAAI,CAAC,IAAK,IAAK,SAAU,IAAK,KAAM,MAAO,MAAO,IAAK,QAAQ,EACnE,SAASC,EAAEsF,EAAG,CACZ,OAAOvF,EAAE,QAAQuF,EAAE,QAAQ,IAAM,EACvC,CACI,EAAE,UAAU,MAAQ,SAASA,EAAG,CAC9B,MAAM,EAAI,SAAS,eAAe,mBAAoB,EAAE,EAAI,EAAE,cAAc,KAAK,EACjF,OAAO,EAAE,UAAYA,EAAG,KAAK,UAAU,EAAG,CAAC,EAAG,EAAE,SACjD,EAAE,EAAE,UAAU,UAAY,SAASA,EAAG,EAAG,CACxC,IAAI,EAAI,EAAEA,EAAG,CAAC,EAAG,EAAI,EAAE,WAAY,EACnC,GAAI,EACF,EAAG,CACD,GAAI,EAAE,WAAa,KAAK,UACtB,GAAI,EAAE,KAAK,KAAI,IAAO,KAAO,EAAE,wBAA0B,EAAE,EAAE,sBAAsB,GAAK,EAAE,oBAAsB,EAAE,EAAE,kBAAkB,GAAI,CACxI,EAAE,YAAY,CAAC,EAAG,KAAK,UAAUA,EAAG,CAAC,EACrC,KACD,KACC,UACJ,GAAI,EAAE,WAAa,KAAK,aAAc,CACpC,EAAE,YAAY,CAAC,EAAG,KAAK,UAAUA,EAAG,CAAC,EACrC,KACZ,CACU,IAAIH,EAAInF,EAAE,CAAC,EAAGsG,EACdnB,IAAMmB,EAAI,MAAM,UAAU,KAAK,KAAK,EAAE,WAAY,CAAC,GACnD,IAAIlB,EAAI,CAAC,CAAC,EAAE,WAAYmB,EAAI,EAAE,CAAC,GAAK,EAAE,CAAC,GAAKnB,EAAG,EAAI,EAAE,SAAS,cAAee,EAAI,EAAE,KAAK,OAAQ,EAAG,CAAC,EAAGa,EAAI7B,GAAKmB,EAChH,GAAIU,GAAK,EAAE,EAAGb,CAAC,GAAK,CAAC,KAAK,OAAO,yBAA2BI,EAAG,CAC7D,GAAI,EAAE,EAAE,WAAa,UAAY,EAAE,WAAa,SAC9C,KAAO,EAAE,WAAW,OAAS,GAC3B,EAAE,aAAa,EAAE,WAAW,CAAC,EAAG,CAAC,EACrC,EAAE,YAAY,CAAC,EAAG,KAAK,UAAUjB,EAAG,CAAC,EACrC,KACZ,CACU,QAAS2B,EAAI,EAAGA,EAAI,EAAE,WAAW,OAAQA,GAAK,EAAG,CAC/C,IAAIT,GAAK,EAAE,WAAWS,CAAC,EACvBxF,EAAE+E,GAAIL,EAAG,CAAC,IAAM,EAAE,gBAAgBK,GAAG,IAAI,EAAGS,EAAIA,EAAI,EAChE,CACU,KAAK,UAAU3B,EAAG,CAAC,CAC7B,OAAiB,EAAI,EAAE,YAAa,EAC/B,EACD,SAAS,EAAEA,EAAG,EAAG,CACf,OAAOA,EAAE,iBACP,EACA,WAAW,UAAY,WAAW,aAAe,WAAW,aAC5D,KACA,EACD,CACP,CACI,SAAS,EAAEA,EAAG,EAAG,EAAG,CAClB,OAAO,OAAOA,EAAE,KAAK,CAAC,GAAK,WAAaA,EAAE,KAAK,CAAC,EAAE,CAAC,EAAIA,EAAE,KAAK,CAAC,CACrE,CACI,SAAS,EAAEA,EAAG,EAAG,CACf,OAAO,OAAO,EAAI,IAAM,GAAK,OAAO,GAAK,UAAY,CAAC,EAAI,EAChE,CACI,SAAS7D,EAAE6D,EAAG,EAAG,EAAG,CAClB,IAAI,EAAIA,EAAE,KAAK,YAAa,EAC5B,OAAO,IAAM,GAAK,GAAK,OAAO,EAAE,CAAC,GAAK,WAAa,CAAC,EAAE,CAAC,EAAEA,EAAE,MAAO,CAAC,EAAI,OAAO,EAAE,CAAC,EAAI,KAAO,EAAE,CAAC,IAAM,GAAK,GAAK,OAAO,EAAE,CAAC,GAAK,SAAW,EAAE,CAAC,IAAMA,EAAE,MAAQ,EAClK,CACI,OAAO,CACX,CAAG,CACH,GAAGiC,EAAE,EACL,IAAIC,GAAKD,GAAG,QACZ,MAAME,GAAqBhI,GAAG+H,EAAE,EAChC,SAASE,GAAGhI,EAAG,EAAG,CAChB,OAAOA,EAAE,IAAK,GAAM,CAClB,MAAME,EAAIc,EAAE,CAAC,EAAI,EAAE,EAAE,IAAI,EAAI,EAC7B,OAAOM,EAAEpB,CAAC,IAAM,EAAE,KAAO+H,GAAG,EAAE,KAAM/H,CAAC,GAAI,CAC7C,CAAG,CACH,CACA,SAASgI,GAAElI,EAAG,EAAI,GAAI,CACpB,MAAM,EAAI,CACR,KAAM,CACP,EACD,OAAO,IAAI+H,GAAG,CAAC,EAAE,MAAM/H,CAAC,CAC1B,CACA,SAASiI,GAAGjI,EAAG,EAAG,CAChB,OAAO,MAAM,QAAQA,CAAC,EAAImI,GAAGnI,EAAG,CAAC,EAAIiB,EAAEjB,CAAC,EAAIoI,GAAGpI,EAAG,CAAC,EAAIkB,GAAGlB,CAAC,EAAIqI,GAAGrI,EAAG,CAAC,EAAIA,CAC5E,CACA,SAASmI,GAAGnI,EAAG,EAAG,CAChB,OAAOA,EAAE,IAAK,GAAMiI,GAAG,EAAG,CAAC,CAAC,CAC9B,CACA,SAASG,GAAGpI,EAAG,EAAG,CAChB,MAAM,EAAI,CAAE,EACZ,UAAWE,KAAKF,EAAG,CACjB,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAGE,CAAC,EAC5C,SACF,MAAM,EAAIF,EAAEE,CAAC,EAAGG,EAAIiI,GAAG,EAAEpI,CAAC,CAAC,EAAI,EAAEA,CAAC,EAAI,EACtC,EAAEA,CAAC,EAAI+H,GAAG,EAAG5H,CAAC,CAClB,CACE,OAAO,CACT,CACA,SAASgI,GAAGrI,EAAG,EAAG,CAChB,OAAOiB,EAAE,CAAC,EAAIiH,GAAElI,EAAG,CAAC,EAAI,IAAM,GAAKkI,GAAElI,EAAG,CAAA,CAAE,EAAIA,CAChD,CACA,SAASsI,GAAGtI,EAAG,CACb,OAAOiB,EAAEjB,CAAC,GAAKmB,GAAGnB,CAAC,GAAKgB,EAAEhB,CAAC,CAC7B,CACA,MAAMuI,WAAWvE,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,MAAO,CAAC,EAAG,IAAM,KAAK,MAAM,EAAG,CAAC,CACjC,CACL,CAQE,MAAM,EAAG,EAAG,CACV,OAAOkE,GAAE,EAAG,CAAC,CACjB,CACA,CACA,MAAMM,WAAWxE,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,KAAM,IAAM,KAAK,KAAI,CACtB,CACL,CAME,MAAO,CACL,MAAM,EAAI,sDACV,OAAO,KAAK,OAAO,SAAS,WAAalD,EAAE,EAAG,MAAM,EAAG,QAAQ,OAAO,IAAI,MAAM,CAAC,CAAC,GAAK,KAAK,OAAO,MAAM,KAAM,CACnH,CACA,CACA,MAAM2H,WAAWzE,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,eAAiB,IAAIG,CACnD,CAME,IAAI,SAAU,CACZ,MAAO,CACL,cAAe,CAAC,EAAG,IAAM,KAAK,cAAc,EAAG,CAAC,EAChD,YAAc,GAAM,KAAK,YAAY,CAAC,EACtC,KAAM,IAAM,KAAK,eAAe,KAAM,EACtC,QAAS,IAAM,KAAK,eAAe,QAAS,EAC5C,kBAAmB,IAAM,KAAK,eAAe,kBAAmB,EAChE,qBAAsB,IAAM,KAAK,eAAe,qBAAoB,CACrE,CACL,CAQE,cAAc,EAAG,EAAG,CAClB,OAAO,KAAK,eAAe,cAAc,EAAG,CAAC,CACjD,CAME,YAAY,EAAG,CACb,KAAK,eAAe,YAAY,CAAC,CACrC,CACA,CACA,MAAMuE,WAAW1E,CAAE,CAIjB,IAAI,SAAU,CACZ,MAAO,CACL,cAAe,IAAM,MAAM,KAAK,KAAK,OAAO,MAAM,WAAW,OAAQ,CAAA,CACtE,CACL,CACA,CACA,MAAM2E,WAAW3E,CAAE,CAIjB,IAAI,SAAU,CACZ,MAAO,CAIL,MAAO,YAIP,iBAAkB,iBAClB,uBAAwB,yBAIxB,MAAO,YACP,OAAQ,aACR,OAAQ,aAIR,eAAgB,sBAChB,qBAAsB,6BACvB,CACL,CACA,CACA,MAAM4E,WAAW5E,CAAE,CAMjB,IAAI,SAAU,CACZ,MAAO,CACL,MAAO,IAAM,KAAK,MAAO,EACzB,KAAM,IAAM,KAAK,KAAM,EACvB,oBAAsB,GAAM,KAAK,oBAAoB,CAAC,EACtD,cAAgB,GAAM,KAAK,cAAc,CAAC,CAC3C,CACL,CAIE,MAAO,CACL,KAAK,OAAO,QAAQ,YAAa,CACrC,CAIE,OAAQ,CACN,KAAK,OAAO,QAAQ,MAAO,CAC/B,CAME,oBAAoB,EAAG,CACrB,GAAI,KAAK,OAAO,aAAa,oBAAsB,GAAI,CACrDlD,EAAE,iEAAkE,MAAM,EAC1E,MACN,CACI,GAAK,CAAC,KAAK,OAAO,cAAc,QAAU,KAAK,OAAO,QAAQ,YAAa,EAAE,KAAK,OAAO,cAAc,KAAI,GAAM,KAAK,OAAO,cAAc,MAAO,CACtJ,CAME,cAAc,EAAG,CACf,GAAI,KAAK,OAAO,aAAa,oBAAsB,GAAI,CACrDA,EAAE,iEAAkE,MAAM,EAC1E,MACN,CACI,GAAK,CAAC,KAAK,OAAO,QAAQ,QAAQ,QAAU,KAAK,OAAO,QAAQ,YAAW,EAAI,KAAK,OAAO,QAAQ,QAAQ,KAAI,GAAM,KAAK,OAAO,QAAQ,QAAQ,MAAO,CAC5J,CACA,CACA,IAAI+H,GAAK,CAAE,QAAS,EAAI,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUC,SAAS7I,EAAG,EAAG,EACb,SAAS,EAAGE,EAAG,CACdF,EAAE,QAAUE,EAAG,CAChB,GAAE,OAAQ,UAAW,CACpB,OAAO,SAAS,EAAG,CACjB,IAAIA,EAAI,CAAE,EACV,SAAS,EAAEG,EAAG,CACZ,GAAIH,EAAEG,CAAC,EACL,OAAOH,EAAEG,CAAC,EAAE,QACd,IAAIC,EAAIJ,EAAEG,CAAC,EAAI,CAAE,EAAGA,EAAG,EAAG,GAAI,QAAS,EAAI,EAC3C,OAAO,EAAEA,CAAC,EAAE,KAAKC,EAAE,QAASA,EAAGA,EAAE,QAAS,CAAC,EAAGA,EAAE,EAAI,GAAIA,EAAE,OAClE,CACM,OAAO,EAAE,EAAI,EAAG,EAAE,EAAIJ,EAAG,EAAE,EAAI,SAASG,EAAGC,EAAG,EAAG,CAC/C,EAAE,EAAED,EAAGC,CAAC,GAAK,OAAO,eAAeD,EAAGC,EAAG,CAAE,WAAY,GAAI,IAAK,CAAC,CAAE,CAC3E,EAAS,EAAE,EAAI,SAASD,EAAG,CACnB,OAAO,OAAS,KAAO,OAAO,aAAe,OAAO,eAAeA,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,EAAG,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,CACrK,EAAE,EAAE,EAAI,SAASA,EAAGC,EAAG,CACtB,GAAI,EAAIA,IAAMD,EAAI,EAAEA,CAAC,GAAI,EAAIC,GAAK,EAAIA,GAAK,OAAOD,GAAK,UAAYA,GAAKA,EAAE,WACxE,OAAOA,EACT,IAAI,EAAoB,OAAO,OAAO,IAAI,EAC1C,GAAI,EAAE,EAAE,CAAC,EAAG,OAAO,eAAe,EAAG,UAAW,CAAE,WAAY,GAAI,MAAOA,CAAG,CAAA,EAAG,EAAIC,GAAK,OAAOD,GAAK,SAClG,QAAS,KAAKA,EACZ,EAAE,EAAE,EAAG,GAAI,SAAS,EAAG,CACrB,OAAOA,EAAE,CAAC,CACxB,GAAe,KAAK,KAAM,CAAC,CAAC,EACpB,OAAO,CACf,EAAS,EAAE,EAAI,SAASA,EAAG,CACnB,IAAIC,EAAID,GAAKA,EAAE,WAAa,UAAW,CACrC,OAAOA,EAAE,OACnB,EAAY,UAAW,CACb,OAAOA,CACR,EACD,OAAO,EAAE,EAAEC,EAAG,IAAKA,CAAC,EAAGA,CACxB,EAAE,EAAE,EAAI,SAASD,EAAGC,EAAG,CACtB,OAAO,OAAO,UAAU,eAAe,KAAKD,EAAGC,CAAC,CACxD,EAAS,EAAE,EAAI,GAAI,EAAE,EAAE,EAAI,CAAC,CACvB,EAAC,CAAC,SAAS,EAAGJ,EAAG,EAAG,CACnB,EAAE,QAAU,EAAE,CAAC,CACrB,EAAO,SAAS,EAAGA,EAAG,EAAG,CACnB,EAAE,EAAEA,CAAC,EAAG,EAAE,EAAEA,EAAG,UAAW,UAAW,CACnC,OAAOG,CACf,CAAO,EACD,MAAMA,CAAE,CACN,aAAc,CACZ,KAAK,MAAQ,CAAE,QAAS,KAAM,QAAS,IAAM,EAAE,KAAK,OAAS,GAAI,KAAK,UAAY,GAAI,KAAK,WAAa,GAAI,KAAK,YAAc,GAAI,KAAK,YAAc,EAAG,KAAK,mBAAqB,IAAM,CACvL,KAAK,QAAU,KAAK,KAAK,EAAE,CAC5B,EAAE,KAAK,WAAU,EAAI,KAAK,QAAS,EAAE,OAAO,iBAAiB,SAAU,KAAK,mBAAoB,CAAE,QAAS,EAAE,CAAE,CAC1H,CACQ,IAAI,KAAM,CACR,MAAO,CAAE,QAAS,KAAM,eAAgB,cAAe,aAAc,YAAa,UAAW,CAAE,KAAM,WAAY,OAAQ,aAAc,MAAO,YAAa,IAAK,UAAa,CACvL,CACQ,KAAK,EAAG,EAAG,EAAG,CACZ,KAAK,MAAM,SAAW,KAAK,QAAO,EAAI,KAAK,eAAiB,aAAa,KAAK,aAAa,EAC3F,MAAM0B,EAAI,OAAO,OAAO,CAAE,UAAW,SAAU,UAAW,EAAG,WAAY,EAAG,YAAa,EAAG,aAAc,EAAG,MAAO,GAAI,YAAa,CAAG,EAAE,CAAC,EAC3I,GAAIA,EAAE,cAAgB,KAAK,YAAcA,EAAE,aAAc,KAAK,MAAM,QAAQ,UAAY,GAAI,OAAO,GAAK,SACtG,KAAK,MAAM,QAAQ,YAAY,SAAS,eAAe,CAAC,CAAC,MACtD,CACH,GAAI,EAAE,aAAa,MACjB,MAAM,MAAM,mGAAqG,OAAO,EAAI,SAAS,EACvI,KAAK,MAAM,QAAQ,YAAY,CAAC,CAC5C,CACU,OAAQ,KAAK,MAAM,QAAQ,UAAU,OAAO,GAAG,OAAO,OAAO,KAAK,IAAI,SAAS,CAAC,EAAGA,EAAE,UAAS,CAC5F,IAAK,MACH,KAAK,SAAS,EAAGA,CAAC,EAClB,MACF,IAAK,OACH,KAAK,UAAU,EAAGA,CAAC,EACnB,MACF,IAAK,QACH,KAAK,WAAW,EAAGA,CAAC,EACpB,MACF,IAAK,SACL,QACE,KAAK,YAAY,EAAGA,CAAC,CACnC,CACUA,GAAKA,EAAE,MAAQ,KAAK,eAAiB,WAAW,IAAM,CACpD,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,YAAY,EAAG,KAAK,OAAS,EACnF,EAAaA,EAAE,KAAK,GAAK,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,YAAY,EAAG,KAAK,OAAS,GAChG,CACQ,KAAK,EAAI,GAAI,CACX,GAAI,KAAK,aAAe,CAAC,EACvB,OAAO,KAAK,eAAiB,aAAa,KAAK,aAAa,EAAG,KAAM,KAAK,cAAgB,WAAW,IAAM,CACzG,KAAK,KAAK,EAAE,CAC1B,EAAe,KAAK,WAAW,GACrB,KAAK,MAAM,QAAQ,UAAU,OAAO,KAAK,IAAI,YAAY,EAAG,KAAK,OAAS,GAAI,KAAK,gBAAkB,aAAa,KAAK,cAAc,CAC/I,CACQ,QAAQ,EAAG,EAAG,EAAG,CACf,EAAE,iBAAiB,aAAc,IAAM,CACrC,KAAK,KAAK,EAAG,EAAG,CAAC,CAClB,CAAA,EAAG,EAAE,iBAAiB,aAAc,IAAM,CACzC,KAAK,KAAM,CACvB,CAAW,CACX,CACQ,SAAU,CACR,KAAK,MAAM,QAAQ,OAAQ,EAAE,OAAO,oBAAoB,SAAU,KAAK,kBAAkB,CACnG,CACQ,SAAU,CACR,KAAK,MAAM,QAAU,KAAK,KAAK,MAAO,KAAK,IAAI,OAAO,EAAG,KAAK,MAAM,QAAU,KAAK,KAAK,MAAO,KAAK,IAAI,cAAc,EAAG,KAAK,OAAO,KAAK,MAAM,QAAS,KAAK,MAAM,OAAO,EAAG,KAAK,OAAO,SAAS,KAAM,KAAK,MAAM,OAAO,CACrO,CACQ,YAAa,CACX,MAAM,EAAI,uBACV,GAAI,SAAS,eAAe,CAAC,EAC3B,OACF,MAAM,EAAI,EAAE,CAAC,EAAG,EAAI,KAAK,KAAK,QAAS,KAAM,CAAE,YAAa,EAAE,SAAQ,EAAI,GAAI,EAAG,EACjF,KAAK,QAAQ,SAAS,KAAM,CAAC,CACvC,CACQ,YAAY,EAAG,EAAG,CAChB,MAAM,EAAI,EAAE,sBAAqB,EAAIA,EAAI,EAAE,KAAO,EAAE,YAAc,EAAI,KAAK,MAAM,QAAQ,YAAc,EAAG6D,EAAI,EAAE,OAAS,OAAO,YAAc,KAAK,UAAY,EAAE,UACjK,KAAK,eAAe,SAAU7D,EAAG6D,CAAC,CAC5C,CACQ,SAAS,EAAG,EAAG,CACb,MAAM,EAAI,EAAE,sBAAqB,EAAI7D,EAAI,EAAE,KAAO,EAAE,YAAc,EAAI,KAAK,MAAM,QAAQ,YAAc,EAAG6D,EAAI,EAAE,IAAM,OAAO,YAAc,KAAK,MAAM,QAAQ,aAAe,KAAK,UAClL,KAAK,eAAe,MAAO7D,EAAG6D,CAAC,CACzC,CACQ,UAAU,EAAG,EAAG,CACd,MAAM,EAAI,EAAE,sBAAuB,EAAE7D,EAAI,EAAE,KAAO,KAAK,MAAM,QAAQ,YAAc,KAAK,WAAa,EAAE,WAAY6D,EAAI,EAAE,IAAM,OAAO,YAAc,EAAE,aAAe,EAAI,KAAK,MAAM,QAAQ,aAAe,EAC3M,KAAK,eAAe,OAAQ7D,EAAG6D,CAAC,CAC1C,CACQ,WAAW,EAAG,EAAG,CACf,MAAM,EAAI,EAAE,sBAAqB,EAAI7D,EAAI,EAAE,MAAQ,KAAK,YAAc,EAAE,YAAa6D,EAAI,EAAE,IAAM,OAAO,YAAc,EAAE,aAAe,EAAI,KAAK,MAAM,QAAQ,aAAe,EAC7K,KAAK,eAAe,QAAS7D,EAAG6D,CAAC,CAC3C,CACQ,eAAe,EAAG,EAAG,EAAG,CACtB,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,EAAG,KAAK,MAAM,QAAQ,MAAM,KAAO,EAAI,KAAM,KAAK,MAAM,QAAQ,MAAM,IAAM,EAAI,IAChJ,CACQ,KAAK,EAAG,EAAI,KAAM,EAAI,CAAA,EAAI,CACxB,MAAM7D,EAAI,SAAS,cAAc,CAAC,EAClC,MAAM,QAAQ,CAAC,EAAIA,EAAE,UAAU,IAAI,GAAG,CAAC,EAAI,GAAKA,EAAE,UAAU,IAAI,CAAC,EACjE,UAAW6D,KAAK,EACd,EAAE,eAAeA,CAAC,IAAM7D,EAAE6D,CAAC,EAAI,EAAEA,CAAC,GACpC,OAAO7D,CACjB,CACQ,OAAO,EAAG,EAAG,CACX,MAAM,QAAQ,CAAC,EAAI,EAAE,QAAS,GAAM,EAAE,YAAY,CAAC,CAAC,EAAI,EAAE,YAAY,CAAC,CACjF,CACQ,QAAQ,EAAG,EAAG,CACZ,MAAM,QAAQ,CAAC,GAAK,EAAI,EAAE,WAAW,QAAS,GAAM,EAAE,QAAQ,CAAC,CAAC,EAAI,EAAE,QAAQ,CAAC,CACzF,CACA,CACA,EAAO,SAAS,EAAG7B,EAAG,CAChB,EAAE,QAAU,i/EACb,CAAA,CAAC,EAAE,OACR,CAAG,CACH,GAAG2I,EAAE,EACL,IAAIC,GAAKD,GAAG,QACZ,MAAME,GAAqBhJ,GAAG+I,EAAE,EAChC,IAAIE,EAAI,KACR,SAASC,IAAK,CACZD,IAAMA,EAAI,IAAID,GAChB,CACA,SAASG,GAAGlJ,EAAG,EAAG,EAAG,CACnBiJ,GAAI,EAAED,GAAK,MAAQA,EAAE,KAAKhJ,EAAG,EAAG,CAAC,CACnC,CACA,SAASmJ,GAAGnJ,EAAI,GAAI,CAClBiJ,GAAE,EAAID,GAAK,MAAQA,EAAE,KAAKhJ,CAAC,CAC7B,CACA,SAASoJ,GAAGpJ,EAAG,EAAG,EAAG,CACnBiJ,GAAI,EAAED,GAAK,MAAQA,EAAE,QAAQhJ,EAAG,EAAG,CAAC,CACtC,CACA,SAASqJ,IAAK,CACZL,GAAK,MAAQA,EAAE,QAAS,EAAEA,EAAI,IAChC,CACA,MAAMM,WAAWtF,CAAE,CAOjB,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,MAAM,CACJ,OAAQ,EACR,iBAAkB,CACxB,CAAK,CACL,CAIE,IAAI,SAAU,CACZ,MAAO,CACL,KAAM,CAAC,EAAG,EAAG9D,IAAM,KAAK,KAAK,EAAG,EAAGA,CAAC,EACpC,KAAM,IAAM,KAAK,KAAM,EACvB,QAAS,CAAC,EAAG,EAAGA,IAAM,KAAK,QAAQ,EAAG,EAAGA,CAAC,CAC3C,CACL,CAQE,KAAK,EAAG,EAAGA,EAAG,CACZgJ,GAAG,EAAG,EAAGhJ,CAAC,CACd,CAIE,MAAO,CACLiJ,GAAI,CACR,CAQE,QAAQ,EAAG,EAAGjJ,EAAG,CACfkJ,GAAG,EAAG,EAAGlJ,CAAC,CACd,CACA,CACA,MAAMqJ,WAAWvF,CAAE,CAIjB,IAAI,SAAU,CACZ,MAAO,CACL,MAAO,KAAK,WAIb,CACL,CAIE,IAAI,aAAc,CAChB,MAAO,CAIL,QAAS,KAAK,OAAO,GAAG,MAAM,QAI9B,SAAU,KAAK,OAAO,GAAG,MAAM,QAChC,CACL,CACA,CACA,SAASwF,GAAGxJ,EAAG,EAAG,CAChB,MAAM,EAAI,CAAE,EACZ,OAAO,OAAO,QAAQA,CAAC,EAAE,QAAQ,CAAC,CAACE,EAAG,CAAC,IAAM,CAC3C,GAAIe,EAAE,CAAC,EAAG,CACR,MAAMZ,EAAI,EAAI,GAAG,CAAC,IAAIH,CAAC,GAAKA,EAC5B,OAAO,OAAO,CAAC,EAAE,MAAOkE,GAAMlD,GAAGkD,CAAC,CAAC,EAAI,EAAElE,CAAC,EAAIG,EAAI,EAAEH,CAAC,EAAIsJ,GAAG,EAAGnJ,CAAC,EAChE,MACN,CACI,EAAEH,CAAC,EAAI,CACR,CAAA,EAAG,CACN,CACA,MAAMuJ,EAAID,GAAGjG,EAAE,EACf,SAASmG,GAAG1J,EAAG,EAAG,CAChB,MAAM,EAAI,CAAE,EACZ,OAAO,OAAO,KAAKA,CAAC,EAAE,QAASE,GAAM,CACnC,MAAM,EAAI,EAAEA,CAAC,EACb,IAAM,OAAS,EAAE,CAAC,EAAIF,EAAEE,CAAC,EAAI,EAAEA,CAAC,EAAIF,EAAEE,CAAC,CACxC,CAAA,EAAG,CACN,CACA,MAAMyJ,GAAK,MAAMC,EAAG,CAKlB,YAAY,EAAG,EAAG,CAChB,KAAK,OAAS,GAAI,KAAK,MAAQ,CAAE,EAAE,KAAK,MAAQ,GAAK,CAAA,EAAI,KAAK,gBAAkB,CACpF,CAME,IAAI,aAAc,CAChB,OAAO,KAAK,SAAW,GAAK,KAAO,KAAK,MAAM,KAAK,MAAM,CAC7D,CAME,UAAU,EAAG,CACX,EAAI,KAAK,MAAM,QAAU,GAAK,KAAO,KAAK,WAAY,EAAE,KAAK,OAAS,EAAG,KAAK,MAAM,KAAK,MAAM,EAAE,UAAU,IAAI,KAAK,eAAe,EACvI,CAME,SAAS,EAAG,CACV,KAAK,MAAQ,CACjB,CAIE,MAAO,CACL,KAAK,OAAS,KAAK,wBAAwBA,GAAG,WAAW,KAAK,CAClE,CAIE,UAAW,CACT,KAAK,OAAS,KAAK,wBAAwBA,GAAG,WAAW,IAAI,CACjE,CAIE,YAAa,CACX,KAAK,SAAW,KAAO,KAAK,MAAM,KAAK,MAAM,EAAE,UAAU,OAAO,KAAK,eAAe,EAAG,KAAK,OAAS,GACzG,CAOE,wBAAwB,EAAG,CACzB,GAAI,KAAK,MAAM,SAAW,EACxB,OAAO,KAAK,OACd,IAAI,EAAI,KAAK,OACb,OAAO,IAAM,GAAK,EAAI,IAAMA,GAAG,WAAW,MAAQ,GAAK,EAAI,KAAK,MAAM,CAAC,EAAE,UAAU,OAAO,KAAK,eAAe,EAAG,IAAMA,GAAG,WAAW,MAAQ,GAAK,EAAI,GAAK,KAAK,MAAM,OAAS,GAAK,KAAK,MAAM,OAAS,EAAI,GAAK,KAAK,MAAM,OAAQ7G,EAAE,YAAY,KAAK,MAAM,CAAC,CAAC,GAAKrB,GAAG,IAAMyC,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC,EAAG,EAAE,EAAG,EAAE,KAAK,MAAM,CAAC,EAAE,UAAU,IAAI,KAAK,eAAe,EAAG,CACvW,CACA,EACAwF,GAAG,WAAa,CACd,MAAO,QACP,KAAM,MACR,EACA,IAAIE,GAAKF,GACTG,GAAA,MAAMC,EAAG,CAIP,YAAY,EAAG,CACb,KAAK,SAAW,KAAM,KAAK,UAAY,GAAI,KAAK,cAAgB,CAAA,EAAI,KAAK,UAAa,GAAM,CAC1F,GAAI,KAAK,wBAAwB,CAAC,EAChC,OAAQA,GAAG,SAAS,SAAS,EAAE,OAAO,GAAK,EAAE,iBAAkB,EAAE,QAAO,CACtE,KAAKtJ,EAAE,IACL,KAAK,eAAe,CAAC,EACrB,MACF,KAAKA,EAAE,KACP,KAAKA,EAAE,GACL,KAAK,SAAU,EACf,MACF,KAAKA,EAAE,MACP,KAAKA,EAAE,KACL,KAAK,UAAW,EAChB,MACF,KAAKA,EAAE,MACL,KAAK,iBAAiB,CAAC,EACvB,KACZ,CACA,EAAO,KAAK,SAAW,IAAIoJ,GAAG,EAAE,MAAO,EAAE,gBAAgB,EAAG,KAAK,iBAAmB,EAAE,iBAAkB,KAAK,YAAc,EAAE,aAAeE,GAAG,QAC/I,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,SAChB,CAOE,WAAW,UAAW,CACpB,MAAO,CACLtJ,EAAE,IACFA,EAAE,KACFA,EAAE,MACFA,EAAE,MACFA,EAAE,GACFA,EAAE,IACH,CACL,CAOE,SAAS,EAAG,EAAG,CACb,KAAK,UAAY,GAAI,GAAK,KAAK,SAAS,SAAS,CAAC,EAAG,IAAM,QAAU,KAAK,SAAS,UAAU,CAAC,EAAG,SAAS,iBAAiB,UAAW,KAAK,UAAW,EAAE,CAC5J,CAIE,YAAa,CACX,KAAK,UAAY,GAAI,KAAK,WAAU,EAAI,SAAS,oBAAoB,UAAW,KAAK,SAAS,CAClG,CAIE,YAAa,CACX,KAAK,WAAU,EAAI,KAAK,UAAW,CACvC,CAIE,UAAW,CACT,KAAK,SAAS,WAAY,KAAK,aAAc,CACjD,CAIE,WAAY,CACV,KAAK,SAAS,OAAQ,KAAK,aAAc,CAC7C,CAIE,UAAW,CACT,MAAO,CAAC,CAAC,KAAK,SAAS,WAC3B,CAME,OAAO,EAAG,CACR,KAAK,cAAc,KAAK,CAAC,CAC7B,CAME,aAAa,EAAG,CACd,KAAK,cAAgB,KAAK,cAAc,OAAQ,GAAM,IAAM,CAAC,CACjE,CAME,YAAa,CACX,KAAK,SAAS,WAAY,CAC9B,CAQE,wBAAwB,EAAG,CACzB,OAAO,KAAK,WAAa,KAAK,YAAY,SAAS,EAAE,OAAO,CAChE,CAME,eAAe,EAAG,CAChB,OAAQ,EAAE,SAAWoJ,GAAG,WAAW,KAAOA,GAAG,WAAW,MAAK,CAC3D,KAAKA,GAAG,WAAW,MACjB,KAAK,UAAW,EAChB,MACF,KAAKA,GAAG,WAAW,KACjB,KAAK,SAAU,EACf,KACR,CACA,CAME,iBAAiB,EAAG,CAClB,KAAK,YAAc,KAAK,SAAS,cAAgB,EAAE,kBAAmB,EAAE,eAAc,EAAI,KAAK,SAAS,YAAY,MAAO,GAAG7I,EAAE,KAAK,gBAAgB,GAAK,KAAK,iBAAiB,KAAK,SAAS,WAAW,EAC7M,CAIE,cAAe,CACb,KAAK,SAAS,aAAe,KAAK,SAAS,YAAY,yBAA0B,KAAK,cAAc,QAAS,GAAM,EAAC,CAAE,CAC1H,CACA,EACA,MAAMgJ,GAAK,kWAAmWC,GAAK,6PAA8PC,GAAK,qQAAsQC,GAAK,2QAA4QC,GAAK,6PAA8PC,GAAK,8NAA+NC,GAAK,8KAA+KC,GAAK,8SAA+SC,GAAK,spBAAupBC,GAAK,qpBAAspBC,GAAK,oNAAqNC,GAAK,kUAAmUC,GAAK,mSAAoSC,GAAK,wiCAAyiCC,GAAK,6XAA8XC,GAAK,KAAMC,GAAK,KAC/pL,SAASC,GAAGjL,EAAG,CACb,MAAO,CAAC,EAAG,IAAM,CAAC,CAACA,EAAG,CAAC,EAAE,OAAQI,GAAM,CAAC,CAACA,CAAC,EAAE,KAAK2K,EAAE,EAAG,CAAC,EAAE,OAAQ3K,GAAM,CAAC,CAACA,CAAC,EAAE,KAAK4K,EAAE,CACrF,CACA,MAAME,GAAKD,GAAG,SAAS,EAAGE,GAAK,CAC7B,KAAMD,GAAI,EACV,aAAcA,GAAG,KAAM,YAAY,EACnC,cAAeA,GAAG,KAAM,cAAc,EACtC,MAAOA,GAAG,OAAO,EACjB,YAAaA,GAAG,aAAa,CAC/B,EACA,MAAME,EAAG,CAMP,YAAY,EAAG,CACb,KAAK,MAAQ,CACX,KAAMrI,EAAE,KAAK,MAAO,CAACoI,GAAG,KAAM,EAAE,YAAc,SAAWA,GAAG,cAAgBA,GAAG,YAAY,CAAC,EAC5F,MAAOpI,EAAE,KAAK,MAAOoI,GAAG,MAAO,CAAE,YAAa,EAAE,KAAO,CAAA,CAC7D,EAAO,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,KAAK,EAAG,EAAE,cAAgB,SAAW,KAAK,MAAM,YAAcpI,EAAE,KAAK,MAAOoI,GAAG,YAAa,CAAE,YAAa,EAAE,WAAa,CAAA,EAAG,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,WAAW,EAC7N,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,IACtB,CACA,CACA,IAAAE,GAAA,KAAS,CAMP,YAAY,EAAG,CACb,KAAK,OAAS,CAClB,CAIE,IAAI,MAAO,CACT,GAAI,KAAK,SAAW,QAAU,SAAU,KAAK,OAC3C,OAAO,KAAK,OAAO,IACzB,CAIE,SAAU,CACRlC,GAAI,CACR,CAIE,gBAAiB,CACf,IAAI,EACJ,KAAK,SAAW,QAAU,aAAc,KAAK,QAAU,QAAS,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,SAAW,YAAc,KAAK,OAAO,SAAS,OAAQ,CACzK,CAIE,iBAAkB,CAChB,IAAI,EACJ,KAAK,SAAW,QAAU,aAAc,KAAK,QAAU,QAAS,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,UAAY,YAAc,KAAK,OAAO,SAAS,QAAS,CAC3K,CAIE,aAAc,CACZ,IAAI,EAAG,EACP,KAAK,SAAW,QAAU,eAAgB,KAAK,UAAY,GAAK,EAAI,KAAK,QAAQ,aAAe,MAAQ,EAAE,KAAK,EAAG,KAAK,MAAM,EACjI,CAOE,QAAQ,EAAG,EAAG,CACZ,MAAMjJ,EAAI,IAAIkL,GAAG,CAAC,EAClBhC,GAAG,EAAGlJ,EAAE,aAAc,CACpB,UAAW,EAAE,SACb,YAAa,GACnB,CAAK,CACL,CAIE,IAAI,UAAW,CACb,IAAI,EACJ,OAAO,KAAK,SAAW,QAAU,aAAc,KAAK,UAAY,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,SAAW,OAAS,KAAK,OAAO,SAAS,MAAQ,CAAE,CACtK,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,SAAS,OAAS,CAClC,CAIE,IAAI,gBAAiB,CACnB,IAAI,EACJ,OAAO,KAAK,SAAW,QAAU,aAAc,KAAK,UAAY,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,UAAY,EAC/H,CAIE,IAAI,qBAAsB,CACxB,IAAI,EACJ,MAAO,EAAE,KAAK,SAAW,QAAU,EAAE,aAAc,KAAK,WAAa,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,eAAiB,GACzI,CAIE,IAAI,sBAAuB,CACzB,IAAI,EACJ,OAAO,KAAK,SAAW,QAAU,aAAc,KAAK,UAAY,EAAI,KAAK,OAAO,WAAa,KAAO,OAAS,EAAE,cAAgB,EACnI,CAIE,IAAI,iBAAkB,CACpB,OAAO,KAAK,SAAW,QAAU,oBAAqB,KAAK,QAAU,KAAK,OAAO,eACrF,CAIE,IAAI,UAAW,CACb,OAAO,KAAK,SAAW,QAAU,EAAE,aAAc,KAAK,QAAU,GAAK,OAAO,KAAK,OAAO,UAAY,WAAa,KAAK,OAAO,SAAQ,EAAK,KAAK,OAAO,WAAa,EACvK,CACA,EACA,MAAMoL,EAAIL,GAAG,iBAAiB,EAAGM,EAAI,CACnC,UAAWD,EAAG,EACd,OAAQA,EAAE,KAAM,QAAQ,EACxB,SAAUA,EAAE,KAAM,UAAU,EAC5B,QAASA,EAAE,KAAM,SAAS,EAC1B,OAAQA,EAAE,KAAM,QAAQ,EACxB,kBAAmBA,EAAE,KAAM,cAAc,EACzC,QAASA,EAAE,KAAM,UAAU,EAC3B,QAASA,EAAE,KAAM,UAAU,EAC3B,MAAOA,EAAE,OAAO,EAChB,eAAgBA,EAAE,iBAAiB,EACnC,KAAMA,EAAE,MAAM,EACd,SAAUA,EAAE,OAAQ,MAAM,EAC1B,iBAAkBA,EAAE,OAAQ,eAAe,EAC3C,gBAAiBL,GAAG,QAAQ,EAAC,CAC/B,SACA,cAAiBO,EAAG,CAQlB,YAAY,EAAG,EAAG,CAChB,MAAM,CAAC,EAAG,KAAK,OAAS,EAAG,KAAK,MAAQ,CACtC,KAAM,KACN,KAAM,IACP,EAAE,KAAK,kBAAoB,KAAM,KAAK,2BAA6B,IAAM,CACxE,IAAItL,GACHA,EAAI,KAAK,MAAM,OAAS,MAAQA,EAAE,UAAU,OAAOqL,EAAE,OAAO,CACnE,EAAO,KAAK,2BAA6B,IAAM,CACzC,IAAIrL,GACHA,EAAI,KAAK,MAAM,OAAS,MAAQA,EAAE,UAAU,OAAOqL,EAAE,OAAO,CACnE,EAAO,KAAK,oBAAsB,IAAM,CAClC,IAAIrL,EAAG,GACNA,EAAI,KAAK,MAAM,OAAS,MAAQA,EAAE,UAAU,OAAOqL,EAAE,eAAe,GAAI,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,oBAAoB,eAAgB,KAAK,mBAAmB,CAC7K,EAAO,KAAK,MAAM,KAAO,KAAK,KAAK,EAAG,CAAC,CACvC,CAIE,IAAI,YAAa,CACf,OAAO,KAAK,OAAO,aAAe,EACtC,CAIE,IAAI,QAAS,CACX,OAAO,KAAK,OAAO,MACvB,CAIE,IAAI,OAAQ,CACV,OAAO,KAAK,OAAO,KACvB,CAIE,IAAI,4BAA6B,CAC/B,OAAO,KAAK,oBAAsB,IACtC,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,MAAM,OAAS,KAAO,GAAK,KAAK,MAAM,KAAK,UAAU,SAASA,EAAE,OAAO,CACvF,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,IACtB,CAIE,aAAc,CACZ,GAAI,KAAK,4BAA8B,KAAK,oBAAsB,KAAM,CACtE,KAAK,iCAAiC,KAAK,iBAAiB,EAC5D,MACN,CACI,KAAK,iCAAiC,KAAK,MAAM,CACrD,CAME,aAAa,EAAG,CACd,IAAI,GACH,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,OAAOA,EAAE,OAAQ,CAAC,CACnE,CAME,aAAa,EAAG,CACd,IAAI,GACH,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,OAAOA,EAAE,OAAQ,CAAC,CACnE,CAIE,OAAQ,CACN,KAAK,4BAA8B,KAAK,wBAAyB,CACrE,CAIE,SAAU,CACR,KAAK,oCAAqC,CAC9C,CAOE,KAAK,EAAG,EAAG,CACT,IAAIlL,EAAGC,EACP,MAAMJ,GAAK,GAAK,KAAO,OAAS,EAAE,aAAe,MAAOE,EAAI2C,EAAE,KAAK7C,EAAGqL,EAAE,UAAW,CACjF,KAAMrL,IAAM,SAAW,SAAW,MACxC,CAAK,EACD,OAAO,EAAE,OAASE,EAAE,QAAQ,SAAW,EAAE,MAAO,KAAK,MAAM,KAAO2C,EAAE,KAAK,MAAO,CAACwI,EAAE,KAAMA,EAAE,QAAQ,EAAG,CACpG,UAAW,EAAE,MAAQjB,EAC3B,CAAK,EAAGlK,EAAE,YAAY,KAAK,MAAM,IAAI,EAAG,EAAE,QAAU,QAAUA,EAAE,YAAY2C,EAAE,KAAK,MAAOwI,EAAE,MAAO,CAC7F,UAAW,EAAE,OAAS,EACvB,CAAA,CAAC,EAAG,EAAE,gBAAkBnL,EAAE,YAAY2C,EAAE,KAAK,MAAOwI,EAAE,eAAgB,CACrE,YAAa,EAAE,cAChB,CAAA,CAAC,EAAG,KAAK,aAAenL,EAAE,YAAY2C,EAAE,KAAK,MAAO,CAACwI,EAAE,KAAMA,EAAE,gBAAgB,EAAG,CACjF,UAAWpB,EACjB,CAAK,CAAC,EAAG,KAAK,UAAY/J,EAAE,UAAU,IAAImL,EAAE,MAAM,EAAG,EAAE,YAAcnL,EAAE,UAAU,IAAImL,EAAE,QAAQ,EAAG,EAAE,OAAS,UAAYlL,EAAI,GAAK,KAAO,OAAS,EAAE,OAAS,KAAO,OAASA,EAAE,WAAa,IAAM,KAAK,QAAQD,EAAG,CAC5M,GAAG,EAAE,KACL,WAAYE,EAAI,GAAK,KAAO,OAAS,EAAE,OAAS,KAAO,OAASA,EAAE,WAAa,OAChF,CAAA,EAAGF,CACR,CAME,uBAAuB,EAAG,CACxB,GAAI,KAAK,MAAM,OAAS,KACtB,OACF,MAAM,EAAI,CACR,GAAG,KAAK,OACR,GAAG,EACH,aAAc,iBAAkB,EAAI,EAAE,aAAe,MACtD,EAAEF,EAAI,KAAK,KAAK,CAAC,EAClB,KAAK,MAAM,KAAK,UAAYA,EAAE,UAAW,KAAK,MAAM,KAAK,UAAU,IAAIqL,EAAE,iBAAiB,EAAG,KAAK,kBAAoB,EAAG,KAAK,mCAAoC,CACtK,CAIE,yBAA0B,CACxB,GAAI,KAAK,MAAM,OAAS,KACtB,OACF,MAAM,EAAI,KAAK,KAAK,KAAK,MAAM,EAC/B,KAAK,MAAM,KAAK,UAAY,EAAE,UAAW,KAAK,MAAM,KAAK,UAAU,OAAOA,EAAE,iBAAiB,EAAG,KAAK,kBAAoB,KAAM,KAAK,oCAAqC,CAC7K,CAKE,oCAAqC,CACnC,IAAI,EAAG,EAAGrL,GACT,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,IAAIqL,EAAE,OAAO,GAAI,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,IAAIA,EAAE,OAAO,GAAIrL,EAAI,KAAK,MAAM,OAAS,MAAQA,EAAE,iBAAiB,aAAc,KAAK,2BAA4B,CAAE,KAAM,GAAI,CAC7O,CAIE,qCAAsC,CACpC,IAAI,EACJ,KAAK,2BAA0B,EAAI,KAAK,2BAA4B,GAAG,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,oBAAoB,aAAc,KAAK,0BAA0B,CAC9K,CAME,iCAAiC,EAAG,CAClC,IAAI,EACJ,GAAI,EAAE,iBAAkB,IAAM,EAAE,eAAiB,OAC/C,GAAI,EACD,EAAI,EAAE,aAAe,MAAQ,EAAE,KAAK,EAAG,CAAC,EAAG,KAAK,wBAAyB,CAClF,MAAc,CACN,KAAK,aAAc,CAC3B,MAEM,KAAK,uBAAuB,EAAE,YAAY,CAChD,CAIE,cAAe,CACb,IAAI,EAAG,EAAGA,GACT,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,SAASqL,EAAE,eAAe,KAAO,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,IAAIA,EAAE,eAAe,GAAIrL,EAAI,KAAK,MAAM,OAAS,MAAQA,EAAE,iBAAiB,eAAgB,KAAK,mBAAmB,EAClP,CACA,EACA,MAAMuL,GAAKR,GAAG,2BAA2B,EAAGS,GAAK,CAC/C,UAAWD,GAAI,EACf,KAAMA,GAAG,MAAM,EACf,OAAQA,GAAG,KAAM,QAAQ,CAC3B,EACA,MAAME,WAAWH,EAAG,CAIlB,aAAc,CACZ,MAAO,EAAE,KAAK,MAAQ,CACpB,KAAMzI,EAAE,KAAK,MAAO2I,GAAG,SAAS,EAChC,KAAM3I,EAAE,KAAK,MAAO2I,GAAG,IAAI,CACjC,EAAO,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,IAAI,CAClD,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,IACtB,CAME,aAAa,EAAG,CACd,IAAI,GACH,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,OAAOA,GAAG,OAAQ,CAAC,CACpE,CACA,CACA,IAAIE,IAAsB5L,IAAOA,EAAE,OAAS,SAAUA,EAAE,iBAAmB,qBAAsBA,IAAI4L,IAAK,CAAA,CAAE,EAC5G,MAAMC,EAAIZ,GAAG,YAAY,EAAGa,EAAI,CAC9B,QAASD,EAAG,EACZ,iBAAkBA,EAAE,WAAW,EAC/B,eAAgBA,EAAE,KAAM,UAAU,EAClC,gBAAiBA,EAAE,KAAM,WAAW,EACpC,cAAeA,EAAE,KAAM,QAAQ,EAC/B,OAAQA,EAAE,QAAQ,EAClB,oBAAqBA,EAAE,uBAAuB,EAC9C,6BAA8BA,EAAE,wBAAyB,WAAW,EACpE,MAAOA,EAAE,OAAO,EAChB,QAASA,EAAE,SAAS,EACpB,cAAeA,EAAE,UAAW,QAAQ,EACpC,cAAeA,EAAE,KAAM,QAAQ,EAC/B,sBAAwB7L,GAAM6L,EAAE,KAAM,gBAAgB7L,EAAE,SAAU,CAAA,EAAE,EACpE,cAAe6L,EAAE,KAAM,QAAQ,EAC/B,cAAeA,EAAE,QAAQ,CAC3B,EACA,IAAIE,IAAuB/L,IAAOA,EAAE,aAAe,kBAAmBA,EAAE,cAAgB,mBAAoBA,EAAE,mBAAqB,yBAA0BA,EAAE,gBAAkB,sBAAuBA,EAAE,eAAiB,qBAAsBA,IAAI+L,IAAM,EAAE,EAC7P,MAAMC,GAAKf,GAAG,sBAAsB,EAAGgB,GAAK,CAC1C,KAAMD,GAAI,EACV,OAAQA,GAAG,KAAM,QAAQ,CAC3B,SACA,cAAiBR,EAAG,CAQlB,YAAY,EAAG,EAAG,CAChB,IAAItL,EAAG,EACP,MAAM,CAAC,EAAG,KAAK,MAAQ,CACrB,KAAM6C,EAAE,KAAK,MAAOkJ,GAAG,IAAI,CACjC,EAAO,KAAK,MAAM,KAAK,YAAY,EAAE,OAAO,EAAG,EAAE,OAAS,KAAK,MAAM,KAAK,QAAQ,SAAW,EAAE,MAAO,EAAE,OAAS,UAAY/L,EAAI,GAAK,KAAO,OAAS,EAAE,OAAS,KAAO,OAASA,EAAE,WAAa,IAAM,KAAK,QAAQ,KAAK,MAAM,KAAM,CAC9N,GAAG,EAAE,KACL,WAAY,EAAI,GAAK,KAAO,OAAS,EAAE,OAAS,KAAO,OAAS,EAAE,WAAa,OACrF,CAAK,CACL,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,IACtB,CAME,aAAa,EAAG,CACd,IAAI,GACH,EAAI,KAAK,MAAM,OAAS,MAAQ,EAAE,UAAU,OAAO+L,GAAG,OAAQ,CAAC,CACpE,CAIE,aAAc,CACZ,MAAM,EAAI,KAAK,MAAM,KAAK,iBACxB,WAAWlJ,EAAE,iBAAiB,EAC/B,EACD,OAAO,MAAM,KAAK,CAAC,CACvB,CACA,EACA,MAAMmJ,WAAW7G,EAAG,CAQlB,YAAY,EAAG,EAAI,GAAI,CACrB,MAAO,EAAE,KAAK,OAAS,EAAG,KAAK,kBAAoB,EAAG,KAAK,UAAY,IAAIpB,GAAM,KAAK,SAAW,CAC/F,aAAc,gBACd,OAAQ,QACT,EAAE,KAAK,MAAQ,KAAK,WAAW,EAAE,KAAK,EAAG,EAAE,WAAa,KAAK,SAAW,CACvE,GAAG,KAAK,SACR,GAAG,EAAE,QACN,GAAG,KAAK,MAAQ,CAAA,EAAI,KAAK,MAAM,iBAAmBlB,EAAE,KAAK,MAAO,CAAC+I,EAAE,gBAAgB,CAAC,EAAG,KAAK,MAAM,oBAAsB/I,EAAE,KAAK,MAAO,CAAC+I,EAAE,mBAAmB,EAAG,CAC9J,YAAa,KAAK,SAAS,YAC5B,CAAA,EAAG,KAAK,MAAM,iBAAiB,YAAY,KAAK,MAAM,mBAAmB,EAAG,KAAK,MAAM,MAAQ/I,EAAE,KAAK,MAAO,CAAC+I,EAAE,KAAK,CAAC,EAAG,KAAK,MAAM,QAAS5L,GAAM,CAClJ,MAAM,EAAIA,EAAE,WAAY,EACxB,IAAM,MAAQ,KAAK,MAAM,MAAM,YAAY,CAAC,CAC7C,CAAA,EAAG,KAAK,MAAM,iBAAiB,YAAY,KAAK,MAAM,KAAK,EAAG,KAAK,UAAU,GAAG,KAAK,MAAM,iBAAkB,QAAUA,GAAM,KAAK,YAAYA,CAAC,CAAC,EAAG,KAAK,MAAM,QAAU6C,EAAE,KAAK,MAAO,CACrL+I,EAAE,QACF,KAAK,OAAO,KAClB,CAAK,EAAG,KAAK,MAAM,QAAQ,YAAY,KAAK,MAAM,gBAAgB,CAClE,CAIE,IAAI,cAAe,CACjB,OAAO,KAAK,MAAM,OAAQ,GAAM,aAAaK,EAAE,CACnD,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,OACtB,CAIE,MAAO,CACL,KAAK,MAAM,QAAQ,UAAU,IAAIL,EAAE,aAAa,EAAG,KAAK,SAAW,QAAU,KAAK,OAAO,MAAO,CACpG,CAIE,MAAO,CACL,KAAK,MAAM,QAAQ,UAAU,OAAOA,EAAE,aAAa,EAAG,KAAK,MAAM,QAAQ,UAAU,OAAOA,EAAE,cAAc,EAAG,KAAK,aAAa,QAAS,GAAM,EAAE,MAAO,CAAA,EAAG,KAAK,SAAW,QAAU,KAAK,OAAO,MAAO,EAAE,KAAK,KAAKF,GAAE,MAAM,CAC/N,CAIE,SAAU,CACR,IAAI,EACJ,KAAK,MAAM,QAAS,GAAM,EAAE,SAAS,EAAG,KAAK,MAAM,QAAQ,OAAQ,EAAE,KAAK,UAAU,UAAS,GAAK,EAAI,KAAK,SAAW,MAAQ,EAAE,QAAS,CAC7I,CAME,mBAAmB,EAAG,CACpB,MAAM,EAAI,KAAK,MAAM,KAAM1L,GAAMA,EAAE,OAAS,CAAC,EAC7C,KAAK,gBAAgB,CAAC,CAC1B,CAME,WAAW,EAAG,CACZ,OAAO,EAAE,IAAK,GAAM,CAClB,OAAQ,EAAE,KAAI,CACZ,KAAK,EAAE,UACL,OAAO,IAAIyL,GACb,KAAK,EAAE,KACL,OAAO,IAAIS,GAAG,EAAG,KAAK,kBAAkB,EAAE,IAAI,CAAC,EACjD,QACE,OAAO,IAAID,GAAG,EAAG,KAAK,kBAAkB,EAAE,OAAO,CAAC,CAC5D,CACA,CAAK,CACL,CAME,cAAc,EAAG,CACf,OAAO,KAAK,MAAM,OAAQ,GAAM,aAAaA,IAAM,aAAaC,EAAE,EAAE,KAAM,GAAM,CAC9E,MAAMlM,EAAI,EAAE,WAAY,EACxB,OAAOA,IAAM,KAAO,GAAK,EAAE,aAAc,EAAC,SAASA,CAAC,CAC1D,CAAK,CACL,CAME,gBAAgB,EAAG,CACjB,GAAI,EAAE,eAAgB,GAAK,EAAE,YAAa,CACxC,GAAI,EAAE,YAAa,CACjB,KAAK,gBAAgB,CAAC,EAAG,gBAAiB,GAAK,OAAO,EAAE,aAAe,YAAc,EAAE,YAAa,EACpG,MACR,CACM,KAAK,aAAa,OAAQ,GAAM,IAAM,CAAC,EAAE,QAAS,GAAM,EAAE,MAAK,CAAE,EAAG,gBAAiB,GAAK,OAAO,EAAE,aAAe,YAAc,EAAE,YAAW,EAAI,KAAK,6BAA6B,CAAC,EAAG,EAAE,kBAAoB,KAAK,OAAQ,KAAK,KAAK0L,GAAE,gBAAgB,EAC5P,CACA,CAME,YAAY,EAAG,CACb,MAAM,EAAI,KAAK,cAAc,CAAC,EAC9B,IAAM,QAAU,KAAK,gBAAgB,CAAC,CAC1C,CASE,6BAA6B,EAAG,CAC9B,GAAI,aAAaO,KAAO,EAAE,SAAW,IAAM,EAAE,aAAc,EAAE,OAAO,EAAE,QAAU,UAAW,CACzF,MAAM,EAAI,KAAK,aAAa,OAAQjM,GAAMA,EAAE,SAAW,EAAE,MAAM,EAC/D,GAAI,EAAE,SAAW,EAAG,CAClB,EAAE,aAAc,EAChB,MACR,CACM,EAAE,QAASA,GAAM,CACfA,EAAE,aAAaA,IAAM,CAAC,CAC9B,CAAO,CACP,CACA,CACA,CACA,IAAImM,IAAuBrM,IAAOA,EAAE,OAAS,SAAUA,IAAIqM,IAAM,EAAE,EACnE,MAAMC,GAAKrB,GAAG,kBAAkB,EAAGsB,GAAK,CACtC,QAASD,GAAI,EACb,KAAMA,GAAG,MAAM,EACf,MAAOA,GAAG,OAAO,CACnB,EACA,MAAME,WAAWnH,EAAG,CAMlB,YAAY,CAAE,MAAO,EAAG,YAAa,CAAC,EAAI,CACxC,MAAK,EAAI,KAAK,UAAY,IAAIpB,GAAM,KAAK,MAAQ,EAAG,KAAK,QAAUlB,EAAE,KAAK,MAAOwJ,GAAG,OAAO,EAC3F,MAAMrM,EAAI6C,EAAE,KAAK,MAAOwJ,GAAG,KAAM,CAC/B,UAAW3B,EACjB,CAAK,EACD,KAAK,MAAQ7H,EAAE,KAAK,QAASwJ,GAAG,MAAO,CACrC,YAAa,EAMb,SAAU,EAChB,CAAK,EAAG,KAAK,QAAQ,YAAYrM,CAAC,EAAG,KAAK,QAAQ,YAAY,KAAK,KAAK,EAAG,KAAK,UAAU,GAAG,KAAK,MAAO,QAAS,IAAM,CAClH,KAAK,YAAc,KAAK,MAAM,MAAO,KAAK,KAAKmM,GAAG,OAAQ,CACxD,MAAO,KAAK,YACZ,MAAO,KAAK,UACpB,CAAO,CACP,CAAK,CACL,CAIE,YAAa,CACX,OAAO,KAAK,OAChB,CAIE,OAAQ,CACN,KAAK,MAAM,MAAO,CACtB,CAIE,OAAQ,CACN,KAAK,MAAM,MAAQ,GAAI,KAAK,YAAc,GAAI,KAAK,KAAKA,GAAG,OAAQ,CACjE,MAAO,GACP,MAAO,KAAK,UAClB,CAAK,CACL,CAIE,SAAU,CACR,KAAK,UAAU,UAAW,CAC9B,CAIE,IAAI,YAAa,CACf,OAAO,KAAK,MAAM,OAAQ,GAAM,KAAK,UAAU,CAAC,CAAC,CACrD,CAME,UAAU,EAAG,CACX,IAAIjM,EAAGC,EACP,MAAMR,IAAMO,EAAI,EAAE,QAAU,KAAO,OAASA,EAAE,YAAW,IAAO,GAAIF,GAAKG,EAAI,KAAK,cAAgB,KAAO,OAASA,EAAE,YAAa,EACjI,OAAOH,IAAM,OAASL,EAAE,SAASK,CAAC,EAAI,EAC1C,CACA,CACA,IAAIuM,GAAK,OAAO,eAAgBC,GAAK,OAAO,yBAA0BC,GAAK,CAAC3M,EAAG,EAAG,EAAGE,IAAM,CACzF,QAAS,EAAyBwM,GAAG,EAAG,CAAC,EAAOrM,EAAIL,EAAE,OAAS,EAAGM,EAAGD,GAAK,EAAGA,KAC1EC,EAAIN,EAAEK,CAAC,KAAO,EAASC,EAAE,EAAG,EAAG,CAAC,GAAa,GAChD,OAAY,GAAKmM,GAAG,EAAG,EAAG,CAAC,EAAG,CAChC,EACA,MAAMG,GAAK,MAAMC,WAAWX,EAAG,CAQ7B,YAAY,EAAG,EAAG,CAChB,MAAM,EAAG,CAAC,EAAG,KAAK,aAAe,EAAG,KAAK,yBAA2B,KAAM,KAAK,sBAAwB,KAAM,KAAK,aAAe,SAAS,KAAM,KAAK,KAAO,IAAM,CAChK,IAAIhM,EACJ,MAAM,KAAI,EAAI,KAAK,6BAA8B,GAAGA,EAAI,KAAK,UAAY,MAAQA,EAAE,WAAY,EAAE,KAAK,sBAAwB,IACpI,EAAO,KAAK,OAAS,IAAM,CACrB,MAAMA,EAAI,KAAK,aAAa,KAAM,GAAM,EAAE,SAAS,EACnDA,GAAK,MAAQA,EAAE,QAAS,CAC9B,EAAO,KAAK,SAAYA,GAAM,CACxB,IAAIkE,EACJ,MAAMhE,EAAIF,EAAE,QAAU,GAAI,EAAIA,EAAE,MAAM,SAAW,EACjD,KAAK,MAAM,QAAS,GAAM,CACxB,IAAI,EAAI,GACR,aAAaiM,GAAK,EAAI,CAACjM,EAAE,MAAM,SAAS,CAAC,GAAK,aAAayL,IAAM,aAAaS,MAAQ,EAAI,GAAK,CAAChM,GAAI,EAAE,aAAa,CAAC,CAC5H,CAAO,EAAG,KAAK,0BAA0B,CAAC,EACpC,MAAME,EAAIJ,EAAE,QAAU,GAAK,KAAK,kBAAoBA,EAAE,MAAM,IAAK,GAAM,EAAE,WAAU,CAAE,GACpFkE,EAAI,KAAK,UAAY,MAAQA,EAAE,cAAgB,KAAK,QAAQ,WAAY,EAAE,KAAK,QAAQ,SAAS9D,CAAC,EACnG,EAAE,EAAE,eAAiB,SAAW,KAAK,aAAe,EAAE,cAAe,KAAK,aAAe,GAAK,KAAK,MAAM,QAAQ,UAAU,IAAIwL,EAAE,aAAa,EAAG,EAAE,eAAiB,SAAW,KAAK,aAAe,EAAE,cAAe,KAAK,MAAM,mBAAqB,MAAQ,KAAK,UAAU,GAAG,KAAK,MAAM,iBAAkB,YAAc5L,GAAM,KAAK,YAAYA,CAAC,CAAC,EAAG,EAAE,YAAc,KAAK,UAAW,EAAE,EAAE,YAAc,KAAO,KAAK,QAAU,IAAI6J,GAAG,CACna,MAAO,KAAK,kBACZ,iBAAkBwB,EAAE,QACpB,YAAa,CACX9K,EAAE,IACFA,EAAE,GACFA,EAAE,KACFA,EAAE,KACV,CACA,CAAK,EAAG,KAAK,QAAQ,OAAO,KAAK,MAAM,EACvC,CAIE,UAAW,CACT,OAAO,KAAK,UAAY,OAAS,GAAK,KAAK,QAAQ,SAAU,CACjE,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,MAAM,QAAU,KAAO,EAAI,KAAK,MAAM,MAAM,SAC5D,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,MAAM,mBAAqB,KAAO,EAAI,KAAK,MAAM,iBAAiB,SAClF,CAIE,MAAO,CACL,IAAI,EACJ,KAAK,MAAM,QAAQ,MAAM,YAAYsL,GAAG,cAAe,KAAK,KAAK,OAAS,IAAI,EAAG,KAAK,kBAAoB,KAAK,MAAM,QAAQ,UAAU,IAAID,EAAE,cAAc,EAAG,KAAK,iBAAmB,KAAK,MAAM,QAAQ,UAAU,IAAIA,EAAE,eAAe,EAAG,MAAM,QAAS,EAAI,KAAK,UAAY,MAAQ,EAAE,SAAS,KAAK,iBAAiB,CAC5T,CAIE,SAAU,CACR,KAAK,KAAI,EAAI,MAAM,QAAS,CAChC,CAME,gBAAgB,EAAG,CACjB,KAAK,gBAAkB,MAAQ,KAAK,gBAAkB,SAAW,KAAK,yBAA2B,EAAG,KAAK,yBAAyB,CAAC,EACvI,CAME,YAAY,EAAG,CACb,MAAM,EAAI,KAAK,cAAc,CAAC,EAC9B,IAAM,QAAU,KAAK,wBAA0B,IAAM,KAAK,6BAA8B,EAAE,KAAK,sBAAwB,EAAG,EAAE,aAAe,KAAK,yBAAyB,CAAC,EAC9K,CAQE,uBAAuB,EAAG,EAAG,CAC3B,MAAM5L,EAAI,EAAE,WAAY,EAAE,GAAKA,EAAIA,EAAE,UAAY,GAAK,KAAK,UAAWG,EAAI,KAAK,UAAY,EAC3F,EAAE,MAAM,YAAY0L,GAAG,eAAgB1L,EAAI,IAAI,CACnD,CAIE,8BAA+B,CAC7B,IAAI,EAAG,EACP,KAAK,gBAAkB,QAAU,KAAK,gBAAkB,OAAS,KAAK,cAAc,IAAIuL,GAAE,iBAAkB,KAAK,IAAI,EAAG,KAAK,cAAc,OAAQ,KAAK,cAAc,QAAS,EAAE,KAAK,cAAc,aAAa,SAAU,KAAK,cAAgB,MAAO,EAAI,KAAK,UAAY,MAAQ,EAAE,SAAS,KAAK,iBAAiB,GAAI,EAAI,KAAK,2BAA6B,MAAQ,EAAE,kBAC7W,CAOE,yBAAyB,EAAG,CAC1B,IAAI1L,EACJ,KAAK,cAAgB,IAAI2M,GAAG,CAC1B,WAAY,EAAE,qBACd,MAAO,EAAE,SACT,aAAc,KAAK,aAAe,EAClC,UAAW,EAAE,oBACb,SAAU,KAAK,QAChB,CAAA,EAAG,EAAE,eAAgB,EAAE,KAAK,cAAc,GAAGjB,GAAE,iBAAkB,KAAK,IAAI,EAC3E,MAAM/L,EAAI,KAAK,cAAc,WAAY,EACzC,OAAO,KAAK,MAAM,QAAQ,YAAYA,CAAC,EAAG,KAAK,uBAAuBA,EAAG,CAAC,EAAGA,EAAE,MAAM,YAAYkM,GAAG,aAAc,KAAK,cAAc,aAAa,SAAU,CAAA,EAAG,KAAK,cAAc,QAAS7L,EAAI,KAAK,UAAY,MAAQA,EAAE,WAAU,EAAI,KAAK,aACjP,CAKE,IAAI,kBAAmB,CACrB,GAAI,KAAK,MAAM,UAAY,QAAU,KAAK,MAAM,UAAY,KAC1D,MAAO,GACT,MAAM,EAAI,KAAK,MAAM,iBAAiB,sBAAqB,EAAI,EAAI,KAAK,aAAa,sBAAuB,EAAEA,EAAI,KAAK,KAAK,OAAQ,EAAI,EAAE,IAAMA,EAAGG,EAAI,EAAE,IAAMH,EAAGI,EAAI,KAAK,IAAI,OAAO,YAAa,EAAE,MAAM,EAC3M,OAAOD,EAAI,EAAE,KAAO,GAAKC,CAC7B,CAKE,IAAI,iBAAkB,CACpB,GAAI,KAAK,MAAM,UAAY,QAAU,KAAK,MAAM,UAAY,KAC1D,MAAO,GACT,MAAM,EAAI,KAAK,MAAM,QAAQ,sBAAqB,EAAI,EAAI,KAAK,aAAa,sBAAuB,EAAEJ,EAAI,KAAK,KAAK,MAAO,EAAI,EAAE,MAAQA,EAAGG,EAAI,EAAE,KAAOH,EAAGI,EAAI,KAAK,IAAI,OAAO,WAAY,EAAE,KAAK,EAClM,OAAOD,EAAI,EAAE,MAAQ,GAAKC,CAC9B,CACE,IAAI,MAAO,CACT,IAAIF,EACJ,MAAMR,EAAI,CACR,OAAQ,EACR,MAAO,CACR,EACD,GAAI,KAAK,MAAM,UAAY,KACzB,OAAOA,EACT,MAAMC,EAAI,KAAK,MAAM,QAAQ,UAAU,EAAE,EACzCA,EAAE,MAAM,WAAa,SAAUA,EAAE,MAAM,SAAW,WAAYA,EAAE,MAAM,IAAM,UAAWA,EAAE,UAAU,IAAIiM,EAAE,aAAa,GAAI1L,EAAIP,EAAE,cAAc,IAAMiM,EAAE,aAAa,IAAM,MAAQ1L,EAAE,OAAQ,EAAE,SAAS,KAAK,YAAYP,CAAC,EACxN,MAAMK,EAAIL,EAAE,cAAc,IAAMiM,EAAE,gBAAgB,EAClD,OAAOlM,EAAE,OAASM,EAAE,aAAcN,EAAE,MAAQM,EAAE,YAAaL,EAAE,OAAQ,EAAED,CAC3E,CAIE,IAAI,mBAAoB,CACtB,OAAO,KAAK,MAAM,IAAKC,GAAM,CAC3B,GAAIA,aAAasM,GACf,OAAOtM,EAAE,WAAY,EACvB,GAAIA,aAAauM,GACf,OAAOvM,EAAE,YAAa,CAC9B,CAAK,EAAE,KAAI,EAAG,OAAQA,GAAMA,GAAK,IAAI,CACrC,CAIE,WAAY,CACV,KAAK,OAAS,IAAI2M,GAAG,CACnB,MAAO,KAAK,aACZ,YAAa,KAAK,SAAS,MACjC,CAAK,EAAG,KAAK,OAAO,GAAGH,GAAG,OAAQ,KAAK,QAAQ,EAC3C,MAAM,EAAI,KAAK,OAAO,WAAY,EAClC,EAAE,UAAU,IAAIP,EAAE,MAAM,EAAG,KAAK,MAAM,iBAAiB,aAAa,EAAG,KAAK,MAAM,iBAAiB,UAAU,CACjH,CAME,0BAA0B,EAAG,CAC3B,KAAK,MAAM,oBAAoB,UAAU,OAAOA,EAAE,6BAA8B,CAAC,CACrF,CACA,EACAa,GAAG,CACDlK,EACF,EAAGmK,GAAG,UAAW,MAAS,EAC1B,IAAIE,GAAKF,GACT,MAAMG,WAAWD,EAAG,CAMlB,YAAY,EAAG,CACb,MAAM,EAAI,CAACnK,GAAI,EACf,MACE,CACE,GAAG,EACH,MAAOmJ,EAAE,aACV,EACD,CACE,CAAC,EAAE,OAAO,EAAG,CAMX,WAAY,SACZ,KAAM,CACJ,SAAU,MACV,UAAW,SACX,QAAS,CACrB,CACS,EACD,CAAC,EAAE,IAAI,EAAG,CACR,KAAM,CACJ,SAAU,MACV,UAAW,SACX,QAAS,CACrB,CACA,CACA,CACK,EAAE,KAAK,MAAM,QAAS5L,GAAM,CAC3B,EAAEA,aAAaiM,KAAO,EAAEjM,aAAakM,KAAOlM,EAAE,aAAeA,EAAE,gBAAkB,KAAK,gBAAgBA,CAAC,CAC7G,CAAK,CACL,CAIE,IAAI,YAAa,CACf,OAAO,KAAK,MAAM,mBAAqB,KAAO,EAAI,KAAK,MAAM,iBAAiB,UAClF,CAIE,MAAO,CACL,KAAK,eAAiB,GAAK,KAAK,MAAM,QAAQ,MAAM,YAClD6L,GAAG,mBACH,KAAK,KAAK,MAAQ,IACxB,EAAO,MAAM,KAAM,CACnB,CAKE,aAAc,CAChB,CAQE,uBAAuB,EAAG,EAAG,CAC3B,MAAM7L,EAAI,EAAE,WAAY,EAAE,EAAIA,EAAIA,EAAE,WAAa,EAAGG,EAAI,KAAK,WAAa,EAC1E,EAAE,MAAM,YACN0L,GAAG,gBACH1L,EAAI,IACL,CACL,CAOE,gBAAgB,EAAG,CACjB,GAAI,KAAK,2BAA6B,EAAG,CACvC,KAAK,6BAA4B,EAAI,KAAK,yBAA2B,KACrE,MACN,CACI,MAAM,gBAAgB,CAAC,CAC3B,CAOE,yBAAyB,EAAG,CAC1B,MAAM,EAAI,MAAM,yBAAyB,CAAC,EAC1C,OAAO,EAAE,aAAa,UAAU,IAAIyL,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAG,CAClF,CAOE,gBAAgB,EAAG,CACjB,IAAI,EACJ,IAAM,KAAK,4BAA8B,EAAI,KAAK,2BAA6B,MAAQ,EAAE,YAAW,EAAI,MAAM,6BAA4B,GAAK,MAAM,gBAAgB,CAAC,CAC1K,CACA,CACA,MAAMkB,GAAK,MAAMC,EAAG,CAClB,aAAc,CACZ,KAAK,eAAiB,IAC1B,CAIE,MAAO,CACLrK,GAAK,KAAK,SAAU,EAAG,SAAS,KAAK,UAAU,IAAIqK,GAAG,IAAI,YAAY,CAC1E,CAIE,QAAS,CACPrK,GAAK,KAAK,WAAY,EAAG,SAAS,KAAK,UAAU,OAAOqK,GAAG,IAAI,YAAY,CAC/E,CAIE,UAAW,CACT,KAAK,eAAiB,OAAO,YAAa,SAAS,gBAAgB,MAAM,YACvE,yBACA,GAAG,KAAK,cAAc,IAC5B,EAAO,SAAS,KAAK,UAAU,IAAIA,GAAG,IAAI,gBAAgB,CAC1D,CAIE,YAAa,CACX,SAAS,KAAK,UAAU,OAAOA,GAAG,IAAI,gBAAgB,EAAG,KAAK,iBAAmB,MAAQ,OAAO,SAAS,EAAG,KAAK,cAAc,EAAG,KAAK,eAAiB,IAC5J,CACA,EACAD,GAAG,IAAM,CACP,aAAc,mBACd,iBAAkB,wBACpB,EACA,IAAIE,GAAKF,GACT,MAAMG,GAAKlC,GAAG,mBAAmB,EAAGmC,GAAK,CACvC,KAAMD,GAAI,EACV,KAAMA,GAAG,MAAM,EACf,WAAYA,GAAG,aAAa,CAC9B,EACA,MAAME,EAAG,CAMP,YAAY,CAAE,KAAM,EAAG,kBAAmB,CAAC,EAAI,CAC7C,KAAK,UAAY,IAAIpJ,GAAM,KAAK,KAAO,EAAG,KAAK,kBAAoB,EAAG,KAAK,MAAQ,CACjF,KAAMlB,EAAE,KAAK,MAAO,CAACqK,GAAG,IAAI,CAAC,EAC7B,WAAYrK,EAAE,KAAK,SAAU,CAACqK,GAAG,UAAU,CAAC,EAC5C,KAAMrK,EAAE,KAAK,MAAO,CAACqK,GAAG,IAAI,CAAC,CACnC,EAAO,KAAK,MAAM,WAAW,UAAYlD,GAAI,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,UAAU,EAAG,KAAK,UAAU,GAAG,KAAK,MAAM,WAAY,QAAS,KAAK,iBAAiB,EAAG,KAAK,MAAM,KAAK,UAAY,KAAK,KAAM,KAAK,MAAM,KAAK,YAAY,KAAK,MAAM,IAAI,CAC9P,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,IACtB,CAIE,SAAU,CACR,KAAK,MAAM,KAAK,OAAQ,EAAE,KAAK,UAAU,QAAS,CACtD,CACA,CACA,MAAMoD,EAAG,CACP,aAAc,CACZ,KAAK,QAAU,CAAE,CACrB,CAME,KAAK,EAAG,CACN,KAAK,QAAQ,KAAK,CAAC,CACvB,CAIE,KAAM,CACJ,OAAO,KAAK,QAAQ,IAAK,CAC7B,CAIE,IAAI,cAAe,CACjB,OAAO,KAAK,QAAQ,SAAW,EAAI,GAAK,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAE,KAClF,CAIE,IAAI,cAAe,CACjB,OAAO,KAAK,QAAQ,SAAW,EAAI,CAAA,EAAK,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAE,KAClF,CAIE,OAAQ,CACN,KAAO,KAAK,QAAQ,OAAS,GAC3B,KAAK,IAAK,CAChB,CACA,QACA,cAAiBpB,EAAG,CAMlB,YAAY,EAAG,CACb,MAAM,EAAG,CACP,CAAC,EAAE,OAAO,EAAG,CACX,KAAM,CACJ,QAAS,EACnB,CACO,EACD,CAAC,EAAE,IAAI,EAAG,CACR,KAAM,CACJ,QAAS,EACnB,CACA,CACA,CAAK,EAAG,KAAK,aAAe,IAAIgB,GAAM,KAAK,QAAU,IAAII,GAAM,KAAK,SAAW,GAAI,KAAK,MAAM,QAAUvK,EAAE,KAAK,MAAO,CAAC+I,EAAE,QAASA,EAAE,aAAa,CAAC,EAAG,KAAK,MAAM,QAAQ,aAAa,KAAK,MAAM,QAAS,KAAK,MAAM,QAAQ,UAAU,EAAG,KAAK,UAAU,GAAG,KAAK,MAAM,QAAS,QAAS,IAAM,CACxR,KAAK,KAAM,CACjB,CAAK,EAAG,KAAK,QAAQ,KAAK,CAAE,MAAO,EAAE,MAAO,CAC5C,CAIE,MAAO,CACL,KAAK,MAAM,QAAQ,UAAU,OAAOA,EAAE,aAAa,EAAG,MAAM,KAAI,EAAI,KAAK,aAAa,KAAI,EAAI,KAAK,SAAW,EAClH,CAIE,MAAO,CACL,KAAK,WAAa,MAAM,KAAM,EAAE,KAAK,MAAM,QAAQ,UAAU,IAAIA,EAAE,aAAa,EAAG,KAAK,aAAa,OAAM,EAAI,KAAK,QAAQ,QAAS,KAAK,SAAW,GACzJ,CAIE,SAAU,CACR,MAAM,QAAS,EAAE,KAAK,aAAa,OAAQ,CAC/C,CAME,gBAAgB,EAAG,CACjB,KAAK,qBAAqB,EAAE,SAAU,EAAE,KAAK,EAAG,KAAK,QAAQ,KAAK,CAChE,MAAO,EAAE,MACT,MAAO,EAAE,QACf,CAAK,CACL,CAOE,qBAAqB,EAAG,EAAG,CACzB,GAAI,KAAK,SAAW,MAAQ,KAAK,SAAW,SAAW,KAAK,OAAO,QAAO,EAAI,KAAK,OAAS,MAAO,IAAM,OAAQ,CAC/G,KAAK,OAAS,IAAIuB,GAAG,CACnB,KAAM,EACN,kBAAmB,IAAM,CACvB,KAAK,QAAQ,IAAK,EAAE,KAAK,qBAAqB,KAAK,QAAQ,aAAc,KAAK,QAAQ,YAAY,CAC5G,CACA,CAAO,EACD,MAAMnN,EAAI,KAAK,OAAO,WAAY,EAClCA,IAAM,MAAQ,KAAK,MAAM,iBAAiB,aAAaA,EAAG,KAAK,MAAM,iBAAiB,UAAU,CACtG,CACI,KAAK,MAAM,QAASA,GAAM,CACxB,IAAI,EACJ,OAAQ,EAAIA,EAAE,WAAU,IAAO,KAAO,OAAS,EAAE,OAAQ,CAC1D,CAAA,EAAG,KAAK,MAAQ,KAAK,WAAW,CAAC,EAAG,KAAK,MAAM,QAASA,GAAM,CAC7D,IAAIG,EACJ,MAAMD,EAAIF,EAAE,WAAY,EACxBE,IAAM,QAAUC,EAAI,KAAK,MAAM,QAAU,MAAQA,EAAE,YAAYD,CAAC,EACtE,CAAK,CACL,CACA,EACA,MAAMmN,WAAWvJ,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,OAAS,GAAI,KAAK,UAAY,IAAIG,EAAK,KAAK,QAAU,KAAM,KAAK,MAAQ,IAAM,CACvG,KAAK,SAAW,KAAK,OAAS,GAAIA,EAAE,YAAc,KAAK,UAAU,QAAO,EAAI,KAAK,UAAU,WAAY,EAAE,CAAC,KAAK,OAAO,oBAAoB,8BAAgC,KAAK,OAAO,aAAa,cAAgB,KAAK,OAAO,eAAe,cAAc,KAAK,OAAO,aAAa,YAAY,EAAG,KAAK,iBAAiB,KAAK,KAAK,OAAO,MAAM,EAAG,KAAK,UAAY,KAAK,QAAQ,IAAIyH,GAAE,OAAQ,KAAK,cAAc,EAAG,KAAK,QAAQ,QAAS,EAAE,KAAK,QAAQ,WAAU,EAAG,OAAQ,EAAE,KAAK,QAAU,MACve,EAAO,KAAK,eAAiB,IAAM,CAC7B,KAAK,MAAO,CACb,CACL,CAIE,IAAI,QAAS,CACX,MAAO,CACL,OAAQ,wBACR,OAAQ,uBACT,CACL,CAIE,IAAI,KAAM,CACR,MAAO,CACL,SAAU,aACX,CACL,CAME,IAAI,SAAU,CACZ,IAAI,EACJ,GAAI,KAAK,UAAY,KACnB,MAAO,YAAa,KAAK,SAAW,EAAI,KAAK,UAAY,KAAO,OAAS,EAAE,QAAU,MAC3F,CAME,MAAO,CACL,KAAK,MAAM,QAAU7I,EAAE,KAAK,MAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAG,KAAK,MAAM,QAAQ,aAAa,UAAW,aAAa,EAAG,KAAK,iBAAiB,GAAG4B,GAAI,KAAK,KAAK,CAC/J,CAIE,SAAU,CACR,KAAK,eAAc,EAAI,KAAK,UAAU,QAAO,EAAI,KAAK,iBAAiB,IAAIA,GAAI,KAAK,KAAK,CAC7F,CAME,MAAM,KAAK,EAAI,KAAK,OAAO,aAAa,aAAc,CACpD,IAAItE,EACJ,KAAK,OAAS,GAAI,KAAK,UAAU,KAAI,EAAI,KAAK,OAAO,eAAe,YAAY,CAAC,EAAG,KAAK,OAAO,eAAe,WAAY,EAC3H,KAAM,CAAE,UAAWR,EAAG,YAAaK,CAAG,EAAG,EAAE,SAAU,EACrD,KAAK,iBAAiB,KAAK,KAAK,OAAO,MAAM,EAC7C,MAAME,EAAIuC,KAAO6K,GAAKV,GACtB,KAAK,QAAU,IAAI1M,EAAE,CACnB,WAAY,GACZ,MAAO,MAAM,KAAK,cAAc,EAAGF,EAAGL,CAAC,EACvC,aAAc,KAAK,OAAO,IAAI,QAAQ,GAAG,MAAM,SAC/C,SAAU,CACR,aAAc6D,EAAE,GAAG+F,EAAE,GAAG,QAAS,eAAe,EAChD,OAAQ/F,EAAE,GAAG+F,EAAE,GAAG,QAAS,QAAQ,CAC3C,CACK,CAAA,EAAG,KAAK,QAAQ,GAAGmC,GAAE,OAAQ,KAAK,cAAc,GAAIvL,EAAI,KAAK,MAAM,UAAY,MAAQA,EAAE,OAAO,KAAK,QAAQ,YAAY,EAAG,KAAK,QAAQ,KAAM,CACpJ,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,OACtB,CASE,MAAM,cAAc,EAAG,EAAGH,EAAG,CAC3B,MAAM,EAAI,CAAE,EACZA,IAAM,QAAUA,EAAE,OAAS,IAAM,EAAE,KAAK,GAAGA,CAAC,EAAG,EAAE,KAAK,CACpD,KAAM,EAAE,SACd,CAAK,GACD,MAAMG,EAAI,MAAM,KAAK,KAAK,OAAO,MAAM,WAAW,QAAQ,EAAG+D,GAAK,MAAMW,GAAG,EAAG1E,CAAC,GAAG,OAAO,CAACgE,EAAGwB,KAAOA,EAAE,QAAQ,QAAS9D,GAAM,CAC3HsC,EAAE,KAAK,CACL,KAAMtC,EAAE,KACR,MAAO2B,EAAE,EAAE+F,EAAE,UAAW1H,EAAE,KAAK,EAC/B,KAAM8D,EAAE,KACR,gBAAiB,GACjB,WAAY,SAAY,CACtB,KAAM,CAAE,aAAcD,EAAG,MAAON,EAAG,QAASC,CAAC,EAAK,KAAK,OAAQC,EAAI,MAAMI,EAAE,QAAQ,EAAGC,EAAE,KAAM9D,EAAE,IAAI,EACpGwD,EAAE,MAAO,EAAED,EAAE,WAAWE,EAAGF,EAAE,UAAU,GAAG,CACpD,CACA,CAAO,CACP,CAAK,EAAGjB,GAAI,EAAE,EACV,OAAOD,EAAE,OAAS,IAAM,EAAE,KAAK,CAC7B,KAAMuG,GACN,KAAM,aACN,MAAOjH,EAAE,GAAG+F,EAAE,GAAG,QAAS,YAAY,EACtC,SAAU,CACR,WAAY,GACZ,MAAOrF,CACf,CACA,CAAK,EAAG,EAAE,KAAK,CACT,KAAM,EAAE,SACT,CAAA,GAAI,EAAE,KAAK,GAAG,CAAC,EAAG,EAAE,IAAKC,GAAM,KAAK,mBAAmBA,CAAC,CAAC,CAC9D,CAME,mBAAmB,EAAG,CACpB,GAAI,EAAE,OAAS,EAAE,WAAa,EAAE,OAAS,EAAE,KACzC,OAAO,EACT,MAAM,EAAIqF,GAAG,EAAG,CAAE,MAAO,OAAO,CAAE,EAClC,OAAO,EAAE,eAAiB,EAAE,aAAe,KAAK,mBAAmB,EAAE,YAAY,GAAI,CACzF,CACA,CACA,IAAI+D,GAAK,CAAE,QAAS,EAAI,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOC,SAASzN,EAAG,EAAG,EACb,SAAS,EAAGE,EAAG,CACdF,EAAE,QAAUE,EAAG,CAChB,GAAE,OAAQ,UAAW,CACpB,OAAO,SAAS,EAAG,CACjB,IAAIA,EAAI,CAAE,EACV,SAAS,EAAEG,EAAG,CACZ,GAAIH,EAAEG,CAAC,EACL,OAAOH,EAAEG,CAAC,EAAE,QACd,IAAIC,EAAIJ,EAAEG,CAAC,EAAI,CAAE,EAAGA,EAAG,EAAG,GAAI,QAAS,EAAI,EAC3C,OAAO,EAAEA,CAAC,EAAE,KAAKC,EAAE,QAASA,EAAGA,EAAE,QAAS,CAAC,EAAGA,EAAE,EAAI,GAAIA,EAAE,OAClE,CACM,OAAO,EAAE,EAAI,EAAG,EAAE,EAAIJ,EAAG,EAAE,EAAI,SAASG,EAAGC,EAAG,EAAG,CAC/C,EAAE,EAAED,EAAGC,CAAC,GAAK,OAAO,eAAeD,EAAGC,EAAG,CAAE,WAAY,GAAI,IAAK,CAAC,CAAE,CAC3E,EAAS,EAAE,EAAI,SAASD,EAAG,CACnB,OAAO,OAAS,KAAO,OAAO,aAAe,OAAO,eAAeA,EAAG,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,EAAG,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,CACrK,EAAE,EAAE,EAAI,SAASA,EAAGC,EAAG,CACtB,GAAI,EAAIA,IAAMD,EAAI,EAAEA,CAAC,GAAI,EAAIC,GAAK,EAAIA,GAAK,OAAOD,GAAK,UAAYA,GAAKA,EAAE,WACxE,OAAOA,EACT,IAAI,EAAoB,OAAO,OAAO,IAAI,EAC1C,GAAI,EAAE,EAAE,CAAC,EAAG,OAAO,eAAe,EAAG,UAAW,CAAE,WAAY,GAAI,MAAOA,CAAG,CAAA,EAAG,EAAIC,GAAK,OAAOD,GAAK,SAClG,QAAS,KAAKA,EACZ,EAAE,EAAE,EAAG,GAAI,SAAS,EAAG,CACrB,OAAOA,EAAE,CAAC,CACxB,GAAe,KAAK,KAAM,CAAC,CAAC,EACpB,OAAO,CACf,EAAS,EAAE,EAAI,SAASA,EAAG,CACnB,IAAIC,EAAID,GAAKA,EAAE,WAAa,UAAW,CACrC,OAAOA,EAAE,OACnB,EAAY,UAAW,CACb,OAAOA,CACR,EACD,OAAO,EAAE,EAAEC,EAAG,IAAKA,CAAC,EAAGA,CACxB,EAAE,EAAE,EAAI,SAASD,EAAGC,EAAG,CACtB,OAAO,OAAO,UAAU,eAAe,KAAKD,EAAGC,CAAC,CACxD,EAAS,EAAE,EAAI,GAAI,EAAE,EAAE,EAAI,CAAC,CACvB,EAAC,CAAC,SAAS,EAAGJ,EAAG,EAAG,CACnB,SAASG,EAAE,EAAG,EAAG,CACf,QAAS0B,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjC,IAAI6D,EAAI,EAAE7D,CAAC,EACX6D,EAAE,WAAaA,EAAE,YAAc,GAAIA,EAAE,aAAe,GAAI,UAAWA,IAAMA,EAAE,SAAW,IAAK,OAAO,eAAe,EAAGA,EAAE,IAAKA,CAAC,CACtI,CACA,CACM,SAAStF,EAAE,EAAG,EAAGyB,EAAG,CAClB,OAAO,GAAK1B,EAAE,EAAE,UAAW,CAAC,EAAG0B,GAAK1B,EAAE,EAAG0B,CAAC,EAAG,CACrD,CACM,EAAE,EAAE7B,CAAC,EACL,IAAI,EAAI,UAAW,CACjB,SAAS,EAAE,EAAG,CACZ,IAAI6B,EAAI,MACP,SAAS6D,EAAG,EAAG,CACd,GAAI,EAAEA,aAAa,GACjB,MAAM,IAAI,UAAU,mCAAmC,CAC1D,GAAE,KAAM,CAAC,EAAG,KAAK,SAAW,CAAA,EAAI,KAAK,KAAO,CAAE,EAAE,KAAK,KAAO,EAAE,KAAM,KAAK,kBAAkB,EAAE,IAAI,EAAG,KAAK,QAAU,EAAE,GAAI,KAAK,SAAW,EAAE,SAAU,KAAK,gBAAkB,SAASA,EAAG,CACvL7D,EAAE,QAAQ6D,CAAC,CACvB,EAAa,KAAK,QAAQ,iBAAiB,UAAW,KAAK,gBAAiB,EAAE,CAC9E,CACQ,OAAOtF,EAAE,EAAG,KAAM,CAAC,CAAE,IAAK,oBAAqB,IAAK,UAAW,CAC7D,MAAO,CAAE,MAAO,CAAC,OAAO,EAAG,IAAK,CAAC,MAAO,UAAW,UAAW,UAAW,MAAM,EAAG,IAAK,CAAC,MAAO,QAAQ,CAAG,CAC3G,CAAA,EAAI,CAAE,IAAK,WAAY,IAAK,UAAW,CACtC,MAAO,CAAE,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,UAAW,EAAG,MAAO,GAAI,OAAQ,GAAI,KAAM,GAAI,GAAI,GAAI,MAAO,GAAI,KAAM,GAAI,OAAQ,GAAI,OAAQ,GAAI,IAAK,GAAK,CAC7X,EAAW,CAAC,EAAGA,EAAE,EAAG,CAAC,CAAE,IAAK,oBAAqB,MAAO,SAAS,EAAG,CAC1D,EAAI,EAAE,MAAM,GAAG,EACf,QAASyB,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CACjC,EAAEA,CAAC,EAAI,EAAEA,CAAC,EAAE,YAAa,EACzB,IAAI6D,EAAI,GACR,QAAS,KAAK,EAAE,kBACd,GAAI,EAAE,kBAAkB,CAAC,EAAE,SAAS,EAAE7D,CAAC,CAAC,EAAG,CACzC6D,EAAI,KAAK,SAAS,CAAC,EAAI,GACvB,KAChB,CACYA,IAAM,KAAK,KAAK,EAAE7D,CAAC,CAAC,EAAI,GACpC,CACU,QAAS,KAAK,EAAE,kBACd,KAAK,SAAS,CAAC,IAAM,KAAK,SAAS,CAAC,EAAI,GAC3C,CAAA,EAAI,CAAE,IAAK,UAAW,MAAO,SAAS,EAAG,CACxC,IAAIA,EAAG6D,EAAI,CAAE,IAAK,EAAE,SAAW,EAAE,QAAS,MAAO,EAAE,SAAU,IAAK,EAAE,MAAM,EAAI,EAAI,GAClF,IAAK7D,KAAK,KAAK,SACb,KAAK,SAASA,CAAC,IAAM6D,EAAE7D,CAAC,IAAM,EAAI,IACpC,IAAI,EAAG,EAAI,GACX,IAAK,KAAK,KAAK,KACb,EAAI,GAAK,EAAE,UAAY,EAAE,SAAS,CAAC,EACrC,GAAK,GAAK,KAAK,SAAS,CAAC,CAC1B,CAAA,EAAI,CAAE,IAAK,SAAU,MAAO,UAAW,CACtC,KAAK,QAAQ,oBAAoB,UAAW,KAAK,eAAe,CAC1E,CAAW,CAAA,CAAC,EAAG,CACf,EAAS,EACH7B,EAAE,QAAU,CACb,CAAA,CAAC,EAAE,OACR,CAAG,CACH,GAAGuN,EAAE,EACL,IAAIC,GAAKD,GAAG,QACZ,MAAME,GAAqB5N,GAAG2N,EAAE,EAChC,MAAME,EAAG,CACP,aAAc,CACZ,KAAK,oBAAsC,IAAI,GACnD,CAME,IAAI,EAAG,CACL,GAAI,KAAK,aAAa,EAAE,GAAI,EAAE,IAAI,EAChC,MAAM,MACJ,YAAY,EAAE,IAAI,8BAA8B,EAAE,EAAE,8CACrD,EACH,MAAM1N,EAAI,IAAIyN,GAAG,CACf,KAAM,EAAE,KACR,GAAI,EAAE,GACN,SAAU,EAAE,OAClB,CAAK,EAAGvN,EAAI,KAAK,oBAAoB,IAAI,EAAE,EAAE,GAAK,CAAE,EAChD,KAAK,oBAAoB,IAAI,EAAE,GAAI,CAAC,GAAGA,EAAGF,CAAC,CAAC,CAChD,CAOE,OAAO,EAAG,EAAG,CACX,MAAMA,EAAI,KAAK,aAAa,EAAG,CAAC,EAChC,GAAI,CAACA,EACH,OACFA,EAAE,OAAQ,EACV,MAAM,EAAI,KAAK,oBAAoB,IAAI,CAAC,EACxC,KAAK,oBAAoB,IAAI,EAAG,EAAE,OAAQG,GAAMA,IAAMH,CAAC,CAAC,CAC5D,CAQE,aAAa,EAAG,EAAG,CACjB,OAAQ,KAAK,oBAAoB,IAAI,CAAC,GAAK,CAAA,GAAI,KAAK,CAAC,CAAE,KAAME,CAAC,IAAOA,IAAM,CAAC,CAChF,CACA,CACA,MAAMyN,GAAK,IAAID,GACf,IAAIE,GAAK,OAAO,eAAgBC,GAAK,OAAO,yBAA0BC,GAAK,CAAChO,EAAG,EAAG,EAAGE,IAAM,CACzF,QAAS,EAAyB6N,GAAG,EAAG,CAAC,EAAO1N,EAAIL,EAAE,OAAS,EAAGM,EAAGD,GAAK,EAAGA,KAC1EC,EAAIN,EAAEK,CAAC,KAAO,EAASC,EAAE,EAAG,EAAG,CAAC,GAAa,GAChD,OAAY,GAAKwN,GAAG,EAAG,EAAG,CAAC,EAAG,CAChC,EAAGG,IAAuBjO,IAAOA,EAAE,OAAS,iBAAkBA,EAAE,OAAS,iBAAkBA,EAAE,WAAa,sBAAuBA,IAAIiO,IAAM,EAAE,EAC7I,MAAMC,GAAK,MAAMC,WAAW9I,EAAG,CAQ7B,YAAY,CAAE,IAAK,EAAG,MAAO,EAAG,WAAYnF,GAAK,CAC/C,MAAO,EAAE,KAAK,OAAS,GAAI,KAAK,UAAY,IAAI+D,GAAM,KAAK,QAAU,KAAM,KAAK,yBAA2B,IAAM,CAC/G,KAAK,eAAc,EAAI,KAAK,YAAa,CAC/C,EAAO,KAAK,eAAiB,IAAM,CAC7B,KAAK,OAAS,GAAI,KAAK,KACrB,gBAED,CACF,EAAE,KAAK,IAAM,EAAG,KAAK,MAAQ,EAAG,KAAK,WAAa/D,EAAG,KAAK,gBAAe,EAAI,KAAK,MAAQ,CACzF,QAAS6C,EAAE,KAAK,MAAOoL,GAAG,IAAI,OAAO,CAC3C,EAAO,KAAK,cAAe,KAAK,MAAM,QAAQ,aAAa,UAAW,SAAS,EAAG,KAAK,IAAI,OAAO,GAAGxJ,GAAI,KAAK,wBAAwB,CACtI,CAME,IAAI,SAAU,CACZ,OAAO,KAAK,mBAAmB,SAAW,CAC9C,CAIE,WAAW,KAAM,CACf,MAAO,CACL,QAAS,YACV,CACL,CAIE,YAAa,CACX,OAAO,KAAK,MAAM,OACtB,CAIE,UAAW,CACT,GAAI,KAAK,UAAY,KACnB,MAAO,aAAc,KAAK,QAAU,KAAK,QAAQ,SAAQ,EAAK,MACpE,CAIE,SAAU,CACR,IAAI,EACJ,MAAM,QAAO,EAAI,KAAK,OAAS,KAAK,MAAM,SAAW,KAAK,MAAM,QAAQ,SAAU,KAAK,sBAAuB,EAAI,KAAK,UAAY,MAAQ,EAAE,IAAIiH,GAAE,OAAQ,KAAK,cAAc,EAAG,KAAK,UAAU,QAAS,EAAE,KAAK,IAAI,OAAO,IAAIjH,GAAI,KAAK,wBAAwB,CACpQ,CAOE,oBAAoB,EAAG,EAAG,CACxB,KAAK,eAAe,EAAG,CAAC,CAC5B,CAIE,MAAO,CACL,IAAI,EACJ,KAAK,WAAa,EAAI,KAAK,UAAY,MAAQ,EAAE,KAAM,EAAE,KAAK,OAAS,GAAI,KAAK,KAC9E,gBAEN,EACA,CAIE,OAAQ,CACN,IAAI,GACH,EAAI,KAAK,UAAY,MAAQ,EAAE,KAAM,EAAE,KAAK,OAAS,GAAI,KAAK,KAC7D,gBAED,CACL,CAIE,QAAS,CACP,KAAK,OAAS,KAAK,MAAK,EAAK,KAAK,KAAM,CAC5C,CAIE,aAAc,CACZ,IAAI9E,EACJ,MAAMD,EAAI+C,KAAO6K,GAAKV,GACtB,KAAK,QAAU,IAAIlN,EAAE,CACnB,aAAc,KAAK,IAAI,GAAG,MAAM,SAChC,WAAY,GACZ,SAAU,CACR,aAAc,KAAK,WAAW,aAC9B,OAAQ,KAAK,WAAW,MACzB,EACD,MAAO,KAAK,yBAClB,CAAK,EAAG,KAAK,QAAQ,GAAGgM,GAAE,OAAQ,KAAK,cAAc,GAAI/L,EAAI,KAAK,MAAM,UAAY,MAAQA,EAAE,OAAO,KAAK,QAAQ,YAAY,CAC9H,CAIE,gBAAiB,CACf,KAAK,UAAY,OAAS,KAAK,QAAQ,KAAM,EAAE,KAAK,QAAQ,IAAI+L,GAAE,OAAQ,KAAK,cAAc,EAAG,KAAK,QAAQ,QAAS,EAAE,KAAK,QAAU,MAAO,KAAK,MAAM,UAAY,OAAS,KAAK,MAAM,QAAQ,UAAY,GACjN,CACE,IAAI,oBAAqB,CACvB,MAAM,EAAI,CAAE,EACZ,OAAO,KAAK,MAAM,QAAS,GAAM,CAC/B,EAAE,SAAW,EAAE,KAAK,CAAC,CACtB,CAAA,EAAG,CACR,CACE,IAAI,2BAA4B,CAC9B,MAAM,EAAI,CAAC,EAAG1L,EAAG,EAAI,MAAQ,CAC3B,KAAM,EAAE,KACR,MAAOwD,EAAE,EAAE+F,EAAE,UAAW,EAAE,OAASxH,GAAG/B,EAAE,IAAI,CAAC,EAC7C,KAAMA,EAAE,KACR,WAAY,IAAM,CAChB,KAAK,oBAAoBA,EAAE,KAAM,EAAE,IAAI,CACxC,EACD,eAAgBA,EAAE,UAAY,EAAIiC,GAAGjC,EAAE,QAAQ,EAAI,EACzD,GACI,OAAO,KAAK,mBAAmB,OAAO,CAAC,EAAGA,KAAO,MAAM,QAAQA,EAAE,OAAO,EAAIA,EAAE,QAAQ,QAAQ,CAAC,EAAGG,IAAM,CACtG,EAAE,KAAK,EAAE,EAAGH,EAAGG,IAAM,CAAC,CAAC,CACxB,CAAA,EAAIH,EAAE,UAAY,QAAU,EAAE,KAAK,EAAEA,EAAE,QAASA,CAAC,CAAC,EAAG,GAAI,CAAA,CAAE,CAChE,CAIE,iBAAkB,CAChB,KAAK,mBAAmB,QAAS,GAAM,CACrC,MAAM,EAAI,EAAE,SACZ,GAAK,KAAK,sBAAsB,EAAE,KAAM,CAAC,CAC/C,CAAK,CACL,CAOE,sBAAsB,EAAG,EAAG,CAC1B2N,GAAG,IAAI,CACL,KAAM,EACN,GAAI,KAAK,IAAI,GAAG,MAAM,SACtB,QAAS,MAAO3N,GAAM,CACpBA,EAAE,eAAgB,EAClB,MAAM,EAAI,KAAK,IAAI,OAAO,qBAAoB,EAAIG,EAAI,KAAK,IAAI,OAAO,gBAAgB,CAAC,EACvF,GAAIA,EACF,GAAI,CACF,MAAMC,EAAI,MAAM,KAAK,IAAI,OAAO,QAAQD,EAAE,GAAI,CAAC,EAC/C,KAAK,IAAI,MAAM,WAAWC,EAAG,KAAK,EAClC,MACZ,MAAkB,CAClB,CACQ,KAAK,eAAe,CAAC,CAC7B,CACA,CAAK,CACL,CAKE,oBAAqB,CACnB,KAAK,mBAAmB,QAAS,GAAM,CACrC,MAAM,EAAI,EAAE,SACZ,GAAKuN,GAAG,OAAO,KAAK,IAAI,GAAG,MAAM,SAAU,CAAC,CAClD,CAAK,CACL,CAQE,MAAM,eAAe,EAAG,EAAG,CACzB,MAAM3N,EAAI,KAAK,IAAI,OAAO,qBAAoB,EAAI,EAAI,KAAK,IAAI,OAAO,gBAAgBA,CAAC,EACvF,GAAI,CAAC,EACH,OACF,MAAMG,EAAI,EAAE,QAAUH,EAAIA,EAAI,EAC9B,IAAII,EACJ,GAAI,EAAG,CACL,MAAM,EAAI,MAAM,KAAK,IAAI,OAAO,iBAAiB,CAAC,EAClDA,EAAI,OAAO,OAAO,EAAG,CAAC,CAC5B,CACI,MAAM,EAAI,KAAK,IAAI,OAAO,OACxB,EACAA,EACA,OACAD,EACA,OACA,EAAE,OACH,EACD,EAAE,KAAK8E,GAAG,eAAe,EAAG,KAAK,IAAI,MAAM,WAAW9E,CAAC,EAAG,KAAK,KAAK,sBAAuB,CACzF,MAAO,CACR,CAAA,EAAG,KAAK,IAAI,QAAQ,MAAO,CAChC,CACA,EACA2N,GAAG,CACDvL,EACF,EAAGyL,GAAG,UAAW,oBAAuB,EACxCF,GAAG,CACDvL,EACF,EAAGyL,GAAG,UAAW,2BAA8B,EAC/C,IAAIE,GAAKF,GACT,MAAMG,GAAK,gBACX,eAAeC,GAAGtO,EAAG,EAAG,CACtB,MAAM,EAAI,UAAU,SACpB,GAAI,CAAC,EACH,OAAO,EACT,GAAI,CACF,OAAQ,MAAM,EAAE,aAAc,GAAE,IAAIA,CAAC,GAAK,CAC3C,OAAQE,EAAG,CACV,OAAO,QAAQ,MAAMA,CAAC,EAAG,CAC7B,CACA,CACA,MAAMqO,WAAWvK,CAAE,CAOjB,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,MAAM,CACJ,OAAQ,EACR,iBAAkB,CACxB,CAAK,EAAG,KAAK,gBAAkB,IAC/B,CAME,IAAI,KAAM,CACR,MAAO,CACL,QAAS,aACT,QAAS,sBACT,QAAS,sBACT,cAAe,8BACf,cAAe,qBACf,4BAA6B,+BAC7B,WAAY,mBACZ,mBAAoB,4BACpB,gBAAiB,2BACjB,sBAAuB,kCACxB,CACL,CAME,IAAI,QAAS,CACX,OAAO,KAAK,MAAM,QAAQ,UAAU,SAAS,KAAK,IAAI,aAAa,CACvE,CAIE,IAAI,SAAU,CACZ,IAAI,EACJ,MAAO,CACL,QAAS,EAAI,KAAK,kBAAoB,KAAO,OAAS,EAAE,OACxD,MAAO,IAAM,CACX,IAAI,GACH,EAAI,KAAK,kBAAoB,MAAQ,EAAE,MAAO,CAChD,EACD,KAAM,IAAM,CACV,GAAI,KAAK,kBAAoB,KAAM,CACjCnD,EAAE,0DAA2D,MAAM,EACnE,MACV,CACQ,KAAK,OAAO,aAAa,aAAe,KAAK,aAAc,KAAK,gBAAgB,KAAM,CACvF,EACD,OAAQ,IAAM,CACZ,GAAI,KAAK,kBAAoB,KAAM,CACjCA,EAAE,4DAA6D,MAAM,EACrE,MACV,CACQ,KAAK,gBAAgB,OAAQ,CAC9B,EACD,SAAU,IAAM,CACd,IAAI,EACJ,OAAQ,EAAI,KAAK,kBAAoB,KAAO,OAAS,EAAE,SAAU,CACzE,CACK,CACL,CAIE,IAAI,cAAe,CACjB,MAAO,CACL,KAAM,IAAM,CACV,KAAK,MAAM,QAAQ,UAAU,OAAO,KAAK,IAAI,aAAa,CAC3D,EACD,KAAM,IAAM,CACV,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,aAAa,CAC/D,CACK,CACL,CAIE,IAAI,mBAAoB,CACtB,MAAO,CACL,KAAM,IAAM,KAAK,MAAM,gBAAgB,UAAU,IAAI,KAAK,IAAI,qBAAqB,EACnF,KAAM,IAAM,KAAK,MAAM,gBAAgB,UAAU,OAAO,KAAK,IAAI,qBAAqB,CACvF,CACL,CAME,eAAe,EAAG,CAChB,GAAK,KAAK,UAAW,KAAK,OAAO,cAAc,QAAO,EAAI,KAAK,sBAAuB,GAAI,OAAO,oBAAoB,IAAM,CACzH,KAAK,OAAM,EAAI,KAAK,qBAAsB,CAChD,EAAO,CAAE,QAAS,IAAK,CACvB,CAME,YAAY,EAAI,KAAK,OAAO,aAAa,aAAc,CACrD,GAAI,KAAK,kBAAoB,KAAM,CACjCA,EAAE,qEAAsE,MAAM,EAC9E,MACN,CACI,GAAI,KAAK,gBAAgB,QAAU,KAAK,gBAAgB,MAAK,EAAI,KAAK,OAAO,cAAc,QAAU,KAAK,OAAO,cAAc,MAAO,EAAE,CAAC,EACvI,OACF,KAAK,aAAe,EACpB,MAAM,EAAI,EAAE,OAAQ,CAAE,SAAUX,CAAG,EAAG,KAAK,OAAO,GAClD,IAAI,EACJ,MAAMG,EAAI,GAAIC,EAAI,EAAE,WAAY,EAAI,EAAE,sBAAuB,EAAE,EAAIA,IAAM,OAASA,EAAE,sBAAqB,EAAK,KAAM,EAAI,IAAM,KAAO,EAAE,IAAM,EAAE,IAAM,KAAMyB,EAAI,IAAM,KAAO,EAAI1B,EAAI,OACpL,GAAIH,EACF,EAAI,EAAE,UAAY,EAAE,qBACbI,IAAM,QAAUyB,EAAG,CAC1B,MAAM6D,EAAI,SAAS,OAAO,iBAAiB,EAAE,cAAc,EAAE,UAAU,EACvE,EAAI,EAAE,UAAYA,CACxB,KAAW,CACL,MAAMA,EAAI3C,GAAG3C,CAAC,EAAG,EAAI,SAAS,OAAO,iBAAiB,KAAK,MAAM,UAAU,EAAE,OAAQ,EAAE,EACvF,EAAI,EAAE,UAAYsF,EAAI,EADwE,EAChE,CACpC,CACI,KAAK,MAAM,QAAQ,MAAM,IAAM,GAAG,KAAK,MAAM,CAAC,CAAC,KAAM,KAAK,OAAO,aAAa,OAAO,SAAW,GAAK,EAAE,QAAU,KAAK,kBAAkB,KAAM,EAAG,KAAK,kBAAkB,KAAI,EAAI,KAAK,KAAM,CAC/L,CAIE,OAAQ,CACN,IAAI,EAAG,EACP,KAAK,OAAO,SAAS,aAAe,EAAI,KAAK,MAAM,UAAY,MAAQ,EAAE,UAAU,OAAO,KAAK,IAAI,aAAa,EAAG,KAAK,aAAa,KAAM,GAAG,EAAI,KAAK,kBAAoB,MAAQ,EAAE,MAAK,EAAI,KAAK,OAAO,cAAc,MAAK,EAAI,KAAK,QAC1O,CAIE,OAAQ,CACN,KAAK,MAAM,QAAQ,MAAM,IAAM,OACnC,CAOE,KAAK,EAAI,GAAI,CACX,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,aAAa,EAAG,EAAI,KAAK,aAAa,KAAM,EAAG,KAAK,aAAa,KAAM,CACrH,CAIE,MAAM,MAAO,CACX,KAAK,MAAM,QAAU7C,EAAE,KAAK,MAAO,KAAK,IAAI,OAAO,EAAG,CAAC,UAAW,SAAS,EAAE,QAAS1C,GAAM,CAC1F,KAAK,MAAMA,CAAC,EAAI0C,EAAE,KAAK,MAAO,KAAK,IAAI1C,CAAC,CAAC,CAC1C,CAAA,EAAG0C,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,MAAM,OAAO,EAAGA,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,MAAM,OAAO,EAAG,KAAK,MAAM,WAAaA,EAAE,KAAK,MAAO,KAAK,IAAI,WAAY,CACjK,UAAW2H,EACjB,CAAK,EAAG3H,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,MAAM,UAAU,EAAG,KAAK,yBAAyB,GAAG,KAAK,MAAM,WAAY,QAAS,IAAM,CAC9HoG,GAAG,EAAE,EAAG,KAAK,kBAAmB,CACjC,EAAE,EAAE,EACL,MAAM,EAAIpG,EAAE,KAAK,KAAK,EACtB,EAAE,YAAY,SAAS,eAAeW,EAAE,GAAG+F,EAAE,GAAG,QAAQ,QAAS,KAAK,CAAC,CAAC,EAAG,EAAE,YAAY1G,EAAE,KAAK,MAAO,KAAK,IAAI,mBAAoB,CAClI,YAAa,GACnB,CAAK,CAAC,EAAGqG,GAAG,KAAK,MAAM,WAAY,EAAG,CAChC,YAAa,GACnB,CAAK,EAAG,KAAK,MAAM,gBAAkBrG,EAAE,KAAK,OAAQ,KAAK,IAAI,gBAAiB,CACxE,UAAW0H,EACjB,CAAK,EAAG1H,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,MAAM,eAAe,EAC3D,MAAM,EAAIA,EAAE,KAAK,KAAK,EAAG7C,EAAI6C,EAAE,KAAKW,EAAE,GAAG+F,EAAE,GAAG,WAAW,QAAS,eAAe,CAAC,EAAG,EAAI,MAAM6E,GAAG,QAAS,GAAG,EAC9G,EAAE,YAAYpO,CAAC,EAAG,EAAE,YAAY6C,EAAE,KAAK,MAAO,KAAK,IAAI,mBAAoB,CACzE,YAAaZ,GAAG,SAAS,CAAC,EAAE,CAClC,CAAK,CAAC,EAAGiH,GAAG,KAAK,MAAM,gBAAiB,EAAG,CACrC,YAAa,GACd,CAAA,EAAGrG,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,YAAW,CAAE,EAAGA,EAAE,OAAO,KAAK,MAAM,QAAS,KAAK,OAAO,cAAc,WAAY,CAAA,EAAGA,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,QAAS,KAAK,MAAM,OAAO,CACzL,CAIE,aAAc,CACZ,OAAO,KAAK,gBAAkB,IAAIqL,GAAG,CACnC,IAAK,KAAK,OAAO,IAAI,QACrB,MAAO,KAAK,OAAO,MAAM,WACzB,WAAY,CACV,OAAQ1K,EAAE,GAAG+F,EAAE,GAAG,QAAS,QAAQ,EACnC,aAAc/F,EAAE,GAAG+F,EAAE,GAAG,QAAS,eAAe,CACxD,CACA,CAAK,EAAG,KAAK,gBAAgB,GAAGwE,GAAG,OAAQ,IAAM,CAC3C,KAAK,OAAO,GAAG,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,2BAA2B,CACrF,CAAK,EAAG,KAAK,gBAAgB,GAAGA,GAAG,OAAQ,IAAM,CAC3C,KAAK,OAAO,GAAG,MAAM,QAAQ,UAAU,OAAO,KAAK,IAAI,2BAA2B,CACxF,CAAK,EAAG,KAAK,gBAAgB,GAAGA,GAAG,WAAY,CAAC,CAAE,MAAO,KAAQ,CAC3D,KAAM,CAAE,aAAc,EAAG,MAAO/N,CAAC,EAAK,KAAK,OAAQ,EAAI,EAAE,aAAa,EAAE,EAAE,EAC1E,EAAE,OAAO,SAAW,IAAM,IAAM,EAAE,WAAa,EAAE,YAAW,EAAIA,EAAE,WAAW,EAAE,SAAS,GAAKA,EAAE,WAAW,EAAE,SAAS,EAC3H,CAAK,EAAG,KAAK,gBAAgB,WAAY,CACzC,CAIE,mBAAoB,CAClB,IAAI,EACJ,KAAK,OAAO,aAAa,aAAe,KAAK,cAAe,EAAI,KAAK,kBAAoB,MAAQ,EAAE,OAAQ,CAC/G,CAIE,sBAAuB,CACrB,KAAK,yBAAyB,GAAG,KAAK,MAAM,gBAAiB,YAAc,GAAM,CAC/E,IAAI,EACJ,EAAE,gBAAe,EAAI,KAAK,uBAAsB,GAAK,EAAI,KAAK,kBAAoB,MAAQ,EAAE,QAAU,KAAK,gBAAgB,MAAO,EAAEiJ,GAAG,EAAE,CAC/I,EAAO,EAAE,EAAGxG,MAAQ,KAAK,iBAAiB,GAAG0L,GAAK,GAAM,CAClD,IAAI,EACJ,KAAK,OAAO,cAAc,SAAW,EAAI,KAAK,kBAAoB,MAAQ,EAAE,QAAU,KAAK,YAAY,EAAE,KAAK,CACpH,CAAK,CACL,CAIE,uBAAwB,CACtB,KAAK,yBAAyB,SAAU,CAC5C,CAIE,wBAAyB,CACvB,KAAK,OAAO,aAAa,aAAe,KAAK,aAAc,KAAK,OAAO,cAAc,OAAS,KAAK,OAAO,cAAc,MAAK,EAAK,KAAK,OAAO,cAAc,KAAK,KAAK,YAAY,CACtL,CAYE,QAAS,CACP,KAAK,OAAO,cAAc,KAAI,EAAI,KAAK,KAAM,CACjD,CAKE,SAAU,CACR,KAAK,eAAc,EAAI,KAAK,iBAAmB,KAAK,gBAAgB,QAAS,CACjF,CACA,CACA,IAAIG,IAAuBxO,IAAOA,EAAEA,EAAE,MAAQ,CAAC,EAAI,QAASA,EAAEA,EAAE,OAAS,CAAC,EAAI,SAAUA,EAAEA,EAAE,KAAO,CAAC,EAAI,OAAQA,IAAIwO,IAAM,EAAE,EAAGC,IAAuBzO,IAAOA,EAAE,SAAW,WAAYA,EAAE,QAAU,UAAWA,EAAE,mBAAqB,gBAAiBA,EAAE,kBAAoB,QAASA,EAAE,OAAS,SAAUA,IAAIyO,IAAM,CAAA,CAAE,EAAGC,IAAuB1O,IAAOA,EAAE,SAAW,WAAYA,EAAE,eAAiB,WAAYA,IAAI0O,IAAM,CAAE,CAAA,EAAGC,IAAuB3O,IAAOA,EAAE,oBAAsB,mBAAoBA,EAAE,QAAU,UAAWA,EAAE,iBAAmB,mBAAoBA,EAAE,oBAAsB,sBAAuBA,EAAE,YAAc,cAAeA,IAAI2O,IAAM,CAAA,CAAE,EAAGC,IAAuB5O,IAAOA,EAAE,SAAW,WAAYA,EAAE,MAAQ,QAASA,EAAE,oBAAsB,sBAAuBA,IAAI4O,IAAM,CAAE,CAAA,EAAGC,IAAuB7O,IAAOA,EAAE,OAAS,SAAUA,IAAI6O,IAAM,CAAA,CAAE,EAC30B,IAAAC,GAAA,KAAS,CAKP,YAAY,CACV,KAAM,EACN,cAAe,EACf,OAAQ5O,EACR,IAAK,EACL,UAAWG,EACX,WAAYC,EAAI,GAChB,mBAAoB,CACxB,EAAK,CACD,KAAK,IAAM,EAAG,KAAK,KAAO,EAAG,KAAK,cAAgB,EAAG,KAAK,OAASJ,EAAG,KAAK,UAAYG,EAAG,KAAK,WAAaC,EAAG,KAAK,mBAAqB,CAC7I,CAIE,IAAI,UAAW,CACb,MAAM,EAAI,KAAK,OAAO,QAAU,CAAE,EAClC,OAAO,KAAK,WAAa,EAAE,gBAAiB,IAAM,KAAK,qBAAuB,EAAE,YAAc,KAAK,oBAAqB,CAC5H,CAIE,OAAQ,CACN,GAAIU,EAAE,KAAK,cAAc,KAAK,EAC5B,OAAO,KAAK,cAAc,MAAO,CACvC,CAIE,SAAU,CACR,GAAIA,EAAE,KAAK,cAAc,OAAO,EAC9B,OAAO,KAAK,cAAc,QAAQ,CAChC,SAAU,KAAK,KACf,OAAQ,KAAK,QACrB,CAAO,CACP,CAIE,IAAI,UAAW,CACb,MAAM,EAAI,KAAK,cAAc,SAC7B,OAAO,KAAK,OAAO,UAAY,CACnC,CAIE,IAAI,gBAAiB,CACnB,OAAO,KAAK,cAAc,UAAY,CAAE,CAC5C,CAIE,UAAW,CACT,OAAO,KAAK,OAASwN,GAAG,MAC5B,CAIE,SAAU,CACR,OAAO,KAAK,OAASA,GAAG,KAC5B,CAIE,QAAS,CACP,OAAO,KAAK,OAASA,GAAG,IAC5B,CACA,EACA,MAAMO,WAAW/K,CAAE,CAMjB,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,MAAM,CACJ,OAAQ,EACR,iBAAkB,CACxB,CAAK,EAAG,KAAK,IAAM,CACb,cAAe,mBACrB,EAAO,KAAK,OAAS,GAAI,KAAK,QAAU,KAAM,KAAK,sBAAwBrB,GAAI,EAAG,GAAK,EAAG,KAAK,MAAwB,IAAI,IAAO,OAAO,oBAAoB,IAAM,CAC7J,KAAK,KAAM,CACjB,EAAO,CAAE,QAAS,IAAK,CACvB,CAWE,MAAM,UAAU,EAAI,GAAI,CACtB,GAAK,KAAK,MAAO,EAAE,KAAK,cAAa,IAAO,MAAM,KAAK,KAAM,EAAE,KAAK,OAAO,QAAQ,MAAK,EAC5F,CAIE,OAAQ,CACN,IAAI,EAAG,EACP,GAAI,KAAK,OAAQ,CACf,SAAW,CAACzC,EAAG,CAAC,IAAK,KAAK,MAAO,CAC/B,MAAMG,EAAI,KAAK,gBAAgBH,EAAE,IAAI,EACrCG,IAAM,QAAUwN,GAAG,OAAO,KAAK,OAAO,GAAG,MAAM,SAAUxN,CAAC,EAAGW,EAAE,EAAE,KAAK,GAAK,EAAE,MAAO,CAC5F,CACM,KAAK,MAAwB,IAAI,IAAO,KAAK,QAAS,KAAK,OAAS,IAAK,EAAI,KAAK,UAAY,MAAQ,EAAE,KAAI,GAAK,EAAI,KAAK,UAAY,MAAQ,EAAE,QAAO,EAAI,KAAK,QAAU,IAChL,CACA,CAME,aAAa,EAAG,CACd,OAAO,KAAK,MAAM,UAAY,OAAS,GAAK,KAAK,MAAM,QAAQ,SAAS,CAAC,CAC7E,CAIE,SAAU,CACR,IAAI,EACJ,KAAK,eAAc,GAAK,EAAI,KAAK,UAAY,MAAQ,EAAE,QAAO,EAAI,KAAK,QAAU,IACrF,CAIE,MAAO,CACL,KAAK,MAAM,QAAU+B,EAAE,KAAK,MAAO,CACjC,KAAK,IAAI,cACT,GAAG,KAAK,MAAQ,CAAC,KAAK,OAAO,GAAG,IAAI,YAAY,EAAI,CAAA,CAC1D,CAAK,EAAG,KAAK,MAAM,QAAQ,aAAa,UAAW,gBAAgB,EAAGA,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,QAAS,KAAK,MAAM,OAAO,CAC/H,CAIE,MAAM,MAAO,CACX,IAAIlD,EACJ,GAAI,KAAK,OACP,OACF,KAAK,OAAS,GAAI,KAAK,UAAY,MAAQ,KAAK,QAAQ,UAAW,KAAK,qBAAsB,EAC9F,MAAMD,EAAI,MAAM,KAAK,gBAAiB,EACtC,KAAK,QAAU,IAAImN,GAAG,CACpB,MAAOnN,EACP,aAAc,KAAK,OAAO,IAAI,QAAQ,GAAG,MAAM,SAC/C,SAAU,CACR,aAAc8D,EAAE,GAAG+F,EAAE,GAAG,QAAS,eAAe,EAChD,OAAQ/F,EAAE,GAAG+F,EAAE,GAAG,QAAS,QAAQ,CAC3C,CACA,CAAK,EAAG,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAI5J,EAAI,KAAK,MAAM,UAAY,MAAQA,EAAE,OAAO,KAAK,QAAQ,WAAU,CAAE,EAAG,KAAK,QAAQ,KAAM,CACxI,CAME,KAAK,EAAG,CACN,MAAM,EAAIsE,EAAE,KAAMjE,EAAI,KAAK,OAAO,GAAG,MAAM,QAAQ,sBAAqB,EAAI,EAAI,CAC9E,EAAG,EAAE,EAAIA,EAAE,EACX,EAAG,EAAE,EAAI,EAAE,OACXA,EAAE,IAAM,KAAK,qBACd,EACD,EAAE,EAAI,EAAIA,EAAE,EAAI,KAAK,OAAO,GAAG,YAAY,QAAU,EAAE,EAAI,KAAK,OAAO,GAAG,YAAY,MAAQ,EAAIA,EAAE,GAAI,KAAK,MAAM,QAAQ,MAAM,KAAO,KAAK,MAAM,EAAE,CAAC,EAAI,KAAM,KAAK,MAAM,QAAQ,MAAM,IAAM,KAAK,MAAM,EAAE,CAAC,EAAI,IACrN,CAIE,OAAQ,CACN,KAAK,MAAM,QAAQ,MAAM,KAAO,IAAK,KAAK,MAAM,QAAQ,MAAM,IAAM,GACxE,CAIE,eAAgB,CACd,MAAM,EAAI,CAAC,MAAO,OAAO,EAAG,EAAIiE,EAAE,IAAK,EAAEjE,EAAIiE,EAAE,KAC/C,GAAI,CAAC,GAAK,CAAC,EAAE,YAAc,EAAE,aAAejE,EAAE,OAAS,EACrD,MAAO,GACT,MAAM,EAAI6C,EAAE,UAAU,EAAE,UAAU,EAAI,EAAE,WAAa,EAAE,WAAW,cAClE,GAAI,IAAM,MAAQ,IAAM,MAAQ,EAAE,SAAS,EAAE,OAAO,EAClD,MAAO,GACT,MAAM1C,EAAI,KAAK,OAAO,aAAa,SAAS,EAAE,UAAU,EACxD,MAAO,CAACA,GAAK,KAAK,SAAQ,EAAG,KAAMwF,GAAMxF,EAAE,KAAK,YAAY,IAAIwF,EAAE,IAAI,CAAC,IAAM,GAAK,GAAK,EAAE,QAAQ,mBAAmB,IAAM,IAC9H,CAWE,UAAW,CACT,MAAM,EAAI,KAAK,OAAO,aAAa,aACnC,OAAO,EAAI,MAAM,KAAK,EAAE,KAAK,YAAY,OAAQ,CAAA,EAAE,OAAQ3F,GAAM,EAAE,KAAK,OAAO,SAAS,WAAaA,EAAE,sBAAwB,GAAG,EAAI,CAAE,CAC5I,CAIE,sBAAuB,CACrB,KAAK,MAAwB,IAAI,IAAO,KAAK,SAAU,EAAC,QAASL,GAAM,CACrE,MAAMK,EAAIL,EAAE,OAAQ,EACpB,KAAK,MAAM,IAAIA,EAAGK,CAAC,CACzB,CAAK,CACL,CAIE,MAAM,iBAAkB,CACtB,MAAM,EAAI,CAAE,EACZ,IAAI,EAAI,EACR,SAAW,CAACA,EAAG,CAAC,IAAK,KAAK,MAAO,CAC/B,MAAMG,EAAI,MAAM,EAAE,OAAQ,EAAEC,EAAI,KAAK,gBAAgBJ,EAAE,IAAI,EAC3D,GAAII,IAAM,OACR,GAAI,CACF,KAAK,gBAAgBJ,EAAE,KAAMI,CAAC,CACxC,MAAgB,CAChB,CACM,MAAM,EAAIA,IAAM,OAAS6B,GAAG7B,CAAC,EAAI,OAAQ,EAAIoD,EAAE,EAC7C+F,EAAE,UACFvJ,EAAE,OAAS+B,GAAG/B,EAAE,IAAI,CACrB,EACD,CAACG,CAAC,EAAE,KAAM,EAAC,QAAS,GAAM,CACxB,IAAIuF,EAAGN,EACP,MAAMvD,EAAI,CACR,KAAM7B,EAAE,KACR,WAAY,IAAM,CAChB,KAAK,YAAY,CAAC,CACnB,EACD,KAAM,CACJ,MAAO,EACP,YAAa,CACzB,CACS,EACD,GAAI6C,EAAE,UAAU,CAAC,EAAG,CAClB,MAAM,EAAI,CACR,GAAGhB,EACH,QAAS,EACT,KAAM,EAAE,IACT,EACD,GAAIf,EAAE,EAAE,aAAa,EAAG,CACtB,MAAM,EAAI,EAAE,cAAe,EAC3B,EAAE,SAAW,CACX,QAAS4E,EAAI,EAAE,aAAe,KAAO,OAASA,EAAE,KAAK,EAAGzB,EAAE,IAAG,CAAE,EAE/D,YAAa,GACb,MAAO,CACL,CACE,KAAM,EAAE,KACR,QAAS,CAC3B,CACA,CACa,CACF,MACEmB,EAAI,EAAE,aAAe,MAAQA,EAAE,KAAK,EAAGnB,EAAE,KAAK,EACjD,EAAE,KAAK,CAAC,CACT,SAAU,EAAE,OAAS,EAAE,KACtB,EAAE,KAAK,CACL,GAAGpC,EACH,GAAG,EACH,KAAM,EAAE,IACpB,CAAW,UACM,EAAE,OAAS,EAAE,UACpB,EAAE,KAAK,CACL,KAAM,EAAE,SACpB,CAAW,MACE,CACH,MAAM,EAAI,CACR,GAAGA,EACH,GAAG,EACH,KAAM,EAAE,OACT,EACD,aAAc,GAAK,IAAM,GAAK,EAAE,KAAK,CACnC,KAAM,EAAE,SACT,CAAA,EAAG,EAAE,KAAK,CAAC,EAAG,aAAc,GAAK,EAAI,KAAK,MAAM,KAAO,GAAK,EAAE,KAAK,CAClE,KAAM,EAAE,SACpB,CAAW,CACX,CACO,CAAA,EAAG,GACV,CACI,OAAO,CACX,CAME,gBAAgB,EAAG,CACjB,KAAM,CAAE,MAAO,CAAC,EAAK,KAAK,OAAQ7B,EAAI,EAAE,YAAY,IAAI,CAAC,EAAG,EAAI,EAAE,SAAS,YAC3E,OAAO,MAAM,KAAK,EAAE,KAAM,CAAA,EAAE,SAAS,CAAC,EAAI,KAAK,YAAY,CAAC,EAAEwO,GAAG,QAAQ,EAAIxO,GAAK,KAAO,OAASA,EAAE,QACxG,CAOE,gBAAgB,EAAG,EAAG,CACpB2N,GAAG,IAAI,CACL,KAAM,EACN,QAAU3N,GAAM,CACd,IAAIG,EACJ,KAAM,CAAE,aAAcD,CAAG,EAAG,KAAK,OAAO,aACxCA,GAAKA,EAAE,KAAK,qBAAuBF,EAAE,eAAc,GAAKG,EAAI,KAAK,UAAY,MAAQA,EAAE,mBAAmB,CAAC,EAC5G,EAID,GAAI,QACV,CAAK,CACL,CAME,YAAY,EAAG,CACb,IAAIH,EACJ,MAAML,EAAIsE,EAAE,OACXjE,EAAI,EAAE,WAAa,MAAQA,EAAE,KAAK,EAAGL,CAAC,EAAG,KAAK,gBAAiB,CACpE,CAIE,iBAAkB,CAChB,IAAI,GACH,EAAI,KAAK,QAAU,MAAQ,EAAE,QAAS,GAAM,CAC3C,IAAIK,GACHA,EAAI,EAAE,aAAe,MAAQA,EAAE,KAAK,EAAGiE,EAAE,KAAK,CACrD,CAAK,CACL,CAKE,IAAI,aAAc,CAChB,MAAM,EAAI,CAAE,EACZ,OAAO,MAAM,KAAK,KAAK,OAAO,MAAM,YAAY,QAAO,CAAE,EAAE,QAAQ,CAAC,CAAC,EAAGjE,CAAC,IAAM,CAC7E,EAAE,CAAC,EAAIA,EAAE,OAAQ,CAClB,CAAA,EAAG,CACR,CACA,CACA,SAAS8O,IAAK,CACZ,MAAMhP,EAAI,OAAO,aAAc,EAC/B,GAAIA,IAAM,KACR,MAAO,CAAC,KAAM,CAAC,EACjB,IAAI,EAAIA,EAAE,UAAW,EAAIA,EAAE,YAC3B,OAAO,IAAM,KAAO,CAAC,KAAM,CAAC,GAAK,EAAE,WAAa,KAAK,WAAa,EAAE,WAAW,OAAS,IAAM,EAAE,WAAW,CAAC,GAAK,EAAI,EAAE,WAAW,CAAC,EAAG,EAAI,IAAM,EAAI,EAAE,WAAW,EAAI,CAAC,EAAG,EAAI,EAAE,YAAY,SAAU,CAAC,EAAG,CAAC,EAC5M,CACA,SAASiP,GAAGjP,EAAG,EAAG,EAAGE,EAAG,CACtB,MAAM,EAAI,SAAS,YAAa,EAChCA,IAAM,QAAU,EAAE,SAASF,EAAG,CAAC,EAAG,EAAE,OAAO,EAAG,CAAC,IAAM,EAAE,SAAS,EAAG,CAAC,EAAG,EAAE,OAAOA,EAAGA,EAAE,WAAW,MAAM,GACtG,MAAMK,EAAI,EAAE,cAAa,EAAIC,EAAI,SAAS,cAAc,KAAK,EAC7DA,EAAE,YAAYD,CAAC,EACf,MAAM,EAAIC,EAAE,aAAe,GAC3B,OAAO0C,GAAG,CAAC,CACb,CACA,SAASkM,GAAGlP,EAAG,CACb,MAAM,EAAI+C,EAAE,eAAe/C,CAAC,EAC5B,GAAI,IAAM,MAAQ+C,EAAE,QAAQ/C,CAAC,EAC3B,MAAO,GACT,GAAI+C,EAAE,cAAc,CAAC,EACnB,OAAO,EAAE,eAAiB,EAC5B,GAAIA,EAAE,QAAQ/C,CAAC,EACb,MAAO,GACT,KAAM,CAAC,EAAGE,CAAC,EAAI8O,GAAI,EACnB,OAAO,IAAM,KAAO,GAAKC,GAAGjP,EAAG,EAAGE,EAAG,MAAM,CAC7C,CACA,SAASiP,GAAGnP,EAAG,CACb,MAAM,EAAI+C,EAAE,eAAe/C,EAAG,EAAE,EAChC,GAAI,IAAM,KACR,MAAO,GACT,GAAI+C,EAAE,cAAc,CAAC,EACnB,OAAO,EAAE,eAAiB,EAAE,MAAM,OACpC,KAAM,CAAC,EAAG7C,CAAC,EAAI8O,GAAI,EACnB,OAAO,IAAM,KAAO,GAAKC,GAAGjP,EAAG,EAAGE,EAAG,OAAO,CAC9C,CACA,IAAIkP,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK,CAAA,EAAIC,GAAK,GAAIC,GAAK,CAAE,EAAEC,GAAK,CAAE,EACxD,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,kBAAoBC,GACvB,SAASA,IAAK,CACZ,IAAI1P,EAAI,CAAC,OAAQ,WAAY,QAAS,SAAU,SAAU,MAAO,KAAK,EACtE,MAAO,wDAA0DA,EAAE,IAAI,SAAS,EAAG,CACjF,MAAO,eAAe,OAAO,EAAG,IAAI,CACxC,CAAG,EAAE,KAAK,IAAI,CACd,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAI,EAAIyP,GACR,OAAO,eAAezP,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAO,EAAE,iBACb,EAAK,CACL,GAAGwP,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,cAAgBC,GACnB,SAASA,GAAG7P,EAAG,CACb,IAAI,EAAI,CACN,QACA,UACD,EACD,OAAOA,GAAKA,EAAE,QAAU,EAAE,SAASA,EAAE,OAAO,EAAI,EAClD,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAI,EAAI4P,GACR,OAAO,eAAe5P,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,CACL,GAAG2P,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,OAASC,GACZ,SAASA,GAAGhQ,EAAG,EAAG,CAChB,MAAM,QAAQ,CAAC,EAAI,EAAE,QAAQ,SAAS,EAAG,CACvCA,EAAE,YAAY,CAAC,CACnB,CAAG,EAAIA,EAAE,YAAY,CAAC,CACtB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAI,EAAI+P,GACR,OAAO,eAAe/P,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAO,EAAE,MACb,EAAK,CACL,GAAG8P,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,cAAgBC,GACnB,SAASA,IAAK,CACZ,MAAO,CACL,UACA,UACA,QACA,aACA,SACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,KACA,OACA,MACA,WACA,KACA,SACA,IACA,MACA,OACA,UACA,QACA,QACA,QACA,KACA,QACA,KACA,OACD,CACH,EACC,SAASnQ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAI,EAAIkQ,GACR,OAAO,eAAelQ,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,CACL,GAAGiQ,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,kBAAoBC,GACvB,SAASA,GAAGtQ,EAAG,CACb,IAAI,EAAI,OAAO,iBAAiBA,CAAC,EAAG,EAAI,WAAW,EAAE,QAAQ,EAAGE,EAAI,WAAW,EAAE,UAAU,GAAK,EAAI,IAAK,EAAI,WAAW,EAAE,UAAU,EAAGG,EAAI,WAAW,EAAE,cAAc,EAAGC,EAAI,WAAW,EAAE,SAAS,EAAG,EAAI,EAAI,GAAK,GAAKJ,EAAI,GAAK,EAAG,EAAII,EAAID,EAAI,EAAI,EAAI,EACxP,OAAO,CACT,EACC,SAASL,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAI,EAAIqQ,GACR,OAAO,eAAerQ,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAO,EAAE,iBACb,EAAK,CACL,GAAGoQ,EAAE,EACL,IAAIG,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK,CAAA,EAAIC,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,kBAAoBC,GACvB,SAASA,GAAG3Q,EAAG,CACb,OAAOA,EAAE,kBAAoB,MAC/B,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAI,EAAI0Q,GACR,OAAO,eAAe1Q,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAO,EAAE,iBACb,EAAK,CACL,GAAGyQ,EAAE,EACL,OAAO,eAAeD,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAcI,GACjB,IAAIC,GAAKlB,GAAImB,GAAKL,GAClB,SAASG,GAAG5Q,EAAG,CACb,IAAI,EAAI,GACR,MAAQ6Q,GAAG,eAAe7Q,CAAC,EACzB,OAAQA,EAAE,KAAI,CACZ,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,QACH,EAAI,GACJ,KACR,MAEI,KAAQ8Q,GAAG,mBAAmB9Q,CAAC,EACjC,OAAO,CACT,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAI,EAAIwQ,GACR,OAAO,eAAexQ,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAO,EAAE,WACb,EAAK,CACL,GAAGuQ,EAAE,EACL,IAAIQ,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,SAASC,GAAGjR,EAAG,EAAG,EAAG,CACnB,MAAME,EAAI,EAAE,QAAU,OAAS,QAAU,MAAO,EAAI,EAAEA,CAAC,EAAGG,EAAI,IAAI,CAAC,QACnE,GAAI,EAAEH,CAAC,EAAI,YAAYI,EAAG,CACxB,OAAO,KAAKD,CAAC,IAAM,SAAW,KAAKA,CAAC,EAAI,EAAE,MAAM,KAAMC,CAAC,GAAI,KAAKD,CAAC,CAClE,EAAEH,IAAM,OAAS,EAAE,IAAK,CACvB,MAAMI,EAAI,EAAE,IACZ,EAAE,IAAM,SAAS,EAAG,CAClB,OAAON,EAAEK,CAAC,EAAGC,EAAE,MAAM,KAAM,CAAC,CAC7B,CACL,CACE,OAAO,CACT,CACA,SAAS4Q,IAAK,CACZ,MAAMlR,EAAI,CACR,IAAK,GACL,IAAK,GACL,IAAK,GACL,MAAO,EACX,EAAK,EAAI,OAAO,KAAKA,CAAC,EAAE,KAAM,GAAM,OAAO,UAAU,WAAW,YAAW,EAAG,QAAQ,CAAC,IAAM,EAAE,EAC7F,OAAO,IAAM,SAAWA,EAAE,CAAC,EAAI,IAAKA,CACtC,CACA,SAASmR,GAAGnR,EAAG,CACb,OAAOA,GAAK,MAAQA,IAAM,KAAO,OAAOA,GAAK,UAAY,OAAO,KAAKA,CAAC,EAAE,OAAS,EACnF,CACA,SAASoR,GAAGpR,EAAG,CACb,MAAO,CAACmR,GAAGnR,CAAC,CACd,CACA,MAAMqR,GAAK,IAAM,OAAO,OAAS,KAAO,OAAO,YAAc,MAAQF,GAAG,OAAO,UAAU,QAAQ,IAAM,iBAAiB,KAAK,OAAO,UAAU,QAAQ,GAAK,OAAO,UAAU,WAAa,YAAc,OAAO,UAAU,eAAiB,GACzO,SAASG,GAAGtR,EAAG,CACb,MAAM,EAAIkR,GAAI,EACd,OAAOlR,EAAIA,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,cAAe,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,WAAY,KAAK,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAG,EAAE,IAAMA,EAAIA,EAAE,QAAQ,aAAc,GAAG,EAAE,QAAQ,QAAS,GAAG,EAAIA,EAAIA,EAAE,QAAQ,QAAS,MAAM,EAAE,QAAQ,YAAa,KAAK,EAAGA,CACtZ,CACA,SAASuR,GAAGvR,EAAG,CACb,OAAOA,EAAE,CAAC,EAAE,YAAa,EAAGA,EAAE,MAAM,CAAC,CACvC,CACA,SAASwR,GAAGxR,EAAG,CACb,MAAM,EAAI,SAAS,cAAc,KAAK,EACtC,EAAE,MAAM,SAAW,WAAY,EAAE,MAAM,KAAO,SAAU,EAAE,MAAM,OAAS,SAAU,EAAE,UAAYA,EAAG,SAAS,KAAK,YAAY,CAAC,EAC/H,MAAM,EAAI,OAAO,aAAc,EAAEE,EAAI,SAAS,YAAa,EAC3D,GAAIA,EAAE,WAAW,CAAC,EAAG,IAAM,KACzB,MAAM,IAAI,MAAM,+BAA+B,EACjD,EAAE,gBAAiB,EAAE,EAAE,SAASA,CAAC,EAAG,SAAS,YAAY,MAAM,EAAG,SAAS,KAAK,YAAY,CAAC,CAC/F,CACA,SAASuR,GAAGzR,EAAG,EAAG,EAAG,CACnB,IAAIE,EACJ,MAAO,IAAI,IAAM,CACf,MAAMG,EAAI,KAAMC,EAAI,IAAM,CACxBJ,EAAI,OAAQ,IAAM,IAAMF,EAAE,MAAMK,EAAG,CAAC,CACrC,EAAE,EAAI,IAAM,IAAMH,IAAM,OACzB,OAAO,aAAaA,CAAC,EAAGA,EAAI,OAAO,WAAWI,EAAG,CAAC,EAAG,GAAKN,EAAE,MAAMK,EAAG,CAAC,CACvE,CACH,CACA,SAASqR,GAAG1R,EAAG,CACb,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC,EAAE,YAAa,CAClF,CACA,SAAS2R,GAAG3R,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,SACnB,CACA,SAAS4R,GAAG5R,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,YAAc0R,GAAG1R,CAAC,IAAM,eAC3C,CACA,SAAS6R,GAAG7R,EAAG,CACb,OAAO4R,GAAG5R,CAAC,GAAK,eAAe,KAAKA,EAAE,UAAU,CAClD,CACA,SAAS8R,GAAG9R,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,QACnB,CACA,SAAS+R,GAAG/R,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,QACnB,CACA,SAASgS,GAAGhS,EAAG,CACb,OAAO,QAAQ,QAAQA,CAAC,IAAMA,CAChC,CACA,SAASiS,GAAGjS,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,QACnB,CACA,SAASkS,GAAGlS,EAAG,CACb,OAAO0R,GAAG1R,CAAC,IAAM,WACnB,CACA,SAASmS,GAAGnS,KAAM,EAAG,CACnB,GAAI,CAAC,EAAE,OACL,OAAOA,EACT,MAAM,EAAI,EAAE,MAAO,EACnB,GAAI+R,GAAG/R,CAAC,GAAK+R,GAAG,CAAC,EACf,UAAW7R,KAAK,EACd6R,GAAG,EAAE7R,CAAC,CAAC,GAAKF,EAAEE,CAAC,IAAM,QAAU,OAAO,OAAOF,EAAG,CAAE,CAACE,CAAC,EAAG,CAAA,CAAI,CAAA,EAAGiS,GAAGnS,EAAEE,CAAC,EAAG,EAAEA,CAAC,CAAC,GAAK,OAAO,OAAOF,EAAG,CAAE,CAACE,CAAC,EAAG,EAAEA,CAAC,CAAC,CAAE,EAClH,OAAOiS,GAAGnS,EAAG,GAAG,CAAC,CACnB,CACA,SAASoS,GAAGpS,EAAG,EAAG,EAAG,CACnB,MAAME,EAAI,IAAI,CAAC,kFAAkF,CAAC,aAClGF,GAAK,QAAQ,KAAKE,CAAC,CACrB,CACA,SAASmS,GAAGrS,EAAG,CACb,GAAI,CACF,OAAO,IAAI,IAAIA,CAAC,EAAE,IACtB,MAAU,CACV,CACE,OAAOA,EAAE,UAAU,EAAG,CAAC,IAAM,KAAO,OAAO,SAAS,SAAWA,EAAI,OAAO,SAAS,OAASA,CAC9F,CACA,SAASsS,GAAGtS,EAAG,CACb,OAAOA,EAAI,IAAMA,EAAI,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,KAAOA,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAOA,EAAI,GAChJ,CACA,MAAMuS,GAAK,CACT,UAAW,EACX,IAAK,EACL,MAAO,GACP,MAAO,GACP,KAAM,GACN,IAAK,GACL,IAAK,GACL,MAAO,GACP,KAAM,GACN,GAAI,GACJ,KAAM,GACN,MAAO,GACP,OAAQ,GACR,KAAM,GACN,MAAO,GACT,EAAGC,GAAK,CACN,KAAM,EACN,MAAO,EACP,MAAO,EACP,SAAU,EACV,QAAS,CACX,EACA,IAAIC,GAAK,KAAM,CACb,aAAc,CACZ,KAAK,UAAY,QAAQ,QAAS,CACtC,CAKE,IAAI7S,EAAG,CACL,OAAO,IAAI,QAAQ,CAACC,EAAGK,IAAM,CAC3B,KAAK,UAAY,KAAK,UAAU,KAAKN,CAAC,EAAE,KAAKC,CAAC,EAAE,MAAMK,CAAC,CAC7D,CAAK,CACL,CACA,EACA,SAASwS,GAAG1S,EAAG,EAAG,EAAI,OAAQ,CAC5B,IAAIE,EAAG,EAAGG,EAAGC,EAAI,KAAM,EAAI,EAC3B,IAAM,EAAI,IACV,MAAM,EAAI,UAAW,CACnB,EAAI,EAAE,UAAY,GAAK,EAAI,KAAK,MAAOA,EAAI,KAAMD,EAAIL,EAAE,MAAME,EAAG,CAAC,EAAGI,IAAM,OAASJ,EAAI,EAAI,KAC5F,EACD,OAAO,UAAW,CAChB,MAAM,EAAI,KAAK,IAAK,EACpB,CAAC,GAAK,EAAE,UAAY,KAAO,EAAI,GAC/B,MAAM6B,EAAI,GAAK,EAAI,GACnB,OAAO7B,EAAI,KAAM,EAAI,UAAW6B,GAAK,GAAKA,EAAI,GAAKzB,IAAM,aAAaA,CAAC,EAAGA,EAAI,MAAO,EAAI,EAAGD,EAAIL,EAAE,MAAME,EAAG,CAAC,EAAGI,IAAM,OAASJ,EAAI,EAAI,OAAS,CAACI,GAAK,EAAE,WAAa,KAAOA,EAAI,WAAW,EAAGyB,CAAC,GAAI1B,CACnM,CACH,CACA,MAAMsS,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC7E,UAAW,KACX,aAAcF,GACd,iBAAkBnB,GAClB,UAAWL,GACX,WAAYM,GACZ,oBAAqBC,GACrB,SAAUC,GACV,UAAWU,GACX,kBAAmBC,GACnB,UAAWlB,GACX,YAAamB,GACb,UAAWV,GACX,QAASE,GACT,QAAST,GACT,WAAYQ,GACZ,YAAaP,GACb,SAAUS,GACV,SAAUC,GACV,eAAgBO,GAChB,UAAWN,GACX,SAAUC,GACV,YAAaC,GACb,SAAUK,GACV,aAAcC,GACd,SAAUrB,GACV,SAAUuB,GACV,OAAQhB,EACV,EAAG,OAAO,YAAa,CAAE,MAAO,QAAU,CAAA,CAAC,EAAGkB,GAAqB3S,GAAG0S,EAAE,EACxE,OAAO,eAAe3B,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,2BAA6B6B,GAChC,IAAIC,GAAKF,GAAIG,GAAK9C,GAClB,SAAS4C,GAAG7S,EAAG,CACb,IAAI,KACA8S,GAAG,UAAU9S,CAAC,GAAK,EAAI,SAAS,cAAc,KAAK,EAAG,EAAE,UAAYA,GAAK,EAAIA,EACjF,IAAI,EAAI,SAASE,EAAG,CAClB,MAAO,IAAK6S,GAAG,eAAgB,EAAC,SAAS7S,EAAE,QAAQ,YAAa,CAAA,GAAK,MAAM,KAAKA,EAAE,QAAQ,EAAE,MAAM,CAAC,CACpG,EACD,OAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CACvC,EACC,SAASF,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,2BAA6B,OACtF,IAAI,EAAIgR,GACR,OAAO,eAAehR,EAAG,6BAA8B,CAAE,WAAY,GAAI,IAAK,UAAW,CACvF,OAAO,EAAE,0BACb,EAAK,CACL,GAAG+Q,EAAE,EACL,IAAIiC,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK,CAAA,EAAIC,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,KAAOC,GACV,SAASA,GAAGpT,EAAG,EAAG,EAAG,CACnB,IAAIE,EACJ,IAAM,SAAW,EAAI,MAAO,IAAM,SAAW,EAAI,IACjD,IAAI,EAAI,SAAS,cAAcF,CAAC,EAChC,GAAI,MAAM,QAAQ,CAAC,EAAG,CACpB,IAAIK,EAAI,EAAE,OAAO,SAAS,EAAG,CAC3B,OAAO,IAAM,MACnB,CAAK,GACAH,EAAI,EAAE,WAAW,IAAI,MAAMA,EAAGG,CAAC,CACjC,MACC,IAAM,MAAQ,EAAE,UAAU,IAAI,CAAC,EACjC,QAASC,KAAK,EACZ,OAAO,UAAU,eAAe,KAAK,EAAGA,CAAC,IAAM,EAAEA,CAAC,EAAI,EAAEA,CAAC,GAC3D,OAAO,CACT,EACC,SAASN,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,KAAO,OAChE,IAAI,EAAImT,GACR,OAAO,eAAenT,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAO,EAAE,IACb,EAAK,CACL,GAAGkT,EAAE,EACL,OAAO,eAAeD,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,iBAAmBI,GACtB,IAAIC,GAAKJ,GACT,SAASG,GAAGrT,EAAG,CACb,IAAI,KAAQsT,GAAG,MAAM,KAAK,EAC1B,OAAO,EAAE,YAAYtT,CAAC,EAAG,EAAE,SAC7B,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,iBAAmB,OAC5E,IAAI,EAAIiT,GACR,OAAO,eAAejT,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAO,EAAE,gBACb,EAAK,CACL,GAAGgT,EAAE,EACL,IAAIO,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,iBAAmBC,GACtB,IAAIC,GAAK/D,GACT,SAAS8D,GAAGzT,EAAG,CACb,IAAI,EAAG,EACP,SAAW0T,GAAG,eAAe1T,CAAC,EAAIA,EAAE,MAAM,OAASA,EAAE,WAAa,KAAK,UAAYA,EAAE,QAAU,GAAK,EAAIA,EAAE,eAAiB,MAAQ,IAAM,OAAS,OAAS,EAAE,UAAY,MAAQ,IAAM,OAAS,EAAI,CACtM,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,iBAAmB,OAC5E,IAAI,EAAIwT,GACR,OAAO,eAAexT,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAO,EAAE,gBACb,EAAK,CACL,GAAGuT,EAAE,EACL,IAAII,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK/T,IAAMA,GAAG,eAAiB,SAASE,EAAG,EAAG,EAAG,CACrE,GAAI,GAAK,UAAU,SAAW,EAC5B,QAASE,EAAI,EAAG,EAAI,EAAE,OAAQG,EAAGH,EAAI,EAAGA,KACrCG,GAAK,EAAEH,KAAK,MAAQG,IAAMA,EAAI,MAAM,UAAU,MAAM,KAAK,EAAG,EAAGH,CAAC,GAAIG,EAAEH,CAAC,EAAI,EAAEA,CAAC,GACnF,OAAOF,EAAE,OAAOK,GAAK,MAAM,UAAU,MAAM,KAAK,CAAC,CAAC,CACpD,EACA,OAAO,eAAeuT,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,wBAA0BE,GAC7B,IAAIC,GAAKhD,GACT,SAAS+C,GAAG9T,EAAG,CACb,SAAW+T,GAAG,4BAA4B/T,CAAC,EAAI,CAACA,CAAC,EAAI,MAAM,KAAKA,EAAE,QAAQ,EAAE,OAAO,SAAS,EAAG,EAAG,CAChG,OAAO6T,GAAGA,GAAG,CAAA,EAAI,EAAG,EAAE,EAAGC,GAAG,CAAC,EAAG,EAAE,CACnC,EAAE,EAAE,CACP,EACC,SAAS9T,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,wBAA0B,OACnF,IAAI,EAAI4T,GACR,OAAO,eAAe5T,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAO,EAAE,uBACb,EAAK,CACL,GAAG2T,EAAE,EACL,IAAIK,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK,CAAA,EAAIC,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,eAAiBC,GACpB,SAASA,GAAGpU,EAAG,CACb,MAAO,CACL,KACA,KACJ,EAAI,SAASA,EAAE,OAAO,CACtB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,eAAiB,OAC1E,IAAI,EAAImU,GACR,OAAO,eAAenU,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAO,EAAE,cACb,EAAK,CACL,GAAGkU,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAcC,GACjB,SAASA,GAAGvU,EAAG,CACb,MAAO,CACL,OACA,OACA,KACA,MACA,UACA,QACA,KACA,MACA,QACA,SACA,OACA,OACA,QACA,SACA,QACA,KACJ,EAAI,SAASA,EAAE,OAAO,CACtB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAI,EAAIsU,GACR,OAAO,eAAetU,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAO,EAAE,WACb,EAAK,CACL,GAAGqU,EAAE,EACL,OAAO,eAAeJ,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,eAAiBO,GACpB,IAAIC,GAAK9E,GAAI+E,GAAKR,GAAIS,GAAKN,GAC3B,SAASG,GAAGxU,EAAG,EAAG,CAChB,IAAM,SAAW,EAAI,IACrB,IAAI,EAAI,EAAI,YAAc,aAAcE,EAAI,EAAI,kBAAoB,cACpE,GAAIF,EAAE,WAAa,KAAK,cAAgBA,EAAE,CAAC,EAAG,CAC5C,IAAI,EAAIA,EAAE,CAAC,EACX,MAAQ2U,GAAG,aAAa,CAAC,GAAK,IAAKF,GAAG,eAAe,CAAC,GAAK,IAAKC,GAAG,gBAAgB,CAAC,EAClF,GAAI,EAAExU,CAAC,EACL,EAAI,EAAEA,CAAC,UACA,EAAE,aAAe,MAAQ,EAAE,WAAWA,CAAC,EAC9C,EAAI,EAAE,WAAWA,CAAC,MAElB,QAAO,EAAE,WACb,OAAOsU,GAAG,EAAG,CAAC,CAClB,CACE,OAAOxU,CACT,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,eAAiB,OAC1E,IAAI,EAAIiU,GACR,OAAO,eAAejU,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAO,EAAE,cACb,EAAK,CACL,GAAGgU,EAAE,EACL,IAAIY,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAKhV,IAAMA,GAAG,eAAiB,SAASE,EAAG,EAAG,EAAG,CACrE,GAAI,GAAK,UAAU,SAAW,EAC5B,QAASE,EAAI,EAAG,EAAI,EAAE,OAAQG,EAAGH,EAAI,EAAGA,KACrCG,GAAK,EAAEH,KAAK,MAAQG,IAAMA,EAAI,MAAM,UAAU,MAAM,KAAK,EAAG,EAAGH,CAAC,GAAIG,EAAEH,CAAC,EAAI,EAAEA,CAAC,GACnF,OAAOF,EAAE,OAAOK,GAAK,MAAM,UAAU,MAAM,KAAK,CAAC,CAAC,CACpD,EACA,OAAO,eAAewU,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,cAAgBE,GACnB,IAAIC,GAAKjE,GAAIkE,GAAKtB,GAAIuB,GAAK1F,GAAI2F,GAAKxF,GACpC,SAASoF,GAAG/U,EAAG,CACb,OAAO,MAAM,KAAKA,EAAE,oBAAqBkV,GAAG,mBAAiB,CAAG,CAAC,EAAE,OAAO,SAAS,EAAG,EAAG,CACvF,SAAWC,GAAG,eAAe,CAAC,MAASH,GAAG,4BAA4B,CAAC,EAAIF,GAAGA,GAAG,CAAE,EAAE,EAAG,EAAE,EAAG,CAAC,CAAC,EAAG,EAAE,EAAIA,GAAGA,GAAG,CAAA,EAAI,EAAG,EAAE,KAAOG,GAAG,yBAAyB,CAAC,EAAG,EAAE,CACjK,EAAE,EAAE,CACP,EACC,SAASjV,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAI,EAAI6U,GACR,OAAO,eAAe7U,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,CACL,GAAG4U,EAAE,EACL,IAAIQ,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,uBAAyBC,GAC5B,SAASA,GAAGtV,EAAG,CACb,MAAO,CAAC,aAAa,KAAKA,CAAC,CAC7B,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,uBAAyB,OAClF,IAAI,EAAIqV,GACR,OAAO,eAAerV,EAAG,yBAA0B,CAAE,WAAY,GAAI,IAAK,UAAW,CACnF,OAAO,EAAE,sBACb,EAAK,CACL,GAAGoV,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,UAAYC,GACf,IAAIC,GAAK9C,GACT,SAAS6C,GAAGzV,EAAG,CACb,SAAW0V,GAAG,UAAU1V,CAAC,EAAI,GAAK,CAAC,CAACA,GAAK,CAAC,CAACA,EAAE,UAAYA,EAAE,WAAa,KAAK,YAC/E,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,UAAY,OACrE,IAAI,EAAIwV,GACR,OAAO,eAAexV,EAAG,YAAa,CAAE,WAAY,GAAI,IAAK,UAAW,CACtE,OAAO,EAAE,SACb,EAAK,CACL,GAAGuV,EAAE,EACL,IAAII,GAAK,CAAE,EAAEC,GAAK,CAAA,EAAIC,GAAK,CAAA,EAAIC,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,OAASC,GACZ,SAASA,GAAG/V,EAAG,CACb,OAAOA,IAAM,KAAO,GAAKA,EAAE,WAAW,SAAW,CACnD,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAI,EAAI8V,GACR,OAAO,eAAe9V,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAO,EAAE,MACb,EAAK,CACL,GAAG6V,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAcC,GACjB,IAAIC,GAAKjC,GAAIkC,GAAKb,GAAIc,GAAK1G,GAAI2G,GAAKjC,GACpC,SAAS6B,GAAGlW,EAAG,EAAG,CAChB,IAAI,EAAI,GACR,SAAWsW,GAAG,aAAatW,CAAC,GAAK,IAAKmW,GAAG,gBAAgBnW,CAAC,EAAI,OAAUoW,GAAG,WAAWpW,CAAC,MAASqW,GAAG,eAAerW,CAAC,EAAI,EAAIA,EAAE,MAAQA,EAAE,cAAgB,OAAS,EAAIA,EAAE,YAAY,QAAQ,IAAK,EAAE,GAAI,IAAM,SAAW,EAAI,EAAE,QAAQ,IAAI,OAAO,EAAG,GAAG,EAAG,EAAE,GAAI,EAAE,KAAI,EAAG,SAAW,EACpR,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAI,EAAIiW,GACR,OAAO,eAAejW,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAO,EAAE,WACb,EAAK,CACL,GAAGgW,EAAE,EACL,OAAO,eAAeJ,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,QAAUW,GACb,IAAIC,GAAKX,GAAIY,GAAKT,GAClB,SAASO,GAAGvW,EAAG,EAAG,CAChBA,EAAE,UAAW,EACb,QAAS,EAAI,CAACA,CAAC,EAAG,EAAE,OAAS,GAAK,CAChC,IAAIE,EAAI,EAAE,MAAO,EACjB,GAAIA,EAAG,CACL,GAAIF,EAAIE,KAAOsW,GAAG,QAAQxW,CAAC,GAAK,IAAKyW,GAAG,aAAazW,EAAG,CAAC,EACvD,MAAO,GACT,EAAE,KAAK,MAAM,EAAG,MAAM,KAAKA,EAAE,UAAU,CAAC,CAC9C,CACA,CACE,MAAO,EACT,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAU,OACnE,IAAI,EAAI4V,GACR,OAAO,eAAe5V,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAO,EAAE,OACb,EAAK,CACL,GAAG2V,EAAE,EACL,IAAIe,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,WAAaC,GAChB,IAAIC,GAAKjE,GACT,SAASgE,GAAG5W,EAAG,CACb,SAAW6W,GAAG,UAAU7W,CAAC,EAAI,GAAK,CAAC,CAACA,GAAK,CAAC,CAACA,EAAE,UAAYA,EAAE,WAAa,KAAK,sBAC/E,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,WAAa,OACtE,IAAI,EAAI2W,GACR,OAAO,eAAe3W,EAAG,aAAc,CAAE,WAAY,GAAI,IAAK,UAAW,CACvE,OAAO,EAAE,UACb,EAAK,CACL,GAAG0W,EAAE,EACL,IAAII,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,aAAeC,GAClB,IAAIC,GAAK/D,GACT,SAAS8D,GAAGhX,EAAG,CACb,IAAI,KAAQiX,GAAG,MAAM,KAAK,EAC1B,OAAO,EAAE,UAAYjX,EAAG,EAAE,kBAAoB,CAChD,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,aAAe,OACxE,IAAI,EAAI+W,GACR,OAAO,eAAe/W,EAAG,eAAgB,CAAE,WAAY,GAAI,IAAK,UAAW,CACzE,OAAO,EAAE,YACb,EAAK,CACL,GAAG8W,EAAE,EACL,IAAII,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,OAASC,GACZ,SAASA,GAAGpX,EAAG,CACb,IAAI,EAAIA,EAAE,sBAAqB,EAAI,EAAI,OAAO,aAAe,SAAS,gBAAgB,WAAYE,EAAI,OAAO,aAAe,SAAS,gBAAgB,UAAW,EAAI,EAAE,IAAMA,EAAGG,EAAI,EAAE,KAAO,EAC5L,MAAO,CACL,IAAK,EACL,KAAMA,EACN,OAAQ,EAAI,EAAE,OACd,MAAOA,EAAI,EAAE,KACd,CACH,EACC,SAASL,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAI,EAAImX,GACR,OAAO,eAAenX,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAO,EAAE,MACb,EAAK,CACL,GAAGkX,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,QAAUC,GACb,SAASA,GAAGvX,EAAG,EAAG,CAChB,MAAM,QAAQ,CAAC,GAAK,EAAI,EAAE,QAAO,EAAI,EAAE,QAAQ,SAAS,EAAG,CACzD,OAAOA,EAAE,QAAQ,CAAC,CACtB,CAAG,GAAKA,EAAE,QAAQ,CAAC,CACnB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAU,OACnE,IAAI,EAAIsX,GACR,OAAO,eAAetX,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAO,EAAE,OACb,EAAK,CACL,GAAGqX,EAAE,GACJ,SAASrX,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAUA,EAAE,OAASA,EAAE,KAAOA,EAAE,eAAiBA,EAAE,YAAcA,EAAE,YAAcA,EAAE,OAASA,EAAE,aAAeA,EAAE,WAAaA,EAAE,QAAUA,EAAE,UAAYA,EAAE,kBAAoBA,EAAE,uBAAyBA,EAAE,cAAgBA,EAAE,cAAgBA,EAAE,kBAAoBA,EAAE,eAAiBA,EAAE,wBAA0BA,EAAE,iBAAmBA,EAAE,iBAAmBA,EAAE,2BAA6BA,EAAE,YAAcA,EAAE,kBAAoBA,EAAE,cAAgBA,EAAE,OAAS,OACrf,IAAI,EAAIwP,GACR,OAAO,eAAexP,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAO,EAAE,iBACb,EAAK,EACH,IAAI,EAAI2P,GACR,OAAO,eAAe3P,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,EACH,IAAIE,EAAI4P,GACR,OAAO,eAAe9P,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOE,EAAE,MACb,EAAK,EACH,IAAI,EAAI+P,GACR,OAAO,eAAejQ,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,EACH,IAAIK,EAAI+P,GACR,OAAO,eAAepQ,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOK,EAAE,iBACb,EAAK,EACH,IAAIC,EAAIiQ,GACR,OAAO,eAAevQ,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOM,EAAE,WACb,EAAK,EACH,IAAI,EAAIyQ,GACR,OAAO,eAAe/Q,EAAG,6BAA8B,CAAE,WAAY,GAAI,IAAK,UAAW,CACvF,OAAO,EAAE,0BACb,EAAK,EACH,IAAI,EAAIgT,GACR,OAAO,eAAehT,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAO,EAAE,gBACb,EAAK,EACH,IAAI,EAAIuT,GACR,OAAO,eAAevT,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAO,EAAE,gBACb,EAAK,EACH,IAAI+B,EAAI4R,GACR,OAAO,eAAe3T,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAO+B,EAAE,uBACb,EAAK,EACH,IAAI6D,EAAIoO,GACR,OAAO,eAAehU,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAO4F,EAAE,cACb,EAAK,EACH,IAAI,EAAIgP,GACR,OAAO,eAAe5U,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,EACH,IAAI,EAAIoV,GACR,OAAO,eAAepV,EAAG,yBAA0B,CAAE,WAAY,GAAI,IAAK,UAAW,CACnF,OAAO,EAAE,sBACb,EAAK,EACH,IAAI,EAAIyQ,GACR,OAAO,eAAezQ,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAO,EAAE,iBACb,EAAK,EACH,IAAIyF,EAAI8P,GACR,OAAO,eAAevV,EAAG,YAAa,CAAE,WAAY,GAAI,IAAK,UAAW,CACtE,OAAOyF,EAAE,SACb,EAAK,EACH,IAAImB,EAAI+O,GACR,OAAO,eAAe3V,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAO4G,EAAE,OACb,EAAK,EACH,IAAIlB,EAAIgR,GACR,OAAO,eAAe1W,EAAG,aAAc,CAAE,WAAY,GAAI,IAAK,UAAW,CACvE,OAAO0F,EAAE,UACb,EAAK,EACH,IAAImB,EAAIiQ,GACR,OAAO,eAAe9W,EAAG,eAAgB,CAAE,WAAY,GAAI,IAAK,UAAW,CACzE,OAAO6G,EAAE,YACb,EAAK,EACH,IAAI,EAAIgP,GACR,OAAO,eAAe7V,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAO,EAAE,MACb,EAAK,EACH,IAAIyG,EAAIuP,GACR,OAAO,eAAehW,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOyG,EAAE,WACb,EAAK,EACH,IAAIa,EAAI4M,GACR,OAAO,eAAelU,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAOsH,EAAE,cACb,EAAK,EACH,IAAIC,EAAI8M,GACR,OAAO,eAAerU,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOuH,EAAE,WACb,EAAK,EACH,IAAIT,GAAKoM,GACT,OAAO,eAAelT,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAO8G,GAAG,IACd,EAAK,EACH,IAAIR,EAAI4Q,GACR,OAAO,eAAelX,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOsG,EAAE,MACb,EAAK,EACH,IAAI,EAAI+Q,GACR,OAAO,eAAerX,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAO,EAAE,OACb,EAAK,CACL,GAAGuP,EAAE,EACL,IAAIiI,GAAK,CAAE,EACX,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,wBAA0BC,GAC7B,IAAIC,GAAKnI,GACT,SAASkI,GAAGzX,EAAG,EAAG,EAAGE,EAAG,EAAG,CACzB,IAAIG,EACJ,IAAM,SAAW,EAAI,IACrB,IAAIC,EAAI,SAAS,YAAa,EAC9B,GAAIJ,IAAM,QAAUI,EAAE,SAASN,EAAG,CAAC,EAAGM,EAAE,OAAO,EAAG,CAAC,IAAMA,EAAE,SAAS,EAAG,CAAC,EAAGA,EAAE,OAAON,EAAGA,EAAE,WAAW,MAAM,GAAI,IAAM,GAAI,CACtH,IAAI,EAAIM,EAAE,gBAAiB,EAC3B,SAAWoX,GAAG,kBAAkB,CAAC,CACrC,CACE,IAAI,EAAIpX,EAAE,cAAa,EAAI,EAAI,SAAS,cAAc,KAAK,EAC3D,EAAE,YAAY,CAAC,EACf,IAAIyB,GAAK1B,EAAI,EAAE,eAAiB,MAAQA,IAAM,OAASA,EAAI,GAC3D,OAAO0B,CACT,CACA,OAAO,eAAeuN,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,sCAAwCqI,GAC3C,IAAIC,GAAKrI,GAAIsI,GAAKL,GAClB,SAASG,GAAG3X,EAAG,EAAG,EAAGE,EAAG,CACtB,IAAI,KAAQ2X,GAAG,yBAAyB7X,EAAG,EAAG,EAAGE,CAAC,EAClD,SAAW0X,GAAG,wBAAwB,CAAC,CACzC,EACC,SAAS5X,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sCAAwC,OACjG,IAAI,EAAIsP,GACR,OAAO,eAAetP,EAAG,wCAAyC,CAAE,WAAY,GAAI,IAAK,UAAW,CAClG,OAAO,EAAE,qCACb,EAAK,CACL,GAAGqP,EAAE,EACL,IAAIyI,GAAK,CAAE,GACV,SAAS9X,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,wBAA0B,OACnF,IAAI,EAAIwX,GACR,OAAO,eAAexX,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAO,EAAE,uBACb,EAAK,CACL,GAAG8X,EAAE,EACL,IAAIC,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,MAAQC,GACX,IAAIC,GAAK3I,GACT,SAAS0I,GAAGjY,EAAG,EAAG,CAChB,IAAI,EAAGE,EACP,GAAI,IAAM,SAAW,EAAI,OAASgY,GAAG,eAAelY,CAAC,EAAG,CACtDA,EAAE,MAAO,EACT,IAAI,EAAI,EAAI,EAAIA,EAAE,MAAM,OACxBA,EAAE,kBAAkB,EAAG,CAAC,CAC5B,KAAS,CACL,IAAIK,EAAI,SAAS,YAAa,EAAEC,EAAI,OAAO,aAAc,EACzD,GAAI,CAACA,EACH,OACF,IAAI,EAAI,SAAS,EAAG,CAClB,IAAI,EAAI,SAAS,eAAe,EAAE,EAClC,EAAE,YAAY,CAAC,EAAGD,EAAE,SAAS,EAAG,CAAC,EAAGA,EAAE,OAAO,EAAG,CAAC,CACvD,EAAO,EAAI,SAAS,EAAG,CACjB,OAAO,GAAK,IACb,EAAE,EAAIL,EAAE,WAAY+B,EAAI,EAAI,EAAE,CAAC,EAAI,EAAE,EAAE,OAAS,CAAC,EAClD,GAAI,EAAEA,CAAC,EAAG,CACR,KAAO,EAAEA,CAAC,GAAKA,EAAE,WAAa,KAAK,WACjCA,EAAI,EAAIA,EAAE,WAAaA,EAAE,UAC3B,GAAI,EAAEA,CAAC,GAAKA,EAAE,WAAa,KAAK,UAAW,CACzC,IAAI6D,GAAK1F,GAAK,EAAI6B,EAAE,eAAiB,MAAQ,IAAM,OAAS,OAAS,EAAE,UAAY,MAAQ7B,IAAM,OAASA,EAAI,EAAG,EAAI,EAAI,EAAI0F,EAC7HvF,EAAE,SAAS0B,EAAG,CAAC,EAAG1B,EAAE,OAAO0B,EAAG,CAAC,CAChC,MACC,EAAE/B,CAAC,CACN,MACC,EAAEA,CAAC,EACLM,EAAE,gBAAiB,EAAEA,EAAE,SAASD,CAAC,CACrC,CACA,EACC,SAASL,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,MAAQ,OACjE,IAAI,EAAIgY,GACR,OAAO,eAAehY,EAAG,QAAS,CAAE,WAAY,GAAI,IAAK,UAAW,CAClE,OAAO,EAAE,KACb,EAAK,CACL,GAAG+X,EAAE,EACL,IAAII,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,sBAAwBC,GAC3B,SAASA,IAAK,CACZ,IAAIrY,EAAI,OAAO,aAAc,EAC7B,GAAIA,IAAM,KACR,MAAO,CAAC,KAAM,CAAC,EACjB,IAAI,EAAIA,EAAE,UAAW,EAAIA,EAAE,YAC3B,OAAO,IAAM,KAAO,CAAC,KAAM,CAAC,GAAK,EAAE,WAAa,KAAK,WAAa,EAAE,WAAW,OAAS,IAAM,EAAE,WAAW,CAAC,IAAM,QAAU,EAAI,EAAE,WAAW,CAAC,EAAG,EAAI,IAAM,EAAI,EAAE,WAAW,EAAI,CAAC,EAAG,EAAE,cAAgB,OAAS,EAAI,EAAE,YAAY,UAAW,CAAC,EAAG,CAAC,EACnP,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sBAAwB,OACjF,IAAI,EAAIoY,GACR,OAAO,eAAepY,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAO,EAAE,qBACb,EAAK,CACL,GAAGmY,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,SAAWC,GACd,SAASA,IAAK,CACZ,IAAIxY,EAAI,OAAO,aAAc,EAC7B,OAAOA,GAAKA,EAAE,WAAaA,EAAE,WAAW,CAAC,EAAI,IAC/C,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,SAAW,OACpE,IAAI,EAAIuY,GACR,OAAO,eAAevY,EAAG,WAAY,CAAE,WAAY,GAAI,IAAK,UAAW,CACrE,OAAO,EAAE,QACb,EAAK,CACL,GAAGsY,EAAE,EACL,IAAIG,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,oBAAsBC,GACzB,IAAIC,GAAKrJ,GAAIsJ,GAAKV,GAAIW,GAAKzJ,GAC3B,SAASsJ,GAAG3Y,EAAG,CACb,IAAI,KAAQ4Y,GAAG,gBAAgB5Y,EAAG,EAAE,EACpC,GAAI,IAAM,KACR,MAAO,GACT,MAAQ4Y,GAAG,eAAe,CAAC,EACzB,OAAO,EAAE,eAAiB,EAAE,MAAM,OACpC,IAAI,KAAQC,GAAG,yBAA0B3Y,EAAI,EAAE,CAAC,EAAG,EAAI,EAAE,CAAC,EAC1D,OAAOA,IAAM,KAAO,MAAS4Y,GAAG,uCAAuC9Y,EAAGE,EAAG,EAAG,OAAO,CACzF,EACC,SAASF,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,oBAAsB,OAC/E,IAAI,EAAI0Y,GACR,OAAO,eAAe1Y,EAAG,sBAAuB,CAAE,WAAY,GAAI,IAAK,UAAW,CAChF,OAAO,EAAE,mBACb,EAAK,CACL,GAAGyY,EAAE,EACL,IAAIM,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,sBAAwBC,GAC3B,IAAIC,GAAK3J,GAAI4J,GAAKf,GAAIgB,GAAK9J,GAC3B,SAAS2J,GAAGjZ,EAAG,CACb,IAAI,KAAQkZ,GAAG,gBAAgBlZ,CAAC,EAChC,GAAI,IAAM,SAAYkZ,GAAG,SAASlZ,CAAC,EACjC,MAAO,GACT,MAAQkZ,GAAG,eAAe,CAAC,EACzB,OAAO,EAAE,eAAiB,EAC5B,MAAQA,GAAG,SAASlZ,CAAC,EACnB,MAAO,GACT,IAAI,KAAQmZ,GAAG,yBAA0BjZ,EAAI,EAAE,CAAC,EAAG,EAAI,EAAE,CAAC,EAC1D,OAAOA,IAAM,KAAO,MAASkZ,GAAG,uCAAuCpZ,EAAGE,EAAG,EAAG,MAAM,CACxF,EACC,SAASF,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sBAAwB,OACjF,IAAI,EAAIgZ,GACR,OAAO,eAAehZ,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAO,EAAE,qBACb,EAAK,CACL,GAAG+Y,EAAE,EACL,IAAIM,GAAK,CAAA,EAAIC,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,KAAOC,GACV,IAAIC,GAAKjK,GAAIkK,GAAKlB,GAClB,SAASgB,IAAK,CACZ,IAAIvZ,KAAQyZ,GAAG,UAAQ,EAAK,KAAQD,GAAG,MAAM,MAAM,EACnD,GAAI,EAAE,GAAK,SAAU,EAAE,OAAS,GAAI,CAAC,CAACxZ,EACpC,OAAOA,EAAE,WAAW,CAAC,EAAG,UAAW,CACjC,IAAIE,EAAI,OAAO,aAAc,EAC7BA,IAAMF,EAAE,cAAc,CAAC,EAAGA,EAAE,YAAY,CAAC,EAAGE,EAAE,gBAAiB,EAAEA,EAAE,SAASF,CAAC,EAAG,WAAW,UAAW,CACpG,EAAE,OAAQ,CACX,EAAE,GAAG,EACP,CACL,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,KAAO,OAChE,IAAI,EAAIsZ,GACR,OAAO,eAAetZ,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAO,EAAE,IACb,EAAK,CACL,GAAGqZ,EAAE,GACJ,SAASrZ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EAAGA,EAAE,KAAOA,EAAE,sBAAwBA,EAAE,oBAAsBA,EAAE,SAAWA,EAAE,sBAAwBA,EAAE,MAAQA,EAAE,wBAA0BA,EAAE,sCAAwC,OACzO,IAAI,EAAIqP,GACR,OAAO,eAAerP,EAAG,wCAAyC,CAAE,WAAY,GAAI,IAAK,UAAW,CAClG,OAAO,EAAE,qCACb,EAAK,EACH,IAAI,EAAI8X,GACR,OAAO,eAAe9X,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAO,EAAE,uBACb,EAAK,EACH,IAAIE,EAAI6X,GACR,OAAO,eAAe/X,EAAG,QAAS,CAAE,WAAY,GAAI,IAAK,UAAW,CAClE,OAAOE,EAAE,KACb,EAAK,EACH,IAAI,EAAIiY,GACR,OAAO,eAAenY,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAO,EAAE,qBACb,EAAK,EACH,IAAIK,EAAIiY,GACR,OAAO,eAAetY,EAAG,WAAY,CAAE,WAAY,GAAI,IAAK,UAAW,CACrE,OAAOK,EAAE,QACb,EAAK,EACH,IAAIC,EAAImY,GACR,OAAO,eAAezY,EAAG,sBAAuB,CAAE,WAAY,GAAI,IAAK,UAAW,CAChF,OAAOM,EAAE,mBACb,EAAK,EACH,IAAI,EAAIyY,GACR,OAAO,eAAe/Y,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAO,EAAE,qBACb,EAAK,EACH,IAAI,EAAIqZ,GACR,OAAO,eAAerZ,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAO,EAAE,IACb,EAAK,CACL,GAAGoP,EAAE,EACL,MAAMsK,WAAW1V,CAAE,CAMjB,QAAQ,EAAG,CACT,OAAQ,KAAK,wBAAwB,CAAC,EAAG,EAAE,QAAO,CAChD,KAAKvD,EAAE,UACL,KAAK,UAAU,CAAC,EAChB,MACF,KAAKA,EAAE,OACL,KAAK,OAAO,CAAC,EACb,MACF,KAAKA,EAAE,MACL,KAAK,MAAM,CAAC,EACZ,MACF,KAAKA,EAAE,KACP,KAAKA,EAAE,MACL,KAAK,kBAAkB,CAAC,EACxB,MACF,KAAKA,EAAE,GACP,KAAKA,EAAE,KACL,KAAK,eAAe,CAAC,EACrB,MACF,KAAKA,EAAE,IACL,KAAK,WAAW,CAAC,EACjB,KACR,CACI,EAAE,MAAQ,KAAO,CAAC,EAAE,SAAW,CAAC,EAAE,SAAW,KAAK,aAAa,CAAC,EAAG,EAAE,OAAS,UAAY,EAAE,SAAW,EAAE,WAAa,EAAE,eAAc,EAAI,KAAK,oBAAmB,EACtK,CAME,wBAAwB,EAAG,CACzB,KAAK,mBAAmB,CAAC,GAAKc,GAAG,EAAE,OAAO,IAAM,KAAK,OAAO,QAAQ,MAAK,EAAI,EAAE,SAAW,EAAE,SAAW,EAAE,QAAU,EAAE,UAAY,KAAK,OAAO,eAAe,eAAe,CAAC,EAChL,CAQE,MAAM,EAAG,CACP,EAAE,UAAY,KAAK,OAAO,GAAG,eAAgB,CACjD,CAME,SAAS,EAAG,CACV,MAAM,EAAI,KAAK,OAAO,aAAa,oBAAoB,EAAE,MAAM,EAC/D,EAAE,WAAa,EACnB,CAME,UAAU,EAAG,CACX,MAAM,EAAI,KAAK,OAAO,aAAa,oBAAoB,EAAE,MAAM,EAC/D,EAAE,WAAa,EACnB,CAOE,eAAe,EAAG,CAChB,KAAM,CAAE,eAAgB,CAAG,EAAG,KAAK,OACnC,EAAE,kBAAoB,EAAE,mBAAmB,CAAC,CAChD,CAME,eAAe,EAAG,CAChB,KAAM,CAAE,eAAgB,EAAG,aAAcrB,EAAG,MAAO,GAAM,KAAK,OAC9D,EAAE,kBAAoB,EAAE,mBAAmB,CAAC,EAAE,KAAK,IAAM,CACvD,MAAMG,EAAIH,EAAE,qBAAsB,EAAEI,EAAIJ,EAAE,0BAA0BG,EAAG,EAAE,EACzE,EAAE,WAAWC,EAAG,EAAE,UAAU,KAAK,EAAG,EAAE,eAAe,CAAC,CAC5D,CAAK,CACL,CAME,WAAW,EAAG,CACZ,KAAM,CAAE,cAAe,EAAG,MAAOJ,CAAC,EAAK,KAAK,OACxC,EAAE,SAEL,EAAE,SAAWA,EAAE,iBAAiB,EAAE,EAAIA,EAAE,aAAa,EAAE,IAAM,EAAE,eAAgB,CACpF,CAIE,qBAAsB,CACpB,KAAK,OAAO,eAAe,eAAe,OAAS,GAAK,KAAK,sBAAuB,CACxF,CAME,aAAa,EAAG,CACd,KAAK,OAAO,aAAa,aAAa,UAAY,EAAE,eAAgB,EAAE,KAAK,OAAO,MAAM,6BAA6B,GAAG,EAAG,KAAK,kBACpI,CAME,MAAM,EAAG,CACP,KAAM,CAAE,aAAc,EAAG,GAAIA,GAAM,KAAK,OAAQ,EAAI,EAAE,aACtD,GAAI,IAAM,QAAU,EAAE,KAAK,qBAAuBA,EAAE,mBAAqBA,EAAE,0BAA4B,EAAE,UAAY,CAAC0C,GACpH,OACF,IAAIvC,EAAI,EACR,EAAE,eAAiB,QAAU6O,GAAG,EAAE,YAAY,GAAK,CAAC,EAAE,SAAW,KAAK,OAAO,aAAa,0BAA0B,KAAK,OAAO,aAAa,iBAAiB,EAAI,EAAE,cAAgBC,GAAG,EAAE,YAAY,EAAI9O,EAAI,KAAK,OAAO,aAAa,0BAA0B,KAAK,OAAO,aAAa,kBAAoB,CAAC,EAAIA,EAAI,KAAK,OAAO,aAAa,MAAO,EAAE,KAAK,OAAO,MAAM,WAAWA,CAAC,EAAG,KAAK,OAAO,QAAQ,YAAYA,CAAC,EAAG,EAAE,eAAgB,CACnb,CAME,UAAU,EAAG,CACX,KAAM,CAAE,aAAc,EAAG,MAAOH,CAAC,EAAK,KAAK,OAAQ,CAAE,aAAc,EAAG,cAAeG,CAAG,EAAG,EAC3F,GAAI,MAAM,QAAU,CAAC8D,EAAE,aAAe,CAAC,EAAE,cAAgB,CAAC+K,GAAG,EAAE,YAAY,GAE3E,IAAI,EAAE,eAAc,EAAI,KAAK,OAAO,QAAQ,MAAO,EAAI,EAAE,eAAiB,EAAE,WAAa,CACvFhP,EAAE,iBAAkB,EACpB,MACN,CACI,GAAIG,IAAM,KAEV,IAAIA,EAAE,QAAS,CACb,EAAE,YAAYA,CAAC,EACf,MACN,CACI,GAAI,EAAE,QAAS,CACb,EAAE,YAAY,CAAC,EACf,MAAMgE,EAAI,EAAE,aACZnE,EAAE,WAAWmE,EAAGnE,EAAE,UAAU,GAAG,EAC/B,MACN,CACI8E,GAAG3E,EAAG,CAAC,EAAI,KAAK,YAAYA,EAAG,CAAC,EAAIH,EAAE,WAAWG,EAAGH,EAAE,UAAU,GAAG,GACvE,CAQE,OAAO,EAAG,CACR,KAAM,CAAE,aAAc,EAAG,MAAOA,CAAC,EAAK,KAAK,OAAQ,CAAE,aAAc,EAAG,UAAWG,CAAG,EAAG,EACvF,GAAI,GAAC8D,EAAE,aAAe,CAACgL,GAAG,EAAE,YAAY,GAExC,IAAI,EAAE,eAAc,EAAI,KAAK,OAAO,QAAQ,MAAO,EAAI,EAAE,eAAiB,EAAE,UAAY,CACtFjP,EAAE,aAAc,EAChB,MACN,CACI,GAAIG,IAAM,KAEV,IAAIA,EAAE,QAAS,CACb,EAAE,YAAYA,CAAC,EACf,MACN,CACI,GAAI,EAAE,QAAS,CACb,EAAE,YAAY,CAAC,EAAGH,EAAE,WAAWG,EAAGH,EAAE,UAAU,KAAK,EACnD,MACN,CACI8E,GAAG,EAAG3E,CAAC,EAAI,KAAK,YAAY,EAAGA,CAAC,EAAIH,EAAE,WAAWG,EAAGH,EAAE,UAAU,KAAK,GACzE,CAOE,YAAY,EAAG,EAAG,CAChB,KAAM,CAAE,aAAcA,EAAG,QAAS,CAAC,EAAK,KAAK,OAC7C,EAAE,YAAc,SAAWkP,GAAG,MAAM,EAAE,UAAW,EAAE,EAAGlP,EAAE,YAAY,EAAG,CAAC,EAAE,KAAK,IAAM,CACnF,EAAE,MAAO,CACf,CAAK,EACL,CAME,kBAAkB,EAAG,CACnB,MAAM,EAAI6J,GAAG,SAAS,SAAS,EAAE,OAAO,IAAM,CAAC,EAAE,UAAY,EAAE,UAAYtJ,EAAE,KAC7E,GAAI,KAAK,OAAO,GAAG,mBAAqB,EACtC,OACF,KAAK,OAAO,QAAQ,MAAO,EAC3B,KAAM,CAAE,aAAcP,CAAG,EAAG,KAAK,OAAO,aAAcG,IAAMH,GAAK,KAAO,OAASA,EAAE,gBAAkB,OAASiP,GAAGjP,EAAE,YAAY,EAAI,SAAW,KAAK,OAAO,eAAe,iBACzK,GAAI,EAAE,UAAY,EAAE,UAAYO,EAAE,MAAQJ,EAAG,CAC3C,KAAK,OAAO,oBAAoB,yBAA0B,EAC1D,MACN,CACI,GAAI,EAAE,UAAYI,EAAE,MAAQ,EAAE,UAAYA,EAAE,OAAS,CAAC,KAAK,MAAQ,KAAK,OAAO,MAAM,aAAY,EAAK,KAAK,OAAO,MAAM,mBAAoB,CAC1I,EAAE,eAAgB,EAClB,MACN,CACIiB,GAAG,IAAM,CACP,KAAK,OAAO,aAAa,cAAgB,KAAK,OAAO,aAAa,aAAa,mBAAoB,CACzG,EAAO,EAAE,EAAC,EAAI,KAAK,OAAO,eAAe,eAAe,CAAC,CACzD,CAME,eAAe,EAAG,CAChB,GAAI,KAAK,OAAO,GAAG,kBAAmB,CACpC,GAAIqI,GAAG,SAAS,SAAS,EAAE,OAAO,IAAM,CAAC,EAAE,UAAY,EAAE,UAAYtJ,EAAE,KACrE,OACF,KAAK,OAAO,GAAG,iBAAkB,CACvC,CACI,KAAK,OAAO,QAAQ,MAAO,EAC3B,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OAAO,aAAcL,IAAM,GAAK,KAAO,OAAS,EAAE,gBAAkB,OAAS8O,GAAG,EAAE,YAAY,EAAI,SAAW,KAAK,OAAO,eAAe,iBACzK,GAAI,EAAE,UAAY,EAAE,UAAYzO,EAAE,IAAML,EAAG,CACzC,KAAK,OAAO,oBAAoB,yBAAyB,EAAE,EAC3D,MACN,CACI,GAAI,EAAE,UAAYK,EAAE,IAAM,EAAE,UAAYA,EAAE,MAAQ,CAAC,KAAK,MAAQ,KAAK,OAAO,MAAM,iBAAgB,EAAK,KAAK,OAAO,MAAM,eAAgB,CACvI,EAAE,eAAgB,EAClB,MACN,CACIiB,GAAG,IAAM,CACP,KAAK,OAAO,aAAa,cAAgB,KAAK,OAAO,aAAa,aAAa,mBAAoB,CACzG,EAAO,EAAE,EAAC,EAAI,KAAK,OAAO,eAAe,eAAe,CAAC,CACzD,CAME,mBAAmB,EAAG,CACpB,MAAM,EAAI,EAAE,UAAYjB,EAAE,OAAS,KAAK,OAAO,QAAQ,QAAQ,OAAQP,EAAI,EAAE,UAAYO,EAAE,OAAS,KAAK,OAAO,cAAc,OAAQ,EAAI,EAAE,UAAYA,EAAE,OAAS,KAAK,OAAO,cAAc,OAAQJ,EAAI,EAAE,UAAYI,EAAE,IACzN,MAAO,EAAE,EAAE,UAAYJ,GAAK,GAAKH,GAAK,EAC1C,CAIE,iBAAkB,CAChB,KAAK,OAAO,QAAQ,QAAU,KAAK,OAAO,QAAQ,YAAW,EAAI,KAAK,OAAO,QAAQ,QAAQ,KAAM,CACvG,CAIE,uBAAwB,CACtB,KAAK,OAAO,QAAQ,QAAU,KAAK,OAAO,QAAQ,YAAW,EAAI,KAAK,OAAO,cAAc,QAAU,KAAK,OAAO,cAAc,KAAM,CACzI,CACA,CACA,MAAMyZ,EAAG,CAKP,YAAY,EAAG,CACb,KAAK,OAAS,CAAA,EAAI,KAAK,YAAc,CACzC,CAME,IAAI,QAAS,CACX,OAAO,KAAK,OAAO,MACvB,CAME,IAAI,OAAQ,CACV,OAAO,KAAK,MAChB,CAME,IAAI,OAAQ,CACV,OAAOlY,GAAG,KAAK,YAAY,QAAQ,CACvC,CAWE,OAAO,IAAI,EAAG,EAAGvB,EAAG,CAClB,OAAO,MAAM,OAAO,CAAC,CAAC,GAAK,QAAQ,IAAI,EAAG,EAAGA,CAAC,EAAG,KAAO,EAAE,OAAO,CAAC,EAAGA,CAAC,EAAG,GAC7E,CAQE,OAAO,IAAI,EAAG,EAAG,CACf,OAAO,MAAM,OAAO,CAAC,CAAC,EAAI,QAAQ,IAAI,EAAG,CAAC,EAAI,EAAE,IAAI,CAAC,CAAC,CAC1D,CAME,KAAK,EAAG,CACN,KAAK,OAAO,KAAK,CAAC,EAAG,KAAK,YAAY,CAAC,CAC3C,CAQE,KAAK,EAAG,EAAG,CACT,MAAMA,EAAI,KAAK,OAAO,CAAC,EACvB6C,EAAE,KAAK,KAAK,OAAO,CAAC,EAAE,OAAQ7C,EAAE,MAAM,EAAG,KAAK,OAAO,CAAC,EAAI,KAAK,OAAO,CAAC,EAAG,KAAK,OAAO,CAAC,EAAIA,CAC/F,CAOE,KAAK,EAAG,EAAG,CACT,MAAMA,EAAI,KAAK,OAAO,OAAO,EAAG,CAAC,EAAE,CAAC,EAAG,EAAI,EAAI,EAAGG,EAAI,KAAK,IAAI,EAAG,CAAC,EAAGC,EAAI,KAAK,OAAOD,CAAC,EACvF,EAAI,EAAI,KAAK,YAAYH,EAAG,WAAYI,CAAC,EAAI,KAAK,YAAYJ,EAAG,cAAeI,CAAC,EAAG,KAAK,OAAO,OAAO,EAAG,EAAGJ,CAAC,EAC9G,MAAM,EAAI,KAAK,kBAAkB,OAAQ,CACvC,UAAW,EACX,QAAS,CACf,CAAK,EACDA,EAAE,KAAKiF,GAAG,MAAO,CAAC,CACtB,CAQE,OAAO,EAAG,EAAGjF,EAAI,GAAI,CACnB,GAAI,CAAC,KAAK,OAAQ,CAChB,KAAK,KAAK,CAAC,EACX,MACN,CACI,EAAI,KAAK,SAAW,EAAI,KAAK,QAASA,IAAM,KAAK,OAAO,CAAC,EAAE,OAAO,SAAU,KAAK,OAAO,CAAC,EAAE,KAAKiF,GAAG,OAAO,GAC1G,MAAM,EAAIjF,EAAI,EAAI,EAClB,GAAI,KAAK,OAAO,OAAO,EAAG,EAAG,CAAC,EAAG,EAAI,EAAG,CACtC,MAAMG,EAAI,KAAK,OAAO,EAAI,CAAC,EAC3B,KAAK,YAAY,EAAG,WAAYA,CAAC,CACvC,KAAW,CACL,MAAMA,EAAI,KAAK,OAAO,EAAI,CAAC,EAC3BA,EAAI,KAAK,YAAY,EAAG,cAAeA,CAAC,EAAI,KAAK,YAAY,CAAC,CACpE,CACA,CAOE,QAAQ,EAAG,EAAG,CACZ,GAAI,KAAK,OAAO,CAAC,IAAM,OACrB,MAAM,MAAM,iBAAiB,EAC/B,KAAK,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,MAAM,EAAG,KAAK,OAAO,CAAC,EAAI,CAClE,CAOE,WAAW,EAAG,EAAG,CACf,MAAMH,EAAI,IAAI,iBACd,UAAW,KAAK,EACdA,EAAE,YAAY,EAAE,MAAM,EACxB,GAAI,KAAK,OAAS,EAAG,CACnB,GAAI,EAAI,EAAG,CACT,MAAM,EAAI,KAAK,IAAI,EAAI,EAAG,KAAK,OAAS,CAAC,EACzC,KAAK,OAAO,CAAC,EAAE,OAAO,MAAMA,CAAC,CAC9B,MACC,IAAM,GAAK,KAAK,YAAY,QAAQA,CAAC,EACvC,KAAK,OAAO,OAAO,EAAG,EAAG,GAAG,CAAC,CAC9B,MACC,KAAK,OAAO,KAAK,GAAG,CAAC,EAAG,KAAK,YAAY,YAAYA,CAAC,EACxD,EAAE,QAAS,GAAM,EAAE,KAAKiF,GAAG,QAAQ,CAAC,CACxC,CAME,OAAO,EAAG,CACR,MAAM,CAAC,IAAM,EAAI,KAAK,OAAS,GAAI,KAAK,OAAO,CAAC,EAAE,OAAO,SAAU,KAAK,OAAO,CAAC,EAAE,KAAKA,GAAG,OAAO,EAAG,KAAK,OAAO,OAAO,EAAG,CAAC,CAC/H,CAIE,WAAY,CACV,KAAK,YAAY,UAAY,GAAI,KAAK,OAAO,QAAS,GAAM,EAAE,KAAKA,GAAG,OAAO,CAAC,EAAG,KAAK,OAAO,OAAS,CAC1G,CAQE,YAAY,EAAG,EAAG,CAChB,MAAMjF,EAAI,KAAK,OAAO,QAAQ,CAAC,EAC/B,KAAK,OAAOA,EAAI,EAAG,CAAC,CACxB,CAOE,IAAI,EAAG,CACL,OAAO,KAAK,OAAO,CAAC,CACxB,CAOE,QAAQ,EAAG,CACT,OAAO,KAAK,OAAO,QAAQ,CAAC,CAChC,CAQE,YAAY,EAAG,EAAGA,EAAG,CACnB,EAAIA,EAAE,OAAO,sBAAsB,EAAG,EAAE,MAAM,EAAI,KAAK,YAAY,YAAY,EAAE,MAAM,EAAG,EAAE,KAAKiF,GAAG,QAAQ,CAChH,CAOE,kBAAkB,EAAG,EAAG,CACtB,OAAO,IAAI,YAAY,EAAG,CACxB,OAAQ,CACd,CAAK,CACL,CACA,CACA,MAAMyU,GAAK,gBAAiBC,GAAK,cAAeC,GAAK,cAAeC,GAAK,gBACzE,MAAMC,EAAG,CACP,aAAc,CACZ,KAAK,UAAY,QAAQ,QAAS,CACtC,CAME,IAAI,EAAG,CACL,OAAO,IAAI,QAAQ,CAAC,EAAG9Z,IAAM,CAC3B,KAAK,UAAY,KAAK,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,MAAMA,CAAC,CAC7D,CAAK,CACL,CACA,CACA,MAAM+Z,WAAWjW,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,mBAAqB,GAAI,KAAK,QAAU,IACtE,CAME,IAAI,mBAAoB,CACtB,OAAO,KAAK,kBAChB,CAME,IAAI,kBAAkB,EAAG,CACvB,KAAK,mBAAqB,CAC9B,CAME,IAAI,YAAa,CACf,OAAO,KAAK,QAAQ,CAAC,CACzB,CAME,IAAI,WAAY,CACd,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,CAC/C,CAME,IAAI,cAAe,CACjB,OAAO,KAAK,QAAQ,KAAK,iBAAiB,CAC9C,CAME,IAAI,aAAa,EAAG,CAClB,KAAK,kBAAoB,KAAK,cAAc,CAAC,CACjD,CAME,IAAI,WAAY,CACd,OAAO,KAAK,oBAAsB,KAAK,QAAQ,OAAS,EAAI,KAAO,KAAK,QAAQ,KAAK,kBAAoB,CAAC,CAC9G,CAME,IAAI,qBAAsB,CACxB,OAAO,KAAK,OAAO,MAAM,KAAK,kBAAoB,CAAC,EAAE,KAAMnE,GAAM,CAAC,CAACA,EAAE,OAAO,MAAM,CACtF,CAME,IAAI,yBAA0B,CAC5B,OAAO,KAAK,OAAO,MAAM,EAAG,KAAK,iBAAiB,EAAE,QAAO,EAAG,KAAMA,GAAM,CAAC,CAACA,EAAE,OAAO,MAAM,CAC/F,CAME,IAAI,eAAgB,CAClB,OAAO,KAAK,oBAAsB,EAAI,KAAO,KAAK,QAAQ,KAAK,kBAAoB,CAAC,CACxF,CAME,IAAI,QAAS,CACX,OAAO,KAAK,QAAQ,KACxB,CAME,IAAI,eAAgB,CAClB,OAAO,KAAK,OAAO,MAAO,GAAM,EAAE,OAAO,CAC7C,CAKE,SAAU,CACR,MAAM,EAAI,IAAI8Z,GAAG,KAAK,OAAO,GAAG,MAAM,QAAQ,EAC9C,KAAK,QAAU,IAAI,MAAM,EAAG,CAC1B,IAAKA,GAAG,IACR,IAAKA,GAAG,GACd,CAAK,EAAG,KAAK,UAAU,GACjB,SACA,OACC,GAAM,KAAK,OAAO,YAAY,eAAe,CAAC,CAChD,CACL,CAYE,eAAe,EAAG,CAChB,EAAI,KAAK,wBAA0B,KAAK,qBAAsB,CAClE,CAUE,aAAa,CACX,KAAM,EACN,KAAM,EAAI,CAAE,EACZ,GAAIzZ,EAAI,OACR,MAAO,EAAI,CAAA,CACf,EAAK,CACD,MAAMG,EAAI,KAAK,OAAO,SAAS,UAAWC,EAAI,KAAK,OAAO,MAAM,WAAW,IAAI,CAAC,EAAG,EAAI,IAAI8E,GAAE,CAC3F,GAAIlF,EACJ,KAAM,EACN,KAAMI,EACN,IAAK,KAAK,OAAO,IACjB,SAAUD,EACV,UAAW,CACjB,EAAO,KAAK,gBAAgB,EACxB,OAAOA,GAAK,OAAO,oBAAoB,IAAM,CAC3C,KAAK,gBAAgB,CAAC,CACvB,EAAE,CAAE,QAAS,GAAK,CAAA,EAAG,CAC1B,CAaE,OAAO,CACL,GAAI,EAAI,OACR,KAAM,EAAI,KAAK,OAAO,aACtB,KAAMH,EAAI,CAAE,EACZ,MAAO,EACP,YAAaG,EAAI,GACjB,QAASC,EAAI,GACb,MAAO,EAAI,CAAA,CACZ,EAAG,GAAI,CACN,IAAI,EAAI,EACR,IAAM,SAAW,EAAI,KAAK,mBAAqBA,EAAI,EAAI,IACvD,MAAM,EAAI,KAAK,aAAa,CAC1B,GAAI,EACJ,KAAM,EACN,KAAMJ,EACN,MAAO,CACb,CAAK,EACD,OAAOI,GAAK,KAAK,gBAAgBsZ,GAAI,KAAK,gBAAgB,CAAC,EAAG,CAC5D,MAAO,CACR,CAAA,EAAG,KAAK,QAAQ,OAAO,EAAG,EAAGtZ,CAAC,EAAG,KAAK,gBAAgBuZ,GAAI,EAAG,CAC5D,MAAO,CACR,CAAA,EAAGxZ,EAAI,KAAK,kBAAoB,EAAI,GAAK,KAAK,mBAAqB,KAAK,oBAAqB,CAClG,CAOE,WAAW,EAAG,EAAI,EAAG,CACnB,KAAK,QAAQ,WAAW,EAAG,CAAC,CAChC,CAaE,MAAM,OAAO,EAAG,EAAGH,EAAG,CACpB,GAAI,CAAC,GAAK,CAACA,EACT,OAAO,EACT,MAAM,EAAI,MAAM,EAAE,KAAMG,EAAI,KAAK,aAAa,CAC5C,GAAI,EAAE,GACN,KAAM,EAAE,KACR,KAAM,OAAO,OAAO,CAAE,EAAE,EAAG,GAAK,EAAE,EAClC,MAAOH,GAAK,EAAE,KACf,CAAA,EAAGI,EAAI,KAAK,cAAc,CAAC,EAC5B,OAAO,KAAK,QAAQ,QAAQA,EAAGD,CAAC,EAAG,KAAK,gBAAgB0Z,GAAI1Z,EAAG,CAC7D,MAAOC,CACR,CAAA,EAAGD,CACR,CAQE,QAAQ,EAAG,EAAGH,EAAG,CACf,MAAM,EAAI,KAAK,cAAc,CAAC,EAC9B,OAAO,KAAK,OAAO,CACjB,KAAM,EACN,KAAMA,EACN,MAAO,EACP,QAAS,EACf,CAAK,CACL,CAQE,MAAM,EAAG,EAAGA,EAAI,GAAI,CAClB,MAAM,EAAI,KAAK,OAAO,CACpB,KAAM,EACN,QAASA,CACf,CAAK,EACD,GAAI,CACF,OAAO,oBAAoB,IAAM,CAC/B,EAAE,KAAKiF,GAAG,SAAU,CAAC,CAC7B,CAAO,CACF,OAAQ9E,EAAG,CACVQ,EAAE,GAAG,CAAC,oCAAqC,QAASR,CAAC,CAC3D,CACI,OAAO,CACX,CAUE,0BAA0B,EAAG,EAAI,GAAI,CACnC,MAAMH,EAAI,KAAK,aAAa,CAAE,KAAM,KAAK,OAAO,aAAc,EAC9D,OAAO,KAAK,QAAQ,CAAC,EAAIA,EAAG,KAAK,gBAAgB2Z,GAAI3Z,EAAG,CACtD,MAAO,CACR,CAAA,EAAG,EAAI,KAAK,kBAAoB,EAAI,GAAK,KAAK,mBAAqB,KAAK,oBAAqBA,CAClG,CAME,aAAc,CACZ,OAAO,KAAK,kBAAoB,KAAK,OAAO,OAAS,EAAG,KAAK,OAAQ,CACzE,CAQE,MAAM,YAAY,EAAG,EAAG,CACtB,IAAIA,EACJ,GAAI,EAAE,OAAS,EAAE,MAAQ,EAAE,UAAW,CACpC,MAAM,EAAI,MAAM,EAAE,KAClB,GAAIoB,EAAE,CAAC,EAAG,CACR,QAAQ,MAAM,+DAA+D,EAC7E,MACR,CACM,KAAM,CAACjB,CAAC,EAAI2H,GAAG,CAAC,CAAC,EAAG,EAAE,KAAK,cAAc,EACzC9H,EAAIG,CACV,SAAe,EAAE,WAAawE,GAAG,EAAG,QAAQ,GAAKA,GAAG,EAAG,QAAQ,EAAG,CAC5D,MAAM,EAAI,MAAM,EAAE,qBAAsBxE,EAAI6H,GAAE,EAAG,EAAE,KAAK,cAAc,EACtEhI,EAAIgF,GAAG7E,EAAG,EAAE,KAAK,gBAAgB,CACvC,CACIH,IAAM,SAAW,MAAM,EAAE,UAAUA,CAAC,EAAG,KAAK,YAAY,CAAC,EAAG,KAAK,kBAAoB,KAAK,QAAQ,QAAQ,CAAC,EAC/G,CAOE,YAAY,EAAG,EAAI,GAAI,CACrB,OAAO,IAAI,QAASA,GAAM,CACxB,MAAM,EAAI,KAAK,QAAQ,QAAQ,CAAC,EAChC,GAAI,CAAC,KAAK,cAAc,CAAC,EACvB,MAAM,IAAI,MAAM,8BAA8B,EAChD,EAAE,QAAO,EAAI,KAAK,QAAQ,OAAO,CAAC,EAAG,KAAK,gBAAgB0Z,GAAI,EAAG,CAC/D,MAAO,CACR,CAAA,EAAG,KAAK,mBAAqB,GAAK,KAAK,oBAAqB,KAAK,OAAO,OAAS,IAAM,IAAM,KAAK,kBAAoB,IAAM,KAAK,kBAAiB,EAAI,GAAK,KAAK,UAAW1Z,EAAG,CACrL,CAAK,CACL,CAOE,sBAAuB,CACrB,IAAI,EACJ,QAAS,EAAI,KAAK,OAAO,OAAS,EAAG,GAAK,EAAG,IAC3C,KAAK,OAAO,CAAC,EAAE,WAAa,KAAK,YAAY,KAAK,OAAO,CAAC,CAAC,EAAG,EAAI,GACpE,OAAO,CACX,CAME,iBAAkB,CAChB,QAAS,EAAI,KAAK,OAAO,OAAS,EAAG,GAAK,EAAG,IAC3C,KAAK,QAAQ,OAAO,CAAC,EACvB,KAAK,kBAAmB,EAAE,KAAK,OAAQ,EAAE,KAAK,aAAa,WAAW,MAAO,CACjF,CAQE,OAAQ,CACN,MAAM,EAAI,KAAK,OAAO,MAAM,iCAAkC,EAAE,EAAI6C,EAAE,KAAK,KAAK,EAChF,EAAE,YAAY,CAAC,EACf,MAAM7C,EAAI,CACR,KAAM6C,EAAE,QAAQ,CAAC,EAAI,GAAK,EAAE,SAC7B,EACD,OAAO,KAAK,OAAO,CAAE,KAAM7C,CAAC,CAAE,CAClC,CAOE,gBAAgB,EAAG,CACjB,OAAO,IAAM,KAAO,EAAI,KAAK,QAAQ,OAAS,GAAI,KAAK,QAAQ,CAAC,CACpE,CAME,cAAc,EAAG,CACf,OAAO,KAAK,QAAQ,QAAQ,CAAC,CACjC,CAOE,aAAa,EAAG,CACd,OAAO,KAAK,QAAQ,MAAM,KAAM,GAAM,EAAE,KAAO,CAAC,CACpD,CAME,SAAS,EAAG,CACV6C,EAAE,UAAU,CAAC,IAAM,EAAI,EAAE,YACzB,MAAM,EAAI,KAAK,QAAQ,MAAO7C,EAAI,EAAE,QAAQ,IAAIkF,GAAE,IAAI,OAAO,EAAE,EAAG,EAAI,EAAE,QAAQlF,CAAC,EACjF,GAAI,GAAK,EACP,OAAO,KAAK,QAAQ,CAAC,CAC3B,CAQE,2BAA2B,EAAG,CAC5B6C,EAAE,UAAU,CAAC,IAAM,EAAI,EAAE,YACzB,MAAM,EAAI,EAAE,QAAQ,IAAIqC,GAAE,IAAI,OAAO,EAAE,EACvC,GAAI,CAAC,EACH,OACF,MAAMlF,EAAI,EAAE,QAAQ,IAAI,KAAK,OAAO,GAAG,IAAI,aAAa,EAAE,EAC1D,GAAIA,GAAK,MAAQA,EAAE,YAAY,KAAK,OAAO,GAAG,MAAM,OAAO,EACzD,OAAO,KAAK,kBAAoB,KAAK,QAAQ,MAAM,QAAQ,CAAC,EAAG,KAAK,aAAa,mBAAoB,EAAE,KAAK,YAClH,CAOE,oBAAoB,EAAG,CACrB,GAAI,CAAC,GAAK,EAAE,aAAa,MACvB,OACF6C,EAAE,UAAU,CAAC,IAAM,EAAI,EAAE,YACzB,MAAM,EAAI,EAAE,QAAQ,IAAIqC,GAAE,IAAI,OAAO,EAAE,EACvC,OAAO,KAAK,OAAO,KAAMlF,GAAMA,EAAE,SAAW,CAAC,CACjD,CAQE,KAAK,EAAG,EAAG,CACT,KAAK,QAAQ,KAAK,EAAG,CAAC,EAAG,KAAK,kBAAoB,CACtD,CAOE,KAAK,EAAG,EAAI,KAAK,kBAAmB,CAClC,GAAI,MAAM,CAAC,GAAK,MAAM,CAAC,EAAG,CACxBW,EAAE,0DAA2D,MAAM,EACnE,MACN,CACI,GAAI,CAAC,KAAK,cAAc,CAAC,GAAK,CAAC,KAAK,cAAc,CAAC,EAAG,CACpDA,EAAE,mGAAoG,MAAM,EAC5G,MACN,CACI,KAAK,QAAQ,KAAK,EAAG,CAAC,EAAG,KAAK,kBAAoB,EAAG,KAAK,gBAAgBiZ,GAAI,KAAK,aAAc,CAC/F,UAAW,EACX,QAAS,CACf,CAAK,CACL,CASE,MAAM,QAAQ,EAAG,EAAG5Z,EAAG,CACrB,GAAI,CAAC,MAAM,EAAE,KAAM,EACjB,MAAM,IAAI,MAAM,iEAAiE,EACnF,MAAMG,EAAI,KAAK,OAAO,MAAM,WAAW,IAAI,CAAC,EAC5C,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,kCAAkC,CAAC,cAAc,EACnE,MAAM,EAAI,MAAM,EAAE,mBAAoB,EAAE+D,EAAI8D,GAC1C,EACA7H,EAAE,cACH,EACD,IAAIgE,EAAIa,GAAGd,EAAG/D,EAAE,iBAAkBA,EAAE,QAAQ,EAC5C,OAAOH,IAAMmE,EAAI,OAAO,OAAOA,EAAGnE,CAAC,GAAI,KAAK,QAAQ,EAAGG,EAAE,KAAMgE,CAAC,CACpE,CAKE,mBAAoB,CAClB,KAAK,kBAAoB,EAC7B,CAQE,MAAM,MAAM,EAAI,GAAI,CAClB,MAAM,EAAI,IAAI2V,GACd,KAAK,OAAO,QAAS9Z,GAAM,CACzB,EAAE,IAAI,SAAY,CAChB,MAAM,KAAK,YAAYA,EAAG,EAAE,CACpC,CAAO,CACF,CAAA,EAAG,MAAM,EAAE,UAAW,KAAK,kBAAiB,EAAI,GAAK,KAAK,OAAM,EAAI,KAAK,OAAO,GAAG,eAAgB,CACxG,CAKE,MAAM,SAAU,CACd,MAAM,QAAQ,IAAI,KAAK,OAAO,IAAK,GAAM,EAAE,QAAO,CAAE,CAAC,CACzD,CAME,gBAAgB,EAAG,CACjB,KAAM,CAAE,YAAa,CAAG,EAAG,KAAK,OAChC,KAAK,yBAAyB,GAAG,EAAE,OAAQ,UAAYA,GAAM,CAC3D,EAAE,QAAQA,CAAC,CACjB,CAAK,EAAG,KAAK,yBAAyB,GAAG,EAAE,OAAQ,QAAUA,GAAM,CAC7D,EAAE,MAAMA,CAAC,CACf,CAAK,EAAG,KAAK,yBAAyB,GAAG,EAAE,OAAQ,WAAaA,GAAM,CAChE,EAAE,SAASA,CAAC,CAClB,CAAK,EAAG,KAAK,yBAAyB,GAAG,EAAE,OAAQ,YAAcA,GAAM,CACjE,EAAE,UAAUA,CAAC,CACnB,CAAK,EAAG,EAAE,GAAG,aAAeA,GAAM,KAAK,gBAAgB6Z,GAAI7Z,EAAG,CACxD,MAAO,KAAK,cAAcA,CAAC,CACjC,CAAK,CAAC,CACN,CAIE,uBAAwB,CACtB,KAAK,yBAAyB,SAAU,CAC5C,CAIE,sBAAuB,CACrB,KAAK,yBAAyB,GAC5B,SACA,MACC,GAAM,KAAK,OAAO,YAAY,eAAe,CAAC,CAChD,EAAE,KAAK,OAAO,QAAS,GAAM,CAC5B,KAAK,gBAAgB,CAAC,CAC5B,CAAK,CACL,CAOE,cAAc,EAAG,CACf,MAAO,EAAE,EAAI,GAAK,GAAK,KAAK,QAAQ,OACxC,CAQE,gBAAgB,EAAG,EAAGA,EAAG,CACvB,MAAM,EAAI,IAAI,YAAY,EAAG,CAC3B,OAAQ,CACN,OAAQ,IAAI2D,GAAE,CAAC,EACf,GAAG3D,CACX,CACA,CAAK,EACD,OAAO,KAAK,iBAAiB,KAAKsE,GAAI,CACpC,MAAO,CACR,CAAA,EAAG,CACR,CACA,CACA,MAAM0V,WAAWlW,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,sBAAwB,KAAM,KAAK,gBAAkB,GAAI,KAAK,oBAAsB,GAAI,KAAK,sBAAwB,EACnJ,CAME,IAAI,iBAAkB,CACpB,MAAO,CACL,EAAG,CAAE,EACL,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,CAAE,EACN,GAAI,GACJ,IAAK,CACH,IAAK,GACL,MAAO,GACP,OAAQ,EACT,EACD,EAAG,CACD,KAAM,EACP,EACD,EAAG,CAAE,EACL,EAAG,CAAE,EACL,EAAG,CAAA,CACJ,CACL,CAME,IAAI,mBAAoB,CACtB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,OAAO,EAAE,OAAO,MAAO,GAAM,EAAE,WAAa,EAAE,CAClD,CAME,IAAI,kBAAkB,EAAG,CACvB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,EAAE,OAAO,QAAS9D,GAAM,CACtBA,EAAE,SAAW,CACnB,CAAK,EAAG,KAAK,WAAY,CACzB,CAME,IAAI,kBAAmB,CACrB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,OAAO,KAAK,wBAA0B,OAAS,KAAK,sBAAwB,EAAE,OAAO,KAAM,GAAM,EAAE,WAAa,EAAE,GAAI,KAAK,qBAC/H,CAME,IAAI,gBAAiB,CACnB,OAAO,KAAK,OAAO,aAAa,OAAO,OAAQ,GAAM,EAAE,QAAQ,CACnE,CAME,SAAU,CACR,KAAK,UAAY,IAAIiE,EAAK0J,GAAG,IAAI,CAC/B,KAAM,QACN,QAAU,GAAM,CACd,KAAM,CAAE,aAAc,EAAG,SAAU3N,CAAC,EAAK,KAAK,OAC9C,GAAIA,EAAE,UAAW,CACf,EAAE,eAAc,EAAI,KAAK,gBAAiB,EAC1C,MACV,CACQ,EAAE,cAAgB,KAAK,eAAe,CAAC,CACxC,EACD,GAAI,KAAK,OAAO,GAAG,MAAM,QAC/B,CAAK,CACL,CAOE,gBAAiB,CACfiE,EAAE,IAAG,EAAG,gBAAiB,EAAE,KAAK,kBAAoB,EACxD,CAME,qBAAqB,EAAG,CACtB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,IAAIjE,EACJ,MAAM,CAAC,EAAIA,EAAI,EAAE,aAAeA,EAAI,EAAE,gBAAgB,CAAC,EAAGA,EAAE,SAAW,GAAI,KAAK,WAAY,CAChG,CAOE,eAAe,EAAG,EAAI,GAAI,CACxB,KAAM,CAAE,aAAcA,EAAG,MAAO,EAAG,mBAAoBG,GAAM,KAAK,OAClE,KAAK,gBAAkB,GAAI,KAAK,oBAAsB,GAAI,KAAK,sBAAwB,GACvF,MAAMC,EAAI,GAAK,aAAa,cAAe,EAAIA,GAAKiB,GAAG,EAAE,OAAO,EAChE,GAAI,KAAK,kBAAoBjB,GAAK,GAAK,CAAC6D,EAAE,kBAAmB,CAC3D,MAAM,EAAIjE,EAAE,qBAAsB,EAClCA,EAAE,0BAA0B,EAAG,EAAE,EAAG,EAAE,WAAWA,EAAE,YAAY,EAAGwB,GAAG,IAAM,CACzE,MAAM,EAAI,EAAE,IACZ,EAAE,6BAA6B,EAAE,OAAS,EAAI,GAAK,CAAC,CACrD,EAAE,EAAE,EAAG,CACd,CACI,GAAI,KAAK,OAAO,oBAAoB,MAAM,CAAC,EAAG,CAAC,KAAK,kBAAoBrB,EAAE,gBAAe,EAAI,CAC3F,KAAK,OAAO,mBAAmB,eAAgB,EAC/C,MACN,CACI,GAAK,KAAK,UAAU,QAAO,EAAI,KAAK,kBAAoB,EAC5D,CAOE,mBAAmB,EAAG,CACpB,EAAE,eAAgB,EAClB,MAAM,EAAI0C,EAAE,KAAK,KAAK,EACtB,KAAK,eAAe,QAAS1C,GAAM,CACjC,MAAMC,EAAI4H,GAAE7H,EAAE,OAAO,UAAW,KAAK,eAAe,EAAG,EAAI0C,EAAE,KAAK,GAAG,EACrE,EAAE,UAAYzC,EAAG,EAAE,YAAY,CAAC,CACtC,CAAK,EACD,MAAMJ,EAAI,MAAM,KAAK,EAAE,UAAU,EAAE,IAAKG,GAAMA,EAAE,WAAW,EAAE,KAAK;AAAA;AAAA,CAErE,EAAG,EAAI,EAAE,UACN,OAAO,EAAE,cAAc,QAAQ,aAAcH,CAAC,EAAG,EAAE,cAAc,QAAQ,YAAa,CAAC,EAAG,QAAQ,IAAI,KAAK,eAAe,IAAKG,GAAMA,EAAE,MAAM,CAAC,EAAE,KAAMA,GAAM,CAC1J,GAAI,CACF,EAAE,cAAc,QAAQ,KAAK,OAAO,MAAM,UAAW,KAAK,UAAUA,CAAC,CAAC,CAC9E,MAAc,CACd,CACA,CAAK,CACL,CAME,mBAAmB,EAAG,CACpB,KAAM,CAAE,aAAc,CAAC,EAAK,KAAK,OAAQH,EAAI,EAAE,gBAAgB,CAAC,EAChEA,IAAM,QAAU,KAAK,YAAYA,CAAC,CACtC,CAME,YAAY,EAAG,CACb,KAAK,UAAU,KAAM,EAAEiE,EAAE,IAAG,EAAG,kBAAmB,EAAE,SAAW,GAAI,KAAK,WAAU,EAAI,KAAK,OAAO,cAAc,MAAO,CAC3H,CAME,cAAc,EAAG,CACf,EAAE,SAAW,GAAI,KAAK,WAAY,CACtC,CAIE,YAAa,CACX,KAAK,sBAAwB,IACjC,CAKE,SAAU,CACR0J,GAAG,OAAO,KAAK,OAAO,GAAG,MAAM,SAAU,OAAO,CACpD,CAOE,eAAe,EAAG,CAChB,GAAI,KAAK,OAAO,mBAAmB,eAAc,EAAI9K,EAAE,cAAc,EAAE,MAAM,GAAK,CAAC,KAAK,sBAAuB,CAC7G,KAAK,sBAAwB,GAC7B,MACN,CACI,MAAM,EAAI,KAAK,OAAO,aAAa,SAAS,EAAE,MAAM,EAAG7C,EAAI,EAAE,OAC7D,GAAIA,EAAE,OAAS,GAAK,CAAC,KAAK,sBAAuB,CAC/C,KAAK,sBAAwB,GAC7B,MACN,CACI,GAAIA,EAAE,SAAW,GAAK,CAAC,KAAK,gBAAiB,CAC3C,KAAK,gBAAkB,GACvB,MACN,CACI,KAAK,iBAAmB,EAAE,iBAAkB,KAAK,gBAAe,EAAI,KAAK,gBAAkB,GAAI,KAAK,sBAAwB,IAAM,KAAK,wBAA0B,EAAE,eAAc,EAAI,KAAK,YAAY,CAAC,EAAG,KAAK,gBAAkB,GACrO,CAKE,iBAAkB,CAChB,KAAK,UAAU,KAAI,EAAIiE,EAAE,IAAK,EAAC,gBAAe,EAAI,KAAK,kBAAoB,GAAI,KAAK,OAAO,cAAc,MAAO,CACpH,CACA,QACA,MAAMgW,WAAWnW,CAAE,CAOjB,IAAI,WAAY,CACd,MAAO,CACL,MAAO,QACP,IAAK,MACL,QAAS,SACV,CACL,CAIE,WAAW,KAAM,CACf,MAAO,CACL,YAAa,kBACd,CACL,CAYE,WAAW,EAAG,EAAI,KAAK,UAAU,QAAS9D,EAAI,EAAG,CAC/C,IAAI2F,EACJ,KAAM,CAAE,aAAczF,EAAG,eAAgB,CAAC,EAAK,KAAK,OACpD,GAAI,EAAE,eAAc,EAAI,CAAC,EAAE,UAAW,EACnCyF,EAAI,OAAO,aAAY,IAAO,MAAQA,EAAE,kBAAmB,EAAE,YAAY,CAAC,EAAGzF,EAAE,aAAe,EAC/F,MACN,CACI,IAAIE,EACJ,OAAQ,EAAC,CACP,KAAK,KAAK,UAAU,MAClBA,EAAI,EAAE,WACN,MACF,KAAK,KAAK,UAAU,IAClBA,EAAI,EAAE,UACN,MACF,QACEA,EAAI,EAAE,YACd,CACI,GAAI,CAACA,EACH,OACF,MAAM8D,EAAIrB,EAAE,eAAezC,EAAG,IAAM,KAAK,UAAU,GAAG,EAAG+D,EAAItB,EAAE,iBAAiBqB,CAAC,EACjF,OAAQ,GAAE,CACR,KAAK,IAAM,KAAK,UAAU,MACxBlE,EAAI,EACJ,MACF,KAAK,IAAM,KAAK,UAAU,IAC1B,KAAKA,EAAImE,EACPnE,EAAImE,EACJ,KACR,CACI,KAAK,IAAID,EAAGlE,CAAC,EAAGE,EAAE,2BAA2B,EAAE,MAAM,EAAGA,EAAE,aAAa,aAAeE,CAC1F,CASE,WAAW,EAAG,EAAI,KAAK,UAAU,QAASJ,EAAI,EAAG,CAC/C,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OAAO,aAAcG,EAAI0C,EAAE,eAAe,CAAC,EAC5E,OAAQ,EAAC,CACP,KAAK,KAAK,UAAU,MAClB,KAAK,IAAI1C,EAAG,CAAC,EACb,MACF,KAAK,KAAK,UAAU,IAClB,KAAK,IAAIA,EAAG0C,EAAE,iBAAiB1C,CAAC,CAAC,EACjC,MACF,QACEH,GAAK,KAAK,IAAIG,EAAGH,CAAC,CAC1B,CACI,EAAE,aAAe,CACrB,CAOE,IAAI,EAAG,EAAI,EAAG,CACZ,KAAM,CAAE,IAAKE,EAAG,OAAQC,CAAG,EAAG8D,EAAE,UAAU,EAAG,CAAC,EAAG,CAAE,YAAa,CAAG,EAAG,OACtE/D,EAAI,EAAI,OAAO,SAAS,EAAGA,EAAI,EAAE,EAAIC,EAAI,GAAK,OAAO,SAAS,EAAGA,EAAI,EAAI,EAAE,CAC/E,CAKE,mBAAoB,CAClB,MAAM,EAAI,KAAK,OAAO,aAAa,UACnC,GAAI,EACF,GAAI,EAAE,KAAK,WAAa,EAAE,QACxB,KAAK,WAAW,CAAC,MACd,CACH,MAAM,EAAI,KAAK,OAAO,aAAa,YAAa,EAChD,KAAK,WAAW,CAAC,CACzB,CACA,CAIE,kCAAmC,CACjC,MAAM,EAAI8D,EAAE,IAAK,EACjB,GAAI,EAAE,WAAY,CAChB,MAAM,EAAI,EAAE,WAAW,CAAC,EAAGjE,EAAI,KAAK,OAAO,aAAa,aAAa,aACrE,GAAI,EAAE,eAAc,EAAIA,EACtB,GAAI6C,EAAE,cAAc7C,CAAC,EAAG,CACtB,MAAM,EAAIA,EAAGG,EAAI,SAAS,yBAA0BC,EAAI,EAAE,MAAM,UAAU,EAAG,EAAE,cAAc,EAAG,EAAI,EAAE,MAAM,UAAU,EAAE,cAAc,EACtI,OAAOD,EAAE,YAAc,EAAG,EAAE,MAAQC,EAAGD,CACjD,KAAe,CACL,MAAM,EAAI,EAAE,WAAY,EACxB,OAAO,EAAE,mBAAmBH,CAAC,EAAG,EAAE,SAAS,EAAE,aAAc,EAAE,SAAS,EAAG,EAAE,gBAAiB,CACtG,CACA,CACA,CAQE,aAAa,EAAI,GAAI,CACnB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OAAQ,CAAE,aAAcA,EAAG,UAAW,CAAG,EAAG,EAC7E,GAAIA,IAAM,OACR,MAAO,GACT,KAAM,CAAE,UAAWG,EAAG,aAAcC,CAAC,EAAKJ,EAAG,EAAII,IAAM,OAAS6O,GAAG7O,CAAC,EAAI,OACxE,IAAI,EAAI,EACR,MAAM,EAAI,GAAK,GAAK,CAACJ,EAAE,UACvB,GAAIG,GAAK,EACP,OAAO,KAAK,WAAWA,EAAG,KAAK,UAAU,KAAK,EAAG,GACnD,GAAI,IAAM,KAAM,CACd,GAAIH,EAAE,KAAK,WAAa,CAAC,EACvB,MAAO,GACT,EAAI,EAAE,YAAa,CACzB,CACI,OAAO,GAAK,KAAK,WAAW,EAAG,KAAK,UAAU,KAAK,EAAG,IAAM,EAChE,CAQE,iBAAiB,EAAI,GAAI,CACvB,KAAM,CAAE,aAAc,EAAG,cAAeA,GAAM,KAAK,OAAO,aAC1D,GAAI,CAAC,EACH,MAAO,GACT,KAAM,CAAE,cAAe,EAAG,aAAcG,GAAM,EAAGC,EAAID,IAAM,OAAS6O,GAAG7O,CAAC,EAAI,OAAQ,EAAI,GAAKC,GAAK,CAAC,EAAE,UACrG,OAAO,GAAK,GAAK,KAAK,WAAW,EAAG,KAAK,UAAU,GAAG,EAAG,IAAMJ,IAAM,MAAQ,GAAK,KAAK,WAAWA,EAAG,KAAK,UAAU,GAAG,EAAG,IAAM,EACpI,CAME,aAAa,EAAG,CACd,MAAM,EAAI,SAAS,cAAc,MAAM,EACvC,EAAE,UAAU,IAAIia,GAAG,IAAI,WAAW,EAAG,EAAE,sBAAsB,YAAa,CAAC,CAC/E,CAME,aAAa,EAAG,CACd,MAAM,EAAI,EAAE,cAAc,IAAIA,GAAG,IAAI,WAAW,EAAE,EAClD,GAAI,CAAC,EACH,OACF,IAAIhW,EAAC,EAAG,YAAY,CAAC,EACrB,MAAM/D,EAAI,SAAS,YAAa,EAChCA,EAAE,WAAW,CAAC,EAAGA,EAAE,gBAAiB,CACxC,CAME,6BAA6B,EAAG,CAC9B,MAAM,EAAI,SAAS,uBAAwB,EAAEF,EAAI,SAAS,cAAc,KAAK,EAAG,EAAIiE,EAAE,IAAK,EAAE9D,EAAI8D,EAAE,MACnGjE,EAAE,UAAY,EAAG,MAAM,KAAKA,EAAE,UAAU,EAAE,QAAS,GAAM,EAAE,YAAY,CAAC,CAAC,EAAG,EAAE,WAAW,SAAW,GAAK,EAAE,YAAY,IAAI,IAAM,EACjI,MAAMI,EAAI,EAAE,UACZD,EAAE,eAAgB,EAAEA,EAAE,WAAW,CAAC,EAClC,MAAM,EAAI,SAAS,YAAW,EAAI,EAAIC,EAAE,WAAa,KAAK,UAAYA,EAAIA,EAAE,WAC5E,IAAM,MAAQ,EAAE,cAAgB,MAAQ,EAAE,SAAS,EAAG,EAAE,YAAY,MAAM,EAAG,EAAE,gBAAe,EAAI,EAAE,SAAS,CAAC,CAClH,CACA,EACA,MAAM8Z,WAAWpW,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,UAAY,IAAM,CAC1C,KAAK,UAAU,IAAI,SAAU,YAAa,KAAK,WAAW,EAAG,KAAK,UAAU,IAAI,SAAU,UAAW,KAAK,SAAS,CACzH,EAAO,KAAK,YAAe,GAAM,CAC3B,KAAM,CAAE,aAAc,EAAG,eAAgB9D,CAAC,EAAK,KAAK,OACpD,GAAI,EAAE,gBAAkB,MAAQ,EAAE,SAAW,KAC3C,OACF,MAAM,EAAI,EAAE,oBAAoB,EAAE,aAAa,GAAK,KAAK,kBAAmBG,EAAI,EAAE,oBAAoB,EAAE,MAAM,EAC9G,GAAI,EAAE,CAAC,GAAK,CAACA,IAAMA,IAAM,EAAG,CAC1B,GAAI,IAAM,KAAK,mBAAoB,CACjC8D,EAAE,IAAG,EAAG,gBAAe,EAAI,EAAE,SAAW,GAAI9D,EAAE,SAAW,GAAIH,EAAE,WAAY,EAC3E,MACV,CACQ,GAAIG,IAAM,KAAK,mBAAoB,CACjC,EAAE,SAAW,GAAIA,EAAE,SAAW,GAAIH,EAAE,WAAY,EAChD,MACV,CACQ,KAAK,OAAO,cAAc,MAAO,EAAE,KAAK,0BAA0B,EAAGG,CAAC,EAAG,KAAK,kBAAoBA,CAC1G,CACK,CACL,CAME,MAAM,SAAU,CACd,KAAK,UAAU,GAAG,SAAU,YAAc,GAAM,CAC9C,KAAK,0BAA0B,CAAC,CACtC,CAAK,CACL,CAME,eAAe,EAAG,CAChB,GAAI,EAAE,SAAWK,GAAG,KAClB,OACF,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,KAAK,mBAAqB,EAAE,SAAS,EAAE,MAAM,EAAG,KAAK,kBAAoB,KAAK,mBAAoB,KAAK,UAAU,GAAG,SAAU,YAAa,KAAK,WAAW,EAAG,KAAK,UAAU,GAAG,SAAU,UAAW,KAAK,SAAS,CACvN,CAKE,IAAI,8BAA+B,CACjC,MAAO,CAAC,CAAC,KAAK,oBAAsB,CAAC,CAAC,KAAK,mBAAqB,KAAK,qBAAuB,KAAK,iBACrG,CAOE,yBAAyB,EAAI,GAAI,CAC/B,KAAM,CAAE,aAAc,EAAG,eAAgBR,CAAC,EAAK,KAAK,OACpD,KAAK,oBAAsB,KAAK,kBAAoB,KAAK,mBAAqB,EAAE,cAAe,KAAK,qBAAuB,KAAK,oBAAsB,KAAK,mBAAmB,SAAW,GAAIA,EAAE,WAAU,EAAIiE,EAAE,IAAK,EAAC,gBAAe,GACpO,MAAM,EAAI,EAAE,OAAO,QAAQ,KAAK,iBAAiB,GAAK,EAAI,EAAI,IAAK9D,EAAI,EAAE,OAAO,CAAC,EACjFA,IAAM,KAAK,kBAAkB,WAAaA,EAAE,UAAYA,EAAE,SAAW,GAAIH,EAAE,WAAU,IAAO,KAAK,kBAAkB,SAAW,GAAIA,EAAE,WAAU,GAAK,KAAK,kBAAoBG,EAAG,KAAK,OAAO,cAAc,MAAK,EAAIA,EAAE,OAAO,eAAe,CACxO,MAAO,SACb,CAAK,EACL,CAME,MAAM,EAAG,CACP,KAAM,CAAE,aAAc,EAAG,eAAgBH,EAAG,MAAO,CAAG,EAAG,KAAK,OAAQG,EAAI,EAAE,OAAO,QAAQ,KAAK,kBAAkB,EAAGC,EAAI,EAAE,OAAO,QAAQ,KAAK,iBAAiB,EAChK,GAAIJ,EAAE,kBAAoBG,EAAI,IAAMC,EAAI,IAAM,GAAK,aAAa,cAC9D,OAAQ,EAAE,QAAO,CACf,KAAKG,EAAE,KACP,KAAKA,EAAE,MACL,EAAE,WAAW,EAAE,OAAO,KAAK,IAAIJ,EAAGC,CAAC,CAAC,EAAG,EAAE,UAAU,GAAG,EACtD,MACF,KAAKG,EAAE,GACP,KAAKA,EAAE,KACL,EAAE,WAAW,EAAE,OAAO,KAAK,IAAIJ,EAAGC,CAAC,CAAC,EAAG,EAAE,UAAU,KAAK,EACxD,MACF,QACE,EAAE,WAAW,EAAE,OAAO,KAAK,IAAID,EAAGC,CAAC,CAAC,EAAG,EAAE,UAAU,GAAG,CAChE,CACI,KAAK,mBAAqB,KAAK,kBAAoB,IACvD,CAME,0BAA0B,EAAG,CAC3B,KAAM,CAAE,GAAI,CAAG,EAAG,KAAK,OACvB6D,EAAE,aAAe,KAAK,OAAO,eAAe,eAAe,CAAC,EAAG,EAAE,MAAM,SAAS,SAAS,EAAE,MAAM,EAAI,KAAK,eAAe,CAAC,EAAI,KAAK,OAAO,eAAe,eAAe,CAAC,CAC7K,CAOE,0BAA0B,EAAG,EAAG,CAC9B,KAAM,CAAE,aAAcjE,EAAG,eAAgB,CAAC,EAAK,KAAK,OAAQG,EAAIH,EAAE,OAAO,QAAQ,CAAC,EAAGI,EAAIJ,EAAE,OAAO,QAAQ,CAAC,EAAG,EAAI,EAAE,WAAa,EAAE,SACnI,QAAS,EAAI,KAAK,IAAIG,EAAGC,CAAC,EAAG,GAAK,KAAK,IAAID,EAAGC,CAAC,EAAG,IAAK,CACrD,MAAM,EAAIJ,EAAE,OAAO,CAAC,EACpB,IAAM,KAAK,oBAAsB,KAAO,EAAI,EAAI,KAAOA,EAAE,OAAO,CAAC,EAAE,SAAW,CAACA,EAAE,OAAO,CAAC,EAAE,SAAU,EAAE,aAC7G,CACA,CACA,CACA,MAAMma,WAAWrW,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,kBAAoB,EAClD,CAYE,eAAe,EAAG,CAChB,EAAI,KAAK,wBAA0B,KAAK,qBAAsB,CAClE,CAIE,sBAAuB,CACrB,KAAM,CAAE,GAAI,CAAG,EAAG,KAAK,OACvB,KAAK,yBAAyB,GAAG,EAAE,MAAM,OAAQ,OAAQ,MAAO,GAAM,CACpE,MAAM,KAAK,YAAY,CAAC,CAC9B,EAAO,EAAE,EAAG,KAAK,yBAAyB,GAAG,EAAE,MAAM,OAAQ,YAAa,IAAM,CAC1E,KAAK,iBAAkB,CAC7B,CAAK,EAAG,KAAK,yBAAyB,GAAG,EAAE,MAAM,OAAQ,WAAa,GAAM,CACtE,KAAK,gBAAgB,CAAC,CACvB,EAAE,EAAE,CACT,CAIE,uBAAwB,CACtB,KAAK,yBAAyB,SAAU,CAC5C,CAME,MAAM,YAAY,EAAG,CACnB,KAAM,CACJ,aAAc,EACd,MAAO9D,EACP,MAAO,CACR,EAAG,KAAK,OACT,EAAE,eAAc,EAAI,EAAE,OAAO,QAASI,GAAM,CAC1CA,EAAE,WAAa,EAChB,CAAA,EAAG6D,EAAE,YAAc,CAACA,EAAE,aAAe,KAAK,mBAAqB,SAAS,YAAY,QAAQ,EAAG,KAAK,kBAAoB,GACzH,MAAM9D,EAAI,EAAE,2BAA2B,EAAE,MAAM,EAC/C,GAAIA,EACF,KAAK,OAAO,MAAM,WAAWA,EAAG,EAAE,UAAU,GAAG,MAC5C,CACH,MAAMC,EAAI,EAAE,2BAA2B,EAAE,UAAU,MAAM,EACzD,KAAK,OAAO,MAAM,WAAWA,EAAG,EAAE,UAAU,GAAG,CACrD,CACI,MAAMJ,EAAE,oBAAoB,EAAE,aAAc,EAAE,CAClD,CAIE,kBAAmB,CACjBiE,EAAE,YAAc,CAACA,EAAE,cAAgB,KAAK,kBAAoB,IAAK,KAAK,OAAO,cAAc,MAAO,CACtG,CAIE,gBAAgB,EAAG,CACjB,EAAE,eAAgB,CACtB,CACA,CACA,MAAMmW,GAAK,IAAKC,GAAK,IACrB,MAAMC,WAAWxW,CAAE,CAQjB,YAAY,CAAE,OAAQ,EAAG,iBAAkB,CAAC,EAAI,CAC9C,MAAM,CACJ,OAAQ,EACR,iBAAkB,CACxB,CAAK,EAAG,KAAK,SAAW,GAAI,KAAK,gBAAkB,KAAM,KAAK,sBAAwC,IAAI,IAAO,KAAK,UAAYuW,GAAI,KAAK,iBAAmB,IAAI,iBAAkBra,GAAM,CACpL,KAAK,gBAAgBA,CAAC,CAC5B,CAAK,EAAG,KAAK,iBAAiB,GAAGsE,GAAKtE,GAAM,CACtC,KAAK,uBAAuBA,EAAE,KAAK,CACpC,CAAA,EAAG,KAAK,iBAAiB,GAAGuE,GAAI,IAAM,CACrC,KAAK,QAAS,CACf,CAAA,EAAG,KAAK,iBAAiB,GAAGC,GAAI,IAAM,CACrC,KAAK,OAAQ,CACnB,CAAK,CACL,CAIE,QAAS,CACP,KAAK,iBAAiB,QACpB,KAAK,OAAO,GAAG,MAAM,SACrB,CACE,UAAW,GACX,QAAS,GACT,cAAe,GACf,WAAY,EACpB,CACA,EAAO,KAAK,SAAW,EACvB,CAIE,SAAU,CACR,KAAK,iBAAiB,WAAY,EAAE,KAAK,SAAW,EACxD,CAME,uBAAuB,EAAG,CACxB,KAAK,UAAY,CAAC1D,EAAE,KAAK,OAAO,QAAQ,IAAM,KAAK,sBAAsB,IAAI,SAAS,EAAE,OAAO,OAAO,EAAE,UAAU,EAAE,IAAI,GAAI,CAAC,EAAG,KAAK,iBAAmB,aAAa,KAAK,eAAe,EAAG,KAAK,gBAAkB,WAAW,IAAM,CAClO,IAAI,EACJ,KAAK,sBAAsB,OAAS,EAAI,EAAI,KAAK,sBAAsB,OAAQ,EAAC,KAAI,EAAG,MAAQ,EAAI,MAAM,KAAK,KAAK,sBAAsB,OAAM,CAAE,EAAG,KAAK,OAAO,UAAY,KAAK,OAAO,SAAS,KAAK,OAAO,IAAI,QAAS,CAAC,EAAG,KAAK,sBAAsB,MAAO,CACtQ,EAAO,KAAK,SAAS,EACrB,CAME,gBAAgB,EAAG,CACjB,KAAK,iBAAiB,KAAKuD,GAAI,CAC7B,UAAW,CACjB,CAAK,CACL,CACA,CACA,MAAMkW,GAAK,MAAMC,WAAW1W,CAAE,CAC5B,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,UAAY,0BAA2B,KAAK,UAAY,CAAA,EAAI,KAAK,WAAa,CAAE,EAAE,KAAK,cAAgB,CAAE,EAAE,KAAK,WAAa,CAAA,EAAI,KAAK,cAAgB,GAAI,KAAK,YAAe,GAAM,CAC5M,GAAI,CACF,MAAM,EAAI,EAAE,OAAO,CAAA,EAAI,CAAA,EAAI,EAAE,EAC7B,GAAI,EAAE,cAAgB,GAAI,CACxB,KAAK,cAAc,KAAK,EAAE,IAAI,EAC9B,MACV,CACQ,GAAI,CAAChD,EAAE,EAAE,OAAO,EACd,OACF,KAAK,cAAc,CAAC,EAAG,KAAK,eAAe,CAAC,EAAG,KAAK,kBAAkB,CAAC,CACxE,OAAQ,EAAG,CACVH,EACE,uBAAuB,EAAE,IAAI,iDAC7B,OACA,CACD,CACT,CACA,EAAO,KAAK,iBAAmB,MAAO,GAAM,CACtC,KAAM,CAAE,aAAc,EAAG,QAASX,CAAC,EAAK,KAAK,OAAQ,EAAI,EAAE,2BAA2B,EAAE,MAAM,EAC9F,CAAC,GAAK,KAAK,kBAAkB,EAAE,MAAM,GAAK,CAAC,EAAE,cAAc,MAAM,SAAS,OAAO,GAAK,GAAK,KAAK,cAAc,SAAS,EAAE,IAAI,IAAM,EAAE,eAAgB,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAGA,EAAE,MAAK,EAC1M,CACL,CAIE,MAAM,SAAU,CACd,KAAK,aAAc,CACvB,CAME,eAAe,EAAG,CAChB,EAAI,KAAK,gBAAkB,KAAK,YAAa,CACjD,CAOE,MAAM,oBAAoB,EAAG,EAAI,GAAI,CACnC,KAAM,CAAE,MAAOA,CAAG,EAAG,KAAK,OAAQ,EAAI,EAAE,MACxC,IAAK,EAAE,SAAW,EAAE,SAAS,OAAO,EAAI,EAAE,SAAS,OAAO,IAAM,CAACoB,EAAE,KAAK,UAAU,EAAG,CACnF,MAAM,KAAK,aAAa,EAAE,KAAK,EAC/B,MACN,CACI,MAAM,EAAI,EAAE,QAAQ,KAAK,SAAS,EAAG8C,EAAI,EAAE,QAAQ,YAAY,EAC/D,IAAIC,EAAI,EAAE,QAAQ,WAAW,EAC7B,GAAI,EACF,GAAI,CACF,KAAK,mBAAmB,KAAK,MAAM,CAAC,CAAC,EACrC,MACR,MAAc,CACd,CACI,GAAKD,EAAE,KAAM,GAAIC,EAAE,KAAI,IAAOA,EAAI,OAASA,EAAE,KAAM,EAAGA,EAAID,GAAK,QAC/D,MAAMyB,EAAI,OAAO,KAAK,KAAK,SAAS,EAAE,OAAO,CAACP,EAAGC,KAAOD,EAAEC,EAAE,YAAa,CAAA,EAAI,KAAK,UAAUA,CAAC,EAAE,oBAAsB,CAAE,EAAED,GAAI,CAAA,CAAE,EAAGvD,EAAI,OAAO,OAAO,CAAE,EAAE8D,EAAG3F,EAAE,kCAAmC,CAAE,GAAI,EAAI,CAAA,EAAG0F,EAAIsC,GAAE7D,EAAGtC,CAAC,EACvN,CAAC6D,EAAE,KAAI,GAAMA,EAAE,KAAI,IAAOxB,GAAK,CAACrB,EAAE,aAAa6C,CAAC,EAAI,MAAM,KAAK,YAAYxB,CAAC,EAAI,MAAM,KAAK,YAAYwB,EAAG,EAAE,CAChH,CAOE,MAAM,YAAY,EAAG,EAAI,GAAI,CAC3B,KAAM,CAAE,MAAO1F,EAAG,aAAc,CAAC,EAAK,KAAK,OAAQG,EAAI,EAAI,KAAK,YAAY,CAAC,EAAI,KAAK,aAAa,CAAC,EACpG,GAAI,CAACA,EAAE,OACL,OACF,GAAIA,EAAE,SAAW,EAAG,CAClBA,EAAE,CAAC,EAAE,QAAU,KAAK,mBAAmBA,EAAE,IAAG,CAAE,EAAI,KAAK,mBAAmBA,EAAE,IAAG,CAAE,EACjF,MACN,CACI,MAAM+D,EAAI,EAAE,cAAgB,EAAE,aAAa,KAAK,WAAa,EAAE,aAAa,QAC5E/D,EAAE,IACA,MAAOgE,EAAGwB,IAAM,KAAK,YAAYxB,EAAGwB,IAAM,GAAKzB,CAAC,CACtD,EAAO,EAAE,cAAgBlE,EAAE,WAAW,EAAE,aAAcA,EAAE,UAAU,GAAG,CACrE,CAIE,aAAc,CACZ,KAAK,UAAU,GAAG,KAAK,OAAO,GAAG,MAAM,OAAQ,QAAS,KAAK,gBAAgB,CACjF,CAIE,eAAgB,CACd,KAAK,UAAU,IAAI,KAAK,OAAO,GAAG,MAAM,OAAQ,QAAS,KAAK,gBAAgB,CAClF,CAIE,cAAe,CACb,MAAM,EAAI,KAAK,OAAO,MAAM,WAC5B,MAAM,KAAK,EAAE,OAAQ,CAAA,EAAE,QAAQ,KAAK,WAAW,CACnD,CAOE,gBAAgB,EAAG,CACjB,OAAOgB,GAAG,CAAC,EAAI,CAAC,CAAC,EAAID,EAAE,CAAC,EAAI,OAAO,KAAK,CAAC,EAAI,CAAE,CACnD,CAME,cAAc,EAAG,CACf,GAAI,EAAE,cAAgB,GACpB,OACF,MAAM,EAAI,EAAE,YAAY,MAAQ,CAAA,EAAIf,EAAI,CAAE,EAC1C,EAAE,QAAS,GAAM,CACf,MAAMG,EAAI,KAAK,gBAAgB,CAAC,EAChCH,EAAE,KAAK,GAAGG,CAAC,EAAGA,EAAE,QAASC,GAAM,CAC7B,GAAI,OAAO,UAAU,eAAe,KAAK,KAAK,UAAWA,CAAC,EAAG,CAC3DO,EACE,sBAAsB,EAAE,IAAI,cAAcP,CAAC,mDAAmD,KAAK,UAAUA,CAAC,EAAE,KAAK,IAAI,UACzH,MACD,EACD,MACV,CACQ,MAAM,EAAIW,EAAE,CAAC,EAAI,EAAEX,CAAC,EAAI,KACxB,KAAK,UAAUA,EAAE,YAAa,CAAA,EAAI,CAChC,KAAM,EACN,mBAAoB,CACrB,CACT,CAAO,CACF,CAAA,EAAG,KAAK,WAAW,EAAE,IAAI,EAAIJ,EAAE,IAAK,GAAM,EAAE,YAAW,CAAE,CAC9D,CAME,eAAe,EAAG,CAChB,GAAI,EAAE,cAAgB,GACpB,OACF,KAAM,CAAE,MAAO,EAAI,CAAA,CAAI,EAAG,EAAE,YAC5B,GAAI,CAAE,WAAYA,EAAG,UAAW,CAAG,EAAG,EACtC,CAACA,GAAK,CAAC,IAAMA,GAAK,CAAC,MAAM,QAAQA,CAAC,IAAMW,EAAE,mDAAmD,EAAE,IAAI,2BAA2B,EAAGX,EAAI,CAAA,GAAK,GAAK,CAAC,MAAM,QAAQ,CAAC,IAAMW,EAAE,kDAAkD,EAAE,IAAI,2BAA2B,EAAG,EAAI,CAAE,GAAG,IAAM,EAAI,EAAE,OAAQR,GAAMuB,GAAGvB,CAAC,EAAI,IAAMQ,EAAE,oBAAoBR,CAAC,cAAc,EAAE,IAAI,kCAAmC,MAAM,EAAG,GAAG,GAAI,KAAK,WAAW,EAAE,IAAI,EAAI,CACpa,WAAYH,GAAK,CAAE,EACnB,UAAW,GAAK,CAAA,CACtB,EACA,CAME,kBAAkB,EAAG,CACnB,EAAE,cAAgB,IAAM,CAAC,EAAE,YAAY,UAAYoB,EAAE,EAAE,YAAY,QAAQ,GAAK,OAAO,QAAQ,EAAE,YAAY,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAGpB,CAAC,IAAM,CACzIA,aAAa,QAAUW,EACrB,WAAWX,CAAC,SAAS,EAAE,IAAI,4DAC3B,MACR,EAAS,KAAK,cAAc,KAAK,CACzB,IAAK,EACL,QAASA,EACT,KAAM,CACd,CAAO,CACP,CAAK,CACL,CAOE,kBAAkB,EAAG,CACnB,OAAO6C,EAAE,cAAc,CAAC,CAC5B,CAME,MAAM,aAAa,EAAG,CACpB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,IAAI7C,EACJA,EAAI,MAAM,QAAQ,IAChB,MAAM,KAAK,CAAC,EAAE,IAAK,GAAM,KAAK,YAAY,CAAC,CAAC,CAClD,EAAOA,EAAIA,EAAE,OAAQ,GAAM,CAAC,CAAC,CAAC,EAC1B,MAAMG,EAAI,EAAE,aAAa,KAAK,WAAa,EAAE,aAAa,QAC1DH,EAAE,QACA,CAAC,EAAGkE,IAAM,CACR,EAAE,MAAM,EAAE,KAAM,EAAE,MAAOA,IAAM,GAAK/D,CAAC,CAC7C,CACK,CACL,CAME,MAAM,YAAY,EAAG,CACnB,MAAM,EAAIsB,GAAG,CAAC,EAAGzB,EAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,KAAK,CAAC,CAAC,EAAG,CAAE,UAAWkE,EAAG,WAAYC,CAAC,CAAE,IAAM,CAClG,KAAM,CAACwB,EAAG9D,CAAC,EAAI,EAAE,KAAK,MAAM,GAAG,EAAG6D,EAAIvB,EAAE,KAAMkB,GAAMA,EAAE,gBAAkB,EAAE,YAAW,CAAE,EAAGD,EAAIlB,EAAE,KAAMmB,GAAM,CAC1G,KAAM,CAACC,EAAGC,CAAC,EAAIF,EAAE,MAAM,GAAG,EAC1B,OAAOC,IAAMK,IAAMJ,IAAM1D,GAAK0D,IAAM,IAC5C,CAAO,EACD,MAAO,CAAC,CAACG,GAAK,CAAC,CAACN,CACtB,CAAK,EACD,GAAI,CAACpF,EACH,OACF,KAAM,CAAC,CAAC,EAAIA,EACZ,MAAO,CACL,MAAO,KAAK,kBAAkB,OAAQ,CACpC,KAAM,CACd,CAAO,EACD,KAAM,CACP,CACL,CAOE,YAAY,EAAG,CACb,KAAM,CAAE,MAAO,CAAC,EAAK,KAAK,OAAQA,EAAI6C,EAAE,KAAK,KAAK,EAClD,OAAO7C,EAAE,UAAY,EAAG,KAAK,SAASA,CAAC,EAAE,IAAKG,GAAM,CAClD,IAAI,EAAG+D,EAAI,EAAE,YAAaC,EAAI,GAC9B,OAAQhE,EAAE,SAAQ,CAChB,KAAK,KAAK,uBACR,EAAI0C,EAAE,KAAK,KAAK,EAAG,EAAE,YAAY1C,CAAC,EAClC,MACF,KAAK,KAAK,aACR,EAAIA,EAAGgE,EAAI,GAAI,KAAK,UAAU,EAAE,OAAO,IAAMD,EAAI,KAAK,UAAU,EAAE,OAAO,EAAE,MAC3E,KACV,CACM,KAAM,CAAE,KAAMyB,GAAMzB,EAAE,aAAe,CAAE,KAAM,CAAE,CAAA,EAAIrC,EAAI8D,EAAE,OAAO,CAACN,EAAGC,KAAO,KAAK,gBAAgBA,CAAC,EAAE,QAASoB,GAAM,CAChH,MAAMlB,EAAIzE,EAAEuE,CAAC,EAAIA,EAAEoB,CAAC,EAAI,KACxBrB,EAAEqB,EAAE,aAAa,EAAIlB,GAAK,CAAE,CAC7B,CAAA,EAAGH,GAAI,CAAE,CAAA,EAAGK,EAAI,OAAO,OAAO,CAAE,EAAE7D,EAAGqC,EAAE,kBAAkB,EAC1D,GAAI,EAAE,QAAQ,YAAW,IAAO,QAAS,CACvC,MAAMmB,EAAI2C,GAAE,EAAE,UAAWtC,CAAC,EAC1B,EAAI7C,EAAE,KAAK,MAAO,OAAQ,CACxB,UAAWwC,CACZ,CAAA,EAAE,UACJ,MACC,EAAE,UAAY2C,GAAE,EAAE,UAAWtC,CAAC,EAChC,MAAMN,EAAI,KAAK,kBAAkB,MAAO,CACtC,KAAM,CACd,CAAO,EACD,MAAO,CACL,QAAS,EACT,QAASjB,EACT,KAAMD,EAAE,KACR,MAAOkB,CACR,CACP,CAAK,EAAE,OAAQjF,GAAM,CACf,MAAM,EAAI0C,EAAE,QAAQ1C,EAAE,OAAO,EAAG+D,EAAIrB,EAAE,YAAY1C,EAAE,OAAO,EAC3D,MAAO,CAAC,GAAK+D,CACnB,CAAK,CACL,CAOE,aAAa,EAAG,CACd,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,GAAI,CAAC,EACH,MAAO,CAAE,EACX,MAAMlE,EAAI,EACV,OAAO,EAAE,MAAM,OAAO,EAAE,OAAQ,GAAM,EAAE,KAAM,CAAA,EAAE,IAAK,GAAM,CACzD,MAAMG,EAAI0C,EAAE,KAAK,KAAK,EACtB1C,EAAE,YAAc,EAChB,MAAMC,EAAI,KAAK,kBAAkB,MAAO,CACtC,KAAMD,CACd,CAAO,EACD,MAAO,CACL,QAASA,EACT,KAAMH,EACN,QAAS,GACT,MAAOI,CACR,CACP,CAAK,CACL,CAME,MAAM,mBAAmB,EAAG,CAC1B,KAAM,CAAE,MAAO,EAAG,aAAcJ,CAAC,EAAK,KAAK,OAAQ,CAAE,aAAc,CAAG,EAAGA,EACzE,GAAI,CAAC,GAAK,EAAE,OAAS,EAAE,MAAQ,CAAC6C,EAAE,2BAA2B,EAAE,QAAQ,SAAS,EAAG,CACjF,KAAK,YAAY,GAAI,GAAK,KAAO,OAAS,EAAE,KAAK,YAAc,EAAE,OAAO,EACxE,MACN,CACI,EAAE,6BAA6B,EAAE,QAAQ,SAAS,CACtD,CASE,MAAM,mBAAmB,EAAG,CAC1B,KAAM,CAAE,aAAc,EAAG,MAAO7C,CAAC,EAAK,KAAK,OAAQ,CAAE,QAAS,CAAG,EAAG,EACpE,GAAI,EAAE,cAAgB,EAAE,aAAa,KAAK,WAAa,EAAE,YAAY,OAASwa,GAAG,8BAA+B,CAC9G,MAAM,EAAI,MAAM,KAAK,eAAe,EAAE,WAAW,EACjD,GAAI,EAAG,CACL,MAAMtW,EAAI,EAAE,cAAgB,EAAE,aAAa,KAAK,WAAa,EAAE,aAAa,QAASC,EAAI,EAAE,MAAM,EAAE,KAAM,EAAE,MAAOD,CAAC,EACnHlE,EAAE,WAAWmE,EAAGnE,EAAE,UAAU,GAAG,EAC/B,MACR,CACA,CACI,GAAI,EAAE,cAAgB,EAAE,aAAa,aAAc,CACjD,MAAM,EAAI,EAAE,aAAa,KAAK,mBAC9B,SAAS,YACP,aACA,GACAgI,GAAE,EAAE,UAAW,CAAC,CACjB,CACF,MACC,KAAK,YAAY,CAAC,CACxB,CAOE,MAAM,eAAe,EAAG,CACtB,MAAM,EAAI,KAAK,cAAc,KAAM9H,GAAM,CACvC,MAAMC,EAAID,EAAE,QAAQ,KAAK,CAAC,EAC1B,OAAOC,EAAI,IAAMA,EAAE,MAAO,EAAG,EACnC,CAAK,EACD,OAAO,EAAI,CACT,MAAO,KAAK,kBAAkB,UAAW,CACvC,IAAK,EAAE,IACP,KAAM,CACd,CAAO,EACD,KAAM,EAAE,KAAK,IACnB,EAAQ,MACR,CAQE,YAAY,EAAG,EAAI,GAAI,CACrB,KAAM,CAAE,aAAcH,EAAG,MAAO,CAAC,EAAK,KAAK,OAAQ,CAAE,aAAcG,CAAG,EAAGH,EACzE,IAAII,EACJ,GAAI,GAAKD,GAAKA,EAAE,QAAS,CACvBC,EAAIJ,EAAE,MAAM,EAAE,KAAM,EAAE,MAAO,EAAE,EAAG,EAAE,WAAWI,EAAG,EAAE,UAAU,GAAG,EACjE,MACN,CACIA,EAAIJ,EAAE,MAAM,EAAE,KAAM,EAAE,KAAK,EAAG,EAAE,WAAWI,EAAG,EAAE,UAAU,GAAG,CACjE,CAOE,mBAAmB,EAAG,CACpB,KAAM,CAAE,aAAc,EAAG,MAAOJ,EAAG,MAAO,GAAM,KAAK,OACrD8H,GACE,EACC,GAAM,EAAE,WAAW,IAAI,CAAC,EAAE,cACjC,EAAM,QAAQ,CAAC,CAAE,KAAM,EAAG,KAAM5D,CAAG,EAAEC,IAAM,CACrC,IAAIwB,EAAI,GACRxB,IAAM,IAAMwB,EAAI,EAAE,cAAgB,EAAE,aAAa,KAAK,WAAa,EAAE,aAAa,SAClF,MAAM9D,EAAI,EAAE,OAAO,CACjB,KAAM,EACN,KAAMqC,EACN,QAASyB,CACjB,CAAO,EACD3F,EAAE,WAAW6B,EAAG7B,EAAE,UAAU,GAAG,CACrC,CAAK,CACL,CAQE,mBAAmB,EAAG,EAAGA,EAAG,CAC1B,MAAM,EAAI,OAAO,KAAK,KAAK,SAAS,EAAGG,EAAI,EAAG,CAAE,KAAMC,CAAC,EAAK,KAAK,UAAUD,EAAE,OAAO,GAAK,CAAE,EAAE,EAAI,KAAK,WAAWC,GAAK,KAAO,OAASA,EAAE,IAAI,GAAK,GAAI,EAAI,EAAE,SAASD,EAAE,OAAO,EAAG,EAAI0C,EAAE,cAAc,SAAS1C,EAAE,QAAQ,YAAW,CAAE,EAAG0B,EAAI,MAAM,KAAK1B,EAAE,QAAQ,EAAE,KAChQ,CAAC,CAAE,QAAS,CAAC,IAAO,EAAE,SAAS,CAAC,GAAK,CAAC,EAAE,SAAS,CAAC,CACxD,EAAOuF,EAAI,MAAM,KAAKvF,EAAE,QAAQ,EAAE,KAC5B,CAAC,CAAE,QAAS,KAAQ0C,EAAE,cAAc,SAAS,EAAE,YAAa,CAAA,CAC7D,EACD,GAAI,CAAC,GAAK,CAAC,GAAK,CAAChB,EACf,OAAO7B,EAAE,YAAYG,CAAC,EAAG,CAAC,GAAG,EAAGH,CAAC,EACnC,GAAI,GAAK,CAAC6B,GAAK,GAAK,CAAC6D,GAAK,CAAC7D,EACzB,MAAO,CAAC,GAAG,EAAG7B,EAAGG,CAAC,CACxB,CASE,SAAS,EAAG,CACV,MAAM,EAAI,MAAM,KAAK,EAAE,UAAU,EACjC,IAAIH,EACJ,MAAM,EAAI,CAACG,EAAGC,IAAM,CAClB,GAAIyC,EAAE,QAAQzC,CAAC,GAAK,CAACyC,EAAE,YAAYzC,CAAC,EAClC,OAAOD,EACT,MAAM,EAAIA,EAAEA,EAAE,OAAS,CAAC,EACxB,IAAI,EAAI,IAAI,iBACZ,OAAQ,GAAK0C,EAAE,WAAW,CAAC,IAAM,EAAI1C,EAAE,IAAG,GAAKC,EAAE,SAAQ,CACvD,KAAK,KAAK,aACR,GAAIJ,EAAI,KAAK,mBAAmBI,EAAGD,EAAG,CAAC,EAAGH,EACxC,OAAOA,EACT,MACF,KAAK,KAAK,UACR,OAAO,EAAE,YAAYI,CAAC,EAAG,CAAC,GAAGD,EAAG,CAAC,EACnC,QACE,MAAO,CAAC,GAAGA,EAAG,CAAC,CACzB,CACM,MAAO,CAAC,GAAGA,EAAG,GAAG,MAAM,KAAKC,EAAE,UAAU,EAAE,OAAO,EAAG,CAAE,CAAA,CAAC,CACxD,EACD,OAAO,EAAE,OAAO,EAAG,EAAE,CACzB,CAOE,kBAAkB,EAAG,EAAG,CACtB,OAAO,IAAI,YAAY,EAAG,CACxB,OAAQ,CACd,CAAK,CACL,CACA,EACAma,GAAG,8BAAgC,IACnC,IAAIE,GAAKF,GACT,MAAMG,WAAW5W,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,yBAA2B,GAAI,KAAK,gBAAkB,EACpF,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,eAChB,CAIE,MAAM,SAAU,CACd,KAAM,CAAE,MAAO,CAAG,EAAG,KAAK,OAAQ,CAAE,WAAY,CAAC,EAAK,EAAG9D,EAAI,CAAE,EAC/D,MAAM,KAAK,EAAE,QAAS,CAAA,EAAE,QAAQ,CAAC,CAAC,EAAGG,CAAC,IAAM,CAC1CA,EAAE,qBAAuBH,EAAE,KAAK,CAAC,CACvC,CAAK,EAAG,KAAK,yBAA2BA,EAAG,KAAK,OAAO,UAAYA,EAAE,OAAS,GAAK,KAAK,mBAAoB,EAAE,KAAK,OAAO,KAAK,OAAO,SAAU,EAAE,CAClJ,CAQE,MAAM,OAAO,EAAI,CAAC,KAAK,gBAAiB,EAAI,GAAI,CAC9C,GAAK,KAAK,yBAAyB,OAAS,GAAK,KAAK,mBAAoB,EAC1E,MAAMA,EAAI,KAAK,gBACf,KAAK,gBAAkB,EACvB,UAAWG,KAAK,KAAK,OACnB,KAAK,OAAOA,CAAC,EAAE,gBAAkB,KAAK,OAAOA,CAAC,EAAE,eAAe,CAAC,EAClE,GAAIH,IAAM,EACR,OAAO,KAAK,gBACd,GAAI,EACF,OAAO,KAAK,gBACd,KAAK,OAAO,sBAAsB,QAAS,EAC3C,MAAM,EAAI,MAAM,KAAK,OAAO,MAAM,KAAM,EACxC,OAAO,MAAM,KAAK,OAAO,aAAa,MAAK,EAAI,MAAM,KAAK,OAAO,SAAS,OAAO,EAAE,MAAM,EAAG,KAAK,OAAO,sBAAsB,OAAM,EAAI,KAAK,eACjJ,CAIE,oBAAqB,CACnB,MAAM,IAAIyD,GACR,yEAAyE,KAAK,yBAAyB,KAAK,IAAI,CAAC,gCAClH,CACL,CACA,QACA,MAAMkX,WAAW7W,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,yBAA2B,GAAI,KAAK,aAAe,EAAG,KAAK,sBAAwB,GAAI,KAAK,mBAAqB,EAAG,KAAK,gBAAkB,EAAG,KAAK,kBAAoB,EAAG,KAAK,UAAY,GAAI,KAAK,YAAc,GAAI,KAAK,aAAe,KAAM,KAAK,OAAS,EAAG,KAAK,OAAS,EAAG,KAAK,OAAS,EAAG,KAAK,OAAS,EAAG,KAAK,gBAAkB,CAAA,EAAI,KAAK,YAAc,CAAE,CAClY,CAME,WAAW,KAAM,CACf,MAAO,CACL,QAAS,uBACT,iBAAkB,kCAClB,KAAM,kCACN,cAAe,yCACf,iBAAkB,2CACnB,CACL,CAKE,SAAU,CACR,KAAK,qBAAsB,CAC/B,CAOE,eAAe,EAAG,EAAG,CACnB,MAAM9D,EAAI,SAAS,iBAAiB,EAAI,OAAO,YAAa,EAAI,OAAO,WAAW,EAClFA,EAAE,QAAQ,IAAI,KAAK,OAAO,QAAQ,IAAI,OAAO,EAAE,IAAM,KAAK,OAAO,eAAe,kBAAoB,GAAI,KAAK,iBAAkB,KAAK,gBAAkB,IACtJ,MAAMG,EAAI,CACR,IAAI+E,GAAE,IAAI,OAAO,GACjB,IAAI,KAAK,OAAO,QAAQ,IAAI,OAAO,GACnC,IAAI,KAAK,OAAO,cAAc,IAAI,aAAa,EACrD,EAAO,EAAIlF,EAAE,QAAQ,IAAM,KAAK,OAAO,GAAG,IAAI,aAAa,EAAGkE,EAAI/D,EAAE,KAAMgE,GAAM,CAAC,CAACnE,EAAE,QAAQmE,CAAC,CAAC,EAC1F,CAAC,GAAKD,IAAM,KAAK,UAAY,GAAI,KAAK,OAAS,EAAG,KAAK,OAAS,EACpE,CAIE,cAAe,CACb,KAAK,UAAY,GAAI,KAAK,OAAS,EAAG,KAAK,OAAS,EAAG,KAAK,iBAAiB,MAAM,QAAU,MACjG,CAIE,iBAAkB,CAChB,OAAO,KAAK,wBAChB,CAIE,gBAAiB,CACf,KAAK,yBAA2B,EACpC,CAIE,sBAAuB,CACrB,KAAM,CAAE,UAAW,GAAM,KAAK,QAAS,EACvC,KAAK,UAAU,GAAG,EAAG,YAAc,GAAM,CACvC,KAAK,iBAAiB,CAAC,CACxB,EAAE,EAAE,EAAG,KAAK,UAAU,GAAG,SAAS,KAAM,YAAatC,GAAI,GAAM,CAC9D,KAAK,iBAAiB,CAAC,CACxB,EAAE,EAAE,EAAG,CACN,QAAS,EACf,CAAK,EAAG,KAAK,UAAU,GAAG,SAAS,KAAM,aAAc,IAAM,CACvD,KAAK,kBAAmB,CAC9B,CAAK,EAAG,KAAK,UAAU,GAAG,OAAQ,SAAUA,GAAI,GAAM,CAChD,KAAK,cAAc,CAAC,CACrB,EAAE,EAAE,EAAG,CACN,QAAS,EACf,CAAK,EAAG,KAAK,UAAU,GAAG,SAAS,KAAM,UAAW,IAAM,CACpD,KAAK,eAAgB,CACtB,EAAE,EAAE,CACT,CAME,iBAAiB,EAAG,CACd,EAAE,SAAW,KAAK,oBAEtB,EAAE,OAAO,QAAQiB,EAAE,iBAAiB,IAAM,MAAQ,KAAK,eAAe,EAAE,MAAO,EAAE,KAAK,EAC1F,CAME,iBAAiB,EAAG,CAClB,KAAK,kBAAkB,CAAC,EAAG,KAAK,cAAc,EAAE,OAAO,CAC3D,CAIE,mBAAoB,CAClB,KAAK,eAAc,EAAI,KAAK,aAAc,CAC9C,CAIE,cAAc,EAAG,CACf,KAAK,kBAAkB,CAAC,CAC5B,CAIE,gBAAiB,CACf,KAAK,eAAc,EAAI,KAAK,aAAc,CAC9C,CAME,cAAc,EAAG,CACf,GAAI,KAAK,aAAe,KAAM,GAAK,KAAK,wBAA0B,KAAK,aAAe,KAAK,iBAAkB,SAAS,gBAAgB,aAAe,GAAK,KAAK,wBAA0B,KAAK,aAAe,KAAK,oBAAqB,CAAC,KAAK,aAAc,CACzP,KAAK,YAAc,GACnB,MACN,CACI,KAAK,cAAgB,KAAK,eAAe,KAAK,eAAiB,KAAK,gBAAkB,CAAC,KAAK,aAAe,KAAK,YAAY,EAAG,KAAK,YAAc,GACtJ,CAME,SAAU,CACR,KAAM,CAAE,GAAI,GAAM,KAAK,OAAQ,EAAI,EAAE,MAAM,OAAO,cAAc,IAAM,EAAE,IAAI,aAAa,EAAG7C,EAAI6C,EAAE,KAAK,MAAO8X,GAAG,IAAI,QAAS,CAAE,CAAA,EAAG,EAAI9X,EAAE,KAAK,MAAO8X,GAAG,IAAI,iBAAkB,CAAA,CAAE,EAAGxa,EAAI0C,EAAE,KAAK,MAAO8X,GAAG,IAAI,KAAM,EAAE,EACpN,OAAO,EAAE,YAAYxa,CAAC,EAAGH,EAAE,YAAY,CAAC,EAAG,EAAE,YAAYA,CAAC,EAAG,KAAK,iBAAmBG,EAAG,CACtF,UAAW,EACX,QAASH,CACV,CACL,CAME,eAAe,EAAG,CAChB,GAAI,EAAE,KAAK,cAAgB,KAAK,WAC9B,OACF,MAAM,EAAI,OAAO,YACjB,OAAO,SAAS,EAAG,CAAC,EAAG,KAAK,QAAU,OAAO,YAAc,EAAG,WAAW,IAAM,CAC7E,KAAK,eAAe,CAAC,CACtB,EAAE,CAAC,CACR,CAME,kBAAkB,EAAG,CACnB,GAAI,CAAC,KAAK,UACR,OACF,EAAE,QAAU,SAAW,KAAK,OAAS,EAAE,MAAO,KAAK,OAAS,EAAE,OAC9D,KAAM,CAAE,SAAU,EAAG,QAASA,EAAG,MAAO,GAAM,KAAK,yBAAwB,EAAIG,EAAI,KAAK,OAAS,GAAK,KAAK,OAAS,EAAGC,EAAI,KAAK,OAASJ,GAAK,KAAK,OAASA,EAC5J,KAAK,kBAAoB,EAAEG,GAAKC,GAAI,KAAK,2BAA6B,KAAK,kBAAoB,GAAI,KAAK,yBAA2B,GAAI,KAAK,uBAAsB,EAAI,KAAK,iBAAiB,MAAM,QAAU,SAAU,KAAK,oBAAmB,EAAI,KAAK,OAAO,QAAQ,QAAS,IAAM,SAAW,KAAK,mBAAmB,CAAC,EAAG,KAAK,iBAAkB,EAAE6D,EAAE,MAAM,kBACjW,CAIE,wBAAyB,CACvB,KAAK,iBAAiB,MAAM,KAAO,GAAG,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,IAAM,GAAG,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,OAAS,eAAe,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,MAAQ,eAAe,KAAK,OAAS,OAAO,WAAW,IACxU,CAIE,kBAAmB,CACjB,MAAMtE,EAAI,KAAK,OAAO,aAAa,gBAAgB,KAAK,gBAAgB,CAAC,CAAC,EAAE,SAC5E,GAAI,KAAK,mBAAqB,CAACA,EAC7B,UAAWK,KAAK,KAAK,gBACnB,KAAK,OAAO,eAAe,mBAAmBA,CAAC,EACnD,GAAI,CAAC,KAAK,mBAAqBL,EAC7B,UAAWK,KAAK,KAAK,gBACnB,KAAK,OAAO,eAAe,qBAAqBA,CAAC,CACzD,CAIE,qBAAsB,CACpB,KAAK,QAAU,KAAK,QAAU,KAAK,iBAAiB,MAAM,IAAM,GAAG,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,OAAS,eAAe,KAAK,OAAS,OAAO,WAAW,OAAS,KAAK,iBAAiB,MAAM,OAAS,eAAe,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,IAAM,GAAG,KAAK,OAAS,OAAO,WAAW,MAAO,KAAK,QAAU,KAAK,QAAU,KAAK,iBAAiB,MAAM,KAAO,GAAG,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,MAAQ,eAAe,KAAK,OAAS,OAAO,WAAW,OAAS,KAAK,iBAAiB,MAAM,MAAQ,eAAe,KAAK,OAAS,OAAO,WAAW,KAAM,KAAK,iBAAiB,MAAM,KAAO,GAAG,KAAK,OAAS,OAAO,WAAW,KACrtB,CAME,0BAA2B,CACzB,MAAML,EAAI,SAAS,KAAK,YAAc,EAAGK,EAAI,KAAK,OAAS,OAAO,YAAaE,EAAI,SAAS,iBAAiBP,EAAGK,CAAC,EAAGG,EAAI,KAAK,OAAO,aAAa,oBAAoBD,CAAC,EACtK,IAAI,EACJC,IAAM,SAAW,EAAI,KAAK,OAAO,aAAa,OAAO,UAAWuF,GAAMA,EAAE,SAAWvF,EAAE,MAAM,GAC3F,MAAM+D,EAAI,KAAK,OAAO,aAAa,UAAU,OAAO,cAAc,IAAMgB,GAAE,IAAI,OAAO,EAAGf,EAAI,OAAO,SAAS,OAAO,iBAAiBD,CAAC,EAAE,MAAO,EAAE,EAAI,EAAGyB,EAAIhG,EAAIwE,EAAGtC,EAAIlC,EAAIwE,EAC1K,MAAO,CACL,MAAO,EACP,QAASwB,EACT,SAAU9D,CACX,CACL,CAME,oBAAoB,EAAG,CACrB,KAAK,mBAAqB,KAAK,OAAO,eAAe,mBAAmB,CAAC,EAAG,KAAK,gBAAgB,KAAK,CAAC,CAC3G,CAME,mBAAmB,EAAG,CACpB,MAAM,EAAI,KAAK,gBAAgB,KAAK,gBAAgB,OAAS,CAAC,IAAM,EAAG7B,EAAI,KAAK,gBAAgB,OAAQ,EAAI,EAAGG,EAAI,GAAIC,EAAI,EAC3H,GAAI,EACF,OACF,MAAM,EAAI,KAAK,gBAAgBJ,EAAI,CAAC,EAAI,KAAK,gBAAgBA,EAAI,CAAC,EAAI,EACtE,IAAI,EAAII,EACRJ,EAAI,IAAM,EAAI,EAAI,EAAIG,GACtB,MAAM,EAAI,EAAI,KAAK,gBAAgBH,EAAI,CAAC,GAAK,IAAM,EAAG6B,EAAI,EAAI,KAAK,gBAAgB7B,EAAI,CAAC,GAAK,IAAMG,EAAGiF,EAAI,EAAE,GAAKvD,GAAK,IAAMzB,GAC5H,GAAI,CAACgF,IAAM,EAAI,KAAK,gBAAgBpF,EAAI,CAAC,GAAK,KAAK,gBAAgBA,EAAI,CAAC,IAAM,QAAS,CACrF,IAAIuF,EAAI,KAAK,gBAAgBvF,EAAI,CAAC,EAAI,GAAK,EAC3C,IAAKuF,EAAGA,GAAK,EAAGA,IACd,KAAK,oBAAoBA,CAAC,EAC5B,MACN,CACI,GAAI,CAACH,GAAK,EAAI,KAAK,gBAAgBpF,EAAI,CAAC,EAAG,CACzC,QAASuF,EAAI,KAAK,gBAAgBvF,EAAI,CAAC,EAAI,EAAGuF,GAAK,EAAGA,IACpD,KAAK,oBAAoBA,CAAC,EAC5B,MACN,CACI,GAAI,CAACH,EACH,OACF,IAAIC,EAAIrF,EAAI,EAAGsF,EACf,IAAK,EAAI,KAAK,gBAAgBtF,EAAI,CAAC,EAAIsF,EAAI,IAAM,EAAI,KAAK,gBAAgBD,CAAC,EAAIC,EAAI,IAAM,EAAI,KAAK,gBAAgBD,CAAC,EAAGC,EAAG,GACvH,KAAK,mBAAqB,KAAK,OAAO,eAAe,qBAAqB,KAAK,gBAAgBD,CAAC,CAAC,EAAG,KAAK,gBAAgB,IAAG,EAAIA,GACtI,CACA,EACA,MAAMuV,WAAW9W,CAAE,CAMjB,MAAM,OAAO,EAAG,CACd,OAAO,IAAI,QAAS,GAAM,CACxB,KAAM,CAAE,MAAO9D,EAAG,aAAc,CAAC,EAAK,KAAK,OAC3C,GAAI,EAAE,SAAW,EACf,EAAE,OAAQ,MACP,CACH,MAAMG,EAAI,EAAE,IAAI,CAAC,CAAE,KAAMC,EAAG,KAAM,EAAG,MAAO,EAAG,GAAI,CAAC,IAAO,CACzDJ,EAAE,UAAU,IAAII,CAAC,IAAM,KAAOQ,EAAE,SAASR,CAAC,kEAAmE,MAAM,EAAG,EAAI,KAAK,uBAAuBA,EAAG,EAAG,CAAC,EAAGA,EAAIJ,EAAE,UACtK,IAAI6B,EACJ,GAAI,CACFA,EAAI,EAAE,aAAa,CACjB,GAAI,EACJ,KAAMzB,EACN,KAAM,EACN,MAAO,CACrB,CAAa,CACF,OAAQsF,EAAG,CACV/E,EAAE,UAAUP,CAAC,qCAAsC,QAAS,CAC1D,KAAM,EACN,MAAOsF,CACR,CAAA,EAAG,EAAI,KAAK,uBAAuBtF,EAAG,EAAG,CAAC,EAAGA,EAAIJ,EAAE,SAAU6B,EAAI,EAAE,aAAa,CAC/E,GAAI,EACJ,KAAMzB,EACN,KAAM,EACN,MAAO,CACrB,CAAa,CACb,CACU,OAAOyB,CACjB,CAAS,EACD,EAAE,WAAW1B,CAAC,CACtB,CACM,OAAO,oBAAoB,IAAM,CAC/B,EAAG,CACX,EAAS,CAAE,QAAS,IAAK,CACzB,CAAK,CACL,CAQE,uBAAuB,EAAG,EAAGH,EAAG,CAC9B,KAAM,CAAE,MAAO,CAAG,EAAG,KAAK,OAC1B,IAAIG,EAAI,EACR,GAAI,EAAE,YAAY,IAAI,CAAC,EAAG,CACxB,MAAMC,EAAI,EAAE,YAAY,IAAI,CAAC,EAAE,QAC/BA,IAAM,QAAUA,EAAE,CAAC,EAAE,QAAU,SAAWD,EAAIC,EAAE,CAAC,EAAE,MACzD,CACI,MAAO,CACL,UAAW,CACT,GAAIJ,EACJ,KAAM,EACN,KAAM,CACP,EACD,MAAOG,CACR,CACL,CACA,CACA,MAAM0a,WAAW/W,CAAE,CAMjB,MAAM,MAAO,CACX,KAAM,CAAE,aAAc,EAAG,MAAO,CAAG,EAAG,KAAK,OAAQ9D,EAAI,EAAE,OAAQ,EAAI,CAAE,EACvE,GAAI,CACFA,EAAE,QAAS,GAAM,CACf,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CACnC,CAAO,EACD,MAAMG,EAAI,MAAM,QAAQ,IAAI,CAAC,EAAGC,EAAI,MAAM0H,GAAG3H,EAAI,GAAM,EAAE,WAAW,IAAI,CAAC,EAAE,cAAc,EACzF,OAAO,KAAK,WAAWC,CAAC,CACzB,OAAQD,EAAG,CACVS,EAAE,oCAAqC,QAAST,CAAC,CACvD,CACA,CAOE,MAAM,aAAa,EAAG,CACpB,MAAM,EAAI,MAAM,EAAE,OAAQH,EAAI,GAAK,MAAM,EAAE,SAAS,EAAE,IAAI,EAC1D,MAAO,CACL,GAAG,EACH,QAASA,CACV,CACL,CAOE,WAAW,EAAG,CACZ,MAAM,EAAI,CAAE,EACZ,OAAO,EAAE,QAAQ,CAAC,CAAE,GAAIA,EAAG,KAAM,EAAG,KAAMG,EAAG,MAAOC,EAAG,QAAS,CAAC,IAAO,CACtE,GAAI,CAAC,EAAG,CACNO,EAAE,UAAU,CAAC,yCAAyC,EACtD,MACR,CACM,GAAI,IAAM,KAAK,OAAO,MAAM,SAAU,CACpC,EAAE,KAAKR,CAAC,EACR,MACR,CACM,MAAM,EAAI,CACR,GAAIH,EACJ,KAAM,EACN,KAAMG,EACN,GAAG,CAACiB,EAAEhB,CAAC,GAAK,CACV,MAAOA,CACjB,CACO,EACD,EAAE,KAAK,CAAC,CACd,CAAK,EAAG,CACF,KAAM,CAAiB,IAAI,KAC3B,OAAQ,EACR,QAAS,aACV,CACL,CACA,EACC,UAAW,CACV,GAAI,CACF,GAAI,OAAO,SAAW,IAAK,CACzB,IAAIN,EAAI,SAAS,cAAc,OAAO,EACtCA,EAAE,YAAY,SAAS,eAAe,8UAA8U,CAAC,EAAG,SAAS,KAAK,YAAYA,CAAC,CACzZ,CACG,OAAQ,EAAG,CACV,QAAQ,MAAM,iCAAkC,CAAC,CACrD,CACA,GAAI,EACJ,MAAMgb,GAAK,gSACX,SAASC,GAAGjb,EAAG,CACb,MAAM,EAAI,SAAS,cAAc,KAAK,EACtC,EAAE,UAAYA,EAAE,KAAM,EACtB,MAAM,EAAI,SAAS,uBAAwB,EAC3C,OAAO,EAAE,OAAO,GAAG,MAAM,KAAK,EAAE,UAAU,CAAC,EAAG,CAChD,CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQA,MAAMkb,EAAG,CAOP,WAAW,qBAAsB,CAC/B,MAAO,EACX,CAUE,YAAY,CAAE,KAAM,EAAG,OAAQ,EAAG,IAAKhb,EAAG,SAAU,GAAK,CACvD,KAAK,IAAMA,EAAG,KAAK,SAAW,EAAG,KAAK,KAAO,CAC3C,MAAO,KAAK,IAAI,OAAO,MACvB,QAAS,cACV,EAAE,KAAK,WAAa,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,GAAI,KAAK,aAAe,EAAE,YAAc,EAAE,YAAcgb,GAAG,oBAAqB,KAAK,MAAQ,GAAK,CAAE,EAAE,KAAK,SAAW,KAAM,KAAK,eAAiB,EAAE,eAAiB,EACnO,CAOE,QAAQ,EAAG,CACT,GAAI,EAAE,OAAS,aAAe,EAAE,OAAS,UAAY,CAAC,KAAK,SACzD,OACF,KAAM,CAAE,YAAa,CAAG,EAAG,KAAK,SAChC,IAAM,KAAO,KAAK,SAAS,UAAY,GAC3C,CAOE,UAAW,CACT,MAAM,EAAI,SAAS,cAAc,KAAK,EACtC,OAAO,EAAE,UAAU,IAAI,KAAK,KAAK,QAAS,KAAK,KAAK,KAAK,EAAG,EAAE,gBAAkB,QAAS,EAAE,QAAQ,kBAAoB,KAAK,IAAI,KAAK,EAAE,KAAK,YAAY,EAAG,KAAK,MAAM,OAAS,EAAE,UAAY,KAAK,MAAM,MAAO,KAAK,WAAa,EAAE,gBAAkB,OAAQ,EAAE,iBAAiB,QAAS,KAAK,OAAO,GAAI,CAC7S,CAME,QAAS,CACP,OAAO,KAAK,SAAW,KAAK,SAAU,EAAE,KAAK,QACjD,CAQE,MAAM,EAAG,CACP,GAAI,CAAC,KAAK,SACR,OACF,KAAK,MAAM,MAAQ,EAAE,KACrB,MAAM,EAAID,GAAG,EAAE,IAAI,EACnB,KAAK,SAAS,YAAY,CAAC,EAAG,KAAK,SAAS,UAAW,CAC3D,CASE,SAAS,EAAG,CACV,MAAO,EAAE,EAAE,KAAK,KAAM,IAAK,IAAM,CAAC,KAAK,eAC3C,CAQE,KAAK,EAAG,CACN,MAAO,CACL,KAAM,EAAE,SACT,CACL,CAME,QAAQ,EAAG,CACT,MAAM,EAAI,CACR,KAAM,EAAE,OAAO,KAAK,SACrB,EACD,KAAK,MAAQ,EAAG,OAAO,sBAAsB,IAAM,CACjD,KAAK,WAAa,KAAK,SAAS,UAAY,KAAK,MAAM,MAAQ,GACrE,CAAK,CACL,CAKE,WAAW,kBAAmB,CAC5B,MAAO,CACL,OAAQ,OAER,OAAQ,MAET,CACL,CAKE,WAAW,UAAW,CACpB,MAAO,CACL,KAAM,CACJ,GAAI,EACZ,CACK,CACL,CAME,WAAW,qBAAsB,CAC/B,MAAO,EACX,CAOE,WAAW,aAAc,CACvB,MAAO,CACL,KAAM,CAAC,GAAG,CACX,CACL,CAME,WAAW,SAAU,CACnB,MAAO,CACL,KAAMD,GACN,MAAO,MACR,CACL,CACA,CACA,MAAMG,EAAG,CACP,aAAc,CACZ,KAAK,YAAc,MACvB,CAOE,WAAW,UAAW,CACpB,MAAO,CACL,EAAG,CAAA,CACJ,CACL,CAIE,QAAS,CACP,MAAO,CACL,KAAMnR,GACN,KAAM,OACN,WAAY,IAAM,CAChB,SAAS,YAAY,KAAK,WAAW,CACtC,EACD,SAAU,IAAM,SAAS,kBAAkB,KAAK,WAAW,CAC5D,CACL,CAME,IAAI,UAAW,CACb,MAAO,OACX,CACA,CACAmR,GAAG,SAAW,GACdA,GAAG,MAAQ,OACX,MAAMC,EAAG,CACP,aAAc,CACZ,KAAK,YAAc,SAAU,KAAK,IAAM,CACtC,OAAQ,iBACR,aAAc,yBACd,eAAgB,wBACtB,EAAO,KAAK,MAAQ,CACd,OAAQ,IACT,CACL,CAOE,WAAW,UAAW,CACpB,MAAO,CACL,EAAG,CAAA,CACJ,CACL,CAIE,QAAS,CACP,OAAO,KAAK,MAAM,OAAS,SAAS,cAAc,QAAQ,EAAG,KAAK,MAAM,OAAO,KAAO,SAAU,KAAK,MAAM,OAAO,UAAU,IAAI,KAAK,IAAI,OAAQ,KAAK,IAAI,cAAc,EAAG,KAAK,MAAM,OAAO,UAAY7Q,GAAI,KAAK,MAAM,MAC5N,CAIE,UAAW,CACT,SAAS,YAAY,KAAK,WAAW,CACzC,CAIE,YAAa,CACX,MAAM,EAAI,SAAS,kBAAkB,KAAK,WAAW,EACrD,OAAO,KAAK,MAAM,OAAO,UAAU,OAAO,KAAK,IAAI,aAAc,CAAC,EAAG,CACzE,CAIE,IAAI,UAAW,CACb,MAAO,OACX,CACA,CACA6Q,GAAG,SAAW,GACdA,GAAG,MAAQ,SACX,MAAMC,EAAG,CAIP,YAAY,CAAE,IAAK,GAAK,CACtB,KAAK,YAAc,aAAc,KAAK,cAAgB,SAAU,KAAK,UAAY,GAAI,KAAK,IAAM,CAC9F,OAAQ,iBACR,aAAc,yBACd,eAAgB,uBAChB,aAAc,yBACd,MAAO,uBACP,YAAa,8BACnB,EAAO,KAAK,MAAQ,CACd,OAAQ,KACR,MAAO,IACR,EAAE,KAAK,YAAc,GAAI,KAAK,QAAU,EAAE,QAAS,KAAK,cAAgB,EAAE,cAAe,KAAK,SAAW,EAAE,SAAU,KAAK,KAAO,EAAE,KAAM,KAAK,UAAY,IAAIlX,CACnK,CAOE,WAAW,UAAW,CACpB,MAAO,CACL,EAAG,CACD,KAAM,GACN,OAAQ,SACR,IAAK,UACb,CACK,CACL,CAIE,QAAS,CACP,OAAO,KAAK,MAAM,OAAS,SAAS,cAAc,QAAQ,EAAG,KAAK,MAAM,OAAO,KAAO,SAAU,KAAK,MAAM,OAAO,UAAU,IAAI,KAAK,IAAI,OAAQ,KAAK,IAAI,cAAc,EAAG,KAAK,MAAM,OAAO,UAAYqG,GAAI,KAAK,MAAM,MAC5N,CAIE,eAAgB,CACd,OAAO,KAAK,MAAM,MAAQ,SAAS,cAAc,OAAO,EAAG,KAAK,MAAM,MAAM,YAAc,KAAK,KAAK,EAAE,YAAY,EAAG,KAAK,MAAM,MAAM,aAAe,OAAQ,KAAK,MAAM,MAAM,UAAU,IAAI,KAAK,IAAI,KAAK,EAAG,KAAK,MAAM,MAAM,iBAAiB,UAAY,GAAM,CAC/P,EAAE,UAAY,KAAK,WAAa,KAAK,aAAa,CAAC,CACzD,CAAK,EAAG,KAAK,MAAM,KACnB,CAME,SAAS,EAAG,CACV,GAAI,EAAG,CACL,KAAK,aAAe,KAAK,UAAU,QAAO,EAAI,KAAK,UAAU,qBAAoB,IAAO,KAAK,UAAU,kBAAiB,EAAI,KAAK,UAAU,QAC3I,MAAM,EAAI,KAAK,UAAU,cAAc,GAAG,EAC1C,GAAI,EAAG,CACL,KAAK,UAAU,YAAY,CAAC,EAAG,KAAK,OAAQ,EAAE,KAAK,aAAY,EAAI,KAAK,WAAY,EAAE,KAAK,QAAQ,MAAO,EAC1G,MACR,CACA,CACI,KAAK,cAAe,CACxB,CAIE,YAAa,CACX,MAAM,EAAI,KAAK,UAAU,cAAc,GAAG,EAC1C,GAAI,EAAG,CACL,KAAK,MAAM,OAAO,UAAYK,GAAI,KAAK,MAAM,OAAO,UAAU,IAAI,KAAK,IAAI,YAAY,EAAG,KAAK,MAAM,OAAO,UAAU,IAAI,KAAK,IAAI,YAAY,EAAG,KAAK,YAAa,EACpK,MAAM,EAAI,EAAE,aAAa,MAAM,EAC/B,KAAK,MAAM,MAAM,MAAQ,IAAM,OAAS,EAAI,GAAI,KAAK,UAAU,KAAM,CACtE,MACC,KAAK,MAAM,OAAO,UAAYL,GAAI,KAAK,MAAM,OAAO,UAAU,OAAO,KAAK,IAAI,YAAY,EAAG,KAAK,MAAM,OAAO,UAAU,OAAO,KAAK,IAAI,YAAY,EACvJ,MAAO,CAAC,CAAC,CACb,CAIE,OAAQ,CACN,KAAK,aAAc,CACvB,CAIE,IAAI,UAAW,CACb,MAAO,OACX,CAIE,eAAgB,CACd,KAAK,YAAc,KAAK,aAAa,EAAE,EAAI,KAAK,YAAY,EAAE,CAClE,CAIE,YAAY,EAAI,GAAI,CAClB,KAAK,MAAM,MAAM,UAAU,IAAI,KAAK,IAAI,WAAW,EAAG,GAAK,KAAK,MAAM,MAAM,MAAK,EAAI,KAAK,YAAc,EAC5G,CAOE,aAAa,EAAI,GAAI,CACnB,GAAI,KAAK,UAAU,wBAAyB,CAC1C,MAAM,EAAI,IAAIrG,EACd,EAAE,KAAI,EAAI,KAAK,UAAU,QAAO,EAAI,KAAK,UAAU,uBAAwB,EAAE,QAAS,CAC5F,CACI,KAAK,MAAM,MAAM,UAAU,OAAO,KAAK,IAAI,WAAW,EAAG,KAAK,MAAM,MAAM,MAAQ,GAAI,GAAK,KAAK,UAAU,WAAY,EAAE,KAAK,YAAc,EAC/I,CAME,aAAa,EAAG,CACd,IAAI,EAAI,KAAK,MAAM,MAAM,OAAS,GAClC,GAAI,CAAC,EAAE,OAAQ,CACb,KAAK,UAAU,QAAS,EAAE,KAAK,SAAU,EAAE,eAAc,EAAI,KAAK,aAAc,EAChF,MACN,CACI,GAAI,CAAC,KAAK,YAAY,CAAC,EAAG,CACxB,KAAK,SAAS,KAAK,CACjB,QAAS,4BACT,MAAO,OACR,CAAA,EAAGtD,EAAE,wBAAyB,OAAQ,CAAC,EACxC,MACN,CACI,EAAI,KAAK,YAAY,CAAC,EAAG,KAAK,UAAU,QAAS,EAAE,KAAK,UAAU,qBAAoB,EAAI,KAAK,WAAW,CAAC,EAAG,EAAE,eAAgB,EAAE,EAAE,gBAAe,EAAI,EAAE,yBAA0B,EAAE,KAAK,UAAU,cAAa,EAAI,KAAK,cAAc,MAAO,CACnP,CAOE,YAAY,EAAG,CACb,MAAO,CAAC,KAAK,KAAK,CAAC,CACvB,CAQE,YAAY,EAAG,CACb,OAAO,EAAI,EAAE,KAAM,EAAE,EAAI,KAAK,YAAY,CAAC,EAAG,CAClD,CAME,YAAY,EAAG,CACb,GAAI,iBAAiB,KAAK,CAAC,EACzB,OAAO,EACT,MAAM,EAAI,YAAY,KAAK,CAAC,EAAGX,EAAI,EAAE,UAAU,EAAG,CAAC,IAAM,IAAK,EAAI,cAAc,KAAK,CAAC,EACtF,MAAO,CAAC,GAAK,CAACA,GAAK,CAAC,IAAM,EAAI,UAAY,GAAI,CAClD,CAME,WAAW,EAAG,CACZ,MAAM,EAAI,KAAK,UAAU,cAAc,GAAG,EAC1C,GAAK,KAAK,UAAU,YAAY,CAAC,EAAG,SAAS,YAAY,KAAK,YAAa,GAAI,CAAC,CACpF,CAIE,QAAS,CACP,SAAS,YAAY,KAAK,aAAa,CAC3C,CACA,CACAmb,GAAG,SAAW,GACdA,GAAG,MAAQ,OACX,IAAAC,GAAA,KAAS,CAIP,YAAY,CAAE,IAAK,GAAK,CACtB,KAAK,QAAU,EAAE,KAAM,KAAK,UAAY,EAAE,OAAQ,KAAK,aAAe,EAAE,UAAW,KAAK,SAAW,EAAE,MAAO,KAAK,SAAW,EAAE,KAClI,CAIE,MAAM,QAAS,CACb,MAAM,EAAInX,EAAE,MAAO,EAAI,KAAK,UAAU,kBAAkB,EAAE,UAAU,EACpE,GAAI,IAAM,OACR,MAAO,CAAE,EACX,MAAMjE,EAAI,KAAK,SAAS,cAAa,EAAI,EAAI,MAAM6E,GAAG,EAAG7E,CAAC,EAC1D,GAAI,EAAE,SAAW,EACf,MAAO,CAAE,EACX,MAAMG,EAAI,EAAE,OAAO,CAAC,EAAG0B,IAAM,CAC3B,IAAI6D,EACJ,OAAQA,EAAI7D,EAAE,UAAY,MAAQ6D,EAAE,QAAS,GAAM,CACjD,EAAE,KAAK,CACL,KAAM,EAAE,KACR,MAAOlC,EAAE,EAAE+F,EAAE,UAAW,EAAE,KAAK,EAC/B,KAAM1H,EAAE,KACR,gBAAiB,GACjB,WAAY,SAAY,CACtB,MAAM,EAAI,MAAM,KAAK,UAAU,QAAQ,EAAE,GAAIA,EAAE,KAAM,EAAE,IAAI,EAC3D,KAAK,SAAS,WAAW,EAAG,KAAK,CAC7C,CACA,CAAS,CACF,CAAA,EAAG,CACV,EAAO,CAAA,CAAE,EAAGzB,EAAI,MAAM,EAAE,sBAAuB,EAAE,EAAIA,IAAM,OAASA,EAAE,KAAOqK,GAAI,EAAI,CAAChI,GAAI,EACtF,MAAO,CACL,KAAM,EACN,KAAM,aACN,KAAM,CACJ,MAAO,KAAK,QAAQ,EAAE,YAAY,CACnC,EACD,SAAU,CACR,WAAY,EACZ,MAAOtC,EACP,OAAQ,IAAM,CACZ,IAAM,KAAK,aAAa,kBAAmB,EAAE,KAAK,aAAa,OAChE,EACD,QAAS,IAAM,CACb,IAAM,KAAK,aAAa,QAAS,EAAE,KAAK,aAAa,uBAC/D,CACA,CACK,CACL,CACA,EACAkb,GAAG,SAAW,GACd,IAAAC,GAAA,KAAS,CAMP,YAAY,CAAE,KAAM,EAAG,IAAK,CAAC,EAAI,CAC/B,KAAK,IAAM,CACT,QAAS,UACT,KAAM,gBACN,MAAO,iBACP,SAAU,mBACX,EAAE,KAAK,IAAM,EAAG,KAAK,MAAQ,EAAE,OAAS,KAAK,IAAI,KAAK,EAAE,OAAO,EAAG,KAAK,SAAW,KAAK,IAAI,KAAK,EAAE,2CAA2C,EAAG,KAAK,UAAY,EAAE,UAAW,KAAK,QAAU,KAAK,KAAM,CAC7M,CAME,QAAS,CACP,OAAO,KAAK,OAChB,CAME,MAAO,CACL,OAAO,KAAK,SAChB,CAME,MAAO,CACL,MAAM,EAAIzY,EAAE,KAAK,MAAO,KAAK,IAAI,OAAO,EAAG,EAAI+H,GAAI5K,EAAI6C,EAAE,KAAK,MAAO,KAAK,IAAI,IAAI,EAAG,EAAIA,EAAE,KAAK,MAAO,KAAK,IAAI,MAAO,CACrH,YAAa,KAAK,KACxB,CAAK,EAAG1C,EAAI0C,EAAE,KAAK,MAAO,KAAK,IAAI,SAAU,CACvC,YAAa,KAAK,QACxB,CAAK,EACD,OAAO,EAAE,UAAY,EAAG7C,EAAE,YAAY,CAAC,EAAGA,EAAE,YAAYG,CAAC,EAAG,EAAE,YAAYH,CAAC,EAAG,CAClF,CACA,EACAub,GAAG,oBAAsB,GACzB,MAAMC,WAAWC,EAAG,CAClB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,KAAOnN,GAAG,MACxC,CAIE,IAAI,OAAQ,CACV,OAAO,KAAK,cAAcI,GAAG,KAAK,CACtC,CAIE,QAAS,CACP,OAAO,IAAI,KAAK,cAAc,CAC5B,IAAK,KAAK,IACV,OAAQ,KAAK,QACnB,CAAK,CACL,CAKE,IAAI,qBAAsB,CACxB,OAAO,KAAK,cAAcA,GAAG,mBAAmB,GAAK,EACzD,CACA,CACA,MAAMgN,WAAWD,EAAG,CAClB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,KAAOnN,GAAG,IACxC,CAOE,OAAO,EAAG,EAAG,CACX,OAAO,IAAI,KAAK,cAAc,CAC5B,IAAK,KAAK,IACV,OAAQ,KAAK,SACb,MAAO,EACP,KAAM,CACZ,CAAK,CACL,CACA,QACA,MAAMqN,WAAU,GAAI,CAIlB,IAAI,YAAa,CACf,MAAM,EAAI,MAAM,KAAK,KAAK,QAAS,CAAA,EAAE,OAAO,CAAC,CAAA,CAAG,CAAC,IAAM,EAAE,QAAO,CAAE,EAClE,OAAO,IAAIA,GAAE,CAAC,CAClB,CAIE,IAAI,aAAc,CAChB,MAAM,EAAI,MAAM,KAAK,KAAK,QAAS,CAAA,EAAE,OAAO,CAAC,CAAA,CAAG,CAAC,IAAM,EAAE,SAAQ,CAAE,EACnE,OAAO,IAAIA,GAAE,CAAC,CAClB,CAIE,IAAI,YAAa,CACf,MAAM,EAAI,MAAM,KAAK,KAAK,QAAS,CAAA,EAAE,OAAO,CAAC,CAAA,CAAG,CAAC,IAAM,EAAE,OAAM,CAAE,EACjE,OAAO,IAAIA,GAAE,CAAC,CAClB,CAIE,IAAI,eAAgB,CAClB,MAAM,EAAI,MAAM,KAAK,KAAK,QAAO,CAAE,EAAE,OAAO,CAAC,CAAG,CAAA,CAAC,IAAM,EAAE,UAAU,EACnE,OAAO,IAAIA,GAAE,CAAC,CAClB,CAIE,IAAI,eAAgB,CAClB,MAAM,EAAI,MAAM,KAAK,KAAK,QAAS,CAAA,EAAE,OAAO,CAAC,CAAA,CAAG,CAAC,IAAM,CAAC,EAAE,UAAU,EACpE,OAAO,IAAIA,GAAE,CAAC,CAClB,CACA,EACA,IAAIC,GAAK,OAAO,eAAgBC,GAAK,OAAO,yBAA0BC,GAAK,CAAChc,EAAG,EAAG,EAAGE,IAAM,CACzF,QAAS,EAAyB6b,GAAG,EAAG,CAAC,EAAO1b,EAAIL,EAAE,OAAS,EAAGM,EAAGD,GAAK,EAAGA,KAC1EC,EAAIN,EAAEK,CAAC,KAAO,EAASC,EAAE,EAAG,EAAG,CAAC,GAAa,GAChD,OAAY,GAAKwb,GAAG,EAAG,EAAG,CAAC,EAAG,CAChC,EACA,MAAMG,WAAWN,EAAG,CAClB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,KAAOnN,GAAG,MAAO,KAAK,YAAc,IAAIqN,GAAK,KAAK,MAAQ,IAAIA,EAC5F,CAQE,OAAO,EAAG,EAAG3b,EAAG,CACd,OAAO,IAAI,KAAK,cAAc,CAC5B,KAAM,EACN,MAAO,EACP,SAAUA,EACV,IAAK,KAAK,IACV,OAAQ,KAAK,QACnB,CAAK,CACL,CAIE,IAAI,qBAAsB,CACxB,OAAO,KAAK,cAAcyO,GAAG,mBAAmB,IAAM,EAC1D,CAIE,IAAI,qBAAsB,CACxB,OAAO,KAAK,cAAcA,GAAG,mBAAmB,CACpD,CAcE,IAAI,SAAU,CACZ,MAAM,EAAI,KAAK,cAAcA,GAAG,OAAO,EAAG,EAAI,KAAK,OAAOF,GAAG,OAAO,EACpE,GAAI,CAACnN,EAAE,CAAC,GAAK,IAAM,GACjB,OAAO,EAAI,MAAM,QAAQ,CAAC,EAAI,MAAM,QAAQ,CAAC,EAAI,EAAE,IAAI,CAACpB,EAAG,IAAM,CAC/D,MAAMG,EAAI,EAAE,CAAC,EACb,OAAOA,EAAI,CACT,GAAGA,EACH,GAAGH,CACb,EAAYA,CACZ,CAAO,EAAI,CAAC,CAAC,EAAI,MAAM,QAAQ,CAAC,EAAI,EAAI,CAChC,CACE,GAAG,EACH,GAAG,CACb,CACA,EAAU,MAAM,QAAQ,CAAC,EAAI,EAAI,CAAC,CAAC,CACnC,CAIE,IAAI,kBAAmB,CACrB,OAAO,KAAK,cAAcyO,GAAG,gBAAgB,CACjD,CAIE,IAAI,oBAAqB,CACvB,OAAO,KAAK,OAAOF,GAAG,kBAAkB,GAAK,EACjD,CAIE,IAAI,mBAAoB,CACtB,OAAO,KAAK,OAAOA,GAAG,iBAAiB,CAC3C,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,cAAcE,GAAG,WAAW,GAAK,CAAE,CACnD,CACE,IAAI,gBAAiB,CACnB,MAAM,EAAI,MAAM,eAAgB,EAAI,KAAK,mBACzC,GAAIrN,EAAE,CAAC,EACL,OAAO,EACT,MAAMpB,EAAI,CAAE,EACZ,UAAW,KAAK,EACd,GAAI,OAAO,UAAU,eAAe,KAAK,EAAG,CAAC,EAAG,CAC9C,MAAMG,EAAI,EAAE,CAAC,EACbY,EAAEZ,CAAC,EAAIH,EAAE,CAAC,EAAI,OAAO,OAAO,CAAE,EAAE,EAAGG,CAAC,EAAIH,EAAE,CAAC,EAAIG,CACvD,CACI,OAAOH,CACX,CACE,IAAI,oBAAqB,CACvB,MAAM,EAAI,CAAE,EACZ,OAAO,MAAM,KAAK,KAAK,YAAY,OAAM,CAAE,EAAE,QAAS,GAAM,OAAO,OAAO,EAAG,EAAE,cAAc,CAAC,EAAG,MAAM,KAAK,KAAK,MAAM,OAAQ,CAAA,EAAE,QAAS,GAAM,OAAO,OAAO,EAAG,EAAE,cAAc,CAAC,EAAG,CACzL,CACA,CACA8b,GAAG,CACDvZ,EACF,EAAGwZ,GAAG,UAAW,gBAAmB,EACpCD,GAAG,CACDvZ,EACF,EAAGwZ,GAAG,UAAW,oBAAuB,EACxC,MAAMC,EAAG,CAOP,YAAY,EAAG,EAAGhc,EAAG,CACnB,KAAK,IAAMA,EAAG,KAAK,OAAS,EAAG,KAAK,aAAe,CACvD,CAME,IAAI,EAAG,CACL,KAAM,CAAE,MAAO,EAAG,WAAYA,EAAI,GAAI,GAAG,CAAG,EAAG,KAAK,OAAO,CAAC,EAAGG,EAAI,KAAK,eAAe,CAAC,EAAGC,EAAI,EAAEuO,GAAG,MAAM,EAC1G,OAAO,IAAIxO,EAAE,CACX,KAAM,EACN,cAAe,EACf,OAAQ,EACR,IAAK,KAAK,IAAI,kBAAkB,EAAGC,CAAC,EACpC,UAAW,IAAM,KAAK,aAAa,aACnC,mBAAoB,KAAK,aAAa,YACtC,WAAYJ,CAClB,CAAK,CACL,CAME,eAAe,EAAG,CAChB,OAAQ,GAAE,CACR,KAAK,EAAE0O,GAAG,QAAQ,EAChB,OAAO8M,GACT,KAAK,EAAE7M,GAAG,MAAM,EACd,OAAO+M,GACT,QACE,OAAOK,EACf,CACA,CACA,CACA,IAAAE,GAAA,KAAS,CAMP,YAAY,CAAE,IAAK,GAAK,CACtB,KAAK,IAAM,CACT,UAAW,QACjB,EAAO,KAAK,IAAM,CAClB,CAIE,QAAS,CACP,MAAO,CACL,KAAMlS,GACN,MAAO,KAAK,IAAI,KAAK,EAAE,WAAW,EAClC,WAAY,IAAM,KAAK,YAAa,EACpC,KAAM,WACP,CACL,CAIE,aAAc,CACZ,MAAM,EAAI,KAAK,IAAI,OAAO,qBAAsB,EAAE,EAAI,KAAK,IAAI,OAAO,gBAAgB,EAAI,CAAC,EAC3F,GAAI,CAAC,EACH,MAAM,IAAI,MAAM,wDAAwD,EAC1E,MAAM/J,EAAI,EAAE,OAAQ,EAAIA,EAAE,sBAAuB,EACjD,IAAIG,EAAI,KAAK,IAAI,OAAO,YAAcH,EAAE,YAAY,EACpD,EAAE,IAAM,OAAO,cAAgBG,EAAI,OAAO,QAAUH,EAAE,cAAe,OAAO,SAAS,EAAGG,CAAC,EAAG,KAAK,IAAI,OAAO,KAAK,EAAI,CAAC,EAAG,KAAK,IAAI,QAAQ,oBAAoB,EAAE,CACpK,CACA,EACA+b,GAAG,OAAS,GACZ,IAAAC,GAAA,KAAS,CAMP,YAAY,CAAE,IAAK,GAAK,CACtB,KAAK,IAAM,CACf,CAIE,QAAS,CACP,MAAO,CACL,KAAMhS,GACN,MAAO,KAAK,IAAI,KAAK,EAAE,QAAQ,EAC/B,KAAM,SACN,aAAc,CACZ,MAAO,KAAK,IAAI,KAAK,EAAE,iBAAiB,EACxC,WAAY,IAAM,KAAK,YAAW,CAC1C,CACK,CACL,CAIE,aAAc,CACZ,KAAK,IAAI,OAAO,OAAQ,CAC5B,CACA,EACAiS,GAAG,OAAS,GACZ,IAAAC,GAAA,KAAS,CAMP,YAAY,CAAE,IAAK,GAAK,CACtB,KAAK,IAAM,CACT,UAAW,QACjB,EAAO,KAAK,IAAM,CAClB,CAIE,QAAS,CACP,MAAO,CACL,KAAMnS,GACN,MAAO,KAAK,IAAI,KAAK,EAAE,SAAS,EAChC,WAAY,IAAM,KAAK,YAAa,EACpC,KAAM,SACP,CACL,CAIE,aAAc,CACZ,MAAM,EAAI,KAAK,IAAI,OAAO,uBAAwB,EAAI,KAAK,IAAI,OAAO,gBAAgB,CAAC,EAAGlK,EAAI,KAAK,IAAI,OAAO,gBAAgB,EAAI,CAAC,EACnI,GAAI,IAAM,GAAK,CAAC,GAAK,CAACA,EACpB,MAAM,IAAI,MAAM,uDAAuD,EACzE,MAAM,EAAI,EAAE,OAAQG,EAAIH,EAAE,OAAQI,EAAI,EAAE,sBAAqB,EAAI,EAAID,EAAE,sBAAuB,EAC9F,IAAI,EACJ,EAAE,IAAM,EAAI,EAAI,KAAK,IAAIC,EAAE,GAAG,EAAI,KAAK,IAAI,EAAE,GAAG,EAAI,EAAI,KAAK,IAAIA,EAAE,GAAG,EAAI,EAAE,OAAQ,OAAO,SAAS,EAAG,GAAK,CAAC,EAAG,KAAK,IAAI,OAAO,KAAK,EAAI,CAAC,EAAG,KAAK,IAAI,QAAQ,oBAAoB,EAAE,CACxL,CACA,EACAkc,GAAG,OAAS,GACZ,IAAIC,GAAK,OAAO,eAAgBC,GAAK,OAAO,yBAA0BC,GAAK,CAAC3c,EAAG,EAAG,EAAGE,IAAM,CACzF,QAAS,EAAyBwc,GAAG,EAAG,CAAC,EAAOrc,EAAIL,EAAE,OAAS,EAAGM,EAAGD,GAAK,EAAGA,KAC1EC,EAAIN,EAAEK,CAAC,KAAO,EAASC,EAAE,EAAG,EAAG,CAAC,GAAa,GAChD,OAAY,GAAKmc,GAAG,EAAG,EAAG,CAAC,EAAG,CAChC,SACA,cAAiBzY,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,SAAW,OAAQ,KAAK,eAAiB,IAAI6X,GAAK,KAAK,iBAAmB,IAAIA,EAC5G,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,cAChB,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,gBAChB,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,UAAU,WAC1B,CAIE,IAAI,YAAa,CACf,OAAO,KAAK,UAAU,UAC1B,CAME,IAAI,YAAa,CACf,OAAO,KAAK,UAAU,UAC1B,CAIE,IAAI,aAAc,CAChB,OAAO,KAAK,WAAW,IAAI,KAAK,OAAO,YAAY,CACvD,CAIE,IAAI,UAAW,CACb,OAAO,KAAK,UAAU,aAC1B,CAME,MAAM,SAAU,CACd,GAAI,KAAK,cAAa,EAAI,KAAK,OAAO,MAAQ3Z,GAAG,CAAE,EAAE,KAAK,cAAe,KAAK,OAAO,KAAK,EAAG,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,OAAQ,OAAO,GAAK,OAAO,KAAK,KAAK,OAAO,KAAK,EAAE,SAAW,EACpM,MAAM,MAAM,2BAA2B,EACzC,MAAM,EAAI,KAAK,cAAe,EAC9B,KAAK,QAAU,IAAIga,GAAG,EAAG,KAAK,OAAQ,KAAK,OAAO,GAAG,EACrD,MAAM,EAAI,KAAK,0BAA0B,CAAC,EAC1C,GAAI,EAAE,SAAW,EACf,OAAO,QAAQ,QAAS,EAC1B,MAAM1a,GAAG,EAAItB,GAAM,CACjB,KAAK,yBAAyBA,CAAC,CAChC,EAAGA,GAAM,CACR,KAAK,0BAA0BA,CAAC,CACtC,CAAK,EAAG,KAAK,kBAAmB,CAChC,CACE,iCAAkC,CAChC,MAAM,EAAI,CAAE,EACZ,OAAO,MAAM,KAAK,KAAK,YAAY,QAAQ,EAAE,QAAS,GAAM,CAC1D,OAAO,OAAO,EAAG,EAAE,cAAc,CAClC,CAAA,EAAG,CACR,CAIE,SAAU,CACR,OAAO,OAAO,KAAK,SAAS,EAAE,QAAQ,MAAO,GAAM,CACjDc,EAAE,EAAE,KAAK,GAAK,MAAM,EAAE,MAAO,CACnC,CAAK,CACL,CAKE,IAAI,eAAgB,CAClB,MAAO,CACL,UAAW,CACT,MAAOua,GACP,WAAY,EACb,EACD,KAAM,CACJ,MAAOF,GACP,WAAY,EACb,EACD,KAAM,CACJ,MAAOF,GACP,WAAY,EACb,EACD,OAAQ,CACN,MAAOC,GACP,WAAY,EACb,EACD,UAAW,CACT,MAAOF,GACP,cAAe,GACf,WAAY,EACb,EACD,KAAM,CACJ,MAAOO,GACP,WAAY,EACb,EACD,OAAQ,CACN,MAAOe,GACP,WAAY,EACb,EACD,OAAQ,CACN,MAAOF,GACP,WAAY,EACb,EACD,SAAU,CACR,MAAOF,GACP,WAAY,EACpB,CACK,CACL,CAME,yBAAyB,EAAG,CAC1B,MAAM,EAAI,KAAK,QAAQ,IAAI,EAAE,QAAQ,EACrC,GAAI,EAAE,WAAY,CAChB,MAAMhc,EAAI,CAAC,QAAQ,EAAE,OAAQC,GAAM,CAAC,EAAE,SAASA,CAAC,CAAC,EACjD,GAAID,EAAE,OAAQ,CACZS,EACE,0BAA0B,EAAE,IAAI,mDAChC,OACAT,CACV,EAAW,KAAK,iBAAiB,IAAI,EAAE,KAAM,CAAC,EACtC,MACR,CACA,CACI,KAAK,eAAe,IAAI,EAAE,KAAM,CAAC,CACrC,CAME,0BAA0B,EAAG,CAC3B,KAAK,iBAAiB,IAAI,EAAE,SAAU,KAAK,QAAQ,IAAI,EAAE,QAAQ,CAAC,CACtE,CAOE,0BAA0B,EAAG,CAC3B,MAAM,EAAI,CAAE,EACZ,OAAO,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAACF,EAAG,CAAC,IAAM,CAC3C,EAAE,KAAK,CAEL,SAAUc,EAAE,EAAE,MAAM,OAAO,EAAI,EAAE,MAAM,QAAU,IAAM,CACtD,EACD,KAAM,CACJ,SAAUd,EACV,OAAQ,EAAE,MACpB,CACA,CAAO,CACF,CAAA,EAAG,CACR,CAIE,mBAAoB,CAClB,MAAM,KAAK,KAAK,WAAW,OAAM,CAAE,EAAE,QAAS,GAAM,CAClD,KAAK,6BAA6B,CAAC,EAAG,KAAK,4BAA4B,CAAC,CAC9E,CAAK,CACL,CAME,6BAA6B,EAAG,CAC9B,GAAI,KAAK,OAAO,gBAAkB,GAAI,CACpC,GAAI,EAAE,qBAAuB,GAAI,CAC/B,EAAE,YAAc,IAAI2b,GAClB,MAAM,QAAQ,KAAK,OAAO,aAAa,EAAI,KAAK,OAAO,cAAc,IAAK,GAAM,CAAC,EAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,EAAI,MAAM,KAAK,KAAK,YAAY,QAAS,CAAA,CACtJ,EACD,MACR,CACM,MAAM,QAAQ,EAAE,kBAAkB,IAAM,EAAE,YAAc,IAAIA,GAE1D,CAAC,YAAa,GAAG,EAAE,kBAAkB,EAAE,IAAK,GAAM,CAAC,EAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,CACtF,EACA,CACA,CAME,4BAA4B,EAAG,CAC7B,GAAI,EAAE,oBAAsB,GAAI,CAC9B,GAAI,MAAM,QAAQ,EAAE,iBAAiB,EAAG,CACtC,MAAM,EAAI,IAAIA,GACZ,EAAE,kBAAkB,IAAK3b,GAAM,CAACA,EAAG,KAAK,WAAW,IAAIA,CAAC,CAAC,CAAC,CAC3D,EACD,EAAE,MAAQ,IAAI2b,GAAE,CAAC,GAAG,EAAG,GAAG,KAAK,WAAW,aAAa,CAAC,EACxD,MACR,CACM,GAAI,MAAM,QAAQ,KAAK,OAAO,KAAK,EAAG,CACpC,MAAM,EAAI,IAAIA,GACZ,KAAK,OAAO,MAAM,IAAK3b,GAAM,CAACA,EAAG,KAAK,WAAW,IAAIA,CAAC,CAAC,CAAC,CACzD,EACD,EAAE,MAAQ,IAAI2b,GAAE,CAAC,GAAG,EAAG,GAAG,KAAK,WAAW,aAAa,CAAC,EACxD,MACR,CACM,EAAE,MAAQ,KAAK,WAAW,aAChC,CACA,CAIE,eAAgB,CACd,UAAW,KAAK,KAAK,OAAO,MAC1B,GAAI,OAAO,UAAU,eAAe,KAAK,KAAK,OAAO,MAAO,CAAC,EAAG,CAC9D,GAAI,KAAK,KAAK,cACZ,OACF,MAAM,EAAI,KAAK,OAAO,MAAM,CAAC,EAC7B,GAAI,CAAC7a,EAAE,CAAC,GAAK,CAACA,EAAE,EAAE,KAAK,EACrB,MAAM,MACJ,SAAS,CAAC,qFACX,CACX,CACA,CAIE,eAAgB,CACd,MAAM,EAAI,CAAE,EACZ,UAAW,KAAK,KAAK,OAAO,MAC1BC,EAAE,KAAK,OAAO,MAAM,CAAC,CAAC,EAAI,EAAE,CAAC,EAAI,KAAK,OAAO,MAAM,CAAC,EAAI,EAAE,CAAC,EAAI,CAAE,MAAO,KAAK,OAAO,MAAM,CAAC,CAAG,EAChG,OAAO,CACX,CACA,EACA0b,GAAG,CACDla,EACF,EAAGma,GAAG,UAAW,iCAAoC,EACrD,MAAMC,GAAK;AAAA,EAEX,MAAMC,WAAW9Y,CAAE,CACjB,aAAc,CACZ,MAAM,GAAG,SAAS,EAAG,KAAK,SAAW,GAAI,KAAK,iBAAmB,KAAM,KAAK,gBAAkBnC,GAAG,IAAM,CACrG,KAAK,aAAc,CACpB,EAAE,GAAG,EAAG,KAAK,yBAA2BA,GAAG,IAAM,CAChD,KAAK,iBAAkB,CACxB,EAAEyY,EAAE,EAAG,KAAK,wBAA2B,GAAM,CAC5C,KAAK,gBAAgB,CAAC,CACvB,CACL,CAME,IAAI,KAAM,CACR,MAAO,CACL,cAAe,eACf,oBAAqB,uBACrB,WAAY,yBACZ,iBAAkB,iCAClB,YAAa,sBACb,aAAc,mBACf,CACL,CAME,IAAI,aAAc,CAChB,GAAI,KAAK,mBAAqB,KAC5B,OAAO,KAAK,iBACd,MAAM,EAAI,KAAK,MAAM,QAAQ,cAAc,IAAIlV,GAAE,IAAI,OAAO,EAAE,EAC9D,OAAO,GAAK,KAAK,iBAAmB,EAAE,sBAAuB,EAAE,KAAK,kBAAoB,CACtF,MAAO,IACP,KAAM,EACN,MAAO,CACR,CACL,CAIE,MAAM,SAAU,CACd,KAAK,YAAW,EAAI,KAAK,KAAM,EAAE,KAAK,WAAY,CACtD,CAYE,eAAe,EAAG,CAChB,EAAI,KAAK,iCAAkC,EAAG,OAAO,oBAAoB,IAAM,CAC7E,KAAK,+BAAgC,CAC3C,EAAO,CACD,QAAS,GACf,CAAK,CACL,CAIE,gBAAiB,CACf,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OACjC,KAAK,MAAM,QAAQ,UAAU,OAAO,KAAK,IAAI,YAAa,EAAE,aAAa,CAC7E,CAOE,IAAI,mBAAoB,CACtB,KAAM,CAAE,QAAS,EAAG,cAAe,EAAG,cAAelF,GAAM,KAAK,OAChE,MAAO,CAAC,EAAE,EAAE,QAAUA,EAAE,QAAU,EAAE,QAAQ,OAChD,CAIE,IAAI,0BAA2B,CAC7B,OAAO,KAAK,OAAO,QAAQ,QAAQ,SAAU,EAAG,GAAK,OAAO,QAAQ,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,EAAG,CAAC,IAAM,EAAE,mBAAmB6J,EAAE,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC,IAAM,EAAE,QAAQ,SAAQ,CAAE,CACtK,CAIE,SAAU,CACR,KAAK,MAAM,OAAO,UAAY,GAAI,KAAK,mCAAoC,CAC/E,CAIE,kBAAmB,CACjB,KAAM,CAAE,QAAS,EAAG,cAAe,EAAG,cAAe7J,GAAM,KAAK,OAChE,EAAE,MAAK,EAAIA,EAAE,MAAK,EAAI,EAAE,QAAQ,MAAO,CAC3C,CAIE,aAAc,CACZ,MAAM,EAAI,OAAO,WAAawC,GAC9B,IAAM,KAAK,UAAY,KAAK,iBAAiB,KAAKiC,GAAI,CACpD,UAAW,KAAK,QACtB,CAAK,EAAG,KAAK,SAAW,CACxB,CAIE,MAAO,CACL,KAAK,MAAM,OAAS5B,EAAE,UAAU,KAAK,OAAO,MAAM,EAAG,KAAK,MAAM,QAAUA,EAAE,KAAK,MAAO,CACtF,KAAK,IAAI,cACT,GAAG,KAAK,MAAQ,CAAC,KAAK,IAAI,YAAY,EAAI,CAAA,CAC3C,CAAA,EAAG,KAAK,MAAM,SAAWA,EAAE,KAAK,MAAO,KAAK,IAAI,UAAU,EAAG,KAAK,MAAM,OAAO,YAAc,KAAK,YAAY,OAAS,KAAK,MAAM,QAAQ,UAAU,IAAI,KAAK,IAAI,mBAAmB,EAAG,KAAK,MAAM,SAAS,MAAM,cAAgB,KAAK,OAAO,UAAY,KAAM,KAAK,MAAM,QAAQ,YAAY,KAAK,MAAM,QAAQ,EAAG,KAAK,MAAM,OAAO,YAAY,KAAK,MAAM,OAAO,EAAG,KAAK,iCAAkC,CACnZ,CAIE,YAAa,CACX,MAAM,EAAI,mBACV,GAAIA,EAAE,IAAI,CAAC,EACT,OACF,MAAM,EAAIA,EAAE,KAAK,QAAS,KAAM,CAC9B,GAAI,EACJ,YAAa8Z,GAAG,SAAQ,CAC9B,CAAK,EACD,KAAK,OAAO,OAAS,CAACvb,EAAE,KAAK,OAAO,KAAK,GAAK,KAAK,OAAO,MAAM,OAAS,EAAE,aAAa,QAAS,KAAK,OAAO,MAAM,KAAK,EAAGyB,EAAE,QAAQ,SAAS,KAAM,CAAC,CACzJ,CAIE,kCAAmC,CACjC,KAAK,UAAU,GAAG,SAAU,kBAAmB,KAAK,wBAAwB,EAAG,KAAK,UAAU,GAAG,OAAQ,SAAU,KAAK,gBAAiB,CACvI,QAAS,EACf,CAAK,EAAG,KAAK,UAAU,GAAG,KAAK,MAAM,SAAU,YAAa,KAAK,wBAAyB,CACpF,QAAS,GACT,QAAS,EACf,CAAK,EAAG,KAAK,UAAU,GAAG,KAAK,MAAM,SAAU,aAAc,KAAK,wBAAyB,CACrF,QAAS,GACT,QAAS,EACf,CAAK,CACL,CAIE,oCAAqC,CACnC,KAAK,UAAU,IAAI,SAAU,kBAAmB,KAAK,wBAAwB,EAAG,KAAK,UAAU,IAAI,OAAQ,SAAU,KAAK,eAAe,EAAG,KAAK,UAAU,IAAI,KAAK,MAAM,SAAU,YAAa,KAAK,uBAAuB,EAAG,KAAK,UAAU,IAAI,KAAK,MAAM,SAAU,aAAc,KAAK,uBAAuB,CACtT,CAIE,gCAAiC,CAC/B,KAAK,yBAAyB,GAAG,KAAK,MAAM,SAAU,QAAU,GAAM,CACpE,KAAK,gBAAgB,CAAC,CAC5B,EAAO,EAAE,EAAG,KAAK,yBAAyB,GAAG,SAAU,UAAY,GAAM,CACnE,KAAK,gBAAgB,CAAC,CAC5B,EAAO,EAAE,EAAG,KAAK,yBAAyB,GAAG,SAAU,YAAc,GAAM,CACrE,KAAK,gBAAgB,CAAC,CAC5B,EAAO,EAAE,EAAG,KAAK,wBAAuB,EAAI,KAAK,sBAAuB,CACxE,CAIE,yBAA0B,CACxB,IAAI,EACJ,KAAK,yBAAyB,GAAG,KAAK,MAAM,SAAU,YAAajB,GAAI,GAAM,CAC3E,MAAM5B,EAAI,EAAE,OAAO,QAAQ,WAAW,EACtC,KAAK,OAAO,eAAe,kBAAoBA,GAAK,IAAMA,IAAM,EAAIA,EAAG,KAAK,iBAAiB,KAAKmO,GAAI,CACpG,MAAO,KAAK,OAAO,aAAa,oBAAoBnO,CAAC,CAC7D,CAAO,EACF,EAAE,EAAE,EAAG,CACN,QAAS,EACf,CAAK,CACL,CAIE,kCAAmC,CACjC,KAAK,yBAAyB,SAAU,CAC5C,CAIE,cAAe,CACb,KAAK,iBAAmB,KAAM,KAAK,YAAa,CACpD,CAME,gBAAgB,EAAG,CACjB,OAAQ,EAAE,QAAO,CACf,KAAKO,EAAE,MACL,KAAK,aAAa,CAAC,EACnB,MACF,KAAKA,EAAE,UACP,KAAKA,EAAE,OACL,KAAK,iBAAiB,CAAC,EACvB,MACF,KAAKA,EAAE,IACL,KAAK,cAAc,CAAC,EACpB,MACF,QACE,KAAK,iBAAiB,CAAC,EACvB,KACR,CACA,CAME,iBAAiB,EAAG,CAClB,KAAM,CAAE,aAAc,CAAG,EAAG,KAAK,OAAO,aAAcP,EAAI,EAAE,OAAO,QAAQ,IAAI,KAAK,IAAI,aAAa,EAAE,EAAG,EAAI,EAAE,QAAU,EAAE,SAAW,EAAE,SAAW,EAAE,SACtJ,GAAI,IAAM,QAAUA,IAAM,KAAM,CAC9B,KAAK,OAAO,YAAY,QAAQ,CAAC,EACjC,MACN,CACIA,GAAK,GAAK,IAAM,KAAK,OAAO,aAAa,kBAAiB,EAAI,KAAK,OAAO,QAAQ,MAAK,EAC3F,CAIE,iBAAiB,EAAG,CAClB,KAAM,CAAE,aAAc,EAAG,eAAgBA,EAAG,MAAO,GAAM,KAAK,OAC9D,GAAIA,EAAE,kBAAoB,CAACiE,EAAE,kBAAmB,CAC9C,MAAM9D,EAAI,EAAE,qBAAsB,EAAEC,EAAI,EAAE,0BAA0BD,EAAG,EAAE,EACzE,EAAE,WAAWC,EAAG,EAAE,UAAU,KAAK,EAAGJ,EAAE,eAAe,CAAC,EAAG,EAAE,eAAgB,EAAE,EAAE,gBAAiB,EAAE,EAAE,yBAA0B,CACpI,CACA,CAOE,cAAc,EAAG,CACf,KAAK,OAAO,eAAe,eAAe,CAAC,EAAG,KAAK,OAAO,QAAQ,QAAQ,QAAU,KAAK,OAAO,QAAQ,QAAQ,QAAS,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO,aAAa,aAAc,KAAK,OAAO,MAAM,UAAU,GAAG,GAAK,KAAK,OAAO,cAAc,OAAS,KAAK,OAAO,cAAc,MAAO,EAAG,KAAK,OAAO,cAAc,OAAS,KAAK,OAAO,cAAc,MAAK,EAAK,KAAK,OAAO,QAAQ,MAAO,CAC9Y,CAME,aAAa,EAAG,CACd,KAAM,CAAE,aAAc,EAAG,eAAgBA,CAAC,EAAK,KAAK,OACpD,GAAI,KAAK,kBACP,OACF,MAAM,EAAI,EAAE,mBAAqB,EACjC,GAAIA,EAAE,kBAAoB,CAACiE,EAAE,kBAAmB,CAC9CjE,EAAE,eAAe,CAAC,EAAG,EAAE,iBAAkB,EAAE,yBAAwB,EAAI,EAAE,gBAAiB,EAC1F,MACN,CACI,GAAI,CAAC,KAAK,mBAAqB,GAAK,EAAE,OAAO,UAAY,OAAQ,CAC/D,MAAMG,EAAI,KAAK,OAAO,aAAa,OAAQ,EAC3C,EAAE,eAAgB,EAAE,KAAK,OAAO,MAAM,WAAWA,CAAC,EAAG,KAAK,OAAO,QAAQ,YAAYA,CAAC,CAC5F,CACI,KAAK,OAAO,eAAe,eAAe,CAAC,CAC/C,CAME,gBAAgB,EAAG,CACjB,IAAI+D,EAAGC,EACP,GAAI,CAAC,EAAE,UACL,OACF,MAAMxE,EAAI,EAAE,OACZ,KAAK,MAAM,OAAO,SAASA,CAAC,GAAKsE,EAAE,aAAe,KAAK,OAAO,aAAa,oBAAqB,KAAK,OAAO,QAAQ,SACpH,MAAM/D,GAAKgE,EAAI,KAAK,OAAO,cAAc,MAAM,UAAY,KAAO,OAASA,EAAE,SAASvE,CAAC,EAAG,GAAKwE,EAAI,KAAK,OAAO,QAAQ,MAAM,kBAAoB,KAAO,OAASA,EAAE,SAASxE,CAAC,EAAGS,EAAIF,GAAK,EACzL,GAAI,KAAK,OAAO,cAAc,QAAU,CAACE,EAAG,CAC1C,KAAK,OAAO,cAAc,MAAO,EACjC,MAAMuF,EAAI,KAAK,OAAO,aAAa,oBAAoBhG,CAAC,EACxD,KAAK,OAAO,QAAQ,YAAYgG,CAAC,CACvC,CACI,KAAK,OAAO,eAAe,eAAe,CAAC,CAC/C,CAYE,gBAAgB,EAAG,CACjB,IAAI,EAAI,EAAE,OACV,GAAI,IAAM,KAAK,MAAM,SAAU,CAC7B,MAAM3F,EAAI,aAAa,WAAa,EAAE,QAAU,EAAE,QAAQ,CAAC,EAAE,QAAS,EAAI,aAAa,WAAa,EAAE,QAAU,EAAE,QAAQ,CAAC,EAAE,QAC7H,EAAI,SAAS,iBAAiBA,EAAG,CAAC,CACxC,CACI,GAAI,CACF,KAAK,OAAO,aAAa,2BAA2B,CAAC,CAC3D,MAAY,CACN,KAAK,OAAO,mBAAmB,gBAAe,GAAM,KAAK,OAAO,MAAM,kBAAmB,CAC/F,CACI,KAAK,OAAO,SAAS,WAAa,KAAK,OAAO,QAAQ,YAAa,CACvE,CAUE,gBAAgB,EAAG,CACjB,GAAI,CAACiE,EAAE,YACL,OACF,MAAM,EAAI,EAAE,OAAQjE,EAAI,EAAE,SAAW,EAAE,QACvC,GAAI6C,EAAE,SAAS,CAAC,GAAK7C,EAAG,CACtB,EAAE,yBAAwB,EAAI,EAAE,gBAAiB,EACjD,MAAM,EAAI,EAAE,aAAa,MAAM,EAAGG,EAAI+B,GAAG,CAAC,EAC1CE,GAAGjC,CAAC,EACJ,MACN,CACI,KAAK,uBAAuB,CAAC,CACjC,CAQE,uBAAuB,EAAG,CACxB,MAAM,EAAI,KAAK,OAAO,aAAa,gBAAgB,EAAE,EAAGH,EAAI6C,EAAE,OAAO,EAAE,MAAM,EAAE,OAAQ,EAAI,EAAE,MAAO,CAAE,eAAgB1C,GAAM,KAAK,OACjI,GAAI,EAAE,kBAAkB,SAAW,EAAE,OAAO,YAAY,KAAK,MAAM,QAAQ,GAG3E,CAACA,EAAE,kBAGHH,EAAI,EAAG,CACL,EAAE,yBAAwB,EAAI,EAAE,gBAAiB,EACjD,KAAM,CAAE,aAAckE,EAAG,MAAOC,EAAG,QAASwB,GAAM,KAAK,QACtD,CAACzB,EAAE,UAAU,KAAK,WAAa,CAACA,EAAE,UAAU,UAAYA,EAAE,YAAW,EAAIC,EAAE,kBAAiB,EAAIwB,EAAE,YAAYzB,EAAE,SAAS,CAChI,CACA,CAKE,kBAAmB,CACjB,KAAM,CAAE,oBAAqB,EAAG,eAAgB,GAAM,KAAK,OAAQlE,EAAIiE,EAAE,cACzE,GAAI,EAAE,8BAAgC,EAAE,kBAAoBA,EAAE,MAAM,kBAAmB,CAACjE,EAAG,CACzFiE,EAAE,OAAS,KAAK,OAAO,cAAc,MAAO,EAC5C,MACN,CACI,MAAM,EAAIjE,EAAE,QAAQ,IAAIkF,GAAE,IAAI,OAAO,EAAE,GACtC,IAAM,MAAQ,EAAE,QAAQ,IAAIjB,EAAE,IAAI,aAAa,EAAE,IAAM,KAAK,MAAM,WAAa,KAAK,OAAO,cAAc,aAAajE,CAAC,GAAK,KAAK,OAAO,cAAc,QAAWA,EAAE,QAAQ,gBAAkB,UAAa,KAAK,OAAO,aAAa,cAAgB,KAAK,OAAO,aAAa,2BAA2BA,CAAC,EAAG,KAAK,OAAO,cAAc,UAAU,EAAE,EACtV,CAQE,uBAAwB,CACtB,SAAS,EAAE,EAAG,CACZ,MAAMA,EAAI,EAAE,OACZgD,GAAGhD,CAAC,CACV,CACI,KAAK,yBAAyB,GAAG,KAAK,MAAM,QAAS,QAAS,CAAC,EAAG,KAAK,yBAAyB,GAAG,KAAK,MAAM,QAAS,UAAW,CAAC,EAAG,KAAK,yBAAyB,GAAG,KAAK,MAAM,QAAS,WAAY,CAAC,CAC5M,CACA,CACA,MAAM6c,GAAK,CAET,UAAWpX,GACX,SAAUI,GACV,UAAWC,GACX,QAASC,GACT,IAAKC,GACL,iBAAkBC,GAClB,aAAcC,GACd,YAAauB,GACb,YAAaC,GACb,aAAcW,GACd,SAAUC,GACV,aAAcC,GACd,SAAUC,GACV,UAAWC,GACX,WAAYC,GACZ,WAAYU,GACZ,MAAOC,GAEP,cAAegE,GACf,QAASgB,GACT,cAAeQ,GAEf,YAAa2K,GACb,aAAcO,GACd,eAAgBC,GAChB,MAAOC,GACP,oBAAqBC,GACrB,UAAWC,GACX,sBAAuBG,GACvB,MAAOG,GACP,SAAUC,GACV,mBAAoBC,GACpB,SAAUC,GACV,MAAOC,GACP,MAAO6B,GACP,GAAIE,EACN,EACA,MAAME,EAAG,CAIP,YAAY,EAAG,CACb,KAAK,gBAAkB,CAAE,EAAE,KAAK,iBAAmB,IAAI3X,GACvD,IAAI,EAAGnF,EACP,KAAK,QAAU,IAAI,QAAQ,CAAC,EAAGG,IAAM,CACnC,EAAI,EAAGH,EAAIG,CACZ,CAAA,EAAG,QAAQ,QAAS,EAAC,KAAK,SAAY,CACrC,KAAK,cAAgB,EAAG,KAAK,SAAU,EAAE,KAAK,KAAM,EAAE,MAAM,KAAK,MAAO,EAAE,MAAM,KAAK,OAAQ,EAC7F,KAAM,CAAE,aAAc,EAAG,MAAOA,EAAG,GAAIC,EAAG,sBAAuB,CAAG,EAAG,KAAK,gBAC5EA,EAAE,eAAc,EAAI,EAAE,OAAQ,EAAE,KAAK,cAAc,YAAc,IAAM,KAAK,cAAc,WAAa,IAAMD,EAAE,WAAW,EAAE,OAAO,CAAC,EAAGA,EAAE,UAAU,KAAK,EAAG,EAAG,CACpK,CAAK,EAAE,MAAO,GAAM,CACdQ,EAAE,qCAAqC,CAAC,GAAI,OAAO,EAAGX,EAAE,CAAC,CAC/D,CAAK,CACL,CAME,IAAI,cAAc,EAAG,CACnB,IAAIA,EAAGE,EACPa,EAAE,CAAC,EAAI,KAAK,OAAS,CACnB,GAAG,CACT,EAAQ,KAAK,OAAS,CAChB,OAAQ,CACd,EAAOuB,GAAG,CAAC,CAAC,KAAK,OAAO,SAAU,kBAAmB,eAAe,EAAG,KAAK,OAAO,UAAY,CAAC,KAAK,OAAO,SAAW,KAAK,OAAO,OAAS,KAAK,OAAO,SAAU,KAAK,OAAO,SAAW,MAAO,KAAK,OAAO,QAAU,OAAS,KAAK,OAAO,OAAS,YAAa,KAAK,OAAO,WAAa,KAAK,OAAO,SAAWhC,GAAG,SAAUI,GAAG,KAAK,OAAO,QAAQ,EAAG4B,GAAG,CAAC,CAAC,KAAK,OAAO,aAAc,sBAAuB,qBAAqB,EAAG,KAAK,OAAO,aAAe,KAAK,OAAO,cAAgB,KAAK,OAAO,cAAgB,YAAa,KAAK,OAAO,UAAY,KAAK,OAAO,YAAc,OAAS,KAAK,OAAO,UAAY,IACrlB,MAAM3C,EAAI,CACR,KAAM,KAAK,OAAO,aAClB,KAAM,CAAA,CACP,EACD,KAAK,OAAO,YAAc,KAAK,OAAO,aAAe,GAAI,KAAK,OAAO,UAAY,KAAK,OAAO,WAAa,CACxG,EAAG,GACH,EAAG,GACH,EAAG,EACT,EAAO,KAAK,OAAO,YAAc,KAAK,OAAO,YAAc,KAAK,OAAO,YAAc,GAAI,KAAK,OAAO,MAAQ,KAAK,OAAO,OAAS,GAAI,KAAK,OAAO,KAAO,KAAK,OAAO,MAAQ,CAAE,EAAE,KAAK,OAAO,KAAO,KAAK,OAAO,MAAQ,CAAE,OAAQ,CAAA,CAAI,EAAE,KAAK,OAAO,QAAU,KAAK,OAAO,UAAY,IAAM,CAC5R,GAAQ,KAAK,OAAO,SAAW,KAAK,OAAO,WAAa,IAAM,CAC9D,GAAQ,KAAK,OAAO,cAAgB,KAAK,OAAO,gBAAkB,OAAS,KAAK,OAAO,cAAgB,IAAKyB,EAAE,KAAK,OAAO,IAAI,GAAK,CAAC,KAAK,OAAO,KAAK,QAAU,KAAK,OAAO,KAAK,OAAO,SAAW,KAAO,KAAK,OAAO,KAAO,CAAE,OAAQ,CAACzB,CAAC,CAAG,GAAG,KAAK,OAAO,SAAW,KAAK,OAAO,UAAY,IAAKK,EAAI,KAAK,OAAO,OAAS,MAAQA,EAAE,UAAYwD,EAAE,cAAc,KAAK,OAAO,KAAK,QAAQ,EAAG,KAAK,OAAO,KAAK,YAActD,EAAI,KAAK,OAAO,OAAS,KAAO,OAASA,EAAE,YAAc,KACrd,CAME,IAAI,eAAgB,CAClB,OAAO,KAAK,MAChB,CAIE,UAAW,CACT,KAAM,CAAE,SAAU,EAAG,OAAQ,CAAC,EAAK,KAAK,OACxC,GAAI,GAAK,EACP,MAAM,MAAM,8DAA8D,EAC5E,GAAIc,GAAG,CAAC,GAAK,CAAC6B,EAAE,IAAI,CAAC,EACnB,MAAM,MAAM,oBAAoB,CAAC,yCAAyC,EAC5E,GAAI,GAAK9B,EAAE,CAAC,GAAK,CAAC8B,EAAE,UAAU,CAAC,EAC7B,MAAM,MAAM,wCAAwC,CAC1D,CAME,MAAO,CACL,KAAK,iBAAgB,EAAI,KAAK,iBAAkB,CACpD,CAQE,MAAM,OAAQ,CACZ,KAAM,CACJ,QACA,KACA,eACA,QACA,iBACA,qBACA,sBACA,UACN,EAAM,OACA,CAAClD,EAAGK,IAAML,EAAE,KAAK,SAAY,CAC3B,GAAI,CACF,MAAM,KAAK,gBAAgBK,CAAC,EAAE,QAAS,CACxC,OAAQE,EAAG,CACV,GAAIA,aAAauD,GACf,MAAM,IAAI,MAAMvD,EAAE,OAAO,EAC3BS,EAAE,UAAUX,CAAC,6BAA8B,OAAQE,CAAC,CAC9D,CACA,CAAO,EACD,QAAQ,QAAO,CAChB,CACL,CAIE,QAAS,CACP,OAAO,KAAK,gBAAgB,SAAS,OAAO,KAAK,OAAO,KAAK,MAAM,CACvE,CAIE,kBAAmB,CACjB,OAAO,QAAQ2c,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAG,CAAC,IAAM,CACrC,GAAI,CACF,KAAK,gBAAgB,CAAC,EAAI,IAAI,EAAE,CAC9B,OAAQ,KAAK,cACb,iBAAkB,KAAK,gBACjC,CAAS,CACF,OAAQ7c,EAAG,CACVW,EAAE,qBAAsB,UAAU,CAAC,mBAAoB,QAASX,CAAC,CACzE,CACA,CAAK,CACL,CAME,kBAAmB,CACjB,UAAW,KAAK,KAAK,gBACnB,OAAO,UAAU,eAAe,KAAK,KAAK,gBAAiB,CAAC,IAAM,KAAK,gBAAgB,CAAC,EAAE,MAAQ,KAAK,eAAe,CAAC,EAC7H,CAME,eAAe,EAAG,CAChB,MAAM,EAAI,CAAE,EACZ,UAAWA,KAAK,KAAK,gBACnBA,IAAM,IAAM,EAAEA,CAAC,EAAI,KAAK,gBAAgBA,CAAC,GAC3C,OAAO,CACX,CACA,CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOA,MAAM+c,EAAG,CAEP,WAAW,SAAU,CACnB,MAAO,aACX,CAIE,YAAY,EAAG,CACb,IAAI,EAAI,IAAM,CACb,EACDhc,EAAE,CAAC,GAAKD,EAAE,EAAE,OAAO,IAAM,EAAI,EAAE,SAC/B,MAAMd,EAAI,IAAI8c,GAAG,CAAC,EAClB,KAAK,QAAU9c,EAAE,QAAQ,KAAK,IAAM,CAClC,KAAK,UAAUA,CAAC,EAAG,EAAG,CAC5B,CAAK,CACL,CAME,UAAU,EAAG,CACX,MAAM,EAAI,CAAC,eAAe,EAAGA,EAAI,IAAM,CACrC,OAAO,OAAO,EAAE,eAAe,EAAE,QAASG,GAAM,CAC9CW,EAAEX,EAAE,OAAO,GAAKA,EAAE,UAAWA,EAAE,UAAU,UAAW,CAC5D,CAAO,EAAGgJ,KAAM,EAAI,KACd,UAAWhJ,KAAK,KACd,OAAO,UAAU,eAAe,KAAK,KAAMA,CAAC,GAAK,OAAO,KAAKA,CAAC,EAChE,OAAO,eAAe,KAAM,IAAI,CACjC,EACD,EAAE,QAASA,GAAM,CACf,KAAKA,CAAC,EAAI,EAAEA,CAAC,CACnB,CAAK,EAAG,KAAK,QAAUH,EAAG,OAAO,eAAe,KAAM,EAAE,gBAAgB,IAAI,OAAO,EAAG,OAAO,KAAK,UAAW,OAAO,QAAQ,CACtH,OAAQ,CACN,MAAO,QACP,OAAQ,QACT,EACD,MAAO,CACL,MAAO,OACR,EACD,OAAQ,CACN,GAAI,KACJ,IAAK,MACL,KAAM,MACP,EACD,MAAO,CACL,KAAM,MACd,CACK,CAAA,EAAE,QAAQ,CAAC,CAACG,EAAG,CAAC,IAAM,CACrB,OAAO,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC+D,EAAGC,CAAC,IAAM,CACpC,KAAKA,CAAC,EAAI,EAAE,gBAAgB,IAAI,QAAQhE,CAAC,EAAE+D,CAAC,CACpD,CAAO,CACP,CAAK,CACL,CACA,EC35VC,UAAU,CAAc,GAAG,CAAC,GAAG,OAAO,SAAS,IAAI,CAAC,IAAIxE,EAAE,SAAS,cAAc,OAAO,EAAEA,EAAE,YAAY,SAAS,eAAe,4IAA4I,CAAC,EAAE,SAAS,KAAK,YAAYA,CAAC,CAAC,CAAC,OAAOI,EAAE,CAAC,QAAQ,MAAM,iCAAiCA,CAAC,CAAC,CAAC,GAAI,EAC7W,MAAMoE,GAAI,8WAA+WC,GAAI,6ZAA8ZnE,GAAI,2hBAA4hB0F,GAAI,0aAA2a7C,GAAI,oeAAqehB,GAAI,2cAA4cwD,GAAI,kOACvqF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQA,IAAA2X,GAAA,KAAQ,CACN,YAAY,CAAE,KAAM,EAAG,OAAQ,EAAG,IAAK7c,EAAG,SAAUC,GAAK,CACvD,KAAK,IAAMD,EAAG,KAAK,SAAWC,EAAG,KAAK,UAAY,EAAG,KAAK,MAAQ,KAAK,cAAc,CAAC,EAAG,KAAK,SAAW,KAAK,OAAQ,CAC1H,CAIE,IAAI,MAAO,CACT,MAAO,CACL,MAAO,KAAK,IAAI,OAAO,MACvB,QAAS,WACV,CACL,CAQE,aAAa,EAAG,CACd,OAAO,EAAE,OAAS,MACtB,CASE,cAAc,EAAG,CACf,MAAM,EAAI,CAAE,KAAM,GAAI,MAAO,KAAK,aAAa,MAAQ,EACvD,OAAO,KAAK,aAAa,CAAC,IAAM,EAAE,KAAO,EAAE,MAAQ,GAAI,EAAE,QAAU,QAAU,CAAC,MAAM,SAAS,EAAE,MAAM,UAAU,CAAC,IAAM,EAAE,MAAQ,SAAS,EAAE,MAAM,SAAQ,CAAE,IAAK,CACpK,CAOE,QAAS,CACP,OAAO,KAAK,QAChB,CAME,gBAAiB,CACf,OAAO,KAAK,OAAO,IAAK,IAAO,CAC7B,KAAM,EAAE,IACR,MAAO,KAAK,IAAI,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAC5C,WAAY,IAAM,KAAK,SAAS,EAAE,MAAM,EACxC,gBAAiB,GACjB,SAAU,KAAK,aAAa,SAAW,EAAE,OACzC,OAAQ,IAAM,SAAS,cAAc,KAAK,CAChD,EAAM,CACN,CAME,SAAS,EAAG,CACV,KAAK,KAAO,CACV,MAAO,EACP,KAAM,KAAK,KAAK,IACjB,CACL,CAQE,MAAM,EAAG,CACP,KAAK,SAAS,mBAAmB,YAAa,EAAE,IAAI,CACxD,CASE,SAAS,EAAG,CACV,OAAO,EAAE,KAAK,KAAI,IAAO,EAC7B,CAQE,KAAK,EAAG,CACN,MAAO,CACL,KAAM,EAAE,UACR,MAAO,KAAK,aAAa,MAC1B,CACL,CAIE,WAAW,kBAAmB,CAC5B,MAAO,CACL,OAAQ,OAER,OAAQ,MAET,CACL,CAIE,WAAW,UAAW,CACpB,MAAO,CACL,MAAO,GACP,KAAM,CAAA,CACP,CACL,CAME,WAAW,qBAAsB,CAC/B,MAAO,EACX,CAOE,IAAI,MAAO,CACT,OAAO,KAAK,MAAM,KAAO,KAAK,SAAS,UAAW,KAAK,MAAM,MAAQ,KAAK,aAAa,OAAQ,KAAK,KACxG,CASE,IAAI,KAAK,EAAG,CACV,GAAI,KAAK,MAAQ,KAAK,cAAc,CAAC,EAAG,EAAE,QAAU,QAAU,KAAK,SAAS,WAAY,CACtF,MAAM,EAAI,KAAK,OAAQ,EACvB,EAAE,UAAY,KAAK,SAAS,UAAW,KAAK,SAAS,WAAW,aAAa,EAAG,KAAK,QAAQ,EAAG,KAAK,SAAW,CACtH,CACI,EAAE,OAAS,SAAW,KAAK,SAAS,UAAY,KAAK,MAAM,MAAQ,GACvE,CAOE,QAAS,CACP,MAAM,EAAI,SAAS,cAAc,KAAK,aAAa,GAAG,EACtD,OAAO,EAAE,UAAY,KAAK,MAAM,MAAQ,GAAI,EAAE,UAAU,IAAI,KAAK,KAAK,OAAO,EAAG,EAAE,gBAAkB,KAAK,SAAW,QAAU,OAAQ,EAAE,QAAQ,YAAc,KAAK,IAAI,KAAK,EAAE,KAAK,UAAU,aAAe,EAAE,EAAG,CACrN,CAME,IAAI,cAAe,CACjB,IAAI,EAAI,KAAK,OAAO,KAAM,GAAM,EAAE,SAAW,KAAK,MAAM,KAAK,EAC7D,OAAO,IAAM,EAAI,KAAK,cAAe,CACzC,CAME,IAAI,cAAe,CACjB,GAAI,KAAK,UAAU,aAAc,CAC/B,MAAM,EAAI,KAAK,OAAO,KAAM,GAAM,EAAE,SAAW,KAAK,UAAU,YAAY,EAC1E,GAAI,EACF,OAAO,EACT,QAAQ,KAAK,uFAAuF,CAC1G,CACI,OAAO,KAAK,OAAO,CAAC,CACxB,CAYE,IAAI,QAAS,CACX,MAAM,EAAI,CACR,CACE,OAAQ,EACR,IAAK,KACL,IAAK8D,EACN,EACD,CACE,OAAQ,EACR,IAAK,KACL,IAAKC,EACN,EACD,CACE,OAAQ,EACR,IAAK,KACL,IAAKnE,EACN,EACD,CACE,OAAQ,EACR,IAAK,KACL,IAAK0F,EACN,EACD,CACE,OAAQ,EACR,IAAK,KACL,IAAK7C,EACN,EACD,CACE,OAAQ,EACR,IAAK,KACL,IAAKhB,EACb,CACK,EACD,OAAO,KAAK,UAAU,OAAS,EAAE,OAC9B,GAAM,KAAK,UAAU,OAAO,SAAS,EAAE,MAAM,CACpD,EAAQ,CACR,CAME,QAAQ,EAAG,CACT,MAAM,EAAI,EAAE,OACZ,GAAI,SAAU,EAAG,CACf,MAAM1B,EAAI,EAAE,KACZ,IAAIC,EAAI,KAAK,aAAa,OAC1B,OAAQD,EAAE,QAAO,CACf,IAAK,KACHC,EAAI,EACJ,MACF,IAAK,KACHA,EAAI,EACJ,MACF,IAAK,KACHA,EAAI,EACJ,MACF,IAAK,KACHA,EAAI,EACJ,MACF,IAAK,KACHA,EAAI,EACJ,MACF,IAAK,KACHA,EAAI,EACJ,KACV,CACM,KAAK,UAAU,SAAWA,EAAI,KAAK,UAAU,OAAO,OAAO,CAACN,EAAGI,IAAM,KAAK,IAAIA,EAAIE,CAAC,EAAI,KAAK,IAAIN,EAAIM,CAAC,EAAIF,EAAIJ,CAAC,GAAI,KAAK,KAAO,CAC5H,MAAOM,EACP,KAAMD,EAAE,SACT,CACP,CACA,CAOE,WAAW,aAAc,CACvB,MAAO,CACL,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,CAC1C,CACL,CAQE,WAAW,SAAU,CACnB,MAAO,CACL,KAAMkF,GACN,MAAO,SACR,CACL,CACA,GCnTC,UAAU,CAAc,GAAG,CAAC,GAAG,OAAO,SAAS,IAAI,CAAC,IAAI3F,EAAE,SAAS,cAAc,OAAO,EAAEA,EAAE,YAAY,SAAS,eAAe,o7GAAo7G,CAAC,EAAE,SAAS,KAAK,YAAYA,CAAC,CAAC,CAAC,OAAOiG,EAAE,CAAC,QAAQ,MAAM,iCAAiCA,CAAC,CAAC,CAAC,GAAI,EACrpH,MAAMqI,GAAK,2PAA4PgL,GAAK,2VAA4V/P,GAAK,wqBAAyqB0R,GAAK,mjBAAojBxL,GAAK,uUAAwUI,GAAK,qWAAsWxJ,GAAK,mRAAoR2J,GAAK,kYAAmY3G,GAAK,saAAuauG,GAAK,+YACzlH,IAAIxO,GAAI,OAAO,WAAa,IAAM,WAAa,OAAO,OAAS,IAAM,OAAS,OAAO,OAAS,IAAM,OAAS,OAAO,KAAO,IAAM,KAAO,CAAE,EAC1I,SAASiH,GAAGrI,EAAG,CACb,GAAIA,EAAE,WACJ,OAAOA,EACT,IAAIC,EAAID,EAAE,QACV,GAAI,OAAOC,GAAK,WAAY,CAC1B,IAAIG,EAAI,SAASM,GAAI,CACnB,OAAO,gBAAgBA,EAAI,QAAQ,UAAUT,EAAG,UAAW,KAAK,WAAW,EAAIA,EAAE,MAAM,KAAM,SAAS,CACvG,EACDG,EAAE,UAAYH,EAAE,SACjB,MACCG,EAAI,CAAE,EACR,OAAO,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,EAAI,CAAA,EAAG,OAAO,KAAKJ,CAAC,EAAE,QAAQ,SAASU,EAAG,CAC/F,IAAI,EAAI,OAAO,yBAAyBV,EAAGU,CAAC,EAC5C,OAAO,eAAeN,EAAGM,EAAG,EAAE,IAAM,EAAI,CACtC,WAAY,GACZ,IAAK,UAAW,CACd,OAAOV,EAAEU,CAAC,CAClB,CACA,CAAK,CACF,CAAA,EAAGN,CACN,CACA,IAAI6F,EAAI,CAAA,EAAIvE,GAAI,CAAE,EAAEgK,GAAI,CAAE,EAC1B,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,kBAAoB+E,GACtB,SAASA,IAAK,CACZ,IAAIzQ,EAAI,CAAC,OAAQ,WAAY,QAAS,SAAU,SAAU,MAAO,KAAK,EACtE,MAAO,wDAA0DA,EAAE,IAAI,SAASC,EAAG,CACjF,MAAO,eAAe,OAAOA,EAAG,IAAI,CACxC,CAAG,EAAE,KAAK,IAAI,CACd,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAIC,EAAIyL,GACR,OAAO,eAAe1L,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOC,EAAE,iBACb,EAAK,CACL,GAAGyB,EAAC,EACJ,IAAIgF,GAAI,CAAA,EAAIzC,GAAI,CAAE,EAClB,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,cAAgBsN,GAClB,SAASA,GAAGvR,EAAG,CACb,IAAIC,EAAI,CACN,QACA,UACD,EACD,OAAOD,GAAKA,EAAE,QAAUC,EAAE,SAASD,EAAE,OAAO,EAAI,EAClD,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAIC,EAAIgE,GACR,OAAO,eAAejE,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAOC,EAAE,aACb,EAAK,CACL,GAAGyG,EAAC,EACJ,IAAI5E,GAAK,CAAA,EAAI6F,GAAI,CAAE,EACnB,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,OAASoU,GACX,SAASA,GAAG/b,EAAGC,EAAG,CAChB,MAAM,QAAQA,CAAC,EAAIA,EAAE,QAAQ,SAASG,EAAG,CACvCJ,EAAE,YAAYI,CAAC,CACnB,CAAG,EAAIJ,EAAE,YAAYC,CAAC,CACtB,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAIC,EAAI0H,GACR,OAAO,eAAe3H,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOC,EAAE,MACb,EAAK,CACL,GAAG6B,EAAE,EACL,IAAIwG,GAAI,CAAA,EAAI3B,GAAI,CAAE,EAClB,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,cAAgB2J,GAClB,SAASA,IAAK,CACZ,MAAO,CACL,UACA,UACA,QACA,aACA,SACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,KACA,OACA,MACA,WACA,KACA,SACA,IACA,MACA,OACA,UACA,QACA,QACA,QACA,KACA,QACA,KACA,OACD,CACH,EACC,SAAStQ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAIC,EAAI0G,GACR,OAAO,eAAe3G,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAOC,EAAE,aACb,EAAK,CACL,GAAGqI,EAAC,EACJ,IAAIiH,GAAK,CAAA,EAAIhK,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,kBAAoB4K,GACvB,SAASA,GAAGnQ,EAAG,CACb,IAAIC,EAAI,OAAO,iBAAiBD,CAAC,EAAGI,EAAI,WAAWH,EAAE,QAAQ,EAAGS,EAAI,WAAWT,EAAE,UAAU,GAAKG,EAAI,IAAK,EAAI,WAAWH,EAAE,UAAU,EAAGuE,EAAI,WAAWvE,EAAE,cAAc,EAAGwE,EAAI,WAAWxE,EAAE,SAAS,EAAGQ,EAAIL,EAAI,GAAKE,GAAKI,EAAIN,GAAK,EAAG+C,EAAIsB,EAAID,EAAI,EAAIlE,EAAIG,EACxP,OAAO0C,CACT,EACC,SAASnD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAIC,EAAIsF,GACR,OAAO,eAAevF,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOC,EAAE,iBACb,EAAK,CACL,GAAGsP,EAAE,EACL,IAAI+D,GAAK,CAAE,EAAEhS,GAAK,CAAA,EAAI+J,GAAK,CAAA,EAAIkB,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,kBAAoBqE,GACvB,SAASA,GAAG5Q,EAAG,CACb,OAAOA,EAAE,kBAAoB,MAC/B,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,kBAAoB,OAC7E,IAAIC,EAAIsM,GACR,OAAO,eAAevM,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOC,EAAE,iBACb,EAAK,CACL,GAAGoL,EAAE,EACL,OAAO,eAAe/J,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAc4L,GACjB,IAAImD,GAAK3J,GAAG2M,GAAKhI,GACjB,SAAS6B,GAAGlN,EAAG,CACb,IAAIC,EAAI,GACR,MAAQoQ,GAAG,eAAerQ,CAAC,EACzB,OAAQA,EAAE,KAAI,CACZ,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,QACHC,EAAI,GACJ,KACR,MAEIA,KAAQoT,GAAG,mBAAmBrT,CAAC,EACjC,OAAOC,CACT,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAIC,EAAIqB,GACR,OAAO,eAAetB,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOC,EAAE,WACb,EAAK,CACL,GAAGqT,EAAE,EACL,IAAIrH,GAAI,CAAA,EAAI/E,GAAK,CAAE,EACnB,SAAS6M,GAAG/T,EAAGC,EAAGG,EAAG,CACnB,MAAMM,EAAIN,EAAE,QAAU,OAAS,QAAU,MAAO,EAAIA,EAAEM,CAAC,EAAG8D,EAAI,IAAIvE,CAAC,QACnE,GAAIG,EAAEM,CAAC,EAAI,YAAY+D,EAAG,CACxB,OAAO,KAAKD,CAAC,IAAM,SAAW,KAAKA,CAAC,EAAI,EAAE,MAAM,KAAMC,CAAC,GAAI,KAAKD,CAAC,CAClE,EAAE9D,IAAM,OAASN,EAAE,IAAK,CACvB,MAAMqE,EAAIrE,EAAE,IACZA,EAAE,IAAM,SAASK,EAAG,CAClB,OAAOT,EAAEwE,CAAC,EAAGC,EAAE,MAAM,KAAMhE,CAAC,CAC7B,CACL,CACE,OAAOL,CACT,CACA,SAASqM,IAAK,CACZ,MAAMzM,EAAI,CACR,IAAK,GACL,IAAK,GACL,IAAK,GACL,MAAO,EACX,EAAKC,EAAI,OAAO,KAAKD,CAAC,EAAE,KAAMI,GAAM,OAAO,UAAU,WAAW,YAAW,EAAG,QAAQA,CAAC,IAAM,EAAE,EAC7F,OAAOH,IAAM,SAAWD,EAAEC,CAAC,EAAI,IAAKD,CACtC,CACA,SAAS4O,GAAG5O,EAAG,CACb,OAAOA,GAAK,MAAQA,IAAM,KAAO,OAAOA,GAAK,UAAY,OAAO,KAAKA,CAAC,EAAE,OAAS,EACnF,CACA,SAAS8Q,GAAG9Q,EAAG,CACb,MAAO,CAAC4O,GAAG5O,CAAC,CACd,CACA,MAAMgT,GAAK,IAAM,OAAO,OAAS,KAAO,OAAO,YAAc,MAAQpE,GAAG,OAAO,UAAU,QAAQ,IAAM,iBAAiB,KAAK,OAAO,UAAU,QAAQ,GAAK,OAAO,UAAU,WAAa,YAAc,OAAO,UAAU,eAAiB,GACzO,SAASwC,GAAGpR,EAAG,CACb,MAAMC,EAAIwM,GAAI,EACd,OAAOzM,EAAIA,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,cAAe,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAE,QAAQ,UAAW,GAAG,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,WAAY,KAAK,EAAE,QAAQ,WAAY,GAAG,EAAE,QAAQ,OAAQ,GAAG,EAAGC,EAAE,IAAMD,EAAIA,EAAE,QAAQ,aAAc,GAAG,EAAE,QAAQ,QAAS,GAAG,EAAIA,EAAIA,EAAE,QAAQ,QAAS,MAAM,EAAE,QAAQ,YAAa,KAAK,EAAGA,CACtZ,CACA,SAAS6Q,GAAG7Q,EAAG,CACb,OAAOA,EAAE,CAAC,EAAE,YAAa,EAAGA,EAAE,MAAM,CAAC,CACvC,CACA,SAASiV,GAAGjV,EAAG,CACb,MAAMC,EAAI,SAAS,cAAc,KAAK,EACtCA,EAAE,MAAM,SAAW,WAAYA,EAAE,MAAM,KAAO,SAAUA,EAAE,MAAM,OAAS,SAAUA,EAAE,UAAYD,EAAG,SAAS,KAAK,YAAYC,CAAC,EAC/H,MAAMG,EAAI,OAAO,aAAc,EAAEM,EAAI,SAAS,YAAa,EAC3D,GAAIA,EAAE,WAAWT,CAAC,EAAGG,IAAM,KACzB,MAAM,IAAI,MAAM,+BAA+B,EACjDA,EAAE,gBAAiB,EAAEA,EAAE,SAASM,CAAC,EAAG,SAAS,YAAY,MAAM,EAAG,SAAS,KAAK,YAAYT,CAAC,CAC/F,CACA,SAAS2T,GAAG5T,EAAGC,EAAGG,EAAG,CACnB,IAAIM,EACJ,MAAO,IAAI,IAAM,CACf,MAAM8D,EAAI,KAAMC,EAAI,IAAM,CACxB/D,EAAI,OAAQN,IAAM,IAAMJ,EAAE,MAAMwE,EAAG,CAAC,CACrC,EAAE/D,EAAIL,IAAM,IAAMM,IAAM,OACzB,OAAO,aAAaA,CAAC,EAAGA,EAAI,OAAO,WAAW+D,EAAGxE,CAAC,EAAGQ,GAAKT,EAAE,MAAMwE,EAAG,CAAC,CACvE,CACH,CACA,SAASvD,GAAEjB,EAAG,CACZ,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,EAAE,MAAM,eAAe,EAAE,CAAC,EAAE,YAAa,CAClF,CACA,SAASuT,GAAGvT,EAAG,CACb,OAAOiB,GAAEjB,CAAC,IAAM,SAClB,CACA,SAASwJ,GAAGxJ,EAAG,CACb,OAAOiB,GAAEjB,CAAC,IAAM,YAAciB,GAAEjB,CAAC,IAAM,eACzC,CACA,SAASqU,GAAGrU,EAAG,CACb,OAAOwJ,GAAGxJ,CAAC,GAAK,eAAe,KAAKA,EAAE,UAAU,CAClD,CACA,SAASuU,GAAGvU,EAAG,CACb,OAAOiB,GAAEjB,CAAC,IAAM,QAClB,CACA,SAASiH,GAAEjH,EAAG,CACZ,OAAOiB,GAAEjB,CAAC,IAAM,QAClB,CACA,SAAS2V,GAAG3V,EAAG,CACb,OAAO,QAAQ,QAAQA,CAAC,IAAMA,CAChC,CACA,SAAS0U,GAAG1U,EAAG,CACb,OAAOiB,GAAEjB,CAAC,IAAM,QAClB,CACA,SAASgU,GAAGhU,EAAG,CACb,OAAOiB,GAAEjB,CAAC,IAAM,WAClB,CACA,SAASkB,GAAElB,KAAMC,EAAG,CAClB,GAAI,CAACA,EAAE,OACL,OAAOD,EACT,MAAMI,EAAIH,EAAE,MAAO,EACnB,GAAIgH,GAAEjH,CAAC,GAAKiH,GAAE7G,CAAC,EACb,UAAWM,KAAKN,EACd6G,GAAE7G,EAAEM,CAAC,CAAC,GAAKV,EAAEU,CAAC,IAAM,QAAU,OAAO,OAAOV,EAAG,CAAE,CAACU,CAAC,EAAG,CAAA,CAAI,CAAA,EAAGQ,GAAElB,EAAEU,CAAC,EAAGN,EAAEM,CAAC,CAAC,GAAK,OAAO,OAAOV,EAAG,CAAE,CAACU,CAAC,EAAGN,EAAEM,CAAC,CAAC,CAAE,EAChH,OAAOQ,GAAElB,EAAG,GAAGC,CAAC,CAClB,CACA,SAAS+V,GAAGhW,EAAGC,EAAGG,EAAG,CACnB,MAAMM,EAAI,IAAIT,CAAC,kFAAkFG,CAAC,aAClGJ,GAAK,QAAQ,KAAKU,CAAC,CACrB,CACA,SAASkV,GAAG5V,EAAG,CACb,GAAI,CACF,OAAO,IAAI,IAAIA,CAAC,EAAE,IACtB,MAAU,CACV,CACE,OAAOA,EAAE,UAAU,EAAG,CAAC,IAAM,KAAO,OAAO,SAAS,SAAWA,EAAI,OAAO,SAAS,OAASA,CAC9F,CACA,SAASyV,GAAGzV,EAAG,CACb,OAAOA,EAAI,IAAMA,EAAI,IAAMA,IAAM,IAAMA,IAAM,IAAMA,IAAM,KAAOA,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAMA,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAOA,EAAI,KAAOA,EAAI,GAChJ,CACA,MAAM4L,GAAK,CACT,UAAW,EACX,IAAK,EACL,MAAO,GACP,MAAO,GACP,KAAM,GACN,IAAK,GACL,IAAK,GACL,MAAO,GACP,KAAM,GACN,GAAI,GACJ,KAAM,GACN,MAAO,GACP,OAAQ,GACR,KAAM,GACN,MAAO,GACT,EAAGoB,GAAK,CACN,KAAM,EACN,MAAO,EACP,MAAO,EACP,SAAU,EACV,QAAS,CACX,EACA,MAAMC,EAAG,CACP,aAAc,CACZ,KAAK,UAAY,QAAQ,QAAS,CACtC,CAKE,IAAIhN,EAAG,CACL,OAAO,IAAI,QAAQ,CAACG,EAAGM,IAAM,CAC3B,KAAK,UAAY,KAAK,UAAU,KAAKT,CAAC,EAAE,KAAKG,CAAC,EAAE,MAAMM,CAAC,CAC7D,CAAK,CACL,CACA,CACA,SAASkN,GAAG5N,EAAGC,EAAGG,EAAI,OAAQ,CAC5B,IAAIM,EAAG,EAAG8D,EAAGC,EAAI,KAAMhE,EAAI,EAC3BL,IAAMA,EAAI,IACV,MAAME,EAAI,UAAW,CACnBG,EAAIL,EAAE,UAAY,GAAK,EAAI,KAAK,MAAOqE,EAAI,KAAMD,EAAIxE,EAAE,MAAMU,EAAG,CAAC,EAAG+D,IAAM,OAAS/D,EAAI,EAAI,KAC5F,EACD,OAAO,UAAW,CAChB,MAAMyC,EAAI,KAAK,IAAK,EACpB,CAAC1C,GAAKL,EAAE,UAAY,KAAOK,EAAI0C,GAC/B,MAAMhB,EAAIlC,GAAKkD,EAAI1C,GACnB,OAAOC,EAAI,KAAM,EAAI,UAAWyB,GAAK,GAAKA,EAAIlC,GAAKwE,IAAM,aAAaA,CAAC,EAAGA,EAAI,MAAOhE,EAAI0C,EAAGqB,EAAIxE,EAAE,MAAMU,EAAG,CAAC,EAAG+D,IAAM,OAAS/D,EAAI,EAAI,OAAS,CAAC+D,GAAKrE,EAAE,WAAa,KAAOqE,EAAI,WAAWnE,EAAG6B,CAAC,GAAIqC,CACnM,CACH,CACA,MAAM4J,GAAqB,OAAO,OAAuB,OAAO,eAAe,CAC7E,UAAW,KACX,aAAcnB,GACd,iBAAkBmE,GAClB,UAAW2C,GACX,WAAYlD,GACZ,oBAAqBoE,GACrB,SAAUrB,GACV,UAAW1S,GACX,kBAAmB8U,GACnB,UAAWvJ,GACX,YAAamJ,GACb,UAAWrC,GACX,QAASc,GACT,QAASvD,GACT,WAAYtH,GACZ,YAAawJ,GACb,SAAUuB,GACV,SAAUtN,GACV,eAAgBwO,GAChB,UAAWE,GACX,SAAUjB,GACV,YAAaV,GACb,SAAUpI,GACV,aAAcoB,GACd,SAAU4B,GACV,SAAUhB,GACV,OAAQ3M,EACV,EAAG,OAAO,YAAa,CAAE,MAAO,QAAU,CAAA,CAAC,EAAGE,GAAqBkH,GAAG+F,EAAE,EACxE,OAAO,eAAelH,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,2BAA6B2G,GAChC,IAAIU,GAAKpN,GAAIsN,GAAKnG,GAClB,SAASuF,GAAG7N,EAAG,CACb,IAAIC,KACAsO,GAAG,UAAUvO,CAAC,GAAKC,EAAI,SAAS,cAAc,KAAK,EAAGA,EAAE,UAAYD,GAAKC,EAAID,EACjF,IAAII,EAAI,SAASM,EAAG,CAClB,MAAO,IAAK+N,GAAG,eAAgB,EAAC,SAAS/N,EAAE,QAAQ,YAAa,CAAA,GAAK,MAAM,KAAKA,EAAE,QAAQ,EAAE,MAAMN,CAAC,CACpG,EACD,OAAO,MAAM,KAAKH,EAAE,QAAQ,EAAE,MAAMG,CAAC,CACvC,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,2BAA6B,OACtF,IAAIC,EAAIiH,GACR,OAAO,eAAelH,EAAG,6BAA8B,CAAE,WAAY,GAAI,IAAK,UAAW,CACvF,OAAOC,EAAE,0BACb,EAAK,CACL,GAAGgM,EAAC,EACJ,IAAI9L,GAAK,CAAE,EAAEkH,GAAK,CAAA,EAAIN,GAAI,CAAA,EAAI+K,GAAK,CAAE,EACrC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,KAAO1E,GACV,SAASA,GAAGpN,EAAGC,EAAGG,EAAG,CACnB,IAAIM,EACJT,IAAM,SAAWA,EAAI,MAAOG,IAAM,SAAWA,EAAI,IACjD,IAAI,EAAI,SAAS,cAAcJ,CAAC,EAChC,GAAI,MAAM,QAAQC,CAAC,EAAG,CACpB,IAAIuE,EAAIvE,EAAE,OAAO,SAASQ,EAAG,CAC3B,OAAOA,IAAM,MACnB,CAAK,GACAC,EAAI,EAAE,WAAW,IAAI,MAAMA,EAAG8D,CAAC,CACjC,MACCvE,IAAM,MAAQ,EAAE,UAAU,IAAIA,CAAC,EACjC,QAASwE,KAAKrE,EACZ,OAAO,UAAU,eAAe,KAAKA,EAAGqE,CAAC,IAAM,EAAEA,CAAC,EAAIrE,EAAEqE,CAAC,GAC3D,OAAO,CACT,EACC,SAASzE,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,KAAO,OAChE,IAAIC,EAAI6R,GACR,OAAO,eAAe9R,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAOC,EAAE,IACb,EAAK,CACL,GAAG8G,EAAC,EACJ,OAAO,eAAeM,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,iBAAmByH,GACtB,IAAIO,GAAKtI,GACT,SAAS+H,GAAG9O,EAAG,CACb,IAAIC,KAAQoP,GAAG,MAAM,KAAK,EAC1B,OAAOpP,EAAE,YAAYD,CAAC,EAAGC,EAAE,SAC7B,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,iBAAmB,OAC5E,IAAIC,EAAIoH,GACR,OAAO,eAAerH,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAOC,EAAE,gBACb,EAAK,CACL,GAAGE,EAAE,EACL,IAAIuP,GAAK,CAAA,EAAIK,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,iBAAmBS,GACtB,IAAIpB,GAAK1I,GACT,SAAS8J,GAAGxQ,EAAG,CACb,IAAIC,EAAGG,EACP,SAAWgP,GAAG,eAAepP,CAAC,EAAIA,EAAE,MAAM,OAASA,EAAE,WAAa,KAAK,UAAYA,EAAE,QAAUI,GAAKH,EAAID,EAAE,eAAiB,MAAQC,IAAM,OAAS,OAASA,EAAE,UAAY,MAAQG,IAAM,OAASA,EAAI,CACtM,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,iBAAmB,OAC5E,IAAIC,EAAI8P,GACR,OAAO,eAAe/P,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAOC,EAAE,gBACb,EAAK,CACL,GAAGyP,EAAE,EACL,IAAIvF,GAAK,CAAE,EAAEwF,GAAK,CAAA,EAAIX,GAAK5N,IAAKA,GAAE,eAAiB,SAASpB,EAAGC,EAAGG,EAAG,CACnE,GAAIA,GAAK,UAAU,SAAW,EAC5B,QAASM,EAAI,EAAG,EAAIT,EAAE,OAAQuE,EAAG9D,EAAI,EAAGA,KACrC8D,GAAK,EAAE9D,KAAKT,MAAQuE,IAAMA,EAAI,MAAM,UAAU,MAAM,KAAKvE,EAAG,EAAGS,CAAC,GAAI8D,EAAE9D,CAAC,EAAIT,EAAES,CAAC,GACnF,OAAOV,EAAE,OAAOwE,GAAK,MAAM,UAAU,MAAM,KAAKvE,CAAC,CAAC,CACpD,EACA,OAAO,eAAe0P,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,wBAA0B8E,GAC7B,IAAIvE,GAAKjE,GACT,SAASwI,GAAGzU,EAAG,CACb,SAAWkQ,GAAG,4BAA4BlQ,CAAC,EAAI,CAACA,CAAC,EAAI,MAAM,KAAKA,EAAE,QAAQ,EAAE,OAAO,SAASC,EAAGG,EAAG,CAChG,OAAO4O,GAAGA,GAAG,CAAA,EAAI/O,EAAG,EAAE,EAAGwU,GAAGrU,CAAC,EAAG,EAAE,CACnC,EAAE,EAAE,CACP,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,wBAA0B,OACnF,IAAIC,EAAI0P,GACR,OAAO,eAAe3P,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAOC,EAAE,uBACb,EAAK,CACL,GAAGkK,EAAE,EACL,IAAIgH,GAAK,CAAE,EAAEhF,GAAK,CAAA,EAAIhF,GAAI,CAAA,EAAI4H,GAAK,CAAE,EACrC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,eAAiBuC,GACpB,SAASA,GAAGtR,EAAG,CACb,MAAO,CACL,KACA,KACJ,EAAI,SAASA,EAAE,OAAO,CACtB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,eAAiB,OAC1E,IAAIC,EAAI8O,GACR,OAAO,eAAe/O,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAOC,EAAE,cACb,EAAK,CACL,GAAGkH,EAAC,EACJ,IAAI9F,GAAI,CAAA,EAAIwB,GAAK,CAAE,EACnB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAc2M,GACjB,SAASA,GAAGxP,EAAG,CACb,MAAO,CACL,OACA,OACA,KACA,MACA,UACA,QACA,KACA,MACA,QACA,SACA,OACA,OACA,QACA,SACA,QACA,KACJ,EAAI,SAASA,EAAE,OAAO,CACtB,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAIC,EAAI4C,GACR,OAAO,eAAe7C,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOC,EAAE,WACb,EAAK,CACL,GAAGoB,EAAC,EACJ,OAAO,eAAe8K,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,eAAiBoO,GACpB,IAAI5J,GAAKjK,GAAG0M,GAAKjM,GAAG6K,GAAK3Q,GACzB,SAASkZ,GAAGva,EAAGC,EAAG,CAChBA,IAAM,SAAWA,EAAI,IACrB,IAAIG,EAAIH,EAAI,YAAc,aAAcS,EAAIT,EAAI,kBAAoB,cACpE,GAAID,EAAE,WAAa,KAAK,cAAgBA,EAAEI,CAAC,EAAG,CAC5C,IAAI,EAAIJ,EAAEI,CAAC,EACX,MAAQ4R,GAAG,aAAa,CAAC,GAAK,IAAKrB,GAAG,eAAe,CAAC,GAAK,IAAKyC,GAAG,gBAAgB,CAAC,EAClF,GAAI,EAAE1S,CAAC,EACL,EAAI,EAAEA,CAAC,UACA,EAAE,aAAe,MAAQ,EAAE,WAAWA,CAAC,EAC9C,EAAI,EAAE,WAAWA,CAAC,MAElB,QAAO,EAAE,WACb,OAAO6Z,GAAG,EAAGta,CAAC,CAClB,CACE,OAAOD,CACT,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,eAAiB,OAC1E,IAAIC,EAAIkM,GACR,OAAO,eAAenM,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAOC,EAAE,cACb,EAAK,CACL,GAAGkR,EAAE,EACL,IAAIqH,GAAK,CAAE,EAAE3U,GAAK,CAAA,EAAIoY,GAAI7a,IAAKA,GAAE,eAAiB,SAASpB,EAAGC,EAAGG,EAAG,CAClE,GAAIA,GAAK,UAAU,SAAW,EAC5B,QAASM,EAAI,EAAG,EAAIT,EAAE,OAAQuE,EAAG9D,EAAI,EAAGA,KACrC8D,GAAK,EAAE9D,KAAKT,MAAQuE,IAAMA,EAAI,MAAM,UAAU,MAAM,KAAKvE,EAAG,EAAGS,CAAC,GAAI8D,EAAE9D,CAAC,EAAIT,EAAES,CAAC,GACnF,OAAOV,EAAE,OAAOwE,GAAK,MAAM,UAAU,MAAM,KAAKvE,CAAC,CAAC,CACpD,EACA,OAAO,eAAe4D,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,cAAgB8P,GACnB,IAAIO,GAAKjI,GAAG8J,GAAK5L,GAAI+M,GAAKxV,GAAG+V,GAAK/Q,GAClC,SAASiN,GAAG3T,EAAG,CACb,OAAO,MAAM,KAAKA,EAAE,oBAAqBkX,GAAG,mBAAiB,CAAG,CAAC,EAAE,OAAO,SAASjX,EAAGG,EAAG,CACvF,SAAWqX,GAAG,eAAerX,CAAC,MAAS8T,GAAG,4BAA4B9T,CAAC,EAAI6b,GAAEA,GAAE,CAAE,EAAEhc,EAAG,EAAE,EAAG,CAACG,CAAC,EAAG,EAAE,EAAI6b,GAAEA,GAAE,CAAA,EAAIhc,EAAG,EAAE,KAAO8V,GAAG,yBAAyB3V,CAAC,EAAG,EAAE,CAC7J,EAAE,EAAE,CACP,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,cAAgB,OACzE,IAAIC,EAAI4D,GACR,OAAO,eAAe7D,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAOC,EAAE,aACb,EAAK,CACL,GAAGuY,EAAE,EACL,IAAIZ,GAAK,CAAA,EAAI3J,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,uBAAyBiK,GAC5B,SAASA,GAAGlY,EAAG,CACb,MAAO,CAAC,aAAa,KAAKA,CAAC,CAC7B,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,uBAAyB,OAClF,IAAIC,EAAIgO,GACR,OAAO,eAAejO,EAAG,yBAA0B,CAAE,WAAY,GAAI,IAAK,UAAW,CACnF,OAAOC,EAAE,sBACb,EAAK,CACL,GAAG2X,EAAE,EACL,IAAIxQ,GAAK,CAAA,EAAIrE,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,UAAYuU,GACf,IAAI1C,GAAKzT,GACT,SAASmW,GAAGtX,EAAG,CACb,SAAW4U,GAAG,UAAU5U,CAAC,EAAI,GAAK,CAAC,CAACA,GAAK,CAAC,CAACA,EAAE,UAAYA,EAAE,WAAa,KAAK,YAC/E,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,UAAY,OACrE,IAAIC,EAAI8C,GACR,OAAO,eAAe/C,EAAG,YAAa,CAAE,WAAY,GAAI,IAAK,UAAW,CACtE,OAAOC,EAAE,SACb,EAAK,CACL,GAAGmH,EAAE,EACL,IAAIkN,GAAK,CAAE,EAAEhJ,GAAK,CAAA,EAAIpL,GAAK,CAAA,EAAIsM,GAAK,CAAE,EACtC,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,OAAS4H,GACZ,SAASA,GAAGpU,EAAG,CACb,OAAOA,IAAM,KAAO,GAAKA,EAAE,WAAW,SAAW,CACnD,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAIC,EAAIuM,GACR,OAAO,eAAexM,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOC,EAAE,MACb,EAAK,CACL,GAAGC,EAAE,EACL,IAAIuF,GAAK,CAAA,EAAIwE,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,YAAckO,GACjB,IAAIgB,GAAKhS,GAAG0U,GAAKzU,GAAI0P,GAAKpQ,GAAGmS,GAAKxX,GAClC,SAAS8W,GAAGnY,EAAGC,EAAG,CAChB,IAAIG,EAAI,GACR,SAAWyY,GAAG,aAAa7Y,CAAC,GAAK,IAAKmZ,GAAG,gBAAgBnZ,CAAC,EAAI,OAAU6b,GAAG,WAAW7b,CAAC,MAAS8W,GAAG,eAAe9W,CAAC,EAAII,EAAIJ,EAAE,MAAQA,EAAE,cAAgB,OAASI,EAAIJ,EAAE,YAAY,QAAQ,IAAK,EAAE,GAAIC,IAAM,SAAWG,EAAIA,EAAE,QAAQ,IAAI,OAAOH,EAAG,GAAG,EAAG,EAAE,GAAIG,EAAE,KAAI,EAAG,SAAW,EACpR,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,YAAc,OACvE,IAAIC,EAAIgK,GACR,OAAO,eAAejK,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOC,EAAE,WACb,EAAK,CACL,GAAGwF,EAAE,EACL,OAAO,eAAe6F,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,QAAUkR,GACb,IAAI/C,GAAKvZ,GAAIwY,GAAKjT,GAClB,SAAS+W,GAAGxc,EAAGC,EAAG,CAChBD,EAAE,UAAW,EACb,QAASI,EAAI,CAACJ,CAAC,EAAGI,EAAE,OAAS,GAAK,CAChC,IAAIM,EAAIN,EAAE,MAAO,EACjB,GAAIM,EAAG,CACL,GAAIV,EAAIU,KAAO+Y,GAAG,QAAQzZ,CAAC,GAAK,IAAK0Y,GAAG,aAAa1Y,EAAGC,CAAC,EACvD,MAAO,GACTG,EAAE,KAAK,MAAMA,EAAG,MAAM,KAAKJ,EAAE,UAAU,CAAC,CAC9C,CACA,CACE,MAAO,EACT,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAU,OACnE,IAAIC,EAAIqL,GACR,OAAO,eAAetL,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAOC,EAAE,OACb,EAAK,CACL,GAAGqU,EAAE,EACL,IAAIjH,GAAK,CAAA,EAAIhJ,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,WAAa2Y,GAChB,IAAIxH,GAAKrU,GACT,SAAS6b,GAAGhd,EAAG,CACb,SAAWwV,GAAG,UAAUxV,CAAC,EAAI,GAAK,CAAC,CAACA,GAAK,CAAC,CAACA,EAAE,UAAYA,EAAE,WAAa,KAAK,sBAC/E,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,WAAa,OACtE,IAAIC,EAAIoE,GACR,OAAO,eAAerE,EAAG,aAAc,CAAE,WAAY,GAAI,IAAK,UAAW,CACvE,OAAOC,EAAE,UACb,EAAK,CACL,GAAGoN,EAAE,EACL,IAAIsL,GAAK,CAAA,EAAI3O,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,aAAeoS,GAClB,IAAItB,GAAK/T,GACT,SAASqV,GAAGpc,EAAG,CACb,IAAIC,KAAQ6a,GAAG,MAAM,KAAK,EAC1B,OAAO7a,EAAE,UAAYD,EAAGC,EAAE,kBAAoB,CAChD,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,aAAe,OACxE,IAAIC,EAAI+J,GACR,OAAO,eAAehK,EAAG,eAAgB,CAAE,WAAY,GAAI,IAAK,UAAW,CACzE,OAAOC,EAAE,YACb,EAAK,CACL,GAAG0Y,EAAE,EACL,IAAIrR,GAAK,CAAA,EAAIvG,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,OAAS4a,GACZ,SAASA,GAAG3b,EAAG,CACb,IAAIC,EAAID,EAAE,sBAAqB,EAAII,EAAI,OAAO,aAAe,SAAS,gBAAgB,WAAYM,EAAI,OAAO,aAAe,SAAS,gBAAgB,UAAW,EAAIT,EAAE,IAAMS,EAAG8D,EAAIvE,EAAE,KAAOG,EAC5L,MAAO,CACL,IAAK,EACL,KAAMoE,EACN,OAAQ,EAAIvE,EAAE,OACd,MAAOuE,EAAIvE,EAAE,KACd,CACH,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,OAAS,OAClE,IAAIC,EAAIc,GACR,OAAO,eAAef,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOC,EAAE,MACb,EAAK,CACL,GAAGqH,EAAE,EACL,IAAIuE,GAAK,CAAA,EAAIN,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,QAAUsP,GACb,SAASA,GAAG7a,EAAGC,EAAG,CAChB,MAAM,QAAQA,CAAC,GAAKA,EAAIA,EAAE,QAAO,EAAIA,EAAE,QAAQ,SAASG,EAAG,CACzD,OAAOJ,EAAE,QAAQI,CAAC,CACtB,CAAG,GAAKJ,EAAE,QAAQC,CAAC,CACnB,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAU,OACnE,IAAIC,EAAIsL,GACR,OAAO,eAAevL,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAOC,EAAE,OACb,EAAK,CACL,GAAG4L,EAAE,GACJ,SAAS7L,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,QAAUA,EAAE,OAASA,EAAE,KAAOA,EAAE,eAAiBA,EAAE,YAAcA,EAAE,YAAcA,EAAE,OAASA,EAAE,aAAeA,EAAE,WAAaA,EAAE,QAAUA,EAAE,UAAYA,EAAE,kBAAoBA,EAAE,uBAAyBA,EAAE,cAAgBA,EAAE,cAAgBA,EAAE,kBAAoBA,EAAE,eAAiBA,EAAE,wBAA0BA,EAAE,iBAAmBA,EAAE,iBAAmBA,EAAE,2BAA6BA,EAAE,YAAcA,EAAE,kBAAoBA,EAAE,cAAgBA,EAAE,OAAS,OACrf,IAAIC,EAAIyB,GACR,OAAO,eAAe1B,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOC,EAAE,iBACb,EAAK,EACH,IAAIG,EAAIsG,GACR,OAAO,eAAe1G,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAOI,EAAE,aACb,EAAK,EACH,IAAIM,EAAIoB,GACR,OAAO,eAAe9B,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOU,EAAE,MACb,EAAK,EACH,IAAI,EAAI4H,GACR,OAAO,eAAetI,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO,EAAE,aACb,EAAK,EACH,IAAIwE,EAAI+K,GACR,OAAO,eAAevP,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOwE,EAAE,iBACb,EAAK,EACH,IAAIC,EAAI6O,GACR,OAAO,eAAetT,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOyE,EAAE,WACb,EAAK,EACH,IAAIhE,EAAIwL,GACR,OAAO,eAAejM,EAAG,6BAA8B,CAAE,WAAY,GAAI,IAAK,UAAW,CACvF,OAAOS,EAAE,0BACb,EAAK,EACH,IAAIH,EAAIH,GACR,OAAO,eAAeH,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAOM,EAAE,gBACb,EAAK,EACH,IAAI6C,EAAIuM,GACR,OAAO,eAAe1P,EAAG,mBAAoB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC7E,OAAOmD,EAAE,gBACb,EAAK,EACH,IAAIhB,EAAIgI,GACR,OAAO,eAAenK,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAOmC,EAAE,uBACb,EAAK,EACH,IAAIuD,EAAIyL,GACR,OAAO,eAAenR,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAO0F,EAAE,cACb,EAAK,EACH,IAAIC,EAAI6S,GACR,OAAO,eAAexY,EAAG,gBAAiB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC1E,OAAO2F,EAAE,aACb,EAAK,EACH,IAAI4X,EAAI3F,GACR,OAAO,eAAe5X,EAAG,yBAA0B,CAAE,WAAY,GAAI,IAAK,UAAW,CACnF,OAAOud,EAAE,sBACb,EAAK,EACH,IAAIC,EAAInS,GACR,OAAO,eAAerL,EAAG,oBAAqB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC9E,OAAOwd,EAAE,iBACb,EAAK,EACH,IAAIlb,EAAK8E,GACT,OAAO,eAAepH,EAAG,YAAa,CAAE,WAAY,GAAI,IAAK,UAAW,CACtE,OAAOsC,EAAG,SACd,EAAK,EACH,IAAIyX,EAAKzF,GACT,OAAO,eAAetU,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAO+Z,EAAG,OACd,EAAK,EACH,IAAI7X,EAAKmL,GACT,OAAO,eAAerN,EAAG,aAAc,CAAE,WAAY,GAAI,IAAK,UAAW,CACvE,OAAOkC,EAAG,UACd,EAAK,EACH,IAAIyC,EAAKgU,GACT,OAAO,eAAe3Y,EAAG,eAAgB,CAAE,WAAY,GAAI,IAAK,UAAW,CACzE,OAAO2E,EAAG,YACd,EAAK,EACH,IAAI3B,EAAK9C,GACT,OAAO,eAAeF,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOgD,EAAG,MACd,EAAK,EACH,IAAIiM,EAAKxJ,GACT,OAAO,eAAezF,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOiP,EAAG,WACd,EAAK,EACH,IAAIrM,EAAKuE,GACT,OAAO,eAAenH,EAAG,iBAAkB,CAAE,WAAY,GAAI,IAAK,UAAW,CAC3E,OAAO4C,EAAG,cACd,EAAK,EACH,IAAIoC,EAAK3D,GACT,OAAO,eAAerB,EAAG,cAAe,CAAE,WAAY,GAAI,IAAK,UAAW,CACxE,OAAOgF,EAAG,WACd,EAAK,EACH,IAAIzC,GAAKwE,GACT,OAAO,eAAe/G,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAOuC,GAAG,IACd,EAAK,EACH,IAAIgQ,EAAKjL,GACT,OAAO,eAAetH,EAAG,SAAU,CAAE,WAAY,GAAI,IAAK,UAAW,CACnE,OAAOuS,EAAG,MACd,EAAK,EACH,IAAInK,EAAKyD,GACT,OAAO,eAAe7L,EAAG,UAAW,CAAE,WAAY,GAAI,IAAK,UAAW,CACpE,OAAOoI,EAAG,OACd,EAAK,CACL,GAAGnC,CAAC,EACJ,MAAMD,EAAI,WAAYyX,EAAI,CACxB,QAASzX,EACT,KAAM,GAAGA,CAAC,SACV,YAAa,GAAGA,CAAC,iBACjB,aAAc,GAAGA,CAAC,iBACpB,EACA,MAAMH,EAAE,CAIN,WAAW,KAAM,CACf,MAAO,CACL,GAAG4X,EACH,YAAa,GAAGzX,CAAC,UAClB,CACL,CAME,YAAY/F,EAAGG,EAAG,CAChB,KAAK,OAASA,EAAG,KAAK,SAAWH,CACrC,CAME,cAAcA,EAAG,CACf,IAAIG,EACJ,OAAOH,IAAM,GAAKG,EAAI6F,EAAE,KAAK,KAAM,CAACJ,GAAE,IAAI,QAASA,GAAE,IAAI,WAAW,CAAC,EAAIzF,EAAI6F,EAAE,KAAK,KAAM,CAACJ,GAAE,IAAI,YAAaA,GAAE,IAAI,YAAY,CAAC,EAAGzF,CACxI,CAOE,WAAWH,EAAGG,EAAG,CACf,MAAMM,EAAIuF,EAAE,KAAK,KAAMJ,GAAE,IAAI,IAAI,EAAG,EAAII,EAAE,KAAK,MAAOJ,GAAE,IAAI,YAAa,CACvE,UAAW5F,EACX,iBAAkB,CAAC,KAAK,UAAU,SAAQ,CAChD,CAAK,EACD,OAAOS,EAAE,YAAY,CAAC,EAAGA,CAC7B,CAME,eAAeT,EAAG,CAChB,MAAMG,EAAIH,EAAE,cAAc,IAAI4F,GAAE,IAAI,WAAW,EAAE,EACjD,MAAO,CAACzF,GAAK6F,EAAE,QAAQ7F,CAAC,EAAI,GAAKA,EAAE,SACvC,CAKE,aAAc,CACZ,MAAO,CAAE,CACb,CAIE,oBAAqB,CACnB,MAAO,CAAE,CACb,CACA,CACA,MAAMmE,EAAE,CAIN,WAAW,KAAM,CACf,MAAO,CACL,GAAGkZ,EACH,cAAe,GAAGzX,CAAC,YACpB,CACL,CAME,YAAY/F,EAAGG,EAAG,CAChB,KAAK,OAASA,EAAG,KAAK,SAAWH,CACrC,CAME,cAAcA,EAAG,CACf,IAAIG,EACJ,OAAOH,IAAM,GAAKG,EAAI6F,EAAE,KAAK,KAAM,CAAC1B,GAAE,IAAI,QAASA,GAAE,IAAI,aAAa,CAAC,EAAInE,EAAI6F,EAAE,KAAK,KAAM,CAAC1B,GAAE,IAAI,cAAeA,GAAE,IAAI,YAAY,CAAC,EAAGnE,CAC5I,CAOE,WAAWH,EAAGG,EAAG,CACf,MAAMM,EAAIuF,EAAE,KAAK,KAAM1B,GAAE,IAAI,IAAI,EAAG,EAAI0B,EAAE,KAAK,MAAO1B,GAAE,IAAI,YAAa,CACvE,UAAWtE,EACX,iBAAkB,CAAC,KAAK,UAAU,SAAQ,CAChD,CAAK,EACD,OAAOS,EAAE,YAAY,CAAC,EAAGA,CAC7B,CAME,eAAeT,EAAG,CAChB,MAAMG,EAAIH,EAAE,cAAc,IAAIsE,GAAE,IAAI,WAAW,EAAE,EACjD,MAAO,CAACnE,GAAK6F,EAAE,QAAQ7F,CAAC,EAAI,GAAKA,EAAE,SACvC,CAKE,aAAc,CACZ,MAAO,CAAE,CACb,CAIE,oBAAqB,CACnB,MAAO,CAAE,CACb,CACA,CACA,SAAS4G,GAAEhH,EAAG,CACZ,OAAOA,EAAE,WAAa,KAAK,YAC7B,CACA,IAAIkM,GAAI,CAAE,EAAE2C,GAAK,CAAA,EAAInH,GAAI,CAAA,EAAIb,GAAI,CAAE,EACnC,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,wBAA0B+V,GAC5B,IAAI9b,GAAKmF,EACT,SAAS2W,GAAG5c,EAAGC,EAAGG,EAAGM,EAAG,EAAG,CACzB,IAAI8D,EACJ,IAAM,SAAW,EAAI,IACrB,IAAIC,EAAI,SAAS,YAAa,EAC9B,GAAI/D,IAAM,QAAU+D,EAAE,SAASzE,EAAG,CAAC,EAAGyE,EAAE,OAAOxE,EAAGG,CAAC,IAAMqE,EAAE,SAASxE,EAAGG,CAAC,EAAGqE,EAAE,OAAOzE,EAAGA,EAAE,WAAW,MAAM,GAAI,IAAM,GAAI,CACtH,IAAIS,EAAIgE,EAAE,gBAAiB,EAC3B,SAAW3D,GAAG,kBAAkBL,CAAC,CACrC,CACE,IAAIH,EAAImE,EAAE,cAAa,EAAItB,EAAI,SAAS,cAAc,KAAK,EAC3DA,EAAE,YAAY7C,CAAC,EACf,IAAI6B,GAAKqC,EAAIrB,EAAE,eAAiB,MAAQqB,IAAM,OAASA,EAAI,GAC3D,OAAOrC,CACT,CACA,OAAO,eAAeuF,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,sCAAwCrH,GAC1C,IAAIqc,GAAKzW,EAAGuB,GAAKX,GACjB,SAASxG,GAAGL,EAAGC,EAAGG,EAAGM,EAAG,CACtB,IAAI,KAAQ8G,GAAG,yBAAyBxH,EAAGC,EAAGG,EAAGM,CAAC,EAClD,SAAWgc,GAAG,wBAAwB,CAAC,CACzC,EACC,SAAS1c,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sCAAwC,OACjG,IAAIC,EAAIyH,GACR,OAAO,eAAe1H,EAAG,wCAAyC,CAAE,WAAY,GAAI,IAAK,UAAW,CAClG,OAAOC,EAAE,qCACb,EAAK,CACL,GAAG4O,EAAE,EACL,IAAIlC,GAAK,CAAE,GACV,SAAS3M,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,wBAA0B,OACnF,IAAIC,EAAI4G,GACR,OAAO,eAAe7G,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAOC,EAAE,uBACb,EAAK,CACL,GAAG0M,EAAE,EACL,IAAIb,GAAK,CAAA,EAAIzJ,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,MAAQ1B,GACX,IAAIY,GAAK0E,EACT,SAAStF,GAAGX,EAAGC,EAAG,CAChB,IAAIG,EAAGM,EACP,GAAIT,IAAM,SAAWA,EAAI,OAASsB,GAAG,eAAevB,CAAC,EAAG,CACtDA,EAAE,MAAO,EACT,IAAI,EAAIC,EAAI,EAAID,EAAE,MAAM,OACxBA,EAAE,kBAAkB,EAAG,CAAC,CAC5B,KAAS,CACL,IAAIwE,EAAI,SAAS,YAAa,EAAEC,EAAI,OAAO,aAAc,EACzD,GAAI,CAACA,EACH,OACF,IAAIhE,EAAI,SAASkF,EAAG4X,EAAG,CACrBA,IAAM,SAAWA,EAAI,IACrB,IAAIC,EAAI,SAAS,eAAe,EAAE,EAClCD,EAAI5X,EAAE,aAAa6X,EAAG7X,EAAE,UAAU,EAAIA,EAAE,YAAY6X,CAAC,EAAGhZ,EAAE,SAASgZ,EAAG,CAAC,EAAGhZ,EAAE,OAAOgZ,EAAG,CAAC,CAC7F,EAAOld,EAAI,SAASqF,EAAG,CACjB,OAAOA,GAAK,IACb,EAAExC,EAAInD,EAAE,WAAYmC,EAAIlC,EAAIkD,EAAE,CAAC,EAAIA,EAAEA,EAAE,OAAS,CAAC,EAClD,GAAI7C,EAAE6B,CAAC,EAAG,CACR,KAAO7B,EAAE6B,CAAC,GAAKA,EAAE,WAAa,KAAK,WACjCA,EAAIlC,EAAIkC,EAAE,WAAaA,EAAE,UAC3B,GAAI7B,EAAE6B,CAAC,GAAKA,EAAE,WAAa,KAAK,UAAW,CACzC,IAAIuD,GAAKhF,GAAKN,EAAI+B,EAAE,eAAiB,MAAQ/B,IAAM,OAAS,OAASA,EAAE,UAAY,MAAQM,IAAM,OAASA,EAAI,EAAG,EAAIT,EAAI,EAAIyF,EAC7HlB,EAAE,SAASrC,EAAG,CAAC,EAAGqC,EAAE,OAAOrC,EAAG,CAAC,CAChC,MACC1B,EAAET,EAAGC,CAAC,CACT,MACCQ,EAAET,CAAC,EACLyE,EAAE,gBAAiB,EAAEA,EAAE,SAASD,CAAC,CACrC,CACA,EACC,SAASxE,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,MAAQ,OACjE,IAAIC,EAAIoC,GACR,OAAO,eAAerC,EAAG,QAAS,CAAE,WAAY,GAAI,IAAK,UAAW,CAClE,OAAOC,EAAE,KACb,EAAK,CACL,GAAG6L,EAAE,EACL,IAAI/G,GAAK,CAAA,EAAIS,GAAI,CAAE,EACnB,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,sBAAwB+B,GAC1B,SAASA,IAAK,CACZ,IAAIvH,EAAI,OAAO,aAAc,EAC7B,GAAIA,IAAM,KACR,MAAO,CAAC,KAAM,CAAC,EACjB,IAAIC,EAAID,EAAE,UAAWI,EAAIJ,EAAE,YAC3B,OAAOC,IAAM,KAAO,CAAC,KAAM,CAAC,GAAKA,EAAE,WAAa,KAAK,WAAaA,EAAE,WAAW,OAAS,IAAMA,EAAE,WAAWG,CAAC,IAAM,QAAUH,EAAIA,EAAE,WAAWG,CAAC,EAAGA,EAAI,IAAMH,EAAIA,EAAE,WAAWG,EAAI,CAAC,EAAGH,EAAE,cAAgB,OAASG,EAAIH,EAAE,YAAY,UAAW,CAACA,EAAGG,CAAC,EACnP,EACC,SAASJ,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sBAAwB,OACjF,IAAIC,EAAIuF,GACR,OAAO,eAAexF,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAOC,EAAE,qBACb,EAAK,CACL,GAAG8E,EAAE,EACL,IAAIwI,GAAK,CAAA,EAAImQ,GAAI,CAAE,EACnB,OAAO,eAAeA,GAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EACpDA,GAAE,SAAW3b,GACb,SAASA,IAAK,CACZ,IAAI/B,EAAI,OAAO,aAAc,EAC7B,OAAOA,GAAKA,EAAE,WAAaA,EAAE,WAAW,CAAC,EAAI,IAC/C,EACC,SAASA,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,SAAW,OACpE,IAAIC,EAAIyd,GACR,OAAO,eAAe1d,EAAG,WAAY,CAAE,WAAY,GAAI,IAAK,UAAW,CACrE,OAAOC,EAAE,QACb,EAAK,CACL,GAAGsN,EAAE,EACL,IAAIC,GAAK,CAAA,EAAIa,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,oBAAsB2G,GACzB,IAAI7C,GAAKlM,EAAGrE,GAAKmD,GAAI/D,GAAK6N,GAC1B,SAASmG,GAAGhV,EAAG,CACb,IAAIC,KAAQkS,GAAG,gBAAgBnS,EAAG,EAAE,EACpC,GAAIC,IAAM,KACR,MAAO,GACT,MAAQkS,GAAG,eAAelS,CAAC,EACzB,OAAOA,EAAE,eAAiBA,EAAE,MAAM,OACpC,IAAIG,KAAQwB,GAAG,yBAA0BlB,EAAIN,EAAE,CAAC,EAAG,EAAIA,EAAE,CAAC,EAC1D,OAAOM,IAAM,KAAO,MAASM,GAAG,uCAAuChB,EAAGU,EAAG,EAAG,OAAO,CACzF,EACC,SAASV,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,oBAAsB,OAC/E,IAAIC,EAAIoO,GACR,OAAO,eAAerO,EAAG,sBAAuB,CAAE,WAAY,GAAI,IAAK,UAAW,CAChF,OAAOC,EAAE,mBACb,EAAK,CACL,GAAGuN,EAAE,EACL,IAAId,GAAK,CAAA,EAAIwI,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,sBAAwB/B,GAC3B,IAAIrN,GAAIG,EAAG6M,GAAKtN,GAAGuN,GAAKrL,GACxB,SAASyL,GAAGnT,EAAG,CACb,IAAIC,KAAQ6F,GAAE,gBAAgB9F,CAAC,EAC/B,GAAIC,IAAM,SAAY6F,GAAE,SAAS9F,CAAC,EAChC,MAAO,GACT,MAAQ8F,GAAE,eAAe7F,CAAC,EACxB,OAAOA,EAAE,eAAiB,EAC5B,MAAQ6F,GAAE,SAAS9F,CAAC,EAClB,MAAO,GACT,IAAII,KAAQ0S,GAAG,yBAA0BpS,EAAIN,EAAE,CAAC,EAAG,EAAIA,EAAE,CAAC,EAC1D,OAAOM,IAAM,KAAO,MAASqS,GAAG,uCAAuC/S,EAAGU,EAAG,EAAG,MAAM,CACxF,EACC,SAASV,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,sBAAwB,OACjF,IAAIC,EAAIiV,GACR,OAAO,eAAelV,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAOC,EAAE,qBACb,EAAK,CACL,GAAGyM,EAAE,EACL,IAAInM,GAAK,CAAA,EAAI+O,GAAK,CAAE,EACpB,OAAO,eAAeA,GAAI,aAAc,CAAE,MAAO,EAAE,CAAE,EACrDA,GAAG,KAAOmE,GACV,IAAIC,GAAKzN,EAAGgN,GAAKyK,GACjB,SAASjK,IAAK,CACZ,IAAIzT,KAAQiT,GAAG,UAAQ,EAAKhT,KAAQyT,GAAG,MAAM,MAAM,EACnD,GAAIzT,EAAE,GAAK,SAAUA,EAAE,OAAS,GAAI,CAAC,CAACD,EACpC,OAAOA,EAAE,WAAWC,CAAC,EAAG,UAAW,CACjC,IAAIS,EAAI,OAAO,aAAc,EAC7BA,IAAMV,EAAE,cAAcC,CAAC,EAAGD,EAAE,YAAYC,CAAC,EAAGS,EAAE,gBAAiB,EAAEA,EAAE,SAASV,CAAC,EAAG,WAAW,UAAW,CACpGC,EAAE,OAAQ,CACX,EAAE,GAAG,EACP,CACL,EACC,SAASD,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,GAAI,EAAGA,EAAE,KAAO,OAChE,IAAIC,EAAIqP,GACR,OAAO,eAAetP,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAOC,EAAE,IACb,EAAK,CACL,GAAGM,EAAE,GACJ,SAASP,EAAG,CACX,OAAO,eAAeA,EAAG,aAAc,CAAE,MAAO,EAAE,CAAE,EAAGA,EAAE,KAAOA,EAAE,sBAAwBA,EAAE,oBAAsBA,EAAE,SAAWA,EAAE,sBAAwBA,EAAE,MAAQA,EAAE,wBAA0BA,EAAE,sCAAwC,OACzO,IAAIC,EAAI4O,GACR,OAAO,eAAe7O,EAAG,wCAAyC,CAAE,WAAY,GAAI,IAAK,UAAW,CAClG,OAAOC,EAAE,qCACb,EAAK,EACH,IAAIG,EAAIuM,GACR,OAAO,eAAe3M,EAAG,0BAA2B,CAAE,WAAY,GAAI,IAAK,UAAW,CACpF,OAAOI,EAAE,uBACb,EAAK,EACH,IAAIM,EAAIoL,GACR,OAAO,eAAe9L,EAAG,QAAS,CAAE,WAAY,GAAI,IAAK,UAAW,CAClE,OAAOU,EAAE,KACb,EAAK,EACH,IAAI,EAAIqE,GACR,OAAO,eAAe/E,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAO,EAAE,qBACb,EAAK,EACH,IAAIwE,EAAI+I,GACR,OAAO,eAAevN,EAAG,WAAY,CAAE,WAAY,GAAI,IAAK,UAAW,CACrE,OAAOwE,EAAE,QACb,EAAK,EACH,IAAIC,EAAI+I,GACR,OAAO,eAAexN,EAAG,sBAAuB,CAAE,WAAY,GAAI,IAAK,UAAW,CAChF,OAAOyE,EAAE,mBACb,EAAK,EACH,IAAIhE,EAAIiM,GACR,OAAO,eAAe1M,EAAG,wBAAyB,CAAE,WAAY,GAAI,IAAK,UAAW,CAClF,OAAOS,EAAE,qBACb,EAAK,EACH,IAAIH,EAAIC,GACR,OAAO,eAAeP,EAAG,OAAQ,CAAE,WAAY,GAAI,IAAK,UAAW,CACjE,OAAOM,EAAE,IACb,EAAK,CACL,GAAG4L,EAAC,EACJ,MAAMtG,CAAE,CAIN,WAAW,KAAM,CACf,MAAO,CACL,GAAG6X,EACH,UAAW,GAAGzX,CAAC,aACf,YAAa,GAAGA,CAAC,sBACjB,QAAS,GAAGA,CAAC,uBACb,SAAU,GAAGA,CAAC,mBACd,kBAAmB,GAAGA,CAAC,YACxB,CACL,CAME,YAAY/F,EAAGG,EAAG,CAChB,KAAK,OAASA,EAAG,KAAK,SAAWH,CACrC,CAME,cAAcA,EAAG,CACf,IAAIG,EACJ,OAAOH,IAAM,IAAMG,EAAI6F,EAAE,KAAK,KAAM,CAACL,EAAE,IAAI,QAASA,EAAE,IAAI,SAAS,CAAC,EAAGxF,EAAE,iBAAiB,QAAUM,GAAM,CACxG,MAAM,EAAIA,EAAE,OACZ,GAAI,EAAG,CACL,MAAM8D,EAAI,EAAE,QAAQ,IAAIoB,EAAE,IAAI,iBAAiB,EAAE,EACjDpB,GAAKA,EAAE,SAAS,CAAC,GAAK,KAAK,eAAeA,CAAC,CACnD,CACK,CAAA,GAAKpE,EAAI6F,EAAE,KAAK,KAAM,CAACL,EAAE,IAAI,UAAWA,EAAE,IAAI,YAAY,CAAC,EAAGxF,CACnE,CAOE,WAAWH,EAAGG,EAAG,CACf,MAAMM,EAAIuF,EAAE,KAAK,KAAM,CAACL,EAAE,IAAI,KAAMA,EAAE,IAAI,IAAI,CAAC,EAAG,EAAIK,EAAE,KAAK,MAAOL,EAAE,IAAI,YAAa,CACrF,UAAW3F,EACX,iBAAkB,CAAC,KAAK,UAAU,SAAQ,CAChD,CAAK,EAAGuE,EAAIyB,EAAE,KAAK,OAAQL,EAAE,IAAI,QAAQ,EAAGnB,EAAIwB,EAAE,KAAK,MAAOL,EAAE,IAAI,iBAAiB,EACjF,OAAOxF,EAAE,UAAY,IAAMqE,EAAE,UAAU,IAAImB,EAAE,IAAI,WAAW,EAAGpB,EAAE,UAAY8J,GAAI7J,EAAE,YAAYD,CAAC,EAAG9D,EAAE,YAAY+D,CAAC,EAAG/D,EAAE,YAAY,CAAC,EAAGA,CAC3I,CAME,eAAeT,EAAG,CAChB,MAAMG,EAAIH,EAAE,cAAc,IAAI2F,EAAE,IAAI,WAAW,EAAE,EACjD,MAAO,CAACxF,GAAK6F,EAAE,QAAQ7F,CAAC,EAAI,GAAKA,EAAE,SACvC,CAME,YAAYH,EAAG,CACb,MAAMG,EAAIH,EAAE,cAAc,IAAI2F,EAAE,IAAI,iBAAiB,EAAE,EACvD,MAAO,CACL,QAASxF,EAAIA,EAAE,UAAU,SAASwF,EAAE,IAAI,WAAW,EAAI,EACxD,CACL,CAIE,oBAAqB,CACnB,MAAO,CAAE,QAAS,EAAI,CAC1B,CAKE,eAAe3F,EAAG,CAChBA,EAAE,UAAU,OAAO2F,EAAE,IAAI,WAAW,EAAG3F,EAAE,UAAU,IAAI2F,EAAE,IAAI,OAAO,EAAG3F,EAAE,iBAAiB,aAAc,IAAM,KAAK,2BAA2BA,CAAC,EAAG,CAAE,KAAM,EAAE,CAAE,CAClK,CAKE,2BAA2BA,EAAG,CAC5BA,EAAE,UAAU,OAAO2F,EAAE,IAAI,OAAO,CACpC,CACA,CACA,SAASwD,GAAEpJ,EAAGC,EAAI,QAAS,CACzB,MAAMG,EAAI,CAAE,EACZ,IAAIM,EACJ,SAAS,EAAE8D,EAAG,CACZ,OAAQvE,EAAC,CACP,IAAK,QACH,OAAOuE,EAAE,mBACX,IAAK,SACH,OAAOA,EAAE,sBACjB,CACA,CACE,IAAK9D,EAAI,EAAEV,CAAC,EAAGU,IAAM,MACnBN,EAAE,KAAKM,CAAC,EAAGA,EAAI,EAAEA,CAAC,EACpB,OAAON,EAAE,SAAW,EAAIA,EAAI,IAC9B,CACA,SAASS,GAAEb,EAAGC,EAAI,GAAI,CACpB,IAAIG,EAAIJ,EACR,OAAOA,EAAE,UAAU,SAASyd,EAAE,IAAI,IAAMrd,EAAIJ,EAAE,cAAc,IAAIyd,EAAE,YAAY,EAAE,GAAIrd,IAAM,KAAO,GAAKH,EAAI,MAAM,KAAKG,EAAE,iBAAiB,aAAaqd,EAAE,IAAI,EAAE,CAAC,EAAI,MAAM,KAAKrd,EAAE,iBAAiB,IAAIqd,EAAE,IAAI,EAAE,CAAC,CAC/M,CACA,SAAS3J,GAAG9T,EAAG,CACb,OAAOA,EAAE,qBAAuB,IAClC,CACA,SAASwT,GAAGxT,EAAG,CACb,OAAOA,EAAE,cAAc,IAAIyd,EAAE,YAAY,EAAE,IAAM,IACnD,CACA,SAAS7W,GAAE5G,EAAG,CACZ,OAAOA,EAAE,cAAc,IAAIyd,EAAE,YAAY,EAAE,CAC7C,CACA,SAAS3Z,GAAE9D,EAAG,CACZ,IAAIC,EAAID,EACRA,EAAE,UAAU,SAASyd,EAAE,IAAI,IAAMxd,EAAI2G,GAAE5G,CAAC,GAAIC,IAAM,MAAQY,GAAEZ,CAAC,EAAE,SAAW,GAAKA,EAAE,OAAQ,CAC3F,CACA,SAAS6G,GAAE9G,EAAG,CACZ,OAAOA,EAAE,cAAc,IAAIyd,EAAE,WAAW,EAAE,CAC5C,CACA,SAASrZ,GAAEpE,EAAGC,EAAI,GAAI,CACpB,MAAMG,EAAI0G,GAAE9G,CAAC,EACbI,GAAK8L,GAAE,MAAM9L,EAAGH,CAAC,CACnB,CACA,MAAM4J,EAAE,CAKN,IAAI,aAAc,CAChB,MAAM5J,EAAI,OAAO,aAAc,EAC/B,GAAI,CAACA,EACH,OAAO,KACT,IAAIG,EAAIH,EAAE,WACV,MAAO,CAACG,IAAM4G,GAAE5G,CAAC,IAAMA,EAAIA,EAAE,YAAa,CAACA,IAAM,CAAC4G,GAAE5G,CAAC,EAAI,KAAOA,EAAE,QAAQ,IAAIqd,EAAE,IAAI,EAAE,CAC1F,CAIE,IAAI,kBAAmB,CACrB,MAAMxd,EAAI,KAAK,YACf,GAAIA,IAAM,KACR,OAAO,KACT,IAAIG,EAAIH,EAAE,WAAYS,EAAI,EAC1B,KAAON,IAAM,MAAQA,IAAM,KAAK,aAC9B4G,GAAE5G,CAAC,GAAKA,EAAE,UAAU,SAASqd,EAAE,IAAI,IAAM/c,GAAK,GAAIN,EAAIA,EAAE,WAC1D,OAAOM,EAAI,CACf,CAUE,YAAY,CAAE,KAAMT,EAAG,OAAQG,EAAG,IAAKM,EAAG,SAAU,EAAG,MAAO8D,CAAC,EAAIC,EAAG,CACpE,KAAK,OAASrE,EAAG,KAAK,KAAOH,EAAG,KAAK,SAAW,EAAG,KAAK,IAAMS,EAAG,KAAK,MAAQ8D,EAAG,KAAK,SAAWC,CACrG,CAKE,QAAS,CACP,OAAO,KAAK,YAAc,KAAK,SAAS,cAAc,EAAE,EAAG,KAAK,KAAK,MAAM,OAAS,KAAK,YAAY,KAAK,KAAK,MAAO,KAAK,WAAW,EAAI,KAAK,YAC7I,CACE,CACE,QAAS,GACT,KAAM,CAAE,EACR,MAAO,CAAA,CACjB,CACO,EACD,KAAK,WACN,EAAE,KAAK,UAAY,KAAK,YAAY,iBACnC,UACCxE,GAAM,CACL,OAAQA,EAAE,IAAG,CACX,IAAK,QACH,KAAK,aAAaA,CAAC,EACnB,MACF,IAAK,YACH,KAAK,UAAUA,CAAC,EAChB,MACF,IAAK,MACHA,EAAE,SAAW,KAAK,SAASA,CAAC,EAAI,KAAK,OAAOA,CAAC,EAC7C,KACZ,CACO,EACD,EACN,EAAO,UAAW,KAAK,KAAK,MAAQ,KAAK,KAAK,KAAK,QAAU,QAAU,KAAK,gBAAgB,KAAK,KAAK,KAAK,KAAK,EAAG,gBAAiB,KAAK,KAAK,MAAQ,KAAK,KAAK,KAAK,cAAgB,QAAU,KAAK,eAAe,KAAK,KAAK,KAAK,WAAW,EAAG,KAAK,WACrP,CAME,KAAKA,EAAG,CACN,MAAMG,EAAIH,GAAK,KAAK,YAAaS,EAAK+D,GAAM5D,GAAE4D,CAAC,EAAE,IAAKnE,GAAM,CAC1D,MAAM6C,EAAIyD,GAAEtG,CAAC,EAAG6B,EAAI,KAAK,SAAS,eAAe7B,CAAC,EAAGoF,EAAI,KAAK,SAAS,YAAYpF,CAAC,EAAGqF,EAAIxC,EAAIzC,EAAEyC,CAAC,EAAI,CAAE,EACxG,MAAO,CACL,QAAShB,EACT,KAAMuD,EACN,MAAOC,CACR,CACF,CAAA,EAAG,EAAIvF,EAAIM,EAAEN,CAAC,EAAI,CAAE,EACrB,IAAIoE,EAAI,CACN,MAAO,KAAK,KAAK,MACjB,KAAM,CAAE,EACR,MAAO,CACR,EACD,OAAO,KAAK,KAAK,QAAU,YAAcA,EAAE,KAAO,CAChD,MAAO,KAAK,KAAK,KAAK,MACtB,YAAa,KAAK,KAAK,KAAK,WAC7B,GAAGA,CACR,CAME,WAAW,aAAc,CACvB,MAAO,CACL,KAAM,CAAC,KAAM,KAAM,IAAI,CACxB,CACL,CASE,MAAMvE,EAAG,CACP,MAAMG,EAAI,KAAK,MAAM,OAAO,iBAAiB,IAAIqd,EAAE,IAAI,EAAE,EAAG/c,EAAIN,EAAEA,EAAE,OAAS,CAAC,EAAG,EAAI0G,GAAEpG,CAAC,EACxF,GAAIA,IAAM,MAAQ,IAAM,OAAS,EAAE,mBAAmB,YAAaT,EAAE,MAAM,CAAC,EAAE,OAAO,EAAG,KAAK,cAAgB,QAC3G,OACF,MAAMuE,EAAI3D,GAAE,KAAK,WAAW,EAC5B,GAAI2D,EAAE,SAAW,EACf,OACF,MAAMC,EAAID,EAAEA,EAAE,OAAS,CAAC,EACxB,IAAI/D,EAAImG,GAAEnC,CAAC,EACX,MAAMnE,EAAIL,EAAE,MAAM,MAAO,EACzBK,IAAM,SAAWA,EAAE,MAAM,SAAW,IAAMG,IAAM,OAASA,EAAI,KAAK,SAAS,cAAc,EAAE,GAAI,KAAK,YAAYH,EAAE,MAAOG,CAAC,GAAIR,EAAE,MAAM,OAAS,GAAK,KAAK,YAAYA,EAAE,MAAO,KAAK,WAAW,EAClM,CAME,QAAQA,EAAG,CACT,MAAMG,EAAIH,EAAE,OAAO,KACnB,KAAK,KAAO,KAAK,aAAaG,CAAC,EAC/B,MAAMM,EAAI,KAAK,YACfA,GAAKA,EAAE,YAAcA,EAAE,WAAW,aAAa,KAAK,OAAQ,EAAEA,CAAC,CACnE,CAME,aAAaT,EAAG,CACd,KAAM,CAAE,QAASG,CAAC,EAAKH,EACvB,IAAIS,EAAI,YAAa,EACrB,OAAQN,EAAC,CACP,IAAK,KACHM,EAAI,UAAW,EAAI,KACnB,MACF,IAAK,KACL,IAAK,KACHA,EAAI,YAAa,EAAI,IAC7B,CACI,MAAM8D,EAAI,CACR,MAAO9D,EACP,KAAM,CAAE,EACR,MAAO,CAAA,CACR,EACDA,IAAM,YAAc,KAAK,KAAK,KAAK,YAAc,UAAW,KAAK,KAAK,KAAK,MAAQ,GACnF,MAAM+D,EAAKhE,GAAM,MAAM,KAAKA,EAAE,iBAAiB,aAAa,CAAC,EAAE,IAAK0C,GAAM,CACxE,MAAMhB,EAAIgB,EAAE,cAAc,YAAY,CAAC,EAAE,EAAGuC,EAAIvD,EAAIsC,EAAEtC,CAAC,EAAI,CAAE,EAC7D,MAAO,CACL,QAASgB,EAAE,WAAa,GACxB,KAAM,CAAE,EACR,MAAOuC,CACR,CACP,CAAK,EACD,OAAOlB,EAAE,MAAQC,EAAExE,CAAC,EAAGuE,CAC3B,CAKE,gBAAgBvE,EAAG,CACjB,KAAK,YAAY,MAAM,YAAY,gBAAiB,QAAQA,EAAI,CAAC,EAAE,EAAG,KAAK,KAAK,KAAK,MAAQA,CACjG,CAKE,eAAeA,EAAG,CAChB,KAAK,YAAY,MAAM,YAAY,sBAAuBA,CAAC,EAAG,KAAK,KAAK,KAAK,YAAcA,CAC/F,CAKE,aAAaA,EAAG,CACd,IAAIQ,EACJ,MAAM,EAAI,KAAK,YACf,GAAIR,EAAE,gBAAe,EAAIA,EAAE,eAAc,EAAIA,EAAE,aAAe,IAAM,KAClE,OACF,MAAMS,IAAMD,EAAI,KAAK,WAAa,KAAO,OAASA,EAAE,eAAe,CAAC,EAAE,KAAI,EAAG,UAAY,EAAGD,EAAI,EAAE,aAAe,KAAK,YAAagE,EAAI,EAAE,yBAA2B,KAAMC,EAAI,KAAK,IAAI,OAAO,qBAAsB,EACpN,GAAIjE,GAAKE,EACP,GAAIoT,GAAG,CAAC,GAAK,CAACN,GAAG,CAAC,EAAG,CACnBhP,EAAI,KAAK,0BAA0BC,EAAG,EAAE,EAAI,KAAK,0BAA2B,EAC5E,MACR,KAAa,CACL,KAAK,UAAU,CAAC,EAChB,MACR,SACa/D,EAAG,CACV,KAAK,YAAY,CAAC,EAClB,MACD,MACC,KAAK,UAAU,CAAC,CACtB,CAKE,UAAUT,EAAG,CACX,IAAIS,EACJ,MAAM,EAAI,KAAK,YACf,GAAI,IAAM,MAAQwL,GAAE,sBAAsB,CAAC,KAAOxL,EAAI,OAAO,aAAc,IAAK,KAAO,OAASA,EAAE,eAAiB,GAAI,CACrH,GAAIT,EAAE,gBAAiB,EAAE,EAAE,aAAe,KAAK,aAAe,EAAE,yBAA2B,KAAM,CAC/F,KAAK,+BAAgC,EACrC,MACR,CACMA,EAAE,eAAgB,EAAE,KAAK,sBAAsB,CAAC,CACtD,CACA,CAKE,SAASA,EAAG,CACVA,EAAE,gBAAe,EAAIA,EAAE,eAAc,EAAI,KAAK,cAAgB,MAAQ,KAAK,YAAY,KAAK,WAAW,CAC3G,CAKE,YAAYA,EAAG,CACb,GAAI,CAACA,EAAE,YAAc,CAAC+G,GAAE/G,EAAE,UAAU,EAClC,OACF,MAAMG,EAAIH,EAAE,WAAW,QAAQ,IAAIwd,EAAE,IAAI,EAAE,EAC3C,GAAI,CAACrd,EACH,OACF,IAAIM,EAAIkG,GAAE3G,CAAC,EACX,GAAIA,EAAE,gBAAkB,KACtB,OACF,MAAM,EAAImJ,GAAEnJ,CAAC,EACb,IAAM,OAASS,IAAM,OAASA,EAAI,KAAK,SAAS,cAAc,EAAE,GAAI,EAAE,QAAS8D,GAAM,CACnF9D,EAAE,YAAY8D,CAAC,CAChB,CAAA,EAAGvE,EAAE,YAAYS,CAAC,GAAIN,EAAE,MAAMH,CAAC,EAAGmE,GAAEnE,EAAG,EAAE,EAAG6D,GAAE1D,CAAC,CACpD,CAKE,UAAUH,EAAG,CACX,MAAMG,EAAIS,GAAEZ,CAAC,EAAGS,EAAI,KAAK,MAAO,EAAI,KAAK,IAAI,OAAO,qBAAsB,EAC1E,GAAIN,EAAE,SAAW,EAAG,CAClB,MAAME,EAAIF,EAAE,CAAC,EACb,KAAK,YAAYE,CAAC,EAAG8D,GAAEnE,EAAG,EAAE,CAClC,CACI,GAAIA,EAAE,yBAA2B,MAAQA,EAAE,aAAe,KAAK,YAAa,CAC1E,KAAK,0BAA0B,CAAC,EAChC,MACN,CACI,MAAMuE,EAAI4E,GAAEnJ,CAAC,EACb,GAAIuE,IAAM,KACR,OACF,MAAMC,EAAI,KAAK,SAAS,cAAc,EAAE,EACxCD,EAAE,QAASlE,GAAM,CACfmE,EAAE,YAAYnE,CAAC,CACrB,CAAK,EACD,MAAMG,EAAI,KAAK,KAAKgE,CAAC,EACrBhE,EAAE,KAAK,MAAQ,KAAK,KAAK,OAAS,UAAY,EAAI,OAAQ,KAAK,IAAI,OAAO,OAAOC,GAAK,KAAO,OAASA,EAAE,KAAMD,EAAG,KAAK,OAAQ,EAAI,CAAC,EAAG,KAAK,0BAA0B,EAAI,CAAC,EAAGgE,EAAE,OAAQ,CAC3L,CAKE,UAAUxE,EAAG,CACX,KAAM,CAACG,EAAGM,CAAC,EAAIwL,GAAE,sBAAuB,EACxC,GAAI9L,IAAM,KACR,OACF,MAAM,EAAI0G,GAAE7G,CAAC,EACb,IAAIuE,EACJ,IAAM,KAAOA,EAAI,GAAKA,EAAI0H,GAAE,wBAAwB,EAAG9L,EAAGM,EAAG,QAAS,EAAE,EACxE,MAAM+D,EAAImC,GAAE3G,CAAC,EAAGQ,EAAI,KAAK,WAAW+D,CAAC,EACrCvE,GAAK,MAAQA,EAAE,MAAMQ,CAAC,EAAGgE,GAAKhE,EAAE,YAAYgE,CAAC,EAAGL,GAAE3D,CAAC,CACvD,CAOE,sBAAsBR,EAAG,CACvB,MAAMG,EAAIH,EAAE,uBAAwBS,EAAIT,EAAE,WAC1C,GAAIS,IAAM,MAAQ,CAACsG,GAAEtG,CAAC,EACpB,OACF,MAAM,EAAIA,EAAE,QAAQ,IAAI+c,EAAE,IAAI,EAAE,EAChC,GAAI,CAACrd,GAAK,CAAC,GAAKA,GAAK,CAAC4G,GAAE5G,CAAC,EACvB,OACF,IAAIoE,EACJ,GAAIpE,EAAG,CACL,MAAMsF,EAAI7E,GAAET,EAAG,EAAE,EACjBsF,EAAE,SAAW,GAAKA,EAAE,SAAW,EAAIlB,EAAIkB,EAAEA,EAAE,OAAS,CAAC,EAAIlB,EAAIpE,CAC9D,MACCoE,EAAI,EACN,MAAMC,EAAI,KAAK,SAAS,eAAexE,CAAC,EACxC,GAAI,CAACuE,EACH,OACFJ,GAAEI,EAAG,EAAE,EACP,MAAM/D,EAAIqG,GAAEtC,CAAC,EACb,GAAI/D,IAAM,KACR,OACFA,EAAE,mBAAmB,YAAagE,CAAC,EACnC,MAAMnE,EAAIO,GAAEZ,CAAC,EACb,GAAIK,EAAE,SAAW,EAAG,CAClBL,EAAE,OAAM,EAAI6D,GAAEU,CAAC,EACf,MACN,CACI,MAAMrB,EAAI/C,GAAK,EAAG+B,EAAIyE,GAAEzD,CAAC,GAAK,KAAK,SAAS,cAAc,EAAE,EAC5D/C,EAAIE,EAAE,QAASoF,GAAM,CACnBvD,EAAE,YAAYuD,CAAC,CAChB,CAAA,EAAIpF,EAAE,QAASoF,GAAM,CACpBvD,EAAE,QAAQuD,CAAC,CACjB,CAAK,EAAGkB,GAAEzD,CAAC,IAAM,MAAQqB,EAAE,YAAYrC,CAAC,EAAGlC,EAAE,OAAQ,CACrD,CAKE,OAAOA,EAAG,CACR,IAAIuE,EACJvE,EAAE,gBAAe,EAAIA,EAAE,eAAgB,EACvC,MAAM,EAAI,KAAK,YACf,GAAI,CAAC,EACH,OACF,KAAMuE,EAAI,KAAK,SAAW,KAAO,OAASA,EAAE,YAAc,OAAQ,CAChE,MAAMC,EAAI,KAAK,iBACf,GAAIA,IAAM,MAAQA,IAAM,KAAK,OAAO,SAClC,MACR,CACI,MAAM/D,EAAI,EAAE,gBACZ,GAAIA,IAAM,MAAQ,CAACsG,GAAEtG,CAAC,EACpB,OACF,MAAMF,EAAIoG,GAAElG,CAAC,EACb,GAAIF,EACFA,EAAE,YAAY,CAAC,EAAGK,GAAE,CAAC,EAAE,QAAS,GAAM,CACpCL,EAAE,YAAY,CAAC,CACvB,CAAO,MACE,CACH,MAAMiE,EAAI,KAAK,SAAS,cAAc,EAAE,EACxCA,EAAE,YAAY,CAAC,EAAG5D,GAAE,CAAC,EAAE,QAASP,GAAM,CACpCmE,EAAE,YAAYnE,CAAC,CACvB,CAAO,EAAGI,EAAE,YAAY+D,CAAC,CACzB,CACIX,GAAE,CAAC,EAAGM,GAAE,EAAG,EAAE,CACjB,CAME,0BAA0BnE,EAAGG,EAAG,CAC9B,IAAIM,EACJ,MAAM,EAAI,KAAK,YAAa8D,EAAI,IAAM,KAAO,KAAK,SAAS,eAAe,CAAC,EAAI,GAC/EpE,IAAM,IAAM,KAAK,IAAI,OAAO,OAAQ,EAAEH,IAAM,OAASS,EAAI,KAAK,IAAI,OAAO,OAAO,OAAQ,CAAE,KAAM8D,CAAG,EAAE,OAAQvE,CAAC,EAAIS,EAAI,KAAK,IAAI,OAAO,OAAQ,EAAE,GAAK,MAAQ,EAAE,OAAQ,EAAE,KAAK,IAAI,MAAM,WAAWA,EAAG,OAAO,CACjN,CAME,gCAAiC,CAC/B,MAAMT,EAAI,KAAK,YACf,GAAIA,IAAM,KACR,OACF,MAAMG,EAAIS,GAAEZ,CAAC,EACb,GAAIG,EAAE,SAAW,EAAG,CAClB,MAAMqE,EAAIrE,EAAE,CAAC,EACb,KAAK,YAAYqE,CAAC,EAAGL,GAAEnE,CAAC,CAC9B,CACI,MAAMS,EAAI0I,GAAEnJ,CAAC,EAAG,EAAI,KAAK,IAAI,OAAO,qBAAoB,EAAIuE,EAAI9D,IAAM,KACtE,KAAK,0BAA0B,EAAG8D,CAAC,CACvC,CAOE,WAAWvE,EAAGG,EAAG,CACf,MAAMM,EAAIN,GAAK,KAAK,SAAS,mBAAoB,EACjD,OAAQ,GAAE,CACR,KAAK,KAAK,oBAAoByF,GAC5B,OAAO,KAAK,SAAS,WAAW5F,EAAGS,CAAC,EACtC,KAAK,KAAK,oBAAoB6D,GAC5B,OAAO,KAAK,SAAS,WAAWtE,EAAGS,CAAC,EACtC,QACE,OAAO,KAAK,SAAS,WAAWT,EAAGS,CAAC,CAC5C,CACA,CAME,YAAYT,EAAGG,EAAG,CAChBH,EAAE,QAASS,GAAM,CACf,IAAI8D,EACJ,MAAMhE,EAAI,KAAK,WAAWE,EAAE,QAASA,EAAE,IAAI,EAC3C,GAAIN,EAAE,YAAYI,CAAC,EAAGE,EAAE,MAAM,OAAQ,CACpC,MAAM+D,GAAKD,EAAI,KAAK,WAAa,KAAO,OAASA,EAAE,cAAc,EAAE,EACnE,KAAK,YAAY9D,EAAE,MAAO+D,CAAC,EAAGjE,EAAE,YAAYiE,CAAC,CACrD,CACA,CAAK,CACL,CACA,CACA,MAAMkZ,GAAI,CACR,QAAS,GAAG3X,CAAC,oBACb,MAAO,GAAGA,CAAC,2BACX,+BAAgC,GAAGA,CAAC,4BACtC,EACA,SAASkN,GAAGlT,EAAG,CAAE,MAAOC,EAAG,YAAaG,EAAG,WAAYM,EAAG,SAAU,CAAC,EAAI,CACvE,MAAM8D,EAAIyB,EAAE,KAAK,MAAO0X,GAAE,OAAO,EAAGlZ,EAAIwB,EAAE,KAAK,QAAS0X,GAAE,MAAO,CAC/D,YAAavd,EAMb,SAAU,GAIV,MAAOH,CACX,CAAG,EACD,UAAWQ,KAAKC,EACd+D,EAAE,aAAahE,EAAGC,EAAED,CAAC,CAAC,EACxB,OAAO+D,EAAE,YAAYC,CAAC,EAAGA,EAAE,iBAAiB,QAAS,IAAM,CACzD,IAAM,SAAWA,EAAE,MAAQ,EAAEA,EAAE,KAAK,GACpC,MAAMhE,EAAIgE,EAAE,cAAe,EAC3B,CAAChE,GAAK,CAAC+D,EAAE,UAAU,SAASmZ,GAAE,8BAA8B,GAAKnZ,EAAE,UAAU,IAAImZ,GAAE,8BAA8B,EAAGld,GAAK+D,EAAE,UAAU,SAASmZ,GAAE,8BAA8B,GAAKnZ,EAAE,UAAU,OAAOmZ,GAAE,8BAA8B,EAAGld,GAAKT,EAAEyE,EAAE,KAAK,CACxP,CAAA,EAAGD,CACN,CACA,MAAMmH,GAAoB,IAAI,IAAI,CAIhC,CAAC,UAAW,SAAS,EAIrB,CAAC,cAAe,aAAa,EAI7B,CAAC,cAAe,aAAa,EAI7B,CAAC,cAAe,aAAa,EAI7B,CAAC,cAAe,aAAa,CAC/B,CAAC,EAAG1G,GAAqB,IAAI,IAAI,CAI/B,CAAC,UAAWwK,EAAE,EAId,CAAC,cAAeI,EAAE,EAIlB,CAAC,cAAexJ,EAAE,EAIlB,CAAC,cAAegD,EAAE,EAIlB,CAAC,cAAe2G,EAAE,CACpB,CAAC,EACD,SAASwE,GAAGxU,EAAG,CACb,OAAOA,EAAE,QAAQ,OAAQ,EAAE,CAC7B,CACA,SAAS6T,GAAG7T,EAAG,CACb,OAAO,OAAOA,EAAE,MAAM,CAAC,GAAK,QAC9B,CACA,SAASmU,GAAGnU,EAAG,CACb,MAAO,EAAE,SAAUA,EACrB,CACA,SAAS8U,GAAG9U,EAAG,CACb,OAAO,OAAOA,EAAE,MAAM,CAAC,GAAK,UAAY,SAAUA,EAAE,MAAM,CAAC,GAAK,YAAaA,EAAE,MAAM,CAAC,GAAK,OAAOA,EAAE,MAAM,CAAC,EAAE,MAAQ,UAAY,OAAOA,EAAE,MAAM,CAAC,EAAE,SAAW,SAChK,CACA,SAAS6U,GAAG7U,EAAG,CACb,MAAMC,EAAI,CAAE,EACZ,OAAO4T,GAAG7T,CAAC,GAAKA,EAAE,MAAM,QAASI,GAAM,CACrCH,EAAE,KAAK,CACL,QAASG,EACT,KAAM,CAAE,EACR,MAAO,CAAA,CACb,CAAK,CACL,CAAG,EAAG,CACF,MAAOJ,EAAE,MACT,KAAM,CAAE,EACR,MAAOC,CACX,GAAO6U,GAAG9U,CAAC,GAAKA,EAAE,MAAM,QAASI,GAAM,CACnCH,EAAE,KAAK,CACL,QAASG,EAAE,KACX,KAAM,CACJ,QAASA,EAAE,OACZ,EACD,MAAO,CAAA,CACb,CAAK,CACL,CAAG,EAAG,CACF,MAAO,YACP,KAAM,CAAE,EACR,MAAOH,CACX,GAAOkU,GAAGnU,CAAC,EAAI,CACX,MAAOA,EAAE,MACT,KAAM,CAAE,EACR,MAAOA,EAAE,KACb,EAAMA,CACN,CACA,MAAMgM,EAAE,CAIN,WAAW,qBAAsB,CAC/B,MAAO,EACX,CAIE,WAAW,kBAAmB,CAC5B,MAAO,EACX,CAME,WAAW,SAAU,CACnB,MAAO,CACL,CACE,KAAMzC,GACN,MAAO,iBACP,KAAM,CACJ,MAAO,WACjB,CACO,EACD,CACE,KAAM0R,GACN,MAAO,eACP,KAAM,CACJ,MAAO,SACjB,CACO,EACD,CACE,KAAM3B,GACN,MAAO,YACP,KAAM,CACJ,MAAO,WACjB,CACA,CACK,CACL,CAKE,WAAW,aAAc,CACvB,MAAO,CACL,KAAM,CAAC,KAAM,KAAM,IAAI,CACxB,CACL,CAIE,WAAW,kBAAmB,CAC5B,MAAO,CACL,OAASrZ,GAAM+L,GAAE,cAAc/L,CAAC,EAChC,OAAQ,CAACA,EAAGG,KAAO,CACjB,KAAM,CAAE,EACR,MAAO,CACL,CACE,QAASH,EACT,KAAM,CAAE,EACR,MAAO,CAAA,CACnB,CACS,EACD,OAAQG,GAAK,KAAO,OAASA,EAAE,gBAAkB,OAASA,EAAE,aAAe,WAC5E,EACF,CACL,CAIE,IAAI,WAAY,CACd,OAAO,KAAK,KAAK,OAAS,KAAK,gBACnC,CAKE,IAAI,UAAUH,EAAG,CACf,IAAIS,EACJ,KAAK,KAAK,MAAQT,EAAG,KAAK,uBAAwB,EAClD,MAAM,EAAI,KAAK,KAAK,OAAQ,GAC3BS,EAAI,KAAK,cAAgB,MAAQA,EAAE,YAAY,CAAC,EAAG,KAAK,YAAc,CAC3E,CASE,YAAY,CAAE,KAAMT,EAAG,OAAQG,EAAG,IAAKM,EAAG,SAAU,EAAG,MAAO8D,CAAC,EAAI,CACjE,IAAI,EACJ,KAAK,IAAM9D,EAAG,KAAK,SAAW,EAAG,KAAK,OAASN,EAAG,KAAK,MAAQoE,EAAG,KAAK,mBAAqB,EAAI,KAAK,SAAW,KAAO,OAAS,EAAE,eAAiB,YACnJ,MAAMC,EAAI,CACR,MAAO,KAAK,iBACZ,KAAM,CAAE,EACR,MAAO,CAAA,CACR,EACD,KAAK,KAAO,OAAO,KAAKxE,CAAC,EAAE,OAAS4U,GAAG5U,CAAC,EAAIwE,EAAG,KAAK,YAAc,WAAa,KAAK,KAAK,KAAK,cAAgB,SAAW,KAAK,KAAK,KAAK,YAAc,WAAY,KAAK,uBAAwB,CACnM,CAME,OAAO,cAAcxE,EAAG,CACtB,OAAOA,EAAE,MAAM,IAAKG,GAAM,GAAGA,EAAE,OAAO,IAAI4L,GAAE,cAAc5L,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAC3E,CAKE,QAAS,CACP,OAAO,KAAK,YAAc,KAAK,KAAK,OAAM,EAAI,KAAK,WACvD,CAKE,MAAO,CACL,OAAO,KAAK,KAAO,KAAK,KAAK,KAAI,EAAI,KAAK,IAC9C,CAKE,MAAMH,EAAG,CACP,KAAK,KAAK,MAAMA,CAAC,CACrB,CAKE,gBAAiB,CACf,MAAMA,EAAI,CACR,CACE,MAAO,KAAK,IAAI,KAAK,EAAE,WAAW,EAClC,KAAMsJ,GACN,gBAAiB,GACjB,SAAU,KAAK,WAAa,YAC5B,WAAY,IAAM,CAChB,KAAK,UAAY,WAC3B,CACO,EACD,CACE,MAAO,KAAK,IAAI,KAAK,EAAE,SAAS,EAChC,KAAM0R,GACN,gBAAiB,GACjB,SAAU,KAAK,WAAa,UAC5B,WAAY,IAAM,CAChB,KAAK,UAAY,SAC3B,CACO,EACD,CACE,MAAO,KAAK,IAAI,KAAK,EAAE,WAAW,EAClC,KAAM3B,GACN,gBAAiB,GACjB,SAAU,KAAK,WAAa,YAC5B,WAAY,IAAM,CAChB,KAAK,UAAY,WAC3B,CACA,CACK,EACD,GAAI,KAAK,YAAc,UAAW,CAChC,MAAMlZ,EAAI8S,GACP1O,GAAM,KAAK,gBAAgB,OAAOA,CAAC,CAAC,EACrC,CACE,MAAO,OAAO,KAAK,KAAK,KAAK,OAAS,CAAC,EACvC,YAAa,GACb,WAAY,CACV,SAAU,MACX,EACD,SAAWA,GAAMgQ,GAAGhQ,CAAC,CAC/B,CACO,EAAE9D,EAAI,CACL,CACE,MAAO,KAAK,IAAI,KAAK,EAAE,YAAY,EACnC,KAAMkP,GACN,SAAU,CACR,MAAO,CACL,CACE,QAASxP,EAET,KAAM,MACtB,CACA,CACA,CACA,CACO,EAAE,EAAI,CACL,MAAO,KAAK,IAAI,KAAK,EAAE,cAAc,EACrC,KAAM6E,GAAG,IAAI,KAAK,KAAK,KAAK,WAAW,EACvC,SAAU,CACR,MAAO,CAAA,CACjB,CACO,EACD0G,GAAE,QAAQ,CAACnH,EAAGC,IAAM,CAClB,EAAE,SAAS,MAAM,KAAK,CACpB,MAAO,KAAK,IAAI,KAAK,EAAEA,CAAC,EACxB,KAAMQ,GAAG,IAAI0G,GAAE,IAAIlH,CAAC,CAAC,EACrB,SAAU,KAAK,KAAK,KAAK,cAAgBkH,GAAE,IAAIlH,CAAC,EAChD,gBAAiB,GACjB,WAAY,IAAM,CAChB,KAAK,eAAekH,GAAE,IAAIlH,CAAC,CAAC,CACxC,CACA,CAAS,CACT,CAAO,EAAGxE,EAAE,KAAK,CAAE,KAAM,aAAe,GAAGS,EAAG,CAAC,CAC/C,CACI,OAAOT,CACX,CAKE,QAAQA,EAAG,CACT,KAAM,CAAE,QAASG,CAAG,EAAGH,EAAE,OAAO,KAChC,OAAQG,EAAC,CACP,IAAK,KACH,KAAK,UAAY,UACjB,MACF,IAAK,KACL,IAAK,KACH,KAAK,UAAY,WACzB,CACI,KAAK,KAAK,QAAQH,CAAC,CACvB,CAKE,aAAaA,EAAG,CACd,OAAO,KAAK,KAAK,aAAaA,CAAC,CACnC,CAKE,eAAeA,EAAG,CAChB,IAAIG,GACHA,EAAI,KAAK,OAAS,MAAQA,EAAE,eAAeH,CAAC,EAAG,KAAK,KAAK,KAAK,YAAcA,CACjF,CAKE,gBAAgBA,EAAG,CACjB,IAAIG,GACHA,EAAI,KAAK,OAAS,MAAQA,EAAE,gBAAgBH,CAAC,EAAG,KAAK,KAAK,KAAK,MAAQA,CAC5E,CAIE,wBAAyB,CACvB,OAAQ,KAAK,UAAS,CACpB,IAAK,UACH,KAAK,KAAO,IAAI4J,GACd,CACE,KAAM,KAAK,KACX,SAAU,KAAK,SACf,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,MAAO,KAAK,KACb,EACD,IAAIhE,GAAE,KAAK,SAAU,KAAK,MAAM,CACjC,EACD,MACF,IAAK,YACH,KAAK,KAAO,IAAIgE,GACd,CACE,KAAM,KAAK,KACX,SAAU,KAAK,SACf,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,MAAO,KAAK,KACb,EACD,IAAItF,GAAE,KAAK,SAAU,KAAK,MAAM,CACjC,EACD,MACF,IAAK,YACH,KAAK,KAAO,IAAIsF,GACd,CACE,KAAM,KAAK,KACX,SAAU,KAAK,SACf,IAAK,KAAK,IACV,OAAQ,KAAK,OACb,MAAO,KAAK,KACb,EACD,IAAIjE,EAAE,KAAK,SAAU,KAAK,MAAM,CACjC,EACD,KACR,CACA,CACA","x_google_ignoreList":[0,1,2]}