flipbookengine 0.2.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +272 -187
- package/THIRD-PARTY-NOTICES.md +56 -0
- package/dist/adapters/PageFlipAdapter.d.ts +5 -1
- package/dist/components/App.d.ts +3 -0
- package/dist/components/NavigationArrows.d.ts +9 -0
- package/dist/components/Thumbnails.d.ts +3 -0
- package/dist/components/Toolbar.d.ts +3 -0
- package/dist/components/Viewer.d.ts +3 -0
- package/dist/core/InteractionManager.d.ts +4 -1
- package/dist/core/LayoutManager.d.ts +19 -1
- package/dist/core/PdfRenderer.d.ts +33 -0
- package/dist/engine-G9HiVpA-.js +3253 -0
- package/dist/engine-G9HiVpA-.js.map +1 -0
- package/dist/engine.d.ts +37 -3
- package/dist/flipbook-engine.css +1 -1
- package/dist/flipbook-engine.iife.js +94 -48
- package/dist/flipbook-engine.iife.js.map +1 -1
- package/dist/flipbook-engine.js +4 -20635
- package/dist/flipbook-engine.js.map +1 -1
- package/dist/flipbook-engine.react.js +44 -29
- package/dist/flipbook-engine.react.js.map +1 -1
- package/dist/flipbook-engine.vue.js +25 -22
- package/dist/flipbook-engine.vue.js.map +1 -1
- package/dist/react/index.d.ts +4 -1
- package/dist/state/store.d.ts +41 -21
- package/dist/theme/theme.d.ts +0 -1
- package/dist/vue/index.d.ts +5 -2
- package/package.json +113 -105
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flipbook-engine.js","sources":["../node_modules/pdfjs-dist/build/pdf.mjs","../node_modules/@serenity-is/domwise/dist/index.js","../node_modules/@preact/signals-core/dist/signals-core.module.js","../src/state/store.ts","../src/i18n/locales/en.ts","../src/i18n/locales/tr.ts","../src/i18n/service.ts","../src/components/Toolbar.tsx","../src/components/Thumbnails.tsx","../src/components/Viewer.tsx","../src/components/App.tsx","../node_modules/page-flip/dist/js/page-flip.browser.js","../src/adapters/PageFlipAdapter.ts","../src/core/LayoutManager.ts","../src/core/InteractionManager.ts","../src/model/pages.ts","../src/theme/theme.ts","../src/engine.ts"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.4.530\n * pdfjsBuild = 50cc4adac\n */\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (input instanceof Date) {\n return input;\n }\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n return true;\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n }\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\n }\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, commentManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n commentManager?.setSidebarUiManager(this);\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n this.#pdfDocument = null;\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get _highlightColors() {\n return shadow(this, \"_highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\", comment = false) {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n const editor = layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n if (this.#isPointerDown) {\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n case \"commentSelection\":\n this.commentSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n *getEditors(pageIndex) {\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get uid() {\n return this.annotationElementId || this.id;\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n this.setDims();\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\n this._editToolbar?.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims();\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._uiManager.toggleComment(this, true, false);\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n this.hideCommentPopup();\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstElementChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #editorsMap = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n set bbox(bbox) {\n shadow(this, \"bbox\", bbox);\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj-bin-transform.js\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass PatternInfo {\n static #KIND = 0;\n static #HAS_BBOX = 1;\n static #HAS_BACKGROUND = 2;\n static #SHADING_TYPE = 3;\n static #N_COORD = 4;\n static #N_COLOR = 8;\n static #N_STOP = 12;\n static #N_FIGURES = 16;\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n static write(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n figures = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n figures = ir[4] || [];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 3);\n const nStop = colorStops.length;\n const nFigures = figures.length;\n let figuresSize = 0;\n for (const figure of figures) {\n figuresSize += 1;\n figuresSize = Math.ceil(figuresSize / 4) * 4;\n figuresSize += 4 + figure.coords.length * 4;\n figuresSize += 4 + figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n figuresSize += 4;\n }\n }\n const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize;\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PatternInfo.#KIND, kind);\n dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType);\n dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 3;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n offset += 3;\n }\n for (let i = 0; i < figures.length; i++) {\n const figure = figures[i];\n dataView.setUint8(offset, figure.type);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n dataView.setUint32(offset, figure.coords.length, true);\n offset += 4;\n const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length);\n figureCoordsView.set(figure.coords);\n offset += figure.coords.length * 4;\n dataView.setUint32(offset, figure.colors.length, true);\n offset += 4;\n const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n colorsView.set(figure.colors);\n offset += figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n dataView.setUint32(offset, figure.verticesPerRow, true);\n offset += 4;\n }\n }\n return buffer;\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PatternInfo.#KIND];\n const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n offset += nColor * 3;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n const figures = [];\n for (let i = 0; i < nFigures; ++i) {\n const type = dataView.getUint8(offset);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n const coordsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n offset += coordsLength * 4;\n const colorsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n offset += colorsLength * 4;\n const figure = {\n type,\n coords: figureCoords,\n colors: figureColors\n };\n if (type === MeshFigureType.LATTICE) {\n figure.verticesPerRow = dataView.getUint32(offset, true);\n offset += 4;\n }\n figures.push(figure);\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n let minX = coords[0],\n maxX = coords[0];\n let minY = coords[1],\n maxY = coords[1];\n for (let i = 0; i < coords.length; i += 2) {\n const x = coords[i],\n y = coords[i + 1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n bounds = [minX, minY, maxX, maxY];\n }\n return [\"Mesh\", shadingType, coords, colors, figures, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n static write(path) {\n let data;\n let buffer;\n if (util_FeatureTest.isFloat16ArraySupported) {\n buffer = new ArrayBuffer(path.length * 2);\n data = new Float16Array(buffer);\n } else {\n buffer = new ArrayBuffer(path.length * 4);\n data = new Float32Array(buffer);\n }\n data.set(path);\n return buffer;\n }\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (util_FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\n};\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case MeshFigureType.LATTICE:\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case MeshFigureType.TRIANGLES:\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors, dependencyTracker) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper, operationsFilter) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, i);\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(opIdx, img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(opIdx, character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if ((font.disableFontFace || isAddToPathSet || patternFill || patternStroke) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n if (needsStroke) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(opIdx, accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n }\n if (!group.smask || this.dependencyTracker) {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(opIdx, imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n this.dependencyTracker?.resetBBox(opIdx);\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${fontHeight.toFixed(2)}px`);\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.530\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n extractPages(pageInfos) {\n return this._transport.extractPages(pageInfos);\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n canvas = canvasContext.canvas,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false,\n recordOperations = false,\n operationsFilter = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n enableHWA: this._transport.enableHWA,\n operationsFilter\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, enableHWA) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.enableHWA = enableHWA;\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n extractPages(pageInfos) {\n return this.messageHandler.sendWithPromise(\"ExtractPages\", {\n pageInfos\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n hasStructTree: results[2]\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n enableHWA = false,\n operationsFilter = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper, this._operationsFilter);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.4.530\";\nconst build = \"50cc4adac\";\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n color\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = color || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.parent;\n point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.contentElement = link;\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination, overlaidText = \"\") {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (data.overlaidText) {\n link.title = data.overlaidText;\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n }\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements,\n parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #commentManager = null;\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n commentManager = null\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"popupDate\";\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (this.#commentManager) {\n return;\n }\n this.#addEventListeners();\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n if (this.#commentManager) {\n return false;\n }\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = this.contentElement = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation) {\n this.#elements.push(element);\n if (data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n id\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n for (const element of this.#elements) {\n this.#accessibilityManager.addPointerInTextLayer(element.contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n this.canAddComment = false;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.color]];\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.firstPoint = [NaN, NaN];\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#firstPoint = [firstPointX, firstPointY];\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#firstPoint, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #firstPoint = null;\n #lastPoint = null;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n get commentButtonPosition() {\n return this.#firstPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\n };\n const savedColor = this.color;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.getNonHCMColorName(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n this.setDims();\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n this.setDims();\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _colorPicker = null;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n if (type === this.colorType) {\n this.onUpdatedColor();\n }\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n this.setDims();\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (CurrentPointers.isInitializedAndDifferentPointerType(pointerType)) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._currentParent.endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (!CurrentPointers.isSamePointerId(pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n CurrentPointers.setTimeStamp(event.timeStamp);\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getPDFRect()\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n this.setDims();\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (ColorScheme.isDarkMode) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstElementChild;\n const pathElement = defs.firstElementChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","// src/bind-this.ts\nvar hasOwnProperty = Object.hasOwnProperty;\nvar bindThisHandler = {\n get: (target, property) => {\n if (hasOwnProperty.call(target, property)) {\n return target[property];\n }\n const m2 = target[property];\n if (typeof m2 === \"function\") {\n return target[property] = m2.bind(target);\n }\n return m2;\n }\n};\nvar bindThisProxyMap = /* @__PURE__ */ new WeakMap();\nfunction bindThis(obj) {\n let proxy = bindThisProxyMap.get(obj);\n if (!proxy) {\n proxy = new Proxy(obj, bindThisHandler);\n bindThisProxyMap.set(obj, proxy);\n }\n return proxy;\n}\n\n// src/prop-hook.ts\nvar initPropHookSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.initPropHook\");\n\n// src/util.ts\nfunction isElement(val) {\n return !!(val && typeof val.nodeType === \"number\");\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" && val !== null;\n}\nfunction isComponentClass(val) {\n return !!(val && val.isComponent);\n}\nfunction isArrayLike(val) {\n return isObject(val) && typeof val.length === \"number\" && typeof val.nodeType !== \"number\";\n}\nfunction isPropHook(value) {\n return typeof value === \"function\" && typeof value[initPropHookSymbol] === \"function\";\n}\nfunction isVisibleChild(val) {\n return val != null && typeof val !== \"boolean\";\n}\n\n// src/class-name.ts\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return Object.keys(value).filter((k) => value[k]).join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\n\n// src/ref.ts\nfunction createRef() {\n return Object.seal({ current: null });\n}\nfunction isRefObject(maybeRef) {\n return maybeRef != null && typeof maybeRef === \"object\" && \"current\" in maybeRef;\n}\nfunction setRef(ref, current) {\n if (isRefObject(ref)) {\n ref.current = current;\n } else if (typeof ref === \"function\") {\n ref(current);\n }\n}\n\n// src/component.ts\nvar Component = class {\n static {\n this.isComponent = true;\n }\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n};\nfunction initComponentClass(Class, attr, children) {\n attr = { ...attr, children };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n setRef(attr.ref, instance);\n }\n return node;\n}\n\n// src/mathml-consts.ts\nvar MathMLNamespace = \"http://www.w3.org/1998/Math/MathML\";\nvar mathMLOnlyTags = /* @__PURE__ */ new Set([\"math\", \"annotation\", \"annotation-xml\", \"maction\", \"merror\", \"mfrac\", \"mi\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msubsup\", \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"semantics\", \"menclose\", \"mfenced\"]);\n\n// src/svg-consts.ts\nvar svgOnlyTags = /* @__PURE__ */ new Set([\n // \"a\",\n \"animate\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n // \"script\",\n \"set\",\n \"stop\",\n // \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n // \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\"\n]);\nvar nonPresentationSVGAttributes = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nvar SVGNamespace = \"http://www.w3.org/2000/svg\";\n\n// src/in-namespace-uri.ts\nvar jsxNamespaceURISymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxNamespaceURI\");\nfunction currentNamespaceURI(value) {\n const current = globalThis[jsxNamespaceURISymbol];\n if (!arguments.length) {\n return current;\n }\n globalThis[jsxNamespaceURISymbol] = value;\n return current;\n}\nfunction inNamespaceURI(namespaceURI, children) {\n const prev = currentNamespaceURI(namespaceURI);\n let result;\n try {\n result = children();\n } finally {\n currentNamespaceURI(prev);\n }\n return result;\n}\nfunction inSVGNamespace(fn) {\n return inNamespaceURI(SVGNamespace, fn);\n}\nfunction inMathMLNamespace(fn) {\n return inNamespaceURI(MathMLNamespace, fn);\n}\nfunction inHTMLNamespace(fn) {\n return inNamespaceURI(null, fn);\n}\n\n// src/shadow.ts\nvar jsxTypeKeySymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxTypeKey\");\nvar shadowRootKey = \"ShadowRoot\";\nfunction ShadowRootNode({\n children,\n ref,\n ...attr\n}) {\n return {\n [jsxTypeKeySymbol]: shadowRootKey,\n ref,\n attr,\n children\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxTypeKeySymbol] === shadowRootKey;\n}\n\n// src/disposing-listener.ts\nvar disposingListenersSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.disposingListeners\");\nvar lifecycleRootSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.lifecycleRoot\");\nfunction getDisposingListeners() {\n return globalThis[disposingListenersSymbol] ||= /* @__PURE__ */ new WeakMap();\n}\nfunction disposingEventListener(ev) {\n if (ev && ev.target && (!ev.currentTarget || ev.currentTarget === ev.target))\n invokeDisposingListeners(ev?.target);\n}\nfunction dispatchDisposingEvent(target, opt) {\n if (!target || typeof CustomEvent !== \"function\")\n return;\n const event = new CustomEvent(\"disposing\", {\n bubbles: opt?.bubbles ?? false,\n cancelable: opt?.cancelable ?? false\n });\n target.dispatchEvent(event);\n}\nfunction invokeDisposingListeners(node, opt) {\n if (!node)\n return;\n const disposingListeners = getDisposingListeners();\n function invokeFor(el) {\n const listeners = disposingListeners.get(el);\n if (!listeners)\n return;\n disposingListeners.delete(el);\n el.removeEventListener(\"disposing\", disposingEventListener);\n for (const disposer of listeners) {\n try {\n disposer.callback(el);\n } catch {\n }\n }\n }\n if (opt?.descendants && node instanceof Element && node.hasChildNodes()) {\n const descendants = [];\n const iterator = document.createNodeIterator(\n node,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT\n );\n let currentNode;\n while (currentNode = iterator.nextNode()) {\n if (currentNode !== node) {\n descendants.push(currentNode);\n }\n }\n for (let i2 = 0; i2 < descendants.length; i2++) {\n invokeFor(descendants[i2]);\n }\n }\n if (!opt?.excludeSelf) {\n invokeFor(node);\n }\n}\nfunction addDisposingListener(target, handler, regKey) {\n if (!target || !handler)\n return target;\n const disposingListeners = getDisposingListeners();\n let listeners = disposingListeners.get(target);\n if (!listeners) {\n if (typeof target.addEventListener !== \"function\")\n return target;\n disposingListeners.set(target, listeners = [{\n callback: handler,\n regKey\n }]);\n target.addEventListener(\"disposing\", disposingEventListener, { once: true });\n return target;\n }\n const existing = listeners.find((x2) => x2.callback === handler);\n if (existing) {\n if (existing.regKey && regKey && existing.regKey !== regKey) {\n throw new Error(\"A disposing listener with the same callback but different regKey is already registered on the target element.\");\n }\n if (regKey && !existing.regKey) {\n existing.regKey = regKey;\n }\n return target;\n }\n listeners.push({ callback: handler, regKey });\n return target;\n}\nfunction removeDisposingListener(target, handler, regKey) {\n if (!target || !handler && !regKey)\n return target;\n const disposingListeners = getDisposingListeners();\n const listeners = disposingListeners.get(target);\n if (listeners) {\n for (let index = listeners.length - 1; index >= 0; index--) {\n const listener = listeners[index];\n if (regKey && listener.regKey === regKey || handler && handler === listener.callback) {\n listeners.splice(index, 1);\n }\n }\n if (listeners.length === 0) {\n disposingListeners.delete(target);\n if (typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"disposing\", disposingEventListener);\n }\n }\n }\n return target;\n}\nfunction currentLifecycleRoot(...args) {\n if (args.length > 0) {\n const prev = globalThis[lifecycleRootSymbol] || null;\n globalThis[lifecycleRootSymbol] = args[0] || null;\n return prev;\n }\n return globalThis[lifecycleRootSymbol] || null;\n}\n\n// src/signal-util.ts\nfunction isSignalLike(obj) {\n return obj != null && typeof obj === \"object\" && typeof obj.subscribe === \"function\" && typeof obj.peek === \"function\" && \"value\" in obj;\n}\nvar SignalObserveArgsImpl = class {\n #dispose;\n #node;\n constructor(signal2, lifecycleRoot, lifecycleNode) {\n this.signal = signal2;\n this.isInitial = true;\n this.hasChanged = false;\n this.lifecycleRoot = lifecycleRoot;\n this.#node = lifecycleNode;\n }\n get lifecycleNode() {\n return this.#node;\n }\n #delDispose() {\n removeDisposingListener(this.#node, this.effectDisposer);\n removeDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n #addDispose() {\n addDisposingListener(this.#node, this.effectDisposer);\n addDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n get effectDisposer() {\n return this.#dispose;\n }\n set effectDisposer(value) {\n this.#delDispose();\n this.#dispose = value;\n this.#addDispose();\n }\n set lifecycleNode(value) {\n if (value !== this.#node) {\n this.#delDispose();\n this.#node = value;\n this.#addDispose();\n }\n }\n};\nfunction observeSignal(signal2, callback, opt) {\n const lifecycleRoot = opt?.useLifecycleRoot ? currentLifecycleRoot() : void 0;\n const args = new SignalObserveArgsImpl(signal2, lifecycleRoot, opt?.lifecycleNode);\n const disposer = args.signal.subscribe(function(value) {\n args.newValue = value;\n if (args.isInitial && this?.dispose) {\n args.effectDisposer = this.dispose.bind(this);\n }\n args.hasChanged = !args.isInitial && args.prevValue !== args.newValue;\n try {\n callback(args);\n } finally {\n args.prevValue = args.newValue;\n args.isInitial = false;\n }\n });\n if (disposer && !args.effectDisposer) {\n args.effectDisposer = disposer;\n }\n return args.effectDisposer;\n}\nfunction derivedSignal(input, fn) {\n if (!isSignalLike(input)) {\n throw new Error(\"Input must be a SignalLike\");\n }\n const callback = () => fn(input.value);\n if (typeof input.constructor === \"function\" && input.constructor !== {}.constructor) {\n try {\n let derived = new input.constructor(callback);\n let disposer2;\n if (isSignalLike(derived)) {\n if (derived.peek() === callback) {\n disposer2 = input.subscribe(() => {\n derived.value = callback();\n });\n }\n if (disposer2) {\n derived.derivedDisposer = function() {\n disposer2();\n delete derived.derivedDisposer;\n };\n }\n return derived;\n }\n } catch (error) {\n }\n }\n let primitive;\n const disposer = input.subscribe(() => {\n if (!primitive) {\n primitive = new PrimitiveComputed(callback);\n return;\n }\n primitive.update();\n });\n if (disposer) {\n primitive.derivedDisposer = function() {\n disposer();\n delete primitive.derivedDisposer;\n };\n }\n return primitive;\n}\nvar PrimitiveComputed = class {\n #subs = /* @__PURE__ */ new Set();\n #value;\n #fn;\n constructor(fn) {\n this.#fn = fn;\n this.update(true);\n }\n update(force) {\n const newValue = this.#fn();\n if (newValue !== this.#value || force) {\n this.#value = newValue;\n this.#subs.forEach((sub) => sub(newValue));\n }\n }\n subscribe(callback) {\n callback(this.#value);\n this.#subs.add(callback);\n return () => this.#subs.delete(callback);\n }\n peek() {\n return this.#value;\n }\n get value() {\n return this.#value;\n }\n};\n\n// src/jsx-append-children.ts\nfunction appendChild(parent, child) {\n if (parent instanceof window.HTMLTemplateElement) {\n parent.content.appendChild(child);\n } else {\n parent.appendChild(child);\n }\n}\nvar fragmentPlaceholderIdx = 0;\nvar placeholderPrefix = \"__domwisefrag_\";\nfunction isPlaceholder(node) {\n return node instanceof Comment && node.data.startsWith(placeholderPrefix);\n}\nfunction isFragmentWithPlaceholder(node) {\n return node instanceof DocumentFragment && isPlaceholder(node.firstChild);\n}\nfunction replaceNode(oldNode, newNode) {\n if (typeof oldNode.replaceWith === \"function\")\n oldNode.replaceWith(newNode);\n else\n oldNode.parentNode?.replaceChild(newNode, oldNode);\n}\nfunction wrapAsNode(value) {\n if (value instanceof DocumentFragment) {\n ++fragmentPlaceholderIdx;\n value.prepend(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n value.append(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n return value;\n }\n if (value instanceof Node) {\n return value;\n }\n if (!isVisibleChild(value)) {\n return document.createComment(\"\");\n }\n return document.createTextNode(value);\n}\nfunction appendChildrenWithSignal(parent, signal2) {\n let prevNode;\n observeSignal(signal2, (args) => {\n if (args.isInitial) {\n prevNode = wrapAsNode(args.newValue);\n let prevNodeNew2 = isFragmentWithPlaceholder(prevNode) ? prevNode.firstChild : prevNode;\n appendChildren(parent, prevNode);\n args.lifecycleNode = (prevNode = prevNodeNew2) ?? parent;\n return;\n }\n if (!args.hasChanged) {\n return;\n }\n const newNode = wrapAsNode(args.newValue);\n if (isPlaceholder(prevNode)) {\n let n2;\n while (n2 = prevNode.nextSibling) {\n n2.parentNode?.removeChild(n2);\n if (n2 instanceof Comment && n2.data === prevNode.data) {\n break;\n }\n }\n }\n let prevNodeNew = isFragmentWithPlaceholder(newNode) ? newNode.firstChild : newNode;\n replaceNode(prevNode, newNode);\n args.lifecycleNode = (prevNode = prevNodeNew) ?? parent;\n });\n}\nfunction appendChildren(parent, children) {\n if (!isVisibleChild(children)) return;\n if (isArrayLike(children)) {\n for (const child of [...children]) {\n appendChildren(parent, child);\n }\n } else if (isString(children) || isNumber(children)) {\n appendChild(parent, document.createTextNode(children));\n } else if (isElement(children)) {\n appendChild(parent, children);\n } else if (isShadowRoot(children)) {\n const shadowRoot = parent.attachShadow(children.attr);\n appendChildren(shadowRoot, children.children);\n setRef(children.ref, shadowRoot);\n } else if (isSignalLike(children)) {\n appendChildrenWithSignal(parent, children);\n }\n}\n\n// src/jsx-assign-class.ts\nfunction unsignalizePrevClass(prev) {\n if (prev == null)\n return prev;\n if (isArrayLike(prev)) {\n prev = Array.from(prev).map((item) => {\n if (isSignalLike(item))\n return item.peek();\n return item;\n });\n } else if (isObject(prev)) {\n prev = { ...prev };\n Object.entries(prev).forEach(([key, val]) => {\n if (isSignalLike(val))\n prev[key] = val.peek();\n });\n }\n return prev;\n}\nfunction clearPrevClass(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n prev = unsignalizePrevClass(prev);\n const prevClassNames = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevClassNames) {\n if (cls) {\n node.classList.remove(cls);\n }\n }\n}\nfunction assignClass(node, value, prev) {\n if (value == null || value === false) {\n clearPrevClass(node, prev);\n return;\n }\n prev = unsignalizePrevClass(prev);\n if (isArrayLike(value)) {\n value = Array.from(value).map((x2) => {\n let val = x2;\n if (isSignalLike(x2)) {\n observeSignal(x2, (args) => {\n if (args.isInitial) {\n val = args.newValue;\n return;\n }\n applyClassName(node, args.newValue, args.prevValue);\n }, {\n lifecycleNode: node\n });\n }\n return val;\n });\n } else if (isObject(value)) {\n value = { ...value };\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => {\n if (args.isInitial) {\n value[key] = args.newValue;\n return;\n }\n applyClassName(node, Boolean(args.newValue) && key, Boolean(args.prevValue) && key);\n }, {\n lifecycleNode: node\n });\n }\n });\n }\n applyClassName(node, value, prev);\n}\nfunction applyClassName(node, value, prev) {\n const newList = (className(value) ?? \"\").split(\" \");\n if (prev) {\n const prevList = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevList) {\n if (cls && !newList.includes(cls)) {\n node.classList.remove(cls);\n }\n }\n }\n for (let cls of newList) {\n cls && node.classList.add(cls);\n }\n}\n\n// src/jsx-assign-style.ts\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\nvar isUnitlessNumber = /* @__PURE__ */ (() => {\n let rec = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n };\n const prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n Object.keys(rec).forEach((prop) => {\n prefixes.forEach((prefix) => {\n rec[prefixKey(prefix, prop)] = 0;\n });\n });\n return rec;\n})();\nfunction setStylePropValue(node, key, val) {\n if (key.indexOf(\"-\") === 0) {\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n}\nfunction clearPrevStyle(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n if (isString(prev)) {\n node.removeAttribute(\"style\");\n return;\n }\n if (isObject(prev)) {\n Object.keys(prev).forEach((key) => {\n setStylePropValue(node, key, \"\");\n });\n }\n}\nfunction assignStyle(node, value, prev) {\n if (value == null || value === false || value === true) {\n clearPrevStyle(node, prev);\n return;\n }\n if (isString(value)) {\n node.setAttribute(\"style\", value);\n return;\n }\n if (isObject(value)) {\n if (isObject(prev)) {\n value = { ...value };\n Object.keys(prev).forEach((key) => {\n if (!(key in value))\n value[key] = \"\";\n });\n } else\n clearPrevStyle(node, prev);\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => setStylePropValue(node, key, args.newValue), {\n lifecycleNode: node\n });\n } else {\n setStylePropValue(node, key, val);\n }\n });\n return;\n }\n}\n\n// src/jsx-assign-props.ts\nvar XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nvar XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\nfunction normalizeAttribute(s2, separator) {\n return s2.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nvar mappedKeys = /* @__PURE__ */ new Map([\n [\"autoComplete\", \"autocomplete\"],\n [\"autoFocus\", \"autofocus\"],\n [\"className\", \"class\"],\n [\"colSpan\", \"colspan\"],\n [\"contentEditable\", \"contenteditable\"],\n [\"formNoValidate\", \"formnovalidate\"],\n [\"htmlFor\", \"for\"],\n [\"innerText\", \"textContent\"],\n [\"minLength\", \"minlength\"],\n [\"maxLength\", \"maxlength\"],\n [\"readOnly\", \"readonly\"],\n [\"reffererPolicy\", \"referrerpolicy\"],\n [\"rowSpan\", \"rowspan\"],\n [\"spellCheck\", \"spellcheck\"],\n [\"tabIndex\", \"tabindex\"],\n [\"onDoubleClick\", \"onDblClick\"],\n [\"onDoubleClickCapture\", \"onDblClickCapture\"]\n]);\nfunction assignProp(node, key, value, prev) {\n switch (key) {\n case \"dataset\":\n if (prev != null) {\n Object.entries(prev).forEach(([k, v2]) => {\n if (v2 != null) {\n delete node.dataset[k];\n }\n });\n }\n Object.entries(value).forEach(([dataKey, dataValue]) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n } else if (isVisibleChild(prev)) {\n node[key] = \"\";\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n } else if (isObject(prev)) {\n node.innerHTML = \"\";\n }\n return;\n case \"value\":\n if (value == null) {\n if (prev != null) {\n node[key] = null;\n }\n return;\n } else if (node instanceof window.HTMLSelectElement) {\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n break;\n case \"class\":\n assignClass(node, value, prev);\n return;\n case \"spellcheck\":\n node.spellcheck = value === \"\" || value === true || value === \"true\" ? true : value === false || value === \"false\" ? false : value;\n return;\n case \"draggable\":\n if (value === false || value === \"false\")\n value = \"false\";\n else if (value === \"\")\n value = null;\n else if (value === true || value === \"true\")\n value = \"true\";\n break;\n case \"contenteditable\":\n if (value === false)\n value = \"false\";\n else if (value === \"\" || value === true)\n value = \"true\";\n break;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n assignStyle(node, value, prev);\n return;\n case \"on\":\n case \"onCapture\":\n const useCapture = key === \"onCapture\";\n if (prev != null) {\n Object.entries(prev).forEach(([eventName, eventHandler]) => {\n if (value == null || value[eventName] !== eventHandler) {\n node.removeEventListener(eventName, eventHandler, useCapture);\n }\n });\n }\n Object.entries(value).forEach(([eventName, eventHandler]) => {\n if (prev == null || prev[eventName] !== eventHandler) {\n node.addEventListener(eventName, eventHandler, useCapture);\n }\n });\n return;\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n node.setAttributeNS(XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n node.setAttribute(\"xmlns:xlink\", value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n node.setAttributeNS(XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n if (typeof value === \"function\") {\n if (key[0] === \"o\" && key[1] === \"n\") {\n if (prev != null && prev === value)\n return;\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n let eventName;\n if (!useCapture && (node[attribute] === null || prev != null && node[attribute] === prev)) {\n node[attribute] = value;\n addDisposingListener(node, nodeEventPropDisposer.bind(node, attribute));\n } else if (useCapture) {\n eventName = attribute.substring(2, attribute.length - 7);\n if (prev != null) {\n node.removeEventListener(eventName, prev, true);\n }\n node.addEventListener(eventName, value, true);\n } else {\n if (attribute in window) {\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n if (prev != null) {\n node.removeEventListener(eventName, prev);\n }\n node.addEventListener(eventName, value);\n }\n } else {\n console.warn(`A function was provided for JSX ${node.tagName} element ${key} which does not start with \"on\":`, value, node.tagName);\n }\n return;\n }\n if (isObject(prev)) {\n if (prev === value) {\n return;\n }\n delete node[key];\n }\n if (prev === true) {\n if (prev === value) {\n return;\n }\n node.removeAttribute(key);\n }\n if (prev !== false && prev != null) {\n if (prev === value) {\n return;\n }\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.removeAttributeNS(normalizeAttribute(key, \"-\"), value);\n } else {\n node.removeAttribute(key);\n }\n }\n if (isObject(value)) {\n node[key] = value;\n return;\n }\n if (value === true) {\n node.setAttribute(key, \"\");\n return;\n }\n if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.setAttribute(normalizeAttribute(key, \"-\"), value);\n } else {\n node.setAttribute(key, value);\n }\n }\n}\nfunction assignProps(node, props) {\n for (let [key, value] of Object.entries(props)) {\n key = mappedKeys.get(key) ?? key;\n if (isSignalLike(value)) {\n observeSignal(value, (args) => assignProp(node, key, args.newValue, args.prevValue), {\n lifecycleNode: node\n });\n } else if (isPropHook(value)) {\n value[initPropHookSymbol](node, key);\n } else {\n assignProp(node, key, value);\n }\n }\n return node;\n}\nfunction nodeEventPropDisposer(key) {\n this[key] = null;\n}\n\n// src/jsx-factory.ts\nfunction jsx(tag, props) {\n let { children, ...attr } = props || {};\n let ns = attr.namespaceURI;\n if (!ns) {\n if (svgOnlyTags.has(tag))\n ns = SVGNamespace;\n else if (mathMLOnlyTags.has(tag))\n ns = MathMLNamespace;\n else\n ns = currentNamespaceURI();\n }\n let node;\n if (isString(tag)) {\n node = ns ? document.createElementNS(ns, tag) : document.createElement(tag);\n assignProps(node, attr);\n appendChildren(node, children);\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node.querySelectorAll(\"option\").forEach((option) => option.selected = values.includes(option.value));\n } else {\n node.value = attr.value;\n }\n }\n setRef(attr.ref, node);\n } else if (typeof tag === \"function\") {\n if (isObject(tag.defaultProps)) {\n attr = { ...tag.defaultProps, ...attr };\n }\n node = isComponentClass(tag) ? initComponentClass(tag, attr, children) : tag({ ...attr, children });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\n\n// src/compat-api.ts\nfunction createElement(tag, attr, ...children) {\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(tag, { ...attr, children });\n}\nfunction useImperativeHandle(ref, init) {\n setRef(ref, init());\n}\n\n// src/fragment.ts\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChildren(fragment, attr.children);\n return fragment;\n}\n\n// src/hooks.ts\nfunction useClassList(initialValue) {\n let temp = document.createElement(\"div\");\n if (initialValue != null) {\n temp.className = className(initialValue);\n }\n let list = temp.classList;\n function ClassList() {\n return list;\n }\n function dispose() {\n list = null;\n temp = null;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n [initPropHookSymbol](node, prop) {\n if (prop !== \"class\")\n throw new Error(\"useClassList can only be used for 'class' attribute.\");\n temp && removeDisposingListener(temp, dispose);\n list && node?.setAttribute(\"class\", list.value);\n addDisposingListener(temp = node, dispose);\n list = node?.classList ?? list;\n },\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add(...tokens) {\n list.add(...tokens);\n },\n remove(...tokens) {\n list.remove(...tokens);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n }\n })\n );\n return ClassList;\n}\nfunction propBinding(value) {\n if (arguments.length && value !== this.value) {\n this.node && this.prop && assignProp(this.node, this.prop, value, this.value);\n this.value = value;\n }\n return this.value;\n}\nfunction propBindingDispose() {\n delete this.node;\n}\nfunction propBindingInit(el, key) {\n if (this.node && el && this.node !== el || this.prop && key && this.prop !== key) {\n throw new Error(\"usePropBinding can only be used with one element and one attribute. Create a new setter for each element / prop.\");\n }\n if (this.node)\n removeDisposingListener(this.node, this.dispose);\n this.node = el;\n if (this.node) {\n addDisposingListener(this.node, this.dispose);\n assignProp(this.node, this.prop ??= key, this.value);\n }\n}\nfunction usePropBinding(initialValue) {\n const accessorThis = {\n value: initialValue\n };\n accessorThis.dispose = propBindingDispose.bind(accessorThis);\n const hook = propBinding.bind(accessorThis);\n hook[initPropHookSymbol] = propBindingInit.bind(accessorThis);\n return hook;\n}\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n }\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\n\n// ../../node_modules/.pnpm/@preact+signals-core@1.14.1/node_modules/@preact/signals-core/dist/signals-core.module.js\nvar i = /* @__PURE__ */ Symbol.for(\"preact-signals\");\nfunction t() {\n if (!(s > 1)) {\n var i2, t2 = false;\n !(function() {\n var i3 = c;\n c = void 0;\n while (void 0 !== i3) {\n if (i3.S.v === i3.v) i3.S.i = i3.i;\n i3 = i3.o;\n }\n })();\n while (void 0 !== h) {\n var n2 = h;\n h = void 0;\n v++;\n while (void 0 !== n2) {\n var r2 = n2.u;\n n2.u = void 0;\n n2.f &= -3;\n if (!(8 & n2.f) && w(n2)) try {\n n2.c();\n } catch (n3) {\n if (!t2) {\n i2 = n3;\n t2 = true;\n }\n }\n n2 = r2;\n }\n }\n v = 0;\n s--;\n if (t2) throw i2;\n } else s--;\n}\nfunction n(i2) {\n if (s > 0) return i2();\n e = ++u;\n s++;\n try {\n return i2();\n } finally {\n t();\n }\n}\nvar r = void 0;\nfunction o(i2) {\n var t2 = r;\n r = void 0;\n try {\n return i2();\n } finally {\n r = t2;\n }\n}\nvar f;\nvar h = void 0;\nvar s = 0;\nvar v = 0;\nvar u = 0;\nvar e = 0;\nvar c = void 0;\nvar d = 0;\nfunction a(i2) {\n if (void 0 !== r) {\n var t2 = i2.n;\n if (void 0 === t2 || t2.t !== r) {\n t2 = { i: 0, S: i2, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 };\n if (void 0 !== r.s) r.s.n = t2;\n r.s = t2;\n i2.n = t2;\n if (32 & r.f) i2.S(t2);\n return t2;\n } else if (-1 === t2.i) {\n t2.i = 0;\n if (void 0 !== t2.n) {\n t2.n.p = t2.p;\n if (void 0 !== t2.p) t2.p.n = t2.n;\n t2.p = r.s;\n t2.n = void 0;\n r.s.n = t2;\n r.s = t2;\n }\n return t2;\n }\n }\n}\nfunction l(i2, t2) {\n this.v = i2;\n this.i = 0;\n this.n = void 0;\n this.t = void 0;\n this.l = 0;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\nl.prototype.brand = i;\nl.prototype.h = function() {\n return true;\n};\nl.prototype.S = function(i2) {\n var t2 = this, n2 = this.t;\n if (n2 !== i2 && void 0 === i2.e) {\n i2.x = n2;\n this.t = i2;\n if (void 0 !== n2) n2.e = i2;\n else o(function() {\n var i3;\n null == (i3 = t2.W) || i3.call(t2);\n });\n }\n};\nl.prototype.U = function(i2) {\n var t2 = this;\n if (void 0 !== this.t) {\n var n2 = i2.e, r2 = i2.x;\n if (void 0 !== n2) {\n n2.x = r2;\n i2.e = void 0;\n }\n if (void 0 !== r2) {\n r2.e = n2;\n i2.x = void 0;\n }\n if (i2 === this.t) {\n this.t = r2;\n if (void 0 === r2) o(function() {\n var i3;\n null == (i3 = t2.Z) || i3.call(t2);\n });\n }\n }\n};\nl.prototype.subscribe = function(i2) {\n var t2 = this;\n return j(function() {\n var n2 = t2.value, o2 = r;\n r = void 0;\n try {\n i2(n2);\n } finally {\n r = o2;\n }\n }, { name: \"sub\" });\n};\nl.prototype.valueOf = function() {\n return this.value;\n};\nl.prototype.toString = function() {\n return this.value + \"\";\n};\nl.prototype.toJSON = function() {\n return this.value;\n};\nl.prototype.peek = function() {\n var i2 = r;\n r = void 0;\n try {\n return this.value;\n } finally {\n r = i2;\n }\n};\nObject.defineProperty(l.prototype, \"value\", { get: function() {\n var i2 = a(this);\n if (void 0 !== i2) i2.i = this.i;\n return this.v;\n}, set: function(i2) {\n if (i2 !== this.v) {\n if (v > 100) throw new Error(\"Cycle detected\");\n !(function(i3) {\n if (0 !== s && 0 === v) {\n if (i3.l !== e) {\n i3.l = e;\n c = { S: i3, v: i3.v, i: i3.i, o: c };\n }\n }\n })(this);\n this.v = i2;\n this.i++;\n d++;\n s++;\n try {\n for (var n2 = this.t; void 0 !== n2; n2 = n2.x) n2.t.N();\n } finally {\n t();\n }\n }\n} });\nfunction y(i2, t2) {\n return new l(i2, t2);\n}\nfunction w(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return true;\n return false;\n}\nfunction _(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {\n var n2 = t2.S.n;\n if (void 0 !== n2) t2.r = n2;\n t2.S.n = t2;\n t2.i = -1;\n if (void 0 === t2.n) {\n i2.s = t2;\n break;\n }\n }\n}\nfunction b(i2) {\n var t2 = i2.s, n2 = void 0;\n while (void 0 !== t2) {\n var r2 = t2.p;\n if (-1 === t2.i) {\n t2.S.U(t2);\n if (void 0 !== r2) r2.n = t2.n;\n if (void 0 !== t2.n) t2.n.p = r2;\n } else n2 = t2;\n t2.S.n = t2.r;\n if (void 0 !== t2.r) t2.r = void 0;\n t2 = r2;\n }\n i2.s = n2;\n}\nfunction p(i2, t2) {\n l.call(this, void 0);\n this.x = i2;\n this.s = void 0;\n this.g = d - 1;\n this.f = 4;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\np.prototype = new l();\np.prototype.h = function() {\n this.f &= -3;\n if (1 & this.f) return false;\n if (32 == (36 & this.f)) return true;\n this.f &= -5;\n if (this.g === d) return true;\n this.g = d;\n this.f |= 1;\n if (this.i > 0 && !w(this)) {\n this.f &= -2;\n return true;\n }\n var i2 = r;\n try {\n _(this);\n r = this;\n var t2 = this.x();\n if (16 & this.f || this.v !== t2 || 0 === this.i) {\n this.v = t2;\n this.f &= -17;\n this.i++;\n }\n } catch (i3) {\n this.v = i3;\n this.f |= 16;\n this.i++;\n }\n r = i2;\n b(this);\n this.f &= -2;\n return true;\n};\np.prototype.S = function(i2) {\n if (void 0 === this.t) {\n this.f |= 36;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.S(t2);\n }\n l.prototype.S.call(this, i2);\n};\np.prototype.U = function(i2) {\n if (void 0 !== this.t) {\n l.prototype.U.call(this, i2);\n if (void 0 === this.t) {\n this.f &= -33;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n }\n }\n};\np.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 6;\n for (var i2 = this.t; void 0 !== i2; i2 = i2.x) i2.t.N();\n }\n};\nObject.defineProperty(p.prototype, \"value\", { get: function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n var i2 = a(this);\n this.h();\n if (void 0 !== i2) i2.i = this.i;\n if (16 & this.f) throw this.v;\n return this.v;\n} });\nfunction g(i2, t2) {\n return new p(i2, t2);\n}\nfunction S(i2) {\n var n2 = i2.m;\n i2.m = void 0;\n if (\"function\" == typeof n2) {\n s++;\n var o2 = r;\n r = void 0;\n try {\n n2();\n } catch (t2) {\n i2.f &= -2;\n i2.f |= 8;\n m(i2);\n throw t2;\n } finally {\n r = o2;\n t();\n }\n }\n}\nfunction m(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n i2.x = void 0;\n i2.s = void 0;\n S(i2);\n}\nfunction x(i2) {\n if (r !== this) throw new Error(\"Out-of-order effect\");\n b(this);\n r = i2;\n this.f &= -2;\n if (8 & this.f) m(this);\n t();\n}\nfunction E(i2, t2) {\n this.x = i2;\n this.m = void 0;\n this.s = void 0;\n this.u = void 0;\n this.f = 32;\n this.name = null == t2 ? void 0 : t2.name;\n if (f) f.push(this);\n}\nE.prototype.c = function() {\n var i2 = this.S();\n try {\n if (8 & this.f) return;\n if (void 0 === this.x) return;\n var t2 = this.x();\n if (\"function\" == typeof t2) this.m = t2;\n } finally {\n i2();\n }\n};\nE.prototype.S = function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n this.f |= 1;\n this.f &= -9;\n S(this);\n _(this);\n s++;\n var i2 = r;\n r = this;\n return x.bind(this, i2);\n};\nE.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 2;\n this.u = h;\n h = this;\n }\n};\nE.prototype.d = function() {\n this.f |= 8;\n if (!(1 & this.f)) m(this);\n};\nE.prototype.dispose = function() {\n this.d();\n};\nfunction j(i2, t2) {\n var n2 = new E(i2, t2);\n try {\n n2.c();\n } catch (i3) {\n n2.d();\n throw i3;\n }\n var r2 = n2.d.bind(n2);\n r2[Symbol.dispose] = r2;\n return r2;\n}\n\n// src/signals.ts\nvar signal = y;\nvar computed = g;\nvar effect = j;\nvar batch = n;\nvar untracked = o;\nfunction useSignal(initialValue) {\n return signal(initialValue);\n}\nfunction useUpdatableComputed() {\n const updater = signal(0);\n const factory = (fn) => {\n return computed(() => {\n updater.value;\n return fn();\n });\n };\n const update = () => {\n updater.value++;\n };\n return { computed: factory, update };\n}\nexport {\n Component,\n Fragment,\n MathMLNamespace,\n SVGNamespace,\n ShadowRootNode,\n addDisposingListener,\n batch,\n bindThis,\n className,\n computed,\n createElement,\n createRef,\n currentLifecycleRoot,\n currentNamespaceURI,\n derivedSignal,\n dispatchDisposingEvent,\n effect,\n createElement as h,\n inHTMLNamespace,\n inMathMLNamespace,\n inNamespaceURI,\n inSVGNamespace,\n initPropHookSymbol,\n invokeDisposingListeners,\n isSignalLike,\n jsx,\n jsx as jsxs,\n observeSignal,\n removeDisposingListener,\n setRef,\n signal,\n untracked,\n useClassList,\n useImperativeHandle,\n usePropBinding,\n createRef as useRef,\n useSignal,\n useText,\n useUpdatableComputed\n};\n//# sourceMappingURL=index.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;!function(){var i=c;c=void 0;while(void 0!==i){if(i.S.v===i.v)i.S.i=i.i;i=i.o}}();while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();e=++u;s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0,e=0,c=void 0,d=0;function a(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}l.prototype.brand=i;l.prototype.h=function(){return!0};l.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};l.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value;o(function(){return i(n)})},{name:\"sub\"})};l.prototype.valueOf=function(){return this.value};l.prototype.toString=function(){return this.value+\"\"};l.prototype.toJSON=function(){return this.value};l.prototype.peek=function(){var i=this;return o(function(){return i.value})};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");!function(i){if(0!==s&&0===v)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c}}}(this);this.v=i;this.i++;d++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function y(i,t){return new l(i,t)}function w(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function _(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function b(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function p(i,t){l.call(this,void 0,t);this.x=i;this.s=void 0;this.g=d-1;this.f=4}p.prototype=new l;p.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===d)return!0;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return!0}var i=r;try{_(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;b(this);this.f&=-2;return!0};p.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}l.prototype.S.call(this,i)};p.prototype.U=function(i){if(void 0!==this.t){l.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function g(i,t){return new p(i,t)}function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;m(i);throw t}finally{r=o;t()}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i)}function x(i){if(r!==this)throw new Error(\"Out-of-order effect\");b(this);r=i;this.f&=-2;if(8&this.f)m(this);t()}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}E.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.m=t}finally{i()}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);s++;var i=r;r=this;return x.bind(this,i)};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this)};E.prototype.dispose=function(){this.d()};function j(i,t){var n=new E(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function C(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function O(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}var k=function(i){for(var t in i){var n=i[t];if(\"function\"==typeof n)i[t]=C(n);else if(\"object\"==typeof n&&null!==n&&!(\"brand\"in n))k(n)}};function T(i){return function(){var t,n,r=O();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}k(n);n[Symbol.dispose]=C(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{p as Computed,E as Effect,l as Signal,C as action,n as batch,g as computed,T as createModel,j as effect,y as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import { signal, computed } from '@preact/signals-core';\nimport type { FlipbookThemeMode } from '../theme/theme';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport type { FlipbookEngineOptions } from '../engine';\n\n// Signals hold the reactive state of the application.\n// Any DOMWise component that accesses `.value` will automatically re-render when the value changes.\n\nexport const currentPage = signal<number>(0);\nexport const totalPages = signal<number>(0);\nexport const isSingleMode = signal<boolean>(false);\nexport const showThumbs = signal<boolean>(true);\nexport const orientation = signal<'landscape' | 'portrait'>('landscape');\nexport const flipState = signal<'read' | 'fold_corner' | 'flipping'>('read');\nexport const themeMode = signal<FlipbookThemeMode>('auto');\nexport const allowDownload = signal<boolean>(true);\nexport const hasDownloadUrl = signal<boolean>(false);\nexport const primaryColor = signal<string>('#7367f0');\nexport const whiteLabel = signal<boolean>(false);\nexport const isZoomed = signal<boolean>(false);\nexport const isAutoPlaying = signal<boolean>(false);\nexport const autoPlayInterval = signal<number>(3000);\nexport const soundEnabled = signal<boolean>(true);\n\nexport const zoomState = signal<{\n isActive: boolean;\n translateX: number;\n translateY: number;\n isDragging: boolean;\n scale: number;\n}>({\n isActive: false,\n translateX: 0,\n translateY: 0,\n isDragging: false,\n scale: 1\n});\n\nexport const pages = signal<NormalizedFlipbookPage[]>([]);\n\n// Computed values automatically update when their dependencies change.\nexport const isDoublePageLayout = computed(() => {\n return !isSingleMode.value && orientation.value === 'landscape';\n});\n\nexport const isFrontCover = computed(() => {\n return isDoublePageLayout.value && currentPage.value === 0;\n});\n\nexport const isBackCover = computed(() => {\n if (!isDoublePageLayout.value) return false;\n // In page-flip, the back cover is the last page if it's an even number of pages, etc.\n // For simplicity, if currentPage is >= totalPages - 1\n return currentPage.value >= totalPages.value - 1;\n});\n\n// A simple initialization function to inject options into state\nexport function initStore(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) {\n totalPages.value = total;\n pages.value = mappedPages;\n hasDownloadUrl.value = hasPdfUrl;\n \n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.isSingleMode !== undefined) isSingleMode.value = options.isSingleMode;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n \n currentPage.value = 0;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const enMessages = {\n emptyStateTitle: 'No data available.',\n thumbnails: 'Thumbnails',\n singlePageMode: 'Single Page Mode',\n pages: 'Pages',\n previous: 'Previous',\n next: 'Next',\n zoomOut: 'Zoom Out',\n zoomIn: 'Zoom In',\n fullscreen: 'Fullscreen',\n settings: 'Settings',\n downloadCatalog: 'Download Catalog',\n play: 'Play',\n pause: 'Pause'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const trMessages = {\n emptyStateTitle: 'Veri bulunamadi.',\n thumbnails: 'Küçük Resimler',\n singlePageMode: 'Tek Sayfa Modu',\n pages: 'Sayfalar',\n previous: 'Önceki',\n next: 'Sonraki',\n zoomOut: 'Uzaklaş',\n zoomIn: 'Yaklaş',\n fullscreen: 'Tam Ekran',\n settings: 'Ayarlar',\n downloadCatalog: 'Kataloğu İndir',\n play: 'Otomatik Oynat',\n pause: 'Duraklat'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport { enMessages } from './locales/en';\nimport { trMessages } from './locales/tr';\n\nexport interface FlipbookMessages {\n emptyStateTitle: string;\n thumbnails: string;\n singlePageMode: string;\n pages: string;\n previous: string;\n next: string;\n zoomOut: string;\n zoomIn: string;\n fullscreen: string;\n settings: string;\n downloadCatalog: string;\n play: string;\n pause: string;\n}\n\nexport const builtInMessages = {\n en: enMessages,\n tr: trMessages\n} as const;\n\nexport type FlipbookLocale = keyof typeof builtInMessages;\nexport type PartialFlipbookMessages = Partial<FlipbookMessages>;\n\nexport interface I18nConfiguration {\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n}\n\nexport function resolveMessages(config: I18nConfiguration = {}): FlipbookMessages {\n const locale = config.locale ?? 'en';\n const builtIn = builtInMessages[locale as FlipbookLocale] ?? builtInMessages.en;\n const custom = config.messages?.[locale] ?? {};\n return {\n ...builtInMessages.en,\n ...builtIn,\n ...custom\n };\n}\n","import { computed } from '@preact/signals-core';\nimport { \n showThumbs, \n isSingleMode, \n currentPage, \n totalPages, \n isZoomed, \n allowDownload, \n hasDownloadUrl,\n isDoublePageLayout,\n soundEnabled,\n isAutoPlaying\n} from '../state/store';\nimport { resolveMessages } from '../i18n/service';\n\ninterface ToolbarProps {\n onToggleThumbs: () => void;\n onToggleSingleMode: () => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onDownload?: () => void;\n onSoundToggle: () => void;\n onNextPage: () => void;\n onPrevPage: () => void;\n onToggleAutoPlay: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport function Toolbar(props: ToolbarProps) {\n const messages = resolveMessages();\n\n return (\n <div class=\"bk-toolbar\">\n <div class=\"bk-btn-group\">\n <button \n class={computed(() => `bk-btn ${showThumbs.value ? 'active' : ''}`)} \n onClick={props.onToggleThumbs}\n title={messages.thumbnails || 'Thumbnails'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn bz-hide-mobile ${isSingleMode.value ? 'active' : ''}`)} \n onClick={props.onToggleSingleMode}\n title={messages.singlePageMode || 'Single Page'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn ${isAutoPlaying.value ? 'active' : ''}`)} \n onClick={props.onToggleAutoPlay}\n title={computed(() => isAutoPlaying.value ? (messages.pause || 'Pause') : (messages.play || 'Play'))}\n >\n <svg style={{ display: computed(() => isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect></svg>\n \n <svg style={{ display: computed(() => !isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"></polygon></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group bk-btn-group--center\">\n <button class=\"bk-btn\" onClick={props.onPrevPage} title={messages.previous || 'Previous'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\n </button>\n <span class=\"bz-page-info\">\n {computed(() => {\n const current = currentPage.value;\n const total = totalPages.value;\n if (isSingleMode.value || current === 0 || current >= total - 1) {\n return `${current + 1} / ${total}`;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return `${left + 1}-${left + 2} / ${total}`;\n })}\n </span>\n <button class=\"bk-btn\" onClick={props.onNextPage} title={messages.next || 'Next'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group\">\n <button class=\"bk-btn\" onClick={props.onZoomIn} title={messages.zoomIn || 'Zoom In'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n <button \n class={computed(() => `bk-btn ${isZoomed.value ? 'active' : ''}`)} \n onClick={props.onZoomOut} \n title={messages.zoomOut || 'Zoom Out'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n \n <button class=\"bk-btn bk-btn--fullscreen\" onClick={props.onToggleFullscreen} title={messages.fullscreen || 'Fullscreen'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path></svg>\n </button>\n\n {computed(() => {\n if (allowDownload.value && props.onDownload) {\n return (\n <button class=\"bk-btn bk-btn--download\" onClick={props.onDownload} title={messages.downloadCatalog || 'Download'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>\n </button>\n );\n }\n return null;\n })}\n\n <button \n // @ts-ignore\n class={computed(() => `bk-btn ${!soundEnabled.value ? 'muted' : ''}`)}\n onClick={() => {\n soundEnabled.value = !soundEnabled.value;\n props.onSoundToggle();\n }} \n title=\"Sound\"\n >\n <svg style={{ display: computed(() => soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path></svg>\n \n <svg style={{ display: computed(() => !soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line></svg>\n </button>\n </div>\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { pages, showThumbs, currentPage, isSingleMode } from '../state/store';\n\ninterface ThumbnailsProps {\n onThumbClick: (pageIndex: number) => void;\n}\n\nexport function Thumbnails(props: ThumbnailsProps) {\n return (\n <div class=\"bk-thumbs\" style={computed(() => showThumbs.value ? 'display:flex;' : 'display:none;')}>\n {pages.value.map((page, index) => {\n const isActive = () => {\n const current = currentPage.value;\n if (isSingleMode.value || current === 0 || current >= pages.value.length - 1) {\n return current === index;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return index === left || index === left + 1;\n };\n \n return (\n <div \n // @ts-ignore\n class={computed(() => `thumb-item ${isActive() ? 'active' : ''}`)}\n onClick={() => props.onThumbClick(index)}\n >\n <div class=\"thumb-img-wrapper\">\n <img \n class=\"thumb-img\" \n src={page.thumb || page.low || page.normal} \n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n onError={(e: any) => { e.currentTarget.style.display = 'none'; }}\n />\n </div>\n <span>{index + 1}</span>\n </div>\n );\n })}\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { pages, zoomState, isFrontCover, isBackCover, isDoublePageLayout, flipState, isSingleMode, currentPage } from '../state/store';\n\ninterface ViewerProps {\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n}\n\nexport function Viewer(props: ViewerProps) {\n return (\n <div \n id=\"bk-book-wrapper\"\n class={computed(() => {\n let classes = '';\n if (isDoublePageLayout.value) classes += 'double-mode ';\n if (isFrontCover.value) classes += 'bk-is-cover ';\n if (isBackCover.value) classes += 'bk-is-back-cover ';\n if (zoomState.value.isActive) classes += 'zoomed ';\n return classes.trim();\n })}\n ref={props.bookWrapperRef}\n >\n <div \n id=\"bk-book-sizer\" \n ref={props.bookSizerRef}\n >\n <div \n id=\"bk-book\" \n ref={props.bookContainerRef}\n class={computed(() => flipState.value !== 'read' ? 'is-flipping' : '')}\n style={computed(() => `display: ${isSingleMode.value ? 'none' : 'block'};`)}\n >\n {pages.value.map((page, index) => {\n const isHard = index === 0 || index === pages.value.length - 1;\n \n return (\n <div \n // @ts-ignore\n class={`bz-page ${index === 0 ? 'bz-page--cover' : ''} ${index === pages.value.length - 1 ? 'bz-page--back' : ''}`}\n data-density={isHard ? \"hard\" : \"soft\"}\n data-idx={index}\n >\n <div class=\"bz-page-content\" style=\"position:relative; width:100%; height:100%; overflow:hidden;\">\n <img \n src={page.low || page.normal} \n data-src={page.normal} \n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n />\n <div class=\"page-shadow\"></div>\n </div>\n </div>\n );\n })}\n </div>\n \n <div \n id=\"bk-single-view\"\n style={computed(() => `display: ${isSingleMode.value ? 'flex' : 'none'}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`)}\n >\n {computed(() => {\n const page = pages.value[currentPage.value];\n if (!page) return null;\n return (\n <img \n id=\"bk-single-img\"\n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n src={zoomState.value.isActive ? page.normal : (page.low || page.normal)}\n style=\"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);\"\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { Toolbar } from './Toolbar';\nimport { Thumbnails } from './Thumbnails';\nimport { Viewer } from './Viewer';\nimport { \n themeMode, \n whiteLabel, \n showThumbs, \n isSingleMode,\n currentPage,\n isAutoPlaying,\n soundEnabled\n} from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\nimport type { InteractionManager } from '../core/InteractionManager';\n\ninterface AppProps {\n pageFlipAdapterRef: { current: PageFlipAdapter | null };\n interactionManagerRef: { current: InteractionManager | null };\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n className?: string;\n onDownload: () => void;\n}\n\nexport function App(props: AppProps) {\n const handleToggleThumbs = () => {\n showThumbs.value = !showThumbs.value;\n };\n\n const handleToggleSingleMode = () => {\n isSingleMode.value = !isSingleMode.value;\n };\n\n const handleToggleAutoPlay = () => {\n isAutoPlaying.value = !isAutoPlaying.value;\n };\n\n const handleZoomIn = () => {\n props.interactionManagerRef.current?.zoomIn();\n };\n\n const handleZoomOut = () => {\n props.interactionManagerRef.current?.zoomOut();\n };\n\n const handleToggleFullscreen = () => {\n if (!document.fullscreenElement) {\n // Find the closest container or just use documentElement\n const el = document.querySelector('.bk-wrapper')?.parentElement || document.documentElement;\n el.requestFullscreen().catch(err => console.warn('Fullscreen err:', err));\n } else {\n document.exitFullscreen().catch(err => console.warn('Exit fullscreen err:', err));\n }\n };\n\n const handleThumbClick = (index: number) => {\n if (currentPage.value !== index) {\n currentPage.value = index;\n props.pageFlipAdapterRef.current?.playSound();\n }\n };\n\n const handleNextPage = () => {\n props.pageFlipAdapterRef.current?.turnToNextPage();\n };\n\n const handlePrevPage = () => {\n props.pageFlipAdapterRef.current?.turnToPrevPage();\n };\n\n return (\n <div \n class={computed(() => `bk-wrapper bk-theme-${themeMode.value} ${props.className || ''}`)}\n >\n <div class=\"bk-main-area\">\n <Viewer \n bookWrapperRef={props.bookWrapperRef}\n bookSizerRef={props.bookSizerRef}\n bookContainerRef={props.bookContainerRef}\n />\n \n {!whiteLabel.value ? (\n <div class=\"bk-watermark\">\n Powered by <a href=\"https://flipbookengine.com\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration: underline;\">FlipbookEngine</a>\n </div>\n ) : null}\n </div>\n\n <Toolbar \n onToggleThumbs={handleToggleThumbs}\n onToggleSingleMode={handleToggleSingleMode}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onDownload={props.onDownload}\n onNextPage={handleNextPage}\n onPrevPage={handlePrevPage}\n onSoundToggle={() => soundEnabled.value = !soundEnabled.value}\n onToggleAutoPlay={handleToggleAutoPlay}\n onToggleFullscreen={handleToggleFullscreen}\n />\n \n <Thumbnails \n onThumbClick={handleThumbClick}\n />\n </div>\n );\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).St={})}(this,(function(t){\"use strict\";class e{constructor(t,e){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=e,this.nowDrawingDensity=this.createdDensity,this.render=t}setDensity(t){this.createdDensity=t,this.nowDrawingDensity=t}setDrawingDensity(t){this.nowDrawingDensity=t}setPosition(t){this.state.position=t}setAngle(t){this.state.angle=t}setArea(t){this.state.area=t}setHardDrawingAngle(t){this.state.hardDrawingAngle=t}setHardAngle(t){this.state.hardAngle=t,this.state.hardDrawingAngle=t}setOrientation(t){this.orientation=t}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class i extends e{constructor(t,e,i){super(t,i),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=e}draw(t){const e=this.render.getContext(),i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;e.save(),e.translate(i.x,i.y),e.beginPath();for(let t of this.state.area)null!==t&&(t=this.render.convertToGlobal(t),e.lineTo(t.x-i.x,t.y-i.y));e.rotate(this.state.angle),e.clip(),this.isLoad?e.drawImage(this.image,0,0,s,n):this.drawLoader(e,{x:0,y:0},s,n),e.restore()}simpleDraw(t){const e=this.render.getRect(),i=this.render.getContext(),s=e.pageWidth,n=e.height,h=1===t?e.left+e.pageWidth:e.left,r=e.top;this.isLoad?i.drawImage(this.image,h,r,s,n):this.drawLoader(i,{x:h,y:r},s,n)}drawLoader(t,e,i,s){t.beginPath(),t.strokeStyle=\"rgb(200, 200, 200)\",t.fillStyle=\"rgb(255, 255, 255)\",t.lineWidth=1,t.rect(e.x+1,e.y+1,i-1,s-1),t.stroke(),t.fill();const n={x:e.x+i/2,y:e.y+s/2};t.beginPath(),t.lineWidth=10,t.arc(n.x,n.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),t.stroke(),t.closePath(),this.loadingAngle+=.07,this.loadingAngle>=2*Math.PI&&(this.loadingAngle=0)}load(){this.isLoad||(this.image.onload=()=>{this.isLoad=!0})}newTemporaryCopy(){return this}getTemporaryCopy(){return this}hideTemporaryCopy(){}}class s{constructor(t,e){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=e,this.app=t,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let t=0;t<this.pages.length;t++)this.portraitSpread.push([t]);let t=0;this.isShowCover&&(this.pages[0].setDensity(\"hard\"),this.landscapeSpread.push([t]),t++);for(let e=t;e<this.pages.length;e+=2)e<this.pages.length-1?this.landscapeSpread.push([e,e+1]):(this.landscapeSpread.push([e]),this.pages[e].setDensity(\"hard\"))}getSpread(){return\"landscape\"===this.render.getOrientation()?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(t){const e=this.getSpread();for(let i=0;i<e.length;i++)if(t===e[i][0]||t===e[i][1])return i;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(t){if(t>=0&&t<this.pages.length)return this.pages[t];throw new Error(\"Invalid page number\")}nextBy(t){const e=this.pages.indexOf(t);return e<this.pages.length-1?this.pages[e+1]:null}prevBy(t){const e=this.pages.indexOf(t);return e>0?this.pages[e-1]:null}getFlippingPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e].newTemporaryCopy():this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length||0===t?this.pages[i[0]]:this.pages[i[1]]}}getBottomPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e+1]:this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length?this.pages[i[0]]:0===t?this.pages[i[1]]:this.pages[i[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(t=null){if(null===t&&(t=this.currentPageIndex),t<0||t>=this.pages.length)return;const e=this.getSpreadIndexByPage(t);null!==e&&(this.currentSpreadIndex=e,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(t){if(!(t>=0&&t<this.getSpread().length))throw new Error(\"Invalid page\");this.currentSpreadIndex=t}showSpread(){const t=this.getSpread()[this.currentSpreadIndex];2===t.length?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(this.pages[t[1]])):\"landscape\"===this.render.getOrientation()&&t[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[t[0]])),this.currentPageIndex=t[0],this.app.updatePageIndex(this.currentPageIndex)}}class n extends s{constructor(t,e,i){super(t,e),this.imagesHref=i}load(){for(const t of this.imagesHref){const e=new i(this.render,t,\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class h{static GetDistanceBetweenTwoPoint(t,e){return null===t||null===e?1/0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static GetSegmentLength(t){return h.GetDistanceBetweenTwoPoint(t[0],t[1])}static GetAngleBetweenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x;return Math.acos((i*s+n*h)/(Math.sqrt(i*i+n*n)*Math.sqrt(s*s+h*h)))}static PointInRect(t,e){return null===e?null:e.x>=t.left&&e.x<=t.width+t.left&&e.y>=t.top&&e.y<=t.top+t.height?e:null}static GetRotatedPoint(t,e,i){return{x:t.x*Math.cos(i)+t.y*Math.sin(i)+e.x,y:t.y*Math.cos(i)-t.x*Math.sin(i)+e.y}}static LimitPointToCircle(t,e,i){if(h.GetDistanceBetweenTwoPoint(t,i)<=e)return i;const s=t.x,n=t.y,r=i.x,o=i.y;let a=Math.sqrt(Math.pow(e,2)*Math.pow(s-r,2)/(Math.pow(s-r,2)+Math.pow(n-o,2)))+s;i.x<0&&(a*=-1);let g=(a-s)*(n-o)/(s-r)+n;return s-r+n===0&&(g=e),{x:a,y:g}}static GetIntersectBetweenTwoSegment(t,e,i){return h.PointInRect(t,h.GetIntersectBeetwenTwoLine(e,i))}static GetIntersectBeetwenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x,r=t[0].x*t[1].y-t[1].x*t[0].y,o=e[0].x*e[1].y-e[1].x*e[0].y,a=i*o-s*r,g=n*o-h*r,l=-(r*h-o*n)/(i*h-s*n),d=-(i*o-s*r)/(i*h-s*n);if(isFinite(l)&&isFinite(d))return{x:l,y:d};if(Math.abs(a-g)<.1)throw new Error(\"Segment included\");return null}static GetCordsFromTwoPoint(t,e){const i=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y),n=Math.max(i,s),h=[t];function r(t,e,i,s,n){return e>t?t+n*(i/s):e<t?t-n*(i/s):t}for(let o=1;o<=n;o+=1)h.push({x:r(t.x,e.x,i,n,o),y:r(t.y,e.y,s,n,o)});return h}}class r extends e{constructor(t,e,i){super(t,i),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=e,this.element.classList.add(\"stf__item\"),this.element.classList.add(\"--\"+i)}newTemporaryCopy(){return\"hard\"===this.nowDrawingDensity?this:(null===this.temporaryCopy&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new r(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){null!==this.temporaryCopy&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(t){const e=t||this.nowDrawingDensity,i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;this.element.classList.remove(\"--simple\");const h=`\\n display: block;\\n z-index: ${this.element.style.zIndex};\\n left: 0;\\n top: 0;\\n width: ${s}px;\\n height: ${n}px;\\n `;\"hard\"===e?this.drawHard(h):this.drawSoft(i,h)}drawHard(t=\"\"){const e=this.render.getRect().left+this.render.getRect().width/2,i=this.state.hardDrawingAngle,s=t+\"\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n clip-path: none;\\n -webkit-clip-path: none;\\n \"+(0===this.orientation?`transform-origin: ${this.render.getRect().pageWidth}px 0; \\n transform: translate3d(0, 0, 0) rotateY(${i}deg);`:`transform-origin: 0 0; \\n transform: translate3d(${e}px, 0, 0) rotateY(${i}deg);`);this.element.style.cssText=s}drawSoft(t,e=\"\"){let i=\"polygon( \";for(const t of this.state.area)if(null!==t){let e=1===this.render.getDirection()?{x:-t.x+this.state.position.x,y:t.y-this.state.position.y}:{x:t.x-this.state.position.x,y:t.y-this.state.position.y};e=h.GetRotatedPoint(e,{x:0,y:0},this.state.angle),i+=e.x+\"px \"+e.y+\"px, \"}i=i.slice(0,-2),i+=\")\";const s=e+`transform-origin: 0 0; clip-path: ${i}; -webkit-clip-path: ${i};`+(this.render.isSafari()&&0===this.state.angle?`transform: translate(${t.x}px, ${t.y}px);`:`transform: translate3d(${t.x}px, ${t.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=s}simpleDraw(t){const e=this.render.getRect(),i=e.pageWidth,s=e.height,n=1===t?e.left+e.pageWidth:e.left,h=e.top;this.element.classList.add(\"--simple\"),this.element.style.cssText=`\\n position: absolute; \\n display: block; \\n height: ${s}px; \\n left: ${n}px; \\n top: ${h}px; \\n width: ${i}px; \\n z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(t){super.setOrientation(t),this.element.classList.remove(\"--left\",\"--right\"),this.element.classList.add(1===t?\"--right\":\"--left\")}setDrawingDensity(t){this.element.classList.remove(\"--soft\",\"--hard\"),this.element.classList.add(\"--\"+t),super.setDrawingDensity(t)}}class o extends s{constructor(t,e,i,s){super(t,e),this.element=i,this.pagesElement=s}load(){for(const t of this.pagesElement){const e=new r(this.render,t,\"hard\"===t.dataset.density?\"hard\":\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class a{constructor(t,e,i,s){this.direction=t,this.corner=e,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(i,10),this.pageHeight=parseInt(s,10)}calc(t){try{return this.position=this.calcAngleAndPosition(t),this.calculateIntersectPoint(this.position),!0}catch(t){return!1}}getFlippingClipArea(){const t=[];let e=!1;return t.push(this.rect.topLeft),t.push(this.topIntersectPoint),null===this.sideIntersectPoint?e=!0:(t.push(this.sideIntersectPoint),null===this.bottomIntersectPoint&&(e=!1)),t.push(this.bottomIntersectPoint),(e||\"bottom\"===this.corner)&&t.push(this.rect.bottomLeft),t}getBottomClipArea(){const t=[];return t.push(this.topIntersectPoint),\"top\"===this.corner?t.push({x:this.pageWidth,y:0}):(null!==this.topIntersectPoint&&t.push({x:this.pageWidth,y:0}),t.push({x:this.pageWidth,y:this.pageHeight})),null!==this.sideIntersectPoint?h.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&t.push(this.sideIntersectPoint):\"top\"===this.corner&&t.push({x:this.pageWidth,y:this.pageHeight}),t.push(this.bottomIntersectPoint),t.push(this.topIntersectPoint),t}getAngle(){return 0===this.direction?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return 0===this.direction?this.rect.topLeft:this.rect.topRight}getDirection(){return this.direction}getFlippingProgress(){return Math.abs((this.position.x-this.pageWidth)/(2*this.pageWidth)*100)}getCorner(){return this.corner}getBottomPagePosition(){return 1===this.direction?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return\"top\"===this.corner?this.topIntersectPoint:null!==this.sideIntersectPoint?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const t=h.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return 0===this.direction?t:Math.PI-t}calcAngleAndPosition(t){let e=t;if(this.updateAngleAndGeometry(e),e=\"top\"===this.corner?this.checkPositionAtCenterLine(e,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(e,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(e.x-this.pageWidth)<1&&Math.abs(e.y)<1)throw new Error(\"Point is too small\");return e}updateAngleAndGeometry(t){this.angle=this.calculateAngle(t),this.rect=this.getPageRect(t)}calculateAngle(t){const e=this.pageWidth-t.x+1,i=\"bottom\"===this.corner?this.pageHeight-t.y:t.y;let s=2*Math.acos(e/Math.sqrt(i*i+e*e));i<0&&(s=-s);const n=Math.PI-s;if(!isFinite(s)||n>=0&&n<.003)throw new Error(\"The G point is too small\");return\"bottom\"===this.corner&&(s=-s),s}getPageRect(t){return\"top\"===this.corner?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],t):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],t)}getRectFromBasePoint(t,e){return{topLeft:this.getRotatedPoint(t[0],e),topRight:this.getRotatedPoint(t[1],e),bottomLeft:this.getRotatedPoint(t[2],e),bottomRight:this.getRotatedPoint(t[3],e)}}getRotatedPoint(t,e){return{x:t.x*Math.cos(this.angle)+t.y*Math.sin(this.angle)+e.x,y:t.y*Math.cos(this.angle)-t.x*Math.sin(this.angle)+e.y}}calculateIntersectPoint(t){const e={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};\"top\"===this.corner?(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(t,e,i){let s=t;const n=h.LimitPointToCircle(e,this.pageWidth,s);s!==n&&(s=n,this.updateAngleAndGeometry(s));const r=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let o=this.rect.bottomRight,a=this.rect.topLeft;if(\"bottom\"===this.corner&&(o=this.rect.topRight,a=this.rect.bottomLeft),o.x<=0){const t=h.LimitPointToCircle(i,r,a);t!==s&&(s=t,this.updateAngleAndGeometry(s))}return s}getSegmentToShadowLine(){const t=this.getShadowStartPoint();return[t,t!==this.sideIntersectPoint&&null!==this.sideIntersectPoint?this.sideIntersectPoint:this.bottomIntersectPoint]}}class g{constructor(t,e){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state=\"read\",this.render=t,this.app=e}fold(t){this.setState(\"user_fold\"),null===this.calc&&this.start(t),this.do(this.render.convertToPage(t))}flip(t){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(t))return;if(null!==this.calc&&this.render.finishAnimation(),!this.start(t))return;const e=this.getBoundsRect();this.setState(\"flipping\");const i=e.height/10,s=\"bottom\"===this.calc.getCorner()?e.height-i:i,n=\"bottom\"===this.calc.getCorner()?e.height:0;this.calc.calc({x:e.pageWidth-i,y:s}),this.animateFlippingTo({x:e.pageWidth-i,y:s},{x:-e.pageWidth,y:n},!0)}start(t){this.reset();const e=this.render.convertToBook(t),i=this.getBoundsRect(),s=this.getDirectionByPoint(e),n=e.y>=i.height/2?\"bottom\":\"top\";if(!this.checkDirection(s))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(s),this.bottomPage=this.app.getPageCollection().getBottomPage(s),\"landscape\"===this.render.getOrientation())if(1===s){const t=this.app.getPageCollection().nextBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}else{const t=this.app.getPageCollection().prevBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}return this.render.setDirection(s),this.calc=new a(s,n,i.pageWidth.toString(10),i.height.toString(10)),!0}catch(t){return!1}}do(t){if(null!==this.calc&&this.calc.calc(t)){const t=this.calc.getFlippingProgress();this.bottomPage.setArea(this.calc.getBottomClipArea()),this.bottomPage.setPosition(this.calc.getBottomPagePosition()),this.bottomPage.setAngle(0),this.bottomPage.setHardAngle(0),this.flippingPage.setArea(this.calc.getFlippingClipArea()),this.flippingPage.setPosition(this.calc.getActiveCorner()),this.flippingPage.setAngle(this.calc.getAngle()),0===this.calc.getDirection()?this.flippingPage.setHardAngle(90*(200-2*t)/100):this.flippingPage.setHardAngle(-90*(200-2*t)/100),this.render.setPageRect(this.calc.getRect()),this.render.setBottomPage(this.bottomPage),this.render.setFlippingPage(this.flippingPage),this.render.setShadowData(this.calc.getShadowStartPoint(),this.calc.getShadowAngle(),t,this.calc.getDirection())}}flipToPage(t,e){const i=this.app.getPageCollection().getCurrentSpreadIndex(),s=this.app.getPageCollection().getSpreadIndexByPage(t);try{s>i&&(this.app.getPageCollection().setCurrentSpreadIndex(s-1),this.flipNext(e)),s<i&&(this.app.getPageCollection().setCurrentSpreadIndex(s+1),this.flipPrev(e))}catch(t){}}flipNext(t){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:\"top\"===t?1:this.render.getRect().height-2})}flipPrev(t){this.flip({x:10,y:\"top\"===t?1:this.render.getRect().height-2})}stopMove(){if(null===this.calc)return;const t=this.calc.getPosition(),e=this.getBoundsRect(),i=\"bottom\"===this.calc.getCorner()?e.height:0;t.x<=0?this.animateFlippingTo(t,{x:-e.pageWidth,y:i},!0):this.animateFlippingTo(t,{x:e.pageWidth,y:i},!1)}showCorner(t){if(!this.checkState(\"read\",\"fold_corner\"))return;const e=this.getBoundsRect(),i=e.pageWidth;if(this.isPointOnCorners(t))if(null===this.calc){if(!this.start(t))return;this.setState(\"fold_corner\"),this.calc.calc({x:i-1,y:1});const s=50,n=\"bottom\"===this.calc.getCorner()?e.height-1:1,h=\"bottom\"===this.calc.getCorner()?e.height-s:s;this.animateFlippingTo({x:i-1,y:n},{x:i-s,y:h},!1,!1)}else this.do(this.render.convertToPage(t));else this.setState(\"read\"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(t,e,i,s=!0){const n=h.GetCordsFromTwoPoint(t,e),r=[];for(const t of n)r.push(()=>this.do(t));const o=this.getAnimationDuration(n.length);this.render.startAnimation(r,o,()=>{this.calc&&(i&&(1===this.calc.getDirection()?this.app.turnToPrevPage():this.app.turnToNextPage()),s&&(this.render.setBottomPage(null),this.render.setFlippingPage(null),this.render.clearShadow(),this.setState(\"read\"),this.reset()))})}getCalculation(){return this.calc}getState(){return this.state}setState(t){this.state!==t&&(this.app.updateState(t),this.state=t)}getDirectionByPoint(t){const e=this.getBoundsRect();if(\"portrait\"===this.render.getOrientation()){if(t.x-e.pageWidth<=e.width/5)return 1}else if(t.x<e.width/2)return 1;return 0}getAnimationDuration(t){const e=this.app.getSettings().flippingTime;return t>=1e3?e:t/1e3*e}checkDirection(t){return 0===t?this.app.getCurrentPageIndex()<this.app.getPageCount()-1:this.app.getCurrentPageIndex()>=1}reset(){this.calc=null,this.flippingPage=null,this.bottomPage=null}getBoundsRect(){return this.render.getRect()}checkState(...t){for(const e of t)if(this.state===e)return!0;return!1}isPointOnCorners(t){const e=this.getBoundsRect(),i=e.pageWidth,s=Math.sqrt(Math.pow(i,2)+Math.pow(e.height,2))/5,n=this.render.convertToBook(t);return n.x>0&&n.y>0&&n.x<e.width&&n.y<e.height&&(n.x<s||n.x>e.width-s)&&(n.y<s||n.y>e.height-s)}}class l{constructor(t,e){this.leftPage=null,this.rightPage=null,this.flippingPage=null,this.bottomPage=null,this.direction=null,this.orientation=null,this.shadow=null,this.animation=null,this.pageRect=null,this.boundsRect=null,this.timer=0,this.safari=!1,this.setting=e,this.app=t;const i=new RegExp(\"Version\\\\/[\\\\d\\\\.]+.*Safari/\");this.safari=null!==i.exec(window.navigator.userAgent)}render(t){if(null!==this.animation){const e=Math.round((t-this.animation.startedAt)/this.animation.durationFrame);e<this.animation.frames.length?this.animation.frames[e]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=t,this.drawFrame()}start(){this.update();const t=e=>{this.render(e),requestAnimationFrame(t)};requestAnimationFrame(t)}startAnimation(t,e,i){this.finishAnimation(),this.animation={frames:t,duration:e,durationFrame:e/t.length,onAnimateEnd:i,startedAt:this.timer}}finishAnimation(){null!==this.animation&&(this.animation.frames[this.animation.frames.length-1](),null!==this.animation.onAnimateEnd&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const t=this.calculateBoundsRect();this.orientation!==t&&(this.orientation=t,this.app.updateOrientation(t))}calculateBoundsRect(){let t=\"landscape\";const e=this.getBlockWidth(),i=e/2,s=this.getBlockHeight()/2,n=this.setting.width/this.setting.height;let h=this.setting.width,r=this.setting.height,o=i-h;return\"stretch\"===this.setting.size?(e<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(t=\"portrait\"),h=\"portrait\"===t?this.getBlockWidth():this.getBlockWidth()/2,h>this.setting.maxWidth&&(h=this.setting.maxWidth),r=h/n,r>this.getBlockHeight()&&(r=this.getBlockHeight(),h=r*n),o=\"portrait\"===t?i-h/2-h:i-h):e<2*h&&this.app.getSettings().usePortrait&&(t=\"portrait\",o=i-h/2-h),this.boundsRect={left:o,top:s-r/2,width:2*h,height:r,pageWidth:h},t}setShadowData(t,e,i,s){if(!this.app.getSettings().drawShadow)return;const n=100*this.getSettings().maxShadowOpacity;this.shadow={pos:t,angle:e,width:3*this.getRect().pageWidth/4*i/100,opacity:(100-i)*n/100/100,direction:s,progress:2*i}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return null===this.boundsRect&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(t){this.pageRect=t}setDirection(t){this.direction=t}setRightPage(t){null!==t&&t.setOrientation(1),this.rightPage=t}setLeftPage(t){null!==t&&t.setOrientation(0),this.leftPage=t}setBottomPage(t){null!==t&&t.setOrientation(1===this.direction?0:1),this.bottomPage=t}setFlippingPage(t){null!==t&&t.setOrientation(0===this.direction&&\"portrait\"!==this.orientation?0:1),this.flippingPage=t}convertToBook(t){const e=this.getRect();return{x:t.x-e.left,y:t.y-e.top}}isSafari(){return this.safari}convertToPage(t,e){e||(e=this.direction);const i=this.getRect();return{x:0===e?t.x-i.left-i.width/2:i.width/2-t.x+i.left,y:t.y-i.top}}convertToGlobal(t,e){if(e||(e=this.direction),null==t)return null;const i=this.getRect();return{x:0===e?t.x+i.left+i.width/2:i.width/2-t.x+i.left,y:t.y+i.top}}convertRectToGlobal(t,e){return e||(e=this.direction),{topLeft:this.convertToGlobal(t.topLeft,e),topRight:this.convertToGlobal(t.topRight,e),bottomLeft:this.convertToGlobal(t.bottomLeft,e),bottomRight:this.convertToGlobal(t.bottomRight,e)}}}class d extends l{constructor(t,e,i){super(t,e),this.canvas=i,this.ctx=i.getContext(\"2d\")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),\"portrait\"!==this.orientation&&null!=this.leftPage&&this.leftPage.simpleDraw(0),null!=this.rightPage&&this.rightPage.simpleDraw(1),null!=this.bottomPage&&this.bottomPage.draw(),this.drawBookShadow(),null!=this.flippingPage&&this.flippingPage.draw(),null!=this.shadow&&(this.drawOuterShadow(),this.drawInnerShadow());const t=this.getRect();\"portrait\"===this.orientation&&(this.ctx.beginPath(),this.ctx.rect(t.left+t.pageWidth,t.top,t.width,t.height),this.ctx.clip())}drawBookShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=t.width/20;this.ctx.rect(t.left,t.top,t.width,t.height);const i={x:t.left+t.width/2-e/2,y:0};this.ctx.translate(i.x,i.y);const s=this.ctx.createLinearGradient(0,0,e,0);s.addColorStop(0,\"rgba(0, 0, 0, 0)\"),s.addColorStop(.4,\"rgba(0, 0, 0, 0.2)\"),s.addColorStop(.49,\"rgba(0, 0, 0, 0.1)\"),s.addColorStop(.5,\"rgba(0, 0, 0, 0.5)\"),s.addColorStop(.51,\"rgba(0, 0, 0, 0.4)\"),s.addColorStop(1,\"rgba(0, 0, 0, 0)\"),this.ctx.clip(),this.ctx.fillStyle=s,this.ctx.fillRect(0,0,e,2*t.height),this.ctx.restore()}drawOuterShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(t.left,t.top,t.width,t.height);const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const i=this.ctx.createLinearGradient(0,0,this.shadow.width,0);0===this.shadow.direction?(this.ctx.translate(0,-100),i.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),i.addColorStop(1,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(-this.shadow.width,-100),i.addColorStop(0,\"rgba(0, 0, 0, 0)\"),i.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\")),this.ctx.clip(),this.ctx.fillStyle=i,this.ctx.fillRect(0,0,this.shadow.width,2*t.height),this.ctx.restore()}drawInnerShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(i.topLeft.x,i.topLeft.y),this.ctx.lineTo(i.topRight.x,i.topRight.y),this.ctx.lineTo(i.bottomRight.x,i.bottomRight.y),this.ctx.lineTo(i.bottomLeft.x,i.bottomLeft.y),this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const s=3*this.shadow.width/4,n=this.ctx.createLinearGradient(0,0,s,0);0===this.shadow.direction?(this.ctx.translate(-s,-100),n.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.9,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.7,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(0,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(0,-100),n.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.1,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.3,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(1,\"rgba(0, 0, 0, 0)\")),this.ctx.clip(),this.ctx.fillStyle=n,this.ctx.fillRect(0,0,s,2*t.height),this.ctx.restore()}clear(){this.ctx.fillStyle=\"white\",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class p{constructor(t,e,i){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=t=>{if(this.checkTarget(t.target)){const e=this.getMousePos(t.clientX,t.clientY);this.app.startUserTouch(e),t.preventDefault()}},this.onTouchStart=t=>{if(this.checkTarget(t.target)&&t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.touchPoint={point:i,time:Date.now()},setTimeout(()=>{null!==this.touchPoint&&this.app.startUserTouch(i)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||t.preventDefault()}},this.onMouseUp=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userStop(e)},this.onMouseMove=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userMove(e,!1)},this.onTouchMove=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.app.getSettings().mobileScrollSupport?(null!==this.touchPoint&&(Math.abs(this.touchPoint.point.x-i.x)>10||\"read\"!==this.app.getState())&&t.cancelable&&this.app.userMove(i,!0),\"read\"!==this.app.getState()&&t.preventDefault()):this.app.userMove(i,!0)}},this.onTouchEnd=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);let s=!1;if(null!==this.touchPoint){const t=i.x-this.touchPoint.point.x,e=Math.abs(i.y-this.touchPoint.point.y);Math.abs(t)>this.swipeDistance&&e<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(t>0?this.app.flipPrev(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"):this.app.flipNext(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"),s=!0),this.touchPoint=null}this.app.userStop(i,s)}},this.parentElement=t,t.classList.add(\"stf__parent\"),t.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__wrapper\"></div>'),this.wrapper=t.querySelector(\".stf__wrapper\"),this.app=e;const s=this.app.getSettings().usePortrait?1:2;t.style.minWidth=i.minWidth*s+\"px\",t.style.minHeight=i.minHeight+\"px\",\"fixed\"===i.size&&(t.style.minWidth=i.width*s+\"px\",t.style.minHeight=i.height+\"px\"),i.autoSize&&(t.style.width=\"100%\",t.style.maxWidth=2*i.maxWidth+\"px\"),t.style.display=\"block\",window.addEventListener(\"resize\",this.onResize,!1),this.swipeDistance=i.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(t){this.wrapper.classList.remove(\"--portrait\",\"--landscape\"),\"portrait\"===t?(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/this.app.getSettings().width*100+\"%\"),this.wrapper.classList.add(\"--portrait\")):(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/(2*this.app.getSettings().width)*100+\"%\"),this.wrapper.classList.add(\"--landscape\")),this.update()}removeHandlers(){window.removeEventListener(\"resize\",this.onResize),this.distElement.removeEventListener(\"mousedown\",this.onMouseDown),this.distElement.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"mouseup\",this.onMouseUp),window.removeEventListener(\"touchend\",this.onTouchEnd)}setHandlers(){window.addEventListener(\"resize\",this.onResize,!1),this.app.getSettings().useMouseEvents&&(this.distElement.addEventListener(\"mousedown\",this.onMouseDown),this.distElement.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"touchmove\",this.onTouchMove,{passive:!this.app.getSettings().mobileScrollSupport}),window.addEventListener(\"mouseup\",this.onMouseUp),window.addEventListener(\"touchend\",this.onTouchEnd))}getMousePos(t,e){const i=this.distElement.getBoundingClientRect();return{x:t-i.left,y:e-i.top}}checkTarget(t){return!this.app.getSettings().clickEventForward||![\"a\",\"button\"].includes(t.tagName.toLowerCase())}}class c extends p{constructor(t,e,i,s){super(t,e,i),this.wrapper.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__block\"></div>'),this.distElement=t.querySelector(\".stf__block\"),this.items=s;for(const t of s)this.distElement.appendChild(t);this.setHandlers()}clear(){for(const t of this.items)this.parentElement.appendChild(t)}updateItems(t){this.removeHandlers(),this.distElement.innerHTML=\"\";for(const e of t)this.distElement.appendChild(e);this.items=t,this.setHandlers()}update(){this.app.getRender().update()}}class u extends p{constructor(t,e,i){super(t,e,i),this.wrapper.innerHTML='<canvas class=\"stf__canvas\"></canvas>',this.canvas=t.querySelectorAll(\"canvas\")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const t=getComputedStyle(this.canvas),e=parseInt(t.getPropertyValue(\"width\"),10),i=parseInt(t.getPropertyValue(\"height\"),10);this.canvas.width=e,this.canvas.height=i}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class w extends l{constructor(t,e,i){super(t,e),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=i,this.createShadows()}createShadows(){this.element.insertAdjacentHTML(\"beforeend\",'<div class=\"stf__outerShadow\"></div>\\n <div class=\"stf__innerShadow\"></div>\\n <div class=\"stf__hardShadow\"></div>\\n <div class=\"stf__hardInnerShadow\"></div>'),this.outerShadow=this.element.querySelector(\".stf__outerShadow\"),this.innerShadow=this.element.querySelector(\".stf__innerShadow\"),this.hardShadow=this.element.querySelector(\".stf__hardShadow\"),this.hardInnerShadow=this.element.querySelector(\".stf__hardInnerShadow\")}clearShadow(){super.clearShadow(),this.outerShadow.style.cssText=\"display: none\",this.innerShadow.style.cssText=\"display: none\",this.hardShadow.style.cssText=\"display: none\",this.hardInnerShadow.style.cssText=\"display: none\"}reload(){this.element.querySelector(\".stf__outerShadow\")||this.createShadows()}drawHardInnerShadow(){const t=this.getRect(),e=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let i=(100-e)*(2.5*t.pageWidth)/100+20;i>t.pageWidth&&(i=t.pageWidth);let s=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+5).toString(10)};\\n width: ${i}px;\\n height: ${t.height}px;\\n background: linear-gradient(to right,\\n rgba(0, 0, 0, ${this.shadow.opacity*e/100}) 5%,\\n rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;s+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0);\":\"transform: translate3d(0, 0, 0) rotateY(180deg);\",this.hardInnerShadow.style.cssText=s}drawHardOuterShadow(){const t=this.getRect();let e=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*t.pageWidth)/100+20;e>t.pageWidth&&(e=t.pageWidth);let i=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+4).toString(10)};\\n width: ${e}px;\\n height: ${t.height}px;\\n background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;i+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0) rotateY(180deg);\":\"transform: translate3d(0, 0, 0);\",this.hardShadow.style.cssText=i}drawInnerShadow(){const t=this.getRect(),e=3*this.shadow.width/4,i=0===this.getDirection()?e:0,s=0===this.getDirection()?\"to left\":\"to right\",n=this.convertToGlobal(this.shadow.pos),r=this.shadow.angle+3*Math.PI/2,o=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let a=\"polygon( \";for(const t of o){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:i,y:100},r),a+=e.x+\"px \"+e.y+\"px, \"}a=a.slice(0,-2),a+=\")\";const g=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${e}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${s},\\n rgba(0, 0, 0, ${this.shadow.opacity}) 5%,\\n rgba(0, 0, 0, 0.05) 15%,\\n rgba(0, 0, 0, ${this.shadow.opacity}) 35%,\\n rgba(0, 0, 0, 0) 100%);\\n transform-origin: ${i}px 100px;\\n transform: translate3d(${n.x-i}px, ${n.y-100}px, 0) rotate(${r}rad);\\n clip-path: ${a};\\n -webkit-clip-path: ${a};\\n `;this.innerShadow.style.cssText=g}drawOuterShadow(){const t=this.getRect(),e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.shadow.angle+3*Math.PI/2,s=1===this.getDirection()?this.shadow.width:0,n=0===this.getDirection()?\"to right\":\"to left\",r=[{x:0,y:0},{x:t.pageWidth,y:0},{x:t.pageWidth,y:t.height},{x:0,y:t.height}];let o=\"polygon( \";for(const t of r)if(null!==t){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:s,y:100},i),o+=e.x+\"px \"+e.y+\"px, \"}o=o.slice(0,-2),o+=\")\";const a=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${this.shadow.width}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${n}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));\\n transform-origin: ${s}px 100px;\\n transform: translate3d(${e.x-s}px, ${e.y-100}px, 0) rotate(${i}rad);\\n clip-path: ${o};\\n -webkit-clip-path: ${o};\\n `;this.outerShadow.style.cssText=a}drawLeftPage(){\"portrait\"!==this.orientation&&null!==this.leftPage&&(1===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.leftPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.leftPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.leftPage.draw(this.flippingPage.getDrawingDensity())):this.leftPage.simpleDraw(0))}drawRightPage(){null!==this.rightPage&&(0===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.rightPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.rightPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.rightPage.draw(this.flippingPage.getDrawingDensity())):this.rightPage.simpleDraw(1))}drawBottomPage(){if(null===this.bottomPage)return;const t=null!=this.flippingPage?this.flippingPage.getDrawingDensity():null;\"portrait\"===this.orientation&&1===this.direction||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(t))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),null!=this.flippingPage&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),null!=this.shadow&&null!==this.flippingPage&&(\"soft\"===this.flippingPage.getDrawingDensity()?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const t of this.app.getPageCollection().getPages())t!==this.leftPage&&t!==this.rightPage&&t!==this.flippingPage&&t!==this.bottomPage&&(t.getElement().style.cssText=\"display: none\"),t.getTemporaryCopy()!==this.flippingPage&&t.hideTemporaryCopy()}update(){super.update(),null!==this.rightPage&&this.rightPage.setOrientation(1),null!==this.leftPage&&this.leftPage.setOrientation(0)}}class x{constructor(){this._default={startPage:0,size:\"fixed\",width:0,height:0,minWidth:0,maxWidth:0,minHeight:0,maxHeight:0,drawShadow:!0,flippingTime:1e3,usePortrait:!0,startZIndex:0,autoSize:!0,maxShadowOpacity:1,showCover:!1,mobileScrollSupport:!0,swipeDistance:30,clickEventForward:!0,useMouseEvents:!0,showPageCorners:!0,disableFlipByClick:!1}}getSettings(t){const e=this._default;if(Object.assign(e,t),\"stretch\"!==e.size&&\"fixed\"!==e.size)throw new Error('Invalid size type. Available only \"fixed\" and \"stretch\" value');if(e.width<=0||e.height<=0)throw new Error(\"Invalid width or height\");if(e.flippingTime<=0)throw new Error(\"Invalid flipping time\");return\"stretch\"===e.size?(e.minWidth<=0&&(e.minWidth=100),e.maxWidth<e.minWidth&&(e.maxWidth=2e3),e.minHeight<=0&&(e.minHeight=100),e.maxHeight<e.minHeight&&(e.maxHeight=2e3)):(e.minWidth=e.width,e.maxWidth=e.width,e.minHeight=e.height,e.maxHeight=e.height),e}}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}}(\".stf__parent {\\n position: relative;\\n display: block;\\n box-sizing: border-box;\\n transform: translateZ(0);\\n\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.sft__wrapper {\\n position: relative;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.stf__parent canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__block {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n perspective: 2000px;\\n}\\n\\n.stf__item {\\n display: none;\\n position: absolute;\\n transform-style: preserve-3d;\\n}\\n\\n.stf__outerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__innerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardInnerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\");t.PageFlip=class extends class{constructor(){this.events=new Map}on(t,e){return this.events.has(t)?this.events.get(t).push(e):this.events.set(t,[e]),this}off(t){this.events.delete(t)}trigger(t,e,i=null){if(this.events.has(t))for(const s of this.events.get(t))s({data:i,object:e})}}{constructor(t,e){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=(new x).getSettings(e),this.block=t}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(t){this.ui=new u(this.block,this,this.setting);const e=this.ui.getCanvas();this.render=new d(this,this.setting,e),this.flipController=new g(this.render,this),this.pages=new n(this,this.render,t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}loadFromHTML(t){this.ui=new c(this.block,this,this.setting,t),this.render=new w(this,this.setting,this.ui.getDistElement()),this.flipController=new g(this.render,this),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}updateFromImages(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new n(this,this.render,t),this.pages.load(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}updateFromHtml(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.ui.updateItems(t),this.render.reload(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(t){this.pages.show(t)}flipNext(t=\"top\"){this.flipController.flipNext(t)}flipPrev(t=\"top\"){this.flipController.flipPrev(t)}flip(t,e=\"top\"){this.flipController.flipToPage(t,e)}updateState(t){this.trigger(\"changeState\",this,t)}updatePageIndex(t){this.trigger(\"flip\",this,t)}updateOrientation(t){this.ui.setOrientationStyle(t),this.update(),this.trigger(\"changeOrientation\",this,t)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(t){return this.pages.getPage(t)}getRender(){return this.render}getFlipController(){return this.flipController}getOrientation(){return this.render.getOrientation()}getBoundsRect(){return this.render.getRect()}getSettings(){return this.setting}getUI(){return this.ui}getState(){return this.flipController.getState()}getPageCollection(){return this.pages}startUserTouch(t){this.mousePosition=t,this.isUserTouch=!0,this.isUserMove=!1}userMove(t,e){this.isUserTouch||e||!this.setting.showPageCorners?this.isUserTouch&&h.GetDistanceBetweenTwoPoint(this.mousePosition,t)>5&&(this.isUserMove=!0,this.flipController.fold(t)):this.flipController.showCorner(t)}userStop(t,e=!1){this.isUserTouch&&(this.isUserTouch=!1,e||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(t)))}},Object.defineProperty(t,\"__esModule\",{value:!0})}));\n","import { PageFlip } from 'page-flip';\nimport { effect } from '@preact/signals-core';\nimport { currentPage, orientation, flipState, pages, isSingleMode, soundEnabled, isAutoPlaying, autoPlayInterval } from '../state/store';\nimport type { FlipbookEngineOptions } from '../engine';\n\nexport class PageFlipAdapter {\n private pageFlip: any = null;\n private bookContainer: HTMLElement;\n private options: FlipbookEngineOptions;\n private unsubs: Array<() => void> = [];\n private audioEl: HTMLAudioElement | null = null;\n private isLibraryFlipping = false;\n private autoPlayTimer: any = null;\n\n constructor(bookContainer: HTMLElement, options: FlipbookEngineOptions) {\n this.bookContainer = bookContainer;\n this.options = options;\n if (options.soundUrl) {\n this.audioEl = new Audio(options.soundUrl);\n }\n }\n\n public init(viewportWidth: number, viewportHeight: number) {\n this.pageFlip = new PageFlip(this.bookContainer, {\n width: viewportWidth,\n height: viewportHeight,\n size: \"stretch\" as any,\n minWidth: 100,\n maxWidth: 3000,\n minHeight: 100,\n maxHeight: 3000,\n drawShadow: true,\n showCover: true,\n usePortrait: true,\n mobileScrollSupport: false,\n maxShadowOpacity: this.options.maxShadowOpacity || 0.5,\n flippingTime: this.options.flippingTime || 1000\n });\n\n // Load the HTML pages from the DOM\n const pageElements = this.bookContainer.querySelectorAll('.bz-page');\n this.pageFlip.loadFromHTML(Array.from(pageElements));\n\n this.bindEvents();\n this.setupSignalSync();\n }\n\n private bindEvents() {\n // When the library flips a page, update our signal\n this.pageFlip.on('flip', (e: any) => {\n // Check if we are not just initializing\n if (currentPage.value !== e.data) {\n this.isLibraryFlipping = true;\n currentPage.value = e.data;\n this.playSound();\n this.isLibraryFlipping = false;\n }\n });\n\n // When the library changes state, update our signal\n this.pageFlip.on('changeState', (e: any) => {\n flipState.value = e.data;\n });\n\n // When the library changes orientation, update our signal\n this.pageFlip.on('changeOrientation', (e: any) => {\n if (orientation.value !== e.data) {\n orientation.value = e.data;\n }\n });\n }\n\n private setupSignalSync() {\n // When our signal changes, tell the library to flip (if needed)\n this.unsubs.push(\n effect(() => {\n const targetPage = currentPage.value;\n const state = flipState.peek();\n if (!this.pageFlip || this.isLibraryFlipping || state !== 'read') return;\n \n const libCurrentPage = this.pageFlip.getCurrentPageIndex();\n if (libCurrentPage !== targetPage && !isSingleMode.value) {\n const getSpreadIndex = (p: number) => p === 0 ? 0 : Math.ceil(p / 2);\n const targetSpread = getSpreadIndex(targetPage);\n const currentSpread = getSpreadIndex(libCurrentPage);\n \n if (targetSpread === currentSpread + 1) {\n this.pageFlip.flipNext();\n } else if (targetSpread === currentSpread - 1) {\n this.pageFlip.flipPrev();\n } else if (targetSpread !== currentSpread) {\n this.pageFlip.turnToPage(targetPage);\n }\n }\n })\n );\n\n // Watch for singleMode changes from DOMWise UI to trigger layout updates\n this.unsubs.push(\n effect(() => {\n isSingleMode.value;\n if (!this.pageFlip) return;\n \n // We use setTimeout to wait for LayoutManager to update the container dimensions first\n setTimeout(() => {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n window.dispatchEvent(new Event('resize'));\n }, 50);\n })\n );\n \n // AutoPlay loop\n this.unsubs.push(\n effect(() => {\n const playing = isAutoPlaying.value;\n const interval = autoPlayInterval.value || 3000;\n \n if (this.autoPlayTimer) {\n clearInterval(this.autoPlayTimer);\n this.autoPlayTimer = null;\n }\n \n if (playing) {\n this.autoPlayTimer = setInterval(() => {\n // Check if we are at the end\n const maxIndex = pages.value.length - 1;\n if (currentPage.peek() >= maxIndex || (currentPage.peek() >= maxIndex - 1 && !isSingleMode.peek())) {\n // If at end, pause or loop\n // Let's just pause\n isAutoPlaying.value = false;\n return;\n }\n this.turnToNextPage();\n }, interval);\n }\n })\n );\n }\n\n public turnToNextPage() {\n if (isSingleMode.value) {\n const nextIdx = currentPage.value + 1;\n if (nextIdx < pages.value.length) {\n currentPage.value = nextIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipNext();\n }\n }\n\n public turnToPrevPage() {\n if (isSingleMode.value) {\n const prevIdx = currentPage.value - 1;\n if (prevIdx >= 0) {\n currentPage.value = prevIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipPrev();\n }\n }\n\n public playSound() {\n if (soundEnabled.value && this.audioEl) {\n this.audioEl.currentTime = 0;\n this.audioEl.play().catch(err => console.warn('Flipbook Audio Play Error:', err));\n }\n }\n\n public update() {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n if (this.pageFlip) {\n this.pageFlip.destroy();\n this.pageFlip = null;\n }\n }\n}\n","import { effect } from '@preact/signals-core';\nimport { isSingleMode, isDoublePageLayout, orientation } from '../state/store';\n\nexport class LayoutManager {\n private wrapperElement: HTMLElement | null = null;\n private sizerElement: HTMLElement | null = null;\n private pageViewport: { width: number; height: number };\n private resizeObserver: ResizeObserver | null = null;\n private orientationMediaQuery: MediaQueryList | null = null;\n private unsubs: Array<() => void> = [];\n public onResizeCallback?: () => void;\n\n constructor(pageViewport: { width: number; height: number }) {\n this.pageViewport = pageViewport;\n }\n\n public init(wrapperElement: HTMLElement, sizerElement: HTMLElement) {\n this.wrapperElement = wrapperElement;\n this.sizerElement = sizerElement;\n\n this.setupResizeObserver();\n this.setupOrientationMedia();\n this.setupStateSync();\n\n // Initial update\n this.updateBookAspectRatio();\n }\n\n private setupStateSync() {\n // When single mode or orientation changes, we need to recalculate the aspect ratio\n this.unsubs.push(\n effect(() => {\n // Accessing signals to track dependencies\n isSingleMode.value;\n orientation.value;\n \n // Debounce slightly to allow DOM to settle if classes were added\n setTimeout(() => this.updateBookAspectRatio(), 10);\n })\n );\n }\n\n private setupResizeObserver() {\n if (typeof ResizeObserver !== 'undefined' && this.wrapperElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateBookAspectRatio();\n });\n this.resizeObserver.observe(this.wrapperElement);\n }\n }\n\n private setupOrientationMedia() {\n if (typeof window !== 'undefined' && window.matchMedia) {\n this.orientationMediaQuery = window.matchMedia(\"(orientation: portrait)\");\n \n const handleOrientationChange = (e: MediaQueryListEvent | MediaQueryList) => {\n if (e.matches) {\n // Mobile device turned to portrait -> force single mode? \n // This can be decided by the business logic, for now we just recalculate\n }\n this.updateBookAspectRatio();\n };\n\n // Add listener\n if (this.orientationMediaQuery.addEventListener) {\n this.orientationMediaQuery.addEventListener('change', handleOrientationChange);\n } else {\n this.orientationMediaQuery.addListener(handleOrientationChange);\n }\n \n // Call once\n handleOrientationChange(this.orientationMediaQuery);\n }\n }\n\n public updateBookAspectRatio() {\n if (!this.wrapperElement || !this.sizerElement) return;\n\n const availWidth = this.wrapperElement.clientWidth;\n const availHeight = this.wrapperElement.clientHeight;\n\n if (availWidth === 0 || availHeight === 0) return;\n\n const width = this.pageViewport.width;\n const height = this.pageViewport.height;\n\n // Standard aspect ratio calculation\n const isPhysicalPortrait = availWidth < availHeight;\n \n // If the library is in landscape mode AND we are not in forced single mode, we need double width\n const isDouble = isDoublePageLayout.value;\n const targetRatio = isDouble ? (width * 2) / height : width / height;\n\n let bookWidth = availWidth;\n let bookHeight = availWidth / targetRatio;\n\n // We must fit the entire book on the screen to prevent unwanted vertical scrolling.\n if (bookHeight > availHeight) {\n bookHeight = availHeight;\n bookWidth = availHeight * targetRatio;\n }\n\n // Apply exact pixel sizes.\n // Ensure the width is ALWAYS an EVEN number to prevent sub-pixel rendering gaps.\n let finalWidth = Math.ceil(bookWidth);\n if (finalWidth % 2 !== 0) finalWidth += 1;\n\n this.sizerElement.style.width = `${finalWidth}px`;\n this.sizerElement.style.height = `${Math.floor(bookHeight)}px`;\n this.sizerElement.style.aspectRatio = '';\n\n if (this.onResizeCallback) {\n this.onResizeCallback();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n\n if (this.resizeObserver && this.wrapperElement) {\n this.resizeObserver.unobserve(this.wrapperElement);\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.orientationMediaQuery) {\n // Remove listeners (safely ignoring for brevity)\n this.orientationMediaQuery = null;\n }\n }\n}\n","import { effect } from '@preact/signals-core';\nimport { zoomState, isZoomed, isSingleMode, currentPage, totalPages } from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\n\nexport class InteractionManager {\n private container: HTMLElement;\n private pageFlipAdapter: PageFlipAdapter;\n private touchStartX: number | null = null;\n private unsubs: Array<() => void> = [];\n\n constructor(container: HTMLElement, pageFlipAdapter: PageFlipAdapter) {\n this.container = container;\n this.pageFlipAdapter = pageFlipAdapter;\n }\n\n public init() {\n this.bindWheel();\n this.bindMouseDrag();\n this.bindTouch();\n this.setupStateSync();\n }\n\n private setupStateSync() {\n this.unsubs.push(\n effect(() => {\n isZoomed.value = zoomState.value.isActive;\n \n if (zoomState.value.isActive) {\n this.container.style.transform = `translate(${zoomState.value.translateX}px, ${zoomState.value.translateY}px) scale(${zoomState.value.scale})`;\n this.container.style.transition = 'none';\n } else {\n this.container.style.transform = '';\n this.container.style.transition = 'transform 0.3s ease';\n }\n })\n );\n }\n\n private bindWheel() {\n this.container.addEventListener('wheel', (e) => {\n if (zoomState.value.isActive) {\n e.preventDefault();\n this.updateZoomPan(\n zoomState.value.translateX - e.deltaX,\n zoomState.value.translateY - e.deltaY\n );\n }\n }, { passive: false });\n }\n\n private bindMouseDrag() {\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialTx = 0;\n let initialTy = 0;\n\n this.container.addEventListener('mousedown', (e) => {\n if (zoomState.value.isActive) {\n isDragging = true;\n startX = e.clientX;\n startY = e.clientY;\n initialTx = zoomState.value.translateX;\n initialTy = zoomState.value.translateY;\n this.container.style.cursor = 'grabbing';\n }\n });\n\n window.addEventListener('mousemove', (e) => {\n if (!isDragging || !zoomState.value.isActive) return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n this.updateZoomPan(initialTx + dx, initialTy + dy);\n });\n\n window.addEventListener('mouseup', () => {\n if (isDragging) {\n isDragging = false;\n this.container.style.cursor = zoomState.value.isActive ? 'grab' : '';\n }\n });\n }\n\n private bindTouch() {\n let isDragging = false;\n let startTx = 0;\n let startTy = 0;\n\n this.container.addEventListener('touchstart', (e) => {\n if (e.touches.length === 1) {\n if (!zoomState.value.isActive) {\n this.touchStartX = e.touches[0].clientX;\n } else {\n isDragging = true;\n this.touchStartX = e.touches[0].clientX;\n const touchStartY = e.touches[0].clientY;\n startTx = zoomState.value.translateX;\n startTy = zoomState.value.translateY;\n (this.container as any)._touchStartY = touchStartY;\n }\n }\n }, { passive: true });\n\n this.container.addEventListener('touchmove', (e) => {\n if (isDragging && zoomState.value.isActive && e.touches.length === 1 && this.touchStartX !== null) {\n e.preventDefault();\n const dx = e.touches[0].clientX - this.touchStartX;\n const dy = e.touches[0].clientY - (this.container as any)._touchStartY;\n this.updateZoomPan(startTx + dx, startTy + dy);\n }\n }, { passive: false });\n\n this.container.addEventListener('touchend', (e) => {\n if (this.touchStartX !== null && !zoomState.value.isActive && isSingleMode.value && e.changedTouches.length === 1) {\n const diffX = e.changedTouches[0].clientX - this.touchStartX;\n if (diffX > 50 && currentPage.value > 0) {\n this.pageFlipAdapter.turnToPrevPage();\n } else if (diffX < -50 && currentPage.value < totalPages.value - 1) {\n this.pageFlipAdapter.turnToNextPage();\n }\n }\n this.touchStartX = null;\n isDragging = false;\n }, { passive: true });\n }\n\n public zoomIn() {\n let newScale = zoomState.value.scale + 0.5;\n if (newScale > 3) newScale = 3;\n \n zoomState.value = { \n ...zoomState.value, \n isActive: newScale > 1, \n scale: newScale \n };\n if (newScale > 1) {\n this.container.style.cursor = 'grab';\n }\n }\n\n public zoomOut() {\n let newScale = zoomState.value.scale - 0.5;\n if (newScale <= 1) {\n newScale = 1;\n zoomState.value = { ...zoomState.value, isActive: false, translateX: 0, translateY: 0, scale: 1 };\n this.container.style.cursor = '';\n } else {\n zoomState.value = { ...zoomState.value, isActive: true, scale: newScale };\n }\n }\n\n private updateZoomPan(x: number, y: number) {\n zoomState.value = {\n ...zoomState.value,\n translateX: x,\n translateY: y\n };\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n }\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookPageKind = 'single' | 'spread' | 'cover';\nexport type FlipbookCropMode = 'full' | 'left' | 'right';\nexport type FlipbookSplitDirection = 'ltr' | 'rtl';\n\nexport interface FlipbookPageAsset {\n id?: string;\n pageNumber?: number;\n pageNumbers?: number[];\n kind?: FlipbookPageKind;\n splitDirection?: FlipbookSplitDirection;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface NormalizedFlipbookPage {\n index: number;\n assetId: string;\n pageNumber: number;\n cropMode: FlipbookCropMode;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport function isFlipbookPageAsset(value: unknown): value is FlipbookPageAsset {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as FlipbookPageAsset;\n return typeof candidate.normal === 'string'\n && typeof candidate.low === 'string'\n && typeof candidate.thumb === 'string';\n}\n\nfunction getAssetPageNumbers(asset: FlipbookPageAsset): number[] {\n if (Array.isArray(asset.pageNumbers) && asset.pageNumbers.length > 0) {\n return asset.pageNumbers;\n }\n\n if (typeof asset.pageNumber === 'number') {\n if (asset.kind === 'spread') return [asset.pageNumber, asset.pageNumber + 1];\n return [asset.pageNumber];\n }\n\n return [];\n}\n\nfunction getSpreadCropModes(splitDirection: FlipbookSplitDirection): FlipbookCropMode[] {\n return splitDirection === 'rtl' ? ['right', 'left'] : ['left', 'right'];\n}\n\nexport function normalizeFlipbookPages(assets: FlipbookPageAsset[]): NormalizedFlipbookPage[] {\n const normalized: NormalizedFlipbookPage[] = [];\n let fallbackPageNumber = 1;\n\n assets.forEach((asset, assetIndex) => {\n const kind = asset.kind ?? 'single';\n const assetId = asset.id ?? `asset-${assetIndex}`;\n const splitDirection = asset.splitDirection ?? 'ltr';\n const pageNumbers = getAssetPageNumbers(asset);\n\n if (kind === 'spread') {\n const spreadNumbers = pageNumbers.length >= 2 ? pageNumbers.slice(0, 2) : [fallbackPageNumber, fallbackPageNumber + 1];\n const cropModes = getSpreadCropModes(splitDirection);\n\n spreadNumbers.forEach((pageNumber, spreadIndex) => {\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: cropModes[spreadIndex] ?? 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n });\n\n fallbackPageNumber = spreadNumbers[spreadNumbers.length - 1] + 1;\n return;\n }\n\n const pageNumber = pageNumbers[0] ?? fallbackPageNumber;\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n fallbackPageNumber = pageNumber + 1;\n });\n\n return normalized;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport flipbookEngineStyles from '../styles/flipbook-engine.css?inline';\n\nexport type FlipbookThemeMode = 'auto' | 'light' | 'dark';\n\nexport interface ThemeConfiguration {\n theme?: FlipbookThemeMode;\n primaryColor?: string;\n cssVariables?: Record<string, string>;\n}\n\nlet styleInjected = false;\n\nexport function ensureRuntimeStyles() {\n if (typeof document === 'undefined' || styleInjected) return;\n\n const styleId = 'flipbook-engine-runtime-styles';\n if (document.getElementById(styleId)) {\n styleInjected = true;\n return;\n }\n\n const styleEl = document.createElement('style');\n styleEl.id = styleId;\n styleEl.textContent = flipbookEngineStyles;\n document.head.appendChild(styleEl);\n styleInjected = true;\n}\n\nexport function applyThemeConfiguration(container: HTMLElement, config: ThemeConfiguration) {\n container.classList.add('bk-container');\n container.classList.remove('bk-theme-light', 'bk-theme-dark');\n\n if (config.theme === 'light') container.classList.add('bk-theme-light');\n if (config.theme === 'dark') container.classList.add('bk-theme-dark');\n\n if (config.primaryColor) {\n container.style.setProperty('--accentcolor', config.primaryColor);\n }\n\n const userVariables = config.cssVariables ?? {};\n Object.entries(userVariables).forEach(([name, value]) => {\n const variableName = name.startsWith('--') ? name : `--${name}`;\n container.style.setProperty(variableName, value);\n });\n}\n","import * as pdfjsLib from 'pdfjs-dist';\nimport { App } from './components/App';\nimport { PageFlipAdapter } from './adapters/PageFlipAdapter';\nimport { LayoutManager } from './core/LayoutManager';\nimport { InteractionManager } from './core/InteractionManager';\nimport { \n initStore, \n currentPage, \n isSingleMode, \n zoomState,\n themeMode,\n primaryColor,\n showThumbs,\n allowDownload,\n whiteLabel,\n soundEnabled,\n isAutoPlaying,\n autoPlayInterval\n} from './state/store';\nimport { isFlipbookPageAsset, normalizeFlipbookPages, type FlipbookPageAsset, type NormalizedFlipbookPage } from './model/pages';\nimport { applyThemeConfiguration, ensureRuntimeStyles, type FlipbookThemeMode } from './theme/theme';\nimport { resolveMessages, type FlipbookLocale, type PartialFlipbookMessages } from './i18n/service';\nimport './styles/flipbook-engine.css';\n\n// @ts-ignore\nconst pdfWorkerUrl = new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url).href;\npdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorkerUrl;\n\nexport interface FlipbookEngineOptions {\n allowDownload?: boolean;\n showThumbs?: boolean;\n primaryColor?: string;\n soundEnabled?: boolean;\n soundUrl?: string;\n flippingTime?: number;\n maxShadowOpacity?: number;\n backgroundColor?: string;\n backgroundImage?: string;\n whiteLabel?: boolean;\n watermarkUrl?: string;\n theme?: FlipbookThemeMode;\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n className?: string;\n cssVariables?: Record<string, string>;\n onDownload?: (url: string) => void;\n singleMode?: boolean;\n isSingleMode?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n}\n\nexport interface PageImages extends FlipbookPageAsset {\n pageNumber: number;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface FlipbookEngineEventMap {\n init: { totalPages: number };\n destroy: undefined;\n pageChange: { currentPage: number; pageNumber: number; totalPages: number; isSingle: boolean };\n zoomChange: { zoom: number; isActive: boolean };\n thumbsToggle: { showThumbs: boolean };\n singlePageModeChange: { isSingle: boolean };\n orientationChange: { orientation: 'landscape' | 'portrait' };\n}\n\nexport type FlipbookEngineEventName = keyof FlipbookEngineEventMap;\ntype FlipbookEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;\ntype AnyFlipbookEventHandler = (payload: FlipbookEngineEventMap[FlipbookEngineEventName]) => void;\n\nexport class FlipbookEngine {\n private static readonly DEFAULT_PAGE_VIEWPORT = { width: 420, height: 594 };\n private container: HTMLElement | null = null;\n private options: FlipbookEngineOptions;\n \n // Core Managers\n private pageFlipAdapter: PageFlipAdapter | null = null;\n private layoutManager: LayoutManager | null = null;\n private interactionManager: InteractionManager | null = null;\n \n private pdfDoc: any = null;\n private listeners: Partial<Record<FlipbookEngineEventName, Set<AnyFlipbookEventHandler>>> = {};\n\n constructor(private selector: string | HTMLElement, options: FlipbookEngineOptions = {}) {\n this.options = { \n allowDownload: true, \n showThumbs: true, \n primaryColor: '#7367f0', \n theme: 'auto', \n soundUrl: 'https://flipbookengine.com/Content/page-flip.mp3',\n autoPlayInterval: 3000,\n ...options \n };\n }\n\n public async init(pdfUrl: string, imageList?: Array<PageImages | FlipbookPageAsset>) {\n if (typeof this.selector === 'string') {\n this.container = document.querySelector(this.selector) as HTMLElement;\n } else {\n this.container = this.selector;\n }\n\n if (!this.container) return;\n\n this.destroy(true);\n\n let resolvedPages: NormalizedFlipbookPage[] = [];\n let viewport = { ...FlipbookEngine.DEFAULT_PAGE_VIEWPORT };\n\n if (imageList && imageList.length > 0) {\n const sourceAssets = imageList.filter(isFlipbookPageAsset);\n resolvedPages = normalizeFlipbookPages(sourceAssets);\n \n // Resolve aspect ratio from first page\n const referencePage = resolvedPages[0];\n if (referencePage) {\n const size = await this.loadImageSize(referencePage.low || referencePage.normal);\n if (size) {\n const actualWidth = referencePage.cropMode !== 'full' ? size.width / 2 : size.width;\n const aspectRatio = actualWidth / size.height;\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n }\n } else if (pdfUrl) {\n try {\n const loadingTask = pdfjsLib.getDocument(pdfUrl);\n this.pdfDoc = await loadingTask.promise;\n \n for (let i = 1; i <= this.pdfDoc.numPages; i++) {\n resolvedPages.push({\n index: i - 1,\n assetId: `pdf-page-${i}`,\n pageNumber: i,\n cropMode: 'full',\n normal: '',\n low: '',\n thumb: ''\n });\n }\n\n const firstPage = await this.pdfDoc.getPage(1);\n const vp = firstPage.getViewport({ scale: 1.0 });\n const aspectRatio = vp.width / vp.height;\n\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n } catch (e) {\n console.error(\"PDF load failed:\", e);\n return;\n }\n }\n\n if (!resolvedPages.length) return;\n\n // 1. Initialize State\n initStore(this.options, resolvedPages.length, resolvedPages, !!pdfUrl);\n\n // 2. Setup DOM container\n ensureRuntimeStyles();\n applyThemeConfiguration(this.container, this.options);\n this.container.innerHTML = '';\n\n // 3. Mount App Component\n // In DOMWise, TSX returns actual DOM nodes\n let bookWrapperEl: HTMLElement;\n let bookSizerEl: HTMLElement;\n let bookContainerEl: HTMLElement;\n \n const pageFlipAdapterRef = { current: null as any };\n const interactionManagerRef = { current: null as any };\n\n // Pass refs to capture DOM elements created by DOMWise\n const appNode = App({\n pageFlipAdapterRef,\n interactionManagerRef,\n bookWrapperRef: (el) => bookWrapperEl = el,\n bookSizerRef: (el) => bookSizerEl = el,\n bookContainerRef: (el) => bookContainerEl = el,\n className: this.options.className,\n onDownload: () => {\n if (this.options.onDownload) this.options.onDownload(pdfUrl);\n else window.open(pdfUrl, '_blank');\n }\n });\n\n this.container.appendChild(appNode as unknown as Node);\n\n // 4. Initialize Core Managers\n this.layoutManager = new LayoutManager(viewport);\n this.layoutManager.onResizeCallback = () => {\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.update();\n }\n };\n this.layoutManager.init(bookWrapperEl!, bookSizerEl!);\n\n this.pageFlipAdapter = new PageFlipAdapter(bookContainerEl!, this.options);\n pageFlipAdapterRef.current = this.pageFlipAdapter;\n \n // Wait a tick for styles to apply before initializing PageFlip\n setTimeout(() => {\n this.pageFlipAdapter!.init(viewport.width, viewport.height);\n \n this.interactionManager = new InteractionManager(bookWrapperEl!, this.pageFlipAdapter!);\n this.interactionManager.init();\n interactionManagerRef.current = this.interactionManager;\n\n this.emit('init', { totalPages: resolvedPages.length });\n }, 10);\n }\n\n private loadImageSize(src: string): Promise<{ width: number; height: number } | null> {\n return new Promise(resolve => {\n const image = new Image();\n image.onload = () => resolve({ width: image.naturalWidth || image.width, height: image.naturalHeight || image.height });\n image.onerror = () => resolve(null);\n image.src = src;\n });\n }\n\n public goToPage(targetIdx: number) {\n currentPage.value = targetIdx;\n }\n\n public nextPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToNextPage();\n }\n\n public prevPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToPrevPage();\n }\n\n public setSingleMode(isSingle: boolean) {\n isSingleMode.value = isSingle;\n }\n\n public updateOptions(options: Partial<FlipbookEngineOptions>) {\n this.options = { ...this.options, ...options };\n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n\n if (this.container) {\n applyThemeConfiguration(this.container, this.options);\n }\n }\n\n public setPages(imageList: Array<PageImages | FlipbookPageAsset>, pdfUrl?: string) {\n // Just recall init, for simplicity in this facade\n this.init(pdfUrl || '', imageList);\n }\n\n public destroy(clearMarkup = true) {\n if (this.pageFlipAdapter) this.pageFlipAdapter.destroy();\n if (this.layoutManager) this.layoutManager.destroy();\n if (this.interactionManager) this.interactionManager.destroy();\n\n this.pageFlipAdapter = null;\n this.layoutManager = null;\n this.interactionManager = null;\n this.pdfDoc = null;\n\n if (clearMarkup && this.container) {\n this.container.innerHTML = '';\n }\n\n this.emit('destroy', undefined);\n }\n\n public on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n const listeners = this.listeners[eventName] ?? new Set<AnyFlipbookEventHandler>();\n listeners.add(handler as AnyFlipbookEventHandler);\n this.listeners[eventName] = listeners;\n return () => this.off(eventName, handler);\n }\n\n public off<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n this.listeners[eventName]?.delete(handler as AnyFlipbookEventHandler);\n }\n\n private emit<T extends FlipbookEngineEventName>(eventName: T, payload: FlipbookEngineEventMap[T]) {\n this.listeners[eventName]?.forEach((listener) => {\n (listener as FlipbookEventHandler<T>)(payload);\n });\n }\n}\n\nconst globalScope = globalThis as any;\nconst flipbookNamespace = globalScope.FlipbookEngine || {};\nflipbookNamespace.FlipbookEngine = FlipbookEngine;\nglobalScope.FlipbookEngine = flipbookNamespace;\n"],"names":["isNodeJS","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","AnnotationEditorPrefix","AnnotationEditorType","AnnotationEditorParamsType","PermissionFlag","MeshFigureType","TextRenderingMode","util_ImageKind","AnnotationType","AnnotationBorderStyleType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","dots","stringToUTF8String","absoluteUrl","updateUrlHash","hash","allowRel","res","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","i","chunkEnd","chunk","stringToBytes","str","string32","isLittleEndian","buffer8","isEvalSupported","util_FeatureTest","platform","userAgent","_a","_b","hexNumbers","n","_Util_static","getExtremumOnCurve_fn","getExtremum_fn","Util","r","b","dm","transform","minMax","temp","m1","m2","m","md","p","pos","p0","p1","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","a","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","t","mt","tt","ttt","delta","sqrtDelta","__privateAdd","NormalizeRegex","NormalizationMap","normalizeUnicode","_","p2","getUuid","buf","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","MathClamp","v","min","max","toBase64Util","arr","fromBase64Util","fn","resolve","numbers","XfaText","xfa","items","walk","node","child","XfaLayer","html","id","element","storage","intent","storedData","event","option","linkService","attributes","isHTMLAnchorElement","key","parameters","root","rootHtml","isNotForRichText","rootDiv","textDivs","stack","parent","childHtml","el","SVG_NS","_PixelsPerInch","__publicField","PixelsPerInch","fetchData","type","isValidFetchUrl","response","reject","request","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","topLeft","bottomRight","RenderingCancelledException","extraDelay","isDataScheme","ii","isPdfFile","filename","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","decode","decoded","pdfRegex","values","keys","hashFilename","StatTimer","outBuf","longest","start","end","noContextMenu","e","stopEvent","deprecated","_regex","PDFDateString","input","__privateGet","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","setLayerDimensions","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","w","h","widthStr","heightStr","OutputScale","pixelRatio","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","winPixels","SupportedImageMimeTypes","ColorScheme","CSSConstants","applyOpacity","g","opacity","white","RGBToHSL","rgb","l","HSLToRGB","hsl","s","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","dir","className","container","fragment","lines","line","makePathFromDrawOPS","data","path","_toolbar","_colorPicker","_editor","_buttons","_altText","_comment","_commentButtonDivider","_signatureDescriptionButton","_l10nRemove","_EditorToolbar_static","pointerDown_fn","_EditorToolbar_instances","focusIn_fn","focusOut_fn","addListenersToElement_fn","divider_get","_EditorToolbar","editor","editToolbar","signal","buttons","position","editorType","_uiManager","button","altText","comment","beforeElement","divider","colorPicker","signatureManager","tool","beforeSelector","description","EditorToolbar","_FloatingToolbar_instances","render_fn","getLastPoint_fn","makeButton_fn","FloatingToolbar","uiManager","boxes","isLTR","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","bindEvents","names","_pointerId","_pointerIds","_moveTimestamp","_pointerType","_CurrentPointers","pointerId","pointerType","timeStamp","CurrentPointers","_id","IdManager","__privateWrapper","_baseId","_cache","_ImageManager_instances","get_fn","_ImageManager","svg","image","promise","file","lastModified","size","blobPromise","blob","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","_commands","_locked","_maxSize","_position","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","_KeyboardManager_instances","serialize_fn","KeyboardManager","callbacks","isMac","callback","isMacKey","self","bubbles","checker","_ColorManager","RGB","ColorManager","_abortController","_activeEditor","_allEditableAnnotations","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_commentManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_floatingToolbar","_idManager","_isEnabled","_isPointerDown","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_missingCanvases","_mlManager","_mode","_selectedEditors","_selectedTextNode","_signatureManager","_pageColors","_showAllStates","_pdfDocument","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_viewerAlert","_updateModeCapability","_AnnotationEditorUIManager_instances","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","displayFloatingToolbar_fn","selectionChange_fn","onSelectEnd_fn","addSelectionListener_fn","addFocusManager_fn","removeFocusManager_fn","addKeyboardManager_fn","removeKeyboardManager_fn","addCopyPasteListeners_fn","removeCopyPasteListeners_fn","addDragAndDropListeners_fn","dispatchUpdateStates_fn","dispatchUpdateUI_fn","enableAll_fn","disableAll_fn","addEditorToLayer_fn","lastSelectedEditor_get","isEmpty_fn","selectEditors_fn","_AnnotationEditorUIManager","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","evt","proto","arrowChecker","textInputChecker","_self","small","big","_c","_d","_e","_f","_g","_h","_i","layer","ac","pair","map","hasHCM","isNameForHCM","colorName","firstTime","posX","posY","pageIndex","uid","isSelected","visibility","pageNumber","onEditorsRendered","mode","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","isNoneMode","annotationId","storedValue","messageId","activeElement","lastEditor","lastActiveElement","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","isEditing","types","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","editComment","editorClass","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","visible","updateButton","mustWait","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","editorId","currentLayer","activeLayer","pointerup","promises","AnnotationEditorUIManager","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","_AltText_instances","label_get","setState_fn","_AltText","l10n","label","onClick","guessedText","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_commentStandaloneButton","_commentToolbarButton","_commentWasFromKeyBoard","_initialText","_richText","_text","_date","_deleted","_popupPosition","_Comment_instances","Comment$1","parentX","parentY","selected","hasPopup","parentDimensions","richText","isStandalone","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_pointerDownAC","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","_TouchManager_instances","onTouchStart_fn","onTouchMove_fn","onTouchEnd_fn","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","pointerDownAC","opts","cancelPointerDown","opt","onTouchEnd","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","TouchManager","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_resizersDiv","_lastPointerCoords","_savedDimensions","_fakeAnnotation","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","_AnnotationEditor_instances","translate_fn","_AnnotationEditor_static","rotatePoint_fn","getRotationMatrix_fn","createResizers_fn","resizerPointerdown_fn","resize_fn","addResizeToUndoStack_fn","resizerPointermove_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","selectOnPointerEvent_fn","setUpDragSession_fn","addFocusListeners_fn","resizerKeydown_fn","resizerBlur_fn","resizerFocus_fn","setResizerTabIndex_fn","stopResizing_fn","_AnnotationEditor","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","target","baseX","baseY","bx","by","_borderLineWidth","parentScale","toolbarButtons","editToolbarDiv","Comment","date","trY","blX","blY","trX","contents","shiftX","shiftY","creationDate","modificationDate","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","action","annotationLayer","content","firstElementChild","angle","classes","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","hasDraggingStarted","cancelDrag","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","_modified","_modifiedIds","_editorsMap","_storage","_AnnotationStorage_instances","setModified_fn","AnnotationStorage","defaultValue","modified","entry","val","PrintAnnotationStorage","transfer","hasBitmap","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","editorStats","counters","count","ids","_serializable","clone","_systemFonts","FontLoader","ownerDocument","styleElement","nativeFontFace","rule","styleSheet","disableFontFace","_inspectFont","loadedName","src","fontFace","font","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","_fontData","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","css","objs","character","objId","cmds","bbox","_buffer","_view","_decoder","_CssFontInfo_instances","readString_fn","_CssFontInfo","buffer","encoder","encodedStrings","stringsLength","encoded","view","index","CssFontInfo","_SystemFontInfo_instances","_SystemFontInfo","encodedStyleStyle","encodedStyleWeight","lengthEstimate","styleLength","weightLength","weight","SystemFontInfo","_OFFSET_NUMBERS","_OFFSET_BBOX","_OFFSET_FONT_MATRIX","_OFFSET_DEFAULT_VMETRICS","_OFFSET_STRINGS","_FontInfo_instances","readBoolean_fn","readNumber_fn","_FontInfo","fontMatrix","defaultVMetrics","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","coord","metric","byteOffset","bitOffset","stringData","FontInfo","_KIND","_HAS_BBOX","_HAS_BACKGROUND","_SHADING_TYPE","_N_COORD","_N_COLOR","_N_STOP","_N_FIGURES","_PatternInfo","ir","kind","coords","colorStops","figures","shadingType","background","nCoord","nColor","nStop","nFigures","figuresSize","figure","byteLen","dataView","u8data","hex","hasBBox","hasBackground","stops","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","PatternInfo","FontPathInfo","getUrlProp","getDataProp","getFactoryUrlProp","isRefProxy","isNameProxy","isValidExplicitDest","_listeners","_deferred","LoopbackPort","listener","rmAbort","onAbort","CallbackKind","StreamKind","onFn","wrapReason","_messageAC","_MessageHandler_instances","onMessage_fn","createStreamSink_fn","processStreamMessage_fn","deleteStreamController_fn","MessageHandler","sourceName","targetName","comObj","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","reason","cancelCapability","result","streamSink","lastDesiredSize","streamController","dataReason","_enableHWA","BaseCanvasFactory","enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","_DOMFilterFactory_instances","cache_get","hcmCache_get","defs_get","createTables_fn","createUrl_fn","addLuminosityConversion_fn","addGrayConversion_fn","createFilter_fn","appendFeFunc_fn","addTransferMapConversion_fn","addTransferMapAlphaConversion_fn","getRGB_fn","DOMFilterFactory","docId","tableR","tableG","tableB","filter","fgRGB","bgRGB","table","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","j","mapR","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","floor","ceil","expandBBox","EMPTY_BBOX","_bboxes","_coords","BBoxReader","bboxes","ensureDebugMetadata","_simple","_incremental","_namedDependencies","_savesStack","_markedContentStack","_baseTransformStack","_clipBox","_pendingBBox","_pendingBBoxIdx","_pendingDependencies","_operations","_fontBBoxTrustworthy","_canvasWidth","_canvasHeight","_bboxesCoords","_debugMetadata","_CanvasDependencyTracker_instances","initializeBBoxes_fn","CanvasDependencyTracker","operationsCount","recordDebugMetadata","opIdx","previous","lastSave","idx","depName","fallbackIdx","dep","clipBox","intersection","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","measure","dependencyName","dependencyNames","pendingDependencies","simple","incremental","preserve","metadata","dependencies","depIdx","saveIdx","deps","operation","oldBBoxes","_dependencyTracker","_opIdx","_ignoreBBoxes","_nestingLevel","_savesLevel","_CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","CanvasNestedDependencyTracker","Dependencies","PathType","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","firstPoint","secondPoint","colorStop","owner","inverse","pathType","pattern","precision","n1","n2","ps","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","p3","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","k","x1_","x2_","drawFigure","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","current","fillStyle","strokeStyle","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","CanvasExtraState","preInit","xStrokePad","yStrokePad","intersect","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics_instances","restoreInitialState_fn","drawFilter_fn","getScaledPath_fn","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","fallback","transparency","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","depObjId","objsPool","cache","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","clip","old","op","outerExtraSize","consumePath","strokeColor","newPath","needRestore","paths","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","scaledPath","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","widthAdvanceScale","simpleFillText","needsFill","needsStroke","lineWidth","chars","glyph","joinedChars","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","renderingOpIdx","inv","group","currentCtx","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","tag","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","_port","_src","GlobalWorkerOptions","_map","_data","Metadata","parsedData","INTERNAL","_isDisplay","_isPrint","_userSet","_visible","OptionalContentGroup","renderingIntent","usage","rbGroups","print","internal","userSet","_cachedGetHash","_groups","_initialHash","_order","_OptionalContentConfig_instances","evaluateVisibilityExpression_fn","OptionalContentConfig","on","off","preserveRB","rbGroup","otherId","state","operator","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","total","found","rangeReader","reader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","stream","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","parts","quotindex","extvalue","encodingend","charset","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","error","readableStream","INITIAL_DATA","_objs","_PDFObjects_instances","ensureObj_fn","PDFObjects","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","_pendingTextLayers","_TextLayer_instances","processItems_fn","appendText_fn","layout_fn","_TextLayer_static","getCtx_fn","ensureCtxFont_fn","ensureMinFontSizeComputed_fn","getAscent_fn","_TextLayer","textContentSource","isWindows","isFirefox","pump","onBefore","abortEx","textContentItemsStr","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","divStyle","shouldScaleText","absScaleX","absScaleY","br","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","TextLayer","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","_PDFDocumentLoadingTask","_progressiveDoneListeners","_progressiveReadListeners","_progressListeners","_rangeListeners","PDFDocumentProxy","pdfInfo","ref","pageIndexesToSkip","pageInfos","keepLoadedFonts","_pendingCleanup","_PDFPageProxy_instances","tryCleanup_fn","PDFPageProxy","pageInfo","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","intentPrint","recordForDebugger","shouldRecordOperations","complete","internalRenderTask","recordedBBoxes","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","renderTasks","_messageHandler","_webWorker","_fakeWorkerId","_isWorkerDisabled","_workerPorts","_PDFWorker_instances","resolve_fn","initializeFromPort_fn","initialize_fn","setupFakeWorker_fn","_PDFWorker_static","mainThreadWorkerMessageHandler_get","_PDFWorker","port","cachedPort","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","workerHandler","otherUrl","base","other","wrapper","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","_WorkerTransport_instances","cacheSimpleMethod_fn","loadingTask","factory","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","err","exportedData","exportedError","fontData","imageRef","pageProxy","imageData","cachedPromise","results","refStr","_internalRenderTask","RenderTask","separateAnnots","_rAF","_canvasInUse","_InternalRenderTask","useRequestAnimationFrame","version","build","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","_ColorPicker_instances","getDropdownRoot_fn","colorSelect_fn","keyDown_fn","openDropdown_fn","isDropdownVisible_get","_ColorPicker","swatch","dropdown","ColorPicker","_input","_BasicColorPicker","colorType","BasicColorPicker","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_updates","_hasBorder","_popupElement","_AnnotationElement_instances","setRectEdited_fn","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","quadPoints","inkLists","inkList","popup","newPopup","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","styleName","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popupData","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","EditorAnnotationElement","_LinkAnnotationElement_instances","setInternalLink_fn","bindAttachment_fn","bindSetOCGState_fn","link","isBound","destination","overlaidText","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","datetimeFormat","datetimeType","timeStep","hasDateOrTime","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","displayValue","selectChild","indices","change","_PopupAnnotationElement_instances","createPopup_fn","elements","hasCommentManager","PopupElement","_boundKeyDown","_boundHide","_boundShow","_boundToggle","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_popupAbortController","_commentButton","_commentButtonPosition","_rect","_titleObj","_wasVisible","_firstElement","_commentText","_PopupElement_instances","addEventListeners_fn","setCommentButtonPosition_fn","updateCommentButtonPosition_fn","updateColor_fn","html_get","fontSize_get","fontColor_get","makePopupContent_fn","setPosition_fn","toggle_fn","show_fn","hide_fn","titleObj","parentRect","open","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","header","title","popupLines","popupContent","lineAttributes","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","points","polyline","_polylinesGroupElement","_polylines","_InkAnnotationElement_instances","getTransform_fn","thickness","mark","underline","strikeout","_trigger","_FileAttachmentAnnotationElement_instances","download_fn","trigger","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","_linkService","_hasAriaAttributesFromStructTree","_AnnotationLayer_instances","addElementsToDOM_fn","setAnnotationCanvasMap_fn","_AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","annotations","popupToElements","popupAnnotations","elementParams","isPopupAnnotation","rendered","contentElement","ariaAttributes","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","firstChild","editableAnnotation","AnnotationLayer","EOL_PATTERN","_content","_editorDivId","_editModeAC","_fontSize","_FreeTextEditor_instances","updateFontSize_fn","extractText_fn","setEditorDimensions_fn","_FreeTextEditor_static","getNodeContent_fn","setContent_fn","serializeContent_fn","deserializeContent_fn","hasElementChanged_fn","_FreeTextEditor","savedText","newText","setText","paste","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","padding","textPosition","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","sx","sy","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN_DIFF","_MIN","_FreeDrawOutliner_instances","getLastCoords_fn","toSVGPathTwoPoints_fn","toSVGPathStart_fn","toSVGPathEnd_fn","getOutlineTwoPoints_fn","getOutlineStart_fn","getOutlineEnd_fn","_FreeDrawOutliner","scaleFactor","innerMargin","diffX","diffY","diffD","K","nX","nY","thX","thY","outline","FreeDrawOutline","last","N","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_outline","_FreeDrawOutline_instances","computeMinMax_fn","outliner","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","_firstPoint","_lastPoint","_verticalEdges","_intervals","_HighlightOutliner_instances","getOutlines_fn","binarySearch_fn","insert_fn","remove_fn","breakEdge_fn","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_outlineId","_methodOfCreation","_HighlightEditor_instances","createOutlines_fn","createFreeOutlines_fn","updateThickness_fn","changeThickness_fn","cleanDrawLayer_fn","addToDrawLayer_fn","_HighlightEditor_static","rotateBbox_fn","keydown_fn","setCaret_fn","getRotation_fn","serializeBoxes_fn","serializeOutlines_fn","highlightMove_fn","endHighlight_fn","_HighlightEditor","mustBeSelected","drawLayer","highlightDiv","direction","clipPathId","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","HighlightEditor","_svgProperties","DrawingOptions","_drawOutlines","_mustBeCommitted","_currentDraw","_currentDrawingAC","_currentDrawingOptions","_DrawingEditor_instances","createDrawOutlines_fn","createDrawing_fn","convertToParentSpace_fn","convertToDrawSpace_fn","updateBbox_fn","rotateBox_fn","_DrawingEditor","p1Keys","_options","propertyName","_drawingOptions","savedValue","setter","_x","_y","drawDiv","_parentWidth","_parentHeight","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","pW","pH","parentRotation","DrawingEditor","_lines","_lastSVGPath","_lastIndex","_InkDrawOutliner_instances","normalizePoint_fn","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_currentRotation","_parentScale","_InkDrawOutline_instances","getMarginComponents_fn","getBBoxWithNoMargin_fn","computeBbox_fn","serializedLines","serializedPoints","rescaleFn","newLines","len","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","margin","InkDrawingOptions","viewerParameters","_InkEditor_instances","_InkEditor","_drawId","stroke","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","_PARAMETERS","_SignatureExtractor_static","neighborIndexToId_fn","_neighborIdToIndex","clockwiseNonZero_fn","counterClockwiseNonZero_fn","findContours_fn","douglasPeuckerHelper_fn","douglasPeucker_fn","bilateralFilter_fn","getHistogram_fn","toUint8_fn","guessThreshold_fn","getGrayPixels_fn","SignatureExtractor","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","histogram","threshold","contourList","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","minDiff","maxDiff","outlinesLength","dx","bufferType","headerLength","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","i0","j0","kk","shiftI","shiftJ","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","out","center","sum","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","isteps","grayImage","SignatureOptions","DrawnSignatureOptions","_isExtracted","_description","_signatureData","_signatureUUID","_SignatureEditor","hasDescriptionStats","_isCopy","uuid","heightInPage","toolbar","outlineData","fontInfo","SignatureEditor","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_missingCanvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","_StampEditor_instances","getBitmapFetched_fn","getBitmapDone_fn","getBitmap_fn","createCanvas_fn","scaleBitmap_fn","drawBitmap_fn","serializeBitmap_fn","StampEditor","hasAltTextStats","updateAltTextData","bitmapId","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","changes","area","prevData","fromId","MAX_RATIO","toUrl","isSamePageIndex","isSameAltText","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","_textLayerDblClickAC","_lastPointerDownTimestamp","_AnnotationEditorLayer_instances","allEditorsIterator_get","textLayerPointerDown_fn","currentEditorType_get","createNewEditor_fn","getCenterPoint_fn","cleanup_fn","_AnnotationEditorLayer","editorTypes","classList","annotationElementIds","editable","clientX","clientY","lastPointerDownTimestamp","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","isCentered","currentMode","relatedTarget","oldRotation","AnnotationEditorLayer","_mapping","_toUpdate","_DrawLayer_static","setBox_fn","_DrawLayer_instances","createSVG_fn","createClipPath_fn","updateProperties_fn","_DrawLayer","isPathUpdatable","hasClip","pathId","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","pathElement","clipPathUse","DrawLayer","initPropHookSymbol","isElement","isString","isNumber","isObject","isComponentClass","isArrayLike","isPropHook","isVisibleChild","isRefObject","maybeRef","setRef","initComponentClass","Class","attr","instance","MathMLNamespace","mathMLOnlyTags","svgOnlyTags","nonPresentationSVGAttributes","SVGNamespace","jsxNamespaceURISymbol","currentNamespaceURI","jsxTypeKeySymbol","shadowRootKey","isShadowRoot","disposingListenersSymbol","lifecycleRootSymbol","getDisposingListeners","disposingEventListener","ev","invokeDisposingListeners","disposingListeners","invokeFor","listeners","disposer","addDisposingListener","regKey","existing","removeDisposingListener","currentLifecycleRoot","isSignalLike","_dispose","_node","_SignalObserveArgsImpl_instances","delDispose_fn","addDispose_fn","SignalObserveArgsImpl","signal2","lifecycleRoot","lifecycleNode","observeSignal","appendChild","fragmentPlaceholderIdx","placeholderPrefix","isPlaceholder","isFragmentWithPlaceholder","replaceNode","oldNode","newNode","wrapAsNode","appendChildrenWithSignal","prevNode","prevNodeNew2","appendChildren","prevNodeNew","shadowRoot","unsignalizePrevClass","clearPrevClass","prevClassNames","cls","assignClass","applyClassName","newList","prevList","prefixKey","prefix","isUnitlessNumber","rec","prefixes","setStylePropValue","clearPrevStyle","assignStyle","XLinkNamespace","XMLNamespace","normalizeAttribute","s2","separator","mappedKeys","assignProp","v2","dataKey","dataValue","useCapture","eventHandler","attribute","nodeEventPropDisposer","assignProps","props","jsx","ns","t2","n3","o","o2","S","E","currentPage","totalPages","isSingleMode","showThumbs","orientation","flipState","themeMode","allowDownload","hasDownloadUrl","primaryColor","whiteLabel","isZoomed","isAutoPlaying","autoPlayInterval","soundEnabled","zoomState","pages","isDoublePageLayout","computed","isFrontCover","isBackCover","initStore","mappedPages","hasPdfUrl","enMessages","trMessages","builtInMessages","resolveMessages","config","locale","builtIn","custom","Toolbar","messages","jsxs","Thumbnails","isActive","Viewer","isHard","App","handleToggleThumbs","handleToggleSingleMode","handleToggleAutoPlay","handleZoomIn","handleZoomOut","handleToggleFullscreen","handleThumbClick","handleNextPage","handlePrevPage","exports","this","u","PageFlipAdapter","bookContainer","viewportWidth","viewportHeight","PageFlip","pageElements","effect","targetPage","libCurrentPage","getSpreadIndex","targetSpread","currentSpread","playing","interval","maxIndex","nextIdx","prevIdx","unsub","LayoutManager","pageViewport","wrapperElement","sizerElement","handleOrientationChange","availWidth","availHeight","targetRatio","bookWidth","bookHeight","finalWidth","InteractionManager","pageFlipAdapter","isDragging","startX","startY","initialTx","initialTy","dy","startTx","startTy","touchStartY","newScale","isFlipbookPageAsset","candidate","getAssetPageNumbers","asset","getSpreadCropModes","splitDirection","normalizeFlipbookPages","assets","normalized","fallbackPageNumber","assetIndex","assetId","pageNumbers","spreadNumbers","cropModes","spreadIndex","styleInjected","ensureRuntimeStyles","styleId","styleEl","flipbookEngineStyles","applyThemeConfiguration","userVariables","variableName","pdfWorkerUrl","pdfjsLib.GlobalWorkerOptions","_FlipbookEngine","selector","pdfUrl","imageList","resolvedPages","sourceAssets","referencePage","aspectRatio","baseShortSide","pdfjsLib.getDocument","vp","bookWrapperEl","bookSizerEl","bookContainerEl","pageFlipAdapterRef","interactionManagerRef","appNode","targetIdx","isSingle","clearMarkup","payload","FlipbookEngine","globalScope","flipbookNamespace"],"mappings":";;;;;;;;;;;;;;;AAmDA,MAAMA,KAAW,OAAO,WAAY,YAAY,UAAU,MAAO,sBAAsB,CAAC,QAAQ,SAAS,MAAM,EAAE,QAAQ,SAAS,YAAY,QAAQ,QAAQ,QAAQ,SAAS,YACzKC,KAAuB,CAAC,MAAO,GAAG,GAAG,MAAO,GAAG,CAAC,GAChDC,KAAc,MAGdC,KAAsB;AAAA,EAC1B,KAAK;AAAA,EACL,SAAS;AAAA,EACT,OAAO;AAAA,EAEP,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,QAAQ;AACV,GACMC,KAAiB;AAAA,EACrB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,gBAAgB;AAClB,GACMC,KAAyB,0BACzBC,IAAuB;AAAA,EAC3B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AACX,GACMC,KAA6B;AAAA,EACjC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,WAAW;AACb,GACMC,KAAiB;AAAA,EACrB,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,oBAAoB;AACtB,GACMC,KAAiB;AAAA,EACrB,WAAW;AAAA,EACX,SAAS;AAEX,GACMC,KAAoB;AAAA,EACxB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,WAAW;AAAA,EAKX,kBAAkB;AAAA,EAClB,kBAAkB;AACpB,GACMC,KAAiB;AAAA,EACrB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AACd,GACMC,KAAiB;AAAA,EACrB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AACV,GAsCMC,KAA4B;AAAA,EAChC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AACb,GA4BMC,KAAiB;AAAA,EACrB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AACT,GACMC,KAAM;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,eAAe;AAAA,EACf,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,4BAA4B;AAAA,EAC5B,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,4BAA4B;AAAA,EAC5B,mBAAmB;AAAA,EACnB,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,yBAAyB;AAAA,EACzB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,aAAa;AACf,GACMC,KAAU;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,WAAW;AACb,GACMC,KAAoB;AAAA,EACxB,eAAe;AAAA,EACf,oBAAoB;AACtB;AACA,IAAIC,KAAYJ,GAAe;AAC/B,SAASK,GAAkBC,GAAO;AAChC,EAAI,OAAO,UAAUA,CAAK,MACxBF,KAAYE;AAEhB;AACA,SAASC,KAAoB;AAC3B,SAAOH;AACT;AACA,SAASI,GAAKC,GAAK;AACjB,EAAIL,MAAaJ,GAAe,SAC9B,QAAQ,KAAK,SAASS,CAAG,EAAE;AAE/B;AACA,SAASC,EAAKD,GAAK;AACjB,EAAIL,MAAaJ,GAAe,YAC9B,QAAQ,KAAK,YAAYS,CAAG,EAAE;AAElC;AACA,SAASE,GAAYF,GAAK;AACxB,QAAM,IAAI,MAAMA,CAAG;AACrB;AACA,SAASG,GAAOC,GAAMJ,GAAK;AACzB,EAAKI,KACHF,GAAYF,CAAG;AAEnB;AACA,SAASK,GAAiBC,GAAK;AAC7B,UAAQA,KAAA,gBAAAA,EAAK,UAAQ;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACb;AACA;AACA,SAASC,GAAuBD,GAAKE,IAAU,MAAMC,IAAU,MAAM;AACnE,MAAI,CAACH;AACH,WAAO;AAET,MAAIG,KAAW,OAAOH,KAAQ,UAAU;AACtC,QAAIG,EAAQ,sBAAsBH,EAAI,WAAW,MAAM,GAAG;AACxD,YAAMI,IAAOJ,EAAI,MAAM,KAAK;AAC5B,OAAII,KAAA,gBAAAA,EAAM,WAAU,MAClBJ,IAAM,UAAUA,CAAG;AAAA,IAEvB;AACA,QAAIG,EAAQ;AACV,UAAI;AACF,QAAAH,IAAMK,GAAmBL,CAAG;AAAA,MAC9B,QAAQ;AAAA,MAAC;AAAA,EAEb;AACA,QAAMM,IAAcJ,IAAU,IAAI,MAAMF,GAAKE,CAAO,IAAI,IAAI,MAAMF,CAAG;AACrE,SAAOD,GAAiBO,CAAW,IAAIA,IAAc;AACvD;AACA,SAASC,GAAcP,GAAKQ,GAAMC,IAAW,IAAO;AAClD,QAAMC,IAAM,IAAI,MAAMV,CAAG;AACzB,SAAIU,KACFA,EAAI,OAAOF,GACJE,EAAI,QAETD,KAAYR,GAAuBD,GAAK,oBAAoB,IACvDA,EAAI,MAAM,KAAK,CAAC,EAAE,CAAC,IAAI,GAAGQ,IAAO,IAAIA,CAAI,KAAK,EAAE,KAElD;AACT;AACA,SAASG,EAAOC,GAAKC,GAAMC,GAAOC,IAAkB,IAAO;AACzD,gBAAO,eAAeH,GAAKC,GAAM;AAAA,IAC/B,OAAAC;AAAA,IACA,YAAY,CAACC;AAAA,IACb,cAAc;AAAA,IACd,UAAU;AAAA,EACd,CAAG,GACMD;AACT;AACA,MAAME,KAAgB,WAAgC;AACpD,WAASA,EAAcC,GAASC,GAAM;AACpC,SAAK,UAAUD,GACf,KAAK,OAAOC;AAAA,EACd;AACA,SAAAF,EAAc,YAAY,IAAI,MAAK,GACnCA,EAAc,cAAcA,GACrBA;AACT,EAAC;AACD,MAAMG,WAA0BH,GAAc;AAAA,EAC5C,YAAYtB,GAAK0B,GAAM;AACrB,UAAM1B,GAAK,mBAAmB,GAC9B,KAAK,OAAO0B;AAAA,EACd;AACF;AACA,MAAMC,WAA8BL,GAAc;AAAA,EAChD,YAAYtB,GAAK4B,GAAS;AACxB,UAAM5B,GAAK,uBAAuB,GAClC,KAAK,UAAU4B;AAAA,EACjB;AACF;AACA,MAAMC,WAA4BP,GAAc;AAAA,EAC9C,YAAYtB,GAAK;AACf,UAAMA,GAAK,qBAAqB;AAAA,EAClC;AACF;AACA,MAAM8B,WAA0BR,GAAc;AAAA,EAC5C,YAAYtB,GAAK+B,GAAQC,GAAS;AAChC,UAAMhC,GAAK,mBAAmB,GAC9B,KAAK,SAAS+B,GACd,KAAK,UAAUC;AAAA,EACjB;AACF;AACA,MAAMC,WAAoBX,GAAc;AAAA,EACtC,YAAYtB,GAAK;AACf,UAAMA,GAAK,aAAa;AAAA,EAC1B;AACF;AACA,MAAMkC,WAAuBZ,GAAc;AAAA,EACzC,YAAYtB,GAAK;AACf,UAAMA,GAAK,gBAAgB;AAAA,EAC7B;AACF;AACA,SAASmC,GAAcC,GAAO;AAC5B,GAAI,OAAOA,KAAU,aAAYA,KAAA,gBAAAA,EAAO,YAAW,WACjDlC,GAAY,oCAAoC;AAElD,QAAMmC,IAASD,EAAM,QACfE,IAAqB;AAC3B,MAAID,IAASC;AACX,WAAO,OAAO,aAAa,MAAM,MAAMF,CAAK;AAE9C,QAAMG,IAAS,CAAA;AACf,WAASC,IAAI,GAAGA,IAAIH,GAAQG,KAAKF,GAAoB;AACnD,UAAMG,IAAW,KAAK,IAAID,IAAIF,GAAoBD,CAAM,GAClDK,IAAQN,EAAM,SAASI,GAAGC,CAAQ;AACxC,IAAAF,EAAO,KAAK,OAAO,aAAa,MAAM,MAAMG,CAAK,CAAC;AAAA,EACpD;AACA,SAAOH,EAAO,KAAK,EAAE;AACvB;AACA,SAASI,GAAcC,GAAK;AAC1B,EAAI,OAAOA,KAAQ,YACjB1C,GAAY,oCAAoC;AAElD,QAAMmC,IAASO,EAAI,QACbR,IAAQ,IAAI,WAAWC,CAAM;AACnC,WAASG,IAAI,GAAGA,IAAIH,GAAQ,EAAEG;AAC5B,IAAAJ,EAAMI,CAAC,IAAII,EAAI,WAAWJ,CAAC,IAAI;AAEjC,SAAOJ;AACT;AACA,SAASS,GAASzB,GAAO;AACvB,SAAO,OAAO,aAAaA,KAAS,KAAK,KAAMA,KAAS,KAAK,KAAMA,KAAS,IAAI,KAAMA,IAAQ,GAAI;AACpG;AAIA,SAAS0B,KAAiB;AACxB,QAAMC,IAAU,IAAI,WAAW,CAAC;AAChC,SAAAA,EAAQ,CAAC,IAAI,GACE,IAAI,YAAYA,EAAQ,QAAQ,GAAG,CAAC,EACrC,CAAC,MAAM;AACvB;AACA,SAASC,KAAkB;AACzB,MAAI;AACF,eAAI,SAAS,EAAE,GACR;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AACA,MAAMC,GAAiB;AAAA,EACrB,WAAW,iBAAiB;AAC1B,WAAOhC,EAAO,MAAM,kBAAkB6B,GAAc,CAAE;AAAA,EACxD;AAAA,EACA,WAAW,kBAAkB;AAC3B,WAAO7B,EAAO,MAAM,mBAAmB+B,GAAe,CAAE;AAAA,EAC1D;AAAA,EACA,WAAW,6BAA6B;AACtC,WAAO/B,EAAO,MAAM,8BAA8B,OAAO,kBAAoB,GAAW;AAAA,EAC1F;AAAA,EACA,WAAW,0BAA0B;AACnC,WAAOA,EAAO,MAAM,2BAA2B,OAAO,eAAiB,GAAW;AAAA,EACpF;AAAA,EACA,WAAW,0BAA0B;AACnC,WAAOA,EAAO,MAAM,2BAA2B,OAAO,eAAiB,GAAW;AAAA,EACpF;AAAA,EACA,WAAW,uBAAuB;AAChC,WAAOA,EAAO,MAAM,wBAAwB,OAAO,YAAc,GAAW;AAAA,EAC9E;AAAA,EACA,WAAW,WAAW;AACpB,UAAM;AAAA,MACJ,UAAAiC;AAAA,MACA,WAAAC;AAAA,IACN,IAAQ;AACJ,WAAOlC,EAAO,MAAM,YAAY;AAAA,MAC9B,WAAWkC,EAAU,SAAS,SAAS;AAAA,MACvC,SAASD,EAAS,SAAS,OAAO;AAAA,MAClC,OAAOA,EAAS,SAAS,KAAK;AAAA,MAC9B,WAAWA,EAAS,SAAS,KAAK;AAAA,MAClC,WAAWC,EAAU,SAAS,SAAS;AAAA,IAC7C,CAAK;AAAA,EACH;AAAA,EACA,WAAW,sBAAsB;AA9hBnC,QAAAC,GAAAC;AA+hBI,WAAOpC,EAAO,MAAM,wBAAuBoC,KAAAD,IAAA,WAAW,QAAX,gBAAAA,EAAgB,aAAhB,gBAAAC,EAAA,KAAAD,GAA2B,2BAA2B;AAAA,EACnG;AACF;AACA,MAAME,KAAa,MAAM,KAAK,MAAM,GAAG,EAAE,KAAI,GAAI,CAAAC,MAAKA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAliBrF,IAAAC,IAAAC,IAAAC;AAmiBA,MAAMC,EAAK;AAAA,EACT,OAAO,aAAaC,GAAG,GAAGC,GAAG;AAC3B,WAAO,IAAIP,GAAWM,CAAC,CAAC,GAAGN,GAAW,CAAC,CAAC,GAAGA,GAAWO,CAAC,CAAC;AAAA,EAC1D;AAAA,EACA,OAAO,qBAAqBC,GAAI;AAC9B,WAAO,CAACA,EAAG,GAAGA,EAAG,GAAGA,EAAG,GAAGA,EAAG,GAAGA,EAAG,GAAGA,EAAG,CAAC;AAAA,EAC5C;AAAA,EACA,OAAO,YAAYC,GAAWC,GAAQ;AACpC,QAAIC;AACJ,IAAIF,EAAU,CAAC,KACTA,EAAU,CAAC,IAAI,MACjBE,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,IAEdD,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,GACpBA,EAAU,CAAC,IAAI,MACjBE,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,IAEdD,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,MAExBE,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,GACZA,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,GACRF,EAAU,CAAC,IAAI,MACjBE,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,IAEdD,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,GACpBA,EAAU,CAAC,IAAI,MACjBE,IAAOD,EAAO,CAAC,GACfA,EAAO,CAAC,IAAIA,EAAO,CAAC,GACpBA,EAAO,CAAC,IAAIC,IAEdD,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,IAE1BC,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC,GACxBC,EAAO,CAAC,KAAKD,EAAU,CAAC;AAAA,EAC1B;AAAA,EACA,OAAO,UAAUG,GAAIC,GAAI;AACvB,WAAO,CAACD,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,GAAGD,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,GAAGD,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,GAAGD,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,GAAGD,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,GAAGA,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,IAAIC,EAAG,CAAC,IAAID,EAAG,CAAC,CAAC;AAAA,EAClN;AAAA,EACA,OAAO,oBAAoBE,GAAGC,GAAI;AAChC,WAAO,CAACD,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,GAAGD,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,GAAGD,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,GAAGD,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,GAAGD,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,IAAIC,EAAG,IAAID,EAAE,CAAC,CAAC;AAAA,EACxL;AAAA,EACA,OAAO,eAAeE,GAAGF,GAAGG,IAAM,GAAG;AACnC,UAAMC,IAAKF,EAAEC,CAAG,GACVE,IAAKH,EAAEC,IAAM,CAAC;AACpB,IAAAD,EAAEC,CAAG,IAAIC,IAAKJ,EAAE,CAAC,IAAIK,IAAKL,EAAE,CAAC,IAAIA,EAAE,CAAC,GACpCE,EAAEC,IAAM,CAAC,IAAIC,IAAKJ,EAAE,CAAC,IAAIK,IAAKL,EAAE,CAAC,IAAIA,EAAE,CAAC;AAAA,EAC1C;AAAA,EACA,OAAO,uBAAuBE,GAAGP,GAAWQ,IAAM,GAAG;AACnD,UAAMG,IAAKX,EAAU,CAAC,GAChBG,IAAKH,EAAU,CAAC,GAChBI,IAAKJ,EAAU,CAAC,GAChBY,IAAKZ,EAAU,CAAC,GAChBa,IAAKb,EAAU,CAAC,GAChBc,IAAKd,EAAU,CAAC;AACtB,aAASvB,IAAI,GAAGA,IAAI,GAAGA,KAAK,GAAG;AAC7B,YAAMsC,IAAKR,EAAEC,IAAM/B,CAAC,GACduC,IAAMT,EAAEC,IAAM/B,IAAI,CAAC;AACzB,MAAA8B,EAAEC,IAAM/B,CAAC,IAAIsC,IAAKJ,IAAKK,IAAMZ,IAAKS,GAClCN,EAAEC,IAAM/B,IAAI,CAAC,IAAIsC,IAAKZ,IAAKa,IAAMJ,IAAKE;AAAA,IACxC;AAAA,EACF;AAAA,EACA,OAAO,sBAAsBP,GAAGF,GAAG;AACjC,UAAMI,IAAKF,EAAE,CAAC,GACRG,IAAKH,EAAE,CAAC,GACRU,IAAIZ,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC;AAClC,IAAAE,EAAE,CAAC,KAAKE,IAAKJ,EAAE,CAAC,IAAIK,IAAKL,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,KAAKY,GAC7DV,EAAE,CAAC,KAAK,CAACE,IAAKJ,EAAE,CAAC,IAAIK,IAAKL,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,KAAKY;AAAA,EAChE;AAAA,EACA,OAAO,wBAAwBC,GAAMlB,GAAWmB,GAAQ;AACtD,UAAMR,IAAKX,EAAU,CAAC,GAChBG,IAAKH,EAAU,CAAC,GAChBI,IAAKJ,EAAU,CAAC,GAChBY,IAAKZ,EAAU,CAAC,GAChBa,IAAKb,EAAU,CAAC,GAChBc,IAAKd,EAAU,CAAC,GAChBoB,IAAKF,EAAK,CAAC,GACXG,IAAKH,EAAK,CAAC,GACXI,IAAKJ,EAAK,CAAC,GACXK,IAAKL,EAAK,CAAC;AACjB,QAAIM,IAAKb,IAAKS,IAAKP,GACfY,IAAKD,GACLE,IAAKf,IAAKW,IAAKT,GACfc,IAAKD,GACLE,IAAKhB,IAAKS,IAAKP,GACfe,IAAKD,GACLE,IAAKlB,IAAKW,IAAKT,GACfiB,IAAKD;AACT,QAAI3B,MAAO,KAAKC,MAAO,GAAG;AACxB,YAAM4B,IAAO7B,IAAKiB,GACZa,IAAO9B,IAAKmB,GACZY,IAAO9B,IAAKiB,GACZc,IAAO/B,IAAKmB;AAClB,MAAAC,KAAMU,GACNP,KAAMO,GACNR,KAAMS,GACNV,KAAMU,GACNP,KAAMI,GACND,KAAMC,GACNF,KAAMG,GACNJ,KAAMI;AAAA,IACR;AACA,IAAAd,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGK,GAAIE,GAAID,GAAIE,CAAE,GAC9CR,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGS,GAAIE,GAAID,GAAIE,CAAE,GAC9CZ,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGK,GAAIE,GAAID,GAAIE,CAAE,GAC9CR,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGS,GAAIE,GAAID,GAAIE,CAAE;AAAA,EAChD;AAAA,EACA,OAAO,iBAAiB1B,GAAG;AACzB,UAAMY,IAAIZ,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC;AAClC,WAAO,CAACA,EAAE,CAAC,IAAIY,GAAG,CAACZ,EAAE,CAAC,IAAIY,GAAG,CAACZ,EAAE,CAAC,IAAIY,GAAGZ,EAAE,CAAC,IAAIY,IAAIZ,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,KAAKY,IAAIZ,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,KAAKY,CAAC;AAAA,EACpH;AAAA,EACA,OAAO,8BAA8BmB,GAAQjB,GAAQ;AACnD,UAAMR,IAAKyB,EAAO,CAAC,GACbjC,IAAKiC,EAAO,CAAC,GACbhC,IAAKgC,EAAO,CAAC,GACbxB,IAAKwB,EAAO,CAAC,GACbC,IAAI1B,KAAM,IAAIR,KAAM,GACpBL,IAAIa,IAAKP,IAAKD,IAAKS,GACnB0B,IAAIlC,KAAM,IAAIQ,KAAM,GACpB2B,KAASF,IAAIC,KAAK,GAClBE,IAAS,KAAK,KAAKD,KAAS,KAAKF,IAAIC,IAAIxC,KAAK,EAAE;AACtD,IAAAqB,EAAO,CAAC,IAAI,KAAK,KAAKoB,IAAQC,KAAU,CAAC,GACzCrB,EAAO,CAAC,IAAI,KAAK,KAAKoB,IAAQC,KAAU,CAAC;AAAA,EAC3C;AAAA,EACA,OAAO,cAActB,GAAM;AACzB,UAAMrB,IAAIqB,EAAK,MAAM,CAAC;AACtB,WAAIA,EAAK,CAAC,IAAIA,EAAK,CAAC,MAClBrB,EAAE,CAAC,IAAIqB,EAAK,CAAC,GACbrB,EAAE,CAAC,IAAIqB,EAAK,CAAC,IAEXA,EAAK,CAAC,IAAIA,EAAK,CAAC,MAClBrB,EAAE,CAAC,IAAIqB,EAAK,CAAC,GACbrB,EAAE,CAAC,IAAIqB,EAAK,CAAC,IAERrB;AAAA,EACT;AAAA,EACA,OAAO,UAAU4C,GAAOC,GAAO;AAC7B,UAAMC,IAAO,KAAK,IAAI,KAAK,IAAIF,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAG,KAAK,IAAIC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC,GAC1EE,IAAQ,KAAK,IAAI,KAAK,IAAIH,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAG,KAAK,IAAIC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC;AACjF,QAAIC,IAAOC;AACT,aAAO;AAET,UAAMC,IAAO,KAAK,IAAI,KAAK,IAAIJ,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAG,KAAK,IAAIC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC,GAC1EI,IAAQ,KAAK,IAAI,KAAK,IAAIL,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,GAAG,KAAK,IAAIC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC;AACjF,WAAIG,IAAOC,IACF,OAEF,CAACH,GAAME,GAAMD,GAAOE,CAAK;AAAA,EAClC;AAAA,EACA,OAAO,iBAAiBC,GAAGC,GAAG/C,GAAQ;AACpC,IAAAA,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG8C,CAAC,GACjC9C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG+C,CAAC,GACjC/C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG8C,CAAC,GACjC9C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG+C,CAAC;AAAA,EACnC;AAAA,EACA,OAAO,gBAAgBC,GAAIC,GAAIC,GAAIC,GAAInD,GAAQ;AAC7C,IAAAA,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGgD,GAAIE,CAAE,GACtClD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGiD,GAAIE,CAAE,GACtCnD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGgD,GAAIE,CAAE,GACtClD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGiD,GAAIE,CAAE;AAAA,EACxC;AAAA,EA+BA,OAAO,kBAAkBH,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIvD,GAAQ;AAC/D,IAAAA,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGgD,GAAIM,CAAE,GACtCtD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGiD,GAAIM,CAAE,GACtCvD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGgD,GAAIM,CAAE,GACtCtD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAGiD,GAAIM,CAAE,GACtCC,EAAA,MAAKhE,IAAAE,IAAL,WAAkBsD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,GAAI,KAAK,CAACP,IAAK,KAAKE,IAAKE,KAAME,IAAK,KAAKN,IAAK,IAAIE,IAAKE,IAAK,KAAKF,IAAKF,IAAKhD,IACzHwD,EAAA,MAAKhE,IAAAE,IAAL,WAAkBsD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,GAAI,KAAK,CAACN,IAAK,KAAKE,IAAKE,KAAME,IAAK,KAAKN,IAAK,IAAIE,IAAKE,IAAK,KAAKF,IAAKF,IAAKjD;AAAA,EAC3H;AACF;AAtNAR,KAAA,eAgLSC,KAAmB,SAACuD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,GAAIE,GAAGzD,GAAQ;AACpE,MAAIyD,KAAK,KAAKA,KAAK;AACjB;AAEF,QAAMC,IAAK,IAAID,GACTE,IAAKF,IAAIA,GACTG,IAAMD,IAAKF,GACXX,IAAIY,KAAMA,KAAMA,IAAKV,IAAK,IAAIS,IAAIP,KAAM,IAAIS,IAAKP,KAAMQ,IAAMN,GAC7DP,IAAIW,KAAMA,KAAMA,IAAKT,IAAK,IAAIQ,IAAIN,KAAM,IAAIQ,IAAKN,KAAMO,IAAML;AACnE,EAAAvD,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG8C,CAAC,GACjC9C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG+C,CAAC,GACjC/C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG8C,CAAC,GACjC9C,EAAO,CAAC,IAAI,KAAK,IAAIA,EAAO,CAAC,GAAG+C,CAAC;AACnC,GACOrD,KAAY,SAACsD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,GAAInB,GAAG,GAAGC,GAAGrC,GAAQ;AACnE,MAAI,KAAK,IAAIoC,CAAC,IAAI,OAAO;AACvB,IAAI,KAAK,IAAI,CAAC,KAAK,SACjBoB,EAAA,MAAKhE,IAAAC,IAAL,WAAyBuD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,GAAI,CAAClB,IAAI,GAAGrC;AAEnE;AAAA,EACF;AACA,QAAM6D,IAAQ,KAAK,IAAI,IAAIxB,IAAID;AAC/B,MAAIyB,IAAQ;AACV;AAEF,QAAMC,IAAY,KAAK,KAAKD,CAAK,GAC3BrC,IAAK,IAAIY;AACf,EAAAoB,EAAA,MAAKhE,IAAAC,IAAL,WAAyBuD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,IAAK,CAAC,IAAIO,KAAatC,GAAIxB,IAChFwD,EAAA,MAAKhE,IAAAC,IAAL,WAAyBuD,GAAIE,GAAIE,GAAIE,GAAIL,GAAIE,GAAIE,GAAIE,IAAK,CAAC,IAAIO,KAAatC,GAAIxB;AAClF,GA7MF+D,EAAMpE,GAANH;AAoQA,SAAS7C,GAAmBiC,GAAK;AAC/B,SAAO,mBAAmB,OAAOA,CAAG,CAAC;AACvC;AAsBA,IAAIoF,KAAiB,MACjBC,KAAmB;AACvB,SAASC,GAAiBtF,GAAK;AAC7B,SAAKoF,OACHA,KAAiB,4UACjBC,KAAmB,oBAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAEnCrF,EAAI,WAAWoF,IAAgB,CAACG,GAAG1D,GAAI2D,MAAO3D,IAAKA,EAAG,UAAU,MAAM,IAAIwD,GAAiB,IAAIG,CAAE,CAAC;AAC3G;AACA,SAASC,KAAU;AACjB,MAAI,OAAO,OAAO,cAAe;AAC/B,WAAO,OAAO,WAAU;AAE1B,QAAMC,IAAM,IAAI,WAAW,EAAE;AAC7B,gBAAO,gBAAgBA,CAAG,GACnBnG,GAAcmG,CAAG;AAC1B;AACA,MAAMC,KAAmB;AACzB,SAASC,GAAqBC,GAAUC,GAAWC,GAAM;AACvD,MAAI,CAAC,MAAM,QAAQA,CAAI,KAAKA,EAAK,SAAS;AACxC,WAAO;AAET,QAAM,CAACC,GAAMC,GAAM,GAAGC,CAAI,IAAIH;AAI9B,MAHI,CAACF,EAASG,CAAI,KAAK,CAAC,OAAO,UAAUA,CAAI,KAGzC,CAACF,EAAUG,CAAI;AACjB,WAAO;AAET,QAAME,IAAUD,EAAK;AACrB,MAAIE,IAAY;AAChB,UAAQH,EAAK,MAAI;AAAA,IACf,KAAK;AACH,UAAIE,IAAU,KAAKA,IAAU;AAC3B,eAAO;AAET;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,aAAOA,MAAY;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,UAAIA,IAAU;AACZ,eAAO;AAET;AAAA,IACF,KAAK;AACH,UAAIA,MAAY;AACd,eAAO;AAET,MAAAC,IAAY;AACZ;AAAA,IACF;AACE,aAAO;AAAA,EACb;AACE,aAAWC,KAAOH;AAChB,QAAI,SAAOG,KAAQ,YAAYD,KAAaC,MAAQ;AAGpD,aAAO;AAET,SAAO;AACT;AACA,SAASC,GAAUC,GAAGC,GAAKC,GAAK;AAC9B,SAAO,KAAK,IAAI,KAAK,IAAIF,GAAGC,CAAG,GAAGC,CAAG;AACvC;AAOA,SAASC,GAAaC,GAAK;AACzB,SAAI,WAAW,UAAU,WAChBA,EAAI,SAAQ,IAEd,KAAKpH,GAAcoH,CAAG,CAAC;AAChC;AACA,SAASC,GAAe5G,GAAK;AAC3B,SAAI,WAAW,aACN,WAAW,WAAWA,CAAG,IAE3BD,GAAc,KAAKC,CAAG,CAAC;AAChC;AACI,OAAO,QAAQ,OAAQ,eACzB,QAAQ,MAAM,SAAU6G,MAAOX,GAAM;AACnC,SAAO,IAAI,QAAQ,CAAAY,MAAW;AAC5B,IAAAA,EAAQD,EAAG,GAAGX,CAAI,CAAC;AAAA,EACrB,CAAC;AACH;AAEE,OAAO,KAAK,cAAe,eAC7B,KAAK,aAAa,SAAUa,GAAS;AACnC,SAAOA,EAAQ,OAAO,CAACvD,GAAGvC,MAAMuC,IAAIvC,GAAG,CAAC;AAC1C;AAIF,MAAM+F,GAAQ;AAAA,EACZ,OAAO,YAAYC,GAAK;AACtB,UAAMC,IAAQ,CAAA,GACR5E,IAAS;AAAA,MACb,OAAA4E;AAAA,MACA,QAAQ,uBAAO,OAAO,IAAI;AAAA,IAChC;AACI,aAASC,EAAKC,GAAM;AA16BxB,UAAA5G;AA26BM,UAAI,CAAC4G;AACH;AAEF,UAAIpH,IAAM;AACV,YAAMpB,IAAOwI,EAAK;AAClB,UAAIxI,MAAS;AACX,QAAAoB,IAAMoH,EAAK;AAAA,eACDJ,GAAQ,gBAAgBpI,CAAI;AAEjC,SAAI4B,IAAA4G,KAAA,gBAAAA,EAAM,eAAN,QAAA5G,EAAkB,cAC3BR,IAAMoH,EAAK,WAAW,cACbA,EAAK,UACdpH,IAAMoH,EAAK;AAAA,UAJX;AAWF,UALIpH,MAAQ,QACVkH,EAAM,KAAK;AAAA,QACT,KAAAlH;AAAA,MACV,CAAS,GAEC,EAACoH,EAAK;AAGV,mBAAWC,KAASD,EAAK;AACvB,UAAAD,EAAKE,CAAK;AAAA,IAEd;AACA,WAAAF,EAAKF,CAAG,GACD3E;AAAA,EACT;AAAA,EACA,OAAO,gBAAgB1D,GAAM;AAC3B,WAAO,EAAEA,MAAS,cAAcA,MAAS,WAAWA,MAAS,YAAYA,MAAS;AAAA,EACpF;AACF;AAIA,MAAM0I,GAAS;AAAA,EACb,OAAO,aAAaC,GAAMC,GAAIC,GAASC,GAASC,GAAQ;AACtD,UAAMC,IAAaF,EAAQ,SAASF,GAAI;AAAA,MACtC,OAAO;AAAA,IACb,CAAK;AACD,YAAQC,EAAQ,MAAI;AAAA,MAClB,KAAK;AAIH,YAHIG,EAAW,UAAU,SACvBL,EAAK,cAAcK,EAAW,QAE5BD,MAAW;AACb;AAEF,QAAAJ,EAAK,iBAAiB,SAAS,CAAAM,MAAS;AACtC,UAAAH,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAOK,EAAM,OAAO;AAAA,UAChC,CAAW;AAAA,QACH,CAAC;AACD;AAAA,MACF,KAAK;AACH,YAAIJ,EAAQ,WAAW,SAAS,WAAWA,EAAQ,WAAW,SAAS,YAAY;AAMjF,cALIG,EAAW,UAAUH,EAAQ,WAAW,QAC1CF,EAAK,aAAa,WAAW,EAAI,IACxBK,EAAW,UAAUH,EAAQ,WAAW,UACjDF,EAAK,gBAAgB,SAAS,GAE5BI,MAAW;AACb;AAEF,UAAAJ,EAAK,iBAAiB,UAAU,CAAAM,MAAS;AACvC,YAAAH,EAAQ,SAASF,GAAI;AAAA,cACnB,OAAOK,EAAM,OAAO,UAAUA,EAAM,OAAO,aAAa,OAAO,IAAIA,EAAM,OAAO,aAAa,QAAQ;AAAA,YACnH,CAAa;AAAA,UACH,CAAC;AAAA,QACH,OAAO;AAIL,cAHID,EAAW,UAAU,QACvBL,EAAK,aAAa,SAASK,EAAW,KAAK,GAEzCD,MAAW;AACb;AAEF,UAAAJ,EAAK,iBAAiB,SAAS,CAAAM,MAAS;AACtC,YAAAH,EAAQ,SAASF,GAAI;AAAA,cACnB,OAAOK,EAAM,OAAO;AAAA,YAClC,CAAa;AAAA,UACH,CAAC;AAAA,QACH;AACA;AAAA,MACF,KAAK;AACH,YAAID,EAAW,UAAU,MAAM;AAC7B,UAAAL,EAAK,aAAa,SAASK,EAAW,KAAK;AAC3C,qBAAWE,KAAUL,EAAQ;AAC3B,YAAIK,EAAO,WAAW,UAAUF,EAAW,QACzCE,EAAO,WAAW,WAAW,KACpBA,EAAO,WAAW,eAAe,UAAU,KACpD,OAAOA,EAAO,WAAW;AAAA,QAG/B;AACA,QAAAP,EAAK,iBAAiB,SAAS,CAAAM,MAAS;AACtC,gBAAMhK,IAAUgK,EAAM,OAAO,SACvBrJ,IAAQX,EAAQ,kBAAkB,KAAK,KAAKA,EAAQA,EAAQ,aAAa,EAAE;AACjF,UAAA6J,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAAhJ;AAAA,UACZ,CAAW;AAAA,QACH,CAAC;AACD;AAAA,IACR;AAAA,EACE;AAAA,EACA,OAAO,cAAc;AAAA,IACnB,MAAA+I;AAAA,IACA,SAAAE;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,QAAAC;AAAA,IACA,aAAAI;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ,YAAAC;AAAA,IACN,IAAQP,GACEQ,IAAsBV,aAAgB;AAC5C,IAAIS,EAAW,SAAS,YACtBA,EAAW,OAAO,GAAGA,EAAW,IAAI,IAAIL,CAAM;AAEhD,eAAW,CAACO,GAAK1J,CAAK,KAAK,OAAO,QAAQwJ,CAAU;AAClD,UAAIxJ,KAAU;AAGd,gBAAQ0J,GAAG;AAAA,UACT,KAAK;AACH,YAAI1J,EAAM,UACR+I,EAAK,aAAaW,GAAK1J,EAAM,KAAK,GAAG,CAAC;AAExC;AAAA,UACF,KAAK;AACH;AAAA,UACF,KAAK;AACH,YAAA+I,EAAK,aAAa,mBAAmB/I,CAAK;AAC1C;AAAA,UACF,KAAK;AACH,mBAAO,OAAO+I,EAAK,OAAO/I,CAAK;AAC/B;AAAA,UACF,KAAK;AACH,YAAA+I,EAAK,cAAc/I;AACnB;AAAA,UACF;AACE,aAAI,CAACyJ,KAAuBC,MAAQ,UAAUA,MAAQ,gBACpDX,EAAK,aAAaW,GAAK1J,CAAK;AAAA,QAExC;AAEI,IAAIyJ,KACFF,EAAY,kBAAkBR,GAAMS,EAAW,MAAMA,EAAW,SAAS,GAEvEN,KAAWM,EAAW,UACxB,KAAK,aAAaT,GAAMS,EAAW,QAAQP,GAASC,CAAO;AAAA,EAE/D;AAAA,EACA,OAAO,OAAOS,GAAY;AApkC5B,QAAA3H,GAAAC;AAqkCI,UAAMiH,IAAUS,EAAW,mBACrBJ,IAAcI,EAAW,aACzBC,IAAOD,EAAW,SAClBR,IAASQ,EAAW,UAAU,WAC9BE,IAAW,SAAS,cAAcD,EAAK,IAAI;AACjD,IAAIA,EAAK,cACP,KAAK,cAAc;AAAA,MACjB,MAAMC;AAAA,MACN,SAASD;AAAA,MACT,QAAAT;AAAA,MACA,aAAAI;AAAA,IACR,CAAO;AAEH,UAAMO,IAAmBX,MAAW,YAC9BY,IAAUJ,EAAW;AAE3B,QADAI,EAAQ,OAAOF,CAAQ,GACnBF,EAAW,UAAU;AACvB,YAAMhH,IAAY,UAAUgH,EAAW,SAAS,UAAU,KAAK,GAAG,CAAC;AACnE,MAAAI,EAAQ,MAAM,YAAYpH;AAAA,IAC5B;AACA,IAAImH,KACFC,EAAQ,aAAa,SAAS,kBAAkB;AAElD,UAAMC,IAAW,CAAA;AACjB,QAAIJ,EAAK,SAAS,WAAW,GAAG;AAC9B,UAAIA,EAAK,OAAO;AACd,cAAMhB,IAAO,SAAS,eAAegB,EAAK,KAAK;AAC/C,QAAAC,EAAS,OAAOjB,CAAI,GAChBkB,KAAoBtB,GAAQ,gBAAgBoB,EAAK,IAAI,KACvDI,EAAS,KAAKpB,CAAI;AAAA,MAEtB;AACA,aAAO;AAAA,QACL,UAAAoB;AAAA,MACR;AAAA,IACI;AACA,UAAMC,IAAQ,CAAC,CAACL,GAAM,IAAIC,CAAQ,CAAC;AACnC,WAAOI,EAAM,SAAS,KAAG;AACvB,YAAM,CAACC,GAAQ9I,GAAG2H,CAAI,IAAIkB,EAAM,GAAG,EAAE;AACrC,UAAI7I,IAAI,MAAM8I,EAAO,SAAS,QAAQ;AACpC,QAAAD,EAAM,IAAG;AACT;AAAA,MACF;AACA,YAAMpB,IAAQqB,EAAO,SAAS,EAAED,EAAM,GAAG,EAAE,EAAE,CAAC,CAAC;AAC/C,UAAIpB,MAAU;AACZ;AAEF,YAAM;AAAA,QACJ,MAAAzI;AAAA,MACR,IAAUyI;AACJ,UAAIzI,MAAS,SAAS;AACpB,cAAMwI,IAAO,SAAS,eAAeC,EAAM,KAAK;AAChD,QAAAmB,EAAS,KAAKpB,CAAI,GAClBG,EAAK,OAAOH,CAAI;AAChB;AAAA,MACF;AACA,YAAMuB,KAAYnI,IAAA6G,KAAA,gBAAAA,EAAO,eAAP,QAAA7G,EAAmB,QAAQ,SAAS,gBAAgB6G,EAAM,WAAW,OAAOzI,CAAI,IAAI,SAAS,cAAcA,CAAI;AAWjI,UAVA2I,EAAK,OAAOoB,CAAS,GACjBtB,EAAM,cACR,KAAK,cAAc;AAAA,QACjB,MAAMsB;AAAA,QACN,SAAStB;AAAA,QACT,SAAAK;AAAA,QACA,QAAAC;AAAA,QACA,aAAAI;AAAA,MACV,CAAS,KAECtH,IAAA4G,EAAM,aAAN,gBAAA5G,EAAgB,UAAS;AAC3B,QAAAgI,EAAM,KAAK,CAACpB,GAAO,IAAIsB,CAAS,CAAC;AAAA,eACxBtB,EAAM,OAAO;AACtB,cAAMD,IAAO,SAAS,eAAeC,EAAM,KAAK;AAChD,QAAIiB,KAAoBtB,GAAQ,gBAAgBpI,CAAI,KAClD4J,EAAS,KAAKpB,CAAI,GAEpBuB,EAAU,OAAOvB,CAAI;AAAA,MACvB;AAAA,IACF;AACA,eAAWwB,KAAML,EAAQ,iBAAiB,uDAAuD;AAC/F,MAAAK,EAAG,aAAa,YAAY,EAAI;AAElC,WAAO;AAAA,MACL,UAAAJ;AAAA,IACN;AAAA,EACE;AAAA,EACA,OAAO,OAAOL,GAAY;AACxB,UAAMhH,IAAY,UAAUgH,EAAW,SAAS,UAAU,KAAK,GAAG,CAAC;AACnE,IAAAA,EAAW,IAAI,MAAM,YAAYhH,GACjCgH,EAAW,IAAI,SAAS;AAAA,EAC1B;AACF;AAKA,MAAMU,KAAS,8BACTC,KAAN,MAAMA,GAAc;AAIpB;AAHEC,EADID,IACG,OAAM,KACbC,EAFID,IAEG,OAAM,KACbC,EAHID,IAGG,oBAAmBA,GAAK,MAAMA,GAAK;AAH5C,IAAME,KAANF;AAKA,eAAeG,GAAUvL,GAAKwL,IAAO,QAAQ;AAC3C,MAAIC,GAAgBzL,GAAK,SAAS,OAAO,GAAG;AAC1C,UAAM0L,IAAW,MAAM,MAAM1L,CAAG;AAChC,QAAI,CAAC0L,EAAS;AACZ,YAAM,IAAI,MAAMA,EAAS,UAAU;AAErC,YAAQF,GAAI;AAAA,MACV,KAAK;AACH,eAAOE,EAAS,YAAW;AAAA,MAC7B,KAAK;AACH,eAAOA,EAAS,KAAI;AAAA,MACtB,KAAK;AACH,eAAOA,EAAS,KAAI;AAAA,IAC5B;AACI,WAAOA,EAAS,KAAI;AAAA,EACtB;AACA,SAAO,IAAI,QAAQ,CAACtC,GAASuC,MAAW;AACtC,UAAMC,IAAU,IAAI,eAAc;AAClC,IAAAA,EAAQ,KAAK,OAAO5L,GAAK,EAAI,GAC7B4L,EAAQ,eAAeJ,GACvBI,EAAQ,qBAAqB,MAAM;AACjC,UAAIA,EAAQ,eAAe,eAAe,MAG1C;AAAA,YAAIA,EAAQ,WAAW,OAAOA,EAAQ,WAAW,GAAG;AAClD,kBAAQJ,GAAI;AAAA,YACV,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACH,cAAApC,EAAQwC,EAAQ,QAAQ;AACxB;AAAA,UACZ;AACQ,UAAAxC,EAAQwC,EAAQ,YAAY;AAC5B;AAAA,QACF;AACA,QAAAD,EAAO,IAAI,MAAMC,EAAQ,UAAU,CAAC;AAAA;AAAA,IACtC,GACAA,EAAQ,KAAK,IAAI;AAAA,EACnB,CAAC;AACH;AACA,MAAMC,GAAa;AAAA,EACjB,YAAY;AAAA,IACV,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,EACf,GAAK;AACD,SAAK,UAAUN,GACf,KAAK,WAAWC,GAChB,KAAK,QAAQC,GACb,KAAK,WAAWC,GAChB,KAAK,UAAUC,GACf,KAAK,UAAUC,GACfH,KAASD;AACT,UAAMM,KAAWP,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAK,GACtCQ,KAAWR,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAK;AAC5C,QAAIS,GAASC,GAASC,GAASC;AAK/B,YAJAT,KAAY,KACRA,IAAW,MACbA,KAAY,MAENA,GAAQ;AAAA,MACd,KAAK;AACH,QAAAM,IAAU,IACVC,IAAU,GACVC,IAAU,GACVC,IAAU;AACV;AAAA,MACF,KAAK;AACH,QAAAH,IAAU,GACVC,IAAU,GACVC,IAAU,GACVC,IAAU;AACV;AAAA,MACF,KAAK;AACH,QAAAH,IAAU,GACVC,IAAU,IACVC,IAAU,IACVC,IAAU;AACV;AAAA,MACF,KAAK;AACH,QAAAH,IAAU,GACVC,IAAU,GACVC,IAAU,GACVC,IAAU;AACV;AAAA,MACF;AACE,cAAM,IAAI,MAAM,mEAAmE;AAAA,IAC3F;AACI,IAAIN,MACFK,IAAU,CAACA,GACXC,IAAU,CAACA;AAEb,QAAIC,GAAeC,GACfC,GAAOC;AACX,IAAIP,MAAY,KACdI,IAAgB,KAAK,IAAIL,IAAUR,EAAQ,CAAC,CAAC,IAAIE,IAAQE,GACzDU,IAAgB,KAAK,IAAIP,IAAUP,EAAQ,CAAC,CAAC,IAAIE,IAAQG,GACzDU,KAASf,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAKE,GACpCc,KAAUhB,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAKE,MAErCW,IAAgB,KAAK,IAAIN,IAAUP,EAAQ,CAAC,CAAC,IAAIE,IAAQE,GACzDU,IAAgB,KAAK,IAAIN,IAAUR,EAAQ,CAAC,CAAC,IAAIE,IAAQG,GACzDU,KAASf,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAKE,GACpCc,KAAUhB,EAAQ,CAAC,IAAIA,EAAQ,CAAC,KAAKE,IAEvC,KAAK,YAAY,CAACO,IAAUP,GAAOQ,IAAUR,GAAOS,IAAUT,GAAOU,IAAUV,GAAOW,IAAgBJ,IAAUP,IAAQK,IAAUI,IAAUT,IAAQM,GAASM,IAAgBJ,IAAUR,IAAQK,IAAUK,IAAUV,IAAQM,CAAO,GAClO,KAAK,QAAQO,GACb,KAAK,SAASC;AAAA,EAChB;AAAA,EACA,IAAI,UAAU;AACZ,UAAMC,IAAO,KAAK;AAClB,WAAOpM,EAAO,MAAM,WAAW;AAAA,MAC7B,WAAWoM,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAC3B,YAAYA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAC5B,OAAOA,EAAK,CAAC;AAAA,MACb,OAAOA,EAAK,CAAC;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,MAAM;AAAA,IACJ,OAAAf,IAAQ,KAAK;AAAA,IACb,UAAAC,IAAW,KAAK;AAAA,IAChB,SAAAC,IAAU,KAAK;AAAA,IACf,SAAAC,IAAU,KAAK;AAAA,IACf,UAAAC,IAAW;AAAA,EACf,IAAM,IAAI;AACN,WAAO,IAAIP,GAAa;AAAA,MACtB,SAAS,KAAK,QAAQ,MAAK;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf,OAAAG;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,uBAAuB5F,GAAGC,GAAG;AAC3B,UAAMzC,IAAI,CAACwC,GAAGC,CAAC;AACf,WAAApD,EAAK,eAAeW,GAAG,KAAK,SAAS,GAC9BA;AAAA,EACT;AAAA,EACA,2BAA2BW,GAAM;AAC/B,UAAMqI,IAAU,CAACrI,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AACjC,IAAAtB,EAAK,eAAe2J,GAAS,KAAK,SAAS;AAC3C,UAAMC,IAAc,CAACtI,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC;AACrC,WAAAtB,EAAK,eAAe4J,GAAa,KAAK,SAAS,GACxC,CAACD,EAAQ,CAAC,GAAGA,EAAQ,CAAC,GAAGC,EAAY,CAAC,GAAGA,EAAY,CAAC,CAAC;AAAA,EAChE;AAAA,EACA,kBAAkBzG,GAAGC,GAAG;AACtB,UAAMzC,IAAI,CAACwC,GAAGC,CAAC;AACf,WAAApD,EAAK,sBAAsBW,GAAG,KAAK,SAAS,GACrCA;AAAA,EACT;AACF;AACA,MAAMkJ,WAAoClM,GAAc;AAAA,EACtD,YAAYtB,GAAKyN,IAAa,GAAG;AAC/B,UAAMzN,GAAK,6BAA6B,GACxC,KAAK,aAAayN;AAAA,EACpB;AACF;AACA,SAASC,GAAapN,GAAK;AACzB,QAAMqN,IAAKrN,EAAI;AACf,MAAIkC,IAAI;AACR,SAAOA,IAAImL,KAAMrN,EAAIkC,CAAC,EAAE,KAAI,MAAO;AACjC,IAAAA;AAEF,SAAOlC,EAAI,UAAUkC,GAAGA,IAAI,CAAC,EAAE,YAAW,MAAO;AACnD;AACA,SAASoL,GAAUC,GAAU;AAC3B,SAAO,OAAOA,KAAa,YAAY,UAAU,KAAKA,CAAQ;AAChE;AACA,SAASC,GAAmBxN,GAAK;AAC/B,UAACA,CAAG,IAAIA,EAAI,MAAM,QAAQ,CAAC,GACpBA,EAAI,UAAUA,EAAI,YAAY,GAAG,IAAI,CAAC;AAC/C;AACA,SAASyN,GAAsBzN,GAAK0N,IAAkB,gBAAgB;AACpE,MAAI,OAAO1N,KAAQ;AACjB,WAAO0N;AAET,MAAIN,GAAapN,CAAG;AAClB,WAAAL,EAAK,oEAAoE,GAClE+N;AAqBT,QAAMC,KAnBS,CAAAC,MAAa;AAC1B,QAAI;AACF,aAAO,IAAI,IAAIA,CAAS;AAAA,IAC1B,QAAQ;AACN,UAAI;AACF,eAAO,IAAI,IAAI,mBAAmBA,CAAS,CAAC;AAAA,MAC9C,QAAQ;AACN,YAAI;AACF,iBAAO,IAAI,IAAIA,GAAW,iBAAiB;AAAA,QAC7C,QAAQ;AACN,cAAI;AACF,mBAAO,IAAI,IAAI,mBAAmBA,CAAS,GAAG,iBAAiB;AAAA,UACjE,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,GACsB5N,CAAG;AACzB,MAAI,CAAC2N;AACH,WAAOD;AAET,QAAMG,IAAS,CAAA3M,MAAQ;AACrB,QAAI;AACF,UAAI4M,IAAU,mBAAmB5M,CAAI;AACrC,aAAI4M,EAAQ,SAAS,GAAG,KACtBA,IAAUA,EAAQ,MAAM,GAAG,EAAE,GAAG,EAAE,GAC9BA,EAAQ,KAAK,UAAU,IAClBA,IAEF5M,KAEF4M;AAAA,IACT,QAAQ;AACN,aAAO5M;AAAA,IACT;AAAA,EACF,GACM6M,IAAW,WACXR,IAAWI,EAAO,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE;AACjD,MAAII,EAAS,KAAKR,CAAQ;AACxB,WAAOM,EAAON,CAAQ;AAExB,MAAII,EAAO,aAAa,OAAO,GAAG;AAChC,UAAMK,IAAS,MAAM,KAAKL,EAAO,aAAa,OAAM,CAAE,EAAE,QAAO;AAC/D,eAAW7M,KAASkN;AAClB,UAAID,EAAS,KAAKjN,CAAK;AACrB,eAAO+M,EAAO/M,CAAK;AAGvB,UAAMmN,IAAO,MAAM,KAAKN,EAAO,aAAa,KAAI,CAAE,EAAE,QAAO;AAC3D,eAAWnD,KAAOyD;AAChB,UAAIF,EAAS,KAAKvD,CAAG;AACnB,eAAOqD,EAAOrD,CAAG;AAAA,EAGvB;AACA,MAAImD,EAAO,MAAM;AAEf,UAAMO,IADa,gCACa,KAAKP,EAAO,IAAI;AAChD,QAAIO;AACF,aAAOL,EAAOK,EAAa,CAAC,CAAC;AAAA,EAEjC;AACA,SAAOR;AACT;AACA,MAAMS,GAAU;AAAA,EAAhB;AACE,IAAA9C,EAAA,iBAAU,uBAAO,OAAO,IAAI;AAC5B,IAAAA,EAAA,eAAQ,CAAA;AAAA;AAAA,EACR,KAAKnK,GAAM;AACT,IAAIA,KAAQ,KAAK,WACfvB,EAAK,gCAAgCuB,CAAI,EAAE,GAE7C,KAAK,QAAQA,CAAI,IAAI,KAAK,IAAG;AAAA,EAC/B;AAAA,EACA,QAAQA,GAAM;AACZ,IAAMA,KAAQ,KAAK,WACjBvB,EAAK,kCAAkCuB,CAAI,EAAE,GAE/C,KAAK,MAAM,KAAK;AAAA,MACd,MAAAA;AAAA,MACA,OAAO,KAAK,QAAQA,CAAI;AAAA,MACxB,KAAK,KAAK,IAAG;AAAA,IACnB,CAAK,GACD,OAAO,KAAK,QAAQA,CAAI;AAAA,EAC1B;AAAA,EACA,WAAW;AACT,UAAMkN,IAAS,CAAA;AACf,QAAIC,IAAU;AACd,eAAW;AAAA,MACT,MAAAnN;AAAA,IACN,KAAS,KAAK;AACR,MAAAmN,IAAU,KAAK,IAAInN,EAAK,QAAQmN,CAAO;AAEzC,eAAW;AAAA,MACT,MAAAnN;AAAA,MACA,OAAAoN;AAAA,MACA,KAAAC;AAAA,IACN,KAAS,KAAK;AACR,MAAAH,EAAO,KAAK,GAAGlN,EAAK,OAAOmN,CAAO,CAAC,IAAIE,IAAMD,CAAK;AAAA,CAAM;AAE1D,WAAOF,EAAO,KAAK,EAAE;AAAA,EACvB;AACF;AACA,SAAS3C,GAAgBzL,GAAKE,GAAS;AACrC,QAAMQ,IAAMR,IAAU,IAAI,MAAMF,GAAKE,CAAO,IAAI,IAAI,MAAMF,CAAG;AAC7D,UAAOU,KAAA,gBAAAA,EAAK,cAAa,YAAWA,KAAA,gBAAAA,EAAK,cAAa;AACxD;AACA,SAAS8N,GAAcC,GAAG;AACxB,EAAAA,EAAE,eAAc;AAClB;AACA,SAASC,GAAUD,GAAG;AACpB,EAAAA,EAAE,eAAc,GAChBA,EAAE,gBAAe;AACnB;AACA,SAASE,GAAWrN,GAAS;AAC3B,UAAQ,IAAI,2BAA2BA,CAAO;AAChD;AAx9CA,IAAAsN;AAy9CA,MAAMC,GAAc;AAAA,EAElB,OAAO,aAAaC,GAAO;AACzB,QAAIA,aAAiB;AACnB,aAAOA;AAET,QAAI,CAACA,KAAS,OAAOA,KAAU;AAC7B,aAAO;AAET,IAAAC,EAAA,MAAKH,OAALI,EAAA,MAAKJ,IAAW,IAAI,OAAO,0FAAiJ;AAC5K,UAAMK,IAAUF,EAAA,MAAKH,IAAO,KAAKE,CAAK;AACtC,QAAI,CAACG;AACH,aAAO;AAET,UAAMC,IAAO,SAASD,EAAQ,CAAC,GAAG,EAAE;AACpC,QAAIE,IAAQ,SAASF,EAAQ,CAAC,GAAG,EAAE;AACnC,IAAAE,IAAQA,KAAS,KAAKA,KAAS,KAAKA,IAAQ,IAAI;AAChD,QAAIC,IAAM,SAASH,EAAQ,CAAC,GAAG,EAAE;AACjC,IAAAG,IAAMA,KAAO,KAAKA,KAAO,KAAKA,IAAM;AACpC,QAAIC,IAAO,SAASJ,EAAQ,CAAC,GAAG,EAAE;AAClC,IAAAI,IAAOA,KAAQ,KAAKA,KAAQ,KAAKA,IAAO;AACxC,QAAIC,IAAS,SAASL,EAAQ,CAAC,GAAG,EAAE;AACpC,IAAAK,IAASA,KAAU,KAAKA,KAAU,KAAKA,IAAS;AAChD,QAAIrJ,IAAS,SAASgJ,EAAQ,CAAC,GAAG,EAAE;AACpC,IAAAhJ,IAASA,KAAU,KAAKA,KAAU,KAAKA,IAAS;AAChD,UAAMsJ,IAAwBN,EAAQ,CAAC,KAAK;AAC5C,QAAIO,IAAa,SAASP,EAAQ,CAAC,GAAG,EAAE;AACxC,IAAAO,IAAaA,KAAc,KAAKA,KAAc,KAAKA,IAAa;AAChE,QAAIC,IAAe,SAASR,EAAQ,CAAC,GAAG,EAAE,KAAK;AAC/C,WAAAQ,IAAeA,KAAgB,KAAKA,KAAgB,KAAKA,IAAe,GACpEF,MAA0B,OAC5BF,KAAQG,GACRF,KAAUG,KACDF,MAA0B,QACnCF,KAAQG,GACRF,KAAUG,IAEL,IAAI,KAAK,KAAK,IAAIP,GAAMC,GAAOC,GAAKC,GAAMC,GAAQrJ,CAAM,CAAC;AAAA,EAClE;AACF;AAtCS2I,KAAA,eAAPnH,EADIoH,IACGD;AAuCT,SAASc,GAAmBC,GAAS;AAAA,EACnC,OAAA3D,IAAQ;AAAA,EACR,UAAAC,IAAW;AACb,GAAG;AACD,QAAM;AAAA,IACJ,OAAAY;AAAA,IACA,QAAAC;AAAA,EACJ,IAAM6C,EAAQ,WAAW,OACjB7D,IAAU,CAAC,GAAG,GAAG,SAASe,CAAK,GAAG,SAASC,CAAM,CAAC;AACxD,SAAO,IAAIjB,GAAa;AAAA,IACtB,SAAAC;AAAA,IACA,UAAU;AAAA,IACV,OAAAE;AAAA,IACA,UAAAC;AAAA,EACJ,CAAG;AACH;AACA,SAAS2D,GAAOC,GAAO;AACrB,MAAIA,EAAM,WAAW,GAAG,GAAG;AACzB,UAAMC,IAAW,SAASD,EAAM,MAAM,CAAC,GAAG,EAAE;AAC5C,WAAO,EAAEC,IAAW,aAAa,KAAKA,IAAW,UAAa,GAAGA,IAAW,GAAQ;AAAA,EACtF;AACA,SAAID,EAAM,WAAW,MAAM,IAClBA,EAAM,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,CAAArJ,MAAK,SAASA,CAAC,CAAC,IAEvDqJ,EAAM,WAAW,OAAO,IACnBA,EAAM,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,CAAArJ,MAAK,SAASA,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAEvE7G,EAAK,8BAA8BkQ,CAAK,GAAG,GACpC,CAAC,GAAG,GAAG,CAAC;AACjB;AACA,SAASE,GAAeC,GAAQ;AAC9B,QAAMC,IAAO,SAAS,cAAc,MAAM;AAC1C,EAAAA,EAAK,MAAM,aAAa,UACxBA,EAAK,MAAM,cAAc,cACzB,SAAS,KAAK,OAAOA,CAAI;AACzB,aAAW/O,KAAQ8O,EAAO,QAAQ;AAChC,IAAAC,EAAK,MAAM,QAAQ/O;AACnB,UAAMgP,IAAgB,OAAO,iBAAiBD,CAAI,EAAE;AACpD,IAAAD,EAAO,IAAI9O,GAAM0O,GAAOM,CAAa,CAAC;AAAA,EACxC;AACA,EAAAD,EAAK,OAAM;AACb;AACA,SAASE,GAAoBC,GAAK;AAChC,QAAM;AAAA,IACJ,GAAAtK;AAAA,IACA,GAAAvC;AAAA,IACA,GAAAwC;AAAA,IACA,GAAArB;AAAA,IACA,GAAA+J;AAAA,IACA,GAAA4B;AAAA,EACJ,IAAMD,EAAI,aAAY;AACpB,SAAO,CAACtK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC;AAC1B;AACA,SAASC,GAA2BF,GAAK;AACvC,QAAM;AAAA,IACJ,GAAAtK;AAAA,IACA,GAAAvC;AAAA,IACA,GAAAwC;AAAA,IACA,GAAArB;AAAA,IACA,GAAA+J;AAAA,IACA,GAAA4B;AAAA,EACJ,IAAMD,EAAI,aAAY,EAAG,WAAU;AACjC,SAAO,CAACtK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC;AAC1B;AACA,SAASE,GAAmBC,GAAKC,GAAUC,IAAW,IAAOC,IAAa,IAAM;AAC9E,MAAIF,aAAoB5E,IAAc;AACpC,UAAM;AAAA,MACJ,WAAA+E;AAAA,MACA,YAAAC;AAAA,IACN,IAAQJ,EAAS,SACP;AAAA,MACJ,OAAAK;AAAA,IACN,IAAQN,GACEO,IAAWpO,GAAiB,qBAC5BqO,IAAI,+BAA+BJ,CAAS,MAChDK,IAAI,+BAA+BJ,CAAU,MACzCK,IAAWH,IAAW,eAAeC,CAAC,4BAA4B,QAAQA,CAAC,KAC/EG,IAAYJ,IAAW,eAAeE,CAAC,4BAA4B,QAAQA,CAAC;AAC9E,IAAI,CAACP,KAAYD,EAAS,WAAW,QAAQ,KAC3CK,EAAM,QAAQI,GACdJ,EAAM,SAASK,MAEfL,EAAM,QAAQK,GACdL,EAAM,SAASI;AAAA,EAEnB;AACA,EAAIP,KACFH,EAAI,aAAa,sBAAsBC,EAAS,QAAQ;AAE5D;AACA,MAAMW,GAAY;AAAA,EAChB,cAAc;AACZ,UAAM;AAAA,MACJ,YAAAC;AAAA,IACN,IAAQD;AACJ,SAAK,KAAKC,GACV,KAAK,KAAKA;AAAA,EACZ;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,OAAO,KAAK,KAAK,OAAO;AAAA,EACtC;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK,OAAO,KAAK;AAAA,EAC1B;AAAA,EACA,YAAYxE,GAAOC,GAAQwE,GAAWC,GAAQC,IAAgB,IAAI;AAChE,QAAIC,IAAe,OACjBC,IAAgB,OAChBC,IAAiB;AACnB,IAAAL,IAAYF,GAAY,UAAUE,GAAWE,CAAa,GACtDF,IAAY,MACdG,IAAe,KAAK,KAAKH,KAAazE,IAAQC,EAAO,IAEnDyE,MAAW,OACbG,IAAgBH,IAAS1E,GACzB8E,IAAiBJ,IAASzE;AAE5B,UAAM8E,IAAW,KAAK,IAAIH,GAAcC,GAAeC,CAAc;AACrE,WAAI,KAAK,KAAKC,KAAY,KAAK,KAAKA,KAClC,KAAK,KAAKA,GACV,KAAK,KAAKA,GACH,MAEF;AAAA,EACT;AAAA,EACA,WAAW,aAAa;AACtB,WAAO,WAAW,oBAAoB;AAAA,EACxC;AAAA,EACA,OAAO,UAAUN,GAAWE,GAAe;AACzC,QAAIA,KAAiB,GAAG;AACtB,YAAMK,IAAY,KAAK,KAAK,OAAO,OAAO,aAAa,OAAO,OAAO,cAAc,KAAK,cAAc,KAAK,IAAIL,IAAgB,IAAI;AACnI,aAAOF,IAAY,IAAI,KAAK,IAAIA,GAAWO,CAAS,IAAIA;AAAA,IAC1D;AACA,WAAOP;AAAA,EACT;AACF;AACA,MAAMQ,KAA0B,CAAC,cAAc,cAAc,aAAa,aAAa,cAAc,aAAa,iBAAiB,cAAc,cAAc;AAC/J,MAAMC,GAAY;AAAA,EAChB,WAAW,aAAa;AA1oD1B,QAAAjP;AA2oDI,WAAOnC,EAAO,MAAM,cAAc,CAAC,GAACmC,IAAA,iCAAQ,eAAR,QAAAA,EAAA,aAAqB,gCAAgC,QAAO;AAAA,EAClG;AACF;AACA,MAAMkP,GAAa;AAAA,EACjB,WAAW,yBAAyB;AAClC,UAAMjI,IAAU,SAAS,cAAc,MAAM;AAC7C,IAAAA,EAAQ,UAAU,IAAI,WAAW,SAAS;AAC1C,UAAM;AAAA,MACJ,OAAA+G;AAAA,IACN,IAAQ/G;AACJ,IAAA+G,EAAM,QAAQA,EAAM,SAAS,KAC7BA,EAAM,UAAU,QAChBA,EAAM,QAAQ,2BACd,SAAS,KAAK,OAAO/G,CAAO;AAC5B,UAAM;AAAA,MACJ,OAAA8F;AAAA,IACN,IAAQ,OAAO,iBAAiB9F,CAAO;AACnC,WAAAA,EAAQ,OAAM,GACPpJ,EAAO,MAAM,0BAA0BiP,GAAOC,CAAK,CAAC;AAAA,EAC7D;AACF;AACA,SAASoC,GAAa3O,GAAG4O,GAAG3O,GAAG4O,GAAS;AACtC,EAAAA,IAAU,KAAK,IAAI,KAAK,IAAIA,KAAW,GAAG,CAAC,GAAG,CAAC;AAC/C,QAAMC,IAAQ,OAAO,IAAID;AACzB,SAAA7O,IAAI,KAAK,MAAMA,IAAI6O,IAAUC,CAAK,GAClCF,IAAI,KAAK,MAAMA,IAAIC,IAAUC,CAAK,GAClC7O,IAAI,KAAK,MAAMA,IAAI4O,IAAUC,CAAK,GAC3B,CAAC9O,GAAG4O,GAAG3O,CAAC;AACjB;AACA,SAAS8O,GAASC,GAAK1N,GAAQ;AAC7B,QAAMtB,IAAIgP,EAAI,CAAC,IAAI,KACbJ,IAAII,EAAI,CAAC,IAAI,KACb/O,IAAI+O,EAAI,CAAC,IAAI,KACbvJ,IAAM,KAAK,IAAIzF,GAAG4O,GAAG3O,CAAC,GACtBuF,IAAM,KAAK,IAAIxF,GAAG4O,GAAG3O,CAAC,GACtBgP,KAAKxJ,IAAMD,KAAO;AACxB,MAAIC,MAAQD;AACV,IAAAlE,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAI;AAAA,OACnB;AACL,UAAMF,IAAIqE,IAAMD;AAEhB,YADAlE,EAAO,CAAC,IAAI2N,IAAI,MAAM7N,KAAKqE,IAAMD,KAAOpE,KAAK,IAAIqE,IAAMD,IAC/CC,GAAG;AAAA,MACT,KAAKzF;AACH,QAAAsB,EAAO,CAAC,MAAMsN,IAAI3O,KAAKmB,KAAKwN,IAAI3O,IAAI,IAAI,MAAM;AAC9C;AAAA,MACF,KAAK2O;AACH,QAAAtN,EAAO,CAAC,MAAMrB,IAAID,KAAKoB,IAAI,KAAK;AAChC;AAAA,MACF,KAAKnB;AACH,QAAAqB,EAAO,CAAC,MAAMtB,IAAI4O,KAAKxN,IAAI,KAAK;AAChC;AAAA,IACR;AAAA,EACE;AACA,EAAAE,EAAO,CAAC,IAAI2N;AACd;AACA,SAASC,GAASC,GAAK7N,GAAQ;AAC7B,QAAMqM,IAAIwB,EAAI,CAAC,GACTC,IAAID,EAAI,CAAC,GACTF,IAAIE,EAAI,CAAC,GACT1M,KAAK,IAAI,KAAK,IAAI,IAAIwM,IAAI,CAAC,KAAKG,GAChClM,IAAIT,KAAK,IAAI,KAAK,IAAIkL,IAAI,KAAK,IAAI,CAAC,IACpCnN,IAAIyO,IAAIxM,IAAI;AAClB,UAAQ,KAAK,MAAMkL,IAAI,EAAE,GAAC;AAAA,IACxB,KAAK;AACH,MAAArM,EAAO,CAAC,IAAImB,IAAIjC,GAChBc,EAAO,CAAC,IAAI4B,IAAI1C,GAChBc,EAAO,CAAC,IAAId;AACZ;AAAA,IACF,KAAK;AACH,MAAAc,EAAO,CAAC,IAAI4B,IAAI1C,GAChBc,EAAO,CAAC,IAAImB,IAAIjC,GAChBc,EAAO,CAAC,IAAId;AACZ;AAAA,IACF,KAAK;AACH,MAAAc,EAAO,CAAC,IAAId,GACZc,EAAO,CAAC,IAAImB,IAAIjC,GAChBc,EAAO,CAAC,IAAI4B,IAAI1C;AAChB;AAAA,IACF,KAAK;AACH,MAAAc,EAAO,CAAC,IAAId,GACZc,EAAO,CAAC,IAAI4B,IAAI1C,GAChBc,EAAO,CAAC,IAAImB,IAAIjC;AAChB;AAAA,IACF,KAAK;AACH,MAAAc,EAAO,CAAC,IAAI4B,IAAI1C,GAChBc,EAAO,CAAC,IAAId,GACZc,EAAO,CAAC,IAAImB,IAAIjC;AAChB;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,MAAAc,EAAO,CAAC,IAAImB,IAAIjC,GAChBc,EAAO,CAAC,IAAId,GACZc,EAAO,CAAC,IAAI4B,IAAI1C;AAChB;AAAA,EACN;AACA;AACA,SAAS6O,GAAiBnM,GAAG;AAC3B,SAAOA,KAAK,UAAUA,IAAI,UAAUA,IAAI,SAAS,UAAU;AAC7D;AACA,SAASoM,GAAcC,GAAMC,GAAMlO,GAAQ;AACzC,EAAA4N,GAASK,GAAMjO,CAAM,GACrBA,EAAO,IAAI+N,EAAgB;AAC3B,QAAMI,IAAO,SAASnO,EAAO,CAAC,IAAI,SAASA,EAAO,CAAC,IAAI,SAASA,EAAO,CAAC;AACxE,EAAA4N,GAASM,GAAMlO,CAAM,GACrBA,EAAO,IAAI+N,EAAgB;AAC3B,QAAMK,IAAO,SAASpO,EAAO,CAAC,IAAI,SAASA,EAAO,CAAC,IAAI,SAASA,EAAO,CAAC;AACxE,SAAOmO,IAAOC,KAAQD,IAAO,SAASC,IAAO,SAASA,IAAO,SAASD,IAAO;AAC/E;AACA,MAAME,KAAgB,oBAAI,IAAG;AAC7B,SAASC,GAAkBC,GAAWC,GAAY;AAChD,QAAM5I,IAAM2I,EAAU,CAAC,IAAIA,EAAU,CAAC,IAAI,MAAQA,EAAU,CAAC,IAAI,QAAUC,EAAW,CAAC,IAAI,WAAYA,EAAW,CAAC,IAAI,aAAcA,EAAW,CAAC,IAAI;AACrJ,MAAIC,IAAcJ,GAAc,IAAIzI,CAAG;AACvC,MAAI6I;AACF,WAAOA;AAET,QAAMC,IAAQ,IAAI,aAAa,CAAC,GAC1B1O,IAAS0O,EAAM,SAAS,GAAG,CAAC,GAC5BC,IAAUD,EAAM,SAAS,GAAG,CAAC;AACnC,EAAAjB,GAASc,GAAWI,CAAO;AAC3B,QAAMC,IAAWF,EAAM,SAAS,GAAG,CAAC;AACpC,EAAAjB,GAASe,GAAYI,CAAQ;AAC7B,QAAMC,IAAmBD,EAAS,CAAC,IAAI,KACjCE,IAAcD,IAAmB,KAAK;AAE5C,MADAF,EAAQ,CAAC,IAAIE,IAAmB,KAAK,KAAKF,EAAQ,CAAC,CAAC,IAAI,IAAI,KAAK,KAAK,IAAIA,EAAQ,CAAC,CAAC,GAChFX,GAAcW,GAASC,GAAU5O,CAAM,IAAI8O,GAAa;AAC1D,QAAIpF,GAAOC;AACX,IAAIkF,KACFnF,IAAQiF,EAAQ,CAAC,GACjBhF,IAAM,MAEND,IAAQ,GACRC,IAAMgF,EAAQ,CAAC;AAEjB,UAAMI,IAAY;AAClB,WAAOpF,IAAMD,IAAQqF,KAAW;AAC9B,YAAMC,IAAML,EAAQ,CAAC,KAAKjF,IAAQC,KAAO;AACzC,MAAIkF,MAAqBb,GAAcW,GAASC,GAAU5O,CAAM,IAAI8O,IAClEpF,IAAQsF,IAERrF,IAAMqF;AAAA,IAEV;AACA,IAAAL,EAAQ,CAAC,IAAIE,IAAmBlF,IAAMD;AAAA,EACxC;AACA,SAAAkE,GAASe,GAAS3O,CAAM,GACxByO,IAAchQ,EAAK,aAAa,KAAK,MAAMuB,EAAO,CAAC,IAAI,GAAG,GAAG,KAAK,MAAMA,EAAO,CAAC,IAAI,GAAG,GAAG,KAAK,MAAMA,EAAO,CAAC,IAAI,GAAG,CAAC,GACrHqO,GAAc,IAAIzI,GAAK6I,CAAW,GAC3BA;AACT;AACA,SAASQ,GAAe;AAAA,EACtB,MAAAhK;AAAA,EACA,KAAAiK;AAAA,EACA,WAAAC;AACF,GAAGC,GAAW;AACZ,QAAMC,IAAW,SAAS,uBAAsB;AAChD,MAAI,OAAOpK,KAAS,UAAU;AAC5B,UAAM7F,IAAI,SAAS,cAAc,GAAG;AACpC,IAAAA,EAAE,MAAM8P,KAAO;AACf,UAAMI,IAAQrK,EAAK,MAAM,cAAc;AACvC,aAAS3H,IAAI,GAAGmL,IAAK6G,EAAM,QAAQhS,IAAImL,GAAI,EAAEnL,GAAG;AAC9C,YAAMiS,IAAOD,EAAMhS,CAAC;AACpB,MAAA8B,EAAE,OAAO,SAAS,eAAemQ,CAAI,CAAC,GAClCjS,IAAImL,IAAK,KACXrJ,EAAE,OAAO,SAAS,cAAc,IAAI,CAAC;AAAA,IAEzC;AACA,IAAAiQ,EAAS,OAAOjQ,CAAC;AAAA,EACnB;AACE,IAAA4F,GAAS,OAAO;AAAA,MACd,SAASC;AAAA,MACT,KAAKoK;AAAA,MACL,QAAQ;AAAA,IACd,CAAK;AAEH,EAAAA,EAAS,kBAAkB,UAAU,IAAI,YAAYF,CAAS,GAC9DC,EAAU,OAAOC,CAAQ;AAC3B;AACA,SAASG,GAAoBC,GAAM;AACjC,QAAMC,IAAO,IAAI,OAAM;AACvB,MAAI,CAACD;AACH,WAAOC;AAET,WAASpS,IAAI,GAAGmL,IAAKgH,EAAK,QAAQnS,IAAImL;AACpC,YAAQgH,EAAKnS,GAAG,GAAC;AAAA,MACf,KAAK/C,GAAQ;AACX,QAAAmV,EAAK,OAAOD,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,CAAC;AAChC;AAAA,MACF,KAAK/C,GAAQ;AACX,QAAAmV,EAAK,OAAOD,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,CAAC;AAChC;AAAA,MACF,KAAK/C,GAAQ;AACX,QAAAmV,EAAK,cAAcD,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,CAAC;AACnF;AAAA,MACF,KAAK/C,GAAQ;AACX,QAAAmV,EAAK,iBAAiBD,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,GAAGmS,EAAKnS,GAAG,CAAC;AAChE;AAAA,MACF,KAAK/C,GAAQ;AACX,QAAAmV,EAAK,UAAS;AACd;AAAA,MACF;AACE,QAAA3U,EAAK,uCAAuC0U,EAAKnS,IAAI,CAAC,CAAC,EAAE;AACzD;AAAA,IACR;AAEE,SAAOoS;AACT;AAx1DA,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA41DA,MAAMC,KAAN,MAAMA,GAAc;AAAA,EAUlB,YAAYC,GAAQ;AAVtB,IAAA/N,EAAA,MAAAyN;AACE,IAAAzN,EAAA,MAAA8M,IAAW;AACX,IAAA9M,EAAA,MAAA+M,IAAe;AACf,IAAA/M,EAAA,MAAAgN;AACA,IAAAhN,EAAA,MAAAiN,IAAW;AACX,IAAAjN,EAAA,MAAAkN,IAAW;AACX,IAAAlN,EAAA,MAAAmN,IAAW;AACX,IAAAnN,EAAA,MAAAoN,IAAwB;AACxB,IAAApN,EAAA,MAAAqN,IAA8B;AAG5B,IAAA9F,EAAA,MAAKyF,IAAUe,IACfzG,EAAAwG,IAAcR,OAAd/F,EAAAuG,IAAcR,IAAgB,OAAO,OAAO;AAAA,MAC1C,UAAU;AAAA,MACV,WAAW;AAAA,MACX,KAAK;AAAA,MACL,OAAO;AAAA,MACP,WAAW;AAAA,IACjB,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAMU,IAAczG,EAAA,MAAKuF,IAAW,SAAS,cAAc,KAAK;AAChE,IAAAkB,EAAY,UAAU,IAAI,eAAe,QAAQ,GACjDA,EAAY,aAAa,QAAQ,SAAS;AAC1C,UAAMC,IAAS3G,EAAA,MAAK0F,IAAQ,WAAW;AACvC,IAAIiB,aAAkB,eAAe,CAACA,EAAO,YAC3CD,EAAY,iBAAiB,eAAejH,IAAe;AAAA,MACzD,QAAAkH;AAAA,IACR,CAAO,GACDD,EAAY,iBAAiB,eAAevO,EAAAqO,IAAcP,IAAAC,KAAc;AAAA,MACtE,QAAAS;AAAA,IACR,CAAO;AAEH,UAAMC,IAAU3G,EAAA,MAAK0F,IAAW,SAAS,cAAc,KAAK;AAC5D,IAAAiB,EAAQ,YAAY,WACpBF,EAAY,OAAOE,CAAO;AAC1B,UAAMC,IAAW7G,EAAA,MAAK0F,IAAQ;AAC9B,QAAImB,GAAU;AACZ,YAAM;AAAA,QACJ,OAAA9E;AAAA,MACR,IAAU2E,GACEjP,IAAIuI,EAAA,MAAK0F,IAAQ,WAAW,cAAc,QAAQ,IAAImB,EAAS,CAAC,IAAIA,EAAS,CAAC;AACpF,MAAA9E,EAAM,iBAAiB,GAAG,MAAMtK,CAAC,KACjCsK,EAAM,MAAM,QAAQ,MAAM8E,EAAS,CAAC,CAAC;AAAA,IACvC;AACA,WAAOH;AAAA,EACT;AAAA,EACA,IAAI,MAAM;AACR,WAAO1G,EAAA,MAAKwF;AAAA,EACd;AAAA,EA8BA,OAAO;AA36DT,QAAAzR;AA46DI,IAAAiM,EAAA,MAAKwF,IAAS,UAAU,IAAI,QAAQ,IACpCzR,IAAAiM,EAAA,MAAKyF,QAAL,QAAA1R,EAAmB;AAAA,EACrB;AAAA,EACA,OAAO;AA/6DT,QAAAA,GAAAC;AAg7DI,IAAAgM,EAAA,MAAKwF,IAAS,UAAU,OAAO,QAAQ,IACvCzR,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe,UACfC,IAAAgM,EAAA,MAAK6F,QAAL,QAAA7R,EAAe;AAAA,EACjB;AAAA,EACA,kBAAkB;AAChB,UAAM;AAAA,MACJ,YAAA8S;AAAA,MACA,YAAAC;AAAA,IACN,IAAQ/G,EAAA,MAAK0F,KACHsB,IAAS,SAAS,cAAc,QAAQ;AAC9C,IAAAA,EAAO,UAAU,IAAI,SAAS,cAAc,GAC5CA,EAAO,WAAW,GAClBA,EAAO,aAAa,gBAAgBhH,EAAAwG,IAAcR,IAAYc,CAAU,CAAC,GACrE3O,EAAA,MAAKgO,IAAAG,IAAL,WAA4BU,MAC9BA,EAAO,iBAAiB,SAAS,CAAAtH,MAAK;AACpC,MAAAqH,EAAW,OAAM;AAAA,IACnB,GAAG;AAAA,MACD,QAAQA,EAAW;AAAA,IAC3B,CAAO,GAEH/G,EAAA,MAAK2F,IAAS,OAAOqB,CAAM;AAAA,EAC7B;AAAA,EAMA,MAAM,WAAWC,GAAS;AACxB,UAAMD,IAAS,MAAMC,EAAQ,OAAM;AACnC,IAAA9O,EAAA,MAAKgO,IAAAG,IAAL,WAA4BU,IAC5BhH,EAAA,MAAK2F,IAAS,OAAOqB,GAAQhH,EAAA,MAAKmG,IAAAI,GAAQ,GAC1CtG,EAAA,MAAK2F,IAAWqB;AAAA,EAClB;AAAA,EACA,WAAWC,GAASC,IAAgB,MAAM;AACxC,QAAInH,EAAA,MAAK6F;AACP;AAEF,UAAMmB,IAASE,EAAQ,iBAAgB;AACvC,QAAI,CAACF;AACH;AAEF,IAAA7O,EAAA,MAAKgO,IAAAG,IAAL,WAA4BU;AAC5B,UAAMI,IAAUnH,EAAA,MAAK6F,IAAwB9F,EAAA,MAAKmG,IAAAI;AAClD,IAAKY,KAGHnH,EAAA,MAAK2F,IAAS,aAAaqB,GAAQG,CAAa,GAChDnH,EAAA,MAAK2F,IAAS,aAAayB,GAASD,CAAa,KAHjDnH,EAAA,MAAK2F,IAAS,OAAOqB,GAAQI,CAAO,GAKtCnH,EAAA,MAAK4F,IAAWqB,IAChBA,EAAQ,UAAU;AAAA,EACpB;AAAA,EACA,eAAeG,GAAa;AAC1B,QAAIrH,EAAA,MAAKyF;AACP;AAEF,IAAAxF,EAAA,MAAKwF,IAAe4B;AACpB,UAAML,IAASK,EAAY,aAAY;AACvC,IAAAlP,EAAA,MAAKgO,IAAAG,IAAL,WAA4BU,IAC5BhH,EAAA,MAAK2F,IAAS,OAAOqB,GAAQhH,EAAA,MAAKmG,IAAAI,GAAQ;AAAA,EAC5C;AAAA,EACA,MAAM,uBAAuBe,GAAkB;AAC7C,UAAMN,IAAS/G,EAAA,MAAK8F,IAA8B,MAAMuB,EAAiB,iBAAiBtH,EAAA,MAAK0F,GAAO;AACtG,IAAAvN,EAAA,MAAKgO,IAAAG,IAAL,WAA4BU,IAC5BhH,EAAA,MAAK2F,IAAS,OAAOqB,GAAQhH,EAAA,MAAKmG,IAAAI,GAAQ;AAAA,EAC5C;AAAA,EACA,aAAapU,GAAM;AAl/DrB,QAAA4B,GAAAC;AAm/DI,YAAQ7B,GAAI;AAAA,MACV,KAAK;AACH,SAAA4B,IAAAiM,EAAA,MAAK6F,QAAL,QAAA9R,EAAe,8BACfkM,EAAA,MAAK4F,IAAW,QAChB7R,IAAAgM,EAAA,MAAK8F,QAAL,QAAA9R,EAA4B,UAC5BiM,EAAA,MAAK6F,IAAwB;AAC7B;AAAA,IACR;AAAA,EACE;AAAA,EACA,MAAM,UAAU3T,GAAMoV,GAAM;AAC1B,YAAQpV,GAAI;AAAA,MACV,KAAK;AACH,QAAIoV,KACF,KAAK,eAAeA,CAAI;AAE1B;AAAA,MACF,KAAK;AACH,QAAIA,KACF,MAAM,KAAK,WAAWA,CAAI;AAE5B;AAAA,MACF,KAAK;AACH,QAAIA,KACF,MAAM,KAAK,uBAAuBA,CAAI;AAExC;AAAA,MACF,KAAK;AACH,aAAK,gBAAe;AACpB;AAAA,MACF,KAAK;AACH,QAAIA,KACF,KAAK,WAAWA,CAAI;AAEtB;AAAA,IACR;AAAA,EACE;AAAA,EACA,MAAM,gBAAgBpV,GAAMoV,GAAMC,GAAgB;AAChD,QAAI,CAACD,KAAQpV,MAAS;AACpB;AAEF,UAAMgV,IAAgBnH,EAAA,MAAK2F,IAAS,cAAc6B,CAAc;AAChE,IAAKL,KAGDhV,MAAS,aACX,KAAK,WAAWoV,GAAMJ,CAAa;AAAA,EAEvC;AAAA,EACA,0BAA0BM,GAAa;AACrC,IAAIzH,EAAA,MAAK+F,QACP/F,EAAA,MAAK+F,IAA4B,QAAQ0B;AAAA,EAE7C;AAAA,EACA,SAAS;AAxiEX,QAAA1T;AAyiEI,IAAAiM,EAAA,MAAKwF,IAAS,OAAM,IACpBzR,IAAAiM,EAAA,MAAKyF,QAAL,QAAA1R,EAAmB,WACnBkM,EAAA,MAAKwF,IAAe;AAAA,EACtB;AACF;AAhNED,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACOC,KAAA,eATTC,KAAA,eAkDSC,KAAY,SAACxG,GAAG;AACrB,EAAAA,EAAE,gBAAe;AACnB,GApDFyG,KAAA,eAqDEC,KAAQ,SAAC1G,GAAG;AACV,EAAAM,EAAA,MAAK0F,IAAQ,sBAAsB,IACnC/F,GAAUD,CAAC;AACb,GACA2G,KAAS,SAAC3G,GAAG;AACX,EAAAM,EAAA,MAAK0F,IAAQ,sBAAsB,IACnC/F,GAAUD,CAAC;AACb,GACA4G,KAAsB,SAACtL,GAAS;AAC9B,QAAM2L,IAAS3G,EAAA,MAAK0F,IAAQ,WAAW;AACvC,SAAI,EAAEiB,aAAkB,gBAAgBA,EAAO,UACtC,MAET3L,EAAQ,iBAAiB,WAAW7C,EAAA,MAAKgO,IAAAC,IAAS,KAAK,IAAI,GAAG;AAAA,IAC5D,SAAS;AAAA,IACT,QAAAO;AAAA,EACN,CAAK,GACD3L,EAAQ,iBAAiB,YAAY7C,EAAA,MAAKgO,IAAAE,IAAU,KAAK,IAAI,GAAG;AAAA,IAC9D,SAAS;AAAA,IACT,QAAAM;AAAA,EACN,CAAK,GACD3L,EAAQ,iBAAiB,eAAeyE,IAAe;AAAA,IACrD,QAAAkH;AAAA,EACN,CAAK,GACM;AACT,GA4BIJ,KAAQ,WAAG;AACb,QAAMa,IAAU,SAAS,cAAc,KAAK;AAC5C,SAAAA,EAAQ,YAAY,WACbA;AACT,GA9GF1O,EAAM8N,IAANP,KASEvN,EATI8N,IASGR,IAAc;AATvB,IAAM0B,KAANlB;AA51DA,IAAAb,IAAAH,IAAAuB,IAAAY,IAAAC,IAAAC,IAAAC;AA8iEA,MAAMC,GAAgB;AAAA,EAIpB,YAAYC,GAAW;AAJzB,IAAAtP,EAAA,MAAAiP;AACE,IAAAjP,EAAA,MAAAiN,IAAW;AACX,IAAAjN,EAAA,MAAA8M,IAAW;AACX,IAAA9M,EAAA,MAAAqO;AAEE,IAAA9G,EAAA,MAAK8G,IAAaiB;AAAA,EACpB;AAAA,EAgDA,KAAK/L,GAAQgM,GAAOC,GAAO;AACzB,UAAM,CAACzQ,GAAGC,CAAC,IAAIS,EAAA,MAAKwP,IAAAE,IAAL,WAAmBI,GAAOC,IACnC;AAAA,MACJ,OAAAnG;AAAA,IACN,IAAQ/B,EAAA,MAAKwF,OAALvF,EAAA,MAAKuF,IAAarN,EAAA,MAAKwP,IAAAC,IAAL;AACtB,IAAA3L,EAAO,OAAO+D,EAAA,MAAKwF,GAAQ,GAC3BzD,EAAM,iBAAiB,GAAG,MAAMtK,CAAC,KACjCsK,EAAM,MAAM,QAAQ,MAAMrK,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AACL,IAAAsI,EAAA,MAAKwF,IAAS,OAAM;AAAA,EACtB;AAqBF;AArFEG,KAAA,eACAH,KAAA,eACAuB,KAAA,eAHFY,KAAA,eAOEC,KAAO,WAAG;AACR,QAAMlB,IAAczG,EAAA,MAAKuF,IAAW,SAAS,cAAc,KAAK;AAChE,EAAAkB,EAAY,YAAY,eACxBA,EAAY,aAAa,QAAQ,SAAS;AAC1C,QAAMC,IAAS3G,EAAA,MAAK+G,IAAW;AAC/B,EAAIJ,aAAkB,eAAe,CAACA,EAAO,WAC3CD,EAAY,iBAAiB,eAAejH,IAAe;AAAA,IACzD,QAAAkH;AAAA,EACR,CAAO;AAEH,QAAMC,IAAU3G,EAAA,MAAK0F,IAAW,SAAS,cAAc,KAAK;AAC5D,SAAAiB,EAAQ,YAAY,WACpBF,EAAY,OAAOE,CAAO,GACtB5G,EAAA,MAAK+G,IAAW,uBAClB5O,EAAA,MAAKwP,IAAAG,IAAL,WAAiB,iBAAiB,iCAAiC,uCAAuC,MAAM;AAC9G,IAAA9H,EAAA,MAAK+G,IAAW,iBAAiB,iBAAiB;AAAA,EACpD,IAEF5O,EAAA,MAAKwP,IAAAG,IAAL,WAAiB,mBAAmB,oCAAoC,yCAAyC,MAAM;AACrH,IAAA9H,EAAA,MAAK+G,IAAW,mBAAmB,iBAAiB;AAAA,EACtD,IACOL;AACT,GACAmB,KAAa,SAACI,GAAOC,GAAO;AAC1B,MAAIC,IAAQ,GACRC,IAAQ;AACZ,aAAWC,KAAOJ,GAAO;AACvB,UAAMvQ,IAAI2Q,EAAI,IAAIA,EAAI;AACtB,QAAI3Q,IAAIyQ;AACN;AAEF,UAAM1Q,IAAI4Q,EAAI,KAAKH,IAAQG,EAAI,QAAQ;AACvC,QAAI3Q,IAAIyQ,GAAO;AACb,MAAAC,IAAQ3Q,GACR0Q,IAAQzQ;AACR;AAAA,IACF;AACA,IAAIwQ,IACEzQ,IAAI2Q,MACNA,IAAQ3Q,KAEDA,IAAI2Q,MACbA,IAAQ3Q;AAAA,EAEZ;AACA,SAAO,CAACyQ,IAAQ,IAAIE,IAAQA,GAAOD,CAAK;AAC1C,GAaAL,KAAW,SAACQ,GAAaC,GAAQC,GAAaC,GAAc;AAC1D,QAAMzB,IAAS,SAAS,cAAc,QAAQ;AAC9C,EAAAA,EAAO,UAAU,IAAI,SAASsB,CAAW,GACzCtB,EAAO,WAAW,GAClBA,EAAO,aAAa,gBAAgBuB,CAAM;AAC1C,QAAMrH,IAAO,SAAS,cAAc,MAAM;AAC1C,EAAA8F,EAAO,OAAO9F,CAAI,GAClBA,EAAK,YAAY,kBACjBA,EAAK,aAAa,gBAAgBsH,CAAW;AAC7C,QAAM7B,IAAS3G,EAAA,MAAK+G,IAAW;AAC/B,EAAIJ,aAAkB,eAAe,CAACA,EAAO,YAC3CK,EAAO,iBAAiB,eAAevH,IAAe;AAAA,IACpD,QAAAkH;AAAA,EACR,CAAO,GACDK,EAAO,iBAAiB,SAASyB,GAAc;AAAA,IAC7C,QAAA9B;AAAA,EACR,CAAO,IAEH3G,EAAA,MAAK2F,IAAS,OAAOqB,CAAM;AAC7B;AAOF,SAAS0B,GAAW7W,GAAKmJ,GAAS2N,GAAO;AACvC,aAAWxW,KAAQwW;AACjB,IAAA3N,EAAQ,iBAAiB7I,GAAMN,EAAIM,CAAI,EAAE,KAAKN,CAAG,CAAC;AAEtD;AA9oEA,IAAA+W,IAAAC,IAAAC,IAAAC;AA+oEA,MAAMC,KAAN,MAAMA,GAAgB;AAAA,EAKpB,OAAO,0BAA0BC,GAAW;AAC1C,KAACjJ,EAAAgJ,IAAgBH,OAAhB5I,EAAA+I,IAAgBH,IAAgB,oBAAI,IAAG,IAAI,IAAII,CAAS;AAAA,EAC3D;AAAA,EACA,OAAO,WAAWC,GAAaD,GAAW;AACxC,IAAAjJ,EAAAgJ,IAAgBJ,OAAhB3I,EAAA+I,IAAgBJ,IAAeK,IAC/BjJ,EAAAgJ,IAAgBD,OAAhB9I,EAAA+I,IAAgBD,IAAiBG;AAAA,EACnC;AAAA,EACA,OAAO,aAAaC,GAAW;AAC7B,IAAAlJ,EAAA+I,IAAgBF,IAAiBK;AAAA,EACnC;AAAA,EACA,OAAO,gBAAgBF,GAAW;AAChC,WAAOjJ,EAAAgJ,IAAgBJ,QAAeK;AAAA,EACxC;AAAA,EACA,OAAO,wBAAwBA,GAAW;AAjqE5C,QAAAlV;AAkqEI,WAAIiM,EAAAgJ,IAAgBJ,QAAeK,IAC1B,OAETlV,IAAAiM,EAAAgJ,IAAgBH,QAAhB,QAAA9U,EAA6B,OAAOkV,IAC7B;AAAA,EACT;AAAA,EACA,OAAO,kBAAkBC,GAAa;AACpC,WAAOlJ,EAAAgJ,IAAgBD,QAAiBG;AAAA,EAC1C;AAAA,EACA,OAAO,qCAAqCA,GAAa;AACvD,WAAOlJ,EAAAgJ,IAAgBD,QAAiB,QAAQ,CAACC,GAAgB,kBAAkBE,CAAW;AAAA,EAChG;AAAA,EACA,OAAO,gBAAgBC,GAAW;AAChC,WAAOnJ,EAAAgJ,IAAgBF,QAAmBK;AAAA,EAC5C;AAAA,EACA,OAAO,0BAA0B;AAjrEnC,QAAApV;AAkrEI,aAAOA,IAAAiM,EAAAgJ,IAAgBH,QAAhB,gBAAA9U,EAA6B,SAAQ;AAAA,EAC9C;AAAA,EACA,OAAO,mBAAmB;AACxB,IAAAkM,EAAA+I,IAAgBD,IAAe;AAAA,EACjC;AAAA,EACA,OAAO,kBAAkB;AACvB,IAAA9I,EAAA+I,IAAgBJ,IAAa,MAC7B3I,EAAA+I,IAAgBH,IAAc;AAAA,EAChC;AAAA,EACA,OAAO,iBAAiB;AACtB,IAAA5I,EAAA+I,IAAgBF,IAAiB;AAAA,EACnC;AACF;AA9CSF,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAHPrQ,EADIsQ,IACGJ,IAAa,MACpBlQ,EAFIsQ,IAEGH,IAAc,OACrBnQ,EAHIsQ,IAGGF,IAAiB,MACxBpQ,EAJIsQ,IAIGD,IAAe;AAJxB,IAAMK,KAANJ;AA/oEA,IAAAK;AA+rEA,MAAMC,GAAU;AAAA,EAAhB;AACE,IAAA5Q,EAAA,MAAA2Q,IAAM;AAAA;AAAA,EACN,IAAI,KAAK;AACP,WAAO,GAAG5Z,EAAsB,GAAG8Z,GAAA,MAAKF,IAAL,GAAU;AAAA,EAC/C;AACF;AAJEA,KAAA;AAhsEF,IAAAG,IAAAH,IAAAI,IAAAC,IAAAC;AAqsEA,MAAMC,KAAN,MAAMA,GAAa;AAAA,EAAnB;AAAA,IAAAlR,EAAA,MAAAgR;AACE,IAAAhR,EAAA,MAAA8Q,IAAUxQ,GAAO;AACjB,IAAAN,EAAA,MAAA2Q,IAAM;AACN,IAAA3Q,EAAA,MAAA+Q,IAAS;AAAA;AAAA,EACT,WAAW,sBAAsB;AAC/B,UAAMI,IAAM,wKAENxI,IADS,IAAI,gBAAgB,GAAG,CAAC,EACpB,WAAW,MAAM;AAAA,MAClC,oBAAoB;AAAA,IAC1B,CAAK,GACKyI,IAAQ,IAAI,MAAK;AACvB,IAAAA,EAAM,MAAMD;AACZ,UAAME,IAAUD,EAAM,OAAM,EAAG,KAAK,OAClCzI,EAAI,UAAUyI,GAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACpC,IAAI,YAAYzI,EAAI,aAAa,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,MAAM,EACzE;AACD,WAAOzP,EAAO,MAAM,uBAAuBmY,CAAO;AAAA,EACpD;AAAA,EA2DA,MAAM,YAAYC,GAAM;AACtB,UAAM;AAAA,MACJ,cAAAC;AAAA,MACA,MAAA9X;AAAA,MACA,MAAA+X;AAAA,MACA,MAAAzN;AAAA,IACN,IAAQuN;AACJ,WAAO7R,EAAA,MAAKuR,IAAAC,IAAL,WAAU,GAAGM,CAAY,IAAI9X,CAAI,IAAI+X,CAAI,IAAIzN,CAAI,IAAIuN;AAAA,EAC9D;AAAA,EACA,MAAM,WAAW/Y,GAAK;AACpB,WAAOkH,EAAA,MAAKuR,IAAAC,IAAL,WAAU1Y,GAAKA;AAAA,EACxB;AAAA,EACA,MAAM,YAAY8J,GAAIoP,GAAa;AACjC,UAAMC,IAAO,MAAMD;AACnB,WAAOhS,EAAA,MAAKuR,IAAAC,IAAL,WAAU5O,GAAIqP;AAAA,EACvB;AAAA,EACA,MAAM,UAAUrP,GAAI;AAClB,IAAAiF,EAAA,MAAKyJ,OAALxJ,EAAA,MAAKwJ,IAAW,oBAAI,IAAG;AACvB,UAAMnE,IAAOtF,EAAA,MAAKyJ,IAAO,IAAI1O,CAAE;AAC/B,QAAI,CAACuK;AACH,aAAO;AAET,QAAIA,EAAK;AACP,aAAAA,EAAK,cAAc,GACZA;AAET,QAAIA,EAAK;AACP,aAAO,KAAK,YAAYA,EAAK,IAAI;AAEnC,QAAIA,EAAK,aAAa;AACpB,YAAM;AAAA,QACJ,aAAA6E;AAAA,MACR,IAAU7E;AACJ,oBAAOA,EAAK,aACL,KAAK,YAAYA,EAAK,IAAI6E,CAAW;AAAA,IAC9C;AACA,WAAO,KAAK,WAAW7E,EAAK,GAAG;AAAA,EACjC;AAAA,EACA,cAAcvK,GAAIsP,GAAQ;AACxB,IAAArK,EAAA,MAAKyJ,OAALxJ,EAAA,MAAKwJ,IAAW,oBAAI,IAAG;AACvB,QAAInE,IAAOtF,EAAA,MAAKyJ,IAAO,IAAI1O,CAAE;AAC7B,QAAIuK,KAAA,QAAAA,EAAM;AACR,aAAAA,EAAK,cAAc,GACZA;AAET,UAAMgF,IAAY,IAAI,gBAAgBD,EAAO,OAAOA,EAAO,MAAM;AAEjE,WADYC,EAAU,WAAW,IAAI,EACjC,UAAUD,GAAQ,GAAG,CAAC,GAC1B/E,IAAO;AAAA,MACL,QAAQgF,EAAU,sBAAqB;AAAA,MACvC,IAAI,SAAStK,EAAA,MAAKwJ,GAAO,IAAID,GAAA,MAAKF,IAAL,GAAU;AAAA,MACvC,YAAY;AAAA,MACZ,OAAO;AAAA,IACb,GACIrJ,EAAA,MAAKyJ,IAAO,IAAI1O,GAAIuK,CAAI,GACxBtF,EAAA,MAAKyJ,IAAO,IAAInE,EAAK,IAAIA,CAAI,GACtBA;AAAA,EACT;AAAA,EACA,UAAUvK,GAAI;AACZ,UAAMuK,IAAOtF,EAAA,MAAKyJ,IAAO,IAAI1O,CAAE;AAC/B,WAAKuK,KAAA,QAAAA,EAAM,QAGJA,EAAK,SAFH;AAAA,EAGX;AAAA,EACA,SAASvK,GAAI;AAl1Ef,QAAAhH;AAm1EI,IAAAiM,EAAA,MAAKyJ,OAALxJ,EAAA,MAAKwJ,IAAW,oBAAI,IAAG;AACvB,UAAMnE,IAAOtF,EAAA,MAAKyJ,IAAO,IAAI1O,CAAE;AAK/B,QAJI,CAACuK,MAGLA,EAAK,cAAc,GACfA,EAAK,eAAe;AACtB;AAEF,UAAM;AAAA,MACJ,QAAAiF;AAAA,IACN,IAAQjF;AACJ,QAAI,CAACA,EAAK,OAAO,CAACA,EAAK,MAAM;AAC3B,YAAM+E,IAAS,IAAI,gBAAgBE,EAAO,OAAOA,EAAO,MAAM;AAE9D,MADYF,EAAO,WAAW,gBAAgB,EAC1C,wBAAwBE,CAAM,GAClCjF,EAAK,cAAc+E,EAAO,cAAa;AAAA,IACzC;AACA,KAAAtW,IAAAwW,EAAO,UAAP,QAAAxW,EAAA,KAAAwW,IACAjF,EAAK,SAAS;AAAA,EAChB;AAAA,EACA,UAAUvK,GAAI;AACZ,WAAOA,EAAG,WAAW,SAASiF,EAAA,MAAKwJ,GAAO,GAAG;AAAA,EAC/C;AACF;AArKEA,KAAA,eACAH,KAAA,eACAI,KAAA,eAHFC,KAAA,eAkBQC,KAAI,eAAClO,GAAK+O,GAAS;AACvB,EAAAxK,EAAA,MAAKyJ,OAALxJ,EAAA,MAAKwJ,IAAW,oBAAI,IAAG;AACvB,MAAInE,IAAOtF,EAAA,MAAKyJ,IAAO,IAAIhO,CAAG;AAC9B,MAAI6J,MAAS;AACX,WAAO;AAET,MAAIA,KAAA,QAAAA,EAAM;AACR,WAAAA,EAAK,cAAc,GACZA;AAET,MAAI;AACF,IAAAA,UAAS;AAAA,MACP,QAAQ;AAAA,MACR,IAAI,SAAStF,EAAA,MAAKwJ,GAAO,IAAID,GAAA,MAAKF,IAAL,GAAU;AAAA,MACvC,YAAY;AAAA,MACZ,OAAO;AAAA,IACf;AACM,QAAIS;AASJ,QARI,OAAOU,KAAY,YACrBlF,EAAK,MAAMkF,GACXV,IAAQ,MAAMtN,GAAUgO,GAAS,MAAM,KAC9BA,aAAmB,OAC5BV,IAAQxE,EAAK,OAAOkF,IACXA,aAAmB,SAC5BV,IAAQU,IAENV,EAAM,SAAS,iBAAiB;AAClC,YAAMW,IAA+Bb,GAAa,qBAC5Cc,IAAa,IAAI,WAAU,GAC3BC,IAAe,IAAI,MAAK,GACxBC,IAAe,IAAI,QAAQ,CAACvQ,GAASuC,MAAW;AACpD,QAAA+N,EAAa,SAAS,MAAM;AAC1B,UAAArF,EAAK,SAASqF,GACdrF,EAAK,QAAQ,IACbjL,EAAO;AAAA,QACT,GACAqQ,EAAW,SAAS,YAAY;AAC9B,gBAAMzZ,IAAMqU,EAAK,SAASoF,EAAW;AACrC,UAAAC,EAAa,MAAO,MAAMF,IAAgC,GAAGxZ,CAAG,wCAAwCA;AAAA,QAC1G,GACA0Z,EAAa,UAAUD,EAAW,UAAU9N;AAAA,MAC9C,CAAC;AACD,MAAA8N,EAAW,cAAcZ,CAAK,GAC9B,MAAMc;AAAA,IACR;AACE,MAAAtF,EAAK,SAAS,MAAM,kBAAkBwE,CAAK;AAE7C,IAAAxE,EAAK,aAAa;AAAA,EACpB,SAAS5F,GAAG;AACV,IAAA9O,EAAK8O,CAAC,GACN4F,IAAO;AAAA,EACT;AACA,SAAAtF,EAAA,MAAKyJ,IAAO,IAAIhO,GAAK6J,CAAI,GACrBA,KACFtF,EAAA,MAAKyJ,IAAO,IAAInE,EAAK,IAAIA,CAAI,GAExBA;AACT;AA3EF,IAAMuF,KAANjB;AArsEA,IAAAkB,IAAAC,IAAAC,IAAAC;AA42EA,MAAMC,GAAe;AAAA,EAKnB,YAAYC,IAAU,KAAK;AAJ3B,IAAAzS,EAAA,MAAAoS,IAAY,CAAA;AACZ,IAAApS,EAAA,MAAAqS,IAAU;AACV,IAAArS,EAAA,MAAAsS;AACA,IAAAtS,EAAA,MAAAuS,IAAY;AAEV,IAAAhL,EAAA,MAAK+K,IAAWG;AAAA,EAClB;AAAA,EACA,IAAI;AAAA,IACF,KAAAC;AAAA,IACA,MAAAC;AAAA,IACA,MAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAA9O,IAAO;AAAA,IACP,qBAAA+O,IAAsB;AAAA,IACtB,UAAAC,IAAW;AAAA,EACf,GAAK;AAID,QAHIF,KACFH,EAAG,GAEDpL,EAAA,MAAK+K;AACP;AAEF,UAAMW,IAAO;AAAA,MACX,KAAAN;AAAA,MACA,MAAAC;AAAA,MACA,MAAAC;AAAA,MACA,MAAA7O;AAAA,IACN;AACI,QAAIuD,EAAA,MAAKiL,QAAc,IAAI;AACzB,MAAIjL,EAAA,MAAK8K,IAAU,SAAS,MAC1B9K,EAAA,MAAK8K,IAAU,SAAS,IAE1B7K,EAAA,MAAKgL,IAAY,IACjBjL,EAAA,MAAK8K,IAAU,KAAKY,CAAI;AACxB;AAAA,IACF;AACA,QAAIF,KAAuBxL,EAAA,MAAK8K,IAAU9K,EAAA,MAAKiL,GAAS,EAAE,SAASxO,GAAM;AACvE,MAAIgP,MACFC,EAAK,OAAO1L,EAAA,MAAK8K,IAAU9K,EAAA,MAAKiL,GAAS,EAAE,OAE7CjL,EAAA,MAAK8K,IAAU9K,EAAA,MAAKiL,GAAS,IAAIS;AACjC;AAAA,IACF;AACA,UAAMC,IAAO3L,EAAA,MAAKiL,MAAY;AAC9B,IAAIU,MAAS3L,EAAA,MAAKgL,MAChBhL,EAAA,MAAK8K,IAAU,OAAO,GAAG,CAAC,KAE1B7K,EAAA,MAAKgL,IAAYU,IACbA,IAAO3L,EAAA,MAAK8K,IAAU,UACxB9K,EAAA,MAAK8K,IAAU,OAAOa,CAAI,IAG9B3L,EAAA,MAAK8K,IAAU,KAAKY,CAAI;AAAA,EAC1B;AAAA,EACA,OAAO;AACL,QAAI1L,EAAA,MAAKiL,QAAc;AACrB;AAEF,IAAAhL,EAAA,MAAK8K,IAAU;AACf,UAAM;AAAA,MACJ,MAAAM;AAAA,MACA,MAAAC;AAAA,IACN,IAAQtL,EAAA,MAAK8K,IAAU9K,EAAA,MAAKiL,GAAS;AACjC,IAAAI,EAAI,GACJC,KAAA,QAAAA,KACArL,EAAA,MAAK8K,IAAU,KACf9K,EAAA,MAAKgL,IAALjL,EAAA,MAAKiL,MAAa;AAAA,EACpB;AAAA,EACA,OAAO;AACL,QAAIjL,EAAA,MAAKiL,MAAYjL,EAAA,MAAK8K,IAAU,SAAS,GAAG;AAC9C,MAAA7K,EAAA,MAAKgL,IAALjL,EAAA,MAAKiL,MAAa,IAClBhL,EAAA,MAAK8K,IAAU;AACf,YAAM;AAAA,QACJ,KAAAK;AAAA,QACA,MAAAE;AAAA,MACR,IAAUtL,EAAA,MAAK8K,IAAU9K,EAAA,MAAKiL,GAAS;AACjC,MAAAG,EAAG,GACHE,KAAA,QAAAA,KACArL,EAAA,MAAK8K,IAAU;AAAA,IACjB;AAAA,EACF;AAAA,EACA,qBAAqB;AACnB,WAAO/K,EAAA,MAAKiL,QAAc;AAAA,EAC5B;AAAA,EACA,qBAAqB;AACnB,WAAOjL,EAAA,MAAKiL,MAAYjL,EAAA,MAAK8K,IAAU,SAAS;AAAA,EAClD;AAAA,EACA,UAAUrO,GAAM;AACd,QAAIuD,EAAA,MAAKiL,QAAc,IAGvB;AAAA,eAAS9X,IAAI6M,EAAA,MAAKiL,KAAW9X,KAAK,GAAGA;AACnC,YAAI6M,EAAA,MAAK8K,IAAU3X,CAAC,EAAE,SAASsJ,GAAM;AACnC,UAAAuD,EAAA,MAAK8K,IAAU,OAAO3X,IAAI,GAAG6M,EAAA,MAAKiL,MAAY9X,CAAC,GAC/C8M,EAAA,MAAKgL,IAAY9X;AACjB;AAAA,QACF;AAEF,MAAA6M,EAAA,MAAK8K,IAAU,SAAS,GACxB7K,EAAA,MAAKgL,IAAY;AAAA;AAAA,EACnB;AAAA,EACA,UAAU;AACR,IAAAhL,EAAA,MAAK6K,IAAY;AAAA,EACnB;AACF;AAxGEA,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA;AAh3EF,IAAAW,IAAAC;AAs9EA,MAAMC,GAAgB;AAAA,EACpB,YAAYC,GAAW;AADzB,IAAArT,EAAA,MAAAkT;AAEI,SAAK,SAAS,CAAA,GACd,KAAK,YAAY,oBAAI,IAAG,GACxB,KAAK,UAAU,oBAAI,IAAG;AACtB,UAAM;AAAA,MACJ,OAAAI;AAAA,IACN,IAAQpY,GAAiB;AACrB,eAAW,CAACsL,GAAM+M,GAAU7a,IAAU,CAAA,CAAE,KAAK2a;AAC3C,iBAAWtQ,KAAOyD,GAAM;AACtB,cAAMgN,IAAWzQ,EAAI,WAAW,MAAM;AACtC,QAAIuQ,KAASE,KACX,KAAK,UAAU,IAAIzQ,EAAI,MAAM,CAAC,GAAG;AAAA,UAC/B,UAAAwQ;AAAA,UACA,SAAA7a;AAAA,QACZ,CAAW,GACD,KAAK,QAAQ,IAAIqK,EAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,KAC7B,CAACuQ,KAAS,CAACE,MACpB,KAAK,UAAU,IAAIzQ,GAAK;AAAA,UACtB,UAAAwQ;AAAA,UACA,SAAA7a;AAAA,QACZ,CAAW,GACD,KAAK,QAAQ,IAAIqK,EAAI,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;AAAA,MAE1C;AAAA,EAEJ;AAAA,EAmBA,KAAK0Q,GAAM/Q,GAAO;AAChB,QAAI,CAAC,KAAK,QAAQ,IAAIA,EAAM,GAAG;AAC7B;AAEF,UAAM1K,IAAO,KAAK,UAAU,IAAIyH,EAAA,MAAKyT,IAAAC,IAAL,WAAgBzQ,EAAM;AACtD,QAAI,CAAC1K;AACH;AAEF,UAAM;AAAA,MACJ,UAAAub;AAAA,MACA,SAAS;AAAA,QACP,SAAAG,IAAU;AAAA,QACV,MAAA3S,IAAO,CAAA;AAAA,QACP,SAAA4S,IAAU;AAAA,MAClB;AAAA,IACA,IAAQ3b;AACJ,IAAI2b,KAAW,CAACA,EAAQF,GAAM/Q,CAAK,MAGnC6Q,EAAS,KAAKE,GAAM,GAAG1S,GAAM2B,CAAK,EAAC,GAC9BgR,KACHzM,GAAUvE,CAAK;AAAA,EAEnB;AACF;AArEAwQ,KAAA,eA2BEC,KAAU,SAACzQ,GAAO;AAChB,EAAIA,EAAM,UACR,KAAK,OAAO,KAAK,KAAK,GAEpBA,EAAM,WACR,KAAK,OAAO,KAAK,MAAM,GAErBA,EAAM,WACR,KAAK,OAAO,KAAK,MAAM,GAErBA,EAAM,YACR,KAAK,OAAO,KAAK,OAAO,GAE1B,KAAK,OAAO,KAAKA,EAAM,GAAG;AAC1B,QAAM7H,IAAM,KAAK,OAAO,KAAK,GAAG;AAChC,cAAK,OAAO,SAAS,GACdA;AACT;AA0BF,MAAM+Y,KAAN,MAAMA,GAAa;AAAA,EAEjB,IAAI,UAAU;AACZ,UAAMrL,IAAS,oBAAI,IAAI,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;AAC/D,WAAAD,GAAeC,CAAM,GACdrP,EAAO,MAAM,WAAWqP,CAAM;AAAA,EACvC;AAAA,EACA,QAAQH,GAAO;AACb,UAAMyC,IAAM1C,GAAOC,CAAK;AACxB,QAAI,CAAC,OAAO,WAAW,yBAAyB,EAAE;AAChD,aAAOyC;AAET,eAAW,CAACpR,GAAMoa,CAAG,KAAK,KAAK;AAC7B,UAAIA,EAAI,MAAM,CAAC9U,GAAGtE,MAAMsE,MAAM8L,EAAIpQ,CAAC,CAAC;AAClC,eAAOmZ,GAAa,eAAe,IAAIna,CAAI;AAG/C,WAAOoR;AAAA,EACT;AAAA,EACA,WAAWpR,GAAM;AACf,UAAMoR,IAAM,KAAK,QAAQ,IAAIpR,CAAI;AACjC,WAAKoR,IAGEjP,EAAK,aAAa,GAAGiP,CAAG,IAFtBpR;AAAA,EAGX;AACF;AAzBEmK,EADIgQ,IACG,kBAAiB,oBAAI,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;AAD1F,IAAME,KAANF;AA5hFA,IAAAG,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAujFA,MAAMC,KAAN,MAAMA,GAA0B;AAAA,EAsH9B,YAAY/L,GAAWgM,GAAQC,GAAaC,GAAgBC,GAAgB9J,GAAkB+J,GAAUC,GAAaC,GAAYC,GAAiBC,GAA+BC,GAAuBC,GAAiCC,GAAWC,GAAeC,GAAqB;AAtH1R,IAAApZ,EAAA,MAAAgX;AACE,IAAAhX,EAAA,MAAA+T,IAAmB,IAAI,gBAAe;AACtC,IAAA/T,EAAA,MAAAgU,IAAgB;AAChB,IAAAhU,EAAA,MAAAiU,IAA0B;AAC1B,IAAAjU,EAAA,MAAAkU,IAAc,oBAAI,IAAG;AACrB,IAAAlU,EAAA,MAAAmU,IAAa,oBAAI,IAAG;AACpB,IAAAnU,EAAA,MAAAoU,IAAkB;AAClB,IAAApU,EAAA,MAAAqU,IAAqB;AACrB,IAAArU,EAAA,MAAAsU,IAA8B;AAC9B,IAAAtU,EAAA,MAAAuU,IAAkB,IAAI/B,GAAc;AACpC,IAAAxS,EAAA,MAAAwU,IAAkB;AAClB,IAAAxU,EAAA,MAAAyU,IAAe;AACf,IAAAzU,EAAA,MAAA0U,IAAyB;AACzB,IAAA1U,EAAA,MAAA2U,IAAoB;AACpB,IAAA3U,EAAA,MAAA4U,IAAgC,oBAAI,IAAG;AACvC,IAAA5U,EAAA,MAAA6U,IAAmB;AACnB,IAAA7U,EAAA,MAAA8U,IAAe;AACf,IAAA9U,EAAA,MAAA+U,IAAoB,oBAAI,IAAG;AAC3B,IAAAnR,EAAA,wBAAiB;AACjB,IAAA5D,EAAA,MAAAgV,IAAiC;AACjC,IAAAhV,EAAA,MAAAiV,IAAyB;AACzB,IAAAjV,EAAA,MAAAkV,IAAmC;AACnC,IAAAlV,EAAA,MAAAmV,IAAiB;AACjB,IAAAnV,EAAA,MAAAoV,IAA+B;AAC/B,IAAApV,EAAA,MAAAqV,IAAkB;AAClB,IAAArV,EAAA,MAAAsV,IAAmB;AACnB,IAAAtV,EAAA,MAAAuV,IAAwB;AACxB,IAAAvV,EAAA,MAAAwV,IAAmB;AACnB,IAAAxV,EAAA,MAAAyV,IAAa,IAAI7E,GAAS;AAC1B,IAAA5Q,EAAA,MAAA0V,IAAa;AACb,IAAA1V,EAAA,MAAA2V,IAAiB;AACjB,IAAA3V,EAAA,MAAA4V,IAAa;AACb,IAAA5V,EAAA,MAAA6V,IAAqB;AACrB,IAAA7V,EAAA,MAAA8V,IAAqB;AACrB,IAAA9V,EAAA,MAAA+V,IAA4B;AAC5B,IAAA/V,EAAA,MAAAgW,IAAmB;AACnB,IAAAhW,EAAA,MAAAiW,IAAa;AACb,IAAAjW,EAAA,MAAAkW,IAAQlf,EAAqB;AAC7B,IAAAgJ,EAAA,MAAAmW,IAAmB,oBAAI,IAAG;AAC1B,IAAAnW,EAAA,MAAAoW,IAAoB;AACpB,IAAApW,EAAA,MAAAqW,IAAoB;AACpB,IAAArW,EAAA,MAAAsW,IAAc;AACd,IAAAtW,EAAA,MAAAuW,IAAiB;AACjB,IAAAvW,EAAA,MAAAwW,IAAe;AACf,IAAAxW,EAAA,MAAAyW,IAAkB;AAAA,MAChB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,MACnB,iBAAiB;AAAA,IACrB;AACE,IAAAzW,EAAA,MAAA0W,IAAe,CAAC,GAAG,CAAC;AACpB,IAAA1W,EAAA,MAAA2W,IAAwB;AACxB,IAAA3W,EAAA,MAAA4W,IAAa;AACb,IAAA5W,EAAA,MAAA6W,IAAU;AACV,IAAA7W,EAAA,MAAA8W,IAAe;AACf,IAAA9W,EAAA,MAAA+W,IAAwB;AA8DtB,UAAM9I,IAAS,KAAK,UAAU3G,EAAA,MAAKyM,IAAiB;AACpD,IAAAxM,EAAA,MAAKqP,IAAarK,IAClBhF,EAAA,MAAKsP,IAAU0B,IACfhR,EAAA,MAAKuP,IAAe0B,IACpBjR,EAAA,MAAK6M,IAAkBqE,IACvBlR,EAAA,MAAKiN,IAAkBkE,IACvBnR,EAAA,MAAK8O,IAAoBzH,IACzBrH,EAAA,MAAKiP,IAAeoC,IACpB,KAAK,YAAYD,GACjBA,EAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D,QAAA1K;AAAA,IACN,CAAK,GACD0K,EAAS,IAAI,gBAAgB,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MAC3D,QAAA1K;AAAA,IACN,CAAK,GACD0K,EAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D,QAAA1K;AAAA,IACN,CAAK,GACD0K,EAAS,IAAI,oBAAoB,KAAK,mBAAmB,KAAK,IAAI,GAAG;AAAA,MACnE,QAAA1K;AAAA,IACN,CAAK,GACD0K,EAAS,IAAI,iBAAiB,KAAK,gBAAgB,KAAK,IAAI,GAAG;AAAA,MAC7D,QAAA1K;AAAA,IACN,CAAK,GACD0K,EAAS,IAAI,gCAAgC,CAAAU,MAAO,KAAK,aAAaA,EAAI,MAAMA,EAAI,KAAK,GAAG;AAAA,MAC1F,QAAApL;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,eAAe,MAAM;AAC3C,MAAA1G,EAAA,MAAKoO,IAAiB;AAAA,IACxB,GAAG;AAAA,MACD,SAAS;AAAA,MACT,QAAA1H;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,aAAa,MAAM;AACzC,MAAA1G,EAAA,MAAKoO,IAAiB;AAAA,IACxB,GAAG;AAAA,MACD,SAAS;AAAA,MACT,QAAA1H;AAAA,IACN,CAAK,GACDxO,EAAA,MAAKuX,GAAAM,IAAL,YACA7X,EAAA,MAAKuX,GAAAa,IAAL,YACApY,EAAA,MAAKuX,GAAAS,IAAL,YACAlQ,EAAA,MAAK8M,IAAqBuE,EAAY,oBACtCrR,EAAA,MAAK4N,IAAiByD,EAAY,gBAClCrR,EAAA,MAAK+O,IAAcuC,IACnBtR,EAAA,MAAK+N,IAAmBwD,KAAmB,OAC3CvR,EAAA,MAAKyN,IAAiC+D,IACtCxR,EAAA,MAAK0N,IAAyB+D,IAC9BzR,EAAA,MAAK2N,IAAmC+D,IACxC1R,EAAA,MAAK0O,IAAaiD,KAAa,OAC/B,KAAK,iBAAiB;AAAA,MACpB,WAAWrV,GAAc;AAAA,MACzB,UAAU;AAAA,IAChB,GACI,KAAK,iBAAiB,IACtB,KAAK,iBAAiBsV,KAAiB,MACvC,KAAK,uBAAuBC,MAAwB,IACpDV,KAAA,QAAAA,EAAgB,oBAAoB;AAAA,EACtC;AAAA,EArHA,WAAW,mBAAmB;AAC5B,UAAMY,IAAQhB,GAA0B,WAClCiB,IAAe,CAAA9F,MAAQnM,EAAAmM,GAAKmD,IAAW,SAAS,SAAS,aAAa,KAAK,SAAS,cAAc,YAAY,YAAYnD,EAAK,sBAAqB,GACpJ+F,IAAmB,CAACC,GAAO;AAAA,MAC/B,QAAQhW;AAAA,IACd,MAAU;AACJ,UAAIA,aAAc,kBAAkB;AAClC,cAAM;AAAA,UACJ,MAAAM;AAAA,QACV,IAAYN;AACJ,eAAOM,MAAS,UAAUA,MAAS;AAAA,MACrC;AACA,aAAO;AAAA,IACT,GACM2V,IAAQ,KAAK,iBACbC,IAAM,KAAK;AACjB,WAAOzgB,EAAO,MAAM,oBAAoB,IAAIka,GAAgB,CAAC,CAAC,CAAC,UAAU,YAAY,GAAGkG,EAAM,WAAW;AAAA,MACvG,SAASE;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,UAAU,YAAY,GAAGF,EAAM,MAAM;AAAA,MACzC,SAASE;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,UAAU,gBAAgB,oBAAoB,gBAAgB,kBAAkB,GAAGF,EAAM,MAAM;AAAA,MACnG,SAASE;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,iBAAiB,kBAAkB,mBAAmB,iBAAiB,qBAAqB,sBAAsB,UAAU,eAAe,gBAAgB,YAAY,GAAGF,EAAM,QAAQ;AAAA,MACzM,SAASE;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,SAAS,WAAW,GAAGF,EAAM,0BAA0B;AAAA,MAC3D,SAAS,CAAC7F,GAAM;AAAA,QACd,QAAQhQ;AAAA,MAChB,MAAY,EAAEA,aAAc,sBAAsB6D,EAAAmM,GAAKmD,IAAW,SAASnT,CAAE,KAAK,CAACgQ,EAAK;AAAA,IACxF,CAAK,GAAG,CAAC,CAAC,KAAK,OAAO,GAAG6F,EAAM,0BAA0B;AAAA,MACnD,SAAS,CAAC7F,GAAM;AAAA,QACd,QAAQhQ;AAAA,MAChB,MAAY,EAAEA,aAAc,sBAAsB6D,EAAAmM,GAAKmD,IAAW,SAAS,SAAS,aAAa;AAAA,IACjG,CAAK,GAAG,CAAC,CAAC,UAAU,YAAY,GAAG0C,EAAM,WAAW,GAAG,CAAC,CAAC,aAAa,eAAe,GAAGA,EAAM,0BAA0B;AAAA,MAClH,MAAM,CAAC,CAACI,GAAO,CAAC;AAAA,MAChB,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAGD,EAAM,0BAA0B;AAAA,MAC9E,MAAM,CAAC,CAACK,GAAK,CAAC;AAAA,MACd,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAGD,EAAM,0BAA0B;AAAA,MACrE,MAAM,CAACI,GAAO,CAAC;AAAA,MACf,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAGD,EAAM,0BAA0B;AAAA,MAChF,MAAM,CAACK,GAAK,CAAC;AAAA,MACb,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAGD,EAAM,0BAA0B;AAAA,MAC/D,MAAM,CAAC,GAAG,CAACI,CAAK;AAAA,MAChB,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAGD,EAAM,0BAA0B;AAAA,MAC1E,MAAM,CAAC,GAAG,CAACK,CAAG;AAAA,MACd,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAGD,EAAM,0BAA0B;AAAA,MACnE,MAAM,CAAC,GAAGI,CAAK;AAAA,MACf,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAGD,EAAM,0BAA0B;AAAA,MAC9E,MAAM,CAAC,GAAGK,CAAG;AAAA,MACb,SAASJ;AAAA,IACf,CAAK,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EA6DA,UAAU;AAzuFZ,QAAAle,GAAAC,GAAAse,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC;AA0uFI,KAAA7e,IAAAiM,EAAA,MAAKyP,QAAL,QAAA1b,EAA4B,WAC5BkM,EAAA,MAAKwP,IAAwB,QAC7Bzb,IAAAgM,EAAA,MAAKyM,QAAL,QAAAzY,EAAuB,SACvBiM,EAAA,MAAKwM,IAAmB,OACxB,KAAK,UAAU;AACf,eAAWoG,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,MAAAgG,EAAM,QAAO;AAEf,IAAA7S,EAAA,MAAK6M,IAAW,MAAK,GACrB7M,EAAA,MAAK4M,IAAY,MAAK,GACtB5M,EAAA,MAAKyN,IAAkB,MAAK,IAC5B6E,IAAAtS,EAAA,MAAK0O,QAAL,QAAA4D,EAAuB,SACvBrS,EAAA,MAAKyM,IAAgB,OACrB1M,EAAA,MAAK6O,IAAiB,MAAK,GAC3B7O,EAAA,MAAKiN,IAAgB,QAAO,IAC5BsF,IAAAvS,EAAA,MAAK8M,QAAL,QAAAyF,EAAsB,YACtBC,IAAAxS,EAAA,MAAKkN,QAAL,QAAAsF,EAAsB,YACtBC,IAAAzS,EAAA,MAAK+O,QAAL,QAAA0D,EAAwB,YACxBC,IAAA1S,EAAA,MAAKkO,QAAL,QAAAwE,EAAuB,QACvBzS,EAAA,MAAKiO,IAAmB,QACxByE,IAAA3S,EAAA,MAAKyO,QAAL,QAAAkE,EAAgC,WAChC1S,EAAA,MAAKwO,IAA4B,OACjCxO,EAAA,MAAK0M,IAA0B,OAC3B3M,EAAA,MAAK8N,QACP,aAAa9N,EAAA,MAAK8N,GAA4B,GAC9C7N,EAAA,MAAK6N,IAA+B,QAElC9N,EAAA,MAAKqP,QACP,aAAarP,EAAA,MAAKqP,GAAqB,GACvCpP,EAAA,MAAKoP,IAAwB,SAE/BuD,IAAA,KAAK,mBAAL,QAAAA,EAAqB,WACrB3S,EAAA,MAAKiP,IAAe;AAAA,EACtB;AAAA,EACA,eAAe4D,GAAI;AACjB,WAAO,YAAY,IAAI,CAAC,KAAK,SAASA,EAAG,MAAM,CAAC;AAAA,EAClD;AAAA,EACA,IAAI,YAAY;AACd,WAAO9S,EAAA,MAAK2O;AAAA,EACd;AAAA,EACA,IAAI,oBAAoB;AACtB,WAAO3O,EAAA,MAAK2N;AAAA,EACd;AAAA,EACA,IAAI,+BAA+B;AACjC,WAAO3N,EAAA,MAAK4N;AAAA,EACd;AAAA,EACA,IAAI,YAAY;AACd,WAAOhc,EAAO,MAAM,aAAaoO,EAAA,MAAKgP,MAAchP,EAAA,MAAK6N,IAAe,aAAa7N,EAAA,MAAKgP,IAAY,YAAYhP,EAAA,MAAKgP,IAAY,UAAU,IAAI,MAAM;AAAA,EACzJ;AAAA,EACA,IAAI,YAAY;AACd,WAAOpd,EAAO,MAAM,aAAa,iBAAiBoO,EAAA,MAAKsP,GAAU,EAAE,SAAS;AAAA,EAC9E;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO1d,EAAO,MAAM,oBAAoBoO,EAAA,MAAKgO,MAAmB,IAAI,IAAIhO,EAAA,MAAKgO,IAAiB,MAAM,GAAG,EAAE,IAAI,CAAA+E,OAC3GA,IAAOA,EAAK,MAAM,GAAG,EAAE,IAAI,CAAAtb,MAAKA,EAAE,MAAM,GACxCsb,EAAK,CAAC,IAAIA,EAAK,CAAC,EAAE,YAAW,GACtBA,EACR,CAAC,IAAI,IAAI;AAAA,EACZ;AAAA,EACA,IAAI,kBAAkB;AACpB,UAAM;AAAA,MACJ,kBAAA/E;AAAA,IACN,IAAQ;AACJ,QAAI,CAACA;AACH,aAAOpc,EAAO,MAAM,mBAAmB,IAAI;AAE7C,UAAMohB,IAAM,oBAAI,IAAG,GACbC,IAAS,CAAC,CAACjT,EAAA,MAAKgP;AACtB,eAAW,CAAC7c,GAAM2O,CAAK,KAAKkN,GAAkB;AAC5C,YAAMkF,IAAe/gB,EAAK,SAAS,MAAM;AACzC,UAAI8gB,KAAUC,GAAc;AAC1B,QAAAF,EAAI,IAAI7gB,EAAK,QAAQ,QAAQ,EAAE,GAAG2O,CAAK;AACvC;AAAA,MACF;AACA,MAAI,CAACmS,KAAU,CAACC,KACdF,EAAI,IAAI7gB,GAAM2O,CAAK;AAAA,IAEvB;AACA,WAAOlP,EAAO,MAAM,mBAAmBohB,CAAG;AAAA,EAC5C;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAOphB,EAAO,MAAM,uBAAuB,KAAK,kBAAkB,IAAI,IAAI,MAAM,KAAK,KAAK,iBAAiB,CAAA8N,MAAKA,EAAE,QAAO,CAAE,CAAC,IAAI,IAAI;AAAA,EACtI;AAAA,EACA,eAAeoB,GAAO;AACpB,QAAI,CAAC,KAAK;AACR,aAAOA;AAET,UAAMqS,IAAY,KAAK,oBAAoB,IAAIrS,CAAK;AACpD,WAAO,KAAK,iBAAiB,IAAIqS,CAAS,KAAKrS;AAAA,EACjD;AAAA,EACA,mBAAmBA,GAAO;AACxB,WAAO,KAAK,oBAAoB,IAAIA,CAAK,KAAKA;AAAA,EAChD;AAAA,EACA,yBAAyB+R,GAAO;AAC9B,IAAIA,KACF,KAAK,YAAW,GAChB,KAAK,kBAAkB,EAAI,KAE3B,KAAK,kBAAkB,EAAK,GAE9B5S,EAAA,MAAKmN,IAAyByF;AAAA,EAChC;AAAA,EACA,4BAA4BxL,GAAa;AACvC,IAAApH,EAAA,MAAKwO,IAA4BpH;AAAA,EACnC;AAAA,EACA,YAAYZ,GAAQ2M,IAAY,IAAO;AAn1FzC,QAAArf;AAo1FI,KAAAA,IAAAiM,EAAA,MAAK8M,QAAL,QAAA/Y,EAAsB,YAAY,MAAM0S,GAAQ2M;AAAA,EAClD;AAAA,EACA,oBAAoB;AAClB,WAAO,CAAC,CAACpT,EAAA,MAAKkN;AAAA,EAChB;AAAA,EACA,YAAYzG,GAAQ4M,GAAMC,GAAMliB,GAAS;AAz1F3C,QAAA2C;AA01FI,KAAAA,IAAAiM,EAAA,MAAKkN,QAAL,QAAAnZ,EAAsB,WAAW,MAAM0S,GAAQ4M,GAAMC,GAAMliB;AAAA,EAC7D;AAAA,EACA,cAAcmiB,GAAWC,GAAK;AAC5B,UAAMX,IAAQ7S,EAAA,MAAK6M,IAAW,IAAI0G,CAAS,GACrC9M,IAASoM,KAAA,gBAAAA,EAAO,eAAeW;AACrC,IAAA/M,KAAA,QAAAA,EAAQ,cAAc,IAAM;AAAA,EAC9B;AAAA,EACA,cAAcA,GAAQ;AAj2FxB,QAAA1S;AAk2FI,KAAAA,IAAAiM,EAAA,MAAKkN,QAAL,QAAAnZ,EAAsB,cAAc0S,EAAO,QAAO;AAAA,EACpD;AAAA,EACA,iBAAiBA,GAAQ;AAp2F3B,QAAA1S;AAq2FI,KAAAA,IAAAiM,EAAA,MAAKkN,QAAL,QAAAnZ,EAAsB,iBAAiB0S;AAAA,EACzC;AAAA,EACA,cAAcA,GAAQ;AAv2FxB,QAAA1S;AAw2FI,KAAAA,IAAAiM,EAAA,MAAKkN,QAAL,QAAAnZ,EAAsB,eAAe,CAAC0S,EAAO,GAAG;AAAA,EAClD;AAAA,EACA,cAAcA,GAAQgN,GAAYC,IAAa,QAAW;AA12F5D,QAAA3f;AA22FI,KAAAA,IAAAiM,EAAA,MAAKkN,QAAL,QAAAnZ,EAAsB,mBAAmB0S,GAAQgN,GAAYC;AAAA,EAC/D;AAAA,EACA,iBAAiB5S,GAAOsC,GAAS;AA72FnC,QAAArP;AA82FI,WAAO+M,OAAS/M,IAAAiM,EAAA,MAAKkN,QAAL,gBAAAnZ,EAAsB,iBAAiB+M,GAAOsC,OAAY;AAAA,EAC5E;AAAA,EACA,0BAA0B;AAh3F5B,QAAArP;AAi3FI,aAAOA,IAAAiM,EAAA,MAAKkN,QAAL,gBAAAnZ,EAAsB,kBAAiB;AAAA,EAChD;AAAA,EACA,MAAM,uBAAuB4f,GAAY;AACvC,QAAI3T,EAAA,MAAK6M,IAAW,IAAI8G,IAAa,CAAC;AACpC;AAEF,UAAM;AAAA,MACJ,SAAAtZ;AAAA,MACA,SAAA0P;AAAA,IACN,IAAQ,QAAQ,cAAa,GACnB6J,IAAoB,CAAA7B,MAAO;AAC/B,MAAIA,EAAI,eAAe4B,MACrB,KAAK,UAAU,KAAK,mBAAmBC,CAAiB,GACxDvZ,EAAO;AAAA,IAEX;AACA,SAAK,UAAU,GAAG,mBAAmBuZ,CAAiB,GACtD,MAAM7J;AAAA,EACR;AAAA,EACA,aAAatD,GAAQ;AAp4FvB,QAAA1S;AAq4FI,KAAAA,IAAAiM,EAAA,MAAK+O,QAAL,QAAAhb,EAAwB,aAAa;AAAA,MACnC,WAAW;AAAA,MACX,QAAA0S;AAAA,IACN;AAAA,EACE;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAOzG,EAAA,MAAK+O;AAAA,EACd;AAAA,EACA,aAAa8E,GAAM5H,GAAU;AAC3B,SAAK,UAAU,GAAG,+BAA+BA,GAAU;AAAA,MACzD,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,IACnB,CAAK,GACD,KAAK,UAAU,SAAS,0BAA0B;AAAA,MAChD,QAAQ;AAAA,MACR,MAAA4H;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,cAAc1hB,GAAMJ,GAAO;AACzB,SAAK,UAAU,SAAS,iBAAiB;AAAA,MACvC,QAAQ;AAAA,MACR,MAAAI;AAAA,MACA,OAAAJ;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,gBAAgB;AAAA,IACd,MAAAI;AAAA,IACA,OAAAJ;AAAA,EACJ,GAAK;AACD,YAAQI,GAAI;AAAA,MACV,KAAK;AACH,QAAA8N,EAAA,MAAK2N,IAAmC7b;AACxC;AAAA,IACR;AAAA,EACE;AAAA,EACA,eAAe;AAAA,IACb,YAAA4hB;AAAA,EACJ,GAAK;AACD,IAAA1T,EAAA,MAAKoN,IAAoBsG,IAAa;AAAA,EACxC;AAAA,EACA,qBAAqB;AACnB,IAAA3T,EAAA,MAAKsP,IAAW,MAAK;AAAA,EACvB;AAAA,EACA,WAAW7X,GAAGC,GAAG;AACf,eAAWmb,KAAS7S,EAAA,MAAK6M,IAAW,OAAM,GAAI;AAC5C,YAAM;AAAA,QACJ,GAAGiH;AAAA,QACH,GAAGC;AAAA,QACH,OAAAjW;AAAA,QACA,QAAAC;AAAA,MACR,IAAU8U,EAAM,IAAI,sBAAqB;AACnC,UAAIpb,KAAKqc,KAAUrc,KAAKqc,IAAShW,KAASpG,KAAKqc,KAAUrc,KAAKqc,IAAShW;AACrE,eAAO8U;AAAA,IAEX;AACA,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB9gB,IAAQ,IAAO;AAC/B,IAAAiO,EAAA,MAAKuP,IAAQ,UAAU,OAAO,gBAAgBxd,CAAK;AAAA,EACrD;AAAA,EACA,iBAAiB0U,GAAQ;AACvB,IAAAzG,EAAA,MAAKyN,IAAkB,IAAIhH,CAAM;AAAA,EACnC;AAAA,EACA,oBAAoBA,GAAQ;AAC1B,IAAAzG,EAAA,MAAKyN,IAAkB,OAAOhH,CAAM;AAAA,EACtC;AAAA,EACA,gBAAgB;AAAA,IACd,OAAAxJ;AAAA,EACJ,GAAK;AAz8FL,QAAAlJ;AA08FI,SAAK,eAAc,GACnB,KAAK,eAAe,YAAYkJ,IAAQV,GAAc;AACtD,eAAWkK,KAAUzG,EAAA,MAAKyN;AACxB,MAAAhH,EAAO,gBAAe;AAExB,KAAA1S,IAAAiM,EAAA,MAAKoN,QAAL,QAAArZ,EAA6B;AAAA,EAC/B;AAAA,EACA,mBAAmB;AAAA,IACjB,eAAAigB;AAAA,EACJ,GAAK;AACD,SAAK,eAAc,GACnB,KAAK,eAAe,WAAWA;AAAA,EACjC;AAAA,EAoBA,mBAAmBC,IAAmB,IAAI/M,IAAU,IAAO;AACzD,UAAMgN,IAAY,SAAS,aAAY;AACvC,QAAI,CAACA,KAAaA,EAAU;AAC1B;AAEF,UAAM;AAAA,MACJ,YAAAC;AAAA,MACA,cAAAC;AAAA,MACA,WAAAC;AAAA,MACA,aAAAC;AAAA,IACN,IAAQJ,GACEK,IAAOL,EAAU,SAAQ,GAEzBM,IADgBrc,EAAA,MAAKuX,GAAAC,IAAL,WAAmCuE,GACzB,QAAQ,YAAY,GAC9CjM,IAAQ,KAAK,kBAAkBuM,CAAS;AAC9C,QAAI,CAACvM;AACH;AAEF,IAAAiM,EAAU,MAAK;AACf,UAAMrB,IAAQ1a,EAAA,MAAKuX,GAAAE,IAAL,WAA2B4E,IACnCC,IAAazU,EAAA,MAAK4O,QAAUlf,EAAqB,MACjDuc,IAAW,MAAM;AACrB,YAAMxF,IAASoM,KAAA,gBAAAA,EAAO,sBAAsB;AAAA,QAC1C,GAAG;AAAA,QACH,GAAG;AAAA,MACX,GAAS,IAAO;AAAA,QACR,kBAAAoB;AAAA,QACA,OAAAhM;AAAA,QACA,YAAAkM;AAAA,QACA,cAAAC;AAAA,QACA,WAAAC;AAAA,QACA,aAAAC;AAAA,QACA,MAAAC;AAAA,MACR;AACM,MAAIE,KACF,KAAK,eAAe,aAAa,IAAM,EAAI,GAEzCvN,MACFT,KAAA,QAAAA,EAAQ;AAAA,IAEZ;AACA,QAAIgO,GAAY;AACd,WAAK,aAAa/kB,EAAqB,WAAWuc,CAAQ;AAC1D;AAAA,IACF;AACA,IAAAA,EAAQ;AAAA,EACV;AAAA,EACA,iBAAiBgI,IAAmB,IAAI;AACtC,SAAK,mBAAmBA,GAAkB,EAAI;AAAA,EAChD;AAAA,EAeA,sCAAsCS,GAAc;AAClD,QAAI,CAAC1U,EAAA,MAAK+M;AACR,aAAO;AAET,UAAMtR,IAAM,GAAGhM,EAAsB,GAAGilB,CAAY,IAC9CC,IAAc3U,EAAA,MAAK+M,IAAmB,YAAYtR,CAAG;AAC3D,WAAIkZ,KACF3U,EAAA,MAAK+M,IAAmB,OAAOtR,CAAG,GAE7BkZ;AAAA,EACT;AAAA,EACA,uBAAuBlO,GAAQ;AAC7B,IAAI,CAACA,EAAO,QAAO,KAAMzG,EAAA,MAAK+M,OAAsB,CAAC/M,EAAA,MAAK+M,IAAmB,IAAItG,EAAO,EAAE,KACxFzG,EAAA,MAAK+M,IAAmB,SAAStG,EAAO,IAAIA,CAAM;AAAA,EAEtD;AAAA,EACA,UAAUmO,GAAWnb,IAAO,MAAM;AAChC,UAAMyX,IAAclR,EAAA,MAAKwP;AACzB,IAAK0B,MAGLA,EAAY,aAAa,gBAAgB0D,CAAS,GAC9Cnb,IACFyX,EAAY,aAAa,kBAAkB,KAAK,UAAUzX,CAAI,CAAC,IAE/DyX,EAAY,gBAAgB,gBAAgB;AAAA,EAEhD;AAAA,EAoGA,OAAO;AAML,QALA,KAAK,iBAAiB,IAClBlR,EAAA,MAAKiO,QACPhO,EAAA,MAAKgO,IAAwB,KAC7B9V,EAAA,MAAKuX,GAAAK,IAAL,WAAkB,kBAEhB,CAAC,KAAK;AACR;AAEF,UAAM;AAAA,MACJ,eAAA8E;AAAA,IACN,IAAQ;AACJ,eAAWpO,KAAUzG,EAAA,MAAK6O;AACxB,UAAIpI,EAAO,IAAI,SAASoO,CAAa,GAAG;AACtC,QAAA5U,EAAA,MAAKuO,IAAqB,CAAC/H,GAAQoO,CAAa,IAChDpO,EAAO,sBAAsB;AAC7B;AAAA,MACF;AAAA,EAEJ;AAAA,EACA,QAAQ;AACN,QAAI,CAACzG,EAAA,MAAKwO;AACR;AAEF,UAAM,CAACsG,GAAYC,CAAiB,IAAI/U,EAAA,MAAKwO;AAC7C,IAAAvO,EAAA,MAAKuO,IAAqB,OAC1BuG,EAAkB,iBAAiB,WAAW,MAAM;AAClD,MAAAD,EAAW,sBAAsB;AAAA,IACnC,GAAG;AAAA,MACD,MAAM;AAAA,MACN,QAAQ,KAAK;AAAA,IACnB,CAAK,GACDC,EAAkB,MAAK;AAAA,EACzB;AAAA,EA+CA,mBAAmB;AACjB,IAAA5c,EAAA,MAAKuX,GAAAS,IAAL,YACA,KAAK,gBAAgB,EAAI;AAAA,EAC3B;AAAA,EACA,sBAAsB;AACpB,IAAAhY,EAAA,MAAKuX,GAAAU,IAAL,YACA,KAAK,gBAAgB,EAAK;AAAA,EAC5B;AAAA,EACA,SAAShV,GAAO;AACd,eAAW;AAAA,MACT,MAAAqB;AAAA,IACN,KAASrB,EAAM,aAAa;AACtB,iBAAW0L,KAAc9G,EAAA,MAAKwN;AAC5B,YAAI1G,EAAW,yBAAyBrK,CAAI,GAAG;AAC7C,UAAArB,EAAM,aAAa,aAAa,QAChCA,EAAM,eAAc;AACpB;AAAA,QACF;AAAA,EAGN;AAAA,EACA,KAAKA,GAAO;AACV,eAAW4Z,KAAQ5Z,EAAM,aAAa;AACpC,iBAAW0L,KAAc9G,EAAA,MAAKwN;AAC5B,YAAI1G,EAAW,yBAAyBkO,EAAK,IAAI,GAAG;AAClD,UAAAlO,EAAW,MAAMkO,GAAM,KAAK,YAAY,GACxC5Z,EAAM,eAAc;AACpB;AAAA,QACF;AAAA,EAGN;AAAA,EACA,KAAKA,GAAO;AAzxGd,QAAArH;AA4xGI,QAFAqH,EAAM,eAAc,IACpBrH,IAAAiM,EAAA,MAAK0M,QAAL,QAAA3Y,EAAoB,kBAChB,CAAC,KAAK;AACR;AAEF,UAAMkhB,IAAU,CAAA;AAChB,eAAWxO,KAAUzG,EAAA,MAAK6O,KAAkB;AAC1C,YAAMqG,IAAazO,EAAO,UAAU,EAAI;AACxC,MAAIyO,KACFD,EAAQ,KAAKC,CAAU;AAAA,IAE3B;AACA,IAAID,EAAQ,WAAW,KAGvB7Z,EAAM,cAAc,QAAQ,qBAAqB,KAAK,UAAU6Z,CAAO,CAAC;AAAA,EAC1E;AAAA,EACA,IAAI7Z,GAAO;AACT,SAAK,KAAKA,CAAK,GACf,KAAK,OAAM;AAAA,EACb;AAAA,EACA,MAAM,MAAMA,GAAO;AACjB,IAAAA,EAAM,eAAc;AACpB,UAAM;AAAA,MACJ,eAAA+Z;AAAA,IACN,IAAQ/Z;AACJ,eAAW4Z,KAAQG,EAAc;AAC/B,iBAAWrO,KAAc9G,EAAA,MAAKwN;AAC5B,YAAI1G,EAAW,yBAAyBkO,EAAK,IAAI,GAAG;AAClD,UAAAlO,EAAW,MAAMkO,GAAM,KAAK,YAAY;AACxC;AAAA,QACF;AAGJ,QAAI1P,IAAO6P,EAAc,QAAQ,mBAAmB;AACpD,QAAI,CAAC7P;AACH;AAEF,QAAI;AACF,MAAAA,IAAO,KAAK,MAAMA,CAAI;AAAA,IACxB,SAAS8P,GAAI;AACX,MAAAxkB,EAAK,WAAWwkB,EAAG,OAAO,IAAI;AAC9B;AAAA,IACF;AACA,QAAI,CAAC,MAAM,QAAQ9P,CAAI;AACrB;AAEF,SAAK,YAAW;AAChB,UAAMuN,IAAQ,KAAK;AACnB,QAAI;AACF,YAAMwC,IAAa,CAAA;AACnB,iBAAW5O,KAAUnB,GAAM;AACzB,cAAMgQ,IAAqB,MAAMzC,EAAM,YAAYpM,CAAM;AACzD,YAAI,CAAC6O;AACH;AAEF,QAAAD,EAAW,KAAKC,CAAkB;AAAA,MACpC;AACA,YAAMlK,IAAM,MAAM;AAChB,mBAAW3E,KAAU4O;AACnB,UAAAld,EAAA,MAAKuX,GAAAkB,IAAL,WAAuBnK;AAEzB,QAAAtO,EAAA,MAAKuX,GAAAqB,IAAL,WAAoBsE;AAAA,MACtB,GACMhK,IAAO,MAAM;AACjB,mBAAW5E,KAAU4O;AACnB,UAAA5O,EAAO,OAAM;AAAA,MAEjB;AACA,WAAK,YAAY;AAAA,QACf,KAAA2E;AAAA,QACA,MAAAC;AAAA,QACA,UAAU;AAAA,MAClB,CAAO;AAAA,IACH,SAAS+J,GAAI;AACX,MAAAxkB,EAAK,WAAWwkB,EAAG,OAAO,IAAI;AAAA,IAChC;AAAA,EACF;AAAA,EACA,QAAQha,GAAO;AACb,IAAI,CAAC,KAAK,kBAAkBA,EAAM,QAAQ,YACxC,KAAK,iBAAiB,KAEpB4E,EAAA,MAAK4O,QAAUlf,EAAqB,QAAQ,CAAC,KAAK,4BACpDshB,GAA0B,iBAAiB,KAAK,MAAM5V,CAAK;AAAA,EAE/D;AAAA,EACA,MAAMA,GAAO;AACX,IAAI,KAAK,kBAAkBA,EAAM,QAAQ,YACvC,KAAK,iBAAiB,IAClB4E,EAAA,MAAKiO,QACPhO,EAAA,MAAKgO,IAAwB,KAC7B9V,EAAA,MAAKuX,GAAAK,IAAL,WAAkB;AAAA,EAGxB;AAAA,EACA,gBAAgB;AAAA,IACd,MAAA5d;AAAA,EACJ,GAAK;AACD,YAAQA,GAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,aAAKA,CAAI,EAAC;AACV;AAAA,MACF,KAAK;AACH,aAAK,mBAAmB,cAAc;AACtC;AAAA,MACF,KAAK;AACH,aAAK,iBAAiB,cAAc;AACpC;AAAA,IACR;AAAA,EACE;AAAA,EAmBA,gBAAgBojB,GAAW;AACzB,IAAIA,KACFpd,EAAA,MAAKuX,GAAAO,IAAL,YACA9X,EAAA,MAAKuX,GAAAW,IAAL,YACAlY,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,WAAWxQ,EAAA,MAAK4O,QAAUlf,EAAqB;AAAA,MAC/C,SAASyI,EAAA,MAAKuX,GAAAoB,IAAL;AAAA,MACT,oBAAoB9Q,EAAA,MAAKiN,IAAgB,mBAAkB;AAAA,MAC3D,oBAAoBjN,EAAA,MAAKiN,IAAgB,mBAAkB;AAAA,MAC3D,mBAAmB;AAAA,IAC3B,OAEM9U,EAAA,MAAKuX,GAAAQ,IAAL,YACA/X,EAAA,MAAKuX,GAAAY,IAAL,YACAnY,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,WAAW;AAAA,IACnB,IACM,KAAK,kBAAkB,EAAK;AAAA,EAEhC;AAAA,EACA,oBAAoBgF,GAAO;AACzB,QAAI,CAAAxV,EAAA,MAAKwN,KAGT;AAAA,MAAAvN,EAAA,MAAKuN,IAAegI;AACpB,iBAAW1O,KAAc9G,EAAA,MAAKwN;AAC5B,QAAArV,EAAA,MAAKuX,GAAAe,IAAL,WAAuB3J,EAAW;AAAA;AAAA,EAEtC;AAAA,EACA,QAAQ;AACN,WAAO9G,EAAA,MAAKmO,IAAW;AAAA,EACzB;AAAA,EACA,IAAI,eAAe;AACjB,WAAOnO,EAAA,MAAK6M,IAAW,IAAI7M,EAAA,MAAKqN,GAAiB;AAAA,EACnD;AAAA,EACA,SAASkG,GAAW;AAClB,WAAOvT,EAAA,MAAK6M,IAAW,IAAI0G,CAAS;AAAA,EACtC;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAOvT,EAAA,MAAKqN;AAAA,EACd;AAAA,EACA,SAASwF,GAAO;AACd,IAAA7S,EAAA,MAAK6M,IAAW,IAAIgG,EAAM,WAAWA,CAAK,GACtC7S,EAAA,MAAKoO,MACPyE,EAAM,OAAM,IAEZA,EAAM,QAAO;AAAA,EAEjB;AAAA,EACA,YAAYA,GAAO;AACjB,IAAA7S,EAAA,MAAK6M,IAAW,OAAOgG,EAAM,SAAS;AAAA,EACxC;AAAA,EACA,MAAM,WAAWgB,GAAM4B,IAAS,MAAMC,IAAa,IAAOC,IAAiB,IAAOC,IAAsB,IAAOC,IAAc,IAAO;AAj9GtI,QAAA9hB,GAAAC,GAAAse,GAAAC,GAAAC,GAAAC;AAk9GI,QAAIzS,EAAA,MAAK4O,QAAUiF,KAGf,EAAA7T,EAAA,MAAKyP,QACP,MAAMzP,EAAA,MAAKyP,IAAsB,SAC7B,CAACzP,EAAA,MAAKyP,OAWZ;AAAA,UAPAxP,EAAA,MAAKwP,IAAwB,QAAQ,cAAa,KAClD1b,IAAAiM,EAAA,MAAKoN,QAAL,QAAArZ,EAA6B,kBACzBiM,EAAA,MAAK4O,QAAUlf,EAAqB,WACtCsE,IAAAgM,EAAA,MAAKkN,QAAL,QAAAlZ,EAAsB,iBAExBse,IAAAtS,EAAA,MAAKkN,QAAL,QAAAoF,EAAsB,gBACtBrS,EAAA,MAAK2O,IAAQiF,IACTA,MAASnkB,EAAqB,MAAM;AACtC,aAAK,gBAAgB,EAAK,GAC1ByI,EAAA,MAAKuX,GAAAiB,IAAL;AACA,mBAAWlK,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,UAAAnG,EAAO,4BAA2B;AAEpC,SAAA8L,IAAA,KAAK,mBAAL,QAAAA,EAAqB,QACrB,KAAK,cAAc,IAAI,GACvBvS,EAAA,MAAKyP,IAAsB,QAAO;AAClC;AAAA,MACF;AACA,iBAAWhJ,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,QAAAnG,EAAO,2BAA0B;AAEnC,MAAIoN,MAASnkB,EAAqB,aAChC,QAAM8iB,IAAAxS,EAAA,MAAK+O,QAAL,gBAAAyD,EAAwB,mBAE5BkD,KACFtM,GAAgB,iBAAgB,GAElC,KAAK,gBAAgB,EAAI,GACzB,MAAMjR,EAAA,MAAKuX,GAAAgB,IAAL,YACN,KAAK,YAAW;AAChB,iBAAWmC,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,QAAAgG,EAAM,WAAWgB,CAAI;AAEvB,UAAIA,MAASnkB,EAAqB,OAAO;AACvC,QAAAsQ,EAAA,MAAK2M,OAAL1M,EAAA,MAAK0M,IAA4B,MAAM3M,EAAA,MAAKkP,IAAa,qBAAqB,IAAI,IAAIlP,EAAA,MAAKwN,IAAa,IAAI,CAAAsI,MAAeA,EAAY,WAAW,CAAC,CAAC;AACpJ,cAAMC,IAAa,oBAAI,IAAG,GACpBC,IAAc,CAAA;AACpB,mBAAWvP,KAAUzG,EAAA,MAAK4M,IAAY,OAAM,GAAI;AAC9C,gBAAM;AAAA,YACJ,qBAAAqJ;AAAA,YACA,YAAAC;AAAA,YACA,SAAAC;AAAA,UACV,IAAY1P;AACJ,UAAIwP,KACFF,EAAW,IAAIE,CAAmB,GAEhCC,KAAc,CAACC,KACjBH,EAAY,KAAKvP,EAAO,SAAS;AAAA,QAErC;AACA,mBAAW2P,KAAcpW,EAAA,MAAK2M,KAAyB;AACrD,gBAAM;AAAA,YACJ,IAAA5R;AAAA,YACA,UAAAsb;AAAA,YACA,aAAAC;AAAA,UACV,IAAYF;AACJ,UAAIC,MAAYC,KAAA,QAAAA,EAAa,QAAO,CAACP,EAAW,IAAIhb,CAAE,KAAK,CAACiF,EAAA,MAAKsN,IAA8B,IAAIvS,CAAE,KACnGib,EAAY,KAAKI,CAAU;AAAA,QAE/B;AACA,SAAA3D,IAAAzS,EAAA,MAAKkN,QAAL,QAAAuF,EAAsB,YAAYuD;AAAA,MACpC;AACA,UAAI,CAACP,GAAQ;AACX,QAAIE,KACF,KAAK,yBAAwB,GAE/B3V,EAAA,MAAKyP,IAAsB,QAAO;AAClC;AAAA,MACF;AACA,iBAAWhJ,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,QAAInG,EAAO,QAAQgP,KACjB,KAAK,YAAYhP,CAAM,GACnBoP,IACFpP,EAAO,YAAW,IACTmP,IACTnP,EAAO,gBAAe,IAEtBA,EAAO,MAAK,KAGdA,EAAO,SAAQ;AAGnB,MAAAzG,EAAA,MAAKyP,IAAsB,QAAO;AAAA;AAAA,EACpC;AAAA,EACA,2BAA2B;AACzB,IAAI,KAAK,aAAa,6BACpB,KAAK,aAAa,aAAY;AAAA,EAElC;AAAA,EACA,cAAcre,GAAS;AACrB,IAAIA,EAAQ,SAAS4O,EAAA,MAAK4O,OAG1B,KAAK,UAAU,SAAS,8BAA8B;AAAA,MACpD,QAAQ;AAAA,MACR,GAAGxd;AAAA,IACT,CAAK;AAAA,EACH;AAAA,EACA,aAAaqL,GAAM1K,GAAO;AACxB,QAAKiO,EAAA,MAAKwN,KAGV;AAAA,cAAQ/Q,GAAI;AAAA,QACV,KAAK9M,GAA2B;AAC9B,eAAK,aAAa,aAAaoC,CAAK;AACpC;AAAA,QACF,KAAKpC,GAA2B;AAC9B,eAAK,UAAU,SAAS,mBAAmB;AAAA,YACzC,QAAQ;AAAA,YACR,SAAS;AAAA,cACP,MAAM;AAAA,cACN,MAAM;AAAA,gBACJ,MAAM;AAAA,gBACN,QAAQ;AAAA,cACtB;AAAA,YACA;AAAA,UACA,CAAS,IACAqQ,EAAA,MAAKiP,OAALhP,EAAA,MAAKgP,IAAmB,oBAAI,IAAG,IAAI,IAAIxS,GAAM1K,CAAK,GACnD,KAAK,eAAe,aAAaA,CAAK;AACtC;AAAA,MACR;AACI,UAAI,KAAK;AACP,mBAAW0U,KAAUzG,EAAA,MAAK6O;AACxB,UAAApI,EAAO,aAAahK,GAAM1K,CAAK;AAAA;AAGjC,mBAAW+U,KAAc9G,EAAA,MAAKwN;AAC5B,UAAA1G,EAAW,oBAAoBrK,GAAM1K,CAAK;AAAA;AAAA,EAGhD;AAAA,EACA,eAAe0K,GAAM8Z,GAASC,IAAe,IAAO;AA/lHtD,QAAAziB;AAgmHI,eAAW0S,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,MAAInG,EAAO,eAAehK,KACxBgK,EAAO,KAAK8P,CAAO;AAIvB,OADcxiB,IAAAiM,EAAA,MAAKiP,QAAL,gBAAAlb,EAAqB,IAAIpE,GAA2B,wBAAuB,QAC3E4mB,KACZpe,EAAA,MAAKuX,GAAAe,IAAL,WAAuB,CAAC,CAAC9gB,GAA2B,oBAAoB4mB,CAAO,CAAC;AAAA,EAEpF;AAAA,EACA,cAAcE,IAAW,IAAO;AAC9B,QAAIzW,EAAA,MAAKsO,QAAemI,GAGxB;AAAA,MAAAxW,EAAA,MAAKqO,IAAamI;AAClB,iBAAW5D,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,QAAI4J,IACF5D,EAAM,aAAY,IAElBA,EAAM,YAAW,GAEnBA,EAAM,IAAI,UAAU,OAAO,WAAW4D,CAAQ;AAAA;AAAA,EAElD;AAAA,EA0BA,CAAC,WAAWlD,GAAW;AACrB,eAAW9M,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,MAAInG,EAAO,cAAc8M,MACvB,MAAM9M;AAAA,EAGZ;AAAA,EACA,UAAU1L,GAAI;AACZ,WAAOiF,EAAA,MAAK4M,IAAY,IAAI7R,CAAE;AAAA,EAChC;AAAA,EACA,UAAU0L,GAAQ;AAChB,IAAAzG,EAAA,MAAK4M,IAAY,IAAInG,EAAO,IAAIA,CAAM;AAAA,EACxC;AAAA,EACA,aAAaA,GAAQ;AA9pHvB,QAAA1S,GAAAC;AA+pHI,IAAIyS,EAAO,IAAI,SAAS,SAAS,aAAa,MACxCzG,EAAA,MAAK8N,OACP,aAAa9N,EAAA,MAAK8N,GAA4B,GAEhD7N,EAAA,MAAK6N,IAA+B,WAAW,MAAM;AACnD,WAAK,mBAAkB,GACvB7N,EAAA,MAAK6N,IAA+B;AAAA,IACtC,GAAG,CAAC,KAEN9N,EAAA,MAAK4M,IAAY,OAAOnG,EAAO,EAAE,GAC7BA,EAAO,yBACT1S,IAAAiM,EAAA,MAAK0O,QAAL,QAAA3a,EAAuB,OAAO0S,EAAO,uBAEvC,KAAK,SAASA,CAAM,IAChB,CAACA,EAAO,uBAAuB,CAACzG,EAAA,MAAKsN,IAA8B,IAAI7G,EAAO,mBAAmB,QACnGzS,IAAAgM,EAAA,MAAK+M,QAAL,QAAA/Y,EAAyB,OAAOyS,EAAO;AAAA,EAE3C;AAAA,EACA,4BAA4BA,GAAQ;AAClC,IAAAzG,EAAA,MAAKsN,IAA8B,IAAI7G,EAAO,mBAAmB,GACjE,KAAK,6BAA6BA,CAAM,GACxCA,EAAO,UAAU;AAAA,EACnB;AAAA,EACA,2BAA2BwP,GAAqB;AAC9C,WAAOjW,EAAA,MAAKsN,IAA8B,IAAI2I,CAAmB;AAAA,EACnE;AAAA,EACA,+BAA+BxP,GAAQ;AACrC,IAAAzG,EAAA,MAAKsN,IAA8B,OAAO7G,EAAO,mBAAmB,GACpE,KAAK,gCAAgCA,CAAM,GAC3CA,EAAO,UAAU;AAAA,EACnB;AAAA,EAUA,gBAAgBA,GAAQ;AACtB,IAAIzG,EAAA,MAAK0M,QAAkBjG,MAG3BxG,EAAA,MAAKyM,IAAgBjG,IACjBA,KACFtO,EAAA,MAAKuX,GAAAe,IAAL,WAAuBhK,EAAO;AAAA,EAElC;AAAA,EAMA,SAASA,GAAQ;AACf,IAAIzG,EAAA,MAAK0P,GAAAmB,QAAwBpK,KAC/BtO,EAAA,MAAKuX,GAAAe,IAAL,WAAuBhK,EAAO;AAAA,EAElC;AAAA,EACA,6BAA6BK,GAAY;AACvC,IAAA3O,EAAA,MAAKuX,GAAAe,IAAL,WAAuB3J,EAAW;AAAA,EACpC;AAAA,EACA,eAAeL,GAAQ;AACrB,QAAIzG,EAAA,MAAK6O,IAAiB,IAAIpI,CAAM,GAAG;AACrC,MAAAzG,EAAA,MAAK6O,IAAiB,OAAOpI,CAAM,GACnCA,EAAO,SAAQ,GACftO,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,QACzB,mBAAmB,KAAK;AAAA,MAChC;AACM;AAAA,IACF;AACA,IAAAxQ,EAAA,MAAK6O,IAAiB,IAAIpI,CAAM,GAChCA,EAAO,OAAM,GACbtO,EAAA,MAAKuX,GAAAe,IAAL,WAAuBhK,EAAO,qBAC9BtO,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,mBAAmB;AAAA,IACzB;AAAA,EACE;AAAA,EACA,YAAY/J,GAAQ;AA7uHtB,QAAA1S;AA8uHI,SAAK,cAAc;AAAA,MACjB,MAAM0S,EAAO;AAAA,MACb,QAAQA,EAAO;AAAA,IACrB,CAAK,IACD1S,IAAAiM,EAAA,MAAKoN,QAAL,QAAArZ,EAA6B;AAC7B,eAAW2iB,KAAM1W,EAAA,MAAK6O;AACpB,MAAI6H,MAAOjQ,KACTiQ,EAAG,SAAQ;AAGf,IAAA1W,EAAA,MAAK6O,IAAiB,MAAK,GAC3B7O,EAAA,MAAK6O,IAAiB,IAAIpI,CAAM,GAChCA,EAAO,OAAM,GACbtO,EAAA,MAAKuX,GAAAe,IAAL,WAAuBhK,EAAO,qBAC9BtO,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,mBAAmB;AAAA,IACzB;AAAA,EACE;AAAA,EACA,WAAW/J,GAAQ;AACjB,WAAOzG,EAAA,MAAK6O,IAAiB,IAAIpI,CAAM;AAAA,EACzC;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAOzG,EAAA,MAAK6O,IAAiB,OAAM,EAAG,KAAI,EAAG;AAAA,EAC/C;AAAA,EACA,SAASpI,GAAQ;AACf,IAAAA,EAAO,SAAQ,GACfzG,EAAA,MAAK6O,IAAiB,OAAOpI,CAAM,GACnCtO,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,mBAAmB,KAAK;AAAA,IAC9B;AAAA,EACE;AAAA,EACA,IAAI,eAAe;AACjB,WAAOxQ,EAAA,MAAK6O,IAAiB,SAAS;AAAA,EACxC;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO7O,EAAA,MAAK6O,IAAiB,SAAS,KAAK,KAAK,oBAAoB;AAAA,EACtE;AAAA,EACA,OAAO;AAnxHT,QAAA9a;AAoxHI,IAAAiM,EAAA,MAAKiN,IAAgB,KAAI,GACzB9U,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,oBAAoBxQ,EAAA,MAAKiN,IAAgB,mBAAkB;AAAA,MAC3D,oBAAoB;AAAA,MACpB,SAAS9U,EAAA,MAAKuX,GAAAoB,IAAL;AAAA,IACf,KACI/c,IAAA,KAAK,mBAAL,QAAAA,EAAqB;AAAA,EACvB;AAAA,EACA,OAAO;AACL,IAAAiM,EAAA,MAAKiN,IAAgB,KAAI,GACzB9U,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,oBAAoB;AAAA,MACpB,oBAAoBxQ,EAAA,MAAKiN,IAAgB,mBAAkB;AAAA,MAC3D,SAAS9U,EAAA,MAAKuX,GAAAoB,IAAL;AAAA,IACf;AAAA,EACE;AAAA,EACA,YAAY6F,GAAQ;AAClB,IAAA3W,EAAA,MAAKiN,IAAgB,IAAI0J,CAAM,GAC/Bxe,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,SAASrY,EAAA,MAAKuX,GAAAoB,IAAL;AAAA,IACf;AAAA,EACE;AAAA,EACA,eAAerU,GAAM;AACnB,IAAAuD,EAAA,MAAKiN,IAAgB,UAAUxQ,CAAI;AAAA,EACrC;AAAA,EAYA,SAAS;AA1zHX,QAAA1I;AA2zHI,SAAK,eAAc;AACnB,UAAM6iB,KAAgB7iB,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,kBAAkB;AAC3D,QAAI,CAAC,KAAK,gBAAgB,CAAC6iB;AACzB;AAEF,UAAM3B,IAAU2B,IAAgB,CAACA,CAAa,IAAI,CAAC,GAAG5W,EAAA,MAAK6O,GAAgB,GACrEzD,IAAM,MAAM;AAj0HtB,UAAArX;AAk0HM,OAAAA,IAAA,KAAK,mBAAL,QAAAA,EAAqB,KAAKsX,GAAM4J,EAAQ,WAAW,IAAIA,EAAQ,CAAC,EAAE,aAAaA,EAAQ;AACvF,iBAAWxO,KAAUwO;AACnB,QAAAxO,EAAO,OAAM;AAAA,IAEjB,GACM4E,IAAO,MAAM;AACjB,iBAAW5E,KAAUwO;AACnB,QAAA9c,EAAA,MAAKuX,GAAAkB,IAAL,WAAuBnK;AAAA,IAE3B;AACA,SAAK,YAAY;AAAA,MACf,KAAA2E;AAAA,MACA,MAAAC;AAAA,MACA,UAAU;AAAA,IAChB,CAAK;AAAA,EACH;AAAA,EACA,iBAAiB;AAl1HnB,QAAAtX;AAm1HI,KAAAA,IAAAiM,EAAA,MAAK0M,QAAL,QAAA3Y,EAAoB;AAAA,EACtB;AAAA,EACA,wBAAwB;AACtB,WAAOiM,EAAA,MAAK0M,OAAiB,KAAK;AAAA,EACpC;AAAA,EAiBA,YAAY;AACV,eAAWjG,KAAUzG,EAAA,MAAK6O;AACxB,MAAApI,EAAO,OAAM;AAEf,IAAAtO,EAAA,MAAKuX,GAAAqB,IAAL,WAAoB/Q,EAAA,MAAK4M,IAAY,OAAM;AAAA,EAC7C;AAAA,EACA,cAAc;AA92HhB,QAAA7Y;AA+2HI,QAAI,EAAAiM,EAAA,MAAK0M,QACP1M,EAAA,MAAK0M,IAAc,eAAc,GAC7B1M,EAAA,MAAK4O,QAAUlf,EAAqB,UAItC,GAAAqE,IAAAiM,EAAA,MAAKoN,QAAL,QAAArZ,EAA6B,qBAG5B,KAAK,cAGV;AAAA,iBAAW0S,KAAUzG,EAAA,MAAK6O;AACxB,QAAApI,EAAO,SAAQ;AAEjB,MAAAzG,EAAA,MAAK6O,IAAiB,MAAK,GAC3B1W,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,QACzB,mBAAmB;AAAA,MACzB;AAAA;AAAA,EACE;AAAA,EACA,yBAAyB/Y,GAAGC,GAAGmf,IAAW,IAAO;AAI/C,QAHKA,KACH,KAAK,eAAc,GAEjB,CAAC,KAAK;AACR;AAEF,IAAA7W,EAAA,MAAKoP,IAAa,CAAC,KAAK3X,GACxBuI,EAAA,MAAKoP,IAAa,CAAC,KAAK1X;AACxB,UAAM,CAACof,GAAQC,CAAM,IAAI/W,EAAA,MAAKoP,KACxB6F,IAAU,CAAC,GAAGjV,EAAA,MAAK6O,GAAgB,GACnCmI,IAAe;AACrB,IAAIhX,EAAA,MAAKqP,OACP,aAAarP,EAAA,MAAKqP,GAAqB,GAEzCpP,EAAA,MAAKoP,IAAwB,WAAW,MAAM;AAC5C,MAAApP,EAAA,MAAKoP,IAAwB,OAC7BrP,EAAA,MAAKoP,IAAa,CAAC,IAAIpP,EAAA,MAAKoP,IAAa,CAAC,IAAI,GAC9C,KAAK,YAAY;AAAA,QACf,KAAK,MAAM;AACT,qBAAW3I,KAAUwO;AACnB,YAAIjV,EAAA,MAAK4M,IAAY,IAAInG,EAAO,EAAE,MAChCA,EAAO,gBAAgBqQ,GAAQC,CAAM,GACrCtQ,EAAO,gBAAe;AAAA,QAG5B;AAAA,QACA,MAAM,MAAM;AACV,qBAAWA,KAAUwO;AACnB,YAAIjV,EAAA,MAAK4M,IAAY,IAAInG,EAAO,EAAE,MAChCA,EAAO,gBAAgB,CAACqQ,GAAQ,CAACC,CAAM,GACvCtQ,EAAO,gBAAe;AAAA,QAG5B;AAAA,QACA,UAAU;AAAA,MAClB,CAAO;AAAA,IACH,GAAGuQ,CAAY;AACf,eAAWvQ,KAAUwO;AACnB,MAAAxO,EAAO,gBAAgBhP,GAAGC,CAAC,GAC3B+O,EAAO,gBAAe;AAAA,EAE1B;AAAA,EACA,mBAAmB;AACjB,QAAK,KAAK,cAGV;AAAA,WAAK,kBAAkB,EAAI,GAC3BxG,EAAA,MAAKsN,IAAmB,oBAAI,IAAG;AAC/B,iBAAW9G,KAAUzG,EAAA,MAAK6O;AACxB,QAAA7O,EAAA,MAAKuN,IAAiB,IAAI9G,GAAQ;AAAA,UAChC,QAAQA,EAAO;AAAA,UACf,QAAQA,EAAO;AAAA,UACf,gBAAgBA,EAAO;AAAA,UACvB,MAAM;AAAA,UACN,MAAM;AAAA,UACN,cAAc;AAAA,QACtB,CAAO;AAAA;AAAA,EAEL;AAAA,EACA,iBAAiB;AACf,QAAI,CAACzG,EAAA,MAAKuN;AACR,aAAO;AAET,SAAK,kBAAkB,EAAK;AAC5B,UAAMyF,IAAMhT,EAAA,MAAKuN;AACjB,IAAAtN,EAAA,MAAKsN,IAAmB;AACxB,QAAI0J,IAAyB;AAC7B,eAAW,CAAC;AAAA,MACV,GAAAxf;AAAA,MACA,GAAAC;AAAA,MACA,WAAA6b;AAAA,IACN,GAAOxhB,CAAK,KAAKihB;AACX,MAAAjhB,EAAM,OAAO0F,GACb1F,EAAM,OAAO2F,GACb3F,EAAM,eAAewhB,GACrB0D,UAA2Bxf,MAAM1F,EAAM,UAAU2F,MAAM3F,EAAM,UAAUwhB,MAAcxhB,EAAM;AAE7F,QAAI,CAACklB;AACH,aAAO;AAET,UAAMC,IAAO,CAACzQ,GAAQhP,GAAGC,GAAG6b,MAAc;AACxC,UAAIvT,EAAA,MAAK4M,IAAY,IAAInG,EAAO,EAAE,GAAG;AACnC,cAAMxK,IAAS+D,EAAA,MAAK6M,IAAW,IAAI0G,CAAS;AAC5C,QAAItX,IACFwK,EAAO,sBAAsBxK,GAAQxE,GAAGC,CAAC,KAEzC+O,EAAO,YAAY8M,GACnB9M,EAAO,IAAIhP,GACXgP,EAAO,IAAI/O;AAAA,MAEf;AAAA,IACF;AACA,gBAAK,YAAY;AAAA,MACf,KAAK,MAAM;AACT,mBAAW,CAAC+O,GAAQ;AAAA,UAClB,MAAA0Q;AAAA,UACA,MAAAC;AAAA,UACA,cAAAC;AAAA,QACV,CAAS,KAAKrE;AACJ,UAAAkE,EAAKzQ,GAAQ0Q,GAAMC,GAAMC,CAAY;AAAA,MAEzC;AAAA,MACA,MAAM,MAAM;AACV,mBAAW,CAAC5Q,GAAQ;AAAA,UAClB,QAAA6Q;AAAA,UACA,QAAAC;AAAA,UACA,gBAAAC;AAAA,QACV,CAAS,KAAKxE;AACJ,UAAAkE,EAAKzQ,GAAQ6Q,GAAQC,GAAQC,CAAc;AAAA,MAE/C;AAAA,MACA,UAAU;AAAA,IAChB,CAAK,GACM;AAAA,EACT;AAAA,EACA,oBAAoBC,GAAIC,GAAI;AAC1B,QAAK1X,EAAA,MAAKuN;AAGV,iBAAW9G,KAAUzG,EAAA,MAAKuN,IAAiB,KAAI;AAC7C,QAAA9G,EAAO,KAAKgR,GAAIC,CAAE;AAAA,EAEtB;AAAA,EACA,QAAQjR,GAAQ;AACd,QAAIA,EAAO,WAAW,MAAM;AAC1B,YAAMxK,IAAS,KAAK,SAASwK,EAAO,SAAS;AAC7C,MAAIxK,KACFA,EAAO,aAAawK,CAAM,GAC1BxK,EAAO,aAAawK,CAAM,MAE1B,KAAK,UAAUA,CAAM,GACrB,KAAK,uBAAuBA,CAAM,GAClCA,EAAO,QAAO;AAAA,IAElB;AACE,MAAAA,EAAO,OAAO,aAAaA,CAAM;AAAA,EAErC;AAAA,EACA,IAAI,2BAA2B;AA9gIjC,QAAA1S;AA+gII,aAAOA,IAAA,KAAK,gBAAL,gBAAAA,EAAkB,8BAA6BiM,EAAA,MAAK6O,IAAiB,SAAS,KAAK,KAAK,oBAAoB,wBAAuB;AAAA,EAC5I;AAAA,EACA,SAASpI,GAAQ;AACf,WAAOzG,EAAA,MAAK0M,QAAkBjG;AAAA,EAChC;AAAA,EACA,YAAY;AACV,WAAOzG,EAAA,MAAK0M;AAAA,EACd;AAAA,EACA,UAAU;AACR,WAAO1M,EAAA,MAAK4O;AAAA,EACd;AAAA,EACA,gBAAgB;AACd,WAAO5O,EAAA,MAAK4O,QAAUlf,EAAqB;AAAA,EAC7C;AAAA,EACA,IAAI,eAAe;AACjB,WAAOkC,EAAO,MAAM,gBAAgB,IAAIiZ,GAAY,CAAE;AAAA,EACxD;AAAA,EACA,kBAAkB2J,GAAW;AAC3B,QAAI,CAACA;AACH,aAAO;AAET,UAAMN,IAAY,SAAS,aAAY;AACvC,aAAS/gB,IAAI,GAAGmL,IAAK4V,EAAU,YAAY/gB,IAAImL,GAAInL;AACjD,UAAI,CAACqhB,EAAU,SAASN,EAAU,WAAW/gB,CAAC,EAAE,uBAAuB;AACrE,eAAO;AAGX,UAAM;AAAA,MACJ,GAAG2gB;AAAA,MACH,GAAGC;AAAA,MACH,OAAO4D;AAAA,MACP,QAAQC;AAAA,IACd,IAAQpD,EAAU,sBAAqB;AACnC,QAAIqD;AACJ,YAAQrD,EAAU,aAAa,oBAAoB,GAAC;AAAA,MAClD,KAAK;AACH,QAAAqD,IAAU,CAACpgB,GAAGC,GAAGuK,GAAGC,OAAO;AAAA,UACzB,IAAIxK,IAAIqc,KAAU6D;AAAA,UAClB,GAAG,KAAKngB,IAAIwK,IAAI6R,KAAU6D;AAAA,UAC1B,OAAOzV,IAAI0V;AAAA,UACX,QAAQ3V,IAAI0V;AAAA,QACtB;AACQ;AAAA,MACF,KAAK;AACH,QAAAE,IAAU,CAACpgB,GAAGC,GAAGuK,GAAGC,OAAO;AAAA,UACzB,GAAG,KAAKzK,IAAIwK,IAAI6R,KAAU6D;AAAA,UAC1B,GAAG,KAAKjgB,IAAIwK,IAAI6R,KAAU6D;AAAA,UAC1B,OAAO3V,IAAI0V;AAAA,UACX,QAAQzV,IAAI0V;AAAA,QACtB;AACQ;AAAA,MACF,KAAK;AACH,QAAAC,IAAU,CAACpgB,GAAGC,GAAGuK,GAAGC,OAAO;AAAA,UACzB,GAAG,KAAKxK,IAAIwK,IAAI6R,KAAU6D;AAAA,UAC1B,IAAIngB,IAAIqc,KAAU6D;AAAA,UAClB,OAAOzV,IAAI0V;AAAA,UACX,QAAQ3V,IAAI0V;AAAA,QACtB;AACQ;AAAA,MACF;AACE,QAAAE,IAAU,CAACpgB,GAAGC,GAAGuK,GAAGC,OAAO;AAAA,UACzB,IAAIzK,IAAIqc,KAAU6D;AAAA,UAClB,IAAIjgB,IAAIqc,KAAU6D;AAAA,UAClB,OAAO3V,IAAI0V;AAAA,UACX,QAAQzV,IAAI0V;AAAA,QACtB;AACQ;AAAA,IACR;AACI,UAAM3P,IAAQ,CAAA;AACd,aAAS9U,IAAI,GAAGmL,IAAK4V,EAAU,YAAY/gB,IAAImL,GAAInL,KAAK;AACtD,YAAM2kB,IAAQ5D,EAAU,WAAW/gB,CAAC;AACpC,UAAI,CAAA2kB,EAAM;AAGV,mBAAW;AAAA,UACT,GAAArgB;AAAA,UACA,GAAAC;AAAA,UACA,OAAAoG;AAAA,UACA,QAAAC;AAAA,QACR,KAAW+Z,EAAM;AACT,UAAIha,MAAU,KAAKC,MAAW,KAG9BkK,EAAM,KAAK4P,EAAQpgB,GAAGC,GAAGoG,GAAOC,CAAM,CAAC;AAAA,IAE3C;AACA,WAAOkK,EAAM,WAAW,IAAI,OAAOA;AAAA,EACrC;AAAA,EACA,6BAA6B;AAAA,IAC3B,qBAAAgO;AAAA,IACA,IAAAlb;AAAA,EACJ,GAAK;AACD,KAACiF,EAAA,MAAKgN,OAAL/M,EAAA,MAAK+M,IAAgC,oBAAI,IAAG,IAAI,IAAIiJ,GAAqBlb,CAAE;AAAA,EAC9E;AAAA,EACA,gCAAgC;AAAA,IAC9B,qBAAAkb;AAAA,EACJ,GAAK;AA/mIL,QAAAliB;AAgnII,KAAAA,IAAAiM,EAAA,MAAKgN,QAAL,QAAAjZ,EAAkC,OAAOkiB;AAAA,EAC3C;AAAA,EACA,wBAAwBG,GAAY;AAlnItC,QAAAriB;AAmnII,UAAMgkB,KAAWhkB,IAAAiM,EAAA,MAAKgN,QAAL,gBAAAjZ,EAAkC,IAAIqiB,EAAW,KAAK;AACvE,QAAI,CAAC2B;AACH;AAEF,UAAMtR,IAASzG,EAAA,MAAK+M,IAAmB,YAAYgL,CAAQ;AAC3D,IAAKtR,MAGDzG,EAAA,MAAK4O,QAAUlf,EAAqB,QAAQ,CAAC+W,EAAO,mBAGxDA,EAAO,wBAAwB2P,CAAU;AAAA,EAC3C;AAAA,EACA,iBAAiB1B,GAAcuB,GAAqB5L,GAAQ;AAhoI9D,QAAAtW;AAioII,UAAM0S,KAAS1S,IAAAiM,EAAA,MAAK0O,QAAL,gBAAA3a,EAAuB,IAAI2gB;AAC1C,IAAKjO,MAGLA,EAAO,UAAUwP,GAAqB5L,CAAM,GAC5CrK,EAAA,MAAK0O,IAAiB,OAAOgG,CAAY;AAAA,EAC3C;AAAA,EACA,iBAAiBA,GAAcjO,GAAQ;AACrC,KAACzG,EAAA,MAAK0O,OAALzO,EAAA,MAAKyO,IAAqB,oBAAI,IAAG,IAAI,IAAIgG,GAAcjO,CAAM;AAAA,EAChE;AACF;AAnlDEgG,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAEAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAQAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAzDFC,IAAA,eAgaEC,KAA6B,SAAC;AAAA,EAC5B,YAAAwE;AACJ,GAAK;AACD,SAAOA,EAAW,aAAa,KAAK,YAAYA,EAAW,gBAAgBA;AAC7E,GACAvE,KAAqB,SAAC4E,GAAW;AAC/B,QAAM;AAAA,IACJ,cAAAwD;AAAA,EACN,IAAQ;AACJ,MAAIA,EAAa,aAAaxD,CAAS;AACrC,WAAOwD;AAET,aAAWnF,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,QAAIgG,EAAM,aAAa2B,CAAS;AAC9B,aAAO3B;AAGX,SAAO;AACT,GAmDAhD,KAAuB,WAAG;AACxB,QAAMqE,IAAY,SAAS,aAAY;AACvC,MAAI,CAACA,KAAaA,EAAU;AAC1B;AAGF,QAAMM,IADgBrc,EAAA,MAAKuX,GAAAC,IAAL,WAAmCuE,GACzB,QAAQ,YAAY,GAC9CjM,IAAQ,KAAK,kBAAkBuM,CAAS;AAC9C,EAAKvM,MAGLjI,EAAA,MAAKkO,OAALjO,EAAA,MAAKiO,IAAqB,IAAInG,GAAgB,IAAI,IAClD/H,EAAA,MAAKkO,IAAiB,KAAKsG,GAAWvM,GAAO,KAAK,cAAc,KAAK;AACvE,GA6BA6H,KAAgB,WAAG;AAtkGrB,MAAA/b,GAAAC,GAAAse;AAukGI,QAAM4B,IAAY,SAAS,aAAY;AACvC,MAAI,CAACA,KAAaA,EAAU,aAAa;AACvC,IAAIlU,EAAA,MAAK8O,SACP/a,IAAAiM,EAAA,MAAKkO,QAAL,QAAAna,EAAuB,QACvBkM,EAAA,MAAK6O,IAAoB,OACzB3W,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,iBAAiB;AAAA,IAC3B;AAEM;AAAA,EACF;AACA,QAAM;AAAA,IACJ,YAAA2D;AAAA,EACN,IAAQD;AACJ,MAAIC,MAAenU,EAAA,MAAK8O;AACtB;AAGF,QAAM0F,IADgBrc,EAAA,MAAKuX,GAAAC,IAAL,WAAmCuE,GACzB,QAAQ,YAAY;AACpD,MAAI,CAACM,GAAW;AACd,IAAIxU,EAAA,MAAK8O,SACP9a,IAAAgM,EAAA,MAAKkO,QAAL,QAAAla,EAAuB,QACvBiM,EAAA,MAAK6O,IAAoB,OACzB3W,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,MACzB,iBAAiB;AAAA,IAC3B;AAEM;AAAA,EACF;AAMA,OALA8B,IAAAtS,EAAA,MAAKkO,QAAL,QAAAoE,EAAuB,QACvBrS,EAAA,MAAK6O,IAAoBqF,IACzBhc,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,IACzB,iBAAiB;AAAA,EACvB,IACQ,EAAAxQ,EAAA,MAAK4O,QAAUlf,EAAqB,aAAasQ,EAAA,MAAK4O,QAAUlf,EAAqB,UAGrFsQ,EAAA,MAAK4O,QAAUlf,EAAqB,aACtC,KAAK,eAAe,aAAa,IAAM,EAAI,GAE7CuQ,EAAA,MAAKgO,IAAwB,KAAK,iBAC9B,CAAC,KAAK,iBAAgB;AACxB,UAAMgK,IAAcjY,EAAA,MAAK4O,QAAUlf,EAAqB,YAAYyI,EAAA,MAAKuX,GAAAE,IAAL,WAA2B4E,KAAa;AAE5G,QADAyD,KAAA,QAAAA,EAAa,iBACTjY,EAAA,MAAKqO,KAAgB;AACvB,YAAMyE,IAAK,IAAI,gBAAe,GACxBnM,IAAS,KAAK,eAAemM,CAAE,GAC/BoF,IAAY,CAAAxY,MAAK;AACrB,QAAIA,EAAE,SAAS,eAAeA,EAAE,WAAW,MAG3CoT,EAAG,MAAK,GACRmF,KAAA,QAAAA,EAAa,cAAc,KACvBvY,EAAE,SAAS,eACbvH,EAAA,MAAKuX,GAAAK,IAAL,WAAkB;AAAA,MAEtB;AACA,aAAO,iBAAiB,aAAamI,GAAW;AAAA,QAC9C,QAAAvR;AAAA,MACV,CAAS,GACD,OAAO,iBAAiB,QAAQuR,GAAW;AAAA,QACzC,QAAAvR;AAAA,MACV,CAAS;AAAA,IACH;AACE,MAAAsR,KAAA,QAAAA,EAAa,cAAc,KAC3B9f,EAAA,MAAKuX,GAAAK,IAAL,WAAkB;AAAA,EAEtB;AACF,GACAA,KAAY,SAACkE,IAAmB,IAAI;AAClC,EAAIjU,EAAA,MAAK4O,QAAUlf,EAAqB,YACtC,KAAK,mBAAmBukB,CAAgB,IAC/BjU,EAAA,MAAK0N,OACdvV,EAAA,MAAKuX,GAAAG,IAAL;AAEJ,GACAG,KAAqB,WAAG;AACtB,WAAS,iBAAiB,mBAAmB7X,EAAA,MAAKuX,GAAAI,IAAiB,KAAK,IAAI,GAAG;AAAA,IAC7E,QAAQ,KAAK;AAAA,EACnB,CAAK;AACH,GACAG,KAAgB,WAAG;AACjB,MAAIjQ,EAAA,MAAK+N;AACP;AAEF,EAAA9N,EAAA,MAAK8N,IAAkB,IAAI,gBAAe;AAC1C,QAAMpH,IAAS,KAAK,eAAe3G,EAAA,MAAK+N,GAAe;AACvD,SAAO,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACtD,QAAApH;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACpD,QAAAA;AAAA,EACN,CAAK;AACH,GACAuJ,KAAmB,WAAG;AArqGxB,MAAAnc;AAsqGI,GAAAA,IAAAiM,EAAA,MAAK+N,QAAL,QAAAha,EAAsB,SACtBkM,EAAA,MAAK8N,IAAkB;AACzB,GAmCAoC,KAAmB,WAAG;AACpB,MAAInQ,EAAA,MAAKuO;AACP;AAEF,EAAAtO,EAAA,MAAKsO,IAAqB,IAAI,gBAAe;AAC7C,QAAM5H,IAAS,KAAK,eAAe3G,EAAA,MAAKuO,GAAkB;AAC1D,SAAO,iBAAiB,WAAW,KAAK,QAAQ,KAAK,IAAI,GAAG;AAAA,IAC1D,QAAA5H;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACtD,QAAAA;AAAA,EACN,CAAK;AACH,GACAyJ,KAAsB,WAAG;AAxtG3B,MAAArc;AAytGI,GAAAA,IAAAiM,EAAA,MAAKuO,QAAL,QAAAxa,EAAyB,SACzBkM,EAAA,MAAKsO,IAAqB;AAC5B,GACA8B,KAAsB,WAAG;AACvB,MAAIrQ,EAAA,MAAKmN;AACP;AAEF,EAAAlN,EAAA,MAAKkN,IAAe,IAAI,gBAAe;AACvC,QAAMxG,IAAS,KAAK,eAAe3G,EAAA,MAAKmN,GAAY;AACpD,WAAS,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACtD,QAAAxG;AAAA,EACN,CAAK,GACD,SAAS,iBAAiB,OAAO,KAAK,IAAI,KAAK,IAAI,GAAG;AAAA,IACpD,QAAAA;AAAA,EACN,CAAK,GACD,SAAS,iBAAiB,SAAS,KAAK,MAAM,KAAK,IAAI,GAAG;AAAA,IACxD,QAAAA;AAAA,EACN,CAAK;AACH,GACA2J,KAAyB,WAAG;AA5uG9B,MAAAvc;AA6uGI,GAAAA,IAAAiM,EAAA,MAAKmN,QAAL,QAAApZ,EAAmB,SACnBkM,EAAA,MAAKkN,IAAe;AACtB,GACAoD,KAAwB,WAAG;AACzB,QAAM5J,IAAS,KAAK;AACpB,WAAS,iBAAiB,YAAY,KAAK,SAAS,KAAK,IAAI,GAAG;AAAA,IAC9D,QAAAA;AAAA,EACN,CAAK,GACD,SAAS,iBAAiB,QAAQ,KAAK,KAAK,KAAK,IAAI,GAAG;AAAA,IACtD,QAAAA;AAAA,EACN,CAAK;AACH,GAmJA6J,KAAqB,SAACje,GAAS;AAE7B,EADmB,OAAO,QAAQA,CAAO,EAAE,KAAK,CAAC,CAACkJ,GAAK1J,CAAK,MAAMiO,EAAA,MAAKmP,IAAgB1T,CAAG,MAAM1J,CAAK,MAEnG,KAAK,UAAU,SAAS,iCAAiC;AAAA,IACvD,QAAQ;AAAA,IACR,SAAS,OAAO,OAAOiO,EAAA,MAAKmP,KAAiB5c,CAAO;AAAA,EAC5D,CAAO,GACGyN,EAAA,MAAK4O,QAAUlf,EAAqB,aAAa6C,EAAQ,sBAAsB,MACjF4F,EAAA,MAAKuX,GAAAe,IAAL,WAAuB,CAAC,CAAC9gB,GAA2B,gBAAgB,EAAI,CAAC;AAG/E,GACA8gB,KAAiB,SAACle,GAAS;AACzB,OAAK,UAAU,SAAS,iCAAiC;AAAA,IACvD,QAAQ;AAAA,IACR,SAAAA;AAAA,EACN,CAAK;AACH,GA4NMme,KAAU,iBAAG;AACjB,MAAI,CAAC1Q,EAAA,MAAKoO,KAAY;AACpB,IAAAnO,EAAA,MAAKmO,IAAa;AAClB,UAAM+J,IAAW,CAAA;AACjB,eAAWtF,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,MAAAsL,EAAS,KAAKtF,EAAM,QAAQ;AAE9B,UAAM,QAAQ,IAAIsF,CAAQ;AAC1B,eAAW1R,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,MAAAnG,EAAO,OAAM;AAAA,EAEjB;AACF,GACAkK,KAAW,WAAG;AAEZ,MADA,KAAK,YAAW,GACZ3Q,EAAA,MAAKoO,KAAY;AACnB,IAAAnO,EAAA,MAAKmO,IAAa;AAClB,eAAWyE,KAAS7S,EAAA,MAAK6M,IAAW,OAAM;AACxC,MAAAgG,EAAM,QAAO;AAEf,eAAWpM,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,MAAAnG,EAAO,QAAO;AAAA,EAElB;AACF,GA8CAmK,KAAiB,SAACnK,GAAQ;AACxB,QAAMoM,IAAQ7S,EAAA,MAAK6M,IAAW,IAAIpG,EAAO,SAAS;AAClD,EAAIoM,IACFA,EAAM,aAAapM,CAAM,KAEzB,KAAK,UAAUA,CAAM,GACrB,KAAK,uBAAuBA,CAAM;AAEtC,GAUIoK,KAAmB,WAAG;AACxB,MAAI6F,IAAK;AACT,OAAKA,KAAM1W,EAAA,MAAK6O;AAAkB;AAClC,SAAO6H;AACT,GA2FA5F,KAAQ,WAAG;AACT,MAAI9Q,EAAA,MAAK4M,IAAY,SAAS;AAC5B,WAAO;AAET,MAAI5M,EAAA,MAAK4M,IAAY,SAAS;AAC5B,eAAWnG,KAAUzG,EAAA,MAAK4M,IAAY,OAAM;AAC1C,aAAOnG,EAAO,QAAO;AAGzB,SAAO;AACT,GA+BAsK,KAAc,SAACkE,GAAS;AACtB,aAAWxO,KAAUzG,EAAA,MAAK6O;AACxB,IAAApI,EAAO,SAAQ;AAEjB,EAAAzG,EAAA,MAAK6O,IAAiB,MAAK;AAC3B,aAAWpI,KAAUwO;AACnB,IAAIxO,EAAO,cAGXzG,EAAA,MAAK6O,IAAiB,IAAIpI,CAAM,GAChCA,EAAO,OAAM;AAEf,EAAAtO,EAAA,MAAKuX,GAAAc,IAAL,WAA2B;AAAA,IACzB,mBAAmB,KAAK;AAAA,EAC9B;AACE,GAtvCAlU,EA1DI0U,IA0DG,mBAAkB,IACzB1U,EA3DI0U,IA2DG,iBAAgB;AA3DzB,IAAMoH,KAANpH;AAvjFA,IAAApL,IAAAyS,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAjT,IAAAkT,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA+oIA,MAAMC,KAAN,MAAMA,GAAQ;AAAA,EAeZ,YAAY1S,GAAQ;AAftB,IAAA/N,EAAA,MAAAsgB;AACE,IAAAtgB,EAAA,MAAAkN,IAAW;AACX,IAAAlN,EAAA,MAAA2f,IAAqB;AACrB,IAAA3f,EAAA,MAAA4f,IAAiB;AACjB,IAAA5f,EAAA,MAAA6f,IAAsB;AACtB,IAAA7f,EAAA,MAAA8f,IAAkB;AAClB,IAAA9f,EAAA,MAAA+f,IAAyB;AACzB,IAAA/f,EAAA,MAAAggB,IAA0B;AAC1B,IAAAhgB,EAAA,MAAAigB,IAAS;AACT,IAAAjgB,EAAA,MAAAgN,IAAU;AACV,IAAAhN,EAAA,MAAAkgB,IAAe;AACf,IAAAlgB,EAAA,MAAAmgB,IAAsB;AACtB,IAAAngB,EAAA,MAAAogB,IAAqB;AAInB,IAAA7Y,EAAA,MAAKyF,IAAUe,IACfxG,EAAA,MAAK6Y,IAAqBrS,EAAO,WAAW,oBAC5CzG,EAAAmZ,IAAQJ,OAAR9Y,EAAAkZ,IAAQJ,IAAmB,OAAO,OAAO;AAAA,MACvC,OAAO;AAAA,MACP,eAAe;AAAA,MACf,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,gBAAgB;AAAA,IACtB,CAAK;AAAA,EACH;AAAA,EACA,OAAO,WAAWK,GAAM;AACtB,IAAAD,GAAQ,UAARA,GAAQ,QAAUC;AAAA,EACpB;AAAA,EACA,MAAM,SAAS;AACb,UAAMnS,IAAUhH,EAAA,MAAKqY,IAAiB,SAAS,cAAc,QAAQ;AACrE,IAAArR,EAAQ,YAAY,WACpBA,EAAQ,WAAW;AACnB,UAAMoS,IAAQpZ,EAAA,MAAKsY,IAAsB,SAAS,cAAc,MAAM;AACtE,IAAAtR,EAAQ,OAAOoS,CAAK,GAChBrZ,EAAA,MAAK8Y,OACP7R,EAAQ,UAAU,IAAI,KAAK,GAC3BA,EAAQ,aAAa,gBAAgBjH,EAAAmZ,IAAQJ,IAAe,OAAO,GACnEM,EAAM,aAAa,gBAAgBrZ,EAAAmZ,IAAQJ,IAAe,eAAe,CAAC,MAE1E9R,EAAQ,aAAa,gBAAgB,8BAA8B,GACnEoS,EAAM,aAAa,gBAAgB,oCAAoC;AAEzE,UAAM1S,IAAS3G,EAAA,MAAK0F,IAAQ,WAAW;AACvC,IAAAuB,EAAQ,iBAAiB,eAAexH,IAAe;AAAA,MACrD,QAAAkH;AAAA,IACN,CAAK,GACDM,EAAQ,iBAAiB,eAAe,CAAA7L,MAASA,EAAM,gBAAe,GAAI;AAAA,MACxE,QAAAuL;AAAA,IACN,CAAK;AACD,UAAM2S,IAAU,CAAAle,MAAS;AACvB,MAAAA,EAAM,eAAc,GACpB4E,EAAA,MAAK0F,IAAQ,WAAW,YAAY1F,EAAA,MAAK0F,GAAO,GAC5C1F,EAAA,MAAK8Y,OACP9Y,EAAA,MAAK0F,IAAQ,iBAAiB;AAAA,QAC5B,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,OAAO1F,EAAA,MAAKgZ,IAAAC;AAAA,QACxB;AAAA,MACA,CAAS;AAAA,IAEL;AACA,WAAAhS,EAAQ,iBAAiB,SAASqS,GAAS;AAAA,MACzC,SAAS;AAAA,MACT,QAAA3S;AAAA,IACN,CAAK,GACDM,EAAQ,iBAAiB,WAAW,CAAA7L,MAAS;AAC3C,MAAIA,EAAM,WAAW6L,KAAW7L,EAAM,QAAQ,YAC5C6E,EAAA,MAAKyY,IAA0B,KAC/BY,EAAQle,CAAK;AAAA,IAEjB,GAAG;AAAA,MACD,QAAAuL;AAAA,IACN,CAAK,GACD,MAAMxO,EAAA,MAAK6gB,IAAAE,IAAL,YACCjS;AAAA,EACT;AAAA,EAIA,SAAS;AACP,IAAKjH,EAAA,MAAKsY,QAGVtY,EAAA,MAAKsY,IAAe,MAAM;AAAA,MACxB,cAActY,EAAA,MAAK0Y;AAAA,IACzB,CAAK,GACDzY,EAAA,MAAKyY,IAA0B;AAAA,EACjC;AAAA,EACA,UAAU;AACR,WAAI1Y,EAAA,MAAK8Y,MACA9Y,EAAA,MAAK4F,QAAa,OAEpB,CAAC5F,EAAA,MAAK4F,OAAY,CAAC5F,EAAA,MAAKqY;AAAA,EACjC;AAAA,EACA,UAAU;AACR,WAAIrY,EAAA,MAAK8Y,MACA9Y,EAAA,MAAK4F,QAAa,QAAQ,CAAC,CAAC5F,EAAA,MAAK4Y,MAEnC,KAAK,QAAO;AAAA,EACrB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO5Y,EAAA,MAAK4Y;AAAA,EACd;AAAA,EACA,MAAM,eAAeW,GAAa;AAChC,IAAIvZ,EAAA,MAAK4F,QAAa,SAGtB3F,EAAA,MAAK2Y,IAAeW,IACpBtZ,EAAA,MAAK4Y,IAAsB,MAAMM,GAAQ,MAAM,IAAI,gEAAgE;AAAA,MACjH,kBAAkBI;AAAA,IACxB,CAAK,IACDphB,EAAA,MAAK6gB,IAAAE,IAAL;AAAA,EACF;AAAA,EACA,mBAAmBxF,IAAa,IAAO;AAlwIzC,QAAA3f;AAmwII,QAAI,CAACiM,EAAA,MAAK8Y,OAAsB9Y,EAAA,MAAK4F,KAAU;AAC7C,OAAA7R,IAAAiM,EAAA,MAAK2Y,QAAL,QAAA5kB,EAAa,UACbkM,EAAA,MAAK0Y,IAAS;AACd;AAAA,IACF;AACA,QAAI,CAAC3Y,EAAA,MAAK2Y,KAAQ;AAChB,YAAMa,IAAQvZ,EAAA,MAAK0Y,IAAS,SAAS,cAAc,KAAK;AACxD,MAAAa,EAAM,YAAY,kBAClBxZ,EAAA,MAAK0F,IAAQ,IAAI,OAAO8T,CAAK;AAAA,IAC/B;AACA,IAAAxZ,EAAA,MAAK2Y,IAAO,UAAU,OAAO,UAAU,CAACjF,CAAU;AAAA,EACpD;AAAA,EACA,UAAU+F,GAAc;AACtB,QAAIxS,IAAUjH,EAAA,MAAK4F;AACnB,WAAI,CAAC6T,KAAgBzZ,EAAA,MAAK4Y,QAAiB3R,MACzCA,IAAUjH,EAAA,MAAK6Y,MAEV;AAAA,MACL,SAAA5R;AAAA,MACA,YAAYjH,EAAA,MAAKqY;AAAA,MACjB,aAAarY,EAAA,MAAK4Y;AAAA,MAClB,oBAAoB5Y,EAAA,MAAK6Y;AAAA,IAC/B;AAAA,EACE;AAAA,EACA,IAAI,OAAO;AACT,WAAO;AAAA,MACL,SAAS7Y,EAAA,MAAK4F;AAAA,MACd,YAAY5F,EAAA,MAAKqY;AAAA,IACvB;AAAA,EACE;AAAA,EACA,IAAI,KAAK;AAAA,IACP,SAAApR;AAAA,IACA,YAAAyS;AAAA,IACA,aAAAH;AAAA,IACA,oBAAAI;AAAA,IACA,QAAAC,IAAS;AAAA,EACb,GAAK;AAKD,IAJIL,MACFtZ,EAAA,MAAK2Y,IAAeW,IACpBtZ,EAAA,MAAK4Y,IAAsBc,KAEzB,EAAA3Z,EAAA,MAAK4F,QAAaqB,KAAWjH,EAAA,MAAKqY,QAAuBqB,OAGxDE,MACH3Z,EAAA,MAAK2F,IAAWqB,IAChBhH,EAAA,MAAKoY,IAAqBqB,KAE5BvhB,EAAA,MAAK6gB,IAAAE,IAAL;AAAA,EACF;AAAA,EACA,OAAOW,IAAU,IAAO;AACtB,IAAK7Z,EAAA,MAAKsY,QAGN,CAACuB,KAAW7Z,EAAA,MAAKyY,QACnB,aAAazY,EAAA,MAAKyY,GAAsB,GACxCxY,EAAA,MAAKwY,IAAyB,QAEhCzY,EAAA,MAAKsY,IAAe,WAAW,CAACuB;AAAA,EAClC;AAAA,EACA,QAAQ;AACN,IAAA7Z,EAAA,MAAK0F,IAAQ,iBAAiB;AAAA,MAC5B,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO1F,EAAA,MAAKgZ,IAAAC;AAAA,MACpB;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,UAAU;AAv0IZ,QAAAllB,GAAAC;AAw0II,KAAAD,IAAAiM,EAAA,MAAKsY,QAAL,QAAAvkB,EAAqB,UACrBkM,EAAA,MAAKqY,IAAiB,OACtBrY,EAAA,MAAKsY,IAAsB,OAC3BtY,EAAA,MAAKuY,IAAkB,QACvBxkB,IAAAgM,EAAA,MAAK2Y,QAAL,QAAA3kB,EAAa,UACbiM,EAAA,MAAK0Y,IAAS;AAAA,EAChB;AAsEF;AApQE/S,KAAA,eACAyS,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAjT,KAAA,eACAkT,KAAA,eACAC,KAAA,eACAC,KAAA,eACOC,KAAA,eAbTC,KAAA,eA8EMC,KAAM,WAAG;AACX,SAAOjZ,EAAA,MAAK4F,OAAY,WAAW5F,EAAA,MAAK4F,QAAa,QAAQ,KAAK,eAAe,YAAY;AAC/F,GAgHMsT,KAAS,iBAAG;AA/0IpB,MAAAnlB,GAAAC,GAAAse;AAg1II,QAAMtL,IAAShH,EAAA,MAAKsY;AACpB,MAAI,CAACtR;AACH;AAEF,MAAIhH,EAAA,MAAK8Y;AAIP,QAHA9R,EAAO,UAAU,OAAO,QAAQ,CAAC,CAAChH,EAAA,MAAK4F,GAAQ,GAC/CoB,EAAO,aAAa,gBAAgBhH,EAAAmZ,IAAQJ,IAAe/Y,EAAA,MAAKgZ,IAAAC,GAAM,CAAC,IACvEllB,IAAAiM,EAAA,MAAKuY,QAAL,QAAAxkB,EAA0B,aAAa,gBAAgBiM,EAAAmZ,IAAQJ,IAAe,GAAG/Y,EAAA,MAAKgZ,IAAAC,GAAM,QAAQ,IAChG,CAACjZ,EAAA,MAAK4F,KAAU;AAClB,OAAA5R,IAAAgM,EAAA,MAAKwY,QAAL,QAAAxkB,EAAsB;AACtB;AAAA,IACF;AAAA,SACK;AACL,QAAI,CAACgM,EAAA,MAAK4F,OAAY,CAAC5F,EAAA,MAAKqY,KAAoB;AAC9C,MAAArR,EAAO,UAAU,OAAO,MAAM,IAC9BsL,IAAAtS,EAAA,MAAKwY,QAAL,QAAAlG,EAAsB;AACtB;AAAA,IACF;AACA,IAAAtL,EAAO,UAAU,IAAI,MAAM,GAC3BA,EAAO,aAAa,gBAAgB,mCAAmC;AAAA,EACzE;AACA,MAAI8S,IAAU9Z,EAAA,MAAKwY;AACnB,MAAI,CAACsB,GAAS;AACZ,IAAA7Z,EAAA,MAAKuY,IAAkBsB,IAAU,SAAS,cAAc,MAAM,IAC9DA,EAAQ,YAAY,WACpBA,EAAQ,aAAa,QAAQ,SAAS,GACtCA,EAAQ,KAAK,oBAAoB9Z,EAAA,MAAK0F,IAAQ,EAAE;AAChD,UAAMqU,IAAwB,KACxBpT,IAAS3G,EAAA,MAAK0F,IAAQ,WAAW;AACvC,IAAAiB,EAAO,iBAAiB,SAAS,MAAM;AACrC,mBAAa3G,EAAA,MAAKyY,GAAsB,GACxCxY,EAAA,MAAKwY,IAAyB;AAAA,IAChC,GAAG;AAAA,MACD,MAAM;AAAA,IACd,CAAO,GACDzR,EAAO,iBAAiB,cAAc,MAAM;AAC1C,MAAA/G,EAAA,MAAKwY,IAAyB,WAAW,MAAM;AAC7C,QAAAxY,EAAA,MAAKwY,IAAyB,OAC9BzY,EAAA,MAAKwY,IAAgB,UAAU,IAAI,MAAM,GACzCxY,EAAA,MAAK0F,IAAQ,iBAAiB;AAAA,UAC5B,QAAQ;AAAA,QACpB,CAAW;AAAA,MACH,GAAGqU,CAAqB;AAAA,IAC1B,GAAG;AAAA,MACD,QAAApT;AAAA,IACR,CAAO,GACDK,EAAO,iBAAiB,cAAc,MAAM;AA93IlD,UAAAjT;AA+3IQ,MAAIiM,EAAA,MAAKyY,QACP,aAAazY,EAAA,MAAKyY,GAAsB,GACxCxY,EAAA,MAAKwY,IAAyB,SAEhC1kB,IAAAiM,EAAA,MAAKwY,QAAL,QAAAzkB,EAAsB,UAAU,OAAO;AAAA,IACzC,GAAG;AAAA,MACD,QAAA4S;AAAA,IACR,CAAO;AAAA,EACH;AACA,EAAI3G,EAAA,MAAKqY,MACPyB,EAAQ,aAAa,gBAAgB,0CAA0C,KAE/EA,EAAQ,gBAAgB,cAAc,GACtCA,EAAQ,cAAc9Z,EAAA,MAAK4F,MAExBkU,EAAQ,cACX9S,EAAO,OAAO8S,CAAO;AAEvB,QAAM9e,IAAUgF,EAAA,MAAK0F,IAAQ,qBAAoB;AACjD,EAAA1K,KAAA,QAAAA,EAAS,aAAa,oBAAoB8e,EAAQ;AACpD,GAvPAphB,EAbIygB,IAaGJ,IAAiB,OACxBzc,EAdI6c,IAcG,SAAQ;AAdjB,IAAMa,KAANb;AA/oIA,IAAAc,IAAAC,IAAAC,IAAAzU,IAAA0U,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAA9S,IAAA7T;AAw5IA,IAAA4mB,MAAA5mB,KAAA,MAAc;AAAA,EAWZ,YAAY0S,GAAQ;AAXtB,IAAA/N,EAAA,MAAAgiB;AACE,IAAAhiB,EAAA,MAAAuhB,IAA2B;AAC3B,IAAAvhB,EAAA,MAAAwhB,IAAwB;AACxB,IAAAxhB,EAAA,MAAAyhB,IAA0B;AAC1B,IAAAzhB,EAAA,MAAAgN,IAAU;AACV,IAAAhN,EAAA,MAAA0hB,IAAe;AACf,IAAA1hB,EAAA,MAAA2hB,IAAY;AACZ,IAAA3hB,EAAA,MAAA4hB,IAAQ;AACR,IAAA5hB,EAAA,MAAA6hB,IAAQ;AACR,IAAA7hB,EAAA,MAAA8hB,IAAW;AACX,IAAA9hB,EAAA,MAAA+hB,IAAiB;AAEf,IAAAxa,EAAA,MAAKyF,IAAUe;AAAA,EACjB;AAAA,EACA,mBAAmB;AACjB,UAAMO,IAAS/G,EAAA,MAAKia,IAAwB,SAAS,cAAc,QAAQ;AAC3E,WAAAlT,EAAO,YAAY,WACZ7O,EAAA,MAAKuiB,IAAA9S,IAAL,WAAaZ,GAAQ;AAAA,EAC9B;AAAA,EACA,sBAAsB;AACpB,UAAMA,IAAS/G,EAAA,MAAKga,IAA2B,SAAS,cAAc,QAAQ;AAC9E,IAAAjT,EAAO,YAAY;AACnB,UAAMH,IAAW7G,EAAA,MAAK0F,IAAQ;AAC9B,QAAImB,GAAU;AACZ,YAAM;AAAA,QACJ,OAAA9E;AAAA,MACR,IAAUiF;AACJ,MAAAjF,EAAM,iBAAiB,QAAQ,OAAO/B,EAAA,MAAK0F,IAAQ,WAAW,cAAc,QAAQ,IAAImB,EAAS,CAAC,IAAIA,EAAS,CAAC,EAAE,kCAClH9E,EAAM,MAAM,QAAQ,MAAM8E,EAAS,CAAC,CAAC;AACrC,YAAM/F,IAAQd,EAAA,MAAK0F,IAAQ;AAC3B,MAAI5E,MACFiB,EAAM,kBAAkBjB;AAAA,IAE5B;AACA,WAAO3I,EAAA,MAAKuiB,IAAA9S,IAAL,WAAaZ,GAAQ;AAAA,EAC9B;AAAA,EACA,cAAc;AACZ,eAAW,MAAM;AA77IrB,UAAAjT;AA87IM,OAACA,IAAAiM,EAAA,MAAKia,OAA4Bja,EAAA,MAAKka,QAAtC,QAAAnmB,EAA8D;AAAA,IACjE,GAAG,CAAC;AAAA,EACN;AAAA,EACA,iBAAiB;AACf,QAAI,CAACiM,EAAA,MAAKia;AACR;AAEF,UAAMnZ,IAAQd,EAAA,MAAK0F,IAAQ;AAC3B,IAAI5E,MACFd,EAAA,MAAKia,IAAyB,MAAM,kBAAkBnZ,IAExDd,EAAA,MAAK0F,IAAQ,WAAW,iBAAiB1F,EAAA,MAAK0F,GAAO;AAAA,EACvD;AAAA,EACA,IAAI,qBAAqB;AA38I3B,QAAA3R;AA48II,cAAQA,IAAAiM,EAAA,MAAKia,QAAL,gBAAAlmB,EAA+B,wBAAwB,UAAS,KAAKiM,EAAA,MAAK0F,IAAQ,OAAO,mBAAmB;AAAA,EACtH;AAAA,EACA,IAAI,8BAA8B;AAChC,QAAI1F,EAAA,MAAKya;AACP,aAAOza,EAAA,MAAKya;AAEd,QAAI,CAACza,EAAA,MAAKia;AACR,aAAO;AAET,UAAM;AAAA,MACJ,GAAAxiB;AAAA,MACA,GAAAC;AAAA,MACA,QAAAqG;AAAA,IACN,IAAQiC,EAAA,MAAKia,IAAyB,sBAAqB,GACjD;AAAA,MACJ,GAAGW;AAAA,MACH,GAAGC;AAAA,MACH,OAAOlD;AAAA,MACP,QAAQC;AAAA,IACd,IAAQ5X,EAAA,MAAK0F,IAAQ,OAAO;AACxB,WAAO,EAAEjO,IAAImjB,KAAWjD,IAAcjgB,IAAIqG,IAAS8c,KAAWjD,CAAY;AAAA,EAC5E;AAAA,EACA,IAAI,4BAA4B1iB,GAAK;AACnC,IAAA+K,EAAA,MAAKwa,IAAiBvlB;AAAA,EACxB;AAAA,EACA,0BAA0B;AACxB,WAAO8K,EAAA,MAAKya,QAAmB;AAAA,EACjC;AAAA,EACA,gCAAgC;AAx+IlC,QAAA1mB;AAy+II,KAAAA,IAAAiM,EAAA,MAAKia,QAAL,QAAAlmB,EAA+B,UAC/BkM,EAAA,MAAKga,IAA2B;AAAA,EAClC;AAAA,EACA,6BAA6B;AA5+I/B,QAAAlmB;AA6+II,KAAAA,IAAAiM,EAAA,MAAKka,QAAL,QAAAnmB,EAA4B,UAC5BkM,EAAA,MAAKia,IAAwB;AAAA,EAC/B;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAAY;AAAA,IACA,UAAAC;AAAA,EACJ,GAAK;AACD,IAAK/a,EAAA,MAAKia,QAGVja,EAAA,MAAKia,IAAyB,UAAU,OAAO,YAAYa,CAAQ,GACnE9a,EAAA,MAAKia,IAAyB,eAAec;AAAA,EAC/C;AAAA,EAwEA,KAAK3pB,GAAS;AACZ,UAAMyV,IAAW,KAAK;AACtB,QAAIwM,GAAMC;AACV,QAAIzM;AACF,OAACwM,GAAMC,CAAI,IAAIzM;AAAA,SACV;AACL,OAACwM,GAAMC,CAAI,IAAItT,EAAA,MAAK0F,IAAQ;AAC5B,YAAM;AAAA,QACJ,OAAA5H;AAAA,QACA,QAAAC;AAAA,QACA,GAAAtG;AAAA,QACA,GAAAC;AAAA,MACR,IAAUsI,EAAA,MAAK0F;AACT,MAAA2N,IAAO5b,IAAI4b,IAAOvV,GAClBwV,IAAO5b,IAAI4b,IAAOvV;AAAA,IACpB;AACA,UAAMid,IAAmBhb,EAAA,MAAK0F,IAAQ,OAAO,oBACvC;AAAA,MACJ,GAAGkV;AAAA,MACH,GAAGC;AAAA,MACH,OAAOlD;AAAA,MACP,QAAQC;AAAA,IACd,IAAQoD;AACJ,IAAAhb,EAAA,MAAK0F,IAAQ,WAAW,YAAY1F,EAAA,MAAK0F,KAASkV,IAAUvH,IAAOsE,GAAakD,IAAUvH,IAAOsE,GAAc;AAAA,MAC7G,GAAGxmB;AAAA,MACH,kBAAA4pB;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,IAAKhb,EAAA,MAAKka,QAGVla,EAAA,MAAKka,IAAsB,MAAM;AAAA,MAC/B,cAAcla,EAAA,MAAKma;AAAA,IACzB,CAAK,GACDla,EAAA,MAAKka,IAA0B;AAAA,EACjC;AAAA,EACA,YAAY;AACV,WAAOna,EAAA,MAAKwa,OAAYxa,EAAA,MAAKsa,QAAU;AAAA,EACzC;AAAA,EACA,UAAU;AACR,WAAOta,EAAA,MAAKsa,QAAU;AAAA,EACxB;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,UAAS,KAAMta,EAAA,MAAKsa,QAAUta,EAAA,MAAKoa;AAAA,EACjD;AAAA,EACA,YAAY;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,OAAO;AACT,WAAO;AAAA,MACL,MAAMpa,EAAA,MAAKsa;AAAA,MACX,UAAUta,EAAA,MAAKqa;AAAA,MACf,MAAMra,EAAA,MAAKua;AAAA,MACX,SAAS,KAAK,UAAS;AAAA,IAC7B;AAAA,EACE;AAAA,EACA,IAAI,KAAKhG,GAAM;AAIb,QAHIA,MAASvU,EAAA,MAAKsa,OAChBra,EAAA,MAAKoa,IAAY,OAEf9F,MAAS,MAAM;AACjB,MAAAtU,EAAA,MAAKqa,IAAQ,KACbra,EAAA,MAAKua,IAAW;AAChB;AAAA,IACF;AACA,IAAAva,EAAA,MAAKqa,IAAQ/F,IACbtU,EAAA,MAAKsa,IAAQ,oBAAI,KAAI,IACrBta,EAAA,MAAKua,IAAW;AAAA,EAClB;AAAA,EACA,eAAejG,GAAM0G,IAAW,MAAM;AACpC,IAAAhb,EAAA,MAAKma,IAAe7F,IACpB,KAAK,OAAOA,GACZtU,EAAA,MAAKsa,IAAQ,OACbta,EAAA,MAAKoa,IAAYY;AAAA,EACnB;AAAA,EACA,QAAQ;AAAA,EAAC;AAAA,EACT,UAAU;AA9oJZ,QAAAlnB,GAAAC;AA+oJI,KAAAD,IAAAiM,EAAA,MAAKka,QAAL,QAAAnmB,EAA4B,UAC5BkM,EAAA,MAAKia,IAAwB,QAC7BlmB,IAAAgM,EAAA,MAAKia,QAAL,QAAAjmB,EAA+B,UAC/BiM,EAAA,MAAKga,IAA2B,OAChCha,EAAA,MAAKqa,IAAQ,KACbra,EAAA,MAAKoa,IAAY,OACjBpa,EAAA,MAAKsa,IAAQ,OACbta,EAAA,MAAKyF,IAAU,OACfzF,EAAA,MAAKka,IAA0B,KAC/Bla,EAAA,MAAKua,IAAW;AAAA,EAClB;AACF,GAjQEP,KAAA,eACAC,KAAA,eACAC,KAAA,eACAzU,KAAA,eACA0U,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAVFC,KAAA,eAkGE9S,KAAO,SAACV,GAASgU,GAAc;AAC7B,MAAI,CAAClb,EAAA,MAAK0F,IAAQ,WAAW,kBAAiB;AAC5C,WAAO;AAET,EAAAwB,EAAQ,WAAW,KACnBA,EAAQ,eAAe,UACnBgU,KACFhU,EAAQ,eAAe,gBACvBA,EAAQ,aAAa,gBAAgB,2BAA2B,MAEhEA,EAAQ,uBAAuB,CAAClH,EAAA,MAAK0F,IAAQ,WAAW,yBAAyB,GACjFwB,EAAQ,aAAa,gBAAgB,iCAAiC;AAExE,QAAMP,IAAS3G,EAAA,MAAK0F,IAAQ,WAAW;AACvC,MAAI,EAAEiB,aAAkB,gBAAgBA,EAAO;AAC7C,WAAOO;AAET,EAAAA,EAAQ,iBAAiB,eAAezH,IAAe;AAAA,IACrD,QAAAkH;AAAA,EACN,CAAK,GACGuU,MACFhU,EAAQ,iBAAiB,WAAW,CAAAxH,MAAK;AACvC,IAAAM,EAAA,MAAK0F,IAAQ,sBAAsB,IACnC/F,GAAUD,CAAC;AAAA,EACb,GAAG;AAAA,IACD,SAAS;AAAA,IACT,QAAAiH;AAAA,EACR,CAAO,GACDO,EAAQ,iBAAiB,YAAY,CAAAxH,MAAK;AACxC,IAAAM,EAAA,MAAK0F,IAAQ,sBAAsB,IACnC/F,GAAUD,CAAC;AAAA,EACb,GAAG;AAAA,IACD,SAAS;AAAA,IACT,QAAAiH;AAAA,EACR,CAAO,IAEHO,EAAQ,iBAAiB,eAAe,CAAA9L,MAASA,EAAM,gBAAe,GAAI;AAAA,IACxE,QAAAuL;AAAA,EACN,CAAK;AACD,QAAM2S,IAAU,CAAAle,MAAS;AACvB,IAAAA,EAAM,eAAc,GAChB8L,MAAYlH,EAAA,MAAKka,MACnB,KAAK,KAAI,IAETla,EAAA,MAAK0F,IAAQ,cAAc,EAAI;AAAA,EAEnC;AACA,SAAAwB,EAAQ,iBAAiB,SAASoS,GAAS;AAAA,IACzC,SAAS;AAAA,IACT,QAAA3S;AAAA,EACN,CAAK,GACDO,EAAQ,iBAAiB,WAAW,CAAA9L,MAAS;AAC3C,IAAIA,EAAM,WAAW8L,KAAW9L,EAAM,QAAQ,YAC5C6E,EAAA,MAAKka,IAA0B,KAC/Bb,EAAQle,CAAK;AAAA,EAEjB,GAAG;AAAA,IACD,QAAAuL;AAAA,EACN,CAAK,GACDO,EAAQ,iBAAiB,gBAAgB,MAAM;AAC7C,IAAAlH,EAAA,MAAK0F,IAAQ,cAAc,IAAO,EAAI;AAAA,EACxC,GAAG;AAAA,IACD,QAAAiB;AAAA,EACN,CAAK,GACDO,EAAQ,iBAAiB,gBAAgB,MAAM;AAC7C,IAAAlH,EAAA,MAAK0F,IAAQ,cAAc,IAAO,EAAK;AAAA,EACzC,GAAG;AAAA,IACD,QAAAiB;AAAA,EACN,CAAK,GACMO;AACT,GAxKFnT;AAx5IA,IAAAub,IAAA6L,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA8pJA,MAAMC,KAAN,MAAMA,GAAa;AAAA,EAajB,YAAY;AAAA,IACV,WAAAjX;AAAA,IACA,oBAAAkX,IAAqB;AAAA,IACrB,mBAAAC,IAAoB;AAAA,IACpB,cAAAC,IAAe;AAAA,IACf,YAAAC,IAAa;AAAA,IACb,YAAAC,IAAa;AAAA,IACb,QAAA5V;AAAA,EACJ,GAAK;AArBL,IAAAjO,EAAA,MAAAojB;AACE,IAAApjB,EAAA,MAAA4W;AACA,IAAA5W,EAAA,MAAAyiB,IAAc;AACd,IAAAziB,EAAA,MAAA0iB,IAAqB;AACrB,IAAA1iB,EAAA,MAAA2iB;AACA,IAAA3iB,EAAA,MAAA4iB;AACA,IAAA5iB,EAAA,MAAA6iB;AACA,IAAA7iB,EAAA,MAAA8iB;AACA,IAAA9iB,EAAA,MAAA+iB,IAAiB;AACjB,IAAA/iB,EAAA,MAAAgjB;AACA,IAAAhjB,EAAA,MAAAijB,IAAa;AACb,IAAAjjB,EAAA,MAAAkjB;AACA,IAAAljB,EAAA,MAAAmjB,IAAe;AAUb,IAAA5b,EAAA,MAAKqP,IAAarK,IAClBhF,EAAA,MAAKmb,IAAqBgB,IAC1Bnc,EAAA,MAAKob,IAAsBc,IAC3Blc,EAAA,MAAKqb,IAAgBe,IACrBpc,EAAA,MAAKsb,IAAce,IACnBrc,EAAA,MAAKub,IAAce,IACnBtc,EAAA,MAAK2b,IAAkB,IAAI,gBAAe,IAC1C3b,EAAA,MAAKyb,IAAU,YAAY,IAAI,CAAC/U,GAAQ3G,EAAA,MAAK4b,IAAgB,MAAM,CAAC,IACpE3W,EAAU,iBAAiB,cAAc9M,EAAA,MAAK2jB,IAAAC,IAAc,KAAK,IAAI,GAAG;AAAA,MACtE,SAAS;AAAA,MACT,QAAQ/b,EAAA,MAAK0b;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,IAAI,8BAA8B;AAChC,WAAO,KAAKrZ,GAAY;AAAA,EAC1B;AAAA,EAiIA,UAAU;AAp0JZ,QAAAtO,GAAAC;AAq0JI,KAAAD,IAAAiM,EAAA,MAAK4b,QAAL,QAAA7nB,EAAsB,SACtBkM,EAAA,MAAK2b,IAAkB,QACvB5nB,IAAAgM,EAAA,MAAKyb,QAAL,QAAAznB,EAAqB,SACrBiM,EAAA,MAAKwb,IAAiB;AAAA,EACxB;AACF;AA3KEnM,KAAA,eACA6L,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAZFC,KAAA,eAsCEC,KAAa,SAAChK,GAAK;AApsJrB,MAAAhe,GAAAC,GAAAse;AAqsJI,OAAIve,IAAAiM,EAAA,MAAKqb,QAAL,QAAAtnB,EAAA;AACF;AAEF,MAAIge,EAAI,QAAQ,WAAW,GAAG;AAC5B,QAAI/R,EAAA,MAAKyb;AACP;AAEF,UAAMe,IAAgBvc,EAAA,MAAKwb,IAAiB,IAAI,gBAAe,IACzD9U,IAAS,YAAY,IAAI,CAAC3G,EAAA,MAAK0b,KAASc,EAAc,MAAM,CAAC,GAC7DvX,IAAYjF,EAAA,MAAKsP,KACjBmN,IAAO;AAAA,MACX,SAAS;AAAA,MACT,QAAA9V;AAAA,MACA,SAAS;AAAA,IACjB,GACY+V,IAAoB,CAAAhd,MAAK;AAptJrC,UAAA3L;AAqtJQ,MAAI2L,EAAE,gBAAgB,aACpB3L,IAAAiM,EAAA,MAAKyb,QAAL,QAAA1nB,EAAqB,SACrBkM,EAAA,MAAKwb,IAAiB;AAAA,IAE1B;AACA,IAAAxW,EAAU,iBAAiB,eAAe,CAAAvF,MAAK;AAC7C,MAAIA,EAAE,gBAAgB,YACpBC,GAAUD,CAAC,GACXgd,EAAkBhd,CAAC;AAAA,IAEvB,GAAG+c,CAAI,GACPxX,EAAU,iBAAiB,aAAayX,GAAmBD,CAAI,GAC/DxX,EAAU,iBAAiB,iBAAiByX,GAAmBD,CAAI;AACnE;AAAA,EACF;AACA,MAAI,CAACzc,EAAA,MAAK6b,KAAc;AACtB,IAAA5b,EAAA,MAAK4b,IAAe,IAAI,gBAAe;AACvC,UAAMlV,IAAS,YAAY,IAAI,CAAC3G,EAAA,MAAK0b,KAAS1b,EAAA,MAAK6b,IAAa,MAAM,CAAC,GACjE5W,IAAYjF,EAAA,MAAKsP,KACjBqN,IAAM;AAAA,MACV,QAAAhW;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,IACjB;AACM,IAAA1B,EAAU,iBAAiB,aAAa9M,EAAA,MAAK2jB,IAAAE,IAAa,KAAK,IAAI,GAAGW,CAAG;AACzE,UAAMC,IAAazkB,EAAA,MAAK2jB,IAAAG,IAAY,KAAK,IAAI;AAC7C,IAAAhX,EAAU,iBAAiB,YAAY2X,GAAYD,CAAG,GACtD1X,EAAU,iBAAiB,eAAe2X,GAAYD,CAAG,GACzDA,EAAI,UAAU,IACd1X,EAAU,iBAAiB,eAAetF,IAAWgd,CAAG,GACxD1X,EAAU,iBAAiB,eAAetF,IAAWgd,CAAG,GACxD1X,EAAU,iBAAiB,iBAAiBtF,IAAWgd,CAAG,GAC1D1X,EAAU,iBAAiB,aAAatF,IAAWgd,CAAG,IACtD3oB,IAAAgM,EAAA,MAAKsb,QAAL,QAAAtnB,EAAA;AAAA,EACF;AAEA,MADA2L,GAAUoS,CAAG,GACTA,EAAI,QAAQ,WAAW,MAAKO,IAAAtS,EAAA,MAAKob,QAAL,QAAA9I,EAAA,YAA6B;AAC3D,IAAArS,EAAA,MAAK0b,IAAa;AAClB;AAAA,EACF;AACA,MAAI,CAACkB,GAAQC,CAAM,IAAI/K,EAAI;AAC3B,EAAI8K,EAAO,aAAaC,EAAO,eAC7B,CAACD,GAAQC,CAAM,IAAI,CAACA,GAAQD,CAAM,IAEpC5c,EAAA,MAAK0b,IAAa;AAAA,IAChB,SAASkB,EAAO;AAAA,IAChB,SAASA,EAAO;AAAA,IAChB,SAASC,EAAO;AAAA,IAChB,SAASA,EAAO;AAAA,EACtB;AACE,GACAd,KAAY,SAACjK,GAAK;AAxwJpB,MAAAhe;AAywJI,MAAI,CAACiM,EAAA,MAAK2b,OAAc5J,EAAI,QAAQ,WAAW;AAC7C;AAEF,EAAApS,GAAUoS,CAAG;AACb,MAAI,CAAC8K,GAAQC,CAAM,IAAI/K,EAAI;AAC3B,EAAI8K,EAAO,aAAaC,EAAO,eAC7B,CAACD,GAAQC,CAAM,IAAI,CAACA,GAAQD,CAAM;AAEpC,QAAM;AAAA,IACJ,SAASE;AAAA,IACT,SAASC;AAAA,EACf,IAAQH,GACE;AAAA,IACJ,SAASI;AAAA,IACT,SAASC;AAAA,EACf,IAAQJ,GACEK,IAAYnd,EAAA,MAAK2b,KACjB;AAAA,IACJ,SAASyB;AAAA,IACT,SAASC;AAAA,IACT,SAASC;AAAA,IACT,SAASC;AAAA,EACf,IAAQJ,GACEK,IAAWF,IAAWF,GACtBK,IAAWF,IAAWF,GACtBK,IAAWT,IAAWF,GACtBY,IAAWT,IAAWF,GACtBY,IAAW,KAAK,MAAMF,GAAUC,CAAQ,KAAK,GAC7CE,IAAY,KAAK,MAAML,GAAUC,CAAQ,KAAK;AACpD,MAAI,CAACzd,EAAA,MAAKmb,OAAe,KAAK,IAAI0C,IAAYD,CAAQ,KAAK1B,GAAa;AACtE;AAMF,MAJAiB,EAAU,UAAUJ,GACpBI,EAAU,UAAUH,GACpBG,EAAU,UAAUF,GACpBE,EAAU,UAAUD,GAChB,CAACld,EAAA,MAAKmb,KAAa;AACrB,IAAAlb,EAAA,MAAKkb,IAAc;AACnB;AAAA,EACF;AACA,QAAM2C,IAAS,EAAEf,IAAWE,KAAY,IAAID,IAAWE,KAAY,CAAC;AACpE,GAAAnpB,IAAAiM,EAAA,MAAKub,QAAL,QAAAxnB,EAAA,WAAmB+pB,GAAQD,GAAWD;AACxC,GACA3B,KAAW,SAAClK,GAAK;AApzJnB,MAAAhe;AAqzJI,EAAIge,EAAI,QAAQ,UAAU,MAGtB/R,EAAA,MAAK6b,QACP7b,EAAA,MAAK6b,IAAa,MAAK,GACvB5b,EAAA,MAAK4b,IAAe,QACpB9nB,IAAAiM,EAAA,MAAKwb,QAAL,QAAAznB,EAAA,aAEGiM,EAAA,MAAK2b,QAGVhc,GAAUoS,CAAG,GACb9R,EAAA,MAAK0b,IAAa,OAClB1b,EAAA,MAAKkb,IAAc;AACrB;AArKF,IAAM4C,KAAN7B;AA9pJA,IAAA8B,IAAAC,IAAArY,IAAAC,IAAAoU,IAAAiE,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAo1JA,MAAMC,IAAN,MAAMA,EAAiB;AAAA,EA+DrB,YAAYllB,GAAY;AA/D1B,IAAAhD,EAAA,MAAA6mB;AACE,IAAA7mB,EAAA,MAAAslB,IAAqB;AACrB,IAAAtlB,EAAA,MAAAulB,IAAkB;AAClB,IAAAvlB,EAAA,MAAAkN,IAAW;AACX,IAAAlN,EAAA,MAAAmN,IAAW;AACX,IAAAnN,EAAA,MAAAuhB,IAA2B;AAC3B,IAAAvhB,EAAA,MAAAwlB,IAAY;AACZ,IAAAxlB,EAAA,MAAAylB,IAAiB;AACjB,IAAAzlB,EAAA,MAAA0lB,IAAmB;AACnB,IAAA1lB,EAAA,MAAA2lB,IAAe;AACf,IAAA3lB,EAAA,MAAA4lB,IAAqB;AACrB,IAAA5lB,EAAA,MAAA6lB,IAAmB;AACnB,IAAA7lB,EAAA,MAAA8lB,IAAkB;AAClB,IAAA9lB,EAAA,MAAA+lB,IAAW;AACX,IAAA/lB,EAAA,MAAAgmB,IAAsB;AACtB,IAAAhmB,EAAA,MAAAimB,IAAkB;AAClB,IAAAjmB,EAAA,MAAAkmB,IAAe;AACf,IAAAlmB,EAAA,MAAAmmB,IAAa;AACb,IAAAnmB,EAAA,MAAAomB,IAAgB;AAChB,IAAApmB,EAAA,MAAAqmB,IAA+B;AAC/B,IAAArmB,EAAA,MAAAsmB,IAAoB;AACpB,IAAAtmB,EAAA,MAAAumB,IAAa;AACb,IAAAvmB,EAAA,MAAAwmB,IAAa;AACb,IAAAxmB,EAAA,MAAAymB,IAAqB;AACrB,IAAAzmB,EAAA,MAAA0mB,IAAgB;AAChB,IAAA9iB,EAAA,oBAAa;AACb,IAAAA,EAAA,iBAAU;AACV,IAAAA,EAAA,sBAAe;AACf,IAAAA,EAAA,yBAAkB,uBAAO,OAAO,IAAI;AACpC,IAAAA,EAAA,sBAAe;AACf,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,6BAAsB;AAGtB,IAAA5D,EAAA,MAAA2mB,IAAe;AACf,IAAA3mB,EAAA,MAAA4mB,IAAUsB,EAAiB;AA4BzB,SAAK,SAASllB,EAAW,QACzB,KAAK,KAAKA,EAAW,IACrB,KAAK,QAAQ,KAAK,SAAS,MAC3B,KAAK,YAAYA,EAAW,OAAO,WACnC,KAAK,OAAOA,EAAW,MACvB,KAAK,MAAM,MACX,KAAK,aAAaA,EAAW,WAC7B,KAAK,sBAAsB,MAC3B,KAAK,uBAAuB,IAC5B,KAAK,gBAAgB,aAAaA,EAAW,YAC7C,KAAK,sBAAsB,MAC3B,KAAK,sBAAsBA,EAAW,uBAAuB,MAC7D,KAAK,eAAeA,EAAW,gBAAgB,oBAAI,KAAI,GACvD,KAAK,mBAAmBA,EAAW,oBAAoB,MACvD,KAAK,gBAAgB;AACrB,UAAM;AAAA,MACJ,UAAAwB;AAAA,MACA,SAAS;AAAA,QACP,WAAA2E;AAAA,QACA,YAAAC;AAAA,QACA,OAAA+e;AAAA,QACA,OAAAC;AAAA,MACR;AAAA,IACA,IAAQ,KAAK,OAAO;AAChB,SAAK,WAAW5jB,GAChB,KAAK,gBAAgB,MAAMA,IAAW,KAAK,WAAW,eAAe,YAAY,KACjF,KAAK,iBAAiB,CAAC2E,GAAWC,CAAU,GAC5C,KAAK,kBAAkB,CAAC+e,GAAOC,CAAK;AACpC,UAAM,CAAChjB,GAAOC,CAAM,IAAI,KAAK;AAC7B,SAAK,IAAIrC,EAAW,IAAIoC,GACxB,KAAK,IAAIpC,EAAW,IAAIqC,GACxB,KAAK,kBAAkB,IACvB,KAAK,UAAU;AAAA,EACjB;AAAA,EAxDA,WAAW,0BAA0B;AACnC,UAAMgjB,IAASH,EAAiB,UAAU,qBACpCxO,IAAQgG,GAA0B,iBAClC/F,IAAM+F,GAA0B;AACtC,WAAOxmB,EAAO,MAAM,2BAA2B,IAAIka,GAAgB,CAAC,CAAC,CAAC,aAAa,eAAe,GAAGiV,GAAQ;AAAA,MAC3G,MAAM,CAAC,CAAC3O,GAAO,CAAC;AAAA,IACtB,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG2O,GAAQ;AAAA,MACtD,MAAM,CAAC,CAAC1O,GAAK,CAAC;AAAA,IACpB,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAG0O,GAAQ;AAAA,MAC7C,MAAM,CAAC3O,GAAO,CAAC;AAAA,IACrB,CAAK,GAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAG2O,GAAQ;AAAA,MACxD,MAAM,CAAC1O,GAAK,CAAC;AAAA,IACnB,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAG0O,GAAQ;AAAA,MACvC,MAAM,CAAC,GAAG,CAAC3O,CAAK;AAAA,IACtB,CAAK,GAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAG2O,GAAQ;AAAA,MAClD,MAAM,CAAC,GAAG,CAAC1O,CAAG;AAAA,IACpB,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAG0O,GAAQ;AAAA,MAC3C,MAAM,CAAC,GAAG3O,CAAK;AAAA,IACrB,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAG2O,GAAQ;AAAA,MACtD,MAAM,CAAC,GAAG1O,CAAG;AAAA,IACnB,CAAK,GAAG,CAAC,CAAC,UAAU,YAAY,GAAGuO,EAAiB,UAAU,yBAAyB,CAAC,CAAC,CAAC;AAAA,EACxF;AAAA,EAoCA,IAAI,aAAa;AACf,WAAO,OAAO,eAAe,IAAI,EAAE,YAAY;AAAA,EACjD;AAAA,EACA,IAAI,OAAO;AACT,WAAO,OAAO,eAAe,IAAI,EAAE,YAAY;AAAA,EACjD;AAAA,EACA,WAAW,WAAW;AACpB,WAAO;AAAA,EACT;AAAA,EACA,WAAW,oBAAoB;AAC7B,WAAOhvB,EAAO,MAAM,qBAAqB,KAAK,cAAc,WAAW,YAAY,CAAC;AAAA,EACtF;AAAA,EACA,OAAO,wBAAwB6U,GAAQ;AACrC,UAAMua,IAAa,IAAIC,GAAW;AAAA,MAChC,IAAIxa,EAAO,OAAO,UAAS;AAAA,MAC3B,QAAQA,EAAO;AAAA,MACf,WAAWA,EAAO;AAAA,IACxB,CAAK;AACD,IAAAua,EAAW,sBAAsBva,EAAO,qBACxCua,EAAW,UAAU,IACrBA,EAAW,WAAW,uBAAuBA,CAAU;AAAA,EACzD;AAAA,EACA,OAAO,WAAW5H,GAAMrS,GAAY;AAYlC,QAXA6Z,EAAiB,UAAjBA,EAAiB,QAAUxH,IAC3BwH,EAAiB,iBAAjBA,EAAiB,eAAiB,OAAO,OAAO;AAAA,MAC9C,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,IAClB,CAAK,IACGA,EAAiB,qBAAqB;AACxC;AAEF,UAAM7e,IAAQ,iBAAiB,SAAS,eAAe;AACvD,IAAA6e,EAAiB,mBAAmB,WAAW7e,EAAM,iBAAiB,iBAAiB,CAAC,KAAK;AAAA,EAC/F;AAAA,EACA,OAAO,oBAAoBmf,GAAOC,GAAQ;AAAA,EAAC;AAAA,EAC3C,WAAW,4BAA4B;AACrC,WAAO,CAAA;AAAA,EACT;AAAA,EACA,OAAO,yBAAyBC,GAAM;AACpC,WAAO;AAAA,EACT;AAAA,EACA,OAAO,MAAMpM,GAAM/Y,GAAQ;AACzB,IAAApL,GAAY,iBAAiB;AAAA,EAC/B;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,CAAA;AAAA,EACT;AAAA,EACA,IAAI,eAAe;AACjB,WAAOmP,EAAA,MAAKqf;AAAA,EACd;AAAA,EACA,IAAI,aAAattB,GAAO;AA9+J1B,QAAAgC;AA++JI,IAAAkM,EAAA,MAAKof,IAAettB,KACpBgC,IAAA,KAAK,QAAL,QAAAA,EAAU,UAAU,OAAO,aAAahC;AAAA,EAC1C;AAAA,EACA,IAAI,MAAM;AACR,WAAO,KAAK,uBAAuB,KAAK;AAAA,EAC1C;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,UAAM,CAAC8P,GAAWC,CAAU,IAAI,KAAK;AACrC,YAAQ,KAAK,gBAAc;AAAA,MACzB,KAAK;AACH,aAAK,KAAK,KAAK,SAASA,KAAcD,IAAY,IAClD,KAAK,KAAK,KAAK,QAAQA,KAAaC,IAAa;AACjD;AAAA,MACF,KAAK;AACH,aAAK,KAAK,KAAK,QAAQ,GACvB,KAAK,KAAK,KAAK,SAAS;AACxB;AAAA,MACF,KAAK;AACH,aAAK,KAAK,KAAK,SAASA,KAAcD,IAAY,IAClD,KAAK,KAAK,KAAK,QAAQA,KAAaC,IAAa;AACjD;AAAA,MACF;AACE,aAAK,KAAK,KAAK,QAAQ,GACvB,KAAK,KAAK,KAAK,SAAS;AACxB;AAAA,IACR;AACI,SAAK,kBAAiB;AAAA,EACxB;AAAA,EACA,YAAY6U,GAAQ;AAClB,SAAK,WAAW,YAAYA,CAAM;AAAA,EACpC;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,kBAAkB;AAChB,SAAK,IAAI,MAAM,SAAS;AAAA,EAC1B;AAAA,EACA,kBAAkB;AAChB,SAAK,IAAI,MAAM,SAAS3W,EAAA,MAAKsf;AAAA,EAC/B;AAAA,EACA,UAAUrjB,GAAQ;AA1hKpB,QAAAlI;AA2hKI,IAAIkI,MAAW,QACb,KAAK,YAAYA,EAAO,WACxB,KAAK,iBAAiBA,EAAO,mBAE7B9D,EAAA,MAAKonB,GAAAoB,IAAL,aACA5sB,IAAAiM,EAAA,MAAKwe,QAAL,QAAAzqB,EAAsB,UACtBkM,EAAA,MAAKue,IAAkB,QAEzB,KAAK,SAASviB;AAAA,EAChB;AAAA,EACA,QAAQb,GAAO;AACb,IAAK,KAAK,wBAGL4E,EAAA,MAAK2e,MAGR1e,EAAA,MAAK0e,IAAkB,MAFvB,KAAK,OAAO,YAAY,IAAI;AAAA,EAIhC;AAAA,EACA,SAASvjB,GAAO;AA/iKlB,QAAArH;AAmjKI,QAHI,CAAC,KAAK,uBAGN,CAAC,KAAK;AACR;AAEF,UAAMstB,IAASjmB,EAAM;AACrB,IAAIimB,KAAA,QAAAA,EAAQ,QAAQ,IAAI,KAAK,EAAE,QAG/BjmB,EAAM,eAAc,IACfrH,IAAA,KAAK,WAAL,QAAAA,EAAa,uBAChB,KAAK,eAAc;AAAA,EAEvB;AAAA,EACA,iBAAiB;AACf,IAAI,KAAK,YACP,KAAK,OAAM,IAEX,KAAK,OAAM;AAAA,EAEf;AAAA,EACA,SAAS;AACP,IAAK,KAAK,kBAGV,KAAK,uBAAsB;AAAA,EAC7B;AAAA,EACA,yBAAyB;AACvB,SAAK,WAAW,uBAAuB,IAAI;AAAA,EAC7C;AAAA,EACA,MAAM0D,GAAGC,GAAG+f,GAAIC,GAAI;AAClB,UAAM,CAAC5Z,GAAOC,CAAM,IAAI,KAAK;AAC7B,KAAC0Z,GAAIC,CAAE,IAAI,KAAK,wBAAwBD,GAAIC,CAAE,GAC9C,KAAK,KAAKjgB,IAAIggB,KAAM3Z,GACpB,KAAK,KAAKpG,IAAIggB,KAAM3Z,GACpB,KAAK,kBAAiB;AAAA,EACxB;AAAA,EACA,gBAAgBujB,GAAOC,GAAO;AAC5B,UAAM,CAAC5J,GAAaC,CAAY,IAAI,KAAK;AACzC,SAAK,MAAM0J,IAAQ3J,GAAa4J,IAAQ3J,GAAc,KAAK,QAAQD,GAAa,KAAK,SAASC,CAAY,GAC1G,KAAK,cAAa;AAAA,EACpB;AAAA,EAQA,UAAUngB,GAAGC,GAAG;AACd,IAAAS,EAAA,MAAKonB,GAAAC,IAAL,WAAgB,KAAK,kBAAkB/nB,GAAGC;AAAA,EAC5C;AAAA,EACA,gBAAgBD,GAAGC,GAAG;AACpB,IAAAsI,EAAA,MAAK4e,OAAL3e,EAAA,MAAK2e,IAAiB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,IAC9DzmB,EAAA,MAAKonB,GAAAC,IAAL,WAAgB,KAAK,gBAAgB/nB,GAAGC,IACxC,KAAK,IAAI,eAAe;AAAA,MACtB,OAAO;AAAA,IACb,CAAK;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,SAAK,cAAc,KAAK,GAAG,KAAK,CAAC;AAAA,EACnC;AAAA,EACA,KAAK+f,GAAIC,GAAI;AACX,IAAA1X,EAAA,MAAK4e,OAAL3e,EAAA,MAAK2e,IAAiB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM;AAC9D,UAAM;AAAA,MACJ,KAAAnd;AAAA,MACA,kBAAkB,CAACkW,GAAaC,CAAY;AAAA,IAClD,IAAQ;AAGJ,QAFA,KAAK,KAAKH,IAAKE,GACf,KAAK,KAAKD,IAAKE,GACX,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI;AACzE,YAAM;AAAA,QACJ,GAAAngB;AAAA,QACA,GAAAC;AAAA,MACR,IAAU,KAAK,IAAI,sBAAqB;AAClC,MAAI,KAAK,OAAO,cAAc,MAAMD,GAAGC,CAAC,MACtC,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC,GAC3B,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IAE/B;AACA,QAAI;AAAA,MACF,GAAAD;AAAA,MACA,GAAAC;AAAA,IACN,IAAQ;AACJ,UAAM,CAAC8pB,GAAIC,CAAE,IAAI,KAAK,mBAAkB;AACxC,IAAAhqB,KAAK+pB,GACL9pB,KAAK+pB;AACL,UAAM;AAAA,MACJ,OAAA1f;AAAA,IACN,IAAQN;AACJ,IAAAM,EAAM,OAAO,IAAI,MAAMtK,GAAG,QAAQ,CAAC,CAAC,KACpCsK,EAAM,MAAM,IAAI,MAAMrK,GAAG,QAAQ,CAAC,CAAC,KACnC,KAAK,eAAeD,GAAGC,CAAC,GACxB+J,EAAI,eAAe;AAAA,MACjB,OAAO;AAAA,IACb,CAAK;AAAA,EACH;AAAA,EACA,eAAehK,GAAGC,GAAG;AAAA,EAAC;AAAA,EACtB,cAAcD,GAAGC,GAAG;AAAA,EAAC;AAAA,EACrB,IAAI,gBAAgB;AAClB,WAAO,CAAC,CAACsI,EAAA,MAAK4e,QAAiB5e,EAAA,MAAK4e,IAAa,CAAC,MAAM,KAAK,KAAK5e,EAAA,MAAK4e,IAAa,CAAC,MAAM,KAAK;AAAA,EAClG;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO,CAAC,CAAC5e,EAAA,MAAK4e,QAAiB5e,EAAA,MAAK4e,IAAa,CAAC,MAAM,KAAK,SAAS5e,EAAA,MAAK4e,IAAa,CAAC,MAAM,KAAK;AAAA,EACtG;AAAA,EACA,qBAAqB;AACnB,UAAM,CAACjH,GAAaC,CAAY,IAAI,KAAK,kBACnC;AAAA,MACJ,kBAAA8J;AAAA,IACN,IAAQd,GACEnpB,IAAIiqB,IAAmB/J,GACvBjgB,IAAIgqB,IAAmB9J;AAC7B,YAAQ,KAAK,UAAQ;AAAA,MACnB,KAAK;AACH,eAAO,CAAC,CAACngB,GAAGC,CAAC;AAAA,MACf,KAAK;AACH,eAAO,CAACD,GAAGC,CAAC;AAAA,MACd,KAAK;AACH,eAAO,CAACD,GAAG,CAACC,CAAC;AAAA,MACf;AACE,eAAO,CAAC,CAACD,GAAG,CAACC,CAAC;AAAA,IACtB;AAAA,EACE;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO;AAAA,EACT;AAAA,EACA,kBAAkBwF,IAAW,KAAK,UAAU;AAC1C,UAAM;AAAA,MACJ,KAAK;AAAA,QACH,OAAA6E;AAAA,MACR;AAAA,MACM,gBAAgB,CAACF,GAAWC,CAAU;AAAA,IAC5C,IAAQ;AACJ,QAAI;AAAA,MACF,GAAArK;AAAA,MACA,GAAAC;AAAA,MACA,OAAAoG;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ;AAKJ,QAJAD,KAAS+D,GACT9D,KAAU+D,GACVrK,KAAKoK,GACLnK,KAAKoK,GACD,KAAK;AACP,cAAQ5E,GAAQ;AAAA,QACd,KAAK;AACH,UAAAzF,IAAIoC,GAAUpC,GAAG,GAAGoK,IAAY/D,CAAK,GACrCpG,IAAImC,GAAUnC,GAAG,GAAGoK,IAAa/D,CAAM;AACvC;AAAA,QACF,KAAK;AACH,UAAAtG,IAAIoC,GAAUpC,GAAG,GAAGoK,IAAY9D,CAAM,GACtCrG,IAAImC,GAAUnC,GAAGoG,GAAOgE,CAAU;AAClC;AAAA,QACF,KAAK;AACH,UAAArK,IAAIoC,GAAUpC,GAAGqG,GAAO+D,CAAS,GACjCnK,IAAImC,GAAUnC,GAAGqG,GAAQ+D,CAAU;AACnC;AAAA,QACF,KAAK;AACH,UAAArK,IAAIoC,GAAUpC,GAAGsG,GAAQ8D,CAAS,GAClCnK,IAAImC,GAAUnC,GAAG,GAAGoK,IAAahE,CAAK;AACtC;AAAA,MACV;AAEI,SAAK,IAAIrG,KAAKoK,GACd,KAAK,IAAInK,KAAKoK;AACd,UAAM,CAAC0f,GAAIC,CAAE,IAAI,KAAK,mBAAkB;AACxC,IAAAhqB,KAAK+pB,GACL9pB,KAAK+pB,GACL1f,EAAM,OAAO,IAAI,MAAMtK,GAAG,QAAQ,CAAC,CAAC,KACpCsK,EAAM,MAAM,IAAI,MAAMrK,GAAG,QAAQ,CAAC,CAAC,KACnC,KAAK,UAAS;AAAA,EAChB;AAAA,EAaA,wBAAwBD,GAAGC,GAAG;AAzuKhC,QAAA3D;AA0uKI,WAAOoE,EAAApE,IAAA6sB,GAAiBnB,IAAAC,IAAjB,KAAA3rB,GAA8B0D,GAAGC,GAAG,KAAK;AAAA,EAClD;AAAA,EACA,wBAAwBD,GAAGC,GAAG;AA5uKhC,QAAA3D;AA6uKI,WAAOoE,EAAApE,IAAA6sB,GAAiBnB,IAAAC,IAAjB,KAAA3rB,GAA8B0D,GAAGC,GAAG,MAAM,KAAK;AAAA,EACxD;AAAA,EAmBA,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW,eAAe;AAAA,EACxC;AAAA,EACA,IAAI,iBAAiB;AACnB,YAAQ,KAAK,WAAW,eAAe,WAAW,KAAK,gBAAgB;AAAA,EACzE;AAAA,EACA,IAAI,mBAAmB;AACrB,UAAM;AAAA,MACJ,aAAAiqB;AAAA,MACA,gBAAgB,CAAC9f,GAAWC,CAAU;AAAA,IAC5C,IAAQ;AACJ,WAAO,CAACD,IAAY8f,GAAa7f,IAAa6f,CAAW;AAAA,EAC3D;AAAA,EACA,UAAU;AACR,UAAM;AAAA,MACJ,KAAK;AAAA,QACH,OAAA5f;AAAA,MACR;AAAA,MACM,OAAAjE;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ;AACJ,IAAAgE,EAAM,QAAQ,IAAI,MAAMjE,GAAO,QAAQ,CAAC,CAAC,KACzCiE,EAAM,SAAS,IAAI,MAAMhE,GAAQ,QAAQ,CAAC,CAAC;AAAA,EAC7C;AAAA,EACA,wBAAwB;AACtB,WAAO,CAAC,GAAG,CAAC;AAAA,EACd;AAAA,EAqFA,aAAa;AAAA,EAAC;AAAA,EAyBd,OAAO,OAAOtG,GAAG;AACf,WAAO,KAAK,MAAMA,IAAI,GAAK,IAAI;AAAA,EACjC;AAAA,EAuGA,cAAc;AAAA,EAAC;AAAA,EACf,gBAAgB;AAn/KlB,QAAA1D;AAo/KI,KAAAA,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe;AAAA,EACjB;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO;AAAA,EACT;AAAA,EACA,MAAM,iBAAiB;AACrB,QAAI,KAAK,gBAAgBiM,EAAA,MAAK8e;AAC5B,aAAO,KAAK;AAEd,SAAK,eAAe,IAAIpX,GAAc,IAAI,GAC1C,KAAK,IAAI,OAAO,KAAK,aAAa,OAAM,CAAE;AAC1C,UAAM;AAAA,MACJ,gBAAAka;AAAA,IACN,IAAQ;AACJ,QAAIA;AACF,iBAAW,CAACzvB,GAAMoV,CAAI,KAAKqa;AACzB,cAAM,KAAK,aAAa,UAAUzvB,GAAMoV,CAAI;AAGhD,WAAK,KAAK,cACR,KAAK,aAAa,UAAU,WAAW,KAAK,iBAAgB,CAAE,GAEhE,KAAK,aAAa,UAAU,QAAQ,GAC7B,KAAK;AAAA,EACd;AAAA,EACA,4BAA4B;AA7gL9B,QAAAxT;AA8gLI,KAAAA,IAAA,KAAK,iBAAL,QAAAA,EAAmB,gBAAgB,WAAW,KAAK,iBAAgB,GAAI;AAAA,EACzE;AAAA,EACA,iCAAiC;AAhhLnC,QAAAA;AAihLI,KAAAA,IAAA,KAAK,iBAAL,QAAAA,EAAmB,aAAa;AAAA,EAClC;AAAA,EACA,oBAAoB;AAnhLtB,QAAAA,GAAAC;AAohLI,KAAAD,IAAA,KAAK,iBAAL,QAAAA,EAAmB,UACnB,KAAK,eAAe,OACpBC,IAAAgM,EAAA,MAAK4F,QAAL,QAAA5R,EAAe;AAAA,EACjB;AAAA,EACA,aAAaiR,GAAW;AAxhL1B,QAAAlR;AAyhLI,UAAM8tB,KAAiB9tB,IAAA,KAAK,iBAAL,gBAAAA,EAAmB;AAC1C,IAAI8tB,IACFA,EAAe,OAAO5c,CAAS,IAE/B,KAAK,IAAI,OAAOA,CAAS;AAAA,EAE7B;AAAA,EACA,sBAAsB;AACpB,WAAO,KAAK,IAAI,sBAAqB;AAAA,EACvC;AAAA,EACA,gBAAgB;AACd,WAAKjF,EAAA,MAAK4F,QACRoU,GAAQ,WAAW4G,EAAiB,KAAK,GACzC3gB,EAAA,MAAK2F,IAAW,IAAIoU,GAAQ,IAAI,IAC5Bha,EAAA,MAAKge,QACPhe,EAAA,MAAK4F,IAAS,OAAO5F,EAAA,MAAKge,KAC1B/d,EAAA,MAAK+d,IAAqB,SAGvBhe,EAAA,MAAK4F;AAAA,EACd;AAAA,EACA,IAAI,cAAc;AA9iLpB,QAAA7R;AA+iLI,YAAOA,IAAAiM,EAAA,MAAK4F,QAAL,gBAAA7R,EAAe;AAAA,EACxB;AAAA,EACA,IAAI,YAAYuR,GAAM;AACpB,IAAKtF,EAAA,MAAK4F,QAGV5F,EAAA,MAAK4F,IAAS,OAAON;AAAA,EACvB;AAAA,EACA,IAAI,iBAAiB;AAvjLvB,QAAAvR;AAwjLI,YAAOA,IAAAiM,EAAA,MAAK4F,QAAL,gBAAA7R,EAAe;AAAA,EACxB;AAAA,EACA,MAAM,kBAAkBwgB,GAAM;AA1jLhC,QAAAxgB;AA2jLI,YAAMA,IAAAiM,EAAA,MAAK4F,QAAL,gBAAA7R,EAAe,eAAewgB;AAAA,EACtC;AAAA,EACA,iBAAiBkF,GAAc;AA7jLjC,QAAA1lB;AA8jLI,YAAOA,IAAAiM,EAAA,MAAK4F,QAAL,gBAAA7R,EAAe,UAAU0lB;AAAA,EAClC;AAAA,EACA,aAAa;AACX,WAAO,CAAC,CAACzZ,EAAA,MAAK4F,OAAY,CAAC5F,EAAA,MAAK4F,IAAS,QAAO;AAAA,EAClD;AAAA,EACA,iBAAiB;AAnkLnB,QAAA7R;AAokLI,aAAOA,IAAAiM,EAAA,MAAK4F,QAAL,gBAAA7R,EAAe,cAAa;AAAA,EACrC;AAAA,EACA,qBAAqB;AAtkLvB,QAAAA;AAukLI,KAAAA,IAAAiM,EAAA,MAAK6F,QAAL,QAAA9R,EAAe;AAAA,EACjB;AAAA,EACA,mBAAmB;AACjB,WAAO,KAAK,gBAAgBiM,EAAA,MAAK6F,OAAL5F,EAAA,MAAK4F,IAAa,IAAIic,GAAQ,IAAI,KAAI;AAAA,EACpE;AAAA,EACA,6BAA6B;AAC3B,QAAK,KAAK,WAAW,qBAGrB;AAAA,UAAI9hB,EAAA,MAAKia,KAA0B;AACjC,QAAI,KAAK,WAAW,mBAClBja,EAAA,MAAKia,IAAyB,UAAU,OAAO,QAAQ;AAEzD;AAAA,MACF;AACA,MAAK,KAAK,eAGVha,EAAA,MAAKga,IAA2Bja,EAAA,MAAK6F,IAAS,oBAAmB,IACjE,KAAK,IAAI,OAAO7F,EAAA,MAAKia,GAAwB;AAAA;AAAA,EAC/C;AAAA,EACA,gCAAgC;AAC9B,IAAAja,EAAA,MAAK6F,IAAS,8BAA6B,GAC3C5F,EAAA,MAAKga,IAA2B;AAAA,EAClC;AAAA,EACA,8BAA8B;AAhmLhC,QAAAlmB;AAimLI,KAAAA,IAAAiM,EAAA,MAAKia,QAAL,QAAAlmB,EAA+B,UAAU,IAAI;AAAA,EAC/C;AAAA,EACA,IAAI,UAAU;AACZ,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,UAAAknB;AAAA,QACA,MAAA1G;AAAA,QACA,MAAAwN;AAAA,QACA,SAAA5L;AAAA,MACR;AAAA,IACA,IAAQnW,EAAA,MAAK6F;AACT,WAAO;AAAA,MACL,MAAA0O;AAAA,MACA,UAAA0G;AAAA,MACA,MAAA8G;AAAA,MACA,SAAA5L;AAAA,MACA,OAAO,KAAK,eAAc;AAAA,MAC1B,SAAS,KAAK,WAAW;AAAA,IAC/B;AAAA,EACE;AAAA,EACA,IAAI,QAAQ5B,GAAM;AAChB,IAAAvU,EAAA,MAAK6F,OAAL5F,EAAA,MAAK4F,IAAa,IAAIic,GAAQ,IAAI,IAClC9hB,EAAA,MAAK6F,IAAS,OAAO0O,GACjB,KAAK,cACP,KAAK,+BAA8B,GACnC,KAAK,2BAA0B,GAC/B,KAAK,WAAW,cAAc,IAAI,MAElC,KAAK,0BAAyB,GAC9B,KAAK,8BAA6B,GAClC,KAAK,WAAW,cAAc,IAAI;AAAA,EAEtC;AAAA,EACA,eAAe;AAAA,IACb,SAAArN;AAAA,IACA,UAAAmP;AAAA,IACA,UAAA4E;AAAA,EACJ,GAAK;AAMD,QALI,CAAC5E,MAGLrW,EAAA,MAAK6F,OAAL5F,EAAA,MAAK4F,IAAa,IAAIic,GAAQ,IAAI,IAClC9hB,EAAA,MAAK6F,IAAS,eAAeqB,GAAS+T,CAAQ,GAC1C,CAAC,KAAK;AACR;AAEF,UAAM9f,IAAa,KAAK,WAAW,sCAAsC,KAAK,mBAAmB;AACjG,IAAIA,KACF,KAAK,0BAA0BA,CAAU;AAAA,EAE7C;AAAA,EACA,IAAI,mBAAmB;AAppLzB,QAAApH;AAqpLI,YAAOA,IAAAiM,EAAA,MAAK6F,QAAL,gBAAA9R,EAAe;AAAA,EACxB;AAAA,EACA,IAAI,oBAAoB;AAvpL1B,QAAAA;AAwpLI,YAAOA,IAAAiM,EAAA,MAAK6F,QAAL,gBAAA9R,EAAe;AAAA,EACxB;AAAA,EACA,IAAI,aAAa;AACf,WAAO,CAAC,CAACiM,EAAA,MAAK6F,OAAY,CAAC7F,EAAA,MAAK6F,IAAS,aAAa,CAAC7F,EAAA,MAAK6F,IAAS,UAAS;AAAA,EAChF;AAAA,EACA,MAAM,YAAYzU,GAAS;AACzB,IAAA4O,EAAA,MAAK6F,OAAL5F,EAAA,MAAK4F,IAAa,IAAIic,GAAQ,IAAI,IAClC9hB,EAAA,MAAK6F,IAAS,KAAKzU,CAAO;AAAA,EAC5B;AAAA,EACA,cAAcqiB,GAAYC,IAAa,QAAW;AAChD,IAAI,KAAK,cACP,KAAK,WAAW,cAAc,MAAMD,GAAYC,CAAU;AAAA,EAE9D;AAAA,EACA,yBAAyBoH,GAAU;AACjC,IAAA9a,EAAA,MAAK6F,IAAS,kBAAkBiV,CAAQ;AAAA,EAC1C;AAAA,EACA,WAAW5F,GAAY;AACrB,QAAI,KAAK,kBAAkB;AAGzB,YAAM,CAAA,EAAA,EAAA,EAAK8M,CAAG,IAAI9M,EAAW,MACvB,CAACrT,CAAS,IAAI,KAAK,gBACnB,CAACgf,CAAK,IAAI,KAAK,iBACfoB,IAAMpB,IAAQhf,IAAY,GAC1BqgB,IAAMF,IAAM,KACZG,IAAMF,IAAM;AAClB,MAAA/M,EAAW,QAAQ;AAAA,QACjB,UAAU,KAAK,QAAQ;AAAA,QACvB,SAAS,KAAK,QAAQ;AAAA,QACtB,MAAM,CAAC+M,GAAKC,GAAKC,GAAKH,CAAG;AAAA,MACjC;AAAA,IACI;AAAA,EACF;AAAA,EACA,0BAA0B;AAAA,IACxB,OAAO;AAAA,MACL,UAAAI;AAAA,MACA,SAAAjM;AAAA,IACN;AAAA,EACA,GAAK;AACD,IAAAnW,EAAA,MAAK6F,IAAS,OAAOsQ,IAAU,OAAOiM;AAAA,EACxC;AAAA,EACA,IAAI,2BAA2B;AAC7B,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,SAAS;AArsLX,QAAAruB;AAssLI,UAAM0N,IAAM,KAAK,MAAM,SAAS,cAAc,KAAK;AACnD,IAAAA,EAAI,aAAa,yBAAyB,MAAM,KAAK,YAAY,GAAG,GACpEA,EAAI,YAAY,KAAK,MACrBA,EAAI,aAAa,MAAM,KAAK,EAAE,GAC9BA,EAAI,WAAWzB,EAAA,MAAKke,MAAY,KAAK,GACrCzc,EAAI,aAAa,QAAQ,aAAa,GAClC,KAAK,iBACPA,EAAI,aAAa,gBAAgB,KAAK,aAAa,GAEhD,KAAK,cACRA,EAAI,UAAU,IAAI,QAAQ,GAE5B,KAAK,gBAAe,GACpBtJ,EAAA,MAAKonB,GAAAe,IAAL;AACA,UAAM,CAAC3I,GAAaC,CAAY,IAAI,KAAK;AACzC,IAAI,KAAK,iBAAiB,QAAQ,MAChCnW,EAAI,MAAM,WAAW,IAAI,MAAMmW,IAAeD,GAAa,QAAQ,CAAC,CAAC,KACrElW,EAAI,MAAM,YAAY,IAAI,MAAMkW,IAAcC,GAAc,QAAQ,CAAC,CAAC;AAExE,UAAM,CAACH,GAAIC,CAAE,IAAI,KAAK,sBAAqB;AAC3C,gBAAK,UAAUD,GAAIC,CAAE,GACrBhP,GAAW,MAAMjH,GAAK,CAAC,WAAW,eAAe,UAAU,CAAC,GACxD,KAAK,eAAe,KAAK,WAAW,yBACtCzB,EAAA,MAAKof,OAALnf,EAAA,MAAKmf,IAAkB,IAAIrB,GAAa;AAAA,MACtC,WAAWtc;AAAA,MACX,oBAAoB,MAAM,CAAC,KAAK;AAAA,MAChC,cAActJ,EAAA,MAAKonB,GAAAU,IAAyB,KAAK,IAAI;AAAA,MACrD,YAAY9nB,EAAA,MAAKonB,GAAAW,IAAoB,KAAK,IAAI;AAAA,MAC9C,YAAY/nB,EAAA,MAAKonB,GAAAY,IAAuB,KAAK,IAAI;AAAA,MACjD,QAAQ,KAAK,WAAW;AAAA,IAChC,CAAO,KAEH,KAAK,2BAA0B,IAC/BpsB,IAAA,KAAK,WAAW,mBAAhB,QAAAA,EAAgC,QACzB0N;AAAA,EACT;AAAA,EAkDA,YAAYrG,GAAO;AACjB,UAAM;AAAA,MACJ,OAAA4Q;AAAA,IACN,IAAQpY,GAAiB;AACrB,QAAIwH,EAAM,WAAW,KAAKA,EAAM,WAAW4Q,GAAO;AAChD,MAAA5Q,EAAM,eAAc;AACpB;AAAA,IACF;AAEA,QADA6E,EAAA,MAAK0e,IAAkB,KACnB,KAAK,cAAc;AACrB,MAAAxmB,EAAA,MAAKonB,GAAAc,IAAL,WAAuBjlB;AACvB;AAAA,IACF;AACA,IAAAjD,EAAA,MAAKonB,GAAAa,IAAL,WAA2BhlB;AAAA,EAC7B;AAAA,EAoFA,mBAAmB;AAAA,EAAC;AAAA,EACpB,kBAAkB;AAAA,EAAC;AAAA,EACnB,YAAY;AACV,IAAI4E,EAAA,MAAKgf,OACP,aAAahf,EAAA,MAAKgf,GAAiB,GAErC/e,EAAA,MAAK+e,IAAoB,WAAW,MAAM;AAn4L9C,UAAAjrB;AAo4LM,MAAAkM,EAAA,MAAK+e,IAAoB,QACzBjrB,IAAA,KAAK,WAAL,QAAAA,EAAa,gBAAgB;AAAA,IAC/B,GAAG,CAAC;AAAA,EACN;AAAA,EACA,sBAAsBkI,GAAQxE,GAAGC,GAAG;AAClC,IAAAuE,EAAO,aAAa,IAAI,GACxB,KAAK,IAAIxE,GACT,KAAK,IAAIC,GACT,KAAK,kBAAiB,GACtB,KAAK,cAAa;AAAA,EACpB;AAAA,EACA,QAAQ+f,GAAIC,GAAIxa,IAAW,KAAK,UAAU;AACxC,UAAMD,IAAQ,KAAK,aACb,CAAC4E,GAAWC,CAAU,IAAI,KAAK,gBAC/B,CAAC+e,GAAOC,CAAK,IAAI,KAAK,iBACtBuB,IAAS5K,IAAKxa,GACdqlB,IAAS5K,IAAKza,GACdxF,IAAI,KAAK,IAAIoK,GACbnK,IAAI,KAAK,IAAIoK,GACbhE,IAAQ,KAAK,QAAQ+D,GACrB9D,IAAS,KAAK,SAAS+D;AAC7B,YAAQ5E,GAAQ;AAAA,MACd,KAAK;AACH,eAAO,CAACzF,IAAI4qB,IAASxB,GAAO/e,IAAapK,IAAI4qB,IAASvkB,IAAS+iB,GAAOrpB,IAAI4qB,IAASvkB,IAAQ+iB,GAAO/e,IAAapK,IAAI4qB,IAASxB,CAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAACrpB,IAAI6qB,IAASzB,GAAO/e,IAAapK,IAAI2qB,IAASvB,GAAOrpB,IAAI6qB,IAASvkB,IAAS8iB,GAAO/e,IAAapK,IAAI2qB,IAASvkB,IAAQgjB,CAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAACrpB,IAAI4qB,IAASvkB,IAAQ+iB,GAAO/e,IAAapK,IAAI4qB,IAASxB,GAAOrpB,IAAI4qB,IAASxB,GAAO/e,IAAapK,IAAI4qB,IAASvkB,IAAS+iB,CAAK;AAAA,MACnI,KAAK;AACH,eAAO,CAACrpB,IAAI6qB,IAASvkB,IAAS8iB,GAAO/e,IAAapK,IAAI2qB,IAASvkB,IAAQgjB,GAAOrpB,IAAI6qB,IAASzB,GAAO/e,IAAapK,IAAI2qB,IAASvB,CAAK;AAAA,MACnI;AACE,cAAM,IAAI,MAAM,kBAAkB;AAAA,IAC1C;AAAA,EACE;AAAA,EACA,uBAAuBlrB,GAAMkM,GAAY;AACvC,UAAM,CAACjK,GAAIC,GAAIC,GAAIC,CAAE,IAAIpC,GACnBkI,IAAQ/F,IAAKF,GACbkG,IAAS/F,IAAKF;AACpB,YAAQ,KAAK,UAAQ;AAAA,MACnB,KAAK;AACH,eAAO,CAACD,GAAIiK,IAAa9J,GAAI8F,GAAOC,CAAM;AAAA,MAC5C,KAAK;AACH,eAAO,CAAClG,GAAIiK,IAAahK,GAAIiG,GAAQD,CAAK;AAAA,MAC5C,KAAK;AACH,eAAO,CAAC/F,GAAI+J,IAAahK,GAAIgG,GAAOC,CAAM;AAAA,MAC5C,KAAK;AACH,eAAO,CAAChG,GAAI+J,IAAa9J,GAAI+F,GAAQD,CAAK;AAAA,MAC5C;AACE,cAAM,IAAI,MAAM,kBAAkB;AAAA,IAC1C;AAAA,EACE;AAAA,EACA,aAAa;AACX,WAAO,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC1B;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,SAAS8iB,EAAiB,cAAc,QAAQ,KAAK,WAAW,eAAe,KAAK,KAAK,CAAC;AAAA,EACxG;AAAA,EACA,iBAAiB;AA77LnB,QAAA7sB;AA87LI,KAAAA,IAAAiM,EAAA,MAAK6F,QAAL,QAAA9R,EAAe;AAAA,EACjB;AAAA,EACA,UAAU;AACR,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,MAAMR;AAAA,QACN,OAAAuN;AAAA,QACA,MAAAihB;AAAA,QACA,SAAA3e;AAAA,QACA,SAAA+S;AAAA,QACA,UAAA8E;AAAA,MACR;AAAA,MACM,KAAKlgB;AAAA,MACL,WAAAwY;AAAA,MACA,cAAAgP;AAAA,MACA,kBAAAC;AAAA,IACN,IAAQ;AACJ,WAAO;AAAA,MACL,IAAAznB;AAAA,MACA,WAAAwY;AAAA,MACA,MAAM,KAAK,WAAU;AAAA,MACrB,UAAA0H;AAAA,MACA,aAAa;AAAA,QACX,KAAA1nB;AAAA,MACR;AAAA,MACM,cAAAgvB;AAAA,MACA,kBAAkBR,KAAQS;AAAA,MAC1B,UAAU,CAACrM;AAAA,MACX,OAAArV;AAAA,MACA,SAAAsC;AAAA,IACN;AAAA,EACE;AAAA,EACA,UAAUqf,GAAO;AAAA,EAAC;AAAA,EAClB,UAAU;AACR,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAI,KAAK,iBACA,MAET,KAAK,OAAO,gBAAgB,EAAK,GACjCxiB,EAAA,MAAK6e,IAAgB,KACd;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,WAAK,KAAK,kBAGV,KAAK,OAAO,gBAAgB,EAAI,GAChC7e,EAAA,MAAK6e,IAAgB,KACd,MAJE;AAAA,EAKX;AAAA,EACA,eAAe;AACb,WAAO9e,EAAA,MAAK8e;AAAA,EACd;AAAA,EACA,0BAA0B;AACxB,WAAO9e,EAAA,MAAK+e;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,WAAO,KAAK,OAAO,CAAC,KAAK;AAAA,EAC3B;AAAA,EACA,IAAI,aAAa;AACf,UAAM;AAAA,MACJ,KAAA2D;AAAA,MACA,MAAAC;AAAA,MACA,QAAAC;AAAA,MACA,OAAAC;AAAA,IACN,IAAQ,KAAK,oBAAmB,GACtB;AAAA,MACJ,aAAAC;AAAA,MACA,YAAAC;AAAA,IACN,IAAQ;AACJ,WAAOJ,IAAOI,KAAcF,IAAQ,KAAKH,IAAMI,KAAeF,IAAS;AAAA,EACzE;AAAA,EAcA,UAAU;AACR,IAAAzqB,EAAA,MAAKonB,GAAAe,IAAL;AAAA,EACF;AAAA,EACA,OAAO0C,GAAQ;AAAA,EAAC;AAAA,EAChB,SAAS;AAAA,EAAC;AAAA,EACV,mBAAmB;AA1hMrB,QAAAjvB;AA2hMI,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,SAAS;AAAA,MACT,WAAW,KAAK;AAAA,MAChB,YAAUA,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,aAAY;AAAA,IAC/C;AAAA,EACE;AAAA,EACA,UAAU0lB,IAAe,IAAOwJ,IAAU,MAAM;AAliMlD,QAAAlvB;AAmiMI,WAAO;AAAA,MACL,gBAAgB,KAAK;AAAA,MACrB,WAAW,KAAK;AAAA,MAChB,MAAM,KAAK,WAAU;AAAA,MACrB,UAAU,KAAK;AAAA,MACf,oBAAoB,KAAK;AAAA,MACzB,YAAUA,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,aAAY;AAAA,IAC/C;AAAA,EACE;AAAA,EACA,aAAa,YAAYuR,GAAMrJ,GAAQ+L,GAAW;AAChD,UAAMvB,IAAS,IAAI,KAAK,UAAU,YAAY;AAAA,MAC5C,QAAAxK;AAAA,MACA,IAAIA,EAAO,UAAS;AAAA,MACpB,WAAA+L;AAAA,MACA,qBAAqB1C,EAAK;AAAA,MAC1B,cAAcA,EAAK;AAAA,MACnB,kBAAkBA,EAAK;AAAA,IAC7B,CAAK;AACD,IAAAmB,EAAO,WAAWnB,EAAK,UACvBrF,EAAAwG,GAAOuX,IAAqB1Y,EAAK,oBACjCmB,EAAO,UAAUnB,EAAK,UAAU;AAChC,UAAM,CAACzD,GAAWC,CAAU,IAAI2E,EAAO,gBACjC,CAAChP,GAAGC,GAAGoG,GAAOC,CAAM,IAAI0I,EAAO,uBAAuBnB,EAAK,MAAMxD,CAAU;AACjF,WAAA2E,EAAO,IAAIhP,IAAIoK,GACf4E,EAAO,IAAI/O,IAAIoK,GACf2E,EAAO,QAAQ3I,IAAQ+D,GACvB4E,EAAO,SAAS1I,IAAS+D,GAClB2E;AAAA,EACT;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO,CAAC,CAAC,KAAK,wBAAwB,KAAK,WAAW,KAAK,UAAS,MAAO;AAAA,EAC7E;AAAA,EACA,SAAS;AAnkMX,QAAA1S,GAAAC,GAAAse;AAqlMI,SAjBAve,IAAAiM,EAAA,MAAKye,QAAL,QAAA1qB,EAAe,SACfkM,EAAA,MAAKwe,IAAW,OACX,KAAK,aACR,KAAK,OAAM,GAET,KAAK,SACP,KAAK,OAAO,OAAO,IAAI,IAEvB,KAAK,WAAW,aAAa,IAAI,GAEnC,KAAK,iBAAgB,GACjBze,EAAA,MAAKgf,QACP,aAAahf,EAAA,MAAKgf,GAAiB,GACnC/e,EAAA,MAAK+e,IAAoB,QAE3B7mB,EAAA,MAAKonB,GAAAoB,IAAL,YACA,KAAK,kBAAiB,GAClB3gB,EAAA,MAAKmf,KAAoB;AAC3B,iBAAW+D,KAAWljB,EAAA,MAAKmf,IAAmB,OAAM;AAClD,qBAAa+D,CAAO;AAEtB,MAAAjjB,EAAA,MAAKkf,IAAqB;AAAA,IAC5B;AACA,SAAK,SAAS,OACdnrB,IAAAgM,EAAA,MAAKof,QAAL,QAAAprB,EAAoB,WACpBiM,EAAA,MAAKmf,IAAgB,QACrB9M,IAAAtS,EAAA,MAAKwe,QAAL,QAAAlM,EAAsB,UACtBrS,EAAA,MAAKue,IAAkB;AAAA,EACzB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,IAAI,KAAK,gBACPrmB,EAAA,MAAKonB,GAAAK,IAAL,YACA5f,EAAA,MAAKqe,IAAa,UAAU,OAAO,QAAQ;AAAA,EAE/C;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO;AAAA,EACT;AAAA,EACA,IAAI,wBAAwB;AAC1B,WAAO,KAAK,WAAW,cAAc,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAAA,EAC7D;AAAA,EACA,IAAI,8BAA8B;AAChC,UAAM;AAAA,MACJ,uBAAuB,CAAChL,GAAMC,CAAI;AAAA,IACxC,IAAQ,MACE,CAAC2O,GAAKC,GAAKC,GAAKH,CAAG,IAAI,KAAK,WAAU;AAC5C,WAAO,CAACpB,EAAiB,OAAOqB,KAAOE,IAAMF,KAAO5O,CAAI,GAAGuN,EAAiB,OAAOsB,KAAOF,IAAME,MAAQ,IAAI5O,EAAK,CAAC;AAAA,EACpH;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,WAAW,iBAAiB,KAAK,eAAc,GAAI,KAAK,OAAO;AAAA,EAC7E;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAOtT,EAAA,MAAK6F,IAAS;AAAA,EACvB;AAAA,EACA,IAAI,qBAAqB3Q,GAAK;AAC5B,IAAA8K,EAAA,MAAK6F,IAAS,8BAA8B3Q;AAAA,EAC9C;AAAA,EACA,0BAA0B;AACxB,WAAO8K,EAAA,MAAK6F,IAAS,wBAAuB;AAAA,EAC9C;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO7F,EAAA,MAAK6F,IAAS;AAAA,EACvB;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,uBAAuBzU,GAAS;AAzoMlC,QAAA2C;AA0oMI,KAAAA,IAAAiM,EAAA,MAAK6F,QAAL,QAAA9R,EAAe,uBAAuB3C;AAAA,EACxC;AAAA,EACA,QAAQgK,GAAO;AACb,QAAI,CAAC,KAAK,eAAeA,EAAM,WAAW,KAAK,OAAOA,EAAM,QAAQ;AAClE;AAEF,SAAK,WAAW,YAAY,IAAI,GAChC6E,EAAA,MAAKse,IAAmB;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,IACxB;AACI,UAAM4E,IAAWnjB,EAAA,MAAKqe,IAAa;AACnC,QAAI,CAACre,EAAA,MAAKie,KAAiB;AACzB,MAAAhe,EAAA,MAAKge,IAAkB,MAAM,KAAKkF,CAAQ;AAC1C,YAAMC,IAAsBjrB,EAAA,MAAKonB,GAAAgB,IAAgB,KAAK,IAAI,GACpD8C,IAAmBlrB,EAAA,MAAKonB,GAAAiB,IAAa,KAAK,IAAI,GAC9C7Z,IAAS,KAAK,WAAW;AAC/B,iBAAWlF,KAAOzB,EAAA,MAAKie,KAAiB;AACtC,cAAM9rB,IAAOsP,EAAI,aAAa,mBAAmB;AACjD,QAAAA,EAAI,aAAa,QAAQ,YAAY,GACrCA,EAAI,iBAAiB,WAAW2hB,GAAqB;AAAA,UACnD,QAAAzc;AAAA,QACV,CAAS,GACDlF,EAAI,iBAAiB,QAAQ4hB,GAAkB;AAAA,UAC7C,QAAA1c;AAAA,QACV,CAAS,GACDlF,EAAI,iBAAiB,SAAStJ,EAAA,MAAKonB,GAAAkB,IAAc,KAAK,MAAMtuB,CAAI,GAAG;AAAA,UACjE,QAAAwU;AAAA,QACV,CAAS,GACDlF,EAAI,aAAa,gBAAgBmf,EAAiB,aAAazuB,CAAI,CAAC;AAAA,MACtE;AAAA,IACF;AACA,UAAM8E,IAAQ+I,EAAA,MAAKie,IAAgB,CAAC;AACpC,QAAIqF,IAAgB;AACpB,eAAW7hB,KAAO0hB,GAAU;AAC1B,UAAI1hB,MAAQxK;AACV;AAEF,MAAAqsB;AAAA,IACF;AACA,UAAMC,KAAqB,MAAM,KAAK,WAAW,KAAK,kBAAkB,MAAM,MAAMvjB,EAAA,MAAKie,IAAgB,SAAS;AAClH,QAAIsF,MAAsBD,GAAe;AACvC,UAAIC,IAAoBD;AACtB,iBAASnwB,IAAI,GAAGA,IAAImwB,IAAgBC,GAAmBpwB;AACrD,UAAA6M,EAAA,MAAKqe,IAAa,OAAOre,EAAA,MAAKqe,IAAa,iBAAiB;AAAA,eAErDkF,IAAoBD;AAC7B,iBAASnwB,IAAI,GAAGA,IAAIowB,IAAoBD,GAAenwB;AACrD,UAAA6M,EAAA,MAAKqe,IAAa,kBAAkB,OAAOre,EAAA,MAAKqe,IAAa,gBAAgB;AAGjF,UAAIlrB,IAAI;AACR,iBAAWyH,KAASuoB,GAAU;AAE5B,cAAMhxB,IADM6N,EAAA,MAAKie,IAAgB9qB,GAAG,EACnB,aAAa,mBAAmB;AACjD,QAAAyH,EAAM,aAAa,gBAAgBgmB,EAAiB,aAAazuB,CAAI,CAAC;AAAA,MACxE;AAAA,IACF;AACA,IAAAgG,EAAA,MAAKonB,GAAAmB,IAAL,WAAyB,IACzBzgB,EAAA,MAAK8e,IAA+B,KACpC/e,EAAA,MAAKqe,IAAa,kBAAkB,MAAM;AAAA,MACxC,cAAc;AAAA,IACpB,CAAK,GACDjjB,EAAM,eAAc,GACpBA,EAAM,yBAAwB;AAAA,EAChC;AAAA,EAoBA,oBAAoB3D,GAAGC,GAAG;AACxB,IAAKsI,EAAA,MAAK+e,OAGV5mB,EAAA,MAAKonB,GAAAS,IAAL,WAAyBhgB,EAAA,MAAK0e,KAAqB;AAAA,MACjD,QAAQjnB;AAAA,MACR,QAAQC;AAAA,MACR,cAAc;AAAA,IACpB;AAAA,EACE;AAAA,EAMA,4BAA4B;AAC1B,IAAAS,EAAA,MAAKonB,GAAAoB,IAAL,YACA,KAAK,IAAI,MAAK;AAAA,EAChB;AAAA,EACA,SAAS;AApvMX,QAAA5sB,GAAAC,GAAAse;AAqvMI,QAAI,KAAK,cAAc,KAAK,cAAc;AACxC,WAAK,aAAa,KAAI;AACtB;AAAA,IACF;AAIA,QAHA,KAAK,aAAa,IAClB,KAAK,cAAa,IAClBve,IAAA,KAAK,QAAL,QAAAA,EAAU,UAAU,IAAI,mBACpB,CAAC,KAAK,cAAc;AACtB,WAAK,iBAAiB,KAAK,MAAM;AA7vMvC,YAAAA,GAAAC;AA8vMQ,SAAID,IAAA,KAAK,QAAL,QAAAA,EAAU,UAAU,SAAS,uBAC/BC,IAAA,KAAK,iBAAL,QAAAA,EAAmB;AAAA,MAEvB,CAAC;AACD;AAAA,IACF;AACA,KAAAA,IAAA,KAAK,iBAAL,QAAAA,EAAmB,SACnBse,IAAAtS,EAAA,MAAK4F,QAAL,QAAA0M,EAAe,mBAAmB;AAAA,EACpC;AAAA,EACA,QAAQ;AACN,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,SAAS,SAAS,aAAa,KACvD,WAAW,MAAA;AAzwMjB,UAAAve;AAywMuB,cAAAA,IAAA,KAAK,QAAL,gBAAAA,EAAU,MAAM;AAAA,QAC/B,eAAe;AAAA,MACvB;AAAA,OAAU,CAAC;AAAA,EAET;AAAA,EACA,WAAW;AA9wMb,QAAAA,GAAAC,GAAAse,GAAAC,GAAAC;AA+wMI,IAAK,KAAK,eAGV,KAAK,aAAa,KAClBze,IAAAiM,EAAA,MAAKqe,QAAL,QAAAtqB,EAAmB,UAAU,IAAI,YACjCC,IAAA,KAAK,QAAL,QAAAA,EAAU,UAAU,OAAO,oBACvBse,IAAA,KAAK,QAAL,QAAAA,EAAU,SAAS,SAAS,kBAC9B,KAAK,WAAW,aAAa,IAAI,MAAM;AAAA,MACrC,eAAe;AAAA,IACvB,CAAO,IAEHC,IAAA,KAAK,iBAAL,QAAAA,EAAmB,SACnBC,IAAAxS,EAAA,MAAK4F,QAAL,QAAA4M,EAAe,mBAAmB,KAClC,KAAK,iBAAgB;AAAA,EACvB;AAAA,EACA,mBAAmB;AACjB,IAAI,KAAK,cACP,KAAK,WAAW,cAAc,IAAI;AAAA,EAEtC;AAAA,EACA,aAAa/V,GAAM1K,GAAO;AAAA,EAAC;AAAA,EAC3B,iBAAiB;AAAA,EAAC;AAAA,EAClB,gBAAgB;AAAA,EAAC;AAAA,EACjB,IAAI,mBAAmB;AACrB,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,IAAK,KAAK,qBAGV,KAAK,eAAc,GACnB,KAAK,IAAI,MAAK;AAAA,EAChB;AAAA,EACA,SAASqJ,GAAO;AACd,IAAIA,EAAM,OAAO,aAAa,aAG9B,KAAK,gBAAe,GACpB,KAAK,OAAO,cAAc;AAAA,MACxB,MAAM,KAAK,YAAY;AAAA,MACvB,QAAQ,KAAK;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,uBAAuB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,YAAY;AACd,WAAO4E,EAAA,MAAK6e;AAAA,EACd;AAAA,EACA,IAAI,UAAU9sB,GAAO;AAEnB,IADAkO,EAAA,MAAK4e,IAAa9sB,IACb,KAAK,WAGNA,KACF,KAAK,OAAO,YAAY,IAAI,GAC5B,KAAK,OAAO,gBAAgB,IAAI,KAEhC,KAAK,OAAO,gBAAgB,IAAI;AAAA,EAEpC;AAAA,EACA,WAAW,WAAW;AACpB,WAAO;AAAA,EACT;AAAA,EACA,OAAO,0BAA0B;AAC/B,WAAO;AAAA,EACT;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO;AAAA,MACL,QAAQ;AAAA,IACd;AAAA,EACE;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO;AAAA,EACT;AAAA,EACA,iBAAiBuT,GAAMmR,IAAW,IAAO;AACvC,QAAIA,GAAU;AACZ,MAAAzW,EAAA,MAAKmf,OAALlf,EAAA,MAAKkf,IAAuB,oBAAI,IAAG;AACnC,YAAM;AAAA,QACJ,QAAAqE;AAAA,MACR,IAAUle;AACJ,UAAI4d,IAAUljB,EAAA,MAAKmf,IAAmB,IAAIqE,CAAM;AAChD,MAAIN,KACF,aAAaA,CAAO,GAEtBA,IAAU,WAAW,MAAM;AACzB,aAAK,iBAAiB5d,CAAI,GAC1BtF,EAAA,MAAKmf,IAAmB,OAAOqE,CAAM,GACjCxjB,EAAA,MAAKmf,IAAmB,SAAS,KACnClf,EAAA,MAAKkf,IAAqB;AAAA,MAE9B,GAAGyB,EAAiB,iBAAiB,GACrC5gB,EAAA,MAAKmf,IAAmB,IAAIqE,GAAQN,CAAO;AAC3C;AAAA,IACF;AACA,IAAA5d,EAAK,SAALA,EAAK,OAAS,KAAK,aACnB,KAAK,WAAW,UAAU,SAAS,mBAAmB;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,MAAAA;AAAA,MACR;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,KAAKiR,IAAU,KAAK,YAAY;AAC9B,SAAK,IAAI,UAAU,OAAO,UAAU,CAACA,CAAO,GAC5C,KAAK,aAAaA;AAAA,EACpB;AAAA,EACA,SAAS;AACP,IAAI,KAAK,QACP,KAAK,IAAI,WAAW,IAEtBtW,EAAA,MAAKie,IAAY;AAAA,EACnB;AAAA,EACA,UAAU;AACR,IAAI,KAAK,QACP,KAAK,IAAI,WAAW,KAEtBje,EAAA,MAAKie,IAAY;AAAA,EACnB;AAAA,EACA,4BAA4BuF,GAAiB;AAC3C,QAAI,CAACzjB,EAAA,MAAKwe,OAAmB,CAAC,KAAK,SAAS;AAC1C,MAAAve,EAAA,MAAKue,IAAkBiF,EAAgB,kBAAkB,IAAI;AAC7D;AAAA,IACF;AACA,QAAI,KAAK,SAAS;AAChB,MAAAzjB,EAAA,MAAKwe,IAAgB,OAAM,GAC3Bve,EAAA,MAAKue,IAAkB;AACvB;AAAA,IACF;AACA,KAAI,KAAK,oBAAoB,KAAK,iBAAiB,KAAK,oBACtDxe,EAAA,MAAKwe,IAAgB,aAAa;AAAA,MAChC,MAAM,KAAK,WAAU;AAAA,MACrB,OAAO,KAAK;AAAA,IACpB,CAAO;AAAA,EAEL;AAAA,EACA,wBAAwBpI,GAAY;AAClC,QAAI,KAAK;AACP,aAAAA,EAAW,KAAI,GACR;AAET,QAAIsN,IAAUtN,EAAW,UAAU,cAAc,oBAAoB;AACrE,QAAI,CAACsN;AACH,MAAAA,IAAU,SAAS,cAAc,KAAK,GACtCA,EAAQ,UAAU,IAAI,qBAAqB,KAAK,UAAU,GAC1DtN,EAAW,UAAU,QAAQsN,CAAO;AAAA,aAC3BA,EAAQ,aAAa,UAAU;AACxC,YAAMrZ,IAASqZ;AACf,MAAAA,IAAU,SAAS,cAAc,KAAK,GACtCA,EAAQ,UAAU,IAAI,qBAAqB,KAAK,UAAU,GAC1DrZ,EAAO,OAAOqZ,CAAO;AAAA,IACvB;AACA,WAAOA;AAAA,EACT;AAAA,EACA,uBAAuBtN,GAAY;AACjC,UAAM;AAAA,MACJ,mBAAAuN;AAAA,IACN,IAAQvN,EAAW;AACf,KAAIuN,KAAA,gBAAAA,EAAmB,cAAa,SAASA,EAAkB,UAAU,SAAS,mBAAmB,KACnGA,EAAkB,OAAM;AAAA,EAE5B;AACF;AAhmDE3F,KAAA,eACAC,KAAA,eACArY,KAAA,eACAC,KAAA,eACAoU,KAAA,eACAiE,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAWAC,KAAA,eACAC,KAAA,eApCFC,IAAA,eAuQEC,KAAU,SAAC,CAAC1hB,GAAOC,CAAM,GAAGtG,GAAGC,GAAG;AAChC,GAACD,GAAGC,CAAC,IAAI,KAAK,wBAAwBD,GAAGC,CAAC,GAC1C,KAAK,KAAKD,IAAIqG,GACd,KAAK,KAAKpG,IAAIqG,GACd,KAAK,eAAe,KAAK,GAAG,KAAK,CAAC,GAClC,KAAK,kBAAiB;AACxB,GA7QF0hB,KAAA,eAyYSC,KAAY,SAACjoB,GAAGC,GAAGksB,GAAO;AAC/B,UAAQA,GAAK;AAAA,IACX,KAAK;AACH,aAAO,CAAClsB,GAAG,CAACD,CAAC;AAAA,IACf,KAAK;AACH,aAAO,CAAC,CAACA,GAAG,CAACC,CAAC;AAAA,IAChB,KAAK;AACH,aAAO,CAAC,CAACA,GAAGD,CAAC;AAAA,IACf;AACE,aAAO,CAACA,GAAGC,CAAC;AAAA,EACpB;AACE,GAOAioB,KAAkB,SAACziB,GAAU;AAC3B,UAAQA,GAAQ;AAAA,IACd,KAAK,IACH;AACE,YAAM,CAAC2E,GAAWC,CAAU,IAAI,KAAK;AACrC,aAAO,CAAC,GAAG,CAACD,IAAYC,GAAYA,IAAaD,GAAW,CAAC;AAAA,IAC/D;AAAA,IACF,KAAK;AACH,aAAO,CAAC,IAAI,GAAG,GAAG,EAAE;AAAA,IACtB,KAAK,KACH;AACE,YAAM,CAACA,GAAWC,CAAU,IAAI,KAAK;AACrC,aAAO,CAAC,GAAGD,IAAYC,GAAY,CAACA,IAAaD,GAAW,CAAC;AAAA,IAC/D;AAAA,IACF;AACE,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,EAC1B;AACE,GA4BA+d,KAAe,WAAG;AAChB,MAAI5f,EAAA,MAAKqe;AACP;AAEF,EAAApe,EAAA,MAAKoe,IAAe,SAAS,cAAc,KAAK,IAChDre,EAAA,MAAKqe,IAAa,UAAU,IAAI,UAAU;AAC1C,QAAMwF,IAAU,KAAK,uBAAuB,CAAC,WAAW,YAAY,eAAe,YAAY,IAAI,CAAC,WAAW,aAAa,YAAY,eAAe,eAAe,gBAAgB,cAAc,YAAY,GAC1Mld,IAAS,KAAK,WAAW;AAC/B,aAAWxU,KAAQ0xB,GAAS;AAC1B,UAAMpiB,IAAM,SAAS,cAAc,KAAK;AACxC,IAAAzB,EAAA,MAAKqe,IAAa,OAAO5c,CAAG,GAC5BA,EAAI,UAAU,IAAI,WAAWtP,CAAI,GACjCsP,EAAI,aAAa,qBAAqBtP,CAAI,GAC1CsP,EAAI,iBAAiB,eAAetJ,EAAA,MAAKonB,GAAAM,IAAoB,KAAK,MAAM1tB,CAAI,GAAG;AAAA,MAC7E,QAAAwU;AAAA,IACR,CAAO,GACDlF,EAAI,iBAAiB,eAAehC,IAAe;AAAA,MACjD,QAAAkH;AAAA,IACR,CAAO,GACDlF,EAAI,WAAW;AAAA,EACjB;AACA,OAAK,IAAI,QAAQzB,EAAA,MAAKqe,GAAY;AACpC,GACAwB,KAAmB,SAAC1tB,GAAMiJ,GAAO;AAnzKnC,MAAArH;AAozKI,EAAAqH,EAAM,eAAc;AACpB,QAAM;AAAA,IACJ,OAAA4Q;AAAA,EACN,IAAQpY,GAAiB;AACrB,MAAIwH,EAAM,WAAW,KAAKA,EAAM,WAAW4Q;AACzC;AAEF,GAAAjY,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe,OAAO;AACtB,QAAM+vB,IAAiB,KAAK;AAC5B,OAAK,eAAe,IACpB7jB,EAAA,MAAKqe,IAAqB,CAACljB,EAAM,SAASA,EAAM,OAAO;AACvD,QAAM0X,IAAK,IAAI,gBAAe,GACxBnM,IAAS,KAAK,WAAW,eAAemM,CAAE;AAChD,OAAK,OAAO,oBAAoB,EAAK,GACrC,OAAO,iBAAiB,eAAe3a,EAAA,MAAKonB,GAAAS,IAAoB,KAAK,MAAM7tB,CAAI,GAAG;AAAA,IAChF,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAAwU;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,aAAahH,IAAW;AAAA,IAC9C,SAAS;AAAA,IACT,QAAAgH;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,eAAelH,IAAe;AAAA,IACpD,QAAAkH;AAAA,EACN,CAAK,GACD1G,EAAA,MAAKse,IAAmB;AAAA,IACtB,QAAQ,KAAK;AAAA,IACb,QAAQ,KAAK;AAAA,IACb,YAAY,KAAK;AAAA,IACjB,aAAa,KAAK;AAAA,EACxB;AACI,QAAMwF,IAAoB,KAAK,OAAO,IAAI,MAAM,QAC1CC,IAAc,KAAK,IAAI,MAAM;AACnC,OAAK,IAAI,MAAM,SAAS,KAAK,OAAO,IAAI,MAAM,SAAS,OAAO,iBAAiB5oB,EAAM,MAAM,EAAE;AAC7F,QAAM6oB,IAAoB,MAAM;AAv1KpC,QAAAlwB;AAw1KM,IAAA+e,EAAG,MAAK,GACR,KAAK,OAAO,oBAAoB,EAAI,IACpC/e,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe,OAAO,KACtB,KAAK,eAAe+vB,GACpB,KAAK,OAAO,IAAI,MAAM,SAASC,GAC/B,KAAK,IAAI,MAAM,SAASC,GACxB7rB,EAAA,MAAKonB,GAAAQ,IAAL;AAAA,EACF;AACA,SAAO,iBAAiB,aAAakE,GAAmB;AAAA,IACtD,QAAAtd;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,QAAQsd,GAAmB;AAAA,IACjD,QAAAtd;AAAA,EACN,CAAK;AACH,GACAmZ,KAAO,SAACroB,GAAGC,GAAGoG,GAAOC,GAAQ;AAC3B,OAAK,QAAQD,GACb,KAAK,SAASC,GACd,KAAK,IAAItG,GACT,KAAK,IAAIC,GACT,KAAK,QAAO,GACZ,KAAK,kBAAiB,GACtB,KAAK,WAAU;AACjB,GAEAqoB,KAAqB,WAAG;AACtB,MAAI,CAAC/f,EAAA,MAAKue;AACR;AAEF,QAAM;AAAA,IACJ,QAAAjH;AAAA,IACA,QAAAC;AAAA,IACA,YAAA2M;AAAA,IACA,aAAAC;AAAA,EACN,IAAQnkB,EAAA,MAAKue;AACT,EAAAte,EAAA,MAAKse,IAAmB;AACxB,QAAMpH,IAAO,KAAK,GACZC,IAAO,KAAK,GACZgN,IAAW,KAAK,OAChBC,IAAY,KAAK;AACvB,EAAIlN,MAASG,KAAUF,MAASG,KAAU6M,MAAaF,KAAcG,MAAcF,KAGnF,KAAK,YAAY;AAAA,IACf,KAAKhsB,EAAA,MAAKonB,GAAAO,IAAQ,KAAK,MAAM3I,GAAMC,GAAMgN,GAAUC,CAAS;AAAA,IAC5D,MAAMlsB,EAAA,MAAKonB,GAAAO,IAAQ,KAAK,MAAMxI,GAAQC,GAAQ2M,GAAYC,CAAW;AAAA,IACrE,UAAU;AAAA,EAChB,CAAK;AACH,GAIAnE,KAAmB,SAAC7tB,GAAMiJ,GAAO;AAC/B,QAAM,CAACuc,GAAaC,CAAY,IAAI,KAAK,kBACnCN,IAAS,KAAK,GACdC,IAAS,KAAK,GACd2M,IAAa,KAAK,OAClBC,IAAc,KAAK,QACnBG,IAAW1D,EAAiB,WAAWjJ,GACvC4M,IAAY3D,EAAiB,WAAWhJ,GACxC4M,IAAiBrsB,EAAA,MAAKonB,GAAAI,IAAL,WAAwB,KAAK,WAC9C8E,IAAS,CAAChtB,GAAGC,MAAM,CAAC8sB,EAAe,CAAC,IAAI/sB,IAAI+sB,EAAe,CAAC,IAAI9sB,GAAG8sB,EAAe,CAAC,IAAI/sB,IAAI+sB,EAAe,CAAC,IAAI9sB,CAAC,GAChHgtB,IAAoBvsB,EAAA,MAAKonB,GAAAI,IAAL,WAAwB,MAAM,KAAK,WACvDgF,IAAY,CAACltB,GAAGC,MAAM,CAACgtB,EAAkB,CAAC,IAAIjtB,IAAIitB,EAAkB,CAAC,IAAIhtB,GAAGgtB,EAAkB,CAAC,IAAIjtB,IAAIitB,EAAkB,CAAC,IAAIhtB,CAAC;AACrI,MAAIktB,GACAC,GACAC,IAAa,IACbC,IAAe;AACnB,UAAQ5yB,GAAI;AAAA,IACV,KAAK;AACH,MAAA2yB,IAAa,IACbF,IAAW,CAAC3iB,GAAGC,MAAM,CAAC,GAAG,CAAC,GAC1B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAACD,GAAGC,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,MAAA0iB,IAAW,CAAC3iB,GAAGC,MAAM,CAACD,IAAI,GAAG,CAAC,GAC9B4iB,IAAc,CAAC5iB,GAAGC,MAAM,CAACD,IAAI,GAAGC,CAAC;AACjC;AAAA,IACF,KAAK;AACH,MAAA4iB,IAAa,IACbF,IAAW,CAAC3iB,GAAGC,MAAM,CAACD,GAAG,CAAC,GAC1B4iB,IAAc,CAAC5iB,GAAGC,MAAM,CAAC,GAAGA,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,MAAA6iB,IAAe,IACfH,IAAW,CAAC3iB,GAAGC,MAAM,CAACD,GAAGC,IAAI,CAAC,GAC9B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAAC,GAAGA,IAAI,CAAC;AACjC;AAAA,IACF,KAAK;AACH,MAAA4iB,IAAa,IACbF,IAAW,CAAC3iB,GAAGC,MAAM,CAACD,GAAGC,CAAC,GAC1B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAAC,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,MAAA0iB,IAAW,CAAC3iB,GAAGC,MAAM,CAACD,IAAI,GAAGC,CAAC,GAC9B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAACD,IAAI,GAAG,CAAC;AACjC;AAAA,IACF,KAAK;AACH,MAAA6iB,IAAa,IACbF,IAAW,CAAC3iB,GAAGC,MAAM,CAAC,GAAGA,CAAC,GAC1B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAACD,GAAG,CAAC;AAC7B;AAAA,IACF,KAAK;AACH,MAAA8iB,IAAe,IACfH,IAAW,CAAC3iB,GAAGC,MAAM,CAAC,GAAGA,IAAI,CAAC,GAC9B2iB,IAAc,CAAC5iB,GAAGC,MAAM,CAACD,GAAGC,IAAI,CAAC;AACjC;AAAA,EACR;AACI,QAAM8iB,IAAQJ,EAASV,GAAYC,CAAW,GACxCc,IAAgBJ,EAAYX,GAAYC,CAAW;AACzD,MAAIe,IAAsBT,EAAO,GAAGQ,CAAa;AACjD,QAAME,IAAYvE,EAAiB,OAAOtJ,IAAS4N,EAAoB,CAAC,CAAC,GACnEE,IAAYxE,EAAiB,OAAOrJ,IAAS2N,EAAoB,CAAC,CAAC;AACzE,MAAIG,IAAS,GACTC,IAAS,GACTC,GAAQC;AACZ,MAAKpqB,EAAM;AAUT,KAAC;AAAA,MACC,QAAAmqB;AAAA,MACA,QAAAC;AAAA,IACR,IAAUpqB;AAAA,OAbmB;AACvB,UAAM;AAAA,MACJ,SAAAqqB;AAAA,MACA,SAAAC;AAAA,IACR,IAAUtqB,GACE,CAACuqB,IAAaC,EAAW,IAAI5lB,EAAA,MAAKse;AACxC,KAACiH,GAAQC,CAAM,IAAI,KAAK,wBAAwBC,IAAUE,IAAaD,IAAUE,EAAW,GAC5F5lB,EAAA,MAAKse,IAAmB,CAAC,IAAImH,GAC7BzlB,EAAA,MAAKse,IAAmB,CAAC,IAAIoH;AAAA,EAC/B;AAOA,MADA,CAACH,GAAQC,CAAM,IAAIb,EAAUY,IAAS5N,GAAa6N,IAAS5N,CAAY,GACpEkN,GAAY;AACd,UAAMe,IAAU,KAAK,MAAM3B,GAAYC,CAAW;AAClD,IAAAkB,IAASC,IAAS,KAAK,IAAI,KAAK,IAAI,KAAK,MAAML,EAAc,CAAC,IAAID,EAAM,CAAC,IAAIO,GAAQN,EAAc,CAAC,IAAID,EAAM,CAAC,IAAIQ,CAAM,IAAIK,GAAS,IAAI3B,GAAY,IAAIC,CAAW,GAAGG,IAAWJ,GAAYK,IAAYJ,CAAW;AAAA,EACxN,MAAO,CAAIY,IACTM,IAASxrB,GAAU,KAAK,IAAIorB,EAAc,CAAC,IAAID,EAAM,CAAC,IAAIO,CAAM,GAAGjB,GAAU,CAAC,IAAIJ,IAElFoB,IAASzrB,GAAU,KAAK,IAAIorB,EAAc,CAAC,IAAID,EAAM,CAAC,IAAIQ,CAAM,GAAGjB,GAAW,CAAC,IAAIJ;AAErF,QAAMC,IAAWxD,EAAiB,OAAOsD,IAAamB,CAAM,GACtDhB,IAAYzD,EAAiB,OAAOuD,IAAcmB,CAAM;AAC9D,EAAAJ,IAAsBT,EAAO,GAAGI,EAAYT,GAAUC,CAAS,CAAC;AAChE,QAAMlN,IAAOgO,IAAYD,EAAoB,CAAC,GACxC9N,IAAOgO,IAAYF,EAAoB,CAAC;AAC9C,EAAAllB,EAAA,MAAK4e,OAAL3e,EAAA,MAAK2e,IAAiB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,IAC9D,KAAK,QAAQwF,GACb,KAAK,SAASC,GACd,KAAK,IAAIlN,GACT,KAAK,IAAIC,GACT,KAAK,QAAO,GACZ,KAAK,kBAAiB,GACtB,KAAK,YAAW;AAClB,GAyPA6I,KAAwB,WAAG;AA1uL7B,MAAAlsB;AA2uLI,EAAAkM,EAAA,MAAKse,IAAmB;AAAA,IACtB,QAAQ,KAAK;AAAA,IACb,QAAQ,KAAK;AAAA,IACb,YAAY,KAAK;AAAA,IACjB,aAAa,KAAK;AAAA,EACxB,KACIxqB,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe,OAAO,KACtB,KAAK,OAAO,oBAAoB,EAAK;AACvC,GACAmsB,KAAmB,SAAC4F,GAASC,GAAcnI,GAAU;AAEnD,MAAIoI,IAAS,OAAkBpI,IAAWmI,KAAgB,IAAI;AAC9D,MAAIC,MAAW;AACb;AAEF,QAAMxB,IAAiBrsB,EAAA,MAAKonB,GAAAI,IAAL,WAAwB,KAAK,WAC9C8E,IAAS,CAAChtB,GAAGC,MAAM,CAAC8sB,EAAe,CAAC,IAAI/sB,IAAI+sB,EAAe,CAAC,IAAI9sB,GAAG8sB,EAAe,CAAC,IAAI/sB,IAAI+sB,EAAe,CAAC,IAAI9sB,CAAC,GAChH,CAACigB,GAAaC,CAAY,IAAI,KAAK,kBACnCN,IAAS,KAAK,GACdC,IAAS,KAAK,GACd2M,IAAa,KAAK,OAClBC,IAAc,KAAK,QACnBG,IAAW1D,EAAiB,WAAWjJ,GACvC4M,IAAY3D,EAAiB,WAAWhJ;AAC9C,EAAAoO,IAAS,KAAK,IAAI,KAAK,IAAIA,GAAQ,IAAI9B,GAAY,IAAIC,CAAW,GAAGG,IAAWJ,GAAYK,IAAYJ,CAAW;AACnH,QAAMC,IAAWxD,EAAiB,OAAOsD,IAAa8B,CAAM,GACtD3B,IAAYzD,EAAiB,OAAOuD,IAAc6B,CAAM;AAC9D,MAAI5B,MAAaF,KAAcG,MAAcF;AAC3C;AAEF,EAAAnkB,EAAA,MAAK4e,OAAL3e,EAAA,MAAK2e,IAAiB,CAACtH,GAAQC,GAAQ2M,GAAYC,CAAW;AAC9D,QAAM8B,IAAoBxB,EAAOP,IAAa,GAAGC,IAAc,CAAC,GAC1D7mB,IAAUsjB,EAAiB,OAAOtJ,IAAS2O,EAAkB,CAAC,CAAC,GAC/D1oB,IAAUqjB,EAAiB,OAAOrJ,IAAS0O,EAAkB,CAAC,CAAC,GAC/DC,IAAuBzB,EAAOL,IAAW,GAAGC,IAAY,CAAC;AAC/D,OAAK,IAAI/mB,IAAU4oB,EAAqB,CAAC,GACzC,KAAK,IAAI3oB,IAAU2oB,EAAqB,CAAC,GACzC,KAAK,QAAQ9B,GACb,KAAK,SAASC,GACd,KAAK,QAAO,GACZ,KAAK,kBAAiB,GACtB,KAAK,YAAW;AAClB,GACAlE,KAAsB,WAAG;AAtxL3B,MAAApsB;AAuxLI,GAAAA,IAAAiM,EAAA,MAAK4F,QAAL,QAAA7R,EAAe,OAAO,KACtB,KAAK,OAAO,oBAAoB,EAAI,GACpCoE,EAAA,MAAKonB,GAAAQ,IAAL;AACF,GAgBAK,KAAqB,SAAChlB,GAAO;AAC3B,QAAM;AAAA,IACJ,OAAA4Q;AAAA,EACN,IAAQpY,GAAiB;AACrB,EAAIwH,EAAM,WAAW,CAAC4Q,KAAS5Q,EAAM,YAAYA,EAAM,WAAW4Q,IAChE,KAAK,OAAO,eAAe,IAAI,IAE/B,KAAK,OAAO,YAAY,IAAI;AAEhC,GACAqU,KAAiB,SAACjlB,GAAO;AACvB,QAAM;AAAA,IACJ,YAAAqY;AAAA,EACN,IAAQ;AACJ,OAAK,WAAW,iBAAgB;AAChC,MAAI0S,IAAqB;AACzB,QAAMrT,IAAK,IAAI,gBAAe,GACxBnM,IAAS,KAAK,WAAW,eAAemM,CAAE,GAC1C2J,IAAO;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAA9V;AAAA,EACN,GACUyf,IAAa,CAAA1mB,MAAK;AACtB,IAAAoT,EAAG,MAAK,GACR7S,EAAA,MAAKke,IAAiB,OACtBle,EAAA,MAAK0e,IAAkB,KAClB,KAAK,WAAW,oBACnBxmB,EAAA,MAAKonB,GAAAa,IAAL,WAA2B1gB,IAEzBymB,KACF,KAAK,gBAAe;AAAA,EAExB;AACA,EAAI1S,MACFxT,EAAA,MAAKgf,IAAa7jB,EAAM,UACxB6E,EAAA,MAAKif,IAAa9jB,EAAM,UACxB6E,EAAA,MAAKke,IAAiB/iB,EAAM,YAC5B6E,EAAA,MAAKme,IAAmBhjB,EAAM,cAC9B,OAAO,iBAAiB,eAAe,CAAAsE,MAAK;AAC1C,IAAKymB,MACHA,IAAqB,IACrB,KAAK,WAAW,cAAc,MAAM,IAAM,EAAK,GAC/C,KAAK,iBAAgB;AAEvB,UAAM;AAAA,MACJ,SAAS1uB;AAAA,MACT,SAASC;AAAA,MACT,WAAAuR;AAAA,IACV,IAAYvJ;AACJ,QAAIuJ,MAAcjJ,EAAA,MAAKme,KAAgB;AACrC,MAAAxe,GAAUD,CAAC;AACX;AAAA,IACF;AACA,UAAM,CAAC+X,GAAIC,CAAE,IAAI,KAAK,wBAAwBjgB,IAAIuI,EAAA,MAAKif,KAAYvnB,IAAIsI,EAAA,MAAKkf,GAAU;AACtF,IAAAjf,EAAA,MAAKgf,IAAaxnB,IAClBwI,EAAA,MAAKif,IAAaxnB,IAClB,KAAK,WAAW,oBAAoB+f,GAAIC,CAAE;AAAA,EAC5C,GAAG+E,CAAI,GACP,OAAO,iBAAiB,aAAa9c,IAAW8c,CAAI,GACpD,OAAO,iBAAiB,eAAe,CAAA/c,MAAK;AAC1C,IAAIA,EAAE,gBAAgBM,EAAA,MAAKoe,QACrBpe,EAAA,MAAKof,OAAiB1f,EAAE,cAC1B0mB,EAAW1mB,CAAC,GAGhBC,GAAUD,CAAC;AAAA,EACb,GAAG+c,CAAI;AAET,QAAMwH,IAAoB,CAAAvkB,MAAK;AAC7B,QAAI,CAACM,EAAA,MAAKme,OAAkBne,EAAA,MAAKme,QAAmBze,EAAE,WAAW;AAC/D,MAAA0mB,EAAW1mB,CAAC;AACZ;AAAA,IACF;AACA,IAAAC,GAAUD,CAAC;AAAA,EACb;AACA,SAAO,iBAAiB,aAAaukB,GAAmB;AAAA,IACtD,QAAAtd;AAAA,EACN,CAAK,GACD,OAAO,iBAAiB,QAAQsd,GAAmB;AAAA,IACjD,QAAAtd;AAAA,EACN,CAAK;AACH,GA4IA2Z,KAAkB,WAAG;AACnB,MAAItgB,EAAA,MAAKye,OAAY,CAAC,KAAK;AACzB;AAEF,EAAAxe,EAAA,MAAKwe,IAAW,IAAI,gBAAe;AACnC,QAAM9X,IAAS,KAAK,WAAW,eAAe3G,EAAA,MAAKye,GAAQ;AAC3D,OAAK,IAAI,iBAAiB,WAAW,KAAK,QAAQ,KAAK,IAAI,GAAG;AAAA,IAC5D,QAAA9X;AAAA,EACN,CAAK,GACD,KAAK,IAAI,iBAAiB,YAAY,KAAK,SAAS,KAAK,IAAI,GAAG;AAAA,IAC9D,QAAAA;AAAA,EACN,CAAK;AACH,GA0LA4Z,KAAe,SAACnlB,GAAO;AACrB,EAAAwlB,EAAiB,wBAAwB,KAAK,MAAMxlB,CAAK;AAC3D,GACAolB,KAAY,SAACplB,GAAO;AAjtMtB,MAAArH;AAktMI,EAAIiM,EAAA,MAAK+e,SAAgChrB,IAAAqH,EAAM,kBAAN,gBAAArH,EAAqB,gBAAeiM,EAAA,MAAKqe,OAChFlmB,EAAA,MAAKonB,GAAAoB,IAAL;AAEJ,GACAF,KAAa,SAACtuB,GAAM;AAClB,EAAA8N,EAAA,MAAKye,IAAsB1e,EAAA,MAAK+e,MAA+B5sB,IAAO;AACxE,GACAuuB,KAAmB,SAAC3uB,GAAO;AACzB,MAAKiO,EAAA,MAAKie;AAGV,eAAWxc,KAAOzB,EAAA,MAAKie;AACrB,MAAAxc,EAAI,WAAW1P;AAEnB,GAWA4uB,KAAa,WAAG;AACd,EAAA1gB,EAAA,MAAK8e,IAA+B,KACpC5mB,EAAA,MAAKonB,GAAAmB,IAAL,WAAyB,KACzBvoB,EAAA,MAAKonB,GAAAQ,IAAL;AACF,GA35CFrnB,EAAMkoB,GAANnB,KAiCEnjB,EAjCIskB,GAiCG,SAAQ,OACftkB,EAlCIskB,GAkCG,gBAAe,OAGtBtkB,EArCIskB,GAqCG,oBAAmB,KAC1BtkB,EAtCIskB,GAsCG,iBAAgB,IAAIpU,GAAY,IACvClQ,EAvCIskB,GAuCG,WAAU,IACjBtkB,EAxCIskB,GAwCG,qBAAoB;AAxC7B,IAAMyF,KAANzF;AAkmDA,MAAMK,WAAmBoF,GAAiB;AAAA,EACxC,YAAY1P,GAAQ;AAClB,UAAMA,CAAM,GACZ,KAAK,sBAAsBA,EAAO,qBAClC,KAAK,UAAU;AAAA,EACjB;AAAA,EACA,YAAY;AACV,WAAO,KAAK,iBAAgB;AAAA,EAC9B;AACF;AAGA,MAAM2P,KAAO,YACPC,KAAY,YACZC,KAAW;AACjB,MAAMC,GAAe;AAAA,EACnB,YAAYC,GAAM;AAChB,SAAK,KAAKA,IAAOA,IAAO,aAAaJ,IACrC,KAAK,KAAKI,IAAOA,IAAO,aAAaJ;AAAA,EACvC;AAAA,EACA,OAAOvmB,GAAO;AACZ,QAAIuF,GAAMtS;AACV,QAAI,OAAO+M,KAAU,UAAU;AAC7B,MAAAuF,IAAO,IAAI,WAAWvF,EAAM,SAAS,CAAC,GACtC/M,IAAS;AACT,eAASG,IAAI,GAAGmL,IAAKyB,EAAM,QAAQ5M,IAAImL,GAAInL,KAAK;AAC9C,cAAMd,IAAO0N,EAAM,WAAW5M,CAAC;AAC/B,QAAId,KAAQ,MACViT,EAAKtS,GAAQ,IAAIX,KAEjBiT,EAAKtS,GAAQ,IAAIX,MAAS,GAC1BiT,EAAKtS,GAAQ,IAAIX,IAAO;AAAA,MAE5B;AAAA,IACF,WAAW,YAAY,OAAO0N,CAAK;AACjC,MAAAuF,IAAOvF,EAAM,MAAK,GAClB/M,IAASsS,EAAK;AAAA;AAEd,YAAM,IAAI,MAAM,sDAAsD;AAExE,UAAMqhB,IAAc3zB,KAAU,GACxB4zB,IAAa5zB,IAAS2zB,IAAc,GACpCE,IAAa,IAAI,YAAYvhB,EAAK,QAAQ,GAAGqhB,CAAW;AAC9D,QAAIG,IAAK,GACPC,IAAK,GACHC,IAAK,KAAK,IACZC,IAAK,KAAK;AACZ,UAAMC,IAAK,YACTC,IAAK,WACDC,IAASF,IAAKV,IAClBa,IAASF,IAAKX;AAChB,aAASrzB,IAAI,GAAGA,IAAIwzB,GAAaxzB;AAC/B,MAAIA,IAAI,KACN2zB,IAAKD,EAAW1zB,CAAC,GACjB2zB,IAAKA,IAAKI,IAAKX,KAAYO,IAAKM,IAASZ,IACzCM,IAAKA,KAAM,KAAKA,MAAO,IACvBA,IAAKA,IAAKK,IAAKZ,KAAYO,IAAKO,IAASb,IACzCQ,KAAMF,GACNE,IAAKA,KAAM,KAAKA,MAAO,IACvBA,IAAKA,IAAK,IAAI,eAEdD,IAAKF,EAAW1zB,CAAC,GACjB4zB,IAAKA,IAAKG,IAAKX,KAAYQ,IAAKK,IAASZ,IACzCO,IAAKA,KAAM,KAAKA,MAAO,IACvBA,IAAKA,IAAKI,IAAKZ,KAAYQ,IAAKM,IAASb,IACzCS,KAAMF,GACNE,IAAKA,KAAM,KAAKA,MAAO,IACvBA,IAAKA,IAAK,IAAI;AAIlB,YADAH,IAAK,GACGF,GAAU;AAAA,MAChB,KAAK;AACH,QAAAE,KAAMxhB,EAAKqhB,IAAc,IAAI,CAAC,KAAK;AAAA,MACrC,KAAK;AACH,QAAAG,KAAMxhB,EAAKqhB,IAAc,IAAI,CAAC,KAAK;AAAA,MACrC,KAAK;AACH,QAAAG,KAAMxhB,EAAKqhB,IAAc,CAAC,GAC1BG,IAAKA,IAAKI,IAAKX,KAAYO,IAAKM,IAASZ,IACzCM,IAAKA,KAAM,KAAKA,MAAO,IACvBA,IAAKA,IAAKK,IAAKZ,KAAYO,IAAKO,IAASb,IACrCG,IAAc,IAChBK,KAAMF,IAENG,KAAMH;AAAA,IAEhB;AACI,SAAK,KAAKE,GACV,KAAK,KAAKC;AAAA,EACZ;AAAA,EACA,YAAY;AACV,QAAID,IAAK,KAAK,IACZC,IAAK,KAAK;AACZ,WAAAD,KAAMC,MAAO,GACbD,IAAKA,IAAK,aAAaT,KAAYS,IAAK,QAASR,IACjDS,IAAKA,IAAK,aAAaV,OAAcU,KAAM,KAAKD,MAAO,MAAM,aAAaT,QAAe,IACzFS,KAAMC,MAAO,GACbD,IAAKA,IAAK,YAAaT,KAAYS,IAAK,QAASR,IACjDS,IAAKA,IAAK,aAAaV,OAAcU,KAAM,KAAKD,MAAO,MAAM,aAAaT,QAAe,IACzFS,KAAMC,MAAO,IACLD,MAAO,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,KAAKC,MAAO,GAAG,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EAC3F;AACF;AAMA,MAAMK,KAAoB,OAAO,OAAO;AAAA,EACtC,KAAK;AAAA,EACL,MAAM;AAAA,EACN,UAAU;AACZ,CAAC;AAtiND,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAuiNA,MAAMC,GAAkB;AAAA,EAKtB,cAAc;AALhB,IAAAnvB,EAAA,MAAAivB;AACE,IAAAjvB,EAAA,MAAA6uB,IAAY;AACZ,IAAA7uB,EAAA,MAAA8uB,IAAe;AACf,IAAA9uB,EAAA,MAAA+uB,IAAc;AACd,IAAA/uB,EAAA,MAAAgvB,IAAW,oBAAI,IAAG;AAEhB,SAAK,gBAAgB,MACrB,KAAK,kBAAkB,MACvB,KAAK,qBAAqB;AAAA,EAC5B;AAAA,EACA,SAASjsB,GAAKqsB,GAAc;AAC1B,UAAM/1B,IAAQiO,EAAA,MAAK0nB,IAAS,IAAIjsB,CAAG;AACnC,WAAI1J,MAAU,SACL+1B,IAEF,OAAO,OAAOA,GAAc/1B,CAAK;AAAA,EAC1C;AAAA,EACA,YAAY0J,GAAK;AACf,WAAOuE,EAAA,MAAK0nB,IAAS,IAAIjsB,CAAG;AAAA,EAC9B;AAAA,EACA,OAAOA,GAAK;AACV,UAAMkZ,IAAc3U,EAAA,MAAK0nB,IAAS,IAAIjsB,CAAG;AACzC,QAAIkZ,MAAgB,WAGhBA,aAAuB0R,MACzBrmB,EAAA,MAAKynB,IAAY,OAAO9S,EAAY,mBAAmB,GAEzD3U,EAAA,MAAK0nB,IAAS,OAAOjsB,CAAG,GACpBuE,EAAA,MAAK0nB,IAAS,SAAS,KACzB,KAAK,cAAa,GAEhB,OAAO,KAAK,sBAAuB,aAAY;AACjD,iBAAW31B,KAASiO,EAAA,MAAK0nB,IAAS,OAAM;AACtC,YAAI31B,aAAiBs0B;AACnB;AAGJ,WAAK,mBAAmB,IAAI;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,SAAS5qB,GAAK1J,GAAO;AACnB,UAAMF,IAAMmO,EAAA,MAAK0nB,IAAS,IAAIjsB,CAAG;AACjC,QAAIssB,IAAW;AACf,QAAIl2B,MAAQ;AACV,iBAAW,CAACm2B,GAAOC,CAAG,KAAK,OAAO,QAAQl2B,CAAK;AAC7C,QAAIF,EAAIm2B,CAAK,MAAMC,MACjBF,IAAW,IACXl2B,EAAIm2B,CAAK,IAAIC;AAAA;AAIjB,MAAAF,IAAW,IACX/nB,EAAA,MAAK0nB,IAAS,IAAIjsB,GAAK1J,CAAK;AAE9B,IAAIg2B,KACF5vB,EAAA,MAAKwvB,IAAAC,IAAL,YAEE71B,aAAiBs0B,QAClBrmB,EAAA,MAAKynB,OAALxnB,EAAA,MAAKwnB,IAAgB,oBAAI,IAAG,IAAI,IAAI11B,EAAM,qBAAqBA,CAAK,GACjE,OAAO,KAAK,sBAAuB,cACrC,KAAK,mBAAmBA,EAAM,YAAY,KAAK;AAAA,EAGrD;AAAA,EACA,IAAI0J,GAAK;AACP,WAAOuE,EAAA,MAAK0nB,IAAS,IAAIjsB,CAAG;AAAA,EAC9B;AAAA,EACA,IAAI,OAAO;AACT,WAAOuE,EAAA,MAAK0nB,IAAS;AAAA,EACvB;AAAA,EASA,gBAAgB;AACd,IAAI1nB,EAAA,MAAKunB,QACPtnB,EAAA,MAAKsnB,IAAY,KACb,OAAO,KAAK,mBAAoB,cAClC,KAAK,gBAAe;AAAA,EAG1B;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,IAAIW,GAAuB,IAAI;AAAA,EACxC;AAAA,EACA,IAAI,eAAe;AACjB,QAAIloB,EAAA,MAAK0nB,IAAS,SAAS;AACzB,aAAOJ;AAET,UAAMtU,IAAM,oBAAI,IAAG,GACjBvhB,IAAO,IAAIg1B,GAAc,GACzB0B,IAAW,CAAA,GACPlF,IAAU,uBAAO,OAAO,IAAI;AAClC,QAAImF,IAAY;AAChB,eAAW,CAAC3sB,GAAKwsB,CAAG,KAAKjoB,EAAA,MAAK0nB,KAAU;AACtC,YAAMxS,IAAa+S,aAAe5B,KAAmB4B,EAAI,UAAU,IAAOhF,CAAO,IAAIgF;AACrF,MAAI/S,MACFlC,EAAI,IAAIvX,GAAKyZ,CAAU,GACvBzjB,EAAK,OAAO,GAAGgK,CAAG,IAAI,KAAK,UAAUyZ,CAAU,CAAC,EAAE,GAClDkT,UAAc,CAAC,CAAClT,EAAW;AAAA,IAE/B;AACA,QAAIkT;AACF,iBAAWr2B,KAASihB,EAAI;AACtB,QAAIjhB,EAAM,UACRo2B,EAAS,KAAKp2B,EAAM,MAAM;AAIhC,WAAOihB,EAAI,OAAO,IAAI;AAAA,MACpB,KAAAA;AAAA,MACA,MAAMvhB,EAAK,UAAS;AAAA,MACpB,UAAA02B;AAAA,IACN,IAAQb;AAAA,EACN;AAAA,EACA,IAAI,cAAc;AAChB,QAAIe,IAAQ;AACZ,UAAMC,IAAe,oBAAI,IAAG;AAC5B,QAAIC,IAAyB,GACzBC,IAA0B;AAC9B,eAAWz2B,KAASiO,EAAA,MAAK0nB,IAAS,OAAM,GAAI;AAC1C,UAAI,EAAE31B,aAAiBs0B,KAAmB;AACxC,QAAIt0B,EAAM,UACJA,EAAM,MAAM,UACdy2B,KAA2B,IAE3BD,KAA0B;AAG9B;AAAA,MACF;AACA,MAAIx2B,EAAM,mBACRy2B,KAA2B,IAClBz2B,EAAM,qBACfw2B,KAA0B;AAE5B,YAAME,IAAc12B,EAAM;AAC1B,UAAI,CAAC02B;AACH;AAEF,YAAM;AAAA,QACJ,MAAAhsB;AAAA,MACR,IAAUgsB;AACJ,MAAKH,EAAa,IAAI7rB,CAAI,KACxB6rB,EAAa,IAAI7rB,GAAM,OAAO,eAAe1K,CAAK,EAAE,WAAW,GAEjEs2B,UAAU,uBAAO,OAAO,IAAI;AAC5B,YAAMrV,IAAMqV,EAAA5rB,OAAA4rB,EAAA5rB,KAAgB,oBAAI,IAAG;AACnC,iBAAW,CAAChB,GAAKwsB,CAAG,KAAK,OAAO,QAAQQ,CAAW,GAAG;AACpD,YAAIhtB,MAAQ;AACV;AAEF,YAAIitB,IAAW1V,EAAI,IAAIvX,CAAG;AAC1B,QAAKitB,MACHA,IAAW,oBAAI,IAAG,GAClB1V,EAAI,IAAIvX,GAAKitB,CAAQ;AAEvB,cAAMC,IAAQD,EAAS,IAAIT,CAAG,KAAK;AACnC,QAAAS,EAAS,IAAIT,GAAKU,IAAQ,CAAC;AAAA,MAC7B;AAAA,IACF;AAQA,SAPIH,IAA0B,KAAKD,IAAyB,OAC1DF,UAAU,uBAAO,OAAO,IAAI,IAC5BA,EAAM,WAAW;AAAA,MACf,SAASG;AAAA,MACT,QAAQD;AAAA,IAChB,IAEQ,CAACF;AACH,aAAO;AAET,eAAW,CAAC5rB,GAAMgK,CAAM,KAAK6hB;AAC3B,MAAAD,EAAM5rB,CAAI,IAAIgK,EAAO,0BAA0B4hB,EAAM5rB,CAAI,CAAC;AAE5D,WAAO4rB;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,IAAApoB,EAAA,MAAKunB,IAAe;AAAA,EACtB;AAAA,EACA,aAAa9S,GAAcpP,GAAM;AA/tNnC,QAAAvR;AAguNI,UAAMhC,KAAQgC,IAAAiM,EAAA,MAAKynB,QAAL,gBAAA1zB,EAAkB,IAAI2gB;AACpC,WAAI3iB,KACFA,EAAM,0BAA0BuT,CAAI,GAC7B,MAEF;AAAA,EACT;AAAA,EACA,UAAUoP,GAAc;AAvuN1B,QAAA3gB;AAwuNI,aAAOA,IAAAiM,EAAA,MAAKynB,QAAL,gBAAA1zB,EAAkB,IAAI2gB,OAAiB;AAAA,EAChD;AAAA,EACA,IAAI,cAAc;AAChB,QAAI1U,EAAA,MAAKwnB;AACP,aAAOxnB,EAAA,MAAKwnB;AAEd,UAAMoB,IAAM,CAAA;AACZ,QAAI5oB,EAAA,MAAKynB;AACP,iBAAW11B,KAASiO,EAAA,MAAKynB,IAAY,OAAM;AACzC,QAAK11B,EAAM,eAGX62B,EAAI,KAAK72B,EAAM,mBAAmB;AAGtC,WAAOkO,EAAA,MAAKunB,IAAe;AAAA,MACzB,KAAK,IAAI,IAAIoB,CAAG;AAAA,MAChB,MAAMA,EAAI,KAAK,GAAG;AAAA,IACxB;AAAA,EACE;AAAA,EACA,CAAC,OAAO,QAAQ,IAAI;AAClB,WAAO5oB,EAAA,MAAK0nB,IAAS,QAAO;AAAA,EAC9B;AACF;AAvNEH,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAJFC,KAAA,eAuEEC,KAAY,WAAG;AACb,EAAK5nB,EAAA,MAAKunB,QACRtnB,EAAA,MAAKsnB,IAAY,KACb,OAAO,KAAK,iBAAkB,cAChC,KAAK,cAAa;AAGxB;AArnNF,IAAAsB;AAgwNA,MAAMX,WAA+BL,GAAkB;AAAA,EAErD,YAAY5rB,GAAQ;AAClB,UAAK;AAFP,IAAAvD,EAAA,MAAAmwB;AAGE,UAAM;AAAA,MACJ,KAAA7V;AAAA,MACA,MAAAvhB;AAAA,MACA,UAAA02B;AAAA,IACN,IAAQlsB,EAAO,cACL6sB,IAAQ,gBAAgB9V,GAAKmV,IAAW;AAAA,MAC5C,UAAAA;AAAA,IACN,IAAQ,IAAI;AACR,IAAAloB,EAAA,MAAK4oB,IAAgB;AAAA,MACnB,KAAKC;AAAA,MACL,MAAAr3B;AAAA,MACA,UAAA02B;AAAA,IACN;AAAA,EACE;AAAA,EACA,IAAI,QAAQ;AACV,IAAAt3B,GAAY,8CAA8C;AAAA,EAC5D;AAAA,EACA,IAAI,eAAe;AACjB,WAAOmP,EAAA,MAAK6oB;AAAA,EACd;AAAA,EACA,IAAI,cAAc;AAChB,WAAOj3B,EAAO,MAAM,eAAe;AAAA,MACjC,KAAK,oBAAI,IAAG;AAAA,MACZ,MAAM;AAAA,IACZ,CAAK;AAAA,EACH;AACF;AA7BEi3B,KAAA;AAjwNF,IAAAE;AAmyNA,MAAMC,GAAW;AAAA,EAEf,YAAY;AAAA,IACV,eAAAC,IAAgB,WAAW;AAAA,IAC3B,cAAAC,IAAe;AAAA,EACnB,GAAK;AAJH,IAAAxwB,EAAA,MAAAqwB,IAAe,oBAAI,IAAG;AAKpB,SAAK,YAAYE,GACjB,KAAK,kBAAkB,oBAAI,IAAG,GAC9B,KAAK,eAAe,MACpB,KAAK,kBAAkB,CAAA,GACvB,KAAK,iBAAiB;AAAA,EACxB;AAAA,EACA,kBAAkBE,GAAgB;AAChC,SAAK,gBAAgB,IAAIA,CAAc,GACvC,KAAK,UAAU,MAAM,IAAIA,CAAc;AAAA,EACzC;AAAA,EACA,qBAAqBA,GAAgB;AACnC,SAAK,gBAAgB,OAAOA,CAAc,GAC1C,KAAK,UAAU,MAAM,OAAOA,CAAc;AAAA,EAC5C;AAAA,EACA,WAAWC,GAAM;AACf,IAAK,KAAK,iBACR,KAAK,eAAe,KAAK,UAAU,cAAc,OAAO,GACxD,KAAK,UAAU,gBAAgB,qBAAqB,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,YAAY;AAEzF,UAAMC,IAAa,KAAK,aAAa;AACrC,IAAAA,EAAW,WAAWD,GAAMC,EAAW,SAAS,MAAM;AAAA,EACxD;AAAA,EACA,QAAQ;AACN,eAAWF,KAAkB,KAAK;AAChC,WAAK,UAAU,MAAM,OAAOA,CAAc;AAE5C,SAAK,gBAAgB,MAAK,GAC1BnpB,EAAA,MAAK+oB,IAAa,MAAK,GACnB,KAAK,iBACP,KAAK,aAAa,OAAM,GACxB,KAAK,eAAe;AAAA,EAExB;AAAA,EACA,MAAM,eAAe;AAAA,IACnB,gBAAgBr4B;AAAA,IAChB,iBAAA44B;AAAA,IACA,cAAAC;AAAA,EACJ,GAAK;AACD,QAAI,GAAC74B,KAAQsP,EAAA,MAAK+oB,IAAa,IAAIr4B,EAAK,UAAU,IAIlD;AAAA,UADAI,GAAO,CAACw4B,GAAiB,mEAAmE,GACxF,KAAK,2BAA2B;AAClC,cAAM;AAAA,UACJ,YAAAE;AAAA,UACA,KAAAC;AAAA,UACA,OAAA1nB;AAAA,QACR,IAAUrR,GACEg5B,IAAW,IAAI,SAASF,GAAYC,GAAK1nB,CAAK;AACpD,aAAK,kBAAkB2nB,CAAQ;AAC/B,YAAI;AACF,gBAAMA,EAAS,KAAI,GACnB1pB,EAAA,MAAK+oB,IAAa,IAAIS,CAAU,GAChCD,KAAA,QAAAA,EAAe74B;AAAA,QACjB,QAAQ;AACN,UAAAE,EAAK,4BAA4BF,EAAK,YAAY,sDAAsD,GACxG,KAAK,qBAAqBg5B,CAAQ;AAAA,QACpC;AACA;AAAA,MACF;AACA,MAAA74B,GAAY,+DAA+D;AAAA;AAAA,EAC7E;AAAA,EACA,MAAM,KAAK84B,GAAM;AACf,QAAIA,EAAK,YAAYA,EAAK,eAAe,CAACA,EAAK;AAC7C;AAGF,QADAA,EAAK,WAAW,IACZA,EAAK,gBAAgB;AACvB,YAAM,KAAK,eAAeA,CAAI;AAC9B;AAAA,IACF;AACA,QAAI,KAAK,2BAA2B;AAClC,YAAMR,IAAiBQ,EAAK,qBAAoB;AAChD,UAAIR,GAAgB;AAClB,aAAK,kBAAkBA,CAAc;AACrC,YAAI;AACF,gBAAMA,EAAe;AAAA,QACvB,SAAS/T,GAAI;AACX,gBAAAxkB,EAAK,wBAAwBu4B,EAAe,MAAM,OAAO/T,CAAE,IAAI,GAC/DuU,EAAK,kBAAkB,IACjBvU;AAAA,QACR;AAAA,MACF;AACA;AAAA,IACF;AACA,UAAMgU,IAAOO,EAAK,mBAAkB;AACpC,QAAIP,GAAM;AAER,UADA,KAAK,WAAWA,CAAI,GAChB,KAAK;AACP;AAEF,YAAM,IAAI,QAAQ,CAAA/uB,MAAW;AAC3B,cAAMwC,IAAU,KAAK,sBAAsBxC,CAAO;AAClD,aAAK,sBAAsBsvB,GAAM9sB,CAAO;AAAA,MAC1C,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,IAAI,4BAA4B;AA14NlC,QAAA9I;AA24NI,UAAM61B,IAAW,CAAC,GAAC71B,IAAA,KAAK,cAAL,QAAAA,EAAgB;AACnC,WAAOnC,EAAO,MAAM,6BAA6Bg4B,CAAQ;AAAA,EAC3D;AAAA,EACA,IAAI,6BAA6B;AAC/B,WAAOh4B,EAAO,MAAM,8BAA8BxC,MAAYwE,GAAiB,SAAS,SAAS;AAAA,EACnG;AAAA,EACA,sBAAsBqY,GAAU;AAC9B,aAAS4d,IAAkB;AAGzB,WAFA/4B,GAAO,CAAC+L,EAAQ,MAAM,2CAA2C,GACjEA,EAAQ,OAAO,IACRitB,EAAgB,SAAS,KAAKA,EAAgB,CAAC,EAAE,QAAM;AAC5D,cAAMC,IAAeD,EAAgB,MAAK;AAC1C,mBAAWC,EAAa,UAAU,CAAC;AAAA,MACrC;AAAA,IACF;AACA,UAAM;AAAA,MACJ,iBAAAD;AAAA,IACN,IAAQ,MACEjtB,IAAU;AAAA,MACd,MAAM;AAAA,MACN,UAAUgtB;AAAA,MACV,UAAA5d;AAAA,IACN;AACI,WAAA6d,EAAgB,KAAKjtB,CAAO,GACrBA;AAAA,EACT;AAAA,EACA,IAAI,gBAAgB;AAClB,UAAMmtB,IAAW,KAAK,09CAAmkD;AACzlD,WAAOp4B,EAAO,MAAM,iBAAiBo4B,CAAQ;AAAA,EAC/C;AAAA,EACA,sBAAsBL,GAAM9sB,GAAS;AACnC,aAASotB,EAAM3kB,GAAM4kB,GAAQ;AAC3B,aAAO5kB,EAAK,WAAW4kB,CAAM,KAAK,KAAK5kB,EAAK,WAAW4kB,IAAS,CAAC,KAAK,KAAK5kB,EAAK,WAAW4kB,IAAS,CAAC,KAAK,IAAI5kB,EAAK,WAAW4kB,IAAS,CAAC,IAAI;AAAA,IAC9I;AACA,aAASC,EAAaxmB,GAAGumB,GAAQE,GAAQC,GAAQ;AAC/C,YAAMC,IAAS3mB,EAAE,UAAU,GAAGumB,CAAM,GAC9BK,IAAS5mB,EAAE,UAAUumB,IAASE,CAAM;AAC1C,aAAOE,IAASD,IAASE;AAAA,IAC3B;AACA,QAAI,GAAGjsB;AACP,UAAM+L,IAAS,KAAK,UAAU,cAAc,QAAQ;AACpD,IAAAA,EAAO,QAAQ,GACfA,EAAO,SAAS;AAChB,UAAMhJ,IAAMgJ,EAAO,WAAW,IAAI;AAClC,QAAImgB,IAAS;AACb,aAASC,EAAYt4B,GAAM8Z,GAAU;AACnC,UAAI,EAAEue,IAAS,IAAI;AACjB,QAAA55B,EAAK,8BAA8B,GACnCqb,EAAQ;AACR;AAAA,MACF;AAIA,UAHA5K,EAAI,OAAO,UAAUlP,GACrBkP,EAAI,SAAS,KAAK,GAAG,EAAE,GACLA,EAAI,aAAa,GAAG,GAAG,GAAG,CAAC,EAC/B,KAAK,CAAC,IAAI,GAAG;AACzB,QAAA4K,EAAQ;AACR;AAAA,MACF;AACA,iBAAWwe,EAAY,KAAK,MAAMt4B,GAAM8Z,CAAQ,CAAC;AAAA,IACnD;AACA,UAAMye,IAAiB,KAAK,KAAK,IAAG,CAAE,GAAG,KAAK,gBAAgB;AAC9D,QAAIplB,IAAO,KAAK;AAEhB,IAAAA,IAAO6kB,EAAa7kB,GADG,KACmBolB,EAAe,QAAQA,CAAc;AAC/E,UAAMC,IAAsB,IACtBC,IAAa;AACnB,QAAIC,IAAWZ,EAAM3kB,GAAMqlB,CAAmB;AAC9C,SAAK,IAAI,GAAGrsB,IAAKosB,EAAe,SAAS,GAAG,IAAIpsB,GAAI,KAAK;AACvD,MAAAusB,IAAWA,IAAWD,IAAaX,EAAMS,GAAgB,CAAC,IAAI;AAEhE,IAAI,IAAIA,EAAe,WACrBG,IAAWA,IAAWD,IAAaX,EAAMS,IAAiB,OAAO,CAAC,IAAI,IAExEplB,IAAO6kB,EAAa7kB,GAAMqlB,GAAqB,GAAGn3B,GAASq3B,CAAQ,CAAC;AACpE,UAAM55B,IAAM,iCAAiC,KAAKqU,CAAI,CAAC,MACjD8jB,IAAO,4BAA4BsB,CAAc,SAASz5B,CAAG;AACnE,SAAK,WAAWm4B,CAAI;AACpB,UAAM3nB,IAAM,KAAK,UAAU,cAAc,KAAK;AAC9C,IAAAA,EAAI,MAAM,aAAa,UACvBA,EAAI,MAAM,QAAQA,EAAI,MAAM,SAAS,QACrCA,EAAI,MAAM,WAAW,YACrBA,EAAI,MAAM,MAAMA,EAAI,MAAM,OAAO;AACjC,eAAWtP,KAAQ,CAACw3B,EAAK,YAAYe,CAAc,GAAG;AACpD,YAAMxpB,IAAO,KAAK,UAAU,cAAc,MAAM;AAChD,MAAAA,EAAK,cAAc,MACnBA,EAAK,MAAM,aAAa/O,GACxBsP,EAAI,OAAOP,CAAI;AAAA,IACjB;AACA,SAAK,UAAU,KAAK,OAAOO,CAAG,GAC9BgpB,EAAYC,GAAgB,MAAM;AAChC,MAAAjpB,EAAI,OAAM,GACV5E,EAAQ,SAAQ;AAAA,IAClB,CAAC;AAAA,EACH;AACF;AArMEksB,KAAA;AApyNF,IAAA+B;AA0+NA,MAAMC,GAAe;AAAA,EAEnB,YAAYC,GAAgBC,IAAc,MAAMC,GAAOC,GAAsB;AAD7E,IAAAzyB,EAAA,MAAAoyB;AAEE,SAAK,iBAAiB,uBAAO,OAAO,IAAI,GACxC7qB,EAAA,MAAK6qB,IAAYE,IACjB,KAAK,eAAeC,GAChBC,KACF,OAAO,OAAO,MAAMA,CAAK,GAEvBC,MACF,KAAK,uBAAuBA;AAAA,EAEhC;AAAA,EACA,uBAAuB;AAv/NzB,QAAAp3B;AAw/NI,QAAI,CAAC,KAAK,QAAQ,KAAK;AACrB,aAAO;AAET,QAAIo1B;AACJ,QAAI,CAAC,KAAK;AACR,MAAAA,IAAiB,IAAI,SAAS,KAAK,YAAY,KAAK,MAAM,EAAE;AAAA,SACvD;AACL,YAAMiC,IAAM;AAAA,QACV,QAAQ,KAAK,YAAY;AAAA,MACjC;AACM,MAAI,KAAK,YAAY,gBACnBA,EAAI,QAAQ,WAAW,KAAK,YAAY,WAAW,QAErDjC,IAAiB,IAAI,SAAS,KAAK,YAAY,YAAY,KAAK,MAAMiC,CAAG;AAAA,IAC3E;AACA,YAAAr3B,IAAA,KAAK,iBAAL,QAAAA,EAAA,WAAoB,OACbo1B;AAAA,EACT;AAAA,EACA,qBAAqB;AA1gOvB,QAAAp1B;AA2gOI,QAAI,CAAC,KAAK,QAAQ,KAAK;AACrB,aAAO;AAET,UAAM9C,IAAM,YAAY,KAAK,QAAQ,WAAWgJ,GAAa,KAAK,IAAI,CAAC;AACvE,QAAImvB;AACJ,QAAI,CAAC,KAAK;AACR,MAAAA,IAAO,4BAA4B,KAAK,UAAU,SAASn4B,CAAG;AAAA,SACzD;AACL,UAAIm6B,IAAM,gBAAgB,KAAK,YAAY,UAAU;AACrD,MAAI,KAAK,YAAY,gBACnBA,KAAO,uBAAuB,KAAK,YAAY,WAAW,SAE5DhC,IAAO,4BAA4B,KAAK,YAAY,UAAU,KAAKgC,CAAG,OAAOn6B,CAAG;AAAA,IAClF;AACA,YAAA8C,IAAA,KAAK,iBAAL,QAAAA,EAAA,WAAoB,MAAM9C,IACnBm4B;AAAA,EACT;AAAA,EACA,iBAAiBiC,GAAMC,GAAW;AAChC,QAAI,KAAK,eAAeA,CAAS,MAAM;AACrC,aAAO,KAAK,eAAeA,CAAS;AAEtC,UAAMC,IAAQ,KAAK,aAAa,WAAWD;AAC3C,QAAIE;AACJ,QAAI;AACF,MAAAA,IAAOH,EAAK,IAAIE,CAAK;AAAA,IACvB,SAASnW,GAAI;AACX,MAAAxkB,EAAK,2CAA2CwkB,CAAE,IAAI;AAAA,IACxD;AACA,UAAM7P,IAAOF,GAAoBmmB,KAAA,gBAAAA,EAAM,IAAI;AAC3C,WAAK,KAAK,uBACRH,EAAK,OAAOE,CAAK,GAEZ,KAAK,eAAeD,CAAS,IAAI/lB;AAAA,EAC1C;AAAA,EACA,IAAI,QAAQ;AACV,WAAOvF,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACT,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO9qB,EAAA,MAAK8qB,IAAU,mBAAmB;AAAA,EAC3C;AAAA,EACA,IAAI,gBAAgB/4B,GAAO;AACzB,IAAAH,EAAO,MAAM,mBAAmB,CAAC,CAACG,CAAK;AAAA,EACzC;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAOiO,EAAA,MAAK8qB,IAAU,uBAAuB;AAAA,EAC/C;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,SAAS;AACX,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,YAAY;AACd,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,WAAW;AACb,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,SAAS;AACX,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,UAAU;AACZ,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACT,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,KAAKW,GAAM;AACb,IAAA75B,EAAO,MAAM,QAAQ65B,CAAI;AAAA,EAC3B;AAAA,EACA,IAAI,aAAa;AACf,WAAOzrB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,aAAa;AACf,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,WAAW;AACb,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACT,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACT,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,YAAY;AACV,IAAA9qB,EAAA,MAAK8qB,IAAU,UAAS;AAAA,EAC1B;AAAA,EACA,IAAI,cAAc;AAChB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO9qB,EAAA,MAAK8qB,IAAU;AAAA,EACxB;AACF;AAhJEA,KAAA;AA3+NF,IAAAY,IAAAC,IAAAC,IAAAC,IAAAC;AA+nOA,MAAMC,KAAN,MAAMA,GAAY;AAAA,EA4BhB,YAAYC,GAAQ;AA5BtB,IAAAtzB,EAAA,MAAAmzB;AACE,IAAAnzB,EAAA,MAAAgzB;AACA,IAAAhzB,EAAA,MAAAizB;AACA,IAAAjzB,EAAA,MAAAkzB;AA0BE,IAAA3rB,EAAA,MAAKyrB,IAAUM,IACf/rB,EAAA,MAAK0rB,IAAQ,IAAI,SAAS3rB,EAAA,MAAK0rB,GAAO,IACtCzrB,EAAA,MAAK2rB,IAAW,IAAI,YAAW;AAAA,EACjC;AAAA,EA3BA,OAAO,MAAMl7B,GAAM;AACjB,UAAMu7B,IAAU,IAAI,YAAW,GACzBC,IAAiB,CAAA;AACvB,QAAIC,IAAgB;AACpB,eAAWr6B,KAAQi6B,GAAY,SAAS;AACtC,YAAMK,IAAUH,EAAQ,OAAOv7B,EAAKoB,CAAI,CAAC;AACzC,MAAAo6B,EAAep6B,CAAI,IAAIs6B,GACvBD,KAAiB,IAAIC,EAAQ;AAAA,IAC/B;AACA,UAAMJ,IAAS,IAAI,YAAYG,CAAa,GACtC7mB,IAAO,IAAI,WAAW0mB,CAAM,GAC5BK,IAAO,IAAI,SAASL,CAAM;AAChC,QAAI9B,IAAS;AACb,eAAWp4B,KAAQi6B,GAAY,SAAS;AACtC,YAAMK,IAAUF,EAAep6B,CAAI,GAC7BkB,IAASo5B,EAAQ;AACvB,MAAAC,EAAK,UAAUnC,GAAQl3B,CAAM,GAC7BsS,EAAK,IAAI8mB,GAASlC,IAAS,CAAC,GAC5BA,KAAU,IAAIl3B;AAAA,IAChB;AACA,WAAAlC,GAAOo5B,MAAW8B,EAAO,YAAY,oCAAoC,GAClEA;AAAA,EACT;AAAA,EAeA,IAAI,aAAa;AACf,WAAO7zB,EAAA,MAAK0zB,IAAAC,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,aAAa;AACf,WAAO3zB,EAAA,MAAK0zB,IAAAC,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,cAAc;AAChB,WAAO3zB,EAAA,MAAK0zB,IAAAC,IAAL,WAAiB;AAAA,EAC1B;AACF;AAlDEJ,KAAA,eACAC,KAAA,eACAC,KAAA,eAHFC,KAAA,eAiCEC,KAAW,SAACQ,GAAO;AACjB,EAAAx7B,GAAOw7B,IAAQP,GAAY,QAAQ,QAAQ,sBAAsB;AACjE,MAAI7B,IAAS;AACb,WAAS/2B,IAAI,GAAGA,IAAIm5B,GAAOn5B;AACzB,IAAA+2B,KAAUlqB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,IAAI;AAE3C,QAAMl3B,IAASgN,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AAC1C,SAAOlqB,EAAA,MAAK4rB,IAAS,OAAO,IAAI,WAAW5rB,EAAA,MAAK0rB,KAASxB,IAAS,GAAGl3B,CAAM,CAAC;AAC9E,GArCAsJ,EAJIyvB,IAIG,WAAU,CAAC,cAAc,cAAc,aAAa;AAJ7D,IAAMQ,KAANR;AA/nOA,IAAAL,IAAAC,IAAAC,IAAAY,IAAAV;AAmrOA,MAAMW,KAAN,MAAMA,GAAe;AAAA,EAmDnB,YAAYT,GAAQ;AAnDtB,IAAAtzB,EAAA,MAAA8zB;AACE,IAAA9zB,EAAA,MAAAgzB;AACA,IAAAhzB,EAAA,MAAAizB;AACA,IAAAjzB,EAAA,MAAAkzB;AAiDE,IAAA3rB,EAAA,MAAKyrB,IAAUM,IACf/rB,EAAA,MAAK0rB,IAAQ,IAAI,SAAS3rB,EAAA,MAAK0rB,GAAO,IACtCzrB,EAAA,MAAK2rB,IAAW,IAAI,YAAW;AAAA,EACjC;AAAA,EAlDA,OAAO,MAAMl7B,GAAM;AACjB,UAAMu7B,IAAU,IAAI,YAAW,GACzBC,IAAiB,CAAA;AACvB,QAAIC,IAAgB;AACpB,eAAWr6B,KAAQ26B,GAAe,SAAS;AACzC,YAAML,IAAUH,EAAQ,OAAOv7B,EAAKoB,CAAI,CAAC;AACzC,MAAAo6B,EAAep6B,CAAI,IAAIs6B,GACvBD,KAAiB,IAAIC,EAAQ;AAAA,IAC/B;AACA,IAAAD,KAAiB;AACjB,QAAIO,GACFC,GACAC,IAAiB,IAAIT;AACvB,IAAIz7B,EAAK,UACPg8B,IAAoBT,EAAQ,OAAOv7B,EAAK,MAAM,KAAK,GACnDi8B,IAAqBV,EAAQ,OAAOv7B,EAAK,MAAM,MAAM,GACrDk8B,KAAkB,IAAIF,EAAkB,SAAS,IAAIC,EAAmB;AAE1E,UAAMX,IAAS,IAAI,YAAYY,CAAc,GACvCtnB,IAAO,IAAI,WAAW0mB,CAAM,GAC5BK,IAAO,IAAI,SAASL,CAAM;AAChC,QAAI9B,IAAS;AACb,IAAAmC,EAAK,SAASnC,KAAUx5B,EAAK,gBAAgB,IAAI,CAAC,GAClD27B,EAAK,UAAUnC,GAAQ,CAAC,GACxBA,KAAU,GACViC,IAAgB;AAChB,eAAWr6B,KAAQ26B,GAAe,SAAS;AACzC,YAAML,IAAUF,EAAep6B,CAAI,GAC7BkB,IAASo5B,EAAQ;AACvB,MAAAD,KAAiB,IAAIn5B,GACrBq5B,EAAK,UAAUnC,GAAQl3B,CAAM,GAC7BsS,EAAK,IAAI8mB,GAASlC,IAAS,CAAC,GAC5BA,KAAU,IAAIl3B;AAAA,IAChB;AACA,WAAAq5B,EAAK,UAAUnC,IAASiC,IAAgB,GAAGA,CAAa,GACpDz7B,EAAK,UACP27B,EAAK,UAAUnC,GAAQwC,EAAkB,MAAM,GAC/CpnB,EAAK,IAAIonB,GAAmBxC,IAAS,CAAC,GACtCA,KAAU,IAAIwC,EAAkB,QAChCL,EAAK,UAAUnC,GAAQyC,EAAmB,MAAM,GAChDrnB,EAAK,IAAIqnB,GAAoBzC,IAAS,CAAC,GACvCA,KAAU,IAAIyC,EAAmB,SAEnC77B,GAAOo5B,KAAU8B,EAAO,YAAY,uCAAuC,GACpEA,EAAO,sBAAsB9B,CAAM;AAAA,EAC5C;AAAA,EAMA,IAAI,gBAAgB;AAClB,WAAOlqB,EAAA,MAAK2rB,IAAM,SAAS,CAAC,MAAM;AAAA,EACpC;AAAA,EAUA,IAAI,MAAM;AACR,WAAOxzB,EAAA,MAAKq0B,IAAAV,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,aAAa;AACf,WAAO3zB,EAAA,MAAKq0B,IAAAV,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,eAAe;AACjB,WAAO3zB,EAAA,MAAKq0B,IAAAV,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,MAAM;AACR,WAAO3zB,EAAA,MAAKq0B,IAAAV,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,QAAQ;AACV,QAAI5B,IAAS;AACb,IAAAA,KAAU,IAAIlqB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACzC,UAAM2C,IAAc7sB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,GACzCnoB,IAAQ/B,EAAA,MAAK4rB,IAAS,OAAO,IAAI,WAAW5rB,EAAA,MAAK0rB,KAASxB,IAAS,GAAG2C,CAAW,CAAC;AACxF,IAAA3C,KAAU,IAAI2C;AACd,UAAMC,IAAe9sB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,GAC1C6C,IAAS/sB,EAAA,MAAK4rB,IAAS,OAAO,IAAI,WAAW5rB,EAAA,MAAK0rB,KAASxB,IAAS,GAAG4C,CAAY,CAAC;AAC1F,WAAO;AAAA,MACL,OAAA/qB;AAAA,MACA,QAAAgrB;AAAA,IACN;AAAA,EACE;AACF;AA5FErB,KAAA,eACAC,KAAA,eACAC,KAAA,eAHFY,KAAA,eA2DEV,KAAW,SAACQ,GAAO;AACjB,EAAAx7B,GAAOw7B,IAAQG,GAAe,QAAQ,QAAQ,sBAAsB;AACpE,MAAIvC,IAAS;AACb,WAAS/2B,IAAI,GAAGA,IAAIm5B,GAAOn5B;AACzB,IAAA+2B,KAAUlqB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,IAAI;AAE3C,QAAMl3B,IAASgN,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AAC1C,SAAOlqB,EAAA,MAAK4rB,IAAS,OAAO,IAAI,WAAW5rB,EAAA,MAAK0rB,KAASxB,IAAS,GAAGl3B,CAAM,CAAC;AAC9E,GA/DAsJ,EAJImwB,IAIG,WAAU,CAAC,OAAO,cAAc,gBAAgB,KAAK;AAJ9D,IAAMO,KAANP;AAnrOA,IAAAQ,IAAAC,IAAAC,IAAAC,IAAAC,IAAA3B,IAAAE,IAAAD,IAAA2B,IAAAC,IAAAC,IAAA1B;AAixOA,MAAM2B,IAAN,MAAMA,EAAS;AAAA,EAYb,YAAY;AAAA,IACV,MAAAnoB;AAAA,IACA,OAAA4lB;AAAA,EACJ,GAAK;AAfL,IAAAxyB,EAAA,MAAA40B;AASE,IAAA50B,EAAA,MAAAgzB;AACA,IAAAhzB,EAAA,MAAAkzB;AACA,IAAAlzB,EAAA,MAAAizB;AAKE,IAAA1rB,EAAA,MAAKyrB,IAAUpmB,IACfrF,EAAA,MAAK2rB,IAAW,IAAI,YAAW,IAC/B3rB,EAAA,MAAK0rB,IAAQ,IAAI,SAAS3rB,EAAA,MAAK0rB,GAAO,IAClCR,KACF,OAAO,OAAO,MAAMA,CAAK;AAAA,EAE7B;AAAA,EAQA,IAAI,QAAQ;AACV,WAAO/yB,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,OAAO;AACT,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,cAAc;AAChB,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,SAAS;AACX,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,cAAc;AAChB,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,YAAY;AACd,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EACA,IAAI,WAAW;AACb,WAAOp1B,EAAA,MAAKm1B,IAAAC,IAAL,WAAkB;AAAA,EAC3B;AAAA,EAKA,IAAI,SAAS;AACX,WAAOp1B,EAAA,MAAKm1B,IAAAE,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,eAAe;AACjB,WAAOr1B,EAAA,MAAKm1B,IAAAE,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,UAAU;AACZ,WAAOr1B,EAAA,MAAKm1B,IAAAE,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,QAAItD,IAASlqB,EAAAytB,GAASP;AAEtB,QADkBltB,EAAA,MAAK2rB,IAAM,SAASzB,CAAM,MAC1B;AAChB;AAEF,IAAAA,KAAU;AACV,UAAMuB,IAAO,CAAA;AACb,aAASt4B,IAAI,GAAGA,IAAI,GAAGA;AACrB,MAAAs4B,EAAK,KAAKzrB,EAAA,MAAK2rB,IAAM,SAASzB,GAAQ,EAAI,CAAC,GAC3CA,KAAU;AAEZ,WAAOuB;AAAA,EACT;AAAA,EACA,IAAI,aAAa;AACf,QAAIvB,IAASlqB,EAAAytB,GAASN;AAEtB,QADkBntB,EAAA,MAAK2rB,IAAM,SAASzB,CAAM,MAC1B;AAChB;AAEF,IAAAA,KAAU;AACV,UAAMwD,IAAa,CAAA;AACnB,aAASv6B,IAAI,GAAGA,IAAI,GAAGA;AACrB,MAAAu6B,EAAW,KAAK1tB,EAAA,MAAK2rB,IAAM,WAAWzB,GAAQ,EAAI,CAAC,GACnDA,KAAU;AAEZ,WAAOwD;AAAA,EACT;AAAA,EACA,IAAI,kBAAkB;AACpB,QAAIxD,IAASlqB,EAAAytB,GAASL;AAEtB,QADmBptB,EAAA,MAAK2rB,IAAM,SAASzB,CAAM,MAC1B;AACjB;AAEF,IAAAA,KAAU;AACV,UAAMyD,IAAkB,CAAA;AACxB,aAASx6B,IAAI,GAAGA,IAAI,GAAGA;AACrB,MAAAw6B,EAAgB,KAAK3tB,EAAA,MAAK2rB,IAAM,SAASzB,GAAQ,EAAI,CAAC,GACtDA,KAAU;AAEZ,WAAOyD;AAAA,EACT;AAAA,EAYA,IAAI,eAAe;AACjB,WAAOx1B,EAAA,MAAKm1B,IAAAxB,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,aAAa;AACf,WAAO3zB,EAAA,MAAKm1B,IAAAxB,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,WAAW;AACb,WAAO3zB,EAAA,MAAKm1B,IAAAxB,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,WAAO3zB,EAAA,MAAKm1B,IAAAxB,IAAL,WAAiB;AAAA,EAC1B;AAAA,EACA,IAAI,OAAO;AACT,QAAI5B,IAASlqB,EAAAytB,GAASJ;AACtB,UAAMlB,IAAgBnsB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACjD,IAAAA,KAAU,IAAIiC;AACd,UAAMyB,IAAuB5tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACxD,IAAAA,KAAU,IAAI0D;AACd,UAAMC,IAAoB7tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACrD,IAAAA,KAAU,IAAI2D;AACd,UAAM76B,IAASgN,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AAC1C,QAAIl3B,MAAW;AAGf,aAAO,IAAI,WAAWgN,EAAA,MAAK0rB,KAASxB,IAAS,GAAGl3B,CAAM;AAAA,EACxD;AAAA,EACA,YAAY;AACV,QAAIk3B,IAASlqB,EAAAytB,GAASJ;AACtB,UAAMlB,IAAgBnsB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACjD,IAAAA,KAAU,IAAIiC;AACd,UAAMyB,IAAuB5tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACxD,IAAAA,KAAU,IAAI0D;AACd,UAAMC,IAAoB7tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACrD,IAAAA,KAAU,IAAI2D;AACd,UAAM76B,IAASgN,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AAE1C,IADa,IAAI,WAAWlqB,EAAA,MAAK0rB,KAASxB,IAAS,GAAGl3B,CAAM,EACvD,KAAK,CAAC,GACXgN,EAAA,MAAK2rB,IAAM,UAAUzB,GAAQ,CAAC;AAAA,EAChC;AAAA,EACA,IAAI,cAAc;AAChB,QAAIA,IAASlqB,EAAAytB,GAASJ;AACtB,UAAMlB,IAAgBnsB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACjD,IAAAA,KAAU,IAAIiC;AACd,UAAMyB,IAAuB5tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACxD,IAAAA,KAAU,IAAI0D;AACd,UAAMC,IAAoB7tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACrD,QAAI2D,MAAsB;AACxB,aAAO;AAET,UAAMC,IAAkB,IAAI,WAAWD,CAAiB;AACxD,WAAAC,EAAgB,IAAI,IAAI,WAAW9tB,EAAA,MAAK0rB,KAASxB,IAAS,GAAG2D,CAAiB,CAAC,GACxE,IAAItB,GAAYuB,EAAgB,MAAM;AAAA,EAC/C;AAAA,EACA,IAAI,iBAAiB;AACnB,QAAI5D,IAASlqB,EAAAytB,GAASJ;AACtB,UAAMlB,IAAgBnsB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACjD,IAAAA,KAAU,IAAIiC;AACd,UAAMyB,IAAuB5tB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM;AACxD,QAAI0D,MAAyB;AAC3B,aAAO;AAET,UAAMG,IAAqB,IAAI,WAAWH,CAAoB;AAC9D,WAAAG,EAAmB,IAAI,IAAI,WAAW/tB,EAAA,MAAK0rB,KAASxB,IAAS,GAAG0D,CAAoB,CAAC,GAC9E,IAAIZ,GAAee,EAAmB,MAAM;AAAA,EACrD;AAAA,EACA,OAAO,MAAMpE,GAAM;AACjB,UAAMqE,IAAuBrE,EAAK,iBAAiBqD,GAAe,MAAMrD,EAAK,cAAc,IAAI,MACzFsE,IAAoBtE,EAAK,cAAc4C,GAAY,MAAM5C,EAAK,WAAW,IAAI,MAC7EsC,IAAU,IAAI,YAAW,GACzBC,IAAiB,CAAA;AACvB,QAAIC,IAAgB;AACpB,eAAWr6B,KAAQ27B,EAAS;AAC1B,MAAAvB,EAAep6B,CAAI,IAAIm6B,EAAQ,OAAOtC,EAAK73B,CAAI,CAAC,GAChDq6B,KAAiB,IAAID,EAAep6B,CAAI,EAAE;AAE5C,UAAM86B,IAAiB5sB,EAAAytB,GAASJ,MAAkB,IAAIlB,IAAgB,KAAK6B,IAAuBA,EAAqB,aAAa,KAAK,KAAKC,IAAoBA,EAAkB,aAAa,KAAK,KAAKtE,EAAK,OAAOA,EAAK,KAAK,SAAS,IACpOqC,IAAS,IAAI,YAAYY,CAAc,GACvCtnB,IAAO,IAAI,WAAW0mB,CAAM,GAC5BK,IAAO,IAAI,SAASL,CAAM;AAChC,QAAI9B,IAAS;AACb,UAAMgE,IAAWT,EAAS,MAAM;AAChC,QAAIU,IAAW,GACbC,IAAU;AACZ,aAASj7B,IAAI,GAAGA,IAAI+6B,GAAU/6B,KAAK;AACjC,YAAMpB,IAAQ43B,EAAK8D,EAAS,MAAMt6B,CAAC,CAAC;AAEpC,MAAAg7B,MADap8B,MAAU,SAAY,IAAOA,IAAQ,IAAO,MACrCq8B,GACpBA,KAAW,IACPA,MAAY,KAAKj7B,MAAM+6B,IAAW,OACpC7B,EAAK,SAASnC,KAAUiE,CAAQ,GAChCA,IAAW,GACXC,IAAU;AAAA,IAEd;AACA,IAAAt9B,GAAOo5B,MAAWlqB,EAAAytB,GAASR,KAAiB,oDAAoD;AAChG,eAAWn7B,KAAQ27B,EAAS;AAC1B,MAAApB,EAAK,WAAWnC,GAAQP,EAAK73B,CAAI,CAAC,GAClCo4B,KAAU;AAGZ,QADAp5B,GAAOo5B,MAAWlqB,EAAAytB,GAASP,KAAc,mDAAmD,GACxFvD,EAAK,MAAM;AACb,MAAA0C,EAAK,SAASnC,KAAU,CAAC;AACzB,iBAAWmE,KAAS1E,EAAK;AACvB,QAAA0C,EAAK,SAASnC,GAAQmE,GAAO,EAAI,GACjCnE,KAAU;AAAA,IAEd;AACE,MAAAmC,EAAK,SAASnC,KAAU,CAAC,GACzBA,KAAU,IAAI;AAGhB,QADAp5B,GAAOo5B,MAAWlqB,EAAAytB,GAASN,KAAqB,iDAAiD,GAC7FxD,EAAK,YAAY;AACnB,MAAA0C,EAAK,SAASnC,KAAU,CAAC;AACzB,iBAAWlF,KAAS2E,EAAK;AACvB,QAAA0C,EAAK,WAAWnC,GAAQlF,GAAO,EAAI,GACnCkF,KAAU;AAAA,IAEd;AACE,MAAAmC,EAAK,SAASnC,KAAU,CAAC,GACzBA,KAAU,IAAI;AAGhB,QADAp5B,GAAOo5B,MAAWlqB,EAAAytB,GAASL,KAA0B,uDAAuD,GACxGzD,EAAK,iBAAiB;AACxB,MAAA0C,EAAK,SAASnC,KAAU,CAAC;AACzB,iBAAWoE,KAAU3E,EAAK;AACxB,QAAA0C,EAAK,SAASnC,GAAQoE,GAAQ,EAAI,GAClCpE,KAAU;AAAA,IAEd;AACE,MAAAmC,EAAK,SAASnC,KAAU,CAAC,GACzBA,KAAU,IAAI;AAEhB,IAAAp5B,GAAOo5B,MAAWlqB,EAAAytB,GAASJ,KAAiB,4DAA4D,GACxGhB,EAAK,UAAUrsB,EAAAytB,GAASJ,KAAiB,CAAC,GAC1CnD,KAAU;AACV,eAAWp4B,KAAQ27B,EAAS,SAAS;AACnC,YAAMrB,IAAUF,EAAep6B,CAAI,GAC7BkB,IAASo5B,EAAQ;AACvB,MAAAC,EAAK,UAAUnC,GAAQl3B,CAAM,GAC7BsS,EAAK,IAAI8mB,GAASlC,IAAS,CAAC,GAC5BA,KAAU,IAAIl3B;AAAA,IAChB;AAEA,QADAq5B,EAAK,UAAUrsB,EAAAytB,GAASJ,KAAiBnD,IAASlqB,EAAAytB,GAASJ,MAAkB,CAAC,GAC1E,CAACW;AACH,MAAA3B,EAAK,UAAUnC,GAAQ,CAAC,GACxBA,KAAU;AAAA,SACL;AACL,YAAMl3B,IAASg7B,EAAqB;AACpC,MAAA3B,EAAK,UAAUnC,GAAQl3B,CAAM,GAC7BlC,GAAOo5B,IAAS,IAAIl3B,KAAUg5B,EAAO,YAAY,mDAAmD,GACpG1mB,EAAK,IAAI,IAAI,WAAW0oB,CAAoB,GAAG9D,IAAS,CAAC,GACzDA,KAAU,IAAIl3B;AAAA,IAChB;AACA,QAAI,CAACi7B;AACH,MAAA5B,EAAK,UAAUnC,GAAQ,CAAC,GACxBA,KAAU;AAAA,SACL;AACL,YAAMl3B,IAASi7B,EAAkB;AACjC,MAAA5B,EAAK,UAAUnC,GAAQl3B,CAAM,GAC7BlC,GAAOo5B,IAAS,IAAIl3B,KAAUg5B,EAAO,YAAY,gDAAgD,GACjG1mB,EAAK,IAAI,IAAI,WAAW2oB,CAAiB,GAAG/D,IAAS,CAAC,GACtDA,KAAU,IAAIl3B;AAAA,IAChB;AACA,WAAI22B,EAAK,SAAS,UAChB0C,EAAK,UAAUnC,GAAQ,CAAC,GACxBA,KAAU,MAEVmC,EAAK,UAAUnC,GAAQP,EAAK,KAAK,MAAM,GACvCrkB,EAAK,IAAIqkB,EAAK,MAAMO,IAAS,CAAC,GAC9BA,KAAU,IAAIP,EAAK,KAAK,SAE1B74B,GAAOo5B,KAAU8B,EAAO,YAAY,iCAAiC,GAC9DA,EAAO,sBAAsB9B,CAAM;AAAA,EAC5C;AACF;AAxSS+C,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACP3B,KAAA,eACAE,KAAA,eACAD,KAAA,eAXF2B,KAAA,eAuBEC,KAAY,SAACjB,GAAO;AAClB,EAAAx7B,GAAOw7B,IAAQmB,EAAS,MAAM,QAAQ,uBAAuB;AAC7D,QAAMc,IAAa,KAAK,MAAMjC,IAAQ,CAAC,GACjCkC,IAAYlC,IAAQ,IAAI,GACxBv6B,IAAQiO,EAAA,MAAK2rB,IAAM,SAAS4C,CAAU,KAAKC,IAAY;AAC7D,SAAOz8B,MAAU,IAAO,SAAYA,MAAU;AAChD,GA+BAy7B,KAAW,SAAClB,GAAO;AACjB,SAAAx7B,GAAOw7B,IAAQmB,EAAS,QAAQ,QAAQ,sBAAsB,GACvDztB,EAAA,MAAK2rB,IAAM,WAAW3rB,EAAAytB,GAASR,MAAkBX,IAAQ,CAAC;AACnE,GAoDAR,KAAW,SAACQ,GAAO;AACjB,EAAAx7B,GAAOw7B,IAAQmB,EAAS,QAAQ,QAAQ,sBAAsB;AAC9D,MAAIvD,IAASlqB,EAAAytB,GAASJ,MAAkB;AACxC,WAAS,IAAI,GAAG,IAAIf,GAAO;AACzB,IAAApC,KAAUlqB,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,IAAI;AAE3C,QAAMl3B,IAASgN,EAAA,MAAK2rB,IAAM,UAAUzB,CAAM,GACpCuE,IAAa,IAAI,WAAWz7B,CAAM;AACxC,SAAAy7B,EAAW,IAAI,IAAI,WAAWzuB,EAAA,MAAK0rB,KAASxB,IAAS,GAAGl3B,CAAM,CAAC,GACxDgN,EAAA,MAAK4rB,IAAS,OAAO6C,CAAU;AACxC,GA5HAnyB,EADImxB,GACG,SAAQ,CAAC,SAAS,QAAQ,mBAAmB,uBAAuB,sBAAsB,eAAe,UAAU,eAAe,aAAa,UAAU,IAChKnxB,EAFImxB,GAEG,WAAU,CAAC,UAAU,gBAAgB,SAAS,IACrDnxB,EAHImxB,GAGG,WAAU,CAAC,gBAAgB,cAAc,YAAY,MAAM,IAClE/0B,EAJI+0B,GAIGR,IAAkB,KAAK,KAAKQ,EAAK,MAAM,SAAS,IAAI,CAAC,IAC5D/0B,EALI+0B,GAKGP,IAAeltB,EAAAytB,GAAKR,MAAkBQ,EAAK,QAAQ,SAAS,IACnE/0B,EANI+0B,GAMGN,IAAsBntB,EAAAytB,GAAKP,MAAe,IAAI,IAAI,IACzDx0B,EAPI+0B,GAOGL,IAA2BptB,EAAAytB,GAAKN,MAAsB,IAAI,IAAI,IACrEz0B,EARI+0B,GAQGJ,IAAkBrtB,EAAAytB,GAAKL,MAA2B,IAAI,IAAI;AARnE,IAAMsB,KAANjB;AAjxOA,IAAAkB,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA8jPA,MAAMC,KAAN,MAAMA,GAAY;AAAA,EAShB,YAAYnD,GAAQ;AAClB,SAAK,SAASA,GACd,KAAK,OAAO,IAAI,SAASA,CAAM,GAC/B,KAAK,OAAO,IAAI,WAAWA,CAAM;AAAA,EACnC;AAAA,EACA,OAAO,MAAMoD,GAAI;AACf,QAAIC,GACF5D,IAAO,MACP6D,IAAS,CAAA,GACTruB,IAAS,CAAA,GACTsuB,IAAa,CAAA,GACbC,IAAU,CAAA,GACVC,IAAc,MACdC,IAAa;AACf,YAAQN,EAAG,CAAC,GAAC;AAAA,MACX,KAAK;AACH,QAAAC,IAAOD,EAAG,CAAC,MAAM,UAAU,IAAI,GAC/B3D,IAAO2D,EAAG,CAAC,GACXG,IAAaH,EAAG,CAAC,GACbC,MAAS,IACXC,EAAO,KAAK,GAAGF,EAAG,CAAC,GAAG,GAAGA,EAAG,CAAC,CAAC,IAE9BE,EAAO,KAAKF,EAAG,CAAC,EAAE,CAAC,GAAGA,EAAG,CAAC,EAAE,CAAC,GAAGA,EAAG,CAAC,GAAGA,EAAG,CAAC,EAAE,CAAC,GAAGA,EAAG,CAAC,EAAE,CAAC,GAAGA,EAAG,CAAC,CAAC;AAElE;AAAA,MACF,KAAK;AACH,QAAAC,IAAO,GACPI,IAAcL,EAAG,CAAC,GAClBE,IAASF,EAAG,CAAC,GACbnuB,IAASmuB,EAAG,CAAC,GACbI,IAAUJ,EAAG,CAAC,KAAK,CAAA,GACnB3D,IAAO2D,EAAG,CAAC,GACXM,IAAaN,EAAG,CAAC;AACjB;AAAA,MACF;AACE,cAAM,IAAI,MAAM,6BAA6BA,EAAG,CAAC,CAAC,EAAE;AAAA,IAC5D;AACI,UAAMO,IAAS,KAAK,MAAML,EAAO,SAAS,CAAC,GACrCM,IAAS,KAAK,MAAM3uB,EAAO,SAAS,CAAC,GACrC4uB,IAAQN,EAAW,QACnBO,IAAWN,EAAQ;AACzB,QAAIO,IAAc;AAClB,eAAWC,KAAUR;AACnB,MAAAO,KAAe,GACfA,IAAc,KAAK,KAAKA,IAAc,CAAC,IAAI,GAC3CA,KAAe,IAAIC,EAAO,OAAO,SAAS,GAC1CD,KAAe,IAAIC,EAAO,OAAO,SAAS,GACtCA,EAAO,mBAAmB,WAC5BD,KAAe;AAGnB,UAAME,IAAU,KAAKN,IAAS,IAAIC,IAAS,IAAIC,IAAQ,KAAKpE,IAAO,KAAK,MAAMiE,IAAa,IAAI,KAAKK,GAC9F/D,IAAS,IAAI,YAAYiE,CAAO,GAChCC,IAAW,IAAI,SAASlE,CAAM,GAC9BmE,IAAS,IAAI,WAAWnE,CAAM;AACpC,IAAAkE,EAAS,SAASlwB,EAAAmvB,IAAYR,KAAOU,CAAI,GACzCa,EAAS,SAASlwB,EAAAmvB,IAAYP,KAAWnD,IAAO,IAAI,CAAC,GACrDyE,EAAS,SAASlwB,EAAAmvB,IAAYN,KAAiBa,IAAa,IAAI,CAAC,GACjEQ,EAAS,SAASlwB,EAAAmvB,IAAYL,KAAeW,CAAW,GACxDS,EAAS,UAAUlwB,EAAAmvB,IAAYJ,KAAUY,GAAQ,EAAI,GACrDO,EAAS,UAAUlwB,EAAAmvB,IAAYH,KAAUY,GAAQ,EAAI,GACrDM,EAAS,UAAUlwB,EAAAmvB,IAAYF,KAASY,GAAO,EAAI,GACnDK,EAAS,UAAUlwB,EAAAmvB,IAAYD,KAAYY,GAAU,EAAI;AACzD,QAAI5F,IAAS;AAEb,IADmB,IAAI,aAAa8B,GAAQ9B,GAAQyF,IAAS,CAAC,EACnD,IAAIL,CAAM,GACrBpF,KAAUyF,IAAS,GACnBQ,EAAO,IAAIlvB,GAAQipB,CAAM,GACzBA,KAAU0F,IAAS;AACnB,eAAW,CAAC16B,GAAKk7B,CAAG,KAAKb;AACvB,MAAAW,EAAS,WAAWhG,GAAQh1B,GAAK,EAAI,GACrCg1B,KAAU,GACVgG,EAAS,UAAUhG,GAAQ,SAASkG,EAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAI,GAC3DlG,KAAU;AAEZ,QAAIuB;AACF,iBAAW3xB,KAAK2xB;AACd,QAAAyE,EAAS,WAAWhG,GAAQpwB,GAAG,EAAI,GACnCowB,KAAU;AAGd,IAAIwF,MACFS,EAAO,IAAIT,GAAYxF,CAAM,GAC7BA,KAAU;AAEZ,aAAS/2B,IAAI,GAAGA,IAAIq8B,EAAQ,QAAQr8B,KAAK;AACvC,YAAM68B,IAASR,EAAQr8B,CAAC;AACxB,MAAA+8B,EAAS,SAAShG,GAAQ8F,EAAO,IAAI,GACrC9F,KAAU,GACVA,IAAS,KAAK,KAAKA,IAAS,CAAC,IAAI,GACjCgG,EAAS,UAAUhG,GAAQ8F,EAAO,OAAO,QAAQ,EAAI,GACrD9F,KAAU,GACe,IAAI,WAAW8B,GAAQ9B,GAAQ8F,EAAO,OAAO,MAAM,EAC3D,IAAIA,EAAO,MAAM,GAClC9F,KAAU8F,EAAO,OAAO,SAAS,GACjCE,EAAS,UAAUhG,GAAQ8F,EAAO,OAAO,QAAQ,EAAI,GACrD9F,KAAU,GACS,IAAI,WAAW8B,GAAQ9B,GAAQ8F,EAAO,OAAO,MAAM,EAC3D,IAAIA,EAAO,MAAM,GAC5B9F,KAAU8F,EAAO,OAAO,SAAS,GAC7BA,EAAO,mBAAmB,WAC5BE,EAAS,UAAUhG,GAAQ8F,EAAO,gBAAgB,EAAI,GACtD9F,KAAU;AAAA,IAEd;AACA,WAAO8B;AAAA,EACT;AAAA,EACA,QAAQ;AACN,UAAMkE,IAAW,KAAK,MAChBb,IAAO,KAAK,KAAKrvB,EAAAmvB,IAAYR,GAAK,GAClC0B,IAAU,CAAC,CAAC,KAAK,KAAKrwB,EAAAmvB,IAAYP,GAAS,GAC3C0B,IAAgB,CAAC,CAAC,KAAK,KAAKtwB,EAAAmvB,IAAYN,GAAe,GACvDc,IAASO,EAAS,UAAUlwB,EAAAmvB,IAAYJ,KAAU,EAAI,GACtDa,IAASM,EAAS,UAAUlwB,EAAAmvB,IAAYH,KAAU,EAAI,GACtDa,IAAQK,EAAS,UAAUlwB,EAAAmvB,IAAYF,KAAS,EAAI,GACpDa,IAAWI,EAAS,UAAUlwB,EAAAmvB,IAAYD,KAAY,EAAI;AAChE,QAAIhF,IAAS;AACb,UAAMoF,IAAS,IAAI,aAAa,KAAK,QAAQpF,GAAQyF,IAAS,CAAC;AAC/D,IAAAzF,KAAUyF,IAAS;AACnB,UAAM1uB,IAAS,IAAI,WAAW,KAAK,QAAQipB,GAAQ0F,IAAS,CAAC;AAC7D,IAAA1F,KAAU0F,IAAS;AACnB,UAAMW,IAAQ,CAAA;AACd,aAASp9B,IAAI,GAAGA,IAAI08B,GAAO,EAAE18B,GAAG;AAC9B,YAAM8B,IAAIi7B,EAAS,WAAWhG,GAAQ,EAAI;AAC1C,MAAAA,KAAU;AACV,YAAM3mB,IAAM2sB,EAAS,UAAUhG,GAAQ,EAAI;AAC3C,MAAAA,KAAU,GACVqG,EAAM,KAAK,CAACt7B,GAAG,IAAIsO,EAAI,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;AAAA,IACzD;AACA,QAAIkoB,IAAO;AACX,QAAI4E,GAAS;AACX,MAAA5E,IAAO,CAAA;AACP,eAASt4B,IAAI,GAAGA,IAAI,GAAG,EAAEA;AACvB,QAAAs4B,EAAK,KAAKyE,EAAS,WAAWhG,GAAQ,EAAI,CAAC,GAC3CA,KAAU;AAAA,IAEd;AACA,QAAIwF,IAAa;AACjB,IAAIY,MACFZ,IAAa,IAAI,WAAW,KAAK,QAAQxF,GAAQ,CAAC,GAClDA,KAAU;AAEZ,UAAMsF,IAAU,CAAA;AAChB,aAASr8B,IAAI,GAAGA,IAAI28B,GAAU,EAAE38B,GAAG;AACjC,YAAMsJ,IAAOyzB,EAAS,SAAShG,CAAM;AACrC,MAAAA,KAAU,GACVA,IAAS,KAAK,KAAKA,IAAS,CAAC,IAAI;AACjC,YAAMsG,IAAeN,EAAS,UAAUhG,GAAQ,EAAI;AACpD,MAAAA,KAAU;AACV,YAAMuG,IAAe,IAAI,WAAW,KAAK,QAAQvG,GAAQsG,CAAY;AACrE,MAAAtG,KAAUsG,IAAe;AACzB,YAAME,IAAeR,EAAS,UAAUhG,GAAQ,EAAI;AACpD,MAAAA,KAAU;AACV,YAAMyG,IAAe,IAAI,WAAW,KAAK,QAAQzG,GAAQwG,CAAY;AACrE,MAAAxG,KAAUwG,IAAe;AACzB,YAAMV,IAAS;AAAA,QACb,MAAAvzB;AAAA,QACA,QAAQg0B;AAAA,QACR,QAAQE;AAAA,MAChB;AACM,MAAIl0B,MAAS5M,GAAe,YAC1BmgC,EAAO,iBAAiBE,EAAS,UAAUhG,GAAQ,EAAI,GACvDA,KAAU,IAEZsF,EAAQ,KAAKQ,CAAM;AAAA,IACrB;AACA,QAAIX,MAAS;AACX,aAAO,CAAC,eAAe,SAAS5D,GAAM8E,GAAO,MAAM,KAAKjB,EAAO,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,KAAKA,EAAO,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI;AAEzH,QAAID,MAAS;AACX,aAAO,CAAC,eAAe,UAAU5D,GAAM8E,GAAO,CAACjB,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GAAG,CAACA,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GAAGA,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC;AAEpH,QAAID,MAAS,GAAG;AACd,YAAMI,IAAc,KAAK,KAAKzvB,EAAAmvB,IAAYL,GAAa;AACvD,UAAI8B,IAAS;AACb,UAAItB,EAAO,SAAS,GAAG;AACrB,YAAIuB,IAAOvB,EAAO,CAAC,GACjBwB,IAAOxB,EAAO,CAAC,GACbyB,IAAOzB,EAAO,CAAC,GACjB0B,IAAO1B,EAAO,CAAC;AACjB,iBAASn8B,IAAI,GAAGA,IAAIm8B,EAAO,QAAQn8B,KAAK,GAAG;AACzC,gBAAMsE,IAAI63B,EAAOn8B,CAAC,GAChB,IAAIm8B,EAAOn8B,IAAI,CAAC;AAClB,UAAA09B,IAAOA,IAAOp5B,IAAIA,IAAIo5B,GACtBE,IAAOA,IAAO,IAAI,IAAIA,GACtBD,IAAOA,IAAOr5B,IAAIA,IAAIq5B,GACtBE,IAAOA,IAAO,IAAI,IAAIA;AAAA,QACxB;AACA,QAAAJ,IAAS,CAACC,GAAME,GAAMD,GAAME,CAAI;AAAA,MAClC;AACA,aAAO,CAAC,QAAQvB,GAAaH,GAAQruB,GAAQuuB,GAASoB,GAAQnF,GAAMiE,CAAU;AAAA,IAChF;AACA,UAAM,IAAI,MAAM,6BAA6BL,CAAI,EAAE;AAAA,EACrD;AACF;AA1MSV,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAPPx2B,EADIy2B,IACGR,IAAQ,IACfj2B,EAFIy2B,IAEGP,IAAY,IACnBl2B,EAHIy2B,IAGGN,IAAkB,IACzBn2B,EAJIy2B,IAIGL,IAAgB,IACvBp2B,EALIy2B,IAKGJ,IAAW,IAClBr2B,EANIy2B,IAMGH,IAAW,IAClBt2B,EAPIy2B,IAOGF,IAAU,KACjBv2B,EARIy2B,IAQGD,IAAa;AARtB,IAAM+B,KAAN9B;AA9jPA,IAAAzD;AA0wPA,MAAMwF,GAAa;AAAA,EAejB,YAAYlF,GAAQ;AADpB,IAAAtzB,EAAA,MAAAgzB;AAEE,IAAAzrB,EAAA,MAAKyrB,IAAUM;AAAA,EACjB;AAAA,EAhBA,OAAO,MAAMzmB,GAAM;AACjB,QAAID,GACA0mB;AACJ,WAAIp4B,GAAiB,2BACnBo4B,IAAS,IAAI,YAAYzmB,EAAK,SAAS,CAAC,GACxCD,IAAO,IAAI,aAAa0mB,CAAM,MAE9BA,IAAS,IAAI,YAAYzmB,EAAK,SAAS,CAAC,GACxCD,IAAO,IAAI,aAAa0mB,CAAM,IAEhC1mB,EAAK,IAAIC,CAAI,GACNymB;AAAA,EACT;AAAA,EAKA,IAAI,OAAO;AACT,WAAIp4B,GAAiB,0BACZ,IAAI,aAAaoM,EAAA,MAAK0rB,GAAO,IAE/B,IAAI,aAAa1rB,EAAA,MAAK0rB,GAAO;AAAA,EACtC;AACF;AAVEA,KAAA;AAcF,SAASyF,GAAWlJ,GAAK;AACvB,MAAIA,aAAe;AACjB,WAAOA,EAAI;AAEb,MAAI,OAAOA,KAAQ,UAAU;AAC3B,QAAI74B;AACF,aAAO64B;AAET,UAAMh3B,IAAM,IAAI,MAAMg3B,GAAK,OAAO,QAAQ;AAC1C,QAAIh3B;AACF,aAAOA,EAAI;AAAA,EAEf;AACA,QAAM,IAAI,MAAM,oFAAyF;AAC3G;AACA,SAASmgC,GAAYnJ,GAAK;AACxB,MAAI74B,MAAY,OAAO,SAAW,OAAe64B,aAAe;AAC9D,UAAM,IAAI,MAAM,mEAAmE;AAErF,MAAIA,aAAe,cAAcA,EAAI,eAAeA,EAAI,OAAO;AAC7D,WAAOA;AAET,MAAI,OAAOA,KAAQ;AACjB,WAAO30B,GAAc20B,CAAG;AAE1B,MAAIA,aAAe,eAAe,YAAY,OAAOA,CAAG,KAAK,OAAOA,KAAQ,YAAY,CAAC,MAAMA,KAAA,gBAAAA,EAAK,MAAM;AACxG,WAAO,IAAI,WAAWA,CAAG;AAE3B,QAAM,IAAI,MAAM,4GAAiH;AACnI;AACA,SAASoJ,GAAkBpJ,GAAK;AAC9B,MAAI,OAAOA,KAAQ;AACjB,WAAO;AAET,MAAIA,EAAI,SAAS,GAAG;AAClB,WAAOA;AAET,QAAM,IAAI,MAAM,yBAAyBA,CAAG,gCAAgC;AAC9E;AACA,MAAMqJ,KAAa,CAAAx3B,MAAK,OAAOA,KAAM,YAAY,OAAO,UAAUA,KAAA,gBAAAA,EAAG,GAAG,KAAKA,EAAE,OAAO,KAAK,OAAO,UAAUA,KAAA,gBAAAA,EAAG,GAAG,KAAKA,EAAE,OAAO,GAC1Hy3B,KAAc,CAAAz3B,MAAK,OAAOA,KAAM,YAAY,QAAOA,KAAA,gBAAAA,EAAG,SAAS,UAC/D03B,KAAsBr4B,GAAqB,KAAK,MAAMm4B,IAAYC,EAAW;AA/0PnF,IAAAE,IAAAC;AAg1PA,MAAMC,GAAa;AAAA,EAAnB;AACE,IAAAj5B,EAAA,MAAA+4B,IAAa,oBAAI,IAAG;AACpB,IAAA/4B,EAAA,MAAAg5B,IAAY,QAAQ,QAAO;AAAA;AAAA,EAC3B,YAAY7/B,GAAKs2B,GAAU;AACzB,UAAM/sB,IAAQ;AAAA,MACZ,MAAM,gBAAgBvJ,GAAKs2B,IAAW;AAAA,QACpC,UAAAA;AAAA,MACR,IAAU,IAAI;AAAA,IACd;AACI,IAAAnoB,EAAA,MAAK0xB,IAAU,KAAK,MAAM;AACxB,iBAAW,CAACE,CAAQ,KAAK5xB,EAAA,MAAKyxB;AAC5B,QAAAG,EAAS,KAAK,MAAMx2B,CAAK;AAAA,IAE7B,CAAC;AAAA,EACH;AAAA,EACA,iBAAiBjJ,GAAMy/B,GAAUxgC,IAAU,MAAM;AAC/C,QAAIygC,IAAU;AACd,SAAIzgC,KAAA,gBAAAA,EAAS,mBAAkB,aAAa;AAC1C,YAAM;AAAA,QACJ,QAAAuV;AAAA,MACR,IAAUvV;AACJ,UAAIuV,EAAO,SAAS;AAClB,QAAA/V,EAAK,gDAAgD;AACrD;AAAA,MACF;AACA,YAAMkhC,IAAU,MAAM,KAAK,oBAAoB3/B,GAAMy/B,CAAQ;AAC7D,MAAAC,IAAU,MAAMlrB,EAAO,oBAAoB,SAASmrB,CAAO,GAC3DnrB,EAAO,iBAAiB,SAASmrB,CAAO;AAAA,IAC1C;AACA,IAAA9xB,EAAA,MAAKyxB,IAAW,IAAIG,GAAUC,CAAO;AAAA,EACvC;AAAA,EACA,oBAAoB1/B,GAAMy/B,GAAU;AAClC,UAAMC,IAAU7xB,EAAA,MAAKyxB,IAAW,IAAIG,CAAQ;AAC5C,IAAAC,KAAA,QAAAA,KACA7xB,EAAA,MAAKyxB,IAAW,OAAOG,CAAQ;AAAA,EACjC;AAAA,EACA,YAAY;AACV,eAAW,CAAA,EAAGC,CAAO,KAAK7xB,EAAA,MAAKyxB;AAC7B,MAAAI,KAAA,QAAAA;AAEF,IAAA7xB,EAAA,MAAKyxB,IAAW,MAAK;AAAA,EACvB;AACF;AAzCEA,KAAA,eACAC,KAAA;AA4CF,MAAMK,KAAe;AAAA,EACnB,MAAM;AAAA,EACN,OAAO;AACT,GACMC,KAAa;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EACP,MAAM;AAAA,EACN,eAAe;AAAA,EACf,gBAAgB;AAClB;AACA,SAASC,KAAO;AAAC;AACjB,SAASC,GAAW9c,GAAI;AACtB,MAAIA,aAAcviB,MAAkBuiB,aAAc5iB,MAAuB4iB,aAAchjB,MAAqBgjB,aAAc3iB,MAAqB2iB,aAAc9iB;AAC3J,WAAO8iB;AAKT,UAHMA,aAAc,SAAS,OAAOA,KAAO,YAAYA,MAAO,QAC5DvkB,GAAY,gEAAgE,GAEtEukB,EAAG,MAAI;AAAA,IACb,KAAK;AACH,aAAO,IAAIviB,GAAeuiB,EAAG,OAAO;AAAA,IACtC,KAAK;AACH,aAAO,IAAI5iB,GAAoB4iB,EAAG,OAAO;AAAA,IAC3C,KAAK;AACH,aAAO,IAAIhjB,GAAkBgjB,EAAG,SAASA,EAAG,IAAI;AAAA,IAClD,KAAK;AACH,aAAO,IAAI3iB,GAAkB2iB,EAAG,SAASA,EAAG,QAAQA,EAAG,OAAO;AAAA,IAChE,KAAK;AACH,aAAO,IAAI9iB,GAAsB8iB,EAAG,SAASA,EAAG,OAAO;AAAA,EAC7D;AACE,SAAO,IAAI9iB,GAAsB8iB,EAAG,SAASA,EAAG,SAAQ,CAAE;AAC5D;AAj6PA,IAAA+c,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAk6PA,MAAMC,GAAe;AAAA,EAEnB,YAAYC,GAAYC,GAAYC,GAAQ;AAF9C,IAAAl6B,EAAA,MAAA05B;AACE,IAAA15B,EAAA,MAAAy5B,IAAa,IAAI,gBAAe;AAE9B,SAAK,aAAaO,GAClB,KAAK,aAAaC,GAClB,KAAK,SAASC,GACd,KAAK,aAAa,GAClB,KAAK,WAAW,GAChB,KAAK,cAAc,uBAAO,OAAO,IAAI,GACrC,KAAK,oBAAoB,uBAAO,OAAO,IAAI,GAC3C,KAAK,uBAAuB,uBAAO,OAAO,IAAI,GAC9C,KAAK,gBAAgB,uBAAO,OAAO,IAAI,GACvCA,EAAO,iBAAiB,WAAWz6B,EAAA,MAAKi6B,IAAAC,IAAW,KAAK,IAAI,GAAG;AAAA,MAC7D,QAAQryB,EAAA,MAAKmyB,IAAW;AAAA,IAC9B,CAAK;AAAA,EACH;AAAA,EA4DA,GAAGU,GAAYC,GAAS;AACtB,UAAMC,IAAK,KAAK;AAChB,QAAIA,EAAGF,CAAU;AACf,YAAM,IAAI,MAAM,0CAA0CA,CAAU,GAAG;AAEzE,IAAAE,EAAGF,CAAU,IAAIC;AAAA,EACnB;AAAA,EACA,KAAKD,GAAYvtB,GAAM0tB,GAAW;AAChC,SAAK,OAAO,YAAY;AAAA,MACtB,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,QAAQH;AAAA,MACR,MAAAvtB;AAAA,IACN,GAAO0tB,CAAS;AAAA,EACd;AAAA,EACA,gBAAgBH,GAAYvtB,GAAM0tB,GAAW;AAC3C,UAAMC,IAAa,KAAK,cAClBC,IAAa,QAAQ,cAAa;AACxC,SAAK,qBAAqBD,CAAU,IAAIC;AACxC,QAAI;AACF,WAAK,OAAO,YAAY;AAAA,QACtB,YAAY,KAAK;AAAA,QACjB,YAAY,KAAK;AAAA,QACjB,QAAQL;AAAA,QACR,YAAAI;AAAA,QACA,MAAA3tB;AAAA,MACR,GAAS0tB,CAAS;AAAA,IACd,SAAS5d,GAAI;AACX,MAAA8d,EAAW,OAAO9d,CAAE;AAAA,IACtB;AACA,WAAO8d,EAAW;AAAA,EACpB;AAAA,EACA,eAAeL,GAAYvtB,GAAM6tB,GAAkBH,GAAW;AAC5D,UAAMI,IAAW,KAAK,YACpBV,IAAa,KAAK,YAClBC,IAAa,KAAK,YAClBC,IAAS,KAAK;AAChB,WAAO,IAAI,eAAe;AAAA,MACxB,OAAO,CAAAS,MAAc;AACnB,cAAMC,IAAkB,QAAQ,cAAa;AAC7C,oBAAK,kBAAkBF,CAAQ,IAAI;AAAA,UACjC,YAAAC;AAAA,UACA,WAAWC;AAAA,UACX,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,UAAU;AAAA,QACpB,GACQV,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQE;AAAA,UACR,UAAAO;AAAA,UACA,MAAA9tB;AAAA,UACA,aAAa+tB,EAAW;AAAA,QAClC,GAAWL,CAAS,GACLM,EAAgB;AAAA,MACzB;AAAA,MACA,MAAM,CAAAD,MAAc;AAClB,cAAME,IAAiB,QAAQ,cAAa;AAC5C,oBAAK,kBAAkBH,CAAQ,EAAE,WAAWG,GAC5CX,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,aAAaC,EAAW;AAAA,QAClC,CAAS,GACME,EAAe;AAAA,MACxB;AAAA,MACA,QAAQ,CAAAC,MAAU;AAChB,QAAA1iC,GAAO0iC,aAAkB,OAAO,iCAAiC;AACjE,cAAMC,IAAmB,QAAQ,cAAa;AAC9C,oBAAK,kBAAkBL,CAAQ,EAAE,aAAaK,GAC9C,KAAK,kBAAkBL,CAAQ,EAAE,WAAW,IAC5CR,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,QAAQlB,GAAWsB,CAAM;AAAA,QACnC,CAAS,GACMC,EAAiB;AAAA,MAC1B;AAAA,IACN,GAAON,CAAgB;AAAA,EACrB;AAAA,EAwMA,UAAU;AAzwQZ,QAAAp/B;AA0wQI,KAAAA,IAAAiM,EAAA,MAAKmyB,QAAL,QAAAp+B,EAAiB,SACjBkM,EAAA,MAAKkyB,IAAa;AAAA,EACpB;AACF;AA1WEA,KAAA,eADFC,KAAA,eAgBEC,KAAU,SAAC;AAAA,EACT,MAAA/sB;AACJ,GAAK;AACD,MAAIA,EAAK,eAAe,KAAK;AAC3B;AAEF,MAAIA,EAAK,QAAQ;AACf,IAAAnN,EAAA,MAAKi6B,IAAAG,IAAL,WAA2BjtB;AAC3B;AAAA,EACF;AACA,MAAIA,EAAK,UAAU;AACjB,UAAM2tB,IAAa3tB,EAAK,YAClB4tB,IAAa,KAAK,qBAAqBD,CAAU;AACvD,QAAI,CAACC;AACH,YAAM,IAAI,MAAM,2BAA2BD,CAAU,EAAE;AAGzD,QADA,OAAO,KAAK,qBAAqBA,CAAU,GACvC3tB,EAAK,aAAaysB,GAAa;AACjC,MAAAmB,EAAW,QAAQ5tB,EAAK,IAAI;AAAA,aACnBA,EAAK,aAAaysB,GAAa;AACxC,MAAAmB,EAAW,OAAOhB,GAAW5sB,EAAK,MAAM,CAAC;AAAA;AAEzC,YAAM,IAAI,MAAM,0BAA0B;AAE5C;AAAA,EACF;AACA,QAAMke,IAAS,KAAK,cAAcle,EAAK,MAAM;AAC7C,MAAI,CAACke;AACH,UAAM,IAAI,MAAM,+BAA+Ble,EAAK,MAAM,EAAE;AAE9D,MAAIA,EAAK,YAAY;AACnB,UAAMotB,IAAa,KAAK,YACtBC,IAAartB,EAAK,YAClBstB,IAAS,KAAK;AAChB,YAAQ,IAAIpP,GAAQle,EAAK,IAAI,EAAE,KAAK,SAAUouB,GAAQ;AACpD,MAAAd,EAAO,YAAY;AAAA,QACjB,YAAAF;AAAA,QACA,YAAAC;AAAA,QACA,UAAUZ,GAAa;AAAA,QACvB,YAAYzsB,EAAK;AAAA,QACjB,MAAMouB;AAAA,MAChB,CAAS;AAAA,IACH,GAAG,SAAUF,GAAQ;AACnB,MAAAZ,EAAO,YAAY;AAAA,QACjB,YAAAF;AAAA,QACA,YAAAC;AAAA,QACA,UAAUZ,GAAa;AAAA,QACvB,YAAYzsB,EAAK;AAAA,QACjB,QAAQ4sB,GAAWsB,CAAM;AAAA,MACnC,CAAS;AAAA,IACH,CAAC;AACD;AAAA,EACF;AACA,MAAIluB,EAAK,UAAU;AACjB,IAAAnN,EAAA,MAAKi6B,IAAAE,IAAL,WAAuBhtB;AACvB;AAAA,EACF;AACA,EAAAke,EAAOle,EAAK,IAAI;AAClB,GAsFAgtB,KAAiB,SAAChtB,GAAM;AACtB,QAAM8tB,IAAW9tB,EAAK,UACpBotB,IAAa,KAAK,YAClBC,IAAartB,EAAK,YAClBstB,IAAS,KAAK,QACVzmB,IAAO,MACXqX,IAAS,KAAK,cAAcle,EAAK,MAAM,GACnCquB,IAAa;AAAA,IACjB,QAAQtgC,GAAO6W,IAAO,GAAG8oB,GAAW;AAClC,UAAI,KAAK;AACP;AAEF,YAAMY,IAAkB,KAAK;AAC7B,WAAK,eAAe1pB,GAChB0pB,IAAkB,KAAK,KAAK,eAAe,MAC7C,KAAK,iBAAiB,QAAQ,cAAa,GAC3C,KAAK,QAAQ,KAAK,eAAe,UAEnChB,EAAO,YAAY;AAAA,QACjB,YAAAF;AAAA,QACA,YAAAC;AAAA,QACA,QAAQX,GAAW;AAAA,QACnB,UAAAoB;AAAA,QACA,OAAA//B;AAAA,MACV,GAAW2/B,CAAS;AAAA,IACd;AAAA,IACA,QAAQ;AACN,MAAI,KAAK,gBAGT,KAAK,cAAc,IACnBJ,EAAO,YAAY;AAAA,QACjB,YAAAF;AAAA,QACA,YAAAC;AAAA,QACA,QAAQX,GAAW;AAAA,QACnB,UAAAoB;AAAA,MACV,CAAS,GACD,OAAOjnB,EAAK,YAAYinB,CAAQ;AAAA,IAClC;AAAA,IACA,MAAMI,GAAQ;AAEZ,MADA1iC,GAAO0iC,aAAkB,OAAO,gCAAgC,GAC5D,MAAK,gBAGT,KAAK,cAAc,IACnBZ,EAAO,YAAY;AAAA,QACjB,YAAAF;AAAA,QACA,YAAAC;AAAA,QACA,QAAQX,GAAW;AAAA,QACnB,UAAAoB;AAAA,QACA,QAAQlB,GAAWsB,CAAM;AAAA,MACnC,CAAS;AAAA,IACH;AAAA,IACA,gBAAgB,QAAQ,cAAa;AAAA,IACrC,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,aAAa;AAAA,IACb,aAAaluB,EAAK;AAAA,IAClB,OAAO;AAAA,EACb;AACI,EAAAquB,EAAW,eAAe,QAAO,GACjCA,EAAW,QAAQA,EAAW,eAAe,SAC7C,KAAK,YAAYP,CAAQ,IAAIO,GAC7B,QAAQ,IAAInQ,GAAQle,EAAK,MAAMquB,CAAU,EAAE,KAAK,WAAY;AAC1D,IAAAf,EAAO,YAAY;AAAA,MACjB,YAAAF;AAAA,MACA,YAAAC;AAAA,MACA,QAAQX,GAAW;AAAA,MACnB,UAAAoB;AAAA,MACA,SAAS;AAAA,IACjB,CAAO;AAAA,EACH,GAAG,SAAUI,GAAQ;AACnB,IAAAZ,EAAO,YAAY;AAAA,MACjB,YAAAF;AAAA,MACA,YAAAC;AAAA,MACA,QAAQX,GAAW;AAAA,MACnB,UAAAoB;AAAA,MACA,QAAQlB,GAAWsB,CAAM;AAAA,IACjC,CAAO;AAAA,EACH,CAAC;AACH,GACAjB,KAAqB,SAACjtB,GAAM;AAC1B,QAAM8tB,IAAW9tB,EAAK,UACpBotB,IAAa,KAAK,YAClBC,IAAartB,EAAK,YAClBstB,IAAS,KAAK,QACViB,IAAmB,KAAK,kBAAkBT,CAAQ,GACtDO,IAAa,KAAK,YAAYP,CAAQ;AACxC,UAAQ9tB,EAAK,QAAM;AAAA,IACjB,KAAK0sB,GAAW;AACd,MAAI1sB,EAAK,UACPuuB,EAAiB,UAAU,QAAO,IAElCA,EAAiB,UAAU,OAAO3B,GAAW5sB,EAAK,MAAM,CAAC;AAE3D;AAAA,IACF,KAAK0sB,GAAW;AACd,MAAI1sB,EAAK,UACPuuB,EAAiB,SAAS,QAAO,IAEjCA,EAAiB,SAAS,OAAO3B,GAAW5sB,EAAK,MAAM,CAAC;AAE1D;AAAA,IACF,KAAK0sB,GAAW;AACd,UAAI,CAAC2B,GAAY;AACf,QAAAf,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AACD;AAAA,MACF;AACA,MAAIO,EAAW,eAAe,KAAKruB,EAAK,cAAc,KACpDquB,EAAW,eAAe,QAAO,GAEnCA,EAAW,cAAcruB,EAAK,aAC9B,QAAQ,IAAIquB,EAAW,UAAU1B,EAAI,EAAE,KAAK,WAAY;AACtD,QAAAW,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AAAA,MACH,GAAG,SAAUI,GAAQ;AACnB,QAAAZ,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,QAAQlB,GAAWsB,CAAM;AAAA,QACrC,CAAW;AAAA,MACH,CAAC;AACD;AAAA,IACF,KAAKxB,GAAW;AAEd,UADAlhC,GAAO+iC,GAAkB,uCAAuC,GAC5DA,EAAiB;AACnB;AAEF,MAAAA,EAAiB,WAAW,QAAQvuB,EAAK,KAAK;AAC9C;AAAA,IACF,KAAK0sB,GAAW;AAEd,UADAlhC,GAAO+iC,GAAkB,qCAAqC,GAC1DA,EAAiB;AACnB;AAEF,MAAAA,EAAiB,WAAW,IAC5BA,EAAiB,WAAW,MAAK,GACjC17B,EAAA,MAAKi6B,IAAAI,IAAL,WAA6BqB,GAAkBT;AAC/C;AAAA,IACF,KAAKpB,GAAW;AACd,MAAAlhC,GAAO+iC,GAAkB,qCAAqC,GAC9DA,EAAiB,WAAW,MAAM3B,GAAW5sB,EAAK,MAAM,CAAC,GACzDnN,EAAA,MAAKi6B,IAAAI,IAAL,WAA6BqB,GAAkBT;AAC/C;AAAA,IACF,KAAKpB,GAAW;AACd,MAAI1sB,EAAK,UACPuuB,EAAiB,WAAW,QAAO,IAEnCA,EAAiB,WAAW,OAAO3B,GAAW5sB,EAAK,MAAM,CAAC,GAE5DnN,EAAA,MAAKi6B,IAAAI,IAAL,WAA6BqB,GAAkBT;AAC/C;AAAA,IACF,KAAKpB,GAAW;AACd,UAAI,CAAC2B;AACH;AAEF,YAAMG,IAAa5B,GAAW5sB,EAAK,MAAM;AACzC,cAAQ,IAAIquB,EAAW,YAAY1B,IAAM6B,CAAU,EAAE,KAAK,WAAY;AACpE,QAAAlB,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,SAAS;AAAA,QACrB,CAAW;AAAA,MACH,GAAG,SAAUI,GAAQ;AACnB,QAAAZ,EAAO,YAAY;AAAA,UACjB,YAAAF;AAAA,UACA,YAAAC;AAAA,UACA,QAAQX,GAAW;AAAA,UACnB,UAAAoB;AAAA,UACA,QAAQlB,GAAWsB,CAAM;AAAA,QACrC,CAAW;AAAA,MACH,CAAC,GACDG,EAAW,eAAe,OAAOG,CAAU,GAC3CH,EAAW,cAAc,IACzB,OAAO,KAAK,YAAYP,CAAQ;AAChC;AAAA,IACF;AACE,YAAM,IAAI,MAAM,wBAAwB;AAAA,EAChD;AACE,GACMZ,KAAuB,eAACqB,GAAkBT,GAAU;AArwQ5D,MAAAr/B,GAAAC,GAAAse;AAswQI,QAAM,QAAQ,WAAW,EAACve,IAAA8/B,EAAiB,cAAjB,gBAAA9/B,EAA4B,UAASC,IAAA6/B,EAAiB,aAAjB,gBAAA7/B,EAA2B,UAASse,IAAAuhB,EAAiB,eAAjB,gBAAAvhB,EAA6B,OAAO,CAAC,GACxI,OAAO,KAAK,kBAAkB8gB,CAAQ;AACxC;AAxwQF,IAAAW;AAixQA,MAAMC,GAAkB;AAAA,EAEtB,YAAY;AAAA,IACV,WAAAC,IAAY;AAAA,EAChB,GAAK;AAHH,IAAAv7B,EAAA,MAAAq7B,IAAa;AAIX,IAAA9zB,EAAA,MAAK8zB,IAAaE;AAAA,EACpB;AAAA,EACA,OAAOn2B,GAAOC,GAAQ;AACpB,QAAID,KAAS,KAAKC,KAAU;AAC1B,YAAM,IAAI,MAAM,qBAAqB;AAEvC,UAAMsM,IAAS,KAAK,cAAcvM,GAAOC,CAAM;AAC/C,WAAO;AAAA,MACL,QAAAsM;AAAA,MACA,SAASA,EAAO,WAAW,MAAM;AAAA,QAC/B,oBAAoB,CAACrK,EAAA,MAAK+zB;AAAA,MAClC,CAAO;AAAA,IACP;AAAA,EACE;AAAA,EACA,MAAMG,GAAkBp2B,GAAOC,GAAQ;AACrC,QAAI,CAACm2B,EAAiB;AACpB,YAAM,IAAI,MAAM,yBAAyB;AAE3C,QAAIp2B,KAAS,KAAKC,KAAU;AAC1B,YAAM,IAAI,MAAM,qBAAqB;AAEvC,IAAAm2B,EAAiB,OAAO,QAAQp2B,GAChCo2B,EAAiB,OAAO,SAASn2B;AAAA,EACnC;AAAA,EACA,QAAQm2B,GAAkB;AACxB,QAAI,CAACA,EAAiB;AACpB,YAAM,IAAI,MAAM,yBAAyB;AAE3C,IAAAA,EAAiB,OAAO,QAAQ,GAChCA,EAAiB,OAAO,SAAS,GACjCA,EAAiB,SAAS,MAC1BA,EAAiB,UAAU;AAAA,EAC7B;AAAA,EACA,cAAcp2B,GAAOC,GAAQ;AAC3B,IAAAlN,GAAY,yCAAyC;AAAA,EACvD;AACF;AAxCEkjC,KAAA;AAyCF,MAAMI,WAAyBH,GAAkB;AAAA,EAC/C,YAAY;AAAA,IACV,eAAA/K,IAAgB,WAAW;AAAA,IAC3B,WAAAgL,IAAY;AAAA,EAChB,GAAK;AACD,UAAM;AAAA,MACJ,WAAAA;AAAA,IACN,CAAK,GACD,KAAK,YAAYhL;AAAA,EACnB;AAAA,EACA,cAAcnrB,GAAOC,GAAQ;AAC3B,UAAMsM,IAAS,KAAK,UAAU,cAAc,QAAQ;AACpD,WAAAA,EAAO,QAAQvM,GACfuM,EAAO,SAAStM,GACTsM;AAAA,EACT;AACF;AAKA,MAAM+pB,GAAsB;AAAA,EAC1B,YAAY;AAAA,IACV,SAAAjjC,IAAU;AAAA,IACV,cAAAkjC,IAAe;AAAA,EACnB,GAAK;AACD,SAAK,UAAUljC,GACf,KAAK,eAAekjC;AAAA,EACtB;AAAA,EACA,MAAM,MAAM;AAAA,IACV,MAAAliC;AAAA,EACJ,GAAK;AACD,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,yEAAyE;AAE3F,QAAI,CAACA;AACH,YAAM,IAAI,MAAM,8BAA8B;AAEhD,UAAMlB,IAAM,KAAK,UAAUkB,KAAQ,KAAK,eAAe,WAAW;AAClE,WAAO,KAAK,OAAOlB,CAAG,EAAE,KAAK,CAAAqjC,OAAa;AAAA,MACxC,UAAAA;AAAA,MACA,cAAc,KAAK;AAAA,IACzB,EAAM,EAAE,MAAM,CAAAd,MAAU;AAClB,YAAM,IAAI,MAAM,kBAAkB,KAAK,eAAe,YAAY,EAAE,YAAYviC,CAAG,EAAE;AAAA,IACvF,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAOA,GAAK;AAChB,IAAAJ,GAAY,kCAAkC;AAAA,EAChD;AACF;AACA,MAAM0jC,WAA6BH,GAAsB;AAAA,EACvD,MAAM,OAAOnjC,GAAK;AAChB,UAAMqU,IAAO,MAAM9I,GAAUvL,GAAK,KAAK,eAAe,gBAAgB,MAAM;AAC5E,WAAOqU,aAAgB,cAAc,IAAI,WAAWA,CAAI,IAAIhS,GAAcgS,CAAI;AAAA,EAChF;AACF;AAKA,MAAMkvB,GAAkB;AAAA,EACtB,UAAUC,GAAM;AACd,WAAO;AAAA,EACT;AAAA,EACA,aAAaC,GAASC,GAAS;AAC7B,WAAO;AAAA,EACT;AAAA,EACA,eAAe3hB,GAAK;AAClB,WAAO;AAAA,EACT;AAAA,EACA,oBAAoBA,GAAK;AACvB,WAAO;AAAA,EACT;AAAA,EACA,sBAAsB4hB,GAAYF,GAASC,GAASE,GAAYC,GAAY;AAC1E,WAAO;AAAA,EACT;AAAA,EACA,QAAQC,IAAU,IAAO;AAAA,EAAC;AAC5B;AAx4QA,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAhsB,IAAAisB,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAy4QA,MAAMC,WAAyB3B,GAAkB;AAAA,EAQ/C,YAAY;AAAA,IACV,OAAA4B;AAAA,IACA,eAAAnN,IAAgB,WAAW;AAAA,EAC/B,GAAK;AACD,UAAK;AAZT,IAAAvwB,EAAA,MAAA48B;AACE,IAAA58B,EAAA,MAAAs8B;AACA,IAAAt8B,EAAA,MAAAu8B;AACA,IAAAv8B,EAAA,MAAAw8B;AACA,IAAAx8B,EAAA,MAAAy8B;AACA,IAAAz8B,EAAA,MAAA08B;AACA,IAAA18B,EAAA,MAAA28B;AACA,IAAA38B,EAAA,MAAA2Q,IAAM;AAMJ,IAAApJ,EAAA,MAAKk1B,IAASiB,IACdn2B,EAAA,MAAKm1B,IAAYnM;AAAA,EACnB;AAAA,EAgEA,UAAUwL,GAAM;AACd,QAAI,CAACA;AACH,aAAO;AAET,QAAI1iC,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAId,CAAI;AAChC,QAAI1iC;AACF,aAAOA;AAET,UAAM,CAACskC,GAAQC,GAAQC,CAAM,IAAIp+B,EAAA,MAAKm9B,GAAAI,IAAL,WAAmBjB,IAC9Ch5B,IAAMg5B,EAAK,WAAW,IAAI4B,IAAS,GAAGA,CAAM,GAAGC,CAAM,GAAGC,CAAM;AAEpE,QADAxkC,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,CAAG,GACvB1J;AACF,aAAAiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAId,GAAM1iC,CAAK,GACpBA;AAET,UAAMgJ,IAAK,KAAKiF,EAAA,MAAKm1B,GAAM,iBAAiB5rB,GAAA,MAAKF,IAAL,GAAU,IAChDpY,IAAMkH,EAAA,MAAKm9B,GAAAK,IAAL,WAAgB56B;AAC5B,IAAAiF,EAAA,MAAKs1B,GAAAC,IAAO,IAAId,GAAMxjC,CAAG,GACzB+O,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,GAAKxK,CAAG;AACxB,UAAMulC,IAASr+B,EAAA,MAAKm9B,GAAAQ,IAAL,WAAmB/6B;AAClC,WAAA5C,EAAA,MAAKm9B,GAAAU,IAAL,WAA+BK,GAAQC,GAAQC,GAAQC,IAChDvlC;AAAA,EACT;AAAA,EACA,aAAayjC,GAASC,GAAS;AA/+QjC,QAAA5gC;AAg/QI,UAAM0H,IAAM,GAAGi5B,CAAO,IAAIC,CAAO,IAC3BC,IAAa;AACnB,QAAIlkC,IAAOsP,EAAA,MAAKs1B,GAAAE,IAAU,IAAIZ,CAAU;AAiBxC,SAhBIlkC,KAAA,gBAAAA,EAAM,SAAQ+K,MAGd/K,MACFqD,IAAArD,EAAK,WAAL,QAAAqD,EAAa,UACbrD,EAAK,MAAM+K,GACX/K,EAAK,MAAM,QACXA,EAAK,SAAS,SAEdA,IAAO;AAAA,MACL,KAAA+K;AAAA,MACA,KAAK;AAAA,MACL,QAAQ;AAAA,IAChB,GACMuE,EAAA,MAAKs1B,GAAAE,IAAU,IAAIZ,GAAYlkC,CAAI,IAEjC,CAACgkC,KAAW,CAACC;AACf,aAAOjkC,EAAK;AAEd,UAAM+lC,IAAQt+B,EAAA,MAAKm9B,GAAAY,IAAL,WAAaxB;AAC3B,IAAAA,IAAUpgC,EAAK,aAAa,GAAGmiC,CAAK;AACpC,UAAMC,IAAQv+B,EAAA,MAAKm9B,GAAAY,IAAL,WAAavB;AAG3B,QAFAA,IAAUrgC,EAAK,aAAa,GAAGoiC,CAAK,GACpC12B,EAAA,MAAKs1B,GAAAG,IAAM,MAAM,QAAQ,IACrBf,MAAY,aAAaC,MAAY,aAAaD,MAAYC;AAChE,aAAOjkC,EAAK;AAEd,UAAMsiB,IAAM,IAAI,MAAM,GAAG;AACzB,aAAS7f,IAAI,GAAGA,KAAK,KAAKA,KAAK;AAC7B,YAAMsE,IAAItE,IAAI;AACd,MAAA6f,EAAI7f,CAAC,IAAIsE,KAAK,UAAUA,IAAI,UAAUA,IAAI,SAAS,UAAU;AAAA,IAC/D;AACA,UAAMk/B,IAAQ3jB,EAAI,KAAK,GAAG,GACpBjY,IAAK,KAAKiF,EAAA,MAAKm1B,GAAM,eACrBqB,IAAS9lC,EAAK,SAASyH,EAAA,MAAKm9B,GAAAQ,IAAL,WAAmB/6B;AAChD,IAAA5C,EAAA,MAAKm9B,GAAAU,IAAL,WAA+BW,GAAOA,GAAOA,GAAOH,IACpDr+B,EAAA,MAAKm9B,GAAAO,IAAL,WAAwBW;AACxB,UAAMI,IAAW,CAAC5/B,GAAG9C,MAAM;AACzB,YAAMqL,IAAQk3B,EAAMz/B,CAAC,IAAI,KACnBwI,IAAMk3B,EAAM1/B,CAAC,IAAI,KACjBkD,IAAM,IAAI,MAAMhG,IAAI,CAAC;AAC3B,eAASf,IAAI,GAAGA,KAAKe,GAAGf;AACtB,QAAA+G,EAAI/G,CAAC,IAAIoM,IAAQpM,IAAIe,KAAKsL,IAAMD;AAElC,aAAOrF,EAAI,KAAK,GAAG;AAAA,IACrB;AACA,WAAA/B,EAAA,MAAKm9B,GAAAU,IAAL,WAA+BY,EAAS,GAAG,CAAC,GAAGA,EAAS,GAAG,CAAC,GAAGA,EAAS,GAAG,CAAC,GAAGJ,IAC/E9lC,EAAK,MAAMyH,EAAA,MAAKm9B,GAAAK,IAAL,WAAgB56B,IACpBrK,EAAK;AAAA,EACd;AAAA,EACA,eAAesiB,GAAK;AAClB,QAAIjhB,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,CAAG;AAC/B,QAAIjhB;AACF,aAAOA;AAET,UAAM,CAAC8kC,CAAM,IAAI1+B,EAAA,MAAKm9B,GAAAI,IAAL,WAAmB,CAAC1iB,CAAG,IAClCvX,IAAM,SAASo7B,CAAM;AAE3B,QADA9kC,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,CAAG,GACvB1J;AACF,aAAAiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,GAAKjhB,CAAK,GACnBA;AAET,UAAMgJ,IAAK,KAAKiF,EAAA,MAAKm1B,GAAM,cAAc5rB,GAAA,MAAKF,IAAL,GAAU,IAC7CpY,IAAMkH,EAAA,MAAKm9B,GAAAK,IAAL,WAAgB56B;AAC5B,IAAAiF,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,GAAK/hB,CAAG,GACxB+O,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,GAAKxK,CAAG;AACxB,UAAMulC,IAASr+B,EAAA,MAAKm9B,GAAAQ,IAAL,WAAmB/6B;AAClC,WAAA5C,EAAA,MAAKm9B,GAAAW,IAAL,WAAoCY,GAAQL,IACrCvlC;AAAA,EACT;AAAA,EACA,oBAAoB+hB,GAAK;AACvB,QAAIjhB,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,KAAO,YAAY;AAC/C,QAAIjhB;AACF,aAAOA;AAET,QAAI8kC,GAAQp7B;AAQZ,QAPIuX,KACF,CAAC6jB,CAAM,IAAI1+B,EAAA,MAAKm9B,GAAAI,IAAL,WAAmB,CAAC1iB,CAAG,IAClCvX,IAAM,cAAco7B,CAAM,MAE1Bp7B,IAAM,cAER1J,IAAQiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,CAAG,GACvB1J;AACF,aAAAiO,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,GAAKjhB,CAAK,GACnBA;AAET,UAAMgJ,IAAK,KAAKiF,EAAA,MAAKm1B,GAAM,mBAAmB5rB,GAAA,MAAKF,IAAL,GAAU,IAClDpY,IAAMkH,EAAA,MAAKm9B,GAAAK,IAAL,WAAgB56B;AAC5B,IAAAiF,EAAA,MAAKs1B,GAAAC,IAAO,IAAIviB,GAAK/hB,CAAG,GACxB+O,EAAA,MAAKs1B,GAAAC,IAAO,IAAI95B,GAAKxK,CAAG;AACxB,UAAMulC,IAASr+B,EAAA,MAAKm9B,GAAAQ,IAAL,WAAmB/6B;AAClC,WAAA5C,EAAA,MAAKm9B,GAAAM,IAAL,WAA8BY,IAC1BxjB,KACF7a,EAAA,MAAKm9B,GAAAW,IAAL,WAAoCY,GAAQL,IAEvCvlC;AAAA,EACT;AAAA,EACA,sBAAsB2jC,GAAYF,GAASC,GAASE,GAAYC,GAAY;AArlR9E,QAAA/gC;AAslRI,UAAM0H,IAAM,GAAGi5B,CAAO,IAAIC,CAAO,IAAIE,CAAU,IAAIC,CAAU;AAC7D,QAAIpkC,IAAOsP,EAAA,MAAKs1B,GAAAE,IAAU,IAAIZ,CAAU;AAiBxC,SAhBIlkC,KAAA,gBAAAA,EAAM,SAAQ+K,MAGd/K,MACFqD,IAAArD,EAAK,WAAL,QAAAqD,EAAa,UACbrD,EAAK,MAAM+K,GACX/K,EAAK,MAAM,QACXA,EAAK,SAAS,SAEdA,IAAO;AAAA,MACL,KAAA+K;AAAA,MACA,KAAK;AAAA,MACL,QAAQ;AAAA,IAChB,GACMuE,EAAA,MAAKs1B,GAAAE,IAAU,IAAIZ,GAAYlkC,CAAI,IAEjC,CAACgkC,KAAW,CAACC;AACf,aAAOjkC,EAAK;AAEd,UAAM,CAAC+lC,GAAOC,CAAK,IAAI,CAAChC,GAASC,CAAO,EAAE,IAAIx8B,EAAA,MAAKm9B,GAAAY,IAAQ,KAAK,IAAI,CAAC;AACrE,QAAIY,IAAS,KAAK,MAAM,SAASL,EAAM,CAAC,IAAI,SAASA,EAAM,CAAC,IAAI,SAASA,EAAM,CAAC,CAAC,GAC7EM,IAAS,KAAK,MAAM,SAASL,EAAM,CAAC,IAAI,SAASA,EAAM,CAAC,IAAI,SAASA,EAAM,CAAC,CAAC,GAC7E,CAACM,GAAUC,CAAQ,IAAI,CAACpC,GAAYC,CAAU,EAAE,IAAI38B,EAAA,MAAKm9B,GAAAY,IAAQ,KAAK,IAAI,CAAC;AAC/E,IAAIa,IAASD,MACX,CAACA,GAAQC,GAAQC,GAAUC,CAAQ,IAAI,CAACF,GAAQD,GAAQG,GAAUD,CAAQ,IAE5Eh3B,EAAA,MAAKs1B,GAAAG,IAAM,MAAM,QAAQ;AACzB,UAAMmB,IAAW,CAACM,GAAIC,GAAIjjC,MAAM;AAC9B,YAAMgG,IAAM,IAAI,MAAM,GAAG,GACnBk9B,KAAQL,IAASD,KAAU5iC,GAC3BmjC,IAAWH,IAAK,KAChBI,KAAWH,IAAKD,MAAO,MAAMhjC;AACnC,UAAIqjC,IAAO;AACX,eAASpkC,IAAI,GAAGA,KAAKe,GAAGf,KAAK;AAC3B,cAAM,IAAI,KAAK,MAAM2jC,IAAS3jC,IAAIikC,CAAI,GAChCrlC,IAAQslC,IAAWlkC,IAAImkC;AAC7B,iBAASE,IAAID,GAAMC,KAAK,GAAGA;AACzB,UAAAt9B,EAAIs9B,CAAC,IAAIzlC;AAEX,QAAAwlC,IAAO,IAAI;AAAA,MACb;AACA,eAASpkC,IAAIokC,GAAMpkC,IAAI,KAAKA;AAC1B,QAAA+G,EAAI/G,CAAC,IAAI+G,EAAIq9B,IAAO,CAAC;AAEvB,aAAOr9B,EAAI,KAAK,GAAG;AAAA,IACrB,GACMa,IAAK,KAAKiF,EAAA,MAAKm1B,GAAM,QAAQP,CAAU,WACvC4B,IAAS9lC,EAAK,SAASyH,EAAA,MAAKm9B,GAAAQ,IAAL,WAAmB/6B;AAChD,WAAA5C,EAAA,MAAKm9B,GAAAO,IAAL,WAAwBW,IACxBr+B,EAAA,MAAKm9B,GAAAU,IAAL,WAA+BY,EAASI,EAAS,CAAC,GAAGC,EAAS,CAAC,GAAG,CAAC,GAAGL,EAASI,EAAS,CAAC,GAAGC,EAAS,CAAC,GAAG,CAAC,GAAGL,EAASI,EAAS,CAAC,GAAGC,EAAS,CAAC,GAAG,CAAC,GAAGT,IACpJ9lC,EAAK,MAAMyH,EAAA,MAAKm9B,GAAAK,IAAL,WAAgB56B,IACpBrK,EAAK;AAAA,EACd;AAAA,EACA,QAAQqkC,IAAU,IAAO;AA7oR3B,QAAAhhC,GAAAC,GAAAse,GAAAC;AA8oRI,IAAIwiB,OAAWhhC,IAAAiM,EAAA,MAAKq1B,QAAL,QAAAthC,EAAiB,WAGhCC,IAAAgM,EAAA,MAAKk1B,QAAL,QAAAlhC,EAAa,WAAW,WAAW,UACnCiM,EAAA,MAAKi1B,IAAS,QACd5iB,IAAAtS,EAAA,MAAKi1B,QAAL,QAAA3iB,EAAc,SACdrS,EAAA,MAAKg1B,IAAU,QACf1iB,IAAAvS,EAAA,MAAKq1B,QAAL,QAAA9iB,EAAiB,SACjBtS,EAAA,MAAKo1B,IAAa,OAClBp1B,EAAA,MAAKoJ,IAAM;AAAA,EACb;AA0CF;AAxTE2rB,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAhsB,KAAA,eAPFisB,IAAA,eAgBMC,KAAM,WAAG;AACX,SAAOv1B,EAAA,MAAKi1B,OAALh1B,EAAA,MAAKg1B,IAAY,oBAAI,IAAG;AACjC,GACIO,KAAS,WAAG;AACd,SAAOx1B,EAAA,MAAKq1B,OAALp1B,EAAA,MAAKo1B,IAAe,oBAAI,IAAG;AACpC,GACII,KAAK,WAAG;AACV,MAAI,CAACz1B,EAAA,MAAKk1B,KAAQ;AAChB,UAAMzzB,IAAMzB,EAAA,MAAKo1B,IAAU,cAAc,KAAK,GACxC;AAAA,MACJ,OAAArzB;AAAA,IACR,IAAUN;AACJ,IAAAM,EAAM,aAAa,UACnBA,EAAM,UAAU,UAChBA,EAAM,QAAQA,EAAM,SAAS,GAC7BA,EAAM,WAAW,YACjBA,EAAM,MAAMA,EAAM,OAAO,GACzBA,EAAM,SAAS;AACf,UAAM8H,IAAM7J,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,KAAK;AACxD,IAAAyN,EAAI,aAAa,SAAS,CAAC,GAC3BA,EAAI,aAAa,UAAU,CAAC,GAC5B5J,EAAA,MAAKi1B,IAASl1B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,MAAM,IAC3DqF,EAAI,OAAOoI,CAAG,GACdA,EAAI,OAAO7J,EAAA,MAAKk1B,GAAM,GACtBl1B,EAAA,MAAKo1B,IAAU,KAAK,OAAO3zB,CAAG;AAAA,EAChC;AACA,SAAOzB,EAAA,MAAKk1B;AACd,GACAQ,KAAa,SAACjB,GAAM;AAClB,MAAIA,EAAK,WAAW,GAAG;AACrB,UAAMgD,IAAOhD,EAAK,CAAC,GACbzI,IAAS,IAAI,MAAM,GAAG;AAC5B,aAAS74B,IAAI,GAAGA,IAAI,KAAKA;AACvB,MAAA64B,EAAO74B,CAAC,IAAIskC,EAAKtkC,CAAC,IAAI;AAExB,UAAMwjC,IAAQ3K,EAAO,KAAK,GAAG;AAC7B,WAAO,CAAC2K,GAAOA,GAAOA,CAAK;AAAA,EAC7B;AACA,QAAM,CAACc,GAAMC,GAAMC,CAAI,IAAIlD,GACrBmD,IAAU,IAAI,MAAM,GAAG,GACvBC,IAAU,IAAI,MAAM,GAAG,GACvBC,IAAU,IAAI,MAAM,GAAG;AAC7B,WAAS3kC,IAAI,GAAGA,IAAI,KAAKA;AACvB,IAAAykC,EAAQzkC,CAAC,IAAIskC,EAAKtkC,CAAC,IAAI,KACvB0kC,EAAQ1kC,CAAC,IAAIukC,EAAKvkC,CAAC,IAAI,KACvB2kC,EAAQ3kC,CAAC,IAAIwkC,EAAKxkC,CAAC,IAAI;AAEzB,SAAO,CAACykC,EAAQ,KAAK,GAAG,GAAGC,EAAQ,KAAK,GAAG,GAAGC,EAAQ,KAAK,GAAG,CAAC;AACjE,GACAnC,KAAU,SAAC56B,GAAI;AACb,MAAIiF,EAAA,MAAKg1B,QAAa,QAAW;AAC/B,IAAA/0B,EAAA,MAAK+0B,IAAW;AAChB,UAAM/jC,IAAM+O,EAAA,MAAKo1B,IAAU;AAC3B,IAAInkC,MAAQ+O,EAAA,MAAKo1B,IAAU,YACrB/2B,GAAapN,CAAG,IAClBL,EAAK,yDAAyD,IAE9DqP,EAAA,MAAK+0B,IAAWxjC,GAAcP,GAAK,EAAE;AAAA,EAG3C;AACA,SAAO,OAAO+O,EAAA,MAAKg1B,GAAQ,IAAIj6B,CAAE;AACnC,GAkMA66B,KAAwB,SAACY,GAAQ;AAC/B,QAAMuB,IAAgB/3B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,eAAe;AAC5E,EAAA27B,EAAc,aAAa,QAAQ,QAAQ,GAC3CA,EAAc,aAAa,UAAU,iDAAiD,GACtFvB,EAAO,OAAOuB,CAAa;AAC7B,GACAlC,KAAkB,SAACW,GAAQ;AACzB,QAAMuB,IAAgB/3B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,eAAe;AAC5E,EAAA27B,EAAc,aAAa,QAAQ,QAAQ,GAC3CA,EAAc,aAAa,UAAU,sFAAsF,GAC3HvB,EAAO,OAAOuB,CAAa;AAC7B,GACAjC,KAAa,SAAC/6B,GAAI;AAChB,QAAMy7B,IAASx2B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,QAAQ;AAC9D,SAAAo6B,EAAO,aAAa,+BAA+B,MAAM,GACzDA,EAAO,aAAa,MAAMz7B,CAAE,GAC5BiF,EAAA,MAAKs1B,GAAAG,IAAM,OAAOe,CAAM,GACjBA;AACT,GACAT,KAAa,SAACiC,GAAqBC,GAAMtB,GAAO;AAC9C,QAAMuB,IAASl4B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ67B,CAAI;AAC1D,EAAAC,EAAO,aAAa,QAAQ,UAAU,GACtCA,EAAO,aAAa,eAAevB,CAAK,GACxCqB,EAAoB,OAAOE,CAAM;AACnC,GACAlC,KAAyB,SAACmC,GAAQC,GAAQC,GAAQ7B,GAAQ;AACxD,QAAMwB,IAAsBh4B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,qBAAqB;AACxF,EAAAo6B,EAAO,OAAOwB,CAAmB,GACjC7/B,EAAA,MAAKm9B,GAAAS,IAAL,WAAmBiC,GAAqB,WAAWG,IACnDhgC,EAAA,MAAKm9B,GAAAS,IAAL,WAAmBiC,GAAqB,WAAWI,IACnDjgC,EAAA,MAAKm9B,GAAAS,IAAL,WAAmBiC,GAAqB,WAAWK;AACrD,GACApC,KAA8B,SAACqC,GAAQ9B,GAAQ;AAC7C,QAAMwB,IAAsBh4B,EAAA,MAAKo1B,IAAU,gBAAgBh5B,IAAQ,qBAAqB;AACxF,EAAAo6B,EAAO,OAAOwB,CAAmB,GACjC7/B,EAAA,MAAKm9B,GAAAS,IAAL,WAAmBiC,GAAqB,WAAWM;AACrD,GACApC,KAAO,SAACp1B,GAAO;AACb,SAAAd,EAAA,MAAKs1B,GAAAG,IAAM,MAAM,QAAQ30B,GAClBD,GAAO,iBAAiBb,EAAA,MAAKs1B,GAAAG,GAAK,EAAE,iBAAiB,OAAO,CAAC;AACtE;AAMF,MAAM8C,GAA4B;AAAA,EAChC,YAAY;AAAA,IACV,SAAApnC,IAAU;AAAA,EACd,GAAK;AACD,SAAK,UAAUA;AAAA,EACjB;AAAA,EACA,MAAM,MAAM;AAAA,IACV,UAAAqN;AAAA,EACJ,GAAK;AACD,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,kEAAkE;AAEpF,QAAI,CAACA;AACH,YAAM,IAAI,MAAM,kCAAkC;AAEpD,UAAMvN,IAAM,GAAG,KAAK,OAAO,GAAGuN,CAAQ;AACtC,WAAO,KAAK,OAAOvN,CAAG,EAAE,MAAM,CAAAuiC,MAAU;AACtC,YAAM,IAAI,MAAM,gCAAgCviC,CAAG,EAAE;AAAA,IACvD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAOA,GAAK;AAChB,IAAAJ,GAAY,kCAAkC;AAAA,EAChD;AACF;AACA,MAAM2nC,WAAmCD,GAA4B;AAAA,EACnE,MAAM,OAAOtnC,GAAK;AAChB,UAAMqU,IAAO,MAAM9I,GAAUvL,GAAK,aAAa;AAC/C,WAAO,IAAI,WAAWqU,CAAI;AAAA,EAC5B;AACF;AAKA,MAAMmzB,GAAgB;AAAA,EACpB,YAAY;AAAA,IACV,SAAAtnC,IAAU;AAAA,EACd,GAAK;AACD,SAAK,UAAUA;AAAA,EACjB;AAAA,EACA,MAAM,MAAM;AAAA,IACV,UAAAqN;AAAA,EACJ,GAAK;AACD,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,sDAAsD;AAExE,QAAI,CAACA;AACH,YAAM,IAAI,MAAM,kCAAkC;AAEpD,UAAMvN,IAAM,GAAG,KAAK,OAAO,GAAGuN,CAAQ;AACtC,WAAO,KAAK,OAAOvN,CAAG,EAAE,MAAM,CAAAuiC,MAAU;AACtC,YAAM,IAAI,MAAM,gCAAgCviC,CAAG,EAAE;AAAA,IACvD,CAAC;AAAA,EACH;AAAA,EACA,MAAM,OAAOA,GAAK;AAChB,IAAAJ,GAAY,kCAAkC;AAAA,EAChD;AACF;AACA,MAAM6nC,WAAuBD,GAAgB;AAAA,EAC3C,MAAM,OAAOxnC,GAAK;AAChB,UAAMqU,IAAO,MAAM9I,GAAUvL,GAAK,aAAa;AAC/C,WAAO,IAAI,WAAWqU,CAAI;AAAA,EAC5B;AACF;AASIlW,MACFwB,EAAK,wDAAwD;AAE/D,eAAe+nC,GAAqB1nC,GAAK;AAEvC,QAAMqU,IAAO,MADF,QAAQ,iBAAiB,IAAI,EAClB,SAAS,SAASrU,CAAG;AAC3C,SAAO,IAAI,WAAWqU,CAAI;AAC5B;AACA,MAAMszB,WAA0BpE,GAAkB;AAAA;AAClD,MAAMqE,WAA0B7E,GAAkB;AAAA,EAChD,cAAcl2B,GAAOC,GAAQ;AAG3B,WAFgB,QAAQ,iBAAiB,QAAQ,EAAE,cAAc,YAAY,GAAG,EACzD,iBAAiB,EAC1B,aAAaD,GAAOC,CAAM;AAAA,EAC1C;AACF;AACA,MAAM+6B,WAA8B1E,GAAsB;AAAA,EACxD,MAAM,OAAOnjC,GAAK;AAChB,WAAO0nC,GAAqB1nC,CAAG;AAAA,EACjC;AACF;AACA,MAAM8nC,WAAoCR,GAA4B;AAAA,EACpE,MAAM,OAAOtnC,GAAK;AAChB,WAAO0nC,GAAqB1nC,CAAG;AAAA,EACjC;AACF;AACA,MAAM+nC,WAAwBP,GAAgB;AAAA,EAC5C,MAAM,OAAOxnC,GAAK;AAChB,WAAO0nC,GAAqB1nC,CAAG;AAAA,EACjC;AACF;AAIA,MAAMgoC,KAA0B,sBAC1B;AAAA,EACJ,OAAAC;AAAA,EACA,MAAAC;AACF,IAAI;AACJ,SAASC,GAAW70B,GAAO+nB,GAAOuE,GAAME,GAAMD,GAAME,GAAM;AACxD,EAAAzsB,EAAM+nB,IAAQ,IAAI,CAAC,IAAI,KAAK,IAAI/nB,EAAM+nB,IAAQ,IAAI,CAAC,GAAGuE,CAAI,GAC1DtsB,EAAM+nB,IAAQ,IAAI,CAAC,IAAI,KAAK,IAAI/nB,EAAM+nB,IAAQ,IAAI,CAAC,GAAGyE,CAAI,GAC1DxsB,EAAM+nB,IAAQ,IAAI,CAAC,IAAI,KAAK,IAAI/nB,EAAM+nB,IAAQ,IAAI,CAAC,GAAGwE,CAAI,GAC1DvsB,EAAM+nB,IAAQ,IAAI,CAAC,IAAI,KAAK,IAAI/nB,EAAM+nB,IAAQ,IAAI,CAAC,GAAG0E,CAAI;AAC5D;AACA,MAAMqI,KAAa,IAAI,YAAY,IAAI,WAAW,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AA5zR7E,IAAAC,IAAAC;AA6zRA,MAAMC,GAAW;AAAA,EAGf,YAAYC,GAAQnK,GAAQ;AAF5B,IAAA52B,EAAA,MAAA4gC;AACA,IAAA5gC,EAAA,MAAA6gC;AAEE,IAAAt5B,EAAA,MAAKq5B,IAAUG,IACfx5B,EAAA,MAAKs5B,IAAUjK;AAAA,EACjB;AAAA,EACA,IAAI,SAAS;AACX,WAAOtvB,EAAA,MAAKs5B,IAAQ;AAAA,EACtB;AAAA,EACA,QAAQnmC,GAAG;AACT,WAAO6M,EAAA,MAAKs5B,IAAQnmC,CAAC,MAAMkmC;AAAA,EAC7B;AAAA,EACA,KAAKlmC,GAAG;AACN,WAAO6M,EAAA,MAAKu5B,IAAQpmC,IAAI,IAAI,CAAC,IAAI;AAAA,EACnC;AAAA,EACA,KAAKA,GAAG;AACN,WAAO6M,EAAA,MAAKu5B,IAAQpmC,IAAI,IAAI,CAAC,IAAI;AAAA,EACnC;AAAA,EACA,KAAKA,GAAG;AACN,YAAQ6M,EAAA,MAAKu5B,IAAQpmC,IAAI,IAAI,CAAC,IAAI,KAAK;AAAA,EACzC;AAAA,EACA,KAAKA,GAAG;AACN,YAAQ6M,EAAA,MAAKu5B,IAAQpmC,IAAI,IAAI,CAAC,IAAI,KAAK;AAAA,EACzC;AACF;AAxBEmmC,KAAA,eACAC,KAAA;AAwBF,MAAMG,KAAsB,CAAC1mB,GAAKvX,MAAQ;AACxC,MAAI,CAACuX;AACH;AAEF,MAAIjhB,IAAQihB,EAAI,IAAIvX,CAAG;AACvB,SAAK1J,MACHA,IAAQ;AAAA,IACN,cAAc,oBAAI,IAAG;AAAA,IACrB,sBAAsB;AAAA,EAC5B,GACIihB,EAAI,IAAIvX,GAAK1J,CAAK,IAEbA;AACT;AAp2RA,IAAA4nC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAnB,IAAAoB,IAAAC,IAAAC;AAq2RA,MAAMC,GAAwB;AAAA,EA0B5B,YAAYxwB,GAAQywB,GAAiBC,IAAsB,IAAO;AA1BpE,IAAAriC,EAAA,MAAAiiC;AACE,IAAAjiC,EAAA,MAAAihC,IAAU;AAAA,MACR,WAAW;AAAA,IACf;AACE,IAAAjhC,EAAA,MAAAkhC,IAAe;AAAA,MACb,WAAW;AAAA,MACX,WAAW,CAAA;AAAA,MACX,UAAU,CAAA;AAAA,MACV,cAAc,CAAA;AAAA,MACd,CAACX,EAAuB,GAAG,CAAA;AAAA,IAC/B;AACE,IAAAvgC,EAAA,MAAAmhC,IAAqB,oBAAI,IAAG;AAC5B,IAAAnhC,EAAA,MAAAohC,IAAc,CAAA;AACd,IAAAphC,EAAA,MAAAqhC,IAAsB,CAAA;AACtB,IAAArhC,EAAA,MAAAshC,IAAsB,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACzC,IAAAthC,EAAA,MAAAuhC,IAAW,CAAC,QAAW,QAAW,OAAU,KAAQ;AACpD,IAAAvhC,EAAA,MAAAwhC,IAAe,IAAI,aAAa,CAAC,OAAU,OAAU,QAAW,MAAS,CAAC;AAC1E,IAAAxhC,EAAA,MAAAyhC,IAAkB;AAClB,IAAAzhC,EAAA,MAAA0hC,IAAuB,oBAAI,IAAG;AAC9B,IAAA1hC,EAAA,MAAA2hC,IAAc,oBAAI,IAAG;AACrB,IAAA3hC,EAAA,MAAA4hC,IAAuB,oBAAI,IAAG;AAC9B,IAAA5hC,EAAA,MAAA6hC;AACA,IAAA7hC,EAAA,MAAA8hC;AACA,IAAA9hC,EAAA,MAAA+hC;AACA,IAAA/hC,EAAA,MAAA4gC;AACA,IAAA5gC,EAAA,MAAAgiC;AAEE,IAAAz6B,EAAA,MAAKs6B,IAAelwB,EAAO,QAC3BpK,EAAA,MAAKu6B,IAAgBnwB,EAAO,SAC5BlS,EAAA,MAAKwiC,IAAAC,IAAL,WAAuBE,IACnBC,KACF96B,EAAA,MAAKy6B,IAAiB,oBAAI,IAAG;AAAA,EAEjC;AAAA,EACA,oBAAoBI,GAAiB;AACnC,IAAIA,KAAmB96B,EAAA,MAAKs5B,IAAQ,UAClCnhC,EAAA,MAAKwiC,IAAAC,IAAL,WAAuBE,GAAiB96B,EAAA,MAAKs5B;AAAA,EAEjD;AAAA,EAYA,KAAK0B,GAAO;AACV,WAAA/6B,EAAA,MAAK05B,IAAU;AAAA,MACb,WAAW35B,EAAA,MAAK25B;AAAA,IACtB,IACI15B,EAAA,MAAK25B,IAAe;AAAA,MAClB,WAAW55B,EAAA,MAAK45B;AAAA,MAChB,WAAW;AAAA,QACT,WAAW55B,EAAA,MAAK45B,IAAa;AAAA,MACrC;AAAA,MACM,UAAU;AAAA,QACR,WAAW55B,EAAA,MAAK45B,IAAa;AAAA,MACrC;AAAA,MACM,cAAc;AAAA,QACZ,WAAW55B,EAAA,MAAK45B,IAAa;AAAA,MACrC;AAAA,MACM,CAACX,EAAuB,GAAG;AAAA,QACzB,WAAWj5B,EAAA,MAAK45B,IAAaX,EAAuB;AAAA,MAC5D;AAAA,IACA,IACIh5B,EAAA,MAAKg6B,IAAW;AAAA,MACd,WAAWj6B,EAAA,MAAKi6B;AAAA,IACtB,IACIj6B,EAAA,MAAK85B,IAAY,KAAKkB,CAAK,GACpB;AAAA,EACT;AAAA,EACA,QAAQA,GAAO;AAh7RjB,QAAAjnC;AAi7RI,UAAMknC,IAAW,OAAO,eAAej7B,EAAA,MAAK25B,GAAO;AACnD,QAAIsB,MAAa;AACf,aAAO;AAET,IAAAh7B,EAAA,MAAK05B,IAAUsB,IACfh7B,EAAA,MAAK25B,IAAe,OAAO,eAAe55B,EAAA,MAAK45B,GAAY,IAC3D35B,EAAA,MAAKg6B,IAAW,OAAO,eAAej6B,EAAA,MAAKi6B,GAAQ;AACnD,UAAMiB,IAAWl7B,EAAA,MAAK85B,IAAY,IAAG;AACrC,WAAIoB,MAAa,YACfnnC,IAAA2lC,GAAoB15B,EAAA,MAAK06B,KAAgBM,CAAK,MAA9C,QAAAjnC,EAAiD,aAAa,IAAImnC,IAClEl7B,EAAA,MAAKs5B,IAAQ0B,CAAK,IAAIh7B,EAAA,MAAKs5B,IAAQ4B,CAAQ,IAEtC;AAAA,EACT;AAAA,EACA,iBAAiBC,GAAK;AACpB,WAAAn7B,EAAA,MAAK85B,IAAY,KAAKqB,CAAG,GAClB;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,WAAIn7B,EAAA,MAAK85B,IAAY,WAAW,IACvB,OAEF95B,EAAA,MAAK85B,IAAY,GAAG,EAAE;AAAA,EAC/B;AAAA,EACA,kBAAkBkB,GAAO;AAz8R3B,QAAAjnC;AA08RI,UAAMmnC,IAAWl7B,EAAA,MAAK85B,IAAY,IAAG;AACrC,WAAIoB,MAAa,YACfnnC,IAAA2lC,GAAoB15B,EAAA,MAAK06B,KAAgBM,CAAK,MAA9C,QAAAjnC,EAAiD,aAAa,IAAImnC,IAClEl7B,EAAA,MAAKs5B,IAAQ0B,CAAK,IAAIh7B,EAAA,MAAKs5B,IAAQ4B,CAAQ,IAEtC;AAAA,EACT;AAAA,EACA,mBAAmBF,GAAO;AACxB,WAAAh7B,EAAA,MAAK+5B,IAAoB,KAAKiB,CAAK,GAC5B;AAAA,EACT;AAAA,EACA,iBAAiBA,GAAO;AAr9R1B,QAAAjnC;AAs9RI,UAAMmnC,IAAWl7B,EAAA,MAAK+5B,IAAoB,IAAG;AAC7C,WAAImB,MAAa,YACfnnC,IAAA2lC,GAAoB15B,EAAA,MAAK06B,KAAgBM,CAAK,MAA9C,QAAAjnC,EAAiD,aAAa,IAAImnC,IAClEl7B,EAAA,MAAKs5B,IAAQ0B,CAAK,IAAIh7B,EAAA,MAAKs5B,IAAQ4B,CAAQ,IAEtC;AAAA,EACT;AAAA,EACA,kBAAkB75B,GAAK;AACrB,WAAArB,EAAA,MAAKg6B,IAAoB,KAAK1lC,EAAK,oBAAoB0L,EAAA,MAAKg6B,IAAoB,GAAG,EAAE,GAAG34B,EAAI,aAAY,CAAE,CAAC,GACpG;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,WAAIrB,EAAA,MAAKg6B,IAAoB,SAAS,KACpCh6B,EAAA,MAAKg6B,IAAoB,IAAG,GAEvB;AAAA,EACT;AAAA,EACA,iBAAiB7nC,GAAMgpC,GAAK;AAC1B,WAAAn7B,EAAA,MAAK25B,IAAQxnC,CAAI,IAAIgpC,GACd;AAAA,EACT;AAAA,EACA,sBAAsBhpC,GAAMgpC,GAAK;AAC/B,WAAAn7B,EAAA,MAAK45B,IAAaznC,CAAI,EAAE,KAAKgpC,CAAG,GACzB;AAAA,EACT;AAAA,EACA,qBAAqBhpC,GAAMgpC,GAAK;AAC9B,WAAAn7B,EAAA,MAAK45B,IAAaznC,CAAI,EAAE,SAAS,GAC1B;AAAA,EACT;AAAA,EACA,gBAAgBA,GAAMgpC,GAAK;AACzB,WAAAn7B,EAAA,MAAK65B,IAAmB,IAAI1nC,GAAMgpC,CAAG,GAC9B;AAAA,EACT;AAAA,EACA,0BAA0BhpC,GAAMipC,GAASC,GAAa;AACpD,IAAAr7B,EAAA,MAAK25B,IAAQxnC,CAAI,IAAI6N,EAAA,MAAK65B,IAAmB,IAAIuB,CAAO,KAAKC;AAAA,EAC/D;AAAA,EACA,6BAA6BlpC,GAAMgpC,GAAK;AACtC,gBAAK,sBAAsBlC,IAAyBkC,CAAG,GAChD;AAAA,EACT;AAAA,EACA,4CAA4CxyB,GAAO;AACjD,eAAWxW,KAAQwW;AACjB,MAAIxW,KAAQ6N,EAAA,MAAK25B,OACf,KAAK,6BAA6BxnC,GAAM6N,EAAA,MAAK25B,IAAQxnC,CAAI,CAAC;AAG9D,WAAO;AAAA,EACT;AAAA,EACA,uDAAuD;AACrD,eAAWmpC,KAAOt7B,EAAA,MAAKo6B;AACrB,WAAK,6BAA6BnB,IAAyBqC,CAAG;AAEhE,WAAO;AAAA,EACT;AAAA,EACA,UAAUH,GAAK;AACb,WAAIn7B,EAAA,MAAKm6B,QAAoBgB,MAC3Bl7B,EAAA,MAAKk6B,IAAkBgB,IACvBn7B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,OACvBl6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,OACvBl6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,QACvBl6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,SAElB;AAAA,EACT;AAAA,EACA,cAAciB,GAAK95B,GAAKwvB,GAAMC,GAAMC,GAAMC,GAAM;AAC9C,UAAMt8B,IAAYJ,EAAK,oBAAoB0L,EAAA,MAAKg6B,IAAoB,GAAG,EAAE,GAAG34B,EAAI,cAAc,GACxFk6B,IAAU,CAAC,OAAU,OAAU,QAAW,MAAS;AACzD,IAAAjnC,EAAK,wBAAwB,CAACu8B,GAAME,GAAMD,GAAME,CAAI,GAAGt8B,GAAW6mC,CAAO;AACzE,UAAMC,IAAelnC,EAAK,UAAU0L,EAAA,MAAKi6B,KAAUsB,CAAO;AAC1D,WAAIC,KACFx7B,EAAA,MAAKi6B,IAAS,CAAC,IAAIuB,EAAa,CAAC,GACjCx7B,EAAA,MAAKi6B,IAAS,CAAC,IAAIuB,EAAa,CAAC,GACjCx7B,EAAA,MAAKi6B,IAAS,CAAC,IAAIuB,EAAa,CAAC,GACjCx7B,EAAA,MAAKi6B,IAAS,CAAC,IAAIuB,EAAa,CAAC,MAEjCx7B,EAAA,MAAKi6B,IAAS,CAAC,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,OACtCj6B,EAAA,MAAKi6B,IAAS,CAAC,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,SAEjC;AAAA,EACT;AAAA,EACA,WAAWkB,GAAK95B,GAAKwvB,GAAMC,GAAMC,GAAMC,GAAM;AAC3C,UAAMuK,IAAUv7B,EAAA,MAAKi6B;AACrB,QAAIsB,EAAQ,CAAC,MAAM;AACjB,aAAO;AAET,UAAM7mC,IAAYJ,EAAK,oBAAoB0L,EAAA,MAAKg6B,IAAoB,GAAG,EAAE,GAAG34B,EAAI,cAAc;AAC9F,QAAIk6B,EAAQ,CAAC,MAAM;AACjB,aAAAjnC,EAAK,wBAAwB,CAACu8B,GAAME,GAAMD,GAAME,CAAI,GAAGt8B,GAAWsL,EAAA,MAAKk6B,GAAY,GAC5E;AAET,UAAMzO,IAAO,CAAC,OAAU,OAAU,QAAW,MAAS;AACtD,WAAAn3B,EAAK,wBAAwB,CAACu8B,GAAME,GAAMD,GAAME,CAAI,GAAGt8B,GAAW+2B,CAAI,GACtEzrB,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKk6B,IAAa,CAAC,GAAG,KAAK,IAAIzO,EAAK,CAAC,GAAG8P,EAAQ,CAAC,CAAC,CAAC,GACnFv7B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKk6B,IAAa,CAAC,GAAG,KAAK,IAAIzO,EAAK,CAAC,GAAG8P,EAAQ,CAAC,CAAC,CAAC,GACnFv7B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKk6B,IAAa,CAAC,GAAG,KAAK,IAAIzO,EAAK,CAAC,GAAG8P,EAAQ,CAAC,CAAC,CAAC,GACnFv7B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKk6B,IAAa,CAAC,GAAG,KAAK,IAAIzO,EAAK,CAAC,GAAG8P,EAAQ,CAAC,CAAC,CAAC,GAC5E;AAAA,EACT;AAAA,EACA,oBAAoBJ,GAAK95B,GAAKsoB,GAAM1sB,IAAQ,GAAGxF,IAAI,GAAGC,IAAI,GAAG+jC,GAAY;AACvE,UAAMC,IAAW/R,EAAK;AACtB,QAAIgS,GACAC;AACJ,QAAIF,MACFC,IAAoBD,EAAS,CAAC,MAAMA,EAAS,CAAC,KAAKA,EAAS,CAAC,MAAMA,EAAS,CAAC,KAAK17B,EAAA,MAAKs6B,IAAqB,IAAI3Q,CAAI,GAChHgS,MAAsB,OACxBC,IAAe,CAAC,GAAG,GAAG,GAAG,CAAC,GAC1BtnC,EAAK,wBAAwBonC,GAAU/R,EAAK,YAAYiS,CAAY,IAChE3+B,MAAU,KAAKxF,MAAM,KAAKC,MAAM,MAClCpD,EAAK,YAAY,CAAC2I,GAAO,GAAG,GAAG,CAACA,GAAOxF,GAAGC,CAAC,GAAGkkC,CAAY,GAExDD;AACF,aAAO,KAAK,WAAWR,GAAK95B,GAAKu6B,EAAa,CAAC,GAAGA,EAAa,CAAC,GAAGA,EAAa,CAAC,GAAGA,EAAa,CAAC,CAAC;AAIzG,QAAI,CAACH;AACH,aAAO,KAAK,mBAAmBN,CAAG;AAEpC,UAAMU,IAAUJ,EAAU;AAC1B,WAAIC,KAAYE,KAAgBD,MAAsB,WACpDA,IAAoBC,EAAa,CAAC,KAAKnkC,IAAIokC,EAAQ,yBAAyBD,EAAa,CAAC,KAAKnkC,IAAIokC,EAAQ,0BAA0BD,EAAa,CAAC,KAAKlkC,IAAImkC,EAAQ,2BAA2BD,EAAa,CAAC,KAAKlkC,IAAImkC,EAAQ,0BAC9N77B,EAAA,MAAKs6B,IAAqB,IAAI3Q,GAAMgS,CAAiB,GACjDA,KACK,KAAK,WAAWR,GAAK95B,GAAKu6B,EAAa,CAAC,GAAGA,EAAa,CAAC,GAAGA,EAAa,CAAC,GAAGA,EAAa,CAAC,CAAC,IAGhG,KAAK,WAAWT,GAAK95B,GAAK5J,IAAIokC,EAAQ,uBAAuBpkC,IAAIokC,EAAQ,wBAAwBnkC,IAAImkC,EAAQ,yBAAyBnkC,IAAImkC,EAAQ,wBAAwB;AAAA,EACnL;AAAA,EACA,mBAAmBV,GAAK;AACtB,WAAAn7B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAI,GAAGl6B,EAAA,MAAKi6B,IAAS,CAAC,CAAC,GACnDj6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAI,GAAGl6B,EAAA,MAAKi6B,IAAS,CAAC,CAAC,GACnDj6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKu6B,KAAcv6B,EAAA,MAAKi6B,IAAS,CAAC,CAAC,GACnEj6B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,KAAK,IAAIl6B,EAAA,MAAKw6B,KAAex6B,EAAA,MAAKi6B,IAAS,CAAC,CAAC,GAC7D;AAAA,EACT;AAAA,EACA,eAAe6B,GAAgB;AAC7B,WAAO97B,EAAA,MAAK25B,IAAQmC,CAAc;AAAA,EACpC;AAAA,EACA,mBAAmBX,GAAKY,GAAiB;AACvC,UAAMC,IAAsBh8B,EAAA,MAAKo6B,KAC3B6B,IAASj8B,EAAA,MAAK25B,KACduC,IAAcl8B,EAAA,MAAK45B;AACzB,eAAWznC,KAAQ4pC;AACjB,MAAI5pC,KAAQ6N,EAAA,MAAK25B,MACfqC,EAAoB,IAAIC,EAAO9pC,CAAI,CAAC,IAC3BA,KAAQ+pC,KACjBA,EAAY/pC,CAAI,EAAE,QAAQ6pC,EAAoB,KAAKA,CAAmB;AAG1E,WAAO;AAAA,EACT;AAAA,EACA,sBAAsBb,GAAKhpC,GAAM;AAC/B,WAAI6N,EAAA,MAAK65B,IAAmB,IAAI1nC,CAAI,KAClC6N,EAAA,MAAKo6B,IAAqB,IAAIp6B,EAAA,MAAK65B,IAAmB,IAAI1nC,CAAI,CAAC,GAE1D;AAAA,EACT;AAAA,EACA,gBAAgBgpC,GAAKgB,IAAW,IAAO;AAErC,QADA,KAAK,mBAAmBhB,GAAK,CAAClC,EAAuB,CAAC,GAClDj5B,EAAA,MAAK06B,KAAgB;AACvB,YAAM0B,IAAW1C,GAAoB15B,EAAA,MAAK06B,KAAgBS,CAAG,GACvD;AAAA,QACJ,cAAAkB;AAAA,MACR,IAAUD;AACJ,MAAAp8B,EAAA,MAAKo6B,IAAqB,QAAQiC,EAAa,KAAKA,CAAY,GAChEr8B,EAAA,MAAK85B,IAAY,QAAQuC,EAAa,KAAKA,CAAY,GACvDr8B,EAAA,MAAK+5B,IAAoB,QAAQsC,EAAa,KAAKA,CAAY,GAC/DA,EAAa,OAAOlB,CAAG,GACvBiB,EAAS,uBAAuB;AAAA,IAClC;AACA,QAAIp8B,EAAA,MAAKm6B,QAAoBgB,GAAK;AAChC,YAAMtK,IAAOqI,GAAMl5B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,MAAMl6B,EAAA,MAAKu6B,GAAY,GAC3DxJ,IAAOmI,GAAMl5B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,MAAMl6B,EAAA,MAAKw6B,GAAa,GAC5D1J,IAAOqI,GAAKn5B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,MAAMl6B,EAAA,MAAKu6B,GAAY,GAC1DvJ,IAAOmI,GAAKn5B,EAAA,MAAKk6B,IAAa,CAAC,IAAI,MAAMl6B,EAAA,MAAKw6B,GAAa;AACjE,MAAApB,GAAWp5B,EAAA,MAAKy6B,KAAeU,GAAKtK,GAAME,GAAMD,GAAME,CAAI;AAC1D,iBAAWsL,KAAUt8B,EAAA,MAAKo6B;AACxB,QAAIkC,MAAWnB,KACb/B,GAAWp5B,EAAA,MAAKy6B,KAAe6B,GAAQzL,GAAME,GAAMD,GAAME,CAAI;AAGjE,iBAAWuL,KAAWv8B,EAAA,MAAK85B;AACzB,QAAIyC,MAAYpB,KACd/B,GAAWp5B,EAAA,MAAKy6B,KAAe8B,GAAS1L,GAAME,GAAMD,GAAME,CAAI;AAGlE,iBAAWuL,KAAWv8B,EAAA,MAAK+5B;AACzB,QAAIwC,MAAYpB,KACd/B,GAAWp5B,EAAA,MAAKy6B,KAAe8B,GAAS1L,GAAME,GAAMD,GAAME,CAAI;AAGlE,MAAKmL,MACHn8B,EAAA,MAAKo6B,IAAqB,MAAK,GAC/Bn6B,EAAA,MAAKk6B,IAAkB;AAAA,IAE3B;AACA,WAAO;AAAA,EACT;AAAA,EACA,wBAAwBgB,GAAKgB,IAAW,IAAO;AAC7C,UAAMK,IAAO,MAAM,KAAKx8B,EAAA,MAAKo6B,GAAoB;AACjD,SAAK,gBAAgBe,GAAKgB,CAAQ,GAClC,KAAK,sBAAsB,gBAAgBhB,CAAG;AAC9C,eAAWG,KAAOkB;AAChB,WAAK,sBAAsB,gBAAgBlB,CAAG;AAEhD,WAAO;AAAA,EACT;AAAA,EACA,2BAA2BH,GAAKgB,IAAW,IAAO;AAChD,WAAIn8B,EAAA,MAAKm6B,QAAoBgB,MAC3Bl7B,EAAA,MAAKk6B,IAAkB,KACvBn6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,KAAK,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,GAAGj6B,EAAA,MAAKk6B,IAAa,CAAC,CAAC,GAClEl6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,KAAK,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,GAAGj6B,EAAA,MAAKk6B,IAAa,CAAC,CAAC,GAClEl6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,KAAK,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,GAAGj6B,EAAA,MAAKk6B,IAAa,CAAC,CAAC,GAClEl6B,EAAA,MAAKi6B,IAAS,CAAC,IAAI,KAAK,IAAIj6B,EAAA,MAAKi6B,IAAS,CAAC,GAAGj6B,EAAA,MAAKk6B,IAAa,CAAC,CAAC,GAC7DiC,KACHn8B,EAAA,MAAKo6B,IAAqB,MAAK,IAG5B;AAAA,EACT;AAAA,EACA,2BAA2B;AACzB,UAAM4B,IAAsBh8B,EAAA,MAAKo6B;AACjC,WAAAn6B,EAAA,MAAKm6B,IAAuB,oBAAI,IAAG,IAC5B4B;AAAA,EACT;AAAA,EACA,kBAAkBb,GAAK;AACrB,UAAMsB,IAAYz8B,EAAA,MAAKq6B,IAAY,IAAIc,CAAG;AAC1C,WAAAn7B,EAAA,MAAKq6B,IAAY,OAAOc,CAAG,GACpBsB;AAAA,EACT;AAAA,EACA,yBAAyBJ,GAAc;AACrC,eAAWf,KAAOe;AAChB,MAAAr8B,EAAA,MAAKo6B,IAAqB,IAAIkB,CAAG;AAAA,EAErC;AAAA,EACA,OAAO;AACL,WAAAt7B,EAAA,MAAKs6B,IAAqB,MAAK,GACxB,IAAId,GAAWx5B,EAAA,MAAKs5B,KAASt5B,EAAA,MAAKy6B,GAAa;AAAA,EACxD;AAAA,EACA,oBAAoB;AAClB,WAAOz6B,EAAA,MAAK06B;AAAA,EACd;AACF;AAlWEf,KAAA,eAGAC,KAAA,eAOAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAnB,KAAA,eACAoB,KAAA,eAzBFC,KAAA,eAuCEC,KAAiB,SAACE,GAAiB4B,GAAW;AAC5C,QAAM1Q,IAAS,IAAI,YAAY8O,IAAkB,CAAC;AAClD,EAAA76B,EAAA,MAAKw6B,IAAgB,IAAI,kBAAkBzO,CAAM,IACjD/rB,EAAA,MAAKq5B,IAAU,IAAI,YAAYtN,CAAM,IACjC0Q,KAAaA,EAAU,SAAS,KAClC18B,EAAA,MAAKs5B,IAAQ,IAAIoD,CAAS,GAC1B18B,EAAA,MAAKs5B,IAAQ,KAAKD,IAAYqD,EAAU,MAAM,KAE9C18B,EAAA,MAAKs5B,IAAQ,KAAKD,EAAU;AAEhC;AAt5RF,IAAAsD,IAAAC,IAAAC,IAAAC,IAAAC;AAysSA,MAAMC,KAAN,MAAMA,GAA8B;AAAA,EAMlC,YAAYC,GAAmBjC,GAAOkC,GAAc;AALpD,IAAAxkC,EAAA,MAAAikC;AACA,IAAAjkC,EAAA,MAAAkkC;AACA,IAAAlkC,EAAA,MAAAmkC;AACA,IAAAnkC,EAAA,MAAAokC,IAAgB;AAChB,IAAApkC,EAAA,MAAAqkC,IAAc;AAEZ,QAAIE,aAA6BD,MAAiCh9B,EAAAi9B,GAAkBJ,QAAkB,CAAC,CAACK;AACtG,aAAOD;AAET,IAAAh9B,EAAA,MAAK08B,IAAqBM,IAC1Bh9B,EAAA,MAAK28B,IAAS5B,IACd/6B,EAAA,MAAK48B,IAAgB,CAAC,CAACK;AAAA,EACzB;AAAA,EACA,sBAAsB;AACpB,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AAAA,EACA,KAAKlC,GAAO;AACV,WAAAzxB,GAAA,MAAKwzB,IAAL,KACA/8B,EAAA,MAAK28B,IAAmB,KAAK38B,EAAA,MAAK48B,GAAM,GACjC;AAAA,EACT;AAAA,EACA,QAAQ5B,GAAO;AACb,WAAIh7B,EAAA,MAAK+8B,MAAc,MACrB/8B,EAAA,MAAK28B,IAAmB,QAAQ38B,EAAA,MAAK48B,GAAM,GAC3CrzB,GAAA,MAAKwzB,IAAL,MAEK;AAAA,EACT;AAAA,EACA,iBAAiB5B,GAAK;AACpB,WAAA5xB,GAAA,MAAKuzB,IAAL,KACO;AAAA,EACT;AAAA,EACA,gBAAgB;AACd,WAAO98B,EAAA,MAAK88B,MAAgB,IAAI98B,EAAA,MAAK48B,MAAS58B,EAAA,MAAK28B,IAAmB,cAAa;AAAA,EACrF;AAAA,EACA,kBAAkBxB,GAAK;AACrB,WAAA5xB,GAAA,MAAKuzB,IAAL,KACO;AAAA,EACT;AAAA,EACA,mBAAmB9B,GAAO;AACxB,WAAO;AAAA,EACT;AAAA,EACA,iBAAiBA,GAAO;AACtB,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB35B,GAAK;AACrB,WAAArB,EAAA,MAAK28B,IAAmB,kBAAkBt7B,CAAG,GACtC;AAAA,EACT;AAAA,EACA,mBAAmB;AACjB,WAAArB,EAAA,MAAK28B,IAAmB,iBAAgB,GACjC;AAAA,EACT;AAAA,EACA,iBAAiBxqC,GAAMgpC,GAAK;AAC1B,WAAAn7B,EAAA,MAAK28B,IAAmB,iBAAiBxqC,GAAM6N,EAAA,MAAK48B,GAAM,GACnD;AAAA,EACT;AAAA,EACA,sBAAsBzqC,GAAMgpC,GAAK;AAC/B,WAAAn7B,EAAA,MAAK28B,IAAmB,sBAAsBxqC,GAAM6N,EAAA,MAAK48B,GAAM,GACxD;AAAA,EACT;AAAA,EACA,qBAAqBzqC,GAAMgpC,GAAK;AAC9B,WAAAn7B,EAAA,MAAK28B,IAAmB,qBAAqBxqC,GAAM6N,EAAA,MAAK48B,GAAM,GACvD;AAAA,EACT;AAAA,EACA,gBAAgBzqC,GAAMgpC,GAAK;AACzB,WAAO;AAAA,EACT;AAAA,EACA,0BAA0BhpC,GAAMipC,GAASC,GAAa;AACpD,WAAAr7B,EAAA,MAAK28B,IAAmB,0BAA0BxqC,GAAMipC,GAASp7B,EAAA,MAAK48B,GAAM,GACrE;AAAA,EACT;AAAA,EACA,6BAA6BzqC,GAAMgpC,GAAK;AACtC,WAAAn7B,EAAA,MAAK28B,IAAmB,6BAA6BxqC,GAAM6N,EAAA,MAAK48B,GAAM,GAC/D;AAAA,EACT;AAAA,EACA,4CAA4Cj0B,GAAO;AACjD,WAAA3I,EAAA,MAAK28B,IAAmB,4CAA4Ch0B,CAAK,GAClE;AAAA,EACT;AAAA,EACA,uDAAuD;AACrD,WAAA3I,EAAA,MAAK28B,IAAmB,qDAAoD,GACrE;AAAA,EACT;AAAA,EACA,UAAUxB,GAAK;AACb,WAAKn7B,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,UAAU38B,EAAA,MAAK48B,GAAM,GAExC;AAAA,EACT;AAAA,EACA,cAAczB,GAAK95B,GAAKwvB,GAAMC,GAAMC,GAAMC,GAAM;AAC9C,WAAKhxB,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,cAAc38B,EAAA,MAAK48B,KAAQv7B,GAAKwvB,GAAMC,GAAMC,GAAMC,CAAI,GAEzE;AAAA,EACT;AAAA,EACA,WAAWmK,GAAK95B,GAAKwvB,GAAMC,GAAMC,GAAMC,GAAM;AAC3C,WAAKhxB,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,WAAW38B,EAAA,MAAK48B,KAAQv7B,GAAKwvB,GAAMC,GAAMC,GAAMC,CAAI,GAEtE;AAAA,EACT;AAAA,EACA,oBAAoBmK,GAAK95B,GAAKsoB,GAAM1sB,GAAOxF,GAAGC,GAAG+jC,GAAY;AAC3D,WAAKz7B,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,oBAAoB38B,EAAA,MAAK48B,KAAQv7B,GAAKsoB,GAAM1sB,GAAOxF,GAAGC,GAAG+jC,CAAU,GAEtF;AAAA,EACT;AAAA,EACA,mBAAmBN,GAAK;AACtB,WAAKn7B,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,mBAAmB38B,EAAA,MAAK48B,GAAM,GAEjD;AAAA,EACT;AAAA,EACA,eAAed,GAAgB;AAC7B,WAAO97B,EAAA,MAAK28B,IAAmB,eAAeb,CAAc;AAAA,EAC9D;AAAA,EACA,mBAAmBX,GAAKY,GAAiB;AACvC,WAAA/7B,EAAA,MAAK28B,IAAmB,mBAAmB38B,EAAA,MAAK48B,KAAQb,CAAe,GAChE;AAAA,EACT;AAAA,EACA,sBAAsBZ,GAAKhpC,GAAM;AAC/B,WAAA6N,EAAA,MAAK28B,IAAmB,sBAAsB38B,EAAA,MAAK48B,KAAQzqC,CAAI,GACxD;AAAA,EACT;AAAA,EACA,gBAAgBgpC,GAAK;AACnB,WAAAn7B,EAAA,MAAK28B,IAAmB,gBAAgB38B,EAAA,MAAK48B,KAAQ,EAAI,GAClD;AAAA,EACT;AAAA,EACA,wBAAwBzB,GAAK;AAC3B,WAAAn7B,EAAA,MAAK28B,IAAmB,wBAAwB38B,EAAA,MAAK48B,KAAQ,EAAI,GAC1D;AAAA,EACT;AAAA,EACA,2BAA2BzB,GAAK;AAC9B,WAAKn7B,EAAA,MAAK68B,OACR78B,EAAA,MAAK28B,IAAmB,2BAA2B38B,EAAA,MAAK48B,KAAQ,EAAI,GAE/D;AAAA,EACT;AAAA,EACA,OAAO;AACL,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AAAA,EACA,oBAAoB;AAClB,UAAM,IAAI,MAAM,aAAa;AAAA,EAC/B;AACF;AAjJED,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA;AALF,IAAMI,KAANH;AAmJA,MAAMI,KAAe;AAAA,EACnB,QAAQ,CAAC,QAAQ,aAAa,UAAU,eAAe,eAAe,aAAa,WAAW,YAAY,cAAc,MAAM;AAAA,EAC9H,MAAM,CAAC,QAAQ,aAAa,UAAU,aAAa,aAAa,4BAA4B,OAAO;AAAA,EACnG,cAAc,CAAC,aAAa,SAAS,UAAU,aAAa,eAAe,0BAA0B;AAAA,EACrG,aAAa,CAAC,UAAU,aAAa,WAAW;AAAA,EAChD,UAAU,CAAC,aAAa,WAAW,eAAe,eAAe,UAAU,YAAY,YAAY,cAAc,QAAQ,WAAW,UAAU,aAAa,qBAAqB,SAAS,aAAa,eAAe,4BAA4B,cAAc;AAAA,EAC/P,WAAW,CAAC,WAAW;AAAA,EACvB,kBAAkB,CAAC,aAAa,WAAW;AAC7C,GAKMC,KAAW;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AACA,SAASC,GAAiBj8B,GAAKoqB,GAAM;AACnC,MAAI,CAACA;AACH;AAEF,QAAM3tB,IAAQ2tB,EAAK,CAAC,IAAIA,EAAK,CAAC,GACxB1tB,IAAS0tB,EAAK,CAAC,IAAIA,EAAK,CAAC,GACzB8R,IAAS,IAAI,OAAM;AACzB,EAAAA,EAAO,KAAK9R,EAAK,CAAC,GAAGA,EAAK,CAAC,GAAG3tB,GAAOC,CAAM,GAC3CsD,EAAI,KAAKk8B,CAAM;AACjB;AACA,MAAMC,GAAmB;AAAA,EACvB,8BAA8B;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,IAAA3sC,GAAY,sCAAsC;AAAA,EACpD;AACF;AACA,MAAM4sC,WAAkCD,GAAmB;AAAA,EACzD,YAAYE,GAAI;AACd,UAAK,GACL,KAAK,QAAQA,EAAG,CAAC,GACjB,KAAK,QAAQA,EAAG,CAAC,GACjB,KAAK,cAAcA,EAAG,CAAC,GACvB,KAAK,MAAMA,EAAG,CAAC,GACf,KAAK,MAAMA,EAAG,CAAC,GACf,KAAK,MAAMA,EAAG,CAAC,GACf,KAAK,MAAMA,EAAG,CAAC,GACf,KAAK,SAAS;AAAA,EAChB;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,cAAc,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,MAAM;AAAA,EAC7G;AAAA,EACA,WAAW;AACT,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EACA,gBAAgBr8B,GAAK3M,IAAY,MAAM;AACrC,QAAIipC,GACAC,IAAa,KAAK,KAClBC,IAAc,KAAK;AAOvB,QANInpC,MACFkpC,IAAaA,EAAW,MAAK,GAC7BC,IAAcA,EAAY,MAAK,GAC/BvpC,EAAK,eAAespC,GAAYlpC,CAAS,GACzCJ,EAAK,eAAeupC,GAAanpC,CAAS,IAExC,KAAK,UAAU;AACjB,MAAAipC,IAAOt8B,EAAI,qBAAqBu8B,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAGC,EAAY,CAAC,GAAGA,EAAY,CAAC,CAAC;AAAA,aACnF,KAAK,UAAU,UAAU;AAClC,UAAI/nC,IAAK,KAAK,KACVC,IAAK,KAAK;AACd,UAAIrB,GAAW;AACb,cAAMuI,IAAQ,IAAI,aAAa,CAAC;AAChC,QAAA3I,EAAK,8BAA8BI,GAAWuI,CAAK,GACnDnH,KAAMmH,EAAM,CAAC,GACblH,KAAMkH,EAAM,CAAC;AAAA,MACf;AACA,MAAA0gC,IAAOt8B,EAAI,qBAAqBu8B,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAG9nC,GAAI+nC,EAAY,CAAC,GAAGA,EAAY,CAAC,GAAG9nC,CAAE;AAAA,IACtG;AACA,eAAW+nC,KAAa,KAAK;AAC3B,MAAAH,EAAK,aAAaG,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC;AAE9C,WAAOH;AAAA,EACT;AAAA,EACA,WAAWt8B,GAAK08B,GAAOC,GAASC,GAAU;AACxC,QAAIC;AACJ,QAAID,MAAaZ,GAAS,UAAUY,MAAaZ,GAAS,MAAM;AAC9D,UAAI,KAAK,iBAAiB;AACxB,YAAI5Y,IAASnwB,EAAK,UAAU0pC,GAASD,EAAM,aAAa;AACxD,QAAI,KAAK,WACPtZ,IAASnwB,EAAK,UAAUmwB,GAAQ,KAAK,MAAM;AAE7C,cAAM0Z,IAAY,MACZC,IAAK,KAAK,MAAM3Z,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GACpC4Z,IAAK,KAAK,MAAM5Z,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GACpC6Z,KAAM7Z,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAIA,EAAO,CAAC,MAAM2Z,IAAKC;AACnE,YAAI,KAAK,IAAIC,CAAE,IAAIH;AACjB,cAAI,KAAK;AACP,gBAAI,KAAK,IAAIC,IAAKC,CAAE,IAAIF;AACtB,qBAAO,KAAK,gBAAgB98B,GAAKojB,CAAM;AAAA;AAGzC,mBAAO,KAAK,gBAAgBpjB,GAAKojB,CAAM;AAAA,MAG7C;AACA,YAAM8Z,IAAYR,EAAM,QAAQ,0BAA0BE,GAAU78B,GAAoBC,CAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GACtGvD,IAAQ,KAAK,KAAKygC,EAAU,CAAC,IAAIA,EAAU,CAAC,CAAC,KAAK,GAClDxgC,IAAS,KAAK,KAAKwgC,EAAU,CAAC,IAAIA,EAAU,CAAC,CAAC,KAAK,GACnDC,IAAYT,EAAM,eAAe,UAAU,WAAWjgC,GAAOC,CAAM,GACnE0gC,IAASD,EAAU;AACzB,MAAAC,EAAO,UAAU,GAAG,GAAGA,EAAO,OAAO,OAAOA,EAAO,OAAO,MAAM,GAChEA,EAAO,UAAS,GAChBA,EAAO,KAAK,GAAG,GAAGA,EAAO,OAAO,OAAOA,EAAO,OAAO,MAAM,GAC3DA,EAAO,UAAU,CAACF,EAAU,CAAC,GAAG,CAACA,EAAU,CAAC,CAAC,GAC7CP,IAAU1pC,EAAK,UAAU0pC,GAAS,CAAC,GAAG,GAAG,GAAG,GAAGO,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,CAAC,GAC1EE,EAAO,UAAU,GAAGV,EAAM,aAAa,GACnC,KAAK,UACPU,EAAO,UAAU,GAAG,KAAK,MAAM,GAEjCnB,GAAiBmB,GAAQ,KAAK,KAAK,GACnCA,EAAO,YAAY,KAAK,gBAAgBA,CAAM,GAC9CA,EAAO,KAAI,GACXP,IAAU78B,EAAI,cAAcm9B,EAAU,QAAQ,WAAW;AACzD,YAAME,IAAY,IAAI,UAAUV,CAAO;AACvC,MAAAE,EAAQ,aAAaQ,CAAS;AAAA,IAChC;AACE,MAAApB,GAAiBj8B,GAAK,KAAK,KAAK,GAChC68B,IAAU,KAAK,gBAAgB78B,CAAG;AAEpC,WAAO68B;AAAA,EACT;AACF;AACA,SAASS,GAAar5B,GAAM2d,GAAS7tB,GAAI2D,GAAI6lC,GAAIC,GAAIC,GAAIC,GAAI;AAC3D,QAAMzP,IAASrM,EAAQ,QACrBhiB,IAASgiB,EAAQ,QACblwB,IAAQuS,EAAK,MACjB05B,IAAU15B,EAAK,QAAQ;AACzB,MAAI25B;AACJ,EAAI3P,EAAOl6B,IAAK,CAAC,IAAIk6B,EAAOv2B,IAAK,CAAC,MAChCkmC,IAAM7pC,GACNA,IAAK2D,GACLA,IAAKkmC,GACLA,IAAMJ,GACNA,IAAKC,GACLA,IAAKG,IAEH3P,EAAOv2B,IAAK,CAAC,IAAIu2B,EAAOsP,IAAK,CAAC,MAChCK,IAAMlmC,GACNA,IAAK6lC,GACLA,IAAKK,GACLA,IAAMH,GACNA,IAAKC,GACLA,IAAKE,IAEH3P,EAAOl6B,IAAK,CAAC,IAAIk6B,EAAOv2B,IAAK,CAAC,MAChCkmC,IAAM7pC,GACNA,IAAK2D,GACLA,IAAKkmC,GACLA,IAAMJ,GACNA,IAAKC,GACLA,IAAKG;AAEP,QAAMpnC,KAAMy3B,EAAOl6B,CAAE,IAAI6tB,EAAQ,WAAWA,EAAQ,QAC9CnrB,KAAMw3B,EAAOl6B,IAAK,CAAC,IAAI6tB,EAAQ,WAAWA,EAAQ,QAClDlrB,KAAMu3B,EAAOv2B,CAAE,IAAIkqB,EAAQ,WAAWA,EAAQ,QAC9CjrB,KAAMs3B,EAAOv2B,IAAK,CAAC,IAAIkqB,EAAQ,WAAWA,EAAQ,QAClDhrB,KAAMq3B,EAAOsP,CAAE,IAAI3b,EAAQ,WAAWA,EAAQ,QAC9C/qB,KAAMo3B,EAAOsP,IAAK,CAAC,IAAI3b,EAAQ,WAAWA,EAAQ;AACxD,MAAInrB,KAAMI;AACR;AAEF,QAAMgnC,IAAMj+B,EAAO49B,CAAE,GACnBM,IAAMl+B,EAAO49B,IAAK,CAAC,GACnBO,IAAMn+B,EAAO49B,IAAK,CAAC,GACfQ,IAAMp+B,EAAO69B,CAAE,GACnBQ,IAAMr+B,EAAO69B,IAAK,CAAC,GACnBS,IAAMt+B,EAAO69B,IAAK,CAAC,GACfU,IAAMv+B,EAAO89B,CAAE,GACnBU,IAAMx+B,EAAO89B,IAAK,CAAC,GACnBW,IAAMz+B,EAAO89B,IAAK,CAAC,GACfhO,IAAO,KAAK,MAAMj5B,CAAE,GACxBk5B,IAAO,KAAK,MAAM94B,CAAE;AACtB,MAAIynC,GAAIC,GAAKC,GAAKC,GACdC,IAAIC,IAAKC,IAAKC;AAClB,WAASxoC,KAAIq5B,GAAMr5B,MAAKs5B,GAAMt5B,MAAK;AACjC,QAAIA,KAAIM,GAAI;AACV,YAAMmoC,KAAIzoC,KAAII,IAAK,KAAKA,IAAKJ,OAAMI,IAAKE;AACxC,MAAA2nC,IAAK9nC,KAAMA,IAAKE,KAAMooC,IACtBP,IAAMV,KAAOA,IAAMG,KAAOc,IAC1BN,IAAMV,KAAOA,IAAMG,KAAOa,IAC1BL,IAAMV,KAAOA,IAAMG,KAAOY;AAAA,IAC5B,OAAO;AACL,UAAIA;AACJ,MAAIzoC,KAAIQ,IACNioC,KAAI,IACKnoC,MAAOE,IAChBioC,KAAI,IAEJA,MAAKnoC,IAAKN,OAAMM,IAAKE,IAEvBynC,IAAK5nC,KAAMA,IAAKE,KAAMkoC,IACtBP,IAAMP,KAAOA,IAAMG,KAAOW,IAC1BN,IAAMP,KAAOA,IAAMG,KAAOU,IAC1BL,IAAMP,KAAOA,IAAMG,KAAOS;AAAA,IAC5B;AACA,QAAIA;AACJ,IAAIzoC,KAAII,IACNqoC,KAAI,IACKzoC,KAAIQ,IACbioC,KAAI,IAEJA,MAAKroC,IAAKJ,OAAMI,IAAKI,IAEvB6nC,KAAKloC,KAAMA,IAAKI,KAAMkoC,IACtBH,KAAMd,KAAOA,IAAMM,KAAOW,IAC1BF,KAAMd,KAAOA,IAAMM,KAAOU,IAC1BD,KAAMd,KAAOA,IAAMM,KAAOS;AAC1B,UAAMC,KAAM,KAAK,MAAM,KAAK,IAAIT,GAAII,EAAE,CAAC,GACjCM,KAAM,KAAK,MAAM,KAAK,IAAIV,GAAII,EAAE,CAAC;AACvC,QAAIvI,KAAIwH,IAAUtnC,KAAI0oC,KAAM;AAC5B,aAAS3oC,KAAI2oC,IAAK3oC,MAAK4oC,IAAK5oC;AAC1B,MAAA0oC,MAAKR,IAAKloC,OAAMkoC,IAAKI,KACjBI,KAAI,IACNA,KAAI,IACKA,KAAI,MACbA,KAAI,IAENptC,EAAMykC,IAAG,IAAIoI,KAAOA,IAAMI,MAAOG,KAAI,GACrCptC,EAAMykC,IAAG,IAAIqI,KAAOA,IAAMI,MAAOE,KAAI,GACrCptC,EAAMykC,IAAG,IAAIsI,KAAOA,IAAMI,MAAOC,KAAI,GACrCptC,EAAMykC,IAAG,IAAI;AAAA,EAEjB;AACF;AACA,SAAS8I,GAAWh7B,GAAM0qB,GAAQ/M,GAAS;AACzC,QAAMqb,IAAKtO,EAAO,QACZuQ,IAAKvQ,EAAO;AAClB,MAAI,GAAG1xB;AACP,UAAQ0xB,EAAO,MAAI;AAAA,IACjB,KAAKngC,GAAe;AAClB,YAAM2wC,IAAiBxQ,EAAO,gBACxByQ,IAAO,KAAK,MAAMnC,EAAG,SAASkC,CAAc,IAAI,GAChDE,IAAOF,IAAiB;AAC9B,WAAK,IAAI,GAAG,IAAIC,GAAM,KAAK;AACzB,YAAIE,IAAI,IAAIH;AACZ,iBAAShJ,IAAI,GAAGA,IAAIkJ,GAAMlJ,KAAKmJ;AAC7B,UAAAhC,GAAar5B,GAAM2d,GAASqb,EAAGqC,CAAC,GAAGrC,EAAGqC,IAAI,CAAC,GAAGrC,EAAGqC,IAAIH,CAAc,GAAGD,EAAGI,CAAC,GAAGJ,EAAGI,IAAI,CAAC,GAAGJ,EAAGI,IAAIH,CAAc,CAAC,GAC9G7B,GAAar5B,GAAM2d,GAASqb,EAAGqC,IAAIH,IAAiB,CAAC,GAAGlC,EAAGqC,IAAI,CAAC,GAAGrC,EAAGqC,IAAIH,CAAc,GAAGD,EAAGI,IAAIH,IAAiB,CAAC,GAAGD,EAAGI,IAAI,CAAC,GAAGJ,EAAGI,IAAIH,CAAc,CAAC;AAAA,MAE5J;AACA;AAAA,IACF,KAAK3wC,GAAe;AAClB,WAAK,IAAI,GAAGyO,IAAKggC,EAAG,QAAQ,IAAIhgC,GAAI,KAAK;AACvC,QAAAqgC,GAAar5B,GAAM2d,GAASqb,EAAG,CAAC,GAAGA,EAAG,IAAI,CAAC,GAAGA,EAAG,IAAI,CAAC,GAAGiC,EAAG,CAAC,GAAGA,EAAG,IAAI,CAAC,GAAGA,EAAG,IAAI,CAAC,CAAC;AAEtF;AAAA,IACF;AACE,YAAM,IAAI,MAAM,gBAAgB;AAAA,EACtC;AACA;AACA,MAAMK,WAA2BpD,GAAmB;AAAA,EAClD,YAAYE,GAAI;AACd,UAAK,GACL,KAAK,UAAUA,EAAG,CAAC,GACnB,KAAK,UAAUA,EAAG,CAAC,GACnB,KAAK,WAAWA,EAAG,CAAC,GACpB,KAAK,UAAUA,EAAG,CAAC,GACnB,KAAK,QAAQA,EAAG,CAAC,GACjB,KAAK,cAAcA,EAAG,CAAC,GACvB,KAAK,SAAS;AAAA,EAChB;AAAA,EACA,kBAAkBmD,GAAeC,GAAiBC,GAAgB;AAIhE,UAAM5jC,IAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC,GACpCC,IAAU,KAAK,MAAM,KAAK,QAAQ,CAAC,CAAC,GACpC4jC,IAAc,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,IAAI7jC,GAC3C8jC,IAAe,KAAK,KAAK,KAAK,QAAQ,CAAC,CAAC,IAAI7jC,GAC5CU,IAAQ,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIkjC,IAAcH,EAAc,CAAC,IAAI,GAAc,CAAC,GAAG,GAAgB,GACvG9iC,IAAS,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIkjC,IAAeJ,EAAc,CAAC,IAAI,GAAc,CAAC,GAAG,GAAgB,GACzGK,IAASF,IAAcljC,GACvBqjC,IAASF,IAAeljC,GACxBklB,IAAU;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,SAAS,CAAC9lB;AAAA,MACV,SAAS,CAACC;AAAA,MACV,QAAQ,IAAI8jC;AAAA,MACZ,QAAQ,IAAIC;AAAA,IAClB,GACUC,IAActjC,IAAQ,IAAc,GACpCujC,IAAetjC,IAAS,IAAc,GACtCygC,IAAYuC,EAAe,UAAU,QAAQK,GAAaC,CAAY,GACtE5C,IAASD,EAAU,SACnBl5B,IAAOm5B,EAAO,gBAAgB3gC,GAAOC,CAAM;AACjD,QAAI+iC,GAAiB;AACnB,YAAM/tC,IAAQuS,EAAK;AACnB,eAASnS,IAAI,GAAGmL,IAAKvL,EAAM,QAAQI,IAAImL,GAAInL,KAAK;AAC9C,QAAAJ,EAAMI,CAAC,IAAI2tC,EAAgB,CAAC,GAC5B/tC,EAAMI,IAAI,CAAC,IAAI2tC,EAAgB,CAAC,GAChC/tC,EAAMI,IAAI,CAAC,IAAI2tC,EAAgB,CAAC,GAChC/tC,EAAMI,IAAI,CAAC,IAAI;AAAA,IAEnB;AACA,eAAW68B,KAAU,KAAK;AACxB,MAAAsQ,GAAWh7B,GAAM0qB,GAAQ/M,CAAO;AAElC,WAAAwb,EAAO,aAAan5B,GAAM,GAAa,CAAW,GAE3C;AAAA,MACL,QAFak5B,EAAU;AAAA,MAGvB,SAASrhC,IAAU,IAAc+jC;AAAA,MACjC,SAAS9jC,IAAU,IAAc+jC;AAAA,MACjC,QAAAD;AAAA,MACA,QAAAC;AAAA,IACN;AAAA,EACE;AAAA,EACA,8BAA8B;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,WAAW9/B,GAAK08B,GAAOC,GAASC,GAAU;AACxC,IAAAX,GAAiBj8B,GAAK,KAAK,KAAK;AAChC,UAAMpE,IAAQ,IAAI,aAAa,CAAC;AAChC,QAAIghC,MAAaZ,GAAS;AACxB,MAAA/oC,EAAK,8BAA8B8M,GAAoBC,CAAG,GAAGpE,CAAK;AAAA,aACzD,KAAK,QAAQ;AACtB,MAAA3I,EAAK,8BAA8B,KAAK,QAAQ2I,CAAK;AACrD,YAAM,CAACqkC,GAAcC,CAAY,IAAItkC;AACrC,MAAA3I,EAAK,8BAA8BypC,EAAM,eAAe9gC,CAAK,GAC7DA,EAAM,CAAC,KAAKqkC,GACZrkC,EAAM,CAAC,KAAKskC;AAAA,IACd;AACE,MAAAjtC,EAAK,8BAA8BypC,EAAM,eAAe9gC,CAAK;AAE/D,UAAMukC,IAAyB,KAAK,kBAAkBvkC,GAAOghC,MAAaZ,GAAS,UAAU,OAAO,KAAK,aAAaU,EAAM,cAAc;AAC1I,WAAIE,MAAaZ,GAAS,YACxBh8B,EAAI,aAAa,GAAG08B,EAAM,aAAa,GACnC,KAAK,UACP18B,EAAI,UAAU,GAAG,KAAK,MAAM,IAGhCA,EAAI,UAAUmgC,EAAuB,SAASA,EAAuB,OAAO,GAC5EngC,EAAI,MAAMmgC,EAAuB,QAAQA,EAAuB,MAAM,GAC/DngC,EAAI,cAAcmgC,EAAuB,QAAQ,WAAW;AAAA,EACrE;AACF;AACA,MAAMC,WAA4BjE,GAAmB;AAAA,EACnD,aAAa;AACX,WAAO;AAAA,EACT;AACF;AACA,SAASkE,GAAkBhE,GAAI;AAC7B,UAAQA,EAAG,CAAC,GAAC;AAAA,IACX,KAAK;AACH,aAAO,IAAID,GAA0BC,CAAE;AAAA,IACzC,KAAK;AACH,aAAO,IAAIkD,GAAmBlD,CAAE;AAAA,IAClC,KAAK;AACH,aAAO,IAAI+D,GAAmB;AAAA,EACpC;AACE,QAAM,IAAI,MAAM,oBAAoB/D,EAAG,CAAC,CAAC,EAAE;AAC7C;AACA,MAAMiE,KAAY;AAAA,EAChB,SAAS;AAAA,EACT,WAAW;AACb,GACMC,KAAN,MAAMA,GAAc;AAAA,EAElB,YAAYlE,GAAIr8B,GAAKwgC,GAAuBC,GAAe;AACzD,SAAK,QAAQpE,EAAG,CAAC,GACjB,KAAK,eAAeA,EAAG,CAAC,GACxB,KAAK,SAASA,EAAG,CAAC,GAClB,KAAK,OAAOA,EAAG,CAAC,GAChB,KAAK,QAAQA,EAAG,CAAC,GACjB,KAAK,QAAQA,EAAG,CAAC,GACjB,KAAK,YAAYA,EAAG,CAAC,GACrB,KAAK,aAAaA,EAAG,CAAC,GACtB,KAAK,MAAMr8B,GACX,KAAK,wBAAwBwgC,GAC7B,KAAK,gBAAgBC;AAAA,EACvB;AAAA,EACA,oBAAoB/D,GAAO/C,GAAO;AAztTpC,QAAAjnC,IAAAC;AA0tTI,UAAM;AAAA,MACJ,MAAAy3B;AAAA,MACA,cAAAsW;AAAA,MACA,WAAAC;AAAA,MACA,YAAAC;AAAA,MACA,OAAAnhC;AAAA,MACA,uBAAA+gC;AAAA,IACN,IAAQ;AACJ,QAAI;AAAA,MACF,OAAAK;AAAA,MACA,OAAAC;AAAA,IACN,IAAQ;AACJ,IAAAD,IAAQ,KAAK,IAAIA,CAAK,GACtBC,IAAQ,KAAK,IAAIA,CAAK,GACtBzxC,GAAK,iBAAiBuxC,CAAU;AAChC,UAAMtqC,IAAK8zB,EAAK,CAAC,GACf7zB,IAAK6zB,EAAK,CAAC,GACX5zB,IAAK4zB,EAAK,CAAC,GACX3zB,IAAK2zB,EAAK,CAAC,GACP3tB,IAAQjG,IAAKF,GACboG,IAASjG,IAAKF,GACdqF,IAAQ,IAAI,aAAa,CAAC;AAChC,IAAA3I,EAAK,8BAA8B,KAAK,QAAQ2I,CAAK;AACrD,UAAM,CAACqkC,GAAcC,CAAY,IAAItkC;AACrC,IAAA3I,EAAK,8BAA8B,KAAK,eAAe2I,CAAK;AAC5D,UAAMmlC,IAAiBd,IAAerkC,EAAM,CAAC,GACvColC,IAAiBd,IAAetkC,EAAM,CAAC;AAC7C,QAAIqlC,IAAcxkC,GAChBykC,IAAexkC,GACfykC,IAAqB,IACrBC,IAAmB;AACrB,UAAMC,IAAc,KAAK,KAAKR,IAAQE,CAAc,GAC9CO,IAAc,KAAK,KAAKR,IAAQE,CAAc,GAC9CO,IAAe,KAAK,KAAK9kC,IAAQskC,CAAc,GAC/CS,IAAgB,KAAK,KAAK9kC,IAASskC,CAAc;AACvD,IAAIK,KAAeE,IACjBN,IAAcJ,IAEdM,IAAqB,IAEnBG,KAAeE,IACjBN,IAAeJ,IAEfM,IAAmB;AAErB,UAAMK,IAAO,KAAK,gBAAgBR,GAAa,KAAK,IAAI,OAAO,OAAOF,CAAc,GAC9EW,IAAO,KAAK,gBAAgBR,GAAc,KAAK,IAAI,OAAO,QAAQF,CAAc,GAChF7D,IAAYT,EAAM,eAAe,UAAU,WAAW+E,EAAK,MAAMC,EAAK,IAAI,GAC1EtE,IAASD,EAAU,SACnBwE,KAAWnB,EAAsB,qBAAqBpD,GAAQzD,CAAK;AAazE,QAZAgI,GAAS,aAAajF,EAAM,YAC5B,KAAK,+BAA+BiF,IAAUhB,GAAWlhC,CAAK,GAC9D29B,EAAO,UAAU,CAACqE,EAAK,QAAQnrC,GAAI,CAACorC,EAAK,QAAQnrC,CAAE,GACnDorC,GAAS,UAAU,GAAGF,EAAK,OAAO,GAAG,GAAGC,EAAK,OAAO,GAAG,CAAC,GACxDtE,EAAO,KAAI,IACX1qC,KAAAivC,GAAS,sBAAT,QAAAjvC,GAA4B,QAC5B,KAAK,SAASivC,IAAUrrC,GAAIC,GAAIC,GAAIC,CAAE,GACtCkrC,GAAS,gBAAgB5hC,GAAoB4hC,GAAS,GAAG,GACzDA,GAAS,oBAAoBjB,CAAY,GACzCiB,GAAS,WAAU,IACnBhvC,KAAAgvC,GAAS,sBAAT,QAAAhvC,GAA4B,WAC5ByqC,EAAO,QAAO,GACV+D,KAAsBC,GAAkB;AAC1C,YAAM34B,KAAQ00B,EAAU;AACxB,MAAIgE,MACFF,IAAcJ,IAEZO,MACFF,IAAeJ;AAEjB,YAAMc,KAAQ,KAAK,gBAAgBX,GAAa,KAAK,IAAI,OAAO,OAAOF,CAAc,GAC/Ec,KAAQ,KAAK,gBAAgBX,GAAc,KAAK,IAAI,OAAO,QAAQF,CAAc,GACjFc,KAAQF,GAAM,MACdG,KAAQF,GAAM,MACdG,KAAatF,EAAM,eAAe,UAAU,sBAAsBoF,IAAOC,EAAK,GAC9EE,KAAUD,GAAW,SACrB/kC,KAAKkkC,IAAqB,KAAK,MAAM1kC,IAAQokC,CAAK,IAAI,GACtDqB,KAAKd,IAAmB,KAAK,MAAM1kC,IAASokC,CAAK,IAAI;AAC3D,eAAShvC,KAAI,GAAGA,MAAKmL,IAAInL;AACvB,iBAASqkC,KAAI,GAAGA,MAAK+L,IAAI/L;AACvB,UAAA8L,GAAQ,UAAUx5B,IAAOq5B,KAAQhwC,IAAGiwC,KAAQ5L,IAAG2L,IAAOC,IAAO,GAAG,GAAGD,IAAOC,EAAK;AAGnF,aAAO;AAAA,QACL,QAAQC,GAAW;AAAA,QACnB,QAAQJ,GAAM;AAAA,QACd,QAAQC,GAAM;AAAA,QACd,SAASvrC;AAAA,QACT,SAASC;AAAA,MACjB;AAAA,IACI;AACA,WAAO;AAAA,MACL,QAAQ4mC,EAAU;AAAA,MAClB,QAAQsE,EAAK;AAAA,MACb,QAAQC,EAAK;AAAA,MACb,SAASprC;AAAA,MACT,SAASC;AAAA,IACf;AAAA,EACE;AAAA,EACA,gBAAgBw/B,GAAMoM,GAAgBvmC,GAAO;AAC3C,UAAMkO,IAAU,KAAK,IAAIy2B,GAAc,kBAAkB4B,CAAc;AACvE,QAAIt5B,IAAO,KAAK,KAAKktB,IAAOn6B,CAAK;AACjC,WAAIiN,KAAQiB,IACVjB,IAAOiB,IAEPlO,IAAQiN,IAAOktB,GAEV;AAAA,MACL,OAAAn6B;AAAA,MACA,MAAAiN;AAAA,IACN;AAAA,EACE;AAAA,EACA,SAAS84B,GAAUrrC,GAAIC,GAAIC,GAAIC,GAAI;AACjC,UAAM2rC,IAAY5rC,IAAKF,GACjB+rC,IAAa5rC,IAAKF;AACxB,IAAAorC,EAAS,IAAI,KAAKrrC,GAAIC,GAAI6rC,GAAWC,CAAU,GAC/CpvC,EAAK,wBAAwB,CAACqD,GAAIC,GAAIC,GAAIC,CAAE,GAAGsJ,GAAoB4hC,EAAS,GAAG,GAAGA,EAAS,QAAQ,MAAM,GACzGA,EAAS,KAAI,GACbA,EAAS,QAAO;AAAA,EAClB;AAAA,EACA,+BAA+BA,GAAUhB,GAAWlhC,GAAO;AACzD,UAAMmiB,IAAU+f,EAAS,KACvBW,IAAUX,EAAS;AACrB,YAAQhB,GAAS;AAAA,MACf,KAAKL,GAAU;AACb,cAAM;AAAA,UACJ,WAAAiC;AAAA,UACA,aAAAC;AAAA,QACV,IAAY,KAAK;AACT,QAAA5gB,EAAQ,YAAY0gB,EAAQ,YAAYC,GACxC3gB,EAAQ,cAAc0gB,EAAQ,cAAcE;AAC5C;AAAA,MACF,KAAKlC,GAAU;AACb,QAAA1e,EAAQ,YAAYA,EAAQ,cAAcniB,GAC1C6iC,EAAQ,YAAYA,EAAQ,cAAc7iC;AAC1C;AAAA,MACF;AACE,cAAM,IAAIlO,GAAY,2BAA2BovC,CAAS,EAAE;AAAA,IACpE;AAAA,EACE;AAAA,EACA,8BAA8B;AAC5B,WAAO;AAAA,EACT;AAAA,EACA,WAAW3gC,GAAK08B,GAAOC,GAASC,GAAUjD,GAAO;AAC/C,QAAIlkC,IAASknC;AACb,IAAIC,MAAaZ,GAAS,YACxBvmC,IAASxC,EAAK,UAAUwC,GAAQinC,EAAM,aAAa,GAC/C,KAAK,WACPjnC,IAASxC,EAAK,UAAUwC,GAAQ,KAAK,MAAM;AAG/C,UAAM0qC,IAAyB,KAAK,oBAAoBzD,GAAO/C,CAAK;AACpE,QAAI0D,IAAY,IAAI,UAAU5nC,CAAM;AACpC,IAAA4nC,IAAYA,EAAU,UAAU8C,EAAuB,SAASA,EAAuB,OAAO,GAC9F9C,IAAYA,EAAU,MAAM,IAAI8C,EAAuB,QAAQ,IAAIA,EAAuB,MAAM;AAChG,UAAMtD,IAAU78B,EAAI,cAAcmgC,EAAuB,QAAQ,QAAQ;AACzE,WAAAtD,EAAQ,aAAaQ,CAAS,GACvBR;AAAA,EACT;AACF;AA9KE5hC,EADIslC,IACG,oBAAmB;AAD5B,IAAMkC,KAANlC;AA4LA,SAASmC,GAA2B;AAAA,EAClC,KAAAta;AAAA,EACA,QAAAua,IAAS;AAAA,EACT,MAAA1qC;AAAA,EACA,OAAAwE;AAAA,EACA,QAAAC;AAAA,EACA,eAAAkmC,IAAgB;AAAA,EAChB,eAAAC,IAAgB;AAClB,GAAG;AACD,QAAMC,IAAQvwC,GAAiB,iBAAiB,aAAa,KACvD,CAACwwC,GAAaC,CAAU,IAAIH,IAAgB,CAACD,GAAeE,CAAK,IAAI,CAACA,GAAOF,CAAa,GAC1FK,IAAgBxmC,KAAS,GACzBymC,IAAiBzmC,IAAQ,GACzB0mC,IAAY/a,EAAI;AACtB,EAAAnwB,IAAO,IAAI,YAAYA,EAAK,MAAM;AAClC,MAAImrC,IAAU;AACd,WAAStxC,IAAI,GAAGA,IAAI4K,GAAQ5K,KAAK;AAC/B,eAAW6G,IAAMgqC,IAASM,GAAeN,IAAShqC,GAAKgqC,KAAU;AAC/D,YAAMU,IAAOV,IAASQ,IAAY/a,EAAIua,CAAM,IAAI;AAChD,MAAA1qC,EAAKmrC,GAAS,IAAIC,IAAO,MAAaL,IAAaD,GACnD9qC,EAAKmrC,GAAS,IAAIC,IAAO,KAAYL,IAAaD,GAClD9qC,EAAKmrC,GAAS,IAAIC,IAAO,KAAWL,IAAaD,GACjD9qC,EAAKmrC,GAAS,IAAIC,IAAO,KAAUL,IAAaD,GAChD9qC,EAAKmrC,GAAS,IAAIC,IAAO,IAASL,IAAaD,GAC/C9qC,EAAKmrC,GAAS,IAAIC,IAAO,IAAQL,IAAaD,GAC9C9qC,EAAKmrC,GAAS,IAAIC,IAAO,IAAOL,IAAaD,GAC7C9qC,EAAKmrC,GAAS,IAAIC,IAAO,IAAML,IAAaD;AAAA,IAC9C;AACA,QAAIG,MAAmB;AACrB;AAEF,UAAMG,IAAOV,IAASQ,IAAY/a,EAAIua,GAAQ,IAAI;AAClD,aAASxM,IAAI,GAAGA,IAAI+M,GAAgB/M;AAClC,MAAAl+B,EAAKmrC,GAAS,IAAIC,IAAO,KAAK,IAAIlN,IAAI6M,IAAaD;AAAA,EAEvD;AACA,SAAO;AAAA,IACL,QAAAJ;AAAA,IACA,SAAAS;AAAA,EACJ;AACA;AA+DA,MAAME,KAAgB,IAChBC,KAAgB,KAChBC,KAAiB,IACjBC,KAAkB,IAClBC,KAAoB,IACpBC,KAAe,IAAI,UAAS,GAC5BC,KAAK,IAAI,aAAa,CAAC,GACvBC,KAAe,IAAI,aAAa,CAAC,OAAU,OAAU,QAAW,MAAS,CAAC;AAChF,SAASC,GAAwB9jC,GAAK+jC,GAAS;AAC7C,MAAI/jC,EAAI;AACN,UAAM,IAAI,MAAM,2CAA2C;AAE7D,EAAAA,EAAI,iBAAiBA,EAAI,MACzBA,EAAI,oBAAoBA,EAAI,SAC5BA,EAAI,mBAAmBA,EAAI,QAC3BA,EAAI,kBAAkBA,EAAI,OAC1BA,EAAI,sBAAsBA,EAAI,WAC9BA,EAAI,sBAAsBA,EAAI,WAC9BA,EAAI,yBAAyBA,EAAI,cACjCA,EAAI,2BAA2BA,EAAI,gBACnCA,EAAI,iBAAiBA,EAAI,MACzBA,EAAI,mBAAmBA,EAAI,QAC3BA,EAAI,mBAAmBA,EAAI,QAC3BA,EAAI,0BAA0BA,EAAI,eAClCA,EAAI,iBAAiBA,EAAI,MACzBA,EAAI,sBAAsBA,EAAI,WAC9BA,EAAI,sBAAsBA,EAAI,WAC9BA,EAAI,mBAAmB,MAAM;AAC3B,IAAAA,EAAI,OAAOA,EAAI,gBACfA,EAAI,UAAUA,EAAI,mBAClBA,EAAI,SAASA,EAAI,kBACjBA,EAAI,QAAQA,EAAI,iBAChBA,EAAI,YAAYA,EAAI,qBACpBA,EAAI,YAAYA,EAAI,qBACpBA,EAAI,eAAeA,EAAI,wBACvBA,EAAI,iBAAiBA,EAAI,0BACzBA,EAAI,OAAOA,EAAI,gBACfA,EAAI,SAASA,EAAI,kBACjBA,EAAI,SAASA,EAAI,kBACjBA,EAAI,gBAAgBA,EAAI,yBACxBA,EAAI,OAAOA,EAAI,gBACfA,EAAI,YAAYA,EAAI,qBACpBA,EAAI,YAAYA,EAAI,qBACpB,OAAOA,EAAI;AAAA,EACb,GACAA,EAAI,OAAO,WAAY;AACrB,IAAA+jC,EAAQ,KAAI,GACZ,KAAK,eAAc;AAAA,EACrB,GACA/jC,EAAI,UAAU,WAAY;AACxB,IAAA+jC,EAAQ,QAAO,GACf,KAAK,kBAAiB;AAAA,EACxB,GACA/jC,EAAI,YAAY,SAAU5J,GAAGC,GAAG;AAC9B,IAAA0tC,EAAQ,UAAU3tC,GAAGC,CAAC,GACtB,KAAK,oBAAoBD,GAAGC,CAAC;AAAA,EAC/B,GACA2J,EAAI,QAAQ,SAAU5J,GAAGC,GAAG;AAC1B,IAAA0tC,EAAQ,MAAM3tC,GAAGC,CAAC,GAClB,KAAK,gBAAgBD,GAAGC,CAAC;AAAA,EAC3B,GACA2J,EAAI,YAAY,SAAUtK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,GAAG;AAC1C,IAAA8jC,EAAQ,UAAUruC,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC,GAClC,KAAK,oBAAoBvK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC;AAAA,EAC3C,GACAD,EAAI,eAAe,SAAUtK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,GAAG;AAC7C,IAAA8jC,EAAQ,aAAaruC,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC,GACrC,KAAK,uBAAuBvK,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC;AAAA,EAC9C,GACAD,EAAI,iBAAiB,WAAY;AAC/B,IAAA+jC,EAAQ,eAAc,GACtB,KAAK,yBAAwB;AAAA,EAC/B,GACA/jC,EAAI,SAAS,SAAUuiB,GAAO;AAC5B,IAAAwhB,EAAQ,OAAOxhB,CAAK,GACpB,KAAK,iBAAiBA,CAAK;AAAA,EAC7B,GACAviB,EAAI,OAAO,SAAU+nB,GAAM;AACzB,IAAAgc,EAAQ,KAAKhc,CAAI,GACjB,KAAK,eAAeA,CAAI;AAAA,EAC1B,GACA/nB,EAAI,SAAS,SAAU5J,GAAGC,GAAG;AAC3B,IAAA0tC,EAAQ,OAAO3tC,GAAGC,CAAC,GACnB,KAAK,iBAAiBD,GAAGC,CAAC;AAAA,EAC5B,GACA2J,EAAI,SAAS,SAAU5J,GAAGC,GAAG;AAC3B,IAAA0tC,EAAQ,OAAO3tC,GAAGC,CAAC,GACnB,KAAK,iBAAiBD,GAAGC,CAAC;AAAA,EAC5B,GACA2J,EAAI,gBAAgB,SAAUgkC,GAAMC,GAAMC,GAAMC,GAAM/tC,GAAGC,GAAG;AAC1D,IAAA0tC,EAAQ,cAAcC,GAAMC,GAAMC,GAAMC,GAAM/tC,GAAGC,CAAC,GAClD,KAAK,wBAAwB2tC,GAAMC,GAAMC,GAAMC,GAAM/tC,GAAGC,CAAC;AAAA,EAC3D,GACA2J,EAAI,OAAO,SAAU5J,GAAGC,GAAGoG,GAAOC,GAAQ;AACxC,IAAAqnC,EAAQ,KAAK3tC,GAAGC,GAAGoG,GAAOC,CAAM,GAChC,KAAK,eAAetG,GAAGC,GAAGoG,GAAOC,CAAM;AAAA,EACzC,GACAsD,EAAI,YAAY,WAAY;AAC1B,IAAA+jC,EAAQ,UAAS,GACjB,KAAK,oBAAmB;AAAA,EAC1B,GACA/jC,EAAI,YAAY,WAAY;AAC1B,IAAA+jC,EAAQ,UAAS,GACjB,KAAK,oBAAmB;AAAA,EAC1B;AACF;AACA,MAAMK,GAAe;AAAA,EACnB,YAAYC,GAAe;AACzB,SAAK,gBAAgBA,GACrB,KAAK,QAAQ,uBAAO,OAAO,IAAI;AAAA,EACjC;AAAA,EACA,UAAU3qC,GAAI+C,GAAOC,GAAQ;AAC3B,QAAI4nC;AACJ,WAAI,KAAK,MAAM5qC,CAAE,MAAM,UACrB4qC,IAAc,KAAK,MAAM5qC,CAAE,GAC3B,KAAK,cAAc,MAAM4qC,GAAa7nC,GAAOC,CAAM,MAEnD4nC,IAAc,KAAK,cAAc,OAAO7nC,GAAOC,CAAM,GACrD,KAAK,MAAMhD,CAAE,IAAI4qC,IAEZA;AAAA,EACT;AAAA,EACA,OAAO5qC,GAAI;AACT,WAAO,KAAK,MAAMA,CAAE;AAAA,EACtB;AAAA,EACA,QAAQ;AACN,eAAWA,KAAM,KAAK,OAAO;AAC3B,YAAM4qC,IAAc,KAAK,MAAM5qC,CAAE;AACjC,WAAK,cAAc,QAAQ4qC,CAAW,GACtC,OAAO,KAAK,MAAM5qC,CAAE;AAAA,IACtB;AAAA,EACF;AACF;AACA,SAAS6qC,GAAyBvkC,GAAKwkC,GAAQC,GAAMC,GAAMC,GAAMC,GAAMC,GAAOC,GAAOC,GAAOC,GAAO;AACjG,QAAM,CAACtvC,GAAGvC,GAAGwC,GAAGrB,GAAG8hB,GAAIC,CAAE,IAAItW,GAAoBC,CAAG;AACpD,MAAI7M,MAAM,KAAKwC,MAAM,GAAG;AACtB,UAAMsvC,IAAMJ,IAAQnvC,IAAI0gB,GAClB8uB,IAAO,KAAK,MAAMD,CAAG,GACrBE,IAAML,IAAQxwC,IAAI+hB,GAClB+uB,IAAO,KAAK,MAAMD,CAAG,GACrBE,KAAOR,IAAQE,KAASrvC,IAAI0gB,GAC5BkvB,IAAS,KAAK,IAAI,KAAK,MAAMD,CAAG,IAAIH,CAAI,KAAK,GAC7CK,KAAOT,IAAQE,KAAS1wC,IAAI+hB,GAC5BmvB,IAAU,KAAK,IAAI,KAAK,MAAMD,CAAG,IAAIH,CAAI,KAAK;AACpD,WAAAplC,EAAI,aAAa,KAAK,KAAKtK,CAAC,GAAG,GAAG,GAAG,KAAK,KAAKpB,CAAC,GAAG4wC,GAAME,CAAI,GAC7DplC,EAAI,UAAUwkC,GAAQC,GAAMC,GAAMC,GAAMC,GAAM,GAAG,GAAGU,GAAQE,CAAO,GACnExlC,EAAI,aAAatK,GAAGvC,GAAGwC,GAAGrB,GAAG8hB,GAAIC,CAAE,GAC5B,CAACivB,GAAQE,CAAO;AAAA,EACzB;AACA,MAAI9vC,MAAM,KAAKpB,MAAM,GAAG;AACtB,UAAM2wC,IAAMH,IAAQnvC,IAAIygB,GAClB8uB,IAAO,KAAK,MAAMD,CAAG,GACrBE,IAAMN,IAAQ1xC,IAAIkjB,GAClB+uB,IAAO,KAAK,MAAMD,CAAG,GACrBE,KAAOP,IAAQE,KAASrvC,IAAIygB,GAC5BkvB,IAAS,KAAK,IAAI,KAAK,MAAMD,CAAG,IAAIH,CAAI,KAAK,GAC7CK,KAAOV,IAAQE,KAAS5xC,IAAIkjB,GAC5BmvB,IAAU,KAAK,IAAI,KAAK,MAAMD,CAAG,IAAIH,CAAI,KAAK;AACpD,WAAAplC,EAAI,aAAa,GAAG,KAAK,KAAK7M,CAAC,GAAG,KAAK,KAAKwC,CAAC,GAAG,GAAGuvC,GAAME,CAAI,GAC7DplC,EAAI,UAAUwkC,GAAQC,GAAMC,GAAMC,GAAMC,GAAM,GAAG,GAAGY,GAASF,CAAM,GACnEtlC,EAAI,aAAatK,GAAGvC,GAAGwC,GAAGrB,GAAG8hB,GAAIC,CAAE,GAC5B,CAACmvB,GAASF,CAAM;AAAA,EACzB;AACA,EAAAtlC,EAAI,UAAUwkC,GAAQC,GAAMC,GAAMC,GAAMC,GAAMC,GAAOC,GAAOC,GAAOC,CAAK;AACxE,QAAMnF,IAAS,KAAK,MAAMnqC,GAAGvC,CAAC,GACxB2sC,IAAS,KAAK,MAAMnqC,GAAGrB,CAAC;AAC9B,SAAO,CAACurC,IAASkF,GAAOjF,IAASkF,CAAK;AACxC;AACA,MAAMS,GAAiB;AAAA,EA0BrB,YAAYhpC,GAAOC,GAAQgpC,GAAS;AAzBpC,IAAAzqC,EAAA,sBAAe;AACf,IAAAA,EAAA,kBAAW;AACX,IAAAA,EAAA,uBAAgB;AAChB,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,yBAAkB;AAClB,IAAAA,EAAA,oBAAajN;AACb,IAAAiN,EAAA,iBAAU;AACV,IAAAA,EAAA,WAAI;AACJ,IAAAA,EAAA,WAAI;AACJ,IAAAA,EAAA,eAAQ;AACR,IAAAA,EAAA,eAAQ;AACR,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,2BAAoBxM,GAAkB;AACtC,IAAAwM,EAAA,kBAAW;AACX,IAAAA,EAAA,mBAAY;AACZ,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,uBAAgB;AAChB,IAAAA,EAAA,mBAAY;AACZ,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,mBAAY;AACZ,IAAAA,EAAA,qBAAc;AACd,IAAAA,EAAA,sBAAe;AAEb,IAAAyqC,KAAA,QAAAA,EAAU,OACV,KAAK,UAAU,IAAI,aAAa,CAAC,GAAG,GAAGjpC,GAAOC,CAAM,CAAC,GACrD,KAAK,SAASmnC,GAAa,MAAK;AAAA,EAClC;AAAA,EACA,QAAQ;AACN,UAAMpc,IAAQ,OAAO,OAAO,IAAI;AAChC,WAAAA,EAAM,UAAU,KAAK,QAAQ,MAAK,GAClCA,EAAM,SAAS,KAAK,OAAO,MAAK,GACzBA;AAAA,EACT;AAAA,EACA,mBAAmBmV,IAAWZ,GAAS,MAAM3oC,IAAY,MAAM;AAC7D,UAAM2T,IAAM,KAAK,OAAO,MAAK;AAC7B,QAAI41B,MAAaZ,GAAS,QAAQ;AAChC,MAAK3oC,KACH7D,GAAY,6CAA6C,GAE3DyD,EAAK,8BAA8BI,GAAWuwC,EAAE;AAChD,YAAM+B,IAAa/B,GAAG,CAAC,IAAI,KAAK,YAAY,GACtCgC,IAAahC,GAAG,CAAC,IAAI,KAAK,YAAY;AAC5C,MAAA58B,EAAI,CAAC,KAAK2+B,GACV3+B,EAAI,CAAC,KAAK4+B,GACV5+B,EAAI,CAAC,KAAK2+B,GACV3+B,EAAI,CAAC,KAAK4+B;AAAA,IACZ;AACA,WAAO5+B;AAAA,EACT;AAAA,EACA,qBAAqB;AACnB,UAAM6+B,IAAY5yC,EAAK,UAAU,KAAK,SAAS,KAAK,oBAAoB;AACxE,SAAK,uBAAuB4yC,KAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,EACvD;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,OAAO,CAAC,MAAM;AAAA,EAC5B;AAAA,EACA,uBAAuB7+B,GAAK;AAC1B,SAAK,QAAQ,IAAIA,GAAK,CAAC,GACvB,KAAK,OAAO,IAAI68B,IAAc,CAAC;AAAA,EACjC;AAAA,EACA,0BAA0BjH,IAAWZ,GAAS,MAAM3oC,IAAY,MAAM;AACpE,WAAOJ,EAAK,UAAU,KAAK,SAAS,KAAK,mBAAmB2pC,GAAUvpC,CAAS,CAAC;AAAA,EAClF;AACF;AACA,SAASyyC,GAAmB9lC,GAAK+lC,GAAS;AACxC,MAAIA,aAAmB,WAAW;AAChC,IAAA/lC,EAAI,aAAa+lC,GAAS,GAAG,CAAC;AAC9B;AAAA,EACF;AACA,QAAMrpC,IAASqpC,EAAQ,QACrBtpC,IAAQspC,EAAQ,OACZC,IAAqBtpC,IAASgnC,IAC9BuC,KAAcvpC,IAASspC,KAAsBtC,IAC7CwC,IAAcF,MAAuB,IAAIC,IAAaA,IAAa,GACnEE,IAAenmC,EAAI,gBAAgBvD,GAAOinC,EAAiB;AACjE,MAAIf,IAAS,GACXS;AACF,QAAMhb,IAAM2d,EAAQ,MACd9tC,IAAOkuC,EAAa;AAC1B,MAAIr0C,GAAGqkC,GAAGiQ,GAAiBC;AAC3B,MAAIN,EAAQ,SAASr3C,GAAe,gBAAgB;AAClD,UAAMy0C,IAAY/a,EAAI,YAChBke,IAAS,IAAI,YAAYruC,EAAK,QAAQ,GAAGA,EAAK,cAAc,CAAC,GAC7DsuC,IAAmBD,EAAO,QAC1BE,IAAc/pC,IAAQ,KAAK,GAC3BuF,IAAQ,YACR8gC,IAAQvwC,GAAiB,iBAAiB,aAAa;AAC7D,SAAKT,IAAI,GAAGA,IAAIo0C,GAAap0C,KAAK;AAGhC,WAFAs0C,IAAkBt0C,IAAIm0C,IAAavC,KAAoBsC,GACvD5C,IAAU,GACLjN,IAAI,GAAGA,IAAIiQ,GAAiBjQ,KAAK;AACpC,cAAMsQ,IAAUtD,IAAYR;AAC5B,YAAI7D,IAAI;AACR,cAAM4H,IAAOD,IAAUD,IAAc/pC,IAAQgqC,IAAU,IAAI,GACrDE,IAAeD,IAAO;AAC5B,YAAIE,IAAO,GACPC,IAAU;AACd,eAAO/H,IAAI6H,GAAc7H,KAAK;AAC5B,UAAA+H,IAAUze,EAAIua,GAAQ,GACtB2D,EAAOlD,GAAS,IAAIyD,IAAU,MAAM7kC,IAAQ8gC,GAC5CwD,EAAOlD,GAAS,IAAIyD,IAAU,KAAK7kC,IAAQ8gC,GAC3CwD,EAAOlD,GAAS,IAAIyD,IAAU,KAAK7kC,IAAQ8gC,GAC3CwD,EAAOlD,GAAS,IAAIyD,IAAU,KAAK7kC,IAAQ8gC,GAC3CwD,EAAOlD,GAAS,IAAIyD,IAAU,IAAI7kC,IAAQ8gC,GAC1CwD,EAAOlD,GAAS,IAAIyD,IAAU,IAAI7kC,IAAQ8gC,GAC1CwD,EAAOlD,GAAS,IAAIyD,IAAU,IAAI7kC,IAAQ8gC,GAC1CwD,EAAOlD,GAAS,IAAIyD,IAAU,IAAI7kC,IAAQ8gC;AAE5C,eAAOhE,IAAI4H,GAAM5H;AACf,UAAI8H,MAAS,MACXC,IAAUze,EAAIua,GAAQ,GACtBiE,IAAO,MAETN,EAAOlD,GAAS,IAAIyD,IAAUD,IAAO5kC,IAAQ8gC,GAC7C8D,MAAS;AAAA,MAEb;AACA,aAAOxD,IAAUmD;AACf,QAAAD,EAAOlD,GAAS,IAAI;AAEtB,MAAApjC,EAAI,aAAammC,GAAc,GAAGr0C,IAAI4xC,EAAiB;AAAA,IACzD;AAAA,EACF,WAAWqC,EAAQ,SAASr3C,GAAe,YAAY;AAGrD,SAFAynC,IAAI,GACJkQ,IAAmB5pC,IAAQinC,KAAoB,GAC1C5xC,IAAI,GAAGA,IAAIm0C,GAAYn0C;AAC1B,MAAAmG,EAAK,IAAImwB,EAAI,SAASua,GAAQA,IAAS0D,CAAgB,CAAC,GACxD1D,KAAU0D,GACVrmC,EAAI,aAAammC,GAAc,GAAGhQ,CAAC,GACnCA,KAAKuN;AAEP,IAAI5xC,IAAIo0C,MACNG,IAAmB5pC,IAAQupC,IAAqB,GAChD/tC,EAAK,IAAImwB,EAAI,SAASua,GAAQA,IAAS0D,CAAgB,CAAC,GACxDrmC,EAAI,aAAammC,GAAc,GAAGhQ,CAAC;AAAA,EAEvC,WAAW4P,EAAQ,SAASr3C,GAAe;AAGzC,SAFA03C,IAAkB1C,IAClB2C,IAAmB5pC,IAAQ2pC,GACtBt0C,IAAI,GAAGA,IAAIo0C,GAAap0C,KAAK;AAMhC,WALIA,KAAKm0C,MACPG,IAAkBJ,GAClBK,IAAmB5pC,IAAQ2pC,IAE7BhD,IAAU,GACLjN,IAAIkQ,GAAkBlQ;AACzB,QAAAl+B,EAAKmrC,GAAS,IAAIhb,EAAIua,GAAQ,GAC9B1qC,EAAKmrC,GAAS,IAAIhb,EAAIua,GAAQ,GAC9B1qC,EAAKmrC,GAAS,IAAIhb,EAAIua,GAAQ,GAC9B1qC,EAAKmrC,GAAS,IAAI;AAEpB,MAAApjC,EAAI,aAAammC,GAAc,GAAGr0C,IAAI4xC,EAAiB;AAAA,IACzD;AAAA;AAEA,UAAM,IAAI,MAAM,mBAAmBqC,EAAQ,IAAI,EAAE;AAErD;AACA,SAASe,GAAmB9mC,GAAK+lC,GAAS;AACxC,MAAIA,EAAQ,QAAQ;AAClB,IAAA/lC,EAAI,UAAU+lC,EAAQ,QAAQ,GAAG,CAAC;AAClC;AAAA,EACF;AACA,QAAMrpC,IAASqpC,EAAQ,QACrBtpC,IAAQspC,EAAQ,OACZC,IAAqBtpC,IAASgnC,IAC9BuC,KAAcvpC,IAASspC,KAAsBtC,IAC7CwC,IAAcF,MAAuB,IAAIC,IAAaA,IAAa,GACnEE,IAAenmC,EAAI,gBAAgBvD,GAAOinC,EAAiB;AACjE,MAAIf,IAAS;AACb,QAAMva,IAAM2d,EAAQ,MACd9tC,IAAOkuC,EAAa;AAC1B,WAASr0C,IAAI,GAAGA,IAAIo0C,GAAap0C,KAAK;AACpC,UAAMs0C,IAAkBt0C,IAAIm0C,IAAavC,KAAoBsC;AAC7D,KAAC;AAAA,MACC,QAAArD;AAAA,IACN,IAAQD,GAA2B;AAAA,MAC7B,KAAAta;AAAA,MACA,QAAAua;AAAA,MACA,MAAA1qC;AAAA,MACA,OAAAwE;AAAA,MACA,QAAQ2pC;AAAA,MACR,eAAe;AAAA,IACrB,CAAK,IACDpmC,EAAI,aAAammC,GAAc,GAAGr0C,IAAI4xC,EAAiB;AAAA,EACzD;AACF;AACA,SAASqD,GAAaC,GAAWjD,GAAS;AACxC,QAAMkD,IAAa,CAAC,eAAe,aAAa,YAAY,eAAe,aAAa,WAAW,YAAY,cAAc,4BAA4B,QAAQ,QAAQ;AACzK,aAAWC,KAAYD;AACrB,IAAID,EAAUE,CAAQ,MAAM,WAC1BnD,EAAQmD,CAAQ,IAAIF,EAAUE,CAAQ;AAG1C,EAAIF,EAAU,gBAAgB,WAC5BjD,EAAQ,YAAYiD,EAAU,aAAa,GAC3CjD,EAAQ,iBAAiBiD,EAAU;AAEvC;AACA,SAASG,GAAkBnnC,GAAK;AAC9B,EAAAA,EAAI,cAAcA,EAAI,YAAY,WAClCA,EAAI,WAAW,WACfA,EAAI,cAAc,GAClBA,EAAI,YAAY,GAChBA,EAAI,UAAU,QACdA,EAAI,WAAW,SACfA,EAAI,aAAa,IACjBA,EAAI,2BAA2B,eAC/BA,EAAI,OAAO,mBACPA,EAAI,gBAAgB,WACtBA,EAAI,YAAY,EAAE,GAClBA,EAAI,iBAAiB;AAEvB,QAAM;AAAA,IACJ,QAAAm1B;AAAA,EACJ,IAAMn1B;AACJ,EAAIm1B,MAAW,UAAUA,MAAW,OAClCn1B,EAAI,SAAS;AAEjB;AACA,SAASonC,GAAyB/zC,GAAWg0C,GAAa;AACxD,MAAIA;AACF,WAAO;AAET,EAAAp0C,EAAK,8BAA8BI,GAAWuwC,EAAE;AAChD,QAAM0D,IAAc,KAAK,OAAOtmC,GAAY,aAAa9F,GAAc,gBAAgB;AACvF,SAAO0oC,GAAG,CAAC,KAAK0D,KAAe1D,GAAG,CAAC,KAAK0D;AAC1C;AACA,MAAMC,KAAkB,CAAC,QAAQ,SAAS,QAAQ,GAC5CC,KAAmB,CAAC,SAAS,SAAS,OAAO,GAC7CC,KAAc,CAAA,GACdC,KAAU,CAAA;AA/3UhB,IAAAC,IAAAC,IAAAC,IAAAC;AAg4UA,MAAMC,KAAN,MAAMA,GAAe;AAAA,EACnB,YAAYC,GAAWC,GAAYje,GAAMqa,GAAe6D,GAAe;AAAA,IACrE,uBAAAC;AAAA,IACA,oBAAAC,IAAqB;AAAA,EACzB,GAAKC,GAAqBn4B,GAAY0rB,GAAmB;AAJzD,IAAAvkC,EAAA,MAAAswC;AAKI,SAAK,MAAMK,GACX,KAAK,UAAU,IAAIvC,GAAiB,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM,GACjF,KAAK,aAAa,CAAA,GAClB,KAAK,cAAc,MACnB,KAAK,gBAAgB,IACrB,KAAK,MAAM,MACX,KAAK,QAAQ,MACb,KAAK,aAAawC,GAClB,KAAK,OAAOje,GACZ,KAAK,gBAAgBqa,GACrB,KAAK,gBAAgB6D,GACrB,KAAK,aAAa,CAAA,GAClB,KAAK,gBAAgB,MACrB,KAAK,qBAAqB,CAAA,GAC1B,KAAK,aAAa,GAClB,KAAK,aAAa,CAAA,GAClB,KAAK,eAAe,GACpB,KAAK,YAAY,MACjB,KAAK,eAAe,MACpB,KAAK,iBAAiB,IACtB,KAAK,qBAAqBE,KAAsB,CAAA,GAChD,KAAK,wBAAwBD,GAC7B,KAAK,iBAAiB,IAAI/D,GAAe,KAAK,aAAa,GAC3D,KAAK,iBAAiB,oBAAI,IAAG,GAC7B,KAAK,sBAAsBiE,GAC3B,KAAK,gBAAgB,GACrB,KAAK,eAAe,GACpB,KAAK,eAAe,GACpB,KAAK,aAAan4B,GAClB,KAAK,0BAA0B,CAAC,IAAI,CAAC,GACrC,KAAK,6BAA6B,MAClC,KAAK,oBAAoB,oBAAI,IAAG,GAChC,KAAK,oBAAoB0rB,KAAqB;AAAA,EAChD;AAAA,EACA,UAAUjC,GAAO11B,GAAMqkC,IAAW,MAAM;AAv6U1C,QAAA51C;AAw6UI,WAAI,OAAOuR,KAAS,aAClBvR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,sBAAsBinC,GAAO11B,IAC9CA,EAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAIA,CAAI,IAAI,KAAK,KAAK,IAAIA,CAAI,KAExEqkC;AAAA,EACT;AAAA,EACA,aAAa;AAAA,IACX,WAAAj1C;AAAA,IACA,UAAAgN;AAAA,IACA,cAAAkoC,IAAe;AAAA,IACf,YAAAla,IAAa;AAAA,EACjB,GAAK;AACD,UAAM5xB,IAAQ,KAAK,IAAI,OAAO,OACxBC,IAAS,KAAK,IAAI,OAAO,QACzB8rC,IAAiB,KAAK,IAAI;AAIhC,QAHA,KAAK,IAAI,YAAYna,KAAc,WACnC,KAAK,IAAI,SAAS,GAAG,GAAG5xB,GAAOC,CAAM,GACrC,KAAK,IAAI,YAAY8rC,GACjBD,GAAc;AAChB,YAAME,IAAoB,KAAK,eAAe,UAAU,eAAehsC,GAAOC,CAAM;AACpF,WAAK,eAAe,KAAK,KACzB,KAAK,oBAAoB+rC,EAAkB,QAC3C,KAAK,MAAMA,EAAkB,SAC7B,KAAK,IAAI,KAAI,GACb,KAAK,IAAI,UAAU,GAAG1oC,GAAoB,KAAK,YAAY,CAAC;AAAA,IAC9D;AACA,SAAK,IAAI,KAAI,GACbonC,GAAkB,KAAK,GAAG,GACtB9zC,MACF,KAAK,IAAI,UAAU,GAAGA,CAAS,GAC/B,KAAK,eAAeA,EAAU,CAAC,GAC/B,KAAK,eAAeA,EAAU,CAAC,IAEjC,KAAK,IAAI,UAAU,GAAGgN,EAAS,SAAS,GACxC,KAAK,gBAAgBA,EAAS,OAC9B,KAAK,gBAAgBN,GAAoB,KAAK,GAAG;AAAA,EACnD;AAAA,EACA,oBAAoB2gC,GAAcgI,GAAmBC,GAAkBC,GAASC,GAAkB;AA78UpG,QAAAn2C;AA88UI,UAAMo2C,IAAYpI,EAAa,WACzBqI,IAAUrI,EAAa;AAC7B,QAAI5uC,IAAI42C,KAAqB;AAC7B,UAAMM,IAAeF,EAAU;AAC/B,QAAIE,MAAiBl3C;AACnB,aAAOA;AAET,UAAMm3C,IAAkBD,IAAel3C,IAAI2xC,MAAmB,OAAOkF,KAAqB,YACpFO,IAAUD,IAAkB,KAAK,IAAG,IAAKzF,KAAiB;AAChE,QAAI2F,IAAQ;AACZ,UAAMlB,IAAa,KAAK,YAClBje,IAAO,KAAK;AAClB,QAAIof,GAAMC;AACV,eAAa;AACX,UAAIT,MAAY,UAAa92C,MAAM82C,EAAQ;AACzC,eAAAA,EAAQ,QAAQ92C,GAAG62C,CAAgB,GAC5B72C;AAET,UAAI,CAAC+2C,KAAoBA,EAAiB/2C,CAAC;AAGzC,YAFAs3C,IAAOL,EAAQj3C,CAAC,GAChBu3C,IAASP,EAAUh3C,CAAC,KAAK,MACrBs3C,MAASt6C,GAAI;AACf,UAAIu6C,MAAW,OACb,KAAKD,CAAI,EAAEt3C,CAAC,IAEZ,KAAKs3C,CAAI,EAAEt3C,GAAG,GAAGu3C,CAAM;AAAA;AAGzB,qBAAWC,KAAYD,GAAQ;AAC7B,aAAA32C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgB42C,GAAUx3C;AAClD,kBAAMy3C,IAAWD,EAAS,WAAW,IAAI,IAAIrB,IAAaje;AAC1D,gBAAI,CAACuf,EAAS,IAAID,CAAQ;AACxB,qBAAAC,EAAS,IAAID,GAAUX,CAAgB,GAChC72C;AAAA,UAEX;AAIJ,UADAA,KACIA,MAAMk3C;AACR,eAAOl3C;AAET,UAAIm3C,KAAmB,EAAEE,IAAQ1F,IAAiB;AAChD,YAAI,KAAK,IAAG,IAAKyF;AACf,iBAAAP,EAAgB,GACT72C;AAET,QAAAq3C,IAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAgBA,aAAa;AACX,IAAAryC,EAAA,MAAK6wC,IAAAC,IAAL,YACA,KAAK,eAAe,MAAK,GACzB,KAAK,eAAe,MAAK;AACzB,eAAW4B,KAAS,KAAK,kBAAkB,OAAM,GAAI;AACnD,iBAAWxgC,KAAUwgC,EAAM;AACzB,QAAI,OAAO,oBAAsB,OAAexgC,aAAkB,sBAChEA,EAAO,QAAQA,EAAO,SAAS;AAGnC,MAAAwgC,EAAM,MAAK;AAAA,IACb;AACA,SAAK,kBAAkB,MAAK,GAC5B1yC,EAAA,MAAK6wC,IAAAE,IAAL;AAAA,EACF;AAAA,EAYA,YAAY4B,GAAKC,GAAkB;AACjC,UAAMjtC,IAAQgtC,EAAI,SAASA,EAAI,cACzB/sC,IAAS+sC,EAAI,UAAUA,EAAI;AACjC,QAAIE,IAAa,KAAK,IAAI,KAAK,MAAMD,EAAiB,CAAC,GAAGA,EAAiB,CAAC,CAAC,GAAG,CAAC,GAC7EE,IAAc,KAAK,IAAI,KAAK,MAAMF,EAAiB,CAAC,GAAGA,EAAiB,CAAC,CAAC,GAAG,CAAC,GAC9EG,IAAaptC,GACfqtC,IAAcptC,GACZqtC,IAAc,aACd5M,GAAWC;AACf,WAAOuM,IAAa,KAAKE,IAAa,KAAKD,IAAc,KAAKE,IAAc,KAAG;AAC7E,UAAI/mB,IAAW8mB,GACb7mB,IAAY8mB;AACd,MAAIH,IAAa,KAAKE,IAAa,MACjC9mB,IAAW8mB,KAAc,QAAQ,KAAK,MAAMA,IAAa,CAAC,IAAI,KAAK,IAAI,KAAK,KAAKA,IAAa,CAAC,GAC/FF,KAAcE,IAAa9mB,IAEzB6mB,IAAc,KAAKE,IAAc,MACnC9mB,IAAY8mB,KAAe,QAAQ,KAAK,MAAMA,IAAc,CAAC,IAAI,KAAK,IAAI,KAAK,KAAKA,CAAW,IAAI,GACnGF,KAAeE,IAAc9mB,IAE/Bma,IAAY,KAAK,eAAe,UAAU4M,GAAahnB,GAAUC,CAAS,GAC1Eoa,IAASD,EAAU,SACnBC,EAAO,UAAU,GAAG,GAAGra,GAAUC,CAAS,GAC1Coa,EAAO,UAAUqM,GAAK,GAAG,GAAGI,GAAYC,GAAa,GAAG,GAAG/mB,GAAUC,CAAS,GAC9EymB,IAAMtM,EAAU,QAChB0M,IAAa9mB,GACb+mB,IAAc9mB,GACd+mB,IAAcA,MAAgB,cAAc,cAAc;AAAA,IAC5D;AACA,WAAO;AAAA,MACL,KAAAN;AAAA,MACA,YAAAI;AAAA,MACA,aAAAC;AAAA,IACN;AAAA,EACE;AAAA,EACA,kBAAkBnQ,GAAO8P,GAAK;AA7kVhC,QAAA/2C,GAAAC;AA8kVI,UAAMqN,IAAM,KAAK,KACX;AAAA,MACJ,OAAAvD;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ+sC,GACEO,IAAY,KAAK,QAAQ,WACzBC,IAAgB,KAAK,QAAQ,aAC7BC,IAAmBnqC,GAAoBC,CAAG;AAChD,QAAIwpC,GAAOW,GAAUC,GAAQC;AAC7B,SAAKZ,EAAI,UAAUA,EAAI,SAASA,EAAI,QAAQ,GAAG;AAC7C,YAAMa,IAAUb,EAAI,UAAUA,EAAI,KAAK;AACvC,MAAAU,IAAW,KAAK,UAAUF,IAAgBC,IAAmB,CAACA,EAAiB,MAAM,GAAG,CAAC,GAAGF,CAAS,CAAC,GACtGR,IAAQ,KAAK,kBAAkB,IAAIc,CAAO,GACrCd,MACHA,IAAQ,oBAAI,IAAG,GACf,KAAK,kBAAkB,IAAIc,GAASd,CAAK;AAE3C,YAAMe,IAAcf,EAAM,IAAIW,CAAQ;AACtC,UAAII,KAAe,CAACN,GAAe;AACjC,cAAMnuC,IAAU,KAAK,MAAM,KAAK,IAAIouC,EAAiB,CAAC,GAAGA,EAAiB,CAAC,CAAC,IAAIA,EAAiB,CAAC,CAAC,GAC7FnuC,IAAU,KAAK,MAAM,KAAK,IAAImuC,EAAiB,CAAC,GAAGA,EAAiB,CAAC,CAAC,IAAIA,EAAiB,CAAC,CAAC;AACnG,gBAAAx3C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBinC,GAAOoC,GAAa,mBACxD;AAAA,UACL,QAAQwO;AAAA,UACR,SAAAzuC;AAAA,UACA,SAAAC;AAAA,QACV;AAAA,MACM;AACA,MAAAquC,IAASG;AAAA,IACX;AACA,IAAKH,MACHC,IAAa,KAAK,eAAe,UAAU,cAAc5tC,GAAOC,CAAM,GACtEoqC,GAAmBuD,EAAW,SAASZ,CAAG;AAE5C,QAAIe,IAAev3C,EAAK,UAAUi3C,GAAkB,CAAC,IAAIztC,GAAO,GAAG,GAAG,KAAKC,GAAQ,GAAG,CAAC,CAAC;AACxF,IAAA8tC,IAAev3C,EAAK,UAAUu3C,GAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC9tC,CAAM,CAAC;AACpE,UAAMpJ,IAASuwC,GAAa,MAAK;AACjC,IAAA5wC,EAAK,wBAAwB,CAAC,GAAG,GAAGwJ,GAAOC,CAAM,GAAG8tC,GAAcl3C,CAAM;AACxE,UAAM,CAACk8B,GAAME,GAAMD,GAAME,CAAI,IAAIr8B,GAC3Bm3C,IAAa,KAAK,MAAMhb,IAAOD,CAAI,KAAK,GACxCkb,IAAc,KAAK,MAAM/a,IAAOD,CAAI,KAAK,GACzCib,IAAa,KAAK,eAAe,UAAU,cAAcF,GAAYC,CAAW,GAChFE,IAAUD,EAAW,SACrB7uC,IAAU0zB,GACVzzB,IAAU2zB;AAChB,IAAAkb,EAAQ,UAAU,CAAC9uC,GAAS,CAACC,CAAO,GACpC6uC,EAAQ,UAAU,GAAGJ,CAAY,GAC5BJ,MACHA,IAAS,KAAK,YAAYC,EAAW,QAAQnqC,GAA2B0qC,CAAO,CAAC,GAChFR,IAASA,EAAO,KACZZ,KAASS,KACXT,EAAM,IAAIW,GAAUC,CAAM,IAG9BQ,EAAQ,wBAAwBxD,GAAyBrnC,GAAoB6qC,CAAO,GAAGnB,EAAI,WAAW,GACtGlF,GAAyBqG,GAASR,GAAQ,GAAG,GAAGA,EAAO,OAAOA,EAAO,QAAQ,GAAG,GAAG3tC,GAAOC,CAAM,GAChGkuC,EAAQ,2BAA2B;AACnC,UAAMjO,IAAU1pC,EAAK,UAAUiN,GAA2B0qC,CAAO,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC9uC,GAAS,CAACC,CAAO,CAAC;AACpG,WAAA6uC,EAAQ,YAAYX,IAAgBD,EAAU,WAAWhqC,GAAK,MAAM28B,GAASX,GAAS,MAAMrC,CAAK,IAAIqQ,GACrGY,EAAQ,SAAS,GAAG,GAAGnuC,GAAOC,CAAM,GAChC8sC,KAAS,CAACS,MACZ,KAAK,eAAe,OAAO,YAAY,GACvCT,EAAM,IAAIW,GAAUQ,EAAW,MAAM,KAEvCh4C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBgnC,GAAOoC,GAAa,mBACxD;AAAA,MACL,QAAQ4O,EAAW;AAAA,MACnB,SAAS,KAAK,MAAM7uC,CAAO;AAAA,MAC3B,SAAS,KAAK,MAAMC,CAAO;AAAA,IACjC;AAAA,EACE;AAAA,EACA,aAAa49B,GAAOl9B,GAAO;AArpV7B,QAAA/J;AAspVI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,aAAainC,IAClDl9B,MAAU,KAAK,QAAQ,cACzB,KAAK,wBAAwB,CAAC,IAAI,KAEpC,KAAK,QAAQ,YAAYA,GACzB,KAAK,IAAI,YAAYA;AAAA,EACvB;AAAA,EACA,WAAWk9B,GAAOj5B,GAAO;AA7pV3B,QAAAhO;AA8pVI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,WAAWinC,IACpD,KAAK,IAAI,UAAU4N,GAAgB7mC,CAAK;AAAA,EAC1C;AAAA,EACA,YAAYi5B,GAAOj5B,GAAO;AAjqV5B,QAAAhO;AAkqVI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,YAAYinC,IACrD,KAAK,IAAI,WAAW6N,GAAiB9mC,CAAK;AAAA,EAC5C;AAAA,EACA,cAAci5B,GAAOkR,GAAO;AArqV9B,QAAAn4C;AAsqVI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,cAAcinC,IACvD,KAAK,IAAI,aAAakR;AAAA,EACxB;AAAA,EACA,QAAQlR,GAAOmR,GAAWC,GAAW;AAzqVvC,QAAAr4C;AA0qVI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,QAAQinC;AACjD,UAAM35B,IAAM,KAAK;AACjB,IAAIA,EAAI,gBAAgB,WACtBA,EAAI,YAAY8qC,CAAS,GACzB9qC,EAAI,iBAAiB+qC;AAAA,EAEzB;AAAA,EACA,mBAAmBpR,GAAO9/B,GAAQ;AAAA,EAAC;AAAA,EACnC,YAAY8/B,GAAOqR,GAAU;AAAA,EAAC;AAAA,EAC9B,UAAUrR,GAAOsR,GAAQ;AAnrV3B,QAAAv4C,GAAAC,GAAAse,GAAAC,GAAAC;AAorVI,eAAW,CAAC/W,GAAK1J,CAAK,KAAKu6C;AACzB,cAAQ7wC,GAAG;AAAA,QACT,KAAK;AACH,eAAK,aAAau/B,GAAOjpC,CAAK;AAC9B;AAAA,QACF,KAAK;AACH,eAAK,WAAWipC,GAAOjpC,CAAK;AAC5B;AAAA,QACF,KAAK;AACH,eAAK,YAAYipC,GAAOjpC,CAAK;AAC7B;AAAA,QACF,KAAK;AACH,eAAK,cAAcipC,GAAOjpC,CAAK;AAC/B;AAAA,QACF,KAAK;AACH,eAAK,QAAQipC,GAAOjpC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AACtC;AAAA,QACF,KAAK;AACH,eAAK,mBAAmBipC,GAAOjpC,CAAK;AACpC;AAAA,QACF,KAAK;AACH,eAAK,YAAYipC,GAAOjpC,CAAK;AAC7B;AAAA,QACF,KAAK;AACH,eAAK,QAAQipC,GAAOjpC,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AACtC;AAAA,QACF,KAAK;AACH,WAAAgC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,QAAQ,cAAcjpC;AAC3B;AAAA,QACF,KAAK;AACH,WAAAiC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,aAAagnC,IACtD,KAAK,IAAI,cAAc,KAAK,QAAQ,YAAYjpC;AAChD;AAAA,QACF,KAAK;AACH,WAAAugB,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,4BAA4B0oB,IACrE,KAAK,IAAI,2BAA2BjpC;AACpC;AAAA,QACF,KAAK;AACH,WAAAwgB,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,SAASyoB,IAClD,KAAK,QAAQ,cAAcjpC,IAAQ,KAAK,YAAY,MACpD,KAAK,YAAY,MACjB,KAAK,gBAAe;AACpB;AAAA,QACF,KAAK;AACH,WAAAygB,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,UAAUwoB,IACnD,KAAK,IAAI,SAAS,KAAK,QAAQ,eAAe,KAAK,cAAc,UAAUjpC,CAAK;AAChF;AAAA,MACV;AAAA,EAEE;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,CAAC,CAAC,KAAK;AAAA,EAChB;AAAA,EACA,kBAAkB;AAChB,UAAMw6C,IAAc,KAAK;AACzB,IAAI,KAAK,QAAQ,eAAe,CAACA,IAC/B,KAAK,eAAc,IACV,CAAC,KAAK,QAAQ,eAAeA,KACtC,KAAK,aAAY;AAAA,EAErB;AAAA,EACA,eAAevR,GAAO;AACpB,QAAI,KAAK;AACP,YAAM,IAAI,MAAM,mDAAmD;AAErE,UAAM8Q,IAAa,KAAK,IAAI,OAAO,OAC7BC,IAAc,KAAK,IAAI,OAAO,QAC9BS,IAAU,iBAAiB,KAAK,YAChCC,IAAgB,KAAK,eAAe,UAAUD,GAASV,GAAYC,CAAW;AACpF,SAAK,eAAe,KAAK;AACzB,UAAM1qC,IAAM,KAAK,MAAMorC,EAAc;AACrC,IAAAprC,EAAI,aAAa,KAAK,aAAa,aAAY,CAAE,GACjD+mC,GAAa,KAAK,cAAc/mC,CAAG,GACnC8jC,GAAwB9jC,GAAK,KAAK,YAAY,GAC9C,KAAK,UAAU25B,GAAO,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC;AAAA,EAC/C;AAAA,EACA,eAAe;AACb,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,6CAA6C;AAE/D,SAAK,IAAI,iBAAgB,GACzBoN,GAAa,KAAK,KAAK,KAAK,YAAY,GACxC,KAAK,MAAM,KAAK,cAChB,KAAK,eAAe;AAAA,EACtB;AAAA,EACA,QAAQsE,GAAU;AAChB,QAAI,CAAC,KAAK,QAAQ;AAChB;AAEF,IAAKA,KAGHA,EAAS,CAAC,IAAI,KAAK,MAAMA,EAAS,CAAC,CAAC,GACpCA,EAAS,CAAC,IAAI,KAAK,MAAMA,EAAS,CAAC,CAAC,GACpCA,EAAS,CAAC,IAAI,KAAK,KAAKA,EAAS,CAAC,CAAC,GACnCA,EAAS,CAAC,IAAI,KAAK,KAAKA,EAAS,CAAC,CAAC,KALnCA,IAAW,CAAC,GAAG,GAAG,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM;AAOjE,UAAMC,IAAQ,KAAK,QAAQ,aACrBC,IAAe,KAAK;AAC1B,SAAK,aAAaA,GAAcD,GAAO,KAAK,KAAKD,CAAQ,GACzD,KAAK,IAAI,KAAI,GACb,KAAK,IAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACtC,KAAK,IAAI,UAAU,GAAG,GAAG,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM,GACtE,KAAK,IAAI,QAAO;AAAA,EAClB;AAAA,EACA,aAAarrC,GAAKsrC,GAAOE,GAAUC,GAAU;AAC3C,UAAMC,IAAeD,EAAS,CAAC,GACzBE,IAAeF,EAAS,CAAC,GACzBG,IAAaH,EAAS,CAAC,IAAIC,GAC3BG,IAAcJ,EAAS,CAAC,IAAIE;AAClC,IAAIC,MAAe,KAAKC,MAAgB,MAGxC,KAAK,oBAAoBP,EAAM,SAASE,GAAUI,GAAYC,GAAaP,EAAM,SAASA,EAAM,UAAUA,EAAM,aAAaI,GAAcC,GAAcL,EAAM,SAASA,EAAM,OAAO,GACrLtrC,EAAI,KAAI,GACRA,EAAI,cAAc,GAClBA,EAAI,2BAA2B,eAC/BA,EAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACjCA,EAAI,UAAUwrC,EAAS,QAAQ,GAAG,CAAC,GACnCxrC,EAAI,QAAO;AAAA,EACb;AAAA,EACA,oBAAoB8rC,GAASN,GAAU/uC,GAAOC,GAAQqvC,GAASC,GAAUC,GAAaP,GAAcC,GAAcO,GAAaC,GAAa;AAC1I,QAAI9B,IAAayB,EAAQ,QACrBM,IAAQV,IAAeQ,GACvBG,IAAQV,IAAeQ;AAC3B,QAAIH;AACF,UAAII,IAAQ,KAAKC,IAAQ,KAAKD,IAAQ3vC,IAAQ4tC,EAAW,SAASgC,IAAQ3vC,IAAS2tC,EAAW,QAAQ;AACpG,cAAMrhC,IAAS,KAAK,eAAe,UAAU,iBAAiBvM,GAAOC,CAAM,GACrEsD,IAAMgJ,EAAO;AACnB,QAAAhJ,EAAI,UAAUqqC,GAAY,CAAC+B,GAAO,CAACC,CAAK,GACxCrsC,EAAI,2BAA2B,oBAC/BA,EAAI,YAAYgsC,GAChBhsC,EAAI,SAAS,GAAG,GAAGvD,GAAOC,CAAM,GAChCsD,EAAI,2BAA2B,eAC/BqqC,IAAarhC,EAAO,QACpBojC,IAAQC,IAAQ;AAAA,MAClB,OAAO;AACL,QAAAP,EAAQ,KAAI,GACZA,EAAQ,cAAc,GACtBA,EAAQ,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACrC,cAAMQ,IAAO,IAAI,OAAM;AACvB,QAAAA,EAAK,KAAKF,GAAOC,GAAO5vC,GAAOC,CAAM,GACrCovC,EAAQ,KAAKQ,CAAI,GACjBR,EAAQ,2BAA2B,oBACnCA,EAAQ,YAAYE,GACpBF,EAAQ,SAASM,GAAOC,GAAO5vC,GAAOC,CAAM,GAC5CovC,EAAQ,QAAO;AAAA,MACjB;AAEF,IAAAN,EAAS,KAAI,GACbA,EAAS,cAAc,GACvBA,EAAS,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAClCO,MAAY,WAAWE,IACzBT,EAAS,SAAS,KAAK,cAAc,eAAeS,CAAW,IACtDF,MAAY,iBACrBP,EAAS,SAAS,KAAK,cAAc,oBAAoBS,CAAW;AAEtE,UAAMK,IAAO,IAAI,OAAM;AACvB,IAAAA,EAAK,KAAKZ,GAAcC,GAAclvC,GAAOC,CAAM,GACnD8uC,EAAS,KAAKc,CAAI,GAClBd,EAAS,2BAA2B,kBACpCA,EAAS,UAAUnB,GAAY+B,GAAOC,GAAO5vC,GAAOC,GAAQgvC,GAAcC,GAAclvC,GAAOC,CAAM,GACrG8uC,EAAS,QAAO;AAAA,EAClB;AAAA,EACA,KAAK7R,GAAO;AAz1Vd,QAAAjnC;AA01VI,IAAI,KAAK,eACPq0C,GAAa,KAAK,KAAK,KAAK,YAAY,GAE1C,KAAK,IAAI,KAAI;AACb,UAAMwF,IAAM,KAAK;AACjB,SAAK,WAAW,KAAKA,CAAG,GACxB,KAAK,UAAUA,EAAI,MAAK,IACxB75C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,KAAKinC;AAAA,EAC/B;AAAA,EACA,QAAQA,GAAO;AAn2VjB,QAAAjnC;AAq2VI,SADAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,QAAQinC,IAC5B,KAAK,WAAW,WAAW,GAAG;AAChC,MAAI,KAAK,eACP,KAAK,aAAY;AAEnB;AAAA,IACF;AACA,SAAK,UAAU,KAAK,WAAW,IAAG,GAClC,KAAK,IAAI,QAAO,GACZ,KAAK,eACPoN,GAAa,KAAK,cAAc,KAAK,GAAG,GAE1C,KAAK,gBAAe,GACpB,KAAK,cAAc,MACnB,KAAK,wBAAwB,CAAC,IAAI,IAClC,KAAK,6BAA6B;AAAA,EACpC;AAAA,EACA,UAAUpN,GAAOjkC,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,GAAG;AAr3VrC,QAAAvN;AAs3VI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,sBAAsB,aAAainC,IAC3D,KAAK,IAAI,UAAUjkC,GAAGvC,GAAGwC,GAAGrB,GAAG+J,GAAG4B,CAAC,GACnC,KAAK,wBAAwB,CAAC,IAAI,IAClC,KAAK,6BAA6B;AAAA,EACpC;AAAA,EACA,cAAc05B,GAAO6S,GAAIvoC,GAAM3Q,GAAQ;AACrC,QAAI,CAAC4Q,CAAI,IAAID;AACb,QAAI,CAAC3Q,GAAQ;AACX,MAAA4Q,UAASD,EAAK,CAAC,IAAI,IAAI,OAAM,IAC7B,KAAKuoC,CAAE,EAAE7S,GAAOz1B,CAAI;AACpB;AAAA,IACF;AACA,QAAI,KAAK,sBAAsB,MAAM;AACnC,YAAMuoC,IAAiBD,MAAO19C,GAAI,SAAS,KAAK,QAAQ,YAAY,IAAI;AACxE,WAAK,kBAAkB,UAAU6qC,CAAK,EAAE,WAAWA,GAAO,KAAK,KAAKrmC,EAAO,CAAC,IAAIm5C,GAAgBn5C,EAAO,CAAC,IAAIm5C,GAAgBn5C,EAAO,CAAC,IAAIm5C,GAAgBn5C,EAAO,CAAC,IAAIm5C,CAAc,EAAE,mBAAmB9S,GAAO,CAAC,WAAW,CAAC;AAAA,IAC7N;AACA,IAAMz1B,aAAgB,WACpBA,IAAOD,EAAK,CAAC,IAAID,GAAoBE,CAAI,IAE3CjR,EAAK,wBAAwBK,GAAQyM,GAAoB,KAAK,GAAG,GAAG,KAAK,QAAQ,MAAM,GACvF,KAAKysC,CAAE,EAAE7S,GAAOz1B,CAAI,GACpB,KAAK,gBAAgBy1B;AAAA,EACvB;AAAA,EACA,UAAUA,GAAO;AACf,SAAK,IAAI,UAAS;AAAA,EACpB;AAAA,EACA,OAAOA,GAAOz1B,GAAMwoC,IAAc,IAAM;AAh5V1C,QAAAh6C;AAi5VI,UAAMsN,IAAM,KAAK,KACX2sC,IAAc,KAAK,QAAQ;AAEjC,QADA3sC,EAAI,cAAc,KAAK,QAAQ,aAC3B,KAAK;AACP,UAAI,OAAO2sC,KAAgB,aAAYA,KAAA,QAAAA,EAAa,aAAY;AAC9D,cAAMlM,IAAgBkM,EAAY,4BAA2B,IAAK3sC,EAAI,aAAY,IAAK;AAGvF,YAFAA,EAAI,KAAI,GACRA,EAAI,cAAc2sC,EAAY,WAAW3sC,GAAK,MAAME,GAA2BF,CAAG,GAAGg8B,GAAS,QAAQrC,CAAK,GACvG8G,GAAe;AACjB,gBAAMmM,IAAU,IAAI,OAAM;AAC1B,UAAAA,EAAQ,QAAQ1oC,GAAMlE,EAAI,aAAY,EAAG,WAAU,EAAG,aAAaygC,CAAa,CAAC,GACjFv8B,IAAO0oC;AAAA,QACT;AACA,aAAK,iBAAiB1oC,GAAM,EAAK,GACjClE,EAAI,QAAO;AAAA,MACb;AACE,aAAK,iBAAiBkE,GAAM,EAAI;AAGpC,KAAAxR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBinC,GAAOoC,GAAa,SAC3D2Q,KACF,KAAK,YAAY/S,GAAOz1B,GAAM,KAAK,QAAQ,0BAA0B83B,GAAS,QAAQj8B,GAAoB,KAAK,GAAG,CAAC,CAAC,GAEtHC,EAAI,cAAc,KAAK,QAAQ;AAAA,EACjC;AAAA,EACA,YAAY25B,GAAOz1B,GAAM;AACvB,SAAK,OAAOy1B,GAAOz1B,CAAI;AAAA,EACzB;AAAA,EACA,KAAKy1B,GAAOz1B,GAAMwoC,IAAc,IAAM;AA76VxC,QAAAh6C,GAAAC,GAAAse;AA86VI,UAAMjR,IAAM,KAAK,KACXgqC,IAAY,KAAK,QAAQ,WACzBC,IAAgB,KAAK,QAAQ;AACnC,QAAI4C,IAAc;AAClB,QAAI5C,GAAe;AACjB,YAAMxJ,IAAgBuJ,EAAU,4BAA2B,IAAKhqC,EAAI,aAAY,IAAK;AAIrF,WAHAtN,IAAA,KAAK,sBAAL,QAAAA,EAAwB,KAAKinC,IAC7B35B,EAAI,KAAI,GACRA,EAAI,YAAYgqC,EAAU,WAAWhqC,GAAK,MAAME,GAA2BF,CAAG,GAAGg8B,GAAS,MAAMrC,CAAK,GACjG8G,GAAe;AACjB,cAAMmM,IAAU,IAAI,OAAM;AAC1B,QAAAA,EAAQ,QAAQ1oC,GAAMlE,EAAI,aAAY,EAAG,WAAU,EAAG,aAAaygC,CAAa,CAAC,GACjFv8B,IAAO0oC;AAAA,MACT;AACA,MAAAC,IAAc;AAAA,IAChB;AACA,UAAMhH,IAAY,KAAK,QAAQ,0BAAyB;AACxD,IAAI,KAAK,kBAAkBA,MAAc,SACnC,KAAK,iBACP7lC,EAAI,KAAKkE,GAAM,SAAS,GACxB,KAAK,gBAAgB,MAErBlE,EAAI,KAAKkE,CAAI,KAGjBvR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBgnC,GAAOoC,GAAa,OAC3D8Q,MACF7sC,EAAI,QAAO,IACXiR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,QAAQ0oB,KAE9B+S,KACF,KAAK,YAAY/S,GAAOz1B,GAAM2hC,CAAS;AAAA,EAE3C;AAAA,EACA,OAAOlM,GAAOz1B,GAAM;AAClB,SAAK,gBAAgB,IACrB,KAAK,KAAKy1B,GAAOz1B,CAAI;AAAA,EACvB;AAAA,EACA,WAAWy1B,GAAOz1B,GAAM;AACtB,SAAK,KAAKy1B,GAAOz1B,GAAM,EAAK,GAC5B,KAAK,OAAOy1B,GAAOz1B,GAAM,EAAK,GAC9B,KAAK,YAAYy1B,GAAOz1B,CAAI;AAAA,EAC9B;AAAA,EACA,aAAay1B,GAAOz1B,GAAM;AACxB,SAAK,gBAAgB,IACrB,KAAK,WAAWy1B,GAAOz1B,CAAI;AAAA,EAC7B;AAAA,EACA,gBAAgBy1B,GAAOz1B,GAAM;AAC3B,SAAK,WAAWy1B,GAAOz1B,CAAI;AAAA,EAC7B;AAAA,EACA,kBAAkBy1B,GAAOz1B,GAAM;AAC7B,SAAK,gBAAgB,IACrB,KAAK,WAAWy1B,GAAOz1B,CAAI;AAAA,EAC7B;AAAA,EACA,QAAQy1B,GAAOz1B,GAAM;AACnB,SAAK,YAAYy1B,GAAOz1B,CAAI;AAAA,EAC9B;AAAA,EACA,YAAYy1B,GAAOz1B,GAAM;AAv+V3B,QAAAxR;AAw+VI,SAAK,IAAI,KAAKwR,CAAI,IAClBxR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBinC,GAAOoC,GAAa,aAAa,gBAAgBpC;AAAA,EAC9F;AAAA,EACA,KAAKA,GAAO;AA3+Vd,QAAAjnC;AA4+VI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,6BAA6B,YAAYinC,IACjE,KAAK,cAAc8N;AAAA,EACrB;AAAA,EACA,OAAO9N,GAAO;AA/+VhB,QAAAjnC;AAg/VI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,6BAA6B,YAAYinC,IACjE,KAAK,cAAc+N;AAAA,EACrB;AAAA,EACA,UAAU/N,GAAO;AAn/VnB,QAAAjnC;AAo/VI,SAAK,QAAQ,aAAa,MAC1B,KAAK,QAAQ,kBAAkB,GAC/B,KAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ,GACtC,KAAK,QAAQ,IAAI,KAAK,QAAQ,QAAQ,IACtCA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiBinC,GAAO,qBAAqB,gBAAgB,qBAAqB,YAAYA;AAAA,EACxH;AAAA,EACA,QAAQA,GAAO;AACb,UAAMmT,IAAQ,KAAK,kBACb9sC,IAAM,KAAK;AACjB,QAAI,KAAK,mBAAmB;AAC1B,YAAM;AAAA,QACJ,mBAAA47B;AAAA,MACR,IAAU;AACJ,MAAIkR,MAAU,UACZlR,EAAkB,6BAA6B,YAAYA,EAAkB,cAAa,CAAE,EAAE,6BAA6B,YAAYjC,CAAK,GAE9IiC,EAAkB,kBAAkBjC,CAAK;AAAA,IAC3C;AACA,QAAImT,MAAU,QAAW;AACvB,YAAMF,IAAU,IAAI,OAAM,GACpBtpB,IAAYtjB,EAAI,aAAY,EAAG,WAAU;AAC/C,iBAAW;AAAA,QACT,WAAA3M;AAAA,QACA,GAAA+C;AAAA,QACA,GAAAC;AAAA,QACA,UAAA02C;AAAA,QACA,MAAA7oC;AAAA,MACR,KAAW4oC;AACH,QAAK5oC,KAGL0oC,EAAQ,QAAQ1oC,GAAM,IAAI,UAAU7Q,CAAS,EAAE,gBAAgBiwB,CAAS,EAAE,UAAUltB,GAAGC,CAAC,EAAE,MAAM02C,GAAU,CAACA,CAAQ,CAAC;AAEtH,MAAA/sC,EAAI,KAAK4sC,CAAO;AAAA,IAClB;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,eAAejT,GAAOqT,GAAS;AAzhWjC,QAAAt6C;AA0hWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,QAAQ,cAAcqT;AAAA,EAC7B;AAAA,EACA,eAAerT,GAAOqT,GAAS;AA7hWjC,QAAAt6C;AA8hWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,QAAQ,cAAcqT;AAAA,EAC7B;AAAA,EACA,UAAUrT,GAAO/9B,GAAO;AAjiW1B,QAAAlJ;AAkiWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,UAAUinC,IACnD,KAAK,QAAQ,aAAa/9B,IAAQ;AAAA,EACpC;AAAA,EACA,WAAW+9B,GAAOsT,GAAS;AAriW7B,QAAAv6C;AAsiWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,WAAWinC,IACpD,KAAK,QAAQ,UAAU,CAACsT;AAAA,EAC1B;AAAA,EACA,QAAQtT,GAAOuT,GAAarkC,GAAM;AAziWpC,QAAAnW,GAAAC;AA0iWI,KAAAD,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,QAAQinC,GAAO,0BAA0B,WAAWuT,GAAavT;AAC1G,UAAMwT,IAAU,KAAK,WAAW,IAAID,CAAW,GACzC5K,IAAU,KAAK;AACrB,QAAI,CAAC6K;AACH,YAAM,IAAI,MAAM,uBAAuBD,CAAW,EAAE;AActD,QAZA5K,EAAQ,aAAa6K,EAAQ,cAAcn/C,KACvCs0C,EAAQ,WAAW,CAAC,MAAM,KAAKA,EAAQ,WAAW,CAAC,MAAM,MAC3D/yC,EAAK,kCAAkC29C,CAAW,GAEhDrkC,IAAO,KACTA,IAAO,CAACA,GACRy5B,EAAQ,gBAAgB,MAExBA,EAAQ,gBAAgB,GAE1B,KAAK,QAAQ,OAAO6K,GACpB,KAAK,QAAQ,WAAWtkC,GACpBskC,EAAQ;AACV;AAEF,UAAMr8C,IAAOq8C,EAAQ,cAAc,cAC7BC,MAAWz6C,IAAAw6C,EAAQ,mBAAR,gBAAAx6C,EAAwB,QAAO,IAAI7B,CAAI,MAAMq8C,EAAQ,YAAY;AAClF,QAAIE,IAAO;AACX,IAAIF,EAAQ,QACVE,IAAO,QACEF,EAAQ,SACjBE,IAAO;AAET,UAAMC,IAASH,EAAQ,SAAS,WAAW;AAC3C,QAAII,IAAkB1kC;AACtB,IAAIA,IAAOy6B,KACTiK,IAAkBjK,KACTz6B,IAAO06B,OAChBgK,IAAkBhK,KAEpB,KAAK,QAAQ,gBAAgB16B,IAAO0kC,GACpC,KAAK,IAAI,OAAO,GAAGD,CAAM,IAAID,CAAI,IAAIE,CAAe,MAAMH,CAAQ;AAAA,EACpE;AAAA,EACA,qBAAqBzT,GAAOnnB,GAAM;AAjlWpC,QAAA9f;AAklWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,qBAAqBinC,IAC9D,KAAK,QAAQ,oBAAoBnnB;AAAA,EACnC;AAAA,EACA,YAAYmnB,GAAO6T,GAAM;AArlW3B,QAAA96C;AAslWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,YAAYinC,IACrD,KAAK,QAAQ,WAAW6T;AAAA,EAC1B;AAAA,EACA,SAAS7T,GAAOvjC,GAAGC,GAAG;AAzlWxB,QAAA3D;AA0lWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,qBAAqB,gBAAgB,sBAAsB,YAAYinC,IAC/F,KAAK,QAAQ,IAAI,KAAK,QAAQ,SAASvjC,GACvC,KAAK,QAAQ,IAAI,KAAK,QAAQ,SAASC;AAAA,EACzC;AAAA,EACA,mBAAmBsjC,GAAOvjC,GAAGC,GAAG;AAC9B,SAAK,WAAWsjC,GAAO,CAACtjC,CAAC,GACzB,KAAK,SAASsjC,GAAOvjC,GAAGC,CAAC;AAAA,EAC3B;AAAA,EACA,cAAcsjC,GAAOlkC,GAAQ;AAlmW/B,QAAA/C;AAmmWI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,qBAAqB,gBAAgB,iBAAiB,cAAcinC;AAC5F,UAAM;AAAA,MACJ,SAAA2I;AAAA,IACN,IAAQ;AACJ,IAAAA,EAAQ,aAAa7sC,GACrB6sC,EAAQ,kBAAkB,KAAK,MAAM7sC,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GACzD6sC,EAAQ,IAAIA,EAAQ,QAAQ,GAC5BA,EAAQ,IAAIA,EAAQ,QAAQ;AAAA,EAC9B;AAAA,EACA,SAAS3I,GAAO;AA5mWlB,QAAAjnC;AA6mWI,SAAK,SAASinC,GAAO,GAAG,KAAK,QAAQ,OAAO,IAC5CjnC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,sBAAsB,YAAY,KAAK,kBAAkB,eAAe,SAAS,KAAKinC;AAAA,EAChH;AAAA,EAMA,UAAUA,GAAO1P,GAAW7zB,GAAGC,GAAGo3C,GAAsBC,GAAwB;AArnWlF,QAAAh7C,GAAAC,GAAAse,GAAAC;AAsnWI,UAAMlR,IAAM,KAAK,KACXsiC,IAAU,KAAK,SACfha,IAAOga,EAAQ,MACfqL,IAAoBrL,EAAQ,mBAC5ByK,IAAWzK,EAAQ,WAAWA,EAAQ,eACtCsL,IAAiBD,IAAoBl/C,GAAkB,kBACvDo/C,IAAiB,CAAC,EAAEF,IAAoBl/C,GAAkB,mBAC1Dq/C,IAAcxL,EAAQ,eAAe,CAACha,EAAK,aAC3CylB,IAAgBzL,EAAQ,iBAAiB,CAACha,EAAK;AACrD,QAAIpkB;AAIJ,SAHKokB,EAAK,mBAAmBulB,KAAkBC,KAAeC,MAAkB,CAACzlB,EAAK,gBACpFpkB,IAAOokB,EAAK,iBAAiB,KAAK,YAAY2B,CAAS,IAErD/lB,MAASokB,EAAK,mBAAmBwlB,KAAeC,IAAgB;AAClE,MAAA/tC,EAAI,KAAI,GACRA,EAAI,UAAU5J,GAAGC,CAAC,GAClB2J,EAAI,MAAM+sC,GAAU,CAACA,CAAQ,IAC7Br6C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBAAoBinC,GAAO35B,GAAKsoB;AACxD,UAAI4hB;AACJ,UAAI0D,MAAmBn/C,GAAkB,QAAQm/C,MAAmBn/C,GAAkB;AACpF,YAAIg/C,GAAsB;AACxB,UAAAvD,IAAmBlqC,EAAI,aAAY,GACnCA,EAAI,aAAa,GAAGytC,CAAoB;AACxC,gBAAMO,IAAal3C,EAAA,MAAK6wC,IAAAG,IAAL,WAAoB5jC,GAAMgmC,GAAkBuD;AAC/D,UAAAztC,EAAI,KAAKguC,CAAU;AAAA,QACrB;AACE,UAAAhuC,EAAI,KAAKkE,CAAI;AAGjB,UAAI0pC,MAAmBn/C,GAAkB,UAAUm/C,MAAmBn/C,GAAkB;AACtF,YAAIi/C,GAAwB;AAC1B,UAAAxD,UAAqBlqC,EAAI,aAAY,IACrCA,EAAI,aAAa,GAAG0tC,CAAsB;AAC1C,gBAAM;AAAA,YACJ,GAAAh4C;AAAA,YACA,GAAAvC;AAAA,YACA,GAAAwC;AAAA,YACA,GAAArB;AAAA,UACZ,IAAc41C,GACE+D,IAAsBh7C,EAAK,iBAAiBy6C,CAAsB,GAClEtqB,IAASnwB,EAAK,UAAU,CAACyC,GAAGvC,GAAGwC,GAAGrB,GAAG,GAAG,CAAC,GAAG25C,CAAmB;AACrE,UAAAh7C,EAAK,8BAA8BmwB,GAAQwgB,EAAE,GAC7C5jC,EAAI,aAAa,KAAK,IAAI4jC,GAAG,CAAC,GAAGA,GAAG,CAAC,CAAC,IAAImJ,GAC1C/sC,EAAI,OAAOlJ,EAAA,MAAK6wC,IAAAG,IAAL,WAAoB5jC,GAAMgmC,GAAkBwD,EAAuB;AAAA,QAChF;AACE,UAAA1tC,EAAI,aAAa+sC,GACjB/sC,EAAI,OAAOkE,CAAI;AAGnB,MAAAlE,EAAI,QAAO;AAAA,IACb;AACE,OAAI4tC,MAAmBn/C,GAAkB,QAAQm/C,MAAmBn/C,GAAkB,iBACpFuR,EAAI,SAASiqB,GAAW7zB,GAAGC,CAAC,IAC5B1D,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBAAoBgnC,GAAO35B,GAAKsoB,GAAMykB,GAAU32C,GAAGC,GAAG,MAAM2J,EAAI,YAAYiqB,CAAS,MAE3G2jB,MAAmBn/C,GAAkB,UAAUm/C,MAAmBn/C,GAAkB,iBAClF,KAAK,uBACPwiB,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBAAoB0oB,GAAO35B,GAAKsoB,GAAMykB,GAAU32C,GAAGC,GAAG,MAAM2J,EAAI,YAAYiqB,CAAS,GAAG,mBAAmB0P,GAAOoC,GAAa,UAEzJ/7B,EAAI,WAAWiqB,GAAW7zB,GAAGC,CAAC;AAGlC,IAAIw3C,OACY,KAAK,qBAAL,KAAK,mBAAqB,CAAA,IAClC,KAAK;AAAA,MACT,WAAW9tC,GAAoBC,CAAG;AAAA,MAClC,GAAA5J;AAAA,MACA,GAAAC;AAAA,MACA,UAAA02C;AAAA,MACA,MAAA7oC;AAAA,IACR,CAAO,IACDgN,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBAAoByoB,GAAO35B,GAAKsoB,GAAMykB,GAAU32C,GAAGC;AAAA,EAE/E;AAAA,EACA,IAAI,0BAA0B;AAC5B,UAAM;AAAA,MACJ,SAAS2J;AAAA,IACf,IAAQ,KAAK,eAAe,UAAU,2BAA2B,IAAI,EAAE;AACnE,IAAAA,EAAI,MAAM,KAAK,CAAC,GAChBA,EAAI,SAAS,KAAK,GAAG,EAAE;AACvB,UAAMiE,IAAOjE,EAAI,aAAa,GAAG,GAAG,IAAI,EAAE,EAAE;AAC5C,QAAIwY,IAAU;AACd,aAAS1mB,IAAI,GAAGA,IAAImS,EAAK,QAAQnS,KAAK;AACpC,UAAImS,EAAKnS,CAAC,IAAI,KAAKmS,EAAKnS,CAAC,IAAI,KAAK;AAChC,QAAA0mB,IAAU;AACV;AAAA,MACF;AAEF,WAAOjoB,EAAO,MAAM,2BAA2BioB,CAAO;AAAA,EACxD;AAAA,EACA,SAASmhB,GAAOuU,GAAQ;AAhtW1B,QAAAx7C,GAAAC,GAAAse,GAAAC;AAitWI,IAAI,KAAK,sBACP,KAAK,kBAAkB,mBAAmByoB,GAAOoC,GAAa,QAAQ,EAAE,UAAUpC,CAAK,GACnF,KAAK,QAAQ,oBAAoBlrC,GAAkB,oBACrD,KAAK,kBAAkB,6BAA6B,YAAYkrC,CAAK,EAAE,qDAAoD;AAG/H,UAAM2I,IAAU,KAAK,SACfha,IAAOga,EAAQ;AACrB,QAAIha,EAAK,aAAa;AACpB,WAAK,cAAcqR,GAAOuU,CAAM,IAChCx7C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,wBAAwBinC;AAChD;AAAA,IACF;AACA,UAAMoT,IAAWzK,EAAQ;AACzB,QAAIyK,MAAa,GAAG;AAClB,OAAAp6C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgBgnC;AACxC;AAAA,IACF;AACA,UAAM35B,IAAM,KAAK,KACXmuC,IAAgB7L,EAAQ,eACxB8L,IAAc9L,EAAQ,aACtB+L,IAAc/L,EAAQ,aACtBgM,IAAgBhM,EAAQ,eACxBiM,IAAajM,EAAQ,aAAagM,GAClCE,IAAeN,EAAO,QACtBO,IAAWnmB,EAAK,UAChBomB,IAAaD,IAAW,IAAI,IAC5BniB,IAAkBhE,EAAK,iBACvBqmB,IAAoB5B,IAAWzK,EAAQ,WAAW,CAAC,GACnDsM,IAAiBtM,EAAQ,sBAAsB7zC,GAAkB,QAAQ,CAAC65B,EAAK,mBAAmB,CAACga,EAAQ;AACjH,IAAAtiC,EAAI,KAAI,GACJsiC,EAAQ,cACVtiC,EAAI,UAAU,GAAGsiC,EAAQ,UAAU,GAErCtiC,EAAI,UAAUsiC,EAAQ,GAAGA,EAAQ,IAAIA,EAAQ,QAAQ,GACjDgM,IAAgB,IAClBtuC,EAAI,MAAMuuC,GAAY,EAAE,IAExBvuC,EAAI,MAAMuuC,GAAY,CAAC;AAEzB,QAAId,GAAsBC;AAC1B,UAAME,IAAiBtL,EAAQ,oBAAoB7zC,GAAkB,kBAC/DogD,IAAYjB,MAAmBn/C,GAAkB,QAAQm/C,MAAmBn/C,GAAkB,aAC9FqgD,IAAclB,MAAmBn/C,GAAkB,UAAUm/C,MAAmBn/C,GAAkB;AACxG,QAAIogD,KAAavM,EAAQ,aAAa;AACpC,MAAAtiC,EAAI,KAAI;AACR,YAAM68B,IAAUyF,EAAQ,UAAU,WAAWtiC,GAAK,MAAME,GAA2BF,CAAG,GAAGg8B,GAAS,MAAMrC,CAAK;AAC7G,MAAA8T,IAAuB1tC,GAAoBC,CAAG,GAC9CA,EAAI,QAAO,GACXA,EAAI,YAAY68B;AAAA,IAClB;AACA,QAAIiS,KAAexM,EAAQ,eAAe;AACxC,MAAAtiC,EAAI,KAAI;AACR,YAAM68B,IAAUyF,EAAQ,YAAY,WAAWtiC,GAAK,MAAME,GAA2BF,CAAG,GAAGg8B,GAAS,QAAQrC,CAAK;AACjH,MAAA+T,IAAyB3tC,GAAoBC,CAAG,GAChDA,EAAI,QAAO,GACXA,EAAI,cAAc68B;AAAA,IACpB;AACA,QAAIkS,IAAYzM,EAAQ;AACxB,UAAM1mC,IAAQ0mC,EAAQ;AAatB,QAZI1mC,MAAU,KAAKmzC,MAAc,IAC3BD,MACFC,IAAY,KAAK,oBAAmB,KAGtCA,KAAanzC,GAEXuyC,MAAkB,MACpBnuC,EAAI,MAAMmuC,GAAeA,CAAa,GACtCY,KAAaZ,IAEfnuC,EAAI,YAAY+uC,GACZzmB,EAAK,oBAAoB;AAC3B,YAAM0mB,IAAQ,CAAA;AACd,UAAIvyC,IAAQ;AACZ,iBAAWwyC,MAASf;AAClB,QAAAc,EAAM,KAAKC,GAAM,OAAO,GACxBxyC,KAASwyC,GAAM;AAEjB,YAAMC,IAAcF,EAAM,KAAK,EAAE;AAEjC,UADAhvC,EAAI,SAASkvC,GAAa,GAAG,CAAC,GAC1B,KAAK,sBAAsB,MAAM;AACnC,cAAM1U,KAAUx6B,EAAI,YAAYkvC,CAAW;AAC3C,aAAK,kBAAkB,WAAWvV,GAAO,KAAK,KAAK,CAACa,GAAQ,uBAAuBA,GAAQ,wBAAwB,CAACA,GAAQ,yBAAyBA,GAAQ,wBAAwB,EAAE,wBAAwBb,CAAK;AAAA,MACtN;AACA,MAAA2I,EAAQ,KAAK7lC,IAAQkyC,IAAoBJ,GACzCvuC,EAAI,QAAO,GACX,KAAK,QAAO;AACZ;AAAA,IACF;AACA,QAAI5J,IAAI,GACNtE;AACF,SAAKA,IAAI,GAAGA,IAAI08C,GAAc,EAAE18C,GAAG;AACjC,YAAMm9C,IAAQf,EAAOp8C,CAAC;AACtB,UAAI,OAAOm9C,KAAU,UAAU;AAC7B,QAAA74C,KAAKs4C,IAAaO,IAAQlC,IAAW;AACrC;AAAA,MACF;AACA,UAAIoC,IAAgB;AACpB,YAAMnC,KAAWiC,EAAM,UAAUZ,IAAc,KAAKD,GAC9CnkB,KAAYglB,EAAM,UAClBG,KAASH,EAAM;AACrB,UAAII,IAASC,IACT7yC,KAAQwyC,EAAM;AAClB,UAAIR,GAAU;AACZ,cAAMc,KAAUN,EAAM,WAAW3iB,GAC3BkjB,KAAK,EAAEP,EAAM,UAAUM,GAAQ,CAAC,IAAI9yC,KAAQ,OAAOkyC,GACnDc,KAAKF,GAAQ,CAAC,IAAIZ;AACxB,QAAAlyC,KAAQ8yC,KAAU,CAACA,GAAQ,CAAC,IAAI9yC,IAChC4yC,KAAUG,KAAKrB,GACfmB,MAAWl5C,IAAIq5C,MAAMtB;AAAA,MACvB;AACE,QAAAkB,KAAUj5C,IAAI+3C,GACdmB,KAAU;AAEZ,UAAI9U;AACJ,UAAIlS,EAAK,aAAa7rB,KAAQ,GAAG;AAC/B,QAAA+9B,KAAUx6B,EAAI,YAAYiqB,EAAS;AACnC,cAAMylB,KAAgBlV,GAAQ,QAAQ,MAAOuS,IAAWoB;AACxD,YAAI1xC,KAAQizC,MAAiB,KAAK,yBAAyB;AACzD,gBAAMC,KAAkBlzC,KAAQizC;AAChC,UAAAP,IAAgB,IAChBnvC,EAAI,KAAI,GACRA,EAAI,MAAM2vC,IAAiB,CAAC,GAC5BN,MAAWM;AAAA,QACb,MAAO,CAAIlzC,OAAUizC,OACnBL,OAAY5yC,KAAQizC,MAAiB,MAAO3C,IAAWoB;AAAA,MAE3D;AACA,UAAI,KAAK,mBAAmBc,EAAM,YAAY3mB,EAAK;AACjD,YAAIsmB,KAAkB,CAACQ;AACrB,UAAApvC,EAAI,SAASiqB,IAAWolB,IAASC,EAAO,IACxCr+B,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBAAoB0oB,GAAO35B,GAAKw6B,KAAU;AAAA,YAChE,MAAM;AAAA,UAClB,IAAclS,GAAMykB,IAAWoB,GAAekB,IAASC,IAAS,MAAM9U,MAAWx6B,EAAI,YAAYiqB,EAAS;AAAA,iBAEhG,KAAK,UAAU0P,GAAO1P,IAAWolB,IAASC,IAAS7B,GAAsBC,CAAsB,GAC3F0B,IAAQ;AACV,gBAAMQ,KAAgBP,KAAUtC,IAAWqC,GAAO,OAAO,IAAIjB,GACvD0B,KAAgBP,KAAUvC,IAAWqC,GAAO,OAAO,IAAIjB;AAC7D,eAAK,UAAUxU,GAAOyV,GAAO,UAAUQ,IAAeC,IAAepC,GAAsBC,CAAsB;AAAA,QACnH;AAAA;AAGJ,YAAMoC,KAAYrB,IAAWhyC,KAAQkyC,IAAoB3B,IAAUsB,IAAgB7xC,KAAQkyC,IAAoB3B,IAAUsB;AACzH,MAAAl4C,KAAK05C,IACDX,KACFnvC,EAAI,QAAO;AAAA,IAEf;AACA,IAAIyuC,IACFnM,EAAQ,KAAKlsC,IAEbksC,EAAQ,KAAKlsC,IAAIm4C,GAEnBvuC,EAAI,QAAO,GACX,KAAK,QAAO,IACZkR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,wBAAwByoB;AAAA,EAElD;AAAA,EACA,cAAcA,GAAOuU,GAAQ;AAC3B,UAAMluC,IAAM,KAAK,KACXsiC,IAAU,KAAK,SACfha,IAAOga,EAAQ,MACfyK,IAAWzK,EAAQ,UACnBgM,IAAgBhM,EAAQ,eACxBoM,IAAapmB,EAAK,WAAW,IAAI,IACjC8lB,IAAc9L,EAAQ,aACtB+L,IAAc/L,EAAQ,aACtBiM,IAAajM,EAAQ,aAAagM,GAClCjiB,IAAaiW,EAAQ,cAAct0C,IACnCwgD,IAAeN,EAAO,QACtB6B,IAAkBzN,EAAQ,sBAAsB7zC,GAAkB;AACxE,QAAIqD,GAAGm9C,GAAOxyC,GAAOuzC;AACrB,QAAID,KAAmBhD,MAAa;AAClC;AAEF,SAAK,wBAAwB,CAAC,IAAI,IAClC,KAAK,6BAA6B,MAClC/sC,EAAI,KAAI,GACJsiC,EAAQ,cACVtiC,EAAI,UAAU,GAAGsiC,EAAQ,UAAU,GAErCtiC,EAAI,UAAUsiC,EAAQ,GAAGA,EAAQ,IAAIA,EAAQ,QAAQ,GACrDtiC,EAAI,MAAMuuC,GAAYD,CAAa;AACnC,UAAM1S,IAAoB,KAAK;AAE/B,SADA,KAAK,oBAAoBA,IAAoB,IAAIE,GAA8BF,GAAmBjC,CAAK,IAAI,MACtG7nC,IAAI,GAAGA,IAAI08C,GAAc,EAAE18C,GAAG;AAEjC,UADAm9C,IAAQf,EAAOp8C,CAAC,GACZ,OAAOm9C,KAAU,UAAU;AAC7B,QAAAe,IAAgBtB,IAAaO,IAAQlC,IAAW,KAChD,KAAK,IAAI,UAAUiD,GAAe,CAAC,GACnC1N,EAAQ,KAAK0N,IAAgBzB;AAC7B;AAAA,MACF;AACA,YAAMvB,KAAWiC,EAAM,UAAUZ,IAAc,KAAKD,GAC9C1N,IAAepY,EAAK,qBAAqB2mB,EAAM,cAAc;AACnE,MAAKvO,IAEM,KAAK,mBACd,KAAK,KAAI,GACT1gC,EAAI,MAAM+sC,GAAUA,CAAQ,GAC5B/sC,EAAI,UAAU,GAAGqsB,CAAU,GAC3B,KAAK,oBAAoBqU,CAAY,GACrC,KAAK,QAAO,KANZnxC,EAAK,oBAAoB0/C,EAAM,cAAc,qBAAqB;AAQpE,YAAMr7C,IAAI,CAACq7C,EAAM,OAAO,CAAC;AACzB,MAAAh8C,EAAK,eAAeW,GAAGy4B,CAAU,GACjC5vB,IAAQ7I,EAAE,CAAC,IAAIm5C,IAAWC,GAC1BhtC,EAAI,UAAUvD,GAAO,CAAC,GACtB6lC,EAAQ,KAAK7lC,IAAQ8xC;AAAA,IACvB;AACA,IAAAvuC,EAAI,QAAO,GACP47B,MACF,KAAK,oBAAoBA;AAAA,EAE7B;AAAA,EACA,aAAajC,GAAOsW,GAAQC,GAAQ;AAAA,EAAC;AAAA,EACrC,sBAAsBvW,GAAOsW,GAAQC,GAAQC,GAAKC,GAAKC,GAAKC,GAAK;AA36WnE,QAAA59C;AA46WI,UAAM45C,IAAO,IAAI,OAAM;AACvB,IAAAA,EAAK,KAAK6D,GAAKC,GAAKC,IAAMF,GAAKG,IAAMF,CAAG,GACxC,KAAK,IAAI,KAAK9D,CAAI,IAClB55C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,WAAWinC,GAAO,KAAK,KAAKwW,GAAKE,GAAKD,GAAKE,GAAK,cAAc3W,GAAO,KAAK,KAAKwW,GAAKE,GAAKD,GAAKE,IACtH,KAAK,QAAQ3W,CAAK;AAAA,EACpB;AAAA,EACA,kBAAkBA,GAAO0C,GAAI;AAC3B,QAAIQ;AACJ,QAAIR,EAAG,CAAC,MAAM,iBAAiB;AAC7B,YAAMoE,IAAgB,KAAK,iBAAiB1gC,GAAoB,KAAK,GAAG,GAClEygC,IAAwB;AAAA,QAC5B,sBAAsB,CAACxgC,GAAKuwC,MAAmB,IAAIxI,GAAe/nC,GAAK,KAAK,YAAY,KAAK,MAAM,KAAK,eAAe,KAAK,eAAe;AAAA,UACzI,uBAAuB,KAAK;AAAA,UAC5B,oBAAoB,KAAK;AAAA,QACnC,GAAW,QAAW,QAAW,KAAK,oBAAoB,IAAI87B,GAA8B,KAAK,mBAAmByU,GAAgB,EAAI,IAAI,IAAI;AAAA,MAChJ;AACM,MAAA1T,IAAU,IAAI4F,GAAcpG,GAAI,KAAK,KAAKmE,GAAuBC,CAAa;AAAA,IAChF;AACE,MAAA5D,IAAU,KAAK,YAAYlD,GAAO0C,EAAG,CAAC,GAAGA,EAAG,CAAC,CAAC;AAEhD,WAAOQ;AAAA,EACT;AAAA,EACA,gBAAgBlD,MAAUvhC,GAAM;AAl8WlC,QAAA1F;AAm8WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,QAAQ,cAAc,KAAK,kBAAkBA,GAAOvhC,CAAI,GAC7D,KAAK,QAAQ,gBAAgB;AAAA,EAC/B;AAAA,EACA,cAAcuhC,MAAUvhC,GAAM;AAv8WhC,QAAA1F;AAw8WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,aAAainC,IACtD,KAAK,QAAQ,YAAY,KAAK,kBAAkBA,GAAOvhC,CAAI,GAC3D,KAAK,QAAQ,cAAc;AAAA,EAC7B;AAAA,EACA,kBAAkBuhC,GAAOl6B,GAAO;AA58WlC,QAAA/M;AA68WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,IAAI,cAAc,KAAK,QAAQ,cAAcl6B,GAClD,KAAK,QAAQ,gBAAgB;AAAA,EAC/B;AAAA,EACA,qBAAqBk6B,GAAO;AAj9W9B,QAAAjnC;AAk9WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,eAAeinC,IACxD,KAAK,IAAI,cAAc,KAAK,QAAQ,cAAc,eAClD,KAAK,QAAQ,gBAAgB;AAAA,EAC/B;AAAA,EACA,gBAAgBA,GAAOl6B,GAAO;AAt9WhC,QAAA/M;AAu9WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,aAAainC,IACtD,KAAK,IAAI,YAAY,KAAK,QAAQ,YAAYl6B,GAC9C,KAAK,QAAQ,cAAc;AAAA,EAC7B;AAAA,EACA,mBAAmBk6B,GAAO;AA39W5B,QAAAjnC;AA49WI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiB,aAAainC,IACtD,KAAK,IAAI,YAAY,KAAK,QAAQ,YAAY,eAC9C,KAAK,QAAQ,cAAc;AAAA,EAC7B;AAAA,EACA,YAAYA,GAAOzP,GAAOz0B,IAAS,MAAM;AACvC,QAAIonC;AACJ,WAAI,KAAK,eAAe,IAAI3S,CAAK,IAC/B2S,IAAU,KAAK,eAAe,IAAI3S,CAAK,KAEvC2S,IAAUwD,GAAkB,KAAK,UAAU1G,GAAOzP,CAAK,CAAC,GACxD,KAAK,eAAe,IAAIA,GAAO2S,CAAO,IAEpCpnC,MACFonC,EAAQ,SAASpnC,IAEZonC;AAAA,EACT;AAAA,EACA,YAAYlD,GAAOzP,GAAO;AA7+W5B,QAAAx3B;AA8+WI,QAAI,CAAC,KAAK;AACR;AAEF,UAAMsN,IAAM,KAAK;AACjB,SAAK,KAAK25B,CAAK;AACf,UAAMkD,IAAU,KAAK,YAAYlD,GAAOzP,CAAK;AAC7C,IAAAlqB,EAAI,YAAY68B,EAAQ,WAAW78B,GAAK,MAAME,GAA2BF,CAAG,GAAGg8B,GAAS,SAASrC,CAAK;AACtG,UAAM6W,IAAMtwC,GAA2BF,CAAG;AAC1C,QAAIwwC,GAAK;AACP,YAAM;AAAA,QACJ,OAAA/zC;AAAA,QACA,QAAAC;AAAA,MACR,IAAUsD,EAAI,QACF1M,IAASuwC,GAAa,MAAK;AACjC,MAAA5wC,EAAK,wBAAwB,CAAC,GAAG,GAAGwJ,GAAOC,CAAM,GAAG8zC,GAAKl9C,CAAM;AAC/D,YAAM,CAACgD,GAAIC,GAAIC,GAAIC,CAAE,IAAInD;AACzB,WAAK,IAAI,SAASgD,GAAIC,GAAIC,IAAKF,GAAIG,IAAKF,CAAE;AAAA,IAC5C;AACE,WAAK,IAAI,SAAS,OAAO,OAAO,MAAM,IAAI;AAE5C,KAAA7D,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC,GAAO,mBAAmBA,GAAO,mBAAmBA,GAAOoC,GAAa,WAAW,mBAAmBpC,GAAOoC,GAAa,MAAM,gBAAgBpC,IAClL,KAAK,QAAQ,KAAK,QAAQ,0BAAyB,CAAE,GACrD,KAAK,QAAQA,CAAK;AAAA,EACpB;AAAA,EACA,mBAAmB;AACjB,IAAAnqC,GAAY,kCAAkC;AAAA,EAChD;AAAA,EACA,iBAAiB;AACf,IAAAA,GAAY,gCAAgC;AAAA,EAC9C;AAAA,EACA,sBAAsBmqC,GAAOlkC,GAAQ20B,GAAM;AA5gX7C,QAAA13B;AA6gXI,QAAK,KAAK,mBAGV,KAAK,KAAKinC,CAAK,GACf,KAAK,mBAAmB,KAAK,KAAK,aAAa,GAC3ClkC,KACF,KAAK,UAAUkkC,GAAO,GAAGlkC,CAAM,GAEjC,KAAK,gBAAgBsK,GAAoB,KAAK,GAAG,GAC7CqqB,IAAM;AACR,MAAAn3B,EAAK,wBAAwBm3B,GAAM,KAAK,eAAe,KAAK,QAAQ,MAAM;AAC1E,YAAM,CAAC9zB,GAAIC,GAAIC,GAAIC,CAAE,IAAI2zB,GACnBkiB,IAAO,IAAI,OAAM;AACvB,MAAAA,EAAK,KAAKh2C,GAAIC,GAAIC,IAAKF,GAAIG,IAAKF,CAAE,GAClC,KAAK,IAAI,KAAK+1C,CAAI,IAClB55C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,cAAcinC,GAAO,KAAK,KAAKrjC,GAAIE,GAAID,GAAIE,IACnE,KAAK,QAAQkjC,CAAK;AAAA,IACpB;AAAA,EACF;AAAA,EACA,oBAAoBA,GAAO;AACzB,IAAK,KAAK,mBAGV,KAAK,QAAQA,CAAK,GAClB,KAAK,gBAAgB,KAAK,mBAAmB,IAAG;AAAA,EAClD;AAAA,EACA,WAAWA,GAAO8W,GAAO;AAviX3B,QAAA/9C;AAwiXI,QAAI,CAAC,KAAK;AACR;AAEF,SAAK,KAAKinC,CAAK,GACX,KAAK,gBACP,KAAK,aAAY,GACjB,KAAK,QAAQ,cAAc;AAE7B,UAAM+W,IAAa,KAAK;AACxB,IAAKD,EAAM,YACTphD,GAAK,oCAAoC,GAEvCohD,EAAM,YACRlhD,EAAK,gCAAgC;AAEvC,UAAM26C,IAAmBnqC,GAAoB2wC,CAAU;AAIvD,QAHID,EAAM,UACRC,EAAW,UAAU,GAAGD,EAAM,MAAM,GAElC,CAACA,EAAM;AACT,YAAM,IAAI,MAAM,2BAA2B;AAE7C,QAAIlhB,IAASsU,GAAa,MAAK;AAC/B,IAAA5wC,EAAK,wBAAwBw9C,EAAM,MAAM1wC,GAAoB2wC,CAAU,GAAGnhB,CAAM;AAChF,UAAMohB,IAAe,CAAC,GAAG,GAAGD,EAAW,OAAO,OAAOA,EAAW,OAAO,MAAM;AAC7E,IAAAnhB,IAASt8B,EAAK,UAAUs8B,GAAQohB,CAAY,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAC5D,UAAM70C,IAAU,KAAK,MAAMyzB,EAAO,CAAC,CAAC,GAC9BxzB,IAAU,KAAK,MAAMwzB,EAAO,CAAC,CAAC,GAC9Bkb,IAAa,KAAK,IAAI,KAAK,KAAKlb,EAAO,CAAC,CAAC,IAAIzzB,GAAS,CAAC,GACvD4uC,IAAc,KAAK,IAAI,KAAK,KAAKnb,EAAO,CAAC,CAAC,IAAIxzB,GAAS,CAAC;AAC9D,SAAK,QAAQ,uBAAuB,CAAC,GAAG,GAAG0uC,GAAYC,CAAW,CAAC;AACnE,QAAIS,IAAU,YAAY,KAAK;AAC/B,IAAIsF,EAAM,UACRtF,KAAW,YAAY,KAAK,iBAAiB;AAE/C,UAAMC,IAAgB,KAAK,eAAe,UAAUD,GAASV,GAAYC,CAAW,GAC9EkG,IAAWxF,EAAc;AAC/B,IAAAwF,EAAS,UAAU,CAAC90C,GAAS,CAACC,CAAO,GACrC60C,EAAS,UAAU,GAAG1G,CAAgB;AACtC,QAAIoC,IAAO,IAAI,OAAM;AACrB,UAAM,CAACh2C,GAAIC,GAAIC,GAAIC,CAAE,IAAIg6C,EAAM;AAE/B,QADAnE,EAAK,KAAKh2C,GAAIC,GAAIC,IAAKF,GAAIG,IAAKF,CAAE,GAC9Bk6C,EAAM,QAAQ;AAChB,YAAMvsC,IAAO,IAAI,OAAM;AACvB,MAAAA,EAAK,QAAQooC,GAAM,IAAI,UAAUmE,EAAM,MAAM,CAAC,GAC9CnE,IAAOpoC;AAAA,IACT;AACA,IAAA0sC,EAAS,KAAKtE,CAAI,GACdmE,EAAM,SACR,KAAK,WAAW,KAAK;AAAA,MACnB,QAAQrF,EAAc;AAAA,MACtB,SAASwF;AAAA,MACT,SAAA90C;AAAA,MACA,SAAAC;AAAA,MACA,SAAS00C,EAAM,MAAM;AAAA,MACrB,UAAUA,EAAM,MAAM;AAAA,MACtB,aAAaA,EAAM,MAAM,eAAe;AAAA,MACxC,uBAAuB;AAAA,IAC/B,CAAO,IAEC,CAACA,EAAM,SAAS,KAAK,uBACvBC,EAAW,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACxCA,EAAW,UAAU50C,GAASC,CAAO,GACrC20C,EAAW,KAAI,IAEjB3J,GAAa2J,GAAYE,CAAQ,GACjC,KAAK,MAAMA,IACXl+C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,4CAA4C,CAAC,aAAa,eAAe,0BAA0B,GAAG,kBAAkBg+C,IAChJ,KAAK,UAAU/W,GAAO,CAAC,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GACnE,KAAK,WAAW,KAAK+W,CAAU,GAC/B,KAAK;AAAA,EACP;AAAA,EACA,SAAS/W,GAAO8W,GAAO;AAhnXzB,QAAA/9C;AAinXI,QAAI,CAAC,KAAK;AACR;AAEF,SAAK;AACL,UAAMk+C,IAAW,KAAK,KAChB5wC,IAAM,KAAK,WAAW,IAAG;AAI/B,QAHA,KAAK,MAAMA,GACX,KAAK,IAAI,wBAAwB,KACjCtN,IAAA,KAAK,sBAAL,QAAAA,EAAwB,oBACpB+9C,EAAM;AACR,WAAK,YAAY,KAAK,WAAW,IAAG,GACpC,KAAK,QAAQ9W,CAAK,GACd,KAAK,qBACP,KAAK,IAAI,QAAO;AAAA,SAEb;AACL,WAAK,IAAI,QAAO;AAChB,YAAMkX,IAAa9wC,GAAoB,KAAK,GAAG;AAC/C,WAAK,QAAQ45B,CAAK,GAClB,KAAK,IAAI,KAAI,GACb,KAAK,IAAI,aAAa,GAAGkX,CAAU;AACnC,YAAMxF,IAAWxH,GAAa,MAAK;AACnC,MAAA5wC,EAAK,wBAAwB,CAAC,GAAG,GAAG29C,EAAS,OAAO,OAAOA,EAAS,OAAO,MAAM,GAAGC,GAAYxF,CAAQ,GACxG,KAAK,IAAI,UAAUuF,EAAS,QAAQ,GAAG,CAAC,GACxC,KAAK,IAAI,QAAO,GAChB,KAAK,QAAQvF,CAAQ;AAAA,IACvB;AAAA,EACF;AAAA,EACA,gBAAgB1R,GAAOjgC,GAAInF,GAAMlB,GAAWoC,GAAQq7C,GAAc;AAQhE,QAPAh6C,EAAA,MAAK6wC,IAAAC,IAAL,YACAT,GAAkB,KAAK,GAAG,GAC1B,KAAK,IAAI,KAAI,GACb,KAAK,KAAKxN,CAAK,GACX,KAAK,iBACP,KAAK,IAAI,aAAa,GAAG,KAAK,aAAa,GAEzCplC,GAAM;AACR,YAAMkI,IAAQlI,EAAK,CAAC,IAAIA,EAAK,CAAC,GACxBmI,IAASnI,EAAK,CAAC,IAAIA,EAAK,CAAC;AAC/B,UAAIu8C,KAAgB,KAAK,qBAAqB;AAC5C,QAAAz9C,IAAYA,EAAU,MAAK,GAC3BA,EAAU,CAAC,KAAKkB,EAAK,CAAC,GACtBlB,EAAU,CAAC,KAAKkB,EAAK,CAAC,GACtBA,IAAOA,EAAK,MAAK,GACjBA,EAAK,CAAC,IAAIA,EAAK,CAAC,IAAI,GACpBA,EAAK,CAAC,IAAIkI,GACVlI,EAAK,CAAC,IAAImI,GACVzJ,EAAK,8BAA8B8M,GAAoB,KAAK,GAAG,GAAG6jC,EAAE;AACpE,cAAM;AAAA,UACJ,eAAAmN;AAAA,QACV,IAAY,MACE9P,IAAc,KAAK,KAAKxkC,IAAQ,KAAK,eAAes0C,CAAa,GACjE7P,IAAe,KAAK,KAAKxkC,IAAS,KAAK,eAAeq0C,CAAa;AACzE,aAAK,mBAAmB,KAAK,cAAc,OAAO9P,GAAaC,CAAY;AAC3E,cAAM;AAAA,UACJ,QAAAl4B;AAAA,UACA,SAAA4Y;AAAA,QACV,IAAY,KAAK;AACT,aAAK,oBAAoB,IAAIloB,GAAIsP,CAAM,GACvC,KAAK,iBAAiB,WAAW,KAAK,KACtC,KAAK,MAAM4Y,GACX,KAAK,IAAI,KAAI,GACb,KAAK,IAAI,aAAagiB,GAAG,CAAC,GAAG,GAAG,GAAG,CAACA,GAAG,CAAC,GAAG,GAAGlnC,IAASknC,GAAG,CAAC,CAAC,GAC5DuD,GAAkB,KAAK,GAAG;AAAA,MAC5B,OAAO;AACL,QAAAA,GAAkB,KAAK,GAAG,GAC1B,KAAK,QAAQxN,CAAK;AAClB,cAAM2S,IAAO,IAAI,OAAM;AACvB,QAAAA,EAAK,KAAK/3C,EAAK,CAAC,GAAGA,EAAK,CAAC,GAAGkI,GAAOC,CAAM,GACzC,KAAK,IAAI,KAAK4vC,CAAI;AAAA,MACpB;AAAA,IACF;AACA,SAAK,UAAU,IAAI7G,GAAiB,KAAK,IAAI,OAAO,OAAO,KAAK,IAAI,OAAO,MAAM,GACjF,KAAK,UAAU9L,GAAO,GAAGtmC,CAAS,GAClC,KAAK,UAAUsmC,GAAO,GAAGlkC,CAAM;AAAA,EACjC;AAAA,EACA,cAAckkC,GAAO;AACnB,IAAI,KAAK,qBACP,KAAK,IAAI,QAAO,GAChB7iC,EAAA,MAAK6wC,IAAAE,IAAL,YACA,KAAK,MAAM,KAAK,iBAAiB,UACjC,OAAO,KAAK,iBAAiB,UAC7B,OAAO,KAAK;AAAA,EAEhB;AAAA,EACA,sBAAsBlO,GAAO8P,GAAK;AAtsXpC,QAAA/2C;AAusXI,QAAI,CAAC,KAAK;AACR;AAEF,UAAM40B,IAAQmiB,EAAI;AAClB,IAAAA,IAAM,KAAK,UAAU9P,GAAO8P,EAAI,MAAMA,CAAG,GACzCA,EAAI,QAAQniB;AACZ,UAAMtnB,IAAM,KAAK,KACX4mC,IAAO,KAAK,kBAAkBjN,GAAO8P,CAAG,GACxCY,IAAazD,EAAK;AACxB,IAAA5mC,EAAI,KAAI,GACRA,EAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACjCA,EAAI,UAAUqqC,GAAYzD,EAAK,SAASA,EAAK,OAAO,IACpDl0C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC,GAAO,WAAWA,GAAO,KAAK,KAAKiN,EAAK,SAASA,EAAK,UAAUyD,EAAW,OAAOzD,EAAK,SAASA,EAAK,UAAUyD,EAAW,QAAQ,gBAAgB1Q,IACpL35B,EAAI,QAAO,GACX,KAAK,QAAO;AAAA,EACd;AAAA,EACA,4BAA4B25B,GAAO8P,GAAK5J,GAAQmR,IAAQ,GAAGC,IAAQ,GAAGnR,GAAQoR,GAAW;AAvtX3F,QAAAx+C,GAAAC,GAAAse;AAwtXI,QAAI,CAAC,KAAK;AACR;AAEF,IAAAw4B,IAAM,KAAK,UAAU9P,GAAO8P,EAAI,MAAMA,CAAG;AACzC,UAAMzpC,IAAM,KAAK;AACjB,IAAAA,EAAI,KAAI;AACR,UAAMkqC,IAAmBnqC,GAAoBC,CAAG;AAChD,IAAAA,EAAI,UAAU6/B,GAAQmR,GAAOC,GAAOnR,GAAQ,GAAG,CAAC;AAChD,UAAM8G,IAAO,KAAK,kBAAkBjN,GAAO8P,CAAG;AAC9C,IAAAzpC,EAAI,aAAa,GAAG,GAAG,GAAG,GAAG4mC,EAAK,UAAUsD,EAAiB,CAAC,GAAGtD,EAAK,UAAUsD,EAAiB,CAAC,CAAC,IACnGx3C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC;AAClC,aAAS7nC,IAAI,GAAGmL,IAAKi0C,EAAU,QAAQp/C,IAAImL,GAAInL,KAAK,GAAG;AACrD,YAAMq/C,IAAQl+C,EAAK,UAAUi3C,GAAkB,CAACrK,GAAQmR,GAAOC,GAAOnR,GAAQoR,EAAUp/C,CAAC,GAAGo/C,EAAUp/C,IAAI,CAAC,CAAC,CAAC;AAC7G,MAAAkO,EAAI,UAAU4mC,EAAK,QAAQuK,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,IAC7Cx+C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,WAAWgnC,GAAO,KAAK,KAAKwX,EAAM,CAAC,GAAGA,EAAM,CAAC,IAAIvK,EAAK,OAAO,OAAOuK,EAAM,CAAC,GAAGA,EAAM,CAAC,IAAIvK,EAAK,OAAO;AAAA,IAC/H;AACA,IAAA5mC,EAAI,QAAO,GACX,KAAK,QAAO,IACZiR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgB0oB;AAAA,EAC1C;AAAA,EACA,2BAA2BA,GAAOyX,GAAQ;AA5uX5C,QAAA1+C,GAAAC,GAAAse;AA6uXI,QAAI,CAAC,KAAK;AACR;AAEF,UAAMjR,IAAM,KAAK,KACXgqC,IAAY,KAAK,QAAQ,WACzBC,IAAgB,KAAK,QAAQ;AACnC,KAAAv3C,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC,GAAO,mBAAmBA,GAAOoC,GAAa;AAChF,eAAWtzB,KAAS2oC,GAAQ;AAC1B,YAAM;AAAA,QACJ,MAAAntC;AAAA,QACA,OAAAxH;AAAA,QACA,QAAAC;AAAA,QACA,WAAArJ;AAAA,MACR,IAAUoV,GACE4hC,IAAa,KAAK,eAAe,UAAU,cAAc5tC,GAAOC,CAAM,GACtEovC,IAAUzB,EAAW;AAC3B,MAAAyB,EAAQ,KAAI;AACZ,YAAMrC,IAAM,KAAK,UAAU9P,GAAO11B,GAAMwE,CAAK;AAC7C,MAAAq+B,GAAmBgF,GAASrC,CAAG,GAC/BqC,EAAQ,2BAA2B,aACnCA,EAAQ,YAAY7B,IAAgBD,EAAU,WAAW8B,GAAS,MAAM5rC,GAA2BF,CAAG,GAAGg8B,GAAS,MAAMrC,CAAK,IAAIqQ,GACjI8B,EAAQ,SAAS,GAAG,GAAGrvC,GAAOC,CAAM,GACpCovC,EAAQ,QAAO,GACf9rC,EAAI,KAAI,GACRA,EAAI,UAAU,GAAG3M,CAAS,GAC1B2M,EAAI,MAAM,GAAG,EAAE,GACfukC,GAAyBvkC,GAAKqqC,EAAW,QAAQ,GAAG,GAAG5tC,GAAOC,GAAQ,GAAG,IAAI,GAAG,CAAC,IACjF/J,IAAA,KAAK,sBAAL,QAAAA,EAAwB,WAAWgnC,GAAO35B,GAAK,GAAGvD,GAAO,GAAGC,IAC5DsD,EAAI,QAAO;AAAA,IACb;AACA,SAAK,QAAO,IACZiR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgB0oB;AAAA,EAC1C;AAAA,EACA,kBAAkBA,GAAOzP,GAAO;AAC9B,QAAI,CAAC,KAAK;AACR;AAEF,UAAM6b,IAAU,KAAK,UAAUpM,GAAOzP,CAAK;AAC3C,QAAI,CAAC6b,GAAS;AACZ,MAAAx2C,EAAK,iCAAiC;AACtC;AAAA,IACF;AACA,SAAK,wBAAwBoqC,GAAOoM,CAAO;AAAA,EAC7C;AAAA,EACA,wBAAwBpM,GAAOzP,GAAO2V,GAAQC,GAAQoR,GAAW;AAC/D,QAAI,CAAC,KAAK;AACR;AAEF,UAAMnL,IAAU,KAAK,UAAUpM,GAAOzP,CAAK;AAC3C,QAAI,CAAC6b,GAAS;AACZ,MAAAx2C,EAAK,iCAAiC;AACtC;AAAA,IACF;AACA,UAAMkN,IAAQspC,EAAQ,OAChBrpC,IAASqpC,EAAQ,QACjBp0B,IAAM,CAAA;AACZ,aAAS7f,IAAI,GAAGmL,IAAKi0C,EAAU,QAAQp/C,IAAImL,GAAInL,KAAK;AAClD,MAAA6f,EAAI,KAAK;AAAA,QACP,WAAW,CAACkuB,GAAQ,GAAG,GAAGC,GAAQoR,EAAUp/C,CAAC,GAAGo/C,EAAUp/C,IAAI,CAAC,CAAC;AAAA,QAChE,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAG2K;AAAA,QACH,GAAGC;AAAA,MACX,CAAO;AAEH,SAAK,6BAA6Bi9B,GAAOoM,GAASp0B,CAAG;AAAA,EACvD;AAAA,EACA,0BAA0B3R,GAAK;AAC7B,WAAI,KAAK,QAAQ,iBAAiB,WAChCA,EAAI,SAAS,KAAK,QAAQ,cAC1BA,EAAI,UAAUA,EAAI,QAAQ,GAAG,CAAC,GAC9BA,EAAI,SAAS,SAERA,EAAI;AAAA,EACb;AAAA,EACA,0BAA0B+lC,GAAS;AACjC,QAAI,KAAK,QAAQ,iBAAiB;AAChC,aAAOA,EAAQ;AAEjB,UAAM;AAAA,MACJ,QAAA78B;AAAA,MACA,OAAAzM;AAAA,MACA,QAAAC;AAAA,IACN,IAAQqpC,GACE5I,IAAY,KAAK,eAAe,UAAU,eAAe1gC,GAAOC,CAAM,GACtE0gC,IAASD,EAAU;AACzB,WAAAC,EAAO,SAAS,KAAK,QAAQ,cAC7BA,EAAO,UAAUl0B,GAAQ,GAAG,CAAC,GAC7Bk0B,EAAO,SAAS,QACTD,EAAU;AAAA,EACnB;AAAA,EACA,wBAAwBxD,GAAOoM,GAAS;AAx0X1C,QAAArzC;AAy0XI,QAAI,CAAC,KAAK;AACR;AAEF,UAAM+J,IAAQspC,EAAQ,OAChBrpC,IAASqpC,EAAQ,QACjB/lC,IAAM,KAAK;AACjB,SAAK,KAAK25B,CAAK;AACf,UAAM;AAAA,MACJ,QAAAxE;AAAA,IACN,IAAQn1B;AACJ,IAAIm1B,MAAW,UAAUA,MAAW,OAClCn1B,EAAI,SAAS,SAEfA,EAAI,MAAM,IAAIvD,GAAO,KAAKC,CAAM;AAChC,QAAI20C;AACJ,QAAItL,EAAQ;AACV,MAAAsL,IAAa,KAAK,0BAA0BtL,CAAO;AAAA,aAC1C,OAAO,eAAgB,cAAcA,aAAmB,eAAe,CAACA,EAAQ;AACzF,MAAAsL,IAAatL;AAAA,SACR;AAEL,YAAM3I,IADY,KAAK,eAAe,UAAU,eAAe3gC,GAAOC,CAAM,EACnD;AACzB,MAAAopC,GAAmB1I,GAAQ2I,CAAO,GAClCsL,IAAa,KAAK,0BAA0BjU,CAAM;AAAA,IACpD;AACA,UAAMgN,IAAS,KAAK,YAAYiH,GAAYnxC,GAA2BF,CAAG,CAAC;AAC3E,IAAAA,EAAI,wBAAwBonC,GAAyBrnC,GAAoBC,CAAG,GAAG+lC,EAAQ,WAAW,IAClGrzC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC,GAAO,WAAWA,GAAO35B,GAAK,GAAGvD,GAAO,CAACC,GAAQ,GAAG,mBAAmBi9B,GAAOoC,GAAa,cAAc,gBAAgBpC,IAC3J4K,GAAyBvkC,GAAKoqC,EAAO,KAAK,GAAG,GAAGA,EAAO,YAAYA,EAAO,aAAa,GAAG,CAAC1tC,GAAQD,GAAOC,CAAM,GAChH,KAAK,QAAO,GACZ,KAAK,QAAQi9B,CAAK;AAAA,EACpB;AAAA,EACA,6BAA6BA,GAAOoM,GAASp0B,GAAK;AAz2XpD,QAAAjf,GAAAC,GAAAse;AA02XI,QAAI,CAAC,KAAK;AACR;AAEF,UAAMjR,IAAM,KAAK;AACjB,QAAIqxC;AACJ,QAAItL,EAAQ;AACV,MAAAsL,IAAatL,EAAQ;AAAA,SAChB;AACL,YAAMnlC,IAAImlC,EAAQ,OACZllC,IAAIklC,EAAQ,QAEZ3I,IADY,KAAK,eAAe,UAAU,eAAex8B,GAAGC,CAAC,EAC1C;AACzB,MAAAilC,GAAmB1I,GAAQ2I,CAAO,GAClCsL,IAAa,KAAK,0BAA0BjU,CAAM;AAAA,IACpD;AACA,KAAA1qC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC;AAClC,eAAWhT,KAAShV;AAClB,MAAA3R,EAAI,KAAI,GACRA,EAAI,UAAU,GAAG2mB,EAAM,SAAS,GAChC3mB,EAAI,MAAM,GAAG,EAAE,GACfukC,GAAyBvkC,GAAKqxC,GAAY1qB,EAAM,GAAGA,EAAM,GAAGA,EAAM,GAAGA,EAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IACzFh0B,IAAA,KAAK,sBAAL,QAAAA,EAAwB,WAAWgnC,GAAO35B,GAAK,GAAG,GAAG,IAAI,IACzDA,EAAI,QAAO;AAEb,KAAAiR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgB0oB,IACxC,KAAK,QAAO;AAAA,EACd;AAAA,EACA,yBAAyBA,GAAO;AAr4XlC,QAAAjnC;AAs4XI,IAAK,KAAK,oBAGVA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,UAAUinC,GAAO,WAAWA,GAAO,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,mBAAmBA,GAAOoC,GAAa,MAAM,gBAAgBpC,IAC9I,KAAK,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC,GAC5B,KAAK,QAAO;AAAA,EACd;AAAA,EACA,UAAUA,GAAO2X,GAAK;AAAA,EAAC;AAAA,EACvB,eAAe3X,GAAO2X,GAAKrK,GAAY;AAAA,EAAC;AAAA,EACxC,mBAAmBtN,GAAO2X,GAAK;AA/4XjC,QAAA5+C;AAg5XI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBinC,IAC3C,KAAK,mBAAmB,KAAK;AAAA,MAC3B,SAAS;AAAA,IACf,CAAK;AAAA,EACH;AAAA,EACA,wBAAwBA,GAAO2X,GAAKrK,GAAY;AAr5XlD,QAAAv0C;AAs5XI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,mBAAmBinC,IACvC2X,MAAQ,OACV,KAAK,mBAAmB,KAAK;AAAA,MAC3B,SAAS,KAAK,sBAAsB,UAAUrK,CAAU;AAAA,IAChE,CAAO,IAED,KAAK,mBAAmB,KAAK;AAAA,MAC3B,SAAS;AAAA,IACjB,CAAO,GAEH,KAAK,iBAAiB,KAAK,iBAAgB;AAAA,EAC7C;AAAA,EACA,iBAAiBtN,GAAO;AAl6X1B,QAAAjnC;AAm6XI,KAAAA,IAAA,KAAK,sBAAL,QAAAA,EAAwB,iBAAiBinC,IACzC,KAAK,mBAAmB,IAAG,GAC3B,KAAK,iBAAiB,KAAK,iBAAgB;AAAA,EAC7C;AAAA,EACA,YAAYA,GAAO;AAAA,EAAC;AAAA,EACpB,UAAUA,GAAO;AAAA,EAAC;AAAA,EAClB,YAAYA,GAAOz1B,GAAMg2B,GAAS;AAz6XpC,QAAAxnC,GAAAC;AA06XI,UAAM4+C,IAAU,KAAK,QAAQ,YAAW;AACxC,IAAI,KAAK,eACP,KAAK,QAAQ,mBAAkB,GAE5B,KAAK,eACR,KAAK,QAAQrX,CAAO;AAEtB,UAAMl6B,IAAM,KAAK;AACjB,IAAI,KAAK,eACFuxC,MACC,KAAK,gBAAgB7J,KACvB1nC,EAAI,KAAKkE,GAAM,SAAS,IAExBlE,EAAI,KAAKkE,CAAI,IAGjB,KAAK,cAAc,OACnBxR,IAAA,KAAK,sBAAL,QAAAA,EAAwB,2BAA2BinC,GAAO,6BAA6B,YAAYA,OAEnGhnC,IAAA,KAAK,sBAAL,QAAAA,EAAwB,gBAAgBgnC,IAE1C,KAAK,QAAQ,uBAAuB,KAAK,QAAQ,OAAO;AAAA,EAC1D;AAAA,EACA,sBAAsB;AACpB,QAAI,CAAC,KAAK,4BAA4B;AACpC,YAAMjmC,IAAIqM,GAAoB,KAAK,GAAG;AACtC,UAAIrM,EAAE,CAAC,MAAM,KAAKA,EAAE,CAAC,MAAM;AACzB,aAAK,6BAA6B,IAAI,KAAK,IAAI,KAAK,IAAIA,EAAE,CAAC,CAAC,GAAG,KAAK,IAAIA,EAAE,CAAC,CAAC,CAAC;AAAA,WACxE;AACL,cAAM89C,IAAS,KAAK,IAAI99C,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,IAAIA,EAAE,CAAC,CAAC,GAC3C+9C,IAAQ,KAAK,MAAM/9C,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC,GAC7Bg+C,IAAQ,KAAK,MAAMh+C,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC;AACnC,aAAK,6BAA6B,KAAK,IAAI+9C,GAAOC,CAAK,IAAIF;AAAA,MAC7D;AAAA,IACF;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,sBAAsB;AACpB,QAAI,KAAK,wBAAwB,CAAC,MAAM,IAAI;AAC1C,YAAM;AAAA,QACJ,WAAAzC;AAAA,MACR,IAAU,KAAK,SACH;AAAA,QACJ,GAAAr5C;AAAA,QACA,GAAAvC;AAAA,QACA,GAAAwC;AAAA,QACA,GAAArB;AAAA,MACR,IAAU,KAAK,IAAI,aAAY;AACzB,UAAIurC,GAAQC;AACZ,UAAI3sC,MAAM,KAAKwC,MAAM,GAAG;AACtB,cAAM87C,IAAQ,KAAK,IAAI/7C,CAAC,GAClBg8C,IAAQ,KAAK,IAAIp9C,CAAC;AACxB,YAAIm9C,MAAUC;AACZ,cAAI3C,MAAc;AAChB,YAAAlP,IAASC,IAAS,IAAI2R;AAAA,eACjB;AACL,kBAAME,IAAkBF,IAAQ1C;AAChC,YAAAlP,IAASC,IAAS6R,IAAkB,IAAI,IAAIA,IAAkB;AAAA,UAChE;AAAA,iBACS5C,MAAc;AACvB,UAAAlP,IAAS,IAAI4R,GACb3R,IAAS,IAAI4R;AAAA,aACR;AACL,gBAAME,IAAmBH,IAAQ1C,GAC3B8C,IAAmBH,IAAQ3C;AACjC,UAAAlP,IAAS+R,IAAmB,IAAI,IAAIA,IAAmB,GACvD9R,IAAS+R,IAAmB,IAAI,IAAIA,IAAmB;AAAA,QACzD;AAAA,MACF,OAAO;AACL,cAAML,IAAS,KAAK,IAAI97C,IAAIpB,IAAInB,IAAIwC,CAAC,GAC/B87C,IAAQ,KAAK,MAAM/7C,GAAGvC,CAAC,GACvBu+C,IAAQ,KAAK,MAAM/7C,GAAGrB,CAAC;AAC7B,YAAIy6C,MAAc;AAChB,UAAAlP,IAAS6R,IAAQF,GACjB1R,IAAS2R,IAAQD;AAAA,aACZ;AACL,gBAAMM,IAAW/C,IAAYyC;AAC7B,UAAA3R,IAAS6R,IAAQI,IAAWJ,IAAQI,IAAW,GAC/ChS,IAAS2R,IAAQK,IAAWL,IAAQK,IAAW;AAAA,QACjD;AAAA,MACF;AACA,WAAK,wBAAwB,CAAC,IAAIjS,GAClC,KAAK,wBAAwB,CAAC,IAAIC;AAAA,IACpC;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EACA,iBAAiB57B,GAAM6tC,GAAa;AAClC,UAAM;AAAA,MACJ,KAAA/xC;AAAA,MACA,SAAS;AAAA,QACP,WAAA+uC;AAAA,MACR;AAAA,IACA,IAAQ,MACE,CAAClP,GAAQC,CAAM,IAAI,KAAK,oBAAmB;AACjD,QAAID,MAAWC,GAAQ;AACrB,MAAA9/B,EAAI,aAAa+uC,KAAa,KAAKlP,GACnC7/B,EAAI,OAAOkE,CAAI;AACf;AAAA,IACF;AACA,UAAM8tC,IAAShyC,EAAI,YAAW;AAC9B,IAAI+xC,KACF/xC,EAAI,KAAI,GAEVA,EAAI,MAAM6/B,GAAQC,CAAM,GACxB6D,GAAa,IAAI,IAAI9D,GACrB8D,GAAa,IAAI,IAAI7D;AACrB,UAAM8M,IAAU,IAAI,OAAM;AAE1B,QADAA,EAAQ,QAAQ1oC,GAAMy/B,EAAY,GAC9BqO,EAAO,SAAS,GAAG;AACrB,YAAMp2C,IAAQ,KAAK,IAAIikC,GAAQC,CAAM;AACrC,MAAA9/B,EAAI,YAAYgyC,EAAO,IAAI,CAAA57C,MAAKA,IAAIwF,CAAK,CAAC,GAC1CoE,EAAI,kBAAkBpE;AAAA,IACxB;AACA,IAAAoE,EAAI,YAAY+uC,KAAa,GAC7B/uC,EAAI,OAAO4sC,CAAO,GACdmF,KACF/xC,EAAI,QAAO;AAAA,EAEf;AAAA,EACA,mBAAmB;AACjB,aAASlO,IAAI,KAAK,mBAAmB,SAAS,GAAGA,KAAK,GAAGA;AACvD,UAAI,CAAC,KAAK,mBAAmBA,CAAC,EAAE;AAC9B,eAAO;AAGX,WAAO;AAAA,EACT;AACF;AAzqDA61C,KAAA,eAiIEC,KAAoB,WAAG;AACrB,SAAO,KAAK,WAAW,UAAU,KAAK;AACpC,SAAK,QAAO;AAEd,OAAK,QAAQ,cAAc,MAC3B,KAAK,IAAI,QAAO,GACZ,KAAK,sBACP,KAAK,MAAM,KAAK,cAChB,KAAK,IAAI,KAAI,GACb,KAAK,IAAI,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GACtC,KAAK,IAAI,UAAU,KAAK,mBAAmB,GAAG,CAAC,GAC/C,KAAK,IAAI,QAAO,GAChB,KAAK,oBAAoB;AAE7B,GAgBAC,KAAW,WAAG;AACZ,MAAI,KAAK,YAAY;AACnB,UAAMoK,IAAc,KAAK,cAAc,aAAa,KAAK,WAAW,YAAY,KAAK,WAAW,UAAU;AAC1G,QAAIA,MAAgB,QAAQ;AAC1B,YAAMC,IAAc,KAAK,IAAI;AAC7B,WAAK,IAAI,SAASD,GAClB,KAAK,IAAI,UAAU,KAAK,IAAI,QAAQ,GAAG,CAAC,GACxC,KAAK,IAAI,SAASC;AAAA,IACpB;AAAA,EACF;AACF,GAukBApK,KAAc,SAAC5jC,GAAMgmC,GAAkB72C,GAAW;AAChD,QAAMu5C,IAAU,IAAI,OAAM;AAC1B,SAAAA,EAAQ,QAAQ1oC,GAAM,IAAI,UAAU7Q,CAAS,EAAE,WAAU,EAAG,aAAa62C,CAAgB,CAAC,GACnF0C;AACT;AApvBF,IAAMuF,KAANpK;AA0qDA,WAAWyE,KAAM19C;AACf,EAAIqjD,GAAe,UAAU3F,CAAE,MAAM,WACnC2F,GAAe,UAAUrjD,GAAI09C,CAAE,CAAC,IAAI2F,GAAe,UAAU3F,CAAE;AA5iYnE,IAAA4F,IAAAC;AAijYA,MAAMC,GAAoB;AAAA,EAGxB,WAAW,aAAa;AACtB,WAAO3zC,EAAA,MAAKyzC;AAAA,EACd;AAAA,EACA,WAAW,WAAWxrB,GAAK;AACzB,QAAI,EAAE,OAAO,SAAW,OAAeA,aAAe,WAAWA,MAAQ;AACvE,YAAM,IAAI,MAAM,4BAA4B;AAE9C,IAAAhoB,EAAA,MAAKwzC,IAAQxrB;AAAA,EACf;AAAA,EACA,WAAW,YAAY;AACrB,WAAOjoB,EAAA,MAAK0zC;AAAA,EACd;AAAA,EACA,WAAW,UAAUzrB,GAAK;AACxB,QAAI,OAAOA,KAAQ;AACjB,YAAM,IAAI,MAAM,2BAA2B;AAE7C,IAAAhoB,EAAA,MAAKyzC,IAAOzrB;AAAA,EACd;AACF;AApBSwrB,KAAA,eACAC,KAAA,eADPh7C,EADIi7C,IACGF,IAAQ,OACf/6C,EAFIi7C,IAEGD,IAAO;AAnjYhB,IAAAE,IAAAC;AAykYA,MAAMC,GAAS;AAAA,EAGb,YAAY;AAAA,IACV,YAAAC;AAAA,IACA,SAAAvpC;AAAA,EACJ,GAAK;AALH,IAAA9R,EAAA,MAAAk7C;AACA,IAAAl7C,EAAA,MAAAm7C;AAKE,IAAA5zC,EAAA,MAAK2zC,IAAOG,IACZ9zC,EAAA,MAAK4zC,IAAQrpC;AAAA,EACf;AAAA,EACA,SAAS;AACP,WAAOxK,EAAA,MAAK6zC;AAAA,EACd;AAAA,EACA,IAAI1hD,GAAM;AACR,WAAO6N,EAAA,MAAK4zC,IAAK,IAAIzhD,CAAI,KAAK;AAAA,EAChC;AAAA,EACA,CAAC,OAAO,QAAQ,IAAI;AAClB,WAAO6N,EAAA,MAAK4zC,IAAK,QAAO;AAAA,EAC1B;AACF;AAlBEA,KAAA,eACAC,KAAA;AAsBF,MAAMG,KAAW,OAAO,UAAU;AAjmYlC,IAAAC,IAAAC,IAAAC,IAAAC;AAkmYA,MAAMC,GAAqB;AAAA,EAKzB,YAAYC,GAAiB;AAAA,IAC3B,MAAAniD;AAAA,IACA,QAAA+I;AAAA,IACA,OAAAq5C;AAAA,IACA,UAAAC;AAAA,EACJ,GAAK;AATH,IAAA97C,EAAA,MAAAu7C,IAAa;AACb,IAAAv7C,EAAA,MAAAw7C,IAAW;AACX,IAAAx7C,EAAA,MAAAy7C,IAAW;AACX,IAAAz7C,EAAA,MAAA07C,IAAW;AAOT,IAAAn0C,EAAA,MAAKg0C,IAAa,CAAC,EAAEK,IAAkB/kD,GAAoB,WAC3D0Q,EAAA,MAAKi0C,IAAW,CAAC,EAAEI,IAAkB/kD,GAAoB,SACzD,KAAK,OAAO4C,GACZ,KAAK,SAAS+I,GACd,KAAK,QAAQq5C,GACb,KAAK,WAAWC;AAAA,EAClB;AAAA,EACA,IAAI,UAAU;AACZ,QAAIx0C,EAAA,MAAKm0C;AACP,aAAOn0C,EAAA,MAAKo0C;AAEd,QAAI,CAACp0C,EAAA,MAAKo0C;AACR,aAAO;AAET,UAAM;AAAA,MACJ,OAAAK;AAAA,MACA,MAAApoB;AAAA,IACN,IAAQ,KAAK;AACT,WAAIrsB,EAAA,MAAKi0C,OACA5nB,KAAA,gBAAAA,EAAM,eAAc,QAClBrsB,EAAA,MAAKk0C,OACPO,KAAA,gBAAAA,EAAO,gBAAe,QAExB;AAAA,EACT;AAAA,EACA,YAAYC,GAAUn+B,GAASo+B,IAAU,IAAO;AAC9C,IAAID,MAAaV,MACfnjD,GAAY,uCAAuC,GAErDoP,EAAA,MAAKk0C,IAAWQ,IAChB10C,EAAA,MAAKm0C,IAAW79B;AAAA,EAClB;AACF;AA1CE09B,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA;AAtmYF,IAAAQ,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA8oYA,MAAMC,GAAsB;AAAA,EAK1B,YAAY5vC,GAAMgvC,IAAkB/kD,GAAoB,SAAS;AALnE,IAAAmJ,EAAA,MAAAs8C;AACE,IAAAt8C,EAAA,MAAAk8C,IAAiB;AACjB,IAAAl8C,EAAA,MAAAm8C,IAAU,oBAAI,IAAG;AACjB,IAAAn8C,EAAA,MAAAo8C,IAAe;AACf,IAAAp8C,EAAA,MAAAq8C,IAAS;AAKP,QAHA,KAAK,kBAAkBT,GACvB,KAAK,OAAO,MACZ,KAAK,UAAU,MACXhvC,MAAS,MAGb;AAAA,WAAK,OAAOA,EAAK,MACjB,KAAK,UAAUA,EAAK,SACpBrF,EAAA,MAAK80C,IAASzvC,EAAK;AACnB,iBAAWwsC,KAASxsC,EAAK;AACvB,QAAAtF,EAAA,MAAK60C,IAAQ,IAAI/C,EAAM,IAAI,IAAIuC,GAAqBC,GAAiBxC,CAAK,CAAC;AAE7E,UAAIxsC,EAAK,cAAc;AACrB,mBAAWwsC,KAAS9xC,EAAA,MAAK60C,IAAQ,OAAM;AACrC,UAAA/C,EAAM,YAAYkC,IAAU,EAAK;AAGrC,iBAAWmB,KAAM7vC,EAAK;AACpB,QAAAtF,EAAA,MAAK60C,IAAQ,IAAIM,CAAE,EAAE,YAAYnB,IAAU,EAAI;AAEjD,iBAAWoB,KAAO9vC,EAAK;AACrB,QAAAtF,EAAA,MAAK60C,IAAQ,IAAIO,CAAG,EAAE,YAAYpB,IAAU,EAAK;AAEnD,MAAA/zC,EAAA,MAAK60C,IAAe,KAAK,QAAO;AAAA;AAAA,EAClC;AAAA,EAqCA,UAAUhD,GAAO;AACf,QAAI9xC,EAAA,MAAK60C,IAAQ,SAAS;AACxB,aAAO;AAET,QAAI,CAAC/C;AACH,aAAAphD,GAAK,qCAAqC,GACnC;AAET,QAAIohD,EAAM,SAAS;AACjB,aAAK9xC,EAAA,MAAK60C,IAAQ,IAAI/C,EAAM,EAAE,IAIvB9xC,EAAA,MAAK60C,IAAQ,IAAI/C,EAAM,EAAE,EAAE,WAHhClhD,EAAK,qCAAqCkhD,EAAM,EAAE,EAAE,GAC7C;AAGJ,QAAIA,EAAM,SAAS,QAAQ;AAChC,UAAIA,EAAM;AACR,eAAO35C,EAAA,MAAK68C,IAAAC,IAAL,WAAmCnD,EAAM;AAElD,UAAI,CAACA,EAAM,UAAUA,EAAM,WAAW,SAAS;AAC7C,mBAAW/2C,KAAM+2C,EAAM,KAAK;AAC1B,cAAI,CAAC9xC,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE;AACtB,mBAAAnK,EAAK,qCAAqCmK,CAAE,EAAE,GACvC;AAET,cAAIiF,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE,EAAE;AACvB,mBAAO;AAAA,QAEX;AACA,eAAO;AAAA,MACT,WAAW+2C,EAAM,WAAW,SAAS;AACnC,mBAAW/2C,KAAM+2C,EAAM,KAAK;AAC1B,cAAI,CAAC9xC,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE;AACtB,mBAAAnK,EAAK,qCAAqCmK,CAAE,EAAE,GACvC;AAET,cAAI,CAACiF,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE,EAAE;AACxB,mBAAO;AAAA,QAEX;AACA,eAAO;AAAA,MACT,WAAW+2C,EAAM,WAAW,UAAU;AACpC,mBAAW/2C,KAAM+2C,EAAM,KAAK;AAC1B,cAAI,CAAC9xC,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE;AACtB,mBAAAnK,EAAK,qCAAqCmK,CAAE,EAAE,GACvC;AAET,cAAI,CAACiF,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE,EAAE;AACxB,mBAAO;AAAA,QAEX;AACA,eAAO;AAAA,MACT,WAAW+2C,EAAM,WAAW,UAAU;AACpC,mBAAW/2C,KAAM+2C,EAAM,KAAK;AAC1B,cAAI,CAAC9xC,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE;AACtB,mBAAAnK,EAAK,qCAAqCmK,CAAE,EAAE,GACvC;AAET,cAAIiF,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE,EAAE;AACvB,mBAAO;AAAA,QAEX;AACA,eAAO;AAAA,MACT;AACA,aAAAnK,EAAK,mCAAmCkhD,EAAM,MAAM,GAAG,GAChD;AAAA,IACT;AACA,WAAAlhD,EAAK,sBAAsBkhD,EAAM,IAAI,GAAG,GACjC;AAAA,EACT;AAAA,EACA,cAAc/2C,GAAIwb,IAAU,IAAM8+B,IAAa,IAAM;AAtxYvD,QAAAthD;AAuxYI,UAAM+9C,IAAQ9xC,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE;AACjC,QAAI,CAAC+2C,GAAO;AACV,MAAAlhD,EAAK,qCAAqCmK,CAAE,EAAE;AAC9C;AAAA,IACF;AACA,QAAIs6C,KAAc9+B,KAAWu7B,EAAM,SAAS;AAC1C,iBAAWwD,KAAWxD,EAAM;AAC1B,mBAAWyD,KAAWD;AACpB,UAAIC,MAAYx6C,OACdhH,IAAAiM,EAAA,MAAK60C,IAAQ,IAAIU,CAAO,MAAxB,QAAAxhD,EAA2B,YAAYigD,IAAU,IAAO;AAKhE,IAAAlC,EAAM,YAAYkC,IAAU,CAAC,CAACz9B,GAAS,EAAI,GAC3CtW,EAAA,MAAK20C,IAAiB;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV,OAAAY;AAAA,IACA,YAAAH;AAAA,EACJ,GAAK;AACD,QAAII;AACJ,eAAW/Q,KAAQ8Q,GAAO;AACxB,cAAQ9Q,GAAI;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAA+Q,IAAW/Q;AACX;AAAA,MACV;AACM,YAAMoN,IAAQ9xC,EAAA,MAAK60C,IAAQ,IAAInQ,CAAI;AACnC,UAAKoN;AAGL,gBAAQ2D,GAAQ;AAAA,UACd,KAAK;AACH,iBAAK,cAAc/Q,GAAM,IAAM2Q,CAAU;AACzC;AAAA,UACF,KAAK;AACH,iBAAK,cAAc3Q,GAAM,IAAO2Q,CAAU;AAC1C;AAAA,UACF,KAAK;AACH,iBAAK,cAAc3Q,GAAM,CAACoN,EAAM,SAASuD,CAAU;AACnD;AAAA,QACV;AAAA,IACI;AACA,IAAAp1C,EAAA,MAAK20C,IAAiB;AAAA,EACxB;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO50C,EAAA,MAAK80C,QAAiB,QAAQ,KAAK,QAAO,MAAO90C,EAAA,MAAK80C;AAAA,EAC/D;AAAA,EACA,WAAW;AACT,WAAK90C,EAAA,MAAK60C,IAAQ,OAGd70C,EAAA,MAAK+0C,MACA/0C,EAAA,MAAK+0C,IAAO,MAAK,IAEnB,CAAC,GAAG/0C,EAAA,MAAK60C,IAAQ,KAAI,CAAE,IALrB;AAAA,EAMX;AAAA,EACA,SAAS95C,GAAI;AACX,WAAOiF,EAAA,MAAK60C,IAAQ,IAAI95C,CAAE,KAAK;AAAA,EACjC;AAAA,EACA,UAAU;AACR,QAAIiF,EAAA,MAAK40C,QAAmB;AAC1B,aAAO50C,EAAA,MAAK40C;AAEd,UAAMnjD,IAAO,IAAIg1B,GAAc;AAC/B,eAAW,CAAC1rB,GAAI+2C,CAAK,KAAK9xC,EAAA,MAAK60C;AAC7B,MAAApjD,EAAK,OAAO,GAAGsJ,CAAE,IAAI+2C,EAAM,OAAO,EAAE;AAEtC,WAAO7xC,EAAA,MAAK20C,IAAiBnjD,EAAK,UAAS;AAAA,EAC7C;AAAA,EACA,CAAC,OAAO,QAAQ,IAAI;AAClB,WAAOuO,EAAA,MAAK60C,IAAQ,QAAO;AAAA,EAC7B;AACF;AApNED,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAJFC,KAAA,eA+BEC,KAA6B,SAAC1wC,GAAO;AACnC,QAAMvR,IAASuR,EAAM;AACrB,MAAIvR,IAAS;AACX,WAAO;AAET,QAAMyiD,IAAWlxC,EAAM,CAAC;AACxB,WAASpR,IAAI,GAAGA,IAAIH,GAAQG,KAAK;AAC/B,UAAM6H,IAAUuJ,EAAMpR,CAAC;AACvB,QAAIqiD;AACJ,QAAI,MAAM,QAAQx6C,CAAO;AACvB,MAAAw6C,IAAQr9C,EAAA,MAAK68C,IAAAC,IAAL,WAAmCj6C;AAAA,aAClCgF,EAAA,MAAK60C,IAAQ,IAAI75C,CAAO;AACjC,MAAAw6C,IAAQx1C,EAAA,MAAK60C,IAAQ,IAAI75C,CAAO,EAAE;AAAA;AAElC,aAAApK,EAAK,qCAAqCoK,CAAO,EAAE,GAC5C;AAET,YAAQy6C,GAAQ;AAAA,MACd,KAAK;AACH,YAAI,CAACD;AACH,iBAAO;AAET;AAAA,MACF,KAAK;AACH,YAAIA;AACF,iBAAO;AAET;AAAA,MACF,KAAK;AACH,eAAO,CAACA;AAAA,MACV;AACE,eAAO;AAAA,IACjB;AAAA,EACI;AACA,SAAOC,MAAa;AACtB;AAwJF,MAAMC,GAAuB;AAAA,EAC3B,YAAYC,GAAuB;AAAA,IACjC,cAAAC,IAAe;AAAA,IACf,eAAAC,IAAgB;AAAA,EACpB,GAAK;AACD,IAAA/kD,GAAO6kD,GAAuB,6EAA6E;AAC3G,UAAM;AAAA,MACJ,QAAA3iD;AAAA,MACA,aAAA8iD;AAAA,MACA,iBAAAC;AAAA,MACA,4BAAAC;AAAA,IACN,IAAQL;AAIJ,QAHA,KAAK,gBAAgB,CAAA,GACrB,KAAK,mBAAmBI,GACxB,KAAK,8BAA8BC,IAC/BF,KAAA,gBAAAA,EAAa,UAAS,GAAG;AAC3B,YAAM9pB,IAAS8pB,aAAuB,cAAcA,EAAY,eAAeA,EAAY,OAAO,aAAaA,EAAY,SAAS,IAAI,WAAWA,CAAW,EAAE;AAChK,WAAK,cAAc,KAAK9pB,CAAM;AAAA,IAChC;AACA,SAAK,yBAAyB2pB,GAC9B,KAAK,wBAAwB,CAACE,GAC9B,KAAK,oBAAoB,CAACD,GAC1B,KAAK,iBAAiB5iD,GACtB,KAAK,qBAAqB,MAC1B,KAAK,gBAAgB,CAAA,GACrB2iD,EAAsB,iBAAiB,CAACM,GAAO5iD,MAAU;AACvD,WAAK,eAAe;AAAA,QAClB,OAAA4iD;AAAA,QACA,OAAA5iD;AAAA,MACR,CAAO;AAAA,IACH,CAAC,GACDsiD,EAAsB,oBAAoB,CAACO,GAAQC,MAAU;AAC3D,WAAK,YAAY;AAAA,QACf,QAAAD;AAAA,QACA,OAAAC;AAAA,MACR,CAAO;AAAA,IACH,CAAC,GACDR,EAAsB,2BAA2B,CAAAtiD,MAAS;AACxD,WAAK,eAAe;AAAA,QAClB,OAAAA;AAAA,MACR,CAAO;AAAA,IACH,CAAC,GACDsiD,EAAsB,2BAA2B,MAAM;AACrD,WAAK,mBAAkB;AAAA,IACzB,CAAC,GACDA,EAAsB,eAAc;AAAA,EACtC;AAAA,EACA,eAAe;AAAA,IACb,OAAAM;AAAA,IACA,OAAA5iD;AAAA,EACJ,GAAK;AACD,UAAM24B,IAAS34B,aAAiB,cAAcA,EAAM,eAAeA,EAAM,OAAO,aAAaA,EAAM,SAAS,IAAI,WAAWA,CAAK,EAAE;AAClI,QAAI4iD,MAAU;AACZ,MAAI,KAAK,qBACP,KAAK,mBAAmB,SAASjqB,CAAM,IAEvC,KAAK,cAAc,KAAKA,CAAM;AAAA,SAE3B;AACL,YAAMoqB,IAAQ,KAAK,cAAc,KAAK,SAAUC,GAAa;AAC3D,eAAIA,EAAY,WAAWJ,IAClB,MAETI,EAAY,SAASrqB,CAAM,GACpB;AAAA,MACT,CAAC;AACD,MAAAl7B,GAAOslD,GAAO,yEAAyE;AAAA,IACzF;AAAA,EACF;AAAA,EACA,IAAI,yBAAyB;AA76Y/B,QAAAriD;AA86YI,aAAOA,IAAA,KAAK,uBAAL,gBAAAA,EAAyB,YAAW;AAAA,EAC7C;AAAA,EACA,YAAYge,GAAK;AAh7YnB,QAAAhe,GAAAC,GAAAse,GAAAC;AAi7YI,IAAIR,EAAI,UAAU,UAChB/d,KAAAD,IAAA,KAAK,cAAc,CAAC,MAApB,gBAAAA,EAAuB,eAAvB,QAAAC,EAAA,KAAAD,GAAoC;AAAA,MAClC,QAAQge,EAAI;AAAA,IACpB,MAEMQ,KAAAD,IAAA,KAAK,uBAAL,gBAAAA,EAAyB,eAAzB,QAAAC,EAAA,KAAAD,GAAsC;AAAA,MACpC,QAAQP,EAAI;AAAA,MACZ,OAAOA,EAAI;AAAA,IACnB;AAAA,EAEE;AAAA,EACA,qBAAqB;AA57YvB,QAAAhe;AA67YI,KAAAA,IAAA,KAAK,uBAAL,QAAAA,EAAyB,mBACzB,KAAK,mBAAmB;AAAA,EAC1B;AAAA,EACA,mBAAmBuiD,GAAQ;AACzB,UAAMnjD,IAAI,KAAK,cAAc,QAAQmjD,CAAM;AAC3C,IAAInjD,KAAK,KACP,KAAK,cAAc,OAAOA,GAAG,CAAC;AAAA,EAElC;AAAA,EACA,gBAAgB;AACd,IAAArC,GAAO,CAAC,KAAK,oBAAoB,+DAA+D;AAChG,UAAMylD,IAAe,KAAK;AAC1B,gBAAK,gBAAgB,MACd,IAAIC,GAA6B,MAAMD,GAAc,KAAK,kBAAkB,KAAK,2BAA2B;AAAA,EACrH;AAAA,EACA,eAAeN,GAAOz2C,GAAK;AACzB,QAAIA,KAAO,KAAK;AACd,aAAO;AAET,UAAM82C,IAAS,IAAIG,GAAkC,MAAMR,GAAOz2C,CAAG;AACrE,gBAAK,uBAAuB,iBAAiBy2C,GAAOz2C,CAAG,GACvD,KAAK,cAAc,KAAK82C,CAAM,GACvBA;AAAA,EACT;AAAA,EACA,kBAAkB9iB,GAAQ;AAr9Y5B,QAAAz/B;AAs9YI,KAAAA,IAAA,KAAK,uBAAL,QAAAA,EAAyB,OAAOy/B;AAChC,eAAW8iB,KAAU,KAAK,cAAc,MAAM,CAAC;AAC7C,MAAAA,EAAO,OAAO9iB,CAAM;AAEtB,SAAK,uBAAuB,MAAK;AAAA,EACnC;AACF;AACA,MAAMgjB,GAA6B;AAAA,EACjC,YAAYE,GAAQH,GAAcR,IAAkB,IAAOC,IAA6B,MAAM;AAC5F,SAAK,UAAUU,GACf,KAAK,QAAQX,KAAmB,IAChC,KAAK,YAAYx3C,GAAUy3C,CAA0B,IAAIA,IAA6B,MACtF,KAAK,gBAAgBO,KAAgB,CAAA,GACrC,KAAK,UAAU;AACf,eAAWljD,KAAS,KAAK;AACvB,WAAK,WAAWA,EAAM;AAExB,SAAK,YAAY,CAAA,GACjB,KAAK,gBAAgB,QAAQ,QAAO,GACpCqjD,EAAO,qBAAqB,MAC5B,KAAK,aAAa;AAAA,EACpB;AAAA,EACA,SAASrjD,GAAO;AACd,IAAI,KAAK,UAGL,KAAK,UAAU,SAAS,IACA,KAAK,UAAU,MAAK,EAC5B,QAAQ;AAAA,MACxB,OAAOA;AAAA,MACP,MAAM;AAAA,IACd,CAAO,IAED,KAAK,cAAc,KAAKA,CAAK,GAE/B,KAAK,WAAWA,EAAM;AAAA,EACxB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EACA,MAAM,OAAO;AACX,QAAI,KAAK,cAAc,SAAS;AAE9B,aAAO;AAAA,QACL,OAFY,KAAK,cAAc,MAAK;AAAA,QAGpC,MAAM;AAAA,MACd;AAEI,QAAI,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,UAAMsjD,IAAoB,QAAQ,cAAa;AAC/C,gBAAK,UAAU,KAAKA,CAAiB,GAC9BA,EAAkB;AAAA,EAC3B;AAAA,EACA,OAAOnjB,GAAQ;AACb,SAAK,QAAQ;AACb,eAAWmjB,KAAqB,KAAK;AACnC,MAAAA,EAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAEH,SAAK,UAAU,SAAS;AAAA,EAC1B;AAAA,EACA,kBAAkB;AAChB,IAAI,KAAK,UAGT,KAAK,QAAQ;AAAA,EACf;AACF;AACA,MAAMF,GAAkC;AAAA,EACtC,YAAYC,GAAQT,GAAOz2C,GAAK;AAC9B,SAAK,UAAUk3C,GACf,KAAK,SAAST,GACd,KAAK,OAAOz2C,GACZ,KAAK,eAAe,MACpB,KAAK,YAAY,CAAA,GACjB,KAAK,QAAQ,IACb,KAAK,aAAa;AAAA,EACpB;AAAA,EACA,SAASnM,GAAO;AACd,QAAI,MAAK,OAGT;AAAA,UAAI,KAAK,UAAU,WAAW;AAC5B,aAAK,eAAeA;AAAA,WACf;AAEL,QAD2B,KAAK,UAAU,MAAK,EAC5B,QAAQ;AAAA,UACzB,OAAOA;AAAA,UACP,MAAM;AAAA,QACd,CAAO;AACD,mBAAWsjD,KAAqB,KAAK;AACnC,UAAAA,EAAkB,QAAQ;AAAA,YACxB,OAAO;AAAA,YACP,MAAM;AAAA,UAChB,CAAS;AAEH,aAAK,UAAU,SAAS;AAAA,MAC1B;AACA,WAAK,QAAQ,IACb,KAAK,QAAQ,mBAAmB,IAAI;AAAA;AAAA,EACtC;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO;AACX,QAAI,KAAK,cAAc;AACrB,YAAMtjD,IAAQ,KAAK;AACnB,kBAAK,eAAe,MACb;AAAA,QACL,OAAOA;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACI;AACA,QAAI,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,UAAMsjD,IAAoB,QAAQ,cAAa;AAC/C,gBAAK,UAAU,KAAKA,CAAiB,GAC9BA,EAAkB;AAAA,EAC3B;AAAA,EACA,OAAOnjB,GAAQ;AACb,SAAK,QAAQ;AACb,eAAWmjB,KAAqB,KAAK;AACnC,MAAAA,EAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAEH,SAAK,UAAU,SAAS,GACxB,KAAK,QAAQ,mBAAmB,IAAI;AAAA,EACtC;AACF;AAIA,SAASC,GAAwCC,GAAoB;AACnE,MAAIC,IAAqB,IACrB7X,IAAM8X,EAAc,eAAe,GAAG,EAAE,KAAKF,CAAkB;AACnE,MAAI5X,GAAK;AACP,IAAAA,IAAMA,EAAI,CAAC;AACX,QAAIzgC,IAAWw4C,EAAe/X,CAAG;AACjC,WAAAzgC,IAAW,SAASA,CAAQ,GAC5BA,IAAWy4C,EAAcz4C,CAAQ,GACjCA,IAAW04C,EAAc14C,CAAQ,GAC1B24C,EAAc34C,CAAQ;AAAA,EAC/B;AAEA,MADAygC,IAAMmY,EAAgBP,CAAkB,GACpC5X,GAAK;AACP,UAAMzgC,IAAW04C,EAAcjY,CAAG;AAClC,WAAOkY,EAAc34C,CAAQ;AAAA,EAC/B;AAEA,MADAygC,IAAM8X,EAAc,YAAY,GAAG,EAAE,KAAKF,CAAkB,GACxD5X,GAAK;AACP,IAAAA,IAAMA,EAAI,CAAC;AACX,QAAIzgC,IAAWw4C,EAAe/X,CAAG;AACjC,WAAAzgC,IAAW04C,EAAc14C,CAAQ,GAC1B24C,EAAc34C,CAAQ;AAAA,EAC/B;AACA,WAASu4C,EAAcM,GAAkBC,GAAO;AAC9C,WAAO,IAAI,OAAO,gBAAgBD,IAAmB,uDAAgFC,CAAK;AAAA,EAC5I;AACA,WAASC,EAAWC,GAAUzlD,GAAO;AACnC,QAAIylD,GAAU;AACZ,UAAI,CAAC,iBAAiB,KAAKzlD,CAAK;AAC9B,eAAOA;AAET,UAAI;AACF,cAAM0lD,IAAU,IAAI,YAAYD,GAAU;AAAA,UACxC,OAAO;AAAA,QACjB,CAAS,GACKxrB,IAAS14B,GAAcvB,CAAK;AAClC,QAAAA,IAAQ0lD,EAAQ,OAAOzrB,CAAM,GAC7B8qB,IAAqB;AAAA,MACvB,QAAQ;AAAA,MAAC;AAAA,IACX;AACA,WAAO/kD;AAAA,EACT;AACA,WAASolD,EAAcplD,GAAO;AAC5B,WAAI+kD,KAAsB,cAAc,KAAK/kD,CAAK,MAChDA,IAAQwlD,EAAW,SAASxlD,CAAK,GAC7B+kD,MACF/kD,IAAQwlD,EAAW,cAAcxlD,CAAK,KAGnCA;AAAA,EACT;AACA,WAASqlD,EAAgBM,GAAuB;AAC9C,UAAMx3C,IAAU,CAAA;AAChB,QAAIy3C;AACJ,UAAMC,IAAOb,EAAc,mCAAmC,IAAI;AAClE,YAAQY,IAAQC,EAAK,KAAKF,CAAqB,OAAO,QAAM;AAC1D,UAAI,GAAGxjD,GAAG2jD,GAAMC,CAAI,IAAIH;AAExB,UADAzjD,IAAI,SAASA,GAAG,EAAE,GACdA,KAAKgM,GAAS;AAChB,YAAIhM,MAAM;AACR;AAEF;AAAA,MACF;AACA,MAAAgM,EAAQhM,CAAC,IAAI,CAAC2jD,GAAMC,CAAI;AAAA,IAC1B;AACA,UAAMC,IAAQ,CAAA;AACd,aAAS7jD,IAAI,GAAGA,IAAIgM,EAAQ,UACpBhM,KAAKgM,GADuB,EAAEhM,GAAG;AAIvC,UAAI,CAAC2jD,GAAMC,CAAI,IAAI53C,EAAQhM,CAAC;AAC5B,MAAA4jD,IAAOd,EAAec,CAAI,GACtBD,MACFC,IAAO,SAASA,CAAI,GAChB5jD,MAAM,MACR4jD,IAAOb,EAAca,CAAI,KAG7BC,EAAM,KAAKD,CAAI;AAAA,IACjB;AACA,WAAOC,EAAM,KAAK,EAAE;AAAA,EACtB;AACA,WAASf,EAAejlD,GAAO;AAC7B,QAAIA,EAAM,WAAW,GAAG,GAAG;AACzB,YAAMgmD,IAAQhmD,EAAM,MAAM,CAAC,EAAE,MAAM,KAAK;AACxC,eAASoB,IAAI,GAAGA,IAAI4kD,EAAM,QAAQ,EAAE5kD,GAAG;AACrC,cAAM6kD,IAAYD,EAAM5kD,CAAC,EAAE,QAAQ,GAAG;AACtC,QAAI6kD,MAAc,OAChBD,EAAM5kD,CAAC,IAAI4kD,EAAM5kD,CAAC,EAAE,MAAM,GAAG6kD,CAAS,GACtCD,EAAM,SAAS5kD,IAAI,IAErB4kD,EAAM5kD,CAAC,IAAI4kD,EAAM5kD,CAAC,EAAE,WAAW,UAAU,IAAI;AAAA,MAC/C;AACA,MAAApB,IAAQgmD,EAAM,KAAK,GAAG;AAAA,IACxB;AACA,WAAOhmD;AAAA,EACT;AACA,WAASklD,EAAcgB,GAAU;AAC/B,UAAMC,IAAcD,EAAS,QAAQ,GAAG;AACxC,QAAIC,MAAgB;AAClB,aAAOD;AAET,UAAMT,IAAWS,EAAS,MAAM,GAAGC,CAAW,GAExCnmD,IADYkmD,EAAS,MAAMC,IAAc,CAAC,EACxB,QAAQ,WAAW,EAAE;AAC7C,WAAOX,EAAWC,GAAUzlD,CAAK;AAAA,EACnC;AACA,WAASmlD,EAAcnlD,GAAO;AAC5B,WAAI,CAACA,EAAM,WAAW,IAAI,KAAK,uBAAuB,KAAKA,CAAK,IACvDA,IAEFA,EAAM,WAAW,kDAAkD,SAAUmO,GAASi4C,GAASX,GAAUjjC,GAAM;AACpH,UAAIijC,MAAa,OAAOA,MAAa;AACnC,eAAAjjC,IAAOA,EAAK,WAAW,KAAK,GAAG,GAC/BA,IAAOA,EAAK,WAAW,sBAAsB,SAAUojC,GAAOvnB,GAAK;AACjE,iBAAO,OAAO,aAAa,SAASA,GAAK,EAAE,CAAC;AAAA,QAC9C,CAAC,GACMmnB,EAAWY,GAAS5jC,CAAI;AAEjC,UAAI;AACF,QAAAA,IAAO,KAAKA,CAAI;AAAA,MAClB,QAAQ;AAAA,MAAC;AACT,aAAOgjC,EAAWY,GAAS5jC,CAAI;AAAA,IACjC,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAMA,SAAS6jC,GAAcC,GAAQC,GAAa;AAC1C,QAAMC,IAAU,IAAI,QAAO;AAC3B,MAAI,CAACF,KAAU,CAACC,KAAe,OAAOA,KAAgB;AACpD,WAAOC;AAET,aAAW98C,KAAO68C,GAAa;AAC7B,UAAMrwB,IAAMqwB,EAAY78C,CAAG;AAC3B,IAAIwsB,MAAQ,UACVswB,EAAQ,OAAO98C,GAAKwsB,CAAG;AAAA,EAE3B;AACA,SAAOswB;AACT;AACA,SAASC,GAAkBvnD,GAAK;AArwZhC,MAAA8C;AAswZE,WAAOA,IAAA,IAAI,MAAM9C,CAAG,MAAb,gBAAA8C,EAAgB,WAAU;AACnC;AACA,SAAS0kD,GAAiC;AAAA,EACxC,iBAAAC;AAAA,EACA,QAAAL;AAAA,EACA,gBAAAM;AAAA,EACA,cAAA/C;AACF,GAAG;AACD,QAAMgD,IAAe;AAAA,IACnB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,EACrB,GACQ5lD,IAAS,SAAS0lD,EAAgB,IAAI,gBAAgB,GAAG,EAAE;AAejE,SAdI,CAAC,OAAO,UAAU1lD,CAAM,MAG5B4lD,EAAa,kBAAkB5lD,GAC3BA,KAAU,IAAI2lD,MAGd/C,KAAgB,CAACyC,KAGjBK,EAAgB,IAAI,eAAe,MAAM,YAGrBA,EAAgB,IAAI,kBAAkB,KAAK,gBAC3C,eAGxBE,EAAa,qBAAqB,KAC3BA;AACT;AACA,SAASC,GAA0BH,GAAiB;AAClD,QAAM7B,IAAqB6B,EAAgB,IAAI,qBAAqB;AACpE,MAAI7B,GAAoB;AACtB,QAAIr4C,IAAWo4C,GAAwCC,CAAkB;AACzE,QAAIr4C,EAAS,SAAS,GAAG;AACvB,UAAI;AACF,QAAAA,IAAW,mBAAmBA,CAAQ;AAAA,MACxC,QAAQ;AAAA,MAAC;AAEX,QAAID,GAAUC,CAAQ;AACpB,aAAOA;AAAA,EAEX;AACA,SAAO;AACT;AACA,SAASs6C,GAAoBpmD,GAAQzB,GAAK;AACxC,SAAO,IAAIwB,GAAkB,+BAA+BC,CAAM,2BAA2BzB,CAAG,MAAMyB,GAAQA,MAAW,OAAOA,MAAW,KAAKzB,EAAI,WAAW,OAAO,CAAC;AACzK;AACA,SAAS8nD,GAAuBrmD,GAAQ;AACtC,SAAOA,MAAW,OAAOA,MAAW;AACtC;AAKA,SAASsmD,GAAmBT,GAASU,GAAiBC,GAAiB;AACrE,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,SAAAX;AAAA,IACA,QAAQW,EAAgB;AAAA,IACxB,MAAM;AAAA,IACN,aAAaD,IAAkB,YAAY;AAAA,IAC3C,UAAU;AAAA,EACd;AACA;AACA,SAASE,GAAelxB,GAAK;AAC3B,SAAIA,aAAe,aACVA,EAAI,SAETA,aAAe,cACVA,KAETr3B,EAAK,4CAA4Cq3B,CAAG,EAAE,GAC/C,IAAI,WAAWA,CAAG,EAAE;AAC7B;AACA,MAAMmxB,GAAe;AAAA,EAEnB,YAAYC,GAAQ;AADpB,IAAA/8C,EAAA,yBAAkB;AAEhB,SAAK,SAAS+8C,GACd,KAAK,SAAS,YAAY,KAAKA,EAAO,GAAG,GACzC,KAAK,UAAUjB,GAAc,KAAK,QAAQiB,EAAO,WAAW,GAC5D,KAAK,qBAAqB,MAC1B,KAAK,uBAAuB,CAAA;AAAA,EAC9B;AAAA,EACA,IAAI,yBAAyB;AA71Z/B,QAAAtlD;AA81ZI,aAAOA,IAAA,KAAK,uBAAL,gBAAAA,EAAyB,YAAW;AAAA,EAC7C;AAAA,EACA,gBAAgB;AACd,WAAAjD,GAAO,CAAC,KAAK,oBAAoB,uDAAuD,GACxF,KAAK,qBAAqB,IAAIwoD,GAAqB,IAAI,GAChD,KAAK;AAAA,EACd;AAAA,EACA,eAAerD,GAAOz2C,GAAK;AACzB,QAAIA,KAAO,KAAK;AACd,aAAO;AAET,UAAM82C,IAAS,IAAIiD,GAA0B,MAAMtD,GAAOz2C,CAAG;AAC7D,gBAAK,qBAAqB,KAAK82C,CAAM,GAC9BA;AAAA,EACT;AAAA,EACA,kBAAkB9iB,GAAQ;AA72Z5B,QAAAz/B;AA82ZI,KAAAA,IAAA,KAAK,uBAAL,QAAAA,EAAyB,OAAOy/B;AAChC,eAAW8iB,KAAU,KAAK,qBAAqB,MAAM,CAAC;AACpD,MAAAA,EAAO,OAAO9iB,CAAM;AAAA,EAExB;AACF;AACA,MAAM8lB,GAAqB;AAAA,EACzB,YAAY5C,GAAQ;AAClB,SAAK,UAAUA,GACf,KAAK,UAAU,MACf,KAAK,UAAU,GACf,KAAK,YAAY;AACjB,UAAM2C,IAAS3C,EAAO;AACtB,SAAK,mBAAmB2C,EAAO,mBAAmB,IAClD,KAAK,iBAAiBA,EAAO,QAC7B,KAAK,qBAAqB,QAAQ,cAAa,GAC/C,KAAK,gBAAgBA,EAAO,gBAAgB,IAC5C,KAAK,kBAAkBA,EAAO,gBAC1B,CAAC,KAAK,mBAAmB,CAAC,KAAK,kBACjC,KAAK,gBAAgB,KAEvB,KAAK,mBAAmB,IAAI,gBAAe,GAC3C,KAAK,wBAAwB,CAACA,EAAO,eACrC,KAAK,oBAAoB,CAACA,EAAO;AACjC,UAAMd,IAAU,IAAI,QAAQ7B,EAAO,OAAO,GACpCzlD,IAAMooD,EAAO;AACnB,UAAMpoD,GAAK+nD,GAAmBT,GAAS,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAK,CAAA57C,MAAY;AAErG,UADA+5C,EAAO,kBAAkB8B,GAAkB77C,EAAS,GAAG,GACnD,CAACo8C,GAAuBp8C,EAAS,MAAM;AACzC,cAAMm8C,GAAoBn8C,EAAS,QAAQ1L,CAAG;AAEhD,WAAK,UAAU0L,EAAS,KAAK,UAAS,GACtC,KAAK,mBAAmB,QAAO;AAC/B,YAAM+7C,IAAkB/7C,EAAS,SAC3B;AAAA,QACJ,oBAAA68C;AAAA,QACA,iBAAAC;AAAA,MACR,IAAUhB,GAAiC;AAAA,QACnC,iBAAAC;AAAA,QACA,QAAQhC,EAAO;AAAA,QACf,gBAAgB,KAAK;AAAA,QACrB,cAAc,KAAK;AAAA,MAC3B,CAAO;AACD,WAAK,oBAAoB8C,GACzB,KAAK,iBAAiBC,KAAmB,KAAK,gBAC9C,KAAK,YAAYZ,GAA0BH,CAAe,GACtD,CAAC,KAAK,yBAAyB,KAAK,qBACtC,KAAK,OAAO,IAAI7lD,GAAe,wBAAwB,CAAC;AAAA,IAE5D,CAAC,EAAE,MAAM,KAAK,mBAAmB,MAAM,GACvC,KAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,OAAO;AAj7Zf,QAAAkB;AAk7ZI,UAAM,KAAK,mBAAmB;AAC9B,UAAM;AAAA,MACJ,OAAAhC;AAAA,MACA,MAAA2nD;AAAA,IACN,IAAQ,MAAM,KAAK,QAAQ,KAAI;AAC3B,WAAIA,IACK;AAAA,MACL,OAAA3nD;AAAA,MACA,MAAA2nD;AAAA,IACR,KAEI,KAAK,WAAW3nD,EAAM,aACtBgC,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAClB,IACW;AAAA,MACL,OAAOolD,GAAepnD,CAAK;AAAA,MAC3B,MAAM;AAAA,IACZ;AAAA,EACE;AAAA,EACA,OAAOyhC,GAAQ;AAv8ZjB,QAAAz/B;AAw8ZI,KAAAA,IAAA,KAAK,YAAL,QAAAA,EAAc,OAAOy/B,IACrB,KAAK,iBAAiB,MAAK;AAAA,EAC7B;AACF;AACA,MAAM+lB,GAA0B;AAAA,EAC9B,YAAY7C,GAAQT,GAAOz2C,GAAK;AAC9B,SAAK,UAAUk3C,GACf,KAAK,UAAU,MACf,KAAK,UAAU;AACf,UAAM2C,IAAS3C,EAAO;AACtB,SAAK,mBAAmB2C,EAAO,mBAAmB,IAClD,KAAK,kBAAkB,QAAQ,cAAa,GAC5C,KAAK,wBAAwB,CAACA,EAAO,eACrC,KAAK,mBAAmB,IAAI,gBAAe;AAC3C,UAAMd,IAAU,IAAI,QAAQ7B,EAAO,OAAO;AAC1C,IAAA6B,EAAQ,OAAO,SAAS,SAAStC,CAAK,IAAIz2C,IAAM,CAAC,EAAE;AACnD,UAAMvO,IAAMooD,EAAO;AACnB,UAAMpoD,GAAK+nD,GAAmBT,GAAS,KAAK,kBAAkB,KAAK,gBAAgB,CAAC,EAAE,KAAK,CAAA57C,MAAY;AACrG,YAAMg9C,IAAiBnB,GAAkB77C,EAAS,GAAG;AACrD,UAAIg9C,MAAmBjD,EAAO;AAC5B,cAAM,IAAI,MAAM,mCAAmCiD,CAAc,eAAejD,EAAO,eAAe,IAAI;AAE5G,UAAI,CAACqC,GAAuBp8C,EAAS,MAAM;AACzC,cAAMm8C,GAAoBn8C,EAAS,QAAQ1L,CAAG;AAEhD,WAAK,gBAAgB,QAAO,GAC5B,KAAK,UAAU0L,EAAS,KAAK,UAAS;AAAA,IACxC,CAAC,EAAE,MAAM,KAAK,gBAAgB,MAAM,GACpC,KAAK,aAAa;AAAA,EACpB;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,OAAO;AAz+Zf,QAAA5I;AA0+ZI,UAAM,KAAK,gBAAgB;AAC3B,UAAM;AAAA,MACJ,OAAAhC;AAAA,MACA,MAAA2nD;AAAA,IACN,IAAQ,MAAM,KAAK,QAAQ,KAAI;AAC3B,WAAIA,IACK;AAAA,MACL,OAAA3nD;AAAA,MACA,MAAA2nD;AAAA,IACR,KAEI,KAAK,WAAW3nD,EAAM,aACtBgC,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,IACnB,IACW;AAAA,MACL,OAAOolD,GAAepnD,CAAK;AAAA,MAC3B,MAAM;AAAA,IACZ;AAAA,EACE;AAAA,EACA,OAAOyhC,GAAQ;AA9/ZjB,QAAAz/B;AA+/ZI,KAAAA,IAAA,KAAK,YAAL,QAAAA,EAAc,OAAOy/B,IACrB,KAAK,iBAAiB,MAAK;AAAA,EAC7B;AACF;AAKA,MAAMomB,KAAc,KACdC,KAA2B;AACjC,SAASC,GAAuBC,GAAK;AACnC,QAAMz0C,IAAOy0C,EAAI;AACjB,SAAI,OAAOz0C,KAAS,WACXA,IAEFhS,GAAcgS,CAAI,EAAE;AAC7B;AACA,MAAM00C,GAAe;AAAA,EAEnB,YAAY;AAAA,IACV,KAAA/oD;AAAA,IACA,aAAAqnD;AAAA,IACA,iBAAAW;AAAA,EACJ,GAAK;AALH,IAAA38C,EAAA,yBAAkB;AAMhB,SAAK,MAAMrL,GACX,KAAK,SAAS,YAAY,KAAKA,CAAG,GAClC,KAAK,UAAUmnD,GAAc,KAAK,QAAQE,CAAW,GACrD,KAAK,kBAAkBW,KAAmB,IAC1C,KAAK,YAAY,GACjB,KAAK,kBAAkB,uBAAO,OAAO,IAAI;AAAA,EAC3C;AAAA,EACA,QAAQx/C,GAAM;AACZ,UAAMsgD,IAAM,IAAI,eAAc,GACxBE,IAAQ,KAAK,aACbC,IAAiB,KAAK,gBAAgBD,CAAK,IAAI;AAAA,MACnD,KAAAF;AAAA,IACN;AACI,IAAAA,EAAI,KAAK,OAAO,KAAK,GAAG,GACxBA,EAAI,kBAAkB,KAAK;AAC3B,eAAW,CAACt+C,GAAKwsB,CAAG,KAAK,KAAK;AAC5B,MAAA8xB,EAAI,iBAAiBt+C,GAAKwsB,CAAG;AAE/B,WAAI,KAAK,UAAU,WAAWxuB,KAAQ,SAASA,KAC7CsgD,EAAI,iBAAiB,SAAS,SAAStgD,EAAK,KAAK,IAAIA,EAAK,MAAM,CAAC,EAAE,GACnEygD,EAAe,iBAAiBL,MAEhCK,EAAe,iBAAiBN,IAElCG,EAAI,eAAe,eACnBjpD,GAAO2I,EAAK,SAAS,6CAA6C,GAClEsgD,EAAI,UAAU,MAAM;AAClB,MAAAtgD,EAAK,QAAQsgD,EAAI,MAAM;AAAA,IACzB,GACAA,EAAI,qBAAqB,KAAK,cAAc,KAAK,MAAME,CAAK,GAC5DF,EAAI,aAAa,KAAK,WAAW,KAAK,MAAME,CAAK,GACjDC,EAAe,oBAAoBzgD,EAAK,mBACxCygD,EAAe,SAASzgD,EAAK,QAC7BygD,EAAe,UAAUzgD,EAAK,SAC9BygD,EAAe,aAAazgD,EAAK,YACjCsgD,EAAI,KAAK,IAAI,GACNE;AAAA,EACT;AAAA,EACA,WAAWA,GAAOloC,GAAK;AA7jazB,QAAAhe;AA8jaI,UAAMmmD,IAAiB,KAAK,gBAAgBD,CAAK;AACjD,IAAKC,OAGLnmD,IAAAmmD,EAAe,eAAf,QAAAnmD,EAAA,KAAAmmD,GAA4BnoC;AAAA,EAC9B;AAAA,EACA,cAAckoC,GAAOloC,GAAK;AACxB,UAAMmoC,IAAiB,KAAK,gBAAgBD,CAAK;AACjD,QAAI,CAACC;AACH;AAEF,UAAMH,IAAMG,EAAe;AAQ3B,QAPIH,EAAI,cAAc,KAAKG,EAAe,sBACxCA,EAAe,kBAAiB,GAChC,OAAOA,EAAe,oBAEpBH,EAAI,eAAe,KAGnB,EAAEE,KAAS,KAAK;AAClB;AAGF,QADA,OAAO,KAAK,gBAAgBA,CAAK,GAC7BF,EAAI,WAAW,KAAK,KAAK,QAAQ;AACnC,MAAAG,EAAe,QAAQH,EAAI,MAAM;AACjC;AAAA,IACF;AACA,UAAMI,IAAYJ,EAAI,UAAUH;AAEhC,QAAI,EADiCO,MAAcP,MAAeM,EAAe,mBAAmBL,OAC/DM,MAAcD,EAAe,gBAAgB;AAChF,MAAAA,EAAe,QAAQH,EAAI,MAAM;AACjC;AAAA,IACF;AACA,UAAM1mD,IAAQymD,GAAuBC,CAAG;AACxC,QAAII,MAAcN,IAA0B;AAC1C,YAAMO,IAAcL,EAAI,kBAAkB,eAAe,GACnD75C,IAAU,2BAA2B,KAAKk6C,CAAW;AAC3D,MAAIl6C,IACFg6C,EAAe,OAAO;AAAA,QACpB,OAAO,SAASh6C,EAAQ,CAAC,GAAG,EAAE;AAAA,QAC9B,OAAA7M;AAAA,MACV,CAAS,KAEDzC,EAAK,4CAA4C,GACjDspD,EAAe,QAAQ,CAAC;AAAA,IAE5B,MAAO,CAAI7mD,IACT6mD,EAAe,OAAO;AAAA,MACpB,OAAO;AAAA,MACP,OAAA7mD;AAAA,IACR,CAAO,IAED6mD,EAAe,QAAQH,EAAI,MAAM;AAAA,EAErC;AAAA,EACA,cAAcE,GAAO;AACnB,WAAO,KAAK,gBAAgBA,CAAK,EAAE;AAAA,EACrC;AAAA,EACA,iBAAiBA,GAAO;AACtB,WAAOA,KAAS,KAAK;AAAA,EACvB;AAAA,EACA,aAAaA,GAAO;AAClB,UAAMF,IAAM,KAAK,gBAAgBE,CAAK,EAAE;AACxC,WAAO,KAAK,gBAAgBA,CAAK,GACjCF,EAAI,MAAK;AAAA,EACX;AACF;AACA,MAAMM,GAAiB;AAAA,EACrB,YAAYhB,GAAQ;AAClB,SAAK,UAAUA,GACf,KAAK,WAAW,IAAIW,GAAeX,CAAM,GACzC,KAAK,kBAAkBA,EAAO,gBAC9B,KAAK,qBAAqB,MAC1B,KAAK,uBAAuB,CAAA;AAAA,EAC9B;AAAA,EACA,4BAA4B/C,GAAQ;AAClC,UAAMnjD,IAAI,KAAK,qBAAqB,QAAQmjD,CAAM;AAClD,IAAInjD,KAAK,KACP,KAAK,qBAAqB,OAAOA,GAAG,CAAC;AAAA,EAEzC;AAAA,EACA,gBAAgB;AACd,WAAArC,GAAO,CAAC,KAAK,oBAAoB,yDAAyD,GAC1F,KAAK,qBAAqB,IAAIwpD,GAAkC,KAAK,UAAU,KAAK,OAAO,GACpF,KAAK;AAAA,EACd;AAAA,EACA,eAAerE,GAAOz2C,GAAK;AACzB,UAAM82C,IAAS,IAAIiE,GAAmC,KAAK,UAAUtE,GAAOz2C,CAAG;AAC/E,WAAA82C,EAAO,WAAW,KAAK,4BAA4B,KAAK,IAAI,GAC5D,KAAK,qBAAqB,KAAKA,CAAM,GAC9BA;AAAA,EACT;AAAA,EACA,kBAAkB9iB,GAAQ;AA1pa5B,QAAAz/B;AA2paI,KAAAA,IAAA,KAAK,uBAAL,QAAAA,EAAyB,OAAOy/B;AAChC,eAAW8iB,KAAU,KAAK,qBAAqB,MAAM,CAAC;AACpD,MAAAA,EAAO,OAAO9iB,CAAM;AAAA,EAExB;AACF;AACA,MAAM8mB,GAAkC;AAAA,EACtC,YAAYE,GAASnB,GAAQ;AAC3B,SAAK,WAAWmB,GAChB,KAAK,OAAOnB,EAAO,KACnB,KAAK,iBAAiBmB,EAAQ,QAAQ;AAAA,MACpC,mBAAmB,KAAK,mBAAmB,KAAK,IAAI;AAAA,MACpD,QAAQ,KAAK,QAAQ,KAAK,IAAI;AAAA,MAC9B,SAAS,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC,YAAY,KAAK,YAAY,KAAK,IAAI;AAAA,IAC5C,CAAK,GACD,KAAK,qBAAqB,QAAQ,cAAa,GAC/C,KAAK,gBAAgBnB,EAAO,gBAAgB,IAC5C,KAAK,iBAAiBA,EAAO,QAC7B,KAAK,kBAAkBA,EAAO,gBAC1B,CAAC,KAAK,mBAAmB,CAAC,KAAK,kBACjC,KAAK,gBAAgB,KAEvB,KAAK,wBAAwB,IAC7B,KAAK,oBAAoB,IACzB,KAAK,gBAAgB,CAAA,GACrB,KAAK,YAAY,CAAA,GACjB,KAAK,QAAQ,IACb,KAAK,eAAe,QACpB,KAAK,YAAY,MACjB,KAAK,aAAa;AAAA,EACpB;AAAA,EACA,qBAAqB;AACnB,UAAMoB,IAAmB,KAAK,gBACxBC,IAAiB,KAAK,SAAS,cAAcD,CAAgB;AACnE,SAAK,SAAS,kBAAkBjC,GAAkBkC,EAAe,WAAW;AAC5E,UAAMC,IAAqBD,EAAe,sBAAqB,GACzDhC,IAAkB,IAAI,QAAQiC,IAAqBA,EAAmB,UAAS,EAAG,QAAQ,YAAY,EAAE,EAAE,MAAM,SAAS,EAAE,IAAI,CAAAljD,MAAK;AACxI,YAAM,CAACgE,GAAK,GAAGwsB,CAAG,IAAIxwB,EAAE,MAAM,IAAI;AAClC,aAAO,CAACgE,GAAKwsB,EAAI,KAAK,IAAI,CAAC;AAAA,IAC7B,CAAC,IAAI,CAAA,CAAE,GACD;AAAA,MACJ,oBAAAuxB;AAAA,MACA,iBAAAC;AAAA,IACN,IAAQhB,GAAiC;AAAA,MACnC,iBAAAC;AAAA,MACA,QAAQ,KAAK,SAAS;AAAA,MACtB,gBAAgB,KAAK;AAAA,MACrB,cAAc,KAAK;AAAA,IACzB,CAAK;AACD,IAAIc,MACF,KAAK,oBAAoB,KAE3B,KAAK,iBAAiBC,KAAmB,KAAK,gBAC9C,KAAK,YAAYZ,GAA0BH,CAAe,GACtD,KAAK,qBACP,KAAK,SAAS,aAAa+B,CAAgB,GAE7C,KAAK,mBAAmB,QAAO;AAAA,EACjC;AAAA,EACA,QAAQn1C,GAAM;AAaZ,QAZIA,MACE,KAAK,UAAU,SAAS,IACA,KAAK,UAAU,MAAK,EAC5B,QAAQ;AAAA,MACxB,OAAOA,EAAK;AAAA,MACZ,MAAM;AAAA,IAChB,CAAS,IAED,KAAK,cAAc,KAAKA,EAAK,KAAK,IAGtC,KAAK,QAAQ,IACT,OAAK,cAAc,SAAS,IAGhC;AAAA,iBAAWqxC,KAAqB,KAAK;AACnC,QAAAA,EAAkB,QAAQ;AAAA,UACxB,OAAO;AAAA,UACP,MAAM;AAAA,QACd,CAAO;AAEH,WAAK,UAAU,SAAS;AAAA;AAAA,EAC1B;AAAA,EACA,SAASjkD,GAAQ;AACf,SAAK,eAAeomD,GAAoBpmD,GAAQ,KAAK,IAAI,GACzD,KAAK,mBAAmB,OAAO,KAAK,YAAY;AAChD,eAAWikD,KAAqB,KAAK;AACnC,MAAAA,EAAkB,OAAO,KAAK,YAAY;AAE5C,SAAK,UAAU,SAAS,GACxB,KAAK,cAAc,SAAS;AAAA,EAC9B;AAAA,EACA,YAAY5kC,GAAK;AAxvanB,QAAAhe;AAyvaI,KAAAA,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQge,EAAI;AAAA,MACZ,OAAOA,EAAI,mBAAmBA,EAAI,QAAQ,KAAK;AAAA,IACrD;AAAA,EACE;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,MAAM,OAAO;AAEX,QADA,MAAM,KAAK,mBAAmB,SAC1B,KAAK;AACP,YAAM,KAAK;AAEb,QAAI,KAAK,cAAc,SAAS;AAE9B,aAAO;AAAA,QACL,OAFY,KAAK,cAAc,MAAK;AAAA,QAGpC,MAAM;AAAA,MACd;AAEI,QAAI,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,UAAM4kC,IAAoB,QAAQ,cAAa;AAC/C,gBAAK,UAAU,KAAKA,CAAiB,GAC9BA,EAAkB;AAAA,EAC3B;AAAA,EACA,OAAOnjB,GAAQ;AACb,SAAK,QAAQ,IACb,KAAK,mBAAmB,OAAOA,CAAM;AACrC,eAAWmjB,KAAqB,KAAK;AACnC,MAAAA,EAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAEH,SAAK,UAAU,SAAS,GACpB,KAAK,SAAS,iBAAiB,KAAK,cAAc,KACpD,KAAK,SAAS,aAAa,KAAK,cAAc,GAEhD,KAAK,qBAAqB;AAAA,EAC5B;AACF;AACA,MAAM4D,GAAmC;AAAA,EACvC,YAAYC,GAASvE,GAAOz2C,GAAK;AAC/B,SAAK,WAAWg7C,GAChB,KAAK,OAAOA,EAAQ,KACpB,KAAK,aAAaA,EAAQ,QAAQ;AAAA,MAChC,OAAAvE;AAAA,MACA,KAAAz2C;AAAA,MACA,mBAAmB,KAAK,mBAAmB,KAAK,IAAI;AAAA,MACpD,QAAQ,KAAK,QAAQ,KAAK,IAAI;AAAA,MAC9B,SAAS,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC,YAAY,KAAK,YAAY,KAAK,IAAI;AAAA,IAC5C,CAAK,GACD,KAAK,YAAY,CAAA,GACjB,KAAK,eAAe,MACpB,KAAK,QAAQ,IACb,KAAK,eAAe,QACpB,KAAK,aAAa,MAClB,KAAK,WAAW;AAAA,EAClB;AAAA,EACA,qBAAqB;AAt0avB,QAAAzL;AAu0aI,UAAM4lD,IAAiBnB,IAAkBzkD,IAAA,KAAK,SAAS,cAAc,KAAK,UAAU,MAA3C,gBAAAA,EAA8C,WAAW;AAClG,IAAI4lD,MAAmB,KAAK,SAAS,oBACnC,KAAK,eAAe,IAAI,MAAM,mCAAmCA,CAAc,eAAe,KAAK,SAAS,eAAe,IAAI,GAC/H,KAAK,SAAS,CAAC;AAAA,EAEnB;AAAA,EACA,SAAS;AA70aX,QAAA5lD;AA80aI,KAAAA,IAAA,KAAK,aAAL,QAAAA,EAAA,WAAgB;AAAA,EAClB;AAAA,EACA,QAAQuR,GAAM;AACZ,UAAMjS,IAAQiS,EAAK;AACnB,IAAI,KAAK,UAAU,SAAS,IACA,KAAK,UAAU,MAAK,EAC5B,QAAQ;AAAA,MACxB,OAAOjS;AAAA,MACP,MAAM;AAAA,IACd,CAAO,IAED,KAAK,eAAeA,GAEtB,KAAK,QAAQ;AACb,eAAWsjD,KAAqB,KAAK;AACnC,MAAAA,EAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAEH,SAAK,UAAU,SAAS,GACxB,KAAK,OAAM;AAAA,EACb;AAAA,EACA,SAASjkD,GAAQ;AACf,SAAK,iBAAL,KAAK,eAAiBomD,GAAoBpmD,GAAQ,KAAK,IAAI;AAC3D,eAAWikD,KAAqB,KAAK;AACnC,MAAAA,EAAkB,OAAO,KAAK,YAAY;AAE5C,SAAK,UAAU,SAAS,GACxB,KAAK,eAAe;AAAA,EACtB;AAAA,EACA,YAAY5kC,GAAK;AA72anB,QAAAhe;AA82aI,IAAK,KAAK,yBACRA,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQge,EAAI;AAAA,IACpB;AAAA,EAEE;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO;AACX,QAAI,KAAK;AACP,YAAM,KAAK;AAEb,QAAI,KAAK,iBAAiB,MAAM;AAC9B,YAAM1e,IAAQ,KAAK;AACnB,kBAAK,eAAe,MACb;AAAA,QACL,OAAOA;AAAA,QACP,MAAM;AAAA,MACd;AAAA,IACI;AACA,QAAI,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,UAAMsjD,IAAoB,QAAQ,cAAa;AAC/C,gBAAK,UAAU,KAAKA,CAAiB,GAC9BA,EAAkB;AAAA,EAC3B;AAAA,EACA,OAAOnjB,GAAQ;AACb,SAAK,QAAQ;AACb,eAAWmjB,KAAqB,KAAK;AACnC,MAAAA,EAAkB,QAAQ;AAAA,QACxB,OAAO;AAAA,QACP,MAAM;AAAA,MACd,CAAO;AAEH,SAAK,UAAU,SAAS,GACpB,KAAK,SAAS,iBAAiB,KAAK,UAAU,KAChD,KAAK,SAAS,aAAa,KAAK,UAAU,GAE5C,KAAK,OAAM;AAAA,EACb;AACF;AAKA,MAAMiE,KAAW;AACjB,SAASC,GAAeC,GAAW;AACjC,MAAIF,GAAS,KAAKE,CAAS;AACzB,WAAO,IAAI,IAAIA,CAAS;AAE1B,QAAM7pD,IAAM,QAAQ,iBAAiB,KAAK;AAC1C,SAAO,IAAI,IAAIA,EAAI,cAAc6pD,CAAS,CAAC;AAC7C;AACA,MAAMC,GAAc;AAAA,EAClB,YAAY1B,GAAQ;AAClB,SAAK,SAASA,GACd,KAAK,MAAMwB,GAAexB,EAAO,GAAG,GACpCvoD,GAAO,KAAK,IAAI,aAAa,SAAS,2CAA2C,GACjF,KAAK,qBAAqB,MAC1B,KAAK,uBAAuB,CAAA;AAAA,EAC9B;AAAA,EACA,IAAI,yBAAyB;AAh7a/B,QAAAiD;AAi7aI,aAAOA,IAAA,KAAK,uBAAL,gBAAAA,EAAyB,YAAW;AAAA,EAC7C;AAAA,EACA,gBAAgB;AACd,WAAAjD,GAAO,CAAC,KAAK,oBAAoB,sDAAsD,GACvF,KAAK,qBAAqB,IAAIkqD,GAA0B,IAAI,GACrD,KAAK;AAAA,EACd;AAAA,EACA,eAAez7C,GAAOC,GAAK;AACzB,QAAIA,KAAO,KAAK;AACd,aAAO;AAET,UAAM62C,IAAc,IAAI4E,GAA2B,MAAM17C,GAAOC,CAAG;AACnE,gBAAK,qBAAqB,KAAK62C,CAAW,GACnCA;AAAA,EACT;AAAA,EACA,kBAAkB7iB,GAAQ;AAh8a5B,QAAAz/B;AAi8aI,KAAAA,IAAA,KAAK,uBAAL,QAAAA,EAAyB,OAAOy/B;AAChC,eAAW8iB,KAAU,KAAK,qBAAqB,MAAM,CAAC;AACpD,MAAAA,EAAO,OAAO9iB,CAAM;AAAA,EAExB;AACF;AACA,MAAMwnB,GAA0B;AAAA,EAC9B,YAAYtE,GAAQ;AAClB,SAAK,OAAOA,EAAO,KACnB,KAAK,QAAQ,IACb,KAAK,eAAe,MACpB,KAAK,aAAa;AAClB,UAAM2C,IAAS3C,EAAO;AACtB,SAAK,iBAAiB2C,EAAO,QAC7B,KAAK,UAAU,GACf,KAAK,YAAY,MACjB,KAAK,gBAAgBA,EAAO,gBAAgB,IAC5C,KAAK,kBAAkBA,EAAO,gBAC1B,CAAC,KAAK,mBAAmB,CAAC,KAAK,kBACjC,KAAK,gBAAgB,KAEvB,KAAK,wBAAwB,CAACA,EAAO,eACrC,KAAK,oBAAoB,CAACA,EAAO,cACjC,KAAK,kBAAkB,MACvB,KAAK,kBAAkB,QAAQ,cAAa,GAC5C,KAAK,qBAAqB,QAAQ,cAAa;AAC/C,UAAM6B,IAAK,QAAQ,iBAAiB,IAAI;AACxC,IAAAA,EAAG,SAAS,MAAM,KAAK,IAAI,EAAE,KAAK,CAAAC,MAAQ;AACxC,WAAK,iBAAiBA,EAAK,MAC3B,KAAK,mBAAmBD,EAAG,iBAAiB,KAAK,IAAI,CAAC,GACtD,KAAK,mBAAmB,QAAO;AAAA,IACjC,GAAG,CAAAE,MAAS;AACV,MAAIA,EAAM,SAAS,aACjBA,IAAQtC,GAAoB,GAAG,KAAK,KAAK,IAAI,IAE/C,KAAK,eAAesC,GACpB,KAAK,mBAAmB,OAAOA,CAAK;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,OAAO;AAv/af,QAAArnD;AAy/aI,QADA,MAAM,KAAK,gBAAgB,SACvB,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,QAAI,KAAK;AACP,YAAM,KAAK;AAEb,UAAMV,IAAQ,KAAK,gBAAgB,KAAI;AACvC,WAAIA,MAAU,QACZ,KAAK,kBAAkB,QAAQ,cAAa,GACrC,KAAK,KAAI,MAElB,KAAK,WAAWA,EAAM,SACtBU,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAClB,IAEW;AAAA,MACL,OAFa,IAAI,WAAWV,CAAK,EAAE;AAAA,MAGnC,MAAM;AAAA,IACZ;AAAA,EACE;AAAA,EACA,OAAOmgC,GAAQ;AACb,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAOA,CAAM;AAClB;AAAA,IACF;AACA,SAAK,gBAAgB,QAAQA,CAAM;AAAA,EACrC;AAAA,EACA,OAAOA,GAAQ;AACb,SAAK,eAAeA,GACpB,KAAK,gBAAgB,QAAO;AAAA,EAC9B;AAAA,EACA,mBAAmB6nB,GAAgB;AACjC,SAAK,kBAAkBA,GACvBA,EAAe,GAAG,YAAY,MAAM;AAClC,WAAK,gBAAgB,QAAO;AAAA,IAC9B,CAAC,GACDA,EAAe,GAAG,OAAO,MAAM;AAC7B,MAAAA,EAAe,QAAO,GACtB,KAAK,QAAQ,IACb,KAAK,gBAAgB,QAAO;AAAA,IAC9B,CAAC,GACDA,EAAe,GAAG,SAAS,CAAA7nB,MAAU;AACnC,WAAK,OAAOA,CAAM;AAAA,IACpB,CAAC,GACG,CAAC,KAAK,yBAAyB,KAAK,qBACtC,KAAK,OAAO,IAAI3gC,GAAe,uBAAuB,CAAC,GAErD,KAAK,gBACP,KAAK,gBAAgB,QAAQ,KAAK,YAAY;AAAA,EAElD;AACF;AACA,MAAMooD,GAA2B;AAAA,EAC/B,YAAYvE,GAAQn3C,GAAOC,GAAK;AAC9B,SAAK,OAAOk3C,EAAO,KACnB,KAAK,QAAQ,IACb,KAAK,eAAe,MACpB,KAAK,aAAa,MAClB,KAAK,UAAU,GACf,KAAK,kBAAkB,MACvB,KAAK,kBAAkB,QAAQ,cAAa;AAC5C,UAAM2C,IAAS3C,EAAO;AACtB,SAAK,wBAAwB,CAAC2C,EAAO;AACrC,UAAM6B,IAAK,QAAQ,iBAAiB,IAAI;AACxC,SAAK,mBAAmBA,EAAG,iBAAiB,KAAK,MAAM;AAAA,MACrD,OAAA37C;AAAA,MACA,KAAKC,IAAM;AAAA,IACjB,CAAK,CAAC;AAAA,EACJ;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO,KAAK;AAAA,EACd;AAAA,EACA,MAAM,OAAO;AAtkbf,QAAAzL;AAwkbI,QADA,MAAM,KAAK,gBAAgB,SACvB,KAAK;AACP,aAAO;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MACd;AAEI,QAAI,KAAK;AACP,YAAM,KAAK;AAEb,UAAMV,IAAQ,KAAK,gBAAgB,KAAI;AACvC,WAAIA,MAAU,QACZ,KAAK,kBAAkB,QAAQ,cAAa,GACrC,KAAK,KAAI,MAElB,KAAK,WAAWA,EAAM,SACtBU,IAAA,KAAK,eAAL,QAAAA,EAAA,WAAkB;AAAA,MAChB,QAAQ,KAAK;AAAA,IACnB,IAEW;AAAA,MACL,OAFa,IAAI,WAAWV,CAAK,EAAE;AAAA,MAGnC,MAAM;AAAA,IACZ;AAAA,EACE;AAAA,EACA,OAAOmgC,GAAQ;AACb,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,OAAOA,CAAM;AAClB;AAAA,IACF;AACA,SAAK,gBAAgB,QAAQA,CAAM;AAAA,EACrC;AAAA,EACA,OAAOA,GAAQ;AACb,SAAK,eAAeA,GACpB,KAAK,gBAAgB,QAAO;AAAA,EAC9B;AAAA,EACA,mBAAmB6nB,GAAgB;AACjC,SAAK,kBAAkBA,GACvBA,EAAe,GAAG,YAAY,MAAM;AAClC,WAAK,gBAAgB,QAAO;AAAA,IAC9B,CAAC,GACDA,EAAe,GAAG,OAAO,MAAM;AAC7B,MAAAA,EAAe,QAAO,GACtB,KAAK,QAAQ,IACb,KAAK,gBAAgB,QAAO;AAAA,IAC9B,CAAC,GACDA,EAAe,GAAG,SAAS,CAAA7nB,MAAU;AACnC,WAAK,OAAOA,CAAM;AAAA,IACpB,CAAC,GACG,KAAK,gBACP,KAAK,gBAAgB,QAAQ,KAAK,YAAY;AAAA,EAElD;AACF;AAGA,MAAM8nB,KAAe,OAAO,cAAc;AA/nb1C,IAAAC,IAAAC,IAAAC;AAgobA,MAAMC,GAAW;AAAA,EAAjB;AAAA,IAAAhjD,EAAA,MAAA8iD;AACE,IAAA9iD,EAAA,MAAA6iD,IAAQ,uBAAO,OAAO,IAAI;AAAA;AAAA,EAO1B,IAAIhwB,GAAOtf,IAAW,MAAM;AAC1B,QAAIA,GAAU;AACZ,YAAMpa,IAAMsG,EAAA,MAAKqjD,IAAAC,IAAL,WAAgBlwB;AAC5B,aAAA15B,EAAI,QAAQ,KAAK,MAAMoa,EAASpa,EAAI,IAAI,CAAC,GAClC;AAAA,IACT;AACA,UAAMA,IAAMmO,EAAA,MAAKu7C,IAAMhwB,CAAK;AAC5B,QAAI,CAAC15B,KAAOA,EAAI,SAASypD;AACvB,YAAM,IAAI,MAAM,6CAA6C/vB,CAAK,GAAG;AAEvE,WAAO15B,EAAI;AAAA,EACb;AAAA,EACA,IAAI05B,GAAO;AACT,UAAM15B,IAAMmO,EAAA,MAAKu7C,IAAMhwB,CAAK;AAC5B,WAAO,CAAC,CAAC15B,KAAOA,EAAI,SAASypD;AAAA,EAC/B;AAAA,EACA,OAAO/vB,GAAO;AACZ,UAAM15B,IAAMmO,EAAA,MAAKu7C,IAAMhwB,CAAK;AAC5B,WAAI,CAAC15B,KAAOA,EAAI,SAASypD,KAChB,MAET,OAAOt7C,EAAA,MAAKu7C,IAAMhwB,CAAK,GAChB;AAAA,EACT;AAAA,EACA,QAAQA,GAAOjmB,IAAO,MAAM;AAC1B,UAAMzT,IAAMsG,EAAA,MAAKqjD,IAAAC,IAAL,WAAgBlwB;AAC5B,IAAA15B,EAAI,OAAOyT,GACXzT,EAAI,QAAO;AAAA,EACb;AAAA,EACA,QAAQ;AArqbV,QAAAkC;AAsqbI,eAAWw3B,KAASvrB,EAAA,MAAKu7C,KAAO;AAC9B,YAAM;AAAA,QACJ,MAAAj2C;AAAA,MACR,IAAUtF,EAAA,MAAKu7C,IAAMhwB,CAAK;AACpB,OAAAx3B,IAAAuR,KAAA,gBAAAA,EAAM,WAAN,QAAAvR,EAAc;AAAA,IAChB;AACA,IAAAkM,EAAA,MAAKs7C,IAAQ,uBAAO,OAAO,IAAI;AAAA,EACjC;AAAA,EACA,EAAE,OAAO,QAAQ,IAAI;AACnB,eAAWhwB,KAASvrB,EAAA,MAAKu7C,KAAO;AAC9B,YAAM;AAAA,QACJ,MAAAj2C;AAAA,MACR,IAAUtF,EAAA,MAAKu7C,IAAMhwB,CAAK;AACpB,MAAIjmB,MAASg2C,OAGb,MAAM,CAAC/vB,GAAOjmB,CAAI;AAAA,IACpB;AAAA,EACF;AACF;AAxDEi2C,KAAA,eADFC,KAAA,eAEEC,KAAU,SAAClwB,GAAO;AAlobpB,MAAAx3B;AAmobI,UAAOA,IAAAiM,EAAA,MAAKu7C,KAALhwB,OAAAx3B,EAAAw3B,KAAsB;AAAA,IAC3B,GAAG,QAAQ,cAAa;AAAA,IACxB,MAAM+vB;AAAA,EACZ;AACE;AAuDF,MAAMK,KAA0B,KAC1BC,KAAoB;AA/rb1B,IAAA7nD,IAAA8nD,IAAAvsC,IAAAwsC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAgsbA,MAAMC,KAAN,MAAMA,GAAU;AAAA,EAwBd,YAAY;AAAA,IACV,mBAAAC;AAAA,IACA,WAAA54C;AAAA,IACA,UAAAvD;AAAA,EACJ,GAAK;AA5BL,IAAAhJ,EAAA,MAAAykD;AACE,IAAAzkD,EAAA,MAAAmjD,IAAc,QAAQ,cAAa;AACnC,IAAAnjD,EAAA,MAAA4W,IAAa;AACb,IAAA5W,EAAA,MAAAojD,IAAuB;AACvB,IAAApjD,EAAA,MAAAqjD,IAAwB,CAAC,GAAChoD,KAAA,WAAW,kBAAX,QAAAA,GAA0B;AACpD,IAAA2E,EAAA,MAAAsjD,IAAQ;AACR,IAAAtjD,EAAA,MAAAujD,IAAoB;AACpB,IAAAvjD,EAAA,MAAAwjD,IAAc;AACd,IAAAxjD,EAAA,MAAAyjD,IAAa;AACb,IAAAzjD,EAAA,MAAA0jD,IAAU;AACV,IAAA1jD,EAAA,MAAA2jD,IAAiB;AACjB,IAAA3jD,EAAA,MAAA4jD,IAAY;AACZ,IAAA5jD,EAAA,MAAA6jD,IAAS;AACT,IAAA7jD,EAAA,MAAA8jD,IAAc,uBAAO,OAAO,IAAI;AAChC,IAAA9jD,EAAA,MAAA+jD,IAAuB,CAAA;AACvB,IAAA/jD,EAAA,MAAAgkD,IAAqB;AACrB,IAAAhkD,EAAA,MAAAikD,IAAY,CAAA;AACZ,IAAAjkD,EAAA,MAAAkkD,IAAqB,oBAAI,QAAO;AAChC,IAAAlkD,EAAA,MAAAmkD,IAAa;AAltbf,QAAA9oD;AA6tbI,QAAI8pD,aAA6B;AAC/B,MAAA59C,EAAA,MAAKy8C,IAAqBmB;AAAA,aACjB,OAAOA,KAAsB;AACtC,MAAA59C,EAAA,MAAKy8C,IAAqB,IAAI,eAAe;AAAA,QAC3C,MAAMrpB,GAAY;AAChB,UAAAA,EAAW,QAAQwqB,CAAiB,GACpCxqB,EAAW,MAAK;AAAA,QAClB;AAAA,MACR,CAAO;AAAA;AAED,YAAM,IAAI,MAAM,6CAA6C;AAE/D,IAAApzB,EAAA,MAAKqP,IAAarP,EAAA,MAAKo8C,IAAiBp3C,KACxChF,EAAA,MAAKs8C,IAAS76C,EAAS,QAAQW,GAAY,aAC3CpC,EAAA,MAAKq8C,IAAY56C,EAAS,WAC1BzB,EAAA,MAAKg8C,IAAoB;AAAA,MACvB,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,KAAK;AAAA,IACX;AACI,UAAM;AAAA,MACJ,WAAAp6C;AAAA,MACA,YAAAC;AAAA,MACA,OAAA+e;AAAA,MACA,OAAAC;AAAA,IACN,IAAQpf,EAAS;AACb,IAAAzB,EAAA,MAAK48C,IAAa,CAAC,GAAG,GAAG,GAAG,IAAI,CAACh8B,GAAOC,IAAQhf,CAAU,IAC1D7B,EAAA,MAAKk8C,IAAat6C,IAClB5B,EAAA,MAAKi8C,IAAcp6C,IACnB3J,EAAApE,IAAA6pD,IAAUL,IAAAG,IAAV,KAAA3pD,IACAkR,EAAU,MAAM,YAAY,mBAAmBjF,EAAA49C,IAAUX,GAAY,GACrEz7C,GAAmByD,GAAWvD,CAAQ,GACtC1B,EAAA,MAAK67C,IAAY,QAAQ,QAAQ,MAAM;AACrC,MAAA77C,EAAA49C,IAAUV,IAAmB,OAAO,IAAI,GACxCj9C,EAAA,MAAKg8C,IAAoB,OACzBh8C,EAAA,MAAKu8C,IAAc;AAAA,IACrB,CAAC,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnB;AAAA,EACA,WAAW,gBAAgB;AACzB,UAAM;AAAA,MACJ,WAAAsB;AAAA,MACA,WAAAC;AAAA,IACN,IAAQnqD,GAAiB;AACrB,WAAOhC,EAAO,MAAM,iBAAiB,oBAAI,IAAI,CAAC,CAAC,cAAc,GAAGksD,KAAaC,IAAY,cAAc,EAAE,YAAY,GAAG,CAAC,aAAa,GAAGD,KAAaC,IAAY,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;AAAA,EACzM;AAAA,EACA,SAAS;AACP,UAAMC,IAAO,MAAM;AACjB,MAAAh+C,EAAA,MAAKo8C,IAAQ,KAAI,EAAG,KAAK,CAAC;AAAA,QACxB,OAAArqD;AAAA,QACA,MAAA2nD;AAAA,MACR,MAAY;AACJ,YAAIA,GAAM;AACR,UAAA15C,EAAA,MAAK67C,IAAY,QAAO;AACxB;AAAA,QACF;AACA,QAAA77C,EAAA,MAAKg8C,OAAL/7C,EAAA,MAAK+7C,IAAUjqD,EAAM,OACrB,OAAO,OAAOiO,EAAA,MAAKw8C,KAAazqD,EAAM,MAAM,GAC5CoG,EAAA,MAAKglD,IAAAC,IAAL,WAAmBrrD,EAAM,QACzBisD,EAAI;AAAA,MACN,GAAGh+C,EAAA,MAAK67C,IAAY,MAAM;AAAA,IAC5B;AACA,WAAA57C,EAAA,MAAKm8C,IAAUp8C,EAAA,MAAK08C,IAAmB,UAAS,IAChD18C,EAAA49C,IAAUV,IAAmB,IAAI,IAAI,GACrCc,EAAI,GACGh+C,EAAA,MAAK67C,IAAY;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA,IACL,UAAAn6C;AAAA,IACA,UAAAu8C,IAAW;AAAA,EACf,GAAK;AAlybL,QAAAlqD;AAmybI,UAAMkJ,IAAQyE,EAAS,QAAQW,GAAY,YACrCnF,IAAWwE,EAAS;AAQ1B,QAPIxE,MAAa8C,EAAA,MAAKs8C,QACpB2B,KAAA,QAAAA,KACAh+C,EAAA,MAAKq8C,IAAYp/C,IACjBsE,GAAmBxB,EAAA,MAAKq8C,KAAgB;AAAA,MACtC,UAAAn/C;AAAA,IACR,CAAO,IAECD,MAAU+C,EAAA,MAAKu8C,KAAQ;AACzB,MAAA0B,KAAA,QAAAA,KACAh+C,EAAA,MAAKs8C,IAASt/C;AACd,YAAM0Z,IAAS;AAAA,QACb,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,KAAKxe,EAAApE,IAAA6pD,IAAUL,IAAAC,IAAV,KAAAzpD,GAAkBiM,EAAA,MAAKg8C;AAAA,MACpC;AACM,iBAAWv6C,KAAOzB,EAAA,MAAK28C;AACrB,QAAAhmC,EAAO,aAAa3W,EAAA,MAAK48C,IAAmB,IAAIn7C,CAAG,GACnDkV,EAAO,MAAMlV,GACbtJ,EAAA,MAAKglD,IAAAG,IAAL,WAAa3mC;AAAA,IAEjB;AAAA,EACF;AAAA,EACA,SAAS;AA3zbX,QAAA5iB;AA4zbI,UAAMmqD,IAAU,IAAIrrD,GAAe,2BAA2B;AAC9D,KAAAkB,IAAAiM,EAAA,MAAKo8C,QAAL,QAAAroD,EAAc,OAAOmqD,GAAS,MAAM,MAAM;AAAA,IAAC,IAC3Cj+C,EAAA,MAAKm8C,IAAU,OACfp8C,EAAA,MAAK67C,IAAY,OAAOqC,CAAO;AAAA,EACjC;AAAA,EACA,IAAI,WAAW;AACb,WAAOl+C,EAAA,MAAK28C;AAAA,EACd;AAAA,EACA,IAAI,sBAAsB;AACxB,WAAO38C,EAAA,MAAKy8C;AAAA,EACd;AAAA,EAkIA,OAAO,UAAU;AACf,QAAI,EAAAz8C,EAAA,MAAKk9C,IAAmB,OAAO,IAGnC;AAAA,MAAAl9C,EAAA,MAAK88C,IAAa,MAAK;AACvB,iBAAW;AAAA,QACT,QAAAzyC;AAAA,MACN,KAASrK,EAAA,MAAK+8C,IAAgB;AACxB,QAAA1yC,EAAO,OAAM;AAEf,MAAArK,EAAA,MAAK+8C,IAAgB,MAAK;AAAA;AAAA,EAC5B;AAuEF;AAzVElB,KAAA,eACAvsC,KAAA,eACAwsC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACOC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAvBTC,KAAA,eAuIEC,KAAa,SAAC3iD,GAAO;AAv0bvB,MAAA1G,GAAAC;AAw0bI,MAAIgM,EAAA,MAAK87C;AACP;AAEF,GAAA9nD,IAAAgM,EAAA,MAAKi8C,KAAkB,QAAvBjoD,EAAuB,MAAQmE,EAAApE,IAAA6pD,IAAUL,IAAAC,IAAV,KAAAzpD,GAAkBiM,EAAA,MAAKg8C;AACtD,QAAMjgD,IAAWiE,EAAA,MAAK28C,KACpBwB,IAAsBn+C,EAAA,MAAKy8C;AAC7B,aAAWznC,KAAQva,GAAO;AACxB,QAAIsB,EAAS,SAAS4/C,IAAyB;AAC7C,MAAA/qD,EAAK,uDAAuD,GAC5DqP,EAAA,MAAK67C,IAAuB;AAC5B;AAAA,IACF;AACA,QAAI9mC,EAAK,QAAQ,QAAW;AAC1B,UAAIA,EAAK,SAAS,6BAA6BA,EAAK,SAAS,sBAAsB;AACjF,cAAM/Y,IAAS+D,EAAA,MAAKsP;AACpB,QAAArP,EAAA,MAAKqP,IAAa,SAAS,cAAc,MAAM,IAC/CtP,EAAA,MAAKsP,IAAW,UAAU,IAAI,eAAe,GACzC0F,EAAK,MACPhV,EAAA,MAAKsP,IAAW,aAAa,MAAM,GAAG0F,EAAK,EAAE,EAAE,GAEjD/Y,EAAO,OAAO+D,EAAA,MAAKsP,GAAU;AAAA,MAC/B,MAAO,CAAI0F,EAAK,SAAS,sBACvB/U,EAAA,MAAKqP,IAAatP,EAAA,MAAKsP,IAAW;AAEpC;AAAA,IACF;AACA,IAAA6uC,EAAoB,KAAKnpC,EAAK,GAAG,GACjC7c,EAAA,MAAKglD,IAAAE,IAAL,WAAiBroC;AAAA,EACnB;AACF,GACAqoC,KAAW,SAACe,GAAM;AAt2bpB,MAAArqD;AAu2bI,QAAMsqD,IAAU,SAAS,cAAc,MAAM,GACvCC,IAAoB;AAAA,IACxB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAASF,EAAK,QAAQ;AAAA,IACtB,QAAQA,EAAK;AAAA,IACb,UAAU;AAAA,EAChB;AACI,EAAAp+C,EAAA,MAAK28C,IAAU,KAAK0B,CAAO;AAC3B,QAAM5mC,IAAKnjB,EAAK,UAAU0L,EAAA,MAAK68C,KAAYuB,EAAK,SAAS;AACzD,MAAIx6B,IAAQ,KAAK,MAAMnM,EAAG,CAAC,GAAGA,EAAG,CAAC,CAAC;AACnC,QAAM1V,IAAQ/B,EAAA,MAAKw8C,IAAY4B,EAAK,QAAQ;AAC5C,EAAIr8C,EAAM,aACR6hB,KAAS,KAAK,KAAK;AAErB,MAAI26B,IAAav+C,EAAA,MAAK+7C,OAAyBh6C,EAAM,oBAAoBA,EAAM;AAC/E,EAAAw8C,IAAaX,GAAU,cAAc,IAAIW,CAAU,KAAKA;AACxD,QAAMC,IAAa,KAAK,MAAM/mC,EAAG,CAAC,GAAGA,EAAG,CAAC,CAAC,GACpCgnC,IAAaD,IAAarmD,EAAApE,IAAA6pD,IAAUL,IAAAI,IAAV,KAAA5pD,GAAqBwqD,GAAYx8C,GAAO/B,EAAA,MAAKg8C;AAC7E,MAAIr5B,GAAMD;AACV,EAAIkB,MAAU,KACZjB,IAAOlL,EAAG,CAAC,GACXiL,IAAMjL,EAAG,CAAC,IAAIgnC,MAEd97B,IAAOlL,EAAG,CAAC,IAAIgnC,IAAa,KAAK,IAAI76B,CAAK,GAC1ClB,IAAMjL,EAAG,CAAC,IAAIgnC,IAAa,KAAK,IAAI76B,CAAK;AAE3C,QAAM86B,IAAWL,EAAQ;AACzB,EAAAK,EAAS,OAAO,IAAI,MAAM/7B,IAAO3iB,EAAA,MAAKm8C,KAAY,QAAQ,CAAC,CAAC,KAC5DuC,EAAS,MAAM,IAAI,MAAMh8B,IAAM1iB,EAAA,MAAKk8C,KAAa,QAAQ,CAAC,CAAC,KAC3DwC,EAAS,YAAY,iBAAiB,GAAGF,EAAW,QAAQ,CAAC,CAAC,IAAI,GAClEE,EAAS,aAAaH,GACtBD,EAAkB,WAAWE,GAC7BH,EAAQ,aAAa,QAAQ,cAAc,GAC3CA,EAAQ,cAAcD,EAAK,KAC3BC,EAAQ,MAAMD,EAAK,KACfp+C,EAAA,MAAK+7C,QACPsC,EAAQ,QAAQ,WAAWt8C,EAAM,8BAA8Bq8C,EAAK,WAElEx6B,MAAU,MACZ06B,EAAkB,QAAQ16B,KAAS,MAAM,KAAK;AAEhD,MAAI+6B,IAAkB;AACtB,MAAIP,EAAK,IAAI,SAAS;AACpB,IAAAO,IAAkB;AAAA,WACTP,EAAK,QAAQ,OAAOA,EAAK,UAAU,CAAC,MAAMA,EAAK,UAAU,CAAC,GAAG;AACtE,UAAMQ,IAAY,KAAK,IAAIR,EAAK,UAAU,CAAC,CAAC,GAC1CS,IAAY,KAAK,IAAIT,EAAK,UAAU,CAAC,CAAC;AACxC,IAAIQ,MAAcC,KAAa,KAAK,IAAID,GAAWC,CAAS,IAAI,KAAK,IAAID,GAAWC,CAAS,IAAI,QAC/FF,IAAkB;AAAA,EAEtB;AAWA,MAVIA,MACFL,EAAkB,cAAcv8C,EAAM,WAAWq8C,EAAK,SAASA,EAAK,QAEtEp+C,EAAA,MAAK48C,IAAmB,IAAIyB,GAASC,CAAiB,GACtDt+C,EAAA,MAAKi8C,IAAkB,MAAMoC,GAC7Br+C,EAAA,MAAKi8C,IAAkB,aAAaqC,GACpCnmD,EAAA,MAAKglD,IAAAG,IAAL,WAAat9C,EAAA,MAAKi8C,MACdqC,EAAkB,WACpBt+C,EAAA,MAAKsP,IAAW,OAAO+uC,CAAO,GAE5BC,EAAkB,QAAQ;AAC5B,UAAMQ,IAAK,SAAS,cAAc,IAAI;AACtC,IAAAA,EAAG,aAAa,QAAQ,cAAc,GACtC9+C,EAAA,MAAKsP,IAAW,OAAOwvC,CAAE;AAAA,EAC3B;AACF,GACAxB,KAAO,SAAC3mC,GAAQ;AA36blB,MAAA5iB;AA46bI,QAAM;AAAA,IACJ,KAAA0N;AAAA,IACA,YAAA6mC;AAAA,IACA,KAAAjnC;AAAA,EACN,IAAQsV,GACE;AAAA,IACJ,OAAA5U;AAAA,EACN,IAAQN;AACJ,MAAI6mC,EAAW,gBAAgB,KAAKA,EAAW,SAAS;AACtD,UAAM;AAAA,MACJ,YAAAiW;AAAA,IACR,IAAUx8C,GACE;AAAA,MACJ,aAAAugC;AAAA,MACA,UAAA8L;AAAA,IACR,IAAU9F;AACJ,IAAAnwC,EAAApE,IAAA6pD,IAAUL,IAAAE,IAAV,KAAA1pD,GAAyBsN,GAAK+sC,IAAWpuC,EAAA,MAAKu8C,KAAQgC;AACtD,UAAM;AAAA,MACJ,OAAAzgD;AAAA,IACR,IAAUuD,EAAI,YAAYI,EAAI,WAAW;AACnC,IAAI3D,IAAQ,KACViE,EAAM,YAAY,aAAaugC,IAActiC,EAAA,MAAKu8C,MAASz+C,CAAK;AAAA,EAEpE;AACA,EAAIwqC,EAAW,UAAU,KACvBvmC,EAAM,YAAY,YAAY,GAAGumC,EAAW,KAAK,KAAK;AAE1D,GAvQFiV,KAAA,eAoRSC,KAAO,SAACuB,IAAO,MAAM;AAC1B,MAAI19C,IAAMrB,EAAA,MAAK+8C,IAAgB,IAAIgC,UAAS,GAAE;AAC9C,MAAI,CAAC19C,GAAK;AACR,UAAMgJ,IAAS,SAAS,cAAc,QAAQ;AAC9C,IAAAA,EAAO,YAAY,uBACnBA,EAAO,OAAO00C,GACd,SAAS,KAAK,OAAO10C,CAAM,GAC3BhJ,IAAMgJ,EAAO,WAAW,MAAM;AAAA,MAC5B,OAAO;AAAA,MACP,oBAAoB;AAAA,IAC5B,CAAO,GACDrK,EAAA,MAAK+8C,IAAgB,IAAIgC,GAAM19C,CAAG,GAClCrB,EAAA,MAAKg9C,IAAgB,IAAI37C,GAAK;AAAA,MAC5B,MAAM;AAAA,MACN,QAAQ;AAAA,IAChB,CAAO;AAAA,EACH;AACA,SAAOA;AACT,GACOo8C,KAAc,SAACp8C,GAAK6I,GAAM80C,GAAQ;AACvC,QAAMC,IAASj/C,EAAA,MAAKg9C,IAAgB,IAAI37C,CAAG;AAC3C,EAAI6I,MAAS+0C,EAAO,QAAQD,MAAWC,EAAO,WAG9C59C,EAAI,OAAO,GAAG6I,CAAI,MAAM80C,CAAM,IAC9BC,EAAO,OAAO/0C,GACd+0C,EAAO,SAASD;AAClB,GACOtB,KAA0B,WAAG;AAClC,MAAI19C,EAAA,MAAKi9C,QAAiB;AACxB;AAEF,QAAMx7C,IAAM,SAAS,cAAc,KAAK;AACxC,EAAAA,EAAI,MAAM,UAAU,GACpBA,EAAI,MAAM,aAAa,GACvBA,EAAI,MAAM,WAAW,OACrBA,EAAI,MAAM,WAAW,YACrBA,EAAI,cAAc,KAClB,SAAS,KAAK,OAAOA,CAAG,GACxBxB,EAAA,MAAKg9C,IAAex7C,EAAI,sBAAqB,EAAG,SAChDA,EAAI,OAAM;AACZ,GACOk8C,KAAU,SAACY,GAAYx8C,GAAOg9C,GAAM;AACzC,QAAMG,IAAel/C,EAAA,MAAK88C,IAAa,IAAIyB,CAAU;AACrD,MAAIW;AACF,WAAOA;AAET,QAAM79C,IAAMlJ,EAAA,MAAKolD,IAAAC,IAAL,WAAauB;AACzB,EAAA19C,EAAI,OAAO,QAAQA,EAAI,OAAO,SAASu6C,IACvCzjD,EAAA,MAAKolD,IAAAE,IAAL,WAAoBp8C,GAAKu6C,IAAmB2C;AAC5C,QAAMY,IAAU99C,EAAI,YAAY,EAAE,GAC5B+9C,IAASD,EAAQ,uBACjBE,IAAU,KAAK,IAAIF,EAAQ,sBAAsB;AACvD,EAAA99C,EAAI,OAAO,QAAQA,EAAI,OAAO,SAAS;AACvC,MAAIi+C,IAAQ;AACZ,SAAIF,IACFE,IAAQF,KAAUA,IAASC,MAEvBzrD,GAAiB,SAAS,aAC5BhD,EAAK,mHAAwH,GAE3HmR,EAAM,SACRu9C,IAAQv9C,EAAM,SACLA,EAAM,YACfu9C,IAAQ,IAAIv9C,EAAM,WAGtB/B,EAAA,MAAK88C,IAAa,IAAIyB,GAAYe,CAAK,GAChCA;AACT,GAzVF5mD,EAAMklD,IAANL,KAmBE7kD,EAnBIklD,IAmBGd,IAAe,oBAAI,IAAG,IAC7BpkD,EApBIklD,IAoBGb,IAAkB,oBAAI,IAAG,IAChCrkD,EArBIklD,IAqBGZ,IAAkB,oBAAI,QAAO,IACpCtkD,EAtBIklD,IAsBGX,IAAe,OACtBvkD,EAvBIklD,IAuBGV,IAAqB,oBAAI,IAAG;AAvBrC,IAAMqC,KAAN3B;AAsXA,MAAM4B,KAA8B;AACpC,SAASC,GAAYh2B,IAAM,IAAI;AAC7B,EAAI,OAAOA,KAAQ,YAAYA,aAAe,MAC5CA,IAAM;AAAA,IACJ,KAAKA;AAAA,EACX,KACaA,aAAe,eAAe,YAAY,OAAOA,CAAG,OAC7DA,IAAM;AAAA,IACJ,MAAMA;AAAA,EACZ;AAEE,QAAMi2B,IAAO,IAAIC,GAAsB,GACjC;AAAA,IACJ,OAAAvpB;AAAA,EACJ,IAAMspB,GACEzuD,IAAMw4B,EAAI,MAAM0H,GAAW1H,EAAI,GAAG,IAAI,MACtCnkB,IAAOmkB,EAAI,OAAO2H,GAAY3H,EAAI,IAAI,IAAI,MAC1C6uB,IAAc7uB,EAAI,eAAe,MACjCwvB,IAAkBxvB,EAAI,oBAAoB,IAC1Cm2B,IAAWn2B,EAAI,YAAY,MAC3Bo2B,IAAiBp2B,EAAI,iBAAiBq2B,KAAwBr2B,EAAI,QAAQ,MAC1EkvB,IAAiB,OAAO,UAAUlvB,EAAI,cAAc,KAAKA,EAAI,iBAAiB,IAAIA,EAAI,iBAAiB,KAAK;AAClH,MAAIs2B,IAASt2B,EAAI,kBAAkBu2B,KAAYv2B,EAAI,SAAS;AAC5D,QAAMn5B,IAAYm5B,EAAI,WAChBw2B,IAAa,OAAOx2B,EAAI,cAAe,YAAY,CAACprB,GAAaorB,EAAI,UAAU,IAAIA,EAAI,aAAa,MACpGy2B,IAAU7uB,GAAkB5H,EAAI,OAAO,GACvC02B,IAAa12B,EAAI,eAAe,IAChC22B,IAAoB32B,EAAI,sBAAsBr6B,KAAW0pC,KAAwBvE,KACjF8rB,IAAShvB,GAAkB5H,EAAI,MAAM,GACrC62B,IAAsBjvB,GAAkB5H,EAAI,mBAAmB,GAC/D82B,IAA0B92B,EAAI,4BAA4Br6B,KAAW2pC,KAA8BP,KACnGgoB,IAAUnvB,GAAkB5H,EAAI,OAAO,GACvCg3B,IAAch3B,EAAI,gBAAgBr6B,KAAW4pC,KAAkBN,KAC/DgoB,IAAej3B,EAAI,iBAAiB,IACpCk3B,IAAe,OAAO,UAAUl3B,EAAI,YAAY,KAAKA,EAAI,eAAe,KAAKA,EAAI,eAAe,IAChG91B,IAAkB81B,EAAI,oBAAoB,IAC1Cm3B,IAA6B,OAAOn3B,EAAI,8BAA+B,YAAYA,EAAI,6BAA6B,CAACr6B,IACrHyxD,IAA0B,OAAOp3B,EAAI,2BAA4B,YAAYA,EAAI,0BAA0B,CAACr6B,OAAawE,GAAiB,SAAS,aAAa,CAAC,WAAW,SAC5KktD,IAAuB,OAAO,UAAUr3B,EAAI,oBAAoB,IAAIA,EAAI,uBAAuB,IAC/FH,IAAkB,OAAOG,EAAI,mBAAoB,YAAYA,EAAI,kBAAkBr6B,IACnF2xD,IAAsBt3B,EAAI,wBAAwB,IAClDu3B,IAAYv3B,EAAI,cAAc,IAC9BR,IAAgBQ,EAAI,iBAAiB,WAAW,UAChDmsB,IAAensB,EAAI,iBAAiB,IACpCosB,IAAgBpsB,EAAI,kBAAkB,IACtCw3B,IAAmBx3B,EAAI,qBAAqB,IAC5Cy3B,KAASz3B,EAAI,WAAW,IACxB03B,KAAgB13B,EAAI,kBAAkBr6B,KAAWypC,KAAoB1E,KACrEitB,KAAgB33B,EAAI,kBAAkBr6B,KAAWwpC,KAAoBzC,KACrElC,KAAYxK,EAAI,cAAc,IAC9B43B,KAAU53B,EAAI,YAAY,IAC1Bz2B,KAAS6sD,IAAiBA,EAAe,SAASp2B,EAAI,UAAU,KAChE63B,KAAiB,OAAO73B,EAAI,kBAAmB,YAAYA,EAAI,iBAAiB,CAACr6B,MAAY,CAACk6B,GAC9Fi4B,KAAiB,OAAO93B,EAAI,kBAAmB,YAAYA,EAAI,iBAAiB,CAAC,EAAE22B,MAAsB7rB,MAAwBgsB,MAA4B/nB,MAA8BioB,MAAgB/nB,MAAkBwnB,KAAWI,KAAuBE,KAAW9jD,GAAgBwjD,GAAS,SAAS,OAAO,KAAKxjD,GAAgB4jD,GAAqB,SAAS,OAAO,KAAK5jD,GAAgB8jD,GAAS,SAAS,OAAO,IAC3Zt3B,KAAe;AACrB,EAAA34B,GAAkBD,CAAS;AAC3B,QAAMkxD,KAAmB;AAAA,IACvB,eAAe,IAAIL,GAAc;AAAA,MAC/B,eAAAl4B;AAAA,MACA,WAAAgL;AAAA,IACN,CAAK;AAAA,IACD,eAAe,IAAImtB,GAAc;AAAA,MAC/B,OAAAhrB;AAAA,MACA,eAAAnN;AAAA,IACN,CAAK;AAAA,IACD,mBAAmBs4B,KAAiB,OAAO,IAAInB,EAAkB;AAAA,MAC/D,SAASF;AAAA,MACT,cAAcC;AAAA,IACpB,CAAK;AAAA,IACD,yBAAyBoB,KAAiB,OAAO,IAAIhB,EAAwB;AAAA,MAC3E,SAASD;AAAA,IACf,CAAK;AAAA,IACD,aAAaiB,KAAiB,OAAO,IAAId,EAAY;AAAA,MACnD,SAASD;AAAA,IACf,CAAK;AAAA,EACL;AACE,EAAKT,MACHA,IAASC,GAAU,OAAO;AAAA,IACxB,WAAA1vD;AAAA,IACA,MAAMqjD,GAAoB;AAAA,EAChC,CAAK,GACD+L,EAAK,UAAUK;AAEjB,QAAM0B,KAAY;AAAA,IAChB,OAAArrB;AAAA,IACA,YAAY;AAAA,IACZ,MAAA9wB;AAAA,IACA,UAAAs6C;AAAA,IACA,kBAAAqB;AAAA,IACA,gBAAAtI;AAAA,IACA,QAAA3lD;AAAA,IACA,YAAAitD;AAAA,IACA,WAAAe;AAAA,IACA,kBAAkB;AAAA,MAChB,cAAAL;AAAA,MACA,iBAAAr3B;AAAA,MACA,cAAAo3B;AAAA,MACA,iBAAA/sD;AAAA,MACA,4BAAAitD;AAAA,MACA,yBAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,gBAAAO;AAAA,MACA,SAAAD;AAAA,MACA,gBAAAE;AAAA,MACA,SAAArB;AAAA,MACA,QAAAG;AAAA,MACA,qBAAAC;AAAA,MACA,SAAAE;AAAA,IACN;AAAA,EACA,GACQkB,KAAkB;AAAA,IACtB,eAAAz4B;AAAA,IACA,QAAAi4B;AAAA,IACA,cAAAh4B;AAAA,IACA,eAAe;AAAA,MACb,kBAAA+3B;AAAA,MACA,WAAAD;AAAA,IACN;AAAA,EACA;AACE,SAAAjB,EAAO,QAAQ,KAAK,WAAY;AAC9B,QAAIL,EAAK;AACP,YAAM,IAAI,MAAM,iBAAiB;AAEnC,QAAIK,EAAO;AACT,YAAM,IAAI,MAAM,sBAAsB;AAExC,UAAM4B,KAAkB5B,EAAO,eAAe,gBAAgB,iBAAiB0B,IAAWn8C,IAAO,CAACA,EAAK,MAAM,IAAI,IAAI;AACrH,QAAIs8C;AACJ,QAAI/B;AACF,MAAA+B,KAAgB,IAAIlM,GAAuBmK,GAAgB;AAAA,QACzD,cAAAjK;AAAA,QACA,eAAAC;AAAA,MACR,CAAO;AAAA,aACQ,CAACvwC,GAAM;AAChB,UAAI,CAACrU;AACH,cAAM,IAAI,MAAM,4CAA4C;AAE9D,YAAM4wD,KAAgBnlD,GAAgBzL,CAAG,IAAImoD,KAAiBhqD,KAAW2rD,KAAgBV;AACzF,MAAAuH,KAAgB,IAAIC,GAAc;AAAA,QAChC,KAAA5wD;AAAA,QACA,QAAA+B;AAAA,QACA,aAAAslD;AAAA,QACA,iBAAAW;AAAA,QACA,gBAAAN;AAAA,QACA,cAAA/C;AAAA,QACA,eAAAC;AAAA,MACR,CAAO;AAAA,IACH;AACA,WAAO8L,GAAgB,KAAK,CAAAG,OAAY;AACtC,UAAIpC,EAAK;AACP,cAAM,IAAI,MAAM,iBAAiB;AAEnC,UAAIK,EAAO;AACT,cAAM,IAAI,MAAM,sBAAsB;AAExC,YAAMgC,KAAiB,IAAItvB,GAAe2D,GAAO0rB,IAAU/B,EAAO,IAAI,GAChEiC,KAAY,IAAIC,GAAgBF,IAAgBrC,GAAMkC,IAAeF,IAAiBF,IAAkBvtB,EAAS;AACvH,MAAAyrB,EAAK,aAAasC,IAClBD,GAAe,KAAK,SAAS,IAAI;AAAA,IACnC,CAAC;AAAA,EACH,CAAC,EAAE,MAAMrC,EAAK,YAAY,MAAM,GACzBA;AACT;AAztcA,IAAAvqB;AA0tcA,MAAM+sB,KAAN,MAAMA,GAAuB;AAAA,EAA7B;AAEE,IAAA5lD,EAAA,qBAAc,QAAQ,cAAa;AACnC,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,iBAAU;AACV,IAAAA,EAAA,eAAQ,IAAIiN,GAAA24C,IAAuB/sB,IAAvB,GAA+B;AAC3C,IAAA74B,EAAA,mBAAY;AACZ,IAAAA,EAAA,oBAAa;AACb,IAAAA,EAAA,oBAAa;AAAA;AAAA,EACb,IAAI,UAAU;AACZ,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EACA,MAAM,UAAU;AAtuclB,QAAAvI,GAAAC,GAAAse,GAAAC;AAuucI,SAAK,YAAY;AACjB,QAAI;AACF,OAAIxe,IAAA,KAAK,YAAL,QAAAA,EAAc,SAChB,KAAK,QAAQ,kBAAkB,KAEjC,QAAMC,IAAA,KAAK,eAAL,gBAAAA,EAAiB;AAAA,IACzB,SAASohB,GAAI;AACX,aAAI9C,IAAA,KAAK,YAAL,QAAAA,EAAc,QAChB,OAAO,KAAK,QAAQ,iBAEhB8C;AAAA,IACR;AACA,SAAK,aAAa,OAClB7C,IAAA,KAAK,YAAL,QAAAA,EAAc,WACd,KAAK,UAAU;AAAA,EACjB;AAAA,EACA,MAAM,UAAU;AACd,WAAO,KAAK,WAAW,QAAO;AAAA,EAChC;AACF;AA/BS4iB,KAAA,eAAPz8B,EADIwpD,IACG/sB,IAAS;AADlB,IAAMwqB,KAANuC;AA1tcA,IAAArG,IAAAsG,IAAAC,IAAAC,IAAAC;AA2vcA,MAAMxC,GAAsB;AAAA,EAM1B,YAAY9sD,GAAQ8iD,GAAaC,IAAkB,IAAOC,IAA6B,MAAM;AAL7F,IAAAt9C,EAAA,MAAAmjD,IAAc,QAAQ,cAAa;AACnC,IAAAnjD,EAAA,MAAAypD,IAA4B,CAAA;AAC5B,IAAAzpD,EAAA,MAAA0pD,IAA4B,CAAA;AAC5B,IAAA1pD,EAAA,MAAA2pD,IAAqB,CAAA;AACrB,IAAA3pD,EAAA,MAAA4pD,IAAkB,CAAA;AAEhB,SAAK,SAAStvD,GACd,KAAK,cAAc8iD,GACnB,KAAK,kBAAkBC,GACvB,KAAK,6BAA6BC;AAAA,EACpC;AAAA,EACA,iBAAiBpkB,GAAU;AACzB,IAAA5xB,EAAA,MAAKsiD,IAAgB,KAAK1wB,CAAQ;AAAA,EACpC;AAAA,EACA,oBAAoBA,GAAU;AAC5B,IAAA5xB,EAAA,MAAKqiD,IAAmB,KAAKzwB,CAAQ;AAAA,EACvC;AAAA,EACA,2BAA2BA,GAAU;AACnC,IAAA5xB,EAAA,MAAKoiD,IAA0B,KAAKxwB,CAAQ;AAAA,EAC9C;AAAA,EACA,2BAA2BA,GAAU;AACnC,IAAA5xB,EAAA,MAAKmiD,IAA0B,KAAKvwB,CAAQ;AAAA,EAC9C;AAAA,EACA,YAAYqkB,GAAO5iD,GAAO;AACxB,eAAWu+B,KAAY5xB,EAAA,MAAKsiD;AAC1B,MAAA1wB,EAASqkB,GAAO5iD,CAAK;AAAA,EAEzB;AAAA,EACA,eAAe6iD,GAAQC,GAAO;AAC5B,IAAAn2C,EAAA,MAAK67C,IAAY,QAAQ,KAAK,MAAM;AAClC,iBAAWjqB,KAAY5xB,EAAA,MAAKqiD;AAC1B,QAAAzwB,EAASskB,GAAQC,CAAK;AAAA,IAE1B,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB9iD,GAAO;AAC3B,IAAA2M,EAAA,MAAK67C,IAAY,QAAQ,KAAK,MAAM;AAClC,iBAAWjqB,KAAY5xB,EAAA,MAAKoiD;AAC1B,QAAAxwB,EAASv+B,CAAK;AAAA,IAElB,CAAC;AAAA,EACH;AAAA,EACA,wBAAwB;AACtB,IAAA2M,EAAA,MAAK67C,IAAY,QAAQ,KAAK,MAAM;AAClC,iBAAWjqB,KAAY5xB,EAAA,MAAKmiD;AAC1B,QAAAvwB,EAAQ;AAAA,IAEZ,CAAC;AAAA,EACH;AAAA,EACA,iBAAiB;AACf,IAAA5xB,EAAA,MAAK67C,IAAY,QAAO;AAAA,EAC1B;AAAA,EACA,iBAAiB5F,GAAOz2C,GAAK;AAC3B,IAAA3O,GAAY,wDAAwD;AAAA,EACtE;AAAA,EACA,QAAQ;AAAA,EAAC;AACX;AAxDEgrD,KAAA,eACAsG,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA;AAqDF,MAAMC,GAAiB;AAAA,EACrB,YAAYC,GAASR,GAAW;AAC9B,SAAK,WAAWQ,GAChB,KAAK,aAAaR;AAAA,EACpB;AAAA,EACA,IAAI,oBAAoB;AACtB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EACA,IAAI,YAAY;AACd,WAAOpwD,EAAO,MAAM,aAAa,CAAC,CAAC,KAAK,WAAW,WAAW;AAAA,EAChE;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,QAAQ+hB,GAAY;AAClB,WAAO,KAAK,WAAW,QAAQA,CAAU;AAAA,EAC3C;AAAA,EACA,aAAa8uC,GAAK;AAChB,WAAO,KAAK,WAAW,aAAaA,CAAG;AAAA,EACzC;AAAA,EACA,kBAAkB;AAChB,WAAO,KAAK,WAAW,gBAAe;AAAA,EACxC;AAAA,EACA,eAAe1nD,GAAI;AACjB,WAAO,KAAK,WAAW,eAAeA,CAAE;AAAA,EAC1C;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,WAAW,cAAa;AAAA,EACtC;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,WAAW,cAAa;AAAA,EACtC;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,WAAW,YAAW;AAAA,EACpC;AAAA,EACA,uBAAuB;AACrB,WAAO,KAAK,WAAW,qBAAoB;AAAA,EAC7C;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,WAAW,cAAa;AAAA,EACtC;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,WAAW,eAAc;AAAA,EACvC;AAAA,EACA,qBAAqBya,GAAOktC,GAAmB;AAC7C,WAAO,KAAK,WAAW,qBAAqBltC,GAAOktC,CAAiB;AAAA,EACtE;AAAA,EACA,eAAe;AACb,WAAO,KAAK,WAAW,gBAAe;AAAA,EACxC;AAAA,EACA,aAAa;AACX,WAAO,KAAK,WAAW,WAAU;AAAA,EACnC;AAAA,EACA,yBAAyB;AAAA,IACvB,QAAAxnD,IAAS;AAAA,EACb,IAAM,IAAI;AACN,UAAM;AAAA,MACJ,iBAAAo5C;AAAA,IACN,IAAQ,KAAK,WAAW,mBAAmBp5C,CAAM;AAC7C,WAAO,KAAK,WAAW,yBAAyBo5C,CAAe;AAAA,EACjE;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,WAAW,eAAc;AAAA,EACvC;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,WAAW,YAAW;AAAA,EACpC;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,WAAW,YAAW;AAAA,EACpC;AAAA,EACA,UAAU;AACR,WAAO,KAAK,WAAW,QAAO;AAAA,EAChC;AAAA,EACA,eAAe;AACb,WAAO,KAAK,WAAW,aAAY;AAAA,EACrC;AAAA,EACA,aAAaqO,GAAW;AACtB,WAAO,KAAK,WAAW,aAAaA,CAAS;AAAA,EAC/C;AAAA,EACA,kBAAkB;AAChB,WAAO,KAAK,WAAW,uBAAuB;AAAA,EAChD;AAAA,EACA,QAAQC,IAAkB,IAAO;AAC/B,WAAO,KAAK,WAAW,aAAaA,KAAmB,KAAK,SAAS;AAAA,EACvE;AAAA,EACA,UAAU;AACR,WAAO,KAAK,YAAY,QAAO;AAAA,EACjC;AAAA,EACA,iBAAiBH,GAAK;AACpB,WAAO,KAAK,WAAW,iBAAiBA,CAAG;AAAA,EAC7C;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,kBAAkB;AAChB,WAAO,KAAK,WAAW,gBAAe;AAAA,EACxC;AAAA,EACA,eAAe;AACb,WAAO,KAAK,WAAW,aAAY;AAAA,EACrC;AAAA,EACA,yBAAyB;AACvB,WAAO,KAAK,WAAW,uBAAsB;AAAA,EAC/C;AACF;AA36cA,IAAAI,IAAAC,IAAAC;AA46cA,MAAMC,GAAa;AAAA,EAEjB,YAAYzvC,GAAW0vC,GAAUjB,GAAWd,IAAS,IAAO;AAF9D,IAAAxoD,EAAA,MAAAoqD;AACE,IAAApqD,EAAA,MAAAmqD,IAAkB;AAEhB,SAAK,aAAatvC,GAClB,KAAK,YAAY0vC,GACjB,KAAK,aAAajB,GAClB,KAAK,SAASd,IAAS,IAAI9hD,GAAS,IAAK,MACzC,KAAK,UAAU8hD,GACf,KAAK,aAAac,EAAU,YAC5B,KAAK,OAAO,IAAItG,GAAU,GAC1B,KAAK,gBAAgB,oBAAI,IAAG,GAC5B,KAAK,YAAY,IACjB,KAAK,iBAAiB;AAAA,EACxB;AAAA,EACA,IAAI,aAAa;AACf,WAAO,KAAK,aAAa;AAAA,EAC3B;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,MAAM;AACR,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,WAAW;AACb,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EACA,IAAI,OAAO;AACT,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EACA,YAAY;AAAA,IACV,OAAAz+C;AAAA,IACA,UAAAC,IAAW,KAAK;AAAA,IAChB,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,EACf,IAAM,IAAI;AACN,WAAO,IAAIP,GAAa;AAAA,MACtB,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,OAAAG;AAAA,MACA,UAAAC;AAAA,MACA,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,eAAe;AAAA,IACb,QAAAnC,IAAS;AAAA,EACb,IAAM,IAAI;AACN,UAAM;AAAA,MACJ,iBAAAo5C;AAAA,IACN,IAAQ,KAAK,WAAW,mBAAmBp5C,CAAM;AAC7C,WAAO,KAAK,WAAW,eAAe,KAAK,YAAYo5C,CAAe;AAAA,EACxE;AAAA,EACA,eAAe;AACb,WAAO,KAAK,WAAW,iBAAiB,KAAK,UAAU;AAAA,EACzD;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA,EACA,IAAI,YAAY;AACd,WAAO1iD,EAAO,MAAM,aAAa,CAAC,CAAC,KAAK,WAAW,WAAW;AAAA,EAChE;AAAA,EACA,MAAM,SAAS;AA3+cjB,QAAAmC;AA4+cI,aAAOA,IAAA,KAAK,WAAW,gBAAhB,gBAAAA,EAA6B,SAAS,KAAK,gBAAe;AAAA,EACnE;AAAA,EACA,OAAO;AAAA,IACL,eAAAmvD;AAAA,IACA,QAAA74C,IAAS64C,EAAc;AAAA,IACvB,UAAAxhD;AAAA,IACA,QAAAxG,IAAS;AAAA,IACT,gBAAAioD,IAAiB3zD,GAAe;AAAA,IAChC,WAAAkF,IAAY;AAAA,IACZ,YAAAg7B,IAAa;AAAA,IACb,8BAAA0zB,IAA+B;AAAA,IAC/B,qBAAA1Z,IAAsB;AAAA,IACtB,YAAAn4B,IAAa;AAAA,IACb,wBAAA8xC,IAAyB;AAAA,IACzB,WAAA9tC,IAAY;AAAA,IACZ,kBAAA+tC,IAAmB;AAAA,IACnB,kBAAApZ,IAAmB;AAAA,EACvB,GAAK;AA7/cL,QAAAn2C,GAAAC,GAAAse;AA8/cI,KAAAve,IAAA,KAAK,WAAL,QAAAA,EAAa,KAAK;AAClB,UAAMwvD,IAAa,KAAK,WAAW,mBAAmBroD,GAAQioD,GAAgBE,GAAwB9tC,CAAS,GACzG;AAAA,MACJ,iBAAA++B;AAAA,MACA,UAAA9I;AAAA,IACN,IAAQ+X;AACJ,IAAAtjD,EAAA,MAAK4iD,IAAkB,KACvBO,UAAiC,KAAK,WAAW,yBAAyB9O,CAAe;AACzF,QAAIkP,IAAc,KAAK,cAAc,IAAIhY,CAAQ;AACjD,IAAKgY,MACHA,IAAc,uBAAO,OAAO,IAAI,GAChC,KAAK,cAAc,IAAIhY,GAAUgY,CAAW,IAE1CA,EAAY,8BACd,aAAaA,EAAY,yBAAyB,GAClDA,EAAY,4BAA4B;AAE1C,UAAMC,IAAc,CAAC,EAAEnP,IAAkB/kD,GAAoB;AAC7D,IAAKi0D,EAAY,2BACfA,EAAY,yBAAyB,QAAQ,cAAa,GAC1DA,EAAY,eAAe;AAAA,MACzB,SAAS,CAAA;AAAA,MACT,WAAW,CAAA;AAAA,MACX,WAAW;AAAA,MACX,gBAAgB;AAAA,IACxB,IACMxvD,IAAA,KAAK,WAAL,QAAAA,EAAa,KAAK,iBAClB,KAAK,kBAAkBuvD,CAAU;AAEnC,UAAMG,IAAoB,GAAQ,KAAK,aAAWpxC,IAAA,WAAW,mBAAX,QAAAA,EAA2B,WACvEqxC,IAAyB,CAAC,KAAK,mBAAmBL,KAAoBI,IACtEE,IAAW,CAAAxI,MAAS;AA7hd9B,UAAArnD,GAAAC;AA+hdM,UADAwvD,EAAY,YAAY,OAAOK,CAAkB,GAC7CF,GAAwB;AAC1B,cAAMG,KAAiB/vD,IAAA8vD,EAAmB,QAAnB,gBAAA9vD,EAAwB,kBAAkB;AACjE,QAAI+vD,MACED,EAAmB,WACrBA,EAAmB,QAAQ,kBAAkBC,GAAgBD,EAAmB,IAAI,kBAAkB,mBAAmB,GAEvHP,MACF,KAAK,iBAAiBQ;AAAA,MAG5B;AACA,MAAIL,KACFxjD,EAAA,MAAK4iD,IAAkB,KAEzB1qD,EAAA,MAAK2qD,IAAAC,IAAL,YACI3H,KACFyI,EAAmB,WAAW,OAAOzI,CAAK,GAC1C,KAAK,mBAAmB;AAAA,QACtB,aAAAoI;AAAA,QACA,QAAQpI,aAAiB,QAAQA,IAAQ,IAAI,MAAMA,CAAK;AAAA,MAClE,CAAS,KAEDyI,EAAmB,WAAW,QAAO,GAEnC,KAAK,WACP,KAAK,OAAO,QAAQ,WAAW,GAC/B,KAAK,OAAO,QAAQ,SAAS,IACzB7vD,IAAA,WAAW,UAAX,QAAAA,EAAkB,WACpB,WAAW,MAAM,IAAI,KAAK,YAAY,KAAK,MAAM;AAAA,IAGvD,GACM6vD,IAAqB,IAAIE,GAAmB;AAAA,MAChD,UAAUH;AAAA,MACV,QAAQ;AAAA,QACN,QAAAv5C;AAAA,QACA,eAAA64C;AAAA,QACA,mBAAmBS,IAAyB,IAAI9oB,GAAwBxwB,GAAQm5C,EAAY,aAAa,QAAQE,CAAiB,IAAI;AAAA,QACtI,UAAAhiD;AAAA,QACA,WAAAhN;AAAA,QACA,YAAAg7B;AAAA,MACR;AAAA,MACM,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,qBAAAga;AAAA,MACA,cAAc8Z,EAAY;AAAA,MAC1B,WAAW,KAAK;AAAA,MAChB,eAAe,KAAK,WAAW;AAAA,MAC/B,eAAe,KAAK,WAAW;AAAA,MAC/B,0BAA0B,CAACC;AAAA,MAC3B,QAAQ,KAAK;AAAA,MACb,YAAAlyC;AAAA,MACA,WAAW,KAAK,WAAW;AAAA,MAC3B,kBAAA24B;AAAA,IACN,CAAK;AACD,KAACsZ,EAAY,gBAAZA,EAAY,cAAgB,oBAAI,IAAG,IAAI,IAAIK,CAAkB;AAC9D,UAAMG,IAAaH,EAAmB;AACtC,mBAAQ,IAAI,CAACL,EAAY,uBAAuB,SAASJ,CAA4B,CAAC,EAAE,KAAK,CAAC,CAACxZ,GAAcJ,CAAqB,MAAM;AAxld5I,UAAAz1C;AAyldM,UAAI,KAAK,WAAW;AAClB,QAAA6vD,EAAQ;AACR;AAAA,MACF;AAEA,WADA7vD,IAAA,KAAK,WAAL,QAAAA,EAAa,KAAK,cACd,EAAEy1C,EAAsB,kBAAkB8K;AAC5C,cAAM,IAAI,MAAM,qIAA0I;AAE5J,MAAAuP,EAAmB,mBAAmB;AAAA,QACpC,cAAAja;AAAA,QACA,uBAAAJ;AAAA,MACR,CAAO,GACDqa,EAAmB,oBAAmB;AAAA,IACxC,CAAC,EAAE,MAAMD,CAAQ,GACVI;AAAA,EACT;AAAA,EACA,gBAAgB;AAAA,IACd,QAAA9oD,IAAS;AAAA,IACT,gBAAAioD,IAAiB3zD,GAAe;AAAA,IAChC,wBAAA6zD,IAAyB;AAAA,IACzB,WAAA9tC,IAAY;AAAA,EAChB,IAAM,IAAI;AA9mdV,QAAAxhB;AA+mdI,aAASkwD,IAAsB;AAC7B,MAAIT,EAAY,aAAa,cAC3BA,EAAY,qBAAqB,QAAQA,EAAY,YAAY,GACjEA,EAAY,YAAY,OAAOU,CAAU;AAAA,IAE7C;AACA,UAAMX,IAAa,KAAK,WAAW,mBAAmBroD,GAAQioD,GAAgBE,GAAwB9tC,GAAW,EAAI;AACrH,QAAIiuC,IAAc,KAAK,cAAc,IAAID,EAAW,QAAQ;AAC5D,IAAKC,MACHA,IAAc,uBAAO,OAAO,IAAI,GAChC,KAAK,cAAc,IAAID,EAAW,UAAUC,CAAW;AAEzD,QAAIU;AACJ,WAAKV,EAAY,yBACfU,IAAa,uBAAO,OAAO,IAAI,GAC/BA,EAAW,sBAAsBD,GACjCT,EAAY,uBAAuB,QAAQ,cAAa,IACvDA,EAAY,gBAAZA,EAAY,cAAgB,oBAAI,IAAG,IAAI,IAAIU,CAAU,GACtDV,EAAY,eAAe;AAAA,MACzB,SAAS,CAAA;AAAA,MACT,WAAW,CAAA;AAAA,MACX,WAAW;AAAA,MACX,gBAAgB;AAAA,IACxB,IACMzvD,IAAA,KAAK,WAAL,QAAAA,EAAa,KAAK,iBAClB,KAAK,kBAAkBwvD,CAAU,IAE5BC,EAAY,qBAAqB;AAAA,EAC1C;AAAA,EACA,kBAAkB;AAAA,IAChB,sBAAAW,IAAuB;AAAA,IACvB,sBAAAC,IAAuB;AAAA,EAC3B,IAAM,IAAI;AAEN,WAAO,KAAK,WAAW,eAAe,eAAe,kBAAkB;AAAA,MACrE,WAAW,KAAK;AAAA,MAChB,sBAAsBD,MAAyB;AAAA,MAC/C,sBAAsBC,MAAyB;AAAA,IACrD,GAAO;AAAA,MACD,eAAe;AAAA,MACf,KAAKC,GAAa;AAChB,eAAOA,EAAY,MAAM;AAAA,MAC3B;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,eAAe1tC,IAAS,IAAI;AAC1B,QAAI,KAAK,WAAW;AAClB,aAAO,KAAK,OAAM,EAAG,KAAK,CAAAnc,MAAOD,GAAQ,YAAYC,CAAG,CAAC;AAE3D,UAAM6gD,IAAiB,KAAK,kBAAkB1kC,CAAM;AACpD,WAAO,IAAI,QAAQ,SAAUtc,GAASuC,GAAQ;AAC5C,eAASohD,IAAO;AACd,QAAA1H,EAAO,OAAO,KAAK,SAAU;AAAA,UAC3B,OAAAvkD;AAAA,UACA,MAAA2nD;AAAA,QACV,GAAW;AACD,cAAIA,GAAM;AACR,YAAAr/C,EAAQgqD,CAAW;AACnB;AAAA,UACF;AACA,UAAAA,EAAY,SAAZA,EAAY,OAAStyD,EAAM,OAC3B,OAAO,OAAOsyD,EAAY,QAAQtyD,EAAM,MAAM,GAC9CsyD,EAAY,MAAM,KAAK,GAAGtyD,EAAM,KAAK,GACrCisD,EAAI;AAAA,QACN,GAAGphD,CAAM;AAAA,MACX;AACA,YAAM05C,IAAS+E,EAAe,UAAS,GACjCgJ,IAAc;AAAA,QAClB,OAAO,CAAA;AAAA,QACP,QAAQ,uBAAO,OAAO,IAAI;AAAA,QAC1B,MAAM;AAAA,MACd;AACM,MAAArG,EAAI;AAAA,IACN,CAAC;AAAA,EACH;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,WAAW,cAAc,KAAK,UAAU;AAAA,EACtD;AAAA,EACA,WAAW;AACT,SAAK,YAAY;AACjB,UAAMsG,IAAS,CAAA;AACf,eAAWd,KAAe,KAAK,cAAc,OAAM;AAMjD,UALA,KAAK,mBAAmB;AAAA,QACtB,aAAAA;AAAA,QACA,QAAQ,IAAI,MAAM,qBAAqB;AAAA,QACvC,OAAO;AAAA,MACf,CAAO,GACG,CAAAA,EAAY;AAGhB,mBAAWK,KAAsBL,EAAY;AAC3C,UAAAc,EAAO,KAAKT,EAAmB,SAAS,GACxCA,EAAmB,OAAM;AAG7B,gBAAK,KAAK,MAAK,GACf5jD,EAAA,MAAK4iD,IAAkB,KAChB,QAAQ,IAAIyB,CAAM;AAAA,EAC3B;AAAA,EACA,QAAQC,IAAa,IAAO;AAC1B,IAAAtkD,EAAA,MAAK4iD,IAAkB;AACvB,UAAM2B,IAAUrsD,EAAA,MAAK2qD,IAAAC,IAAL;AAChB,WAAIwB,KAAcC,KAChB,KAAK,WAAL,KAAK,SAAW,IAAIplD,GAAS,IAExBolD;AAAA,EACT;AAAA,EAkBA,iBAAiB5a,GAAc4B,GAAU;AA3ud3C,QAAAz3C,GAAAC;AA4udI,UAAMwvD,IAAc,KAAK,cAAc,IAAIhY,CAAQ;AACnD,IAAKgY,OAGLzvD,IAAA,KAAK,WAAL,QAAAA,EAAa,QAAQ,kBACrBC,IAAAwvD,EAAY,2BAAZ,QAAAxvD,EAAoC,QAAQ41C;AAAA,EAC9C;AAAA,EACA,iBAAiB6a,GAAmBjB,GAAa;AAC/C,aAASrwD,IAAI,GAAGmL,IAAKmmD,EAAkB,QAAQtxD,IAAImL,GAAInL;AACrD,MAAAqwD,EAAY,aAAa,QAAQ,KAAKiB,EAAkB,QAAQtxD,CAAC,CAAC,GAClEqwD,EAAY,aAAa,UAAU,KAAKiB,EAAkB,UAAUtxD,CAAC,CAAC;AAExE,IAAAqwD,EAAY,aAAa,YAAYiB,EAAkB,WACvDjB,EAAY,aAAa,iBAAiBiB,EAAkB;AAC5D,eAAWZ,KAAsBL,EAAY;AAC3C,MAAAK,EAAmB,oBAAmB;AAExC,IAAIY,EAAkB,aACpBtsD,EAAA,MAAK2qD,IAAAC,IAAL;AAAA,EAEJ;AAAA,EACA,kBAAkB;AAAA,IAChB,iBAAAzO;AAAA,IACA,UAAA9I;AAAA,IACA,+BAAAkZ;AAAA,IACA,aAAAC;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ,KAAA3xC;AAAA,MACA,UAAAmV;AAAA,IACN,IAAQu8B,GAQEpO,IAPiB,KAAK,WAAW,eAAe,eAAe,mBAAmB;AAAA,MACtF,WAAW,KAAK;AAAA,MAChB,QAAQhC;AAAA,MACR,UAAA9I;AAAA,MACA,mBAAmBx4B;AAAA,MACnB,aAAA2xC;AAAA,IACN,GAAOx8B,CAAQ,EACmB,UAAS,GACjCq7B,IAAc,KAAK,cAAc,IAAIhY,CAAQ;AACnD,IAAAgY,EAAY,eAAelN;AAC3B,UAAM0H,IAAO,MAAM;AACjB,MAAA1H,EAAO,OAAO,KAAK,CAAC;AAAA,QAClB,OAAAvkD;AAAA,QACA,MAAA2nD;AAAA,MACR,MAAY;AACJ,YAAIA,GAAM;AACR,UAAA8J,EAAY,eAAe;AAC3B;AAAA,QACF;AACA,QAAI,KAAK,WAAW,cAGpB,KAAK,iBAAiBzxD,GAAOyxD,CAAW,GACxCxF,EAAI;AAAA,MACN,GAAG,CAAAxqB,MAAU;AAEX,YADAgwB,EAAY,eAAe,MACvB,MAAK,WAAW,WAGpB;AAAA,cAAIA,EAAY,cAAc;AAC5B,YAAAA,EAAY,aAAa,YAAY;AACrC,uBAAWK,KAAsBL,EAAY;AAC3C,cAAAK,EAAmB,oBAAmB;AAExC,YAAA1rD,EAAA,MAAK2qD,IAAAC,IAAL;AAAA,UACF;AACA,cAAIS,EAAY;AACd,YAAAA,EAAY,uBAAuB,OAAOhwB,CAAM;AAAA,mBACvCgwB,EAAY;AACrB,YAAAA,EAAY,qBAAqB,OAAOhwB,CAAM;AAAA;AAE9C,kBAAMA;AAAA;AAAA,MAEV,CAAC;AAAA,IACH;AACA,IAAAwqB,EAAI;AAAA,EACN;AAAA,EACA,mBAAmB;AAAA,IACjB,aAAAwF;AAAA,IACA,QAAAhwB;AAAA,IACA,OAAAoxB,IAAQ;AAAA,EACZ,GAAK;AACD,QAAKpB,EAAY,cAOjB;AAAA,UAJIA,EAAY,8BACd,aAAaA,EAAY,yBAAyB,GAClDA,EAAY,4BAA4B,OAEtC,CAACoB,GAAO;AACV,YAAIpB,EAAY,YAAY,OAAO;AACjC;AAEF,YAAIhwB,aAAkBr1B,IAA6B;AACjD,cAAI0mD,IAAQrF;AACZ,UAAIhsB,EAAO,aAAa,KAAKA,EAAO,aAAa,QAC/CqxB,KAASrxB,EAAO,aAElBgwB,EAAY,4BAA4B,WAAW,MAAM;AACvD,YAAAA,EAAY,4BAA4B,MACxC,KAAK,mBAAmB;AAAA,cACtB,aAAAA;AAAA,cACA,QAAAhwB;AAAA,cACA,OAAO;AAAA,YACnB,CAAW;AAAA,UACH,GAAGqxB,CAAK;AACR;AAAA,QACF;AAAA,MACF;AAGA,UAFArB,EAAY,aAAa,OAAO,IAAI3wD,GAAe2gC,EAAO,OAAO,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC,GAClFgwB,EAAY,eAAe,MACvB,MAAK,WAAW,WAGpB;AAAA,mBAAW,CAACsB,GAAaC,CAAc,KAAK,KAAK;AAC/C,cAAIA,MAAmBvB,GAAa;AAClC,iBAAK,cAAc,OAAOsB,CAAW;AACrC;AAAA,UACF;AAEF,aAAK,QAAO;AAAA;AAAA;AAAA,EACd;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AACF;AA7bEjC,KAAA,eADFC,KAAA,eA8SEC,KAAW,WAAG;AACZ,MAAI,CAAC/iD,EAAA,MAAK6iD,OAAmB,KAAK;AAChC,WAAO;AAET,aAAW;AAAA,IACT,aAAAmC;AAAA,IACA,cAAAjjB;AAAA,EACN,KAAS,KAAK,cAAc;AACtB,QAAIijB,EAAY,OAAO,KAAK,CAACjjB,EAAa;AACxC,aAAO;AAGX,cAAK,cAAc,MAAK,GACxB,KAAK,KAAK,MAAK,GACf9hC,EAAA,MAAK4iD,IAAkB,KAChB;AACT;AA1udF,IAAAhH,IAAAoJ,IAAAxR,IAAAyR,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA22dA,MAAMC,KAAN,MAAMA,GAAU;AAAA,EAmCd,YAAY;AAAA,IACV,MAAA1zD,IAAO;AAAA,IACP,MAAA2zD,IAAO;AAAA,IACP,WAAAx1D,IAAYG,GAAiB;AAAA,EACjC,IAAM,IAAI;AAvCV,IAAAiI,EAAA,MAAA4sD;AACE,IAAA5sD,EAAA,MAAAmjD,IAAc,QAAQ,cAAa;AACnC,IAAAnjD,EAAA,MAAAusD,IAAkB;AAClB,IAAAvsD,EAAA,MAAA+6C,IAAQ;AACR,IAAA/6C,EAAA,MAAAwsD,IAAa;AAuCX,QAHA,KAAK,OAAO/yD,GACZ,KAAK,YAAY,IACjB,KAAK,YAAY7B,GACbw1D,GAAM;AACR,UAAI9lD,EAAA6lD,IAAUR,IAAa,IAAIS,CAAI;AACjC,cAAM,IAAI,MAAM,8CAA8C;AAEhE,MAAA9lD,EAAA6lD,IAAUR,IAAa,IAAIS,GAAM,IAAI,GACrC3tD,EAAA,MAAKmtD,IAAAE,IAAL,WAAyBM;AAAA,IAC3B;AACE,MAAA3tD,EAAA,MAAKmtD,IAAAG,IAAL;AAAA,EAEJ;AAAA,EACA,IAAI,UAAU;AACZ,WAAOzlD,EAAA,MAAK67C,IAAY;AAAA,EAC1B;AAAA,EAOA,IAAI,OAAO;AACT,WAAO77C,EAAA,MAAKyzC;AAAA,EACd;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAOzzC,EAAA,MAAKilD;AAAA,EACd;AAAA,EAgGA,UAAU;AA9geZ,QAAAlxD,GAAAC;AA+geI,SAAK,YAAY,KACjBD,IAAAiM,EAAA,MAAKklD,QAAL,QAAAnxD,EAAiB,aACjBkM,EAAA,MAAKilD,IAAa,OAClBllD,EAAA6lD,IAAUR,IAAa,OAAOrlD,EAAA,MAAKyzC,GAAK,GACxCxzC,EAAA,MAAKwzC,IAAQ,QACbz/C,IAAAgM,EAAA,MAAKilD,QAAL,QAAAjxD,EAAsB,WACtBiM,EAAA,MAAKglD,IAAkB;AAAA,EACzB;AAAA,EACA,OAAO,OAAOtuC,GAAQ;AACpB,UAAMovC,IAAa/lD,EAAA,MAAKqlD,IAAa,IAAI1uC,KAAA,gBAAAA,EAAQ,IAAI;AACrD,QAAIovC,GAAY;AACd,UAAIA,EAAW;AACb,cAAM,IAAI,MAAM,uHAA4H;AAE9I,aAAOA;AAAA,IACT;AACA,WAAO,IAAIF,GAAUlvC,CAAM;AAAA,EAC7B;AAAA,EACA,WAAW,YAAY;AACrB,QAAIg9B,GAAoB;AACtB,aAAOA,GAAoB;AAE7B,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAAA,EAQA,WAAW,yBAAyB;AAWlC,WAAO/hD,EAAO,MAAM,2BAVL,YACToO,EAAA,MAAK2lD,IAAAC,MACA5lD,EAAA,MAAK2lD,IAAAC,OAEC,MAAM;AAAA;AAAA;AAAA,MAGrB,KAAK;AAAA,OACS,sBAEoC,CAAE;AAAA,EACxD;AACF;AA/ME/J,KAAA,eACAoJ,KAAA,eACAxR,KAAA,eACAyR,KAAA,eACOC,KAAA,eACAC,KAAA,eACAC,KAAA,eAPTC,KAAA,eAwDEC,KAAQ,WAAG;AACT,EAAAvlD,EAAA,MAAK67C,IAAY,QAAO,GACxB77C,EAAA,MAAKilD,IAAgB,KAAK,aAAa;AAAA,IACrC,WAAW,KAAK;AAAA,EACtB,CAAK;AACH,GAOAO,KAAmB,SAACM,GAAM;AACxB,EAAA7lD,EAAA,MAAKwzC,IAAQqS,IACb7lD,EAAA,MAAKglD,IAAkB,IAAIxyB,GAAe,QAAQ,UAAUqzB,CAAI,IAChE9lD,EAAA,MAAKilD,IAAgB,GAAG,SAAS,MAAM;AAAA,EAAC,CAAC,GACzC9sD,EAAA,MAAKmtD,IAAAC,IAAL;AACF,GACAE,KAAW,WAAG;AACZ,MAAIzlD,EAAA6lD,IAAUT,OAAqBplD,EAAA6lD,IAAUF,IAAAC,KAAiC;AAC5E,IAAAztD,EAAA,MAAKmtD,IAAAI,IAAL;AACA;AAAA,EACF;AACA,MAAI;AAAA,IACF,WAAAM;AAAA,EACN,IAAQH;AACJ,MAAI;AACF,IAAKA,GAAU,cAAc,OAAO,UAAUG,CAAS,MACrDA,IAAYH,GAAU,kBAAkB,IAAI,IAAIG,GAAW,OAAO,QAAQ,EAAE,IAAI;AAElF,UAAMjG,IAAS,IAAI,OAAOiG,GAAW;AAAA,MACnC,MAAM;AAAA,IACd,CAAO,GACKjE,IAAiB,IAAItvB,GAAe,QAAQ,UAAUstB,CAAM,GAC5DkG,IAAiB,MAAM;AAC3B,MAAAnzC,EAAG,MAAK,GACRivC,EAAe,QAAO,GACtBhC,EAAO,UAAS,GACZ,KAAK,YACP//C,EAAA,MAAK67C,IAAY,OAAO,IAAI,MAAM,sBAAsB,CAAC,IAEzD1jD,EAAA,MAAKmtD,IAAAI,IAAL;AAAA,IAEJ,GACM5yC,IAAK,IAAI,gBAAe;AAC9B,IAAAitC,EAAO,iBAAiB,SAAS,MAAM;AACrC,MAAK//C,EAAA,MAAKklD,OACRe,EAAc;AAAA,IAElB,GAAG;AAAA,MACD,QAAQnzC,EAAG;AAAA,IACnB,CAAO,GACDivC,EAAe,GAAG,QAAQ,CAAAz8C,MAAQ;AAEhC,UADAwN,EAAG,MAAK,GACJ,KAAK,aAAa,CAACxN,GAAM;AAC3B,QAAA2gD,EAAc;AACd;AAAA,MACF;AACA,MAAAhmD,EAAA,MAAKglD,IAAkBlD,IACvB9hD,EAAA,MAAKwzC,IAAQsM,IACb9/C,EAAA,MAAKilD,IAAanF,IAClB5nD,EAAA,MAAKmtD,IAAAC,IAAL;AAAA,IACF,CAAC,GACDxD,EAAe,GAAG,SAAS,CAAAz8C,MAAQ;AAEjC,UADAwN,EAAG,MAAK,GACJ,KAAK,WAAW;AAClB,QAAAmzC,EAAc;AACd;AAAA,MACF;AACA,UAAI;AACF,QAAAC,EAAQ;AAAA,MACV,QAAQ;AACN,QAAA/tD,EAAA,MAAKmtD,IAAAI,IAAL;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAMQ,IAAW,MAAM;AACrB,YAAMC,IAAU,IAAI,WAAU;AAC9B,MAAApE,EAAe,KAAK,QAAQoE,GAAS,CAACA,EAAQ,MAAM,CAAC;AAAA,IACvD;AACA,IAAAD,EAAQ;AACR;AAAA,EACF,QAAQ;AACN,IAAAx1D,GAAK,+BAA+B;AAAA,EACtC;AACA,EAAAyH,EAAA,MAAKmtD,IAAAI,IAAL;AACF,GACAA,KAAgB,WAAG;AACjB,EAAK1lD,EAAA6lD,IAAUT,QACbx0D,EAAK,yBAAyB,GAC9BqP,EAAA4lD,IAAUT,IAAoB,MAEhCS,GAAU,uBAAuB,KAAK,CAAAO,MAAwB;AAC5D,QAAI,KAAK,WAAW;AAClB,MAAApmD,EAAA,MAAK67C,IAAY,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACzD;AAAA,IACF;AACA,UAAMiK,IAAO,IAAIn0B,GAAY;AAC7B,IAAA1xB,EAAA,MAAKwzC,IAAQqS;AACb,UAAM/qD,IAAK,OAAOwO,GAAAs8C,IAAUV,IAAV,GAAyB,IACrCkB,IAAgB,IAAI5zB,GAAe13B,IAAK,WAAWA,GAAI+qD,CAAI;AACjE,IAAAM,EAAqB,MAAMC,GAAeP,CAAI,GAC9C7lD,EAAA,MAAKglD,IAAkB,IAAIxyB,GAAe13B,GAAIA,IAAK,WAAW+qD,CAAI,IAClE3tD,EAAA,MAAKmtD,IAAAC,IAAL;AAAA,EACF,CAAC,EAAE,MAAM,CAAA/xB,MAAU;AACjB,IAAAxzB,EAAA,MAAK67C,IAAY,OAAO,IAAI,MAAM,mCAAmCroB,EAAO,OAAO,IAAI,CAAC;AAAA,EAC1F,CAAC;AACH,GAlKFmyB,KAAA,eA4LaC,KAA+B,WAAG;AAvie/C,MAAA7xD;AAwieI,MAAI;AACF,aAAOA,IAAA,WAAW,gBAAX,gBAAAA,EAAwB,yBAAwB;AAAA,EACzD,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAlMF2E,EAAMmtD,IAANF,KAKEjtD,EALImtD,IAKGV,IAAgB,IACvBzsD,EANImtD,IAMGT,IAAoB,KAC3B1sD,EAPImtD,IAOGR,IAAe,oBAAI,QAAO,IAE3Bj2D,OACF6Q,EAAA4lD,IAAKT,IAAoB,KACzBzR,GAAoB,cAApBA,GAAoB,YAAc,sBAEpCkS,GAAK,gBAAgB,CAAC10D,GAASm1D,MAAa;AAC1C,QAAMC,IAAO,IAAI,MAAMp1D,CAAO;AAC9B,MAAI,EAACo1D,KAAA,QAAAA,EAAM,WAAUA,EAAK,WAAW;AACnC,WAAO;AAET,QAAMC,IAAQ,IAAI,IAAIF,GAAUC,CAAI;AACpC,SAAOA,EAAK,WAAWC,EAAM;AAC/B,GACAX,GAAK,oBAAoB,CAAA50D,MAAO;AAC9B,QAAMw1D,IAAU,iBAAiBx1D,CAAG;AACpC,SAAO,IAAI,gBAAgB,IAAI,KAAK,CAACw1D,CAAO,GAAG;AAAA,IAC7C,MAAM;AAAA,EACd,CAAO,CAAC;AACJ,GACAZ,GAAK,WAAW,CAAAlvC,MAAU;AAExB,MADA/W,GAAW,+DAA+D,GACtE,EAAC+W,KAAA,QAAAA,EAAQ;AACX,UAAM,IAAI,MAAM,gDAAgD;AAElE,SAAOkvC,GAAK,OAAOlvC,CAAM;AAC3B;AAjCJ,IAAMqpC,KAAN6F;AA32dA,IAAAa,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA4jeA,MAAM/E,GAAgB;AAAA,EAMpB,YAAYF,GAAgBkF,GAAarF,GAAejrC,GAAQuwC,GAASjzB,GAAW;AANtF,IAAAv7B,EAAA,MAAAquD;AACE,IAAAruD,EAAA,MAAAguD,IAAkB,oBAAI,IAAG;AACzB,IAAAhuD,EAAA,MAAAiuD,IAAa,oBAAI,IAAG;AACpB,IAAAjuD,EAAA,MAAAkuD,IAAgB,oBAAI,IAAG;AACvB,IAAAluD,EAAA,MAAAmuD,IAAgB,oBAAI,IAAG;AACvB,IAAAnuD,EAAA,MAAAouD,IAAsB;AAEpB,SAAK,iBAAiB/E,GACtB,KAAK,cAAckF,GACnB,KAAK,aAAa,IAAIvL,GAAU,GAChC,KAAK,aAAa,IAAI1yB,GAAW;AAAA,MAC/B,eAAerS,EAAO;AAAA,MACtB,cAAcA,EAAO;AAAA,IAC3B,CAAK,GACD,KAAK,gBAAgBA,EAAO,eAC5B,KAAK,UAAUA,GACf,KAAK,gBAAgBuwC,EAAQ,eAC7B,KAAK,gBAAgBA,EAAQ,eAC7B,KAAK,oBAAoBA,EAAQ,mBACjC,KAAK,0BAA0BA,EAAQ,yBACvC,KAAK,cAAcA,EAAQ,aAC3B,KAAK,YAAY,IACjB,KAAK,oBAAoB,MACzB,KAAK,iBAAiBtF,GACtB,KAAK,cAAc,MACnB,KAAK,gBAAgB,MACrB,KAAK,yBAAyB,QAAQ,cAAa,GACnD,KAAK,YAAY3tB,GACjB,KAAK,oBAAmB;AAAA,EAC1B;AAAA,EAUA,IAAI,oBAAoB;AACtB,WAAOriC,EAAO,MAAM,qBAAqB,IAAIi2B,GAAiB,CAAE;AAAA,EAClE;AAAA,EACA,mBAAmB3sB,GAAQioD,IAAiB3zD,GAAe,QAAQ6zD,IAAyB,MAAM9tC,IAAY,IAAO4xC,IAAW,IAAO;AACrI,QAAI7S,IAAkB/kD,GAAoB,SACtCm1D,IAAgCp9B;AACpC,YAAQpsB,GAAM;AAAA,MACZ,KAAK;AACH,QAAAo5C,IAAkB/kD,GAAoB;AACtC;AAAA,MACF,KAAK;AACH;AAAA,MACF,KAAK;AACH,QAAA+kD,IAAkB/kD,GAAoB;AACtC;AAAA,MACF;AACE,QAAAqB,EAAK,wCAAwCsK,CAAM,EAAE;AAAA,IAC7D;AACI,UAAMksD,IAAoB9S,IAAkB/kD,GAAoB,SAAS8zD,aAAkCn7B,KAAyBm7B,IAAyB,KAAK;AAClK,YAAQF,GAAc;AAAA,MACpB,KAAK3zD,GAAe;AAClB,QAAA8kD,KAAmB/kD,GAAoB;AACvC;AAAA,MACF,KAAKC,GAAe;AAClB;AAAA,MACF,KAAKA,GAAe;AAClB,QAAA8kD,KAAmB/kD,GAAoB;AACvC;AAAA,MACF,KAAKC,GAAe;AAClB,QAAA8kD,KAAmB/kD,GAAoB,qBACvCm1D,IAAgC0C,EAAkB;AAClD;AAAA,MACF;AACE,QAAAx2D,EAAK,gDAAgDuyD,CAAc,EAAE;AAAA,IAC7E;AACI,IAAI5tC,MACF++B,KAAmB/kD,GAAoB,aAErC43D,MACF7S,KAAmB/kD,GAAoB;AAEzC,UAAM;AAAA,MACJ,KAAKo1D;AAAA,MACL,MAAM0C;AAAA,IACZ,IAAQD,EAAkB,aAChBE,IAAc,CAAChT,GAAiBoQ,EAA8B,MAAM2C,CAAe;AACzF,WAAO;AAAA,MACL,iBAAA/S;AAAA,MACA,UAAUgT,EAAY,KAAK,GAAG;AAAA,MAC9B,+BAAA5C;AAAA,MACA,aAAAC;AAAA,IACN;AAAA,EACE;AAAA,EACA,UAAU;AAxpeZ,QAAA5wD;AAypeI,QAAI,KAAK;AACP,aAAO,KAAK,kBAAkB;AAEhC,SAAK,YAAY,IACjB,KAAK,oBAAoB,QAAQ,cAAa,IAC9CA,IAAAiM,EAAA,MAAK8mD,QAAL,QAAA/yD,EAA0B,OAAO,IAAI,MAAM,iDAAiD;AAC5F,UAAMuwD,IAAS,CAAA;AACf,eAAW/qD,KAAQyG,EAAA,MAAK2mD,IAAW,OAAM;AACvC,MAAArC,EAAO,KAAK/qD,EAAK,UAAU;AAE7B,IAAAyG,EAAA,MAAK2mD,IAAW,MAAK,GACrB3mD,EAAA,MAAK4mD,IAAc,MAAK,GACxB5mD,EAAA,MAAK6mD,IAAc,MAAK,GACpB,KAAK,eAAe,mBAAmB,KACzC,KAAK,kBAAkB,cAAa;AAEtC,UAAMU,IAAa,KAAK,eAAe,gBAAgB,aAAa,IAAI;AACxE,WAAAjD,EAAO,KAAKiD,CAAU,GACtB,QAAQ,IAAIjD,CAAM,EAAE,KAAK,MAAM;AA3qenC,UAAAvwD,GAAAC;AA4qeM,WAAK,WAAW,MAAK,GACrB,KAAK,WAAW,MAAK,GACrBgM,EAAA,MAAK0mD,IAAgB,MAAK,GAC1B,KAAK,cAAc,QAAO,GAC1BnH,GAAU,QAAO,IACjBxrD,IAAA,KAAK,mBAAL,QAAAA,EAAqB,kBAAkB,IAAIlB,GAAe,wBAAwB,KAClFmB,IAAA,KAAK,mBAAL,QAAAA,EAAqB,WACrB,KAAK,iBAAiB,MACtB,KAAK,kBAAkB,QAAO;AAAA,IAChC,GAAG,KAAK,kBAAkB,MAAM,GACzB,KAAK,kBAAkB;AAAA,EAChC;AAAA,EACA,sBAAsB;AACpB,UAAM;AAAA,MACJ,gBAAA+tD;AAAA,MACA,aAAAkF;AAAA,IACN,IAAQ;AACJ,IAAAlF,EAAe,GAAG,aAAa,CAACz8C,GAAMkiD,MAAS;AAC7C,MAAA12D,GAAO,KAAK,gBAAgB,iDAAiD,GAC7E,KAAK,cAAc,KAAK,eAAe,cAAa,GACpD,KAAK,YAAY,aAAa,CAAAihB,MAAO;AACnC,aAAK,gBAAgB;AAAA,UACnB,QAAQA,EAAI;AAAA,UACZ,OAAOA,EAAI;AAAA,QACrB;AAAA,MACM,GACAy1C,EAAK,SAAS,MAAM;AAClB,aAAK,YAAY,KAAI,EAAG,KAAK,SAAU;AAAA,UACrC,OAAAz1D;AAAA,UACA,MAAA2nD;AAAA,QACV,GAAW;AACD,cAAIA,GAAM;AACR,YAAA8N,EAAK,MAAK;AACV;AAAA,UACF;AACA,UAAA12D,GAAOiB,aAAiB,aAAa,sCAAsC,GAC3Ey1D,EAAK,QAAQ,IAAI,WAAWz1D,CAAK,GAAG,GAAG,CAACA,CAAK,CAAC;AAAA,QAChD,CAAC,EAAE,MAAM,CAAAyhC,MAAU;AACjB,UAAAg0B,EAAK,MAAMh0B,CAAM;AAAA,QACnB,CAAC;AAAA,MACH,GACAg0B,EAAK,WAAW,CAAAh0B,MAAU;AACxB,aAAK,YAAY,OAAOA,CAAM,GAC9Bg0B,EAAK,MAAM,MAAM,CAAAC,MAAe;AAC9B,cAAI,MAAK;AAGT,kBAAMA;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,CAAC,GACD1F,EAAe,GAAG,sBAAsB,OAAMz8C,MAAQ;AA/te1D,UAAAvR;AAgueM,YAAM,KAAK,YAAY;AACvB,YAAM;AAAA,QACJ,sBAAA2zD;AAAA,QACA,kBAAAC;AAAA,QACA,eAAAC;AAAA,MACR,IAAU,KAAK;AACT,cAAI,CAACF,KAAwB,CAACC,OACxB,KAAK,mBACP5zD,IAAAkzD,EAAY,eAAZ,QAAAlzD,EAAA,KAAAkzD,GAAyB,KAAK,iBAEhC,KAAK,YAAY,aAAa,CAAAl1C,MAAO;AA1ue7C,YAAAhe;AA2ueU,SAAAA,IAAAkzD,EAAY,eAAZ,QAAAlzD,EAAA,KAAAkzD,GAAyB;AAAA,UACvB,QAAQl1C,EAAI;AAAA,UACZ,OAAOA,EAAI;AAAA,QACvB;AAAA,MACQ,IAEK;AAAA,QACL,sBAAA21C;AAAA,QACA,kBAAAC;AAAA,QACA,eAAAC;AAAA,MACR;AAAA,IACI,CAAC,GACD7F,EAAe,GAAG,kBAAkB,CAACz8C,GAAMkiD,MAAS;AAClD,MAAA12D,GAAO,KAAK,gBAAgB,sDAAsD;AAClF,YAAMulD,IAAc,KAAK,eAAe,eAAe/wC,EAAK,OAAOA,EAAK,GAAG;AAC3E,UAAI,CAAC+wC,GAAa;AAChB,QAAAmR,EAAK,MAAK;AACV;AAAA,MACF;AACA,MAAAA,EAAK,SAAS,MAAM;AAClB,QAAAnR,EAAY,OAAO,KAAK,SAAU;AAAA,UAChC,OAAAtkD;AAAA,UACA,MAAA2nD;AAAA,QACV,GAAW;AACD,cAAIA,GAAM;AACR,YAAA8N,EAAK,MAAK;AACV;AAAA,UACF;AACA,UAAA12D,GAAOiB,aAAiB,aAAa,2CAA2C,GAChFy1D,EAAK,QAAQ,IAAI,WAAWz1D,CAAK,GAAG,GAAG,CAACA,CAAK,CAAC;AAAA,QAChD,CAAC,EAAE,MAAM,CAAAyhC,MAAU;AACjB,UAAAg0B,EAAK,MAAMh0B,CAAM;AAAA,QACnB,CAAC;AAAA,MACH,GACAg0B,EAAK,WAAW,CAAAh0B,MAAU;AACxB,QAAA6iB,EAAY,OAAO7iB,CAAM,GACzBg0B,EAAK,MAAM,MAAM,CAAAC,MAAe;AAC9B,cAAI,MAAK;AAGT,kBAAMA;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,CAAC,GACD1F,EAAe,GAAG,UAAU,CAAC;AAAA,MAC3B,SAAAS;AAAA,IACN,MAAU;AACJ,WAAK,YAAYA,EAAQ,UACzB,KAAK,cAAcA,EAAQ,YAC3B,OAAOA,EAAQ,YACfyE,EAAY,YAAY,QAAQ,IAAI1E,GAAiBC,GAAS,IAAI,CAAC;AAAA,IACrE,CAAC,GACDT,EAAe,GAAG,gBAAgB,CAAA3sC,MAAM;AACtC,MAAA6xC,EAAY,YAAY,OAAO/0B,GAAW9c,CAAE,CAAC;AAAA,IAC/C,CAAC,GACD2sC,EAAe,GAAG,mBAAmB,CAAA3sC,MAAM;AACzC,MAAAnV,EAAA,MAAK6mD,IAAsB,QAAQ,cAAa;AAChD,UAAI;AACF,YAAI,CAACG,EAAY;AACf,gBAAM/0B,GAAW9c,CAAE;AAErB,cAAMyyC,IAAiB,CAAAjI,MAAY;AACjC,UAAIA,aAAoB,QACtB5/C,EAAA,MAAK8mD,IAAoB,OAAOlH,CAAQ,IAExC5/C,EAAA,MAAK8mD,IAAoB,QAAQ;AAAA,YAC/B,UAAAlH;AAAA,UACd,CAAa;AAAA,QAEL;AACA,QAAAqH,EAAY,WAAWY,GAAgBzyC,EAAG,IAAI;AAAA,MAChD,SAAS0yC,GAAK;AACZ,QAAA9nD,EAAA,MAAK8mD,IAAoB,OAAOgB,CAAG;AAAA,MACrC;AACA,aAAO9nD,EAAA,MAAK8mD,IAAoB;AAAA,IAClC,CAAC,GACD/E,EAAe,GAAG,cAAc,CAAAz8C,MAAQ;AAvze5C,UAAAvR;AAwzeM,OAAAA,IAAAkzD,EAAY,eAAZ,QAAAlzD,EAAA,KAAAkzD,GAAyB;AAAA,QACvB,QAAQ3hD,EAAK;AAAA,QACb,OAAOA,EAAK;AAAA,MACpB,IACM,KAAK,uBAAuB,QAAQA,CAAI;AAAA,IAC1C,CAAC,GACDy8C,EAAe,GAAG,mBAAmB,CAAAz8C,MAAQ;AAC3C,UAAI,KAAK;AACP;AAGF,MADatF,EAAA,MAAK2mD,IAAW,IAAIrhD,EAAK,SAAS,EAC1C,iBAAiBA,EAAK,cAAcA,EAAK,QAAQ;AAAA,IACxD,CAAC,GACDy8C,EAAe,GAAG,aAAa,CAAC,CAAChnD,GAAI0B,GAAMsrD,CAAY,MAAM;AAr0ejE,UAAAh0D;AAy0eM,UAHI,KAAK,aAGL,KAAK,WAAW,IAAIgH,CAAE;AACxB,eAAO;AAET,cAAQ0B,GAAI;AAAA,QACV,KAAK;AACH,cAAI,WAAWsrD,GAAc;AAC3B,kBAAMC,IAAgBD,EAAa;AACnC,YAAAn3D,EAAK,8BAA8Bo3D,CAAa,EAAE,GAClD,KAAK,WAAW,QAAQjtD,GAAIitD,CAAa;AACzC;AAAA,UACF;AACA,gBAAMC,IAAW,IAAIv5B,GAASq5B,CAAY,GACpC98B,IAAc,KAAK,QAAQ,YAAUl3B,IAAA,WAAW,kBAAX,QAAAA,EAA0B,WAAU,CAAC41B,GAAM14B,MAAQ,WAAW,cAAc,UAAU04B,GAAM14B,CAAG,IAAI,MACxI04B,IAAO,IAAIoB,GAAek9B,GAAUh9B,GAAa88B,EAAa,OAAOA,EAAa,oBAAoB;AAC5G,eAAK,WAAW,KAAKp+B,CAAI,EAAE,MAAM,MAAMo4B,EAAe,gBAAgB,gBAAgB;AAAA,YACpF,IAAAhnD;AAAA,UACZ,CAAW,CAAC,EAAE,QAAQ,MAAM;AAChB,YAAI,CAAC4uB,EAAK,uBAAuBA,EAAK,QACpCA,EAAK,UAAS,GAEhB,KAAK,WAAW,QAAQ5uB,GAAI4uB,CAAI;AAAA,UAClC,CAAC;AACD;AAAA,QACF,KAAK;AACH,gBAAM;AAAA,YACJ,UAAAu+B;AAAA,UACZ,IAAcH;AACJ,UAAAj3D,GAAOo3D,GAAU,+BAA+B;AAChD,qBAAWC,KAAanoD,EAAA,MAAK2mD,IAAW,OAAM;AAC5C,uBAAW,CAAA,EAAGrhD,CAAI,KAAK6iD,EAAU;AAC/B,mBAAI7iD,KAAA,gBAAAA,EAAM,SAAQ4iD;AAGlB,uBAAK5iD,EAAK,WAGV,KAAK,WAAW,QAAQvK,GAAI,gBAAgBuK,CAAI,CAAC,GAC1CA,EAAK,WAHH;AAMb;AAAA,QACF,KAAK;AACH,eAAK,WAAW,QAAQvK,GAAI,IAAIm2B,GAAa62B,CAAY,CAAC;AAC1D;AAAA,QACF,KAAK;AACH,eAAK,WAAW,QAAQhtD,GAAIgtD,CAAY;AACxC;AAAA,QACF,KAAK;AACH,gBAAM7pB,IAAU,IAAIjN,GAAY82B,CAAY;AAC5C,eAAK,WAAW,QAAQhtD,GAAImjC,EAAQ,MAAK,CAAE;AAC3C;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,kCAAkCzhC,CAAI,EAAE;AAAA,MAClE;AACM,aAAO;AAAA,IACT,CAAC,GACDslD,EAAe,GAAG,OAAO,CAAC,CAAChnD,GAAIwY,GAAW9W,GAAM2rD,CAAS,MAAM;AAj4enE,UAAAr0D;AAk4eM,UAAI,KAAK;AACP;AAEF,YAAMo0D,IAAYnoD,EAAA,MAAK2mD,IAAW,IAAIpzC,CAAS;AAC/C,UAAI,CAAA40C,EAAU,KAAK,IAAIptD,CAAE,GAGzB;AAAA,YAAIotD,EAAU,cAAc,SAAS,GAAG;AACtC,WAAAp0D,IAAAq0D,KAAA,gBAAAA,EAAW,WAAX,QAAAr0D,EAAmB;AACnB;AAAA,QACF;AACA,gBAAQ0I,GAAI;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AACH,YAAA0rD,EAAU,KAAK,QAAQptD,GAAIqtD,CAAS;AACpC;AAAA,UACF;AACE,kBAAM,IAAI,MAAM,2BAA2B3rD,CAAI,EAAE;AAAA,QAC3D;AAAA;AAAA,IACI,CAAC,GACDslD,EAAe,GAAG,eAAe,CAAAz8C,MAAQ;AAt5e7C,UAAAvR;AAu5eM,MAAI,KAAK,cAGTA,IAAAkzD,EAAY,eAAZ,QAAAlzD,EAAA,KAAAkzD,GAAyB;AAAA,QACvB,QAAQ3hD,EAAK;AAAA,QACb,OAAOA,EAAK;AAAA,MACpB;AAAA,IACI,CAAC,GACDy8C,EAAe,GAAG,mBAAmB,OAAMz8C,MAAQ;AACjD,UAAI,KAAK;AACP,cAAM,IAAI,MAAM,uBAAuB;AAEzC,YAAM4hD,IAAU,KAAK5hD,EAAK,IAAI;AAC9B,UAAI,CAAC4hD;AACH,cAAM,IAAI,MAAM,GAAG5hD,EAAK,IAAI,yDAAyD;AAEvF,aAAO4hD,EAAQ,MAAM5hD,CAAI;AAAA,IAC3B,CAAC;AAAA,EACH;AAAA,EACA,UAAU;AACR,WAAO,KAAK,eAAe,gBAAgB,WAAW,IAAI;AAAA,EAC5D;AAAA,EACA,eAAe;AA76ejB,QAAAvR;AA86eI,IAAI,KAAK,kBAAkB,QAAQ,KACjCnD,EAAK,gGAAqG;AAE5G,UAAM;AAAA,MACJ,KAAAoiB;AAAA,MACA,UAAAmV;AAAA,IACN,IAAQ,KAAK,kBAAkB;AAC3B,WAAO,KAAK,eAAe,gBAAgB,gBAAgB;AAAA,MACzD,WAAW,CAAC,CAAC,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA,MACf,mBAAmBnV;AAAA,MACnB,YAAUjf,IAAA,KAAK,gBAAL,gBAAAA,EAAkB,aAAY;AAAA,IAC9C,GAAOo0B,CAAQ,EAAE,QAAQ,MAAM;AACzB,WAAK,kBAAkB,cAAa;AAAA,IACtC,CAAC;AAAA,EACH;AAAA,EACA,aAAaw6B,GAAW;AACtB,WAAO,KAAK,eAAe,gBAAgB,gBAAgB;AAAA,MACzD,WAAAA;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,QAAQhvC,GAAY;AAClB,QAAI,CAAC,OAAO,UAAUA,CAAU,KAAKA,KAAc,KAAKA,IAAa,KAAK;AACxE,aAAO,QAAQ,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAE1D,UAAMJ,IAAYI,IAAa,GAC7B00C,IAAgBroD,EAAA,MAAK4mD,IAAc,IAAIrzC,CAAS;AAClD,QAAI80C;AACF,aAAOA;AAET,UAAMt+C,IAAU,KAAK,eAAe,gBAAgB,WAAW;AAAA,MAC7D,WAAAwJ;AAAA,IACN,CAAK,EAAE,KAAK,CAAA0vC,MAAY;AAClB,UAAI,KAAK;AACP,cAAM,IAAI,MAAM,qBAAqB;AAEvC,MAAIA,EAAS,UACXjjD,EAAA,MAAK6mD,IAAc,IAAI5D,EAAS,QAAQtvC,CAAU;AAEpD,YAAMpa,IAAO,IAAIypD,GAAazvC,GAAW0vC,GAAU,MAAM,KAAK,QAAQ,MAAM;AAC5E,aAAAjjD,EAAA,MAAK2mD,IAAW,IAAIpzC,GAAWha,CAAI,GAC5BA;AAAA,IACT,CAAC;AACD,WAAAyG,EAAA,MAAK4mD,IAAc,IAAIrzC,GAAWxJ,CAAO,GAClCA;AAAA,EACT;AAAA,EACA,aAAa04C,GAAK;AAChB,WAAKnxB,GAAWmxB,CAAG,IAGZ,KAAK,eAAe,gBAAgB,gBAAgB;AAAA,MACzD,KAAKA,EAAI;AAAA,MACT,KAAKA,EAAI;AAAA,IACf,CAAK,IALQ,QAAQ,OAAO,IAAI,MAAM,4BAA4B,CAAC;AAAA,EAMjE;AAAA,EACA,eAAelvC,GAAWrY,GAAQ;AAChC,WAAO,KAAK,eAAe,gBAAgB,kBAAkB;AAAA,MAC3D,WAAAqY;AAAA,MACA,QAAArY;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,WAAO/C,EAAA,MAAK4uD,IAAAC,IAAL,WAAwB;AAAA,EACjC;AAAA,EACA,eAAe;AACb,WAAO7uD,EAAA,MAAK4uD,IAAAC,IAAL,WAAwB;AAAA,EACjC;AAAA,EACA,yBAAyB;AACvB,WAAO,KAAK,eAAe,gBAAgB,0BAA0B,IAAI;AAAA,EAC3E;AAAA,EACA,kBAAkB;AAChB,WAAO,KAAK,eAAe,gBAAgB,mBAAmB,IAAI;AAAA,EACpE;AAAA,EACA,eAAejsD,GAAI;AACjB,WAAI,OAAOA,KAAO,WACT,QAAQ,OAAO,IAAI,MAAM,8BAA8B,CAAC,IAE1D,KAAK,eAAe,gBAAgB,kBAAkB;AAAA,MAC3D,IAAAA;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EAClE;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EAClE;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,eAAe,gBAAgB,eAAe,IAAI;AAAA,EAChE;AAAA,EACA,uBAAuB;AACrB,WAAO,KAAK,eAAe,gBAAgB,wBAAwB,IAAI;AAAA,EACzE;AAAA,EACA,gBAAgB;AACd,WAAO,KAAK,eAAe,gBAAgB,iBAAiB,IAAI;AAAA,EAClE;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,eAAe,gBAAgB,kBAAkB,IAAI;AAAA,EACnE;AAAA,EACA,qBAAqBya,GAAOktC,GAAmB;AAC7C,WAAO,KAAK,eAAe,gBAAgB,wBAAwB;AAAA,MACjE,OAAAltC;AAAA,MACA,mBAAAktC;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,kBAAkB;AAChB,WAAOvqD,EAAA,MAAK4uD,IAAAC,IAAL,WAAwB;AAAA,EACjC;AAAA,EACA,iBAAiBzzC,GAAW;AAC1B,WAAO,KAAK,eAAe,gBAAgB,oBAAoB;AAAA,MAC7D,WAAAA;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,cAAcA,GAAW;AACvB,WAAO,KAAK,eAAe,gBAAgB,iBAAiB;AAAA,MAC1D,WAAAA;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,aAAa;AACX,WAAO,KAAK,eAAe,gBAAgB,cAAc,IAAI;AAAA,EAC/D;AAAA,EACA,yBAAyB+gC,GAAiB;AACxC,WAAOn8C,EAAA,MAAK4uD,IAAAC,IAAL,WAAwB,4BAA4B,KAAK,CAAA1hD,MAAQ,IAAI4vC,GAAsB5vC,GAAMgvC,CAAe,CAAC;AAAA,EAC1H;AAAA,EACA,iBAAiB;AACf,WAAO,KAAK,eAAe,gBAAgB,kBAAkB,IAAI;AAAA,EACnE;AAAA,EACA,cAAc;AACZ,UAAMniD,IAAO,eACXk2D,IAAgBroD,EAAA,MAAK0mD,IAAgB,IAAIv0D,CAAI;AAC/C,QAAIk2D;AACF,aAAOA;AAET,UAAMt+C,IAAU,KAAK,eAAe,gBAAgB5X,GAAM,IAAI,EAAE,KAAK,CAAAm2D,MAAO;AAnjfhF,UAAAv0D,GAAAC;AAmjfqF;AAAA,QAC/E,MAAMs0D,EAAQ,CAAC;AAAA,QACf,UAAUA,EAAQ,CAAC,IAAI,IAAIxU,GAASwU,EAAQ,CAAC,CAAC,IAAI;AAAA,QAClD,8BAA4Bv0D,IAAA,KAAK,gBAAL,gBAAAA,EAAkB,aAAY;AAAA,QAC1D,iBAAeC,IAAA,KAAK,gBAAL,gBAAAA,EAAkB,kBAAiB;AAAA,QAClD,eAAes0D,EAAQ,CAAC;AAAA,MAC9B;AAAA,KAAM;AACF,WAAAtoD,EAAA,MAAK0mD,IAAgB,IAAIv0D,GAAM4X,CAAO,GAC/BA;AAAA,EACT;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,eAAe,gBAAgB,eAAe,IAAI;AAAA,EAChE;AAAA,EACA,MAAM,aAAa64C,IAAkB,IAAO;AAC1C,QAAI,MAAK,WAGT;AAAA,YAAM,KAAK,eAAe,gBAAgB,WAAW,IAAI;AACzD,iBAAWrpD,KAAQyG,EAAA,MAAK2mD,IAAW,OAAM;AAEvC,YAAI,CADsBptD,EAAK,QAAO;AAEpC,gBAAM,IAAI,MAAM,sBAAsBA,EAAK,UAAU,0BAA0B;AAGnF,WAAK,WAAW,MAAK,GAChBqpD,KACH,KAAK,WAAW,MAAK,GAEvB5iD,EAAA,MAAK0mD,IAAgB,MAAK,GAC1B,KAAK,cAAc,QAAQ,EAAI,GAC/BnH,GAAU,QAAO;AAAA;AAAA,EACnB;AAAA,EACA,iBAAiBkD,GAAK;AACpB,QAAI,CAACnxB,GAAWmxB,CAAG;AACjB,aAAO;AAET,UAAM8F,IAAS9F,EAAI,QAAQ,IAAI,GAAGA,EAAI,GAAG,MAAM,GAAGA,EAAI,GAAG,IAAIA,EAAI,GAAG;AACpE,WAAOziD,EAAA,MAAK6mD,IAAc,IAAI0B,CAAM,KAAK;AAAA,EAC3C;AACF;AA7hBE7B,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eALFC,KAAA,eA8BEC,KAAkB,SAAC70D,GAAMmT,IAAO,MAAM;AACpC,QAAM+iD,IAAgBroD,EAAA,MAAK0mD,IAAgB,IAAIv0D,CAAI;AACnD,MAAIk2D;AACF,WAAOA;AAET,QAAMt+C,IAAU,KAAK,eAAe,gBAAgB5X,GAAMmT,CAAI;AAC9D,SAAAtF,EAAA,MAAK0mD,IAAgB,IAAIv0D,GAAM4X,CAAO,GAC/BA;AACT;AAlmeF,IAAAy+C;AA2lfA,MAAMC,GAAW;AAAA,EAIf,YAAY5E,GAAoB;AAHhC,IAAAnrD,EAAA,MAAA8vD,IAAsB;AACtB,IAAAlsD,EAAA,oBAAa;AACb,IAAAA,EAAA,iBAAU;AAER,IAAA2D,EAAA,MAAKuoD,IAAsB3E;AAAA,EAC7B;AAAA,EACA,IAAI,UAAU;AACZ,WAAO7jD,EAAA,MAAKwoD,IAAoB,WAAW;AAAA,EAC7C;AAAA,EACA,OAAOpqD,IAAa,GAAG;AACrB,IAAA4B,EAAA,MAAKwoD,IAAoB,OAAO,MAAMpqD,CAAU;AAAA,EAClD;AAAA,EACA,IAAI,iBAAiB;AACnB,UAAM;AAAA,MACJ,gBAAAsqD;AAAA,IACN,IAAQ1oD,EAAA,MAAKwoD,IAAoB;AAC7B,QAAI,CAACE;AACH,aAAO;AAET,UAAM;AAAA,MACJ,qBAAAhf;AAAA,IACN,IAAQ1pC,EAAA,MAAKwoD;AACT,WAAOE,EAAe,QAAQA,EAAe,WAAUhf,KAAA,gBAAAA,EAAqB,QAAO;AAAA,EACrF;AACF;AAxBE8e,KAAA;AA5lfF,IAAAG,IAAAC;AAqnfA,MAAMC,KAAN,MAAMA,GAAmB;AAAA,EAGvB,YAAY;AAAA,IACV,UAAA58C;AAAA,IACA,QAAA0K;AAAA,IACA,MAAA0U;AAAA,IACA,YAAAie;AAAA,IACA,qBAAAI;AAAA,IACA,cAAA3H;AAAA,IACA,WAAAxuB;AAAA,IACA,eAAAmyB;AAAA,IACA,eAAA6D;AAAA,IACA,0BAAAuf,IAA2B;AAAA,IAC3B,QAAA5H,IAAS;AAAA,IACT,YAAA3vC,IAAa;AAAA,IACb,WAAA0iB,IAAY;AAAA,IACZ,kBAAAiW,IAAmB;AAAA,EACvB,GAAK;AAjBH,IAAAxxC,EAAA,MAAAiwD,IAAO;AAkBL,SAAK,WAAW18C,GAChB,KAAK,SAAS0K,GACd,KAAK,OAAO0U,GACZ,KAAK,aAAaie,GAClB,KAAK,sBAAsBI,GAC3B,KAAK,kBAAkB,MACvB,KAAK,eAAe3H,GACpB,KAAK,aAAaxuB,GAClB,KAAK,gBAAgBmyB,GACrB,KAAK,gBAAgB6D,GACrB,KAAK,UAAU2X,GACf,KAAK,aAAa3vC,GAClB,KAAK,UAAU,IACf,KAAK,wBAAwB,MAC7B,KAAK,gBAAgB,IACrB,KAAK,4BAA4Bu3C,MAA6B,MAAQ,OAAO,SAAW,KACxF,KAAK,YAAY,IACjB,KAAK,aAAa,QAAQ,cAAa,GACvC,KAAK,OAAO,IAAIL,GAAW,IAAI,GAC/B,KAAK,eAAe,KAAK,OAAO,KAAK,IAAI,GACzC,KAAK,iBAAiB,KAAK,UAAU,KAAK,IAAI,GAC9C,KAAK,qBAAqB,KAAK,cAAc,KAAK,IAAI,GACtD,KAAK,aAAa,KAAK,MAAM,KAAK,IAAI,GACtC,KAAK,UAAU9xC,EAAO,QACtB,KAAK,iBAAiBA,EAAO,SAAS,OAAOA,EAAO,eACpD,KAAK,aAAasd,GAClB,KAAK,qBAAqBtd,EAAO,mBACjC,KAAK,oBAAoBuzB;AAAA,EAC3B;AAAA,EACA,IAAI,YAAY;AACd,WAAO,KAAK,WAAW,QAAQ,MAAM,WAAY;AAAA,IAAC,CAAC;AAAA,EACrD;AAAA,EACA,mBAAmB;AAAA,IACjB,cAAAN,IAAe;AAAA,IACf,uBAAAJ;AAAA,EACJ,GAAK;AA3qfL,QAAAz1C,GAAAC;AA4qfI,QAAI,KAAK;AACP;AAEF,QAAI,KAAK,SAAS;AAChB,UAAIgM,EAAA6oD,IAAmBD,IAAa,IAAI,KAAK,OAAO;AAClD,cAAM,IAAI,MAAM,iJAA2J;AAE7K,MAAA5oD,EAAA6oD,IAAmBD,IAAa,IAAI,KAAK,OAAO;AAAA,IAClD;AACA,IAAI,KAAK,aAAW70D,IAAA,WAAW,mBAAX,QAAAA,EAA2B,aAC7C,KAAK,UAAU,WAAW,eAAe,OAAO,KAAK,UAAU,GAC/D,KAAK,QAAQ,KAAK,KAAK,YAAY,GACnC,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,kBAAiB;AAE9D,UAAM;AAAA,MACJ,UAAA2N;AAAA,MACA,WAAAhN;AAAA,MACA,YAAAg7B;AAAA,MACA,mBAAAuN;AAAA,IACN,IAAQ,KAAK,QACHimB,IAAgB,KAAK,kBAAkB,KAAK,QAAQ,WAAW,MAAM;AAAA,MACzE,OAAO;AAAA,MACP,oBAAoB,CAAC,KAAK;AAAA,IAChC,CAAK;AACD,SAAK,MAAM,IAAI1P,GAAe0P,GAAe,KAAK,YAAY,KAAK,MAAM,KAAK,eAAe,KAAK,eAAe;AAAA,MAC/G,uBAAA1Z;AAAA,IACN,GAAO,KAAK,qBAAqB,KAAK,YAAYvM,CAAiB,GAC/D,KAAK,IAAI,aAAa;AAAA,MACpB,WAAAvoC;AAAA,MACA,UAAAgN;AAAA,MACA,cAAAkoC;AAAA,MACA,YAAAla;AAAA,IACN,CAAK,GACD,KAAK,kBAAkB,GACvB,KAAK,gBAAgB,KACrB17B,IAAA,KAAK,0BAAL,QAAAA,EAAA;AAAA,EACF;AAAA,EACA,OAAOonD,IAAQ,MAAMh9C,IAAa,GAAG;AAjtfvC,QAAArK,GAAAC,GAAAse;AAktfI,SAAK,UAAU,IACf,KAAK,YAAY,KACjBve,IAAA,KAAK,QAAL,QAAAA,EAAU,cACNiM,EAAA,MAAK2oD,QACP,OAAO,qBAAqB3oD,EAAA,MAAK2oD,GAAI,GACrC1oD,EAAA,MAAK0oD,IAAO,QAEd3oD,EAAA6oD,IAAmBD,IAAa,OAAO,KAAK,OAAO,GACnDxN,UAAU,IAAIj9C,GAA4B,6BAA6B,KAAK,aAAa,CAAC,IAAIC,CAAU,IACxG,KAAK,SAASg9C,CAAK,IACnB9oC,KAAAte,IAAA,KAAK,MAAK,YAAV,QAAAse,EAAA,KAAAte,GAAoBonD;AAAA,EACtB;AAAA,EACA,sBAAsB;AA9tfxB,QAAArnD,GAAAC;AA+tfI,QAAI,CAAC,KAAK,eAAe;AACvB,WAAK,0BAAL,KAAK,wBAA0B,KAAK;AACpC;AAAA,IACF;AAGA,KAFAD,IAAA,KAAK,IAAI,sBAAT,QAAAA,EAA4B,oBAAoB,KAAK,aAAa,QAAQ,UAC1EC,IAAA,KAAK,YAAL,QAAAA,EAAc,mBAAmB,KAAK,eAClC,MAAK,WAGT,KAAK,UAAS;AAAA,EAChB;AAAA,EACA,YAAY;AAEV,IADA,KAAK,UAAU,IACX,MAAK,cAGL,KAAK,KAAK,aACZ,KAAK,KAAK,WAAW,KAAK,kBAAkB,IAE5C,KAAK,cAAa;AAAA,EAEtB;AAAA,EACA,gBAAgB;AACd,IAAI,KAAK,4BACPiM,EAAA,MAAK0oD,IAAO,OAAO,sBAAsB,MAAM;AAC7C,MAAA1oD,EAAA,MAAK0oD,IAAO,OACZ,KAAK,WAAU,EAAG,MAAM,KAAK,YAAY;AAAA,IAC3C,CAAC,KAED,QAAQ,QAAO,EAAG,KAAK,KAAK,UAAU,EAAE,MAAM,KAAK,YAAY;AAAA,EAEnE;AAAA,EACA,MAAM,QAAQ;AACZ,IAAI,KAAK,cAGT,KAAK,kBAAkB,KAAK,IAAI,oBAAoB,KAAK,cAAc,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,SAAS,KAAK,iBAAiB,GAClJ,KAAK,oBAAoB,KAAK,aAAa,UAAU,WACvD,KAAK,UAAU,IACX,KAAK,aAAa,cACpB,KAAK,IAAI,WAAU,GACnB3oD,EAAA6oD,IAAmBD,IAAa,OAAO,KAAK,OAAO,GACnD,KAAK,SAAQ;AAAA,EAGnB;AACF;AAvJED,KAAA,eACOC,KAAA,eAAPlwD,EAFImwD,IAEGD,IAAe,oBAAI,QAAO;AAFnC,IAAM7E,KAAN8E;AAyJA,MAAME,KAAU,WACVC,KAAQ;AA/wfd,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAA5jD,IAAA6jD,IAAAC,IAAAziD,IAAA0iD,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAA5jD,IAAA6jD;AAqxfA,MAAMC,KAAN,MAAMA,GAAY;AAAA,EAehB,YAAY;AAAA,IACV,QAAAvjD,IAAS;AAAA,IACT,WAAAuB,IAAY;AAAA,EAChB,GAAK;AAlBL,IAAAtP,EAAA,MAAAgxD;AACE,IAAAhxD,EAAA,MAAAuwD,IAAU;AACV,IAAAvwD,EAAA,MAAAwwD,IAAgB;AAChB,IAAAxwD,EAAA,MAAAywD;AACA,IAAAzwD,EAAA,MAAA0wD,IAAY;AACZ,IAAA1wD,EAAA,MAAA2wD,IAA2B;AAC3B,IAAA3wD,EAAA,MAAA4wD,IAAqB;AACrB,IAAA5wD,EAAA,MAAAgN,IAAU;AACV,IAAAhN,EAAA,MAAA6wD;AACA,IAAA7wD,EAAA,MAAA8wD,IAAkB;AAClB,IAAA9wD,EAAA,MAAAqO,IAAa;AA/xff,QAAAhT,GAAAC;AAwyfI,IAAIyS,KACFxG,EAAA,MAAKqpD,IAAqB,KAC1BrpD,EAAA,MAAKyF,IAAUe,MAEfxG,EAAA,MAAKqpD,IAAqB,KAE5BrpD,EAAA,MAAK8G,KAAaN,KAAA,gBAAAA,EAAQ,eAAcuB,IACxC/H,EAAA,MAAKspD,IAAYvpD,EAAA,MAAK+G,IAAW,YACjC9G,EAAA,MAAKkpD,MAAgBp1D,IAAA0S,KAAA,gBAAAA,EAAQ,UAAR,gBAAA1S,EAAe,oBAAiBC,IAAAgM,EAAA,MAAK+G,QAAL,gBAAA/S,EAAiB,gBAAgB,SAAS,OAAO,UAAS,YAC/GgM,EAAAgqD,IAAYP,OAAZxpD,EAAA+pD,IAAYP,IAAe,OAAO,OAAO;AAAA,MACvC,MAAM;AAAA,MACN,OAAO;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,IACd,CAAK;AAAA,EACH;AAAA,EAvBA,WAAW,mBAAmB;AAC5B,WAAO73D,EAAO,MAAM,oBAAoB,IAAIka,GAAgB,CAAC,CAAC,CAAC,UAAU,YAAY,GAAGk+C,GAAY,UAAU,yBAAyB,GAAG,CAAC,CAAC,KAAK,OAAO,GAAGA,GAAY,UAAU,wBAAwB,GAAG,CAAC,CAAC,aAAa,cAAc,iBAAiB,gBAAgB,GAAGA,GAAY,UAAU,WAAW,GAAG,CAAC,CAAC,WAAW,aAAa,eAAe,eAAe,GAAGA,GAAY,UAAU,eAAe,GAAG,CAAC,CAAC,QAAQ,UAAU,GAAGA,GAAY,UAAU,gBAAgB,GAAG,CAAC,CAAC,OAAO,SAAS,GAAGA,GAAY,UAAU,UAAU,CAAC,CAAC,CAAC;AAAA,EAC9gB;AAAA,EAsBA,eAAe;AACb,UAAMhjD,IAAS/G,EAAA,MAAKgpD,IAAU,SAAS,cAAc,QAAQ;AAC7D,IAAAjiD,EAAO,YAAY,eACnBA,EAAO,WAAW,KAClBA,EAAO,aAAa,gBAAgB,iCAAiC,GACrEA,EAAO,eAAe,QAClBhH,EAAA,MAAK0F,QACPsB,EAAO,eAAe,GAAGhH,EAAA,MAAK0F,IAAQ,EAAE;AAE1C,UAAMiB,IAAS3G,EAAA,MAAK+G,IAAW;AAC/B,IAAAC,EAAO,iBAAiB,SAAS7O,EAAA,MAAKuxD,IAAAI,IAAc,KAAK,IAAI,GAAG;AAAA,MAC9D,QAAAnjD;AAAA,IACN,CAAK,GACDK,EAAO,iBAAiB,WAAW7O,EAAA,MAAKuxD,IAAAG,IAAS,KAAK,IAAI,GAAG;AAAA,MAC3D,QAAAljD;AAAA,IACN,CAAK;AACD,UAAMsjD,IAAShqD,EAAA,MAAKipD,IAAgB,SAAS,cAAc,MAAM;AACjE,WAAAe,EAAO,YAAY,UACnBA,EAAO,aAAa,QACpBA,EAAO,MAAM,kBAAkBjqD,EAAA,MAAKmpD,KACpCniD,EAAO,OAAOijD,CAAM,GACbjjD;AAAA,EACT;AAAA,EACA,qBAAqB;AACnB,UAAMkjD,IAAWjqD,EAAA,MAAKmpD,IAAYjxD,EAAA,MAAKuxD,IAAAC,IAAL;AAClC,WAAAO,EAAS,kBAAkB,cAC3BA,EAAS,iBAAiB,6BACnBA;AAAA,EACT;AAAA,EA8CA,yBAAyB9uD,GAAO;AAC9B,QAAIA,EAAM,WAAW4E,EAAA,MAAKipD,KAAS;AACjC,MAAA9wD,EAAA,MAAKuxD,IAAAI,IAAL,WAAmB1uD;AACnB;AAAA,IACF;AACA,UAAM0F,IAAQ1F,EAAM,OAAO,aAAa,YAAY;AACpD,IAAK0F,KAGL3I,EAAA,MAAKuxD,IAAAE,IAAL,WAAkB9oD,GAAO1F;AAAA,EAC3B;AAAA,EACA,YAAYA,GAAO;AA94frB,QAAArH,GAAAC;AA+4fI,QAAI,CAACgM,EAAA,MAAK0pD,IAAAK,KAAoB;AAC5B,MAAA5xD,EAAA,MAAKuxD,IAAAI,IAAL,WAAmB1uD;AACnB;AAAA,IACF;AACA,QAAIA,EAAM,WAAW4E,EAAA,MAAKipD,KAAS;AACjC,OAAAl1D,IAAAiM,EAAA,MAAKopD,IAAU,sBAAf,QAAAr1D,EAAkC;AAClC;AAAA,IACF;AACA,KAAAC,IAAAoH,EAAM,OAAO,gBAAb,QAAApH,EAA0B;AAAA,EAC5B;AAAA,EACA,gBAAgBoH,GAAO;AAz5fzB,QAAArH,GAAAC;AA05fI,QAAIoH,EAAM,aAAWrH,IAAAiM,EAAA,MAAKopD,QAAL,gBAAAr1D,EAAgB,sBAAqBqH,EAAM,WAAW4E,EAAA,MAAKipD,KAAS;AACvF,MAAIjpD,EAAA,MAAK0pD,IAAAK,OACP,KAAK,0BAAyB;AAEhC;AAAA,IACF;AACA,IAAK/pD,EAAA,MAAK0pD,IAAAK,OACR5xD,EAAA,MAAKuxD,IAAAI,IAAL,WAAmB1uD,KAErBpH,IAAAoH,EAAM,OAAO,oBAAb,QAAApH,EAA8B;AAAA,EAChC;AAAA,EACA,iBAAiBoH,GAAO;AAr6f1B,QAAArH;AAs6fI,QAAI,CAACiM,EAAA,MAAK0pD,IAAAK,KAAoB;AAC5B,MAAA5xD,EAAA,MAAKuxD,IAAAI,IAAL,WAAmB1uD;AACnB;AAAA,IACF;AACA,KAAArH,IAAAiM,EAAA,MAAKopD,IAAU,sBAAf,QAAAr1D,EAAkC;AAAA,EACpC;AAAA,EACA,WAAWqH,GAAO;AA56fpB,QAAArH;AA66fI,QAAI,CAACiM,EAAA,MAAK0pD,IAAAK,KAAoB;AAC5B,MAAA5xD,EAAA,MAAKuxD,IAAAI,IAAL,WAAmB1uD;AACnB;AAAA,IACF;AACA,KAAArH,IAAAiM,EAAA,MAAKopD,IAAU,qBAAf,QAAAr1D,EAAiC;AAAA,EACnC;AAAA,EA8BA,eAAe;AAh9fjB,QAAAA,GAAAC;AAi9fI,KAAAD,IAAAiM,EAAA,MAAKopD,QAAL,QAAAr1D,EAAgB,UAAU,IAAI,WAC9BiM,EAAA,MAAKipD,IAAQ,eAAe,UAC5Bj1D,IAAAgM,EAAA,MAAKwpD,QAAL,QAAAx1D,EAAsB,SACtBiM,EAAA,MAAKupD,IAAkB;AAAA,EACzB;AAAA,EAIA,4BAA4B;AAz9f9B,QAAAz1D;AA09fI,QAAI,CAAAiM,EAAA,MAAKspD,KAGT;AAAA,UAAI,CAACtpD,EAAA,MAAK0pD,IAAAK,KAAoB;AAC5B,SAAAh2D,IAAAiM,EAAA,MAAK0F,QAAL,QAAA3R,EAAc;AACd;AAAA,MACF;AACA,WAAK,aAAY,GACjBiM,EAAA,MAAKipD,IAAQ,MAAM;AAAA,QACjB,eAAe;AAAA,QACf,cAAcjpD,EAAA,MAAKqpD;AAAA,MACzB,CAAK;AAAA;AAAA,EACH;AAAA,EACA,YAAYvoD,GAAO;AAIjB,QAHId,EAAA,MAAKkpD,QACPlpD,EAAA,MAAKkpD,IAAc,MAAM,kBAAkBpoD,IAEzC,CAACd,EAAA,MAAKopD;AACR;AAEF,UAAMj2D,IAAI6M,EAAA,MAAK+G,IAAW,gBAAgB,OAAM;AAChD,eAAWnM,KAASoF,EAAA,MAAKopD,IAAU;AACjC,MAAAxuD,EAAM,eAAezH,EAAE,KAAI,EAAG,UAAU2N,EAAM,YAAW;AAAA,EAE7D;AAAA,EACA,UAAU;AAn/fZ,QAAA/M,GAAAC;AAo/fI,KAAAD,IAAAiM,EAAA,MAAKipD,QAAL,QAAAl1D,EAAc,UACdkM,EAAA,MAAKgpD,IAAU,OACfhpD,EAAA,MAAKipD,IAAgB,QACrBl1D,IAAAgM,EAAA,MAAKopD,QAAL,QAAAp1D,EAAgB,UAChBiM,EAAA,MAAKmpD,IAAY;AAAA,EACnB;AACF;AApOEH,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACA5jD,KAAA,eACA6jD,KAAA,eACAC,KAAA,eACAziD,KAAA,eACO0iD,KAAA,eAXTC,KAAA,eAiEEC,KAAgB,WAAG;AACjB,QAAMloD,IAAM,SAAS,cAAc,KAAK,GAClCkF,IAAS3G,EAAA,MAAK+G,IAAW;AAC/B,EAAAtF,EAAI,iBAAiB,eAAehC,IAAe;AAAA,IACjD,QAAAkH;AAAA,EACN,CAAK,GACDlF,EAAI,YAAY,YAChBA,EAAI,OAAO,WACXA,EAAI,sBAAsB,SAC1BA,EAAI,kBAAkB,YACtBA,EAAI,aAAa,gBAAgB,mCAAmC,GAChEzB,EAAA,MAAK0F,QACPjE,EAAI,KAAK,GAAGzB,EAAA,MAAK0F,IAAQ,EAAE;AAE7B,aAAW,CAACvT,GAAM2O,CAAK,KAAKd,EAAA,MAAK+G,IAAW,iBAAiB;AAC3D,UAAMC,IAAS,SAAS,cAAc,QAAQ;AAC9C,IAAAA,EAAO,WAAW,KAClBA,EAAO,OAAO,UACdA,EAAO,aAAa,cAAclG,CAAK,GACvCkG,EAAO,QAAQ7U,GACf6U,EAAO,aAAa,gBAAgBhH,EAAAgqD,IAAYP,IAAWt3D,CAAI,CAAC;AAChE,UAAM83D,IAAS,SAAS,cAAc,MAAM;AAC5C,IAAAjjD,EAAO,OAAOijD,CAAM,GACpBA,EAAO,YAAY,UACnBA,EAAO,MAAM,kBAAkBnpD,GAC/BkG,EAAO,eAAelG,MAAUd,EAAA,MAAKmpD,KACrCniD,EAAO,iBAAiB,SAAS7O,EAAA,MAAKuxD,IAAAE,IAAa,KAAK,MAAM9oD,CAAK,GAAG;AAAA,MACpE,QAAA6F;AAAA,IACR,CAAO,GACDlF,EAAI,OAAOuF,CAAM;AAAA,EACnB;AACA,SAAAvF,EAAI,iBAAiB,WAAWtJ,EAAA,MAAKuxD,IAAAG,IAAS,KAAK,IAAI,GAAG;AAAA,IACxD,QAAAljD;AAAA,EACN,CAAK,GACMlF;AACT,GACAmoD,KAAY,SAAC9oD,GAAO1F,GAAO;AACzB,EAAAA,EAAM,gBAAe,GACrB4E,EAAA,MAAKupD,IAAU,SAAS,gCAAgC;AAAA,IACtD,QAAQ;AAAA,IACR,MAAM55D,GAA2B;AAAA,IACjC,OAAOmR;AAAA,EACb,CAAK,GACD,KAAK,YAAYA,CAAK;AACxB,GAiDA+oD,KAAQ,SAACzuD,GAAO;AACd,EAAA4uD,GAAY,iBAAiB,KAAK,MAAM5uD,CAAK;AAC/C,GACA0uD,KAAa,SAAC1uD,GAAO;AACnB,MAAI4E,EAAA,MAAK0pD,IAAAK,KAAoB;AAC3B,SAAK,aAAY;AACjB;AAAA,EACF;AASA,MARA9pD,EAAA,MAAKopD,IAA2BjuD,EAAM,WAAW,IAC5C4E,EAAA,MAAKwpD,QACRvpD,EAAA,MAAKupD,IAAkB,IAAI,gBAAe,IAC1C,OAAO,iBAAiB,eAAerxD,EAAA,MAAKuxD,IAAAxjD,IAAa,KAAK,IAAI,GAAG;AAAA,IACnE,QAAQlG,EAAA,MAAK+G,IAAW,eAAe/G,EAAA,MAAKwpD,GAAe;AAAA,EACnE,CAAO,IAEHxpD,EAAA,MAAKipD,IAAQ,eAAe,QACxBjpD,EAAA,MAAKopD,KAAW;AAClB,IAAAppD,EAAA,MAAKopD,IAAU,UAAU,OAAO,QAAQ;AACxC;AAAA,EACF;AACA,QAAMztD,IAAOsE,EAAA,MAAKmpD,IAAYjxD,EAAA,MAAKuxD,IAAAC,IAAL;AAC9B,EAAA3pD,EAAA,MAAKipD,IAAQ,OAAOttD,CAAI;AAC1B,GACAuK,KAAY,SAAC9K,GAAO;AA18ftB,MAAArH;AA28fI,GAAIA,IAAAiM,EAAA,MAAKopD,QAAL,QAAAr1D,EAAgB,SAASqH,EAAM,WAGnC,KAAK,aAAY;AACnB,GAOI2uD,KAAkB,WAAG;AACvB,SAAO/pD,EAAA,MAAKopD,OAAa,CAACppD,EAAA,MAAKopD,IAAU,UAAU,SAAS,QAAQ;AACtE,GAxLA1wD,EAXIsxD,IAWGP,IAAa;AAXtB,IAAMU,KAANH;AArxfA,IAAAI,IAAA1kD,IAAAqB,IAAA0iD;AA2/fA,MAAMY,KAAN,MAAMA,GAAiB;AAAA,EAKrB,YAAY5jD,GAAQ;AAJpB,IAAA/N,EAAA,MAAA0xD,IAAS;AACT,IAAA1xD,EAAA,MAAAgN,IAAU;AACV,IAAAhN,EAAA,MAAAqO,IAAa;AAGX,IAAA9G,EAAA,MAAKyF,IAAUe,IACfxG,EAAA,MAAK8G,IAAaN,EAAO,aACzBzG,EAAAqqD,IAAiBZ,OAAjBxpD,EAAAoqD,IAAiBZ,IAAe,OAAO,OAAO;AAAA,MAC5C,UAAU;AAAA,MACV,KAAK;AAAA,IACX,CAAK;AAAA,EACH;AAAA,EACA,eAAe;AACb,QAAIzpD,EAAA,MAAKoqD;AACP,aAAOpqD,EAAA,MAAKoqD;AAEd,UAAM;AAAA,MACJ,YAAAtjD;AAAA,MACA,WAAAwjD;AAAA,MACA,OAAAxpD;AAAA,IACN,IAAQd,EAAA,MAAK0F,KACH3F,IAAQE,EAAA,MAAKmqD,IAAS,SAAS,cAAc,OAAO;AAC1D,WAAArqD,EAAM,OAAO,SACbA,EAAM,QAAQe,KAAS,WACvBf,EAAM,YAAY,oBAClBA,EAAM,WAAW,GACjBA,EAAM,aAAa,gBAAgBC,EAAAqqD,IAAiBZ,IAAW3iD,CAAU,CAAC,GAC1E/G,EAAM,iBAAiB,SAAS,MAAM;AACpC,MAAAC,EAAA,MAAK+G,IAAW,aAAaujD,GAAWvqD,EAAM,KAAK;AAAA,IACrD,GAAG;AAAA,MACD,QAAQC,EAAA,MAAK+G,IAAW;AAAA,IAC9B,CAAK,GACMhH;AAAA,EACT;AAAA,EACA,OAAOhO,GAAO;AACZ,IAAKiO,EAAA,MAAKoqD,QAGVpqD,EAAA,MAAKoqD,IAAO,QAAQr4D;AAAA,EACtB;AAAA,EACA,UAAU;AApigBZ,QAAAgC;AAqigBI,KAAAA,IAAAiM,EAAA,MAAKoqD,QAAL,QAAAr2D,EAAa,UACbkM,EAAA,MAAKmqD,IAAS;AAAA,EAChB;AAAA,EACA,eAAe;AAAA,EAAC;AAClB;AA7CEA,KAAA,eACA1kD,KAAA,eACAqB,KAAA,eACO0iD,KAAA,eAAP/wD,EAJI2xD,IAIGZ,IAAa;AAJtB,IAAMc,KAANF;AAiDA,SAASG,GAAct2D,GAAG;AACxB,SAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGA,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACnF;AACA,SAASu2D,GAAchzD,GAAG;AACxB,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAMA,CAAC,CAAC;AAC3C;AACA,MAAMizD,GAAgB;AAAA,EACpB,OAAO,OAAO,CAAC1zD,GAAGU,GAAG3C,GAAGorC,CAAC,GAAG;AAC1B,WAAO,CAAC,KAAK,IAAI,KAAK,IAAI,GAAG,MAAMnpC,IAAI,OAAOjC,IAAI,OAAO2C,IAAIyoC,CAAC,CAAC;AAAA,EACjE;AAAA,EACA,OAAO,OAAO,CAACh9B,CAAC,GAAG;AACjB,WAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAIA,CAAC;AAAA,EAChC;AAAA,EACA,OAAO,MAAM,CAACA,CAAC,GAAG;AAChB,WAAO,CAAC,OAAOA,GAAGA,GAAGA,CAAC;AAAA,EACxB;AAAA,EACA,OAAO,MAAM,CAACA,CAAC,GAAG;AAChB,WAAAA,IAAIsnD,GAActnD,CAAC,GACZ,CAACA,GAAGA,GAAGA,CAAC;AAAA,EACjB;AAAA,EACA,OAAO,OAAO,CAACA,CAAC,GAAG;AACjB,UAAMwnD,IAAIH,GAAcrnD,CAAC;AACzB,WAAO,IAAIwnD,CAAC,GAAGA,CAAC,GAAGA,CAAC;AAAA,EACtB;AAAA,EACA,OAAO,MAAM,CAACp2D,GAAG,GAAGC,CAAC,GAAG;AACtB,WAAO,CAAC,KAAK,MAAMD,IAAI,OAAO,IAAI,OAAOC,CAAC;AAAA,EAC5C;AAAA,EACA,OAAO,QAAQsM,GAAO;AACpB,WAAOA,EAAM,IAAI2pD,EAAa;AAAA,EAChC;AAAA,EACA,OAAO,SAAS3pD,GAAO;AACrB,WAAO,IAAIA,EAAM,IAAI0pD,EAAa,EAAE,KAAK,EAAE,CAAC;AAAA,EAC9C;AAAA,EACA,OAAO,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EACA,OAAO,QAAQ;AACb,WAAO,CAAC,IAAI;AAAA,EACd;AAAA,EACA,OAAO,SAAS,CAACxzD,GAAGU,GAAG3C,GAAGorC,CAAC,GAAG;AAC5B,WAAO,CAAC,OAAO,IAAI,KAAK,IAAI,GAAGnpC,IAAImpC,CAAC,GAAG,IAAI,KAAK,IAAI,GAAGprC,IAAIorC,CAAC,GAAG,IAAI,KAAK,IAAI,GAAGzoC,IAAIyoC,CAAC,CAAC;AAAA,EACvF;AAAA,EACA,OAAO,SAAS,CAACnpC,GAAGU,GAAG3C,GAAGorC,CAAC,GAAG;AAC5B,WAAO,CAACsqB,GAAc,IAAI,KAAK,IAAI,GAAGzzD,IAAImpC,CAAC,CAAC,GAAGsqB,GAAc,IAAI,KAAK,IAAI,GAAG11D,IAAIorC,CAAC,CAAC,GAAGsqB,GAAc,IAAI,KAAK,IAAI,GAAG/yD,IAAIyoC,CAAC,CAAC,CAAC;AAAA,EAC7H;AAAA,EACA,OAAO,UAAUyqB,GAAY;AAC3B,UAAMrnD,IAAM,KAAK,SAASqnD,CAAU,EAAE,MAAM,CAAC;AAC7C,WAAO,KAAK,SAASrnD,CAAG;AAAA,EAC1B;AAAA,EACA,OAAO,SAAS,CAAChP,GAAG,GAAGC,CAAC,GAAG;AACzB,UAAMwC,IAAI,IAAIzC,GACRQ,IAAI,IAAI,GACR2C,IAAI,IAAIlD,GACR2rC,IAAI,KAAK,IAAInpC,GAAGjC,GAAG2C,CAAC;AAC1B,WAAO,CAAC,QAAQV,GAAGjC,GAAG2C,GAAGyoC,CAAC;AAAA,EAC5B;AACF;AAOA,MAAM0qB,GAAe;AAAA,EACnB,OAAO/sD,GAAOC,GAAQ+sD,IAAiB,IAAO;AAC5C,QAAIhtD,KAAS,KAAKC,KAAU;AAC1B,YAAM,IAAI,MAAM,wBAAwB;AAE1C,UAAM8L,IAAM,KAAK,WAAW,SAAS;AACrC,WAAAA,EAAI,aAAa,WAAW,KAAK,GAC5BihD,MACHjhD,EAAI,aAAa,SAAS,GAAG/L,CAAK,IAAI,GACtC+L,EAAI,aAAa,UAAU,GAAG9L,CAAM,IAAI,IAE1C8L,EAAI,aAAa,uBAAuB,MAAM,GAC9CA,EAAI,aAAa,WAAW,OAAO/L,CAAK,IAAIC,CAAM,EAAE,GAC7C8L;AAAA,EACT;AAAA,EACA,cAAcpN,GAAM;AAClB,QAAI,OAAOA,KAAS;AAClB,YAAM,IAAI,MAAM,0BAA0B;AAE5C,WAAO,KAAK,WAAWA,CAAI;AAAA,EAC7B;AAAA,EACA,WAAWA,GAAM;AACf,IAAA5L,GAAY,sCAAsC;AAAA,EACpD;AACF;AACA,MAAMk6D,WAAsBF,GAAe;AAAA,EACzC,WAAWpuD,GAAM;AACf,WAAO,SAAS,gBAAgBL,IAAQK,CAAI;AAAA,EAC9C;AACF;AAQA,MAAMuuD,KAAqC,GACrCC,KAAuB,oBAAI,QAAO,GAClCC,MAAkB,oBAAI,KAAI,GAAG,kBAAiB,IAAK,KAAK;AAC9D,MAAMC,GAAyB;AAAA,EAC7B,OAAO,OAAOzvD,GAAY;AAExB,YADgBA,EAAW,KAAK,gBACjB;AAAA,MACb,KAAK1L,GAAe;AAClB,eAAO,IAAIo7D,GAAsB1vD,CAAU;AAAA,MAC7C,KAAK1L,GAAe;AAClB,eAAO,IAAIq7D,GAAsB3vD,CAAU;AAAA,MAC7C,KAAK1L,GAAe;AAElB,gBADkB0L,EAAW,KAAK,WACjB;AAAA,UACf,KAAK;AACH,mBAAO,IAAI4vD,GAA4B5vD,CAAU;AAAA,UACnD,KAAK;AACH,mBAAIA,EAAW,KAAK,cACX,IAAI6vD,GAAmC7vD,CAAU,IAC/CA,EAAW,KAAK,WAClB,IAAI8vD,GAAgC9vD,CAAU,IAEhD,IAAI+vD,GAAkC/vD,CAAU;AAAA,UACzD,KAAK;AACH,mBAAO,IAAIgwD,GAA8BhwD,CAAU;AAAA,UACrD,KAAK;AACH,mBAAO,IAAIiwD,GAAiCjwD,CAAU;AAAA,QAClE;AACQ,eAAO,IAAIkwD,GAAwBlwD,CAAU;AAAA,MAC/C,KAAK1L,GAAe;AAClB,eAAO,IAAI67D,GAAuBnwD,CAAU;AAAA,MAC9C,KAAK1L,GAAe;AAClB,eAAO,IAAI87D,GAA0BpwD,CAAU;AAAA,MACjD,KAAK1L,GAAe;AAClB,eAAO,IAAI+7D,GAAsBrwD,CAAU;AAAA,MAC7C,KAAK1L,GAAe;AAClB,eAAO,IAAIg8D,GAAwBtwD,CAAU;AAAA,MAC/C,KAAK1L,GAAe;AAClB,eAAO,IAAIi8D,GAAwBvwD,CAAU;AAAA,MAC/C,KAAK1L,GAAe;AAClB,eAAO,IAAIk8D,GAA0BxwD,CAAU;AAAA,MACjD,KAAK1L,GAAe;AAClB,eAAO,IAAIm8D,GAAuBzwD,CAAU;AAAA,MAC9C,KAAK1L,GAAe;AAClB,eAAO,IAAIo8D,GAAqB1wD,CAAU;AAAA,MAC5C,KAAK1L,GAAe;AAClB,eAAO,IAAIq8D,GAAyB3wD,CAAU;AAAA,MAChD,KAAK1L,GAAe;AAClB,eAAO,IAAIs8D,GAA2B5wD,CAAU;AAAA,MAClD,KAAK1L,GAAe;AAClB,eAAO,IAAIu8D,GAA2B7wD,CAAU;AAAA,MAClD,KAAK1L,GAAe;AAClB,eAAO,IAAIw8D,GAA0B9wD,CAAU;AAAA,MACjD,KAAK1L,GAAe;AAClB,eAAO,IAAIy8D,GAA2B/wD,CAAU;AAAA,MAClD,KAAK1L,GAAe;AAClB,eAAO,IAAI08D,GAAuBhxD,CAAU;AAAA,MAC9C,KAAK1L,GAAe;AAClB,eAAO,IAAI28D,GAAgCjxD,CAAU;AAAA,MACvD;AACE,eAAO,IAAIkxD,GAAkBlxD,CAAU;AAAA,IAC/C;AAAA,EACE;AACF;AA/sgBA,IAAAmxD,IAAAC,IAAAC,IAAAC,IAAAC;AAgtgBA,MAAMC,KAAN,MAAMA,GAAkB;AAAA,EAItB,YAAYxxD,GAAY;AAAA,IACtB,cAAAyxD,IAAe;AAAA,IACf,cAAAC,IAAe;AAAA,IACf,sBAAAC,IAAuB;AAAA,EAC3B,IAAM,IAAI;AARV,IAAA30D,EAAA,MAAAs0D;AACE,IAAAt0D,EAAA,MAAAm0D,IAAW;AACX,IAAAn0D,EAAA,MAAAo0D,IAAa;AACb,IAAAp0D,EAAA,MAAAq0D,IAAgB;AAMd,SAAK,eAAeI,GACpB,KAAK,OAAOzxD,EAAW,MACvB,KAAK,QAAQA,EAAW,OACxB,KAAK,cAAcA,EAAW,aAC9B,KAAK,kBAAkBA,EAAW,iBAClC,KAAK,qBAAqBA,EAAW,oBACrC,KAAK,cAAcA,EAAW,aAC9B,KAAK,aAAaA,EAAW,YAC7B,KAAK,oBAAoBA,EAAW,mBACpC,KAAK,gBAAgBA,EAAW,eAChC,KAAK,kBAAkBA,EAAW,iBAClC,KAAK,eAAeA,EAAW,cAC/B,KAAK,gBAAgBA,EAAW,cAChC,KAAK,SAASA,EAAW,QACzB,KAAK,sBAAsB,IACvByxD,MACF,KAAK,iBAAiB,KAAK,YAAY,KAAK,iBAAiBC,CAAY,IAEvEC,KACF,KAAK,sBAAqB;AAAA,EAE9B;AAAA,EACA,OAAO,cAAc;AAAA,IACnB,aAAA/2C;AAAA,IACA,UAAA2E;AAAA,EACJ,GAAK;AACD,WAAO,CAAC,EAAE3E,KAAA,QAAAA,EAAa,OAAO2E,KAAA,QAAAA,EAAU;AAAA,EAC1C;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EACA,IAAI,eAAe;AACjB,WAAOiyC,GAAkB,cAAc,KAAK,IAAI,KAAK,KAAK,iBAAiB,CAAC,CAAC,KAAK;AAAA,EACpF;AAAA,EACA,IAAI,cAAc;AA3vgBpB,QAAAn5D;AA4vgBI,UAAM;AAAA,MACJ,MAAAuR;AAAA,IACN,IAAQ,MACEmB,KAAS1S,IAAA,KAAK,sBAAL,gBAAAA,EAAwB,UAAUuR,EAAK;AACtD,WAAImB,IACKA,EAAO,QAAO,IAEhBnB;AAAA,EACT;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK,iBAAiB,KAAK;AAAA,EACpC;AAAA,EACA,IAAI,wBAAwB;AAxwgB9B,QAAAvR;AAywgBI,UAAM0S,KAAS1S,IAAA,KAAK,sBAAL,gBAAAA,EAAwB,UAAU,KAAK,KAAK;AAC3D,QAAI0S;AACF,aAAOA,EAAO;AAEhB,UAAM;AAAA,MACJ,YAAA6mD;AAAA,MACA,UAAAC;AAAA,MACA,MAAA33D;AAAA,IACN,IAAQ,KAAK;AACT,QAAIk7B,IAAO,QACPE,IAAO;AACX,SAAIs8B,KAAA,gBAAAA,EAAY,WAAU,GAAG;AAC3B,eAASn6D,IAAI,GAAGA,IAAIm6D,EAAW,QAAQn6D,KAAK;AAC1C,QAAIm6D,EAAWn6D,IAAI,CAAC,IAAI69B,KACtBA,IAAOs8B,EAAWn6D,IAAI,CAAC,GACvB29B,IAAOw8B,EAAWn6D,IAAI,CAAC,KACdm6D,EAAWn6D,IAAI,CAAC,MAAM69B,MAC/BF,IAAO,KAAK,IAAIA,GAAMw8B,EAAWn6D,IAAI,CAAC,CAAC;AAG3C,aAAO,CAAC29B,GAAME,CAAI;AAAA,IACpB;AACA,SAAIu8B,KAAA,gBAAAA,EAAU,WAAU,GAAG;AACzB,iBAAWC,KAAWD;AACpB,iBAASp6D,IAAI,GAAGmL,IAAKkvD,EAAQ,QAAQr6D,IAAImL,GAAInL,KAAK;AAChD,UAAIq6D,EAAQr6D,IAAI,CAAC,IAAI69B,KACnBA,IAAOw8B,EAAQr6D,IAAI,CAAC,GACpB29B,IAAO08B,EAAQr6D,CAAC,KACPq6D,EAAQr6D,IAAI,CAAC,MAAM69B,MAC5BF,IAAO,KAAK,IAAIA,GAAM08B,EAAQr6D,CAAC,CAAC;AAItC,UAAI29B,MAAS;AACX,eAAO,CAACA,GAAME,CAAI;AAAA,IAEtB;AACA,WAAIp7B,IACK,CAACA,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC,IAEnB;AAAA,EACT;AAAA,EACA,gBAAgBovB,GAAO;AACrB,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,MAAAqH;AAAA,MACR;AAAA,MACM,UAAU;AAAA,QACR,SAAS;AAAA,UACP,WAAAxqB;AAAA,UACA,YAAAC;AAAA,UACA,OAAA+e;AAAA,UACA,OAAAC;AAAA,QACV;AAAA,MACA;AAAA,IACA,IAAQ,KAAK;AACT,WAAAkE,EAAM,CAAC,IAAIqH,EAAK,CAAC,IAAIrH,EAAM,CAAC,IAAIqH,EAAK,CAAC,GACtCrH,EAAM,CAAC,IAAI,OAAOA,EAAM,CAAC,IAAInE,KAAShf,GACtCmjB,EAAM,CAAC,IAAI,OAAOA,EAAM,CAAC,IAAIlE,KAAShf,GAC/BkjB;AAAA,EACT;AAAA,EACA,IAAI,cAAc;AAt0gBpB,QAAAjxB,GAAAC,GAAAse;AAu0gBI,UAAM;AAAA,MACJ,MAAAhN;AAAA,IACN,IAAQ;AACJ,aAAOtR,KAAAD,IAAA,KAAK,kBAAkB,YAAY,GAAGtE,EAAsB,GAAG6V,EAAK,EAAE,EAAE,MAAxE,gBAAAvR,EAA2E,UAA3E,gBAAAC,EAAkF,eAAYse,IAAAhN,EAAK,gBAAL,gBAAAgN,EAAkB,QAAO;AAAA,EAChI;AAAA,EACA,IAAI,YAAYiC,GAAM;AACpB,UAAM;AAAA,MACJ,MAAAjP;AAAA,IACN,IAAQ,MACEmoD,IAAQ;AAAA,MACZ,SAAS,CAACl5C;AAAA,MACV,UAAUA,KAAQ;AAAA,IACxB;AACI,IAAK,KAAK,kBAAkB,aAAajP,EAAK,IAAI;AAAA,MAChD,OAAAmoD;AAAA,IACN,CAAK,KACC,KAAK,kBAAkB,SAAS,GAAGh+D,EAAsB,GAAG6V,EAAK,EAAE,IAAI;AAAA,MACrE,IAAIA,EAAK;AAAA,MACT,gBAAgBA,EAAK;AAAA,MACrB,WAAW,KAAK,OAAO,KAAK;AAAA,MAC5B,OAAAmoD;AAAA,MACA,UAAUnoD,EAAK;AAAA,MACf,kBAAkB,oBAAI,KAAI;AAAA,IAClC,CAAO,GAEEiP,KACH,KAAK,YAAW;AAAA,EAEpB;AAAA,EACA,cAAc;AAp2gBhB,QAAAxgB,GAAAC;AAq2gBI,KAACA,MAAAD,IAAAiM,EAAA,MAAK+sD,QAAL,gBAAAh5D,EAAoB,UAAS,KAAK,UAAlC,QAAAC,EAA0C,UAC3CiM,EAAA,MAAK8sD,IAAgB,KAAK,QAAQ;AAAA,EACpC;AAAA,EACA,aAAap2C,GAAQ;AAx2gBvB,QAAA5iB;AAy2gBI,QAAI,CAAC,KAAK;AACR;AAEF,IAAI4iB,EAAO,SACT3W,EAAA,MAAK6sD,OAAL5sD,EAAA,MAAK4sD,IAAa;AAAA,MAChB,MAAM,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,IACpC;AAEI,UAAM;AAAA,MACJ,MAAAj3D;AAAA,MACA,OAAO83D;AAAA,IACb,IAAQ/2C;AACJ,IAAI/gB,KACFuC,EAAA,MAAK60D,IAAAC,IAAL,WAAoBr3D;AAEtB,QAAI63D,MAAQ15D,IAAAiM,EAAA,MAAK+sD,QAAL,gBAAAh5D,EAAoB,UAAS,KAAK;AAK9C,IAJI,CAAC05D,MAASC,KAAA,QAAAA,EAAU,UACtB,KAAK,aAAaA,CAAQ,GAC1BD,IAAQztD,EAAA,MAAK+sD,IAAc,QAExBU,MAGLA,EAAM,aAAa92C,CAAM,GACrB+2C,KAAA,QAAAA,EAAU,YACZD,EAAM,OAAM,GACZxtD,EAAA,MAAK8sD,IAAgB,OACrB,KAAK,QAAQ;AAAA,EAEjB;AAAA,EACA,cAAc;AAv4gBhB,QAAAh5D;AAw4gBI,IAAKiM,EAAA,MAAK6sD,QAGV10D,EAAA,MAAK60D,IAAAC,IAAL,WAAoBjtD,EAAA,MAAK6sD,IAAS,QAClC94D,IAAAiM,EAAA,MAAK+sD,QAAL,QAAAh5D,EAAoB,MAAM,eAC1BkM,EAAA,MAAK4sD,IAAW;AAAA,EAClB;AAAA,EA+BA,iBAAiBO,GAAc;AAC7B,UAAM;AAAA,MACJ,MAAA9nD;AAAA,MACA,QAAQ;AAAA,QACN,MAAA/L;AAAA,QACA,UAAAmI;AAAA,MACR;AAAA,IACA,IAAQ,MACEuD,IAAY,SAAS,cAAc,SAAS;AAClD,IAAAA,EAAU,aAAa,sBAAsBK,EAAK,EAAE,GAChD,EAAE,gBAAgBsmD,OAA4B,EAAE,gBAAgBR,QAClEnmD,EAAU,WAAW;AAEvB,UAAM;AAAA,MACJ,OAAAlD;AAAA,IACN,IAAQkD;AASJ,QARAlD,EAAM,SAAS,KAAK,OAAO,QAC3B,KAAK,OAAO,UAAU,GAClBuD,EAAK,oBACPL,EAAU,QAAQK,EAAK,kBAErBA,EAAK,YACPL,EAAU,UAAU,IAAI,UAAU,GAEhC,CAACK,EAAK,QAAQ,gBAAgBumD,IAAwB;AACxD,YAAM;AAAA,QACJ,UAAA3uD;AAAA,MACR,IAAUoI;AACJ,aAAI,CAACA,EAAK,gBAAgBpI,MAAa,KACrC,KAAK,YAAYA,GAAU+H,CAAS,GAE/BA;AAAA,IACT;AACA,UAAM;AAAA,MACJ,OAAAnH;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ;AACJ,QAAI,CAACqvD,KAAgB9nD,EAAK,YAAY,QAAQ,GAAG;AAC/C,MAAAvD,EAAM,cAAc,GAAGuD,EAAK,YAAY,KAAK;AAC7C,YAAMqoD,IAAmBroD,EAAK,YAAY,wBACpCsoD,IAAiBtoD,EAAK,YAAY;AACxC,UAAIqoD,IAAmB,KAAKC,IAAiB,GAAG;AAC9C,cAAMC,IAAS,QAAQF,CAAgB,0CAA0CC,CAAc;AAC/F,QAAA7rD,EAAM,eAAe8rD;AAAA,MACvB,WAAW,gBAAgBtC,IAAoC;AAC7D,cAAMsC,IAAS,QAAQ/vD,CAAK,0CAA0CC,CAAM;AAC5E,QAAAgE,EAAM,eAAe8rD;AAAA,MACvB;AACA,cAAQvoD,EAAK,YAAY,OAAK;AAAA,QAC5B,KAAKrV,GAA0B;AAC7B,UAAA8R,EAAM,cAAc;AACpB;AAAA,QACF,KAAK9R,GAA0B;AAC7B,UAAA8R,EAAM,cAAc;AACpB;AAAA,QACF,KAAK9R,GAA0B;AAC7B,UAAAW,EAAK,qCAAqC;AAC1C;AAAA,QACF,KAAKX,GAA0B;AAC7B,UAAAW,EAAK,mCAAmC;AACxC;AAAA,QACF,KAAKX,GAA0B;AAC7B,UAAA8R,EAAM,oBAAoB;AAC1B;AAAA,MAGV;AACM,YAAM+rD,IAAcxoD,EAAK,eAAe;AACxC,MAAIwoD,KACF7tD,EAAA,MAAK6sD,IAAa,KAClB/qD,EAAM,cAAczN,EAAK,aAAaw5D,EAAY,CAAC,IAAI,GAAGA,EAAY,CAAC,IAAI,GAAGA,EAAY,CAAC,IAAI,CAAC,KAEhG/rD,EAAM,cAAc;AAAA,IAExB;AACA,UAAMnM,IAAOtB,EAAK,cAAc,CAACgR,EAAK,KAAK,CAAC,GAAG/L,EAAK,KAAK,CAAC,IAAI+L,EAAK,KAAK,CAAC,IAAI/L,EAAK,KAAK,CAAC,GAAG+L,EAAK,KAAK,CAAC,GAAG/L,EAAK,KAAK,CAAC,IAAI+L,EAAK,KAAK,CAAC,IAAI/L,EAAK,KAAK,CAAC,CAAC,CAAC,GAC9I;AAAA,MACJ,WAAAsI;AAAA,MACA,YAAAC;AAAA,MACA,OAAA+e;AAAA,MACA,OAAAC;AAAA,IACN,IAAQpf,EAAS;AACb,IAAAK,EAAM,OAAO,GAAG,OAAOnM,EAAK,CAAC,IAAIirB,KAAShf,CAAS,KACnDE,EAAM,MAAM,GAAG,OAAOnM,EAAK,CAAC,IAAIkrB,KAAShf,CAAU;AACnD,UAAM;AAAA,MACJ,UAAA5E;AAAA,IACN,IAAQoI;AACJ,WAAIA,EAAK,gBAAgBpI,MAAa,KACpC6E,EAAM,QAAQ,GAAG,MAAMjE,IAAQ+D,CAAS,KACxCE,EAAM,SAAS,GAAG,MAAMhE,IAAS+D,CAAU,OAE3C,KAAK,YAAY5E,GAAU+H,CAAS,GAE/BA;AAAA,EACT;AAAA,EACA,YAAY2e,GAAO3e,IAAY,KAAK,WAAW;AAC7C,QAAI,CAAC,KAAK,KAAK;AACb;AAEF,UAAM;AAAA,MACJ,WAAApD;AAAA,MACA,YAAAC;AAAA,IACN,IAAQ,KAAK,OAAO,SAAS;AACzB,QAAI;AAAA,MACF,OAAAhE;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ;AACJ,IAAI6lB,IAAQ,QAAQ,MAClB,CAAC9lB,GAAOC,CAAM,IAAI,CAACA,GAAQD,CAAK,IAElCmH,EAAU,MAAM,QAAQ,GAAG,MAAMnH,IAAQ+D,CAAS,KAClDoD,EAAU,MAAM,SAAS,GAAG,MAAMlH,IAAS+D,CAAU,KACrDmD,EAAU,aAAa,uBAAuB,MAAM2e,KAAS,GAAG;AAAA,EAClE;AAAA,EACA,IAAI,iBAAiB;AACnB,UAAMmqC,IAAW,CAACC,GAAQC,GAAW7yD,MAAU;AAC7C,YAAM0F,IAAQ1F,EAAM,OAAO4yD,CAAM,GAC3B1D,IAAYxpD,EAAM,CAAC,GACnBotD,IAAaptD,EAAM,MAAM,CAAC;AAChC,MAAA1F,EAAM,OAAO,MAAM6yD,CAAS,IAAIvD,GAAgB,GAAGJ,CAAS,OAAO,EAAE4D,CAAU,GAC/E,KAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,QAC5C,CAACD,CAAS,GAAGvD,GAAgB,GAAGJ,CAAS,MAAM,EAAE4D,CAAU;AAAA,MACnE,CAAO;AAAA,IACH;AACA,WAAOt8D,EAAO,MAAM,kBAAkB;AAAA,MACpC,SAAS,CAAAwJ,MAAS;AAChB,cAAM;AAAA,UACJ,SAAA+yD;AAAA,QACV,IAAY/yD,EAAM,QACJgzD,IAASD,IAAU,MAAM;AAC/B,aAAK,UAAU,MAAM,aAAaC,IAAS,WAAW,WACtD,KAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,QAAQA;AAAA,UACR,SAASD,MAAY,KAAKA,MAAY;AAAA,QAChD,CAAS;AAAA,MACH;AAAA,MACA,OAAO,CAAA/yD,MAAS;AACd,aAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,SAAS,CAACA,EAAM,OAAO;AAAA,QACjC,CAAS;AAAA,MACH;AAAA,MACA,QAAQ,CAAAA,MAAS;AACf,cAAM;AAAA,UACJ,QAAAgzD;AAAA,QACV,IAAYhzD,EAAM;AACV,aAAK,UAAU,MAAM,aAAagzD,IAAS,WAAW,WACtD,KAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,SAASA;AAAA,UACT,QAAQA;AAAA,QAClB,CAAS;AAAA,MACH;AAAA,MACA,OAAO,CAAAhzD,MAAS;AACd,mBAAW,MAAMA,EAAM,OAAO,MAAM;AAAA,UAClC,eAAe;AAAA,QACzB,CAAS,GAAG,CAAC;AAAA,MACP;AAAA,MACA,UAAU,CAAAA,MAAS;AACjB,QAAAA,EAAM,OAAO,QAAQA,EAAM,OAAO;AAAA,MACpC;AAAA,MACA,UAAU,CAAAA,MAAS;AACjB,QAAAA,EAAM,OAAO,WAAWA,EAAM,OAAO;AAAA,MACvC;AAAA,MACA,UAAU,CAAAA,MAAS;AACjB,aAAK,aAAaA,EAAM,QAAQA,EAAM,OAAO,QAAQ;AAAA,MACvD;AAAA,MACA,SAAS,CAAAA,MAAS;AAChB,QAAA2yD,EAAS,WAAW,mBAAmB3yD,CAAK;AAAA,MAC9C;AAAA,MACA,WAAW,CAAAA,MAAS;AAClB,QAAA2yD,EAAS,aAAa,mBAAmB3yD,CAAK;AAAA,MAChD;AAAA,MACA,SAAS,CAAAA,MAAS;AAChB,QAAA2yD,EAAS,WAAW,SAAS3yD,CAAK;AAAA,MACpC;AAAA,MACA,WAAW,CAAAA,MAAS;AAClB,QAAA2yD,EAAS,aAAa,SAAS3yD,CAAK;AAAA,MACtC;AAAA,MACA,aAAa,CAAAA,MAAS;AACpB,QAAA2yD,EAAS,eAAe,eAAe3yD,CAAK;AAAA,MAC9C;AAAA,MACA,aAAa,CAAAA,MAAS;AACpB,QAAA2yD,EAAS,eAAe,eAAe3yD,CAAK;AAAA,MAC9C;AAAA,MACA,UAAU,CAAAA,MAAS;AACjB,cAAMwoB,IAAQxoB,EAAM,OAAO;AAC3B,aAAK,YAAYwoB,CAAK,GACtB,KAAK,kBAAkB,SAAS,KAAK,KAAK,IAAI;AAAA,UAC5C,UAAUA;AAAA,QACpB,CAAS;AAAA,MACH;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,0BAA0ByqC,GAASC,GAAS;AAC1C,UAAMC,IAAgB,KAAK;AAC3B,eAAWp8D,KAAQ,OAAO,KAAKm8D,EAAQ,MAAM,GAAG;AAC9C,YAAM9qC,IAAS6qC,EAAQl8D,CAAI,KAAKo8D,EAAcp8D,CAAI;AAClD,MAAAqxB,KAAA,QAAAA,EAAS8qC;AAAA,IACX;AAAA,EACF;AAAA,EACA,4BAA4BtzD,GAAS;AACnC,QAAI,CAAC,KAAK;AACR;AAEF,UAAMG,IAAa,KAAK,kBAAkB,YAAY,KAAK,KAAK,EAAE;AAClE,QAAI,CAACA;AACH;AAEF,UAAMozD,IAAgB,KAAK;AAC3B,eAAW,CAAC17B,GAAY27B,CAAM,KAAK,OAAO,QAAQrzD,CAAU,GAAG;AAC7D,YAAMqoB,IAAS+qC,EAAc17B,CAAU;AACvC,UAAIrP,GAAQ;AACV,cAAMirC,IAAa;AAAA,UACjB,QAAQ;AAAA,YACN,CAAC57B,CAAU,GAAG27B;AAAA,UAC1B;AAAA,UACU,QAAQxzD;AAAA,QAClB;AACQ,QAAAwoB,EAAOirC,CAAU,GACjB,OAAOtzD,EAAW03B,CAAU;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EACA,wBAAwB;AACtB,QAAI,CAAC,KAAK;AACR;AAEF,UAAM;AAAA,MACJ,YAAAy6B;AAAA,IACN,IAAQ,KAAK;AACT,QAAI,CAACA;AACH;AAEF,UAAM,CAACoB,GAASC,GAASC,GAASC,CAAO,IAAI,KAAK,KAAK,KAAK,IAAI,CAAAp3D,MAAK,KAAK,OAAOA,CAAC,CAAC;AACnF,QAAI61D,EAAW,WAAW,GAAG;AAC3B,YAAM,CAACnrC,GAAKH,GAAKC,GAAKC,CAAG,IAAIorC,EAAW,SAAS,GAAG,CAAC;AACrD,UAAIsB,MAAYzsC,KAAO0sC,MAAY7sC,KAAO0sC,MAAYzsC,KAAO0sC,MAAYzsC;AACvE;AAAA,IAEJ;AACA,UAAM;AAAA,MACJ,OAAAngB;AAAA,IACN,IAAQ,KAAK;AACT,QAAI+sD;AACJ,QAAI9uD,EAAA,MAAK8sD,KAAY;AACnB,YAAM;AAAA,QACJ,aAAAgB;AAAA,QACA,aAAAiB;AAAA,MACR,IAAUhtD;AACJ,MAAAA,EAAM,cAAc,GACpB+sD,IAAY,CAAC,iCAAiC,2CAA2C,kDAAkD,iCAAiChB,CAAW,mBAAmBiB,CAAW,IAAI,GACzN,KAAK,UAAU,UAAU,IAAI,WAAW;AAAA,IAC1C;AACA,UAAMjxD,IAAQ8wD,IAAUF,GAClB3wD,IAAS8wD,IAAUF,GACnB;AAAA,MACJ,YAAAK;AAAA,IACN,IAAQ,MACEnlD,IAAMmlD,EAAW,cAAc,KAAK;AAC1C,IAAAnlD,EAAI,UAAU,IAAI,yBAAyB,GAC3CA,EAAI,aAAa,SAAS,CAAC,GAC3BA,EAAI,aAAa,UAAU,CAAC,GAC5BA,EAAI,OAAO;AACX,UAAMolD,IAAOD,EAAW,cAAc,MAAM;AAC5C,IAAAnlD,EAAI,OAAOolD,CAAI;AACf,UAAMC,IAAWF,EAAW,cAAc,UAAU,GAC9Cj0D,IAAK,YAAY,KAAK,KAAK,EAAE;AACnC,IAAAm0D,EAAS,aAAa,MAAMn0D,CAAE,GAC9Bm0D,EAAS,aAAa,iBAAiB,mBAAmB,GAC1DD,EAAK,OAAOC,CAAQ;AACpB,aAAS/7D,IAAI,GAAGmL,IAAKgvD,EAAW,QAAQn6D,IAAImL,GAAInL,KAAK,GAAG;AACtD,YAAMgvB,IAAMmrC,EAAWn6D,CAAC,GAClB6uB,IAAMsrC,EAAWn6D,IAAI,CAAC,GACtB8uB,IAAMqrC,EAAWn6D,IAAI,CAAC,GACtB+uB,IAAMorC,EAAWn6D,IAAI,CAAC,GACtByC,IAAOo5D,EAAW,cAAc,MAAM,GACtCv3D,KAAKwqB,IAAMysC,KAAW5wD,GACtBpG,KAAKm3D,IAAU7sC,KAAOjkB,GACtBoxD,KAAahtC,IAAMF,KAAOnkB,GAC1BsxD,KAAcptC,IAAME,KAAOnkB;AACjC,MAAAnI,EAAK,aAAa,KAAK6B,CAAC,GACxB7B,EAAK,aAAa,KAAK8B,CAAC,GACxB9B,EAAK,aAAa,SAASu5D,CAAS,GACpCv5D,EAAK,aAAa,UAAUw5D,CAAU,GACtCF,EAAS,OAAOt5D,CAAI,GACpBk5D,KAAA,QAAAA,EAAW,KAAK,+CAA+Cr3D,CAAC,QAAQC,CAAC,YAAYy3D,CAAS,aAAaC,CAAU;AAAA,IACvH;AACA,IAAIpvD,EAAA,MAAK8sD,QACPgC,EAAU,KAAK,cAAc,GAC7B/sD,EAAM,kBAAkB+sD,EAAU,KAAK,EAAE,IAE3C,KAAK,UAAU,OAAOjlD,CAAG,GACzB,KAAK,UAAU,MAAM,WAAW,QAAQ9O,CAAE;AAAA,EAC5C;AAAA,EACA,aAAas0D,IAAY,MAAM;AAC7B,UAAM;AAAA,MACJ,MAAA/pD;AAAA,IACN,IAAQ;AACJ,QAAIgR,GAAakM;AACjB,IAAI6sC,KACF/4C,IAAc;AAAA,MACZ,KAAK+4C,EAAU;AAAA,IACvB,GACM7sC,IAAmB6sC,EAAU,SAE7B/4C,IAAchR,EAAK,aACnBkd,IAAmBld,EAAK,mBAE1BrF,EAAA,MAAK8sD,IAAgB,IAAIlB,GAAuB;AAAA,MAC9C,MAAM;AAAA,QACJ,OAAOvmD,EAAK;AAAA,QACZ,UAAUA,EAAK;AAAA,QACf,kBAAAkd;AAAA,QACA,aAAAlM;AAAA,QACA,UAAUhR,EAAK;AAAA,QACf,YAAYA,EAAK;AAAA,QACjB,aAAa;AAAA,QACb,IAAI,SAASA,EAAK,EAAE;AAAA,QACpB,UAAUA,EAAK;AAAA,QACf,UAAU;AAAA,MAClB;AAAA,MACM,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,UAAU,CAAC,IAAI;AAAA,IACrB,CAAK;AAAA,EACH;AAAA,EACA,IAAI,kBAAkB;AACpB,WAAO,CAAC,EAAEtF,EAAA,MAAK+sD,OAAiB,KAAK,SAAS,KAAK,KAAK;AAAA,EAC1D;AAAA,EACA,IAAI,oBAAoB;AACtB,WAAO/sD,EAAA,MAAK+sD;AAAA,EACd;AAAA,EACA,SAAS;AACP,IAAAl8D,GAAY,mDAAmD;AAAA,EACjE;AAAA,EACA,mBAAmBsB,GAAMm9D,IAAS,MAAM;AACtC,UAAMC,IAAS,CAAA;AACf,QAAI,KAAK,eAAe;AACtB,YAAMC,IAAW,KAAK,cAAcr9D,CAAI;AACxC,UAAIq9D;AACF,mBAAW;AAAA,UACT,MAAAj2D;AAAA,UACA,IAAAwB;AAAA,UACA,cAAA00D;AAAA,QACV,KAAaD,GAAU;AAIb,cAHIj2D,MAAS,MAGTwB,MAAOu0D;AACT;AAEF,gBAAMI,IAAc,OAAOD,KAAiB,WAAWA,IAAe,MAChEE,IAAa,SAAS,cAAc,qBAAqB50D,CAAE,IAAI;AACrE,cAAI40D,KAAc,CAAC1E,GAAqB,IAAI0E,CAAU,GAAG;AACvD,YAAA/+D,EAAK,6CAA6CmK,CAAE,EAAE;AACtD;AAAA,UACF;AACA,UAAAw0D,EAAO,KAAK;AAAA,YACV,IAAAx0D;AAAA,YACA,aAAA20D;AAAA,YACA,YAAAC;AAAA,UACZ,CAAW;AAAA,QACH;AAEF,aAAOJ;AAAA,IACT;AACA,eAAWI,KAAc,SAAS,kBAAkBx9D,CAAI,GAAG;AACzD,YAAM;AAAA,QACJ,aAAAu9D;AAAA,MACR,IAAUC,GACE50D,IAAK40D,EAAW,aAAa,iBAAiB;AACpD,MAAI50D,MAAOu0D,KAGNrE,GAAqB,IAAI0E,CAAU,KAGxCJ,EAAO,KAAK;AAAA,QACV,IAAAx0D;AAAA,QACA,aAAA20D;AAAA,QACA,YAAAC;AAAA,MACR,CAAO;AAAA,IACH;AACA,WAAOJ;AAAA,EACT;AAAA,EACA,OAAO;AA7yhBT,QAAAx7D;AA8yhBI,IAAI,KAAK,cACP,KAAK,UAAU,SAAS,MAE1BA,IAAA,KAAK,UAAL,QAAAA,EAAY;AAAA,EACd;AAAA,EACA,OAAO;AAnzhBT,QAAAA;AAozhBI,IAAI,KAAK,cACP,KAAK,UAAU,SAAS,MAE1BA,IAAA,KAAK,UAAL,QAAAA,EAAY;AAAA,EACd;AAAA,EACA,4BAA4B;AAC1B,WAAO,KAAK;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,UAAM67D,IAAW,KAAK,0BAAyB;AAC/C,QAAI,MAAM,QAAQA,CAAQ;AACxB,iBAAW50D,KAAW40D;AACpB,QAAA50D,EAAQ,UAAU,IAAI,eAAe;AAAA;AAGvC,MAAA40D,EAAS,UAAU,IAAI,eAAe;AAAA,EAE1C;AAAA,EACA,qBAAqB;AACnB,QAAI,CAAC,KAAK;AACR;AAEF,UAAM;AAAA,MACJ,sBAAsB/7C;AAAA,MACtB,MAAM;AAAA,QACJ,IAAI4B;AAAA,MACZ;AAAA,IACA,IAAQ;AACJ,SAAK,UAAU,iBAAiB,YAAY,MAAM;AAh1hBtD,UAAA1hB;AAi1hBM,OAAAA,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,8BAA8B;AAAA,QAChE,QAAQ;AAAA,QACR,MAAA8f;AAAA,QACA,QAAA4B;AAAA,QACA,qBAAqB;AAAA,MAC7B;AAAA,IACI,CAAC;AAAA,EACH;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,EAC7C;AAAA,EACA,IAAI,SAAS;AACX,WAAO,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,EAC7C;AACF;AA9oBEo3C,KAAA,eACAC,KAAA,eACAC,KAAA,eAHFC,KAAA,eA+LEC,KAAc,SAACr3D,GAAM;AACnB,QAAM;AAAA,IACJ,WAAW;AAAA,MACT,OAAAmM;AAAA,IACR;AAAA,IACM,MAAM;AAAA,MACJ,MAAM8tD;AAAA,MACN,UAAA3yD;AAAA,IACR;AAAA,IACM,QAAQ;AAAA,MACN,UAAU;AAAA,QACR,SAAS;AAAA,UACP,WAAA2E;AAAA,UACA,YAAAC;AAAA,UACA,OAAA+e;AAAA,UACA,OAAAC;AAAA,QACZ;AAAA,MACA;AAAA,IACA;AAAA,EACA,IAAQ;AACJ,EAAA+uC,KAAA,QAAAA,EAAa,OAAO,GAAG,GAAG,GAAGj6D,IAC7BmM,EAAM,OAAO,GAAG,OAAOnM,EAAK,CAAC,IAAIirB,KAAShf,CAAS,KACnDE,EAAM,MAAM,GAAG,OAAOD,IAAalM,EAAK,CAAC,IAAIkrB,KAAShf,CAAU,KAC5D5E,MAAa,KACf6E,EAAM,QAAQ,GAAG,OAAOnM,EAAK,CAAC,IAAIA,EAAK,CAAC,KAAKiM,CAAS,KACtDE,EAAM,SAAS,GAAG,OAAOnM,EAAK,CAAC,IAAIA,EAAK,CAAC,KAAKkM,CAAU,OAExD,KAAK,YAAY5E,CAAQ;AAE7B;AA5NF,IAAM0vD,KAANM;AAgpBA,MAAM4C,WAAgClD,GAAkB;AAAA,EACtD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK,GACD,KAAK,SAASA,EAAW;AAAA,EAC3B;AAAA,EACA,SAAS;AACP,gBAAK,UAAU,YAAY,oBACpB,KAAK;AAAA,EACd;AAAA,EACA,sBAAsB;AACpB,UAAM;AAAA,MACJ,QAAA+K;AAAA,IACN,IAAQ;AACJ,IAAKA,EAAO,cAGZ,KAAK,aAAaA,EAAO,OAAO;AAAA,EAClC;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,KAAK,iBAAiB,KAAK,OAAO;AAAA,EAC3C;AAAA,EACA,IAAI,wBAAwB;AAC1B,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,OAAO,QAAQ;AAAA,EAC7B;AAAA,EACA,IAAI,YAAY8N,GAAM;AACpB,SAAK,OAAO,UAAUA,GACjBA,KACH,KAAK,YAAW;AAAA,EAEpB;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,OAAO,QAAO;AAAA,EAC5B;AAAA,EACA,SAAS;AACP,SAAK,OAAO,iBAAiB,KAAK,KAAK,EAAE,GACzC,KAAK,UAAU,OAAM,GACrB,KAAK,YAAY,MACjB,KAAK,YAAW;AAAA,EAClB;AACF;AA74hBA,IAAAw7C,IAAAC,IAAAC,IAAAC;AA84hBA,MAAM9E,WAA8BwB,GAAkB;AAAA,EACpD,YAAYlxD,GAAYtK,IAAU,MAAM;AACtC,UAAMsK,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc,CAAC,EAACtK,KAAA,QAAAA,EAAS;AAAA,MACzB,sBAAsB;AAAA,IAC5B,CAAK;AANL,IAAAsH,EAAA,MAAAq3D;AAOI,SAAK,gBAAgBr0D,EAAW,KAAK;AAAA,EACvC;AAAA,EACA,SAAS;AACP,UAAM;AAAA,MACJ,MAAA4J;AAAA,MACA,aAAAhK;AAAA,IACN,IAAQ,MACE60D,IAAO,SAAS,cAAc,GAAG;AACvC,IAAAA,EAAK,aAAa,mBAAmB7qD,EAAK,EAAE;AAC5C,QAAI8qD,IAAU;AACd,WAAI9qD,EAAK,OACPhK,EAAY,kBAAkB60D,GAAM7qD,EAAK,KAAKA,EAAK,SAAS,GAC5D8qD,IAAU,MACD9qD,EAAK,UACd,KAAK,iBAAiB6qD,GAAM7qD,EAAK,QAAQA,EAAK,YAAY,GAC1D8qD,IAAU,MACD9qD,EAAK,cACdnN,EAAA,MAAK43D,IAAAE,IAAL,WAAqBE,GAAM7qD,EAAK,YAAYA,EAAK,cAAcA,EAAK,iBACpE8qD,IAAU,MACD9qD,EAAK,eACdnN,EAAA,MAAK43D,IAAAG,IAAL,WAAsBC,GAAM7qD,EAAK,aAAaA,EAAK,eACnD8qD,IAAU,MACD9qD,EAAK,QACd,KAAK,UAAU6qD,GAAM7qD,EAAK,MAAMA,EAAK,YAAY,GACjD8qD,IAAU,OAEN9qD,EAAK,YAAYA,EAAK,QAAQ,UAAUA,EAAK,QAAQ,UAAU,KAAKA,EAAK,QAAQ,YAAY,MAAM,KAAK,mBAAmB,KAAK,iBAClI,KAAK,cAAc6qD,GAAM7qD,CAAI,GAC7B8qD,IAAU,KAER9qD,EAAK,aACP,KAAK,qBAAqB6qD,GAAM7qD,EAAK,SAAS,GAC9C8qD,IAAU,MACD,KAAK,iBAAiB,CAACA,MAChC,KAAK,UAAUD,GAAM,EAAE,GACvBC,IAAU,MAGd,KAAK,UAAU,UAAU,IAAI,gBAAgB,GACzCA,MACF,KAAK,iBAAiBD,GACtB,KAAK,UAAU,OAAOA,CAAI,IAErB,KAAK;AAAA,EACd;AAAA,EAIA,UAAUA,GAAME,GAAaC,IAAe,IAAI;AAC9C,IAAAH,EAAK,OAAO,KAAK,YAAY,mBAAmBE,CAAW,GAC3DF,EAAK,UAAU,OACTE,KACF,KAAK,YAAY,gBAAgBA,CAAW,GAEvC,MAELA,KAAeA,MAAgB,OACjCl4D,EAAA,MAAK43D,IAAAC,IAAL,YAEEM,MACFH,EAAK,QAAQG;AAAA,EAEjB;AAAA,EACA,iBAAiBH,GAAM3sC,GAAQ8sC,IAAe,IAAI;AAChD,IAAAH,EAAK,OAAO,KAAK,YAAY,aAAa,EAAE,GAC5CA,EAAK,UAAU,OACb,KAAK,YAAY,mBAAmB3sC,CAAM,GACnC,KAEL8sC,MACFH,EAAK,QAAQG,IAEfn4D,EAAA,MAAK43D,IAAAC,IAAL;AAAA,EACF;AAAA,EAyBA,cAAcG,GAAM7qD,GAAM;AACxB,IAAA6qD,EAAK,OAAO,KAAK,YAAY,aAAa,EAAE;AAC5C,UAAMn9C,IAAM,oBAAI,IAAI,CAAC,CAAC,UAAU,SAAS,GAAG,CAAC,YAAY,WAAW,GAAG,CAAC,cAAc,aAAa,CAAC,CAAC;AACrG,eAAW7gB,KAAQ,OAAO,KAAKmT,EAAK,OAAO,GAAG;AAC5C,YAAM0oD,IAASh7C,EAAI,IAAI7gB,CAAI;AAC3B,MAAK67D,MAGLmC,EAAKnC,CAAM,IAAI,MAAM;AA//hB3B,YAAAj6D;AAggiBQ,gBAAAA,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,UAC5D,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,IAAIuR,EAAK;AAAA,YACT,MAAAnT;AAAA,UACZ;AAAA,QACA,IACe;AAAA,MACT;AAAA,IACF;AACA,IAAImT,EAAK,iBACP6qD,EAAK,QAAQ7qD,EAAK,eAEf6qD,EAAK,YACRA,EAAK,UAAU,MAAM,KAEvBh4D,EAAA,MAAK43D,IAAAC,IAAL;AAAA,EACF;AAAA,EACA,qBAAqBG,GAAMI,GAAW;AACpC,UAAMC,IAAmBL,EAAK;AAK9B,QAJKK,MACHL,EAAK,OAAO,KAAK,YAAY,aAAa,EAAE,IAE9Ch4D,EAAA,MAAK43D,IAAAC,IAAL,YACI,CAAC,KAAK,eAAe;AACvB,MAAAp/D,EAAK,gHAAqH,GACrH4/D,MACHL,EAAK,UAAU,MAAM;AAEvB;AAAA,IACF;AACA,IAAAA,EAAK,UAAU,MAAM;AA/hiBzB,UAAAp8D;AAgiiBM,MAAAy8D,KAAA,QAAAA;AACA,YAAM;AAAA,QACJ,QAAQC;AAAA,QACR,MAAMC;AAAA,QACN,SAAAC;AAAA,MACR,IAAUJ,GACEK,IAAY,CAAA;AAClB,UAAIH,EAAgB,WAAW,KAAKC,EAAc,WAAW,GAAG;AAC9D,cAAMG,IAAW,IAAI,IAAIH,CAAa;AACtC,mBAAWI,KAAaL,GAAiB;AACvC,gBAAMlB,IAAS,KAAK,cAAcuB,CAAS,KAAK,CAAA;AAChD,qBAAW;AAAA,YACT,IAAA/1D;AAAA,UACZ,KAAew0D;AACH,YAAAsB,EAAS,IAAI91D,CAAE;AAAA,QAEnB;AACA,mBAAWw0D,KAAU,OAAO,OAAO,KAAK,aAAa;AACnD,qBAAWwB,KAASxB;AAClB,YAAIsB,EAAS,IAAIE,EAAM,EAAE,MAAMJ,KAC7BC,EAAU,KAAKG,CAAK;AAAA,MAI5B;AACE,mBAAWxB,KAAU,OAAO,OAAO,KAAK,aAAa;AACnD,UAAAqB,EAAU,KAAK,GAAGrB,CAAM;AAG5B,YAAMt0D,IAAU,KAAK,mBACf+1D,IAAS,CAAA;AACf,iBAAWD,KAASH,GAAW;AAC7B,cAAM;AAAA,UACJ,IAAA71D;AAAA,QACV,IAAYg2D;AAEJ,gBADAC,EAAO,KAAKj2D,CAAE,GACNg2D,EAAM,MAAI;AAAA,UAChB,KAAK,QACH;AACE,kBAAMh/D,IAAQg/D,EAAM,gBAAgB;AACpC,YAAA91D,EAAQ,SAASF,GAAI;AAAA,cACnB,OAAAhJ;AAAA,YAChB,CAAe;AACD;AAAA,UACF;AAAA,UACF,KAAK;AAAA,UACL,KAAK,eACH;AACE,kBAAMA,IAAQg/D,EAAM,iBAAiBA,EAAM;AAC3C,YAAA91D,EAAQ,SAASF,GAAI;AAAA,cACnB,OAAAhJ;AAAA,YAChB,CAAe;AACD;AAAA,UACF;AAAA,UACF,KAAK;AAAA,UACL,KAAK,WACH;AACE,kBAAMA,IAAQg/D,EAAM,gBAAgB;AACpC,YAAA91D,EAAQ,SAASF,GAAI;AAAA,cACnB,OAAAhJ;AAAA,YAChB,CAAe;AACD;AAAA,UACF;AAAA,UACF;AACE;AAAA,QACZ;AACQ,cAAM49D,IAAa,SAAS,cAAc,qBAAqB50D,CAAE,IAAI;AACrE,YAAK40D;AAEE,cAAI,CAAC1E,GAAqB,IAAI0E,CAAU,GAAG;AAChD,YAAA/+D,EAAK,+CAA+CmK,CAAE,EAAE;AACxD;AAAA,UACF;AAAA,cAJE;AAKF,QAAA40D,EAAW,cAAc,IAAI,MAAM,WAAW,CAAC;AAAA,MACjD;AACA,aAAI,KAAK,qBACP57D,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,QAC5D,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,IAAI;AAAA,UACJ,KAAKi9D;AAAA,UACL,MAAM;AAAA,QAClB;AAAA,MACA,KAEa;AAAA,IACT;AAAA,EACF;AACF;AA1OAjB,KAAA,eAoDEC,KAAgB,WAAG;AACjB,OAAK,UAAU,aAAa,sBAAsB,EAAE;AACtD,GA2BAC,KAAe,SAACE,GAAMc,GAAYX,IAAe,IAAIh3D,IAAO,MAAM;AAChE,EAAA62D,EAAK,OAAO,KAAK,YAAY,aAAa,EAAE,GACxCc,EAAW,cACbd,EAAK,QAAQc,EAAW,cACfX,MACTH,EAAK,QAAQG,IAEfH,EAAK,UAAU,MAAM;AAt+hBzB,QAAAp8D;AAu+hBM,YAAAA,IAAA,KAAK,oBAAL,QAAAA,EAAsB,mBAAmBk9D,EAAW,SAASA,EAAW,UAAU33D,IAC3E;AAAA,EACT,GACAnB,EAAA,MAAK43D,IAAAC,IAAL;AACF,GACAE,KAAgB,SAACC,GAAM3sC,GAAQ8sC,IAAe,IAAI;AAChD,EAAAH,EAAK,OAAO,KAAK,YAAY,aAAa,EAAE,GAC5CA,EAAK,UAAU,OACb,KAAK,YAAY,mBAAmB3sC,CAAM,GACnC,KAEL8sC,MACFH,EAAK,QAAQG,IAEfn4D,EAAA,MAAK43D,IAAAC,IAAL;AACF;AAmIF,MAAM3E,WAA8BuB,GAAkB;AAAA,EACpD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,IACpB,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,UAAMoO,IAAQ,SAAS,cAAc,KAAK;AAC1C,WAAAA,EAAM,MAAM,KAAK,qBAAqB,gBAAgB,KAAK,KAAK,KAAK,YAAW,IAAK,QACrFA,EAAM,aAAa,gBAAgB,4BAA4B,GAC/DA,EAAM,aAAa,kBAAkB,KAAK,UAAU;AAAA,MAClD,MAAM,KAAK,KAAK;AAAA,IACtB,CAAK,CAAC,GACE,CAAC,KAAK,KAAK,YAAY,KAAK,iBAC9B,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,OAAOA,CAAK,GACpB,KAAK;AAAA,EACd;AACF;AACA,MAAM8hD,WAAgCgB,GAAkB;AAAA,EACtD,SAAS;AACP,WAAO,KAAK;AAAA,EACd;AAAA,EACA,yBAAyB5xD,GAAS;AAnpiBpC,QAAAjH;AAopiBI,IAAI,KAAK,KAAK,mBACRA,IAAAiH,EAAQ,oBAAR,gBAAAjH,EAAyB,cAAa,aACxCiH,EAAQ,gBAAgB,SAAS,KAEnCA,EAAQ,SAAS;AAAA,EAErB;AAAA,EACA,gBAAgBI,GAAO;AACrB,WAAOxH,GAAiB,SAAS,QAAQwH,EAAM,UAAUA,EAAM;AAAA,EACjE;AAAA,EACA,kBAAkBJ,GAASk2D,GAAaC,GAAUC,GAAWC,GAAa;AACxE,IAAIF,EAAS,SAAS,OAAO,IAC3Bn2D,EAAQ,iBAAiBm2D,GAAU,CAAA/1D,MAAS;AAhqiBlD,UAAArH;AAiqiBQ,OAAAA,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,QAC5D,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,IAAI,KAAK,KAAK;AAAA,UACd,MAAMq9D;AAAA,UACN,OAAOC,EAAYj2D,CAAK;AAAA,UACxB,OAAOA,EAAM;AAAA,UACb,UAAU,KAAK,gBAAgBA,CAAK;AAAA,QAChD;AAAA,MACA;AAAA,IACM,CAAC,IAEDJ,EAAQ,iBAAiBm2D,GAAU,CAAA/1D,MAAS;AA7qiBlD,UAAArH;AA8qiBQ,UAAIo9D,MAAa,QAAQ;AACvB,YAAI,CAACD,EAAY,WAAW,CAAC91D,EAAM;AACjC;AAEF,QAAA81D,EAAY,UAAU;AAAA,MACxB,WAAWC,MAAa,SAAS;AAC/B,YAAID,EAAY;AACd;AAEF,QAAAA,EAAY,UAAU;AAAA,MACxB;AACA,MAAKG,OAGLt9D,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,QAC5D,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,IAAI,KAAK,KAAK;AAAA,UACd,MAAMq9D;AAAA,UACN,OAAOC,EAAYj2D,CAAK;AAAA,QACpC;AAAA,MACA;AAAA,IACM,CAAC;AAAA,EAEL;AAAA,EACA,mBAAmBJ,GAASk2D,GAAavoD,GAAO2oD,GAAQ;AAvsiB1D,QAAAv9D,GAAAC,GAAAse;AAwsiBI,eAAW,CAAC6+C,GAAUC,CAAS,KAAKzoD;AAClC,OAAIyoD,MAAc,aAAYr9D,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAoBq9D,SAC5CA,MAAc,WAAWA,MAAc,YACzCF,UAAgB;AAAA,QACd,SAAS;AAAA,MACrB,KAEQ,KAAK,kBAAkBl2D,GAASk2D,GAAaC,GAAUC,GAAWE,CAAM,GACpEF,MAAc,WAAW,GAACp9D,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAmB,QAC/C,KAAK,kBAAkBgH,GAASk2D,GAAa,QAAQ,QAAQ,IAAI,IACxDE,MAAc,UAAU,GAAC9+C,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAmB,UACrD,KAAK,kBAAkBtX,GAASk2D,GAAa,SAAS,SAAS,IAAI;AAAA,EAI3E;AAAA,EACA,oBAAoBl2D,GAAS;AAC3B,UAAM8F,IAAQ,KAAK,KAAK,mBAAmB;AAC3C,IAAA9F,EAAQ,MAAM,kBAAkB8F,MAAU,OAAO,gBAAgBxM,EAAK,aAAawM,EAAM,CAAC,GAAGA,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAAA,EACjH;AAAA,EACA,cAAc9F,GAAS;AACrB,UAAMu2D,IAAiB,CAAC,QAAQ,UAAU,OAAO,GAC3C;AAAA,MACJ,WAAAC;AAAA,IACN,IAAQ,KAAK,KAAK,uBACRpjB,IAAW,KAAK,KAAK,sBAAsB,YAAY4c,IACvDjpD,IAAQ/G,EAAQ;AACtB,QAAIy2D;AACJ,UAAMC,IAAc,GACdC,IAAoB,CAAAl6D,MAAK,KAAK,MAAM,KAAKA,CAAC,IAAI;AACpD,QAAI,KAAK,KAAK,WAAW;AACvB,YAAMsG,IAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI2zD,CAAW,GACrEE,IAAgB,KAAK,MAAM7zD,KAAUzO,KAAc8+C,EAAS,KAAK,GACjEyjB,IAAa9zD,IAAS6zD;AAC5B,MAAAH,IAAmB,KAAK,IAAIrjB,GAAUujB,EAAkBE,IAAaviE,EAAW,CAAC;AAAA,IACnF,OAAO;AACL,YAAMyO,IAAS,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI2zD,CAAW;AAC3E,MAAAD,IAAmB,KAAK,IAAIrjB,GAAUujB,EAAkB5zD,IAASzO,EAAW,CAAC;AAAA,IAC/E;AACA,IAAAyS,EAAM,WAAW,QAAQ0vD,CAAgB,mCACzC1vD,EAAM,QAAQzN,EAAK,aAAak9D,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GACpE,KAAK,KAAK,kBAAkB,SAC9BzvD,EAAM,YAAYwvD,EAAe,KAAK,KAAK,aAAa;AAAA,EAE5D;AAAA,EACA,aAAav2D,GAAS82D,GAAY;AAChC,IAAIA,IACF92D,EAAQ,aAAa,YAAY,EAAI,IAErCA,EAAQ,gBAAgB,UAAU,GAEpCA,EAAQ,aAAa,iBAAiB82D,CAAU;AAAA,EAClD;AACF;AACA,MAAMxG,WAAoCM,GAAwB;AAAA,EAChE,YAAYlwD,GAAY;AACtB,UAAMyxD,IAAezxD,EAAW,eAAeA,EAAW,KAAK,gBAAgB,CAACA,EAAW,KAAK,iBAAiB,CAAC,CAACA,EAAW,KAAK;AACnI,UAAMA,GAAY;AAAA,MAChB,cAAAyxD;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,sBAAsB5G,GAAM9qD,GAAK1J,GAAOggE,GAAc;AACpD,UAAM92D,IAAU,KAAK;AACrB,eAAWD,KAAW,KAAK,mBAAmBurD,EAAK,MAAMA,EAAK,EAAE;AAC9D,MAAIvrD,EAAQ,eACVA,EAAQ,WAAWS,CAAG,IAAI1J,IAE5BkJ,EAAQ,SAASD,EAAQ,IAAI;AAAA,QAC3B,CAAC+2D,CAAY,GAAGhgE;AAAA,MACxB,CAAO;AAAA,EAEL;AAAA,EACA,SAAS;AAhxiBX,QAAAgC,GAAAC;AAixiBI,UAAMiH,IAAU,KAAK,mBACfF,IAAK,KAAK,KAAK;AACrB,SAAK,UAAU,UAAU,IAAI,sBAAsB;AACnD,QAAIC,IAAU;AACd,QAAI,KAAK,aAAa;AACpB,YAAMG,IAAaF,EAAQ,SAASF,GAAI;AAAA,QACtC,OAAO,KAAK,KAAK;AAAA,MACzB,CAAO;AACD,UAAIspD,IAAclpD,EAAW,SAAS;AACtC,YAAM62D,IAAS/2D,EAAQ,SAASF,GAAI;AAAA,QAClC,WAAW,KAAK,KAAK;AAAA,MAC7B,CAAO,EAAE;AACH,MAAIi3D,KAAU3N,EAAY,SAAS2N,MACjC3N,IAAcA,EAAY,MAAM,GAAG2N,CAAM;AAE3C,UAAIC,IAAuB92D,EAAW,oBAAkBpH,IAAA,KAAK,KAAK,gBAAV,gBAAAA,EAAuB,KAAK;AAAA,OAAS;AAC7F,MAAIk+D,KAAwB,KAAK,KAAK,SACpCA,IAAuBA,EAAqB,WAAW,QAAQ,EAAE;AAEnE,YAAMf,IAAc;AAAA,QAClB,WAAW7M;AAAA,QACX,gBAAgB4N;AAAA,QAChB,oBAAoB;AAAA,QACpB,WAAW;AAAA,QACX,SAAS;AAAA,MACjB;AACM,MAAI,KAAK,KAAK,aACZj3D,IAAU,SAAS,cAAc,UAAU,GAC3CA,EAAQ,cAAci3D,KAAwB5N,GAC1C,KAAK,KAAK,gBACZrpD,EAAQ,MAAM,YAAY,cAG5BA,IAAU,SAAS,cAAc,OAAO,GACxCA,EAAQ,OAAO,KAAK,KAAK,WAAW,aAAa,QACjDA,EAAQ,aAAa,SAASi3D,KAAwB5N,CAAW,GAC7D,KAAK,KAAK,gBACZrpD,EAAQ,MAAM,YAAY,YAG1B,KAAK,KAAK,iBACZA,EAAQ,SAAS,KAEnBiwD,GAAqB,IAAIjwD,CAAO,GAChC,KAAK,iBAAiBA,GACtBA,EAAQ,aAAa,mBAAmBD,CAAE,GAC1CC,EAAQ,WAAW,KAAK,KAAK,UAC7BA,EAAQ,OAAO,KAAK,KAAK,WACzBA,EAAQ,WAAW;AACnB,YAAM;AAAA,QACJ,gBAAAk3D;AAAA,QACA,cAAAC;AAAA,QACA,UAAAC;AAAA,MACR,IAAU,KAAK,MACHC,IAAgB,CAAC,CAACF,KAAgB,KAAK;AAC7C,MAAID,MACFl3D,EAAQ,QAAQk3D,IAElB,KAAK,aAAal3D,GAAS,KAAK,KAAK,QAAQ,GACzCg3D,MACFh3D,EAAQ,YAAYg3D,IAEtBh3D,EAAQ,iBAAiB,SAAS,CAAAI,MAAS;AACzC,QAAAH,EAAQ,SAASF,GAAI;AAAA,UACnB,OAAOK,EAAM,OAAO;AAAA,QAC9B,CAAS,GACD,KAAK,sBAAsBJ,GAAS,SAASI,EAAM,OAAO,OAAO,OAAO,GACxE81D,EAAY,iBAAiB;AAAA,MAC/B,CAAC,GACDl2D,EAAQ,iBAAiB,aAAa,CAAAI,MAAS;AAC7C,cAAM0sB,IAAe,KAAK,KAAK,qBAAqB;AACpD,QAAA9sB,EAAQ,QAAQk2D,EAAY,YAAYppC,GACxCopC,EAAY,iBAAiB;AAAA,MAC/B,CAAC;AACD,UAAIoB,IAAe,CAAAl3D,MAAS;AAC1B,cAAM;AAAA,UACJ,gBAAAm3D;AAAA,QACV,IAAYrB;AACJ,QAAIqB,KAAmB,SACrBn3D,EAAM,OAAO,QAAQm3D,IAEvBn3D,EAAM,OAAO,aAAa;AAAA,MAC5B;AACA,UAAI,KAAK,mBAAmB,KAAK,cAAc;AAC7C,QAAAJ,EAAQ,iBAAiB,SAAS,CAAAI,MAAS;AAr2iBnD,cAAArH;AAs2iBU,cAAIm9D,EAAY;AACd;AAEF,gBAAM;AAAA,YACJ,QAAA7vC;AAAA,UACZ,IAAcjmB;AAOJ,cANIi3D,MACFhxC,EAAO,OAAO8wC,GACVC,MACF/wC,EAAO,OAAO+wC,KAGdlB,EAAY,WAAW;AACzB,kBAAMn/D,IAAQm/D,EAAY;AAC1B,gBAAImB;AACF,kBAAIF,MAAiB,QAAQ;AAC3B,sBAAMpwC,IAAO,IAAI,KAAKhwB,CAAK,GACrBgmD,IAAQ,CAACh2B,EAAK,SAAQ,GAAIA,EAAK,WAAU,GAAIA,EAAK,YAAY;AACpE,gBAAAV,EAAO,QAAQ02B,EAAM,IAAI,CAAAj+C,MAAKA,EAAE,WAAW,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,cACvE;AACE,gBAAAunB,EAAO,QAAQ,IAAI,KAAKtvB,IAAQm5D,EAAe,EAAE,YAAW,EAAG,MAAMiH,MAAiB,SAAS,MAAM,KAAK,CAAC,EAAE,CAAC;AAAA;AAGhH,cAAA9wC,EAAO,QAAQtvB;AAAA,UAEnB;AACA,UAAAm/D,EAAY,qBAAqB7vC,EAAO,OACxC6vC,EAAY,YAAY,IACnBn9D,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAmB,UACtBm9D,EAAY,UAAU;AAAA,QAE1B,CAAC,GACDl2D,EAAQ,iBAAiB,qBAAqB,CAAAszD,MAAW;AACvD,eAAK,yBAAyBA,EAAQ,MAAM;AAC5C,gBAAMD,IAAU;AAAA,YACd,MAAMjzD,GAAO;AACX,cAAA81D,EAAY,YAAY91D,EAAM,OAAO,SAAS,IACzCi3D,KACHp3D,EAAQ,SAASF,GAAI;AAAA,gBACnB,OAAOm2D,EAAY,UAAU,SAAQ;AAAA,cACvD,CAAiB,GAEH91D,EAAM,OAAO,QAAQ81D,EAAY;AAAA,YACnC;AAAA,YACA,eAAe91D,GAAO;AACpB,oBAAM;AAAA,gBACJ,gBAAAm3D;AAAA,cAChB,IAAkBn3D,EAAM;AACV,cAAA81D,EAAY,iBAAiBqB,GACzBA,KAAmB,QAAwCn3D,EAAM,WAAW,SAAS,kBACvFA,EAAM,OAAO,QAAQm3D;AAEvB,oBAAMjtD,IAAO;AAAA,gBACX,gBAAAitD;AAAA,cAChB;AACc,cAAIF,MACF/sD,EAAK,QAAQitD,IAEft3D,EAAQ,SAASF,GAAIuK,CAAI;AAAA,YAC3B;AAAA,YACA,SAASlK,GAAO;AACd,cAAAA,EAAM,OAAO,kBAAkB,GAAGA,EAAM,OAAO,QAAQ;AAAA,YACzD;AAAA,YACA,WAAW,CAAAA,MAAS;AAr6iBhC,kBAAArH;AAs6iBc,oBAAM;AAAA,gBACJ,WAAAy+D;AAAA,cAChB,IAAkBp3D,EAAM,QACJ;AAAA,gBACJ,QAAAimB;AAAA,cAChB,IAAkBjmB;AACJ,kBAAIo3D,MAAc,GAAG;AACnB,gBAAAnxC,EAAO,gBAAgB,WAAW;AAClC;AAAA,cACF;AACA,cAAAA,EAAO,aAAa,aAAamxC,CAAS;AAC1C,kBAAIzgE,IAAQm/D,EAAY;AACxB,cAAI,CAACn/D,KAASA,EAAM,UAAUygE,MAG9BzgE,IAAQA,EAAM,MAAM,GAAGygE,CAAS,GAChCnxC,EAAO,QAAQ6vC,EAAY,YAAYn/D,GACvCkJ,EAAQ,SAASF,GAAI;AAAA,gBACnB,OAAAhJ;AAAA,cAChB,CAAe,IACDgC,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,gBAC5D,QAAQ;AAAA,gBACR,QAAQ;AAAA,kBACN,IAAAgH;AAAA,kBACA,MAAM;AAAA,kBACN,OAAAhJ;AAAA,kBACA,YAAY;AAAA,kBACZ,WAAW;AAAA,kBACX,UAAUsvB,EAAO;AAAA,kBACjB,QAAQA,EAAO;AAAA,gBACjC;AAAA,cACA;AAAA,YACY;AAAA,UACZ;AACU,eAAK,0BAA0BgtC,GAASC,CAAO;AAAA,QACjD,CAAC,GACDtzD,EAAQ,iBAAiB,WAAW,CAAAI,MAAS;AA18iBrD,cAAArH;AA28iBU,UAAAm9D,EAAY,YAAY;AACxB,cAAIuB,IAAY;AAQhB,cAPIr3D,EAAM,QAAQ,WAChBq3D,IAAY,IACHr3D,EAAM,QAAQ,WAAW,CAAC,KAAK,KAAK,YAC7Cq3D,IAAY,IACHr3D,EAAM,QAAQ,UACvB81D,EAAY,YAAY,IAEtBuB,MAAc;AAChB;AAEF,gBAAM;AAAA,YACJ,OAAA1gE;AAAA,UACZ,IAAcqJ,EAAM;AACV,UAAI81D,EAAY,uBAAuBn/D,MAGvCm/D,EAAY,qBAAqBn/D,GACjCm/D,EAAY,YAAYn/D,IACxBgC,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,YAC5D,QAAQ;AAAA,YACR,QAAQ;AAAA,cACN,IAAAgH;AAAA,cACA,MAAM;AAAA,cACN,OAAAhJ;AAAA,cACA,YAAY;AAAA,cACZ,WAAA0gE;AAAA,cACA,UAAUr3D,EAAM,OAAO;AAAA,cACvB,QAAQA,EAAM,OAAO;AAAA,YACnC;AAAA,UACA;AAAA,QACQ,CAAC;AACD,cAAMs3D,IAAgBJ;AACtB,QAAAA,IAAe,MACft3D,EAAQ,iBAAiB,QAAQ,CAAAI,MAAS;AA9+iBlD,cAAArH,GAAAC;AA++iBU,cAAI,CAACk9D,EAAY,WAAW,CAAC91D,EAAM;AACjC;AAEF,WAAKrH,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAmB,SACtBm9D,EAAY,UAAU;AAExB,gBAAM;AAAA,YACJ,QAAA7vC;AAAA,UACZ,IAAcjmB;AACJ,cAAI;AAAA,YACF,OAAArJ;AAAA,UACZ,IAAcsvB;AACJ,cAAIgxC,GAAe;AACjB,gBAAItgE,KAASogE,MAAiB,QAAQ;AACpC,oBAAMpa,IAAQhmD,EAAM,MAAM,GAAG,EAAE,IAAI,CAAA+H,MAAK,SAASA,GAAG,EAAE,CAAC;AACvD,cAAA/H,IAAQ,IAAI,KAAK,KAAM,GAAG,GAAGgmD,EAAM,CAAC,GAAGA,EAAM,CAAC,GAAGA,EAAM,CAAC,KAAK,CAAC,EAAE,QAAO,GACvE12B,EAAO,OAAO;AAAA,YAChB;AACE,cAAKtvB,EAAM,SAAS,GAAG,MACrBA,IAAQ,GAAGA,CAAK,WAElBA,IAAQ,IAAI,KAAKA,CAAK,EAAE,QAAO;AAEjC,YAAAsvB,EAAO,OAAO;AAAA,UAChB;AACA,UAAA6vC,EAAY,YAAYn/D,GACpBm/D,EAAY,uBAAuBn/D,OACrCiC,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,YAC5D,QAAQ;AAAA,YACR,QAAQ;AAAA,cACN,IAAA+G;AAAA,cACA,MAAM;AAAA,cACN,OAAAhJ;AAAA,cACA,YAAY;AAAA,cACZ,WAAWm/D,EAAY;AAAA,cACvB,UAAU91D,EAAM,OAAO;AAAA,cACvB,QAAQA,EAAM,OAAO;AAAA,YACrC;AAAA,UACA,KAEUs3D,EAAct3D,CAAK;AAAA,QACrB,CAAC,IACGpH,IAAA,KAAK,KAAK,YAAV,QAAAA,EAAmB,aACrBgH,EAAQ,iBAAiB,eAAe,CAAAI,MAAS;AA1hjB3D,cAAArH;AA2hjBY,UAAAm9D,EAAY,qBAAqB;AACjC,gBAAM;AAAA,YACJ,MAAA5rD;AAAA,YACA,QAAA+b;AAAA,UACd,IAAgBjmB,GACE;AAAA,YACJ,OAAArJ;AAAA,YACA,gBAAA4gE;AAAA,YACA,cAAAC;AAAA,UACd,IAAgBvxC;AACJ,cAAIwxC,IAAWF,GACbG,IAASF;AACX,kBAAQx3D,EAAM,WAAS;AAAA,YACrB,KAAK,sBACH;AACE,oBAAMu8C,IAAQ5lD,EAAM,UAAU,GAAG4gE,CAAc,EAAE,MAAM,YAAY;AACnE,cAAIhb,MACFkb,KAAYlb,EAAM,CAAC,EAAE;AAEvB;AAAA,YACF;AAAA,YACF,KAAK,qBACH;AACE,oBAAMA,IAAQ5lD,EAAM,UAAU4gE,CAAc,EAAE,MAAM,YAAY;AAChE,cAAIhb,MACFmb,KAAUnb,EAAM,CAAC,EAAE;AAErB;AAAA,YACF;AAAA,YACF,KAAK;AACH,cAAIgb,MAAmBC,MACrBC,KAAY;AAEd;AAAA,YACF,KAAK;AACH,cAAIF,MAAmBC,MACrBE,KAAU;AAEZ;AAAA,UAChB;AACY,UAAA13D,EAAM,eAAc,IACpBrH,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,YAC5D,QAAQ;AAAA,YACR,QAAQ;AAAA,cACN,IAAAgH;AAAA,cACA,MAAM;AAAA,cACN,OAAAhJ;AAAA,cACA,QAAQuT,KAAQ;AAAA,cAChB,YAAY;AAAA,cACZ,UAAAutD;AAAA,cACA,QAAAC;AAAA,YAChB;AAAA,UACA;AAAA,QACU,CAAC,GAEH,KAAK,mBAAmB93D,GAASk2D,GAAa,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,CAAA91D,MAASA,EAAM,OAAO,KAAK;AAAA,MACtO;AAIA,UAHIk3D,KACFt3D,EAAQ,iBAAiB,QAAQs3D,CAAY,GAE3C,KAAK,KAAK,MAAM;AAElB,cAAMS,KADa,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,KACxBf;AAC/B,QAAAh3D,EAAQ,UAAU,IAAI,MAAM,GAC5BA,EAAQ,MAAM,gBAAgB,QAAQ+3D,CAAS;AAAA,MACjD;AAAA,IACF;AACE,MAAA/3D,IAAU,SAAS,cAAc,KAAK,GACtCA,EAAQ,cAAc,KAAK,KAAK,YAChCA,EAAQ,MAAM,gBAAgB,UAC9BA,EAAQ,MAAM,UAAU,cACpB,KAAK,KAAK,iBACZA,EAAQ,SAAS;AAGrB,gBAAK,cAAcA,CAAO,GAC1B,KAAK,oBAAoBA,CAAO,GAChC,KAAK,4BAA4BA,CAAO,GACxC,KAAK,UAAU,OAAOA,CAAO,GACtB,KAAK;AAAA,EACd;AACF;AACA,MAAM2wD,WAAyCC,GAAwB;AAAA,EACrE,YAAYlwD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc,CAAC,CAACA,EAAW,KAAK;AAAA,IACtC,CAAK;AAAA,EACH;AACF;AACA,MAAM8vD,WAAwCI,GAAwB;AAAA,EACpE,YAAYlwD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAcA,EAAW;AAAA,IAC/B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAMT,IAAU,KAAK,mBACfqK,IAAO,KAAK,MACZvK,IAAKuK,EAAK;AAChB,QAAIvT,IAAQkJ,EAAQ,SAASF,GAAI;AAAA,MAC/B,OAAOuK,EAAK,gBAAgBA,EAAK;AAAA,IACvC,CAAK,EAAE;AACH,IAAI,OAAOvT,KAAU,aACnBA,IAAQA,MAAU,OAClBkJ,EAAQ,SAASF,GAAI;AAAA,MACnB,OAAAhJ;AAAA,IACR,CAAO,IAEH,KAAK,UAAU,UAAU,IAAI,0BAA0B,UAAU;AACjE,UAAMiJ,IAAU,SAAS,cAAc,OAAO;AAC9C,WAAAiwD,GAAqB,IAAIjwD,CAAO,GAChCA,EAAQ,aAAa,mBAAmBD,CAAE,GAC1CC,EAAQ,WAAWsK,EAAK,UACxB,KAAK,aAAatK,GAAS,KAAK,KAAK,QAAQ,GAC7CA,EAAQ,OAAO,YACfA,EAAQ,OAAOsK,EAAK,WAChBvT,KACFiJ,EAAQ,aAAa,WAAW,EAAI,GAEtCA,EAAQ,aAAa,eAAesK,EAAK,WAAW,GACpDtK,EAAQ,WAAW,GACnBA,EAAQ,iBAAiB,UAAU,CAAAI,MAAS;AAC1C,YAAM;AAAA,QACJ,MAAAjJ;AAAA,QACA,SAAA6gE;AAAA,MACR,IAAU53D,EAAM;AACV,iBAAW63D,KAAY,KAAK,mBAAmB9gE,GAAM4I,CAAE,GAAG;AACxD,cAAMm4D,IAAaF,KAAWC,EAAS,gBAAgB3tD,EAAK;AAC5D,QAAI2tD,EAAS,eACXA,EAAS,WAAW,UAAUC,IAEhCj4D,EAAQ,SAASg4D,EAAS,IAAI;AAAA,UAC5B,OAAOC;AAAA,QACjB,CAAS;AAAA,MACH;AACA,MAAAj4D,EAAQ,SAASF,GAAI;AAAA,QACnB,OAAOi4D;AAAA,MACf,CAAO;AAAA,IACH,CAAC,GACDh4D,EAAQ,iBAAiB,aAAa,CAAAI,MAAS;AAC7C,YAAM0sB,IAAexiB,EAAK,qBAAqB;AAC/C,MAAAlK,EAAM,OAAO,UAAU0sB,MAAiBxiB,EAAK;AAAA,IAC/C,CAAC,GACG,KAAK,mBAAmB,KAAK,iBAC/BtK,EAAQ,iBAAiB,qBAAqB,CAAAszD,MAAW;AACvD,YAAMD,IAAU;AAAA,QACd,MAAMjzD,GAAO;AACX,UAAAA,EAAM,OAAO,UAAUA,EAAM,OAAO,UAAU,OAC9CH,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAOK,EAAM,OAAO;AAAA,UAClC,CAAa;AAAA,QACH;AAAA,MACV;AACQ,WAAK,0BAA0BizD,GAASC,CAAO;AAAA,IACjD,CAAC,GACD,KAAK,mBAAmBtzD,GAAS,MAAM,CAAC,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,CAAAI,MAASA,EAAM,OAAO,OAAO,IAE/Q,KAAK,oBAAoBJ,CAAO,GAChC,KAAK,4BAA4BA,CAAO,GACxC,KAAK,UAAU,OAAOA,CAAO,GACtB,KAAK;AAAA,EACd;AACF;AACA,MAAMuwD,WAA2CK,GAAwB;AAAA,EACvE,YAAYlwD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAcA,EAAW;AAAA,IAC/B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,0BAA0B,aAAa;AACpE,UAAMT,IAAU,KAAK,mBACfqK,IAAO,KAAK,MACZvK,IAAKuK,EAAK;AAChB,QAAIvT,IAAQkJ,EAAQ,SAASF,GAAI;AAAA,MAC/B,OAAOuK,EAAK,eAAeA,EAAK;AAAA,IACtC,CAAK,EAAE;AAOH,QANI,OAAOvT,KAAU,aACnBA,IAAQA,MAAUuT,EAAK,aACvBrK,EAAQ,SAASF,GAAI;AAAA,MACnB,OAAAhJ;AAAA,IACR,CAAO,IAECA;AACF,iBAAWohE,KAAS,KAAK,mBAAmB7tD,EAAK,WAAWvK,CAAE;AAC5D,QAAAE,EAAQ,SAASk4D,EAAM,IAAI;AAAA,UACzB,OAAO;AAAA,QACjB,CAAS;AAGL,UAAMn4D,IAAU,SAAS,cAAc,OAAO;AA6B9C,QA5BAiwD,GAAqB,IAAIjwD,CAAO,GAChCA,EAAQ,aAAa,mBAAmBD,CAAE,GAC1CC,EAAQ,WAAWsK,EAAK,UACxB,KAAK,aAAatK,GAAS,KAAK,KAAK,QAAQ,GAC7CA,EAAQ,OAAO,SACfA,EAAQ,OAAOsK,EAAK,WAChBvT,KACFiJ,EAAQ,aAAa,WAAW,EAAI,GAEtCA,EAAQ,WAAW,GACnBA,EAAQ,iBAAiB,UAAU,CAAAI,MAAS;AAC1C,YAAM;AAAA,QACJ,MAAAjJ;AAAA,QACA,SAAA6gE;AAAA,MACR,IAAU53D,EAAM;AACV,iBAAW+3D,KAAS,KAAK,mBAAmBhhE,GAAM4I,CAAE;AAClD,QAAAE,EAAQ,SAASk4D,EAAM,IAAI;AAAA,UACzB,OAAO;AAAA,QACjB,CAAS;AAEH,MAAAl4D,EAAQ,SAASF,GAAI;AAAA,QACnB,OAAOi4D;AAAA,MACf,CAAO;AAAA,IACH,CAAC,GACDh4D,EAAQ,iBAAiB,aAAa,CAAAI,MAAS;AAC7C,YAAM0sB,IAAexiB,EAAK;AAC1B,MAAAlK,EAAM,OAAO,UAAU0sB,KAAiB,QAAsCA,MAAiBxiB,EAAK;AAAA,IACtG,CAAC,GACG,KAAK,mBAAmB,KAAK,cAAc;AAC7C,YAAM8tD,IAAiB9tD,EAAK;AAC5B,MAAAtK,EAAQ,iBAAiB,qBAAqB,CAAAszD,MAAW;AACvD,cAAMD,IAAU;AAAA,UACd,OAAO,CAAAjzD,MAAS;AACd,kBAAM43D,IAAUI,MAAmBh4D,EAAM,OAAO;AAChD,uBAAW+3D,KAAS,KAAK,mBAAmB/3D,EAAM,OAAO,IAAI,GAAG;AAC9D,oBAAM83D,IAAaF,KAAWG,EAAM,OAAOp4D;AAC3C,cAAIo4D,EAAM,eACRA,EAAM,WAAW,UAAUD,IAE7Bj4D,EAAQ,SAASk4D,EAAM,IAAI;AAAA,gBACzB,OAAOD;AAAA,cACvB,CAAe;AAAA,YACH;AAAA,UACF;AAAA,QACV;AACQ,aAAK,0BAA0B7E,GAASC,CAAO;AAAA,MACjD,CAAC,GACD,KAAK,mBAAmBtzD,GAAS,MAAM,CAAC,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,CAAC,GAAG,CAAAI,MAASA,EAAM,OAAO,OAAO;AAAA,IAC/Q;AACA,gBAAK,oBAAoBJ,CAAO,GAChC,KAAK,4BAA4BA,CAAO,GACxC,KAAK,UAAU,OAAOA,CAAO,GACtB,KAAK;AAAA,EACd;AACF;AACA,MAAMywD,WAA0CL,GAAsB;AAAA,EACpE,YAAY1vD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAcA,EAAW,KAAK;AAAA,IACpC,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAMuJ,IAAY,MAAM,OAAM;AAC9B,IAAAA,EAAU,UAAU,IAAI,0BAA0B,YAAY;AAC9D,UAAMouD,IAAcpuD,EAAU;AAC9B,WAAI,KAAK,mBAAmB,KAAK,gBAAgBouD,MAC/C,KAAK,4BAA4BA,CAAW,GAC5CA,EAAY,iBAAiB,qBAAqB,CAAA/E,MAAW;AAC3D,WAAK,0BAA0B,CAAA,GAAIA,CAAO;AAAA,IAC5C,CAAC,IAEIrpD;AAAA,EACT;AACF;AACA,MAAMymD,WAAsCE,GAAwB;AAAA,EAClE,YAAYlwD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAcA,EAAW;AAAA,IAC/B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,wBAAwB;AACrD,UAAMT,IAAU,KAAK,mBACfF,IAAK,KAAK,KAAK,IACfI,IAAaF,EAAQ,SAASF,GAAI;AAAA,MACtC,OAAO,KAAK,KAAK;AAAA,IACvB,CAAK,GACKu4D,IAAgB,SAAS,cAAc,QAAQ;AACrD,IAAArI,GAAqB,IAAIqI,CAAa,GACtCA,EAAc,aAAa,mBAAmBv4D,CAAE,GAChDu4D,EAAc,WAAW,KAAK,KAAK,UACnC,KAAK,aAAaA,GAAe,KAAK,KAAK,QAAQ,GACnDA,EAAc,OAAO,KAAK,KAAK,WAC/BA,EAAc,WAAW;AACzB,QAAIC,IAAkB,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,SAAS;AACpE,IAAK,KAAK,KAAK,UACbD,EAAc,OAAO,KAAK,KAAK,QAAQ,QACnC,KAAK,KAAK,gBACZA,EAAc,WAAW,MAG7BA,EAAc,iBAAiB,aAAa,CAAAl4D,MAAS;AACnD,YAAM0sB,IAAe,KAAK,KAAK;AAC/B,iBAAWzsB,KAAUi4D,EAAc;AACjC,QAAAj4D,EAAO,WAAWA,EAAO,UAAUysB;AAAA,IAEvC,CAAC;AACD,eAAWzsB,KAAU,KAAK,KAAK,SAAS;AACtC,YAAMm4D,IAAgB,SAAS,cAAc,QAAQ;AACrD,MAAAA,EAAc,cAAcn4D,EAAO,cACnCm4D,EAAc,QAAQn4D,EAAO,aACzBF,EAAW,MAAM,SAASE,EAAO,WAAW,MAC9Cm4D,EAAc,aAAa,YAAY,EAAI,GAC3CD,IAAkB,KAEpBD,EAAc,OAAOE,CAAa;AAAA,IACpC;AACA,QAAIC,IAAmB;AACvB,QAAIF,GAAiB;AACnB,YAAMG,IAAoB,SAAS,cAAc,QAAQ;AACzD,MAAAA,EAAkB,QAAQ,KAC1BA,EAAkB,aAAa,UAAU,EAAI,GAC7CA,EAAkB,aAAa,YAAY,EAAI,GAC/CJ,EAAc,QAAQI,CAAiB,GACvCD,IAAmB,MAAM;AACvB,QAAAC,EAAkB,OAAM,GACxBJ,EAAc,oBAAoB,SAASG,CAAgB,GAC3DA,IAAmB;AAAA,MACrB,GACAH,EAAc,iBAAiB,SAASG,CAAgB;AAAA,IAC1D;AACA,UAAME,IAAW,CAAAC,MAAY;AAC3B,YAAMzhE,IAAOyhE,IAAW,UAAU,eAC5B;AAAA,QACJ,SAAAxiE;AAAA,QACA,UAAAyiE;AAAA,MACR,IAAUP;AACJ,aAAKO,IAGE,MAAM,UAAU,OAAO,KAAKziE,GAAS,CAAAiK,MAAUA,EAAO,QAAQ,EAAE,IAAI,CAAAA,MAAUA,EAAOlJ,CAAI,CAAC,IAFxFf,EAAQ,kBAAkB,KAAK,OAAOA,EAAQA,EAAQ,aAAa,EAAEe,CAAI;AAAA,IAGpF;AACA,QAAI2hE,IAAiBH,EAAS,EAAK;AACnC,UAAMI,IAAW,CAAA34D,MAAS;AACxB,YAAMhK,IAAUgK,EAAM,OAAO;AAC7B,aAAO,MAAM,UAAU,IAAI,KAAKhK,GAAS,CAAAiK,OAAW;AAAA,QAClD,cAAcA,EAAO;AAAA,QACrB,aAAaA,EAAO;AAAA,MAC5B,EAAQ;AAAA,IACJ;AACA,WAAI,KAAK,mBAAmB,KAAK,gBAC/Bi4D,EAAc,iBAAiB,qBAAqB,CAAAhF,MAAW;AAC7D,YAAMD,IAAU;AAAA,QACd,MAAMjzD,GAAO;AACX,UAAAq4D,KAAA,QAAAA;AACA,gBAAM1hE,IAAQqJ,EAAM,OAAO,OACrB6D,IAAS,IAAI,IAAI,MAAM,QAAQlN,CAAK,IAAIA,IAAQ,CAACA,CAAK,CAAC;AAC7D,qBAAWsJ,KAAUi4D,EAAc;AACjC,YAAAj4D,EAAO,WAAW4D,EAAO,IAAI5D,EAAO,KAAK;AAE3C,UAAAJ,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO44D,EAAS,EAAI;AAAA,UAClC,CAAa,GACDG,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,kBAAkBv4D,GAAO;AACvB,UAAAk4D,EAAc,WAAW;AAAA,QAC3B;AAAA,QACA,OAAOl4D,GAAO;AACZ,gBAAMhK,IAAUkiE,EAAc,SACxBhnC,IAAQlxB,EAAM,OAAO;AAC3B,UAAAhK,EAAQk7B,CAAK,EAAE,WAAW,IAC1BgnC,EAAc,OAAOhnC,CAAK,GACtBl7B,EAAQ,SAAS,KACT,MAAM,UAAU,UAAU,KAAKA,GAAS,CAAAiK,MAAUA,EAAO,QAAQ,MACjE,OACRjK,EAAQ,CAAC,EAAE,WAAW,KAG1B6J,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO44D,EAAS,EAAI;AAAA,YACpB,OAAOI,EAAS34D,CAAK;AAAA,UACnC,CAAa,GACD04D,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,MAAMv4D,GAAO;AACX,iBAAOk4D,EAAc,WAAW;AAC9B,YAAAA,EAAc,OAAO,CAAC;AAExB,UAAAr4D,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO;AAAA,YACP,OAAO,CAAA;AAAA,UACrB,CAAa,GACD+4D,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,OAAOv4D,GAAO;AACZ,gBAAM;AAAA,YACJ,OAAAkxB;AAAA,YACA,cAAA0nC;AAAA,YACA,aAAAtE;AAAA,UACd,IAAgBt0D,EAAM,OAAO,QACX64D,IAAcX,EAAc,SAAShnC,CAAK,GAC1CknC,IAAgB,SAAS,cAAc,QAAQ;AACrD,UAAAA,EAAc,cAAcQ,GAC5BR,EAAc,QAAQ9D,GAClBuE,IACFA,EAAY,OAAOT,CAAa,IAEhCF,EAAc,OAAOE,CAAa,GAEpCv4D,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO44D,EAAS,EAAI;AAAA,YACpB,OAAOI,EAAS34D,CAAK;AAAA,UACnC,CAAa,GACD04D,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,MAAMv4D,GAAO;AACX,gBAAM;AAAA,YACJ,OAAAX;AAAA,UACd,IAAgBW,EAAM;AACV,iBAAOk4D,EAAc,WAAW;AAC9B,YAAAA,EAAc,OAAO,CAAC;AAExB,qBAAWt+C,KAAQva,GAAO;AACxB,kBAAM;AAAA,cACJ,cAAAu5D;AAAA,cACA,aAAAtE;AAAA,YAChB,IAAkB16C,GACEw+C,IAAgB,SAAS,cAAc,QAAQ;AACrD,YAAAA,EAAc,cAAcQ,GAC5BR,EAAc,QAAQ9D,GACtB4D,EAAc,OAAOE,CAAa;AAAA,UACpC;AACA,UAAIF,EAAc,QAAQ,SAAS,MACjCA,EAAc,QAAQ,CAAC,EAAE,WAAW,KAEtCr4D,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO44D,EAAS,EAAI;AAAA,YACpB,OAAOI,EAAS34D,CAAK;AAAA,UACnC,CAAa,GACD04D,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,QAAQv4D,GAAO;AACb,gBAAM84D,IAAU,IAAI,IAAI94D,EAAM,OAAO,OAAO;AAC5C,qBAAWC,KAAUD,EAAM,OAAO;AAChC,YAAAC,EAAO,WAAW64D,EAAQ,IAAI74D,EAAO,KAAK;AAE5C,UAAAJ,EAAQ,SAASF,GAAI;AAAA,YACnB,OAAO44D,EAAS,EAAI;AAAA,UAClC,CAAa,GACDG,IAAiBH,EAAS,EAAK;AAAA,QACjC;AAAA,QACA,SAASv4D,GAAO;AACd,UAAAA,EAAM,OAAO,WAAW,CAACA,EAAM,OAAO;AAAA,QACxC;AAAA,MACV;AACQ,WAAK,0BAA0BizD,GAASC,CAAO;AAAA,IACjD,CAAC,GACDgF,EAAc,iBAAiB,SAAS,CAAAl4D,MAAS;AA59jBvD,UAAArH;AA69jBQ,YAAM27D,IAAciE,EAAS,EAAI,GAC3BQ,IAASR,EAAS,EAAK;AAC7B,MAAA14D,EAAQ,SAASF,GAAI;AAAA,QACnB,OAAO20D;AAAA,MACjB,CAAS,GACDt0D,EAAM,eAAc,IACpBrH,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,0BAA0B;AAAA,QAC5D,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,IAAAgH;AAAA,UACA,MAAM;AAAA,UACN,OAAO+4D;AAAA,UACP,QAAAK;AAAA,UACA,UAAUzE;AAAA,UACV,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,SAAS;AAAA,QACrB;AAAA,MACA;AAAA,IACM,CAAC,GACD,KAAK,mBAAmB4D,GAAe,MAAM,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,aAAa,YAAY,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,WAAW,UAAU,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,SAAS,UAAU,CAAC,GAAG,CAAAl4D,MAASA,EAAM,OAAO,KAAK,KAE/Qk4D,EAAc,iBAAiB,SAAS,SAAUl4D,GAAO;AACvD,MAAAH,EAAQ,SAASF,GAAI;AAAA,QACnB,OAAO44D,EAAS,EAAI;AAAA,MAC9B,CAAS;AAAA,IACH,CAAC,GAEC,KAAK,KAAK,SACZ,KAAK,cAAcL,CAAa,GAElC,KAAK,oBAAoBA,CAAa,GACtC,KAAK,4BAA4BA,CAAa,GAC9C,KAAK,UAAU,OAAOA,CAAa,GAC5B,KAAK;AAAA,EACd;AACF;AAjgkBA,IAAAc,IAAAC;AAkgkBA,MAAMxI,WAA+Be,GAAkB;AAAA,EACrD,YAAYlxD,GAAY;AACtB,UAAM;AAAA,MACJ,MAAA4J;AAAA,MACA,UAAAgvD;AAAA,MACA,QAAAr4D;AAAA,IACN,IAAQP,GACE64D,IAAoB,CAAC,CAACt4D,EAAO;AACnC,UAAMP,GAAY;AAAA,MAChB,cAAc,CAAC64D,KAAqB3H,GAAkB,cAActnD,CAAI;AAAA,IAC9E,CAAK;AAVL,IAAA5M,EAAA,MAAA07D;AAWI,aAAK,WAAWE,GACZC,KAAqB3H,GAAkB,cAActnD,CAAI,GAAG;AAC9D,YAAMmoD,IAAQ,KAAK,QAAQt1D,EAAA,MAAKi8D,IAAAC,IAAL;AAC3B,iBAAWr5D,KAAWs5D;AACpB,QAAAt5D,EAAQ,QAAQyyD;AAAA,IAEpB;AACE,WAAK,QAAQ;AAAA,EAEjB;AAAA,EAiBA,SAAS;AACP,UAAM;AAAA,MACJ,WAAAxoD;AAAA,IACN,IAAQ;AACJ,IAAAA,EAAU,UAAU,IAAI,iBAAiB,GACzCA,EAAU,OAAO;AACjB,UAAMwoD,IAAQ,KAAK,QAAQt1D,EAAA,MAAKi8D,IAAAC,IAAL,YACrBt+C,IAAa,CAAA;AACnB,eAAW/a,KAAW,KAAK;AACzB,MAAAA,EAAQ,QAAQyyD,GAChBzyD,EAAQ,UAAU,eAAe,UACjC+a,EAAW,KAAK/a,EAAQ,KAAK,EAAE,GAC/BA,EAAQ,iBAAgB;AAE1B,gBAAK,UAAU,aAAa,iBAAiB+a,EAAW,IAAI,CAAAhb,MAAM,GAAG7B,EAAgB,GAAG6B,CAAE,EAAE,EAAE,KAAK,GAAG,CAAC,GAChG,KAAK;AAAA,EACd;AACF;AAtDAq5D,KAAA,eAqBEC,KAAY,WAAG;AACb,SAAO,IAAIG,GAAa;AAAA,IACtB,WAAW,KAAK;AAAA,IAChB,OAAO,KAAK,KAAK;AAAA,IACjB,UAAU,KAAK,KAAK;AAAA,IACpB,kBAAkB,KAAK,KAAK,oBAAoB,KAAK,KAAK;AAAA,IAC1D,aAAa,KAAK,KAAK;AAAA,IACvB,UAAU,KAAK,KAAK;AAAA,IACpB,MAAM,KAAK,KAAK;AAAA,IAChB,YAAY,KAAK,KAAK,cAAc;AAAA,IACpC,QAAQ,KAAK;AAAA,IACb,UAAU,KAAK;AAAA,IACf,MAAM,KAAK,KAAK;AAAA,IAChB,gBAAgB,KAAK,OAAO;AAAA,EAClC,CAAK;AACH;AAtikBF,IAAAtnD,IAAAunD,IAAAC,IAAAC,IAAAC,IAAAC,IAAAvlD,IAAAwlD,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAApqD,IAAAqqD,IAAAC,IAAA96C,IAAA+6C,IAAAn7C,IAAAo7C,IAAA5I,IAAA6I,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAxM,IAAAyM,IAAAC,IAAAC,IAAAC;AAyjkBA,MAAMjC,GAAa;AAAA,EA2BjB,YAAY;AAAA,IACV,WAAAvvD;AAAA,IACA,OAAAnE;AAAA,IACA,UAAAwzD;AAAA,IACA,UAAAoC;AAAA,IACA,kBAAAl0C;AAAA,IACA,aAAAlM;AAAA,IACA,UAAA2E;AAAA,IACA,QAAAhf;AAAA,IACA,MAAArG;AAAA,IACA,YAAA+gE;AAAA,IACA,MAAAC;AAAA,IACA,gBAAAxlD,IAAiB;AAAA,EACrB,GAAK;AAxCL,IAAA1Y,EAAA,MAAAm9D;AACE,IAAAn9D,EAAA,MAAAwU,IAAkB;AAClB,IAAAxU,EAAA,MAAA+7D,IAAgBt8D,EAAA,MAAK09D,GAAAhM,IAAS,KAAK,IAAI;AACvC,IAAAnxD,EAAA,MAAAg8D,IAAav8D,EAAA,MAAK09D,GAAAY,IAAM,KAAK,IAAI;AACjC,IAAA/9D,EAAA,MAAAi8D,IAAax8D,EAAA,MAAK09D,GAAAW,IAAM,KAAK,IAAI;AACjC,IAAA99D,EAAA,MAAAk8D,IAAez8D,EAAA,MAAK09D,GAAAU,IAAQ,KAAK,IAAI;AACrC,IAAA79D,EAAA,MAAAm8D,IAAS;AACT,IAAAn8D,EAAA,MAAA4W,IAAa;AACb,IAAA5W,EAAA,MAAAo8D,IAAe;AACf,IAAAp8D,EAAA,MAAAq8D,IAAW;AACX,IAAAr8D,EAAA,MAAAs8D,IAAY;AACZ,IAAAt8D,EAAA,MAAAu8D,IAAU;AACV,IAAAv8D,EAAA,MAAAw8D,IAAc;AACd,IAAAx8D,EAAA,MAAAy8D,IAAU;AACV,IAAAz8D,EAAA,MAAA08D,IAAS;AACT,IAAA18D,EAAA,MAAA28D,IAAwB;AACxB,IAAA38D,EAAA,MAAAuS,IAAY;AACZ,IAAAvS,EAAA,MAAA48D,IAAiB;AACjB,IAAA58D,EAAA,MAAA68D,IAAyB;AACzB,IAAA78D,EAAA,MAAA+hB,IAAiB;AACjB,IAAA/hB,EAAA,MAAA88D,IAAQ;AACR,IAAA98D,EAAA,MAAA2hB,IAAY;AACZ,IAAA3hB,EAAA,MAAA+8D,IAAY;AACZ,IAAA/8D,EAAA,MAAAm0D,IAAW;AACX,IAAAn0D,EAAA,MAAAg9D,IAAc;AACd,IAAAh9D,EAAA,MAAAi9D,IAAgB;AAChB,IAAAj9D,EAAA,MAAAk9D,IAAe;AAeb,IAAA31D,EAAA,MAAKqP,IAAarK,IAClBhF,EAAA,MAAKw1D,IAAYiB,IACjBz2D,EAAA,MAAK60D,IAAex+C,IACpBrW,EAAA,MAAKoa,IAAYY,IACjBhb,EAAA,MAAKg1D,IAAUh5D,IACfgE,EAAA,MAAK40D,IAAS/zD,IACdb,EAAA,MAAKu1D,IAAQ5/D,IACbqK,EAAA,MAAKi1D,IAAcyB,IACnB12D,EAAA,MAAK+0D,IAAYV,IACjBr0D,EAAA,MAAKiN,IAAkBkE,IACvBnR,EAAA,MAAK01D,IAAgBrB,EAAS,CAAC,IAC/Br0D,EAAA,MAAK80D,IAAWj1D,GAAc,aAAa0iB,CAAgB,IAC3D,KAAK,UAAU8xC,EAAS,QAAQ,CAAA50D,MAAKA,EAAE,2BAA2B,GAC7D0R,MACHjZ,EAAA,MAAK09D,GAAAC,IAAL,YACA91D,EAAA,MAAKsP,IAAW,SAAS,IACrBsnD,KACFz+D,EAAA,MAAK09D,GAAAU,IAAL;AAAA,EAGN;AAAA,EAkCA,sBAAsB;AACpB,QAAIv2D,EAAA,MAAKs1D,KAAgB;AACvB,MAAKt1D,EAAA,MAAKs1D,IAAe,cACvBt1D,EAAA,MAAK21D,IAAc,UAAU,MAAM31D,EAAA,MAAKs1D,GAAc;AAExD;AAAA,IACF;AAIA,QAHKt1D,EAAA,MAAKu1D,OACRp9D,EAAA,MAAK09D,GAAAE,IAAL,YAEE,CAAC/1D,EAAA,MAAKu1D;AACR;AAEF,UAAM;AAAA,MACJ,QAAA5uD;AAAA,IACN,IAAQ1G,EAAA,MAAKo1D,IAAwB,IAAI,gBAAe,IAC9CwB,IAAe72D,EAAA,MAAK21D,IAAc,qBAClCmB,IAAc,MAAM;AACxB,MAAA92D,EAAA,MAAKkN,IAAgB,mBAAmB,MAAM,IAAM,QAAW,CAAC2pD,CAAY;AAAA,IAC9E,GACME,IAAY,MAAM;AACtB,MAAA/2D,EAAA,MAAKkN,IAAgB,mBAAmB,MAAM,IAAO,IAAM,CAAC2pD,CAAY;AAAA,IAC1E,GACMG,IAAY,MAAM;AACtB,MAAAh3D,EAAA,MAAKkN,IAAgB,mBAAmB,MAAM,IAAO,EAAK;AAAA,IAC5D;AACA,QAAK2pD,GAwBE;AACL,MAAA52D,EAAA,MAAKq1D,IAAiBt1D,EAAA,MAAK21D,IAAc;AACzC,iBAAW36D,KAAW,KAAK;AACzB,QAAAA,EAAQ,eAAe,UACvBA,EAAQ,eAAe,gBACvBA,EAAQ,iBAAiB,WAAWgF,EAAA,MAAKy0D,KAAe;AAAA,UACtD,QAAA9tD;AAAA,QACV,CAAS,GACD3L,EAAQ,iBAAiB,SAAS87D,GAAa;AAAA,UAC7C,QAAAnwD;AAAA,QACV,CAAS,GACD3L,EAAQ,iBAAiB,gBAAgB+7D,GAAW;AAAA,UAClD,QAAApwD;AAAA,QACV,CAAS,GACD3L,EAAQ,iBAAiB,gBAAgBg8D,GAAW;AAAA,UAClD,QAAArwD;AAAA,QACV,CAAS,GACD3L,EAAQ,UAAU,IAAI,kBAAkB;AAAA,IAE5C,OA3CmB;AACjB,YAAMgM,IAAS/G,EAAA,MAAKq1D,IAAiB,SAAS,cAAc,QAAQ;AACpE,MAAAtuD,EAAO,YAAY;AACnB,YAAMiwD,IAAkBj3D,EAAA,MAAK21D,IAAc;AAC3C,MAAA3uD,EAAO,MAAM,SAASiwD,EAAgB,MAAM,SAAS,GACrDjwD,EAAO,WAAW,GAClBA,EAAO,eAAe,UACtBA,EAAO,eAAe,gBACtBA,EAAO,aAAa,gBAAgB,2BAA2B,GAC/D7O,EAAA,MAAK09D,GAAAI,IAAL,YACA99D,EAAA,MAAK09D,GAAAG,IAAL,YACAhvD,EAAO,iBAAiB,WAAWhH,EAAA,MAAKy0D,KAAe;AAAA,QACrD,QAAA9tD;AAAA,MACR,CAAO,GACDK,EAAO,iBAAiB,SAAS8vD,GAAa;AAAA,QAC5C,QAAAnwD;AAAA,MACR,CAAO,GACDK,EAAO,iBAAiB,gBAAgB+vD,GAAW;AAAA,QACjD,QAAApwD;AAAA,MACR,CAAO,GACDK,EAAO,iBAAiB,gBAAgBgwD,GAAW;AAAA,QACjD,QAAArwD;AAAA,MACR,CAAO,GACDswD,EAAgB,MAAMjwD,CAAM;AAAA,IAC9B;AAAA,EAoBF;AAAA,EAwBA,IAAI,qBAAqB;AACvB,UAAM;AAAA,MACJ,OAAAlG;AAAA,MACA,SAAAsC;AAAA,IACN,IAAQpD,EAAA,MAAK21D,IAAc;AACvB,WAAK70D,IAGEd,EAAA,MAAKi1D,IAAQ,gBAAgB,iBAAiBn0D,GAAOsC,CAAO,IAF1D;AAAA,EAGX;AAAA,EACA,qBAAqB;AACnB,eAAW,MAAM;AAjwkBrB,UAAArP;AAkwkBM,OAAAA,IAAAiM,EAAA,MAAKs1D,QAAL,QAAAvhE,EAAqB;AAAA,IACvB,GAAG,CAAC;AAAA,EACN;AAAA,EACA,UAAU;AACR,UAAM;AAAA,MACJ,UAAAknB;AAAA,MACA,OAAAna;AAAA,MACA,SAAAsC;AAAA,MACA,cAAAmf;AAAA,MACA,kBAAAC;AAAA,IACN,IAAQxiB,EAAA,MAAK21D,IAAc;AACvB,WAAO;AAAA,MACL,aAAa;AAAA,QACX,KAAK,KAAK;AAAA,MAClB;AAAA,MACM,UAAA16C;AAAA,MACA,OAAAna;AAAA,MACA,SAAAsC;AAAA,MACA,cAAAmf;AAAA,MACA,kBAAAC;AAAA,IACN;AAAA,EACE;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAOxiB,EAAA,MAAKs1D;AAAA,EACd;AAAA,EACA,IAAI,UAAU;AACZ,WAAAt1D,EAAA,MAAK41D,OAAL31D,EAAA,MAAK21D,IAAiB51D,EAAA,MAAK21D,IAAc,cAClC31D,EAAA,MAAK41D;AAAA,EACd;AAAA,EACA,IAAI,QAAQrhD,GAAM;AAChB,IAAIA,MAAS,KAAK,YAGlBvU,EAAA,MAAK21D,IAAc,cAAc11D,EAAA,MAAK21D,IAAerhD;AAAA,EACvD;AAAA,EACA,QAAQ;AArykBV,QAAAxgB;AAsykBI,KAAAA,IAAAiM,EAAA,MAAK21D,IAAc,cAAnB,QAAA5hE,EAA8B;AAAA,EAChC;AAAA,EACA,IAAI,2BAA2B;AAC7B,WAAOiM,EAAA,MAAK21D,IAAc,MAAM,sBAAqB;AAAA,EACvD;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAA76C;AAAA,IACA,UAAAC;AAAA,EACJ,GAAK;AACD,IAAK/a,EAAA,MAAKs1D,QAGVt1D,EAAA,MAAKs1D,IAAe,UAAU,OAAO,YAAYx6C,CAAQ,GACzD9a,EAAA,MAAKs1D,IAAe,eAAev6C;AAAA,EACrC;AAAA,EACA,yBAAyBD,GAAU;AACjC,IAAA9a,EAAA,MAAKs1D,IAAe,UAAU,OAAO,YAAYx6C,CAAQ;AAAA,EAC3D;AAAA,EACA,IAAI,uBAAuB;AACzB,QAAI9a,EAAA,MAAKya;AACP,aAAOza,EAAA,MAAKya;AAEd,UAAM;AAAA,MACJ,GAAAhjB;AAAA,MACA,GAAAC;AAAA,MACA,QAAAqG;AAAA,IACN,IAAQiC,EAAA,MAAKs1D,IAAe,sBAAqB,GACvC;AAAA,MACJ,GAAG16C;AAAA,MACH,GAAGC;AAAA,MACH,OAAOlD;AAAA,MACP,QAAQC;AAAA,IACd,IAAQ5X,EAAA,MAAK21D,IAAc,MAAM,sBAAqB;AAClD,WAAO,EAAEl+D,IAAImjB,KAAWjD,IAAcjgB,IAAIqG,IAAS8c,KAAWjD,CAAY;AAAA,EAC5E;AAAA,EACA,IAAI,qBAAqB1iB,GAAK;AAC5B,IAAA+K,EAAA,MAAKwa,IAAiBvlB;AAAA,EACxB;AAAA,EACA,0BAA0B;AACxB,WAAO8K,EAAA,MAAKya,QAAmB;AAAA,EACjC;AAAA,EACA,IAAI,wBAAwB;AAC1B,WAAOza,EAAA,MAAKu1D;AAAA,EACd;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAOv1D,EAAA,MAAKs1D,IAAe,sBAAqB,EAAG,QAAQ,KAAK,yBAAyB;AAAA,EAC3F;AAAA,EACA,YAAYlkE,GAAS;AACnB,UAAM,CAACiiB,GAAMC,CAAI,IAAItT,EAAA,MAAKya,OAAkB,KAAK,sBAAsB,IAAI,CAAAhjB,MAAKA,IAAI,GAAG,GACjFujB,IAAmB,KAAK,0BACxB;AAAA,MACJ,GAAGJ;AAAA,MACH,GAAGC;AAAA,MACH,OAAOlD;AAAA,MACP,QAAQC;AAAA,IACd,IAAQoD;AACJ,IAAAhb,EAAA,MAAKkN,IAAgB,WAAW,MAAM,MAAM0N,IAAUvH,IAAOsE,GAAakD,IAAUvH,IAAOsE,GAAc;AAAA,MACvG,GAAGxmB;AAAA,MACH,kBAAA4pB;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AAn2kBX,QAAAjnB,GAAAC;AAo2kBI,QAAIgM,EAAA,MAAKo1D;AACP;AAEF,UAAM3H,IAAQxtD,EAAA,MAAKm1D,IAAS,SAAS,cAAc,KAAK;AAExD,QADA3H,EAAM,YAAY,SACdztD,EAAA,MAAK60D,KAAQ;AACf,YAAMzwD,IAAYqpD,EAAM,MAAM,eAAen5D,EAAK,aAAa,GAAG0L,EAAA,MAAK60D,GAAM;AAC7E,MAAApH,EAAM,MAAM,kBAAkB,sBAAsBrpD,CAAS;AAAA,IAC/D;AACA,UAAM8yD,IAAS,SAAS,cAAc,MAAM;AAE5C,QADAA,EAAO,YAAY,WACfnjE,IAAAiM,EAAA,MAAKy1D,QAAL,QAAA1hE,EAAgB,KAAK;AACvB,YAAMojE,IAAQ,SAAS,cAAc,MAAM;AAC3C,MAAAA,EAAM,YAAY,SAClBD,EAAO,OAAOC,CAAK,GAClB;AAAA,QACC,KAAKA,EAAM;AAAA,QACX,KAAKA,EAAM;AAAA,MACnB,IAAUn3D,EAAA,MAAKy1D;AAAA,IACX;AAEA,QADAhI,EAAM,OAAOyJ,CAAM,GACfl3D,EAAA,MAAK+0D,KAAU;AACjB,YAAMvyC,IAAmB,SAAS,cAAc,MAAM;AACtD,MAAAA,EAAiB,YAAY,aAC7BA,EAAiB,aAAa,gBAAgB,mCAAmC,GACjFA,EAAiB,aAAa,kBAAkB,KAAK,UAAU;AAAA,QAC7D,SAASxiB,EAAA,MAAK+0D,IAAS,QAAO;AAAA,MACtC,CAAO,CAAC,GACFvyC,EAAiB,WAAWxiB,EAAA,MAAK+0D,IAAS,YAAW,GACrDmC,EAAO,OAAO10C,CAAgB;AAAA,IAChC;AACA,IAAA1d,GAAe;AAAA,MACb,MAAM9E,EAAA,MAAK61D,GAAAK,OAASl2D,EAAA,MAAK80D,IAAa;AAAA,MACtC,MAAK9gE,IAAAgM,EAAA,MAAK80D,QAAL,gBAAA9gE,EAAmB;AAAA,MACxB,WAAW;AAAA,IACjB,GAAOy5D,CAAK,GACRztD,EAAA,MAAKsP,IAAW,OAAOm+C,CAAK;AAAA,EAC9B;AAAA,EAqDA,aAAa;AAAA,IACX,MAAA73D;AAAA,IACA,OAAA63D;AAAA,IACA,SAAAt3C;AAAA,EACJ,GAAK;AAl8kBL,QAAApiB;AAm8kBI,QAAIiM,EAAA,MAAKkN,KAAiB;AACxB,MAAIiJ,KACF,KAAK,OAAM,GACXlW,EAAA,MAAK21D,IAAe,SACXnI,MACLA,EAAM,UACR,KAAK,OAAM,KAEXt1D,EAAA,MAAK09D,GAAAI,IAAL,YACAh2D,EAAA,MAAK21D,IAAenI,EAAM,SAG1B73D,MACFqK,EAAA,MAAKs1D,IAAyB,OAC9Bp9D,EAAA,MAAK09D,GAAAE,IAAL,YACA59D,EAAA,MAAK09D,GAAAG,IAAL;AAEF;AAAA,IACF;AACA,QAAI7/C,KAAWs3C,KAAA,QAAAA,EAAO,SAAS;AAC7B,WAAK,OAAM;AACX;AAAA,IACF;AACA,IAAAt1D,EAAA,MAAK09D,GAAAC,IAAL,YACA91D,EAAA,MAAK6sD,OAAL5sD,EAAA,MAAK4sD,IAAa;AAAA,MAChB,aAAa7sD,EAAA,MAAK80D;AAAA,MAClB,UAAU90D,EAAA,MAAKqa;AAAA,IACrB,IACQzkB,KACFqK,EAAA,MAAKgL,IAAY,OAEfwiD,KAASA,EAAM,SACjBxtD,EAAA,MAAKoa,IAAYliB,EAAA,MAAK09D,GAAAQ,IAAL,WAAuB5I,EAAM,QAC9CxtD,EAAA,MAAK80D,IAAWj1D,GAAc,aAAa2tD,EAAM,IAAI,IACrDxtD,EAAA,MAAK60D,IAAe,SAEtB/gE,IAAAiM,EAAA,MAAKo1D,QAAL,QAAArhE,EAAa,UACbkM,EAAA,MAAKm1D,IAAS;AAAA,EAChB;AAAA,EACA,cAAc;AA1+kBhB,QAAArhE;AA2+kBI,IAAKiM,EAAA,MAAK6sD,QAGT;AAAA,MACC,aAAatjD,GAAA,MAAAurD,IAAA;AAAA,MACb,UAAUvrD,GAAA,MAAA8Q,IAAA;AAAA,IAChB,IAAQra,EAAA,MAAK6sD,KACT5sD,EAAA,MAAK4sD,IAAW,QAChB94D,IAAAiM,EAAA,MAAKo1D,QAAL,QAAArhE,EAAa,UACbkM,EAAA,MAAKm1D,IAAS,OACdn1D,EAAA,MAAKgL,IAAY;AAAA,EACnB;AAAA,EACA,SAAS;AAv/kBX,QAAAlX,GAAAC,GAAAse;AAgglBI,SARAve,IAAAiM,EAAA,MAAKq1D,QAAL,QAAAthE,EAA4B,SAC5BkM,EAAA,MAAKo1D,IAAwB,QAC7BrhE,IAAAgM,EAAA,MAAKo1D,QAAL,QAAAphE,EAAa,UACbiM,EAAA,MAAKm1D,IAAS,OACdn1D,EAAA,MAAKy1D,IAAc,KACnBz1D,EAAA,MAAKk1D,IAAU,MACf7iD,IAAAtS,EAAA,MAAKs1D,QAAL,QAAAhjD,EAAqB,UACrBrS,EAAA,MAAKq1D,IAAiB,OAClB,KAAK;AACP,iBAAWt6D,KAAW,KAAK;AACzB,QAAAA,EAAQ,UAAU,OAAO,kBAAkB;AAAA,EAGjD;AAAA,EA2EA,YAAY;AAEV,IADAiF,EAAA,MAAKy1D,IAAc,KAAK,YACnB11D,EAAA,MAAK01D,QAGV11D,EAAA,MAAKsP,IAAW,SAAS;AAAA,EAC3B;AAAA,EACA,YAAY;AACV,IAAItP,EAAA,MAAKkN,QAGT/U,EAAA,MAAK09D,GAAAC,IAAL,YACK91D,EAAA,MAAK01D,QAGL11D,EAAA,MAAKo1D,OACRj9D,EAAA,MAAK09D,GAAAW,IAAL,YAEFv2D,EAAA,MAAKy1D,IAAc,KACnB11D,EAAA,MAAKsP,IAAW,SAAS;AAAA,EAC3B;AAAA,EACA,IAAI,YAAY;AACd,WAAItP,EAAA,MAAKkN,MACA,KAEFlN,EAAA,MAAKsP,IAAW,WAAW;AAAA,EACpC;AACF;AAjjBEpC,KAAA,eACAunD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAvlD,KAAA,eACAwlD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACApqD,KAAA,eACAqqD,KAAA,eACAC,KAAA,eACA96C,KAAA,eACA+6C,KAAA,eACAn7C,KAAA,eACAo7C,KAAA,eACA5I,KAAA,eACA6I,KAAA,eACAC,KAAA,eACAC,KAAA,eA1BFC,IAAA,eA8DEC,KAAkB,WAAG;AAvnkBvB,MAAA/hE;AAwnkBI,MAAIiM,EAAA,MAAKq1D;AACP;AAEF,EAAAp1D,EAAA,MAAKo1D,IAAwB,IAAI,gBAAe;AAChD,QAAM;AAAA,IACJ,QAAA1uD;AAAA,EACN,IAAQ3G,EAAA,MAAKq1D;AACT,aAAWr6D,KAAW,KAAK;AACzB,IAAAA,EAAQ,iBAAiB,SAASgF,EAAA,MAAK40D,KAAc;AAAA,MACnD,QAAAjuD;AAAA,IACR,CAAO,GACD3L,EAAQ,iBAAiB,gBAAgBgF,EAAA,MAAK20D,KAAY;AAAA,MACxD,QAAAhuD;AAAA,IACR,CAAO,GACD3L,EAAQ,iBAAiB,gBAAgBgF,EAAA,MAAK00D,KAAY;AAAA,MACxD,QAAA/tD;AAAA,IACR,CAAO,GACD3L,EAAQ,UAAU,IAAI,kBAAkB;AAE1C,aAAWA,KAAWgF,EAAA,MAAKg1D;AACzB,KAAAjhE,IAAAiH,EAAQ,cAAR,QAAAjH,EAAmB,iBAAiB,WAAWiM,EAAA,MAAKy0D,KAAe;AAAA,MACjE,QAAA9tD;AAAA,IACR;AAEE,GACAovD,KAAyB,WAAG;AAC1B,QAAM/6D,IAAUgF,EAAA,MAAKg1D,IAAU,KAAK,CAAAt1D,MAAKA,EAAE,gBAAgB;AAC3D,EAAK1E,KAGLiF,EAAA,MAAKs1D,IAAyBv6D,EAAQ,gBAAgBA,EAAQ,qBAAqB;AACrF,GAwEAg7D,KAA4B,WAAG;AAC7B,MAAIh2D,EAAA,MAAK21D,IAAc,qBAAqB,CAAC31D,EAAA,MAAK21D,IAAc;AAC9D;AAEF,EAAK31D,EAAA,MAAKs1D,OACR,KAAK,oBAAmB;AAE1B,QAAM,CAAC79D,GAAGC,CAAC,IAAIsI,EAAA,MAAKu1D,KACd;AAAA,IACJ,OAAAxzD;AAAA,EACN,IAAQ/B,EAAA,MAAKs1D;AACT,EAAAvzD,EAAM,OAAO,QAAQtK,CAAC,MACtBsK,EAAM,MAAM,QAAQrK,CAAC;AACvB,GACAu+D,KAAY,WAAG;AACb,EAAIj2D,EAAA,MAAK21D,IAAc,sBAGlB31D,EAAA,MAAKs1D,OACR,KAAK,oBAAmB,GAE1Bt1D,EAAA,MAAKs1D,IAAe,MAAM,kBAAkB,KAAK,sBAAsB;AACzE,GAqJIY,KAAK,WAAG;AACV,QAAMj7C,IAAWjb,EAAA,MAAKqa,KAChB/D,IAActW,EAAA,MAAK80D;AACzB,SAAI75C,KAAA,QAAAA,EAAU,QAAQ,EAAC3E,KAAA,QAAAA,EAAa,QAAOA,EAAY,QAAQ2E,EAAS,QAC/Djb,EAAA,MAAKqa,IAAU,QAAQ;AAGlC,GACI87C,KAAS,WAAG;AAl5kBlB,MAAApiE,GAAAC,GAAAse;AAm5kBI,WAAOA,KAAAte,KAAAD,IAAAiM,EAAA,MAAK61D,GAAAK,QAAL,gBAAAniE,EAAY,eAAZ,gBAAAC,EAAwB,UAAxB,gBAAAse,EAA+B,aAAY;AACpD,GACI8jD,KAAU,WAAG;AAr5kBnB,MAAAriE,GAAAC,GAAAse;AAs5kBI,WAAOA,KAAAte,KAAAD,IAAAiM,EAAA,MAAK61D,GAAAK,QAAL,gBAAAniE,EAAY,eAAZ,gBAAAC,EAAwB,UAAxB,gBAAAse,EAA+B,UAAS;AACjD,GACA+jD,KAAiB,SAAC9hD,GAAM;AACtB,QAAM6iD,IAAa,CAAA,GACbC,IAAe;AAAA,IACnB,KAAK9iD;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,YAAY;AAAA,QACV,KAAK;AAAA,MACf;AAAA,MACQ,UAAU,CAAC;AAAA,QACT,MAAM;AAAA,QACN,UAAU6iD;AAAA,MACpB,CAAS;AAAA,IACT;AAAA,EACA,GACUE,IAAiB;AAAA,IACrB,OAAO;AAAA,MACL,OAAOt3D,EAAA,MAAK61D,GAAAO;AAAA,MACZ,UAAUp2D,EAAA,MAAK61D,GAAAM,MAAY,QAAQn2D,EAAA,MAAK61D,GAAAM,GAAS,oCAAoC;AAAA,IAC7F;AAAA,EACA;AACI,aAAW/wD,KAAQmP,EAAK,MAAM;AAAA,CAAI;AAChC,IAAA6iD,EAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAOhyD;AAAA,MACP,YAAYkyD;AAAA,IACpB,CAAO;AAEH,SAAOD;AACT,GACAxN,KAAQ,SAACzuD,GAAO;AACd,EAAIA,EAAM,UAAUA,EAAM,YAAYA,EAAM,WAAWA,EAAM,YAGzDA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,YAAY4E,EAAA,MAAKm1D,QAC1Dh9D,EAAA,MAAK09D,GAAAU,IAAL;AAEJ,GAyEAD,KAAY,WAAG;AACb,MAAIt2D,EAAA,MAAKiL,QAAc;AACrB;AAEF,QAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAAohB;AAAA,IACR;AAAA,IACM,UAAU;AAAA,MACR,SAAS;AAAA,QACP,WAAAxqB;AAAA,QACA,YAAAC;AAAA,QACA,OAAA+e;AAAA,QACA,OAAAC;AAAA,MACV;AAAA,IACA;AAAA,EACA,IAAQ9gB,EAAA,MAAKi1D;AACT,MAAIsC,IAAgB,CAAC,CAACv3D,EAAA,MAAKk1D,KACvBt/D,IAAO2hE,IAAgBv3D,EAAA,MAAKk1D,MAAcl1D,EAAA,MAAKw1D;AACnD,aAAWx6D,KAAWgF,EAAA,MAAKg1D;AACzB,QAAI,CAACp/D,KAAQtB,EAAK,UAAU0G,EAAQ,KAAK,MAAMpF,CAAI,MAAM,MAAM;AAC7D,MAAAA,IAAOoF,EAAQ,KAAK,MACpBu8D,IAAgB;AAChB;AAAA,IACF;AAEF,QAAMC,IAAiBljE,EAAK,cAAc,CAACsB,EAAK,CAAC,GAAGy2B,EAAK,CAAC,IAAIz2B,EAAK,CAAC,IAAIy2B,EAAK,CAAC,GAAGz2B,EAAK,CAAC,GAAGy2B,EAAK,CAAC,IAAIz2B,EAAK,CAAC,IAAIy2B,EAAK,CAAC,CAAC,CAAC,GAEhH1U,IAAc4/C,IAAgB3hE,EAAK,CAAC,IAAIA,EAAK,CAAC,IADV,IACkD,GACtF6hE,IAAYD,EAAe,CAAC,IAAI7/C,GAChC+/C,IAAWF,EAAe,CAAC;AACjC,EAAAv3D,EAAA,MAAKgL,IAAY,CAAC,OAAOwsD,IAAY52C,KAAShf,GAAW,OAAO61D,IAAW52C,KAAShf,CAAU;AAC9F,QAAM;AAAA,IACJ,OAAAC;AAAA,EACN,IAAQ/B,EAAA,MAAKsP;AACT,EAAAvN,EAAM,OAAO,GAAG/B,EAAA,MAAKiL,IAAU,CAAC,CAAC,KACjClJ,EAAM,MAAM,GAAG/B,EAAA,MAAKiL,IAAU,CAAC,CAAC;AAClC,GACAsrD,KAAO,WAAG;AACR,MAAIv2D,EAAA,MAAKkN,KAAiB;AACxB,IAAAlN,EAAA,MAAKkN,IAAgB,mBAAmB,MAAM,EAAK;AACnD;AAAA,EACF;AACA,EAAAjN,EAAA,MAAKk1D,IAAU,CAACn1D,EAAA,MAAKm1D,MACjBn1D,EAAA,MAAKm1D,OACPh9D,EAAA,MAAK09D,GAAAW,IAAL,YACAx2D,EAAA,MAAKsP,IAAW,iBAAiB,SAAStP,EAAA,MAAK40D,GAAY,GAC3D50D,EAAA,MAAKsP,IAAW,iBAAiB,WAAWtP,EAAA,MAAKy0D,GAAa,MAE9Dt8D,EAAA,MAAK09D,GAAAY,IAAL,YACAz2D,EAAA,MAAKsP,IAAW,oBAAoB,SAAStP,EAAA,MAAK40D,GAAY,GAC9D50D,EAAA,MAAKsP,IAAW,oBAAoB,WAAWtP,EAAA,MAAKy0D,GAAa;AAErE,GACA+B,KAAK,WAAG;AACN,EAAKx2D,EAAA,MAAKo1D,OACR,KAAK,OAAM,GAER,KAAK,YAICp1D,EAAA,MAAKm1D,OACdn1D,EAAA,MAAKsP,IAAW,UAAU,IAAI,SAAS,KAJvCnX,EAAA,MAAK09D,GAAAS,IAAL,YACAt2D,EAAA,MAAKsP,IAAW,SAAS,IACzBtP,EAAA,MAAKsP,IAAW,MAAM,SAAS,SAAStP,EAAA,MAAKsP,IAAW,MAAM,MAAM,IAAI;AAI5E,GACAmnD,KAAK,WAAG;AAEN,EADAz2D,EAAA,MAAKsP,IAAW,UAAU,OAAO,SAAS,GACtC,EAAAtP,EAAA,MAAKm1D,OAAW,CAAC,KAAK,eAG1Bn1D,EAAA,MAAKsP,IAAW,SAAS,IACzBtP,EAAA,MAAKsP,IAAW,MAAM,SAAS,SAAStP,EAAA,MAAKsP,IAAW,MAAM,MAAM,IAAI;AAC1E;AA6BF,MAAMw8C,WAAkCc,GAAkB;AAAA,EACxD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK,GACD,KAAK,cAAcA,EAAW,KAAK,aACnC,KAAK,eAAeA,EAAW,KAAK,cACpC,KAAK,uBAAuBhM,EAAqB;AAAA,EACnD;AAAA,EACA,SAAS;AAEP,QADA,KAAK,UAAU,UAAU,IAAI,oBAAoB,GAC7C,KAAK,aAAa;AACpB,YAAMg0B,IAAU,KAAK,iBAAiB,SAAS,cAAc,KAAK;AAClE,MAAAA,EAAQ,UAAU,IAAI,uBAAuB,GAC7CA,EAAQ,aAAa,QAAQ,SAAS;AACtC,iBAAWte,KAAQ,KAAK,aAAa;AACnC,cAAMuyD,IAAW,SAAS,cAAc,MAAM;AAC9C,QAAAA,EAAS,cAAcvyD,GACvBse,EAAQ,OAAOi0C,CAAQ;AAAA,MACzB;AACA,WAAK,UAAU,OAAOj0C,CAAO;AAAA,IAC/B;AACA,WAAI,CAAC,KAAK,KAAK,YAAY,KAAK,iBAC9B,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,mBAAkB,GAChB,KAAK;AAAA,EACd;AACF;AA1olBA,IAAAk0C;AA2olBA,MAAM7L,WAA8Ba,GAAkB;AAAA,EAEpD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,IAAAhD,EAAA,MAAAk/D,IAAQ;AAAA,EAMR;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,gBAAgB;AAC7C,UAAM;AAAA,MACJ,MAAAtyD;AAAA,MACA,OAAAxH;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ,MACE8L,IAAM,KAAK,WAAW,OAAO/L,GAAOC,GAAQ,EAAI,GAChDqH,IAAOnF,EAAA,MAAK23D,IAAQ,KAAK,WAAW,cAAc,UAAU;AAClE,WAAAxyD,EAAK,aAAa,MAAME,EAAK,KAAK,CAAC,IAAIA,EAAK,gBAAgB,CAAC,CAAC,GAC9DF,EAAK,aAAa,MAAME,EAAK,KAAK,CAAC,IAAIA,EAAK,gBAAgB,CAAC,CAAC,GAC9DF,EAAK,aAAa,MAAME,EAAK,KAAK,CAAC,IAAIA,EAAK,gBAAgB,CAAC,CAAC,GAC9DF,EAAK,aAAa,MAAME,EAAK,KAAK,CAAC,IAAIA,EAAK,gBAAgB,CAAC,CAAC,GAC9DF,EAAK,aAAa,gBAAgBE,EAAK,YAAY,SAAS,CAAC,GAC7DF,EAAK,aAAa,UAAU,aAAa,GACzCA,EAAK,aAAa,QAAQ,aAAa,GACvCyE,EAAI,OAAOzE,CAAI,GACf,KAAK,UAAU,OAAOyE,CAAG,GACrB,CAACvE,EAAK,YAAY,KAAK,iBACzB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEZ,KAAK;AAAA,EACd;AAAA,EACA,4BAA4B;AAC1B,WAAOtF,EAAA,MAAK43D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AACF;AArCEA,KAAA;AA5olBF,IAAAC;AAkrlBA,MAAM7L,WAAgCY,GAAkB;AAAA,EAEtD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,IAAAhD,EAAA,MAAAm/D,IAAU;AAAA,EAMV;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,kBAAkB;AAC/C,UAAM;AAAA,MACJ,MAAAvyD;AAAA,MACA,OAAAxH;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ,MACE8L,IAAM,KAAK,WAAW,OAAO/L,GAAOC,GAAQ,EAAI,GAChDgxD,IAAczpD,EAAK,YAAY,OAC/BwyD,IAAS73D,EAAA,MAAK43D,IAAU,KAAK,WAAW,cAAc,UAAU;AACtE,WAAAC,EAAO,aAAa,KAAK/I,IAAc,CAAC,GACxC+I,EAAO,aAAa,KAAK/I,IAAc,CAAC,GACxC+I,EAAO,aAAa,SAASh6D,IAAQixD,CAAW,GAChD+I,EAAO,aAAa,UAAU/5D,IAASgxD,CAAW,GAClD+I,EAAO,aAAa,gBAAgB/I,KAAe,CAAC,GACpD+I,EAAO,aAAa,UAAU,aAAa,GAC3CA,EAAO,aAAa,QAAQ,aAAa,GACzCjuD,EAAI,OAAOiuD,CAAM,GACjB,KAAK,UAAU,OAAOjuD,CAAG,GACrB,CAACvE,EAAK,YAAY,KAAK,iBACzB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEZ,KAAK;AAAA,EACd;AAAA,EACA,4BAA4B;AAC1B,WAAOtF,EAAA,MAAK63D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AACF;AAtCEA,KAAA;AAnrlBF,IAAAE;AA0tlBA,MAAM9L,WAAgCW,GAAkB;AAAA,EAEtD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,IAAAhD,EAAA,MAAAq/D,IAAU;AAAA,EAMV;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,kBAAkB;AAC/C,UAAM;AAAA,MACJ,MAAAzyD;AAAA,MACA,OAAAxH;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ,MACE8L,IAAM,KAAK,WAAW,OAAO/L,GAAOC,GAAQ,EAAI,GAChDgxD,IAAczpD,EAAK,YAAY,OAC/B0yD,IAAS/3D,EAAA,MAAK83D,IAAU,KAAK,WAAW,cAAc,aAAa;AACzE,WAAAC,EAAO,aAAa,MAAMl6D,IAAQ,CAAC,GACnCk6D,EAAO,aAAa,MAAMj6D,IAAS,CAAC,GACpCi6D,EAAO,aAAa,MAAMl6D,IAAQ,IAAIixD,IAAc,CAAC,GACrDiJ,EAAO,aAAa,MAAMj6D,IAAS,IAAIgxD,IAAc,CAAC,GACtDiJ,EAAO,aAAa,gBAAgBjJ,KAAe,CAAC,GACpDiJ,EAAO,aAAa,UAAU,aAAa,GAC3CA,EAAO,aAAa,QAAQ,aAAa,GACzCnuD,EAAI,OAAOmuD,CAAM,GACjB,KAAK,UAAU,OAAOnuD,CAAG,GACrB,CAACvE,EAAK,YAAY,KAAK,iBACzB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEZ,KAAK;AAAA,EACd;AAAA,EACA,4BAA4B;AAC1B,WAAOtF,EAAA,MAAK+3D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AACF;AAtCEA,KAAA;AA3tlBF,IAAAE;AAkwlBA,MAAM/L,WAAkCU,GAAkB;AAAA,EAExD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AALH,IAAAhD,EAAA,MAAAu/D,IAAY;AAMV,SAAK,qBAAqB,sBAC1B,KAAK,iBAAiB;AAAA,EACxB;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB;AACpD,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,MAAAriE;AAAA,QACA,UAAAsiE;AAAA,QACA,aAAAC;AAAA,QACA,UAAA9hD;AAAA,MACR;AAAA,MACM,OAAAvY;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ;AACJ,QAAI,CAACm6D;AACH,aAAO,KAAK;AAEd,UAAMruD,IAAM,KAAK,WAAW,OAAO/L,GAAOC,GAAQ,EAAI;AACtD,QAAIq6D,IAAS,CAAA;AACb,aAASjlE,IAAI,GAAGmL,IAAK45D,EAAS,QAAQ/kE,IAAImL,GAAInL,KAAK,GAAG;AACpD,YAAMsE,IAAIygE,EAAS/kE,CAAC,IAAIyC,EAAK,CAAC,GACxB8B,IAAI9B,EAAK,CAAC,IAAIsiE,EAAS/kE,IAAI,CAAC;AAClC,MAAAilE,EAAO,KAAK,GAAG3gE,CAAC,IAAIC,CAAC,EAAE;AAAA,IACzB;AACA,IAAA0gE,IAASA,EAAO,KAAK,GAAG;AACxB,UAAMC,IAAWp4D,EAAA,MAAKg4D,IAAY,KAAK,WAAW,cAAc,KAAK,cAAc;AACnF,WAAAI,EAAS,aAAa,UAAUD,CAAM,GACtCC,EAAS,aAAa,gBAAgBF,EAAY,SAAS,CAAC,GAC5DE,EAAS,aAAa,UAAU,aAAa,GAC7CA,EAAS,aAAa,QAAQ,aAAa,GAC3CxuD,EAAI,OAAOwuD,CAAQ,GACnB,KAAK,UAAU,OAAOxuD,CAAG,GACrB,CAACwM,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEZ,KAAK;AAAA,EACd;AAAA,EACA,4BAA4B;AAC1B,WAAOrW,EAAA,MAAKi4D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AACF;AAnDEA,KAAA;AAoDF,MAAM5L,WAAiCH,GAA0B;AAAA,EAC/D,YAAYxwD,GAAY;AACtB,UAAMA,CAAU,GAChB,KAAK,qBAAqB,qBAC1B,KAAK,iBAAiB;AAAA,EACxB;AACF;AACA,MAAMywD,WAA+BS,GAAkB;AAAA,EACrD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,gBAAK,UAAU,UAAU,IAAI,iBAAiB,GAC1C,CAAC,KAAK,KAAK,YAAY,KAAK,iBAC9B,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEZ,KAAK;AAAA,EACd;AACF;AA70lBA,IAAA48D,IAAAC,IAAAC,IAAAC;AA80lBA,MAAMrM,WAA6BQ,GAAkB;AAAA,EAGnD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK;AAPL,IAAAhD,EAAA,MAAA8/D;AACE,IAAA9/D,EAAA,MAAA4/D,IAAyB;AACzB,IAAA5/D,EAAA,MAAA6/D,IAAa,CAAA;AAMX,SAAK,qBAAqB,iBAC1B,KAAK,iBAAiB,gBACtB,KAAK,uBAAuB,KAAK,KAAK,OAAO,iBAAiB7oE,EAAqB,YAAYA,EAAqB;AAAA,EACtH;AAAA,EA6BA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,KAAK,kBAAkB;AACpD,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,MAAAkG;AAAA,QACA,UAAAsH;AAAA,QACA,UAAAqwD;AAAA,QACA,aAAA4K;AAAA,QACA,UAAA9hD;AAAA,MACR;AAAA,IACA,IAAQ,MACE;AAAA,MACJ,WAAA3hB;AAAA,MACA,OAAAoJ;AAAA,MACA,QAAAC;AAAA,IACN,IAAQ5F,EAAA,MAAKqgE,IAAAC,IAAL,WAAmBv7D,GAAUtH,IAC3BiU,IAAM,KAAK,WAAW,OAAO/L,GAAOC,GAAQ,EAAI,GAChDoF,IAAIlD,EAAA,MAAKq4D,IAAyB,KAAK,WAAW,cAAc,OAAO;AAC7E,IAAAzuD,EAAI,OAAO1G,CAAC,GACZA,EAAE,aAAa,gBAAgBg1D,EAAY,SAAS,CAAC,GACrDh1D,EAAE,aAAa,kBAAkB,OAAO,GACxCA,EAAE,aAAa,mBAAmB,OAAO,GACzCA,EAAE,aAAa,qBAAqB,EAAE,GACtCA,EAAE,aAAa,UAAU,aAAa,GACtCA,EAAE,aAAa,QAAQ,aAAa,GACpCA,EAAE,aAAa,aAAazO,CAAS;AACrC,aAASvB,IAAI,GAAGmL,IAAKivD,EAAS,QAAQp6D,IAAImL,GAAInL,KAAK;AACjD,YAAMklE,IAAW,KAAK,WAAW,cAAc,KAAK,cAAc;AAClE,MAAAr4D,EAAA,MAAKu4D,IAAW,KAAKF,CAAQ,GAC7BA,EAAS,aAAa,UAAU9K,EAASp6D,CAAC,EAAE,KAAK,GAAG,CAAC,GACrDgQ,EAAE,OAAOk1D,CAAQ;AAAA,IACnB;AACA,WAAI,CAAChiD,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,OAAOxM,CAAG,GACzB,KAAK,mBAAkB,GAChB,KAAK;AAAA,EACd;AAAA,EACA,aAAa8M,GAAQ;AACnB,UAAM,aAAaA,CAAM;AACzB,UAAM;AAAA,MACJ,WAAA+hD;AAAA,MACA,QAAAN;AAAA,MACA,MAAAxiE;AAAA,IACN,IAAQ+gB,GACExT,IAAInD,EAAA,MAAKs4D;AAIf,QAHII,KAAa,KACfv1D,EAAE,aAAa,gBAAgBu1D,KAAa,CAAC,GAE3CN;AACF,eAASjlE,IAAI,GAAGmL,IAAK0B,EAAA,MAAKu4D,IAAW,QAAQplE,IAAImL,GAAInL;AACnD,QAAA6M,EAAA,MAAKu4D,IAAWplE,CAAC,EAAE,aAAa,UAAUilE,EAAOjlE,CAAC,EAAE,KAAK,GAAG,CAAC;AAGjE,QAAIyC,GAAM;AACR,YAAM;AAAA,QACJ,WAAAlB;AAAA,QACA,OAAAoJ;AAAA,QACA,QAAAC;AAAA,MACR,IAAU5F,EAAA,MAAKqgE,IAAAC,IAAL,WAAmB,KAAK,KAAK,UAAU7iE;AAE3C,MADauN,EAAE,cACV,aAAa,WAAW,OAAOrF,CAAK,IAAIC,CAAM,EAAE,GACrDoF,EAAE,aAAa,aAAazO,CAAS;AAAA,IACvC;AAAA,EACF;AAAA,EACA,4BAA4B;AAC1B,WAAOsL,EAAA,MAAKu4D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AACF;AAhHED,KAAA,eACAC,KAAA,eAFFC,KAAA,eAYEC,KAAa,SAACv7D,GAAUtH,GAAM;AAC5B,UAAQsH,GAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,QACL,WAAW,wBAAwB,CAACtH,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC;AAAA,QACtD,OAAOA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,QACvB,QAAQA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAClC;AAAA,IACM,KAAK;AACH,aAAO;AAAA,QACL,WAAW,yBAAyB,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC;AAAA,QACvD,OAAOA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,QACvB,QAAQA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAClC;AAAA,IACM,KAAK;AACH,aAAO;AAAA,QACL,WAAW,yBAAyB,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC;AAAA,QACvD,OAAOA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,QACvB,QAAQA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAClC;AAAA,IACM;AACE,aAAO;AAAA,QACL,WAAW,aAAa,CAACA,EAAK,CAAC,CAAC,IAAIA,EAAK,CAAC,CAAC;AAAA,QAC3C,OAAOA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,QACvB,QAAQA,EAAK,CAAC,IAAIA,EAAK,CAAC;AAAA,MAClC;AAAA,EACA;AACE;AA2EF,MAAM02D,WAAmCM,GAAkB;AAAA,EACzD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK,GACD,KAAK,uBAAuBhM,EAAqB;AAAA,EACnD;AAAA,EACA,SAAS;AACP,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,cAAA4gE;AAAA,QACA,UAAAj6C;AAAA,MACR;AAAA,IACA,IAAQ;AAOJ,QANI,CAACA,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,GAClD,KAAK,mBAAkB,GACnBi6C,GAAc;AAChB,YAAMqI,IAAO,SAAS,cAAc,MAAM;AAC1C,MAAAA,EAAK,UAAU,IAAI,cAAc,GACjCA,EAAK,cAAcrI,GACnB,KAAK,UAAU,OAAOqI,CAAI;AAAA,IAC5B;AACA,WAAO,KAAK;AAAA,EACd;AACF;AACA,MAAMpM,WAAmCK,GAAkB;AAAA,EACzD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,cAAA40D;AAAA,QACA,UAAAj6C;AAAA,MACR;AAAA,IACA,IAAQ;AAMJ,QALI,CAACA,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,GAC9Ci6C,GAAc;AAChB,YAAMsI,IAAY,SAAS,cAAc,GAAG;AAC5C,MAAAA,EAAU,UAAU,IAAI,cAAc,GACtCA,EAAU,cAActI,GACxB,KAAK,UAAU,OAAOsI,CAAS;AAAA,IACjC;AACA,WAAO,KAAK;AAAA,EACd;AACF;AACA,MAAMpM,WAAkCI,GAAkB;AAAA,EACxD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,cAAA40D;AAAA,QACA,UAAAj6C;AAAA,MACR;AAAA,IACA,IAAQ;AAMJ,QALI,CAACA,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,UAAU,IAAI,oBAAoB,GAC7Ci6C,GAAc;AAChB,YAAMsI,IAAY,SAAS,cAAc,GAAG;AAC5C,MAAAA,EAAU,UAAU,IAAI,cAAc,GACtCA,EAAU,cAActI,GACxB,KAAK,UAAU,OAAOsI,CAAS;AAAA,IACjC;AACA,WAAO,KAAK;AAAA,EACd;AACF;AACA,MAAMnM,WAAmCG,GAAkB;AAAA,EACzD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,sBAAsB;AAAA,IAC5B,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,UAAM;AAAA,MACJ,MAAM;AAAA,QACJ,cAAA40D;AAAA,QACA,UAAAj6C;AAAA,MACR;AAAA,IACA,IAAQ;AAMJ,QALI,CAACA,KAAY,KAAK,iBACpB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,UAAU,UAAU,IAAI,qBAAqB,GAC9Ci6C,GAAc;AAChB,YAAMuI,IAAY,SAAS,cAAc,GAAG;AAC5C,MAAAA,EAAU,UAAU,IAAI,cAAc,GACtCA,EAAU,cAAcvI,GACxB,KAAK,UAAU,OAAOuI,CAAS;AAAA,IACjC;AACA,WAAO,KAAK;AAAA,EACd;AACF;AACA,MAAMnM,WAA+BE,GAAkB;AAAA,EACrD,YAAYlxD,GAAY;AACtB,UAAMA,GAAY;AAAA,MAChB,cAAc;AAAA,MACd,cAAc;AAAA,IACpB,CAAK,GACD,KAAK,uBAAuBhM,EAAqB;AAAA,EACnD;AAAA,EACA,SAAS;AACP,gBAAK,UAAU,UAAU,IAAI,iBAAiB,GAC9C,KAAK,UAAU,aAAa,QAAQ,KAAK,GACrC,CAAC,KAAK,KAAK,YAAY,KAAK,iBAC9B,KAAK,sBAAsB,IAC3B,KAAK,aAAY,IAEnB,KAAK,mBAAkB,GAChB,KAAK;AAAA,EACd;AACF;AAxkmBA,IAAAopE,IAAAC,IAAAC;AAykmBA,MAAMrM,WAAwCC,GAAkB;AAAA,EAE9D,YAAYlxD,GAAY;AA3kmB1B,QAAA3H;AA4kmBI,UAAM2H,GAAY;AAAA,MAChB,cAAc;AAAA,IACpB,CAAK;AALL,IAAAhD,EAAA,MAAAqgE;AACE,IAAArgE,EAAA,MAAAogE,IAAW;AAKT,UAAM;AAAA,MACJ,MAAA9uD;AAAA,IACN,IAAQ,KAAK;AACT,SAAK,WAAWA,EAAK,UACrB,KAAK,UAAUA,EAAK,UACpBjW,IAAA,KAAK,YAAY,aAAjB,QAAAA,EAA2B,SAAS,4BAA4B;AAAA,MAC9D,QAAQ;AAAA,MACR,GAAGiW;AAAA,IACT;AAAA,EACE;AAAA,EACA,SAAS;AACP,SAAK,UAAU,UAAU,IAAI,0BAA0B;AACvD,UAAM;AAAA,MACJ,WAAA/E;AAAA,MACA,MAAAK;AAAA,IACN,IAAQ;AACJ,QAAI2zD;AACJ,IAAI3zD,EAAK,iBAAiBA,EAAK,cAAc,IAC3C2zD,IAAU,SAAS,cAAc,KAAK,KAEtCA,IAAU,SAAS,cAAc,KAAK,GACtCA,EAAQ,MAAM,GAAG,KAAK,kBAAkB,cAAc,aAAa,KAAK3zD,EAAK,IAAI,IAAI,cAAc,SAAS,QACxGA,EAAK,aAAaA,EAAK,YAAY,MACrC2zD,EAAQ,QAAQ,mBAAmB,KAAK,MAAM3zD,EAAK,YAAY,GAAG,CAAC,SAGvE2zD,EAAQ,iBAAiB,YAAY9gE,EAAA,MAAK4gE,IAAAC,IAAU,KAAK,IAAI,CAAC,GAC9D/4D,EAAA,MAAK64D,IAAWG;AAChB,UAAM;AAAA,MACJ,OAAAjtD;AAAA,IACN,IAAQpY,GAAiB;AACrB,WAAAqR,EAAU,iBAAiB,WAAW,CAAA8M,MAAO;AAC3C,MAAIA,EAAI,QAAQ,YAAY/F,IAAQ+F,EAAI,UAAUA,EAAI,YACpD5Z,EAAA,MAAK4gE,IAAAC,IAAL;AAAA,IAEJ,CAAC,GACG,CAAC1zD,EAAK,YAAY,KAAK,gBACzB,KAAK,sBAAsB,IAC3B,KAAK,aAAY,KAEjB2zD,EAAQ,UAAU,IAAI,kBAAkB,GAE1Ch0D,EAAU,OAAOg0D,CAAO,GACjBh0D;AAAA,EACT;AAAA,EACA,4BAA4B;AAC1B,WAAOjF,EAAA,MAAK84D;AAAA,EACd;AAAA,EACA,mBAAmB;AACjB,SAAK,UAAU,UAAU,IAAI,eAAe;AAAA,EAC9C;AAIF;AA3DEA,KAAA,eADFC,KAAA,eAyDEC,KAAS,WAAG;AAlomBd,MAAAjlE;AAmomBI,GAAAA,IAAA,KAAK,oBAAL,QAAAA,EAAsB,mBAAmB,KAAK,SAAS,KAAK;AAC9D;AApomBF,IAAAmlE,IAAAC,IAAApsD,IAAAqsD,IAAAC,IAAAC,IAAAtE,IAAAuE,IAAAC,IAAAC,IAAAC;AAsomBA,MAAMC,KAAN,MAAMA,GAAgB;AAAA,EASpB,YAAY;AAAA,IACV,KAAAl4D;AAAA,IACA,sBAAAm4D;AAAA,IACA,qBAAAlwB;AAAA,IACA,2BAAAmwB;AAAA,IACA,MAAAtgE;AAAA,IACA,UAAAmI;AAAA,IACA,iBAAAo4D;AAAA,IACA,gBAAA1oD;AAAA,IACA,aAAA9V;AAAA,IACA,mBAAA8rD;AAAA,EACJ,GAAK;AApBL,IAAA1uD,EAAA,MAAA8gE;AACE,IAAA9gE,EAAA,MAAAwgE,IAAwB;AACxB,IAAAxgE,EAAA,MAAAygE,IAAuB;AACvB,IAAAzgE,EAAA,MAAAqU,IAAqB;AACrB,IAAArU,EAAA,MAAA0gE,IAAuB,oBAAI,IAAG;AAC9B,IAAA1gE,EAAA,MAAA2gE,IAAmB;AACnB,IAAA3gE,EAAA,MAAA4gE,IAAe;AACf,IAAA5gE,EAAA,MAAAs8D,IAAY,CAAA;AACZ,IAAAt8D,EAAA,MAAA6gE,IAAmC;AAajC,SAAK,MAAM93D,GACXxB,EAAA,MAAKi5D,IAAwBU,IAC7B35D,EAAA,MAAKk5D,IAAuBzvB,IAC5BzpC,EAAA,MAAKo5D,IAAmBS,KAAmB,OAC3C75D,EAAA,MAAKq5D,IAAeh+D,KAAe,OACnC2E,EAAA,MAAK8M,IAAqBq6C,KAAqB,IAAIv/B,GAAiB,IACpE,KAAK,OAAOtuB,GACZ,KAAK,WAAWmI,GAChB,KAAK,SAAS,GACd,KAAK,6BAA6Bm4D,GAClC,KAAK,kBAAkBzoD,KAAkB;AAAA,EAC3C;AAAA,EACA,yBAAyB;AACvB,WAAOpR,EAAA,MAAKo5D,IAAqB,OAAO;AAAA,EAC1C;AAAA,EACA,MAAM,OAAOziD,GAAQ;AA1qmBvB,QAAA5iB;AA2qmBI,UAAM;AAAA,MACJ,aAAAgmE;AAAA,IACN,IAAQpjD,GACE9D,IAAQ,KAAK;AACnB,IAAArR,GAAmBqR,GAAO,KAAK,QAAQ;AACvC,UAAMmnD,IAAkB,oBAAI,IAAG,GACzBC,IAAmB,CAAA,GACnBC,IAAgB;AAAA,MACpB,MAAM;AAAA,MACN,OAAArnD;AAAA,MACA,aAAa7S,EAAA,MAAKs5D;AAAA,MAClB,iBAAiB3iD,EAAO;AAAA,MACxB,oBAAoBA,EAAO,sBAAsB;AAAA,MACjD,aAAaA,EAAO,gBAAgB;AAAA,MACpC,YAAY,IAAIo0C,GAAa;AAAA,MAC7B,mBAAmB/qD,EAAA,MAAK+M;AAAA,MACxB,eAAe4J,EAAO,kBAAkB;AAAA,MACxC,iBAAiBA,EAAO,oBAAoB;AAAA,MAC5C,cAAcA,EAAO;AAAA,MACrB,cAAcA,EAAO;AAAA,MACrB,QAAQ;AAAA,MACR,UAAU;AAAA,IAChB;AACI,eAAWrR,KAAQy0D,GAAa;AAC9B,UAAIz0D,EAAK;AACP;AAEF,YAAM60D,IAAoB70D,EAAK,mBAAmBtV,GAAe;AACjE,UAAKmqE,GAIE;AACL,cAAM7F,IAAW0F,EAAgB,IAAI10D,EAAK,EAAE;AAC5C,YAAI,CAACgvD;AACH;AAEF,YAAI,CAAC,KAAK,iBAAiB;AACzB,UAAA2F,EAAiB,KAAK30D,CAAI;AAC1B;AAAA,QACF;AACA,QAAA40D,EAAc,WAAW5F;AAAA,MAC3B,WAbMhvD,EAAK,KAAK,CAAC,MAAMA,EAAK,KAAK,CAAC,KAAKA,EAAK,KAAK,CAAC,MAAMA,EAAK,KAAK,CAAC;AAC/D;AAaJ,MAAA40D,EAAc,OAAO50D;AACrB,YAAMtK,IAAUmwD,GAAyB,OAAO+O,CAAa;AAC7D,UAAI,CAACl/D,EAAQ;AACX;AAEF,UAAI,CAACm/D,MACHn6D,EAAA,MAAKg1D,IAAU,KAAKh6D,CAAO,GACvBsK,EAAK,WAAU;AACjB,cAAMgvD,IAAW0F,EAAgB,IAAI10D,EAAK,QAAQ;AAClD,QAAKgvD,IAGHA,EAAS,KAAKt5D,CAAO,IAFrBg/D,EAAgB,IAAI10D,EAAK,UAAU,CAACtK,CAAO,CAAC;AAAA,MAIhD;AAEF,YAAMo/D,IAAWp/D,EAAQ,OAAM;AAC/B,MAAIsK,EAAK,WACP80D,EAAS,MAAM,aAAa,WAE1Bp/D,EAAQ,gBACVgF,EAAA,MAAKo5D,IAAqB,IAAIp+D,EAAQ,KAAK,IAAIA,CAAO,IACtDjH,IAAA,KAAK,+BAAL,QAAAA,EAAiC,wBAAwBiH;AAAA,IAE7D;AACA,UAAM7C,EAAA,MAAKqhE,IAAAC,IAAL;AACN,eAAWn0D,KAAQ20D,GAAkB;AACnC,YAAM3F,IAAW4F,EAAc,WAAWF,EAAgB,IAAI10D,EAAK,EAAE;AACrE,MAAA40D,EAAc,OAAO50D;AACrB,YAAMtK,IAAUmwD,GAAyB,OAAO+O,CAAa;AAC7D,UAAI,CAACl/D,EAAQ;AACX;AAEF,YAAMo/D,IAAWp/D,EAAQ,OAAM;AAC/B,MAAAA,EAAQ,eAAe,KAAK,GAAG9B,EAAgB,GAAGoM,EAAK,EAAE,IACrDA,EAAK,WACP80D,EAAS,MAAM,aAAa,WAE9B9F,EAAS,GAAG,EAAE,EAAE,UAAU,MAAM8F,CAAQ;AAAA,IAC1C;AACA,IAAAjiE,EAAA,MAAKqhE,IAAAE,IAAL;AAAA,EACF;AAAA,EAyEA,MAAM,mBAAmBK,GAAa;AACpC,UAAMG,IAAgB;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,aAAal6D,EAAA,MAAKs5D;AAAA,MAClB,YAAY,IAAIvO,GAAa;AAAA,MAC7B,QAAQ;AAAA,IACd;AACI,eAAWzlD,KAAQy0D,GAAa;AAC9B,MAAAz0D,EAAK,gBAALA,EAAK,cAAgBq0D,GAAgB,sBACrCO,EAAc,OAAO50D;AACrB,YAAMtK,IAAUmwD,GAAyB,OAAO+O,CAAa;AAC7D,MAAKl/D,EAAQ,iBAGbA,EAAQ,OAAM,GACdA,EAAQ,eAAe,KAAK,GAAG9B,EAAgB,GAAGoM,EAAK,EAAE,IACzDtF,EAAA,MAAKg1D,IAAU,KAAKh6D,CAAO;AAAA,IAC7B;AACA,UAAM7C,EAAA,MAAKqhE,IAAAC,IAAL;AAAA,EACR;AAAA,EACA,OAAO;AAAA,IACL,UAAA/3D;AAAA,EACJ,GAAK;AACD,UAAMmR,IAAQ,KAAK;AACnB,SAAK,WAAWnR,GAChBF,GAAmBqR,GAAO;AAAA,MACxB,UAAUnR,EAAS;AAAA,IACzB,CAAK,GACDvJ,EAAA,MAAKqhE,IAAAE,IAAL,YACA7mD,EAAM,SAAS;AAAA,EACjB;AAAA,EAqCA,yBAAyB;AACvB,WAAO,MAAM,KAAK7S,EAAA,MAAKo5D,IAAqB,OAAM,CAAE;AAAA,EACtD;AAAA,EACA,sBAAsBr+D,GAAI;AACxB,WAAOiF,EAAA,MAAKo5D,IAAqB,IAAIr+D,CAAE;AAAA,EACzC;AAAA,EACA,kBAAkB0L,GAAQ;AACxB,UAAM;AAAA,MACJ,KAAAhF;AAAA,IACN,IAAQ,MACE;AAAA,MACJ,IAAA1G;AAAA,MACA,UAAAmC;AAAA,IACN,IAAQuJ,GACEzL,IAAU,IAAI80D,GAAwB;AAAA,MAC1C,MAAM;AAAA,QACJ,IAAA/0D;AAAA,QACA,MAAM0L,EAAO,WAAU;AAAA,QACvB,UAAAvJ;AAAA,MACR;AAAA,MACM,QAAAuJ;AAAA,MACA,OAAOhF;AAAA,MACP,QAAQ;AAAA,MACR,eAAe,CAAC,CAAC,KAAK;AAAA,MACtB,aAAazB,EAAA,MAAKs5D;AAAA,MAClB,mBAAmBt5D,EAAA,MAAK+M;AAAA,IAC9B,CAAK;AACD,WAAA/R,EAAQ,OAAM,GACdA,EAAQ,eAAe,KAAK,GAAG9B,EAAgB,GAAG6B,CAAE,IACpDC,EAAQ,oBAAmB,GAC3BgF,EAAA,MAAKg1D,IAAU,KAAKh6D,CAAO,GACpBA;AAAA,EACT;AAAA,EACA,iBAAiBD,GAAI;AA76mBvB,QAAAhH;AA86mBI,UAAMu4B,IAAQtsB,EAAA,MAAKg1D,IAAU,UAAU,CAAA74D,MAAMA,EAAG,KAAK,OAAOpB,CAAE;AAC9D,QAAIuxB,IAAQ;AACV;AAEF,UAAM,CAACtxB,CAAO,IAAIgF,EAAA,MAAKg1D,IAAU,OAAO1oC,GAAO,CAAC;AAChD,KAAAv4B,IAAAiM,EAAA,MAAKk5D,QAAL,QAAAnlE,EAA4B,yBAAyBiH,EAAQ;AAAA,EAC/D;AAAA,EACA,sBAAsBia,GAAS;AAC7B,QAAIA,EAAQ,WAAW,GAGvB;AAAA,iBAAWxO,KAAUwO;AACnB,QAAAxO,EAAO,4BAA4B,IAAI;AAEzC,MAAAtO,EAAA,MAAKqhE,IAAAC,IAAL;AAAA;AAAA,EACF;AAAA,EACA,oBAAoB5/C,IAAU,IAAO;AACnC,SAAK,IAAI,UAAU,OAAO,YAAY,CAACA,CAAO;AAAA,EAChD;AAAA,EACA,WAAW,sBAAsB;AAC/B,WAAOjoB,EAAO,MAAM,uBAAuB,OAAO,OAAO;AAAA,MACvD,OAAO;AAAA,MACP,UAAU;AAAA,MACV,OAAO3B,GAA0B;AAAA,MACjC,WAAW,CAAC,CAAC;AAAA,MACb,wBAAwB;AAAA,MACxB,sBAAsB;AAAA,IAC5B,CAAK,CAAC;AAAA,EACJ;AACF;AApUEipE,KAAA,eACAC,KAAA,eACApsD,KAAA,eACAqsD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAtE,KAAA,eACAuE,KAAA,eARFC,KAAA,eA0HQC,KAAiB,iBAAG;AAhwmB5B,MAAA1lE,GAAAC,GAAAse;AAiwmBI,MAAItS,EAAA,MAAKg1D,IAAU,WAAW;AAC5B;AAEF,OAAK,IAAI,gBAAe;AACxB,QAAM78C,IAAW,CAAA;AACjB,MAAI,CAACnY,EAAA,MAAKu5D,KAAkC;AAC1C,IAAAt5D,EAAA,MAAKs5D,IAAmC;AACxC,eAAW;AAAA,MACT,gBAAAc;AAAA,MACA,MAAM;AAAA,QACJ,IAAAt/D;AAAA,MACV;AAAA,IACA,KAAWiF,EAAA,MAAKg1D,KAAW;AACnB,YAAMtgD,IAAe2lD,EAAe,KAAK,GAAGnhE,EAAgB,GAAG6B,CAAE;AACjE,MAAAod,EAAS,MAAKpkB,IAAAiM,EAAA,MAAKq5D,QAAL,gBAAAtlE,EAAuB,kBAAkB2gB,GAAc,KAAK,CAAA4lD,MAAkB;AAC1F,YAAIA;AACF,qBAAW,CAAC7+D,GAAK1J,CAAK,KAAKuoE;AACzB,YAAAD,EAAe,aAAa5+D,GAAK1J,CAAK;AAAA,MAG5C,EAAE;AAAA,IACJ;AAAA,EACF;AACA,EAAAiO,EAAA,MAAKg1D,IAAU,KAAK,CAAC;AAAA,IACnB,MAAM;AAAA,MACJ,MAAM,CAAC9+D,GAAIE,GAAID,GAAIE,CAAE;AAAA,IAC7B;AAAA,EACA,GAAO;AAAA,IACD,MAAM;AAAA,MACJ,MAAM,CAACC,GAAIE,GAAID,GAAIE,CAAE;AAAA,IAC7B;AAAA,EACA,MAAU;AACJ,QAAIP,MAAOC,KAAMC,MAAOC;AACtB,aAAO;AAET,QAAIC,MAAOC,KAAMC,MAAOC;AACtB,aAAO;AAET,UAAM8jE,IAAOlkE,GACPmkE,IAAOpkE,GACPqkE,KAAQrkE,IAAKC,KAAM,GACnBqkE,IAAOjkE,GACPkkE,IAAOnkE,GACPokE,KAAQpkE,IAAKC,KAAM;AACzB,QAAIgkE,KAAQC,KAAQE,KAAQJ;AAC1B,aAAO;AAET,QAAII,KAAQL,KAAQE,KAAQE;AAC1B,aAAO;AAET,UAAME,KAAY3kE,IAAKC,KAAM,GACvB2kE,KAAYxkE,IAAKC,KAAM;AAC7B,WAAOskE,IAAWC;AAAA,EACpB,CAAC;AACD,QAAM51D,IAAW,SAAS,uBAAsB;AAChD,aAAWlK,KAAWgF,EAAA,MAAKg1D;AACzB,IAAA9vD,EAAS,OAAOlK,EAAQ,SAAS,GAC7B,KAAK,mBACNsX,MAAAte,IAAAgH,EAAQ,sBAAR,gBAAAhH,EAA2B,UAASgH,EAAQ,UAA5C,QAAAsX,EAAoD,wBAC5CtX,EAAQ,qBACjBkK,EAAS,OAAOlK,EAAQ,kBAAkB,OAAM,CAAE;AAKtD,MAFA,KAAK,IAAI,OAAOkK,CAAQ,GACxB,MAAM,QAAQ,IAAIiT,CAAQ,GACtBnY,EAAA,MAAKk5D;AACP,eAAWl+D,KAAWgF,EAAA,MAAKg1D;AACzB,MAAAh1D,EAAA,MAAKk5D,IAAsB,sBAAsBl+D,EAAQ,gBAAgB,EAAK;AAGpF,GAiCA0+D,KAAuB,WAAG;AAx2mB5B,MAAA3lE;AAy2mBI,MAAI,CAACiM,EAAA,MAAKm5D;AACR;AAEF,QAAMtmD,IAAQ,KAAK;AACnB,aAAW,CAAC9X,GAAIsP,CAAM,KAAKrK,EAAA,MAAKm5D,KAAsB;AACpD,UAAMn+D,IAAU6X,EAAM,cAAc,wBAAwB9X,CAAE,IAAI;AAClE,QAAI,CAACC;AACH;AAEF,IAAAqP,EAAO,YAAY;AACnB,UAAM;AAAA,MACJ,YAAA0wD;AAAA,IACR,IAAU//D;AACJ,IAAK+/D,IAEMA,EAAW,aAAa,WACjCA,EAAW,YAAY1wD,CAAM,IACnB0wD,EAAW,UAAU,SAAS,mBAAmB,IAG3DA,EAAW,MAAM1wD,CAAM,IAFvB0wD,EAAW,OAAO1wD,CAAM,IAJxBrP,EAAQ,OAAOqP,CAAM;AAQvB,UAAM2wD,IAAqBh7D,EAAA,MAAKo5D,IAAqB,IAAIr+D,CAAE;AAC3D,IAAKigE,MAGDA,EAAmB,iBACrBjnE,IAAA,KAAK,+BAAL,QAAAA,EAAiC,iBAAiBgH,GAAIC,EAAQ,IAAIqP,IAClE2wD,EAAmB,eAAe,MAElCA,EAAmB,SAAS3wD;AAAA,EAEhC;AACA,EAAArK,EAAA,MAAKm5D,IAAqB,MAAK;AACjC;AArQF,IAAM8B,KAANtB;AA6UA,MAAMuB,KAAc;AAn9mBpB,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAvF,IAAAwF,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAo9mBA,MAAMC,KAAN,MAAMA,WAAuB51C,GAAiB;AAAA,EA6C5C,YAAY1P,GAAQ;AAClB,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AAjDL,IAAAje,EAAA,MAAA6iE;AACE,IAAA7iE,EAAA,MAAAyiE,IAAW;AACX,IAAAziE,EAAA,MAAA0iE,IAAe,GAAG,KAAK,EAAE;AACzB,IAAA1iE,EAAA,MAAA2iE,IAAc;AACd,IAAA3iE,EAAA,MAAA4iE;AACA,IAAAh/D,EAAA,sBAAe;AA6Cb,SAAK,QAAQqa,EAAO,SAASslD,GAAe,iBAAiB51C,GAAiB,mBAC9EpmB,EAAA,MAAKq7D,IAAY3kD,EAAO,YAAYslD,GAAe,mBAC9C,KAAK,uBACR,KAAK,WAAW,UAAU,mCAAmC,GAE/D,KAAK,gBAAgB;AAAA,EACvB;AAAA,EA9CA,WAAW,mBAAmB;AAC5B,UAAMjqD,IAAQiqD,GAAe,WACvBhqD,IAAe,CAAA9F,MAAQA,EAAK,QAAO,GACnCiG,IAAQgG,GAA0B,iBAClC/F,IAAM+F,GAA0B;AACtC,WAAOxmB,EAAO,MAAM,oBAAoB,IAAIka,GAAgB,CAAC,CAAC,CAAC,UAAU,cAAc,UAAU,YAAY,GAAGkG,EAAM,gBAAgB;AAAA,MACpI,SAAS;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,kBAAkB,UAAU,YAAY,GAAGA,EAAM,cAAc,GAAG,CAAC,CAAC,aAAa,eAAe,GAAGA,EAAM,iBAAiB;AAAA,MAC5I,MAAM,CAAC,CAACI,GAAO,CAAC;AAAA,MAChB,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAGD,EAAM,iBAAiB;AAAA,MACrE,MAAM,CAAC,CAACK,GAAK,CAAC;AAAA,MACd,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAGD,EAAM,iBAAiB;AAAA,MAC5D,MAAM,CAACI,GAAO,CAAC;AAAA,MACf,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,mBAAmB,sBAAsB,GAAGD,EAAM,iBAAiB;AAAA,MACvE,MAAM,CAACK,GAAK,CAAC;AAAA,MACb,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAGD,EAAM,iBAAiB;AAAA,MACtD,MAAM,CAAC,GAAG,CAACI,CAAK;AAAA,MAChB,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,gBAAgB,mBAAmB,GAAGD,EAAM,iBAAiB;AAAA,MACjE,MAAM,CAAC,GAAG,CAACK,CAAG;AAAA,MACd,SAASJ;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAGD,EAAM,iBAAiB;AAAA,MAC1D,MAAM,CAAC,GAAGI,CAAK;AAAA,MACf,SAASH;AAAA,IACf,CAAK,GAAG,CAAC,CAAC,kBAAkB,qBAAqB,GAAGD,EAAM,iBAAiB;AAAA,MACrE,MAAM,CAAC,GAAGK,CAAG;AAAA,MACb,SAASJ;AAAA,IACf,CAAK,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EAeA,OAAO,WAAWmH,GAAMpR,GAAW;AACjC,IAAAqe,GAAiB,WAAWjN,GAAMpR,CAAS;AAC3C,UAAMjG,IAAQ,iBAAiB,SAAS,eAAe;AACvD,SAAK,mBAAmB,WAAWA,EAAM,iBAAiB,oBAAoB,CAAC;AAAA,EACjF;AAAA,EACA,OAAO,oBAAoBtF,GAAM1K,GAAO;AACtC,YAAQ0K,GAAI;AAAA,MACV,KAAK9M,GAA2B;AAC9B,QAAAssE,GAAe,mBAAmBlqE;AAClC;AAAA,MACF,KAAKpC,GAA2B;AAC9B,QAAAssE,GAAe,gBAAgBlqE;AAC/B;AAAA,IACR;AAAA,EACE;AAAA,EACA,aAAa0K,GAAM1K,GAAO;AACxB,YAAQ0K,GAAI;AAAA,MACV,KAAK9M,GAA2B;AAC9B,QAAAwI,EAAA,MAAKojE,IAAAC,IAAL,WAAqBzpE;AACrB;AAAA,MACF,KAAKpC,GAA2B;AAC9B,QAAAwI,EAAA,MAAKojE,IAAAtF,IAAL,WAAkBlkE;AAClB;AAAA,IACR;AAAA,EACE;AAAA,EACA,WAAW,4BAA4B;AACrC,WAAO,CAAC,CAACpC,GAA2B,eAAessE,GAAe,gBAAgB,GAAG,CAACtsE,GAA2B,gBAAgBssE,GAAe,iBAAiB51C,GAAiB,iBAAiB,CAAC;AAAA,EACtM;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,CAAC,CAAC12B,GAA2B,eAAeqQ,EAAA,MAAKs7D,GAAS,GAAG,CAAC3rE,GAA2B,gBAAgB,KAAK,KAAK,CAAC;AAAA,EAC7H;AAAA,EACA,IAAI,iBAAiB;AACnB,gBAAK,iBAAL,KAAK,eAAiB,IAAI46D,GAAiB,IAAI,IACxC,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC;AAAA,EAC5C;AAAA,EACA,IAAI,YAAY;AACd,WAAO56D,GAA2B;AAAA,EACpC;AAAA,EAmBA,iBAAiB;AArknBnB,QAAAoE;AAsknBI,SAAK,UAAU,MAAM,QAAQ,KAAK,QAClCA,IAAA,KAAK,iBAAL,QAAAA,EAAmB,OAAO,KAAK,QAC/B,MAAM,eAAc;AAAA,EACtB;AAAA,EAiBA,gBAAgB0D,GAAGC,GAAG;AACpB,SAAK,WAAW,yBAAyBD,GAAGC,GAAG,EAAI;AAAA,EACrD;AAAA,EACA,wBAAwB;AACtB,UAAMuF,IAAQ,KAAK;AACnB,WAAO,CAAC,CAACg/D,GAAe,mBAAmBh/D,GAAO,EAAEg/D,GAAe,mBAAmBj8D,EAAA,MAAKs7D,OAAar+D,CAAK;AAAA,EAC/G;AAAA,EACA,UAAU;AACR,IAAK,KAAK,WAGV,MAAM,QAAO,GACT,KAAK,QAAQ,SAGZ,KAAK,mBACR,KAAK,OAAO,IAAI,IAAI;AAAA,EAExB;AAAA,EACA,iBAAiB;AACf,QAAI,CAAC,MAAM;AACT,aAAO;AAET,SAAK,WAAW,UAAU,OAAO,SAAS,GAC1C,KAAK,UAAU,kBAAkB,IACjC,KAAK,eAAe,IACpB,KAAK,IAAI,gBAAgB,uBAAuB,GAChDgD,EAAA,MAAKo7D,IAAc,IAAI,gBAAe;AACtC,UAAM10D,IAAS,KAAK,WAAW,eAAe3G,EAAA,MAAKq7D,GAAW;AAC9D,gBAAK,UAAU,iBAAiB,WAAW,KAAK,iBAAiB,KAAK,IAAI,GAAG;AAAA,MAC3E,QAAA10D;AAAA,IACN,CAAK,GACD,KAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE,QAAAA;AAAA,IACN,CAAK,GACD,KAAK,UAAU,iBAAiB,QAAQ,KAAK,cAAc,KAAK,IAAI,GAAG;AAAA,MACrE,QAAAA;AAAA,IACN,CAAK,GACD,KAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE,QAAAA;AAAA,IACN,CAAK,GACD,KAAK,UAAU,iBAAiB,SAAS,KAAK,eAAe,KAAK,IAAI,GAAG;AAAA,MACvE,QAAAA;AAAA,IACN,CAAK,GACM;AAAA,EACT;AAAA,EACA,kBAAkB;AAxonBpB,QAAA5S;AAyonBI,WAAK,MAAM,qBAGX,KAAK,WAAW,UAAU,IAAI,SAAS,GACvC,KAAK,UAAU,kBAAkB,IACjC,KAAK,IAAI,aAAa,yBAAyBiM,EAAA,MAAKo7D,GAAY,GAChE,KAAK,eAAe,KACpBrnE,IAAAiM,EAAA,MAAKq7D,QAAL,QAAAtnE,EAAkB,SAClBkM,EAAA,MAAKo7D,IAAc,OACnB,KAAK,IAAI,MAAM;AAAA,MACb,eAAe;AAAA,IACrB,CAAK,GACD,KAAK,YAAY,IACjB,KAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB,GACxC,MAbE;AAAA,EAcX;AAAA,EACA,QAAQjgE,GAAO;AACb,IAAK,KAAK,wBAGV,MAAM,QAAQA,CAAK,GACfA,EAAM,WAAW,KAAK,aACxB,KAAK,UAAU,MAAK;AAAA,EAExB;AAAA,EACA,UAAUqnB,GAAO;AAlqnBnB,QAAA1uB;AAmqnBI,IAAI,KAAK,UAGT,KAAK,eAAc,GACf0uB,KACF,KAAK,UAAU,MAAK,IAElB1uB,IAAA,KAAK,oBAAL,QAAAA,EAAsB,cACxB,KAAK,OAAM,GAEb,KAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,UAAU;AACR,WAAO,CAAC,KAAK,aAAa,KAAK,UAAU,UAAU,KAAI,MAAO;AAAA,EAChE;AAAA,EACA,SAAS;AACP,SAAK,YAAY,IACb,KAAK,WACP,KAAK,OAAO,gBAAgB,EAAI,GAChC,KAAK,OAAO,IAAI,UAAU,IAAI,iBAAiB,IAEjD,MAAM,OAAM;AAAA,EACd;AAAA,EA2CA,SAAS;AACP,QAAI,CAAC,KAAK;AACR;AAEF,UAAM,OAAM,GACZ,KAAK,gBAAe;AACpB,UAAMmoE,IAAYl8D,EAAA,MAAKm7D,KACjBgB,IAAUl8D,EAAA,MAAKk7D,IAAWhjE,EAAA,MAAKojE,IAAAE,IAAL,WAAoB,QAAO;AAC3D,QAAIS,MAAcC;AAChB;AAEF,UAAMC,IAAU,CAAA7nD,MAAQ;AAEtB,UADAtU,EAAA,MAAKk7D,IAAW5mD,IACZ,CAACA,GAAM;AACT,aAAK,OAAM;AACX;AAAA,MACF;AACA,MAAApc,EAAA,MAAKojE,IAAAM,IAAL,YACA,KAAK,WAAW,QAAQ,IAAI,GAC5B1jE,EAAA,MAAKojE,IAAAG,IAAL;AAAA,IACF;AACA,SAAK,YAAY;AAAA,MACf,KAAK,MAAM;AACT,QAAAU,EAAQD,CAAO;AAAA,MACjB;AAAA,MACA,MAAM,MAAM;AACV,QAAAC,EAAQF,CAAS;AAAA,MACnB;AAAA,MACA,UAAU;AAAA,IAChB,CAAK,GACD/jE,EAAA,MAAKojE,IAAAG,IAAL;AAAA,EACF;AAAA,EACA,0BAA0B;AACxB,WAAO,KAAK,aAAY;AAAA,EAC1B;AAAA,EACA,kBAAkB;AAChB,SAAK,eAAc,GACnB,KAAK,UAAU,MAAK;AAAA,EACtB;AAAA,EACA,QAAQtgE,GAAO;AACb,IAAIA,EAAM,WAAW,KAAK,OAAOA,EAAM,QAAQ,YAC7C,KAAK,gBAAe,GACpBA,EAAM,eAAc;AAAA,EAExB;AAAA,EACA,iBAAiBA,GAAO;AACtB,IAAA6gE,GAAe,iBAAiB,KAAK,MAAM7gE,CAAK;AAAA,EAClD;AAAA,EACA,eAAeA,GAAO;AACpB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,cAAcA,GAAO;AACnB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,eAAeA,GAAO;AACpB,SAAK,OAAO,IAAI,UAAU,OAAO,mBAAmB,KAAK,SAAS;AAAA,EACpE;AAAA,EACA,iBAAiB;AACf,SAAK,UAAU,aAAa,QAAQ,SAAS,GAC7C,KAAK,UAAU,gBAAgB,gBAAgB;AAAA,EACjD;AAAA,EACA,gBAAgB;AACd,SAAK,UAAU,aAAa,QAAQ,SAAS,GAC7C,KAAK,UAAU,aAAa,kBAAkB,EAAI;AAAA,EACpD;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEd,QAAIkmB,GAAOC;AACX,KAAI,KAAK,WAAW,KAAK,yBACvBD,IAAQ,KAAK,GACbC,IAAQ,KAAK,IAEf,MAAM,OAAM,GACZ,KAAK,YAAY,SAAS,cAAc,KAAK,GAC7C,KAAK,UAAU,YAAY,YAC3B,KAAK,UAAU,aAAa,MAAMvhB,EAAA,MAAKo7D,GAAY,GACnD,KAAK,UAAU,aAAa,gBAAgB,kBAAkB,GAC9D,KAAK,UAAU,aAAa,mBAAmB,iBAAiB,GAChE,KAAK,cAAa,GAClB,KAAK,UAAU,kBAAkB;AACjC,UAAM;AAAA,MACJ,OAAAr5D;AAAA,IACN,IAAQ,KAAK;AAOT,QANAA,EAAM,WAAW,QAAQ/B,EAAA,MAAKs7D,GAAS,mCACvCv5D,EAAM,QAAQ,KAAK,OACnB,KAAK,IAAI,OAAO,KAAK,SAAS,GAC9B,KAAK,aAAa,SAAS,cAAc,KAAK,GAC9C,KAAK,WAAW,UAAU,IAAI,WAAW,SAAS,GAClD,KAAK,IAAI,OAAO,KAAK,UAAU,GAC3B,KAAK,WAAW,KAAK,qBAAqB;AAC5C,YAAM,CAAC4V,GAAaC,CAAY,IAAI,KAAK;AACzC,UAAI,KAAK,qBAAqB;AAC5B,cAAM;AAAA,UACJ,UAAA/Q;AAAA,QACV,IAAY,KAAK;AACT,YAAI,CAAC4Q,GAAIC,CAAE,IAAI,KAAK,sBAAqB;AACzC,SAACD,GAAIC,CAAE,IAAI,KAAK,wBAAwBD,GAAIC,CAAE;AAC9C,cAAM,CAAC7V,GAAWC,CAAU,IAAI,KAAK,gBAC/B,CAAC+e,GAAOC,CAAK,IAAI,KAAK;AAC5B,YAAIzN,GAAMC;AACV,gBAAQ,KAAK,UAAQ;AAAA,UACnB,KAAK;AACH,YAAAD,IAAOiO,KAASza,EAAS,CAAC,IAAIga,KAAShf,GACvCyR,IAAOiO,IAAQ,KAAK,UAAU1a,EAAS,CAAC,IAAIia,KAAShf;AACrD;AAAA,UACF,KAAK;AACH,YAAAuR,IAAOiO,KAASza,EAAS,CAAC,IAAIga,KAAShf,GACvCyR,IAAOiO,KAAS1a,EAAS,CAAC,IAAIia,KAAShf,GACvC,CAAC2V,GAAIC,CAAE,IAAI,CAACA,GAAI,CAACD,CAAE;AACnB;AAAA,UACF,KAAK;AACH,YAAApE,IAAOiO,IAAQ,KAAK,SAASza,EAAS,CAAC,IAAIga,KAAShf,GACpDyR,IAAOiO,KAAS1a,EAAS,CAAC,IAAIia,KAAShf,GACvC,CAAC2V,GAAIC,CAAE,IAAI,CAAC,CAACD,GAAI,CAACC,CAAE;AACpB;AAAA,UACF,KAAK;AACH,YAAArE,IAAOiO,KAASza,EAAS,CAAC,IAAIga,IAAQ,KAAK,SAAS/e,KAAcD,GAClEyR,IAAOiO,KAAS1a,EAAS,CAAC,IAAIia,IAAQ,KAAK,QAAQjf,KAAaC,GAChE,CAAC2V,GAAIC,CAAE,IAAI,CAAC,CAACA,GAAID,CAAE;AACnB;AAAA,QACZ;AACQ,aAAK,MAAMpE,IAAOsE,GAAarE,IAAOsE,GAAcH,GAAIC,CAAE;AAAA,MAC5D;AACE,aAAK,gBAAgB4J,GAAOC,CAAK;AAEnC,MAAAppB,EAAA,MAAKojE,IAAAM,IAAL,YACA,KAAK,eAAe,IACpB,KAAK,UAAU,kBAAkB;AAAA,IACnC;AACE,WAAK,eAAe,IACpB,KAAK,UAAU,kBAAkB;AAEnC,WAAO,KAAK;AAAA,EACd;AAAA,EAIA,eAAezgE,GAAO;AAl3nBxB,QAAArH,GAAAC,GAAAse;AAm3nBI,UAAM6C,IAAgB/Z,EAAM,iBAAiB,OAAO,eAC9C;AAAA,MACJ,OAAAoa;AAAA,IACN,IAAQL;AACJ,QAAIK,EAAM,WAAW,KAAKA,EAAM,CAAC,MAAM;AACrC;AAEF,IAAApa,EAAM,eAAc;AACpB,UAAMihE,IAAQlkE,EAAApE,IAAAkoE,IAAeN,IAAAI,IAAf,KAAAhoE,GAAmCohB,EAAc,QAAQ,MAAM,KAAK,IAAI,WAAW+lD,IAAa;AAAA,CAAI;AAClH,QAAI,CAACmB;AACH;AAEF,UAAMnoD,IAAY,OAAO,aAAY;AACrC,QAAI,CAACA,EAAU;AACb;AAEF,SAAK,UAAU,UAAS,GACxBA,EAAU,mBAAkB;AAC5B,UAAM4D,IAAQ5D,EAAU,WAAW,CAAC;AACpC,QAAI,CAACmoD,EAAM,SAAS;AAAA,CAAI,GAAG;AACzB,MAAAvkD,EAAM,WAAW,SAAS,eAAeukD,CAAK,CAAC,GAC/C,KAAK,UAAU,UAAS,GACxBnoD,EAAU,gBAAe;AACzB;AAAA,IACF;AACA,UAAM;AAAA,MACJ,gBAAAooD;AAAA,MACA,aAAAC;AAAA,IACN,IAAQzkD,GACE0kD,IAAe,CAAA,GACfC,IAAc,CAAA;AACpB,QAAIH,EAAe,aAAa,KAAK,WAAW;AAC9C,YAAMrgE,IAASqgE,EAAe;AAE9B,UADAG,EAAY,KAAKH,EAAe,UAAU,MAAMC,CAAW,EAAE,WAAWrB,IAAa,EAAE,CAAC,GACpFj/D,MAAW,KAAK,WAAW;AAC7B,YAAI+vB,IAASwwC;AACb,mBAAW5hE,KAAS,KAAK,UAAU,YAAY;AAC7C,cAAIA,MAAUqB,GAAQ;AACpB,YAAA+vB,IAASywC;AACT;AAAA,UACF;AACA,UAAAzwC,EAAO,KAAK7zB,EAAAnE,IAAAioE,IAAeN,IAAAC,IAAf,KAAA5nE,GAA+B4G,EAAM;AAAA,QACnD;AAAA,MACF;AACA,MAAA4hE,EAAa,KAAKF,EAAe,UAAU,MAAM,GAAGC,CAAW,EAAE,WAAWrB,IAAa,EAAE,CAAC;AAAA,IAC9F,WAAWoB,MAAmB,KAAK,WAAW;AAC5C,UAAItwC,IAASwwC,GACTrpE,IAAI;AACR,iBAAWyH,KAAS,KAAK,UAAU;AACjC,QAAIzH,QAAQopE,MACVvwC,IAASywC,IAEXzwC,EAAO,KAAK7zB,EAAAma,IAAA2pD,IAAeN,IAAAC,IAAf,KAAAtpD,GAA+B1X,EAAM;AAAA,IAErD;AACA,IAAAqF,EAAA,MAAKk7D,IAAW,GAAGqB,EAAa,KAAK;AAAA,CAAI,CAAC,GAAGH,CAAK,GAAGI,EAAY,KAAK;AAAA,CAAI,CAAC,KAC3EtkE,EAAA,MAAKojE,IAAAM,IAAL;AACA,UAAMa,IAAW,IAAI,MAAK;AAC1B,QAAIC,IAAe,KAAK,WAAWH,EAAa,IAAI,CAAAp3D,MAAQA,EAAK,MAAM,CAAC;AACxE,eAAW;AAAA,MACT,YAAA21D;AAAA,IACN,KAAS,KAAK,UAAU;AAClB,UAAIA,EAAW,aAAa,KAAK,WAAW;AAC1C,cAAM/nE,IAAS+nE,EAAW,UAAU;AACpC,YAAI4B,KAAgB3pE,GAAQ;AAC1B,UAAA0pE,EAAS,SAAS3B,GAAY4B,CAAY,GAC1CD,EAAS,OAAO3B,GAAY4B,CAAY;AACxC;AAAA,QACF;AACA,QAAAA,KAAgB3pE;AAAA,MAClB;AAEF,IAAAkhB,EAAU,gBAAe,GACzBA,EAAU,SAASwoD,CAAQ;AAAA,EAC7B;AAAA,EAkBA,IAAI,aAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EACA,aAAa;AACX,UAAME,IAAUX,GAAe,mBAAmB,KAAK;AACvD,WAAO,KAAK,QAAQW,GAASA,CAAO;AAAA,EACtC;AAAA,EACA,aAAa,YAAYt3D,GAAMrJ,GAAQ+L,GAAW;AAt9nBpD,QAAAjU;AAu9nBI,QAAI+hD,IAAc;AAClB,QAAIxwC,aAAgBwmD,IAA2B;AAC7C,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,uBAAuB;AAAA,YACrB,UAAA1d;AAAA,YACA,WAAAojB;AAAA,UACZ;AAAA,UACU,MAAA57D;AAAA,UACA,UAAAsH;AAAA,UACA,IAAAnC;AAAA,UACA,UAAAsb;AAAA,UACA,UAAA4E;AAAA,UACA,aAAA3E;AAAA,UACA,cAAAiM;AAAA,UACA,kBAAAC;AAAA,QACV;AAAA,QACQ,aAAA6hC;AAAA,QACA,cAAAwY;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,YAAAlpD;AAAA,UACZ;AAAA,QACA;AAAA,MACA,IAAUrO;AACJ,UAAI,CAAC++C,KAAeA,EAAY,WAAW;AACzC,eAAO;AAET,MAAAvO,IAAcxwC,IAAO;AAAA,QACnB,gBAAgB5V,EAAqB;AAAA,QACrC,OAAO,MAAM,KAAK8hE,CAAS;AAAA,QAC3B,UAAApjB;AAAA,QACA,OAAOiW,EAAY,KAAK;AAAA,CAAI;AAAA,QAC5B,UAAUwY;AAAA,QACV,WAAWlpD,IAAa;AAAA,QACxB,MAAM/d,EAAK,MAAM,CAAC;AAAA,QAClB,UAAAsH;AAAA,QACA,qBAAqBnC;AAAA,QACrB,IAAAA;AAAA,QACA,SAAS;AAAA,QACT,UAAAsb;AAAA,QACA,UAASC,KAAA,gBAAAA,EAAa,QAAO;AAAA,QAC7B,UAAA2E;AAAA,QACA,cAAAsH;AAAA,QACA,kBAAAC;AAAA,MACR;AAAA,IACI;AACA,UAAM/b,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS;AAC9D,WAAA/H,EAAAwG,GAAO60D,IAAYh2D,EAAK,WACxBmB,EAAO,QAAQnS,EAAK,aAAa,GAAGgR,EAAK,KAAK,GAC9CrF,EAAAwG,GAAO00D,IAAWhjE,EAAApE,IAAAkoE,IAAeN,IAAAI,IAAf,KAAAhoE,GAAmCuR,EAAK,SAC1DmB,EAAO,eAAeqvC,GAClBxwC,EAAK,WACPmB,EAAO,eAAenB,CAAI,GAErBmB;AAAA,EACT;AAAA,EACA,UAAUgT,IAAe,IAAO;AAC9B,QAAI,KAAK;AACP,aAAO;AAET,QAAI,KAAK;AACP,aAAO,KAAK,iBAAgB;AAE9B,UAAM3Y,IAAQulB,GAAiB,cAAc,QAAQ,KAAK,kBAAkB,iBAAiB,KAAK,SAAS,EAAE,QAAQ,KAAK,KAAK,GACzHnR,IAAa,OAAO,OAAO,MAAM,UAAUuE,CAAY,GAAG;AAAA,MAC9D,OAAA3Y;AAAA,MACA,UAAUd,EAAA,MAAKs7D;AAAA,MACf,OAAOnjE,EAAA,MAAKojE,IAAAO,IAAL;AAAA,IACb,CAAK;AAED,WADA,KAAK,WAAW5mD,CAAU,GACtBuE,KACFvE,EAAW,SAAS,IACbA,KAEL,KAAK,uBAAuB,CAAC/c,EAAA,MAAKojE,IAAAS,IAAL,WAAwB9mD,KAChD,QAETA,EAAW,KAAK,KAAK,qBACdA;AAAA,EACT;AAAA,EAUA,wBAAwBkB,GAAY;AAClC,UAAMsN,IAAU,MAAM,wBAAwBtN,CAAU;AACxD,QAAI,CAACsN;AACH,aAAO;AAET,UAAM;AAAA,MACJ,OAAA3hB;AAAA,IACN,IAAQ2hB;AACJ,IAAA3hB,EAAM,WAAW,QAAQ/B,EAAA,MAAKs7D,GAAS,mCACvCv5D,EAAM,QAAQ,KAAK,OACnB2hB,EAAQ,gBAAe;AACvB,eAAWte,KAAQpF,EAAA,MAAKm7D,IAAS,MAAM;AAAA,CAAI,GAAG;AAC5C,YAAM15D,IAAM,SAAS,cAAc,KAAK;AACxC,MAAAA,EAAI,OAAO2D,IAAO,SAAS,eAAeA,CAAI,IAAI,SAAS,cAAc,IAAI,CAAC,GAC9Ese,EAAQ,OAAOjiB,CAAG;AAAA,IACpB;AACA,WAAA2U,EAAW,aAAa;AAAA,MACtB,MAAM,KAAK,WAAU;AAAA,MACrB,OAAO,KAAK,WAAW,kBAAiB,KAAM,KAAK,mBAAmB,KAAK,UAAU;AAAA,QACnF,MAAMpW,EAAA,MAAKm7D;AAAA,MACnB;AAAA,IACA,CAAK,GACMz3C;AAAA,EACT;AAAA,EACA,uBAAuBtN,GAAY;AACjC,UAAM,uBAAuBA,CAAU,GACvCA,EAAW,YAAW;AAAA,EACxB;AACF;AAxnBE+kD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAJFC,KAAA,eA+FEC,KAAe,SAACptB,GAAU;AACxB,QAAM0uB,IAAc,CAAA5yD,MAAQ;AAC1B,SAAK,UAAU,MAAM,WAAW,QAAQA,CAAI,mCAC5C,KAAK,UAAU,GAAG,EAAEA,IAAOlK,EAAA,MAAKs7D,OAAa,KAAK,WAAW,GAC7Dr7D,EAAA,MAAKq7D,IAAYpxD,IACjB/R,EAAA,MAAKojE,IAAAG,IAAL;AAAA,EACF,GACMqB,IAAgB/8D,EAAA,MAAKs7D;AAC3B,OAAK,YAAY;AAAA,IACf,KAAKwB,EAAY,KAAK,MAAM1uB,CAAQ;AAAA,IACpC,MAAM0uB,EAAY,KAAK,MAAMC,CAAa;AAAA,IAC1C,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAMptE,GAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACH,GAMAsmE,KAAY,SAACn1D,GAAO;AAClB,QAAMitD,IAAW,CAAAiP,MAAO;AACtB,SAAK,QAAQA,GACb,KAAK,eAAc;AAAA,EACrB,GACMC,IAAa,KAAK;AACxB,OAAK,YAAY;AAAA,IACf,KAAKlP,EAAS,KAAK,MAAMjtD,CAAK;AAAA,IAC9B,MAAMitD,EAAS,KAAK,MAAMkP,CAAU;AAAA,IACpC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAMttE,GAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK;AACH,GAiGA8rE,KAAY,WAAG;AA1rnBjB,MAAA1nE;AA2rnBI,QAAMi4B,IAAS,CAAA;AACf,OAAK,UAAU,UAAS;AACxB,MAAIkxC,IAAY;AAChB,aAAWtiE,KAAS,KAAK,UAAU;AACjC,KAAIsiE,KAAA,gBAAAA,EAAW,cAAa,KAAK,aAAatiE,EAAM,aAAa,SAGjEoxB,EAAO,KAAK7zB,EAAApE,IAAAkoE,IAAeN,IAAAC,IAAf,KAAA7nE,GAA+B6G,EAAM,GACjDsiE,IAAYtiE;AAEd,SAAOoxB,EAAO,KAAK;AAAA,CAAI;AACzB,GACA0vC,KAAoB,WAAG;AACrB,QAAM,CAAC/jD,GAAaC,CAAY,IAAI,KAAK;AACzC,MAAIhiB;AACJ,MAAI,KAAK;AACP,IAAAA,IAAO,KAAK,IAAI,sBAAqB;AAAA,OAChC;AACL,UAAM;AAAA,MACJ,cAAAoiB;AAAA,MACA,KAAAvW;AAAA,IACR,IAAU,MACE07D,IAAe17D,EAAI,MAAM,SACzB27D,IAAkB37D,EAAI,UAAU,SAAS,QAAQ;AACvD,IAAAA,EAAI,UAAU,OAAO,QAAQ,GAC7BA,EAAI,MAAM,UAAU,UACpBuW,EAAa,IAAI,OAAO,KAAK,GAAG,GAChCpiB,IAAO6L,EAAI,sBAAqB,GAChCA,EAAI,OAAM,GACVA,EAAI,MAAM,UAAU07D,GACpB17D,EAAI,UAAU,OAAO,UAAU27D,CAAe;AAAA,EAChD;AACA,EAAI,KAAK,WAAW,QAAQ,KAAK,iBAAiB,OAChD,KAAK,QAAQxnE,EAAK,QAAQ+hB,GAC1B,KAAK,SAAS/hB,EAAK,SAASgiB,MAE5B,KAAK,QAAQhiB,EAAK,SAAS+hB,GAC3B,KAAK,SAAS/hB,EAAK,QAAQgiB,IAE7B,KAAK,kBAAiB;AACxB,GA/QF+jD,KAAA,eA2ZSC,KAAe,SAACjhE,GAAM;AAC3B,UAAQA,EAAK,aAAa,KAAK,YAAYA,EAAK,YAAYA,EAAK,WAAW,WAAWugE,IAAa,EAAE;AACxG,GA6EAW,KAAW,WAAG;AAEZ,MADA,KAAK,UAAU,gBAAe,GAC1B,EAAC77D,EAAA,MAAKm7D;AAGV,eAAW/1D,KAAQpF,EAAA,MAAKm7D,IAAS,MAAM;AAAA,CAAI,GAAG;AAC5C,YAAM15D,IAAM,SAAS,cAAc,KAAK;AACxC,MAAAA,EAAI,OAAO2D,IAAO,SAAS,eAAeA,CAAI,IAAI,SAAS,cAAc,IAAI,CAAC,GAC9E,KAAK,UAAU,OAAO3D,CAAG;AAAA,IAC3B;AACF,GACAq6D,KAAiB,WAAG;AAClB,SAAO97D,EAAA,MAAKm7D,IAAS,WAAW,KAAQ,GAAG;AAC7C,GACOY,KAAmB,SAACr4C,GAAS;AAClC,SAAOA,EAAQ,WAAW,KAAK,GAAM;AACvC,GA0FAs4C,KAAkB,SAAC9mD,GAAY;AAC7B,QAAM;AAAA,IACJ,OAAAnjB;AAAA,IACA,UAAAq8C;AAAA,IACA,OAAAttC;AAAA,IACA,WAAAyS;AAAA,EACN,IAAQ,KAAK;AACT,SAAO,KAAK,oBAAoB,KAAK,iBAAiB2B,EAAW,UAAUnjB,KAASmjB,EAAW,aAAak5B,KAAYl5B,EAAW,MAAM,KAAK,CAACle,GAAG7D,MAAM6D,MAAM8J,EAAM3N,CAAC,CAAC,KAAK+hB,EAAW,cAAc3B;AACtM,GA5lBF7a,EAAMujE,IAANN,KAMEr/D,EANI2/D,IAMG,2BAA0B,KACjC3/D,EAPI2/D,IAOG,oBAAmB,IAC1B3/D,EARI2/D,IAQG,iBAAgB,OACvB3/D,EATI2/D,IASG,oBAAmB,KAkC1B3/D,EA3CI2/D,IA2CG,SAAQ,aACf3/D,EA5CI2/D,IA4CG,eAAcvsE,EAAqB;AA5C5C,IAAM2tE,KAANpB;AA6nBA,MAAMqB,EAAQ;AAAA,EAEZ,YAAY;AACV,IAAAzsE,GAAY,kDAAkD;AAAA,EAChE;AAAA,EACA,IAAI,MAAM;AACR,IAAAA,GAAY,4CAA4C;AAAA,EAC1D;AAAA,EACA,UAAU0sE,GAAOjhB,GAAW;AAC1B,IAAAzrD,GAAY,kDAAkD;AAAA,EAChE;AAAA,EACA,OAAO,SAAS44B,GAAKhS,GAAIC,GAAI8lD,GAAIC,GAAInkE,GAAM;AACzC,IAAAA,UAAS,IAAI,aAAamwB,EAAI,MAAM;AACpC,aAASt2B,IAAI,GAAGmL,IAAKmrB,EAAI,QAAQt2B,IAAImL,GAAInL,KAAK;AAC5C,MAAAmG,EAAKnG,CAAC,IAAIskB,IAAKgS,EAAIt2B,CAAC,IAAIqqE,GACxBlkE,EAAKnG,IAAI,CAAC,IAAIukB,IAAK+R,EAAIt2B,IAAI,CAAC,IAAIsqE;AAElC,WAAOnkE;AAAA,EACT;AAAA,EACA,OAAO,gBAAgBmwB,GAAKhS,GAAIC,GAAI8lD,GAAIC,GAAInkE,GAAM;AAChD,IAAAA,UAAS,IAAI,aAAamwB,EAAI,MAAM;AACpC,aAASt2B,IAAI,GAAGmL,IAAKmrB,EAAI,QAAQt2B,IAAImL,GAAInL,KAAK;AAC5C,MAAAmG,EAAKnG,CAAC,IAAIskB,IAAKgS,EAAIt2B,IAAI,CAAC,IAAIqqE,GAC5BlkE,EAAKnG,IAAI,CAAC,IAAIukB,IAAK+R,EAAIt2B,CAAC,IAAIsqE;AAE9B,WAAOnkE;AAAA,EACT;AAAA,EACA,OAAO,WAAWmwB,GAAKhS,GAAIC,GAAIpe,GAAM;AACnC,IAAAA,UAAS,IAAI,aAAamwB,EAAI,MAAM;AACpC,aAAS,IAAI,GAAGnrB,IAAKmrB,EAAI,QAAQ,IAAInrB,GAAI,KAAK;AAC5C,MAAAhF,EAAK,CAAC,IAAIme,IAAKgS,EAAI,CAAC,GACpBnwB,EAAK,IAAI,CAAC,IAAIoe,IAAK+R,EAAI,IAAI,CAAC;AAE9B,WAAOnwB;AAAA,EACT;AAAA,EACA,OAAO,SAAS7B,GAAG;AACjB,WAAO,KAAK,MAAMA,IAAI,GAAK;AAAA,EAC7B;AAAA,EACA,OAAO,gBAAgBA,GAAGC,GAAGigB,GAAaC,GAAc1a,GAAU;AAChE,YAAQA,GAAQ;AAAA,MACd,KAAK;AACH,eAAO,CAAC,IAAIxF,IAAIigB,GAAalgB,IAAImgB,CAAY;AAAA,MAC/C,KAAK;AACH,eAAO,CAAC,IAAIngB,IAAIkgB,GAAa,IAAIjgB,IAAIkgB,CAAY;AAAA,MACnD,KAAK;AACH,eAAO,CAAClgB,IAAIigB,GAAa,IAAIlgB,IAAImgB,CAAY;AAAA,MAC/C;AACE,eAAO,CAACngB,IAAIkgB,GAAajgB,IAAIkgB,CAAY;AAAA,IACjD;AAAA,EACE;AAAA,EACA,OAAO,oBAAoBngB,GAAGC,GAAGwF,GAAU;AACzC,YAAQA,GAAQ;AAAA,MACd,KAAK;AACH,eAAO,CAAC,IAAIxF,GAAGD,CAAC;AAAA,MAClB,KAAK;AACH,eAAO,CAAC,IAAIA,GAAG,IAAIC,CAAC;AAAA,MACtB,KAAK;AACH,eAAO,CAACA,GAAG,IAAID,CAAC;AAAA,MAClB;AACE,eAAO,CAACA,GAAGC,CAAC;AAAA,IACpB;AAAA,EACE;AAAA,EACA,OAAO,mBAAmBG,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAI;AAChD,WAAO,EAAEL,IAAK,IAAIE,KAAM,IAAID,IAAK,IAAIE,KAAM,IAAI,IAAID,IAAKE,KAAM,IAAI,IAAID,IAAKE,KAAM,IAAIH,IAAKE,KAAM,IAAID,IAAKE,KAAM,CAAC;AAAA,EAClH;AACF;AAhEEoE,EADIghE,GACG,aAAY;AAlloBrB,IAAAI,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAupoBA,MAAMC,KAAN,MAAMA,GAAiB;AAAA,EAiBrB,YAAY;AAAA,IACV,GAAAznE;AAAA,IACA,GAAAC;AAAA,EACJ,GAAK2Q,GAAK82D,GAAazG,GAAWxwD,GAAOk3D,IAAc,GAAG;AApB1D,IAAA1mE,EAAA,MAAAgmE;AACE,IAAAhmE,EAAA,MAAAglE;AACA,IAAAhlE,EAAA,MAAAilE,IAAU,CAAA;AACV,IAAAjlE,EAAA,MAAAklE;AACA,IAAAllE,EAAA,MAAAmlE;AACA,IAAAnlE,EAAA,MAAAolE,IAAO,CAAA;AACP,IAAAplE,EAAA,MAAAqlE,GAAQ,IAAI,aAAa,EAAE;AAC3B,IAAArlE,EAAA,MAAAslE;AACA,IAAAtlE,EAAA,MAAAulE;AACA,IAAAvlE,EAAA,MAAAwlE;AACA,IAAAxlE,EAAA,MAAAylE;AACA,IAAAzlE,EAAA,MAAA0lE;AACA,IAAA1lE,EAAA,MAAA2lE;AACA,IAAA3lE,EAAA,MAAA4lE,IAAU,CAAA;AAQR,IAAAr+D,EAAA,MAAKy9D,IAAOr1D,IACZpI,EAAA,MAAKo+D,IAAa3F,IAAYyG,IAC9Bl/D,EAAA,MAAK49D,IAAS31D,IACdlI,EAAA,MAAK+9D,GAAM,IAAI,CAAC,KAAK,KAAK,KAAK,KAAKtmE,GAAGC,CAAC,GAAG,CAAC,GAC5CuI,EAAA,MAAK29D,IAAewB,IACpBn/D,EAAA,MAAKk+D,IAAYn+D,EAAAk/D,IAAiBX,MAAYY,IAC9Cl/D,EAAA,MAAKi+D,IAAOl+D,EAAAk/D,IAAiBT,MAAOU,IACpCl/D,EAAA,MAAKm+D,IAAee,IACpBn/D,EAAA,MAAKs+D,IAAQ,KAAK7mE,GAAGC,CAAC;AAAA,EACxB;AAAA,EACA,UAAU;AACR,WAAO,MAAMsI,EAAA,MAAK+9D,GAAM,CAAC,CAAC;AAAA,EAC5B;AAAA,EAOA,IAAI;AAAA,IACF,GAAAtmE;AAAA,IACA,GAAAC;AAAA,EACJ,GAAK;AAlsoBL,QAAA3D;AAmsoBI,IAAAkM,EAAA,MAAK+9D,IAASvmE,IACdwI,EAAA,MAAKg+D,IAASvmE;AACd,UAAM,CAACoc,GAAQC,GAAQk5B,GAAYC,CAAW,IAAIltC,EAAA,MAAK09D;AACvD,QAAI,CAAC7lE,GAAIC,GAAIC,GAAIC,CAAE,IAAIgI,EAAA,MAAK+9D,GAAM,SAAS,GAAG,EAAE;AAChD,UAAMsB,IAAQ5nE,IAAIM,GACZunE,IAAQ5nE,IAAIM,GACZrC,IAAI,KAAK,MAAM0pE,GAAOC,CAAK;AACjC,QAAI3pE,IAAIqK,EAAA,MAAKk+D;AACX,aAAO;AAET,UAAMqB,IAAQ5pE,IAAIqK,EAAA,MAAKm+D,KACjBqB,IAAID,IAAQ5pE,GACZ0sB,IAASm9C,IAAIH,GACb/8C,IAASk9C,IAAIF;AACnB,QAAI3nE,IAAKE,GACLD,IAAKE;AACT,IAAAD,IAAKE,GACLD,IAAKE,GACLD,KAAMsqB,GACNrqB,KAAMsqB,IACNvuB,IAAAiM,EAAA,MAAKs+D,QAAL,QAAAvqE,EAAc,KAAK0D,GAAGC;AACtB,UAAM+nE,IAAK,CAACn9C,IAASi9C,GACfG,IAAKr9C,IAASk9C,GACdI,IAAMF,IAAKz/D,EAAA,MAAKq+D,KAChBuB,IAAMF,IAAK1/D,EAAA,MAAKq+D;AAKtB,WAJAr+D,EAAA,MAAK+9D,GAAM,IAAI/9D,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAC3C/9D,EAAA,MAAK+9D,GAAM,IAAI,CAAChmE,IAAK4nE,GAAK3nE,IAAK4nE,CAAG,GAAG,CAAC,GACtC5/D,EAAA,MAAK+9D,GAAM,IAAI/9D,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GAAG,EAAE,GAC9C/9D,EAAA,MAAK+9D,GAAM,IAAI,CAAChmE,IAAK4nE,GAAK3nE,IAAK4nE,CAAG,GAAG,EAAE,GACnC,MAAM5/D,EAAA,MAAK+9D,GAAM,CAAC,CAAC,KACjB/9D,EAAA,MAAK89D,IAAK,WAAW,MACvB99D,EAAA,MAAK+9D,GAAM,IAAI,CAAClmE,IAAK8nE,GAAK7nE,IAAK8nE,CAAG,GAAG,CAAC,GACtC5/D,EAAA,MAAK89D,IAAK,KAAK,KAAK,KAAK,KAAK,MAAMjmE,IAAK8nE,IAAM7rD,KAAUm5B,IAAan1C,IAAK8nE,IAAM7rD,KAAUm5B,CAAW,GACtGltC,EAAA,MAAK+9D,GAAM,IAAI,CAAClmE,IAAK8nE,GAAK7nE,IAAK8nE,CAAG,GAAG,EAAE,GACvC5/D,EAAA,MAAK29D,IAAQ,KAAK,KAAK,KAAK,KAAK,MAAM9lE,IAAK8nE,IAAM7rD,KAAUm5B,IAAan1C,IAAK8nE,IAAM7rD,KAAUm5B,CAAW,IAE3GltC,EAAA,MAAK+9D,GAAM,IAAI,CAACpmE,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE,GAAG,CAAC,GACnC,CAAC,KAAK,QAAO,MAEtBgI,EAAA,MAAK+9D,GAAM,IAAI,CAACpmE,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE,GAAG,CAAC,GAC5B,KAAK,IAAI,KAAK,MAAMJ,IAAKE,GAAIH,IAAKE,CAAE,IAAI,KAAK,MAAMyqB,GAAQD,CAAM,CAAC,IACpE,KAAK,KAAK,KACpB,CAACxqB,GAAIC,GAAIC,GAAIC,CAAE,IAAIgI,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GAC3C/9D,EAAA,MAAK89D,IAAK,KAAK,KAAK,KAAK,KAAK,OAAOjmE,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAcn1C,IAAKE,KAAM,IAAI+b,KAAUm5B,CAAW,GAChH,CAACr1C,GAAIC,GAAIH,GAAIC,CAAE,IAAIoI,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GAC7C/9D,EAAA,MAAK29D,IAAQ,KAAK,KAAK,KAAK,KAAK,OAAOhmE,IAAKE,KAAM,IAAIic,KAAUm5B,KAAcr1C,IAAKE,KAAM,IAAIic,KAAUm5B,CAAW,GAC5G,OAET,CAACv1C,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,CAAE,IAAIgI,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GACnD/9D,EAAA,MAAK89D,IAAK,OAAOnmE,IAAK,IAAIE,KAAM,IAAIic,KAAUm5B,KAAcr1C,IAAK,IAAIE,KAAM,IAAIic,KAAUm5B,KAAe,IAAIr1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAc,IAAIn1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAer1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAcn1C,IAAKE,KAAM,IAAI+b,KAAUm5B,CAAW,GAC1Q,CAACn1C,GAAIC,GAAIH,GAAIC,GAAIH,GAAIC,CAAE,IAAIoI,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GACrD/9D,EAAA,MAAK29D,IAAQ,OAAOhmE,IAAK,IAAIE,KAAM,IAAIic,KAAUm5B,KAAcr1C,IAAK,IAAIE,KAAM,IAAIic,KAAUm5B,KAAe,IAAIr1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAc,IAAIn1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAer1C,IAAKE,KAAM,IAAI+b,KAAUm5B,KAAcn1C,IAAKE,KAAM,IAAI+b,KAAUm5B,CAAW,GACtQ;AAAA,EACT;AAAA,EACA,YAAY;AACV,QAAI,KAAK;AACP,aAAO;AAET,UAAMxqB,IAAM1iB,EAAA,MAAK89D,KACXl7C,IAAS5iB,EAAA,MAAK29D;AACpB,QAAI,MAAM39D,EAAA,MAAK+9D,GAAM,CAAC,CAAC,KAAK,CAAC,KAAK;AAChC,aAAO5lE,EAAA,MAAKumE,IAAAE,IAAL;AAET,UAAM5yC,IAAS,CAAA;AACf,IAAAA,EAAO,KAAK,IAAItJ,EAAI,CAAC,CAAC,IAAIA,EAAI,CAAC,CAAC,EAAE;AAClC,aAASvvB,IAAI,GAAGA,IAAIuvB,EAAI,QAAQvvB,KAAK;AACnC,MAAI,MAAMuvB,EAAIvvB,CAAC,CAAC,IACd64B,EAAO,KAAK,IAAItJ,EAAIvvB,IAAI,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,EAAE,IAE1C64B,EAAO,KAAK,IAAItJ,EAAIvvB,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC,CAAC,EAAE;AAGlG,IAAAgF,EAAA,MAAKumE,IAAAI,IAAL,WAAmB9yC;AACnB,aAAS74B,IAAIyvB,EAAO,SAAS,GAAGzvB,KAAK,GAAGA,KAAK;AAC3C,MAAI,MAAMyvB,EAAOzvB,CAAC,CAAC,IACjB64B,EAAO,KAAK,IAAIpJ,EAAOzvB,IAAI,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,EAAE,IAEhD64B,EAAO,KAAK,IAAIpJ,EAAOzvB,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,IAAIyvB,EAAOzvB,IAAI,CAAC,CAAC,EAAE;AAGpH,WAAAgF,EAAA,MAAKumE,IAAAG,IAAL,WAAqB7yC,IACdA,EAAO,KAAK,GAAG;AAAA,EACxB;AAAA,EAiBA,mBAAmB6zC,GAASzH,GAAQ/vD,GAAK82D,GAAaC,GAAal3D,GAAO;AACxE,WAAO,IAAI43D,GAAgBD,GAASzH,GAAQ/vD,GAAK82D,GAAaC,GAAal3D,CAAK;AAAA,EAClF;AAAA,EACA,cAAc;AAzyoBhB,QAAAnU;AA0yoBI,UAAM2uB,IAAM1iB,EAAA,MAAK89D,KACXl7C,IAAS5iB,EAAA,MAAK29D,KACdoC,IAAO//D,EAAA,MAAK+9D,IACZ,CAACjqD,GAAQC,GAAQk5B,GAAYC,CAAW,IAAIltC,EAAA,MAAK09D,KACjDtF,IAAS,IAAI,gBAAcrkE,IAAAiM,EAAA,MAAKs+D,QAAL,gBAAAvqE,EAAc,WAAU,KAAK,CAAC;AAC/D,aAASZ,IAAI,GAAGmL,IAAK85D,EAAO,SAAS,GAAGjlE,IAAImL,GAAInL,KAAK;AACnD,MAAAilE,EAAOjlE,CAAC,KAAK6M,EAAA,MAAKs+D,IAAQnrE,CAAC,IAAI2gB,KAAUm5B,GACzCmrB,EAAOjlE,IAAI,CAAC,KAAK6M,EAAA,MAAKs+D,IAAQnrE,IAAI,CAAC,IAAI4gB,KAAUm5B;AAInD,QAFAkrB,EAAOA,EAAO,SAAS,CAAC,KAAKp4D,EAAA,MAAKg+D,MAASlqD,KAAUm5B,GACrDmrB,EAAOA,EAAO,SAAS,CAAC,KAAKp4D,EAAA,MAAKi+D,MAASlqD,KAAUm5B,GACjD,MAAM6yB,EAAK,CAAC,CAAC,KAAK,CAAC,KAAK;AAC1B,aAAO5nE,EAAA,MAAKumE,IAAAK,IAAL,WAA0B3G;AAEnC,UAAMyH,IAAU,IAAI,aAAa7/D,EAAA,MAAK89D,IAAK,SAAS,KAAK99D,EAAA,MAAK29D,IAAQ,MAAM;AAC5E,QAAIqC,IAAIt9C,EAAI;AACZ,aAASvvB,IAAI,GAAGA,IAAI6sE,GAAG7sE,KAAK,GAAG;AAC7B,UAAI,MAAMuvB,EAAIvvB,CAAC,CAAC,GAAG;AACjB,QAAA0sE,EAAQ1sE,CAAC,IAAI0sE,EAAQ1sE,IAAI,CAAC,IAAI;AAC9B;AAAA,MACF;AACA,MAAA0sE,EAAQ1sE,CAAC,IAAIuvB,EAAIvvB,CAAC,GAClB0sE,EAAQ1sE,IAAI,CAAC,IAAIuvB,EAAIvvB,IAAI,CAAC;AAAA,IAC5B;AACA,IAAA6sE,IAAI7nE,EAAA,MAAKumE,IAAAO,IAAL,WAAoBY,GAASG;AACjC,aAAS7sE,IAAIyvB,EAAO,SAAS,GAAGzvB,KAAK,GAAGA,KAAK;AAC3C,eAASqkC,IAAI,GAAGA,IAAI,GAAGA,KAAK,GAAG;AAC7B,YAAI,MAAM5U,EAAOzvB,IAAIqkC,CAAC,CAAC,GAAG;AACxB,UAAAqoC,EAAQG,CAAC,IAAIH,EAAQG,IAAI,CAAC,IAAI,KAC9BA,KAAK;AACL;AAAA,QACF;AACA,QAAAH,EAAQG,CAAC,IAAIp9C,EAAOzvB,IAAIqkC,CAAC,GACzBqoC,EAAQG,IAAI,CAAC,IAAIp9C,EAAOzvB,IAAIqkC,IAAI,CAAC,GACjCwoC,KAAK;AAAA,MACP;AAEF,WAAA7nE,EAAA,MAAKumE,IAAAM,IAAL,WAAsBa,GAASG,IACxB,KAAK,mBAAmBH,GAASzH,GAAQp4D,EAAA,MAAK09D,KAAM19D,EAAA,MAAKo+D,KAAcp+D,EAAA,MAAK49D,KAAc59D,EAAA,MAAK69D,GAAM;AAAA,EAC9G;AAsBF;AA/MEH,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,IAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACOC,KAAA,eACAC,KAAA,eACAC,KAAA,eAhBTC,KAAA,eAkCEC,KAAc,WAAG;AACf,QAAMsB,IAAUjgE,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GAClCmC,IAAalgE,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GACvC,CAACtmE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAK09D;AACnC,SAAO,EAAE19D,EAAA,MAAKg+D,OAAUiC,EAAQ,CAAC,IAAIC,EAAW,CAAC,KAAK,IAAIzoE,KAAKqG,IAAQkC,EAAA,MAAKi+D,OAAUgC,EAAQ,CAAC,IAAIC,EAAW,CAAC,KAAK,IAAIxoE,KAAKqG,IAASiC,EAAA,MAAKg+D,OAAUkC,EAAW,CAAC,IAAID,EAAQ,CAAC,KAAK,IAAIxoE,KAAKqG,IAAQkC,EAAA,MAAKi+D,OAAUiC,EAAW,CAAC,IAAID,EAAQ,CAAC,KAAK,IAAIvoE,KAAKqG,CAAM;AAClQ,GAwFA6gE,KAAmB,WAAG;AACpB,QAAM,CAACnnE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAK09D,KAC7B,CAACyC,GAAUC,GAAUC,GAAaC,CAAW,IAAInoE,EAAA,MAAKumE,IAAAC,IAAL;AACvD,SAAO,KAAK3+D,EAAA,MAAK+9D,GAAM,CAAC,IAAItmE,KAAKqG,CAAK,KAAKkC,EAAA,MAAK+9D,GAAM,CAAC,IAAIrmE,KAAKqG,CAAM,MAAMiC,EAAA,MAAK+9D,GAAM,CAAC,IAAItmE,KAAKqG,CAAK,KAAKkC,EAAA,MAAK+9D,GAAM,CAAC,IAAIrmE,KAAKqG,CAAM,KAAKoiE,CAAQ,IAAIC,CAAQ,KAAKC,CAAW,IAAIC,CAAW,MAAMtgE,EAAA,MAAK+9D,GAAM,EAAE,IAAItmE,KAAKqG,CAAK,KAAKkC,EAAA,MAAK+9D,GAAM,EAAE,IAAIrmE,KAAKqG,CAAM,MAAMiC,EAAA,MAAK+9D,GAAM,EAAE,IAAItmE,KAAKqG,CAAK,KAAKkC,EAAA,MAAK+9D,GAAM,EAAE,IAAIrmE,KAAKqG,CAAM;AACpU,GACA8gE,KAAe,SAAC7yC,GAAQ;AACtB,QAAMpJ,IAAS5iB,EAAA,MAAK29D;AACpB,EAAA3xC,EAAO,KAAK,IAAIpJ,EAAO,CAAC,CAAC,IAAIA,EAAO,CAAC,CAAC,IAAI;AAC5C,GACAk8C,KAAa,SAAC9yC,GAAQ;AACpB,QAAM,CAACv0B,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAK09D,KAC7BuC,IAAUjgE,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GAClCmC,IAAalgE,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GACvC,CAACoC,GAAUC,GAAUC,GAAaC,CAAW,IAAInoE,EAAA,MAAKumE,IAAAC,IAAL;AACvD,EAAA3yC,EAAO,KAAK,KAAKi0C,EAAQ,CAAC,IAAIxoE,KAAKqG,CAAK,KAAKmiE,EAAQ,CAAC,IAAIvoE,KAAKqG,CAAM,KAAKoiE,CAAQ,IAAIC,CAAQ,KAAKC,CAAW,IAAIC,CAAW,MAAMJ,EAAW,CAAC,IAAIzoE,KAAKqG,CAAK,KAAKoiE,EAAW,CAAC,IAAIxoE,KAAKqG,CAAM,EAAE;AACjM,GA6CAghE,KAAoB,SAAC3G,GAAQ;AAC3B,QAAM2H,IAAO//D,EAAA,MAAK+9D,IACZ,CAACjqD,GAAQC,GAAQk5B,GAAYC,CAAW,IAAIltC,EAAA,MAAK09D,KACjD,CAACyC,GAAUC,GAAUC,GAAaC,CAAW,IAAInoE,EAAA,MAAKumE,IAAAC,IAAL,YACjDkB,IAAU,IAAI,aAAa,EAAE;AACnC,SAAAA,EAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,MAAME,EAAK,CAAC,IAAIjsD,KAAUm5B,IAAa8yB,EAAK,CAAC,IAAIhsD,KAAUm5B,GAAa,KAAK,KAAK,KAAK,MAAM6yB,EAAK,CAAC,IAAIjsD,KAAUm5B,IAAa8yB,EAAK,CAAC,IAAIhsD,KAAUm5B,GAAa,KAAK,KAAK,KAAK,KAAKizB,GAAUC,GAAU,KAAK,KAAK,KAAK,KAAKC,GAAaC,GAAa,KAAK,KAAK,KAAK,MAAMP,EAAK,EAAE,IAAIjsD,KAAUm5B,IAAa8yB,EAAK,EAAE,IAAIhsD,KAAUm5B,GAAa,KAAK,KAAK,KAAK,MAAM6yB,EAAK,EAAE,IAAIjsD,KAAUm5B,IAAa8yB,EAAK,EAAE,IAAIhsD,KAAUm5B,CAAW,GAAG,CAAC,GAC9b,KAAK,mBAAmB2yB,GAASzH,GAAQp4D,EAAA,MAAK09D,KAAM19D,EAAA,MAAKo+D,KAAcp+D,EAAA,MAAK49D,KAAc59D,EAAA,MAAK69D,GAAM;AAC9G,GACAmB,KAAgB,SAACa,GAAS3qE,GAAK;AAC7B,QAAM0tB,IAAS5iB,EAAA,MAAK29D;AACpB,SAAAkC,EAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,KAAKj9C,EAAO,CAAC,GAAGA,EAAO,CAAC,CAAC,GAAG1tB,CAAG,GACpDA,KAAO;AAChB,GACA+pE,KAAc,SAACY,GAAS3qE,GAAK;AAC3B,QAAM+qE,IAAUjgE,EAAA,MAAK+9D,GAAM,SAAS,GAAG,CAAC,GAClCmC,IAAalgE,EAAA,MAAK+9D,GAAM,SAAS,IAAI,EAAE,GACvC,CAACjqD,GAAQC,GAAQk5B,GAAYC,CAAW,IAAIltC,EAAA,MAAK09D,KACjD,CAACyC,GAAUC,GAAUC,GAAaC,CAAW,IAAInoE,EAAA,MAAKumE,IAAAC,IAAL;AACvD,SAAAkB,EAAQ,IAAI,CAAC,KAAK,KAAK,KAAK,MAAMI,EAAQ,CAAC,IAAInsD,KAAUm5B,IAAagzB,EAAQ,CAAC,IAAIlsD,KAAUm5B,GAAa,KAAK,KAAK,KAAK,KAAKizB,GAAUC,GAAU,KAAK,KAAK,KAAK,KAAKC,GAAaC,GAAa,KAAK,KAAK,KAAK,MAAMJ,EAAW,CAAC,IAAIpsD,KAAUm5B,IAAaizB,EAAW,CAAC,IAAInsD,KAAUm5B,CAAW,GAAGh4C,CAAG,GAChSA,KAAO;AAChB,GAjMAwD,EAdIwmE,IAcGX,IAAY,IACnB7lE,EAfIwmE,IAeGV,IAAY,IACnB9lE,EAhBIwmE,IAgBGT,IAAOz+D,EAAAk/D,IAAiBX,MAAYv+D,EAAAk/D,IAAiBV;AAhB9D,IAAM+B,KAANrB;AAvpoBA,IAAAxB,IAAAH,IAAAK,IAAAC,IAAAS,IAAAF,IAAAoC,IAAAC,IAAAC;AAw2oBA,MAAMZ,WAAwBxC,EAAQ;AAAA,EAQpC,YAAYuC,GAASzH,GAAQ/vD,GAAK82D,GAAaC,GAAal3D,GAAO;AACjE,UAAK;AATT,IAAAxP,EAAA,MAAA+nE;AACE,IAAA/nE,EAAA,MAAAglE;AACA,IAAAhlE,EAAA,MAAA6kE,IAAQ,IAAI,aAAa,CAAC;AAC1B,IAAA7kE,EAAA,MAAAklE;AACA,IAAAllE,EAAA,MAAAmlE;AACA,IAAAnlE,EAAA,MAAA4lE;AACA,IAAA5lE,EAAA,MAAA0lE;AACA,IAAA1lE,EAAA,MAAA8nE;AAGE,IAAAvgE,EAAA,MAAKugE,IAAWX,IAChB5/D,EAAA,MAAKq+D,IAAUlG,IACfn4D,EAAA,MAAKy9D,IAAOr1D,IACZpI,EAAA,MAAKm+D,IAAee,IACpBl/D,EAAA,MAAK29D,IAAewB,IACpBn/D,EAAA,MAAK49D,IAAS31D,IACd,KAAK,aAAa,CAAC,KAAK,GAAG,GAC3B,KAAK,YAAY,CAAC,KAAK,GAAG,GAC1B/P,EAAA,MAAKsoE,IAAAC,IAAL,WAAoBx4D;AACpB,UAAM,CAACzQ,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAKu9D;AACnC,aAASpqE,IAAI,GAAGmL,IAAKuhE,EAAQ,QAAQ1sE,IAAImL,GAAInL,KAAK;AAChD,MAAA0sE,EAAQ1sE,CAAC,KAAK0sE,EAAQ1sE,CAAC,IAAIsE,KAAKqG,GAChC+hE,EAAQ1sE,IAAI,CAAC,KAAK0sE,EAAQ1sE,IAAI,CAAC,IAAIuE,KAAKqG;AAE1C,aAAS5K,IAAI,GAAGmL,IAAK85D,EAAO,QAAQjlE,IAAImL,GAAInL,KAAK;AAC/C,MAAAilE,EAAOjlE,CAAC,KAAKilE,EAAOjlE,CAAC,IAAIsE,KAAKqG,GAC9Bs6D,EAAOjlE,IAAI,CAAC,KAAKilE,EAAOjlE,IAAI,CAAC,IAAIuE,KAAKqG;AAAA,EAE1C;AAAA,EACA,YAAY;AACV,UAAMiuB,IAAS,CAAC,IAAIhsB,EAAA,MAAKwgE,IAAS,CAAC,CAAC,IAAIxgE,EAAA,MAAKwgE,IAAS,CAAC,CAAC,EAAE;AAC1D,aAASrtE,IAAI,GAAGmL,IAAK0B,EAAA,MAAKwgE,IAAS,QAAQrtE,IAAImL,GAAInL,KAAK,GAAG;AACzD,UAAI,MAAM6M,EAAA,MAAKwgE,IAASrtE,CAAC,CAAC,GAAG;AAC3B,QAAA64B,EAAO,KAAK,IAAIhsB,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,EAAE;AAC9D;AAAA,MACF;AACA,MAAA64B,EAAO,KAAK,IAAIhsB,EAAA,MAAKwgE,IAASrtE,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,IAAI6M,EAAA,MAAKwgE,IAASrtE,IAAI,CAAC,CAAC,EAAE;AAAA,IAC5J;AACA,WAAA64B,EAAO,KAAK,GAAG,GACRA,EAAO,KAAK,GAAG;AAAA,EACxB;AAAA,EACA,UAAU,CAAC/J,GAAKC,GAAKC,GAAKH,CAAG,GAAG9kB,GAAU;AACxC,UAAMY,IAAQqkB,IAAMF,GACdlkB,IAASikB,IAAME;AACrB,QAAI29C,GACAzH;AACJ,YAAQl7D,GAAQ;AAAA,MACd,KAAK;AACH,QAAA2iE,IAAUvC,EAAQ,SAASt9D,EAAA,MAAKwgE,KAAUv+C,GAAKD,GAAKlkB,GAAO,CAACC,CAAM,GAClEq6D,IAASkF,EAAQ,SAASt9D,EAAA,MAAKs+D,KAASr8C,GAAKD,GAAKlkB,GAAO,CAACC,CAAM;AAChE;AAAA,MACF,KAAK;AACH,QAAA8hE,IAAUvC,EAAQ,gBAAgBt9D,EAAA,MAAKwgE,KAAUv+C,GAAKC,GAAKpkB,GAAOC,CAAM,GACxEq6D,IAASkF,EAAQ,gBAAgBt9D,EAAA,MAAKs+D,KAASr8C,GAAKC,GAAKpkB,GAAOC,CAAM;AACtE;AAAA,MACF,KAAK;AACH,QAAA8hE,IAAUvC,EAAQ,SAASt9D,EAAA,MAAKwgE,KAAUr+C,GAAKD,GAAK,CAACpkB,GAAOC,CAAM,GAClEq6D,IAASkF,EAAQ,SAASt9D,EAAA,MAAKs+D,KAASn8C,GAAKD,GAAK,CAACpkB,GAAOC,CAAM;AAChE;AAAA,MACF,KAAK;AACH,QAAA8hE,IAAUvC,EAAQ,gBAAgBt9D,EAAA,MAAKwgE,KAAUr+C,GAAKH,GAAK,CAAClkB,GAAO,CAACC,CAAM,GAC1Eq6D,IAASkF,EAAQ,gBAAgBt9D,EAAA,MAAKs+D,KAASn8C,GAAKH,GAAK,CAAClkB,GAAO,CAACC,CAAM;AACxE;AAAA,IACR;AACI,WAAO;AAAA,MACL,SAAS,MAAM,KAAK8hE,CAAO;AAAA,MAC3B,QAAQ,CAAC,MAAM,KAAKzH,CAAM,CAAC;AAAA,IACjC;AAAA,EACE;AAAA,EA0DA,IAAI,MAAM;AACR,WAAOp4D,EAAA,MAAKu9D;AAAA,EACd;AAAA,EACA,YAAYv4C,GAAO3c,GAAK82D,GAAazG,GAAWxwD,GAAOk3D,IAAc,GAAG;AACtE,WAAO,IAAImB,GAAiBv7C,GAAO3c,GAAK82D,GAAazG,GAAWxwD,GAAOk3D,CAAW;AAAA,EACpF;AAAA,EACA,cAAc1G,GAAW0G,GAAa;AACpC,UAAM,CAAC3nE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAKu9D,KAC7B,CAACzpD,GAAQC,GAAQk5B,GAAYC,CAAW,IAAIltC,EAAA,MAAK09D,KACjDF,IAAK1/D,IAAQmvC,GACbwwB,IAAK1/D,IAASmvC,GACdz1B,IAAKhgB,IAAIw1C,IAAan5B,GACtB4D,IAAKhgB,IAAIw1C,IAAcn5B,GACvB4sD,IAAW,KAAK,YAAY;AAAA,MAChC,GAAG3gE,EAAA,MAAKs+D,IAAQ,CAAC,IAAId,IAAK/lD;AAAA,MAC1B,GAAGzX,EAAA,MAAKs+D,IAAQ,CAAC,IAAIb,IAAK/lD;AAAA,IAChC,GAAO1X,EAAA,MAAK09D,KAAM19D,EAAA,MAAKo+D,KAAc1F,GAAW14D,EAAA,MAAK69D,KAAQuB,KAAep/D,EAAA,MAAK49D,GAAY;AACzF,aAASzqE,IAAI,GAAGA,IAAI6M,EAAA,MAAKs+D,IAAQ,QAAQnrE,KAAK;AAC5C,MAAAwtE,EAAS,IAAI;AAAA,QACX,GAAG3gE,EAAA,MAAKs+D,IAAQnrE,CAAC,IAAIqqE,IAAK/lD;AAAA,QAC1B,GAAGzX,EAAA,MAAKs+D,IAAQnrE,IAAI,CAAC,IAAIsqE,IAAK/lD;AAAA,MACtC,CAAO;AAEH,WAAOipD,EAAS,YAAW;AAAA,EAC7B;AACF;AAtJEjD,KAAA,eACAH,KAAA,eACAK,KAAA,eACAC,KAAA,eACAS,KAAA,eACAF,KAAA,eACAoC,KAAA,eAPFC,KAAA,eAqEEC,KAAc,SAACx4D,GAAO;AACpB,QAAM23D,IAAU7/D,EAAA,MAAKwgE;AACrB,MAAIp4D,IAAQy3D,EAAQ,CAAC,GACjB13D,IAAQ03D,EAAQ,CAAC;AACrB,QAAMlrE,IAAS,CAACyT,GAAOD,GAAOC,GAAOD,CAAK;AAC1C,MAAIy4D,IAAcx4D,GACdy4D,IAAc14D,GACd24D,IAAa14D,GACb24D,IAAa54D;AACjB,QAAM64D,IAAc94D,IAAQ,KAAK,MAAM,KAAK,KACtC+4D,IAAa,IAAI,aAAa,CAAC;AACrC,WAAS9tE,IAAI,GAAGmL,IAAKuhE,EAAQ,QAAQ1sE,IAAImL,GAAInL,KAAK,GAAG;AACnD,UAAMsE,IAAIooE,EAAQ1sE,IAAI,CAAC,GACrBuE,IAAImoE,EAAQ1sE,IAAI,CAAC;AACnB,IAAI,MAAM0sE,EAAQ1sE,CAAC,CAAC,KAClBmB,EAAK,iBAAiBmD,GAAGC,GAAG/C,CAAM,GAC9BksE,IAAcnpE,KAChBkpE,IAAcnpE,GACdopE,IAAcnpE,KACLmpE,MAAgBnpE,MACzBkpE,IAAcI,EAAYJ,GAAanpE,CAAC,IAEtCspE,IAAarpE,KACfopE,IAAarpE,GACbspE,IAAarpE,KACJqpE,MAAerpE,MACxBopE,IAAaE,EAAYF,GAAYrpE,CAAC,OAGxCwpE,EAAW,CAAC,IAAIA,EAAW,CAAC,IAAI,OAChCA,EAAW,CAAC,IAAIA,EAAW,CAAC,IAAI,QAChC3sE,EAAK,kBAAkB8T,GAAOD,GAAO,GAAG03D,EAAQ,MAAM1sE,GAAGA,IAAI,CAAC,GAAG8tE,CAAU,GAC3E3sE,EAAK,gBAAgB2sE,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAGA,EAAW,CAAC,GAAGtsE,CAAM,GACnFksE,IAAcI,EAAW,CAAC,KAC5BL,IAAcK,EAAW,CAAC,GAC1BJ,IAAcI,EAAW,CAAC,KACjBJ,MAAgBI,EAAW,CAAC,MACrCL,IAAcI,EAAYJ,GAAaK,EAAW,CAAC,CAAC,IAElDF,IAAaE,EAAW,CAAC,KAC3BH,IAAaG,EAAW,CAAC,GACzBF,IAAaE,EAAW,CAAC,KAChBF,MAAeE,EAAW,CAAC,MACpCH,IAAaE,EAAYF,GAAYG,EAAW,CAAC,CAAC,KAGtD74D,IAAQ3Q,GACR0Q,IAAQzQ;AAAA,EACV;AACA,QAAM+zB,IAAOzrB,EAAA,MAAKu9D;AAClB,EAAA9xC,EAAK,CAAC,IAAI92B,EAAO,CAAC,IAAIqL,EAAA,MAAK49D,KAC3BnyC,EAAK,CAAC,IAAI92B,EAAO,CAAC,IAAIqL,EAAA,MAAK49D,KAC3BnyC,EAAK,CAAC,IAAI92B,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAI,IAAIqL,EAAA,MAAK49D,KAC3CnyC,EAAK,CAAC,IAAI92B,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAI,IAAIqL,EAAA,MAAK49D,KAC3C,KAAK,aAAa,CAACgD,GAAaC,CAAW,GAC3C,KAAK,YAAY,CAACC,GAAYC,CAAU;AAC1C;AAr+oBF,IAAArD,IAAAwD,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AAqgpBA,MAAMC,GAAkB;AAAA,EAMtB,YAAY35D,GAAO8mD,IAAc,GAAGqQ,IAAc,GAAGl3D,IAAQ,IAAM;AANrE,IAAAxP,EAAA,MAAA4oE;AACE,IAAA5oE,EAAA,MAAAglE;AACA,IAAAhlE,EAAA,MAAAwoE;AACA,IAAAxoE,EAAA,MAAAyoE;AACA,IAAAzoE,EAAA,MAAA0oE,IAAiB,CAAA;AACjB,IAAA1oE,EAAA,MAAA2oE,IAAa,CAAA;AAEX,UAAM1sE,IAAS,CAAC,OAAU,OAAU,QAAW,MAAS,GAElDktE,IAAU,MAAM;AACtB,eAAW;AAAA,MACT,GAAApqE;AAAA,MACA,GAAAC;AAAA,MACA,OAAAoG;AAAA,MACA,QAAAC;AAAA,IACN,KAASkK,GAAO;AACV,YAAMpQ,IAAK,KAAK,OAAOJ,IAAIs3D,KAAe8S,CAAO,IAAIA,GAC/C9pE,IAAK,KAAK,MAAMN,IAAIqG,IAAQixD,KAAe8S,CAAO,IAAIA,GACtD/pE,IAAK,KAAK,OAAOJ,IAAIq3D,KAAe8S,CAAO,IAAIA,GAC/C7pE,IAAK,KAAK,MAAMN,IAAIqG,IAASgxD,KAAe8S,CAAO,IAAIA,GACvDl/C,IAAO,CAAC9qB,GAAIC,GAAIE,GAAI,EAAI,GACxB6qB,IAAQ,CAAC9qB,GAAID,GAAIE,GAAI,EAAK;AAChC,MAAAgI,EAAA,MAAKohE,IAAe,KAAKz+C,GAAME,CAAK,GACpCvuB,EAAK,gBAAgBuD,GAAIC,GAAIC,GAAIC,GAAIrD,CAAM;AAAA,IAC7C;AACA,UAAM8uC,IAAY9uC,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAI,IAAIyqE,GACxC17B,IAAa/uC,EAAO,CAAC,IAAIA,EAAO,CAAC,IAAI,IAAIyqE,GACzC0C,IAAcntE,EAAO,CAAC,IAAIyqE,GAC1B2C,IAAcptE,EAAO,CAAC,IAAIyqE;AAChC,QAAIwB,IAAc14D,IAAQ,SAAY,OAClC24D,IAAc;AAClB,UAAMmB,IAAWhiE,EAAA,MAAKohE,IAAe,GAAGl5D,IAAQ,KAAK,EAAE,GACjD+5D,IAAY,CAACD,EAAS,CAAC,GAAGA,EAAS,CAAC,CAAC;AAC3C,eAAWE,KAAQliE,EAAA,MAAKohE,KAAgB;AACtC,YAAM,CAAC3pE,GAAGK,GAAIE,GAAI2qB,CAAI,IAAIu/C;AAC1B,MAAI,CAACv/C,KAAQza,IACPpQ,IAAK+oE,KACPA,IAAc/oE,GACd8oE,IAAcnpE,KACLK,MAAO+oE,MAChBD,IAAc,KAAK,IAAIA,GAAanpE,CAAC,KAE9BkrB,KAAQ,CAACza,MACdpQ,IAAK+oE,KACPA,IAAc/oE,GACd8oE,IAAcnpE,KACLK,MAAO+oE,MAChBD,IAAc,KAAK,IAAIA,GAAanpE,CAAC,KAGzCyqE,EAAK,CAAC,KAAKzqE,IAAIqqE,KAAer+B,GAC9By+B,EAAK,CAAC,KAAKpqE,IAAKiqE,KAAer+B,GAC/Bw+B,EAAK,CAAC,KAAKlqE,IAAK+pE,KAAer+B;AAAA,IACjC;AACA,IAAAzjC,EAAA,MAAKy9D,IAAO,IAAI,aAAa,CAACoE,GAAaC,GAAat+B,GAAWC,CAAU,CAAC,IAC9EzjC,EAAA,MAAKihE,IAAc,CAACN,GAAaC,CAAW,IAC5C5gE,EAAA,MAAKkhE,IAAac;AAAA,EACpB;AAAA,EACA,cAAc;AACZ,IAAAjiE,EAAA,MAAKohE,IAAe,KAAK,CAACrqE,GAAGvC,MAAMuC,EAAE,CAAC,IAAIvC,EAAE,CAAC,KAAKuC,EAAE,CAAC,IAAIvC,EAAE,CAAC,KAAKuC,EAAE,CAAC,IAAIvC,EAAE,CAAC,CAAC;AAC5E,UAAM2tE,IAAuB,CAAA;AAC7B,eAAWD,KAAQliE,EAAA,MAAKohE;AACtB,MAAIc,EAAK,CAAC,KACRC,EAAqB,KAAK,GAAGhqE,EAAA,MAAKmpE,IAAAK,IAAL,WAAgBO,EAAK,GAClD/pE,EAAA,MAAKmpE,IAAAG,IAAL,WAAaS,OAEb/pE,EAAA,MAAKmpE,IAAAI,IAAL,WAAaQ,IACbC,EAAqB,KAAK,GAAGhqE,EAAA,MAAKmpE,IAAAK,IAAL,WAAgBO,EAAK;AAGtD,WAAO/pE,EAAA,MAAKmpE,IAAAC,IAAL,WAAkBY;AAAA,EAC3B;AA6HF;AAnMEzE,KAAA,eACAwD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eALFC,KAAA,eAwEEC,KAAY,SAACY,GAAsB;AACjC,QAAMC,IAAQ,CAAA,GACRC,IAAW,oBAAI,IAAG;AACxB,aAAWH,KAAQC,GAAsB;AACvC,UAAM,CAAC1qE,GAAGK,GAAIE,CAAE,IAAIkqE;AACpB,IAAAE,EAAM,KAAK,CAAC3qE,GAAGK,GAAIoqE,CAAI,GAAG,CAACzqE,GAAGO,GAAIkqE,CAAI,CAAC;AAAA,EACzC;AACA,EAAAE,EAAM,KAAK,CAACrrE,GAAGvC,MAAMuC,EAAE,CAAC,IAAIvC,EAAE,CAAC,KAAKuC,EAAE,CAAC,IAAIvC,EAAE,CAAC,CAAC;AAC/C,WAASrB,IAAI,GAAGmL,IAAK8jE,EAAM,QAAQjvE,IAAImL,GAAInL,KAAK,GAAG;AACjD,UAAMmvE,IAAQF,EAAMjvE,CAAC,EAAE,CAAC,GAClBovE,IAAQH,EAAMjvE,IAAI,CAAC,EAAE,CAAC;AAC5B,IAAAmvE,EAAM,KAAKC,CAAK,GAChBA,EAAM,KAAKD,CAAK,GAChBD,EAAS,IAAIC,CAAK,GAClBD,EAAS,IAAIE,CAAK;AAAA,EACpB;AACA,QAAMC,IAAW,CAAA;AACjB,MAAI3C;AACJ,SAAOwC,EAAS,OAAO,KAAG;AACxB,UAAMH,IAAOG,EAAS,OAAM,EAAG,KAAI,EAAG;AACtC,QAAI,CAAC5qE,GAAGK,GAAIE,GAAIsqE,GAAOC,CAAK,IAAIL;AAChC,IAAAG,EAAS,OAAOH,CAAI;AACpB,QAAIpB,IAAarpE,GACbspE,IAAajpE;AAGjB,SAFA+nE,IAAU,CAACpoE,GAAGO,CAAE,GAChBwqE,EAAS,KAAK3C,CAAO,OACR;AACX,UAAIngE;AACJ,UAAI2iE,EAAS,IAAIC,CAAK;AACpB,QAAA5iE,IAAI4iE;AAAA,eACKD,EAAS,IAAIE,CAAK;AAC3B,QAAA7iE,IAAI6iE;AAAA;AAEJ;AAEF,MAAAF,EAAS,OAAO3iE,CAAC,GACjB,CAACjI,GAAGK,GAAIE,GAAIsqE,GAAOC,CAAK,IAAI7iE,GACxBohE,MAAerpE,MACjBooE,EAAQ,KAAKiB,GAAYC,GAAYtpE,GAAGspE,MAAejpE,IAAKA,IAAKE,CAAE,GACnE8oE,IAAarpE,IAEfspE,IAAaA,MAAejpE,IAAKE,IAAKF;AAAA,IACxC;AACA,IAAA+nE,EAAQ,KAAKiB,GAAYC,CAAU;AAAA,EACrC;AACA,SAAO,IAAI0B,GAAiBD,GAAUxiE,EAAA,MAAK09D,KAAM19D,EAAA,MAAKkhE,KAAalhE,EAAA,MAAKmhE,GAAU;AACpF,GACAK,KAAa,SAAC9pE,GAAG;AACf,QAAM6M,IAAQvE,EAAA,MAAKqhE;AACnB,MAAI9hE,IAAQ,GACRC,IAAM+E,EAAM,SAAS;AACzB,SAAOhF,KAASC,KAAK;AACnB,UAAMkjE,IAASnjE,IAAQC,KAAO,GACxB1H,IAAKyM,EAAMm+D,CAAM,EAAE,CAAC;AAC1B,QAAI5qE,MAAOJ;AACT,aAAOgrE;AAET,IAAI5qE,IAAKJ,IACP6H,IAAQmjE,IAAS,IAEjBljE,IAAMkjE,IAAS;AAAA,EAEnB;AACA,SAAOljE,IAAM;AACf,GACAiiE,KAAO,SAAC,CAAA,EAAG3pE,GAAIE,CAAE,GAAG;AAClB,QAAMs0B,IAAQn0B,EAAA,MAAKmpE,IAAAE,IAAL,WAAmB1pE;AACjC,EAAAkI,EAAA,MAAKqhE,IAAW,OAAO/0C,GAAO,GAAG,CAACx0B,GAAIE,CAAE,CAAC;AAC3C,GACA0pE,KAAO,SAAC,CAAA,EAAG5pE,GAAIE,CAAE,GAAG;AAClB,QAAMs0B,IAAQn0B,EAAA,MAAKmpE,IAAAE,IAAL,WAAmB1pE;AACjC,WAAS3E,IAAIm5B,GAAOn5B,IAAI6M,EAAA,MAAKqhE,IAAW,QAAQluE,KAAK;AACnD,UAAM,CAACoM,GAAOC,CAAG,IAAIQ,EAAA,MAAKqhE,IAAWluE,CAAC;AACtC,QAAIoM,MAAUzH;AACZ;AAEF,QAAIyH,MAAUzH,KAAM0H,MAAQxH,GAAI;AAC9B,MAAAgI,EAAA,MAAKqhE,IAAW,OAAOluE,GAAG,CAAC;AAC3B;AAAA,IACF;AAAA,EACF;AACA,WAASA,IAAIm5B,IAAQ,GAAGn5B,KAAK,GAAGA,KAAK;AACnC,UAAM,CAACoM,GAAOC,CAAG,IAAIQ,EAAA,MAAKqhE,IAAWluE,CAAC;AACtC,QAAIoM,MAAUzH;AACZ;AAEF,QAAIyH,MAAUzH,KAAM0H,MAAQxH,GAAI;AAC9B,MAAAgI,EAAA,MAAKqhE,IAAW,OAAOluE,GAAG,CAAC;AAC3B;AAAA,IACF;AAAA,EACF;AACF,GACAwuE,KAAU,SAACO,GAAM;AACf,QAAM,CAACzqE,GAAGK,GAAIE,CAAE,IAAIkqE,GACd5Z,IAAU,CAAC,CAAC7wD,GAAGK,GAAIE,CAAE,CAAC,GACtBs0B,IAAQn0B,EAAA,MAAKmpE,IAAAE,IAAL,WAAmBxpE;AACjC,WAAS7E,IAAI,GAAGA,IAAIm5B,GAAOn5B,KAAK;AAC9B,UAAM,CAACoM,GAAOC,CAAG,IAAIQ,EAAA,MAAKqhE,IAAWluE,CAAC;AACtC,aAASqkC,IAAI,GAAG+L,IAAK+kB,EAAQ,QAAQ9wB,IAAI+L,GAAI/L,KAAK;AAChD,YAAM,CAAA,EAAGt/B,GAAIyqE,CAAE,IAAIra,EAAQ9wB,CAAC;AAC5B,UAAI,EAAAh4B,KAAOtH,KAAMyqE,KAAMpjE,IAGvB;AAAA,YAAIrH,KAAMqH,GAAO;AACf,cAAIojE,IAAKnjE;AACP,YAAA8oD,EAAQ9wB,CAAC,EAAE,CAAC,IAAIh4B;AAAA,eACX;AACL,gBAAI+jC,MAAO;AACT,qBAAO,CAAA;AAET,YAAA+kB,EAAQ,OAAO9wB,GAAG,CAAC,GACnBA,KACA+L;AAAA,UACF;AACA;AAAA,QACF;AACA,QAAA+kB,EAAQ9wB,CAAC,EAAE,CAAC,IAAIj4B,GACZojE,IAAKnjE,KACP8oD,EAAQ,KAAK,CAAC7wD,GAAG+H,GAAKmjE,CAAE,CAAC;AAAA;AAAA,IAE7B;AAAA,EACF;AACA,SAAOra;AACT;AAxspBF,IAAAoV,IAAAkF;AA0spBA,MAAMH,WAAyBnF,EAAQ;AAAA,EAGrC,YAAYkF,GAAUn6D,GAAKu1B,GAAYqkC,GAAW;AAChD,UAAK;AAHP,IAAAvpE,EAAA,MAAAglE;AACA,IAAAhlE,EAAA,MAAAkqE;AAGE,IAAA3iE,EAAA,MAAK2iE,IAAYJ,IACjBviE,EAAA,MAAKy9D,IAAOr1D,IACZ,KAAK,aAAau1B,GAClB,KAAK,YAAYqkC;AAAA,EACnB;AAAA,EACA,YAAY;AACV,UAAMj2C,IAAS,CAAA;AACf,eAAW62C,KAAW7iE,EAAA,MAAK4iE,KAAW;AACpC,UAAI,CAACE,GAAOC,CAAK,IAAIF;AACrB,MAAA72C,EAAO,KAAK,IAAI82C,CAAK,IAAIC,CAAK,EAAE;AAChC,eAAS5vE,IAAI,GAAGA,IAAI0vE,EAAQ,QAAQ1vE,KAAK,GAAG;AAC1C,cAAMsE,IAAIorE,EAAQ1vE,CAAC,GACbuE,IAAImrE,EAAQ1vE,IAAI,CAAC;AACvB,QAAIsE,MAAMqrE,KACR92C,EAAO,KAAK,IAAIt0B,CAAC,EAAE,GACnBqrE,IAAQrrE,KACCA,MAAMqrE,MACf/2C,EAAO,KAAK,IAAIv0B,CAAC,EAAE,GACnBqrE,IAAQrrE;AAAA,MAEZ;AACA,MAAAu0B,EAAO,KAAK,GAAG;AAAA,IACjB;AACA,WAAOA,EAAO,KAAK,GAAG;AAAA,EACxB;AAAA,EACA,UAAU,CAAC/J,GAAKC,GAAKC,GAAKH,CAAG,GAAGs6B,GAAW;AACzC,UAAMkmB,IAAW,CAAA,GACX1kE,IAAQqkB,IAAMF,GACdlkB,IAASikB,IAAME;AACrB,eAAW29C,KAAW7/D,EAAA,MAAK4iE,KAAW;AACpC,YAAMxK,IAAS,IAAI,MAAMyH,EAAQ,MAAM;AACvC,eAAS1sE,IAAI,GAAGA,IAAI0sE,EAAQ,QAAQ1sE,KAAK;AACvC,QAAAilE,EAAOjlE,CAAC,IAAI8uB,IAAM49C,EAAQ1sE,CAAC,IAAI2K,GAC/Bs6D,EAAOjlE,IAAI,CAAC,IAAI6uB,IAAM69C,EAAQ1sE,IAAI,CAAC,IAAI4K;AAEzC,MAAAykE,EAAS,KAAKpK,CAAM;AAAA,IACtB;AACA,WAAOoK;AAAA,EACT;AAAA,EACA,IAAI,MAAM;AACR,WAAOxiE,EAAA,MAAK09D;AAAA,EACd;AAAA,EACA,IAAI,yBAAyB;AAC3B,WAAO,CAAC,kBAAkB;AAAA,EAC5B;AACF;AAjDEA,KAAA,eACAkF,KAAA;AAiDF,MAAMI,WAA8BzC,GAAiB;AAAA,EACnD,mBAAmBV,GAASzH,GAAQ/vD,GAAK82D,GAAaC,GAAal3D,GAAO;AACxE,WAAO,IAAI+6D,GAAqBpD,GAASzH,GAAQ/vD,GAAK82D,GAAaC,GAAal3D,CAAK;AAAA,EACvF;AACF;AACA,MAAM+6D,WAA6BnD,GAAgB;AAAA,EACjD,YAAY96C,GAAO3c,GAAK82D,GAAazG,GAAWxwD,GAAOk3D,IAAc,GAAG;AACtE,WAAO,IAAI4D,GAAsBh+C,GAAO3c,GAAK82D,GAAazG,GAAWxwD,GAAOk3D,CAAW;AAAA,EACzF;AACF;AAtwpBA,IAAA8D,IAAAC,IAAAC,IAAAC,IAAA59D,IAAA69D,IAAAC,IAAAC,IAAAC,IAAAC,IAAAr6D,IAAAs6D,IAAAzC,IAAAC,IAAAyC,IAAAtpD,IAAA+jD,IAAAwF,IAAAC,GAAAC,IAAAC,IAAA/N,IAAAgO,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAA7I;AAgxpBA,MAAM8I,KAAN,MAAMA,WAAwBz+C,GAAiB;AAAA,EAuC7C,YAAY1P,GAAQ;AAClB,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AA3CL,IAAAje,EAAA,MAAAorE;AACE,IAAAprE,EAAA,MAAAwqE,IAAc;AACd,IAAAxqE,EAAA,MAAAyqE,IAAgB;AAChB,IAAAzqE,EAAA,MAAA0qE;AACA,IAAA1qE,EAAA,MAAA2qE,IAAc;AACd,IAAA3qE,EAAA,MAAA+M,IAAe;AACf,IAAA/M,EAAA,MAAA4qE,IAAiB;AACjB,IAAA5qE,EAAA,MAAA6qE,IAAa;AACb,IAAA7qE,EAAA,MAAA8qE,IAAe;AACf,IAAA9qE,EAAA,MAAA+qE,IAAgB;AAChB,IAAA/qE,EAAA,MAAAgrE,IAAqB;AACrB,IAAAhrE,EAAA,MAAA2Q,IAAM;AACN,IAAA3Q,EAAA,MAAAirE,IAAmB;AACnB,IAAAjrE,EAAA,MAAAwoE,IAAc;AACd,IAAAxoE,EAAA,MAAAyoE,IAAa;AACb,IAAAzoE,EAAA,MAAAkrE,IAAa;AACb,IAAAlrE,EAAA,MAAA4hB,IAAQ;AACR,IAAA5hB,EAAA,MAAA2lE;AACA,IAAA3lE,EAAA,MAAAmrE,IAAoB;AA0BlB,SAAK,QAAQltD,EAAO,SAASmuD,GAAgB,eAC7C7kE,EAAA,MAAKo+D,IAAa1nD,EAAO,aAAamuD,GAAgB,oBACtD,KAAK,UAAUnuD,EAAO,WAAWmuD,GAAgB,iBACjD7kE,EAAA,MAAKmjE,IAASzsD,EAAO,SAAS,OAC9B1W,EAAA,MAAK4jE,IAAoBltD,EAAO,oBAAoB,KACpD1W,EAAA,MAAKqa,IAAQ3D,EAAO,QAAQ,KAC5B,KAAK,eAAe,IACpB,KAAK,gBAAgB,iCACjBA,EAAO,cAAc,MACvB1W,EAAA,MAAK0jE,IAAmB,KACxBxrE,EAAA,MAAK2rE,GAAAE,IAAL,WAAyBrtD,IACzBxe,EAAA,MAAK2rE,GAAAM,IAAL,cACSpkE,EAAA,MAAKojE,QACdnjE,EAAA,MAAKijE,IAAcvsD,EAAO,aAC1B1W,EAAA,MAAKkjE,IAAgBxsD,EAAO,eAC5B1W,EAAA,MAAKsjE,IAAa5sD,EAAO,YACzB1W,EAAA,MAAKujE,IAAe7sD,EAAO,cAC3Bxe,EAAA,MAAK2rE,GAAAC,IAAL,YACA5rE,EAAA,MAAK2rE,GAAAM,IAAL,YACA,KAAK,OAAO,KAAK,QAAQ,IAEtB,KAAK,uBACR,KAAK,WAAW,UAAU,oCAAoC;AAAA,EAElE;AAAA,EAzCA,WAAW,mBAAmB;AAC5B,UAAMpyD,IAAQ8yD,GAAgB;AAC9B,WAAOlzE,EAAO,MAAM,oBAAoB,IAAIka,GAAgB,CAAC,CAAC,CAAC,aAAa,eAAe,GAAGkG,EAAM,YAAY;AAAA,MAC9G,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,cAAc,gBAAgB,GAAGA,EAAM,YAAY;AAAA,MACvD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,WAAW,aAAa,GAAGA,EAAM,YAAY;AAAA,MACjD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,GAAG,CAAC,CAAC,aAAa,eAAe,GAAGA,EAAM,YAAY;AAAA,MACrD,MAAM,CAAC,CAAC;AAAA,IACd,CAAK,CAAC,CAAC,CAAC;AAAA,EACN;AAAA,EA+BA,IAAI,uBAAuB;AACzB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,MAAMhS,EAAA,MAAK2jE,MAAmB,mBAAmB;AAAA,MACjD,OAAO,KAAK,WAAW,mBAAmB,KAAK,KAAK;AAAA,MACpD,WAAW3jE,EAAA,MAAKq+D;AAAA,MAChB,kBAAkBr+D,EAAA,MAAK6jE;AAAA,IAC7B;AAAA,EACE;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,KAAK,WAAW,mBAAmB,KAAK,KAAK;AAAA,IAC1D;AAAA,EACE;AAAA,EACA,OAAO,0BAA0Bv+D,GAAM;AACrC,WAAO;AAAA,MACL,gBAAgBA,EAAK,IAAI,OAAO,EAAE;AAAA,IACxC;AAAA,EACE;AAAA,EAoGA,OAAO,WAAW8T,GAAMpR,GAAW;AA58pBrC,QAAAjU;AA68pBI,IAAAsyB,GAAiB,WAAWjN,GAAMpR,CAAS,GAC3C88D,GAAgB,kBAAhBA,GAAgB,kBAAkB/wE,IAAAiU,EAAU,oBAAV,gBAAAjU,EAA2B,SAAS,OAAO,UAAS;AAAA,EACxF;AAAA,EACA,OAAO,oBAAoB0I,GAAM1K,GAAO;AACtC,YAAQ0K,GAAI;AAAA,MACV,KAAK9M,GAA2B;AAC9B,QAAAm1E,GAAgB,gBAAgB/yE;AAChC;AAAA,MACF,KAAKpC,GAA2B;AAC9B,QAAAm1E,GAAgB,oBAAoB/yE;AACpC;AAAA,IACR;AAAA,EACE;AAAA,EACA,gBAAgB0F,GAAGC,GAAG;AAAA,EAAC;AAAA,EACvB,IAAI,kBAAkB;AACpB,WAAOsI,EAAA,MAAKmhE;AAAA,EACd;AAAA,EACA,IAAI,wBAAwB;AAC1B,WAAOnhE,EAAA,MAAKkhE;AAAA,EACd;AAAA,EACA,aAAazkE,GAAM1K,GAAO;AACxB,YAAQ0K,GAAI;AAAA,MACV,KAAK9M,GAA2B;AAC9B,QAAAwI,EAAA,MAAK2rE,GAAA7N,IAAL,WAAkBlkE;AAClB;AAAA,MACF,KAAKpC,GAA2B;AAC9B,QAAAwI,EAAA,MAAK2rE,GAAAG,IAAL,WAAsBlyE;AACtB;AAAA,IACR;AAAA,EACE;AAAA,EACA,WAAW,4BAA4B;AACrC,WAAO,CAAC,CAACpC,GAA2B,iBAAiBm1E,GAAgB,aAAa,GAAG,CAACn1E,GAA2B,qBAAqBm1E,GAAgB,iBAAiB,CAAC;AAAA,EAC1K;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,CAAC,CAACn1E,GAA2B,iBAAiB,KAAK,SAASm1E,GAAgB,aAAa,GAAG,CAACn1E,GAA2B,qBAAqBqQ,EAAA,MAAKq+D,OAAcyG,GAAgB,iBAAiB,GAAG,CAACn1E,GAA2B,gBAAgBqQ,EAAA,MAAK2jE,GAAgB,CAAC;AAAA,EAC/Q;AAAA,EACA,iBAAiB;AAj/pBnB,QAAA5vE,GAAAC;AAk/pBI,KAAAD,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiBiM,EAAA,MAAKqJ,KAAK;AAAA,MAChD,MAAM;AAAA,QACJ,MAAM,KAAK;AAAA,QACX,gBAAgB,KAAK;AAAA,MAC7B;AAAA,IACA,KACIrV,IAAAgM,EAAA,MAAKyF,QAAL,QAAAzR,EAAmB,YAAY,KAAK,QACpC,MAAM,eAAc;AAAA,EACtB;AAAA,EA2CA,IAAI,iBAAiB;AACnB,WAAI,KAAK,WAAW,kBAIX,CAAC,CAAC,eAHWiM,EAAA,MAAKwF,IAAe,IAAI0kD,GAAY;AAAA,MACtD,QAAQ;AAAA,IAChB,CAAO,EACkC,CAAC,IAE/B,MAAM;AAAA,EACf;AAAA,EACA,iBAAiB;AACf,UAAM,eAAc,GACpB,KAAK,IAAI,UAAU,OAAO,YAAY,EAAI;AAAA,EAC5C;AAAA,EACA,gBAAgB;AACd,UAAM,cAAa,GACnB,KAAK,IAAI,UAAU,OAAO,YAAY,EAAK;AAAA,EAC7C;AAAA,EACA,oBAAoB;AAClB,WAAO,MAAM,kBAAkBhyD,EAAA,MAAK2rE,GAAAW,IAAL,UAAmB;AAAA,EACpD;AAAA,EACA,qBAAqB;AACnB,WAAO,CAAC,GAAG,CAAC;AAAA,EACd;AAAA,EACA,QAAQhtD,GAAIC,GAAI;AACd,WAAO,MAAM,QAAQD,GAAIC,GAAIvf,EAAA,MAAK2rE,GAAAW,IAAL,UAAmB;AAAA,EAClD;AAAA,EACA,UAAUhiD,GAAO;AACf,IAAK,KAAK,uBACR,KAAK,OAAO,kBAAkB,IAAI,GAEhCA,KACF,KAAK,IAAI,MAAK;AAAA,EAElB;AAAA,EACA,SAAS;AACP,IAAAtqB,EAAA,MAAK2rE,GAAAK,IAAL,YACA,KAAK,iBAAiB;AAAA,MACpB,QAAQ;AAAA,IACd,CAAK,GACD,MAAM,OAAM;AAAA,EACd;AAAA,EACA,UAAU;AACR,IAAK,KAAK,WAGV,MAAM,QAAO,GACT,KAAK,QAAQ,SAGjBhsE,EAAA,MAAK2rE,GAAAM,IAAL,YACK,KAAK,mBACR,KAAK,OAAO,IAAI,IAAI;AAAA,EAExB;AAAA,EACA,UAAUnoE,GAAQ;AA3lqBpB,QAAAlI;AA4lqBI,QAAIgxE,IAAiB;AACrB,IAAI,KAAK,UAAU,CAAC9oE,IAClB9D,EAAA,MAAK2rE,GAAAK,IAAL,aACSloE,MACT9D,EAAA,MAAK2rE,GAAAM,IAAL,WAAqBnoE,IACrB8oE,IAAiB,CAAC,KAAK,YAAUhxE,IAAA,KAAK,QAAL,gBAAAA,EAAU,UAAU,SAAS,qBAEhE,MAAM,UAAUkI,CAAM,GACtB,KAAK,KAAK,KAAK,UAAU,GACrB8oE,KACF,KAAK,OAAM;AAAA,EAEf;AAAA,EAmEA,OAAOnhD,GAAO;AA3qqBhB,QAAA7vB,GAAAC,GAAAse;AA4qqBI,UAAM;AAAA,MACJ,WAAA0yD;AAAA,IACN,IAAQ,KAAK;AACT,QAAI38D;AACJ,IAAIrI,EAAA,MAAK2jE,OACP//C,KAASA,IAAQ,KAAK,WAAW,OAAO,KACxCvb,IAAMlQ,EAAApE,IAAA+wE,IAAgBT,IAAAC,IAAhB,KAAAvwE,GAA4BiM,EAAA,MAAK0jE,IAAmB,KAAK9/C,MAE/Dvb,IAAMlQ,EAAAnE,IAAA8wE,IAAgBT,IAAAC,IAAhB,KAAAtwE,GAA4B,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,GAAG4vB,IAE/EohD,EAAU,iBAAiBhlE,EAAA,MAAKqJ,KAAK;AAAA,MACnC,MAAMhB;AAAA,MACN,MAAM;AAAA,QACJ,sBAAsBub;AAAA,MAC9B;AAAA,IACA,CAAK,GACDohD,EAAU,iBAAiBhlE,EAAA,MAAK4jE,KAAY;AAAA,MAC1C,MAAMzrE,EAAAma,IAAAwyD,IAAgBT,IAAAC,IAAhB,KAAAhyD,GAA4BtS,EAAA,MAAKsjE,IAAe,KAAK1/C;AAAA,MAC3D,MAAM;AAAA,QACJ,sBAAsBA;AAAA,MAC9B;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,SAAS;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEd,UAAMniB,IAAM,MAAM,OAAM;AACxB,IAAIzB,EAAA,MAAKsa,QACP7Y,EAAI,aAAa,cAAczB,EAAA,MAAKsa,GAAK,GACzC7Y,EAAI,aAAa,QAAQ,MAAM,IAE7BzB,EAAA,MAAK2jE,MACPliE,EAAI,UAAU,IAAI,MAAM,IAExB,KAAK,IAAI,iBAAiB,WAAWtJ,EAAA,MAAK2rE,GAAAS,IAAS,KAAK,IAAI,GAAG;AAAA,MAC7D,QAAQ,KAAK,WAAW;AAAA,IAChC,CAAO;AAEH,UAAMU,IAAehlE,EAAA,MAAKwjE,IAAgB,SAAS,cAAc,KAAK;AACtE,WAAAhiE,EAAI,OAAOwjE,CAAY,GACvBA,EAAa,aAAa,eAAe,MAAM,GAC/CA,EAAa,YAAY,YACzBA,EAAa,MAAM,WAAWjlE,EAAA,MAAKqjE,KACnC,KAAK,QAAO,GACZ36D,GAAW,MAAM1I,EAAA,MAAKyjE,KAAe,CAAC,eAAe,cAAc,CAAC,GACpE,KAAK,cAAa,GACXhiE;AAAA,EACT;AAAA,EACA,cAAc;AA7tqBhB,QAAA1N;AA8tqBI,IAAK,KAAK,eACRA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiBiM,EAAA,MAAK4jE,KAAY;AAAA,MACvD,WAAW;AAAA,QACT,SAAS;AAAA,MACnB;AAAA,IACA;AAAA,EAEE;AAAA,EACA,eAAe;AAtuqBjB,QAAA7vE;AAuuqBI,IAAK,KAAK,eACRA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiBiM,EAAA,MAAK4jE,KAAY;AAAA,MACvD,WAAW;AAAA,QACT,SAAS;AAAA,MACnB;AAAA,IACA;AAAA,EAEE;AAAA,EAIA,WAAWsB,GAAW;AAEpB,YADA,KAAK,OAAO,SAAS,IAAI,GACjBA,GAAS;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AACH,QAAA/sE,EAAA,MAAK2rE,GAAAU,IAAL,WAAe;AACf;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAArsE,EAAA,MAAK2rE,GAAAU,IAAL,WAAe;AACf;AAAA,IACR;AAAA,EACE;AAAA,EAYA,SAAS;AA1wqBX,QAAAzwE;AA4wqBI,IADA,MAAM,OAAM,GACPiM,EAAA,MAAK4jE,SAGV7vE,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiBiM,EAAA,MAAK4jE,KAAY;AAAA,MACvD,WAAW;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,MAClB;AAAA,IACA;AAAA,EACE;AAAA,EACA,WAAW;AAtxqBb,QAAA7vE;AAwxqBI,IADA,MAAM,SAAQ,GACTiM,EAAA,MAAK4jE,SAGV7vE,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiBiM,EAAA,MAAK4jE,KAAY;AAAA,MACvD,WAAW;AAAA,QACT,UAAU;AAAA,MAClB;AAAA,IACA,IACS5jE,EAAA,MAAK2jE,OACRxrE,EAAA,MAAK2rE,GAAAU,IAAL,WAAe;AAAA,EAEnB;AAAA,EACA,IAAI,mBAAmB;AACrB,WAAO,CAACxkE,EAAA,MAAK2jE;AAAA,EACf;AAAA,EACA,KAAKptD,IAAU,KAAK,YAAY;AAC9B,UAAM,KAAKA,CAAO,GACd,KAAK,WACP,KAAK,OAAO,UAAU,iBAAiBvW,EAAA,MAAKqJ,KAAK;AAAA,MAC/C,WAAW;AAAA,QACT,QAAQ,CAACkN;AAAA,MACnB;AAAA,IACA,CAAO,GACD,KAAK,OAAO,UAAU,iBAAiBvW,EAAA,MAAK4jE,KAAY;AAAA,MACtD,WAAW;AAAA,QACT,QAAQ,CAACrtD;AAAA,MACnB;AAAA,IACA,CAAO;AAAA,EAEL;AAAA,EAgCA,OAAO,kBAAkBta,GAAQiM,GAAO;AAAA,IACtC,QAAQsM;AAAA,IACR,GAAA/c;AAAA,IACA,GAAAC;AAAA,EACJ,GAAK;AACD,UAAM;AAAA,MACJ,GAAGoc;AAAA,MACH,GAAGC;AAAA,MACH,OAAO4D;AAAA,MACP,QAAQC;AAAA,IACd,IAAQpD,EAAU,sBAAqB,GAC7B1B,IAAK,IAAI,gBAAe,GACxBnM,IAAS1K,EAAO,eAAe6W,CAAE,GACjCmR,IAAoB,CAAAvkB,MAAK;AAC7B,MAAAoT,EAAG,MAAK,GACR3a,EAAA,MAAKksE,IAAAQ,IAAL,WAAmB5oE,GAAQyD;AAAA,IAC7B;AACA,WAAO,iBAAiB,QAAQukB,GAAmB;AAAA,MACjD,QAAAtd;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,aAAasd,GAAmB;AAAA,MACtD,QAAAtd;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,eAAehH,IAAW;AAAA,MAChD,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAAgH;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,eAAelH,IAAe;AAAA,MACpD,QAAAkH;AAAA,IACN,CAAK,GACD6N,EAAU,iBAAiB,eAAerc,EAAA,MAAKksE,IAAAO,IAAe,KAAK,MAAM3oE,CAAM,GAAG;AAAA,MAChF,QAAA0K;AAAA,IACN,CAAK,GACD,KAAK,iBAAiB,IAAIq8D,GAAsB;AAAA,MAC9C,GAAAvrE;AAAA,MACA,GAAAC;AAAA,IACN,GAAO,CAACoc,GAAQC,GAAQ4D,GAAaC,CAAY,GAAG3b,EAAO,OAAO,KAAK,oBAAoB,GAAGiM,GAAO,IAAK,GACrG;AAAA,MACC,IAAI,KAAK;AAAA,MACT,YAAY,KAAK;AAAA,IACvB,IAAQjM,EAAO,UAAU,KAAK;AAAA,MACxB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,MACjB,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,MAAM,KAAK;AAAA,QACX,gBAAgB,KAAK;AAAA,MAC7B;AAAA,MACM,WAAW;AAAA,QACT,WAAW;AAAA,QACX,MAAM;AAAA,MACd;AAAA,MACM,MAAM;AAAA,QACJ,GAAG,KAAK,eAAe,UAAS;AAAA,MACxC;AAAA,IACA,GAAO,IAAM,EAAI;AAAA,EACf;AAAA,EAyBA,aAAa,YAAYqJ,GAAMrJ,GAAQ+L,GAAW;AAt6qBpD,QAAAjU,GAAAC,GAAAse,GAAAC;AAu6qBI,QAAIujC,IAAc;AAClB,QAAIxwC,aAAgBgnD,IAA4B;AAC9C,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,YAAAgB;AAAA,UACA,MAAA13D;AAAA,UACA,UAAAsH;AAAA,UACA,IAAAnC;AAAA,UACA,OAAA+F;AAAA,UACA,SAAAsC;AAAA,UACA,UAAAiT;AAAA,UACA,UAAA4E;AAAA,UACA,aAAA3E;AAAA,UACA,cAAAiM;AAAA,UACA,kBAAAC;AAAA,QACV;AAAA,QACQ,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,YAAA7O;AAAA,UACZ;AAAA,QACA;AAAA,MACA,IAAUrO;AACJ,MAAAwwC,IAAcxwC,IAAO;AAAA,QACnB,gBAAgB5V,EAAqB;AAAA,QACrC,OAAO,MAAM,KAAKoR,CAAK;AAAA,QACvB,SAAAsC;AAAA,QACA,YAAAkqD;AAAA,QACA,OAAO;AAAA,QACP,WAAW35C,IAAa;AAAA,QACxB,MAAM/d,EAAK,MAAM,CAAC;AAAA,QAClB,UAAAsH;AAAA,QACA,qBAAqBnC;AAAA,QACrB,IAAAA;AAAA,QACA,SAAS;AAAA,QACT,UAAAsb;AAAA,QACA,UAAA4E;AAAA,QACA,UAAS3E,KAAA,gBAAAA,EAAa,QAAO;AAAA,QAC7B,cAAAiM;AAAA,QACA,kBAAAC;AAAA,MACR;AAAA,IACI,WAAWld,aAAgB8mD,IAAsB;AAC/C,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,UAAAmB;AAAA,UACA,MAAA33D;AAAA,UACA,UAAAsH;AAAA,UACA,IAAAnC;AAAA,UACA,OAAA+F;AAAA,UACA,aAAa;AAAA,YACX,UAAU43D;AAAA,UACtB;AAAA,UACU,UAAAriD;AAAA,UACA,UAAA4E;AAAA,UACA,aAAA3E;AAAA,UACA,cAAAiM;AAAA,UACA,kBAAAC;AAAA,QACV;AAAA,QACQ,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,YAAA7O;AAAA,UACZ;AAAA,QACA;AAAA,MACA,IAAUrO;AACJ,MAAAwwC,IAAcxwC,IAAO;AAAA,QACnB,gBAAgB5V,EAAqB;AAAA,QACrC,OAAO,MAAM,KAAKoR,CAAK;AAAA,QACvB,WAAA43D;AAAA,QACA,UAAAnL;AAAA,QACA,OAAO;AAAA,QACP,WAAW55C,IAAa;AAAA,QACxB,MAAM/d,EAAK,MAAM,CAAC;AAAA,QAClB,UAAAsH;AAAA,QACA,qBAAqBnC;AAAA,QACrB,IAAAA;AAAA,QACA,SAAS;AAAA,QACT,UAAAsb;AAAA,QACA,UAAA4E;AAAA,QACA,UAAS3E,KAAA,gBAAAA,EAAa,QAAO;AAAA,QAC7B,cAAAiM;AAAA,QACA,kBAAAC;AAAA,MACR;AAAA,IACI;AACA,UAAM;AAAA,MACJ,OAAA1hB;AAAA,MACA,YAAAwsD;AAAA,MACA,UAAAC;AAAA,MACA,SAAAnqD;AAAA,IACN,IAAQkC,GACEmB,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS;AAC9D,IAAAvB,EAAO,QAAQnS,EAAK,aAAa,GAAGwM,CAAK,GACzC2F,EAAO,UAAUrD,KAAW,GACxBmqD,KACFttD,EAAAwG,GAAO43D,IAAa/4D,EAAK,YAE3BmB,EAAO,eAAeqvC,GAClBxwC,EAAK,WACPmB,EAAO,eAAenB,CAAI;AAE5B,UAAM,CAACzD,GAAWC,CAAU,IAAI2E,EAAO,gBACjC,CAACoa,GAAOC,CAAK,IAAIra,EAAO;AAC9B,QAAI6mD,GAAY;AACd,YAAMrlD,IAAQhI,EAAAwG,GAAO28D,IAAS,CAAA;AAC9B,eAASjwE,IAAI,GAAGA,IAAIm6D,EAAW,QAAQn6D,KAAK;AAC1C,QAAA8U,EAAM,KAAK;AAAA,UACT,IAAIqlD,EAAWn6D,CAAC,IAAI0tB,KAAShf;AAAA,UAC7B,GAAG,KAAKyrD,EAAWn6D,IAAI,CAAC,IAAI2tB,KAAShf;AAAA,UACrC,QAAQwrD,EAAWn6D,IAAI,CAAC,IAAIm6D,EAAWn6D,CAAC,KAAK0O;AAAA,UAC7C,SAASyrD,EAAWn6D,IAAI,CAAC,IAAIm6D,EAAWn6D,IAAI,CAAC,KAAK2O;AAAA,QAC5D,CAAS;AAEH,MAAA3J,EAAApE,IAAA0S,GAAOq9D,GAAAC,IAAP,KAAAhwE,IACAoE,EAAAnE,IAAAyS,GAAOq9D,GAAAM,IAAP,KAAApwE,IACAyS,EAAO,OAAOA,EAAO,QAAQ;AAAA,IAC/B,WAAW8mD,GAAU;AACnB,MAAAttD,EAAAwG,GAAOk9D,IAAmB;AAC1B,YAAMvL,IAAS7K,EAAS,CAAC,GACnBvoC,IAAQ;AAAA,QACZ,GAAGozC,EAAO,CAAC,IAAIv3C;AAAA,QACf,GAAG/e,KAAcs2D,EAAO,CAAC,IAAIt3C;AAAA,MACrC,GACY6/C,IAAW,IAAIqC,GAAsBh+C,GAAO,CAAC,GAAG,GAAGnjB,GAAWC,CAAU,GAAG,GAAG9B,EAAAyG,GAAO43D,MAAa,GAAG,IAAM,IAAK;AACtH,eAASlrE,IAAI,GAAGmL,IAAK85D,EAAO,QAAQjlE,IAAImL,GAAInL,KAAK;AAC/C,QAAA6xB,EAAM,IAAIozC,EAAOjlE,CAAC,IAAI0tB,GACtBmE,EAAM,IAAIljB,KAAcs2D,EAAOjlE,IAAI,CAAC,IAAI2tB,IACxC6/C,EAAS,IAAI37C,CAAK;AAEpB,YAAM;AAAA,QACJ,IAAAjqB;AAAA,QACA,YAAAoqE;AAAA,MACR,IAAUlpE,EAAO,UAAU,KAAK;AAAA,QACxB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,QACjB,MAAM;AAAA,UACJ,SAAS;AAAA,UACT,MAAMwK,EAAO;AAAA,UACb,gBAAgBA,EAAO;AAAA,QACjC;AAAA,QACQ,WAAW;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,QAChB;AAAA,QACQ,MAAM;AAAA,UACJ,GAAGk6D,EAAS,UAAS;AAAA,QAC/B;AAAA,MACA,GAAS,IAAM,EAAI;AACb,MAAAxoE,EAAAma,IAAA7L,GAAOq9D,GAAAE,IAAP,KAAA1xD,GAA2B;AAAA,QACzB,mBAAmBquD,EAAS,YAAW;AAAA,QACvC,aAAa5lE;AAAA,QACb,YAAAoqE;AAAA,MACR,IACMhtE,EAAAoa,IAAA9L,GAAOq9D,GAAAM,IAAP,KAAA7xD,IACA9L,EAAO,OAAOA,EAAO,cAAc;AAAA,IACrC;AACA,WAAOA;AAAA,EACT;AAAA,EACA,UAAUgT,IAAe,IAAO;AAC9B,QAAI,KAAK,QAAO,KAAMA;AACpB,aAAO;AAET,QAAI,KAAK;AACP,aAAO,KAAK,iBAAgB;AAE9B,UAAM3Y,IAAQulB,GAAiB,cAAc,QAAQ,KAAK,WAAW,eAAe,KAAK,KAAK,CAAC,GACzFnR,IAAa,MAAM,UAAUuE,CAAY;AAS/C,WARA,OAAO,OAAOvE,GAAY;AAAA,MACxB,OAAApU;AAAA,MACA,SAAS,KAAK;AAAA,MACd,WAAWd,EAAA,MAAKq+D;AAAA,MAChB,YAAYlmE,EAAA,MAAK2rE,GAAAY,IAAL;AAAA,MACZ,UAAUvsE,EAAA,MAAK2rE,GAAAa,IAAL,WAAwBzvD,EAAW;AAAA,IACnD,CAAK,GACD,KAAK,WAAWA,CAAU,GACtB,KAAK,uBAAuB,CAAC/c,EAAA,MAAK2rE,GAAA9H,IAAL,WAAwB9mD,KAChD,QAETA,EAAW,KAAK,KAAK,qBACdA;AAAA,EACT;AAAA,EAOA,wBAAwBkB,GAAY;AAClC,WAAI,KAAK,WACPA,EAAW,KAAI,GACR,SAETA,EAAW,aAAa;AAAA,MACtB,MAAM,KAAK,WAAU;AAAA,MACrB,OAAO,KAAK;AAAA,IAClB,CAAK,GACM;AAAA,EACT;AAAA,EACA,OAAO,0BAA0B;AAC/B,WAAO;AAAA,EACT;AACF;AA31BE8sD,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACA59D,KAAA,eACA69D,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAr6D,KAAA,eACAs6D,KAAA,eACAzC,KAAA,eACAC,KAAA,eACAyC,KAAA,eACAtpD,KAAA,eACA+jD,KAAA,eACAwF,KAAA,eAlBFC,IAAA,eAyFEC,KAAe,WAAG;AAChB,QAAMpD,IAAW,IAAIiB,GAAkB5hE,EAAA,MAAKojE,KAAQ,IAAK;AACzD,EAAAnjE,EAAA,MAAKyjE,IAAqB/C,EAAS,YAAW,IAC9C,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,IAAI3gE,EAAA,MAAK0jE,IAAmB;AACpE,QAAM0B,IAAqB,IAAIxD,GAAkB5hE,EAAA,MAAKojE,KAAQ,OAAQ,MAAO,KAAK,WAAW,cAAc,KAAK;AAChH,EAAAnjE,EAAA,MAAKqjE,IAAiB8B,EAAmB,YAAW;AACpD,QAAM;AAAA,IACJ,YAAAxnC;AAAA,EACN,IAAQ59B,EAAA,MAAK0jE;AACT,EAAAzjE,EAAA,MAAKihE,IAAc,EAAEtjC,EAAW,CAAC,IAAI,KAAK,KAAK,KAAK,QAAQA,EAAW,CAAC,IAAI,KAAK,KAAK,KAAK,MAAM;AACjG,QAAM;AAAA,IACJ,WAAAqkC;AAAA,EACN,IAAQjiE,EAAA,MAAKsjE;AACT,EAAArjE,EAAA,MAAKkhE,IAAa,EAAEc,EAAU,CAAC,IAAI,KAAK,KAAK,KAAK,QAAQA,EAAU,CAAC,IAAI,KAAK,KAAK,KAAK,MAAM;AAChG,GACA+B,KAAmB,SAAC;AAAA,EAClB,mBAAAqB;AAAA,EACA,aAAAC;AAAA,EACA,YAAAH;AACJ,GAAK;AA53pBL,MAAApxE,GAAAC;AAg4pBI,MAHAiM,EAAA,MAAKyjE,IAAqB2B,IAE1BplE,EAAA,MAAKqjE,IAAiB+B,EAAkB,cAAcrlE,EAAA,MAAKq+D,MAAa,IADjD,KACqE,KAAM,IAC9FiH,KAAe;AACjB,IAAArlE,EAAA,MAAKoJ,IAAMi8D,IACXrlE,EAAA,MAAKojE,IAAc8B,IACnB,KAAK,OAAO,UAAU,aAAaG,GAAa;AAAA,MAC9C,MAAMD,EAAkB;AAAA,MACxB,MAAM;AAAA,QACJ,GAAGA,EAAkB,UAAS;AAAA,MACxC;AAAA,IACA,CAAO,GACDplE,EAAA,MAAK2jE,IAAa,KAAK,OAAO,UAAU,YAAY;AAAA,MAClD,WAAW;AAAA,QACT,kBAAkB;AAAA,QAClB,MAAM;AAAA,MAChB;AAAA,MACQ,MAAM5jE,EAAA,MAAKsjE,IAAe;AAAA,MAC1B,MAAM;AAAA,QACJ,GAAGtjE,EAAA,MAAKsjE,IAAe,UAAS;AAAA,MAC1C;AAAA,IACA,GAAS,EAAI;AAAA,WACE,KAAK,QAAQ;AACtB,UAAM1/C,IAAQ,KAAK,OAAO,SAAS;AACnC,SAAK,OAAO,UAAU,iBAAiB5jB,EAAA,MAAKqJ,KAAK;AAAA,MAC/C,MAAMlR,EAAApE,IAAA+wE,IAAgBT,IAAAC,IAAhB,KAAAvwE,GAA4BiM,EAAA,MAAK0jE,IAAmB,MAAM9/C,IAAQ,KAAK,WAAW,OAAO;AAAA,MAC/F,MAAM;AAAA,QACJ,GAAGyhD,EAAkB,UAAS;AAAA,MACxC;AAAA,IACA,CAAO,GACD,KAAK,OAAO,UAAU,iBAAiBrlE,EAAA,MAAK4jE,KAAY;AAAA,MACtD,MAAMzrE,EAAAnE,IAAA8wE,IAAgBT,IAAAC,IAAhB,KAAAtwE,GAA4BgM,EAAA,MAAKsjE,IAAe,KAAK1/C;AAAA,MAC3D,MAAM;AAAA,QACJ,GAAG5jB,EAAA,MAAKsjE,IAAe,UAAS;AAAA,MAC1C;AAAA,IACA,CAAO;AAAA,EACH;AACA,QAAM,CAAC7rE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIsnE,EAAkB;AAChD,UAAQ,KAAK,UAAQ;AAAA,IACnB,KAAK;AACH,WAAK,IAAI5tE,GACT,KAAK,IAAIC,GACT,KAAK,QAAQoG,GACb,KAAK,SAASC;AACd;AAAA,IACF,KAAK,IACH;AACE,YAAM,CAAC8D,GAAWC,CAAU,IAAI,KAAK;AACrC,WAAK,IAAIpK,GACT,KAAK,IAAI,IAAID,GACb,KAAK,QAAQqG,IAAQgE,IAAaD,GAClC,KAAK,SAAS9D,IAAS8D,IAAYC;AACnC;AAAA,IACF;AAAA,IACF,KAAK;AACH,WAAK,IAAI,IAAIrK,GACb,KAAK,IAAI,IAAIC,GACb,KAAK,QAAQoG,GACb,KAAK,SAASC;AACd;AAAA,IACF,KAAK,KACH;AACE,YAAM,CAAC8D,GAAWC,CAAU,IAAI,KAAK;AACrC,WAAK,IAAI,IAAIpK,GACb,KAAK,IAAID,GACT,KAAK,QAAQqG,IAAQgE,IAAaD,GAClC,KAAK,SAAS9D,IAAS8D,IAAYC;AACnC;AAAA,IACF;AAAA,EACR;AACI,QAAM;AAAA,IACJ,YAAA87B;AAAA,EACN,IAAQynC;AACJ,EAAAplE,EAAA,MAAKihE,IAAc,EAAEtjC,EAAW,CAAC,IAAInmC,KAAKqG,IAAQ8/B,EAAW,CAAC,IAAIlmC,KAAKqG,CAAM;AAC7E,QAAM;AAAA,IACJ,WAAAkkE;AAAA,EACN,IAAQjiE,EAAA,MAAKsjE;AACT,EAAArjE,EAAA,MAAKkhE,IAAa,EAAEc,EAAU,CAAC,IAAIxqE,KAAKqG,IAAQmkE,EAAU,CAAC,IAAIvqE,KAAKqG,CAAM;AAC5E,GAgDAk4D,KAAY,SAACn1D,GAAO;AAClB,QAAMykE,IAAqB,CAACvI,GAAKwI,MAAQ;AACvC,SAAK,QAAQxI,GACb,KAAK,UAAUwI,GACf,KAAK,eAAc;AAAA,EACrB,GACMvI,IAAa,KAAK,OAClBwI,IAAe,KAAK;AAC1B,OAAK,YAAY;AAAA,IACf,KAAKF,EAAmB,KAAK,MAAMzkE,GAAOgkE,GAAgB,eAAe;AAAA,IACzE,MAAMS,EAAmB,KAAK,MAAMtI,GAAYwI,CAAY;AAAA,IAC5D,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM91E,GAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK,GACD,KAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,IACR,OAAO,KAAK,WAAW,mBAAmBmR,CAAK;AAAA,EACrD,GAAO,EAAI;AACT,GACAmjE,KAAgB,SAACvL,GAAW;AAC1B,QAAMgN,IAAiB1lE,EAAA,MAAKq+D,KACtBsH,IAAe,CAAAC,MAAM;AACzB,IAAA3lE,EAAA,MAAKo+D,IAAauH,IAClBztE,EAAA,MAAK2rE,GAAAI,IAAL,WAAsB0B;AAAA,EACxB;AACA,OAAK,YAAY;AAAA,IACf,KAAKD,EAAa,KAAK,MAAMjN,CAAS;AAAA,IACtC,MAAMiN,EAAa,KAAK,MAAMD,CAAc;AAAA,IAC5C,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,IACzD,UAAU;AAAA,IACV,MAAM/1E,GAA2B;AAAA,IACjC,qBAAqB;AAAA,IACrB,UAAU;AAAA,EAChB,CAAK,GACD,KAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,IACR,WAAA+oE;AAAA,EACN,GAAO,EAAI;AACT,GAqEAwL,KAAgB,SAACxL,GAAW;AAC1B,EAAK14D,EAAA,MAAK2jE,QAGVxrE,EAAA,MAAK2rE,GAAAE,IAAL,WAAyB;AAAA,IACvB,mBAAmBhkE,EAAA,MAAK0jE,IAAmB,cAAchL,IAAY,CAAC;AAAA,EAC5E,IACI,KAAK,kBAAiB,GACtB,KAAK,QAAO;AACd,GACAyL,KAAe,WAAG;AAChB,EAAInkE,EAAA,MAAKqJ,QAAQ,QAAQ,CAAC,KAAK,WAG/B,KAAK,OAAO,UAAU,OAAOrJ,EAAA,MAAKqJ,GAAG,GACrCpJ,EAAA,MAAKoJ,IAAM,OACX,KAAK,OAAO,UAAU,OAAOrJ,EAAA,MAAK4jE,GAAU,GAC5C3jE,EAAA,MAAK2jE,IAAa;AACpB,GACAQ,KAAe,SAACnoE,IAAS,KAAK,QAAQ;AACpC,EAAI+D,EAAA,MAAKqJ,QAAQ,SAGhB;AAAA,IACC,IAAIE,GAAA,MAAAF,IAAA;AAAA,IACJ,YAAYE,GAAA,MAAA85D,IAAA;AAAA,EAClB,IAAQpnE,EAAO,UAAU,KAAK;AAAA,IACxB,MAAM+D,EAAA,MAAK0jE,IAAmB;AAAA,IAC9B,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,MAAM,KAAK;AAAA,MACX,gBAAgB,KAAK;AAAA,IAC7B;AAAA,IACM,WAAW;AAAA,MACT,WAAW;AAAA,MACX,MAAM1jE,EAAA,MAAK2jE;AAAA,IACnB;AAAA,IACM,MAAM;AAAA,MACJ,GAAG3jE,EAAA,MAAK0jE,IAAmB,UAAS;AAAA,IAC5C;AAAA,EACA,GAAO,IAAO,EAAI,GACdzjE,EAAA,MAAK2jE,IAAa3nE,EAAO,UAAU,YAAY;AAAA,IAC7C,WAAW;AAAA,MACT,kBAAkB;AAAA,MAClB,MAAM+D,EAAA,MAAK2jE;AAAA,IACnB;AAAA,IACM,MAAM3jE,EAAA,MAAKsjE,IAAe;AAAA,IAC1B,MAAM;AAAA,MACJ,GAAGtjE,EAAA,MAAKsjE,IAAe,UAAS;AAAA,IACxC;AAAA,EACA,GAAOtjE,EAAA,MAAK2jE,GAAgB,IACpB3jE,EAAA,MAAKyjE,QACPzjE,EAAA,MAAKyjE,IAAc,MAAM,WAAWzjE,EAAA,MAAKqjE;AAE7C,GA/YFgB,KAAA,eAgZSC,KAAW,SAAC,CAAC7sE,GAAGC,GAAGoG,GAAOC,CAAM,GAAG6lB,GAAO;AAC/C,UAAQA,GAAK;AAAA,IACX,KAAK;AACH,aAAO,CAAC,IAAIlsB,IAAIqG,GAAQtG,GAAGsG,GAAQD,CAAK;AAAA,IAC1C,KAAK;AACH,aAAO,CAAC,IAAIrG,IAAIqG,GAAO,IAAIpG,IAAIqG,GAAQD,GAAOC,CAAM;AAAA,IACtD,KAAK;AACH,aAAO,CAACrG,GAAG,IAAID,IAAIqG,GAAOC,GAAQD,CAAK;AAAA,EAC/C;AACI,SAAO,CAACrG,GAAGC,GAAGoG,GAAOC,CAAM;AAC7B,GAqEAwmE,KAAQ,SAACnpE,GAAO;AACd,EAAA0pE,GAAgB,iBAAiB,KAAK,MAAM1pE,CAAK;AACnD,GAcAopE,KAAS,SAACjlE,GAAO;AACf,MAAI,CAACS,EAAA,MAAKkjE;AACR;AAEF,QAAMhvD,IAAY,OAAO,aAAY;AACrC,EAAI3U,IACF2U,EAAU,YAAYlU,EAAA,MAAKkjE,KAAaljE,EAAA,MAAKmjE,GAAa,IAE1DjvD,EAAU,YAAYlU,EAAA,MAAKujE,KAAYvjE,EAAA,MAAKwjE,GAAY;AAE5D,GA6CAiB,KAAY,WAAG;AACb,SAAOzkE,EAAA,MAAK2jE,MAAmB,KAAK,WAAW;AACjD,GACAe,KAAe,WAAG;AAChB,MAAI1kE,EAAA,MAAK2jE;AACP,WAAO;AAET,QAAM,CAAC9hE,GAAWC,CAAU,IAAI,KAAK,gBAC/B,CAAC+e,GAAOC,CAAK,IAAI,KAAK,iBACtB7Y,IAAQjI,EAAA,MAAKojE,KACb9V,IAAa,IAAI,aAAarlD,EAAM,SAAS,CAAC;AACpD,MAAI9U,IAAI;AACR,aAAW;AAAA,IACT,GAAAsE;AAAA,IACA,GAAAC;AAAA,IACA,OAAAoG;AAAA,IACA,QAAAC;AAAA,EACN,KAASkK,GAAO;AACV,UAAMu1D,IAAK/lE,IAAIoK,IAAYgf,GACrB48C,KAAM,IAAI/lE,KAAKoK,IAAagf;AAClC,IAAAwsC,EAAWn6D,CAAC,IAAIm6D,EAAWn6D,IAAI,CAAC,IAAIqqE,GACpClQ,EAAWn6D,IAAI,CAAC,IAAIm6D,EAAWn6D,IAAI,CAAC,IAAIsqE,GACxCnQ,EAAWn6D,IAAI,CAAC,IAAIm6D,EAAWn6D,IAAI,CAAC,IAAIqqE,IAAK1/D,IAAQ+D,GACrDyrD,EAAWn6D,IAAI,CAAC,IAAIm6D,EAAWn6D,IAAI,CAAC,IAAIsqE,IAAK1/D,IAAS+D,GACtD3O,KAAK;AAAA,EACP;AACA,SAAOm6D;AACT,GACAqX,KAAkB,SAAC/uE,GAAM;AACvB,SAAOoK,EAAA,MAAK0jE,IAAmB,UAAU9tE,GAAMuC,EAAA,MAAK2rE,GAAAW,IAAL,UAAmB;AACpE,GA0DOG,KAAc,SAAC3oE,GAAQb,GAAO;AACnC,EAAI,KAAK,eAAe,IAAIA,CAAK,KAC/Ba,EAAO,UAAU,iBAAiB,KAAK,kBAAkB;AAAA,IACvD,MAAM;AAAA,MACJ,GAAG,KAAK,eAAe,UAAS;AAAA,IAC1C;AAAA,EACA,CAAO;AAEL,GACO4oE,KAAa,SAAC5oE,GAAQb,GAAO;AAClC,EAAK,KAAK,eAAe,YAQvBa,EAAO,UAAU,OAAO,KAAK,gBAAgB,IAP7CA,EAAO,sBAAsBb,GAAO,IAAO;AAAA,IACzC,aAAa,KAAK;AAAA,IAClB,mBAAmB,KAAK,eAAe,YAAW;AAAA,IAClD,YAAY,KAAK;AAAA,IACjB,kBAAkB;AAAA,EAC1B,CAAO,GAIH,KAAK,mBAAmB,IACxB,KAAK,iBAAiB,MACtB,KAAK,uBAAuB;AAC9B,GAmLA4gE,KAAkB,SAAC9mD,GAAY;AAC7B,QAAM;AAAA,IACJ,OAAApU;AAAA,EACN,IAAQ,KAAK;AACT,SAAO,KAAK,oBAAoBoU,EAAW,MAAM,KAAK,CAACle,GAAG,MAAMA,MAAM8J,EAAM,CAAC,CAAC;AAChF,GA70BFpI,EAAMosE,IAANT,KAmBE/nE,EAnBIwoE,IAmBG,iBAAgB,OACvBxoE,EApBIwoE,IAoBG,mBAAkB,IACzBxoE,EArBIwoE,IAqBG,qBAAoB,KAC3BxoE,EAtBIwoE,IAsBG,SAAQ,cACfxoE,EAvBIwoE,IAuBG,eAAcp1E,EAAqB,YAC1C4M,EAxBIwoE,IAwBG,oBAAmB,KAC1BxoE,EAzBIwoE,IAyBG,kBAAiB,OACxBxoE,EA1BIwoE,IA0BG,wBAAuB;AA1BhC,IAAMe,KAANf;AAhxpBA,IAAAgB;AAmnrBA,MAAMC,GAAe;AAAA,EAArB;AACE,IAAArtE,EAAA,MAAAotE,IAAiB,uBAAO,OAAO,IAAI;AAAA;AAAA,EACnC,eAAe3zE,GAAMJ,GAAO;AAC1B,SAAKI,CAAI,IAAIJ,GACb,KAAK,kBAAkBI,GAAMJ,CAAK;AAAA,EACpC;AAAA,EACA,iBAAiBu2C,GAAY;AAC3B,QAAKA;AAGL,iBAAW,CAACn2C,GAAMJ,CAAK,KAAK,OAAO,QAAQu2C,CAAU;AACnD,QAAKn2C,EAAK,WAAW,GAAG,KACtB,KAAK,eAAeA,GAAMJ,CAAK;AAAA,EAGrC;AAAA,EACA,kBAAkBI,GAAMJ,GAAO;AAC7B,IAAAiO,EAAA,MAAK8lE,IAAe3zE,CAAI,IAAIJ;AAAA,EAC9B;AAAA,EACA,kBAAkB;AAChB,UAAM4J,IAAOqE,EAAA,MAAK8lE;AAClB,WAAA7lE,EAAA,MAAK6lE,IAAiB,uBAAO,OAAO,IAAI,IACjC;AAAA,MACL,MAAAnqE;AAAA,IACN;AAAA,EACE;AAAA,EACA,QAAQ;AACN,IAAAsE,EAAA,MAAK6lE,IAAiB,uBAAO,OAAO,IAAI;AAAA,EAC1C;AAAA,EACA,UAAU10E,IAAU,MAAM;AACxB,SAAK,iBAAiBA,CAAO;AAAA,EAC/B;AAAA,EACA,QAAQ;AACN,IAAAP,GAAY,iBAAiB;AAAA,EAC/B;AACF;AAlCEi1E,KAAA;AApnrBF,IAAAE,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAApC,IAAAC,IAAAoC,IAAAC,IAAAC,IAAAC;AAuprBA,MAAMC,KAAN,MAAMA,WAAsBvgD,GAAiB;AAAA,EAW3C,YAAY1P,GAAQ;AAClB,UAAMA,CAAM;AAZhB,IAAAje,EAAA,MAAA2tE;AACE,IAAA3tE,EAAA,MAAAstE,IAAgB;AAChB,IAAAttE,EAAA,MAAAutE;AACA,IAAA3pE,EAAA,sBAAe;AACf,IAAAA,EAAA,iBAAU;AASR,IAAA2D,EAAA,MAAKgmE,IAAmBtvD,EAAO,mBAAmB,KAClD,KAAK,aAAaA,CAAM;AAAA,EAC1B;AAAA,EACA,iBAAiB;AAvqrBnB,QAAA5iB;AAwqrBI,KAAAA,IAAA,KAAK,iBAAL,QAAAA,EAAmB,OAAO,KAAK,QAC/B,MAAM,eAAc;AAAA,EACtB;AAAA,EACA,aAAa4iB,GAAQ;AACnB,IAAIA,EAAO,iBACTxe,EAAA,MAAKkuE,IAAAC,IAAL,WAAyB3vD,IACzBxe,EAAA,MAAKkuE,IAAAjC,IAAL;AAAA,EAEJ;AAAA,EAyBA,OAAO,oBAAoBhvE,GAAI2D,GAAI;AACjC,UAAM8tE,IAAS,IAAI,IAAI,OAAO,KAAKzxE,CAAE,CAAC;AACtC,eAAW,CAACqG,GAAK1J,CAAK,KAAK,OAAO,QAAQgH,CAAE;AAC1C,MAAI8tE,EAAO,IAAIprE,CAAG,IAChB,OAAO,OAAOrG,EAAGqG,CAAG,GAAG1J,CAAK,IAE5BqD,EAAGqG,CAAG,IAAI1J;AAGd,WAAOqD;AAAA,EACT;AAAA,EACA,OAAO,yBAAyB0xE,GAAU;AACxC,IAAAj2E,GAAY,iBAAiB;AAAA,EAC/B;AAAA,EACA,WAAW,WAAW;AACpB,IAAAA,GAAY,iBAAiB;AAAA,EAC/B;AAAA,EACA,WAAW,WAAW;AACpB,WAAO;AAAA,EACT;AAAA,EACA,WAAW,0BAA0B;AACnC,WAAO;AAAA,EACT;AAAA,EACA,OAAO,oBAAoB4L,GAAM1K,GAAO;AACtC,UAAMg1E,IAAe,KAAK,SAAS,IAAItqE,CAAI;AAC3C,IAAIsqE,KACF,KAAK,uBAAuB,eAAeA,GAAch1E,CAAK,GAE5D,KAAK,mBACPiO,EAAA4mE,IAAcV,IAAa,eAAea,GAAch1E,CAAK,GAC7D,KAAK,eAAe,UAAU,iBAAiB,KAAK,gBAAgB,KAAK,uBAAuB,iBAAiB;AAAA,EAErH;AAAA,EACA,aAAa0K,GAAM1K,GAAO;AACxB,UAAMg1E,IAAe,KAAK,YAAY,SAAS,IAAItqE,CAAI;AACvD,IAAIsqE,KACF,KAAK,gBAAgBtqE,GAAMsqE,GAAch1E,CAAK;AAAA,EAElD;AAAA,EACA,WAAW,4BAA4B;AACrC,UAAMu2C,IAAa,CAAA,GACbl3C,IAAU,KAAK;AACrB,eAAW,CAACqL,GAAMtK,CAAI,KAAK,KAAK;AAC9B,MAAAm2C,EAAW,KAAK,CAAC7rC,GAAMrL,EAAQe,CAAI,CAAC,CAAC;AAEvC,WAAOm2C;AAAA,EACT;AAAA,EACA,IAAI,qBAAqB;AACvB,UAAMA,IAAa,CAAA,GACb;AAAA,MACJ,iBAAA0+B;AAAA,IACN,IAAQ;AACJ,eAAW,CAACvqE,GAAMtK,CAAI,KAAK,KAAK,YAAY;AAC1C,MAAAm2C,EAAW,KAAK,CAAC7rC,GAAMuqE,EAAgB70E,CAAI,CAAC,CAAC;AAE/C,WAAOm2C;AAAA,EACT;AAAA,EACA,gBAAgB7rC,GAAMtK,GAAMJ,GAAO;AACjC,UAAMX,IAAU,KAAK,iBACf61E,IAAa71E,EAAQe,CAAI,GACzB+0E,IAAS,CAAAj/C,MAAO;AArwrB1B,UAAAl0B;AAswrBM,MAAA3C,EAAQ,eAAee,GAAM81B,CAAG;AAChC,YAAMwD,IAAOzrB,EAAA,MAAKgmE,IAAc,eAAe7zE,GAAM81B,CAAG;AACxD,MAAIwD,KACFtzB,EAAA,MAAKkuE,IAAAK,IAAL,WAAiBj7C,KAEnB13B,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS3C,EAAQ,oBAC1DqL,MAAS,KAAK,aAChB,KAAK,eAAc;AAAA,IAEvB;AACA,SAAK,YAAY;AAAA,MACf,KAAKyqE,EAAO,KAAK,MAAMn1E,CAAK;AAAA,MAC5B,MAAMm1E,EAAO,KAAK,MAAMD,CAAU;AAAA,MAClC,MAAM,KAAK,WAAW,SAAS,KAAK,KAAK,YAAY,IAAI;AAAA,MACzD,UAAU;AAAA,MACV,MAAAxqE;AAAA,MACA,qBAAqB;AAAA,MACrB,UAAU;AAAA,IAChB,CAAK;AAAA,EACH;AAAA,EACA,cAAc;AA1xrBhB,QAAA1I;AA2xrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS6yE,GAAc,oBAAoB5mE,EAAA,MAAKgmE,IAAc,6BAA6B7tE,EAAA,MAAKkuE,IAAAI,IAAL,UAA0B,GAAG;AAAA,MACnK,MAAMtuE,EAAA,MAAKkuE,IAAAM,IAAL;AAAA,IACZ,CAAK;AAAA,EACH;AAAA,EACA,aAAa;AA/xrBf,QAAA5yE;AAgyrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS6yE,GAAc,oBAAoB5mE,EAAA,MAAKgmE,IAAc,4BAA4B7tE,EAAA,MAAKkuE,IAAAI,IAAL,UAA0B,GAAG;AAAA,MAClK,MAAMtuE,EAAA,MAAKkuE,IAAAM,IAAL;AAAA,IACZ,CAAK;AAAA,EACH;AAAA,EACA,eAAeQ,GAAIC,GAAI;AApyrBzB,QAAArzE;AAqyrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS;AAAA,MACpD,MAAMoE,EAAA,MAAKkuE,IAAAM,IAAL;AAAA,IACZ;AAAA,EACE;AAAA,EACA,gBAAgB;AAzyrBlB,QAAA5yE;AA0yrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS6yE,GAAc,oBAAoB5mE,EAAA,MAAKgmE,IAAc,+BAA+B7tE,EAAA,MAAKkuE,IAAAI,IAAL,YAA4B,KAAK,gBAAgB,GAAG;AAAA,MAC5L,MAAMtuE,EAAA,MAAKkuE,IAAAM,IAAL;AAAA,IACZ,CAAK;AAAA,EACH;AAAA,EACA,mBAAmB;AA9yrBrB,QAAA5yE;AA+yrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS;AAAA,MACpD,WAAW;AAAA,QACT,QAAQ;AAAA,MAChB;AAAA,IACA;AAAA,EACE;AAAA,EACA,kBAAkB;AArzrBpB,QAAAA;AAszrBI,KAAAA,IAAA,KAAK,WAAL,QAAAA,EAAa,UAAU,iBAAiB,KAAK,SAAS;AAAA,MACpD,WAAW;AAAA,QACT,QAAQ;AAAA,MAChB;AAAA,IACA;AAAA,EACE;AAAA,EACA,SAAS;AACP,UAAM,OAAM,GACZ,KAAK,gBAAe,GACpB,KAAK,eAAc;AAAA,EACrB;AAAA,EACA,iBAAiB;AACf,UAAM,eAAc,GACpB,KAAK,IAAI,UAAU,OAAO,YAAY,EAAI;AAAA,EAC5C;AAAA,EACA,gBAAgB;AACd,UAAM,cAAa,GACnB,KAAK,IAAI,UAAU,OAAO,YAAY,EAAK;AAAA,EAC7C;AAAA,EACA,qBAAqB;AACnB,WAAO,CAAC,GAAG,CAAC;AAAA,EACd;AAAA,EACA,IAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAAA,EACA,UAAU0uB,GAAO;AACf,IAAK,KAAK,uBACR,KAAK,OAAO,kBAAkB,IAAI,GAEpC,KAAK,eAAe,IAChBziB,EAAA,MAAKimE,QACPhmE,EAAA,MAAKgmE,IAAmB,KACxB,KAAK,OAAM,GACX,KAAK,OAAO,YAAY,IAAI,GACxBxjD,KAAS,KAAK,cAChB,KAAK,IAAI,MAAK;AAAA,EAGpB;AAAA,EACA,SAAS;AACP,IAAAtqB,EAAA,MAAKkuE,IAAAlC,IAAL,YACA,MAAM,OAAM;AAAA,EACd;AAAA,EACA,UAAU;AACR,IAAK,KAAK,WAGV,MAAM,QAAO,GACT,KAAK,QAAQ,SAGjBhsE,EAAA,MAAKkuE,IAAAjC,IAAL,YACAjsE,EAAA,MAAKkuE,IAAAK,IAAL,WAAiB1mE,EAAA,MAAKgmE,IAAc,MAC/B,KAAK,mBACR,KAAK,OAAO,IAAI,IAAI;AAAA,EAExB;AAAA,EACA,UAAU/pE,GAAQ;AA/2rBpB,QAAAlI;AAg3rBI,QAAIgxE,IAAiB;AACrB,IAAI,KAAK,UAAU,CAAC9oE,KAClB,KAAK,WAAW,oBAAoB,IAAI,GACxC9D,EAAA,MAAKkuE,IAAAlC,IAAL,cACSloE,MACT,KAAK,WAAW,iBAAiB,IAAI,GACrC9D,EAAA,MAAKkuE,IAAAjC,IAAL,WAAqBnoE,IACrB8oE,IAAiB,CAAC,KAAK,YAAUhxE,IAAA,KAAK,QAAL,gBAAAA,EAAU,UAAU,SAAS,qBAEhE,MAAM,UAAUkI,CAAM,GAClB8oE,KACF,KAAK,OAAM;AAAA,EAEf;AAAA,EA6GA,SAAS;AACP,IAAK,KAAK,UAGV,KAAK,OAAO,UAAU,iBAAiB,KAAK,SAAS6B,GAAc,oBAAoB;AAAA,MACrF,MAAMzuE,EAAA,MAAKkuE,IAAAM,IAAL;AAAA,IACZ,GAAO3mE,EAAA,MAAKgmE,IAAc,gBAAgB,KAAK,iBAAiB,KAAK,WAAW,OAAO,GAAG,CAAC,CAAC;AAAA,EAC1F;AAAA,EACA,kBAAkB;AAChB,IAAK,KAAK,UAGV7tE,EAAA,MAAKkuE,IAAAK,IAAL,WAAiB1mE,EAAA,MAAKgmE,IAAc,uBAAuB,KAAK,kBAAkB,KAAK,OAAO,KAAK;AAAA,EACrG;AAAA,EACA,OAAO,6BAA6B;AAAA,EAAC;AAAA,EACrC,SAAS;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEd,QAAI1kD,GAAOC;AACX,IAAI,KAAK,YACPD,IAAQ,KAAK,GACbC,IAAQ,KAAK;AAEf,UAAM9f,IAAM,MAAM,OAAM;AACxB,IAAAA,EAAI,UAAU,IAAI,MAAM;AACxB,UAAM4lE,IAAU,SAAS,cAAc,KAAK;AAC5C,WAAA5lE,EAAI,OAAO4lE,CAAO,GAClBA,EAAQ,aAAa,eAAe,MAAM,GAC1CA,EAAQ,YAAY,YACpB,KAAK,QAAO,GACZ,KAAK,WAAW,iBAAiB,IAAI,GACrC,KAAK,eAAc,GACf,KAAK,WACP,KAAK,gBAAgB/lD,GAAOC,CAAK,GAE5B9f;AAAA,EACT;AAAA,EACA,OAAO,qBAAqB0lE,GAAIC,GAAIE,GAAcC,GAAejrB,GAAW;AAC1E,IAAAzrD,GAAY,iBAAiB;AAAA,EAC/B;AAAA,EACA,OAAO,aAAaoL,GAAQ+L,GAAW61D,GAAQziE,GAAO;AAnhsBxD,QAAArH;AAohsBI,UAAM;AAAA,MACJ,QAAAstB;AAAA,MACA,SAAS5pB;AAAA,MACT,SAASC;AAAA,MACT,WAAAuR;AAAA,MACA,aAAAC;AAAA,IACN,IAAQ9N;AACJ,QAAIgO,GAAgB,qCAAqCF,CAAW;AAClE;AAEF,UAAM;AAAA,MACJ,UAAU;AAAA,QACR,UAAAhM;AAAA,MACR;AAAA,IACA,IAAQjB,GACE;AAAA,MACJ,OAAO0b;AAAA,MACP,QAAQC;AAAA,IACd,IAAQyJ,EAAO,sBAAqB,GAC1BvO,IAAK7S,EAAA2mE,IAAcT,IAAoB,IAAI,gBAAe,IAC1Dx/D,IAAS1K,EAAO,eAAe6W,CAAE;AAiDvC,QAhDA1J,GAAgB,WAAWF,GAAaD,CAAS,GACjD,OAAO,iBAAiB,aAAa,CAAAvJ,MAAK;AACxC,MAAI0J,GAAgB,wBAAwB1J,EAAE,SAAS,KACrD,KAAK,SAASA,CAAC;AAAA,IAEnB,GAAG;AAAA,MACD,QAAAiH;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,iBAAiB,CAAAjH,MAAK;AAC5C,MAAI0J,GAAgB,wBAAwB1J,EAAE,SAAS,KACrD,KAAK,eAAe,kBAAiB;AAAA,IAEzC,GAAG;AAAA,MACD,QAAAiH;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,eAAe,CAAAjH,MAAK;AAC1C,MAAK0J,GAAgB,kBAAkB1J,EAAE,WAAW,MAGpD0J,GAAgB,0BAA0B1J,EAAE,SAAS,GACjDM,EAAA4mE,IAAcV,IAAa,oBAC7BlmE,EAAA4mE,IAAcV,IAAa,kBAAiB,GACxClmE,EAAA4mE,IAAcV,IAAa,YAC7B,KAAK,eAAe,kBAAkB,EAAI,IAE1C,KAAK,SAAS,IAAI;AAAA,IAGxB,GAAG;AAAA,MACD,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAAv/D;AAAA,IACN,CAAK,GACD,OAAO,iBAAiB,eAAelH,IAAe;AAAA,MACpD,QAAAkH;AAAA,IACN,CAAK,GACD0a,EAAO,iBAAiB,eAAe,KAAK,UAAU,KAAK,IAAI,GAAG;AAAA,MAChE,QAAA1a;AAAA,IACN,CAAK,GACD0a,EAAO,iBAAiB,aAAa,CAAA3hB,MAAK;AACxC,MAAI0J,GAAgB,gBAAgB1J,EAAE,SAAS,KAC7CC,GAAUD,CAAC;AAAA,IAEf,GAAG;AAAA,MACD,QAAAiH;AAAA,IACN,CAAK,GACD1K,EAAO,cAAa,IACpBlI,IAAAiU,EAAU,mBAAV,QAAAjU,EAA0B,QACtBiM,EAAA4mE,IAAcV,KAAc;AAC9B,MAAAjqE,EAAO,UAAU,iBAAiB,KAAK,gBAAgB+D,EAAA4mE,IAAcV,IAAa,SAASzuE,GAAGC,GAAGigB,GAAaC,GAAc1a,CAAQ,CAAC;AACrI;AAAA,IACF;AACA,IAAA8K,EAAU,6BAA6B,IAAI,GAC3C/H,EAAA2mE,IAAcV,IAAe,KAAK,qBAAqBzuE,GAAGC,GAAGigB,GAAaC,GAAc1a,CAAQ,IAChG+C,EAAA2mE,IAAcR,IAAyB,KAAK,yBAAwB,IACpE,KAAK,iBAAiBnqE,GACrB;AAAA,MACC,IAAI,KAAK;AAAA,IACf,IAAQA,EAAO,UAAU,KAAK,KAAK,oBAAoB+D,EAAA4mE,IAAcR,IAAuB,gBAAe,GAAIpmE,EAAA4mE,IAAcV,IAAa,oBAAoB,GAAG,IAAM,EAAK;AAAA,EAC1K;AAAA,EACA,OAAO,UAAU9qE,GAAO;AAEtB,QADAgO,GAAgB,gBAAgBhO,EAAM,SAAS,GAC3C,CAAC4E,EAAA4mE,IAAcV;AACjB;AAEF,UAAM;AAAA,MACJ,SAAA/oE;AAAA,MACA,SAAAC;AAAA,MACA,WAAA6L;AAAA,IACN,IAAQ7N;AACJ,QAAKgO,GAAgB,gBAAgBH,CAAS,GAG9C;AAAA,UAAIG,GAAgB,2BAA2B;AAC7C,aAAK,SAAShO,CAAK;AACnB;AAAA,MACF;AACA,WAAK,eAAe,UAAU,iBAAiB,KAAK,gBAAgB4E,EAAA4mE,IAAcV,IAAa,IAAI/oE,GAASC,CAAO,CAAC,GACpHgM,GAAgB,aAAahO,EAAM,SAAS,GAC5CuE,GAAUvE,CAAK;AAAA;AAAA,EACjB;AAAA,EACA,OAAO,SAASosE,GAAK;AACnB,IAAIA,MACF,KAAK,iBAAiB,IACtB,KAAK,iBAAiB,MACtBvnE,EAAA2mE,IAAcV,IAAe,OAC7BjmE,EAAA2mE,IAAcR,IAAyB,OACvCh9D,GAAgB,eAAc,IAE5BpJ,EAAA4mE,IAAcT,QAChBnmE,EAAA4mE,IAAcT,IAAkB,MAAK,GACrClmE,EAAA2mE,IAAcT,IAAoB,OAClC/8D,GAAgB,gBAAe;AAAA,EAEnC;AAAA,EACA,OAAO,SAAShO,GAAO;AACrB,UAAMa,IAAS,KAAK;AACpB,QAAKA,GAQL;AAAA,UALAA,EAAO,cAAc,EAAI,GACzB,KAAK,SAAS,EAAK,IACfb,KAAA,gBAAAA,EAAO,YAAWa,EAAO,OAC3BA,EAAO,UAAU,iBAAiB,KAAK,gBAAgB+D,EAAA4mE,IAAcV,IAAa,IAAI9qE,EAAM,SAASA,EAAM,OAAO,CAAC,GAEjH,KAAK,yBAAyB;AAChC,cAAMqsE,IAAOznE,EAAA4mE,IAAcV,KACrBwB,IAAS,KAAK,gBACdC,IAAcF,EAAK,eAAc;AACvC,QAAAxrE,EAAO,YAAY;AAAA,UACjB,KAAK,MAAM;AACT,YAAAA,EAAO,UAAU,iBAAiByrE,GAAQD,EAAK,eAAeE,CAAW,CAAC;AAAA,UAC5E;AAAA,UACA,MAAM,MAAM;AACV,YAAA1rE,EAAO,UAAU,iBAAiByrE,GAAQD,EAAK,kBAAiB,CAAE;AAAA,UACpE;AAAA,UACA,UAAU;AAAA,UACV,MAAM93E,GAA2B;AAAA,QACzC,CAAO;AACD;AAAA,MACF;AACA,WAAK,WAAW,EAAK;AAAA;AAAA,EACvB;AAAA,EACA,OAAO,WAAWi4E,GAAW;AAC3B,UAAM3rE,IAAS,KAAK;AACpB,QAAI,CAACA;AACH,aAAO;AAIT,QAFAA,EAAO,cAAc,EAAI,GACzBA,EAAO,eAAetM,GAA2B,SAAS,GACtD,CAACqQ,EAAA4mE,IAAcV,IAAa,WAAW;AACzC,YAAM;AAAA,QACJ,gBAAgB,CAACrkE,GAAWC,CAAU;AAAA,QACtC,OAAA7E;AAAA,MACR,IAAUhB,GACEwK,IAASxK,EAAO,sBAAsB;AAAA,QAC1C,SAAS;AAAA,QACT,SAAS;AAAA,MACjB,GAAS,IAAO;AAAA,QACR,QAAQ,KAAK;AAAA,QACb,cAAc+D,EAAA4mE,IAAcV,IAAa,YAAYrkE,IAAY5E,GAAO6E,IAAa7E,GAAOA,GAAO,KAAK,aAAa;AAAA,QACrH,gBAAgB+C,EAAA4mE,IAAcR;AAAA,QAC9B,iBAAiB,CAACwB;AAAA,MAC1B,CAAO;AACD,kBAAK,SAAS,EAAI,GACXnhE;AAAA,IACT;AACA,WAAAxK,EAAO,UAAU,OAAO,KAAK,cAAc,GAC3C,KAAK,SAAS,EAAI,GACX;AAAA,EACT;AAAA,EACA,qBAAqB43C,GAAO;AAAA,EAAC;AAAA,EAC7B,OAAO,gBAAgBg0B,GAAQC,GAAQ3rB,GAAYD,GAAa6rB,GAAal0B,GAAO;AAClF,IAAAhjD,GAAY,iBAAiB;AAAA,EAC/B;AAAA,EACA,aAAa,YAAYyU,GAAMrJ,GAAQ+L,GAAW;AApssBpD,QAAAjU,GAAAC;AAqssBI,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,WAAA6N;AAAA,QACA,YAAAC;AAAA,QACA,OAAA+e;AAAA,QACA,OAAAC;AAAA,MACR;AAAA,IACA,IAAQ7kB,EAAO,UACL+rE,IAAe,KAAK,gBAAgBnnD,GAAOC,GAAOjf,GAAWC,GAAY,KAAK,eAAewD,CAAI,GACjGmB,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS;AAC9D,WAAAvB,EAAO,qBAAqBnB,CAAI,GAChCnN,EAAApE,IAAA0S,GAAO4/D,IAAAC,IAAP,KAAAvyE,GAA2B;AAAA,MACzB,cAAAi0E;AAAA,IACN,IACI7vE,EAAAnE,IAAAyS,GAAO4/D,IAAAjC,IAAP,KAAApwE,IACAyS,EAAO,gBAAe,GACtBA,EAAO,OAAM,GACNA;AAAA,EACT;AAAA,EACA,cAAcgT,GAAc;AAC1B,UAAM,CAACoH,GAAOC,CAAK,IAAI,KAAK,iBACtB,CAACjf,GAAWC,CAAU,IAAI,KAAK;AACrC,WAAO9B,EAAA,MAAKgmE,IAAc,UAAU,CAACnlD,GAAOC,GAAOjf,GAAWC,CAAU,GAAG2X,CAAY;AAAA,EACzF;AAAA,EACA,wBAAwBrD,GAAY;AAClC,WAAAA,EAAW,aAAa;AAAA,MACtB,MAAM,KAAK,WAAU;AAAA,IAC3B,CAAK,GACM;AAAA,EACT;AAAA,EACA,OAAO,0BAA0B;AAC/B,WAAO;AAAA,EACT;AACF;AA9kBE4vD,KAAA,eACAC,KAAA,eAKOC,KAAA,eACAC,KAAA,eACAC,KAAA,eATTC,KAAA,eA0BEC,KAAmB,SAAC;AAAA,EAClB,cAAA0B;AAAA,EACA,QAAAN;AAAA,EACA,gBAAAO;AACJ,GAAK;AACD,EAAAhoE,EAAA,MAAK+lE,IAAgBgC,IACrB,KAAK,oBAAL,KAAK,kBAAoBC,IACpB,KAAK,uBACR,KAAK,WAAW,UAAU,gBAAgB,KAAK,UAAU,cAAc,GAErEP,KAAU,KACZ,KAAK,UAAUA,GACf,KAAK,OAAO,UAAU,aAAaA,GAAQM,EAAa,iBAAiB,KAEzE,KAAK,UAAU7vE,EAAA,MAAKkuE,IAAAE,IAAL,WAAoByB,GAAc,KAAK,SAExD7vE,EAAA,MAAKkuE,IAAAK,IAAL,WAAiBsB,EAAa;AAChC,GACAzB,KAAc,SAACyB,GAAc/rE,GAAQ;AACnC,QAAM;AAAA,IACJ,IAAAlB;AAAA,EACN,IAAQkB,EAAO,UAAU,KAAK2qE,GAAc,oBAAoB,KAAK,gBAAgB,gBAAe,GAAIoB,EAAa,oBAAoB,GAAG,IAAO,EAAK;AACpJ,SAAOjtE;AACT,GAsLAopE,KAAe,WAAG;AAChB,EAAI,KAAK,YAAY,QAAQ,CAAC,KAAK,WAGnC,KAAK,OAAO,UAAU,OAAO,KAAK,OAAO,GACzC,KAAK,UAAU,MACf,KAAK,gBAAgB,MAAK;AAC5B,GACAC,KAAe,SAACnoE,IAAS,KAAK,QAAQ;AACpC,MAAI,OAAK,YAAY,QAAQ,KAAK,WAAWA,IAG7C;AAAA,QAAI,KAAK,YAAY,MAAM;AACzB,WAAK,OAAO,UAAU,aAAa,KAAK,SAASA,EAAO,SAAS;AACjE;AAAA,IACF;AACA,SAAK,gBAAgB,UAAS,GAC9B,KAAK,UAAU9D,EAAA,MAAKkuE,IAAAE,IAAL,WAAoBvmE,EAAA,MAAKgmE,KAAe/pE;AAAA;AACzD,GACAuqE,KAAqB,SAAC,CAAC/uE,GAAGC,GAAGoG,GAAOC,CAAM,GAAG;AAC3C,QAAM;AAAA,IACJ,kBAAkB,CAACmqE,GAAIC,CAAE;AAAA,IACzB,UAAAjrE;AAAA,EACN,IAAQ;AACJ,UAAQA,GAAQ;AAAA,IACd,KAAK;AACH,aAAO,CAACxF,GAAG,IAAID,GAAGqG,KAASqqE,IAAKD,IAAKnqE,KAAUmqE,IAAKC,EAAG;AAAA,IACzD,KAAK;AACH,aAAO,CAAC,IAAI1wE,GAAG,IAAIC,GAAGoG,GAAOC,CAAM;AAAA,IACrC,KAAK;AACH,aAAO,CAAC,IAAIrG,GAAGD,GAAGqG,KAASqqE,IAAKD,IAAKnqE,KAAUmqE,IAAKC,EAAG;AAAA,IACzD;AACE,aAAO,CAAC1wE,GAAGC,GAAGoG,GAAOC,CAAM;AAAA,EACnC;AACE,GACA0oE,KAAmB,WAAG;AACpB,QAAM;AAAA,IACJ,GAAAhvE;AAAA,IACA,GAAAC;AAAA,IACA,OAAAoG;AAAA,IACA,QAAAC;AAAA,IACA,kBAAkB,CAACmqE,GAAIC,CAAE;AAAA,IACzB,UAAAjrE;AAAA,EACN,IAAQ;AACJ,UAAQA,GAAQ;AAAA,IACd,KAAK;AACH,aAAO,CAAC,IAAIxF,GAAGD,GAAGqG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IACzD,KAAK;AACH,aAAO,CAAC,IAAIzwE,GAAG,IAAIC,GAAGoG,GAAOC,CAAM;AAAA,IACrC,KAAK;AACH,aAAO,CAACrG,GAAG,IAAID,GAAGqG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IACzD;AACE,aAAO,CAACzwE,GAAGC,GAAGoG,GAAOC,CAAM;AAAA,EACnC;AACE,GACA2oE,KAAW,SAACj7C,GAAM;AAChB,GAAC,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,IAAItzB,EAAA,MAAKkuE,IAAAG,IAAL,WAA2B/6C,IACnE,KAAK,QACP,KAAK,kBAAiB,GACtB,KAAK,QAAO,IAEd,KAAK,WAAU;AACjB,GACAk7C,KAAU,WAAG;AACX,QAAM;AAAA,IACJ,GAAAlvE;AAAA,IACA,GAAAC;AAAA,IACA,OAAAoG;AAAA,IACA,QAAAC;AAAA,IACA,UAAAb;AAAA,IACA,gBAAAkrE;AAAA,IACA,kBAAkB,CAACF,GAAIC,CAAE;AAAA,EAC/B,IAAQ;AACJ,WAASjrE,IAAW,IAAIkrE,KAAkB,IAAE;AAAA,IAC1C,KAAK;AACH,aAAO,CAAC,IAAI1wE,IAAIqG,GAAQtG,GAAGsG,GAAQD,CAAK;AAAA,IAC1C,KAAK;AACH,aAAO,CAAC,IAAIrG,IAAIqG,GAAO,IAAIpG,IAAIqG,GAAQD,GAAOC,CAAM;AAAA,IACtD,KAAK;AACH,aAAO,CAACrG,GAAG,IAAID,IAAIqG,GAAOC,GAAQD,CAAK;AAAA,IACzC,KAAK;AACH,aAAO,CAACrG,GAAGC,IAAIoG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,EAAG;AAAA,IACzE,KAAK;AACH,aAAO,CAAC,IAAIzwE,GAAGD,GAAGqG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IACzD,KAAK;AACH,aAAO,CAAC,IAAIzwE,IAAIsG,KAAUoqE,IAAKD,IAAK,IAAIxwE,GAAGqG,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,EAAG;AAAA,IAClF,KAAK;AACH,aAAO,CAACzwE,IAAIoG,KAASoqE,IAAKC,IAAK,IAAI1wE,IAAIsG,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IAClG,KAAK;AACH,aAAO,CAACzwE,IAAIqG,GAAOpG,IAAIqG,GAAQD,GAAOC,CAAM;AAAA,IAC9C,KAAK;AACH,aAAO,CAAC,IAAIrG,GAAGD,IAAIqG,GAAOC,GAAQD,CAAK;AAAA,IACzC,KAAK;AACH,aAAO,CAAC,IAAIrG,GAAG,IAAIC,GAAGoG,GAAOC,CAAM;AAAA,IACrC,KAAK;AACH,aAAO,CAACrG,IAAIqG,GAAQ,IAAItG,GAAGsG,GAAQD,CAAK;AAAA,IAC1C,KAAK;AACH,aAAO,CAACrG,IAAIsG,KAAUoqE,IAAKD,IAAKxwE,GAAGqG,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,EAAG;AAAA,IAC1E,KAAK;AACH,aAAO,CAAC,IAAIzwE,IAAIoG,KAASoqE,IAAKC,IAAK1wE,IAAIsG,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IAClG,KAAK;AACH,aAAO,CAAC,IAAIzwE,GAAG,IAAIC,IAAIoG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,IAAKpqE,KAASoqE,IAAKC,EAAG;AAAA,IACjF,KAAK;AACH,aAAO,CAACzwE,GAAG,IAAID,GAAGqG,KAASoqE,IAAKC,IAAKpqE,KAAUoqE,IAAKD,EAAG;AAAA,IACzD;AACE,aAAO,CAACzwE,GAAGC,GAAGoG,GAAOC,CAAM;AAAA,EACnC;AACE,GA7UAzB,EALIsqE,IAKG,kBAAiB,KACxBtqE,EANIsqE,IAMG,kBAAiB,OACxBluE,EAPIkuE,IAOGV,IAAe,OACtBxtE,EARIkuE,IAQGT,IAAoB,OAC3BztE,EATIkuE,IASGR,IAAyB,OAChC9pE,EAVIsqE,IAUG,iBAAgB;AAVzB,IAAMyB,KAANzB;AAvprBA,IAAA7I,IAAAnG,IAAA0Q,IAAAhsB,IAAA+hB,IAAAC,IAAAiK,IAAAC,IAAA5F,IAAA0E,IAAAC,IAAAkB,IAAAC;AA2usBA,MAAMC,GAAgB;AAAA,EAYpB,YAAYlxE,GAAGC,GAAGigB,GAAaC,GAAc1a,GAAUw7D,GAAW;AAZpE,IAAAhgE,EAAA,MAAA+vE;AACE,IAAA/vE,EAAA,MAAAqlE,IAAQ,IAAI,aAAa,CAAC;AAC1B,IAAArlE,EAAA,MAAAk/D;AACA,IAAAl/D,EAAA,MAAA4vE;AACA,IAAA5vE,EAAA,MAAA4jD;AACA,IAAA5jD,EAAA,MAAA2lE;AACA,IAAA3lE,EAAA,MAAA4lE;AACA,IAAA5lE,EAAA,MAAA6vE,IAAe;AACf,IAAA7vE,EAAA,MAAA8vE,IAAa;AACb,IAAA9vE,EAAA,MAAAkqE,IAAY,IAAIgG,GAAc;AAC9B,IAAAlwE,EAAA,MAAA4uE;AACA,IAAA5uE,EAAA,MAAA6uE;AAEE,IAAAtnE,EAAA,MAAKqnE,IAAe3vD,IACpB1X,EAAA,MAAKsnE,IAAgB3vD,IACrB3X,EAAA,MAAKq8C,IAAYp/C,IACjB+C,EAAA,MAAKo+D,IAAa3F,IAClB,CAACjhE,GAAGC,CAAC,IAAIS,EAAA,MAAKswE,IAAAC,IAAL,WAAqBjxE,GAAGC;AACjC,UAAM0N,IAAOnF,EAAA,MAAK23D,IAAQ,CAAC,KAAK,KAAK,KAAK,KAAKngE,GAAGC,CAAC;AACnD,IAAAuI,EAAA,MAAKq+D,IAAU,CAAC7mE,GAAGC,CAAC,IACpBuI,EAAA,MAAKqoE,IAAS,CAAC;AAAA,MACb,MAAAljE;AAAA,MACA,QAAQpF,EAAA,MAAKs+D;AAAA,IACnB,CAAK,IACDt+D,EAAA,MAAK+9D,IAAM,IAAI34D,GAAM,CAAC;AAAA,EACxB;AAAA,EACA,eAAejT,GAAMJ,GAAO;AAC1B,IAAII,MAAS,kBACX8N,EAAA,MAAKo+D,IAAatsE;AAAA,EAEtB;AAAA,EAIA,UAAU;AACR,WAAO,CAACiO,EAAA,MAAKsoE,OAAUtoE,EAAA,MAAKsoE,IAAO,WAAW;AAAA,EAChD;AAAA,EACA,gBAAgB;AACd,WAAOtoE,EAAA,MAAKs+D,IAAQ,UAAU;AAAA,EAChC;AAAA,EACA,IAAI7mE,GAAGC,GAAG;AACR,KAACD,GAAGC,CAAC,IAAIS,EAAA,MAAKswE,IAAAC,IAAL,WAAqBjxE,GAAGC;AACjC,UAAM,CAACG,GAAIC,GAAIC,GAAIC,CAAE,IAAIgI,EAAA,MAAK+9D,IAAM,SAAS,GAAG,CAAC,GAC3CsB,IAAQ5nE,IAAIM,GACZunE,IAAQ5nE,IAAIM;AAElB,WADU,KAAK,MAAMgI,EAAA,MAAKsnE,MAAejI,GAAOr/D,EAAA,MAAKunE,MAAgBjI,CAAK,KACjE,IACA,QAETt/D,EAAA,MAAKs+D,IAAQ,KAAK7mE,GAAGC,CAAC,GAClB,MAAMG,CAAE,KACVmI,EAAA,MAAK+9D,IAAM,IAAI,CAAChmE,GAAIC,GAAIP,GAAGC,CAAC,GAAG,CAAC,GAChCsI,EAAA,MAAK43D,IAAM,KAAK,KAAK,KAAK,KAAK,KAAKngE,GAAGC,CAAC,GACjC;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MAC3B;AAAA,IACA,MAEQ,MAAMsI,EAAA,MAAK+9D,IAAM,CAAC,CAAC,KACrB/9D,EAAA,MAAK43D,IAAM,OAAO,GAAG,CAAC,GAExB53D,EAAA,MAAK+9D,IAAM,IAAI,CAAClmE,GAAIC,GAAIC,GAAIC,GAAIP,GAAGC,CAAC,GAAG,CAAC,GACxCsI,EAAA,MAAK43D,IAAM,KAAK,GAAG0F,EAAQ,mBAAmBzlE,GAAIC,GAAIC,GAAIC,GAAIP,GAAGC,CAAC,CAAC,GAC5D;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MACzB;AAAA,IACA;AAAA,EACE;AAAA,EACA,IAAID,GAAGC,GAAG;AACR,UAAMy8D,IAAS,KAAK,IAAI18D,GAAGC,CAAC;AAC5B,WAAIy8D,MAGAn0D,EAAA,MAAKs+D,IAAQ,WAAW,IACnB;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MAC3B;AAAA,IACA,IAEW;AAAA,EACT;AAAA,EACA,SAAS7mE,GAAGC,GAAGigB,GAAaC,GAAc1a,GAAU;AAClD,IAAA+C,EAAA,MAAKqnE,IAAe3vD,IACpB1X,EAAA,MAAKsnE,IAAgB3vD,IACrB3X,EAAA,MAAKq8C,IAAYp/C,IACjB,CAACzF,GAAGC,CAAC,IAAIS,EAAA,MAAKswE,IAAAC,IAAL,WAAqBjxE,GAAGC;AACjC,UAAM0N,IAAOnF,EAAA,MAAK23D,IAAQ,CAAC,KAAK,KAAK,KAAK,KAAKngE,GAAGC,CAAC;AACnD,IAAAuI,EAAA,MAAKq+D,IAAU,CAAC7mE,GAAGC,CAAC;AACpB,UAAMqoE,IAAO//D,EAAA,MAAKsoE,IAAO,GAAG,EAAE;AAC9B,WAAIvI,MACFA,EAAK,OAAO,IAAI,aAAaA,EAAK,IAAI,GACtCA,EAAK,SAAS,IAAI,aAAaA,EAAK,MAAM,IAE5C//D,EAAA,MAAKsoE,IAAO,KAAK;AAAA,MACf,MAAAljE;AAAA,MACA,QAAQpF,EAAA,MAAKs+D;AAAA,IACnB,CAAK,GACDt+D,EAAA,MAAK+9D,IAAM,IAAI34D,GAAM,CAAC,GACtBnF,EAAA,MAAKuoE,IAAa,IAClB,KAAK,UAAS,GACP;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAOxoE,EAAA,MAAKsoE,IAAO,GAAG,EAAE;AAAA,EAC1B;AAAA,EACA,eAAettE,GAAS;AACtB,WAAKgF,EAAA,MAAKsoE,OAGVtoE,EAAA,MAAKsoE,IAAO,KAAKttE,CAAO,GACxBiF,EAAA,MAAK23D,IAAQ58D,EAAQ,OACrBiF,EAAA,MAAKq+D,IAAUtjE,EAAQ,SACvBiF,EAAA,MAAKuoE,IAAa,IACX;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MACzB;AAAA,IACA,KAVaxoE,EAAA,MAAK4iE,IAAU,eAAe5nE,CAAO;AAAA,EAWhD;AAAA,EACA,oBAAoB;AAClB,QAAI,CAACgF,EAAA,MAAKsoE;AACR,aAAOtoE,EAAA,MAAK4iE,IAAU,kBAAiB;AAEzC,IAAA5iE,EAAA,MAAKsoE,IAAO,IAAG,GACfroE,EAAA,MAAKsoE,IAAe;AACpB,aAASp1E,IAAI,GAAGmL,IAAK0B,EAAA,MAAKsoE,IAAO,QAAQn1E,IAAImL,GAAInL,KAAK;AACpD,YAAM;AAAA,QACJ,MAAAiS;AAAA,QACA,QAAAgzD;AAAA,MACR,IAAUp4D,EAAA,MAAKsoE,IAAOn1E,CAAC;AACjB,MAAA8M,EAAA,MAAK23D,IAAQxyD,IACbnF,EAAA,MAAKq+D,IAAUlG,IACfn4D,EAAA,MAAKuoE,IAAa,IAClB,KAAK,UAAS;AAAA,IAChB;AACA,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,GAAGxoE,EAAA,MAAKuoE;AAAA,MAChB;AAAA,IACA;AAAA,EACE;AAAA,EACA,YAAY;AACV,UAAMM,IAASvL,EAAQ,SAASt9D,EAAA,MAAK43D,IAAM,CAAC,CAAC,GACvCkR,IAASxL,EAAQ,SAASt9D,EAAA,MAAK43D,IAAM,CAAC,CAAC;AAC7C,QAAI53D,EAAA,MAAKs+D,IAAQ,WAAW;AAC1B,aAAAr+D,EAAA,MAAKsoE,IAAe,GAAGvoE,EAAA,MAAKuoE,GAAY,MAAMM,CAAM,IAAIC,CAAM,OACvD9oE,EAAA,MAAKuoE;AAEd,QAAIvoE,EAAA,MAAKs+D,IAAQ,UAAU,GAAG;AAC5B,YAAMnrE,IAAI6M,EAAA,MAAKuoE,IAAa,YAAY,GAAG;AAC3C,MAAAtoE,EAAA,MAAKsoE,IAAe,GAAGvoE,EAAA,MAAKuoE,IAAa,MAAM,GAAGp1E,CAAC,CAAC,MAAM01E,CAAM,IAAIC,CAAM,KAC1E7oE,EAAA,MAAKuoE,IAAa;AAAA,IACpB;AACA,QAAIxoE,EAAA,MAAKs+D,IAAQ,WAAW,GAAG;AAC7B,YAAMyK,IAAUzL,EAAQ,SAASt9D,EAAA,MAAK43D,IAAM,EAAE,CAAC,GACzCoR,IAAU1L,EAAQ,SAASt9D,EAAA,MAAK43D,IAAM,EAAE,CAAC;AAC/C,aAAA33D,EAAA,MAAKsoE,IAAe,GAAGvoE,EAAA,MAAKuoE,GAAY,MAAMQ,CAAO,IAAIC,CAAO,KAChE/oE,EAAA,MAAKuoE,IAAa,KACXxoE,EAAA,MAAKuoE;AAAA,IACd;AACA,UAAMv8C,IAAS,CAAA;AACf,IAAIhsB,EAAA,MAAKwoE,QAAe,MACtBx8C,EAAO,KAAK,KAAK68C,CAAM,IAAIC,CAAM,EAAE,GACnC7oE,EAAA,MAAKuoE,IAAa;AAEpB,aAASr1E,IAAI6M,EAAA,MAAKwoE,KAAYlqE,IAAK0B,EAAA,MAAK43D,IAAM,QAAQzkE,IAAImL,GAAInL,KAAK,GAAG;AACpE,YAAM,CAAC81E,GAAKC,GAAKC,GAAKC,GAAK3xE,GAAGC,CAAC,IAAIsI,EAAA,MAAK43D,IAAM,MAAMzkE,GAAGA,IAAI,CAAC,EAAE,IAAImqE,EAAQ,QAAQ;AAClF,MAAAtxC,EAAO,KAAK,IAAIi9C,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAI3xE,CAAC,IAAIC,CAAC,EAAE;AAAA,IACtD;AACA,WAAAuI,EAAA,MAAKsoE,IAALvoE,EAAA,MAAKuoE,MAAgBv8C,EAAO,KAAK,GAAG,IACpC/rB,EAAA,MAAKuoE,IAAaxoE,EAAA,MAAK43D,IAAM,SACtB53D,EAAA,MAAKuoE;AAAA,EACd;AAAA,EACA,YAAY5wD,GAAaC,GAAc3a,GAAOmiE,GAAa;AACzD,UAAMW,IAAO//D,EAAA,MAAKsoE,IAAO,GAAG,EAAE;AAC9B,WAAAvI,EAAK,OAAO,IAAI,aAAaA,EAAK,IAAI,GACtCA,EAAK,SAAS,IAAI,aAAaA,EAAK,MAAM,GAC1C//D,EAAA,MAAK4iE,IAAU,MAAM5iE,EAAA,MAAKsoE,KAAQ3wD,GAAaC,GAAc3a,GAAO+C,EAAA,MAAKs8C,KAAWt8C,EAAA,MAAKq+D,KAAYe,CAAW,GAChHn/D,EAAA,MAAK89D,IAAQ,OACb99D,EAAA,MAAK23D,IAAQ,OACb33D,EAAA,MAAKqoE,IAAS,OACdroE,EAAA,MAAKsoE,IAAe,OACbvoE,EAAA,MAAK4iE;AAAA,EACd;AAAA,EACA,IAAI,uBAAuB;AACzB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,SAAS;AAAA,MACjB;AAAA,MACM,WAAW;AAAA,QACT,MAAM;AAAA,MACd;AAAA,MACM,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,IACvB;AAAA,EACE;AACF;AArME7E,KAAA,eACAnG,KAAA,eACA0Q,KAAA,eACAhsB,KAAA,eACA+hB,KAAA,eACAC,KAAA,eACAiK,KAAA,eACAC,KAAA,eACA5F,KAAA,eACA0E,KAAA,eACAC,KAAA,eAXFkB,KAAA,eA+BEC,KAAe,SAACjxE,GAAGC,GAAG;AACpB,SAAO4lE,EAAQ,gBAAgB7lE,GAAGC,GAAGsI,EAAA,MAAKsnE,KAActnE,EAAA,MAAKunE,KAAevnE,EAAA,MAAKs8C,GAAS;AAC5F;AA5wsBF,IAAAihB,IAAA8L,IAAAzL,IAAA0K,IAAAhB,IAAAC,IAAA+B,IAAAhtB,IAAA+hB,IAAAkL,IAAAC,IAAAC,IAAAC,IAAAzF;AAk7sBA,MAAM2E,WAAuBtL,EAAQ;AAAA,EAArC;AAAA;AAAA,IAAA5kE,EAAA,MAAA6wE;AACE,IAAA7wE,EAAA,MAAA6kE;AACA,IAAA7kE,EAAA,MAAA2wE,IAAmB;AACnB,IAAA3wE,EAAA,MAAAklE;AACA,IAAAllE,EAAA,MAAA4vE;AACA,IAAA5vE,EAAA,MAAA4uE;AACA,IAAA5uE,EAAA,MAAA6uE;AACA,IAAA7uE,EAAA,MAAA4wE;AACA,IAAA5wE,EAAA,MAAA4jD;AACA,IAAA5jD,EAAA,MAAA2lE;AAAA;AAAA,EACA,MAAMl5D,GAAOwS,GAAaC,GAAc+J,GAAazkB,GAAUw7D,GAAW0G,GAAa;AACrF,IAAAn/D,EAAA,MAAKqnE,IAAe3vD,IACpB1X,EAAA,MAAKsnE,IAAgB3vD,IACrB3X,EAAA,MAAKqpE,IAAe3nD,IACpB1hB,EAAA,MAAKq8C,IAAYp/C,IACjB+C,EAAA,MAAKo+D,IAAa3F,IAClBz4D,EAAA,MAAK29D,IAAewB,KAAe,IACnCn/D,EAAA,MAAKqoE,IAASnjE,IACdhN,EAAA,MAAKoxE,IAAAG,IAAL;AAAA,EACF;AAAA,EACA,IAAI,YAAY;AACd,WAAO1pE,EAAA,MAAKq+D;AAAA,EACd;AAAA,EACA,eAAerjE,GAAS;AACtB,WAAAgF,EAAA,MAAKsoE,IAAO,KAAKttE,CAAO,GACjB;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MACzB;AAAA,IACA;AAAA,EACE;AAAA,EACA,oBAAoB;AAClB,WAAAgF,EAAA,MAAKsoE,IAAO,IAAG,GACR;AAAA,MACL,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,MACzB;AAAA,IACA;AAAA,EACE;AAAA,EACA,YAAY;AACV,UAAMt8C,IAAS,CAAA;AACf,eAAW;AAAA,MACT,MAAA5mB;AAAA,IACN,KAASpF,EAAA,MAAKsoE,KAAQ;AAEhB,UADAt8C,EAAO,KAAK,IAAIsxC,EAAQ,SAASl4D,EAAK,CAAC,CAAC,CAAC,IAAIk4D,EAAQ,SAASl4D,EAAK,CAAC,CAAC,CAAC,EAAE,GACpEA,EAAK,WAAW,GAAG;AACrB,QAAA4mB,EAAO,KAAK,GAAG;AACf;AAAA,MACF;AACA,UAAI5mB,EAAK,WAAW,MAAM,MAAMA,EAAK,CAAC,CAAC,GAAG;AACxC,QAAA4mB,EAAO,KAAK,IAAIsxC,EAAQ,SAASl4D,EAAK,EAAE,CAAC,CAAC,IAAIk4D,EAAQ,SAASl4D,EAAK,EAAE,CAAC,CAAC,EAAE;AAC1E;AAAA,MACF;AACA,eAASjS,IAAI,GAAGmL,IAAK8G,EAAK,QAAQjS,IAAImL,GAAInL,KAAK,GAAG;AAChD,cAAM,CAAC81E,GAAKC,GAAKC,GAAKC,GAAK3xE,GAAGC,CAAC,IAAI0N,EAAK,SAASjS,GAAGA,IAAI,CAAC,EAAE,IAAImqE,EAAQ,QAAQ;AAC/E,QAAAtxC,EAAO,KAAK,IAAIi9C,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAIC,CAAG,IAAI3xE,CAAC,IAAIC,CAAC,EAAE;AAAA,MACtD;AAAA,IACF;AACA,WAAOs0B,EAAO,KAAK,EAAE;AAAA,EACvB;AAAA,EACA,UAAU,CAACnL,GAAOC,GAAOjf,GAAWC,CAAU,GAAG2X,GAAc;AAC7D,UAAMkwD,IAAkB,CAAA,GAClBC,IAAmB,CAAA,GACnB,CAACnyE,GAAGC,GAAGoG,GAAOC,CAAM,IAAI5F,EAAA,MAAKoxE,IAAAE,IAAL;AAC9B,QAAIhyD,GAAIC,GAAI8lD,GAAIC,GAAI5lE,GAAIC,GAAIC,GAAIC,GAAI6xE;AACpC,YAAQ7pE,EAAA,MAAKs8C,KAAS;AAAA,MACpB,KAAK;AACH,QAAAutB,IAAYvM,EAAQ,UACpB7lD,IAAKoJ,GACLnJ,IAAKoJ,IAAQhf,GACb07D,IAAK37D,GACL47D,IAAK,CAAC37D,GACNjK,IAAKgpB,IAAQppB,IAAIoK,GACjB/J,IAAKgpB,KAAS,IAAIppB,IAAIqG,KAAU+D,GAChC/J,IAAK8oB,KAASppB,IAAIqG,KAAS+D,GAC3B7J,IAAK8oB,KAAS,IAAIppB,KAAKoK;AACvB;AAAA,MACF,KAAK;AACH,QAAA+nE,IAAYvM,EAAQ,iBACpB7lD,IAAKoJ,GACLnJ,IAAKoJ,GACL08C,IAAK37D,GACL47D,IAAK37D,GACLjK,IAAKgpB,IAAQnpB,IAAImK,GACjB/J,IAAKgpB,IAAQrpB,IAAIqK,GACjB/J,IAAK8oB,KAASnpB,IAAIqG,KAAU8D,GAC5B7J,IAAK8oB,KAASrpB,IAAIqG,KAASgE;AAC3B;AAAA,MACF,KAAK;AACH,QAAA+nE,IAAYvM,EAAQ,UACpB7lD,IAAKoJ,IAAQhf,GACb6V,IAAKoJ,GACL08C,IAAK,CAAC37D,GACN47D,IAAK37D,GACLjK,IAAKgpB,KAAS,IAAIppB,IAAIqG,KAAS+D,GAC/B/J,IAAKgpB,IAAQppB,IAAIoK,GACjB/J,IAAK8oB,KAAS,IAAIppB,KAAKoK,GACvB7J,IAAK8oB,KAASppB,IAAIqG,KAAU+D;AAC5B;AAAA,MACF,KAAK;AACH,QAAA+nE,IAAYvM,EAAQ,iBACpB7lD,IAAKoJ,IAAQhf,GACb6V,IAAKoJ,IAAQhf,GACb07D,IAAK,CAAC37D,GACN47D,IAAK,CAAC37D,GACNjK,IAAKgpB,KAAS,IAAInpB,IAAIqG,KAAU8D,GAChC/J,IAAKgpB,KAAS,IAAIrpB,IAAIqG,KAASgE,GAC/B/J,IAAK8oB,KAAS,IAAInpB,KAAKmK,GACvB7J,IAAK8oB,KAAS,IAAIrpB,KAAKqK;AACvB;AAAA,IACR;AACI,eAAW;AAAA,MACT,MAAAsD;AAAA,MACA,QAAAgzD;AAAA,IACN,KAASp4D,EAAA,MAAKsoE;AACR,MAAAqB,EAAgB,KAAKE,EAAUzkE,GAAMqS,GAAIC,GAAI8lD,GAAIC,GAAIhkD,IAAe,IAAI,MAAMrU,EAAK,MAAM,IAAI,IAAI,CAAC,GAClGwkE,EAAiB,KAAKC,EAAUzR,GAAQ3gD,GAAIC,GAAI8lD,GAAIC,GAAIhkD,IAAe,IAAI,MAAM2+C,EAAO,MAAM,IAAI,IAAI,CAAC;AAEzG,WAAO;AAAA,MACL,OAAOuR;AAAA,MACP,QAAQC;AAAA,MACR,MAAM,CAAC/xE,GAAIC,GAAIC,GAAIC,CAAE;AAAA,IAC3B;AAAA,EACE;AAAA,EACA,OAAO,YAAY6oB,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa;AAAA,IACnE,OAAO;AAAA,MACL,OAAAj6D;AAAA,MACA,QAAAizD;AAAA,IACN;AAAA,IACI,UAAAl7D;AAAA,IACA,WAAAw7D;AAAA,EACJ,GAAK;AACD,UAAMoR,IAAW,CAAA;AACjB,QAAIryD,GAAIC,GAAI8lD,GAAIC,GAAIoM;AACpB,YAAQ3sE,GAAQ;AAAA,MACd,KAAK;AACH,QAAA2sE,IAAYvM,EAAQ,UACpB7lD,IAAK,CAACoJ,IAAQhf,GACd6V,IAAKoJ,IAAQhf,IAAa,GAC1B07D,IAAK,IAAI37D,GACT47D,IAAK,KAAK37D;AACV;AAAA,MACF,KAAK;AACH,QAAA+nE,IAAYvM,EAAQ,iBACpB7lD,IAAK,CAACqJ,IAAQhf,GACd4V,IAAK,CAACmJ,IAAQhf,GACd27D,IAAK,IAAI17D,GACT27D,IAAK,IAAI57D;AACT;AAAA,MACF,KAAK;AACH,QAAAgoE,IAAYvM,EAAQ,UACpB7lD,IAAKoJ,IAAQhf,IAAY,GACzB6V,IAAK,CAACoJ,IAAQhf,GACd07D,IAAK,KAAK37D,GACV47D,IAAK,IAAI37D;AACT;AAAA,MACF,KAAK;AACH,QAAA+nE,IAAYvM,EAAQ,iBACpB7lD,IAAKqJ,IAAQhf,IAAa,GAC1B4V,IAAKmJ,IAAQhf,IAAY,GACzB27D,IAAK,KAAK17D,GACV27D,IAAK,KAAK57D;AACV;AAAA,IACR;AACI,QAAI,CAACsD,GAAO;AACV,MAAAA,IAAQ,CAAA;AACR,iBAAW6f,KAASozC,GAAQ;AAC1B,cAAM2R,IAAM/kD,EAAM;AAClB,YAAI+kD,MAAQ,GAAG;AACb,UAAA5kE,EAAM,KAAK,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK6f,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC,CAAC;AACrE;AAAA,QACF;AACA,YAAI+kD,MAAQ,GAAG;AACb,UAAA5kE,EAAM,KAAK,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK6f,EAAM,CAAC,GAAGA,EAAM,CAAC,GAAG,KAAK,KAAK,KAAK,KAAKA,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC,CAAC,CAAC;AAC7G;AAAA,QACF;AACA,cAAM5f,IAAO,IAAI,aAAa,KAAK2kE,IAAM,EAAE;AAC3C,QAAA5kE,EAAM,KAAKC,CAAI;AACf,YAAI,CAACvN,GAAIC,GAAIC,GAAIC,CAAE,IAAIgtB,EAAM,SAAS,GAAG,CAAC;AAC1C,QAAA5f,EAAK,IAAI,CAAC,KAAK,KAAK,KAAK,KAAKvN,GAAIC,CAAE,GAAG,CAAC;AACxC,iBAAS3E,IAAI,GAAGA,IAAI42E,GAAK52E,KAAK,GAAG;AAC/B,gBAAMsE,IAAIutB,EAAM7xB,CAAC,GACXuE,IAAIstB,EAAM7xB,IAAI,CAAC;AACrB,UAAAiS,EAAK,IAAIk4D,EAAQ,mBAAmBzlE,GAAIC,GAAIC,GAAIC,GAAIP,GAAGC,CAAC,IAAIvE,IAAI,KAAK,CAAC,GACtE,CAAC0E,GAAIC,GAAIC,GAAIC,CAAE,IAAI,CAACD,GAAIC,GAAIP,GAAGC,CAAC;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AACA,aAASvE,IAAI,GAAGmL,IAAK6G,EAAM,QAAQhS,IAAImL,GAAInL;AACzC,MAAA22E,EAAS,KAAK;AAAA,QACZ,MAAMD,EAAU1kE,EAAMhS,CAAC,EAAE,IAAI,CAAAsE,MAAKA,KAAK,GAAG,GAAGggB,GAAIC,GAAI8lD,GAAIC,CAAE;AAAA,QAC3D,QAAQoM,EAAUzR,EAAOjlE,CAAC,EAAE,IAAI,CAAAsE,MAAKA,KAAK,GAAG,GAAGggB,GAAIC,GAAI8lD,GAAIC,CAAE;AAAA,MACtE,CAAO;AAEH,UAAM+E,IAAW,IAAI,KAAK,UAAU,YAAW;AAC/C,WAAAA,EAAS,MAAMsH,GAAUjoE,GAAWC,GAAY,GAAG5E,GAAUw7D,GAAW0G,CAAW,GAC5EoD;AAAA,EACT;AAAA,EAsCA,IAAI,MAAM;AACR,WAAOxiE,EAAA,MAAKu9D;AAAA,EACd;AAAA,EACA,eAAeprE,GAAMJ,GAAO;AAC1B,WAAII,MAAS,iBACJgG,EAAA,MAAKoxE,IAAAtF,IAAL,WAAsBlyE,KAExB;AAAA,EACT;AAAA,EAaA,uBAAuB,CAAC+L,GAAOC,CAAM,GAAGd,GAAO;AAC7C,UAAM,CAAC+sE,GAAYC,CAAU,IAAI9xE,EAAA,MAAKoxE,IAAAC,IAAL;AACjC,IAAAvpE,EAAA,MAAKqnE,IAAexpE,IACpBmC,EAAA,MAAKsnE,IAAgBxpE,IACrBkC,EAAA,MAAKqpE,IAAersE;AACpB,UAAM,CAACitE,GAAYC,CAAU,IAAIhyE,EAAA,MAAKoxE,IAAAC,IAAL,YAC3BY,IAAcF,IAAaF,GAC3BK,IAAcF,IAAaF,GAC3Bx+C,IAAOzrB,EAAA,MAAKu9D;AAClB,WAAA9xC,EAAK,CAAC,KAAK2+C,GACX3+C,EAAK,CAAC,KAAK4+C,GACX5+C,EAAK,CAAC,KAAK,IAAI2+C,GACf3+C,EAAK,CAAC,KAAK,IAAI4+C,GACR5+C;AAAA,EACT;AAAA,EACA,eAAevuB,GAAU;AACvB,WAAA+C,EAAA,MAAKopE,IAAmBnsE,IACjB;AAAA,MACL,MAAM;AAAA,QACJ,WAAW,KAAK;AAAA,MACxB;AAAA,IACA;AAAA,EACE;AAAA,EACA,IAAI,UAAU;AACZ,WAAO8C,EAAA,MAAKu9D,IAAM,IAAID,EAAQ,QAAQ,EAAE,KAAK,GAAG;AAAA,EAClD;AAAA,EACA,IAAI,oBAAoB;AACtB,UAAM,CAAC7lE,GAAGC,CAAC,IAAIsI,EAAA,MAAKu9D;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,SAAS,KAAK;AAAA,MACtB;AAAA,MACM,MAAM;AAAA,QACJ,oBAAoB,GAAGD,EAAQ,SAAS7lE,CAAC,CAAC,IAAI6lE,EAAQ,SAAS5lE,CAAC,CAAC;AAAA,MACzE;AAAA,IACA;AAAA,EACE;AAAA,EACA,IAAI,oBAAoB;AACtB,UAAM,KAAIoG,GAAOC,CAAM,IAAIiC,EAAA,MAAKu9D;AAChC,QAAIxmE,IAAI,GACNvC,IAAI,GACJwC,IAAI,GACJ,IAAI,GACJ0I,IAAI,GACJ4B,IAAI;AACN,YAAQtB,EAAA,MAAKqpE,KAAgB;AAAA,MAC3B,KAAK;AACH,QAAA70E,IAAIuJ,IAASD,GACb9G,IAAI,CAAC8G,IAAQC,GACb2B,IAAI5B;AACJ;AAAA,MACF,KAAK;AACH,QAAA/G,IAAI,IACJ,IAAI,IACJ2I,IAAI5B,GACJwD,IAAIvD;AACJ;AAAA,MACF,KAAK;AACH,QAAAvJ,IAAI,CAACuJ,IAASD,GACd9G,IAAI8G,IAAQC,GACZuD,IAAIvD;AACJ;AAAA,MACF;AACE,eAAO;AAAA,IACf;AACI,WAAO,UAAUhH,CAAC,IAAIvC,CAAC,IAAIwC,CAAC,IAAI,CAAC,IAAIsmE,EAAQ,SAAS59D,CAAC,CAAC,IAAI49D,EAAQ,SAASh8D,CAAC,CAAC;AAAA,EACjF;AAAA,EACA,6BAA6B,CAAC6V,GAAMC,GAAMgN,GAAUC,CAAS,GAAG;AAC9D,UAAM,CAACimD,GAASC,CAAO,IAAIpyE,EAAA,MAAKoxE,IAAAC,IAAL,YACrB,CAAC/xE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAKu9D;AACnC,QAAI,KAAK,IAAIz/D,IAAQwsE,CAAO,KAAKhN,EAAQ,aAAa,KAAK,IAAIv/D,IAASwsE,CAAO,KAAKjN,EAAQ,WAAW;AACrG,YAAM7lD,IAAKN,IAAOiN,IAAW,KAAK3sB,IAAIqG,IAAQ,IACxC4Z,IAAKN,IAAOiN,IAAY,KAAK3sB,IAAIqG,IAAS;AAChD,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,oBAAoB,GAAGu/D,EAAQ,SAASnmD,CAAI,CAAC,IAAImmD,EAAQ,SAASlmD,CAAI,CAAC;AAAA,UACvE,WAAW,GAAG,KAAK,iBAAiB,cAAcK,CAAE,IAAIC,CAAE;AAAA,QACpE;AAAA,MACA;AAAA,IACI;AACA,UAAM8yD,KAAOpmD,IAAW,IAAIkmD,MAAYxsE,IAAQ,IAAIwsE,IAC9CG,KAAOpmD,IAAY,IAAIkmD,MAAYxsE,IAAS,IAAIwsE,IAChDG,IAAM5sE,IAAQsmB,GACdumD,IAAM5sE,IAASsmB;AACrB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,oBAAoB,GAAGi5C,EAAQ,SAAS7lE,CAAC,CAAC,IAAI6lE,EAAQ,SAAS5lE,CAAC,CAAC;AAAA,QACjE,WAAW,GAAG,KAAK,iBAAiB,UAAUgzE,CAAG,IAAIC,CAAG,eAAoBrN,EAAQ,SAASgN,CAAO,CAAC,IAAIhN,EAAQ,SAASiN,CAAO,CAAC,WAAWC,CAAG,IAAIC,CAAG,eAAoBnN,EAAQ,SAAS,CAACgN,CAAO,CAAC,IAAIhN,EAAQ,SAAS,CAACiN,CAAO,CAAC;AAAA,MAC3O;AAAA,IACA;AAAA,EACE;AAAA,EACA,4BAA4B,CAACpzD,GAAMC,GAAMgN,GAAUC,CAAS,GAAG;AAC7D,UAAM,CAACimD,GAASC,CAAO,IAAIpyE,EAAA,MAAKoxE,IAAAC,IAAL,YACrB/9C,IAAOzrB,EAAA,MAAKu9D,KACZ,CAAC9lE,GAAGC,GAAGoG,GAAOC,CAAM,IAAI0tB;AAK9B,QAJAA,EAAK,CAAC,IAAItU,GACVsU,EAAK,CAAC,IAAIrU,GACVqU,EAAK,CAAC,IAAIrH,GACVqH,EAAK,CAAC,IAAIpH,GACN,KAAK,IAAIvmB,IAAQwsE,CAAO,KAAKhN,EAAQ,aAAa,KAAK,IAAIv/D,IAASwsE,CAAO,KAAKjN,EAAQ,WAAW;AACrG,YAAM7lD,IAAKN,IAAOiN,IAAW,KAAK3sB,IAAIqG,IAAQ,IACxC4Z,IAAKN,IAAOiN,IAAY,KAAK3sB,IAAIqG,IAAS;AAChD,iBAAW;AAAA,QACT,MAAAqH;AAAA,QACA,QAAAgzD;AAAA,MACR,KAAWp4D,EAAA,MAAKsoE;AACR,QAAAhL,EAAQ,WAAWl4D,GAAMqS,GAAIC,GAAItS,CAAI,GACrCk4D,EAAQ,WAAWlF,GAAQ3gD,GAAIC,GAAI0gD,CAAM;AAE3C,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,SAAS,KAAK;AAAA,QACxB;AAAA,QACQ,MAAM;AAAA,UACJ,oBAAoB,GAAGkF,EAAQ,SAASnmD,CAAI,CAAC,IAAImmD,EAAQ,SAASlmD,CAAI,CAAC;AAAA,UACvE,WAAW,KAAK,qBAAqB;AAAA,UACrC,GAAG,KAAK,UAAS;AAAA,QAC3B;AAAA,MACA;AAAA,IACI;AACA,UAAMozD,KAAOpmD,IAAW,IAAIkmD,MAAYxsE,IAAQ,IAAIwsE,IAC9CG,KAAOpmD,IAAY,IAAIkmD,MAAYxsE,IAAS,IAAIwsE,IAChD9yD,IAAK,CAAC+yD,KAAO/yE,IAAI6yE,KAAWnzD,IAAOmzD,GACnC5yD,IAAK,CAAC+yD,KAAO/yE,IAAI6yE,KAAWnzD,IAAOmzD;AACzC,QAAIC,MAAQ,KAAKC,MAAQ,KAAKhzD,MAAO,KAAKC,MAAO;AAC/C,iBAAW;AAAA,QACT,MAAAtS;AAAA,QACA,QAAAgzD;AAAA,MACR,KAAWp4D,EAAA,MAAKsoE;AACR,QAAAhL,EAAQ,SAASl4D,GAAMqS,GAAIC,GAAI8yD,GAAKC,GAAKrlE,CAAI,GAC7Ck4D,EAAQ,SAASlF,GAAQ3gD,GAAIC,GAAI8yD,GAAKC,GAAKrS,CAAM;AAGrD,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,SAAS,KAAK;AAAA,MACtB;AAAA,MACM,MAAM;AAAA,QACJ,oBAAoB,GAAGkF,EAAQ,SAASnmD,CAAI,CAAC,IAAImmD,EAAQ,SAASlmD,CAAI,CAAC;AAAA,QACvE,WAAW,KAAK,qBAAqB;AAAA,QACrC,GAAG,KAAK,UAAS;AAAA,MACzB;AAAA,IACA;AAAA,EACE;AAAA,EACA,+BAA+B,CAACD,GAAMC,CAAI,GAAG4D,GAAkB;AAC7D,UAAM,CAAC4vD,GAAgBC,CAAe,IAAI7vD,GACpCyQ,IAAOzrB,EAAA,MAAKu9D,KACZ9lD,IAAKN,IAAOsU,EAAK,CAAC,GAClB/T,IAAKN,IAAOqU,EAAK,CAAC;AACxB,QAAIzrB,EAAA,MAAKsnE,QAAiBsD,KAAkB5qE,EAAA,MAAKunE,QAAkBsD;AACjE,iBAAW;AAAA,QACT,MAAAzlE;AAAA,QACA,QAAAgzD;AAAA,MACR,KAAWp4D,EAAA,MAAKsoE;AACR,QAAAhL,EAAQ,WAAWl4D,GAAMqS,GAAIC,GAAItS,CAAI,GACrCk4D,EAAQ,WAAWlF,GAAQ3gD,GAAIC,GAAI0gD,CAAM;AAAA,SAEtC;AACL,YAAMoF,IAAKx9D,EAAA,MAAKsnE,MAAesD,GACzBnN,IAAKz9D,EAAA,MAAKunE,MAAgBsD;AAChC,MAAA5qE,EAAA,MAAKqnE,IAAesD,IACpB3qE,EAAA,MAAKsnE,IAAgBsD;AACrB,iBAAW;AAAA,QACT,MAAAzlE;AAAA,QACA,QAAAgzD;AAAA,MACR,KAAWp4D,EAAA,MAAKsoE;AACR,QAAAhL,EAAQ,SAASl4D,GAAMqS,GAAIC,GAAI8lD,GAAIC,GAAIr4D,CAAI,GAC3Ck4D,EAAQ,SAASlF,GAAQ3gD,GAAIC,GAAI8lD,GAAIC,GAAIrF,CAAM;AAEjD,MAAA3sC,EAAK,CAAC,KAAK+xC,GACX/xC,EAAK,CAAC,KAAKgyC;AAAA,IACb;AACA,WAAAhyC,EAAK,CAAC,IAAItU,GACVsU,EAAK,CAAC,IAAIrU,GACH;AAAA,MACL,MAAM;AAAA,QACJ,SAAS,KAAK;AAAA,MACtB;AAAA,MACM,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,QACjB,oBAAoB,GAAGkmD,EAAQ,SAASnmD,CAAI,CAAC,IAAImmD,EAAQ,SAASlmD,CAAI,CAAC;AAAA,MAC/E;AAAA,IACA;AAAA,EACE;AAAA,EACA,IAAI,uBAAuB;AACzB,UAAMqU,IAAOzrB,EAAA,MAAKu9D;AAClB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,SAAS,KAAK;AAAA,MACtB;AAAA,MACM,WAAW;AAAA,QACT,MAAM;AAAA,MACd;AAAA,MACM,MAAM;AAAA,QACJ,GAAG,KAAK,UAAS;AAAA,QACjB,oBAAoB,GAAGD,EAAQ,SAAS7xC,EAAK,CAAC,CAAC,CAAC,IAAI6xC,EAAQ,SAAS7xC,EAAK,CAAC,CAAC,CAAC;AAAA,QAC7E,WAAW,KAAK,qBAAqB;AAAA,MAC7C;AAAA,MACM,MAAAA;AAAA,IACN;AAAA,EACE;AACF;AAxcE8xC,KAAA,eACA8L,KAAA,eACAzL,KAAA,eACA0K,KAAA,eACAhB,KAAA,eACAC,KAAA,eACA+B,KAAA,eACAhtB,KAAA,eACA+hB,KAAA,eATFkL,KAAA,eAsMEC,KAAoB,SAAC9Q,IAAY14D,EAAA,MAAKq+D,KAAY;AAChD,QAAMyM,IAAS9qE,EAAA,MAAK49D,MAAelF,IAAY,IAAI14D,EAAA,MAAKspE;AACxD,SAAOtpE,EAAA,MAAKs8C,MAAY,QAAQ,IAAI,CAACwuB,IAAS9qE,EAAA,MAAKsnE,KAAcwD,IAAS9qE,EAAA,MAAKunE,GAAa,IAAI,CAACuD,IAAS9qE,EAAA,MAAKunE,KAAeuD,IAAS9qE,EAAA,MAAKsnE,GAAY;AAC1J,GACAmC,KAAoB,WAAG;AACrB,QAAM,CAAChyE,GAAGC,GAAGoG,GAAOC,CAAM,IAAIiC,EAAA,MAAKu9D,KAC7B,CAAC+M,GAASC,CAAO,IAAIpyE,EAAA,MAAKoxE,IAAAC,IAAL,WAA0B;AACrD,SAAO,CAAC/xE,IAAI6yE,GAAS5yE,IAAI6yE,GAASzsE,IAAQ,IAAIwsE,GAASvsE,IAAS,IAAIwsE,CAAO;AAC7E,GACAb,KAAY,WAAG;AACb,QAAMj+C,IAAOxrB,EAAA,MAAKs9D,IAAQ,IAAI,aAAa,CAAC,OAAU,OAAU,QAAW,MAAS,CAAC;AACrF,aAAW;AAAA,IACT,MAAAn4D;AAAA,EACN,KAASpF,EAAA,MAAKsoE,KAAQ;AAChB,QAAIljE,EAAK,UAAU,IAAI;AACrB,eAASjS,IAAI,GAAGmL,IAAK8G,EAAK,QAAQjS,IAAImL,GAAInL,KAAK;AAC7C,QAAAmB,EAAK,iBAAiB8Q,EAAKjS,CAAC,GAAGiS,EAAKjS,IAAI,CAAC,GAAGs4B,CAAI;AAElD;AAAA,IACF;AACA,QAAIrjB,IAAQhD,EAAK,CAAC,GAChB+C,IAAQ/C,EAAK,CAAC;AAChB,aAASjS,IAAI,GAAGmL,IAAK8G,EAAK,QAAQjS,IAAImL,GAAInL,KAAK,GAAG;AAChD,YAAM,CAAC81E,GAAKC,GAAKC,GAAKC,GAAK3xE,GAAGC,CAAC,IAAI0N,EAAK,SAASjS,GAAGA,IAAI,CAAC;AACzD,MAAAmB,EAAK,kBAAkB8T,GAAOD,GAAO8gE,GAAKC,GAAKC,GAAKC,GAAK3xE,GAAGC,GAAG+zB,CAAI,GACnErjB,IAAQ3Q,GACR0Q,IAAQzQ;AAAA,IACV;AAAA,EACF;AACA,QAAM,CAAC4yE,GAASC,CAAO,IAAIpyE,EAAA,MAAKoxE,IAAAC,IAAL;AAC3B,EAAA/9C,EAAK,CAAC,IAAI5xB,GAAU4xB,EAAK,CAAC,IAAI6+C,GAAS,GAAG,CAAC,GAC3C7+C,EAAK,CAAC,IAAI5xB,GAAU4xB,EAAK,CAAC,IAAI8+C,GAAS,GAAG,CAAC,GAC3C9+C,EAAK,CAAC,IAAI5xB,GAAU4xB,EAAK,CAAC,IAAI6+C,GAAS,GAAG,CAAC,GAC3C7+C,EAAK,CAAC,IAAI5xB,GAAU4xB,EAAK,CAAC,IAAI8+C,GAAS,GAAG,CAAC,GAC3C9+C,EAAK,CAAC,KAAKA,EAAK,CAAC,GACjBA,EAAK,CAAC,KAAKA,EAAK,CAAC;AACnB,GAUAw4C,KAAgB,SAACvL,GAAW;AAC1B,QAAM,CAACsR,GAAYC,CAAU,IAAI9xE,EAAA,MAAKoxE,IAAAC,IAAL;AACjC,EAAAvpE,EAAA,MAAKo+D,IAAa3F;AAClB,QAAM,CAACwR,GAAYC,CAAU,IAAIhyE,EAAA,MAAKoxE,IAAAC,IAAL,YAC3B,CAACY,GAAaC,CAAW,IAAI,CAACH,IAAaF,GAAYG,IAAaF,CAAU,GAC9Ex+C,IAAOzrB,EAAA,MAAKu9D;AAClB,SAAA9xC,EAAK,CAAC,KAAK2+C,GACX3+C,EAAK,CAAC,KAAK4+C,GACX5+C,EAAK,CAAC,KAAK,IAAI2+C,GACf3+C,EAAK,CAAC,KAAK,IAAI4+C,GACR5+C;AACT;AAmNF,MAAMs/C,WAA0BhF,GAAe;AAAA,EAC7C,YAAYiF,GAAkB;AAC5B,UAAK,GACL,KAAK,kBAAkBA,GACvB,MAAM,iBAAiB;AAAA,MACrB,MAAM;AAAA,MACN,QAAQ3kD,GAAiB;AAAA,MACzB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IAC3B,CAAK;AAAA,EACH;AAAA,EACA,kBAAkBl0B,GAAMJ,GAAO;AAC7B,IAAII,MAAS,mBACXJ,UAAU,KAAK,cAAc,IAC7BA,KAAS,KAAK,gBAAgB,YAEhC,MAAM,kBAAkBI,GAAMJ,CAAK;AAAA,EACrC;AAAA,EACA,QAAQ;AACN,UAAM+2B,IAAQ,IAAIiiD,GAAkB,KAAK,eAAe;AACxD,WAAAjiD,EAAM,UAAU,IAAI,GACbA;AAAA,EACT;AACF;AA95tBA,IAAAmiD,IAAAjP;AA+5tBA,MAAMkP,KAAN,MAAMA,WAAkB7C,GAAc;AAAA,EAIpC,YAAY1xD,GAAQ;AAClB,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AARL,IAAAje,EAAA,MAAAuyE;AASI,SAAK,uBAAuB,IAC5B,KAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,OAAO,WAAW7xD,GAAMpR,GAAW;AACjC,IAAAqe,GAAiB,WAAWjN,GAAMpR,CAAS,GAC3C,KAAK,yBAAyB,IAAI+iE,GAAkB/iE,EAAU,cAAc;AAAA,EAC9E;AAAA,EACA,OAAO,yBAAyB5W,GAAS;AACvC,UAAM03B,IAAQ,KAAK,uBAAuB,MAAK;AAC/C,WAAAA,EAAM,iBAAiB13B,CAAO,GACvB03B;AAAA,EACT;AAAA,EACA,WAAW,0BAA0B;AACnC,WAAO;AAAA,EACT;AAAA,EACA,WAAW,WAAW;AACpB,WAAOl3B,EAAO,MAAM,YAAY,oBAAI,IAAI,CAAC,CAACjC,GAA2B,eAAe,cAAc,GAAG,CAACA,GAA2B,WAAW,QAAQ,GAAG,CAACA,GAA2B,aAAa,gBAAgB,CAAC,CAAC,CAAC;AAAA,EACrN;AAAA,EACA,OAAO,qBAAqB8H,GAAGC,GAAGigB,GAAaC,GAAc1a,GAAU;AACrE,WAAO,IAAIyrE,GAAgBlxE,GAAGC,GAAGigB,GAAaC,GAAc1a,GAAU,KAAK,uBAAuB,cAAc,CAAC;AAAA,EACnH;AAAA,EACA,OAAO,gBAAgB2jB,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa95D,GAAM;AAC7E,WAAOsjE,GAAe,YAAY/nD,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa95D,CAAI;AAAA,EAC1F;AAAA,EACA,aAAa,YAAYA,GAAMrJ,GAAQ+L,GAAW;AAChD,QAAI8tC,IAAc;AAClB,QAAIxwC,aAAgB8mD,IAAsB;AACxC,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,UAAAmB;AAAA,UACA,MAAA33D;AAAA,UACA,UAAAsH;AAAA,UACA,IAAAnC;AAAA,UACA,OAAA+F;AAAA,UACA,SAAAsC;AAAA,UACA,aAAa;AAAA,YACX,UAAUs1D;AAAA,UACtB;AAAA,UACU,UAAAriD;AAAA,UACA,UAAA4E;AAAA,UACA,aAAA3E;AAAA,UACA,cAAAiM;AAAA,UACA,kBAAAC;AAAA,QACV;AAAA,QACQ,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,YAAA7O;AAAA,UACZ;AAAA,QACA;AAAA,MACA,IAAUrO;AACJ,MAAAwwC,IAAcxwC,IAAO;AAAA,QACnB,gBAAgB5V,EAAqB;AAAA,QACrC,OAAO,MAAM,KAAKoR,CAAK;AAAA,QACvB,WAAA43D;AAAA,QACA,SAAAt1D;AAAA,QACA,OAAO;AAAA,UACL,QAAQmqD;AAAA,QAClB;AAAA,QACQ,OAAO;AAAA,QACP,WAAW55C,IAAa;AAAA,QACxB,MAAM/d,EAAK,MAAM,CAAC;AAAA,QAClB,UAAAsH;AAAA,QACA,qBAAqBnC;AAAA,QACrB,IAAAA;AAAA,QACA,SAAS;AAAA,QACT,UAAAsb;AAAA,QACA,UAAA4E;AAAA,QACA,UAAS3E,KAAA,gBAAAA,EAAa,QAAO;AAAA,QAC7B,cAAAiM;AAAA,QACA,kBAAAC;AAAA,MACR;AAAA,IACI;AACA,UAAM/b,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS;AAC9D,WAAAvB,EAAO,eAAeqvC,GAClBxwC,EAAK,WACPmB,EAAO,eAAenB,CAAI,GAErBmB;AAAA,EACT;AAAA,EACA,IAAI,iBAAiB;AACnB,gBAAK,iBAAL,KAAK,eAAiB,IAAI8jD,GAAiB,IAAI,IACxC,CAAC,CAAC,eAAe,KAAK,YAAY,CAAC;AAAA,EAC5C;AAAA,EACA,IAAI,YAAY;AACd,WAAO56D,GAA2B;AAAA,EACpC;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,gBAAgB;AAAA,EAC9B;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK,gBAAgB,gBAAgB;AAAA,EAC9C;AAAA,EACA,kBAAkB;AAChB,QAAI,CAAC,KAAK;AACR;AAEF,UAAM,gBAAe;AACrB,UAAM;AAAA,MACJ,SAAAw7E;AAAA,MACA,iBAAAnE;AAAA,MACA,QAAA/qE;AAAA,IACN,IAAQ;AACJ,IAAA+qE,EAAgB,kBAAkB,cAAc,GAChD/qE,EAAO,UAAU,iBAAiBkvE,GAASnE,EAAgB,gBAAe,CAAE;AAAA,EAC9E;AAAA,EACA,OAAO,6BAA6B;AAClC,UAAM/qE,IAAS,KAAK;AACpB,IAAKA,MAGL,MAAM,2BAA0B,GAChC,KAAK,uBAAuB,kBAAkB,cAAc,GAC5DA,EAAO,UAAU,iBAAiB,KAAK,gBAAgB,KAAK,uBAAuB,iBAAiB;AAAA,EACtG;AAAA,EACA,qBAAqB;AAAA,IACnB,OAAA6E;AAAA,IACA,WAAA43D;AAAA,IACA,SAAAt1D;AAAA,EACJ,GAAK;AACD,SAAK,kBAAkB8nE,GAAU,yBAAyB;AAAA,MACxD,QAAQ52E,EAAK,aAAa,GAAGwM,CAAK;AAAA,MAClC,gBAAgB43D;AAAA,MAChB,kBAAkBt1D;AAAA,IACxB,CAAK;AAAA,EACH;AAAA,EACA,UAAUqW,IAAe,IAAO;AAC9B,QAAI,KAAK;AACP,aAAO;AAET,QAAI,KAAK;AACP,aAAO,KAAK,iBAAgB;AAE9B,UAAM;AAAA,MACJ,OAAAtU;AAAA,MACA,QAAAizD;AAAA,IACN,IAAQ,KAAK,cAAc3+C,CAAY,GAC7B;AAAA,MACJ,iBAAiB;AAAA,QACf,QAAA2xD;AAAA,QACA,kBAAkBhoE;AAAA,QAClB,gBAAgBs1D;AAAA,MACxB;AAAA,IACA,IAAQ,MACExjD,IAAa,OAAO,OAAO,MAAM,UAAUuE,CAAY,GAAG;AAAA,MAC9D,OAAO4M,GAAiB,cAAc,QAAQ+kD,CAAM;AAAA,MACpD,SAAAhoE;AAAA,MACA,WAAAs1D;AAAA,MACA,OAAO;AAAA,QACL,OAAAvzD;AAAA,QACA,QAAAizD;AAAA,MACR;AAAA,IACA,CAAK;AAED,WADA,KAAK,WAAWljD,CAAU,GACtBuE,KACFvE,EAAW,SAAS,IACbA,KAEL,KAAK,uBAAuB,CAAC/c,EAAA,MAAK8yE,IAAAjP,IAAL,WAAwB9mD,KAChD,QAETA,EAAW,KAAK,KAAK,qBACdA;AAAA,EACT;AAAA,EAUA,wBAAwBkB,GAAY;AAClC,QAAI,KAAK;AACP,aAAAA,EAAW,KAAI,GACR;AAET,UAAM;AAAA,MACJ,QAAAgiD;AAAA,MACA,MAAAxiE;AAAA,IACN,IAAQ,KAAK,cAAc,EAAK;AAC5B,WAAAwgB,EAAW,aAAa;AAAA,MACtB,MAAAxgB;AAAA,MACA,WAAW,KAAK,gBAAgB,cAAc;AAAA,MAC9C,QAAAwiE;AAAA,MACA,OAAO,KAAK;AAAA,IAClB,CAAK,GACM;AAAA,EACT;AACF;AAtMA6S,KAAA,eA4KEjP,KAAkB,SAAC9mD,GAAY;AAC7B,QAAM;AAAA,IACJ,OAAApU;AAAA,IACA,WAAA43D;AAAA,IACA,SAAAt1D;AAAA,IACA,WAAAmQ;AAAA,EACN,IAAQ,KAAK;AACT,SAAO,KAAK,oBAAoB,KAAK,iBAAiB,KAAK,mBAAmB2B,EAAW,MAAM,KAAK,CAACle,GAAG7D,MAAM6D,MAAM8J,EAAM3N,CAAC,CAAC,KAAK+hB,EAAW,cAAcwjD,KAAaxjD,EAAW,YAAY9R,KAAW8R,EAAW,cAAc3B;AACpO,GAnLAjX,EADI4uE,IACG,SAAQ,QACf5uE,EAFI4uE,IAEG,eAAcx7E,EAAqB,MAC1C4M,EAHI4uE,IAGG,0BAAyB;AAHlC,IAAMG,KAANH;AA0MA,MAAMI,WAA2B1C,GAAe;AAAA,EAC9C,YAAY;AACV,QAAIrjE,IAAO,MAAM,UAAS;AAC1B,WAAKA,EAAK,SAAS,GAAG,MACpBA,KAAQ,MAEHA;AAAA,EACT;AACF;AAOA,MAAMgmE,KAAqB,GACrBC,KAA2B;AAznuBjC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA0nuBA,MAAMC,GAAmB;AAAA,EAiVvB,OAAO,wBAAwBh4D,GAAM;AAAA,IACnC,YAAAgqC;AAAA,IACA,WAAAiuB;AAAA,IACA,YAAAC;AAAA,EACJ,GAAK5qE,GAAWC,GAAY5E,GAAUkiE,GAAa;AAC/C,QAAI/0D,IAAS,IAAI,gBAAgB,GAAG,CAAC,GACjChJ,IAAMgJ,EAAO,WAAW,MAAM;AAAA,MAChC,OAAO;AAAA,IACb,CAAK;AACD,UAAM+jC,IAAW,KACXzkB,IAAOtoB,EAAI,OAAO,GAAGmrE,CAAS,IAAIC,CAAU,IAAIr+B,CAAQ,MAAMmQ,CAAU,IACxE;AAAA,MACJ,uBAAAmuB;AAAA,MACA,wBAAAC;AAAA,MACA,yBAAAC;AAAA,MACA,0BAAAC;AAAA,MACA,uBAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,OAAAjvE;AAAA,IACN,IAAQuD,EAAI,YAAYkT,CAAI,GAClBy4D,IAAQ,KACR1qC,IAAc,KAAK,KAAK,KAAK,IAAI,KAAK,IAAIoqC,CAAqB,IAAI,KAAK,IAAIC,CAAsB,KAAK,GAAG7uE,CAAK,IAAIkvE,CAAK,GACxHzqC,IAAe,KAAK,KAAK,KAAK,IAAI,KAAK,IAAIqqC,CAAuB,IAAI,KAAK,IAAIC,CAAwB,KAAKz+B,GAAU,KAAK,IAAI0+B,CAAqB,IAAI,KAAK,IAAIC,CAAsB,KAAK3+B,CAAQ,IAAI4+B,CAAK;AACnN,IAAA3iE,IAAS,IAAI,gBAAgBi4B,GAAaC,CAAY,GACtDlhC,IAAMgJ,EAAO,WAAW,MAAM;AAAA,MAC5B,OAAO;AAAA,MACP,oBAAoB;AAAA,IAC1B,CAAK,GACDhJ,EAAI,OAAOsoB,GACXtoB,EAAI,SAAS,gBACbA,EAAI,YAAY,SAChBA,EAAI,SAAS,GAAG,GAAGihC,GAAaC,CAAY,GAC5ClhC,EAAI,YAAY,SAChBA,EAAI,SAASkT,GAAM+tB,KAAe0qC,IAAQ,KAAK,GAAGzqC,KAAgB,IAAIyqC,KAAS,CAAC;AAChF,UAAMC,IAAW90E,EAAA,MAAKuzE,IAAAU,IAAL,WAAc/qE,EAAI,aAAa,GAAG,GAAGihC,GAAaC,CAAY,EAAE,OAC3E2qC,IAAY/0E,EAAA,MAAKuzE,IAAAS,IAAL,WAAmBc,IAC/BE,IAAYh1E,EAAA,MAAKuzE,IAAAW,IAAL,WAAqBa,IACjCE,IAAcj1E,EAAA,MAAKuzE,IAAAK,IAAL,WAAmBkB,GAAU3qC,GAAaC,GAAc4qC;AAC5E,WAAO,KAAK,kBAAkB;AAAA,MAC5B,OAAO;AAAA,QACL,QAAQC;AAAA,QACR,OAAO9qC;AAAA,QACP,QAAQC;AAAA,MAChB;AAAA,MACM,WAAA1gC;AAAA,MACA,YAAAC;AAAA,MACA,UAAA5E;AAAA,MACA,aAAAkiE;AAAA,MACA,YAAY;AAAA,MACZ,aAAa;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,OAAO,QAAQ70D,GAAQ1I,GAAWC,GAAY5E,GAAUkiE,GAAa;AACnE,UAAM,CAAC6N,GAAUnvE,GAAOC,CAAM,IAAI5F,EAAA,MAAKuzE,IAAAY,IAAL,WAAoB/hE,IAChD,CAACyhB,GAAQkhD,CAAS,IAAI/0E,EAAA,MAAKuzE,IAAAQ,IAAL,WAAsBe,GAAUnvE,GAAOC,GAAQ,KAAK,MAAMD,GAAOC,CAAM,IAAIiC,EAAA,MAAKyrE,IAAY,cAAczrE,EAAA,MAAKyrE,IAAY,QAAQzrE,EAAA,MAAKyrE,IAAY,aAC1K0B,IAAYh1E,EAAA,MAAKuzE,IAAAW,IAAL,WAAqBa,IACjCE,IAAcj1E,EAAA,MAAKuzE,IAAAK,IAAL,WAAmB//C,GAAQluB,GAAOC,GAAQovE;AAC9D,WAAO,KAAK,kBAAkB;AAAA,MAC5B,OAAO;AAAA,QACL,QAAQC;AAAA,QACR,OAAAtvE;AAAA,QACA,QAAAC;AAAA,MACR;AAAA,MACM,WAAA8D;AAAA,MACA,YAAAC;AAAA,MACA,UAAA5E;AAAA,MACA,aAAAkiE;AAAA,MACA,YAAY;AAAA,MACZ,aAAa;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,OAAO,kBAAkB;AAAA,IACvB,OAAAj6D;AAAA,IACA,WAAAtD;AAAA,IACA,YAAAC;AAAA,IACA,UAAA5E;AAAA,IACA,aAAAkiE;AAAA,IACA,YAAAiO;AAAA,IACA,aAAAC;AAAA,EACJ,GAAK;AACD,IAAIpwE,IAAW,QAAQ,MACrB,CAAC2E,GAAWC,CAAU,IAAI,CAACA,GAAYD,CAAS;AAElD,UAAM;AAAA,MACJ,QAAA0rE;AAAA,MACA,OAAAzvE;AAAA,MACA,QAAAC;AAAA,IACN,IAAQoH,GACEuzD,IAAYvzD,EAAM,aAAa,GAC/BqoE,IAAiB,CAAA,GACjBluB,IAAQ,KAAK,IAAIz9C,IAAY/D,GAAOgE,IAAa/D,CAAM,GACvD0vE,IAASnuB,IAAQz9C,GACjB6rE,IAASpuB,IAAQx9C,GACjB6rE,IAAY,CAAA;AAClB,eAAW;AAAA,MACT,QAAAvV;AAAA,IACN,KAASmV,GAAQ;AACX,YAAMK,IAAgBP,IAAal1E,EAAA,MAAKuzE,IAAAO,IAAL,WAAqB7T,KAAUA;AAClE,UAAI,CAACwV;AACH;AAEF,MAAAD,EAAU,KAAKC,CAAa;AAC5B,YAAM7D,IAAM6D,EAAc,QACpBC,IAAY,IAAI,aAAa9D,CAAG,GAChC3kE,IAAO,IAAI,aAAa,KAAK2kE,MAAQ,IAAI,IAAIA,IAAM,EAAE;AAK3D,UAJAyD,EAAe,KAAK;AAAA,QAClB,MAAApoE;AAAA,QACA,QAAQyoE;AAAA,MAChB,CAAO,GACG9D,MAAQ,GAAG;AACb,QAAA8D,EAAU,CAAC,IAAID,EAAc,CAAC,IAAIH,GAClCI,EAAU,CAAC,IAAID,EAAc,CAAC,IAAIF,GAClCtoE,EAAK,IAAI,CAAC,KAAK,KAAK,KAAK,KAAKyoE,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GAAG,CAAC;AAC5D;AAAA,MACF;AACA,UAAI,CAACh2E,GAAIC,GAAIC,GAAIC,CAAE,IAAI41E;AACvB,MAAA/1E,KAAM41E,GACN31E,KAAM41E,GACN31E,KAAM01E,GACNz1E,KAAM01E,GACNG,EAAU,IAAI,CAACh2E,GAAIC,GAAIC,GAAIC,CAAE,GAAG,CAAC,GACjCoN,EAAK,IAAI,CAAC,KAAK,KAAK,KAAK,KAAKvN,GAAIC,CAAE,GAAG,CAAC;AACxC,eAAS3E,IAAI,GAAGA,IAAI42E,GAAK52E,KAAK,GAAG;AAC/B,cAAMsE,IAAIo2E,EAAU16E,CAAC,IAAIy6E,EAAcz6E,CAAC,IAAIs6E,GACtC/1E,IAAIm2E,EAAU16E,IAAI,CAAC,IAAIy6E,EAAcz6E,IAAI,CAAC,IAAIu6E;AACpD,QAAAtoE,EAAK,IAAIk4D,EAAQ,mBAAmBzlE,GAAIC,GAAIC,GAAIC,GAAIP,GAAGC,CAAC,IAAIvE,IAAI,KAAK,CAAC,GACtE,CAAC0E,GAAIC,GAAIC,GAAIC,CAAE,IAAI,CAACD,GAAIC,GAAIP,GAAGC,CAAC;AAAA,MAClC;AAAA,IACF;AACA,QAAI81E,EAAe,WAAW;AAC5B,aAAO;AAET,UAAM3N,IAAUyN,IAAc,IAAIhC,GAAkB,IAAK,IAAI1C,GAAc;AAC3E,WAAA/I,EAAQ,MAAM2N,GAAgB3rE,GAAWC,GAAY,GAAG5E,GAAUowE,IAAc,IAAI5U,GAAW0G,CAAW,GACnG;AAAA,MACL,SAAAS;AAAA,MACA,WAAA8N;AAAA,MACA,aAAAL;AAAA,MACA,WAAA5U;AAAA,MACA,OAAA56D;AAAA,MACA,QAAAC;AAAA,IACN;AAAA,EACE;AAAA,EACA,aAAa,kBAAkB;AAAA,IAC7B,UAAAykE;AAAA,IACA,aAAA8K;AAAA,IACA,WAAA5U;AAAA,IACA,OAAA56D;AAAA,IACA,QAAAC;AAAA,EACJ,GAAK;AACD,QAAI+vE,IAAU,OACVC,IAAU,QACVC,IAAiB;AACrB,eAAW5V,KAAUoK,GAAU;AAC7B,MAAAwL,KAAkB5V,EAAO;AACzB,eAASjlE,IAAI,GAAGmL,IAAK85D,EAAO,QAAQjlE,IAAImL,GAAInL,KAAK;AAC/C,cAAM86E,IAAK7V,EAAOjlE,CAAC,IAAIilE,EAAOjlE,IAAI,CAAC;AACnC,QAAA26E,IAAU,KAAK,IAAIA,GAASG,CAAE,GAC9BF,IAAU,KAAK,IAAIA,GAASE,CAAE;AAAA,MAChC;AAAA,IACF;AACA,QAAIC;AACJ,IAAIJ,KAAW,QAAQC,KAAW,MAChCG,IAAa,YACJJ,KAAW,UAAUC,KAAW,QACzCG,IAAa,aAEbA,IAAa;AAEf,UAAMnE,IAAMvH,EAAS,QACf2L,IAAe5C,KAAqBC,KAA2BzB,GAC/D7S,IAAS,IAAI,YAAYiX,CAAY;AAC3C,QAAIjkD,IAAS;AACb,IAAAgtC,EAAOhtC,GAAQ,IAAIikD,IAAe,YAAY,qBAAqBH,IAAiB,IAAIjE,KAAOmE,EAAW,mBAC1GhX,EAAOhtC,GAAQ,IAAI,GACnBgtC,EAAOhtC,GAAQ,IAAIpsB,GACnBo5D,EAAOhtC,GAAQ,IAAInsB,GACnBm5D,EAAOhtC,GAAQ,IAAIojD,IAAc,IAAI,GACrCpW,EAAOhtC,GAAQ,IAAI,KAAK,IAAI,GAAG,KAAK,MAAMwuC,KAAa,CAAC,CAAC,GACzDxB,EAAOhtC,GAAQ,IAAI6/C,GACnB7S,EAAOhtC,GAAQ,IAAIgkD,EAAW;AAC9B,eAAW9V,KAAUoK;AACnB,MAAAtL,EAAOhtC,GAAQ,IAAIkuC,EAAO,SAAS,GACnClB,EAAOhtC,GAAQ,IAAIkuC,EAAO,CAAC,GAC3BlB,EAAOhtC,GAAQ,IAAIkuC,EAAO,CAAC;AAE7B,UAAM73B,IAAK,IAAI,kBAAkB,aAAa,GACxC6tC,IAAS7tC,EAAG,SAAS,UAAS;AACpC,UAAM6tC,EAAO,OACbA,EAAO,MAAMlX,CAAM;AACnB,UAAMmX,IAAaH,EAAW,UAAU;AACxC,eAAW9V,KAAUoK,GAAU;AAC7B,YAAM8L,IAAQ,IAAID,EAAWjW,EAAO,SAAS,CAAC;AAC9C,eAASjlE,IAAI,GAAGmL,IAAK85D,EAAO,QAAQjlE,IAAImL,GAAInL;AAC1C,QAAAm7E,EAAMn7E,IAAI,CAAC,IAAIilE,EAAOjlE,CAAC,IAAIilE,EAAOjlE,IAAI,CAAC;AAEzC,MAAAi7E,EAAO,MAAME,CAAK;AAAA,IACpB;AACA,IAAAF,EAAO,MAAK;AACZ,UAAMn1E,IAAM,MAAM,IAAI,SAASsnC,EAAG,QAAQ,EAAE,YAAW,GACjDxtC,IAAQ,IAAI,WAAWkG,CAAG;AAChC,WAAOgB,GAAalH,CAAK;AAAA,EAC3B;AAAA,EACA,aAAa,oBAAoBw7E,GAAe;AAC9C,QAAI;AACF,YAAMx7E,IAAQoH,GAAeo0E,CAAa,GACpC;AAAA,QACJ,UAAAC;AAAA,QACA,UAAAC;AAAA,MACR,IAAU,IAAI,oBAAoB,aAAa,GACnCL,IAASK,EAAS,UAAS;AACjC,YAAML,EAAO,OACbA,EAAO,MAAMr7E,CAAK,EAAE,KAAK,YAAY;AACnC,cAAMq7E,EAAO,OACb,MAAMA,EAAO,MAAK;AAAA,MACpB,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AACjB,UAAI9oE,IAAO,MACP4kB,IAAS;AACb,uBAAiB72B,KAASm7E;AACxB,QAAAlpE,UAAS,IAAI,WAAW,IAAI,YAAYjS,EAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,IAC9DiS,EAAK,IAAIjS,GAAO62B,CAAM,GACtBA,KAAU72B,EAAM;AAElB,YAAM6jE,IAAS,IAAI,YAAY5xD,EAAK,QAAQ,GAAGA,EAAK,UAAU,CAAC,GACzDyjD,IAAUmO,EAAO,CAAC;AACxB,UAAInO,MAAY;AACd,cAAM,IAAI,MAAM,oBAAoBA,CAAO,EAAE;AAE/C,YAAMjrD,IAAQo5D,EAAO,CAAC,GAChBn5D,IAASm5D,EAAO,CAAC,GACjBoW,IAAcpW,EAAO,CAAC,MAAM,GAC5BwB,IAAYxB,EAAO,CAAC,GACpBwX,IAAmBxX,EAAO,CAAC,GAC3BgX,IAAahX,EAAO,CAAC,GACrBsL,IAAW,CAAA,GACXmM,KAAepD,KAAqBC,KAA2BkD,KAAoB,YAAY;AACrG,UAAIJ;AACJ,cAAQJ,GAAU;AAAA,QAChB,KAAK,UAAU;AACb,UAAAI,IAAQ,IAAI,UAAUhpE,EAAK,QAAQqpE,CAAW;AAC9C;AAAA,QACF,KAAK,WAAW;AACd,UAAAL,IAAQ,IAAI,WAAWhpE,EAAK,QAAQqpE,CAAW;AAC/C;AAAA,QACF,KAAK,WAAW;AACd,UAAAL,IAAQ,IAAI,WAAWhpE,EAAK,QAAQqpE,CAAW;AAC/C;AAAA,MACV;AACM,MAAAzkD,IAAS;AACT,eAAS/2B,IAAI,GAAGA,IAAIu7E,GAAkBv7E,KAAK;AACzC,cAAM42E,IAAM7S,EAAOsU,KAA2Br4E,IAAIo4E,EAAkB,GAC9DnT,IAAS,IAAI,aAAa2R,IAAM,CAAC;AACvC,QAAAvH,EAAS,KAAKpK,CAAM;AACpB,iBAAS5gC,IAAI,GAAGA,IAAIg0C,KAA2B,GAAGh0C;AAChD,UAAA4gC,EAAO5gC,CAAC,IAAI0/B,EAAOsU,KAA2Br4E,IAAIo4E,KAAqB/zC,IAAI,CAAC;AAE9E,iBAASA,IAAI,GAAGA,IAAIuyC,GAAKvyC;AACvB,UAAA4gC,EAAO5gC,IAAI,CAAC,IAAI4gC,EAAO5gC,CAAC,IAAI82C,EAAMpkD,GAAQ;AAAA,MAE9C;AACA,aAAO;AAAA,QACL,aAAAojD;AAAA,QACA,WAAA5U;AAAA,QACA,UAAA8J;AAAA,QACA,OAAA1kE;AAAA,QACA,QAAAC;AAAA,MACR;AAAA,IACI,SAAS2B,GAAG;AACV,aAAA9O,EAAK,wBAAwB8O,CAAC,EAAE,GACzB;AAAA,IACT;AAAA,EACF;AACF;AAhmBS+rE,KAAA,eADTC,KAAA,eAOSC,KAAkB,SAACiD,GAAIC,GAAI17E,GAAGqkC,GAAG;AAGtC,SAFArkC,KAAKy7E,GACLp3C,KAAKq3C,GACD17E,MAAM,IACDqkC,IAAI,IAAI,IAAI,IAEjBrkC,MAAM,IACDqkC,IAAI,IAEN,IAAIA;AACb,GACOo0C,KAAA,eACAC,KAAiB,SAAC5yE,GAAK6E,GAAO8wE,GAAIC,GAAI,GAAGr3C,GAAGtN,GAAQ;AACzD,QAAMnvB,IAAK5C,EAAA,MAAKuzE,IAAAC,IAAL,WAAwBiD,GAAIC,GAAI,GAAGr3C;AAC9C,WAAS2I,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,UAAM2uC,KAAM,CAAC3uC,IAAIplC,IAAKmvB,IAAS,MAAM,GAC/B6kD,IAAS/uE,EAAA,MAAK4rE,IAAmB,IAAIkD,CAAE,GACvCE,IAAShvE,EAAA,MAAK4rE,IAAmB,IAAIkD,IAAK,CAAC;AACjD,QAAI71E,GAAK21E,IAAKG,KAAUjxE,KAAS+wE,IAAKG,EAAO,MAAM;AACjD,aAAOF;AAAA,EAEX;AACA,SAAO;AACT,GACOhD,KAAwB,SAAC7yE,GAAK6E,GAAO8wE,GAAIC,GAAI,GAAGr3C,GAAGtN,GAAQ;AAChE,QAAMnvB,IAAK5C,EAAA,MAAKuzE,IAAAC,IAAL,WAAwBiD,GAAIC,GAAI,GAAGr3C;AAC9C,WAAS2I,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC1B,UAAM2uC,KAAM3uC,IAAIplC,IAAKmvB,IAAS,MAAM,GAC9B6kD,IAAS/uE,EAAA,MAAK4rE,IAAmB,IAAIkD,CAAE,GACvCE,IAAShvE,EAAA,MAAK4rE,IAAmB,IAAIkD,IAAK,CAAC;AACjD,QAAI71E,GAAK21E,IAAKG,KAAUjxE,KAAS+wE,IAAKG,EAAO,MAAM;AACjD,aAAOF;AAAA,EAEX;AACA,SAAO;AACT,GACO/C,KAAa,SAAC9yE,GAAK6E,GAAOC,GAAQovE,GAAW;AAClD,QAAMnN,IAAI/mE,EAAI,QACRuc,IAAQ,IAAI,WAAWwqD,CAAC;AAC9B,WAAS7sE,IAAI,GAAGA,IAAI6sE,GAAG7sE;AACrB,IAAAqiB,EAAMriB,CAAC,IAAI8F,EAAI9F,CAAC,KAAKg6E,IAAY,IAAI;AAEvC,WAASh6E,IAAI,GAAGA,IAAI4K,IAAS,GAAG5K;AAC9B,IAAAqiB,EAAMriB,IAAI2K,CAAK,IAAI0X,EAAMriB,IAAI2K,IAAQA,IAAQ,CAAC,IAAI;AAEpD,WAAS3K,IAAI,GAAGA,IAAI2K,GAAO3K;AACzB,IAAAqiB,EAAMriB,CAAC,IAAIqiB,EAAM1X,IAAQC,IAAS,IAAI5K,CAAC,IAAI;AAE7C,MAAI87E,IAAM,GACNC;AACJ,QAAMC,IAAW,CAAA;AACjB,WAASh8E,IAAI,GAAGA,IAAI4K,IAAS,GAAG5K,KAAK;AACnC,IAAA+7E,IAAO;AACP,aAAS13C,IAAI,GAAGA,IAAI15B,IAAQ,GAAG05B,KAAK;AAClC,YAAM43C,IAAKj8E,IAAI2K,IAAQ05B,GACjB63C,IAAM75D,EAAM45D,CAAE;AACpB,UAAIC,MAAQ;AACV;AAEF,UAAIC,IAAKn8E,GACLo8E,IAAK/3C;AACT,UAAI63C,MAAQ,KAAK75D,EAAM45D,IAAK,CAAC,MAAM;AACjC,QAAAH,KAAO,GACPM,KAAM;AAAA,eACGF,KAAO,KAAK75D,EAAM45D,IAAK,CAAC,MAAM;AACvC,QAAAH,KAAO,GACPM,KAAM,GACFF,IAAM,MACRH,IAAOG;AAAA,WAEJ;AACL,QAAIA,MAAQ,MACVH,IAAO,KAAK,IAAIG,CAAG;AAErB;AAAA,MACF;AACA,YAAMjX,IAAS,CAAC5gC,GAAGrkC,CAAC,GACdq8E,IAASD,MAAO/3C,IAAI,GACpBi4C,IAAU;AAAA,QACd,QAAAD;AAAA,QACA,QAAApX;AAAA,QACA,IAAI6W;AAAA,QACJ,QAAQ;AAAA,MAClB;AACQ,MAAAE,EAAS,KAAKM,CAAO;AACrB,UAAIC;AACJ,iBAAW14E,KAAKm4E;AACd,YAAIn4E,EAAE,OAAOk4E,GAAM;AACjB,UAAAQ,IAAW14E;AACX;AAAA,QACF;AAEF,MAAK04E,IAEMA,EAAS,SAClBD,EAAQ,SAASD,IAASE,EAAS,SAASR,IAE5CO,EAAQ,SAASD,IAASN,IAAOQ,EAAS,SAJ1CD,EAAQ,SAASD,IAASN,IAAO;AAMnC,YAAM/uC,IAAIhoC,EAAA,MAAKuzE,IAAAG,IAAL,WAAuBr2D,GAAO1X,GAAO3K,GAAGqkC,GAAG83C,GAAIC,GAAI;AAC7D,UAAIpvC,MAAM,IAAI;AACZ,QAAA3qB,EAAM45D,CAAE,IAAI,CAACH,GACTz5D,EAAM45D,CAAE,MAAM,MAChBF,IAAO,KAAK,IAAI15D,EAAM45D,CAAE,CAAC;AAE3B;AAAA,MACF;AACA,UAAIL,IAAS/uE,EAAA,MAAK4rE,IAAmB,IAAIzrC,CAAC,GACtC6uC,IAAShvE,EAAA,MAAK4rE,IAAmB,IAAIzrC,IAAI,CAAC;AAC9C,YAAMwvC,IAAKx8E,IAAI47E,GACTa,IAAKp4C,IAAIw3C;AACf,MAAAM,IAAKK,GACLJ,IAAKK;AACL,UAAIC,IAAK18E,GACL28E,IAAKt4C;AACT,iBAAa;AACX,cAAMs3C,IAAK32E,EAAA,MAAKuzE,IAAAI,IAAL,WAA8Bt2D,GAAO1X,GAAO+xE,GAAIC,GAAIR,GAAIC,GAAI;AACvE,QAAAR,IAAS/uE,EAAA,MAAK4rE,IAAmB,IAAIkD,CAAE,GACvCE,IAAShvE,EAAA,MAAK4rE,IAAmB,IAAIkD,IAAK,CAAC;AAC3C,cAAMiB,IAAKF,IAAKd,GACViB,IAAKF,IAAKd;AAChB,QAAA5W,EAAO,KAAK4X,GAAID,CAAE;AAClB,cAAME,IAAMJ,IAAK/xE,IAAQgyE;AAMzB,YALIt6D,EAAMy6D,IAAM,CAAC,MAAM,IACrBz6D,EAAMy6D,CAAG,IAAI,CAAChB,IACLz5D,EAAMy6D,CAAG,MAAM,MACxBz6D,EAAMy6D,CAAG,IAAIhB,IAEXc,MAAO58E,KAAK68E,MAAOx4C,KAAKq4C,MAAOF,KAAMG,MAAOF,GAAI;AAClD,UAAIp6D,EAAM45D,CAAE,MAAM,MAChBF,IAAO,KAAK,IAAI15D,EAAM45D,CAAE,CAAC;AAE3B;AAAA,QACF;AACE,UAAAE,IAAKO,GACLN,IAAKO,GACLD,IAAKE,GACLD,IAAKE;AAAA,MAET;AAAA,IACF;AAAA,EACF;AACA,SAAOb;AACT,GACOnD,KAAqB,SAAC5T,GAAQ74D,GAAOC,GAAK3J,GAAQ;AACvD,MAAI2J,IAAMD,KAAS,GAAG;AACpB,aAASpM,IAAIoM,GAAOpM,IAAIqM,IAAM,GAAGrM,KAAK;AACpC,MAAA0C,EAAO,KAAKuiE,EAAOjlE,CAAC,GAAGilE,EAAOjlE,IAAI,CAAC,CAAC;AAEtC;AAAA,EACF;AACA,QAAM+8E,IAAK9X,EAAO74D,CAAK,GACjB4wE,IAAK/X,EAAO74D,IAAQ,CAAC,GACrB6wE,IAAMhY,EAAO54D,IAAM,CAAC,IAAI0wE,GACxBG,IAAMjY,EAAO54D,IAAM,CAAC,IAAI2wE,GACxBG,IAAO,KAAK,MAAMF,GAAKC,CAAG,GAC1BE,IAAOH,IAAME,GACbE,IAAOH,IAAMC,GACbG,IAAKF,IAAOJ,IAAKK,IAAON,GACxBn7E,IAAIs7E,IAAMD,GACVM,IAAO,IAAIJ,GACXK,IAAM,KAAK,KAAK57E,CAAC,GACjB67E,IAAS,KAAK,IAAID,CAAG,GACrBE,IAAS,KAAK,IAAIF,CAAG,GACrBG,IAAOJ,KAAQ,KAAK,IAAIE,CAAM,IAAI,KAAK,IAAIC,CAAM,IACjDE,IAAOL,KAAQ,IAAII,IAAOA,KAAQ,IAClCE,IAAa,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIH,IAASD,CAAM,IAAIG,CAAI,GAAG,KAAK,KAAK,KAAK,IAAIF,IAASD,CAAM,IAAIG,CAAI,CAAC;AACpH,MAAIE,IAAO,GACP3kD,IAAQ/sB;AACZ,WAASpM,IAAIoM,IAAQ,GAAGpM,IAAIqM,IAAM,GAAGrM,KAAK,GAAG;AAC3C,UAAMwC,IAAI,KAAK,IAAI86E,IAAKF,IAAOnY,EAAOjlE,IAAI,CAAC,IAAIq9E,IAAOpY,EAAOjlE,CAAC,CAAC;AAC/D,IAAIwC,IAAIs7E,MACN3kD,IAAQn5B,GACR89E,IAAOt7E;AAAA,EAEX;AACA,EAAIs7E,KAAQX,IAAOU,MAAe,KAChC74E,EAAA,MAAKuzE,IAAAM,IAAL,WAA2B5T,GAAQ74D,GAAO+sB,IAAQ,GAAGz2B,IACrDsC,EAAA,MAAKuzE,IAAAM,IAAL,WAA2B5T,GAAQ9rC,GAAO9sB,GAAK3J,MAE/CA,EAAO,KAAKq6E,GAAIC,CAAE;AAEtB,GACOlE,KAAe,SAAC7T,GAAQ;AAC7B,QAAMviE,IAAS,CAAA,GACTk0E,IAAM3R,EAAO;AACnB,SAAAjgE,EAAA,MAAKuzE,IAAAM,IAAL,WAA2B5T,GAAQ,GAAG2R,GAAKl0E,IAC3CA,EAAO,KAAKuiE,EAAO2R,IAAM,CAAC,GAAG3R,EAAO2R,IAAM,CAAC,CAAC,GACrCl0E,EAAO,UAAU,IAAI,OAAOA;AACrC,GACOq2E,KAAgB,SAACjzE,GAAK6E,GAAOC,GAAQmzE,GAAQC,GAAQC,GAAY;AACtE,QAAMC,IAAS,IAAI,aAAaD,KAAc,CAAC,GACzCE,IAAU,KAAKJ,KAAU,GACzBK,IAAWH,KAAc;AAC/B,WAASj+E,IAAI,GAAGA,IAAIi+E,GAAYj+E,KAAK;AACnC,UAAMsE,KAAKtE,IAAIo+E,MAAa;AAC5B,aAAS/5C,IAAI,GAAGA,IAAI45C,GAAY55C;AAC9B,MAAA65C,EAAOl+E,IAAIi+E,IAAa55C,CAAC,IAAI,KAAK,KAAK//B,KAAK+/B,IAAI+5C,MAAa,KAAKD,CAAO;AAAA,EAE7E;AACA,QAAME,IAAc,IAAI,aAAa,GAAG,GAClCC,IAAU,KAAKN,KAAU;AAC/B,WAASh+E,IAAI,GAAGA,IAAI,KAAKA;AACvB,IAAAq+E,EAAYr+E,CAAC,IAAI,KAAK,IAAIA,KAAK,IAAIs+E,CAAO;AAE5C,QAAMzR,IAAI/mE,EAAI,QACRy4E,IAAM,IAAI,WAAW1R,CAAC,GACtBkN,IAAY,IAAI,YAAY,GAAG;AACrC,WAAS/5E,IAAI,GAAGA,IAAI4K,GAAQ5K;AAC1B,aAASqkC,IAAI,GAAGA,IAAI15B,GAAO05B,KAAK;AAC9B,YAAM43C,IAAKj8E,IAAI2K,IAAQ05B,GACjBm6C,IAAS14E,EAAIm2E,CAAE;AACrB,UAAIwC,IAAM,GACNC,IAAO;AACX,eAAS1xC,IAAI,GAAGA,IAAIixC,GAAYjxC,KAAK;AACnC,cAAMzoC,IAAIvE,IAAIgtC,IAAIoxC;AAClB,YAAI,EAAA75E,IAAI,KAAKA,KAAKqG;AAGlB,mBAASyF,IAAI,GAAGA,IAAI4tE,GAAY5tE,KAAK;AACnC,kBAAM/L,IAAI+/B,IAAIh0B,IAAI+tE;AAClB,gBAAI95E,IAAI,KAAKA,KAAKqG;AAChB;AAEF,kBAAMg0E,IAAY74E,EAAIvB,IAAIoG,IAAQrG,CAAC,GAC7BwK,IAAIovE,EAAOlxC,IAAIixC,IAAa5tE,CAAC,IAAIguE,EAAY,KAAK,IAAIM,IAAYH,CAAM,CAAC;AAC/E,YAAAC,KAAOE,IAAY7vE,GACnB4vE,KAAQ5vE;AAAA,UACV;AAAA,MACF;AACA,YAAMotE,IAAMqC,EAAItC,CAAE,IAAI,KAAK,MAAMwC,IAAMC,CAAI;AAC3C,MAAA3E,EAAUmC,CAAG;AAAA,IACf;AAEF,SAAO,CAACqC,GAAKxE,CAAS;AACxB,GACOf,KAAa,SAAClzE,GAAK;AACxB,QAAMi0E,IAAY,IAAI,YAAY,GAAG;AACrC,aAAW/pE,KAAKlK;AACd,IAAAi0E,EAAU/pE,CAAC;AAEb,SAAO+pE;AACT,GACOd,KAAQ,SAACnzE,GAAK;AACnB,QAAM+mE,IAAI/mE,EAAI,QACRy4E,IAAM,IAAI,kBAAkB1R,KAAK,CAAC;AACxC,MAAIhmE,IAAM,QACND,IAAM;AACV,WAAS5G,IAAI,GAAGmL,IAAKozE,EAAI,QAAQv+E,IAAImL,GAAInL,KAAK;AAC5C,UAAMk8E,IAAMqC,EAAIv+E,CAAC,IAAI8F,EAAI9F,KAAK,CAAC;AAC/B,IAAA6G,IAAM,KAAK,IAAIA,GAAKq1E,CAAG,GACvBt1E,IAAM,KAAK,IAAIA,GAAKs1E,CAAG;AAAA,EACzB;AACA,QAAM/vB,IAAQ,OAAOtlD,IAAMD;AAC3B,WAAS5G,IAAI,GAAGmL,IAAKozE,EAAI,QAAQv+E,IAAImL,GAAInL;AACvC,IAAAu+E,EAAIv+E,CAAC,KAAKu+E,EAAIv+E,CAAC,IAAI4G,KAAOulD;AAE5B,SAAOoyB;AACT,GACOrF,KAAe,SAACa,GAAW;AAChC,MAAI/5E,GACA4+E,IAAI,QACJC,IAAI;AACR,QAAMj4E,IAAMmzE,EAAU,UAAU,CAAApzE,MAAKA,MAAM,CAAC;AAC5C,MAAI5E,IAAM6E,GACNk4E,IAAOl4E;AACX,OAAK5G,IAAI4G,GAAK5G,IAAI,KAAKA,KAAK;AAC1B,UAAM2G,IAAIozE,EAAU/5E,CAAC;AACrB,IAAI2G,IAAIi4E,MACF5+E,IAAI+B,IAAM88E,MACZA,IAAI7+E,IAAI+B,GACR+8E,IAAO9+E,IAAI,IAEb4+E,IAAIj4E,GACJ5E,IAAM/B;AAAA,EAEV;AACA,OAAKA,IAAI8+E,IAAO,GAAG9+E,KAAK,KAClB,EAAA+5E,EAAU/5E,CAAC,IAAI+5E,EAAU/5E,IAAI,CAAC,IADTA;AACzB;AAIF,SAAOA;AACT,GACOm5E,KAAc,SAAC/hE,GAAQ;AAC5B,QAAM2nE,IAAiB3nE,GACjB;AAAA,IACJ,OAAAzM;AAAA,IACA,QAAAC;AAAA,EACN,IAAQwM,GACE;AAAA,IACJ,QAAA/H;AAAA,EACN,IAAQxC,EAAA,MAAKyrE;AACT,MAAIrnD,IAAWtmB,GACXumB,IAAYtmB;AAChB,MAAID,IAAQ0E,KAAUzE,IAASyE,GAAQ;AACrC,QAAI2vE,IAAYr0E,GACZs0E,IAAar0E,GACbysC,IAAQ,KAAK,KAAK,KAAK,IAAI1sC,GAAOC,CAAM,IAAIyE,CAAM;AACtD,UAAM6vE,IAAS,KAAK,MAAM7nC,CAAK;AAC/B,IAAAA,IAAQA,MAAU6nC,IAASA,IAAS,IAAIA;AACxC,aAASl/E,IAAI,GAAGA,IAAIq3C,GAAOr3C,KAAK;AAC9B,MAAAixB,IAAW,KAAK,KAAK+tD,IAAY,CAAC,GAClC9tD,IAAY,KAAK,KAAK+tD,IAAa,CAAC;AACpC,YAAM9nE,IAAY,IAAI,gBAAgB8Z,GAAUC,CAAS;AAEzD,MADY/Z,EAAU,WAAW,IAAI,EACjC,UAAUC,GAAQ,GAAG,GAAG4nE,GAAWC,GAAY,GAAG,GAAGhuD,GAAUC,CAAS,GAC5E8tD,IAAY/tD,GACZguD,IAAa/tD,GACT9Z,MAAW2nE,KACb3nE,EAAO,MAAK,GAEdA,IAASD,EAAU,sBAAqB;AAAA,IAC1C;AACA,UAAMg1C,IAAQ,KAAK,IAAI98C,IAAS4hB,GAAU5hB,IAAS6hB,CAAS;AAC5D,IAAAD,IAAW,KAAK,MAAMA,IAAWk7B,CAAK,GACtCj7B,IAAY,KAAK,MAAMA,IAAYi7B,CAAK;AAAA,EAC1C;AAEA,QAAMj+C,IADY,IAAI,gBAAgB+iB,GAAUC,CAAS,EACnC,WAAW,MAAM;AAAA,IACrC,oBAAoB;AAAA,EAC1B,CAAK;AACD,EAAAhjB,EAAI,YAAY,SAChBA,EAAI,SAAS,GAAG,GAAG+iB,GAAUC,CAAS,GACtChjB,EAAI,SAAS,gBACbA,EAAI,UAAUkJ,GAAQ,GAAG,GAAGA,EAAO,OAAOA,EAAO,QAAQ,GAAG,GAAG6Z,GAAUC,CAAS;AAClF,QAAMiuD,IAAYjxE,EAAI,aAAa,GAAG,GAAG+iB,GAAUC,CAAS,EAAE;AAE9D,SAAO,CADUlsB,EAAA,MAAKuzE,IAAAU,IAAL,WAAckG,IACbluD,GAAUC,CAAS;AACvC,GAhVF3rB,EAAM6zE,IAANb,KACEhzE,EADI6zE,IACGd,IAAc;AAAA,EACnB,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAChB,IAYE/yE,EAlBI6zE,IAkBGX,IAAqB,IAAI,WAAW,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AAylBnG,MAAM2G,WAAyBxM,GAAe;AAAA,EAC5C,cAAc;AACZ,UAAK,GACL,MAAM,iBAAiB;AAAA,MACrB,MAAM1/C,GAAiB;AAAA,MACvB,gBAAgB;AAAA,IACtB,CAAK;AAAA,EACH;AAAA,EACA,QAAQ;AACN,UAAMyC,IAAQ,IAAIypD,GAAgB;AAClC,WAAAzpD,EAAM,UAAU,IAAI,GACbA;AAAA,EACT;AACF;AACA,MAAM0pD,WAA8BzH,GAAkB;AAAA,EACpD,YAAYC,GAAkB;AAC5B,UAAMA,CAAgB,GACtB,MAAM,iBAAiB;AAAA,MACrB,QAAQ3kD,GAAiB;AAAA,MACzB,gBAAgB;AAAA,IACtB,CAAK;AAAA,EACH;AAAA,EACA,QAAQ;AACN,UAAMyC,IAAQ,IAAI0pD,GAAsB,KAAK,eAAe;AAC5D,WAAA1pD,EAAM,UAAU,IAAI,GACbA;AAAA,EACT;AACF;AAhwvBA,IAAA2pD,IAAAC,IAAAC,IAAAC;AAiwvBA,MAAMC,KAAN,MAAMA,WAAwBxK,GAAc;AAAA,EAQ1C,YAAY1xD,GAAQ;AAClB,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,iBAAiB;AAAA,MACjB,MAAM;AAAA,IACZ,CAAK;AAZH,IAAAje,EAAA,MAAA+5E,IAAe;AACf,IAAA/5E,EAAA,MAAAg6E,IAAe;AACf,IAAAh6E,EAAA,MAAAi6E,IAAiB;AACjB,IAAAj6E,EAAA,MAAAk6E,IAAiB;AAUf,SAAK,uBAAuB,IAC5B3yE,EAAA,MAAK0yE,IAAiBh8D,EAAO,iBAAiB,OAC9C1W,EAAA,MAAKyyE,IAAe,OACpB,KAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,OAAO,WAAWt5D,GAAMpR,GAAW;AACjC,IAAAqe,GAAiB,WAAWjN,GAAMpR,CAAS,GAC3C,KAAK,yBAAyB,IAAIuqE,GAAgB,GAClD,KAAK,gCAAgC,IAAIC,GAAsBxqE,EAAU,cAAc;AAAA,EACzF;AAAA,EACA,OAAO,yBAAyB5W,GAAS;AACvC,UAAM03B,IAAQ,KAAK,uBAAuB,MAAK;AAC/C,WAAAA,EAAM,iBAAiB13B,CAAO,GACvB03B;AAAA,EACT;AAAA,EACA,WAAW,0BAA0B;AACnC,WAAO;AAAA,EACT;AAAA,EACA,WAAW,WAAW;AACpB,WAAOl3B,EAAO,MAAM,YAAY,oBAAI,IAAG,CAAE;AAAA,EAC3C;AAAA,EACA,WAAW,WAAW;AACpB,WAAO;AAAA,EACT;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB,CAAC,CAACoO,EAAA,MAAK0yE;AAAA,IAC7B;AAAA,EACE;AAAA,EACA,OAAO,0BAA0BptE,GAAM;AACrC,UAAMwtE,IAAsBxtE,EAAK,IAAI,gBAAgB;AACrD,WAAO;AAAA,MACL,YAAYwtE,EAAoB,IAAI,EAAI,KAAK;AAAA,MAC7C,cAAcA,EAAoB,IAAI,EAAK,KAAK;AAAA,IACtD;AAAA,EACE;AAAA,EACA,IAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,IAAI,KAAK,YAAY,QAGrB,MAAM,gBAAe;AAAA,EACvB;AAAA,EACA,SAAS;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEd,QAAIxxD,GAAOC;AACX,UAAM;AAAA,MACJ,SAAAwxD;AAAA,IACN,IAAQ;AAOJ,QANIA,MACF,KAAK,UAAU,IACfzxD,IAAQ,KAAK,GACbC,IAAQ,KAAK,IAEf,MAAM,OAAM,GACR,KAAK,YAAY;AACnB,UAAIvhB,EAAA,MAAK2yE,KAAgB;AACvB,cAAM;AAAA,UACJ,OAAAxtE;AAAA,UACA,YAAAkoE;AAAA,UACA,aAAAC;AAAA,UACA,aAAA7lE;AAAA,UACA,MAAAurE;AAAA,UACA,cAAAC;AAAA,QACV,IAAYjzE,EAAA,MAAK2yE,KACH;AAAA,UACJ,SAAS;AAAA,YACP,WAAA9wE;AAAA,YACA,YAAAC;AAAA,UACZ;AAAA,UACU,UAAA5E;AAAA,QACV,IAAY,KAAK,OAAO,UACV2iE,IAAU0M,GAAmB,kBAAkB;AAAA,UACnD,OAAApnE;AAAA,UACA,WAAAtD;AAAA,UACA,YAAAC;AAAA,UACA,UAAA5E;AAAA,UACA,aAAa21E,GAAgB;AAAA,UAC7B,YAAAxF;AAAA,UACA,aAAAC;AAAA,QACV,CAAS;AACD,aAAK,aAAazN,GAASoT,GAAcxrE,GAAaurE,CAAI;AAAA,MAC5D;AACE,aAAK,IAAI,aAAa,kBAAkB,KAAK,UAAU;AAAA,UACrD,aAAa;AAAA,QACvB,CAAS,CAAC,GACF,KAAK,IAAI,SAAS,IAClB,KAAK,WAAW,aAAa,IAAI;AAAA;AAGnC,WAAK,IAAI,aAAa,kBAAkB,KAAK,UAAU;AAAA,QACrD,aAAahzE,EAAA,MAAK0yE,OAAgB;AAAA,MAC1C,CAAO,CAAC;AAEJ,WAAIK,MACF,KAAK,UAAU,IACf,KAAK,gBAAgBzxD,GAAOC,CAAK,IAE5B,KAAK;AAAA,EACd;AAAA,EACA,QAAQyxD,GAAM;AACZ,IAAA/yE,EAAA,MAAK2yE,IAAiBI,IACtB,KAAK,eAAc;AAAA,EACrB;AAAA,EACA,UAAU;AACR,WAAOhzE,EAAA,MAAK4yE;AAAA,EACd;AAAA,EACA,IAAI,cAAc;AAChB,WAAO5yE,EAAA,MAAK0yE;AAAA,EACd;AAAA,EACA,IAAI,YAAYjrE,GAAa;AAE3B,IADAxH,EAAA,MAAKyyE,IAAejrE,IACf,KAAK,QAGV,KAAK,IAAI,aAAa,kBAAkB,KAAK,UAAU;AAAA,MACrD,aAAAA;AAAA,IACN,CAAK,CAAC,GACF,MAAM,eAAc,EAAG,KAAK,CAAAyrE,MAAW;AACrC,MAAAA,KAAA,QAAAA,EAAS,0BAA0BzrE;AAAA,IACrC,CAAC;AAAA,EACH;AAAA,EACA,sBAAsB;AACpB,UAAM;AAAA,MACJ,WAAAkmE;AAAA,MACA,aAAAL;AAAA,MACA,WAAA5U;AAAA,MACA,OAAA56D;AAAA,MACA,QAAAC;AAAA,IACN,IAAQiC,EAAA,MAAK2yE,KACHnwE,IAAS,KAAK,IAAI1E,GAAOC,CAAM,GAC/Bo1E,IAAc5G,GAAmB,kBAAkB;AAAA,MACvD,OAAO;AAAA,QACL,QAAQoB,EAAU,IAAI,CAAAvV,OAAW;AAAA,UAC/B,QAAAA;AAAA,QACV,EAAU;AAAA,QACF,WAAAM;AAAA,QACA,OAAA56D;AAAA,QACA,QAAAC;AAAA,MACR;AAAA,MACM,WAAWyE;AAAA,MACX,YAAYA;AAAA,MACZ,UAAU;AAAA,MACV,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,aAAA8qE;AAAA,IACN,CAAK;AACD,WAAO;AAAA,MACL,aAAAA;AAAA,MACA,SAAS6F,EAAY;AAAA,IAC3B;AAAA,EACE;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAI,KAAK,WAAW,mBACX,CAAC,CAAC,iBAAiB,KAAK,WAAW,gBAAgB,CAAC,IAEtD,MAAM;AAAA,EACf;AAAA,EACA,aAAa7tE,GAAM2tE,GAAcxrE,GAAaurE,GAAM;AAClD,UAAM;AAAA,MACJ,GAAG17D;AAAA,MACH,GAAGC;AAAA,IACT,IAAQ,MACE;AAAA,MACJ,SAAAsoD;AAAA,IACN,IAAQ5/D,EAAA,MAAK0yE,IAAiBrtE;AAC1B,IAAArF,EAAA,MAAKwyE,IAAe5S,aAAmByL,KACvC,KAAK,cAAc7jE;AACnB,QAAIwgE;AACJ,IAAIjoE,EAAA,MAAKyyE,MACPxK,IAAiB4K,GAAgB,yBAAwB,KAEzD5K,IAAiB4K,GAAgB,8BAA8B,MAAK,GACpE5K,EAAe,iBAAiB;AAAA,MAC9B,gBAAgBpI,EAAQ;AAAA,IAChC,CAAO,IAEH,KAAK,aAAa;AAAA,MAChB,cAAcA;AAAA,MACd,gBAAAoI;AAAA,IACN,CAAK;AACD,UAAM,CAAA,EAAGnmE,CAAU,IAAI,KAAK;AAC5B,QAAIuiB,IAAY4uD,IAAenxE;AAC/B,IAAAuiB,IAAYA,KAAa,IAAI,MAAMA,GACnC,KAAK,SAASA,IAAY,KAAK,QAC3B,KAAK,SAAS,MAChBA,KAAa,MAAM,KAAK,OACxB,KAAK,QAAQ,MAEf,KAAK,SAASA,GACd,KAAK,QAAO,GACZ,KAAK,IAAI/M,GACT,KAAK,IAAIC,GACT,KAAK,OAAM,GACX,KAAK,WAAU,GACf,KAAK,gBAAe,GACpB,KAAK,OAAM,GACX,KAAK,WAAW,uBAAuB,IAAI,GAC3C,KAAK,QAAQy7D,CAAI,GACjB,KAAK,iBAAiB;AAAA,MACpB,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,CAAC,CAACA;AAAA,QAChB,gBAAgB,CAAC,CAACvrE;AAAA,MAC1B;AAAA,IACA,CAAK,GACD,KAAK,IAAI,SAAS;AAAA,EACpB;AAAA,EACA,aAAa8C,GAAQ;AACnB,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,WAAA1I;AAAA,QACA,YAAAC;AAAA,MACR;AAAA,MACM,UAAA5E;AAAA,IACN,IAAQ,KAAK,OAAO;AAChB,WAAOqvE,GAAmB,QAAQhiE,GAAQ1I,GAAWC,GAAY5E,GAAU21E,GAAgB,aAAa;AAAA,EAC1G;AAAA,EACA,YAAYt+D,GAAM6+D,GAAU;AAC1B,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,WAAAvxE;AAAA,QACA,YAAAC;AAAA,MACR;AAAA,MACM,UAAA5E;AAAA,IACN,IAAQ,KAAK,OAAO;AAChB,WAAOqvE,GAAmB,wBAAwBh4D,GAAM6+D,GAAUvxE,GAAWC,GAAY5E,GAAU21E,GAAgB,aAAa;AAAA,EAClI;AAAA,EACA,kBAAkBtF,GAAQ;AACxB,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,WAAA1rE;AAAA,QACA,YAAAC;AAAA,MACR;AAAA,MACM,UAAA5E;AAAA,IACN,IAAQ,KAAK,OAAO;AAChB,WAAOqvE,GAAmB,kBAAkB;AAAA,MAC1C,OAAOgB;AAAA,MACP,WAAA1rE;AAAA,MACA,YAAAC;AAAA,MACA,UAAA5E;AAAA,MACA,aAAa21E,GAAgB;AAAA,MAC7B,YAAY;AAAA,MACZ,aAAa;AAAA,IACnB,CAAK;AAAA,EACH;AAAA,EACA,qBAAqB;AAAA,IACnB,aAAAvF;AAAA,IACA,WAAA5U;AAAA,EACJ,GAAK;AACD,IAAI4U,IACF,KAAK,kBAAkBuF,GAAgB,yBAAwB,KAE/D,KAAK,kBAAkBA,GAAgB,8BAA8B,MAAK,GAC1E,KAAK,gBAAgB,iBAAiB;AAAA,MACpC,gBAAgBna;AAAA,IACxB,CAAO;AAAA,EAEL;AAAA,EACA,UAAUj/C,IAAe,IAAO;AAC9B,QAAI,KAAK;AACP,aAAO;AAET,UAAM;AAAA,MACJ,OAAAtU;AAAA,MACA,QAAAizD;AAAA,IACN,IAAQ,KAAK,cAAc3+C,CAAY,GAC7B;AAAA,MACJ,iBAAiB;AAAA,QACf,gBAAgBi/C;AAAA,MACxB;AAAA,IACA,IAAQ,MACExjD,IAAa,OAAO,OAAO,MAAM,UAAUuE,CAAY,GAAG;AAAA,MAC9D,aAAa;AAAA,MACb,aAAazZ,EAAA,MAAKyyE;AAAA,MAClB,OAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACf,WAAWzyE,EAAA,MAAKyyE,MAAe,IAAI/Z;AAAA,IACzC,CAAK;AACD,gBAAK,WAAWxjD,CAAU,GACtBuE,KACFvE,EAAW,QAAQ;AAAA,MACjB,OAAA/P;AAAA,MACA,QAAAizD;AAAA,IACR,GACMljD,EAAW,OAAOlV,EAAA,MAAK4yE,KACvB19D,EAAW,SAAS,MAEpBA,EAAW,QAAQ/P,GAEjBnF,EAAA,MAAK0yE,QACPx9D,EAAW,oBAAoB;AAAA,MAC7B,MAAM;AAAA,MACN,KAAKlV,EAAA,MAAK0yE;AAAA,IAClB,IAEWx9D;AAAA,EACT;AAAA,EACA,OAAO,gBAAgB2L,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa95D,GAAM;AAC7E,WAAIA,EAAK,cACAgmE,GAAmB,YAAYzqD,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa95D,CAAI,IAEvFsjE,GAAe,YAAY/nD,GAAOC,GAAOjf,GAAWC,GAAYs9D,GAAa95D,CAAI;AAAA,EAC1F;AAAA,EACA,aAAa,YAAYA,GAAMrJ,GAAQ+L,GAAW;AAnkwBpD,QAAAjU;AAokwBI,UAAM0S,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS;AAC9D,WAAA/H,EAAAwG,GAAOgsE,IAAentE,EAAK,cAC3BmB,EAAO,gBAAc1S,IAAAuR,EAAK,sBAAL,gBAAAvR,EAAwB,QAAO,IACpDkM,EAAAwG,GAAOmsE,IAAiBttE,EAAK,OACtBmB;AAAA,EACT;AACF;AAxUEgsE,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAt2E,EALIu2E,IAKG,SAAQ,cACfv2E,EANIu2E,IAMG,eAAcnjF,EAAqB,YAC1C4M,EAPIu2E,IAOG,0BAAyB;AAPlC,IAAMQ,KAANR;AAjwvBA,IAAAS,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAxY;AAilwBA,MAAMyY,WAAoBpuD,GAAiB;AAAA,EAczC,YAAY1P,GAAQ;AAClB,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,IACZ,CAAK;AAlBL,IAAAje,EAAA,MAAAu7E;AACE,IAAAv7E,EAAA,MAAA46E,IAAU;AACV,IAAA56E,EAAA,MAAA66E,IAAY;AACZ,IAAA76E,EAAA,MAAA86E,IAAiB;AACjB,IAAA96E,EAAA,MAAA+6E,IAAa;AACb,IAAA/6E,EAAA,MAAAg7E,IAAc;AACd,IAAAh7E,EAAA,MAAAi7E,IAAkB;AAClB,IAAAj7E,EAAA,MAAAk7E,IAAU;AACV,IAAAl7E,EAAA,MAAAm7E,IAAiB;AACjB,IAAAn7E,EAAA,MAAAo7E,IAAmB;AACnB,IAAAp7E,EAAA,MAAAq7E,IAAS;AACT,IAAAr7E,EAAA,MAAAs7E,IAA2B;AAQzB,IAAA/zE,EAAA,MAAKwzE,IAAa98D,EAAO,YACzB1W,EAAA,MAAKyzE,IAAc/8D,EAAO,aAC1B,KAAK,gBAAgB;AAAA,EACvB;AAAA,EACA,OAAO,WAAWyC,GAAMpR,GAAW;AACjC,IAAAqe,GAAiB,WAAWjN,GAAMpR,CAAS;AAAA,EAC7C;AAAA,EACA,OAAO,yBAAyBoZ,GAAM;AACpC,WAAOre,GAAwB,SAASqe,CAAI;AAAA,EAC9C;AAAA,EACA,OAAO,MAAMpM,GAAM/Y,GAAQ;AACzB,IAAAA,EAAO,YAAY;AAAA,MACjB,MAAMvM,EAAqB;AAAA,IACjC,GAAO;AAAA,MACD,YAAYslB,EAAK,UAAS;AAAA,IAChC,CAAK;AAAA,EACH;AAAA,EACA,gBAAgB;AACd,IAAI,KAAK,WAAW,sBAClB,KAAK,IAAI,SAAS,KAEpB,MAAM,cAAa;AAAA,EACrB;AAAA,EACA,IAAI,qBAAqB;AA3nwB3B,QAAAjhB;AA4nwBI,WAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,CAAC,GAACA,IAAA,KAAK,gBAAL,QAAAA,EAAkB;AAAA,IACtC;AAAA,EACE;AAAA,EACA,OAAO,0BAA0BuR,GAAM;AACrC,UAAMovE,IAAkBpvE,EAAK,IAAI,YAAY;AAC7C,WAAO;AAAA,MACL,YAAYovE,EAAgB,IAAI,EAAI,KAAK;AAAA,MACzC,cAAcA,EAAgB,IAAI,EAAK,KAAK;AAAA,IAClD;AAAA,EACE;AAAA,EA2CA,MAAM,eAAetsB,IAAY,MAAMusB,IAAoB,IAAM;AAC/D,QAAI,KAAK;AACP,aAAO;AAET,UAAM;AAAA,MACJ,WAAA/iE;AAAA,IACN,IAAQ,KAAK;AACT,QAAI,CAACA;AACH,YAAM,IAAI,MAAM,QAAQ;AAE1B,QAAI,CAAE,MAAMA,EAAU,aAAa,SAAS;AAC1C,YAAM,IAAI,MAAM,gCAAgC;AAElD,UAAM;AAAA,MACJ,MAAAtM;AAAA,MACA,OAAAxH;AAAA,MACA,QAAAC;AAAA,IACN,IAAQqqD,KAAa,KAAK,WAAW,MAAM,MAAM,EAAI,EAAE,WAC7CzrD,IAAW,MAAMiV,EAAU,MAAM;AAAA,MACrC,MAAM;AAAA,MACN,SAAS;AAAA,QACP,MAAAtM;AAAA,QACA,OAAAxH;AAAA,QACA,QAAAC;AAAA,QACA,UAAUuH,EAAK,UAAUxH,IAAQC;AAAA,MACzC;AAAA,IACA,CAAK;AACD,QAAI,CAACpB;AACH,YAAM,IAAI,MAAM,kCAAkC;AAEpD,QAAIA,EAAS;AACX,YAAM,IAAI,MAAM,4BAA4B;AAE9C,QAAIA,EAAS;AACX,aAAO;AAET,QAAI,CAACA,EAAS;AACZ,YAAM,IAAI,MAAM,wCAAwC;AAE1D,UAAMsK,IAAUtK,EAAS;AACzB,iBAAM,KAAK,kBAAkBsK,CAAO,GAChC0tE,KAAqB,CAAC,KAAK,qBAC7B,KAAK,cAAc;AAAA,MACjB,KAAK1tE;AAAA,MACL,YAAY;AAAA,IACpB,IAEWA;AAAA,EACT;AAAA,EAqDA,SAAS;AAvxwBX,QAAAlT;AAwxwBI,IAAIiM,EAAA,MAAKuzE,QACPtzE,EAAA,MAAKqzE,IAAU,OACf,KAAK,WAAW,aAAa,SAAStzE,EAAA,MAAKuzE,GAAS,IACpDx/E,IAAAiM,EAAA,MAAK4zE,QAAL,QAAA7/E,EAAc,UACdkM,EAAA,MAAK2zE,IAAU,OACX5zE,EAAA,MAAK8zE,QACP,aAAa9zE,EAAA,MAAK8zE,GAAgB,GAClC7zE,EAAA,MAAK6zE,IAAmB,SAG5B,MAAM,OAAM;AAAA,EACd;AAAA,EACA,UAAU;AACR,QAAI,CAAC,KAAK,QAAQ;AAChB,MAAI9zE,EAAA,MAAKuzE,OACPp7E,EAAA,MAAK87E,IAAAG,IAAL;AAEF;AAAA,IACF;AAEA,IADA,MAAM,QAAO,GACT,KAAK,QAAQ,SAGbp0E,EAAA,MAAKuzE,OAAavzE,EAAA,MAAK4zE,QAAY,QACrCz7E,EAAA,MAAK87E,IAAAG,IAAL,YAEG,KAAK,mBACR,KAAK,OAAO,IAAI,IAAI;AAAA,EAExB;AAAA,EACA,UAAU3xD,GAAO;AACf,SAAK,eAAe,IAChBA,KACF,KAAK,IAAI,MAAK;AAAA,EAElB;AAAA,EACA,UAAU;AACR,WAAO,EAAEziB,EAAA,MAAKwzE,OAAkBxzE,EAAA,MAAKszE,OAAWtzE,EAAA,MAAKyzE,OAAczzE,EAAA,MAAK0zE,OAAe1zE,EAAA,MAAKuzE,OAAavzE,EAAA,MAAK6zE;AAAA,EAChH;AAAA,EACA,IAAI,iBAAiB;AACnB,WAAO,CAAC,CAAC,WAAW,KAAK,cAAa,CAAE,CAAC;AAAA,EAC3C;AAAA,EACA,IAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAAA,EACA,SAAS;AACP,QAAI,KAAK;AACP,aAAO,KAAK;AAEd,QAAIvyD,GAAOC;AACX,WAAI,KAAK,YACPD,IAAQ,KAAK,GACbC,IAAQ,KAAK,IAEf,MAAM,OAAM,GACZ,KAAK,IAAI,SAAS,IAClB,KAAK,cAAa,GACbvhB,EAAA,MAAK6zE,QACJ7zE,EAAA,MAAKszE,MACPn7E,EAAA,MAAK87E,IAAAI,IAAL,aAEAl8E,EAAA,MAAK87E,IAAAG,IAAL,aAGA,KAAK,WACP,KAAK,gBAAgB9yD,GAAOC,CAAK,GAEnC,KAAK,WAAW,iBAAiB,IAAI,GAC9B,KAAK;AAAA,EACd;AAAA,EACA,UAAUtL,GAAqB5L,GAAQ;AACrC,UAAM;AAAA,MACJ,IAAIuqE;AAAA,MACJ,QAAArqE;AAAA,IACN,IAAQ,KAAK,WAAW,aAAa,cAAc0L,GAAqB5L,CAAM;AAC1E,IAAAA,EAAO,OAAM,GACTuqE,KAAY,KAAK,WAAW,aAAa,UAAUA,CAAQ,MAC7D30E,EAAA,MAAKszE,IAAYqB,IACbrqE,KACFtK,EAAA,MAAKqzE,IAAU/oE,IAEjBtK,EAAA,MAAK4zE,IAAiB,KACtB17E,EAAA,MAAK87E,IAAAI,IAAL;AAAA,EAEJ;AAAA,EACA,aAAa;AACX,SAAK,gBAAe;AAAA,EACtB;AAAA,EACA,kBAAkB;AAChB,QAAI,CAAC,KAAK;AACR;AAEF,IAAIr0E,EAAA,MAAK8zE,QAAqB,QAC5B,aAAa9zE,EAAA,MAAK8zE,GAAgB,GAGpC7zE,EAAA,MAAK6zE,IAAmB,WAAW,MAAM;AACvC,MAAA7zE,EAAA,MAAK6zE,IAAmB,OACxB37E,EAAA,MAAK87E,IAAAM,IAAL;AAAA,IACF,GAJqB,GAIN;AAAA,EACjB;AAAA,EAkDA,WAAWM,GAAkBC,GAAqBC,IAAkB,IAAO;AACzE,IAAKF,MACHA,IAAmB;AAErB,UAAM;AAAA,MACJ,OAAOG;AAAA,MACP,QAAQC;AAAA,IACd,IAAQj1E,EAAA,MAAKszE,KACH4B,IAAc,IAAI7yE,GAAW;AACnC,QAAIkI,IAASvK,EAAA,MAAKszE,KACdx1E,IAAQk3E,GACVj3E,IAASk3E,GACP5qE,IAAS;AACb,QAAIyqE,GAAqB;AACvB,UAAIE,IAAcF,KAAuBG,IAAeH,GAAqB;AAC3E,cAAMx1B,IAAQ,KAAK,IAAIw1B,IAAsBE,GAAaF,IAAsBG,CAAY;AAC5F,QAAAn3E,IAAQ,KAAK,MAAMk3E,IAAc11B,CAAK,GACtCvhD,IAAS,KAAK,MAAMk3E,IAAe31B,CAAK;AAAA,MAC1C;AACA,MAAAj1C,IAAS,SAAS,cAAc,QAAQ;AACxC,YAAM8qE,IAAc9qE,EAAO,QAAQ,KAAK,KAAKvM,IAAQo3E,EAAY,EAAE,GAC7DE,IAAe/qE,EAAO,SAAS,KAAK,KAAKtM,IAASm3E,EAAY,EAAE;AACtE,MAAKl1E,EAAA,MAAK+zE,QACRxpE,IAASpS,EAAA,MAAK87E,IAAAK,IAAL,WAAkBa,GAAaC;AAE1C,YAAM/zE,IAAMgJ,EAAO,WAAW,IAAI;AAClC,MAAAhJ,EAAI,SAAS,KAAK,WAAW;AAC7B,UAAIgC,IAAQ,SACV8gC,IAAQ;AACV,MAAI,KAAK,WAAW,cAAc,SAChCA,IAAQ,UACCnhC,GAAY,eACrBK,IAAQ,WACR8gC,IAAQ;AAEV,YAAMkxC,IAAS,IACTC,IAAcD,IAASH,EAAY,IACnCK,IAAeF,IAASH,EAAY,IACpCh3C,IAAU,IAAI,gBAAgBo3C,IAAc,GAAGC,IAAe,CAAC,GAC/DC,IAAat3C,EAAQ,WAAW,IAAI;AAC1C,MAAAs3C,EAAW,YAAYnyE,GACvBmyE,EAAW,SAAS,GAAG,GAAGF,IAAc,GAAGC,IAAe,CAAC,GAC3DC,EAAW,YAAYrxC,GACvBqxC,EAAW,SAAS,GAAG,GAAGF,GAAaC,CAAY,GACnDC,EAAW,SAASF,GAAaC,GAAcD,GAAaC,CAAY,GACxEl0E,EAAI,YAAYA,EAAI,cAAc68B,GAAS,QAAQ,GACnD78B,EAAI,SAAS,GAAG,GAAG8zE,GAAaC,CAAY,GAC5C/zE,EAAI,UAAUkJ,GAAQ,GAAG,GAAGA,EAAO,OAAOA,EAAO,QAAQ,GAAG,GAAG4qE,GAAaC,CAAY;AAAA,IAC1F;AACA,QAAIhtB,IAAY;AAChB,QAAI2sB,GAAiB;AACnB,UAAIU,GAAWC;AACf,UAAIR,EAAY,aAAa3qE,EAAO,QAAQsqE,KAAoBtqE,EAAO,SAASsqE;AAC9E,QAAAY,IAAYlrE,EAAO,OACnBmrE,IAAanrE,EAAO;AAAA,eAEpBA,IAASvK,EAAA,MAAKszE,KACV0B,IAAcH,KAAoBI,IAAeJ,GAAkB;AACrE,cAAMv1B,IAAQ,KAAK,IAAIu1B,IAAmBG,GAAaH,IAAmBI,CAAY;AACtF,QAAAQ,IAAY,KAAK,MAAMT,IAAc11B,CAAK,GAC1Co2B,IAAa,KAAK,MAAMT,IAAe31B,CAAK,GACvCt/C,EAAA,MAAK+zE,QACRxpE,IAASpS,EAAA,MAAK87E,IAAAK,IAAL,WAAkBmB,GAAWC;AAAA,MAE1C;AAGF,YAAMC,IADY,IAAI,gBAAgBF,GAAWC,CAAU,EAC5B,WAAW,MAAM;AAAA,QAC9C,oBAAoB;AAAA,MAC5B,CAAO;AACD,MAAAC,EAAa,UAAUprE,GAAQ,GAAG,GAAGA,EAAO,OAAOA,EAAO,QAAQ,GAAG,GAAGkrE,GAAWC,CAAU,GAC7FttB,IAAY;AAAA,QACV,OAAOqtB;AAAA,QACP,QAAQC;AAAA,QACR,MAAMC,EAAa,aAAa,GAAG,GAAGF,GAAWC,CAAU,EAAE;AAAA,MACrE;AAAA,IACI;AACA,WAAO;AAAA,MACL,QAAArrE;AAAA,MACA,OAAAvM;AAAA,MACA,QAAAC;AAAA,MACA,WAAAqqD;AAAA,IACN;AAAA,EACE;AAAA,EAyEA,aAAa,YAAY9iD,GAAMrJ,GAAQ+L,GAAW;AA1kxBpD,QAAAjU;AA2kxBI,QAAI+hD,IAAc,MACd8/B,IAAgB;AACpB,QAAItwE,aAAgBonD,IAAwB;AAC1C,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,MAAA92D;AAAA,UACA,UAAAsH;AAAA,UACA,IAAAnC;AAAA,UACA,cAAA86E;AAAA,UACA,UAAAx/D;AAAA,UACA,UAAA4E;AAAA,UACA,aAAA3E;AAAA,UACA,cAAAiM;AAAA,UACA,kBAAAC;AAAA,QACV;AAAA,QACQ,WAAAvd;AAAA,QACA,QAAQ;AAAA,UACN,MAAM;AAAA,YACJ,YAAA0O;AAAA,UACZ;AAAA,QACA;AAAA,QACQ,QAAAtJ;AAAA,MACR,IAAU/E;AACJ,UAAIsvE,GAAUrqE;AACd,MAAIF,KACF,OAAO/E,EAAK,QACX;AAAA,QACC,IAAIsvE;AAAA,QACJ,QAAArqE;AAAA,MACV,IAAYvC,EAAU,aAAa,cAAc/C,EAAU,IAAIoF,CAAM,GAC7DA,EAAO,OAAM,MAEburE,IAAgB,IAChBtwE,EAAK,eAAe;AAEtB,YAAM2B,MAAWlT,IAAA,MAAMkI,EAAO,YAAY,kBAAkB,GAAG/C,EAAgB,GAAG6B,CAAE,EAAE,MAArE,gBAAAhH,EAAyE,IAAI,kBAAiB;AAC/G,MAAA+hD,IAAcxwC,IAAO;AAAA,QACnB,gBAAgB5V,EAAqB;AAAA,QACrC,UAAAklF;AAAA,QACA,QAAArqE;AAAA,QACA,WAAWoJ,IAAa;AAAA,QACxB,MAAM/d,EAAK,MAAM,CAAC;AAAA,QAClB,UAAAsH;AAAA,QACA,qBAAqBnC;AAAA,QACrB,IAAAA;AAAA,QACA,SAAS;AAAA,QACT,mBAAmB;AAAA,UACjB,YAAY;AAAA,UACZ,SAAAkM;AAAA,QACV;AAAA,QACQ,OAAO;AAAA,QACP,cAAA4uE;AAAA,QACA,UAAAx/D;AAAA,QACA,UAAA4E;AAAA,QACA,UAAS3E,KAAA,gBAAAA,EAAa,QAAO;AAAA,QAC7B,cAAAiM;AAAA,QACA,kBAAAC;AAAA,MACR;AAAA,IACI;AACA,UAAM/b,IAAS,MAAM,MAAM,YAAYnB,GAAMrJ,GAAQ+L,CAAS,GACxD;AAAA,MACJ,MAAApS;AAAA,MACA,QAAA2U;AAAA,MACA,WAAAurE;AAAA,MACA,UAAAlB;AAAA,MACA,OAAAmB;AAAA,MACA,mBAAAC;AAAA,IACN,IAAQ1wE;AACJ,IAAIswE,KACF5tE,EAAU,iBAAiB1C,EAAK,IAAImB,CAAM,GAC1CxG,EAAAwG,GAAOotE,IAAiB,OACfe,KAAY5sE,EAAU,aAAa,UAAU4sE,CAAQ,KAC9D30E,EAAAwG,GAAO8sE,IAAYqB,IACfrqE,KACFtK,EAAAwG,GAAO6sE,IAAU/oE,MAGnBtK,EAAAwG,GAAOgtE,IAAaqC,IAEtB71E,EAAAwG,GAAOstE,IAASgC;AAChB,UAAM,CAACp+D,GAAaC,CAAY,IAAInR,EAAO;AAC3C,WAAAA,EAAO,SAAS7Q,EAAK,CAAC,IAAIA,EAAK,CAAC,KAAK+hB,GACrClR,EAAO,UAAU7Q,EAAK,CAAC,IAAIA,EAAK,CAAC,KAAKgiB,GAClCo+D,MACFvvE,EAAO,cAAcuvE,IAEvBvvE,EAAO,eAAeqvC,GAClBxwC,EAAK,WACPmB,EAAO,eAAenB,CAAI,GAE5BrF,EAAAwG,GAAOutE,IAA2B,CAAC,CAACl+B,IAC7BrvC;AAAA,EACT;AAAA,EACA,UAAUgT,IAAe,IAAOwJ,IAAU,MAAM;AAC9C,QAAI,KAAK;AACP,aAAO;AAET,QAAI,KAAK;AACP,aAAO,KAAK,iBAAgB;AAE9B,UAAM/N,IAAa,OAAO,OAAO,MAAM,UAAUuE,CAAY,GAAG;AAAA,MAC9D,UAAUzZ,EAAA,MAAKuzE;AAAA,MACf,OAAOvzE,EAAA,MAAK+zE;AAAA,IAClB,CAAK;AAED,QADA,KAAK,WAAW7+D,CAAU,GACtBuE;AACF,aAAAvE,EAAW,YAAY/c,EAAA,MAAK87E,IAAAO,IAAL,WAAsB,KAC7Ct/D,EAAW,oBAAoB,KAAK,iBAAiB,EAAI,GACzDA,EAAW,SAAS,IACbA;AAET,UAAM;AAAA,MACJ,YAAAwE;AAAA,MACA,SAAAzS;AAAA,IACN,IAAQ,KAAK,iBAAiB,EAAK;AAO/B,QANI,CAACyS,KAAczS,MACjBiO,EAAW,oBAAoB;AAAA,MAC7B,MAAM;AAAA,MACN,KAAKjO;AAAA,IACb,IAEQ,KAAK,qBAAqB;AAC5B,YAAMgvE,IAAU99E,EAAA,MAAK87E,IAAAjY,IAAL,WAAwB9mD;AACxC,aAAI+gE,EAAQ,SACH,QAELA,EAAQ,gBACV,OAAO/gE,EAAW,oBAElBA,EAAW,kBAAkB,eAAe,KAAK,aAAa,gBAAgB,IAEhFA,EAAW,KAAK,KAAK,qBACrB,OAAOA,EAAW,UACXA;AAAA,IACT;AACA,QAAI+N,MAAY;AACd,aAAO/N;AAET,IAAA+N,EAAQ,WAARA,EAAQ,SAAW,oBAAI,IAAG;AAC1B,UAAMizD,IAAOl2E,EAAA,MAAK+zE,OAAU7+D,EAAW,KAAK,CAAC,IAAIA,EAAW,KAAK,CAAC,MAAMA,EAAW,KAAK,CAAC,IAAIA,EAAW,KAAK,CAAC,KAAK;AACnH,QAAI,CAAC+N,EAAQ,OAAO,IAAIjjB,EAAA,MAAKuzE,GAAS;AACpC,MAAAtwD,EAAQ,OAAO,IAAIjjB,EAAA,MAAKuzE,KAAW;AAAA,QACjC,MAAA2C;AAAA,QACA,YAAAhhE;AAAA,MACR,CAAO,GACDA,EAAW,SAAS/c,EAAA,MAAK87E,IAAAO,IAAL,WAAsB;AAAA,aACjCx0E,EAAA,MAAK+zE,KAAQ;AACtB,YAAMoC,IAAWlzD,EAAQ,OAAO,IAAIjjB,EAAA,MAAKuzE,GAAS;AAClD,MAAI2C,IAAOC,EAAS,SAClBA,EAAS,OAAOD,GAChBC,EAAS,WAAW,OAAO,MAAK,GAChCA,EAAS,WAAW,SAASh+E,EAAA,MAAK87E,IAAAO,IAAL,WAAsB;AAAA,IAEvD;AACA,WAAOt/D;AAAA,EACT;AAAA,EAeA,wBAAwBkB,GAAY;AAClC,WAAI,KAAK,WACPA,EAAW,KAAI,GACR,SAETA,EAAW,aAAa;AAAA,MACtB,MAAM,KAAK,WAAU;AAAA,MACrB,OAAO,KAAK;AAAA,IAClB,CAAK,GACM;AAAA,EACT;AACF;AA9qBEk9D,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAXFC,KAAA,eAuDEC,KAAiB,SAAC5uE,GAAM8wE,IAAS,IAAO;AACtC,MAAI,CAAC9wE,GAAM;AACT,SAAK,OAAM;AACX;AAAA,EACF;AACA,EAAArF,EAAA,MAAKqzE,IAAUhuE,EAAK,SACf8wE,MACHn2E,EAAA,MAAKszE,IAAYjuE,EAAK,KACtBrF,EAAA,MAAK8zE,IAASzuE,EAAK,SAEjBA,EAAK,QACPrF,EAAA,MAAK0zE,IAAkBruE,EAAK,KAAK,OAEnCnN,EAAA,MAAK87E,IAAAI,IAAL;AACF,GACAF,KAAc,WAAG;AAGf,MAFAl0E,EAAA,MAAKuzE,IAAiB,OACtB,KAAK,WAAW,cAAc,EAAK,GAC/B,EAACxzE,EAAA,MAAK4zE,KAGV;AAAA,QAAI,KAAK,WAAW,gCAAgC,KAAK,WAAW,qBAAqB5zE,EAAA,MAAKszE,KAAS;AACrG,WAAK,iBAAiB,KAAK,MAAM;AAC/B,aAAK,aAAa,KAAI,GACtB,KAAK,WAAW,YAAY,MAAM,EAAI;AAAA,MACxC,CAAC;AACD;AAAA,IACF;AACA,QAAI,CAAC,KAAK,WAAW,gCAAgC,KAAK,WAAW,qBAAqBtzE,EAAA,MAAKszE,KAAS;AACtG,WAAK,iBAAiB;AAAA,QACpB,QAAQ;AAAA,QACR,MAAM;AAAA,UACJ,gBAAgB;AAAA,UAChB,eAAe;AAAA,QACzB;AAAA,MACA,CAAO;AACD,UAAI;AACF,aAAK,eAAc;AAAA,MACrB,QAAQ;AAAA,MAAC;AAAA,IACX;AACA,SAAK,IAAI,MAAK;AAAA;AAChB,GAkDAc,KAAU,WAAG;AACX,MAAIp0E,EAAA,MAAKuzE,KAAW;AAClB,SAAK,WAAW,cAAc,EAAI,GAClC,KAAK,WAAW,aAAa,UAAUvzE,EAAA,MAAKuzE,GAAS,EAAE,KAAK,CAAAjuE,MAAQnN,EAAA,MAAK87E,IAAAC,IAAL,WAAuB5uE,GAAM,GAAK,EAAE,QAAQ,MAAMnN,EAAA,MAAK87E,IAAAE,IAAL,UAAqB;AAC3I;AAAA,EACF;AACA,MAAIn0E,EAAA,MAAKyzE,KAAY;AACnB,UAAMxiF,IAAM+O,EAAA,MAAKyzE;AACjB,IAAAxzE,EAAA,MAAKwzE,IAAa,OAClB,KAAK,WAAW,cAAc,EAAI,GAClCxzE,EAAA,MAAKuzE,IAAiB,KAAK,WAAW,aAAa,WAAWviF,CAAG,EAAE,KAAK,CAAAqU,MAAQnN,EAAA,MAAK87E,IAAAC,IAAL,WAAuB5uE,EAAK,EAAE,QAAQ,MAAMnN,EAAA,MAAK87E,IAAAE,IAAL,UAAqB;AACjJ;AAAA,EACF;AACA,MAAIn0E,EAAA,MAAK0zE,KAAa;AACpB,UAAM1pE,IAAOhK,EAAA,MAAK0zE;AAClB,IAAAzzE,EAAA,MAAKyzE,IAAc,OACnB,KAAK,WAAW,cAAc,EAAI,GAClCzzE,EAAA,MAAKuzE,IAAiB,KAAK,WAAW,aAAa,YAAYxpE,CAAI,EAAE,KAAK,CAAA1E,MAAQnN,EAAA,MAAK87E,IAAAC,IAAL,WAAuB5uE,EAAK,EAAE,QAAQ,MAAMnN,EAAA,MAAK87E,IAAAE,IAAL,UAAqB;AACnJ;AAAA,EACF;AACA,QAAMp0E,IAAQ,SAAS,cAAc,OAAO;AAC5C,EAAAA,EAAM,OAAO,QACbA,EAAM,SAASgD,GAAwB,KAAK,GAAG;AAC/C,QAAM4D,IAAS,KAAK,WAAW;AAC/B,EAAA1G,EAAA,MAAKuzE,IAAiB,IAAI,QAAQ,CAAAn5E,MAAW;AAC3C,IAAA0F,EAAM,iBAAiB,UAAU,YAAY;AAC3C,UAAI,CAACA,EAAM,SAASA,EAAM,MAAM,WAAW;AACzC,aAAK,OAAM;AAAA,WACN;AACL,aAAK,WAAW,cAAc,EAAI;AAClC,cAAMuF,IAAO,MAAM,KAAK,WAAW,aAAa,YAAYvF,EAAM,MAAM,CAAC,CAAC;AAC1E,aAAK,iBAAiB;AAAA,UACpB,QAAQ;AAAA,UACR,MAAM;AAAA,YACJ,gBAAgB,KAAK,WAAW;AAAA,UAC9C;AAAA,QACA,CAAW,GACD5H,EAAA,MAAK87E,IAAAC,IAAL,WAAuB5uE;AAAA,MACzB;AACA,MAAAjL,EAAO;AAAA,IACT,GAAG;AAAA,MACD,QAAAsM;AAAA,IACR,CAAO,GACD5G,EAAM,iBAAiB,UAAU,MAAM;AACrC,WAAK,OAAM,GACX1F,EAAO;AAAA,IACT,GAAG;AAAA,MACD,QAAAsM;AAAA,IACR,CAAO;AAAA,EACH,CAAC,EAAE,QAAQ,MAAMxO,EAAA,MAAK87E,IAAAE,IAAL,UAAqB,IACtCp0E,EAAM,MAAK;AACb,GAuGAs0E,KAAa,WAAG;AA73wBlB,MAAAtgF;AA83wBI,QAAM;AAAA,IACJ,KAAA0N;AAAA,EACN,IAAQ;AACJ,MAAI;AAAA,IACF,OAAA3D;AAAA,IACA,QAAAC;AAAA,EACN,IAAQiC,EAAA,MAAKszE;AACT,QAAM,CAACzxE,GAAWC,CAAU,IAAI,KAAK,gBAC/Bu0E,IAAY;AAClB,MAAI,KAAK;AACP,IAAAv4E,IAAQ,KAAK,QAAQ+D,GACrB9D,IAAS,KAAK,SAAS+D;AAAA,WACdhE,IAAQu4E,IAAYx0E,KAAa9D,IAASs4E,IAAYv0E,GAAY;AAC3E,UAAMkkB,IAAS,KAAK,IAAIqwD,IAAYx0E,IAAY/D,GAAOu4E,IAAYv0E,IAAa/D,CAAM;AACtF,IAAAD,KAASkoB,GACTjoB,KAAUioB;AAAA,EACZ;AACA,OAAK,WAAW,cAAc,EAAK;AACnC,QAAM3b,IAASpK,EAAA,MAAK2zE,IAAU,SAAS,cAAc,QAAQ;AAC7D,EAAAvpE,EAAO,aAAa,QAAQ,KAAK,GACjC,KAAK,aAAaA,CAAM,GACxB,KAAK,QAAQvM,IAAQ+D,GACrB,KAAK,SAAS9D,IAAS+D,GACvB,KAAK,QAAO,IACR/N,IAAA,KAAK,oBAAL,QAAAA,EAAsB,aACxB,KAAK,OAAM,IAEX,KAAK,kBAAiB,GAExB,KAAK,kBAAkB,OACnB,CAAC,KAAK,WAAW,gCAAgC,CAAC,KAAK,WAAW,qBAAqB,KAAK,yBAC9F0N,EAAI,SAAS,KAEftJ,EAAA,MAAK87E,IAAAM,IAAL,YACKv0E,EAAA,MAAKg0E,QACR,KAAK,OAAO,kBAAkB,IAAI,GAClC/zE,EAAA,MAAK+zE,IAA2B,MAElC,KAAK,iBAAiB;AAAA,IACpB,QAAQ;AAAA,EACd,CAAK,GACGh0E,EAAA,MAAK2zE,OACP,KAAK,IAAI,aAAa,oBAAoB3zE,EAAA,MAAK2zE,GAAe,GAE3D,KAAK,uBACR,KAAK,WAAW,UAAU,gCAAgC;AAE9D,GAqFAW,KAAY,SAACx2E,GAAOC,GAAQ;AAC1B,QAAM;AAAA,IACJ,OAAOi3E;AAAA,IACP,QAAQC;AAAA,EACd,IAAQj1E,EAAA,MAAKszE;AACT,MAAIlvD,IAAW4wD,GACX3wD,IAAY4wD,GACZ1qE,IAASvK,EAAA,MAAKszE;AAClB,SAAOlvD,IAAW,IAAItmB,KAASumB,IAAY,IAAItmB,KAAQ;AACrD,UAAMo0E,IAAY/tD,GACZguD,IAAa/tD;AACnB,IAAID,IAAW,IAAItmB,MACjBsmB,IAAWA,KAAY,QAAQ,KAAK,MAAMA,IAAW,CAAC,IAAI,IAAI,KAAK,KAAKA,IAAW,CAAC,IAElFC,IAAY,IAAItmB,MAClBsmB,IAAYA,KAAa,QAAQ,KAAK,MAAMA,IAAY,CAAC,IAAI,IAAI,KAAK,KAAKA,IAAY,CAAC;AAE1F,UAAM/Z,IAAY,IAAI,gBAAgB8Z,GAAUC,CAAS;AAEzD,IADY/Z,EAAU,WAAW,IAAI,EACjC,UAAUC,GAAQ,GAAG,GAAG4nE,GAAWC,GAAY,GAAG,GAAGhuD,GAAUC,CAAS,GAC5E9Z,IAASD,EAAU,sBAAqB;AAAA,EAC1C;AACA,SAAOC;AACT,GACAgqE,KAAW,WAAG;AACZ,QAAM,CAAC58D,GAAaC,CAAY,IAAI,KAAK,kBACnC;AAAA,IACJ,OAAA9Z;AAAA,IACA,QAAAC;AAAA,EACN,IAAQ,MACEm3E,IAAc,IAAI7yE,GAAW,GAC7B8yE,IAAc,KAAK,KAAKr3E,IAAQ6Z,IAAcu9D,EAAY,EAAE,GAC5DE,IAAe,KAAK,KAAKr3E,IAAS6Z,IAAes9D,EAAY,EAAE,GAC/D7qE,IAASrK,EAAA,MAAK4zE;AACpB,MAAI,CAACvpE,KAAUA,EAAO,UAAU8qE,KAAe9qE,EAAO,WAAW+qE;AAC/D;AAEF,EAAA/qE,EAAO,QAAQ8qE,GACf9qE,EAAO,SAAS+qE;AAChB,QAAM7qE,IAASvK,EAAA,MAAK+zE,MAAS/zE,EAAA,MAAKszE,MAAUn7E,EAAA,MAAK87E,IAAAK,IAAL,WAAkBa,GAAaC,IACrE/zE,IAAMgJ,EAAO,WAAW,IAAI;AAClC,EAAAhJ,EAAI,SAAS,KAAK,WAAW,WAC7BA,EAAI,UAAUkJ,GAAQ,GAAG,GAAGA,EAAO,OAAOA,EAAO,QAAQ,GAAG,GAAG4qE,GAAaC,CAAY;AAC1F,GACAZ,KAAgB,SAAC8B,GAAO;AACtB,MAAIA,GAAO;AACT,QAAIt2E,EAAA,MAAK+zE,KAAQ;AACf,YAAM9iF,IAAM,KAAK,WAAW,aAAa,UAAU+O,EAAA,MAAKuzE,GAAS;AACjE,UAAItiF;AACF,eAAOA;AAAA,IAEX;AACA,UAAMoZ,IAAS,SAAS,cAAc,QAAQ;AAC9C,WAAC;AAAA,MACC,OAAOA,EAAO;AAAA,MACd,QAAQA,EAAO;AAAA,IACvB,IAAUrK,EAAA,MAAKszE,KACGjpE,EAAO,WAAW,IAAI,EAC9B,UAAUrK,EAAA,MAAKszE,KAAS,GAAG,CAAC,GACzBjpE,EAAO,UAAS;AAAA,EACzB;AACA,MAAIrK,EAAA,MAAK+zE,KAAQ;AACf,UAAM,CAAClyE,GAAWC,CAAU,IAAI,KAAK,gBAC/BhE,IAAQ,KAAK,MAAM,KAAK,QAAQ+D,IAAYtF,GAAc,gBAAgB,GAC1EwB,IAAS,KAAK,MAAM,KAAK,SAAS+D,IAAavF,GAAc,gBAAgB,GAC7E+N,IAAY,IAAI,gBAAgBxM,GAAOC,CAAM;AAEnD,WADYuM,EAAU,WAAW,IAAI,EACjC,UAAUtK,EAAA,MAAKszE,KAAS,GAAG,GAAGtzE,EAAA,MAAKszE,IAAQ,OAAOtzE,EAAA,MAAKszE,IAAQ,QAAQ,GAAG,GAAGx1E,GAAOC,CAAM,GACvFuM,EAAU,sBAAqB;AAAA,EACxC;AACA,SAAO,gBAAgBtK,EAAA,MAAKszE,GAAO;AACrC,GA8JAtX,KAAkB,SAAC9mD,GAAY;AAvuxBjC,MAAAnhB;AAwuxBI,QAAM;AAAA,IACJ,WAAAwf;AAAA,IACA,mBAAmB;AAAA,MACjB,SAAAtM;AAAA,IACR;AAAA,EACA,IAAQ,KAAK,cACHsvE,IAAkBrhE,EAAW,cAAc3B,GAC3CijE,OAAiBziF,IAAAmhB,EAAW,sBAAX,gBAAAnhB,EAA8B,QAAO,QAAQkT;AACpE,SAAO;AAAA,IACL,QAAQ,CAAC,KAAK,oBAAoB,CAAC,KAAK,iBAAiB,CAAC,KAAK,mBAAmBsvE,KAAmBC;AAAA,IACrG,eAAAA;AAAA,EACN;AACE,GAvpBAl6E,EAZIm4E,IAYG,SAAQ,UACfn4E,EAbIm4E,IAaG,eAAc/kF,EAAqB;AA9lwB5C,IAAAwpE,IAAAud,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAvwE,GAAAyG,IAAA+pE,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA2wxBA,MAAMC,KAAN,MAAMA,GAAsB;AAAA,EAmB1B,YAAY;AAAA,IACV,WAAA9vE;AAAA,IACA,WAAAuL;AAAA,IACA,KAAA9R;AAAA,IACA,iBAAAq4D;AAAA,IACA,sBAAAF;AAAA,IACA,iBAAAn2C;AAAA,IACA,WAAAuhD;AAAA,IACA,WAAAxwD;AAAA,IACA,UAAA9S;AAAA,IACA,MAAA0X;AAAA,EACJ,GAAK;AA9BL,IAAA1gB,EAAA,MAAA6+E;AACE,IAAA7+E,EAAA,MAAAwgE;AACA,IAAAxgE,EAAA,MAAA+9E,IAAc;AACd,IAAA/9E,EAAA,MAAAg+E,IAAmB;AACnB,IAAAh+E,EAAA,MAAAi+E,IAAW;AACX,IAAAj+E,EAAA,MAAAk+E,IAAwB;AACxB,IAAAl+E,EAAA,MAAAm+E,IAAW,oBAAI,IAAG;AAClB,IAAAn+E,EAAA,MAAAo+E,IAAkB;AAClB,IAAAp+E,EAAA,MAAAq+E,IAAe;AACf,IAAAr+E,EAAA,MAAAs+E,IAAc;AACd,IAAAt+E,EAAA,MAAAu+E,IAAa;AACb,IAAAv+E,EAAA,MAAAw+E,IAAkB;AAClB,IAAAx+E,EAAA,MAAAy+E,IAAa;AACb,IAAAz+E,EAAA,MAAA0+E,IAAmB;AACnB,IAAA1+E,EAAA,MAAA2+E,IAAuB;AACvB,IAAA3+E,EAAA,MAAA4+E,IAA4B;AAC5B,IAAA5+E,EAAA,MAAAqO;AAeE,UAAMgxE,IAAc,CAAC,GAAG/3E,EAAA83E,IAAsBtqE,IAAa,OAAM,CAAE;AACnE,QAAI,CAACsqE,GAAsB,cAAc;AACvC,MAAAA,GAAsB,eAAe;AACrC,iBAAWhxE,KAAcixE;AACvB,QAAAjxE,EAAW,WAAWsS,GAAMpR,CAAS;AAAA,IAEzC;AACA,IAAAA,EAAU,oBAAoB+vE,CAAW,GACzC93E,EAAA,MAAK8G,GAAaiB,IAClB,KAAK,YAAYuL,GACjB,KAAK,MAAM9R,GACXxB,EAAA,MAAKi5D,IAAwBU,IAC7B35D,EAAA,MAAKy2E,IAAmBjzD,IACxB,KAAK,WAAW/hB,GAChBzB,EAAA,MAAKk3E,IAAa3iE,IAClB,KAAK,YAAYwwD,GACjB,KAAK,cAAclL,GACnB95D,EAAA,MAAK+G,GAAW,SAAS,IAAI;AAAA,EAC/B;AAAA,EACA,IAAI,UAAU;AACZ,WAAO/G,EAAA,MAAK62E,IAAS,SAAS;AAAA,EAChC;AAAA,EACA,IAAI,cAAc;AAChB,WAAO,KAAK,WAAW72E,EAAA,MAAK+G,GAAW,QAAO,MAAOrX,EAAqB;AAAA,EAC5E;AAAA,EACA,cAAc0B,GAAS;AACrB,IAAA4O,EAAA,MAAK+G,GAAW,cAAc3V,CAAO;AAAA,EACvC;AAAA,EACA,WAAWyiB,IAAO7T,EAAA,MAAK+G,GAAW,QAAO,GAAI;AAE3C,YADA5O,EAAA,MAAKo/E,IAAAM,IAAL,YACQhkE,GAAI;AAAA,MACV,KAAKnkB,EAAqB;AACxB,aAAK,IAAI,UAAU,OAAO,cAAc,EAAI,GAC5C,KAAK,qBAAoB,GACzB,KAAK,oBAAoB,EAAK,GAC9B,KAAK,mCAAmC,EAAI,GAC5C,KAAK,aAAY;AACjB;AAAA,MACF,KAAKA,EAAqB;AACxB,aAAK,qBAAoB,GACzB,KAAK,oBAAoB,EAAI,GAC7B,KAAK,YAAW;AAChB;AAAA,MACF,KAAKA,EAAqB;AACxB,aAAK,oBAAmB,GACxB,KAAK,oBAAoB,EAAK,GAC9B,KAAK,aAAY;AACjB;AAAA,MACF;AACE,aAAK,qBAAoB,GACzB,KAAK,oBAAoB,EAAI,GAC7B,KAAK,YAAW;AAAA,IACxB;AACI,SAAK,mCAAmC,EAAK;AAC7C,UAAM;AAAA,MACJ,WAAAsoF;AAAA,IACN,IAAQ,KAAK;AAET,QADAA,EAAU,OAAO,cAAc,EAAK,GAChCnkE,MAASnkB,EAAqB;AAChC,MAAAsoF,EAAU,OAAO,kBAAkB,EAAI;AAAA,SAClC;AACL,MAAAA,EAAU,OAAO,kBAAkB,EAAK;AACxC,iBAAWlxE,KAAc9G,EAAA83E,IAAsBtqE,IAAa,OAAM;AAChE,QAAAwqE,EAAU,OAAO,GAAGlxE,EAAW,KAAK,WAAW+M,MAAS/M,EAAW,WAAW;AAAA,IAElF;AACA,SAAK,IAAI,SAAS;AAAA,EACpB;AAAA,EACA,aAAa0N,GAAW;AA92xB1B,QAAAzgB;AA+2xBI,WAAOygB,QAAczgB,IAAAiM,EAAA,MAAKm3E,QAAL,gBAAApjF,EAAiB;AAAA,EACxC;AAAA,EACA,gBAAgBwhB,GAAW;AACzB,IAAAvV,EAAA,MAAK+G,GAAW,gBAAgBwO,CAAS;AAAA,EAC3C;AAAA,EACA,YAAYoB,GAAQ;AAClB,IAAA3W,EAAA,MAAK+G,GAAW,YAAY4P,CAAM;AAAA,EACpC;AAAA,EACA,eAAela,GAAM;AACnB,IAAAuD,EAAA,MAAK+G,GAAW,eAAetK,CAAI;AAAA,EACrC;AAAA,EACA,cAAcod,IAAU,IAAO;AAC7B,SAAK,IAAI,UAAU,OAAO,WAAW,CAACA,CAAO;AAAA,EAC/C;AAAA,EACA,oBAAoBA,IAAU,IAAO;AACnC,SAAK,IAAI,UAAU,OAAO,YAAY,CAACA,CAAO;AAAA,EAChD;AAAA,EACA,mCAAmCA,IAAU,IAAO;AAh4xBtD,QAAA9lB;AAi4xBI,KAAAA,IAAAiM,EAAA,MAAK02E,QAAL,QAAA3iF,EAAuB,oBAAoB8lB;AAAA,EAC7C;AAAA,EAIA,MAAM,SAAS;AAt4xBjB,QAAA9lB;AAu4xBI,IAAAkM,EAAA,MAAK+2E,IAAc,KACnB,KAAK,IAAI,WAAW,GACpB,KAAK,oBAAoB,EAAI,GAC7B,KAAK,IAAI,UAAU,OAAO,cAAc,EAAK,IAC7CjjF,IAAAiM,EAAA,MAAKq3E,QAAL,QAAAtjF,EAA2B,SAC3BkM,EAAA,MAAKo3E,IAAuB;AAC5B,UAAMY,IAAuB,oBAAI,IAAG;AACpC,eAAWxxE,KAAUzG,EAAA,MAAKu3E,IAAAC;AACxB,MAAA/wE,EAAO,cAAa,GACpBA,EAAO,KAAK,EAAI,GACZA,EAAO,wBACTzG,EAAA,MAAK+G,GAAW,gCAAgCN,CAAM,GACtDwxE,EAAqB,IAAIxxE,EAAO,mBAAmB;AAGvD,UAAMgd,IAAkBzjB,EAAA,MAAK02E;AAC7B,QAAIjzD;AACF,iBAAWy0D,KAAYz0D,EAAgB,0BAA0B;AAK/D,YAJAy0D,EAAS,KAAI,GACTl4E,EAAA,MAAK+G,GAAW,2BAA2BmxE,EAAS,KAAK,EAAE,KAG3DD,EAAqB,IAAIC,EAAS,KAAK,EAAE;AAC3C;AAEF,cAAMzxE,IAAS,MAAM,KAAK,YAAYyxE,CAAQ;AAC9C,QAAKzxE,MAGL,KAAK,aAAaA,CAAM,GACxBA,EAAO,cAAa;AAAA,MACtB;AAEF,IAAAxG,EAAA,MAAK+2E,IAAc,KACnBh3E,EAAA,MAAK+G,GAAW,UAAU,SAAS,mBAAmB;AAAA,MACpD,QAAQ;AAAA,MACR,YAAY,KAAK,YAAY;AAAA,IACnC,CAAK;AAAA,EACH;AAAA,EACA,UAAU;AA96xBZ,QAAAhT;AAm7xBI,QAJAkM,EAAA,MAAK82E,IAAe,KACpB,KAAK,IAAI,WAAW,IACpB,KAAK,oBAAoB,EAAK,GAC9B,KAAK,IAAI,UAAU,OAAO,cAAc,EAAI,GACxC/2E,EAAA,MAAKm3E,OAAc,CAACn3E,EAAA,MAAKq3E,KAAsB;AACjD,MAAAp3E,EAAA,MAAKo3E,IAAuB,IAAI,gBAAe;AAC/C,YAAM1wE,IAAS3G,EAAA,MAAK+G,GAAW,eAAe/G,EAAA,MAAKq3E,GAAoB;AACvE,MAAAr3E,EAAA,MAAKm3E,IAAW,IAAI,iBAAiB,eAAe,CAAAz3E,MAAK;AAEvD,cAAM;AAAA,UACJ,SAAAy4E;AAAA,UACA,SAAAC;AAAA,UACA,WAAAjvE;AAAA,QACV,IAAYzJ,GACE24E,IAA2Br4E,EAAA,MAAKs3E;AACtC,YAAInuE,IAAYkvE,IAA2B,KAAqB;AAC9D,UAAAp4E,EAAA,MAAKq3E,IAA4BnuE;AACjC;AAAA,QACF;AACA,QAAAlJ,EAAA,MAAKq3E,IAA4B;AACjC,cAAM;AAAA,UACJ,WAAAU;AAAA,QACV,IAAY,KAAK;AACT,QAAAA,EAAU,OAAO,eAAe,EAAI;AACpC,cAAM1jB,IAAW,SAAS,kBAAkB6jB,GAASC,CAAO;AAE5D,YADAJ,EAAU,OAAO,eAAe,EAAK,GACjC,CAAC,KAAK,IAAI,SAAS1jB,EAAS,CAAC,CAAC;AAChC;AAEF,YAAIv5D;AACJ,cAAMu9E,IAAQ,IAAI,OAAO,IAAI7oF,EAAsB,SAAS;AAC5D,mBAAWuL,KAAWs5D;AACpB,cAAIgkB,EAAM,KAAKt9E,EAAQ,EAAE,GAAG;AAC1B,YAAAD,IAAKC,EAAQ;AACb;AAAA,UACF;AAEF,YAAI,CAACD;AACH;AAEF,cAAM0L,IAASzG,EAAA,MAAK62E,IAAS,IAAI97E,CAAE;AACnC,SAAI0L,KAAA,gBAAAA,EAAQ,yBAAwB,SAClC/G,EAAE,gBAAe,GACjBA,EAAE,eAAc,GAChB+G,EAAO,SAAS/G,CAAC;AAAA,MAErB,GAAG;AAAA,QACD,QAAAiH;AAAA,QACA,SAAS;AAAA,MACjB,CAAO;AAAA,IACH;AACA,UAAM8c,IAAkBzjB,EAAA,MAAK02E,KACvB6B,IAAqB,CAAA;AAC3B,QAAI90D,GAAiB;AACnB,YAAM+0D,IAAqB,oBAAI,IAAG,GAC5BC,IAAmB,oBAAI,IAAG;AAChC,iBAAWhyE,KAAUzG,EAAA,MAAKu3E,IAAAC,KAAqB;AAE7C,YADA/wE,EAAO,eAAc,GACjB,CAACA,EAAO,qBAAqB;AAC/B,UAAA8xE,EAAmB,KAAK9xE,CAAM;AAC9B;AAAA,QACF;AACA,YAAIA,EAAO,UAAS,MAAO,MAAM;AAC/B,UAAA+xE,EAAmB,IAAI/xE,EAAO,qBAAqBA,CAAM;AACzD;AAAA,QACF;AACE,UAAAgyE,EAAiB,IAAIhyE,EAAO,qBAAqBA,CAAM;AAEzD,SAAA1S,IAAA,KAAK,sBAAsB0S,EAAO,mBAAmB,MAArD,QAAA1S,EAAwD,QACxD0S,EAAO,OAAM;AAAA,MACf;AACA,YAAMiyE,IAAYj1D,EAAgB,uBAAsB;AACxD,iBAAWy0D,KAAYQ,GAAW;AAChC,cAAM;AAAA,UACJ,IAAA39E;AAAA,QACV,IAAYm9E,EAAS;AACb,YAAIl4E,EAAA,MAAK+G,GAAW,2BAA2BhM,CAAE,GAAG;AAClD,UAAAm9E,EAAS,aAAa;AAAA,YACpB,SAAS;AAAA,UACrB,CAAW;AACD;AAAA,QACF;AACA,YAAIzxE,IAASgyE,EAAiB,IAAI19E,CAAE;AACpC,YAAI0L,GAAQ;AACV,UAAAA,EAAO,uBAAuByxE,CAAQ,GACtCzxE,EAAO,KAAK,EAAK,GACjByxE,EAAS,KAAI;AACb;AAAA,QACF;AACA,QAAAzxE,IAAS+xE,EAAmB,IAAIz9E,CAAE,GAC9B0L,MACFzG,EAAA,MAAK+G,GAAW,6BAA6BN,CAAM,GAC/CA,EAAO,wBAAwByxE,CAAQ,KACzCzxE,EAAO,KAAK,EAAK,IAGrByxE,EAAS,KAAI;AAAA,MACf;AAAA,IACF;AACA,IAAA//E,EAAA,MAAKo/E,IAAAM,IAAL,YACI,KAAK,YACP,KAAK,IAAI,SAAS;AAEpB,UAAM;AAAA,MACJ,WAAAG;AAAA,IACN,IAAQ,KAAK;AACT,eAAWlxE,KAAc9G,EAAA83E,IAAsBtqE,IAAa,OAAM;AAChE,MAAAwqE,EAAU,OAAO,GAAGlxE,EAAW,KAAK,SAAS;AAE/C,SAAK,qBAAoB,GACzB,KAAK,mCAAmC,EAAI,GAC5C2c,KAAA,QAAAA,EAAiB,sBAAsB80D,IACvCt4E,EAAA,MAAK82E,IAAe;AAAA,EACtB;AAAA,EACA,sBAAsBh8E,GAAI;AAjiyB5B,QAAAhH;AAkiyBI,aAAOA,IAAAiM,EAAA,MAAK02E,QAAL,gBAAA3iF,EAAuB,sBAAsBgH,OAAO;AAAA,EAC7D;AAAA,EACA,gBAAgB0L,GAAQ;AAEtB,IADsBzG,EAAA,MAAK+G,GAAW,UAAS,MACzBN,KAGtBzG,EAAA,MAAK+G,GAAW,gBAAgBN,CAAM;AAAA,EACxC;AAAA,EACA,sBAAsB;AA3iyBxB,QAAA1S;AA6iyBI,QADA,KAAK,IAAI,WAAW,KAChBA,IAAAiM,EAAA,MAAKm3E,QAAL,QAAApjF,EAAiB,OAAO,CAACiM,EAAA,MAAKo3E,KAAkB;AAClD,MAAAn3E,EAAA,MAAKm3E,IAAmB,IAAI,gBAAe;AAC3C,YAAMzwE,IAAS3G,EAAA,MAAK+G,GAAW,eAAe/G,EAAA,MAAKo3E,GAAgB;AACnE,MAAAp3E,EAAA,MAAKm3E,IAAW,IAAI,iBAAiB,eAAeh/E,EAAA,MAAKo/E,IAAAE,IAAsB,KAAK,IAAI,GAAG;AAAA,QACzF,QAAA9wE;AAAA,MACR,CAAO,GACD3G,EAAA,MAAKm3E,IAAW,IAAI,UAAU,IAAI,cAAc;AAAA,IAClD;AAAA,EACF;AAAA,EACA,uBAAuB;AAtjyBzB,QAAApjF;AAujyBI,SAAK,IAAI,WAAW,IAChBA,IAAAiM,EAAA,MAAKm3E,QAAL,QAAApjF,EAAiB,OAAOiM,EAAA,MAAKo3E,QAC/Bp3E,EAAA,MAAKo3E,IAAiB,MAAK,GAC3Bn3E,EAAA,MAAKm3E,IAAmB,OACxBp3E,EAAA,MAAKm3E,IAAW,IAAI,UAAU,OAAO,cAAc;AAAA,EAEvD;AAAA,EA+BA,cAAc;AACZ,QAAIn3E,EAAA,MAAK22E;AACP;AAEF,IAAA12E,EAAA,MAAK02E,IAAW,IAAI,gBAAe;AACnC,UAAMhwE,IAAS3G,EAAA,MAAK+G,GAAW,eAAe/G,EAAA,MAAK22E,GAAQ;AAC3D,SAAK,IAAI,iBAAiB,eAAe,KAAK,YAAY,KAAK,IAAI,GAAG;AAAA,MACpE,QAAAhwE;AAAA,IACN,CAAK;AACD,UAAMuR,IAAY,KAAK,UAAU,KAAK,IAAI;AAC1C,SAAK,IAAI,iBAAiB,aAAaA,GAAW;AAAA,MAChD,QAAAvR;AAAA,IACN,CAAK,GACD,KAAK,IAAI,iBAAiB,iBAAiBuR,GAAW;AAAA,MACpD,QAAAvR;AAAA,IACN,CAAK;AAAA,EACH;AAAA,EACA,eAAe;AA7myBjB,QAAA5S;AA8myBI,KAAAA,IAAAiM,EAAA,MAAK22E,QAAL,QAAA5iF,EAAe,SACfkM,EAAA,MAAK02E,IAAW;AAAA,EAClB;AAAA,EACA,OAAOlwE,GAAQ;AACb,IAAAzG,EAAA,MAAK62E,IAAS,IAAIpwE,EAAO,IAAIA,CAAM;AACnC,UAAM;AAAA,MACJ,qBAAAwP;AAAA,IACN,IAAQxP;AACJ,IAAIwP,KAAuBjW,EAAA,MAAK+G,GAAW,2BAA2BkP,CAAmB,KACvFjW,EAAA,MAAK+G,GAAW,+BAA+BN,CAAM;AAAA,EAEzD;AAAA,EACA,OAAOA,GAAQ;AA1nyBjB,QAAA1S;AA2nyBI,IAAAiM,EAAA,MAAK62E,IAAS,OAAOpwE,EAAO,EAAE,IAC9B1S,IAAAiM,EAAA,MAAKk5D,QAAL,QAAAnlE,EAA4B,yBAAyB0S,EAAO,aACxD,CAACzG,EAAA,MAAK+2E,OAAgBtwE,EAAO,uBAC/BzG,EAAA,MAAK+G,GAAW,4BAA4BN,CAAM;AAAA,EAEtD;AAAA,EACA,OAAOA,GAAQ;AACb,SAAK,OAAOA,CAAM,GAClBzG,EAAA,MAAK+G,GAAW,aAAaN,CAAM,GACnCA,EAAO,IAAI,OAAM,GACjBA,EAAO,kBAAkB;AAAA,EAC3B;AAAA,EACA,aAAaA,GAAQ;AAvoyBvB,QAAA1S;AAwoyBI,IAAI0S,EAAO,WAAW,SAGlBA,EAAO,UAAUA,EAAO,wBAC1BzG,EAAA,MAAK+G,GAAW,4BAA4BN,CAAM,GAClD4f,GAAiB,wBAAwB5f,CAAM,GAC/CA,EAAO,sBAAsB,OAE/B,KAAK,OAAOA,CAAM,IAClB1S,IAAA0S,EAAO,WAAP,QAAA1S,EAAe,OAAO0S,IACtBA,EAAO,UAAU,IAAI,GACjBA,EAAO,OAAOA,EAAO,oBACvBA,EAAO,IAAI,OAAM,GACjB,KAAK,IAAI,OAAOA,EAAO,GAAG;AAAA,EAE9B;AAAA,EACA,IAAIA,GAAQ;AACV,QAAI,EAAAA,EAAO,WAAW,QAAQA,EAAO,kBAMrC;AAAA,UAHA,KAAK,aAAaA,CAAM,GACxBzG,EAAA,MAAK+G,GAAW,UAAUN,CAAM,GAChC,KAAK,OAAOA,CAAM,GACd,CAACA,EAAO,iBAAiB;AAC3B,cAAMhF,IAAMgF,EAAO,OAAM;AACzB,aAAK,IAAI,OAAOhF,CAAG,GACnBgF,EAAO,kBAAkB;AAAA,MAC3B;AACA,MAAAA,EAAO,kBAAiB,GACxBA,EAAO,UAAU,CAACzG,EAAA,MAAKg3E,GAAW,GAClCh3E,EAAA,MAAK+G,GAAW,uBAAuBN,CAAM,GAC7CA,EAAO,iBAAiBA,EAAO,oBAAoB;AAAA;AAAA,EACrD;AAAA,EACA,gBAAgBA,GAAQ;AAzqyB1B,QAAA1S;AA0qyBI,QAAI,CAAC0S,EAAO;AACV;AAEF,UAAM;AAAA,MACJ,eAAAoO;AAAA,IACN,IAAQ;AACJ,IAAIpO,EAAO,IAAI,SAASoO,CAAa,KAAK,CAAC7U,EAAA,MAAK42E,QAC9CnwE,EAAO,sBAAsB,IAC7BxG,EAAA,MAAK22E,IAAwB,WAAW,MAAM;AAC5C,MAAA32E,EAAA,MAAK22E,IAAwB,OACxBnwE,EAAO,IAAI,SAAS,SAAS,aAAa,IAS7CA,EAAO,sBAAsB,MAR7BA,EAAO,IAAI,iBAAiB,WAAW,MAAM;AAC3C,QAAAA,EAAO,sBAAsB;AAAA,MAC/B,GAAG;AAAA,QACD,MAAM;AAAA,QACN,QAAQzG,EAAA,MAAK+G,GAAW;AAAA,MACpC,CAAW,GACD8N,EAAc,MAAK;AAAA,IAIvB,GAAG,CAAC,KAENpO,EAAO,uBAAsB1S,IAAAiM,EAAA,MAAKk5D,QAAL,gBAAAnlE,EAA4B,iBAAiB,KAAK,KAAK0S,EAAO,KAAKA,EAAO,YAAY;AAAA,EACrH;AAAA,EACA,aAAaA,GAAQ;AACnB,IAAIA,EAAO,sBACTA,EAAO,WAAPA,EAAO,SAAW,OAClBA,EAAO,QAAO,GACdA,EAAO,KAAI,KAEX,KAAK,IAAIA,CAAM;AAAA,EAEnB;AAAA,EACA,kBAAkBA,GAAQ;AACxB,UAAM2E,IAAM,MAAM3E,EAAO,WAAW,QAAQA,CAAM,GAC5C4E,IAAO,MAAM;AACjB,MAAA5E,EAAO,OAAM;AAAA,IACf;AACA,SAAK,YAAY;AAAA,MACf,KAAA2E;AAAA,MACA,MAAAC;AAAA,MACA,UAAU;AAAA,IAChB,CAAK;AAAA,EACH;AAAA,EACA,eAAemI,GAAK;AAClB,eAAW/M,KAAUzG,EAAA,MAAK62E,IAAS,OAAM;AACvC,UAAIpwE,EAAO,QAAQ+M;AACjB,eAAO/M;AAGX,WAAO;AAAA,EACT;AAAA,EACA,YAAY;AACV,WAAOzG,EAAA,MAAK+G,GAAW,MAAK;AAAA,EAC9B;AAAA,EAIA,eAAe+L,GAAI;AACjB,WAAO9S,EAAA,MAAK+G,GAAW,eAAe+L,CAAE;AAAA,EAC1C;AAAA,EAKA,0BAA0B;AA5uyB5B,QAAA/e;AA6uyBI,YAAOA,IAAAiM,EAAA,MAAKu3E,IAAAG,QAAL,gBAAA3jF,EAAyB;AAAA,EAClC;AAAA,EACA,MAAM,YAAY3C,GAASulB,GAAQ;AACjC,SAAK,cAAcvlB,CAAO,GAC1B,MAAM4O,EAAA,MAAK+G,GAAW,WAAW3V,EAAQ,IAAI;AAC7C,UAAM;AAAA,MACJ,SAAA+L;AAAA,MACA,SAAAC;AAAA,IACN,IAAQjF,EAAA,MAAKo/E,IAAAK,IAAL,YACE78E,IAAK,KAAK,UAAS,GACnB0L,IAAStO,EAAA,MAAKo/E,IAAAI,IAAL,WAAsB;AAAA,MACnC,QAAQ;AAAA,MACR,IAAA58E;AAAA,MACA,GAAGoC;AAAA,MACH,GAAGC;AAAA,MACH,WAAW4C,EAAA,MAAK+G;AAAA,MAChB,YAAY;AAAA,MACZ,GAAG4P;AAAA,IACT;AACI,IAAIlQ,KACF,KAAK,IAAIA,CAAM;AAAA,EAEnB;AAAA,EACA,MAAM,YAAYnB,GAAM;AApwyB1B,QAAAvR;AAqwyBI,WAAQ,QAAMA,IAAAiM,EAAA83E,IAAsBtqE,IAAa,IAAIlI,EAAK,kBAAkBA,EAAK,oBAAoB,MAAvF,gBAAAvR,EAA0F,YAAYuR,GAAM,MAAMtF,EAAA,MAAK+G,QAAgB;AAAA,EACvJ;AAAA,EACA,sBAAsB3L,GAAOu9E,GAAYrzE,IAAO,CAAA,GAAI;AAClD,UAAMvK,IAAK,KAAK,UAAS,GACnB0L,IAAStO,EAAA,MAAKo/E,IAAAI,IAAL,WAAsB;AAAA,MACnC,QAAQ;AAAA,MACR,IAAA58E;AAAA,MACA,GAAGK,EAAM;AAAA,MACT,GAAGA,EAAM;AAAA,MACT,WAAW4E,EAAA,MAAK+G;AAAA,MAChB,YAAA4xE;AAAA,MACA,GAAGrzE;AAAA,IACT;AACI,WAAImB,KACF,KAAK,IAAIA,CAAM,GAEVA;AAAA,EACT;AAAA,EACA,IAAI,qBAAqB;AACvB,WAAO,KAAK,IAAI,sBAAqB;AAAA,EACvC;AAAA,EAoBA,aAAanB,IAAO,IAAI;AACtB,SAAK,sBAAsBnN,EAAA,MAAKo/E,IAAAK,IAAL,YAAwB,IAAMtyE,CAAI;AAAA,EAC/D;AAAA,EACA,YAAYmB,GAAQ;AAClB,IAAAzG,EAAA,MAAK+G,GAAW,YAAYN,CAAM;AAAA,EACpC;AAAA,EACA,eAAeA,GAAQ;AACrB,IAAAzG,EAAA,MAAK+G,GAAW,eAAeN,CAAM;AAAA,EACvC;AAAA,EACA,SAASA,GAAQ;AACf,IAAAzG,EAAA,MAAK+G,GAAW,SAASN,CAAM;AAAA,EACjC;AAAA,EACA,UAAUrL,GAAO;AAzzyBnB,QAAArH;AA0zyBI,UAAM;AAAA,MACJ,OAAAiY;AAAA,IACN,IAAQpY,GAAiB;AAWrB,QAVIwH,EAAM,WAAW,KAAKA,EAAM,WAAW4Q,KAGvC5Q,EAAM,WAAW,KAAK,OAGtB,CAAC4E,EAAA,MAAK82E,QAGV72E,EAAA,MAAK62E,IAAkB,MACnB/iF,IAAAiM,EAAA,MAAKu3E,IAAAG,QAAL,QAAA3jF,EAAyB,YAAYiM,EAAA,MAAKu3E,IAAAG,IAAmB;AAC/D;AAEF,QAAI,CAAC13E,EAAA,MAAKy2E,KAAa;AACrB,MAAAx2E,EAAA,MAAKw2E,IAAc;AACnB;AAAA,IACF;AACA,UAAMmC,IAAc54E,EAAA,MAAK+G,GAAW,QAAO;AAC3C,QAAI6xE,MAAgBlpF,EAAqB,SAASkpF,MAAgBlpF,EAAqB,WAAW;AAChG,MAAAsQ,EAAA,MAAK+G,GAAW,YAAW;AAC3B;AAAA,IACF;AACA,SAAK,sBAAsB3L,GAAO,EAAK;AAAA,EACzC;AAAA,EACA,YAAYA,GAAO;AAr1yBrB,QAAArH;AAy1yBI,QAHIiM,EAAA,MAAK+G,GAAW,QAAO,MAAOrX,EAAqB,aACrD,KAAK,oBAAmB,GAEtBsQ,EAAA,MAAK82E,KAAiB;AACxB,MAAA72E,EAAA,MAAK62E,IAAkB;AACvB;AAAA,IACF;AACA,UAAM;AAAA,MACJ,OAAA9qE;AAAA,IACN,IAAQpY,GAAiB;AAIrB,QAHIwH,EAAM,WAAW,KAAKA,EAAM,WAAW4Q,KAGvC5Q,EAAM,WAAW,KAAK;AACxB;AAGF,QADA6E,EAAA,MAAK62E,IAAkB,MACnB/iF,IAAAiM,EAAA,MAAKu3E,IAAAG,QAAL,QAAA3jF,EAAyB,UAAU;AACrC,WAAK,oBAAoBqH,CAAK;AAC9B;AAAA,IACF;AACA,UAAMqL,IAASzG,EAAA,MAAK+G,GAAW,UAAS;AACxC,IAAA9G,EAAA,MAAKw2E,IAAc,CAAChwE,KAAUA,EAAO,QAAO;AAAA,EAC9C;AAAA,EACA,oBAAoBrL,GAAO;AAIzB,QAHA,KAAK,IAAI,MAAM;AAAA,MACb,eAAe;AAAA,IACrB,CAAK,GACG4E,EAAA,MAAKi3E,KAAY;AACnB,MAAAj3E,EAAA,MAAKu3E,IAAAG,IAAmB,aAAa,MAAM13E,EAAA,MAAK+G,IAAY,IAAO3L,CAAK;AACxE;AAAA,IACF;AACA,IAAA4E,EAAA,MAAK+G,GAAW,yBAAyB,IAAI,GAC7C9G,EAAA,MAAKg3E,IAAa,IAAI,gBAAe;AACrC,UAAMtwE,IAAS3G,EAAA,MAAK+G,GAAW,eAAe/G,EAAA,MAAKi3E,GAAU;AAC7D,SAAK,IAAI,iBAAiB,QAAQ,CAAC;AAAA,MACjC,eAAA4B;AAAA,IACN,MAAU;AACJ,MAAIA,KAAiB,CAAC,KAAK,IAAI,SAASA,CAAa,MACnD54E,EAAA,MAAKi3E,IAAkB,OACvB,KAAK,eAAc;AAAA,IAEvB,GAAG;AAAA,MACD,QAAAvwE;AAAA,IACN,CAAK,GACD3G,EAAA,MAAKu3E,IAAAG,IAAmB,aAAa,MAAM13E,EAAA,MAAK+G,IAAY,IAAO3L,CAAK;AAAA,EAC1E;AAAA,EACA,MAAM+5C,GAAI;AACR,QAAIA,GAAI;AACN,YAAM;AAAA,QACJ,eAAAtgC;AAAA,MACR,IAAU;AACJ,MAAI,KAAK,IAAI,SAASA,CAAa,KACjC5U,EAAA,MAAKi3E,IAAkBriE;AAEzB;AAAA,IACF;AACA,IAAI7U,EAAA,MAAKk3E,OACP,WAAW,MAAM;AAh5yBvB,UAAAnjF;AAi5yBQ,OAAAA,IAAAiM,EAAA,MAAKk3E,QAAL,QAAAnjF,EAAsB,SACtBkM,EAAA,MAAKi3E,IAAkB;AAAA,IACzB,GAAG,CAAC;AAAA,EAER;AAAA,EACA,kBAAkBtP,IAAY,IAAO;AACnC,WAAK5nE,EAAA,MAAKi3E,OAGVj3E,EAAA,MAAK+G,GAAW,yBAAyB,IAAI,GAC7C/G,EAAA,MAAKi3E,IAAW,MAAK,GACrBh3E,EAAA,MAAKg3E,IAAa,OAClBh3E,EAAA,MAAKi3E,IAAkB,OAChBl3E,EAAA,MAAKu3E,IAAAG,IAAmB,WAAW9P,CAAS,KAN1C;AAAA,EAOX;AAAA,EACA,cAAcnhE,GAAQhP,GAAGC,GAAG;AAC1B,UAAMmb,IAAQ7S,EAAA,MAAK+G,GAAW,WAAWtP,GAAGC,CAAC;AAC7C,WAAImb,MAAU,QAAQA,MAAU,OACvB,MAETA,EAAM,aAAapM,CAAM,GAClB;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAIzG,EAAA,MAAKi3E,OACP,KAAK,kBAAiB,GACf,MAEF;AAAA,EACT;AAAA,EACA,kBAAkB;AAChB,IAAKj3E,EAAA,MAAKi3E,OAGVj3E,EAAA,MAAKu3E,IAAAG,IAAmB,2BAA2B,IAAI;AAAA,EACzD;AAAA,EACA,UAAU;AAr7yBZ,QAAA3jF,GAAAC;AAs7yBI,SAAK,eAAc,KACfD,IAAAiM,EAAA,MAAK+G,GAAW,UAAS,MAAzB,gBAAAhT,EAA6B,YAAW,SAC1CiM,EAAA,MAAK+G,GAAW,eAAc,GAC9B/G,EAAA,MAAK+G,GAAW,gBAAgB,IAAI,IAElC/G,EAAA,MAAK42E,QACP,aAAa52E,EAAA,MAAK42E,GAAqB,GACvC32E,EAAA,MAAK22E,IAAwB;AAE/B,eAAWnwE,KAAUzG,EAAA,MAAK62E,IAAS,OAAM;AACvC,OAAA7iF,IAAAgM,EAAA,MAAKk5D,QAAL,QAAAllE,EAA4B,yBAAyByS,EAAO,aAC5DA,EAAO,UAAU,IAAI,GACrBA,EAAO,kBAAkB,IACzBA,EAAO,IAAI,OAAM;AAEnB,SAAK,MAAM,MACXzG,EAAA,MAAK62E,IAAS,MAAK,GACnB72E,EAAA,MAAK+G,GAAW,YAAY,IAAI;AAAA,EAClC;AAAA,EAQA,OAAO;AAAA,IACL,UAAArF;AAAA,EACJ,GAAK;AACD,SAAK,WAAWA,GAChBF,GAAmB,KAAK,KAAKE,CAAQ;AACrC,eAAW+E,KAAUzG,EAAA,MAAK+G,GAAW,WAAW,KAAK,SAAS;AAC5D,WAAK,IAAIN,CAAM,GACfA,EAAO,QAAO;AAEhB,SAAK,WAAU;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACL,UAAA/E;AAAA,EACJ,GAAK;AACD,IAAA1B,EAAA,MAAK+G,GAAW,eAAc,GAC9B5O,EAAA,MAAKo/E,IAAAM,IAAL;AACA,UAAMiB,IAAc,KAAK,SAAS,UAC5B57E,IAAWwE,EAAS;AAK1B,QAJA,KAAK,WAAWA,GAChBF,GAAmB,KAAK,KAAK;AAAA,MAC3B,UAAAtE;AAAA,IACN,CAAK,GACG47E,MAAgB57E;AAClB,iBAAWuJ,KAAUzG,EAAA,MAAK62E,IAAS,OAAM;AACvC,QAAApwE,EAAO,OAAOvJ,CAAQ;AAAA,EAG5B;AAAA,EACA,IAAI,iBAAiB;AACnB,UAAM;AAAA,MACJ,WAAA2E;AAAA,MACA,YAAAC;AAAA,IACN,IAAQ,KAAK,SAAS;AAClB,WAAO,CAACD,GAAWC,CAAU;AAAA,EAC/B;AAAA,EACA,IAAI,QAAQ;AACV,WAAO9B,EAAA,MAAK+G,GAAW,eAAe;AAAA,EACxC;AACF;AA1uBEmyD,KAAA,eACAud,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAvwE,IAAA,eAEOyG,KAAA,eAlBT+pE,KAAA,eAwHMC,KAAmB,WAAG;AACxB,SAAOx3E,EAAA,MAAK62E,IAAS,SAAS,IAAI72E,EAAA,MAAK62E,IAAS,OAAM,IAAK72E,EAAA,MAAK+G,GAAW,WAAW,KAAK,SAAS;AACtG,GAyLA0wE,KAAqB,SAACr8E,GAAO;AAC3B,EAAA4E,EAAA,MAAK+G,GAAW,YAAW;AAC3B,QAAM;AAAA,IACJ,QAAAsa;AAAA,EACN,IAAQjmB;AACJ,MAAIimB,MAAWrhB,EAAA,MAAKm3E,IAAW,QAAQ91D,EAAO,aAAa,MAAM,MAAM,SAASA,EAAO,UAAU,SAAS,cAAc,MAAMrhB,EAAA,MAAKm3E,IAAW,IAAI,SAAS91D,CAAM,GAAG;AAClK,UAAM;AAAA,MACJ,OAAArV;AAAA,IACR,IAAUpY,GAAiB;AACrB,QAAIwH,EAAM,WAAW,KAAKA,EAAM,WAAW4Q;AACzC;AAEF,IAAAhM,EAAA,MAAK+G,GAAW,eAAe,aAAa,IAAM,EAAI,GACtD/G,EAAA,MAAKm3E,IAAW,IAAI,UAAU,IAAI,MAAM,GACxC,KAAK,cAAa,GAClBtR,GAAgB,kBAAkB,MAAM7lE,EAAA,MAAK+G,GAAW,cAAc,OAAO;AAAA,MAC3E,QAAQ/G,EAAA,MAAKm3E,IAAW;AAAA,MACxB,GAAG/7E,EAAM;AAAA,MACT,GAAGA,EAAM;AAAA,IACjB,CAAO,GACD4E,EAAA,MAAKm3E,IAAW,IAAI,iBAAiB,aAAa,MAAM;AACtD,MAAAn3E,EAAA,MAAKm3E,IAAW,IAAI,UAAU,OAAO,MAAM,GAC3C,KAAK,cAAc,EAAI;AAAA,IACzB,GAAG;AAAA,MACD,MAAM;AAAA,MACN,QAAQn3E,EAAA,MAAK+G,GAAW;AAAA,IAChC,CAAO,GACD3L,EAAM,eAAc;AAAA,EACtB;AACF,GAuIIs8E,KAAkB,WAAG;AACvB,SAAO13E,EAAA83E,IAAsBtqE,IAAa,IAAIxN,EAAA,MAAK+G,GAAW,SAAS;AACzE,GAIA4wE,KAAgB,SAAChhE,GAAQ;AACvB,QAAM7P,IAAa9G,EAAA,MAAKu3E,IAAAG;AACxB,SAAO5wE,IAAa,IAAIA,EAAW,UAAU,YAAY6P,CAAM,IAAI;AACrE,GA+CAihE,KAAe,WAAG;AAChB,QAAM;AAAA,IACJ,GAAAngF;AAAA,IACA,GAAAC;AAAA,IACA,OAAAoG;AAAA,IACA,QAAAC;AAAA,EACN,IAAQ,KAAK,oBACHuoC,IAAM,KAAK,IAAI,GAAG7uC,CAAC,GACnB+uC,IAAM,KAAK,IAAI,GAAG9uC,CAAC,GACnBgvC,IAAM,KAAK,IAAI,OAAO,YAAYjvC,IAAIqG,CAAK,GAC3C8oC,IAAM,KAAK,IAAI,OAAO,aAAalvC,IAAIqG,CAAM,GAC7CT,KAAWgpC,IAAMI,KAAO,IAAIjvC,GAC5B8F,KAAWipC,IAAMI,KAAO,IAAIlvC,GAC5B,CAACyF,GAASC,CAAO,IAAI,KAAK,SAAS,WAAW,QAAQ,IAAI,CAACE,GAASC,CAAO,IAAI,CAACA,GAASD,CAAO;AACtG,SAAO;AAAA,IACL,SAAAH;AAAA,IACA,SAAAC;AAAA,EACN;AACE,GA6JAy6E,KAAQ,WAAG;AACT,aAAWpxE,KAAUzG,EAAA,MAAK62E,IAAS,OAAM;AACvC,IAAIpwE,EAAO,aACTA,EAAO,OAAM;AAGnB,GAnrBAnK,EAjBIw7E,IAiBG,gBAAe,KACtBp/E,EAlBIo/E,IAkBGtqE,IAAe,IAAI,IAAI,CAAC6vD,IAAgBgO,IAAWoJ,IAAa5O,IAAiBwN,EAAe,EAAE,IAAI,CAAA52E,MAAQ,CAACA,EAAK,aAAaA,CAAI,CAAC,CAAC;AAlBhJ,IAAMs8E,KAANjB;AA3wxBA,IAAA7iB,IAAA+jB,IAAAC,IAAA5vE,IAAA6vE,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AA2/yBA,MAAMC,KAAN,MAAMA,GAAU;AAAA,EAKd,YAAY;AAAA,IACV,WAAAjmE;AAAA,EACJ,GAAK;AAPL,IAAA7a,EAAA,MAAA0gF;AACE,IAAA1gF,EAAA,MAAAu8D,IAAU;AACV,IAAAv8D,EAAA,MAAAsgF,IAAW,oBAAI,IAAG;AAClB,IAAAtgF,EAAA,MAAAugF,IAAY,oBAAI,IAAG;AAKjB,SAAK,YAAY1lE;AAAA,EACnB;AAAA,EACA,UAAUtX,GAAQ;AAChB,QAAI,CAAC+D,EAAA,MAAKi1D,KAAS;AACjB,MAAAh1D,EAAA,MAAKg1D,IAAUh5D;AACf;AAAA,IACF;AACA,QAAI+D,EAAA,MAAKi1D,QAAYh5D,GAAQ;AAC3B,UAAI+D,EAAA,MAAKg5E,IAAS,OAAO;AACvB,mBAAWr9E,KAAQqE,EAAA,MAAKg5E,IAAS,OAAM;AACrC,UAAAr9E,EAAK,OAAM,GACXM,EAAO,OAAON,CAAI;AAGtB,MAAAsE,EAAA,MAAKg1D,IAAUh5D;AAAA,IACjB;AAAA,EACF;AAAA,EACA,WAAW,cAAc;AACvB,WAAOrK,EAAO,MAAM,eAAe,IAAIm5D,GAAa,CAAE;AAAA,EACxD;AAAA,EAqCA,KAAKziB,GAAYmxC,IAAkB,IAAOC,IAAU,IAAO;AACzD,UAAM3+E,IAAKwO,GAAAiwE,IAAUnwE,IAAV,KACL1N,IAAOxD,EAAA,MAAKihF,IAAAC,IAAL,YACPpqB,IAAOuqB,GAAU,YAAY,cAAc,MAAM;AACvD,IAAA79E,EAAK,OAAOszD,CAAI;AAChB,UAAM1pD,IAAOi0E,GAAU,YAAY,cAAc,MAAM;AACvD,IAAAvqB,EAAK,OAAO1pD,CAAI;AAChB,UAAMo0E,IAAS,SAAS,KAAK,SAAS,IAAI5+E,CAAE;AAC5C,IAAAwK,EAAK,aAAa,MAAMo0E,CAAM,GAC9Bp0E,EAAK,aAAa,iBAAiB,oBAAoB,GACnDk0E,KACFz5E,EAAA,MAAKi5E,IAAU,IAAIl+E,GAAIwK,CAAI;AAE7B,UAAM4/D,IAAauU,IAAUvhF,EAAA,MAAKihF,IAAAE,IAAL,WAAqBrqB,GAAM0qB,KAAU,MAC5DC,IAAMJ,GAAU,YAAY,cAAc,KAAK;AACrD,WAAA79E,EAAK,OAAOi+E,CAAG,GACfA,EAAI,aAAa,QAAQ,IAAID,CAAM,EAAE,GACrC,KAAK,iBAAiBh+E,GAAM2sC,CAAU,GACtCtoC,EAAA,MAAKg5E,IAAS,IAAIj+E,GAAIY,CAAI,GACnB;AAAA,MACL,IAAAZ;AAAA,MACA,YAAY,QAAQoqE,CAAU;AAAA,IACpC;AAAA,EACE;AAAA,EACA,YAAY78B,GAAYuxC,GAA6B;AACnD,UAAM9+E,IAAKwO,GAAAiwE,IAAUnwE,IAAV,KACL1N,IAAOxD,EAAA,MAAKihF,IAAAC,IAAL,YACPpqB,IAAOuqB,GAAU,YAAY,cAAc,MAAM;AACvD,IAAA79E,EAAK,OAAOszD,CAAI;AAChB,UAAM1pD,IAAOi0E,GAAU,YAAY,cAAc,MAAM;AACvD,IAAAvqB,EAAK,OAAO1pD,CAAI;AAChB,UAAMo0E,IAAS,SAAS,KAAK,SAAS,IAAI5+E,CAAE;AAC5C,IAAAwK,EAAK,aAAa,MAAMo0E,CAAM,GAC9Bp0E,EAAK,aAAa,iBAAiB,oBAAoB;AACvD,QAAIu0E;AACJ,QAAID,GAA6B;AAC/B,YAAM5xC,IAAOuxC,GAAU,YAAY,cAAc,MAAM;AACvD,MAAAvqB,EAAK,OAAOhnB,CAAI,GAChB6xC,IAAS,SAAS,KAAK,SAAS,IAAI/+E,CAAE,IACtCktC,EAAK,aAAa,MAAM6xC,CAAM,GAC9B7xC,EAAK,aAAa,aAAa,mBAAmB;AAClD,YAAMryC,IAAO4jF,GAAU,YAAY,cAAc,MAAM;AACvD,MAAAvxC,EAAK,OAAOryC,CAAI,GAChBA,EAAK,aAAa,SAAS,GAAG,GAC9BA,EAAK,aAAa,UAAU,GAAG,GAC/BA,EAAK,aAAa,QAAQ,OAAO;AACjC,YAAMgkF,IAAMJ,GAAU,YAAY,cAAc,KAAK;AACrD,MAAAvxC,EAAK,OAAO2xC,CAAG,GACfA,EAAI,aAAa,QAAQ,IAAID,CAAM,EAAE,GACrCC,EAAI,aAAa,UAAU,MAAM,GACjCA,EAAI,aAAa,QAAQ,OAAO,GAChCA,EAAI,aAAa,aAAa,SAAS,GACvCA,EAAI,UAAU,IAAI,MAAM;AAAA,IAC1B;AACA,UAAMG,IAAOP,GAAU,YAAY,cAAc,KAAK;AACtD,IAAA79E,EAAK,OAAOo+E,CAAI,GAChBA,EAAK,aAAa,QAAQ,IAAIJ,CAAM,EAAE,GAClCG,KACFC,EAAK,aAAa,QAAQ,QAAQD,CAAM,GAAG;AAE7C,UAAME,IAAOD,EAAK,UAAS;AAC3B,WAAAp+E,EAAK,OAAOq+E,CAAI,GAChBD,EAAK,UAAU,IAAI,aAAa,GAChCC,EAAK,UAAU,IAAI,kBAAkB,GACrC,KAAK,iBAAiBr+E,GAAM2sC,CAAU,GACtCtoC,EAAA,MAAKg5E,IAAS,IAAIj+E,GAAIY,CAAI,GACnBZ;AAAA,EACT;AAAA,EACA,aAAaA,GAAIutC,GAAY;AAC3B,IAAAtoC,EAAA,MAAKi5E,IAAU,OAAOl+E,CAAE,GACxB,KAAK,iBAAiBA,GAAIutC,CAAU;AAAA,EACtC;AAAA,EACA,iBAAiB2xC,GAAa3xC,GAAY;AAnozB5C,QAAAv0C;AAoozBI,QAAI,CAACu0C;AACH;AAEF,UAAM;AAAA,MACJ,MAAA3sC;AAAA,MACA,MAAA8vB;AAAA,MACA,WAAAyuD;AAAA,MACA,MAAA30E;AAAA,IACN,IAAQ+iC,GACEttC,IAAU,OAAOi/E,KAAgB,WAAWj6E,EAAA,MAAKg5E,IAAS,IAAIiB,CAAW,IAAIA;AACnF,QAAKj/E,GASL;AAAA,UANIW,KACFxD,EAAA,MAAKihF,IAAAG,IAAL,WAAuBv+E,GAASW,IAE9B8vB,KACFtzB,EAAApE,IAAAylF,IAAUN,IAAAC,IAAV,KAAAplF,GAAkBiH,GAASywB,IAEzByuD,GAAW;AACb,cAAM;AAAA,UACJ,WAAAlC;AAAA,QACR,IAAUh9E;AACJ,mBAAW,CAACgK,GAAWjT,CAAK,KAAK,OAAO,QAAQmoF,CAAS;AACvD,UAAAlC,EAAU,OAAOhzE,GAAWjT,CAAK;AAAA,MAErC;AACA,UAAIwT,GAAM;AAER,cAAM40E,IADOn/E,EAAQ,kBACI;AACzB,QAAA7C,EAAA,MAAKihF,IAAAG,IAAL,WAAuBY,GAAa50E;AAAA,MACtC;AAAA;AAAA,EACF;AAAA,EACA,aAAaxK,GAAI8X,GAAO;AACtB,QAAIA,MAAU;AACZ;AAEF,UAAMlX,IAAOqE,EAAA,MAAKg5E,IAAS,IAAIj+E,CAAE;AACjC,IAAKY,MAGLqE,EAAA6S,GAAMoiD,IAAQ,OAAOt5D,CAAI,GACzBqE,EAAA,MAAKg5E,IAAS,OAAOj+E,CAAE,GACvBiF,EAAA6S,GAAMmmE,IAAS,IAAIj+E,GAAIY,CAAI;AAAA,EAC7B;AAAA,EACA,OAAOZ,GAAI;AAET,IADAiF,EAAA,MAAKi5E,IAAU,OAAOl+E,CAAE,GACpBiF,EAAA,MAAKi1D,QAAY,SAGrBj1D,EAAA,MAAKg5E,IAAS,IAAIj+E,CAAE,EAAE,OAAM,GAC5BiF,EAAA,MAAKg5E,IAAS,OAAOj+E,CAAE;AAAA,EACzB;AAAA,EACA,UAAU;AACR,IAAAkF,EAAA,MAAKg1D,IAAU;AACf,eAAWt5D,KAAQqE,EAAA,MAAKg5E,IAAS,OAAM;AACrC,MAAAr9E,EAAK,OAAM;AAEb,IAAAqE,EAAA,MAAKg5E,IAAS,MAAK,GACnBh5E,EAAA,MAAKi5E,IAAU,MAAK;AAAA,EACtB;AACF;AArMEhkB,KAAA,eACA+jB,KAAA,eACAC,KAAA,eACO5vE,KAAA,eAJT6vE,KAAA,eA4BSC,KAAO,SAACn+E,GAAS,CAACvD,GAAGC,GAAGoG,GAAOC,CAAM,GAAG;AAC7C,QAAM;AAAA,IACJ,OAAAgE;AAAA,EACN,IAAQ/G;AACJ,EAAA+G,EAAM,MAAM,GAAG,MAAMrK,CAAC,KACtBqK,EAAM,OAAO,GAAG,MAAMtK,CAAC,KACvBsK,EAAM,QAAQ,GAAG,MAAMjE,CAAK,KAC5BiE,EAAM,SAAS,GAAG,MAAMhE,CAAM;AAChC,GApCFq7E,KAAA,eAqCEC,KAAU,WAAG;AACX,QAAMxvE,IAAM2vE,GAAU,YAAY,OAAO,GAAG,GAAG,EAAI;AACnD,SAAAx5E,EAAA,MAAKi1D,IAAQ,OAAOprD,CAAG,GACvBA,EAAI,aAAa,eAAe,EAAI,GAC7BA;AACT,GACAyvE,KAAe,SAACrqB,GAAM0qB,GAAQ;AAC5B,QAAMzqB,IAAWsqB,GAAU,YAAY,cAAc,UAAU;AAC/D,EAAAvqB,EAAK,OAAOC,CAAQ;AACpB,QAAMiW,IAAa,QAAQwU,CAAM;AACjC,EAAAzqB,EAAS,aAAa,MAAMiW,CAAU,GACtCjW,EAAS,aAAa,iBAAiB,mBAAmB;AAC1D,QAAMkrB,IAAcZ,GAAU,YAAY,cAAc,KAAK;AAC7D,SAAAtqB,EAAS,OAAOkrB,CAAW,GAC3BA,EAAY,aAAa,QAAQ,IAAIT,CAAM,EAAE,GAC7CS,EAAY,UAAU,IAAI,MAAM,GACzBjV;AACT,GACAoU,KAAiB,SAACv+E,GAASstC,GAAY;AACrC,aAAW,CAAC7sC,GAAK1J,CAAK,KAAK,OAAO,QAAQu2C,CAAU;AAClD,IAAIv2C,MAAU,OACZiJ,EAAQ,gBAAgBS,CAAG,IAE3BT,EAAQ,aAAaS,GAAK1J,CAAK;AAGrC,GA/DF2G,EAAM8gF,IAANN,KAIExgF,EAJI8gF,IAIGnwE,IAAM;AAJf,IAAMgxE,KAANb;AA0NE,WAAW,qBAAqB;AAAA,EAC9B,mBAAmB5X;AACvB;AAEA,WAAW,WAAW;AAAA,EACpB,gBAAgB/uE;AAAA,EAChB,uBAAuBkmF;AAAA,EACvB,4BAA4BppF;AAAA,EAC5B,sBAAsBD;AAAA,EACtB,2BAA2B0oB;AAAA,EAC3B,iBAAiB6iD;AAAA,EACjB,gBAAgBzrE;AAAA,EAChB,gBAAgBQ;AAAA,EAChB,cAAckT;AAAA,EACd,OAAO8lD;AAAA,EACP,aAAamB;AAAA,EACb,wBAAwBj5D;AAAA,EACxB,cAAc+R;AAAA,EACd,eAAe8nD;AAAA,EACf,WAAWsvB;AAAA,EACX,aAAazmF;AAAA,EACb,WAAW4I;AAAA,EACX,mBAAmB2H;AAAA,EACnB,aAAas7C;AAAA,EACb,oBAAoBhhD;AAAA,EACpB,uBAAuBC;AAAA,EACvB,QAAQmC;AAAA,EACR,SAAS7H;AAAA,EACT,oBAAoB2H;AAAA,EACpB,qBAAqBgzC;AAAA,EACrB,WAAW5jD;AAAA,EACX,qBAAqByC;AAAA,EACrB,cAAc6L;AAAA,EACd,WAAWE;AAAA,EACX,qBAAqBizB;AAAA,EACrB,WAAW33B;AAAA,EACX,eAAe4F;AAAA,EACf,kBAAkB5G;AAAA,EAClB,KAAK1I;AAAA,EACL,aAAakS;AAAA,EACb,mBAAmBhS;AAAA,EACnB,uBAAuByvD;AAAA,EACvB,eAAehgD;AAAA,EACf,WAAWkgD;AAAA,EACX,gBAAgBpwD;AAAA,EAChB,eAAe2M;AAAA,EACf,6BAA6B4B;AAAA,EAC7B,gBAAgB2G;AAAA,EAChB,mBAAmBrS;AAAA,EACnB,oBAAoB+O;AAAA,EACpB,QAAQ5P;AAAA,EACR,oBAAoB26E;AAAA,EACpB,WAAW5sE;AAAA,EACX,yBAAyBoD;AAAA,EACzB,WAAWw8C;AAAA,EACX,cAAcxhC;AAAA,EACd,eAAevsB;AAAA,EACf,MAAM8C;AAAA,EACN,gBAAgBpE;AAAA,EAChB,SAAS64D;AAAA,EACT,UAAUluD;AACZ;ACzvzBA,IAAIy/E,KAAqC,uBAAO,IAAI,uBAAuB;AAG3E,SAASC,GAAUtyD,GAAK;AACtB,SAAO,CAAC,EAAEA,KAAO,OAAOA,EAAI,YAAa;AAC3C;AACA,SAASuyD,GAASvyD,GAAK;AACrB,SAAO,OAAOA,KAAQ;AACxB;AACA,SAASwyD,GAASxyD,GAAK;AACrB,SAAO,OAAOA,KAAQ;AACxB;AACA,SAASyyD,GAASzyD,GAAK;AACrB,SAAO,OAAOA,KAAQ,YAAYA,MAAQ;AAC5C;AACA,SAAS0yD,GAAiB1yD,GAAK;AAC7B,SAAO,CAAC,EAAEA,KAAOA,EAAI;AACvB;AACA,SAAS2yD,GAAY3yD,GAAK;AACxB,SAAOyyD,GAASzyD,CAAG,KAAK,OAAOA,EAAI,UAAW,YAAY,OAAOA,EAAI,YAAa;AACpF;AACA,SAAS4yD,GAAW9oF,GAAO;AACzB,SAAO,OAAOA,KAAU,cAAc,OAAOA,EAAMuoF,EAAkB,KAAM;AAC7E;AACA,SAASQ,GAAe7yD,GAAK;AAC3B,SAAOA,KAAO,QAAQ,OAAOA,KAAQ;AACvC;AAGA,SAASjjB,GAAUjT,GAAO;AACxB,SAAI,MAAM,QAAQA,CAAK,IACdA,EAAM,IAAIiT,EAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAC3C01E,GAAS3oF,CAAK,IACnB,OAAO,YAAYA,IACdiT,GAAU,MAAM,KAAKjT,CAAK,CAAC,IAE7B,OAAO,KAAKA,CAAK,EAAE,OAAO,CAACouC,MAAMpuC,EAAMouC,CAAC,CAAC,EAAE,KAAK,GAAG,IACjD26C,GAAe/oF,CAAK,IACtB,KAAKA,IAEL;AAEX;AAMA,SAASgpF,GAAYC,GAAU;AAC7B,SAAOA,KAAY,QAAQ,OAAOA,KAAa,YAAY,aAAaA;AAC1E;AACA,SAASC,GAAOx4B,GAAK9e,GAAS;AAC5B,EAAIo3C,GAAYt4B,CAAG,IACjBA,EAAI,UAAU9e,IACL,OAAO8e,KAAQ,cACxBA,EAAI9e,CAAO;AAEf;AAcA,SAASu3C,GAAmBC,GAAOC,GAAMj4D,GAAU;AACjD,EAAAi4D,IAAO,EAAE,GAAGA,GAAM,UAAAj4D,EAAQ;AAC1B,QAAMk4D,IAAW,IAAIF,EAAMC,CAAI,GACzBzgF,IAAO0gF,EAAS,OAAM;AAC5B,SAAI,SAASD,KACXH,GAAOG,EAAK,KAAKC,CAAQ,GAEpB1gF;AACT;AAGA,IAAI2gF,KAAkB,sCAClBC,KAAiC,oBAAI,IAAI,CAAC,QAAQ,cAAc,kBAAkB,WAAW,UAAU,SAAS,MAAM,iBAAiB,MAAM,MAAM,SAAS,WAAW,YAAY,eAAe,SAAS,QAAQ,MAAM,UAAU,SAAS,UAAU,QAAQ,WAAW,QAAQ,UAAU,OAAO,SAAS,OAAO,UAAU,cAAc,aAAa,YAAY,SAAS,CAAC,GAG7WC,KAA8B,oBAAI,IAAI;AAAA;AAAA,EAExC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,GACGC,KAA+B,kKAC/BC,KAAe,8BAGfC,KAAwC,uBAAO,IAAI,0BAA0B;AACjF,SAASC,GAAoB7pF,GAAO;AAClC,QAAM4xC,IAAU,WAAWg4C,EAAqB;AAChD,SAAK,UAAU,WAGf,WAAWA,EAAqB,IAAI5pF,IAC7B4xC;AACT;AAsBA,IAAIk4C,KAAmC,uBAAO,IAAI,qBAAqB,GACnEC,KAAgB;AAapB,SAASC,GAAa5/E,GAAI;AACxB,SAAOA,KAAM,QAAQA,EAAG0/E,EAAgB,MAAMC;AAChD;AAGA,IAAIE,KAA2C,uBAAO,IAAI,6BAA6B,GACnFC,KAAsC,uBAAO,IAAI,wBAAwB;AAC7E,SAASC,KAAwB;AAC/B,SAAO,WAAAF,QAAA,WAAAA,MAAyD,oBAAI,QAAO;AAC7E;AACA,SAASG,GAAuBC,GAAI;AAClC,EAAIA,KAAMA,EAAG,WAAW,CAACA,EAAG,iBAAiBA,EAAG,kBAAkBA,EAAG,WACnEC,GAAyBD,KAAA,gBAAAA,EAAI,MAAM;AACvC;AAUA,SAASC,GAAyB1hF,GAAMgiB,GAAK;AAC3C,MAAI,CAAChiB;AACH;AACF,QAAM2hF,IAAqBJ,GAAqB;AAChD,WAASK,EAAUpgF,GAAI;AACrB,UAAMqgF,IAAYF,EAAmB,IAAIngF,CAAE;AAC3C,QAAKqgF,GAEL;AAAA,MAAAF,EAAmB,OAAOngF,CAAE,GAC5BA,EAAG,oBAAoB,aAAaggF,EAAsB;AAC1D,iBAAWM,KAAYD;AACrB,YAAI;AACF,UAAAC,EAAS,SAAStgF,CAAE;AAAA,QACtB,QAAQ;AAAA,QACR;AAAA;AAAA,EAEJ;AAkBE,EAAAogF,EAAU5hF,CAAI;AAElB;AACA,SAAS+hF,GAAqBr7D,GAAQyR,GAAS6pD,GAAQ;AACrD,MAAI,CAACt7D,KAAU,CAACyR;AACd,WAAOzR;AACT,QAAMi7D,IAAqBJ,GAAqB;AAChD,MAAIM,IAAYF,EAAmB,IAAIj7D,CAAM;AAC7C,MAAI,CAACm7D;AACH,WAAI,OAAOn7D,EAAO,oBAAqB,eAEvCi7D,EAAmB,IAAIj7D,GAAQm7D,IAAY,CAAC;AAAA,MAC1C,UAAU1pD;AAAA,MACV,QAAA6pD;AAAA,IACN,CAAK,CAAC,GACFt7D,EAAO,iBAAiB,aAAa86D,IAAwB,EAAE,MAAM,IAAM,IACpE96D;AAET,QAAMu7D,IAAWJ,EAAU,KAAK,CAACzkF,MAAOA,EAAG,aAAa+6B,CAAO;AAC/D,SAAI8pD,KACEA,EAAS,QAMNv7D,MAETm7D,EAAU,KAAK,EAAE,UAAU1pD,GAAS,QAAA6pD,EAAM,CAAE,GACrCt7D;AACT;AACA,SAASw7D,GAAwBx7D,GAAQyR,GAAS6pD,GAAQ;AACxD,MAAI,CAACt7D,KAAU,CAACyR;AACd,WAAOzR;AACT,QAAMi7D,IAAqBJ,GAAqB,GAC1CM,IAAYF,EAAmB,IAAIj7D,CAAM;AAC/C,MAAIm7D,GAAW;AACb,aAASlwD,IAAQkwD,EAAU,SAAS,GAAGlwD,KAAS,GAAGA,KAAS;AAC1D,YAAMsF,IAAW4qD,EAAUlwD,CAAK;AAChC,MAA4CwG,KAAWA,MAAYlB,EAAS,YAC1E4qD,EAAU,OAAOlwD,GAAO,CAAC;AAAA,IAE7B;AACA,IAAIkwD,EAAU,WAAW,MACvBF,EAAmB,OAAOj7D,CAAM,GAC5B,OAAOA,EAAO,uBAAwB,cACxCA,EAAO,oBAAoB,aAAa86D,EAAsB;AAAA,EAGpE;AACA,SAAO96D;AACT;AACA,SAASy7D,MAAwBrjF,GAAM;AACrC,MAAIA,EAAK,SAAS,GAAG;AACnB,UAAM89B,IAAO,WAAW0kD,EAAmB,KAAK;AAChD,sBAAWA,EAAmB,IAAIxiF,EAAK,CAAC,KAAK,MACtC89B;AAAA,EACT;AACA,SAAO,WAAW0kD,EAAmB,KAAK;AAC5C;AAGA,SAASc,GAAalrF,GAAK;AACzB,SAAOA,KAAO,QAAQ,OAAOA,KAAQ,YAAY,OAAOA,EAAI,aAAc,cAAc,OAAOA,EAAI,QAAS,cAAc,WAAWA;AACvI;AD1VA,IAAAmrF,IAAAC,IAAAC,IAAAC,IAAAC,IAAArpF,IC2VIspF,MAAwBtpF,KAAA,MAAM;AAAA,EAGhC,YAAYupF,GAASC,GAAeC,GAAe;AAHzB,IAAA9kF,EAAA,MAAAwkF;AAC1B,IAAAxkF,EAAA,MAAAskF;AACA,IAAAtkF,EAAA,MAAAukF;AAEE,SAAK,SAASK,GACd,KAAK,YAAY,IACjB,KAAK,aAAa,IAClB,KAAK,gBAAgBC,GACrBt9E,EAAA,MAAKg9E,IAAQO;AAAA,EACf;AAAA,EACA,IAAI,gBAAgB;AAClB,WAAOx9E,EAAA,MAAKi9E;AAAA,EACd;AAAA,EASA,IAAI,iBAAiB;AACnB,WAAOj9E,EAAA,MAAKg9E;AAAA,EACd;AAAA,EACA,IAAI,eAAejrF,GAAO;AACxB,IAAAoG,EAAA,MAAK+kF,IAAAC,IAAL,YACAl9E,EAAA,MAAK+8E,IAAWjrF,IAChBoG,EAAA,MAAK+kF,IAAAE,IAAL;AAAA,EACF;AAAA,EACA,IAAI,cAAcrrF,GAAO;AACvB,IAAIA,MAAUiO,EAAA,MAAKi9E,QACjB9kF,EAAA,MAAK+kF,IAAAC,IAAL,YACAl9E,EAAA,MAAKg9E,IAAQlrF,IACboG,EAAA,MAAK+kF,IAAAE,IAAL;AAAA,EAEJ;AACF,GAnCEJ,KAAA,eACAC,KAAA,eAF0BC,KAAA,eAa1BC,KAAW,WAAG;ADxWhB,MAAAppF;ACyWI,EAAA8oF,GAAwB78E,EAAA,MAAKi9E,KAAO,KAAK,cAAc,GACvDJ,GAAwB78E,EAAA,MAAKi9E,MAAOlpF,IAAA,KAAK,WAAL,gBAAAA,EAAa,eAAe;AAClE,GACAqpF,KAAW,WAAG;AD5WhB,MAAArpF;AC6WI,EAAA2oF,GAAqB18E,EAAA,MAAKi9E,KAAO,KAAK,cAAc,GACpDP,GAAqB18E,EAAA,MAAKi9E,MAAOlpF,IAAA,KAAK,WAAL,gBAAAA,EAAa,eAAe;AAC/D,GApB0BA;AAqC5B,SAAS0pF,GAAcH,GAASrxE,GAAU0Q,GAAK;AAC7C,QAAM4gE,IAAgB5gE,KAAA,QAAAA,EAAK,mBAAmBmgE,GAAoB,IAAK,QACjErjF,IAAO,IAAI4jF,GAAsBC,GAASC,GAAe5gE,KAAA,gBAAAA,EAAK,aAAa,GAC3E8/D,IAAWhjF,EAAK,OAAO,UAAU,SAAS1H,GAAO;AACrD,IAAA0H,EAAK,WAAW1H,GACZ0H,EAAK,cAAa,qBAAM,aAC1BA,EAAK,iBAAiB,KAAK,QAAQ,KAAK,IAAI,IAE9CA,EAAK,aAAa,CAACA,EAAK,aAAaA,EAAK,cAAcA,EAAK;AAC7D,QAAI;AACF,MAAAwS,EAASxS,CAAI;AAAA,IACf,UAAC;AACC,MAAAA,EAAK,YAAYA,EAAK,UACtBA,EAAK,YAAY;AAAA,IACnB;AAAA,EACF,CAAC;AACD,SAAIgjF,KAAY,CAAChjF,EAAK,mBACpBA,EAAK,iBAAiBgjF,IAEjBhjF,EAAK;AACd;AAwEA,SAASikF,GAAYzhF,GAAQrB,GAAO;AAClC,EAAIqB,aAAkB,OAAO,sBAC3BA,EAAO,QAAQ,YAAYrB,CAAK,IAEhCqB,EAAO,YAAYrB,CAAK;AAE5B;AACA,IAAI+iF,KAAyB,GACzBC,KAAoB;AACxB,SAASC,GAAcljF,GAAM;AAC3B,SAAOA,aAAgB,WAAWA,EAAK,KAAK,WAAWijF,EAAiB;AAC1E;AACA,SAASE,GAA0BnjF,GAAM;AACvC,SAAOA,aAAgB,oBAAoBkjF,GAAcljF,EAAK,UAAU;AAC1E;AACA,SAASojF,GAAYC,GAASC,GAAS;AD3evC,MAAAlqF;AC4eE,EAAI,OAAOiqF,EAAQ,eAAgB,aACjCA,EAAQ,YAAYC,CAAO,KAE3BlqF,IAAAiqF,EAAQ,eAAR,QAAAjqF,EAAoB,aAAakqF,GAASD;AAC9C;AACA,SAASE,GAAWnsF,GAAO;AACzB,SAAIA,aAAiB,oBACnB,EAAE4rF,IACF5rF,EAAM,QAAQ,SAAS,cAAc6rF,KAAoBD,EAAsB,CAAC,GAChF5rF,EAAM,OAAO,SAAS,cAAc6rF,KAAoBD,EAAsB,CAAC,GACxE5rF,KAELA,aAAiB,OACZA,IAEJ+oF,GAAe/oF,CAAK,IAGlB,SAAS,eAAeA,CAAK,IAF3B,SAAS,cAAc,EAAE;AAGpC;AACA,SAASosF,GAAyBliF,GAAQqhF,GAAS;AACjD,MAAIc;AACJ,EAAAX,GAAcH,GAAS,CAAC7jF,MAAS;ADlgBnC,QAAA1F;ACmgBI,QAAI0F,EAAK,WAAW;AAClB,MAAA2kF,IAAWF,GAAWzkF,EAAK,QAAQ;AACnC,UAAI4kF,IAAeP,GAA0BM,CAAQ,IAAIA,EAAS,aAAaA;AAC/E,MAAAE,GAAeriF,GAAQmiF,CAAQ,GAC/B3kF,EAAK,iBAAiB2kF,IAAWC,MAAiBpiF;AAClD;AAAA,IACF;AACA,QAAI,CAACxC,EAAK;AACR;AAEF,UAAMwkF,IAAUC,GAAWzkF,EAAK,QAAQ;AACxC,QAAIokF,GAAcO,CAAQ,GAAG;AAC3B,UAAI//C;AACJ,cAAOA,IAAK+/C,EAAS,kBACnBrqF,IAAAsqC,EAAG,eAAH,QAAAtqC,EAAe,YAAYsqC,IACvB,EAAAA,aAAc,WAAWA,EAAG,SAAS+/C,EAAS;AAAlD;AAAA,IAIJ;AACA,QAAIG,IAAcT,GAA0BG,CAAO,IAAIA,EAAQ,aAAaA;AAC5E,IAAAF,GAAYK,GAAUH,CAAO,GAC7BxkF,EAAK,iBAAiB2kF,IAAWG,MAAgBtiF;AAAA,EACnD,CAAC;AACH;AACA,SAASqiF,GAAeriF,GAAQknB,GAAU;AACxC,MAAK23D,GAAe33D,CAAQ;AAC5B,QAAIy3D,GAAYz3D,CAAQ;AACtB,iBAAWvoB,KAAS,CAAC,GAAGuoB,CAAQ;AAC9B,QAAAm7D,GAAeriF,GAAQrB,CAAK;AAAA,aAErB4/E,GAASr3D,CAAQ,KAAKs3D,GAASt3D,CAAQ;AAChD,MAAAu6D,GAAYzhF,GAAQ,SAAS,eAAeknB,CAAQ,CAAC;AAAA,aAC5Co3D,GAAUp3D,CAAQ;AAC3B,MAAAu6D,GAAYzhF,GAAQknB,CAAQ;AAAA,aACnB44D,GAAa54D,CAAQ,GAAG;AACjC,YAAMq7D,IAAaviF,EAAO,aAAaknB,EAAS,IAAI;AACpD,MAAAm7D,GAAeE,GAAYr7D,EAAS,QAAQ,GAC5C83D,GAAO93D,EAAS,KAAKq7D,CAAU;AAAA,IACjC,MAAO,CAAIzB,GAAa55D,CAAQ,KAC9Bg7D,GAAyBliF,GAAQknB,CAAQ;AAE7C;AAGA,SAASs7D,GAAqBlnD,GAAM;AAClC,SAAIA,KAAQ,SAERqjD,GAAYrjD,CAAI,IAClBA,IAAO,MAAM,KAAKA,CAAI,EAAE,IAAI,CAACviB,MACvB+nE,GAAa/nE,CAAI,IACZA,EAAK,KAAI,IACXA,CACR,IACQ0lE,GAASnjD,CAAI,MACtBA,IAAO,EAAE,GAAGA,EAAI,GAChB,OAAO,QAAQA,CAAI,EAAE,QAAQ,CAAC,CAAC97B,GAAKwsB,CAAG,MAAM;AAC3C,IAAI80D,GAAa90D,CAAG,MAClBsP,EAAK97B,CAAG,IAAIwsB,EAAI,KAAI;AAAA,EACxB,CAAC,KAEIsP;AACT;AACA,SAASmnD,GAAe/jF,GAAM48B,GAAM;AAClC,MAAIA,KAAQ,QAAQA,MAAS,MAASA,MAAS;AAC7C;AACF,EAAAA,IAAOknD,GAAqBlnD,CAAI;AAChC,QAAMonD,KAAkB35E,GAAUuyB,CAAI,KAAK,IAAI,MAAM,GAAG;AACxD,WAASqnD,KAAOD;AACd,IAAIC,KACFjkF,EAAK,UAAU,OAAOikF,CAAG;AAG/B;AACA,SAASC,GAAYlkF,GAAM5I,GAAOwlC,GAAM;AACtC,MAAIxlC,KAAS,QAAQA,MAAU,IAAO;AACpC,IAAA2sF,GAAe/jF,GAAM48B,CAAI;AACzB;AAAA,EACF;AACA,EAAAA,IAAOknD,GAAqBlnD,CAAI,GAC5BqjD,GAAY7oF,CAAK,IACnBA,IAAQ,MAAM,KAAKA,CAAK,EAAE,IAAI,CAACgG,MAAO;AACpC,QAAIkwB,IAAMlwB;AACV,WAAIglF,GAAahlF,CAAE,KACjB0lF,GAAc1lF,GAAI,CAAC0B,MAAS;AAC1B,UAAIA,EAAK,WAAW;AAClB,QAAAwuB,IAAMxuB,EAAK;AACX;AAAA,MACF;AACA,MAAAqlF,GAAenkF,GAAMlB,EAAK,UAAUA,EAAK,SAAS;AAAA,IACpD,GAAG;AAAA,MACD,eAAekB;AAAA,IACzB,CAAS,GAEIstB;AAAA,EACT,CAAC,IACQyyD,GAAS3oF,CAAK,MACvBA,IAAQ,EAAE,GAAGA,EAAK,GAClB,OAAO,QAAQA,CAAK,EAAE,QAAQ,CAAC,CAAC0J,GAAKwsB,CAAG,MAAM;AAC5C,IAAI80D,GAAa90D,CAAG,KAClBw1D,GAAcx1D,GAAK,CAACxuB,MAAS;AAC3B,UAAIA,EAAK,WAAW;AAClB,QAAA1H,EAAM0J,CAAG,IAAIhC,EAAK;AAClB;AAAA,MACF;AACA,MAAAqlF,GAAenkF,GAAM,EAAQlB,EAAK,YAAagC,GAAK,EAAQhC,EAAK,aAAcgC,CAAG;AAAA,IACpF,GAAG;AAAA,MACD,eAAed;AAAA,IACzB,CAAS;AAAA,EAEL,CAAC,IAEHmkF,GAAenkF,GAAM5I,GAAOwlC,CAAI;AAClC;AACA,SAASunD,GAAenkF,GAAM5I,GAAOwlC,GAAM;AACzC,QAAMwnD,KAAW/5E,GAAUjT,CAAK,KAAK,IAAI,MAAM,GAAG;AAClD,MAAIwlC,GAAM;AACR,UAAMynD,KAAYh6E,GAAUuyB,CAAI,KAAK,IAAI,MAAM,GAAG;AAClD,aAASqnD,KAAOI;AACd,MAAIJ,KAAO,CAACG,EAAQ,SAASH,CAAG,KAC9BjkF,EAAK,UAAU,OAAOikF,CAAG;AAAA,EAG/B;AACA,WAASA,KAAOG;AACd,IAAAH,KAAOjkF,EAAK,UAAU,IAAIikF,CAAG;AAEjC;AAGA,SAASK,GAAUC,GAAQzjF,GAAK;AAC9B,SAAOyjF,IAASzjF,EAAI,OAAO,CAAC,EAAE,gBAAgBA,EAAI,UAAU,CAAC;AAC/D;AACA,IAAI0jF,KAAoC,uBAAM;AAC5C,MAAIC,IAAM;AAAA,IACR,yBAAyB;AAAA,IACzB,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA;AAAA,IAEN,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,aAAa;AAAA,EACjB;AACE,QAAMC,IAAW,CAAC,UAAU,MAAM,OAAO,GAAG;AAC5C,gBAAO,KAAKD,CAAG,EAAE,QAAQ,CAACttF,MAAS;AACjC,IAAAutF,EAAS,QAAQ,CAACH,MAAW;AAC3B,MAAAE,EAAIH,GAAUC,GAAQptF,CAAI,CAAC,IAAI;AAAA,IACjC,CAAC;AAAA,EACH,CAAC,GACMstF;AACT,GAAC;AACD,SAASE,GAAkB3kF,GAAMc,GAAKwsB,GAAK;AACzC,EAAIxsB,EAAI,QAAQ,GAAG,MAAM,IACvBd,EAAK,MAAM,YAAYc,GAAKwsB,CAAG,IACtBwyD,GAASxyD,CAAG,KAAKk3D,GAAiB1jF,CAAG,MAAM,IACpDd,EAAK,MAAMc,CAAG,IAAIwsB,IAAM,OAExBttB,EAAK,MAAMc,CAAG,IAAIwsB;AAEtB;AACA,SAASs3D,GAAe5kF,GAAM48B,GAAM;AAClC,MAAI,EAAAA,KAAQ,QAAQA,MAAS,MAASA,MAAS,KAE/C;AAAA,QAAIijD,GAASjjD,CAAI,GAAG;AAClB,MAAA58B,EAAK,gBAAgB,OAAO;AAC5B;AAAA,IACF;AACA,IAAI+/E,GAASnjD,CAAI,KACf,OAAO,KAAKA,CAAI,EAAE,QAAQ,CAAC97B,MAAQ;AACjC,MAAA6jF,GAAkB3kF,GAAMc,GAAK,EAAE;AAAA,IACjC,CAAC;AAAA;AAEL;AACA,SAAS+jF,GAAY7kF,GAAM5I,GAAOwlC,GAAM;AACtC,MAAIxlC,KAAS,QAAQA,MAAU,MAASA,MAAU,IAAM;AACtD,IAAAwtF,GAAe5kF,GAAM48B,CAAI;AACzB;AAAA,EACF;AACA,MAAIijD,GAASzoF,CAAK,GAAG;AACnB,IAAA4I,EAAK,aAAa,SAAS5I,CAAK;AAChC;AAAA,EACF;AACA,MAAI2oF,GAAS3oF,CAAK,GAAG;AACnB,IAAI2oF,GAASnjD,CAAI,KACfxlC,IAAQ,EAAE,GAAGA,EAAK,GAClB,OAAO,KAAKwlC,CAAI,EAAE,QAAQ,CAAC97B,MAAQ;AACjC,MAAMA,KAAO1J,MACXA,EAAM0J,CAAG,IAAI;AAAA,IACjB,CAAC,KAED8jF,GAAe5kF,GAAM48B,CAAI,GAC3B,OAAO,QAAQxlC,CAAK,EAAE,QAAQ,CAAC,CAAC0J,GAAKwsB,CAAG,MAAM;AAC5C,MAAI80D,GAAa90D,CAAG,IAClBw1D,GAAcx1D,GAAK,CAACxuB,MAAS6lF,GAAkB3kF,GAAMc,GAAKhC,EAAK,QAAQ,GAAG;AAAA,QACxE,eAAekB;AAAA,MACzB,CAAS,IAED2kF,GAAkB3kF,GAAMc,GAAKwsB,CAAG;AAAA,IAEpC,CAAC;AACD;AAAA,EACF;AACF;AAGA,IAAIw3D,KAAiB,gCACjBC,KAAe;AACnB,SAASC,GAAmBC,GAAIC,GAAW;AACzC,SAAOD,EAAG,QAAQ,UAAU,CAACjoC,MAAUkoC,IAAYloC,EAAM,aAAa;AACxE;AACA,IAAImoC,KAA6B,oBAAI,IAAI;AAAA,EACvC,CAAC,gBAAgB,cAAc;AAAA,EAC/B,CAAC,aAAa,WAAW;AAAA,EACzB,CAAC,aAAa,OAAO;AAAA,EACrB,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,mBAAmB,iBAAiB;AAAA,EACrC,CAAC,kBAAkB,gBAAgB;AAAA,EACnC,CAAC,WAAW,KAAK;AAAA,EACjB,CAAC,aAAa,aAAa;AAAA,EAC3B,CAAC,aAAa,WAAW;AAAA,EACzB,CAAC,aAAa,WAAW;AAAA,EACzB,CAAC,YAAY,UAAU;AAAA,EACvB,CAAC,kBAAkB,gBAAgB;AAAA,EACnC,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,cAAc,YAAY;AAAA,EAC3B,CAAC,YAAY,UAAU;AAAA,EACvB,CAAC,iBAAiB,YAAY;AAAA,EAC9B,CAAC,wBAAwB,mBAAmB;AAC9C,CAAC;AACD,SAASC,GAAWplF,GAAMc,GAAK1J,GAAOwlC,GAAM;AAC1C,UAAQ97B,GAAG;AAAA,IACT,KAAK;AACH,MAAI87B,KAAQ,QACV,OAAO,QAAQA,CAAI,EAAE,QAAQ,CAAC,CAAC4I,GAAG6/C,CAAE,MAAM;AACxC,QAAIA,KAAM,QACR,OAAOrlF,EAAK,QAAQwlC,CAAC;AAAA,MAEzB,CAAC,GAEH,OAAO,QAAQpuC,CAAK,EAAE,QAAQ,CAAC,CAACkuF,GAASC,CAAS,MAAM;AACtD,QAAIA,KAAa,SACfvlF,EAAK,QAAQslF,CAAO,IAAIC;AAAA,MAE5B,CAAC;AACD;AAAA,IACF,KAAK;AACH,MAAIpF,GAAe/oF,CAAK,IACtB4I,EAAKc,CAAG,IAAI1J,IACH+oF,GAAevjD,CAAI,MAC5B58B,EAAKc,CAAG,IAAI;AAEd;AAAA,IACF,KAAK;AACH,MAAIi/E,GAAS3oF,CAAK,IAChB4I,EAAK,YAAY5I,EAAM,SACd2oF,GAASnjD,CAAI,MACtB58B,EAAK,YAAY;AAEnB;AAAA,IACF,KAAK;AACH,UAAI5I,KAAS,MAAM;AACjB,QAAIwlC,KAAQ,SACV58B,EAAKc,CAAG,IAAI;AAEd;AAAA,MACF,OAAO;AAAA,YAAId,aAAgB,OAAO;AAChC;AACK,YAAIA,aAAgB,OAAO,qBAAqB;AACrD,UAAAA,EAAK,QAAQ5I;AACb;AAAA,QACF;AAAA;AACA;AAAA,IACF,KAAK;AACH,MAAA8sF,GAAYlkF,GAAM5I,GAAOwlC,CAAI;AAC7B;AAAA,IACF,KAAK;AACH,MAAA58B,EAAK,aAAa5I,MAAU,MAAMA,MAAU,MAAQA,MAAU,SAAS,KAAOA,MAAU,MAASA,MAAU,UAAU,KAAQA;AAC7H;AAAA,IACF,KAAK;AACH,MAAIA,MAAU,MAASA,MAAU,UAC/BA,IAAQ,UACDA,MAAU,KACjBA,IAAQ,QACDA,MAAU,MAAQA,MAAU,YACnCA,IAAQ;AACV;AAAA,IACF,KAAK;AACH,MAAIA,MAAU,KACZA,IAAQ,WACDA,MAAU,MAAMA,MAAU,QACjCA,IAAQ;AACV;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH;AAAA,IACF,KAAK;AACH,MAAAytF,GAAY7kF,GAAM5I,GAAOwlC,CAAI;AAC7B;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,YAAM4oD,IAAa1kF,MAAQ;AAC3B,MAAI87B,KAAQ,QACV,OAAO,QAAQA,CAAI,EAAE,QAAQ,CAAC,CAAC65B,GAAWgvB,CAAY,MAAM;AAC1D,SAAIruF,KAAS,QAAQA,EAAMq/D,CAAS,MAAMgvB,MACxCzlF,EAAK,oBAAoBy2D,GAAWgvB,GAAcD,CAAU;AAAA,MAEhE,CAAC,GAEH,OAAO,QAAQpuF,CAAK,EAAE,QAAQ,CAAC,CAACq/D,GAAWgvB,CAAY,MAAM;AAC3D,SAAI7oD,KAAQ,QAAQA,EAAK65B,CAAS,MAAMgvB,MACtCzlF,EAAK,iBAAiBy2D,GAAWgvB,GAAcD,CAAU;AAAA,MAE7D,CAAC;AACD;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,MAAAxlF,EAAK,eAAe8kF,IAAgBE,GAAmBlkF,GAAK,GAAG,GAAG1J,CAAK;AACvE;AAAA,IACF,KAAK;AACH,MAAA4I,EAAK,aAAa,eAAe5I,CAAK;AACtC;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,MAAA4I,EAAK,eAAe+kF,IAAcC,GAAmBlkF,GAAK,GAAG,GAAG1J,CAAK;AACrE;AAAA,EACN;AACE,MAAI,OAAOA,KAAU,YAAY;AAC/B,QAAI0J,EAAI,CAAC,MAAM,OAAOA,EAAI,CAAC,MAAM,KAAK;AACpC,UAAI87B,KAAQ,QAAQA,MAASxlC;AAC3B;AACF,UAAIsuF,IAAY5kF,EAAI,YAAW;AAC/B,YAAM0kF,IAAaE,EAAU,SAAS,SAAS;AAC/C,UAAIjvB;AACJ,MAAI,CAAC+uB,MAAexlF,EAAK0lF,CAAS,MAAM,QAAQ9oD,KAAQ,QAAQ58B,EAAK0lF,CAAS,MAAM9oD,MAClF58B,EAAK0lF,CAAS,IAAItuF,GAClB2qF,GAAqB/hF,GAAM2lF,GAAsB,KAAK3lF,GAAM0lF,CAAS,CAAC,KAC7DF,KACT/uB,IAAYivB,EAAU,UAAU,GAAGA,EAAU,SAAS,CAAC,GACnD9oD,KAAQ,QACV58B,EAAK,oBAAoBy2D,GAAW75B,GAAM,EAAI,GAEhD58B,EAAK,iBAAiBy2D,GAAWr/D,GAAO,EAAI,MAExCsuF,KAAa,SAEfjvB,IAD0BivB,EAAU,UAAU,CAAC,IAI/CjvB,IADwBivB,EAAU,CAAC,IAAI5kF,EAAI,MAAM,CAAC,GAGhD87B,KAAQ,QACV58B,EAAK,oBAAoBy2D,GAAW75B,CAAI,GAE1C58B,EAAK,iBAAiBy2D,GAAWr/D,CAAK;AAAA,IAE1C;AACE,cAAQ,KAAK,mCAAmC4I,EAAK,OAAO,YAAYc,CAAG,oCAAoC1J,GAAO4I,EAAK,OAAO;AAEpI;AAAA,EACF;AACA,MAAI+/E,GAASnjD,CAAI,GAAG;AAClB,QAAIA,MAASxlC;AACX;AAEF,WAAO4I,EAAKc,CAAG;AAAA,EACjB;AACA,MAAI87B,MAAS,IAAM;AACjB,QAAIA,MAASxlC;AACX;AAEF,IAAA4I,EAAK,gBAAgBc,CAAG;AAAA,EAC1B;AACA,MAAI87B,MAAS,MAASA,KAAQ,MAAM;AAClC,QAAIA,MAASxlC;AACX;AAEF,IAAI4I,aAAgB,cAAc,CAAC8gF,GAA6B,KAAKhgF,CAAG,IACtEd,EAAK,kBAAkBglF,GAAmBlkF,GAAK,GAAG,GAAG1J,CAAK,IAE1D4I,EAAK,gBAAgBc,CAAG;AAAA,EAE5B;AACA,MAAIi/E,GAAS3oF,CAAK,GAAG;AACnB,IAAA4I,EAAKc,CAAG,IAAI1J;AACZ;AAAA,EACF;AACA,MAAIA,MAAU,IAAM;AAClB,IAAA4I,EAAK,aAAac,GAAK,EAAE;AACzB;AAAA,EACF;AACA,EAAI1J,MAAU,MAASA,KAAS,SAC1B4I,aAAgB,cAAc,CAAC8gF,GAA6B,KAAKhgF,CAAG,IACtEd,EAAK,aAAaglF,GAAmBlkF,GAAK,GAAG,GAAG1J,CAAK,IAErD4I,EAAK,aAAac,GAAK1J,CAAK;AAGlC;AACA,SAASwuF,GAAY5lF,GAAM6lF,GAAO;AAChC,WAAS,CAAC/kF,GAAK1J,CAAK,KAAK,OAAO,QAAQyuF,CAAK;AAC3C,IAAA/kF,IAAMqkF,GAAW,IAAIrkF,CAAG,KAAKA,GACzBshF,GAAahrF,CAAK,IACpB0rF,GAAc1rF,GAAO,CAAC0H,MAASsmF,GAAWplF,GAAMc,GAAKhC,EAAK,UAAUA,EAAK,SAAS,GAAG;AAAA,MACnF,eAAekB;AAAA,IACvB,CAAO,IACQkgF,GAAW9oF,CAAK,IACzBA,EAAMuoF,EAAkB,EAAE3/E,GAAMc,CAAG,IAEnCskF,GAAWplF,GAAMc,GAAK1J,CAAK;AAG/B,SAAO4I;AACT;AACA,SAAS2lF,GAAsB7kF,GAAK;AAClC,OAAKA,CAAG,IAAI;AACd;AAGA,SAASglF,EAAI9tC,GAAK6tC,GAAO;AACvB,MAAI,EAAE,UAAAr9D,GAAU,GAAGi4D,EAAI,IAAKoF,KAAS,CAAA,GACjCE,IAAKtF,EAAK;AACd,EAAKsF,MACClF,GAAY,IAAI7oC,CAAG,IACrB+tC,IAAKhF,KACEH,GAAe,IAAI5oC,CAAG,IAC7B+tC,IAAKpF,KAELoF,IAAK9E,GAAmB;AAE5B,MAAIjhF;AACJ,MAAI6/E,GAAS7nC,CAAG,GAAG;AAIjB,QAHAh4C,IAAO+lF,IAAK,SAAS,gBAAgBA,GAAI/tC,CAAG,IAAI,SAAS,cAAcA,CAAG,GAC1E4tC,GAAY5lF,GAAMygF,CAAI,GACtBkD,GAAe3jF,GAAMwoB,CAAQ,GACzBxoB,aAAgB,OAAO,qBAAqBygF,EAAK,SAAS;AAC5D,UAAIA,EAAK,aAAa,MAAQ,MAAM,QAAQA,EAAK,KAAK,GAAG;AACvD,cAAMn8E,IAASm8E,EAAK,MAAM,IAAI,CAACrpF,MAAU,OAAOA,CAAK,CAAC;AACtD,QAAA4I,EAAK,iBAAiB,QAAQ,EAAE,QAAQ,CAACU,MAAWA,EAAO,WAAW4D,EAAO,SAAS5D,EAAO,KAAK,CAAC;AAAA,MACrG;AACE,QAAAV,EAAK,QAAQygF,EAAK;AAGtB,IAAAH,GAAOG,EAAK,KAAKzgF,CAAI;AAAA,EACvB,WAAW,OAAOg4C,KAAQ;AACxB,IAAI+nC,GAAS/nC,EAAI,YAAY,MAC3ByoC,IAAO,EAAE,GAAGzoC,EAAI,cAAc,GAAGyoC,EAAI,IAEvCzgF,IAAOggF,GAAiBhoC,CAAG,IAAIuoC,GAAmBvoC,GAAKyoC,GAAMj4D,CAAQ,IAAIwvB,EAAI,EAAE,GAAGyoC,GAAM,UAAAj4D,EAAQ,CAAE;AAAA;AAElG,UAAM,IAAI,UAAU,6BAA6BwvB,CAAG,EAAE;AAExD,SAAOh4C;AACT;AAwHA,IAAIxH,KAAoB,uBAAO,IAAI,gBAAgB;AACnD,SAASiF,KAAI;AACX,MAAMuL,KAAI;AAgCHA,IAAAA;AAAAA,OAhCO;AACZ,QAAI2rE,GAAIqR,IAAK;AASb,SARE,WAAW;AACX,UAAI9Q,IAAK74E;AAET,WADAA,KAAI,QACc64E,MAAX;AACL,QAAIA,EAAG,EAAE,MAAMA,EAAG,MAAGA,EAAG,EAAE,IAAIA,EAAG,IACjCA,IAAKA,EAAG;AAAA,IAEZ,EAAC,GACiB3tE,OAAX,UAAc;AACnB,UAAIm8B,IAAKn8B;AAGT,WAFAA,KAAI,QACJpI,MACkBukC,MAAX,UAAe;AACpB,YAAIroC,IAAKqoC,EAAG;AAGZ,YAFAA,EAAG,IAAI,QACPA,EAAG,KAAK,IACJ,EAAE,IAAIA,EAAG,MAAMp8B,GAAEo8B,CAAE,EAAG,KAAI;AAC5B,UAAAA,EAAG,EAAC;AAAA,QACN,SAASuiD,GAAI;AACX,UAAKD,MACHrR,IAAKsR,GACLD,IAAK;AAAA,QAET;AACA,QAAAtiD,IAAKroC;AAAA,MACP;AAAA,IACF;AAGA,QAFA8D,KAAI,GACJ6J,MACIg9E,EAAI,OAAMrR;AAAA,EAChB;AACF;AAWA,IAAI/6E,KAAI;AACR,SAASssF,GAAEvR,GAAI;AACb,MAAIqR,IAAKpsF;AACTA,EAAAA,KAAI;AACJ,MAAI;AACF,WAAO+6E,EAAE;AAAA,EACX,UAAC;AACC/6E,IAAAA,KAAIosF;AAAA,EACN;AACF;AAEA,IAAIz+E,KAAI,QACJyB,KAAI,GACJ7J,KAAI,GAEJ4F,KAAI,GACJ1I,KAAI,QACJrB,KAAI;AACR,SAASoB,GAAEu4E,GAAI;AACb,MAAe/6E,OAAX,QAAc;AAChB,QAAIosF,IAAKrR,EAAG;AACZ,QAAeqR,MAAX,UAAiBA,EAAG,MAAMpsF;AAC5B,aAAAosF,IAAK,EAAE,GAAG,GAAG,GAAGrR,GAAI,GAAG/6E,GAAE,GAAG,GAAG,QAAQ,GAAGA,IAAG,GAAG,QAAQ,GAAG,QAAQ,GAAGosF,EAAE,GACzDpsF,GAAE,MAAb,WAAgBA,GAAE,EAAE,IAAIosF,IAC5BpsF,GAAE,IAAIosF,GACNrR,EAAG,IAAIqR,GACH,KAAKpsF,GAAE,KAAG+6E,EAAG,EAAEqR,CAAE,GACdA;AACF,QAAWA,EAAG,MAAV;AACT,aAAAA,EAAG,IAAI,GACQA,EAAG,MAAd,WACFA,EAAG,EAAE,IAAIA,EAAG,GACGA,EAAG,MAAd,WAAiBA,EAAG,EAAE,IAAIA,EAAG,IACjCA,EAAG,IAAIpsF,GAAE,GACTosF,EAAG,IAAI,QACPpsF,GAAE,EAAE,IAAIosF,GACRpsF,GAAE,IAAIosF,IAEDA;AAAA,EAEX;AACF;AACA,SAASn9E,GAAE8rE,GAAIqR,GAAI;AACjB,OAAK,IAAIrR,GACT,KAAK,IAAI,GACT,KAAK,IAAI,QACT,KAAK,IAAI,QACT,KAAK,IAAI,GACT,KAAK,IAAYqR,KAAR,OAAa,SAASA,EAAG,SAClC,KAAK,IAAYA,KAAR,OAAa,SAASA,EAAG,WAClC,KAAK,OAAeA,KAAR,OAAa,SAASA,EAAG;AACvC;AACAn9E,GAAE,UAAU,QAAQrQ;AACpBqQ,GAAE,UAAU,IAAI,WAAW;AACzB,SAAO;AACT;AACAA,GAAE,UAAU,IAAI,SAAS8rE,GAAI;AAC3B,MAAIqR,IAAK,MAAMtiD,IAAK,KAAK;AACzB,EAAIA,MAAOixC,KAAiBA,EAAG,MAAd,WACfA,EAAG,IAAIjxC,GACP,KAAK,IAAIixC,GACMjxC,MAAX,SAAeA,EAAG,IAAIixC,IACrBuR,GAAE,WAAW;AAChB,QAAIhR;AACJ,KAASA,IAAK8Q,EAAG,MAAjB,QAAuB9Q,EAAG,KAAK8Q,CAAE;AAAA,EACnC,CAAC;AAEL;AACAn9E,GAAE,UAAU,IAAI,SAAS8rE,GAAI;AAC3B,MAAIqR,IAAK;AACT,MAAe,KAAK,MAAhB,QAAmB;AACrB,QAAItiD,IAAKixC,EAAG,GAAGt5E,IAAKs5E,EAAG;AACvB,IAAejxC,MAAX,WACFA,EAAG,IAAIroC,GACPs5E,EAAG,IAAI,SAEMt5E,MAAX,WACFA,EAAG,IAAIqoC,GACPixC,EAAG,IAAI,SAELA,MAAO,KAAK,MACd,KAAK,IAAIt5E,GACMA,MAAX,UAAe6qF,GAAE,WAAW;AAC9B,UAAIhR;AACJ,OAASA,IAAK8Q,EAAG,MAAjB,QAAuB9Q,EAAG,KAAK8Q,CAAE;AAAA,IACnC,CAAC;AAAA,EAEL;AACF;AACAn9E,GAAE,UAAU,YAAY,SAAS8rE,GAAI;AACnC,MAAIqR,IAAK;AACT,SAAOnpD,GAAE,WAAW;AAClB,QAAI6G,IAAKsiD,EAAG,OAAOG,IAAKvsF;AACxBA,IAAAA,KAAI;AACJ,QAAI;AACF,MAAA+6E,EAAGjxC,CAAE;AAAA,IACP,UAAC;AACC9pC,MAAAA,KAAIusF;AAAA,IACN;AAAA,EACF,GAAG,EAAE,MAAM,OAAO;AACpB;AACAt9E,GAAE,UAAU,UAAU,WAAW;AAC/B,SAAO,KAAK;AACd;AACAA,GAAE,UAAU,WAAW,WAAW;AAChC,SAAO,KAAK,QAAQ;AACtB;AACAA,GAAE,UAAU,SAAS,WAAW;AAC9B,SAAO,KAAK;AACd;AACAA,GAAE,UAAU,OAAO,WAAW;AAC5B,MAAI8rE,IAAK/6E;AACTA,EAAAA,KAAI;AACJ,MAAI;AACF,WAAO,KAAK;AAAA,EACd,UAAC;AACCA,IAAAA,KAAI+6E;AAAA,EACN;AACF;AACA,OAAO,eAAe9rE,GAAE,WAAW,SAAS,EAAE,KAAK,WAAW;AAC5D,MAAI8rE,IAAKv4E,GAAE,IAAI;AACf,SAAeu4E,MAAX,WAAeA,EAAG,IAAI,KAAK,IACxB,KAAK;AACd,GAAG,KAAK,SAASA,GAAI;AACnB,MAAIA,MAAO,KAAK,GAAG;AACjB,QAAIx1E,KAAI,IAAK,OAAM,IAAI,MAAM,gBAAgB;AAC7C,KAAE,SAAS+1E,GAAI;AACb,MAAUlsE,OAAN,KAAiB7J,OAAN,KACT+1E,EAAG,MAAMnwE,OACXmwE,EAAG,IAAInwE,IACP1I,KAAI,EAAE,GAAG64E,GAAI,GAAGA,EAAG,GAAG,GAAGA,EAAG,GAAG,GAAG74E,GAAC;AAAA,IAGzC,GAAG,IAAI,GACP,KAAK,IAAIs4E,GACT,KAAK,KACL35E,MACAgO;AACA,QAAI;AACF,eAAS06B,IAAK,KAAK,GAAcA,MAAX,QAAeA,IAAKA,EAAG,EAAG,CAAAA,EAAG,EAAE,EAAC;AAAA,IACxD,UAAC;AACCjmC,MAAAA,GAAC;AAAA,IACH;AAAA,EACF;AACF,GAAG;AAIH,SAAS6J,GAAEqtE,GAAI;AACb,WAASqR,IAAKrR,EAAG,GAAcqR,MAAX,QAAeA,IAAKA,EAAG,EAAG,KAAIA,EAAG,EAAE,MAAMA,EAAG,KAAK,CAACA,EAAG,EAAE,EAAC,KAAMA,EAAG,EAAE,MAAMA,EAAG,EAAG,QAAO;AAC1G,SAAO;AACT;AACA,SAAS7nF,GAAEw2E,GAAI;AACb,WAASqR,IAAKrR,EAAG,GAAcqR,MAAX,QAAeA,IAAKA,EAAG,GAAG;AAC5C,QAAItiD,IAAKsiD,EAAG,EAAE;AAId,QAHetiD,MAAX,WAAesiD,EAAG,IAAItiD,IAC1BsiD,EAAG,EAAE,IAAIA,GACTA,EAAG,IAAI,IACQA,EAAG,MAAd,QAAiB;AACnB,MAAArR,EAAG,IAAIqR;AACP;AAAA,IACF;AAAA,EACF;AACF;AACA,SAASnsF,GAAE86E,GAAI;AAEb,WADIqR,IAAKrR,EAAG,GAAGjxC,IAAK,QACFsiD,MAAX,UAAe;AACpB,QAAI3qF,IAAK2qF,EAAG;AACZ,IAAWA,EAAG,MAAV,MACFA,EAAG,EAAE,EAAEA,CAAE,GACM3qF,MAAX,WAAeA,EAAG,IAAI2qF,EAAG,IACdA,EAAG,MAAd,WAAiBA,EAAG,EAAE,IAAI3qF,MACzBqoC,IAAKsiD,GACZA,EAAG,EAAE,IAAIA,EAAG,GACGA,EAAG,MAAd,WAAiBA,EAAG,IAAI,SAC5BA,IAAK3qF;AAAA,EACP;AACA,EAAAs5E,EAAG,IAAIjxC;AACT;AACA,SAASppC,GAAEq6E,GAAIqR,GAAI;AACjBn9E,EAAAA,GAAE,KAAK,MAAM,MAAM,GACnB,KAAK,IAAI8rE,GACT,KAAK,IAAI,QACT,KAAK,IAAI35E,KAAI,GACb,KAAK,IAAI,GACT,KAAK,IAAYgrF,KAAR,OAAa,SAASA,EAAG,SAClC,KAAK,IAAYA,KAAR,OAAa,SAASA,EAAG,WAClC,KAAK,OAAeA,KAAR,OAAa,SAASA,EAAG;AACvC;AACA1rF,GAAE,YAAY,IAAIuO,GAAC;AACnBvO,GAAE,UAAU,IAAI,WAAW;AAEzB,MADA,KAAK,KAAK,IACN,IAAI,KAAK,EAAG,QAAO;AAGvB,OAFW,KAAK,KAAK,MAAjB,OACJ,KAAK,KAAK,IACN,KAAK,MAAMU,IAAG,QAAO;AAGzB,MAFA,KAAK,IAAIA,IACT,KAAK,KAAK,GACN,KAAK,IAAI,KAAK,CAACsM,GAAE,IAAI;AACvB,gBAAK,KAAK,IACH;AAET,MAAIqtE,IAAK/6E;AACT,MAAI;AACFuE,IAAAA,GAAE,IAAI,GACNvE,KAAI;AACJ,QAAIosF,IAAK,KAAK,EAAC;AACf,KAAI,KAAK,KAAK,KAAK,KAAK,MAAMA,KAAY,KAAK,MAAX,OAClC,KAAK,IAAIA,GACT,KAAK,KAAK,KACV,KAAK;AAAA,EAET,SAAS9Q,GAAI;AACX,SAAK,IAAIA,GACT,KAAK,KAAK,IACV,KAAK;AAAA,EACP;AACAt7E,SAAAA,KAAI+6E,GACJ96E,GAAE,IAAI,GACN,KAAK,KAAK,IACH;AACT;AACAS,GAAE,UAAU,IAAI,SAASq6E,GAAI;AAC3B,MAAe,KAAK,MAAhB,QAAmB;AACrB,SAAK,KAAK;AACV,aAASqR,IAAK,KAAK,GAAcA,MAAX,QAAeA,IAAKA,EAAG,EAAG,CAAAA,EAAG,EAAE,EAAEA,CAAE;AAAA,EAC3D;AACAn9E,EAAAA,GAAE,UAAU,EAAE,KAAK,MAAM8rE,CAAE;AAC7B;AACAr6E,GAAE,UAAU,IAAI,SAASq6E,GAAI;AAC3B,MAAe,KAAK,MAAhB,WACF9rE,GAAE,UAAU,EAAE,KAAK,MAAM8rE,CAAE,GACZ,KAAK,MAAhB,SAAmB;AACrB,SAAK,KAAK;AACV,aAASqR,IAAK,KAAK,GAAcA,MAAX,QAAeA,IAAKA,EAAG,EAAG,CAAAA,EAAG,EAAE,EAAEA,CAAE;AAAA,EAC3D;AAEJ;AACA1rF,GAAE,UAAU,IAAI,WAAW;AACzB,MAAI,EAAE,IAAI,KAAK,IAAI;AACjB,SAAK,KAAK;AACV,aAASq6E,IAAK,KAAK,GAAcA,MAAX,QAAeA,IAAKA,EAAG,EAAG,CAAAA,EAAG,EAAE,EAAC;AAAA,EACxD;AACF;AACA,OAAO,eAAer6E,GAAE,WAAW,SAAS,EAAE,KAAK,WAAW;AAC5D,MAAI,IAAI,KAAK,EAAG,OAAM,IAAI,MAAM,gBAAgB;AAChD,MAAIq6E,IAAKv4E,GAAE,IAAI;AAGf,MAFA,KAAK,EAAC,GACSu4E,MAAX,WAAeA,EAAG,IAAI,KAAK,IAC3B,KAAK,KAAK,EAAG,OAAM,KAAK;AAC5B,SAAO,KAAK;AACd,GAAG;AAIH,SAASyR,GAAEzR,GAAI;AACb,MAAIjxC,IAAKixC,EAAG;AAEZ,MADAA,EAAG,IAAI,QACW,OAAOjxC,KAArB,YAAyB;AAC3B16B,IAAAA;AACA,QAAIm9E,IAAKvsF;AACTA,IAAAA,KAAI;AACJ,QAAI;AACF,MAAA8pC,EAAE;AAAA,IACJ,SAASsiD,GAAI;AACX,YAAArR,EAAG,KAAK,IACRA,EAAG,KAAK,GACRv6E,GAAEu6E,CAAE,GACEqR;AAAA,IACR,UAAC;AACCpsF,MAAAA,KAAIusF,GACJ1oF,GAAC;AAAA,IACH;AAAA,EACF;AACF;AACA,SAASrD,GAAEu6E,GAAI;AACb,WAASqR,IAAKrR,EAAG,GAAcqR,MAAX,QAAeA,IAAKA,EAAG,EAAG,CAAAA,EAAG,EAAE,EAAEA,CAAE;AACvD,EAAArR,EAAG,IAAI,QACPA,EAAG,IAAI,QACPyR,GAAEzR,CAAE;AACN;AACA,SAAS73E,GAAE63E,GAAI;AACb,MAAI/6E,OAAM,KAAM,OAAM,IAAI,MAAM,qBAAqB;AACrDC,EAAAA,GAAE,IAAI,GACND,KAAI+6E,GACJ,KAAK,KAAK,IACN,IAAI,KAAK,KAAGv6E,GAAE,IAAI,GACtBqD,GAAC;AACH;AACA,SAAS4oF,GAAE1R,GAAIqR,GAAI;AACjB,OAAK,IAAIrR,GACT,KAAK,IAAI,QACT,KAAK,IAAI,QACT,KAAK,IAAI,QACT,KAAK,IAAI,IACT,KAAK,OAAeqR,KAAR,OAAa,SAASA,EAAG;AAEvC;AACAK,GAAE,UAAU,IAAI,WAAW;AACzB,MAAI1R,IAAK,KAAK,EAAC;AACf,MAAI;AAEF,QADI,IAAI,KAAK,KACE,KAAK,MAAhB,OAAmB;AACvB,QAAIqR,IAAK,KAAK,EAAC;AACf,IAAkB,OAAOA,KAArB,eAAyB,KAAK,IAAIA;AAAA,EACxC,UAAC;AACC,IAAArR,EAAE;AAAA,EACJ;AACF;AACA0R,GAAE,UAAU,IAAI,WAAW;AACzB,MAAI,IAAI,KAAK,EAAG,OAAM,IAAI,MAAM,gBAAgB;AAChD,OAAK,KAAK,GACV,KAAK,KAAK,IACVD,GAAE,IAAI,GACNjoF,GAAE,IAAI,GACN6K;AACA,MAAI2rE,IAAK/6E;AACTA,SAAAA,KAAI,MACGkD,GAAE,KAAK,MAAM63E,CAAE;AACxB;AACA0R,GAAE,UAAU,IAAI,WAAW;AACzB,EAAM,IAAI,KAAK,MACb,KAAK,KAAK,GACV,KAAK,IAAI9+E,IACTA,KAAI;AAER;AACA8+E,GAAE,UAAU,IAAI,WAAW;AACzB,OAAK,KAAK,GACJ,IAAI,KAAK,KAAIjsF,GAAE,IAAI;AAC3B;AACAisF,GAAE,UAAU,UAAU,WAAW;AAC/B,OAAK,EAAC;AACR;AACA,SAASxpD,GAAE83C,GAAIqR,GAAI;AACjB,MAAItiD,IAAK,IAAI2iD,GAAE1R,GAAIqR,CAAE;AACrB,MAAI;AACF,IAAAtiD,EAAG,EAAC;AAAA,EACN,SAASwxC,GAAI;AACX,UAAAxxC,EAAG,EAAC,GACEwxC;AAAA,EACR;AACA,MAAI75E,IAAKqoC,EAAG,EAAE,KAAKA,CAAE;AACrB,SAAAroC,EAAG,OAAO,OAAO,IAAIA,GACdA;AACT;ACh/CA,IAAI7C,KAAE,OAAO,IAAI,gBAAgB;AAAE,SAASiF,KAAG;AAAC,MAAKuL,KAAE;AAA4Q,IAAAA;AAAA,OAAzQ;AAAC,QAAIxQ,GAAEiF,IAAE;AAAqF,SAAjF,WAAU;AAAC,UAAIjF,IAAE6D;AAAW,WAATA,KAAE,QAAsB7D,MAAT;AAAY,QAAGA,EAAE,EAAE,MAAIA,EAAE,MAAEA,EAAE,EAAE,IAAEA,EAAE,IAAEA,IAAEA,EAAE;AAAA,IAAE,EAAC,GAAkB+O,OAAT,UAAW;AAAC,UAAIhO,IAAEgO;AAAe,WAAbA,KAAE,QAAOpI,MAAmB5F,MAAT,UAAW;AAAC,YAAIK,IAAEL,EAAE;AAAqB,YAAnBA,EAAE,IAAE,QAAOA,EAAE,KAAG,IAAM,EAAE,IAAEA,EAAE,MAAI+N,GAAE/N,CAAC,EAAE,KAAG;AAAC,UAAAA,EAAE,EAAC;AAAA,QAAE,SAAOA,GAAE;AAAC,UAAIkE,MAAGjF,IAAEe,GAAEkE,IAAE;AAAA,QAAG;AAAC,QAAAlE,IAAEK;AAAA,MAAC;AAAA,IAAC;AAAS,QAARuF,KAAE,GAAE6J,MAAOvL,EAAE,OAAMjF;AAAA,EAAC;AAAS;AAAuE,IAAIoB,KAAE;AAAO,SAASssF,GAAE1tF,GAAE;AAAC,MAAIiF,IAAE7D;AAAE,EAAAA,KAAE;AAAO,MAAG;AAAC,WAAOpB,EAAC;AAAA,EAAE,UAAC;AAAQ,IAAAoB,KAAE6D;AAAA,EAAC;AAAC;AAAI,IAAG8J,KAAE,QAAOyB,KAAE,GAAE7J,KAAE,GAAM4F,KAAE,GAAE1I,KAAE,QAAOrB,KAAE;AAAE,SAASoB,GAAE5D,GAAE;AAAC,MAAYoB,OAAT,QAAW;AAAC,QAAI6D,IAAEjF,EAAE;AAAE,QAAYiF,MAAT,UAAYA,EAAE,MAAI7D;AAAG,aAAA6D,IAAE,EAAC,GAAE,GAAE,GAAEjF,GAAE,GAAEoB,GAAE,GAAE,GAAE,QAAO,GAAEA,IAAE,GAAE,QAAO,GAAE,QAAO,GAAE6D,EAAC,GAAc7D,GAAE,MAAX,WAAaA,GAAE,EAAE,IAAE6D,IAAE7D,GAAE,IAAE6D,GAAEjF,EAAE,IAAEiF,GAAK,KAAG7D,GAAE,KAAEpB,EAAE,EAAEiF,CAAC,GAASA;AAAO,QAAQA,EAAE,MAAP;AAAU,aAAAA,EAAE,IAAE,GAAcA,EAAE,MAAX,WAAcA,EAAE,EAAE,IAAEA,EAAE,GAAcA,EAAE,MAAX,WAAaA,EAAE,EAAE,IAAEA,EAAE,IAAEA,EAAE,IAAE7D,GAAE,GAAE6D,EAAE,IAAE,QAAO7D,GAAE,EAAE,IAAE6D,GAAE7D,GAAE,IAAE6D,IAASA;AAAA,EAAE;AAAC;AAAC,SAASoL,GAAErQ,GAAEiF,GAAE;AAAC,OAAK,IAAEjF,GAAE,KAAK,IAAE,GAAE,KAAK,IAAE,QAAO,KAAK,IAAE,QAAO,KAAK,IAAE,GAAE,KAAK,IAAQiF,KAAN,OAAQ,SAAOA,EAAE,SAAQ,KAAK,IAAQA,KAAN,OAAQ,SAAOA,EAAE,WAAU,KAAK,OAAWA,KAAN,OAAQ,SAAOA,EAAE;AAAI;AAACoL,GAAE,UAAU,QAAMrQ;AAAEqQ,GAAE,UAAU,IAAE,WAAU;AAAC;AAAQ;AAAEA,GAAE,UAAU,IAAE,SAASrQ,GAAE;AAAC,MAAIiF,IAAE,MAAKlE,IAAE,KAAK;AAAE,EAAGA,MAAIf,KAAYA,EAAE,MAAX,WAAcA,EAAE,IAAEe,GAAE,KAAK,IAAEf,GAAce,MAAT,SAAWA,EAAE,IAAEf,IAAO0tF,GAAE,WAAU;AAAC,QAAI1tF;AAAE,KAAOA,IAAEiF,EAAE,MAAX,QAAejF,EAAE,KAAKiF,CAAC;AAAA,EAAC,CAAC;AAAE;AAAEoL,GAAE,UAAU,IAAE,SAASrQ,GAAE;AAAC,MAAIiF,IAAE;AAAK,MAAY,KAAK,MAAd,QAAgB;AAAC,QAAIlE,IAAEf,EAAE,GAAEoB,IAAEpB,EAAE;AAAE,IAAYe,MAAT,WAAYA,EAAE,IAAEK,GAAEpB,EAAE,IAAE,SAAmBoB,MAAT,WAAYA,EAAE,IAAEL,GAAEf,EAAE,IAAE,SAAUA,MAAI,KAAK,MAAG,KAAK,IAAEoB,GAAcA,MAAT,UAAWssF,GAAE,WAAU;AAAC,UAAI1tF;AAAE,OAAOA,IAAEiF,EAAE,MAAX,QAAejF,EAAE,KAAKiF,CAAC;AAAA,IAAC,CAAC;AAAA,EAAE;AAAC;AAAEoL,GAAE,UAAU,YAAU,SAASrQ,GAAE;AAAC,MAAIiF,IAAE;AAAK,SAAOo/B,GAAE,WAAU;AAAC,QAAItjC,IAAEkE,EAAE;AAAM,IAAAyoF,GAAE,WAAU;AAAC,aAAO1tF,EAAEe,CAAC;AAAA,IAAC,CAAC;AAAA,EAAC,GAAE,EAAC,MAAK,MAAK,CAAC;AAAC;AAAEsP,GAAE,UAAU,UAAQ,WAAU;AAAC,SAAO,KAAK;AAAK;AAAEA,GAAE,UAAU,WAAS,WAAU;AAAC,SAAO,KAAK,QAAM;AAAE;AAAEA,GAAE,UAAU,SAAO,WAAU;AAAC,SAAO,KAAK;AAAK;AAAEA,GAAE,UAAU,OAAK,WAAU;AAAC,MAAIrQ,IAAE;AAAK,SAAO0tF,GAAE,WAAU;AAAC,WAAO1tF,EAAE;AAAA,EAAK,CAAC;AAAC;AAAE,OAAO,eAAeqQ,GAAE,WAAU,SAAQ,EAAC,KAAI,WAAU;AAAC,MAAIrQ,IAAE4D,GAAE,IAAI;AAAE,SAAY5D,MAAT,WAAWA,EAAE,IAAE,KAAK,IAAS,KAAK;AAAC,GAAE,KAAI,SAASA,GAAE;AAAC,MAAGA,MAAI,KAAK,GAAE;AAAC,QAAG2G,KAAE,IAAI,OAAM,IAAI,MAAM,gBAAgB;AAAE,KAAC,SAAS3G,GAAE;AAAC,MAAOwQ,OAAJ,KAAW7J,OAAJ,KAAS3G,EAAE,MAAIuM,OAAGvM,EAAE,IAAEuM,IAAE1I,KAAE,EAAC,GAAE7D,GAAE,GAAEA,EAAE,GAAE,GAAEA,EAAE,GAAE,GAAE6D,GAAC;AAAA,IAAE,GAAE,IAAI,GAAE,KAAK,IAAE7D,GAAE,KAAK,KAAIwC,MAAIgO;AAAI,QAAG;AAAC,eAAQzP,IAAE,KAAK,GAAWA,MAAT,QAAWA,IAAEA,EAAE,EAAE,CAAAA,EAAE,EAAE,EAAC;AAAA,IAAE,UAAC;AAAQ,MAAAkE,GAAC;AAAA,IAAE;AAAA,EAAC;AAAC,EAAC,CAAC;AAAE,SAASV,GAAEvE,GAAEiF,GAAE;AAAC,SAAO,IAAIoL,GAAErQ,GAAEiF,CAAC;AAAC;AAAC,SAAS6J,GAAE9O,GAAE;AAAC,WAAQiF,IAAEjF,EAAE,GAAWiF,MAAT,QAAWA,IAAEA,EAAE,EAAE,KAAGA,EAAE,EAAE,MAAIA,EAAE,KAAG,CAACA,EAAE,EAAE,EAAC,KAAIA,EAAE,EAAE,MAAIA,EAAE,EAAE,QAAM;AAAG,SAAM;AAAE;AAAC,SAASU,GAAE3F,GAAE;AAAC,WAAQiF,IAAEjF,EAAE,GAAWiF,MAAT,QAAWA,IAAEA,EAAE,GAAE;AAAC,QAAIlE,IAAEkE,EAAE,EAAE;AAAqC,QAAvBlE,MAAT,WAAWkE,EAAE,IAAElE,IAAEkE,EAAE,EAAE,IAAEA,GAAEA,EAAE,IAAE,IAAeA,EAAE,MAAX,QAAa;AAAC,MAAAjF,EAAE,IAAEiF;AAAE;AAAA,IAAK;AAAA,EAAC;AAAC;AAAC,SAAS5D,GAAErB,GAAE;AAAoB,WAAfiF,IAAEjF,EAAE,GAAEe,IAAE,QAAsBkE,MAAT,UAAW;AAAC,QAAI7D,IAAE6D,EAAE;AAAE,IAAQA,EAAE,MAAP,MAAUA,EAAE,EAAE,EAAEA,CAAC,GAAc7D,MAAT,WAAWA,EAAE,IAAE6D,EAAE,IAAcA,EAAE,MAAX,WAAaA,EAAE,EAAE,IAAE7D,MAAOL,IAAEkE,GAAEA,EAAE,EAAE,IAAEA,EAAE,GAAcA,EAAE,MAAX,WAAaA,EAAE,IAAE,SAAOA,IAAE7D;AAAA,EAAC;AAAC,EAAApB,EAAE,IAAEe;AAAC;AAAC,SAASe,GAAE9B,GAAEiF,GAAE;AAAC,EAAAoL,GAAE,KAAK,MAAK,QAAOpL,CAAC,GAAE,KAAK,IAAEjF,GAAE,KAAK,IAAE,QAAO,KAAK,IAAEwC,KAAE,GAAE,KAAK,IAAE;AAAC;AAACV,GAAE,YAAU,IAAIuO;AAAEvO,GAAE,UAAU,IAAE,WAAU;AAAY,MAAX,KAAK,KAAG,IAAM,IAAE,KAAK,EAAE,QAAM;AAA0C,OAA/B,KAAG,KAAK,MAAb,OAAyB,KAAK,KAAG,IAAM,KAAK,MAAIU,IAAE;AAA4B,MAAnB,KAAK,IAAEA,IAAE,KAAK,KAAG,GAAK,KAAK,IAAE,KAAG,CAACsM,GAAE,IAAI;AAAG,gBAAK,KAAG,IAAS;AAAG,MAAI9O,IAAEoB;AAAE,MAAG;AAAC,IAAAuE,GAAE,IAAI,GAAEvE,KAAE;AAAK,QAAI6D,IAAE,KAAK,EAAC;AAAG,KAAG,KAAG,KAAK,KAAG,KAAK,MAAIA,KAAO,KAAK,MAAT,OAAY,KAAK,IAAEA,GAAE,KAAK,KAAG,KAAI,KAAK;AAAA,EAAI,SAAOjF,GAAE;AAAC,SAAK,IAAEA,GAAE,KAAK,KAAG,IAAG,KAAK;AAAA,EAAG;AAAC,SAAAoB,KAAEpB,GAAEqB,GAAE,IAAI,GAAE,KAAK,KAAG,IAAS;AAAE;AAAES,GAAE,UAAU,IAAE,SAAS9B,GAAE;AAAC,MAAY,KAAK,MAAd,QAAgB;AAAC,SAAK,KAAG;AAAG,aAAQiF,IAAE,KAAK,GAAWA,MAAT,QAAWA,IAAEA,EAAE,EAAE,CAAAA,EAAE,EAAE,EAAEA,CAAC;AAAA,EAAC;AAAC,EAAAoL,GAAE,UAAU,EAAE,KAAK,MAAKrQ,CAAC;AAAC;AAAE8B,GAAE,UAAU,IAAE,SAAS9B,GAAE;AAAC,MAAY,KAAK,MAAd,WAAiBqQ,GAAE,UAAU,EAAE,KAAK,MAAKrQ,CAAC,GAAc,KAAK,MAAd,SAAgB;AAAC,SAAK,KAAG;AAAI,aAAQiF,IAAE,KAAK,GAAWA,MAAT,QAAWA,IAAEA,EAAE,EAAE,CAAAA,EAAE,EAAE,EAAEA,CAAC;AAAA,EAAC;AAAE;AAAEnD,GAAE,UAAU,IAAE,WAAU;AAAC,MAAG,EAAE,IAAE,KAAK,IAAG;AAAC,SAAK,KAAG;AAAE,aAAQ9B,IAAE,KAAK,GAAWA,MAAT,QAAWA,IAAEA,EAAE,EAAE,CAAAA,EAAE,EAAE;EAAG;AAAC;AAAE,OAAO,eAAe8B,GAAE,WAAU,SAAQ,EAAC,KAAI,WAAU;AAAC,MAAG,IAAE,KAAK,EAAE,OAAM,IAAI,MAAM,gBAAgB;AAAE,MAAI9B,IAAE4D,GAAE,IAAI;AAAoC,MAAlC,KAAK,EAAC,GAAe5D,MAAT,WAAWA,EAAE,IAAE,KAAK,IAAK,KAAG,KAAK,EAAE,OAAM,KAAK;AAAE,SAAO,KAAK;AAAC,EAAC,CAAC;AAAE,SAASgQ,GAAEhQ,GAAEiF,GAAE;AAAC,SAAO,IAAInD,GAAE9B,GAAEiF,CAAC;AAAC;AAAC,SAAS2oF,GAAE5tF,GAAE;AAAC,MAAIe,IAAEf,EAAE;AAAa,MAAXA,EAAE,IAAE,QAAsB,OAAOe,KAAnB,YAAqB;AAAC,IAAAyP;AAAI,QAAIk9E,IAAEtsF;AAAE,IAAAA,KAAE;AAAO,QAAG;AAAC,MAAAL,EAAC;AAAA,IAAE,SAAOkE,GAAE;AAAC,YAAAjF,EAAE,KAAG,IAAGA,EAAE,KAAG,GAAE4B,GAAE5B,CAAC,GAAQiF;AAAA,IAAC,UAAC;AAAQ,MAAA7D,KAAEssF,GAAEzoF,GAAC;AAAA,IAAE;AAAA,EAAC;AAAC;AAAC,SAASrD,GAAE5B,GAAE;AAAC,WAAQiF,IAAEjF,EAAE,GAAWiF,MAAT,QAAWA,IAAEA,EAAE,EAAE,CAAAA,EAAE,EAAE,EAAEA,CAAC;AAAE,EAAAjF,EAAE,IAAE,QAAOA,EAAE,IAAE,QAAO4tF,GAAE5tF,CAAC;AAAC;AAAC,SAASsE,GAAEtE,GAAE;AAAC,MAAGoB,OAAI,KAAK,OAAM,IAAI,MAAM,qBAAqB;AAAE,EAAAC,GAAE,IAAI,GAAED,KAAEpB,GAAE,KAAK,KAAG,IAAM,IAAE,KAAK,KAAE4B,GAAE,IAAI,GAAEqD,GAAC;AAAE;AAAC,SAAS4oF,GAAE7tF,GAAEiF,GAAE;AAAC,OAAK,IAAEjF,GAAE,KAAK,IAAE,QAAO,KAAK,IAAE,QAAO,KAAK,IAAE,QAAO,KAAK,IAAE,IAAG,KAAK,OAAWiF,KAAN,OAAQ,SAAOA,EAAE;AAAsB;AAAC4oF,GAAE,UAAU,IAAE,WAAU;AAAC,MAAI7tF,IAAE,KAAK,EAAC;AAAG,MAAG;AAAoB,QAAhB,IAAE,KAAK,KAAqB,KAAK,MAAd,OAAgB;AAAO,QAAIiF,IAAE,KAAK,EAAC;AAAG,IAAe,OAAOA,KAAnB,eAAqB,KAAK,IAAEA;AAAA,EAAC,UAAC;AAAQ,IAAAjF,EAAC;AAAA,EAAE;AAAC;AAAE6tF,GAAE,UAAU,IAAE,WAAU;AAAC,MAAG,IAAE,KAAK,EAAE,OAAM,IAAI,MAAM,gBAAgB;AAAE,OAAK,KAAG,GAAE,KAAK,KAAG,IAAGD,GAAE,IAAI,GAAEjoF,GAAE,IAAI,GAAE6K;AAAI,MAAIxQ,IAAEoB;AAAE,SAAAA,KAAE,MAAYkD,GAAE,KAAK,MAAKtE,CAAC;AAAC;AAAE6tF,GAAE,UAAU,IAAE,WAAU;AAAC,EAAK,IAAE,KAAK,MAAI,KAAK,KAAG,GAAE,KAAK,IAAE9+E,IAAEA,KAAE;AAAK;AAAE8+E,GAAE,UAAU,IAAE,WAAU;AAAC,OAAK,KAAG,GAAO,IAAE,KAAK,KAAGjsF,GAAE,IAAI;AAAC;AAAEisF,GAAE,UAAU,UAAQ,WAAU;AAAC,OAAK,EAAC;AAAE;AAAE,SAASxpD,GAAErkC,GAAEiF,GAAE;AAAC,MAAIlE,IAAE,IAAI8sF,GAAE7tF,GAAEiF,CAAC;AAAE,MAAG;AAAC,IAAAlE,EAAE,EAAC;AAAA,EAAE,SAAOf,GAAE;AAAC,UAAAe,EAAE,EAAC,GAASf;AAAA,EAAC;AAAC,MAAIoB,IAAEL,EAAE,EAAE,KAAKA,CAAC;AAAE,SAAAK,EAAE,OAAO,OAAO,IAAEA,GAASA;AAAC;ACQhkJ,MAAM0sF,KAAct6E,GAAe,CAAC,GAC9Bu6E,KAAav6E,GAAe,CAAC,GAC7Bw6E,KAAex6E,GAAgB,EAAK,GACpCy6E,KAAaz6E,GAAgB,EAAI,GACjC06E,KAAc16E,GAAiC,WAAW,GAC1D26E,KAAY36E,GAA4C,MAAM,GAC9D46E,KAAY56E,GAA0B,MAAM,GAC5C66E,KAAgB76E,GAAgB,EAAI,GACpC86E,KAAiB96E,GAAgB,EAAK,GACtC+6E,KAAe/6E,GAAe,SAAS,GACvCg7E,KAAah7E,GAAgB,EAAK,GAClCi7E,KAAWj7E,GAAgB,EAAK,GAChCk7E,KAAgBl7E,GAAgB,EAAK,GACrCm7E,KAAmBn7E,GAAe,GAAI,GACtCo7E,KAAep7E,GAAgB,EAAI,GAEnCq7E,KAAYr7E,GAMtB;AAAA,EACC,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO;AACX,CAAC,GAEYs7E,KAAQt7E,GAAiC,EAAE,GAG3Cu7E,KAAqBC,GAAS,MAChC,CAAChB,GAAa,SAASE,GAAY,UAAU,WACvD,GAEYe,KAAeD,GAAS,MAC1BD,GAAmB,SAASjB,GAAY,UAAU,CAC5D,GAEYoB,KAAcF,GAAS,MAC3BD,GAAmB,QAGjBjB,GAAY,SAASC,GAAW,QAAQ,IAHT,EAIzC;AAGM,SAASoB,GAAUlxF,GAAgC+kD,GAAeosC,GAAuCC,GAAoB;AAChI,EAAAtB,GAAW,QAAQ/qC,GACnB8rC,GAAM,QAAQM,GACdd,GAAe,QAAQe,GAEnBpxF,EAAQ,UAAU,WAAWmwF,GAAU,QAAQnwF,EAAQ,QACvDA,EAAQ,iBAAiB,WAAWswF,GAAa,QAAQtwF,EAAQ,eACjEA,EAAQ,eAAe,WAAWgwF,GAAW,QAAQhwF,EAAQ,aAC7DA,EAAQ,kBAAkB,WAAWowF,GAAc,QAAQpwF,EAAQ,gBACnEA,EAAQ,eAAe,WAAWuwF,GAAW,QAAQvwF,EAAQ,aAC7DA,EAAQ,iBAAiB,WAAW2wF,GAAa,QAAQ3wF,EAAQ,eACjEA,EAAQ,iBAAiB,WAAW+vF,GAAa,QAAQ/vF,EAAQ,eACjEA,EAAQ,eAAe,WAAW+vF,GAAa,QAAQ/vF,EAAQ,aAC/DA,EAAQ,aAAa,WAAWywF,GAAc,QAAQzwF,EAAQ,WAC9DA,EAAQ,qBAAqB,WAAW0wF,GAAiB,QAAQ1wF,EAAQ,mBAE7E6vF,GAAY,QAAQ;AACxB;ACnEO,MAAMwB,KAAa;AAAA,EACxB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AACT,GCdaC,KAAa;AAAA,EACxB,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,OAAO;AACT,GCKaC,KAAkB;AAAA,EAC7B,IAAIF;AAAA,EACJ,IAAIC;AACN;AAUO,SAASE,GAAgBC,IAA4B,IAAsB;ANvClF,MAAA9uF;AMwCE,QAAM+uF,IAASD,EAAO,UAAU,MAC1BE,IAAUJ,GAAgBG,CAAwB,KAAKH,GAAgB,IACvEK,MAASjvF,IAAA8uF,EAAO,aAAP,gBAAA9uF,EAAkB+uF,OAAW,CAAA;AAC5C,SAAO;AAAA,IACL,GAAGH,GAAgB;AAAA,IACnB,GAAGI;AAAA,IACH,GAAGC;AAAA,EAAA;AAEP;ACpBO,SAASC,GAAQzC,GAAqB;AACzC,QAAM0C,IAAWN,GAAA;AAEjB,SACIO,gBAAAA,EAAC,OAAA,EAAI,OAAM,cACP,UAAA;AAAA,IAAAA,gBAAAA,EAAC,OAAA,EAAI,OAAM,gBACP,UAAA;AAAA,MAAA,gBAAA1C;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO0B,GAAS,MAAM,UAAUf,GAAW,QAAQ,WAAW,EAAE,EAAE;AAAA,UAClE,SAASZ,EAAM;AAAA,UACf,OAAO0C,EAAS,cAAc;AAAA,UAE9B,4BAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,YAAA,gBAAAzC,EAAC,QAAA,EAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,IAAA,CAAI;AAAA,YAAO,gBAAAA,EAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,IAAA,CAAI;AAAA,YAAO,gBAAAA,EAAC,UAAK,GAAE,MAAK,GAAE,MAAK,OAAM,KAAI,QAAO,IAAA,CAAI;AAAA,YAAO,gBAAAA,EAAC,UAAK,GAAE,KAAI,GAAE,MAAK,OAAM,KAAI,QAAO,IAAA,CAAI;AAAA,UAAA,EAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAGrX,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO0B,GAAS,MAAM,yBAAyBhB,GAAa,QAAQ,WAAW,EAAE,EAAE;AAAA,UACnF,SAASX,EAAM;AAAA,UACf,OAAO0C,EAAS,kBAAkB;AAAA,UAElC,4BAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,YAAA,gBAAAzC,EAAC,QAAA,EAAK,GAAE,6DAAA,CAA6D;AAAA,YAAO,gBAAAA,EAAC,YAAA,EAAS,QAAO,iBAAA,CAAiB;AAAA,YAAW,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAA,CAAK;AAAA,YAAO,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,KAAA,CAAK;AAAA,YAAO,gBAAAA,EAAC,YAAA,EAAS,QAAO,eAAA,CAAe;AAAA,UAAA,EAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAGrb0C,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAOhB,GAAS,MAAM,UAAUN,GAAc,QAAQ,WAAW,EAAE,EAAE;AAAA,UACrE,SAASrB,EAAM;AAAA,UACf,OAAO2B,GAAS,MAAMN,GAAc,QAASqB,EAAS,SAAS,UAAYA,EAAS,QAAQ,MAAO;AAAA,UAEnG,UAAA;AAAA,YAAAC,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,SAAShB,GAAS,MAAMN,GAAc,QAAQ,UAAU,MAAM,EAAA,GAAY,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,cAAA,gBAAApB,EAAC,QAAA,EAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,KAAA,CAAK;AAAA,cAAO,gBAAAA,EAAC,UAAK,GAAE,MAAK,GAAE,KAAI,OAAM,KAAI,QAAO,KAAA,CAAK;AAAA,YAAA,GAAO;AAAA,8BAEtW,OAAA,EAAI,OAAO,EAAE,SAAS0B,GAAS,MAAON,GAAc,QAAkB,SAAV,OAAgB,EAAA,GAAY,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA,gBAAApB,EAAC,WAAA,EAAQ,QAAO,sBAAqB,EAAA,CAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC5T,GACJ;AAAA,IAEA0C,gBAAAA,EAAC,OAAA,EAAI,OAAM,qCACP,UAAA;AAAA,MAAA,gBAAA1C,EAAC,UAAA,EAAO,OAAM,UAAS,SAASD,EAAM,YAAY,OAAO0C,EAAS,YAAY,YAC1E,UAAA,gBAAAzC,EAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA,gBAAAA,EAAC,YAAA,EAAS,QAAO,kBAAA,CAAkB,GAAW,GACvO;AAAA,MACA,gBAAAA,EAAC,QAAA,EAAK,OAAM,gBACP,aAAS,MAAM;AACZ,cAAM98C,IAAUs9C,GAAY,OACtB9qC,IAAQ+qC,GAAW;AACzB,YAAIC,GAAa,SAASx9C,MAAY,KAAKA,KAAWwS,IAAQ;AAC1D,iBAAO,GAAGxS,IAAU,CAAC,MAAMwS,CAAK;AAEpC,cAAMxzB,IAAOghB,IAAU,MAAM,IAAIA,IAAUA,IAAU;AACrD,eAAO,GAAGhhB,IAAO,CAAC,IAAIA,IAAO,CAAC,MAAMwzB,CAAK;AAAA,MAC7C,CAAC,EAAA,CACL;AAAA,wBACC,UAAA,EAAO,OAAM,UAAS,SAASqqC,EAAM,YAAY,OAAO0C,EAAS,QAAQ,QACtE,UAAA,gBAAAzC,EAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA,gBAAAA,EAAC,YAAA,EAAS,QAAO,kBAAiB,GAAW,EAAA,CACtO;AAAA,IAAA,GACJ;AAAA,IAEA0C,gBAAAA,EAAC,OAAA,EAAI,OAAM,gBACP,UAAA;AAAA,MAAA,gBAAA1C,EAAC,UAAA,EAAO,OAAM,UAAS,SAASD,EAAM,UAAU,OAAO0C,EAAS,UAAU,WACtE,UAAAC,gBAAAA,EAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,QAAA,gBAAA1C,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,QAAS,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,QAAA,CAAQ;AAAA,QAAO,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,QAAO,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,MAAA,EAAA,CAAO,EAAA,CAC3W;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO0B,GAAS,MAAM,UAAUP,GAAS,QAAQ,WAAW,EAAE,EAAE;AAAA,UAChE,SAASpB,EAAM;AAAA,UACf,OAAO0C,EAAS,WAAW;AAAA,UAE3B,4BAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,YAAA,gBAAAzC,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI;AAAA,YAAS,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,SAAQ,IAAG,QAAA,CAAQ;AAAA,YAAO,gBAAAA,EAAC,UAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,UAAA,EAAA,CAAO;AAAA,QAAA;AAAA,MAAA;AAAA,wBAG9T,UAAA,EAAO,OAAM,6BAA4B,SAASD,EAAM,oBAAoB,OAAO0C,EAAS,cAAc,cACvG,UAAA,gBAAAzC,EAAC,OAAA,EAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,gGAAA,CAAgG,GAAO,GACxS;AAAA,MAEC0B,GAAS,MACFX,GAAc,SAAShB,EAAM,aAEzB,gBAAAC,EAAC,UAAA,EAAO,OAAM,2BAA0B,SAASD,EAAM,YAAY,OAAO0C,EAAS,mBAAmB,YAClG,UAAAC,gBAAAA,EAAC,SAAI,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,QAAA,gBAAA1C,EAAC,QAAA,EAAK,GAAE,4CAAA,CAA4C;AAAA,QAAO,gBAAAA,EAAC,YAAA,EAAS,QAAO,mBAAA,CAAmB;AAAA,QAAW,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,IAAA,CAAI;AAAA,MAAA,EAAA,CAAO,EAAA,CAC/U,IAGD,IACV;AAAA,MAED0C,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEG,OAAOhB,GAAS,MAAM,UAAWJ,GAAa,QAAkB,KAAV,OAAY,EAAE;AAAA,UACpE,SAAS,MAAM;AACX,YAAAA,GAAa,QAAQ,CAACA,GAAa,OACnCvB,EAAM,cAAA;AAAA,UACV;AAAA,UACA,OAAM;AAAA,UAEN,UAAA;AAAA,YAAA2C,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,SAAShB,GAAS,MAAMJ,GAAa,QAAQ,UAAU,MAAM,EAAA,GAAY,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,cAAA,gBAAAtB,EAAC,WAAA,EAAQ,QAAO,oCAAA,CAAoC;AAAA,cAAU,gBAAAA,EAAC,QAAA,EAAK,GAAE,+BAAA,CAA+B;AAAA,cAAO,gBAAAA,EAAC,QAAA,EAAK,GAAE,kCAAA,CAAkC;AAAA,YAAA,GAAO;AAAA,YAEpa0C,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,SAAShB,GAAS,MAAOJ,GAAa,QAAkB,SAAV,OAAgB,KAAY,OAAM,8BAA6B,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,gBAAa,KAAI,kBAAe,SAAQ,mBAAgB,SAAQ,UAAA;AAAA,cAAA,gBAAAtB,EAAC,WAAA,EAAQ,QAAO,oCAAA,CAAoC;AAAA,cAAU,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,cAAO,gBAAAA,EAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAA,CAAK;AAAA,YAAA,EAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACla,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;ACrHO,SAAS2C,GAAW5C,GAAwB;AAC/C,2BACK,OAAA,EAAI,OAAM,aAAY,OAAO2B,GAAS,MAAMf,GAAW,QAAQ,kBAAkB,eAAe,GAC5F,UAAAa,GAAM,MAAM,IAAI,CAAC1oF,GAAM+yB,MAAU;AAC9B,UAAM+2D,IAAW,MAAM;AACnB,YAAM1/C,IAAUs9C,GAAY;AAC5B,UAAIE,GAAa,SAASx9C,MAAY,KAAKA,KAAWs+C,GAAM,MAAM,SAAS;AACvE,eAAOt+C,MAAYrX;AAEvB,YAAM3J,IAAOghB,IAAU,MAAM,IAAIA,IAAUA,IAAU;AACrD,aAAOrX,MAAU3J,KAAQ2J,MAAU3J,IAAO;AAAA,IAC9C;AAEA,WACIwgE,gBAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEG,OAAOhB,GAAS,MAAM,cAAckB,MAAa,WAAW,EAAE,EAAE;AAAA,QAChE,SAAS,MAAM7C,EAAM,aAAal0D,CAAK;AAAA,QAEvC,UAAA;AAAA,UAAA,gBAAAm0D,EAAC,OAAA,EAAI,OAAM,qBACP,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,OAAM;AAAA,cACN,KAAKlnF,EAAK,SAASA,EAAK,OAAOA,EAAK;AAAA,cACpC,KAAK,QAAQ+yB,IAAQ,CAAC;AAAA,cACtB,SAAQ;AAAA,cACR,SAAS,CAAC5sB,MAAW;AAAE,gBAAAA,EAAE,cAAc,MAAM,UAAU;AAAA,cAAQ;AAAA,YAAA;AAAA,UAAA,GAEvE;AAAA,UACA,gBAAA+gF,EAAC,QAAA,EAAM,UAAAn0D,IAAQ,EAAA,CAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG7B,CAAC,EAAA,CACL;AAER;AChCO,SAASg3D,GAAO9C,GAAoB;AACvC,SACI,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,OAAO0B,GAAS,MAAM;AAClB,YAAIt+D,IAAU;AACd,eAAIq+D,GAAmB,UAAOr+D,KAAW,iBACrCu+D,GAAa,UAAOv+D,KAAW,iBAC/Bw+D,GAAY,UAAOx+D,KAAW,sBAC9Bm+D,GAAU,MAAM,aAAUn+D,KAAW,YAClCA,EAAQ,KAAA;AAAA,MACnB,CAAC;AAAA,MACD,KAAK28D,EAAM;AAAA,MAEX,UAAA2C,gBAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,IAAG;AAAA,UACH,KAAK3C,EAAM;AAAA,UAEX,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,IAAG;AAAA,gBACH,KAAKD,EAAM;AAAA,gBACX,OAAO2B,GAAS,MAAMb,GAAU,UAAU,SAAS,gBAAgB,EAAE;AAAA,gBACrE,OAAOa,GAAS,MAAM,YAAYhB,GAAa,QAAQ,SAAS,OAAO,GAAG;AAAA,gBAEzE,UAAAc,GAAM,MAAM,IAAI,CAAC1oF,GAAM+yB,MAAU;AAC1B,wBAAMi3D,IAASj3D,MAAU,KAAKA,MAAU21D,GAAM,MAAM,SAAS;AAE7D,yBACI,gBAAAxB;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEG,OAAO,WAAWn0D,MAAU,IAAI,mBAAmB,EAAE,IAAIA,MAAU21D,GAAM,MAAM,SAAS,IAAI,kBAAkB,EAAE;AAAA,sBAChH,gBAAcsB,IAAS,SAAS;AAAA,sBAChC,YAAUj3D;AAAA,sBAEV,UAAA62D,gBAAAA,EAAC,OAAA,EAAI,OAAM,mBAAkB,OAAM,gEAC/B,UAAA;AAAA,wBAAA,gBAAA1C;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BACG,KAAKlnF,EAAK,OAAOA,EAAK;AAAA,4BACtB,YAAUA,EAAK;AAAA,4BACf,OAAO,gBAAgBA,EAAK,aAAa,SAAS,uCAAuCA,EAAK,WAAW,EAAE;AAAA,4BAC3G,KAAK,QAAQ+yB,IAAQ,CAAC;AAAA,4BACtB,SAAQ;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEZ,gBAAAm0D,EAAC,OAAA,EAAI,OAAM,cAAA,CAAc;AAAA,sBAAA,EAAA,CAC7B;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAGZ,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,YAGT,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,IAAG;AAAA,gBACH,OAAO0B,GAAS,MAAM,YAAYhB,GAAa,QAAQ,SAAS,MAAM,8HAA8H;AAAA,gBAEnM,aAAS,MAAM;AACZ,wBAAM5nF,IAAO0oF,GAAM,MAAMhB,GAAY,KAAK;AAC1C,yBAAK1nF,IAED,gBAAAknF;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,IAAG;AAAA,sBACH,OAAO,gBAAgBlnF,EAAK,aAAa,SAAS,uCAAuCA,EAAK,WAAW,EAAE;AAAA,sBAC3G,KAAKyoF,GAAU,MAAM,WAAWzoF,EAAK,SAAUA,EAAK,OAAOA,EAAK;AAAA,sBAChE,OAAM;AAAA,oBAAA;AAAA,kBAAA,IANI;AAAA,gBAStB,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,UACL;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAGZ;ACpDO,SAASiqF,GAAIhD,GAAiB;AACjC,QAAMiD,IAAqB,MAAM;AAC7B,IAAArC,GAAW,QAAQ,CAACA,GAAW;AAAA,EACnC,GAEMsC,IAAyB,MAAM;AACjC,IAAAvC,GAAa,QAAQ,CAACA,GAAa;AAAA,EACvC,GAEMwC,IAAuB,MAAM;AAC/B,IAAA9B,GAAc,QAAQ,CAACA,GAAc;AAAA,EACzC,GAEM+B,IAAe,MAAM;AVvC/B,QAAA7vF;AUwCQ,KAAAA,IAAAysF,EAAM,sBAAsB,YAA5B,QAAAzsF,EAAqC;AAAA,EACzC,GAEM8vF,IAAgB,MAAM;AV3ChC,QAAA9vF;AU4CQ,KAAAA,IAAAysF,EAAM,sBAAsB,YAA5B,QAAAzsF,EAAqC;AAAA,EACzC,GAEM+vF,IAAyB,MAAM;AV/CzC,QAAA/vF;AUgDQ,IAAK,SAAS,oBAKV,SAAS,iBAAiB,MAAM,CAAA+zD,MAAO,QAAQ,KAAK,wBAAwBA,CAAG,CAAC,OAHrE/zD,IAAA,SAAS,cAAc,aAAa,MAApC,gBAAAA,EAAuC,kBAAiB,SAAS,iBACzE,oBAAoB,MAAM,CAAA+zD,MAAO,QAAQ,KAAK,mBAAmBA,CAAG,CAAC;AAAA,EAIhF,GAEMi8B,IAAmB,CAACz3D,MAAkB;AVzDhD,QAAAv4B;AU0DQ,IAAIktF,GAAY,UAAU30D,MACtB20D,GAAY,QAAQ30D,IACpBv4B,IAAAysF,EAAM,mBAAmB,YAAzB,QAAAzsF,EAAkC;AAAA,EAE1C,GAEMiwF,IAAiB,MAAM;AVhEjC,QAAAjwF;AUiEQ,KAAAA,IAAAysF,EAAM,mBAAmB,YAAzB,QAAAzsF,EAAkC;AAAA,EACtC,GAEMkwF,IAAiB,MAAM;AVpEjC,QAAAlwF;AUqEQ,KAAAA,IAAAysF,EAAM,mBAAmB,YAAzB,QAAAzsF,EAAkC;AAAA,EACtC;AAEA,SACIovF,gBAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,OAAOhB,GAAS,MAAM,uBAAuBZ,GAAU,KAAK,IAAIf,EAAM,aAAa,EAAE,EAAE;AAAA,MAEvF,UAAA;AAAA,QAAA2C,gBAAAA,EAAC,OAAA,EAAI,OAAM,gBACP,UAAA;AAAA,UAAA,gBAAA1C;AAAA,YAAC6C;AAAA,YAAA;AAAA,cACG,gBAAgB9C,EAAM;AAAA,cACtB,cAAcA,EAAM;AAAA,cACpB,kBAAkBA,EAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAG1BmB,GAAW,QAIT,OAHAwB,gBAAAA,EAAC,OAAA,EAAI,OAAM,gBAAe,UAAA;AAAA,YAAA;AAAA,YACX,gBAAA1C,EAAC,KAAA,EAAE,MAAK,8BAA6B,QAAO,UAAS,KAAI,YAAW,OAAM,+BAA8B,UAAA,iBAAA,CAAc;AAAA,UAAA,EAAA,CACrI;AAAA,QACA,GACR;AAAA,QAEA,gBAAAA;AAAA,UAACwC;AAAA,UAAA;AAAA,YACG,gBAAgBQ;AAAA,YAChB,oBAAoBC;AAAA,YACpB,UAAUE;AAAA,YACV,WAAWC;AAAA,YACX,YAAYrD,EAAM;AAAA,YAClB,YAAYwD;AAAA,YACZ,YAAYC;AAAA,YACZ,eAAe,MAAMlC,GAAa,QAAQ,CAACA,GAAa;AAAA,YACxD,kBAAkB4B;AAAA,YAClB,oBAAoBG;AAAA,UAAA;AAAA,QAAA;AAAA,QAGxB,gBAAArD;AAAA,UAAC2C;AAAA,UAAA;AAAA,YACG,cAAcW;AAAA,UAAA;AAAA,QAAA;AAAA,MAClB;AAAA,IAAA;AAAA,EAAA;AAGZ;;;AC5GA,GAAC,SAAS3rF,GAAEsH,GAAE;AAAsD,IAAAA,EAAEwkF,CAAO;AAAA,EAAkF,GAAEC,IAAM,SAAS/rF,GAAE;AAAA,IAAc,MAAMsH,EAAC;AAAA,MAAC,YAAYtH,GAAEsH,GAAE;AAAC,aAAK,QAAM,EAAC,OAAM,GAAE,MAAK,CAAA,GAAG,UAAS,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,WAAU,GAAE,kBAAiB,EAAC,GAAE,KAAK,iBAAeA,GAAE,KAAK,oBAAkB,KAAK,gBAAe,KAAK,SAAOtH;AAAA,MAAC;AAAA,MAAC,WAAWA,GAAE;AAAC,aAAK,iBAAeA,GAAE,KAAK,oBAAkBA;AAAA,MAAC;AAAA,MAAC,kBAAkBA,GAAE;AAAC,aAAK,oBAAkBA;AAAA,MAAC;AAAA,MAAC,YAAYA,GAAE;AAAC,aAAK,MAAM,WAASA;AAAA,MAAC;AAAA,MAAC,SAASA,GAAE;AAAC,aAAK,MAAM,QAAMA;AAAA,MAAC;AAAA,MAAC,QAAQA,GAAE;AAAC,aAAK,MAAM,OAAKA;AAAA,MAAC;AAAA,MAAC,oBAAoBA,GAAE;AAAC,aAAK,MAAM,mBAAiBA;AAAA,MAAC;AAAA,MAAC,aAAaA,GAAE;AAAC,aAAK,MAAM,YAAUA,GAAE,KAAK,MAAM,mBAAiBA;AAAA,MAAC;AAAA,MAAC,eAAeA,GAAE;AAAC,aAAK,cAAYA;AAAA,MAAC;AAAA,MAAC,oBAAmB;AAAC,eAAO,KAAK;AAAA,MAAiB;AAAA,MAAC,aAAY;AAAC,eAAO,KAAK;AAAA,MAAc;AAAA,MAAC,eAAc;AAAC,eAAO,KAAK,MAAM;AAAA,MAAS;AAAA,IAAC;AAAA,IAAC,MAAMjF,UAAUuM,EAAC;AAAA,MAAC,YAAYtH,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEjF,CAAC,GAAE,KAAK,QAAM,MAAK,KAAK,SAAO,IAAG,KAAK,eAAa,GAAE,KAAK,QAAM,IAAI,SAAM,KAAK,MAAM,MAAIuM;AAAA,MAAC;AAAA,MAAC,KAAKtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,OAAO,WAAU,GAAGvM,IAAE,KAAK,OAAO,gBAAgB,KAAK,MAAM,QAAQ,GAAEwQ,IAAE,KAAK,OAAO,QAAO,EAAG,WAAUzP,IAAE,KAAK,OAAO,QAAO,EAAG;AAAO,QAAAwL,EAAE,QAAOA,EAAE,UAAUvM,EAAE,GAAEA,EAAE,CAAC,GAAEuM,EAAE,UAAS;AAAG,iBAAQtH,KAAK,KAAK,MAAM,KAAK,CAAOA,MAAP,SAAWA,IAAE,KAAK,OAAO,gBAAgBA,CAAC,GAAEsH,EAAE,OAAOtH,EAAE,IAAEjF,EAAE,GAAEiF,EAAE,IAAEjF,EAAE,CAAC;AAAG,QAAAuM,EAAE,OAAO,KAAK,MAAM,KAAK,GAAEA,EAAE,KAAI,GAAG,KAAK,SAAOA,EAAE,UAAU,KAAK,OAAM,GAAE,GAAEiE,GAAEzP,CAAC,IAAE,KAAK,WAAWwL,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAEiE,GAAEzP,CAAC,GAAEwL,EAAE,QAAO;AAAA,MAAE;AAAA,MAAC,WAAWtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,OAAO,QAAO,GAAGvM,IAAE,KAAK,OAAO,WAAU,GAAGwQ,IAAEjE,EAAE,WAAUxL,IAAEwL,EAAE,QAAOwC,IAAM9J,MAAJ,IAAMsH,EAAE,OAAKA,EAAE,YAAUA,EAAE,MAAKnL,IAAEmL,EAAE;AAAI,aAAK,SAAOvM,EAAE,UAAU,KAAK,OAAM+O,GAAE3N,GAAEoP,GAAEzP,CAAC,IAAE,KAAK,WAAWf,GAAE,EAAC,GAAE+O,GAAE,GAAE3N,EAAC,GAAEoP,GAAEzP,CAAC;AAAA,MAAC;AAAA,MAAC,WAAWkE,GAAEsH,GAAEvM,GAAEwQ,GAAE;AAAC,QAAAvL,EAAE,UAAS,GAAGA,EAAE,cAAY,sBAAqBA,EAAE,YAAU,sBAAqBA,EAAE,YAAU,GAAEA,EAAE,KAAKsH,EAAE,IAAE,GAAEA,EAAE,IAAE,GAAEvM,IAAE,GAAEwQ,IAAE,CAAC,GAAEvL,EAAE,OAAM,GAAGA,EAAE,KAAI;AAAG,cAAMlE,IAAE,EAAC,GAAEwL,EAAE,IAAEvM,IAAE,GAAE,GAAEuM,EAAE,IAAEiE,IAAE,EAAC;AAAE,QAAAvL,EAAE,aAAYA,EAAE,YAAU,IAAGA,EAAE,IAAIlE,EAAE,GAAEA,EAAE,GAAE,IAAG,KAAK,cAAa,IAAE,KAAK,KAAG,IAAE,KAAK,YAAY,GAAEkE,EAAE,OAAM,GAAGA,EAAE,UAAS,GAAG,KAAK,gBAAc,MAAI,KAAK,gBAAc,IAAE,KAAK,OAAK,KAAK,eAAa;AAAA,MAAE;AAAA,MAAC,OAAM;AAAC,aAAK,WAAS,KAAK,MAAM,SAAO,MAAI;AAAC,eAAK,SAAO;AAAA,QAAE;AAAA,MAAE;AAAA,MAAC,mBAAkB;AAAC,eAAO;AAAA,MAAI;AAAA,MAAC,mBAAkB;AAAC,eAAO;AAAA,MAAI;AAAA,MAAC,oBAAmB;AAAA,MAAA;AAAA,IAAE;AAAA,IAAC,MAAMuL,EAAC;AAAA,MAAC,YAAYvL,GAAEsH,GAAE;AAAC,aAAK,QAAM,CAAA,GAAG,KAAK,mBAAiB,GAAE,KAAK,qBAAmB,GAAE,KAAK,kBAAgB,IAAG,KAAK,iBAAe,CAAA,GAAG,KAAK,SAAOA,GAAE,KAAK,MAAItH,GAAE,KAAK,mBAAiB,GAAE,KAAK,cAAY,KAAK,IAAI,YAAW,EAAG;AAAA,MAAS;AAAA,MAAC,UAAS;AAAC,aAAK,QAAM,CAAA;AAAA,MAAE;AAAA,MAAC,eAAc;AAAC,aAAK,kBAAgB,IAAG,KAAK,iBAAe,CAAA;AAAG,iBAAQA,IAAE,GAAEA,IAAE,KAAK,MAAM,QAAOA,IAAI,MAAK,eAAe,KAAK,CAACA,CAAC,CAAC;AAAE,YAAIA,IAAE;AAAE,aAAK,gBAAc,KAAK,MAAM,CAAC,EAAE,WAAW,MAAM,GAAE,KAAK,gBAAgB,KAAK,CAACA,CAAC,CAAC,GAAEA;AAAK,iBAAQsH,IAAEtH,GAAEsH,IAAE,KAAK,MAAM,QAAOA,KAAG,EAAE,CAAAA,IAAE,KAAK,MAAM,SAAO,IAAE,KAAK,gBAAgB,KAAK,CAACA,GAAEA,IAAE,CAAC,CAAC,KAAG,KAAK,gBAAgB,KAAK,CAACA,CAAC,CAAC,GAAE,KAAK,MAAMA,CAAC,EAAE,WAAW,MAAM;AAAA,MAAE;AAAA,MAAC,YAAW;AAAC,eAAoB,KAAK,OAAO,qBAA1B,cAA2C,KAAK,kBAAgB,KAAK;AAAA,MAAc;AAAA,MAAC,qBAAqBtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,UAAS;AAAG,iBAAQvM,IAAE,GAAEA,IAAEuM,EAAE,QAAOvM,IAAI,KAAGiF,MAAIsH,EAAEvM,CAAC,EAAE,CAAC,KAAGiF,MAAIsH,EAAEvM,CAAC,EAAE,CAAC,EAAE,QAAOA;AAAE,eAAO;AAAA,MAAI;AAAA,MAAC,eAAc;AAAC,eAAO,KAAK,MAAM;AAAA,MAAM;AAAA,MAAC,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK;AAAA,MAAC,QAAQiF,GAAE;AAAC,YAAGA,KAAG,KAAGA,IAAE,KAAK,MAAM,OAAO,QAAO,KAAK,MAAMA,CAAC;AAAE,cAAM,IAAI,MAAM,qBAAqB;AAAA,MAAC;AAAA,MAAC,OAAOA,GAAE;AAAC,cAAMsH,IAAE,KAAK,MAAM,QAAQtH,CAAC;AAAE,eAAOsH,IAAE,KAAK,MAAM,SAAO,IAAE,KAAK,MAAMA,IAAE,CAAC,IAAE;AAAA,MAAI;AAAA,MAAC,OAAOtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,MAAM,QAAQtH,CAAC;AAAE,eAAOsH,IAAE,IAAE,KAAK,MAAMA,IAAE,CAAC,IAAE;AAAA,MAAI;AAAA,MAAC,gBAAgBtH,GAAE;AAAC,cAAMsH,IAAE,KAAK;AAAmB,YAAgB,KAAK,OAAO,eAAc,MAAvC,WAA0C,QAAWtH,MAAJ,IAAM,KAAK,MAAMsH,CAAC,EAAE,iBAAgB,IAAG,KAAK,MAAMA,IAAE,CAAC;AAAE;AAAC,gBAAMvM,IAAMiF,MAAJ,IAAM,KAAK,UAAS,EAAGsH,IAAE,CAAC,IAAE,KAAK,UAAS,EAAGA,IAAE,CAAC;AAAE,iBAAWvM,EAAE,WAAN,KAAkBiF,MAAJ,IAAM,KAAK,MAAMjF,EAAE,CAAC,CAAC,IAAE,KAAK,MAAMA,EAAE,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC;AAAA,MAAC,cAAciF,GAAE;AAAC,cAAMsH,IAAE,KAAK;AAAmB,YAAgB,KAAK,OAAO,qBAAzB,WAA0C,QAAWtH,MAAJ,IAAM,KAAK,MAAMsH,IAAE,CAAC,IAAE,KAAK,MAAMA,IAAE,CAAC;AAAE;AAAC,gBAAMvM,IAAMiF,MAAJ,IAAM,KAAK,UAAS,EAAGsH,IAAE,CAAC,IAAE,KAAK,UAAS,EAAGA,IAAE,CAAC;AAAE,iBAAWvM,EAAE,WAAN,IAAa,KAAK,MAAMA,EAAE,CAAC,CAAC,IAAMiF,MAAJ,IAAM,KAAK,MAAMjF,EAAE,CAAC,CAAC,IAAE,KAAK,MAAMA,EAAE,CAAC,CAAC;AAAA,QAAC;AAAA,MAAC;AAAA,MAAC,WAAU;AAAC,aAAK,qBAAmB,KAAK,UAAS,EAAG,WAAS,KAAK,sBAAqB,KAAK,WAAU;AAAA,MAAG;AAAA,MAAC,WAAU;AAAC,aAAK,qBAAmB,MAAI,KAAK,sBAAqB,KAAK;MAAa;AAAA,MAAC,sBAAqB;AAAC,eAAO,KAAK;AAAA,MAAgB;AAAA,MAAC,KAAKiF,IAAE,MAAK;AAAC,YAAUA,MAAP,SAAWA,IAAE,KAAK,mBAAkBA,IAAE,KAAGA,KAAG,KAAK,MAAM,OAAO;AAAO,cAAMsH,IAAE,KAAK,qBAAqBtH,CAAC;AAAE,QAAOsH,MAAP,SAAW,KAAK,qBAAmBA,GAAE,KAAK,WAAU;AAAA,MAAG;AAAA,MAAC,wBAAuB;AAAC,eAAO,KAAK;AAAA,MAAkB;AAAA,MAAC,sBAAsBtH,GAAE;AAAC,YAAG,EAAEA,KAAG,KAAGA,IAAE,KAAK,UAAS,EAAG,QAAQ,OAAM,IAAI,MAAM,cAAc;AAAE,aAAK,qBAAmBA;AAAA,MAAC;AAAA,MAAC,aAAY;AAAC,cAAMA,IAAE,KAAK,UAAS,EAAG,KAAK,kBAAkB;AAAE,QAAIA,EAAE,WAAN,KAAc,KAAK,OAAO,YAAY,KAAK,MAAMA,EAAE,CAAC,CAAC,CAAC,GAAE,KAAK,OAAO,aAAa,KAAK,MAAMA,EAAE,CAAC,CAAC,CAAC,KAAiB,KAAK,OAAO,eAAc,MAAxC,eAA4CA,EAAE,CAAC,MAAI,KAAK,MAAM,SAAO,KAAG,KAAK,OAAO,YAAY,KAAK,MAAMA,EAAE,CAAC,CAAC,CAAC,GAAE,KAAK,OAAO,aAAa,IAAI,MAAI,KAAK,OAAO,YAAY,IAAI,GAAE,KAAK,OAAO,aAAa,KAAK,MAAMA,EAAE,CAAC,CAAC,CAAC,IAAG,KAAK,mBAAiBA,EAAE,CAAC,GAAE,KAAK,IAAI,gBAAgB,KAAK,gBAAgB;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAMlE,UAAUyP,EAAC;AAAA,MAAC,YAAYvL,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEsH,CAAC,GAAE,KAAK,aAAWvM;AAAA,MAAC;AAAA,MAAC,OAAM;AAAC,mBAAUiF,KAAK,KAAK,YAAW;AAAC,gBAAMsH,IAAE,IAAIvM,EAAE,KAAK,QAAOiF,GAAE,MAAM;AAAE,UAAAsH,EAAE,KAAI,GAAG,KAAK,MAAM,KAAKA,CAAC;AAAA,QAAC;AAAC,aAAK,aAAY;AAAA,MAAE;AAAA,IAAC;AAAA,IAAC,MAAMwC,EAAC;AAAA,MAAC,OAAO,2BAA2B9J,GAAEsH,GAAE;AAAC,eAActH,MAAP,QAAiBsH,MAAP,OAAS,QAAI,KAAK,KAAK,KAAK,IAAIA,EAAE,IAAEtH,EAAE,GAAE,CAAC,IAAE,KAAK,IAAIsH,EAAE,IAAEtH,EAAE,GAAE,CAAC,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,iBAAiBA,GAAE;AAAC,eAAO8J,EAAE,2BAA2B9J,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,uBAAuBA,GAAEsH,GAAE;AAAC,cAAMvM,IAAEiF,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAEuL,IAAEjE,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAExL,IAAEkE,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAE8J,IAAExC,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE;AAAE,eAAO,KAAK,MAAMvM,IAAEwQ,IAAEzP,IAAEgO,MAAI,KAAK,KAAK/O,IAAEA,IAAEe,IAAEA,CAAC,IAAE,KAAK,KAAKyP,IAAEA,IAAEzB,IAAEA,CAAC,EAAE;AAAA,MAAC;AAAA,MAAC,OAAO,YAAY9J,GAAEsH,GAAE;AAAC,eAAcA,MAAP,OAAS,OAAKA,EAAE,KAAGtH,EAAE,QAAMsH,EAAE,KAAGtH,EAAE,QAAMA,EAAE,QAAMsH,EAAE,KAAGtH,EAAE,OAAKsH,EAAE,KAAGtH,EAAE,MAAIA,EAAE,SAAOsH,IAAE;AAAA,MAAI;AAAA,MAAC,OAAO,gBAAgBtH,GAAEsH,GAAEvM,GAAE;AAAC,eAAM,EAAC,GAAEiF,EAAE,IAAE,KAAK,IAAIjF,CAAC,IAAEiF,EAAE,IAAE,KAAK,IAAIjF,CAAC,IAAEuM,EAAE,GAAE,GAAEtH,EAAE,IAAE,KAAK,IAAIjF,CAAC,IAAEiF,EAAE,IAAE,KAAK,IAAIjF,CAAC,IAAEuM,EAAE,EAAC;AAAA,MAAC;AAAA,MAAC,OAAO,mBAAmBtH,GAAEsH,GAAEvM,GAAE;AAAC,YAAG+O,EAAE,2BAA2B9J,GAAEjF,CAAC,KAAGuM,EAAE,QAAOvM;AAAE,cAAMwQ,IAAEvL,EAAE,GAAElE,IAAEkE,EAAE,GAAE7D,IAAEpB,EAAE,GAAE0tF,IAAE1tF,EAAE;AAAE,YAAI4D,IAAE,KAAK,KAAK,KAAK,IAAI2I,GAAE,CAAC,IAAE,KAAK,IAAIiE,IAAEpP,GAAE,CAAC,KAAG,KAAK,IAAIoP,IAAEpP,GAAE,CAAC,IAAE,KAAK,IAAIL,IAAE2sF,GAAE,CAAC,EAAE,IAAEl9E;AAAE,QAAAxQ,EAAE,IAAE,MAAI4D,KAAG;AAAI,YAAIoM,KAAGpM,IAAE4M,MAAIzP,IAAE2sF,MAAIl9E,IAAEpP,KAAGL;AAAE,eAAOyP,IAAEpP,IAAEL,MAAI,MAAIiP,IAAEzD,IAAG,EAAC,GAAE3I,GAAE,GAAEoM,EAAC;AAAA,MAAC;AAAA,MAAC,OAAO,8BAA8B/K,GAAEsH,GAAEvM,GAAE;AAAC,eAAO+O,EAAE,YAAY9J,GAAE8J,EAAE,2BAA2BxC,GAAEvM,CAAC,CAAC;AAAA,MAAC;AAAA,MAAC,OAAO,2BAA2BiF,GAAEsH,GAAE;AAAC,cAAMvM,IAAEiF,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAEuL,IAAEjE,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAExL,IAAEkE,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAE8J,IAAExC,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAEnL,IAAE6D,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAEyoF,IAAEnhF,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,IAAEA,EAAE,CAAC,EAAE,GAAE3I,IAAE5D,IAAE0tF,IAAEl9E,IAAEpP,GAAE4O,IAAEjP,IAAE2sF,IAAE3+E,IAAE3N,GAAEiP,IAAE,EAAEjP,IAAE2N,IAAE2+E,IAAE3sF,MAAIf,IAAE+O,IAAEyB,IAAEzP,IAAGyB,IAAE,EAAExC,IAAE0tF,IAAEl9E,IAAEpP,MAAIpB,IAAE+O,IAAEyB,IAAEzP;AAAG,YAAG,SAASsP,CAAC,KAAG,SAAS7N,CAAC,EAAE,QAAM,EAAC,GAAE6N,GAAE,GAAE7N,EAAC;AAAE,YAAG,KAAK,IAAIoB,IAAEoM,CAAC,IAAE,IAAG,OAAM,IAAI,MAAM,kBAAkB;AAAE,eAAO;AAAA,MAAI;AAAA,MAAC,OAAO,qBAAqB/K,GAAEsH,GAAE;AAAC,cAAMvM,IAAE,KAAK,IAAIiF,EAAE,IAAEsH,EAAE,CAAC,GAAEiE,IAAE,KAAK,IAAIvL,EAAE,IAAEsH,EAAE,CAAC,GAAExL,IAAE,KAAK,IAAIf,GAAEwQ,CAAC,GAAEzB,IAAE,CAAC9J,CAAC;AAAE,iBAAS7D,EAAE6D,GAAEsH,GAAEvM,GAAEwQ,GAAEzP,GAAE;AAAC,iBAAOwL,IAAEtH,IAAEA,IAAElE,KAAGf,IAAEwQ,KAAGjE,IAAEtH,IAAEA,IAAElE,KAAGf,IAAEwQ,KAAGvL;AAAA,QAAC;AAAC,iBAAQyoF,IAAE,GAAEA,KAAG3sF,GAAE2sF,KAAG,EAAE,CAAA3+E,EAAE,KAAK,EAAC,GAAE3N,EAAE6D,EAAE,GAAEsH,EAAE,GAAEvM,GAAEe,GAAE2sF,CAAC,GAAE,GAAEtsF,EAAE6D,EAAE,GAAEsH,EAAE,GAAEiE,GAAEzP,GAAE2sF,CAAC,EAAC,CAAC;AAAE,eAAO3+E;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAM3N,UAAUmL,EAAC;AAAA,MAAC,YAAYtH,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEjF,CAAC,GAAE,KAAK,gBAAc,MAAK,KAAK,gBAAc,MAAK,KAAK,SAAO,IAAG,KAAK,UAAQuM,GAAE,KAAK,QAAQ,UAAU,IAAI,WAAW,GAAE,KAAK,QAAQ,UAAU,IAAI,OAAKvM,CAAC;AAAA,MAAC;AAAA,MAAC,mBAAkB;AAAC,eAAe,KAAK,sBAAd,SAAgC,QAAa,KAAK,kBAAZ,SAA4B,KAAK,gBAAc,KAAK,QAAQ,UAAU,EAAE,GAAE,KAAK,QAAQ,cAAc,YAAY,KAAK,aAAa,GAAE,KAAK,gBAAc,IAAIoB,EAAE,KAAK,QAAO,KAAK,eAAc,KAAK,iBAAiB,IAAG,KAAK,iBAAgB;AAAA,MAAG;AAAA,MAAC,mBAAkB;AAAC,eAAO,KAAK;AAAA,MAAa;AAAA,MAAC,oBAAmB;AAAC,QAAO,KAAK,kBAAZ,SAA4B,KAAK,cAAc,UAAS,KAAK,gBAAc,MAAK,KAAK,gBAAc;AAAA,MAAK;AAAA,MAAC,KAAK6D,GAAE;AAAC,cAAMsH,IAAEtH,KAAG,KAAK,mBAAkBjF,IAAE,KAAK,OAAO,gBAAgB,KAAK,MAAM,QAAQ,GAAEwQ,IAAE,KAAK,OAAO,QAAO,EAAG,WAAUzP,IAAE,KAAK,OAAO,QAAO,EAAG;AAAO,aAAK,QAAQ,UAAU,OAAO,UAAU;AAAE,cAAMgO,IAAE;AAAA;AAAA,uBAAuD,KAAK,QAAQ,MAAM,MAAM;AAAA;AAAA;AAAA,qBAAoEyB,CAAC;AAAA,sBAA4BzP,CAAC;AAAA;AAAgB,QAASwL,MAAT,SAAW,KAAK,SAASwC,CAAC,IAAE,KAAK,SAAS/O,GAAE+O,CAAC;AAAA,MAAC;AAAA,MAAC,SAAS9J,IAAE,IAAG;AAAC,cAAMsH,IAAE,KAAK,OAAO,UAAU,OAAK,KAAK,OAAO,QAAO,EAAG,QAAM,GAAEvM,IAAE,KAAK,MAAM,kBAAiBwQ,IAAEvL,IAAE;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAsM,KAAK,gBAAT,IAAqB,qBAAqB,KAAK,OAAO,QAAO,EAAG,SAAS;AAAA,6DAAsEjF,CAAC,UAAQ;AAAA,4CAAsEuM,CAAC,qBAAqBvM,CAAC;AAAS,aAAK,QAAQ,MAAM,UAAQwQ;AAAA,MAAC;AAAA,MAAC,SAASvL,GAAEsH,IAAE,IAAG;AAAC,YAAIvM,IAAE;AAAY,mBAAUiF,KAAK,KAAK,MAAM,KAAK,KAAUA,MAAP,MAAS;AAAC,cAAIsH,IAAM,KAAK,OAAO,aAAY,MAA5B,IAA+B,EAAC,GAAE,CAACtH,EAAE,IAAE,KAAK,MAAM,SAAS,GAAE,GAAEA,EAAE,IAAE,KAAK,MAAM,SAAS,EAAC,IAAE,EAAC,GAAEA,EAAE,IAAE,KAAK,MAAM,SAAS,GAAE,GAAEA,EAAE,IAAE,KAAK,MAAM,SAAS,EAAC;AAAE,UAAAsH,IAAEwC,EAAE,gBAAgBxC,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,KAAK,MAAM,KAAK,GAAEvM,KAAGuM,EAAE,IAAE,QAAMA,EAAE,IAAE;AAAA,QAAM;AAAC,QAAAvM,IAAEA,EAAE,MAAM,GAAE,EAAE,GAAEA,KAAG;AAAI,cAAMwQ,IAAEjE,IAAE,qCAAqCvM,CAAC,wBAAwBA,CAAC,OAAK,KAAK,OAAO,SAAQ,KAAQ,KAAK,MAAM,UAAf,IAAqB,wBAAwBiF,EAAE,CAAC,OAAOA,EAAE,CAAC,SAAO,0BAA0BA,EAAE,CAAC,OAAOA,EAAE,CAAC,iBAAiB,KAAK,MAAM,KAAK;AAAS,aAAK,QAAQ,MAAM,UAAQuL;AAAA,MAAC;AAAA,MAAC,WAAWvL,GAAE;AAAC,cAAMsH,IAAE,KAAK,OAAO,QAAO,GAAGvM,IAAEuM,EAAE,WAAUiE,IAAEjE,EAAE,QAAOxL,IAAMkE,MAAJ,IAAMsH,EAAE,OAAKA,EAAE,YAAUA,EAAE,MAAKwC,IAAExC,EAAE;AAAI,aAAK,QAAQ,UAAU,IAAI,UAAU,GAAE,KAAK,QAAQ,MAAM,UAAQ;AAAA;AAAA;AAAA,sBAAyFiE,CAAC;AAAA,oBAA2BzP,CAAC;AAAA,mBAA0BgO,CAAC;AAAA,qBAA4B/O,CAAC;AAAA,uBAA8B,KAAK,OAAO,YAAW,EAAG,cAAY,CAAC;AAAA,MAAG;AAAA,MAAC,aAAY;AAAC,eAAO,KAAK;AAAA,MAAO;AAAA,MAAC,OAAM;AAAC,aAAK,SAAO;AAAA,MAAE;AAAA,MAAC,eAAeiF,GAAE;AAAC,cAAM,eAAeA,CAAC,GAAE,KAAK,QAAQ,UAAU,OAAO,UAAS,SAAS,GAAE,KAAK,QAAQ,UAAU,IAAQA,MAAJ,IAAM,YAAU,QAAQ;AAAA,MAAC;AAAA,MAAC,kBAAkBA,GAAE;AAAC,aAAK,QAAQ,UAAU,OAAO,UAAS,QAAQ,GAAE,KAAK,QAAQ,UAAU,IAAI,OAAKA,CAAC,GAAE,MAAM,kBAAkBA,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAMyoF,UAAUl9E,EAAC;AAAA,MAAC,YAAYvL,GAAEsH,GAAEvM,GAAEwQ,GAAE;AAAC,cAAMvL,GAAEsH,CAAC,GAAE,KAAK,UAAQvM,GAAE,KAAK,eAAawQ;AAAA,MAAC;AAAA,MAAC,OAAM;AAAC,mBAAUvL,KAAK,KAAK,cAAa;AAAC,gBAAMsH,IAAE,IAAInL,EAAE,KAAK,QAAO6D,GAAWA,EAAE,QAAQ,YAAnB,SAA2B,SAAO,MAAM;AAAE,UAAAsH,EAAE,KAAI,GAAG,KAAK,MAAM,KAAKA,CAAC;AAAA,QAAC;AAAC,aAAK,aAAY;AAAA,MAAE;AAAA,IAAC;AAAA,IAAC,MAAM3I,EAAC;AAAA,MAAC,YAAYqB,GAAEsH,GAAEvM,GAAEwQ,GAAE;AAAC,aAAK,YAAUvL,GAAE,KAAK,SAAOsH,GAAE,KAAK,oBAAkB,MAAK,KAAK,qBAAmB,MAAK,KAAK,uBAAqB,MAAK,KAAK,YAAU,SAASvM,GAAE,EAAE,GAAE,KAAK,aAAW,SAASwQ,GAAE,EAAE;AAAA,MAAC;AAAA,MAAC,KAAKvL,GAAE;AAAC,YAAG;AAAC,iBAAO,KAAK,WAAS,KAAK,qBAAqBA,CAAC,GAAE,KAAK,wBAAwB,KAAK,QAAQ,GAAE;AAAA,QAAE,QAAS;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC;AAAA,MAAC,sBAAqB;AAAC,cAAMA,IAAE,CAAA;AAAG,YAAIsH,IAAE;AAAG,eAAOtH,EAAE,KAAK,KAAK,KAAK,OAAO,GAAEA,EAAE,KAAK,KAAK,iBAAiB,GAAS,KAAK,uBAAZ,OAA+BsH,IAAE,MAAItH,EAAE,KAAK,KAAK,kBAAkB,GAAS,KAAK,yBAAZ,SAAmCsH,IAAE,MAAKtH,EAAE,KAAK,KAAK,oBAAoB,IAAGsH,KAAc,KAAK,WAAhB,aAAyBtH,EAAE,KAAK,KAAK,KAAK,UAAU,GAAEA;AAAA,MAAC;AAAA,MAAC,oBAAmB;AAAC,cAAMA,IAAE,CAAA;AAAG,eAAOA,EAAE,KAAK,KAAK,iBAAiB,GAAU,KAAK,WAAb,QAAoBA,EAAE,KAAK,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,KAAU,KAAK,sBAAZ,QAA+BA,EAAE,KAAK,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,GAAEA,EAAE,KAAK,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,IAAU,KAAK,uBAAZ,OAA+B8J,EAAE,2BAA2B,KAAK,oBAAmB,KAAK,iBAAiB,KAAG,MAAI9J,EAAE,KAAK,KAAK,kBAAkB,IAAU,KAAK,WAAb,SAAqBA,EAAE,KAAK,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,GAAEA,EAAE,KAAK,KAAK,oBAAoB,GAAEA,EAAE,KAAK,KAAK,iBAAiB,GAAEA;AAAA,MAAC;AAAA,MAAC,WAAU;AAAC,eAAW,KAAK,cAAT,IAAmB,CAAC,KAAK,QAAM,KAAK;AAAA,MAAK;AAAA,MAAC,UAAS;AAAC,eAAO,KAAK;AAAA,MAAI;AAAA,MAAC,cAAa;AAAC,eAAO,KAAK;AAAA,MAAQ;AAAA,MAAC,kBAAiB;AAAC,eAAW,KAAK,cAAT,IAAmB,KAAK,KAAK,UAAQ,KAAK,KAAK;AAAA,MAAQ;AAAA,MAAC,eAAc;AAAC,eAAO,KAAK;AAAA,MAAS;AAAA,MAAC,sBAAqB;AAAC,eAAO,KAAK,KAAK,KAAK,SAAS,IAAE,KAAK,cAAY,IAAE,KAAK,aAAW,GAAG;AAAA,MAAC;AAAA,MAAC,YAAW;AAAC,eAAO,KAAK;AAAA,MAAM;AAAA,MAAC,wBAAuB;AAAC,eAAW,KAAK,cAAT,IAAmB,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,IAAE,EAAC,GAAE,GAAE,GAAE,EAAC;AAAA,MAAC;AAAA,MAAC,sBAAqB;AAAC,eAAc,KAAK,WAAb,QAAoB,KAAK,oBAAyB,KAAK,uBAAZ,OAA+B,KAAK,qBAAmB,KAAK;AAAA,MAAiB;AAAA,MAAC,iBAAgB;AAAC,cAAMA,IAAE8J,EAAE,uBAAuB,KAAK,uBAAsB,GAAG,CAAC,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,CAAC;AAAE,eAAW,KAAK,cAAT,IAAmB9J,IAAE,KAAK,KAAGA;AAAA,MAAC;AAAA,MAAC,qBAAqBA,GAAE;AAAC,YAAIsH,IAAEtH;AAAE,YAAG,KAAK,uBAAuBsH,CAAC,GAAEA,IAAU,KAAK,WAAb,QAAoB,KAAK,0BAA0BA,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,GAAE,GAAE,KAAK,WAAU,CAAC,IAAE,KAAK,0BAA0BA,GAAE,EAAC,GAAE,GAAE,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,CAAC,GAAE,KAAK,IAAIA,EAAE,IAAE,KAAK,SAAS,IAAE,KAAG,KAAK,IAAIA,EAAE,CAAC,IAAE,EAAE,OAAM,IAAI,MAAM,oBAAoB;AAAE,eAAOA;AAAA,MAAC;AAAA,MAAC,uBAAuBtH,GAAE;AAAC,aAAK,QAAM,KAAK,eAAeA,CAAC,GAAE,KAAK,OAAK,KAAK,YAAYA,CAAC;AAAA,MAAC;AAAA,MAAC,eAAeA,GAAE;AAAC,cAAMsH,IAAE,KAAK,YAAUtH,EAAE,IAAE,GAAEjF,IAAa,KAAK,WAAhB,WAAuB,KAAK,aAAWiF,EAAE,IAAEA,EAAE;AAAE,YAAIuL,IAAE,IAAE,KAAK,KAAKjE,IAAE,KAAK,KAAKvM,IAAEA,IAAEuM,IAAEA,CAAC,CAAC;AAAE,QAAAvM,IAAE,MAAIwQ,IAAE,CAACA;AAAG,cAAMzP,IAAE,KAAK,KAAGyP;AAAE,YAAG,CAAC,SAASA,CAAC,KAAGzP,KAAG,KAAGA,IAAE,KAAK,OAAM,IAAI,MAAM,0BAA0B;AAAE,eAAiB,KAAK,WAAhB,aAAyByP,IAAE,CAACA,IAAGA;AAAA,MAAC;AAAA,MAAC,YAAYvL,GAAE;AAAC,eAAc,KAAK,WAAb,QAAoB,KAAK,qBAAqB,CAAC,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,EAAC,GAAE,GAAE,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,GAAEA,CAAC,IAAE,KAAK,qBAAqB,CAAC,EAAC,GAAE,GAAE,GAAE,CAAC,KAAK,WAAU,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,CAAC,KAAK,WAAU,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,GAAEA,CAAC;AAAA,MAAC;AAAA,MAAC,qBAAqBA,GAAEsH,GAAE;AAAC,eAAM,EAAC,SAAQ,KAAK,gBAAgBtH,EAAE,CAAC,GAAEsH,CAAC,GAAE,UAAS,KAAK,gBAAgBtH,EAAE,CAAC,GAAEsH,CAAC,GAAE,YAAW,KAAK,gBAAgBtH,EAAE,CAAC,GAAEsH,CAAC,GAAE,aAAY,KAAK,gBAAgBtH,EAAE,CAAC,GAAEsH,CAAC,EAAC;AAAA,MAAC;AAAA,MAAC,gBAAgBtH,GAAEsH,GAAE;AAAC,eAAM,EAAC,GAAEtH,EAAE,IAAE,KAAK,IAAI,KAAK,KAAK,IAAEA,EAAE,IAAE,KAAK,IAAI,KAAK,KAAK,IAAEsH,EAAE,GAAE,GAAEtH,EAAE,IAAE,KAAK,IAAI,KAAK,KAAK,IAAEA,EAAE,IAAE,KAAK,IAAI,KAAK,KAAK,IAAEsH,EAAE,EAAC;AAAA,MAAC;AAAA,MAAC,wBAAwBtH,GAAE;AAAC,cAAMsH,IAAE,EAAC,MAAK,IAAG,KAAI,IAAG,OAAM,KAAK,YAAU,GAAE,QAAO,KAAK,aAAW,EAAC;AAAE,QAAQ,KAAK,WAAb,SAAqB,KAAK,oBAAkBwC,EAAE,8BAA8BxC,GAAE,CAACtH,GAAE,KAAK,KAAK,QAAQ,GAAE,CAAC,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,CAAC,GAAE,KAAK,qBAAmB8J,EAAE,8BAA8BxC,GAAE,CAACtH,GAAE,KAAK,KAAK,UAAU,GAAE,CAAC,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,CAAC,GAAE,KAAK,uBAAqB8J,EAAE,8BAA8BxC,GAAE,CAAC,KAAK,KAAK,YAAW,KAAK,KAAK,WAAW,GAAE,CAAC,EAAC,GAAE,GAAE,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,CAAC,MAAI,KAAK,oBAAkBwC,EAAE,8BAA8BxC,GAAE,CAAC,KAAK,KAAK,SAAQ,KAAK,KAAK,QAAQ,GAAE,CAAC,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,CAAC,CAAC,GAAE,KAAK,qBAAmBwC,EAAE,8BAA8BxC,GAAE,CAACtH,GAAE,KAAK,KAAK,OAAO,GAAE,CAAC,EAAC,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,CAAC,GAAE,KAAK,uBAAqB8J,EAAE,8BAA8BxC,GAAE,CAAC,KAAK,KAAK,YAAW,KAAK,KAAK,WAAW,GAAE,CAAC,EAAC,GAAE,GAAE,GAAE,KAAK,WAAU,GAAE,EAAC,GAAE,KAAK,WAAU,GAAE,KAAK,WAAU,CAAC,CAAC;AAAA,MAAE;AAAA,MAAC,0BAA0BtH,GAAEsH,GAAEvM,GAAE;AAAC,YAAIwQ,IAAEvL;AAAE,cAAMlE,IAAEgO,EAAE,mBAAmBxC,GAAE,KAAK,WAAUiE,CAAC;AAAE,QAAAA,MAAIzP,MAAIyP,IAAEzP,GAAE,KAAK,uBAAuByP,CAAC;AAAG,cAAMpP,IAAE,KAAK,KAAK,KAAK,IAAI,KAAK,WAAU,CAAC,IAAE,KAAK,IAAI,KAAK,YAAW,CAAC,CAAC;AAAE,YAAIssF,IAAE,KAAK,KAAK,aAAY9pF,IAAE,KAAK,KAAK;AAAQ,YAAc,KAAK,WAAhB,aAAyB8pF,IAAE,KAAK,KAAK,UAAS9pF,IAAE,KAAK,KAAK,aAAY8pF,EAAE,KAAG,GAAE;AAAC,gBAAMzoF,IAAE8J,EAAE,mBAAmB/O,GAAEoB,GAAEwC,CAAC;AAAE,UAAAqB,MAAIuL,MAAIA,IAAEvL,GAAE,KAAK,uBAAuBuL,CAAC;AAAA,QAAE;AAAC,eAAOA;AAAA,MAAC;AAAA,MAAC,yBAAwB;AAAC,cAAMvL,IAAE,KAAK,oBAAmB;AAAG,eAAM,CAACA,GAAEA,MAAI,KAAK,sBAA2B,KAAK,uBAAZ,OAA+B,KAAK,qBAAmB,KAAK,oBAAoB;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAM+K,EAAC;AAAA,MAAC,YAAY/K,GAAEsH,GAAE;AAAC,aAAK,eAAa,MAAK,KAAK,aAAW,MAAK,KAAK,OAAK,MAAK,KAAK,QAAM,QAAO,KAAK,SAAOtH,GAAE,KAAK,MAAIsH;AAAA,MAAC;AAAA,MAAC,KAAKtH,GAAE;AAAC,aAAK,SAAS,WAAW,GAAS,KAAK,SAAZ,QAAkB,KAAK,MAAMA,CAAC,GAAE,KAAK,GAAG,KAAK,OAAO,cAAcA,CAAC,CAAC;AAAA,MAAC;AAAA,MAAC,KAAKA,GAAE;AAAgF,YAA5E,KAAK,IAAI,YAAW,EAAG,sBAAoB,CAAC,KAAK,iBAAiBA,CAAC,MAAmB,KAAK,SAAZ,QAAkB,KAAK,OAAO,gBAAe,GAAG,CAAC,KAAK,MAAMA,CAAC,GAAE;AAAO,cAAMsH,IAAE,KAAK;AAAgB,aAAK,SAAS,UAAU;AAAE,cAAMvM,IAAEuM,EAAE,SAAO,IAAGiE,IAAa,KAAK,KAAK,gBAArB,WAAiCjE,EAAE,SAAOvM,IAAEA,GAAEe,IAAa,KAAK,KAAK,UAAS,MAA9B,WAAiCwL,EAAE,SAAO;AAAE,aAAK,KAAK,KAAK,EAAC,GAAEA,EAAE,YAAUvM,GAAE,GAAEwQ,EAAC,CAAC,GAAE,KAAK,kBAAkB,EAAC,GAAEjE,EAAE,YAAUvM,GAAE,GAAEwQ,EAAC,GAAE,EAAC,GAAE,CAACjE,EAAE,WAAUxL,EAAG,GAAE,EAAE;AAAA,MAAC;AAAA,MAAC,MAAMkE,GAAE;AAAC,aAAK,MAAK;AAAG,cAAMsH,IAAE,KAAK,OAAO,cAActH,CAAC,GAAEjF,IAAE,KAAK,iBAAgBwQ,IAAE,KAAK,oBAAoBjE,CAAC,GAAExL,IAAEwL,EAAE,KAAGvM,EAAE,SAAO,IAAE,WAAS;AAAM,YAAG,CAAC,KAAK,eAAewQ,CAAC,EAAE,QAAM;AAAG,YAAG;AAAC,cAAG,KAAK,eAAa,KAAK,IAAI,kBAAiB,EAAG,gBAAgBA,CAAC,GAAE,KAAK,aAAW,KAAK,IAAI,kBAAiB,EAAG,cAAcA,CAAC,GAAgB,KAAK,OAAO,eAAc,MAAxC,YAA2C,KAAOA,MAAJ,GAAM;AAAC,kBAAMvL,IAAE,KAAK,IAAI,oBAAoB,OAAO,KAAK,YAAY;AAAE,YAAOA,MAAP,QAAU,KAAK,aAAa,WAAU,MAAKA,EAAE,WAAU,MAAK,KAAK,aAAa,kBAAkB,MAAM,GAAEA,EAAE,kBAAkB,MAAM;AAAA,UAAE,OAAK;AAAC,kBAAMA,IAAE,KAAK,IAAI,kBAAiB,EAAG,OAAO,KAAK,YAAY;AAAE,YAAOA,MAAP,QAAU,KAAK,aAAa,WAAU,MAAKA,EAAE,iBAAe,KAAK,aAAa,kBAAkB,MAAM,GAAEA,EAAE,kBAAkB,MAAM;AAAA,UAAE;AAAC,iBAAO,KAAK,OAAO,aAAauL,CAAC,GAAE,KAAK,OAAK,IAAI5M,EAAE4M,GAAEzP,GAAEf,EAAE,UAAU,SAAS,EAAE,GAAEA,EAAE,OAAO,SAAS,EAAE,CAAC,GAAE;AAAA,QAAE,QAAS;AAAC,iBAAM;AAAA,QAAE;AAAA,MAAC;AAAA,MAAC,GAAGiF,GAAE;AAAC,YAAU,KAAK,SAAZ,QAAkB,KAAK,KAAK,KAAKA,CAAC,GAAE;AAAC,gBAAMA,IAAE,KAAK,KAAK,oBAAmB;AAAG,eAAK,WAAW,QAAQ,KAAK,KAAK,kBAAiB,CAAE,GAAE,KAAK,WAAW,YAAY,KAAK,KAAK,sBAAqB,CAAE,GAAE,KAAK,WAAW,SAAS,CAAC,GAAE,KAAK,WAAW,aAAa,CAAC,GAAE,KAAK,aAAa,QAAQ,KAAK,KAAK,oBAAmB,CAAE,GAAE,KAAK,aAAa,YAAY,KAAK,KAAK,gBAAe,CAAE,GAAE,KAAK,aAAa,SAAS,KAAK,KAAK,SAAQ,CAAE,GAAM,KAAK,KAAK,aAAY,MAA1B,IAA6B,KAAK,aAAa,aAAa,MAAI,MAAI,IAAEA,KAAG,GAAG,IAAE,KAAK,aAAa,aAAa,OAAK,MAAI,IAAEA,KAAG,GAAG,GAAE,KAAK,OAAO,YAAY,KAAK,KAAK,SAAS,GAAE,KAAK,OAAO,cAAc,KAAK,UAAU,GAAE,KAAK,OAAO,gBAAgB,KAAK,YAAY,GAAE,KAAK,OAAO,cAAc,KAAK,KAAK,oBAAmB,GAAG,KAAK,KAAK,eAAc,GAAGA,GAAE,KAAK,KAAK,aAAY,CAAE;AAAA,QAAC;AAAA,MAAC;AAAA,MAAC,WAAWA,GAAEsH,GAAE;AAAC,cAAMvM,IAAE,KAAK,IAAI,kBAAiB,EAAG,sBAAqB,GAAGwQ,IAAE,KAAK,IAAI,kBAAiB,EAAG,qBAAqBvL,CAAC;AAAE,YAAG;AAAC,UAAAuL,IAAExQ,MAAI,KAAK,IAAI,kBAAiB,EAAG,sBAAsBwQ,IAAE,CAAC,GAAE,KAAK,SAASjE,CAAC,IAAGiE,IAAExQ,MAAI,KAAK,IAAI,kBAAiB,EAAG,sBAAsBwQ,IAAE,CAAC,GAAE,KAAK,SAASjE,CAAC;AAAA,QAAE,QAAS;AAAA,QAAA;AAAA,MAAE;AAAA,MAAC,SAAStH,GAAE;AAAC,aAAK,KAAK,EAAC,GAAE,KAAK,OAAO,QAAO,EAAG,OAAK,IAAE,KAAK,OAAO,UAAU,YAAU,IAAG,GAAUA,MAAR,QAAU,IAAE,KAAK,OAAO,QAAO,EAAG,SAAO,EAAC,CAAC;AAAA,MAAC;AAAA,MAAC,SAASA,GAAE;AAAC,aAAK,KAAK,EAAC,GAAE,IAAG,GAAUA,MAAR,QAAU,IAAE,KAAK,OAAO,UAAU,SAAO,EAAC,CAAC;AAAA,MAAC;AAAA,MAAC,WAAU;AAAC,YAAU,KAAK,SAAZ,KAAiB;AAAO,cAAMA,IAAE,KAAK,KAAK,YAAW,GAAGsH,IAAE,KAAK,cAAa,GAAGvM,IAAa,KAAK,KAAK,UAAS,MAA9B,WAAiCuM,EAAE,SAAO;AAAE,QAAAtH,EAAE,KAAG,IAAE,KAAK,kBAAkBA,GAAE,EAAC,GAAE,CAACsH,EAAE,WAAU,GAAEvM,EAAC,GAAE,EAAE,IAAE,KAAK,kBAAkBiF,GAAE,EAAC,GAAEsH,EAAE,WAAU,GAAEvM,EAAC,GAAE,EAAE;AAAA,MAAC;AAAA,MAAC,WAAWiF,GAAE;AAAC,YAAG,CAAC,KAAK,WAAW,QAAO,aAAa,EAAE;AAAO,cAAMsH,IAAE,KAAK,cAAa,GAAGvM,IAAEuM,EAAE;AAAU,YAAG,KAAK,iBAAiBtH,CAAC,EAAE,KAAU,KAAK,SAAZ,MAAiB;AAAC,cAAG,CAAC,KAAK,MAAMA,CAAC,EAAE;AAAO,eAAK,SAAS,aAAa,GAAE,KAAK,KAAK,KAAK,EAAC,GAAEjF,IAAE,GAAE,GAAE,EAAC,CAAC;AAAE,gBAAMwQ,IAAE,IAAGzP,IAAa,KAAK,KAAK,gBAArB,WAAiCwL,EAAE,SAAO,IAAE,GAAEwC,IAAa,KAAK,KAAK,UAAS,MAA9B,WAAiCxC,EAAE,SAAOiE,IAAEA;AAAE,eAAK,kBAAkB,EAAC,GAAExQ,IAAE,GAAEe,EAAG,GAAE,EAAC,GAAEf,IAAEwQ,GAAE,GAAEzB,EAAC,GAAE,IAAG,EAAE;AAAA,QAAC,MAAM,MAAK,GAAG,KAAK,OAAO,cAAc9J,CAAC,CAAC;AAAA,YAAO,MAAK,SAAS,MAAM,GAAE,KAAK,OAAO,gBAAe,GAAG,KAAK,SAAQ;AAAA,MAAE;AAAA,MAAC,kBAAkBA,GAAEsH,GAAEvM,GAAEwQ,IAAE,IAAG;AAAC,cAAMzP,IAAEgO,EAAE,qBAAqB9J,GAAEsH,CAAC,GAAEnL,IAAE;AAAG,mBAAU6D,KAAKlE,EAAE,CAAAK,EAAE,KAAK,MAAI,KAAK,GAAG6D,CAAC,CAAC;AAAE,cAAMyoF,IAAE,KAAK,qBAAqB3sF,EAAE,MAAM;AAAE,aAAK,OAAO,eAAeK,GAAEssF,GAAE,MAAI;AAAC,eAAK,SAAO1tF,MAAQ,KAAK,KAAK,mBAAd,IAA6B,KAAK,IAAI,eAAc,IAAG,KAAK,IAAI,eAAc,IAAIwQ,MAAI,KAAK,OAAO,cAAc,IAAI,GAAE,KAAK,OAAO,gBAAgB,IAAI,GAAE,KAAK,OAAO,YAAW,GAAG,KAAK,SAAS,MAAM,GAAE,KAAK;QAAS,CAAC;AAAA,MAAC;AAAA,MAAC,iBAAgB;AAAC,eAAO,KAAK;AAAA,MAAI;AAAA,MAAC,WAAU;AAAC,eAAO,KAAK;AAAA,MAAK;AAAA,MAAC,SAASvL,GAAE;AAAC,aAAK,UAAQA,MAAI,KAAK,IAAI,YAAYA,CAAC,GAAE,KAAK,QAAMA;AAAA,MAAE;AAAA,MAAC,oBAAoBA,GAAE;AAAC,cAAMsH,IAAE,KAAK,cAAa;AAAG,YAAgB,KAAK,OAAO,eAAc,MAAvC;AAA2C,cAAGtH,EAAE,IAAEsH,EAAE,aAAWA,EAAE,QAAM,EAAE,QAAO;AAAA,mBAAUtH,EAAE,IAAEsH,EAAE,QAAM,EAAE,QAAO;AAAE,eAAO;AAAA,MAAC;AAAA,MAAC,qBAAqBtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,IAAI,YAAW,EAAG;AAAa,eAAOtH,KAAG,MAAIsH,IAAEtH,IAAE,MAAIsH;AAAA,MAAC;AAAA,MAAC,eAAetH,GAAE;AAAC,eAAWA,MAAJ,IAAM,KAAK,IAAI,oBAAmB,IAAG,KAAK,IAAI,aAAY,IAAG,IAAE,KAAK,IAAI,oBAAmB,KAAI;AAAA,MAAC;AAAA,MAAC,QAAO;AAAC,aAAK,OAAK,MAAK,KAAK,eAAa,MAAK,KAAK,aAAW;AAAA,MAAI;AAAA,MAAC,gBAAe;AAAC,eAAO,KAAK,OAAO,QAAO;AAAA,MAAE;AAAA,MAAC,cAAcA,GAAE;AAAC,mBAAUsH,KAAKtH,EAAE,KAAG,KAAK,UAAQsH,EAAE,QAAM;AAAG;MAAQ;AAAA,MAAC,iBAAiBtH,GAAE;AAAC,cAAMsH,IAAE,KAAK,cAAa,GAAGvM,IAAEuM,EAAE,WAAUiE,IAAE,KAAK,KAAK,KAAK,IAAIxQ,GAAE,CAAC,IAAE,KAAK,IAAIuM,EAAE,QAAO,CAAC,CAAC,IAAE,GAAExL,IAAE,KAAK,OAAO,cAAckE,CAAC;AAAE,eAAOlE,EAAE,IAAE,KAAGA,EAAE,IAAE,KAAGA,EAAE,IAAEwL,EAAE,SAAOxL,EAAE,IAAEwL,EAAE,WAASxL,EAAE,IAAEyP,KAAGzP,EAAE,IAAEwL,EAAE,QAAMiE,OAAKzP,EAAE,IAAEyP,KAAGzP,EAAE,IAAEwL,EAAE,SAAOiE;AAAA,MAAE;AAAA,IAAC;AAAA,IAAC,MAAMH,EAAC;AAAA,MAAC,YAAYpL,GAAEsH,GAAE;AAAC,aAAK,WAAS,MAAK,KAAK,YAAU,MAAK,KAAK,eAAa,MAAK,KAAK,aAAW,MAAK,KAAK,YAAU,MAAK,KAAK,cAAY,MAAK,KAAK,SAAO,MAAK,KAAK,YAAU,MAAK,KAAK,WAAS,MAAK,KAAK,aAAW,MAAK,KAAK,QAAM,GAAE,KAAK,SAAO,IAAG,KAAK,UAAQA,GAAE,KAAK,MAAItH;AAAE,cAAMjF,IAAE,IAAI,OAAO,8BAA8B;AAAE,aAAK,SAAcA,EAAE,KAAK,OAAO,UAAU,SAAS,MAAxC;AAAA,MAAyC;AAAA,MAAC,OAAOiF,GAAE;AAAC,YAAU,KAAK,cAAZ,MAAsB;AAAC,gBAAMsH,IAAE,KAAK,OAAOtH,IAAE,KAAK,UAAU,aAAW,KAAK,UAAU,aAAa;AAAE,UAAAsH,IAAE,KAAK,UAAU,OAAO,SAAO,KAAK,UAAU,OAAOA,CAAC,EAAC,KAAI,KAAK,UAAU,aAAY,GAAG,KAAK,YAAU;AAAA,QAAK;AAAC,aAAK,QAAMtH,GAAE,KAAK,UAAS;AAAA,MAAE;AAAA,MAAC,QAAO;AAAC,aAAK,OAAM;AAAG,cAAMA,IAAE,CAAAsH,MAAG;AAAC,eAAK,OAAOA,CAAC,GAAE,sBAAsBtH,CAAC;AAAA,QAAC;AAAE,8BAAsBA,CAAC;AAAA,MAAC;AAAA,MAAC,eAAeA,GAAEsH,GAAEvM,GAAE;AAAC,aAAK,mBAAkB,KAAK,YAAU,EAAC,QAAOiF,GAAE,UAASsH,GAAE,eAAcA,IAAEtH,EAAE,QAAO,cAAajF,GAAE,WAAU,KAAK,MAAK;AAAA,MAAC;AAAA,MAAC,kBAAiB;AAAC,QAAO,KAAK,cAAZ,SAAwB,KAAK,UAAU,OAAO,KAAK,UAAU,OAAO,SAAO,CAAC,EAAC,GAAU,KAAK,UAAU,iBAAtB,QAAoC,KAAK,UAAU,iBAAgB,KAAK,YAAU;AAAA,MAAI;AAAA,MAAC,SAAQ;AAAC,aAAK,aAAW;AAAK,cAAMiF,IAAE,KAAK,oBAAmB;AAAG,aAAK,gBAAcA,MAAI,KAAK,cAAYA,GAAE,KAAK,IAAI,kBAAkBA,CAAC;AAAA,MAAE;AAAA,MAAC,sBAAqB;AAAC,YAAIA,IAAE;AAAY,cAAMsH,IAAE,KAAK,iBAAgBvM,IAAEuM,IAAE,GAAEiE,IAAE,KAAK,eAAc,IAAG,GAAEzP,IAAE,KAAK,QAAQ,QAAM,KAAK,QAAQ;AAAO,YAAIgO,IAAE,KAAK,QAAQ,OAAM3N,IAAE,KAAK,QAAQ,QAAOssF,IAAE1tF,IAAE+O;AAAE,eAAkB,KAAK,QAAQ,SAAzB,aAA+BxC,IAAE,IAAE,KAAK,QAAQ,YAAU,KAAK,IAAI,YAAW,EAAG,gBAActH,IAAE,aAAY8J,IAAe9J,MAAb,aAAe,KAAK,kBAAgB,KAAK,cAAa,IAAG,GAAE8J,IAAE,KAAK,QAAQ,aAAWA,IAAE,KAAK,QAAQ,WAAU3N,IAAE2N,IAAEhO,GAAEK,IAAE,KAAK,eAAc,MAAKA,IAAE,KAAK,kBAAiB2N,IAAE3N,IAAEL,IAAG2sF,IAAezoF,MAAb,aAAejF,IAAE+O,IAAE,IAAEA,IAAE/O,IAAE+O,KAAGxC,IAAE,IAAEwC,KAAG,KAAK,IAAI,cAAc,gBAAc9J,IAAE,YAAWyoF,IAAE1tF,IAAE+O,IAAE,IAAEA,IAAG,KAAK,aAAW,EAAC,MAAK2+E,GAAE,KAAIl9E,IAAEpP,IAAE,GAAE,OAAM,IAAE2N,GAAE,QAAO3N,GAAE,WAAU2N,EAAC,GAAE9J;AAAA,MAAC;AAAA,MAAC,cAAcA,GAAEsH,GAAEvM,GAAEwQ,GAAE;AAAC,YAAG,CAAC,KAAK,IAAI,YAAW,EAAG,WAAW;AAAO,cAAMzP,IAAE,MAAI,KAAK,YAAW,EAAG;AAAiB,aAAK,SAAO,EAAC,KAAIkE,GAAE,OAAMsH,GAAE,OAAM,IAAE,KAAK,QAAO,EAAG,YAAU,IAAEvM,IAAE,KAAI,UAAS,MAAIA,KAAGe,IAAE,MAAI,KAAI,WAAUyP,GAAE,UAAS,IAAExQ,EAAC;AAAA,MAAC;AAAA,MAAC,cAAa;AAAC,aAAK,SAAO;AAAA,MAAI;AAAA,MAAC,gBAAe;AAAC,eAAO,KAAK,IAAI,MAAK,EAAG,eAAc,EAAG;AAAA,MAAW;AAAA,MAAC,iBAAgB;AAAC,eAAO,KAAK,IAAI,MAAK,EAAG,eAAc,EAAG;AAAA,MAAY;AAAA,MAAC,eAAc;AAAC,eAAO,KAAK;AAAA,MAAS;AAAA,MAAC,UAAS;AAAC,eAAc,KAAK,eAAZ,QAAwB,KAAK,oBAAmB,GAAG,KAAK;AAAA,MAAU;AAAA,MAAC,cAAa;AAAC,eAAO,KAAK,IAAI;MAAa;AAAA,MAAC,iBAAgB;AAAC,eAAO,KAAK;AAAA,MAAW;AAAA,MAAC,YAAYiF,GAAE;AAAC,aAAK,WAASA;AAAA,MAAC;AAAA,MAAC,aAAaA,GAAE;AAAC,aAAK,YAAUA;AAAA,MAAC;AAAA,MAAC,aAAaA,GAAE;AAAC,QAAOA,MAAP,QAAUA,EAAE,eAAe,CAAC,GAAE,KAAK,YAAUA;AAAA,MAAC;AAAA,MAAC,YAAYA,GAAE;AAAC,QAAOA,MAAP,QAAUA,EAAE,eAAe,CAAC,GAAE,KAAK,WAASA;AAAA,MAAC;AAAA,MAAC,cAAcA,GAAE;AAAC,QAAOA,MAAP,QAAUA,EAAE,eAAmB,KAAK,cAAT,IAAmB,IAAE,CAAC,GAAE,KAAK,aAAWA;AAAA,MAAC;AAAA,MAAC,gBAAgBA,GAAE;AAAC,QAAOA,MAAP,QAAUA,EAAE,eAAmB,KAAK,cAAT,KAAiC,KAAK,gBAAlB,aAA8B,IAAE,CAAC,GAAE,KAAK,eAAaA;AAAA,MAAC;AAAA,MAAC,cAAcA,GAAE;AAAC,cAAMsH,IAAE,KAAK,QAAO;AAAG,eAAM,EAAC,GAAEtH,EAAE,IAAEsH,EAAE,MAAK,GAAEtH,EAAE,IAAEsH,EAAE,IAAG;AAAA,MAAC;AAAA,MAAC,WAAU;AAAC,eAAO,KAAK;AAAA,MAAM;AAAA,MAAC,cAActH,GAAEsH,GAAE;AAAC,QAAAA,MAAIA,IAAE,KAAK;AAAW,cAAMvM,IAAE,KAAK,QAAO;AAAG,eAAM,EAAC,GAAMuM,MAAJ,IAAMtH,EAAE,IAAEjF,EAAE,OAAKA,EAAE,QAAM,IAAEA,EAAE,QAAM,IAAEiF,EAAE,IAAEjF,EAAE,MAAK,GAAEiF,EAAE,IAAEjF,EAAE,IAAG;AAAA,MAAC;AAAA,MAAC,gBAAgBiF,GAAEsH,GAAE;AAAC,YAAGA,MAAIA,IAAE,KAAK,YAAiBtH,KAAN,KAAQ,QAAO;AAAK,cAAMjF,IAAE,KAAK;AAAU,eAAM,EAAC,GAAMuM,MAAJ,IAAMtH,EAAE,IAAEjF,EAAE,OAAKA,EAAE,QAAM,IAAEA,EAAE,QAAM,IAAEiF,EAAE,IAAEjF,EAAE,MAAK,GAAEiF,EAAE,IAAEjF,EAAE,IAAG;AAAA,MAAC;AAAA,MAAC,oBAAoBiF,GAAEsH,GAAE;AAAC,eAAOA,MAAIA,IAAE,KAAK,YAAW,EAAC,SAAQ,KAAK,gBAAgBtH,EAAE,SAAQsH,CAAC,GAAE,UAAS,KAAK,gBAAgBtH,EAAE,UAASsH,CAAC,GAAE,YAAW,KAAK,gBAAgBtH,EAAE,YAAWsH,CAAC,GAAE,aAAY,KAAK,gBAAgBtH,EAAE,aAAYsH,CAAC,EAAC;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAM/J,UAAU6N,EAAC;AAAA,MAAC,YAAYpL,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEsH,CAAC,GAAE,KAAK,SAAOvM,GAAE,KAAK,MAAIA,EAAE,WAAW,IAAI;AAAA,MAAC;AAAA,MAAC,aAAY;AAAC,eAAO,KAAK;AAAA,MAAG;AAAA,MAAC,SAAQ;AAAA;MAAE,YAAW;AAAC,aAAK,SAAqB,KAAK,gBAAlB,cAAqC,KAAK,YAAX,QAAqB,KAAK,SAAS,WAAW,CAAC,GAAQ,KAAK,aAAX,QAAsB,KAAK,UAAU,WAAW,CAAC,GAAQ,KAAK,cAAX,QAAuB,KAAK,WAAW,KAAI,GAAG,KAAK,eAAc,GAAS,KAAK,gBAAX,QAAyB,KAAK,aAAa,KAAI,GAAS,KAAK,UAAX,SAAoB,KAAK,gBAAe,GAAG,KAAK;AAAmB,cAAMiF,IAAE,KAAK,QAAO;AAAG,QAAa,KAAK,gBAAlB,eAAgC,KAAK,IAAI,UAAS,GAAG,KAAK,IAAI,KAAKA,EAAE,OAAKA,EAAE,WAAUA,EAAE,KAAIA,EAAE,OAAMA,EAAE,MAAM,GAAE,KAAK,IAAI,KAAI;AAAA,MAAG;AAAA,MAAC,iBAAgB;AAAC,cAAMA,IAAE,KAAK;AAAU,aAAK,IAAI,KAAI,GAAG,KAAK,IAAI,UAAS;AAAG,cAAMsH,IAAEtH,EAAE,QAAM;AAAG,aAAK,IAAI,KAAKA,EAAE,MAAKA,EAAE,KAAIA,EAAE,OAAMA,EAAE,MAAM;AAAE,cAAMjF,IAAE,EAAC,GAAEiF,EAAE,OAAKA,EAAE,QAAM,IAAEsH,IAAE,GAAE,GAAE,EAAC;AAAE,aAAK,IAAI,UAAUvM,EAAE,GAAEA,EAAE,CAAC;AAAE,cAAMwQ,IAAE,KAAK,IAAI,qBAAqB,GAAE,GAAEjE,GAAE,CAAC;AAAE,QAAAiE,EAAE,aAAa,GAAE,kBAAkB,GAAEA,EAAE,aAAa,KAAG,oBAAoB,GAAEA,EAAE,aAAa,MAAI,oBAAoB,GAAEA,EAAE,aAAa,KAAG,oBAAoB,GAAEA,EAAE,aAAa,MAAI,oBAAoB,GAAEA,EAAE,aAAa,GAAE,kBAAkB,GAAE,KAAK,IAAI,QAAO,KAAK,IAAI,YAAUA,GAAE,KAAK,IAAI,SAAS,GAAE,GAAEjE,GAAE,IAAEtH,EAAE,MAAM,GAAE,KAAK,IAAI,QAAO;AAAA,MAAE;AAAA,MAAC,kBAAiB;AAAC,cAAMA,IAAE,KAAK,QAAO;AAAG,aAAK,IAAI,KAAI,GAAG,KAAK,IAAI,UAAS,GAAG,KAAK,IAAI,KAAKA,EAAE,MAAKA,EAAE,KAAIA,EAAE,OAAMA,EAAE,MAAM;AAAE,cAAMsH,IAAE,KAAK,gBAAgB,EAAC,GAAE,KAAK,OAAO,IAAI,GAAE,GAAE,KAAK,OAAO,IAAI,EAAC,CAAC;AAAE,aAAK,IAAI,UAAUA,EAAE,GAAEA,EAAE,CAAC,GAAE,KAAK,IAAI,OAAO,KAAK,KAAG,KAAK,OAAO,QAAM,KAAK,KAAG,CAAC;AAAE,cAAMvM,IAAE,KAAK,IAAI,qBAAqB,GAAE,GAAE,KAAK,OAAO,OAAM,CAAC;AAAE,QAAI,KAAK,OAAO,cAAhB,KAA2B,KAAK,IAAI,UAAU,GAAE,IAAI,GAAEA,EAAE,aAAa,GAAE,mBAAiB,KAAK,OAAO,UAAQ,GAAG,GAAEA,EAAE,aAAa,GAAE,kBAAkB,MAAI,KAAK,IAAI,UAAU,CAAC,KAAK,OAAO,OAAM,IAAI,GAAEA,EAAE,aAAa,GAAE,kBAAkB,GAAEA,EAAE,aAAa,GAAE,mBAAiB,KAAK,OAAO,UAAQ,GAAG,IAAG,KAAK,IAAI,KAAI,GAAG,KAAK,IAAI,YAAUA,GAAE,KAAK,IAAI,SAAS,GAAE,GAAE,KAAK,OAAO,OAAM,IAAEiF,EAAE,MAAM,GAAE,KAAK,IAAI,QAAO;AAAA,MAAE;AAAA,MAAC,kBAAiB;AAAC,cAAMA,IAAE,KAAK,QAAO;AAAG,aAAK,IAAI,KAAI,GAAG,KAAK,IAAI,UAAS;AAAG,cAAMsH,IAAE,KAAK,gBAAgB,EAAC,GAAE,KAAK,OAAO,IAAI,GAAE,GAAE,KAAK,OAAO,IAAI,EAAC,CAAC,GAAEvM,IAAE,KAAK,oBAAoB,KAAK,QAAQ;AAAE,aAAK,IAAI,OAAOA,EAAE,QAAQ,GAAEA,EAAE,QAAQ,CAAC,GAAE,KAAK,IAAI,OAAOA,EAAE,SAAS,GAAEA,EAAE,SAAS,CAAC,GAAE,KAAK,IAAI,OAAOA,EAAE,YAAY,GAAEA,EAAE,YAAY,CAAC,GAAE,KAAK,IAAI,OAAOA,EAAE,WAAW,GAAEA,EAAE,WAAW,CAAC,GAAE,KAAK,IAAI,UAAUuM,EAAE,GAAEA,EAAE,CAAC,GAAE,KAAK,IAAI,OAAO,KAAK,KAAG,KAAK,OAAO,QAAM,KAAK,KAAG,CAAC;AAAE,cAAMiE,IAAE,IAAE,KAAK,OAAO,QAAM,GAAEzP,IAAE,KAAK,IAAI,qBAAqB,GAAE,GAAEyP,GAAE,CAAC;AAAE,QAAI,KAAK,OAAO,cAAhB,KAA2B,KAAK,IAAI,UAAU,CAACA,GAAE,IAAI,GAAEzP,EAAE,aAAa,GAAE,mBAAiB,KAAK,OAAO,UAAQ,GAAG,GAAEA,EAAE,aAAa,KAAG,qBAAqB,GAAEA,EAAE,aAAa,KAAG,mBAAiB,KAAK,OAAO,UAAQ,GAAG,GAAEA,EAAE,aAAa,GAAE,kBAAkB,MAAI,KAAK,IAAI,UAAU,GAAE,IAAI,GAAEA,EAAE,aAAa,GAAE,mBAAiB,KAAK,OAAO,UAAQ,GAAG,GAAEA,EAAE,aAAa,KAAG,qBAAqB,GAAEA,EAAE,aAAa,KAAG,mBAAiB,KAAK,OAAO,UAAQ,GAAG,GAAEA,EAAE,aAAa,GAAE,kBAAkB,IAAG,KAAK,IAAI,KAAI,GAAG,KAAK,IAAI,YAAUA,GAAE,KAAK,IAAI,SAAS,GAAE,GAAEyP,GAAE,IAAEvL,EAAE,MAAM,GAAE,KAAK,IAAI,QAAO;AAAA,MAAE;AAAA,MAAC,QAAO;AAAC,aAAK,IAAI,YAAU,SAAQ,KAAK,IAAI,SAAS,GAAE,GAAE,KAAK,OAAO,OAAM,KAAK,OAAO,MAAM;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAMnD,EAAC;AAAA,MAAC,YAAYmD,GAAEsH,GAAEvM,GAAE;AAAC,aAAK,aAAW,MAAK,KAAK,eAAa,KAAI,KAAK,WAAS,MAAI;AAAC,eAAK,OAAM;AAAA,QAAE,GAAE,KAAK,cAAY,CAAAiF,MAAG;AAAC,cAAG,KAAK,YAAYA,EAAE,MAAM,GAAE;AAAC,kBAAMsH,IAAE,KAAK,YAAYtH,EAAE,SAAQA,EAAE,OAAO;AAAE,iBAAK,IAAI,eAAesH,CAAC,GAAEtH,EAAE,eAAc;AAAA,UAAE;AAAA,QAAC,GAAE,KAAK,eAAa,CAAAA,MAAG;AAAC,cAAG,KAAK,YAAYA,EAAE,MAAM,KAAGA,EAAE,eAAe,SAAO,GAAE;AAAC,kBAAMsH,IAAEtH,EAAE,eAAe,CAAC,GAAEjF,IAAE,KAAK,YAAYuM,EAAE,SAAQA,EAAE,OAAO;AAAE,iBAAK,aAAW,EAAC,OAAMvM,GAAE,MAAK,KAAK,IAAG,EAAE,GAAE,WAAW,MAAI;AAAC,cAAO,KAAK,eAAZ,QAAwB,KAAK,IAAI,eAAeA,CAAC;AAAA,YAAC,GAAE,KAAK,YAAY,GAAE,KAAK,IAAI,YAAW,EAAG,uBAAqBiF,EAAE,eAAc;AAAA,UAAE;AAAA,QAAC,GAAE,KAAK,YAAU,CAAAA,MAAG;AAAC,gBAAMsH,IAAE,KAAK,YAAYtH,EAAE,SAAQA,EAAE,OAAO;AAAE,eAAK,IAAI,SAASsH,CAAC;AAAA,QAAC,GAAE,KAAK,cAAY,CAAAtH,MAAG;AAAC,gBAAMsH,IAAE,KAAK,YAAYtH,EAAE,SAAQA,EAAE,OAAO;AAAE,eAAK,IAAI,SAASsH,GAAE,EAAE;AAAA,QAAC,GAAE,KAAK,cAAY,CAAAtH,MAAG;AAAC,cAAGA,EAAE,eAAe,SAAO,GAAE;AAAC,kBAAMsH,IAAEtH,EAAE,eAAe,CAAC,GAAEjF,IAAE,KAAK,YAAYuM,EAAE,SAAQA,EAAE,OAAO;AAAE,iBAAK,IAAI,cAAc,uBAA4B,KAAK,eAAZ,SAAyB,KAAK,IAAI,KAAK,WAAW,MAAM,IAAEvM,EAAE,CAAC,IAAE,MAAa,KAAK,IAAI,SAAQ,MAA1B,WAA+BiF,EAAE,cAAY,KAAK,IAAI,SAASjF,GAAE,EAAE,GAAW,KAAK,IAAI,eAAlB,UAA8BiF,EAAE,eAAc,KAAI,KAAK,IAAI,SAASjF,GAAE,EAAE;AAAA,UAAC;AAAA,QAAC,GAAE,KAAK,aAAW,CAAAiF,MAAG;AAAC,cAAGA,EAAE,eAAe,SAAO,GAAE;AAAC,kBAAMsH,IAAEtH,EAAE,eAAe,CAAC,GAAEjF,IAAE,KAAK,YAAYuM,EAAE,SAAQA,EAAE,OAAO;AAAE,gBAAIiE,IAAE;AAAG,gBAAU,KAAK,eAAZ,MAAuB;AAAC,oBAAMvL,IAAEjF,EAAE,IAAE,KAAK,WAAW,MAAM,GAAEuM,IAAE,KAAK,IAAIvM,EAAE,IAAE,KAAK,WAAW,MAAM,CAAC;AAAE,mBAAK,IAAIiF,CAAC,IAAE,KAAK,iBAAesH,IAAE,IAAE,KAAK,iBAAe,KAAK,IAAG,IAAG,KAAK,WAAW,OAAK,KAAK,iBAAetH,IAAE,IAAE,KAAK,IAAI,SAAS,KAAK,WAAW,MAAM,IAAE,KAAK,IAAI,UAAS,EAAG,QAAO,EAAG,SAAO,IAAE,QAAM,QAAQ,IAAE,KAAK,IAAI,SAAS,KAAK,WAAW,MAAM,IAAE,KAAK,IAAI,YAAY,QAAO,EAAG,SAAO,IAAE,QAAM,QAAQ,GAAEuL,IAAE,KAAI,KAAK,aAAW;AAAA,YAAI;AAAC,iBAAK,IAAI,SAASxQ,GAAEwQ,CAAC;AAAA,UAAC;AAAA,QAAC,GAAE,KAAK,gBAAcvL,GAAEA,EAAE,UAAU,IAAI,aAAa,GAAEA,EAAE,mBAAmB,cAAa,kCAAkC,GAAE,KAAK,UAAQA,EAAE,cAAc,eAAe,GAAE,KAAK,MAAIsH;AAAE,cAAMiE,IAAE,KAAK,IAAI,YAAW,EAAG,cAAY,IAAE;AAAE,QAAAvL,EAAE,MAAM,WAASjF,EAAE,WAASwQ,IAAE,MAAKvL,EAAE,MAAM,YAAUjF,EAAE,YAAU,MAAeA,EAAE,SAAZ,YAAmBiF,EAAE,MAAM,WAASjF,EAAE,QAAMwQ,IAAE,MAAKvL,EAAE,MAAM,YAAUjF,EAAE,SAAO,OAAMA,EAAE,aAAWiF,EAAE,MAAM,QAAM,QAAOA,EAAE,MAAM,WAAS,IAAEjF,EAAE,WAAS,OAAMiF,EAAE,MAAM,UAAQ,SAAQ,OAAO,iBAAiB,UAAS,KAAK,UAAS,EAAE,GAAE,KAAK,gBAAcjF,EAAE;AAAA,MAAa;AAAA,MAAC,UAAS;AAAC,aAAK,IAAI,YAAW,EAAG,kBAAgB,KAAK,eAAc,GAAG,KAAK,YAAY,OAAM,GAAG,KAAK,QAAQ;MAAQ;AAAA,MAAC,iBAAgB;AAAC,eAAO,KAAK;AAAA,MAAW;AAAA,MAAC,aAAY;AAAC,eAAO,KAAK;AAAA,MAAO;AAAA,MAAC,oBAAoBiF,GAAE;AAAC,aAAK,QAAQ,UAAU,OAAO,cAAa,aAAa,GAAeA,MAAb,cAAgB,KAAK,IAAI,YAAW,EAAG,aAAW,KAAK,QAAQ,MAAM,gBAAc,KAAK,IAAI,YAAW,EAAG,SAAO,KAAK,IAAI,YAAW,EAAG,QAAM,MAAI,MAAK,KAAK,QAAQ,UAAU,IAAI,YAAY,MAAI,KAAK,IAAI,cAAc,aAAW,KAAK,QAAQ,MAAM,gBAAc,KAAK,IAAI,YAAW,EAAG,UAAQ,IAAE,KAAK,IAAI,YAAW,EAAG,SAAO,MAAI,MAAK,KAAK,QAAQ,UAAU,IAAI,aAAa,IAAG,KAAK,OAAM;AAAA,MAAE;AAAA,MAAC,iBAAgB;AAAC,eAAO,oBAAoB,UAAS,KAAK,QAAQ,GAAE,KAAK,YAAY,oBAAoB,aAAY,KAAK,WAAW,GAAE,KAAK,YAAY,oBAAoB,cAAa,KAAK,YAAY,GAAE,OAAO,oBAAoB,aAAY,KAAK,WAAW,GAAE,OAAO,oBAAoB,aAAY,KAAK,WAAW,GAAE,OAAO,oBAAoB,WAAU,KAAK,SAAS,GAAE,OAAO,oBAAoB,YAAW,KAAK,UAAU;AAAA,MAAC;AAAA,MAAC,cAAa;AAAC,eAAO,iBAAiB,UAAS,KAAK,UAAS,EAAE,GAAE,KAAK,IAAI,YAAW,EAAG,mBAAiB,KAAK,YAAY,iBAAiB,aAAY,KAAK,WAAW,GAAE,KAAK,YAAY,iBAAiB,cAAa,KAAK,YAAY,GAAE,OAAO,iBAAiB,aAAY,KAAK,WAAW,GAAE,OAAO,iBAAiB,aAAY,KAAK,aAAY,EAAC,SAAQ,CAAC,KAAK,IAAI,YAAW,EAAG,oBAAmB,CAAC,GAAE,OAAO,iBAAiB,WAAU,KAAK,SAAS,GAAE,OAAO,iBAAiB,YAAW,KAAK,UAAU;AAAA,MAAE;AAAA,MAAC,YAAYA,GAAEsH,GAAE;AAAC,cAAMvM,IAAE,KAAK,YAAY,sBAAqB;AAAG,eAAM,EAAC,GAAEiF,IAAEjF,EAAE,MAAK,GAAEuM,IAAEvM,EAAE,IAAG;AAAA,MAAC;AAAA,MAAC,YAAYiF,GAAE;AAAC,eAAM,CAAC,KAAK,IAAI,YAAW,EAAG,qBAAmB,CAAC,CAAC,KAAI,QAAQ,EAAE,SAASA,EAAE,QAAQ,aAAa;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAMpB,UAAU/B,EAAC;AAAA,MAAC,YAAYmD,GAAEsH,GAAEvM,GAAEwQ,GAAE;AAAC,cAAMvL,GAAEsH,GAAEvM,CAAC,GAAE,KAAK,QAAQ,mBAAmB,cAAa,gCAAgC,GAAE,KAAK,cAAYiF,EAAE,cAAc,aAAa,GAAE,KAAK,QAAMuL;AAAE,mBAAUvL,KAAKuL,EAAE,MAAK,YAAY,YAAYvL,CAAC;AAAE,aAAK;MAAa;AAAA,MAAC,QAAO;AAAC,mBAAUA,KAAK,KAAK,MAAM,MAAK,cAAc,YAAYA,CAAC;AAAA,MAAC;AAAA,MAAC,YAAYA,GAAE;AAAC,aAAK,eAAc,GAAG,KAAK,YAAY,YAAU;AAAG,mBAAUsH,KAAKtH,EAAE,MAAK,YAAY,YAAYsH,CAAC;AAAE,aAAK,QAAMtH,GAAE,KAAK,YAAW;AAAA,MAAE;AAAA,MAAC,SAAQ;AAAC,aAAK,IAAI,UAAS,EAAG,OAAM;AAAA,MAAE;AAAA,IAAC;AAAA,IAAC,MAAMgsF,UAAUnvF,EAAC;AAAA,MAAC,YAAYmD,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEsH,GAAEvM,CAAC,GAAE,KAAK,QAAQ,YAAU,yCAAwC,KAAK,SAAOiF,EAAE,iBAAiB,QAAQ,EAAE,CAAC,GAAE,KAAK,cAAY,KAAK,QAAO,KAAK,gBAAe,KAAK,YAAW;AAAA,MAAE;AAAA,MAAC,eAAc;AAAC,cAAMA,IAAE,iBAAiB,KAAK,MAAM,GAAEsH,IAAE,SAAStH,EAAE,iBAAiB,OAAO,GAAE,EAAE,GAAEjF,IAAE,SAASiF,EAAE,iBAAiB,QAAQ,GAAE,EAAE;AAAE,aAAK,OAAO,QAAMsH,GAAE,KAAK,OAAO,SAAOvM;AAAA,MAAC;AAAA,MAAC,YAAW;AAAC,eAAO,KAAK;AAAA,MAAM;AAAA,MAAC,SAAQ;AAAC,aAAK,aAAY,GAAG,KAAK,IAAI,YAAY;MAAQ;AAAA,IAAC;AAAA,IAAC,MAAM8O,UAAUuB,EAAC;AAAA,MAAC,YAAYpL,GAAEsH,GAAEvM,GAAE;AAAC,cAAMiF,GAAEsH,CAAC,GAAE,KAAK,cAAY,MAAK,KAAK,cAAY,MAAK,KAAK,aAAW,MAAK,KAAK,kBAAgB,MAAK,KAAK,UAAQvM,GAAE,KAAK,cAAa;AAAA,MAAE;AAAA,MAAC,gBAAe;AAAC,aAAK,QAAQ,mBAAmB,aAAY;AAAA;AAAA;AAAA,sDAAkM,GAAE,KAAK,cAAY,KAAK,QAAQ,cAAc,mBAAmB,GAAE,KAAK,cAAY,KAAK,QAAQ,cAAc,mBAAmB,GAAE,KAAK,aAAW,KAAK,QAAQ,cAAc,kBAAkB,GAAE,KAAK,kBAAgB,KAAK,QAAQ,cAAc,uBAAuB;AAAA,MAAC;AAAA,MAAC,cAAa;AAAC,cAAM,eAAc,KAAK,YAAY,MAAM,UAAQ,iBAAgB,KAAK,YAAY,MAAM,UAAQ,iBAAgB,KAAK,WAAW,MAAM,UAAQ,iBAAgB,KAAK,gBAAgB,MAAM,UAAQ;AAAA,MAAe;AAAA,MAAC,SAAQ;AAAC,aAAK,QAAQ,cAAc,mBAAmB,KAAG,KAAK,cAAa;AAAA,MAAE;AAAA,MAAC,sBAAqB;AAAC,cAAMiF,IAAE,KAAK,WAAUsH,IAAE,KAAK,OAAO,WAAS,MAAI,MAAI,KAAK,OAAO,WAAS,KAAK,OAAO;AAAS,YAAIvM,KAAG,MAAIuM,MAAI,MAAItH,EAAE,aAAW,MAAI;AAAG,QAAAjF,IAAEiF,EAAE,cAAYjF,IAAEiF,EAAE;AAAW,YAAIuL,IAAE;AAAA;AAAA,wBAAwD,KAAK,YAAW,EAAG,cAAY,GAAG,SAAS,EAAE,CAAC;AAAA,qBAAyBxQ,CAAC;AAAA,sBAA4BiF,EAAE,MAAM;AAAA;AAAA,gCAAyF,KAAK,OAAO,UAAQsH,IAAE,GAAG;AAAA;AAAA,oBAAqEtH,EAAE,OAAKA,EAAE,QAAM,CAAC;AAAA;AAAA;AAAoD,QAAAuL,KAAO,KAAK,aAAY,MAArB,KAAyB,KAAK,OAAO,WAAS,OAAS,KAAK,aAAY,MAArB,KAAyB,KAAK,OAAO,YAAU,MAAI,qCAAmC,oDAAmD,KAAK,gBAAgB,MAAM,UAAQA;AAAA,MAAC;AAAA,MAAC,sBAAqB;AAAC,cAAMvL,IAAE,KAAK,QAAO;AAAG,YAAIsH,KAAG,OAAK,KAAK,OAAO,WAAS,MAAI,MAAI,KAAK,OAAO,WAAS,KAAK,OAAO,cAAY,MAAItH,EAAE,aAAW,MAAI;AAAG,QAAAsH,IAAEtH,EAAE,cAAYsH,IAAEtH,EAAE;AAAW,YAAIjF,IAAE;AAAA;AAAA,wBAAwD,KAAK,cAAc,cAAY,GAAG,SAAS,EAAE,CAAC;AAAA,qBAAyBuM,CAAC;AAAA,sBAA4BtH,EAAE,MAAM;AAAA,iEAAuE,KAAK,OAAO,OAAO;AAAA,oBAAoDA,EAAE,OAAKA,EAAE,QAAM,CAAC;AAAA;AAAA;AAAoD,QAAAjF,KAAO,KAAK,aAAY,MAArB,KAAyB,KAAK,OAAO,WAAS,OAAS,KAAK,aAAY,MAArB,KAAyB,KAAK,OAAO,YAAU,MAAI,qDAAmD,oCAAmC,KAAK,WAAW,MAAM,UAAQA;AAAA,MAAC;AAAA,MAAC,kBAAiB;AAAC,cAAMiF,IAAE,KAAK,QAAO,GAAGsH,IAAE,IAAE,KAAK,OAAO,QAAM,GAAEvM,IAAM,KAAK,mBAAT,IAAwBuM,IAAE,GAAEiE,IAAM,KAAK,aAAY,MAArB,IAAwB,YAAU,YAAWzP,IAAE,KAAK,gBAAgB,KAAK,OAAO,GAAG,GAAEK,IAAE,KAAK,OAAO,QAAM,IAAE,KAAK,KAAG,GAAEssF,IAAE,CAAC,KAAK,SAAS,SAAQ,KAAK,SAAS,UAAS,KAAK,SAAS,aAAY,KAAK,SAAS,UAAU;AAAE,YAAI9pF,IAAE;AAAY,mBAAUqB,KAAKyoF,GAAE;AAAC,cAAInhF,IAAM,KAAK,mBAAT,IAAwB,EAAC,GAAE,CAACtH,EAAE,IAAE,KAAK,OAAO,IAAI,GAAE,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,EAAC,IAAE,EAAC,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,GAAE,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,EAAC;AAAE,UAAAsH,IAAEwC,EAAE,gBAAgBxC,GAAE,EAAC,GAAEvM,GAAE,GAAE,IAAG,GAAEoB,CAAC,GAAEwC,KAAG2I,EAAE,IAAE,QAAMA,EAAE,IAAE;AAAA,QAAM;AAAC,QAAA3I,IAAEA,EAAE,MAAM,GAAE,EAAE,GAAEA,KAAG;AAAI,cAAMoM,IAAE;AAAA;AAAA,wBAAwD,KAAK,YAAW,EAAG,cAAY,IAAI,SAAS,EAAE,CAAC;AAAA,qBAAyBzD,CAAC;AAAA,sBAA4B,IAAEtH,EAAE,MAAM;AAAA,0CAAgDuL,CAAC;AAAA,gCAAoC,KAAK,OAAO,OAAO;AAAA;AAAA,gCAAkF,KAAK,OAAO,OAAO;AAAA;AAAA,gCAAkFxQ,CAAC;AAAA,qCAAiDe,EAAE,IAAEf,CAAC,OAAOe,EAAE,IAAE,GAAG,iBAAiBK,CAAC;AAAA,yBAAiCwC,CAAC;AAAA,iCAAqCA,CAAC;AAAA;AAAc,aAAK,YAAY,MAAM,UAAQoM;AAAA,MAAC;AAAA,MAAC,kBAAiB;AAAC,cAAM/K,IAAE,KAAK,QAAO,GAAGsH,IAAE,KAAK,gBAAgB,EAAC,GAAE,KAAK,OAAO,IAAI,GAAE,GAAE,KAAK,OAAO,IAAI,EAAC,CAAC,GAAEvM,IAAE,KAAK,OAAO,QAAM,IAAE,KAAK,KAAG,GAAEwQ,IAAM,KAAK,aAAY,MAArB,IAAwB,KAAK,OAAO,QAAM,GAAEzP,IAAM,KAAK,aAAY,MAArB,IAAwB,aAAW,WAAUK,IAAE,CAAC,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE6D,EAAE,WAAU,GAAE,EAAC,GAAE,EAAC,GAAEA,EAAE,WAAU,GAAEA,EAAE,OAAM,GAAE,EAAC,GAAE,GAAE,GAAEA,EAAE,OAAM,CAAC;AAAE,YAAIyoF,IAAE;AAAY,mBAAUzoF,KAAK7D,EAAE,KAAU6D,MAAP,MAAS;AAAC,cAAIsH,IAAM,KAAK,aAAY,MAArB,IAAwB,EAAC,GAAE,CAACtH,EAAE,IAAE,KAAK,OAAO,IAAI,GAAE,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,EAAC,IAAE,EAAC,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,GAAE,GAAEA,EAAE,IAAE,KAAK,OAAO,IAAI,EAAC;AAAE,UAAAsH,IAAEwC,EAAE,gBAAgBxC,GAAE,EAAC,GAAEiE,GAAE,GAAE,IAAG,GAAExQ,CAAC,GAAE0tF,KAAGnhF,EAAE,IAAE,QAAMA,EAAE,IAAE;AAAA,QAAM;AAAC,QAAAmhF,IAAEA,EAAE,MAAM,GAAE,EAAE,GAAEA,KAAG;AAAI,cAAM9pF,IAAE;AAAA;AAAA,wBAAwD,KAAK,YAAW,EAAG,cAAY,IAAI,SAAS,EAAE,CAAC;AAAA,qBAAyB,KAAK,OAAO,KAAK;AAAA,sBAA4B,IAAEqB,EAAE,MAAM;AAAA,0CAAgDlE,CAAC,mBAAmB,KAAK,OAAO,OAAO;AAAA,gCAAwDyP,CAAC;AAAA,qCAAiDjE,EAAE,IAAEiE,CAAC,OAAOjE,EAAE,IAAE,GAAG,iBAAiBvM,CAAC;AAAA,yBAAiC0tF,CAAC;AAAA,iCAAqCA,CAAC;AAAA;AAAc,aAAK,YAAY,MAAM,UAAQ9pF;AAAA,MAAC;AAAA,MAAC,eAAc;AAAC,QAAa,KAAK,gBAAlB,cAAsC,KAAK,aAAZ,SAA2B,KAAK,cAAT,KAA2B,KAAK,iBAAZ,QAAmC,KAAK,aAAa,wBAA3B,UAAgD,KAAK,SAAS,aAAa,MAAM,UAAQ,KAAK,cAAc,cAAY,GAAG,SAAS,EAAE,GAAE,KAAK,SAAS,oBAAoB,MAAI,KAAK,aAAa,cAAc,GAAE,KAAK,SAAS,KAAK,KAAK,aAAa,kBAAiB,CAAE,KAAG,KAAK,SAAS,WAAW,CAAC;AAAA,MAAE;AAAA,MAAC,gBAAe;AAAC,QAAO,KAAK,cAAZ,SAA4B,KAAK,cAAT,KAA2B,KAAK,iBAAZ,QAAmC,KAAK,aAAa,wBAA3B,UAAgD,KAAK,UAAU,WAAU,EAAG,MAAM,UAAQ,KAAK,YAAW,EAAG,cAAY,GAAG,SAAS,EAAE,GAAE,KAAK,UAAU,oBAAoB,MAAI,KAAK,aAAa,cAAc,GAAE,KAAK,UAAU,KAAK,KAAK,aAAa,mBAAmB,KAAG,KAAK,UAAU,WAAW,CAAC;AAAA,MAAE;AAAA,MAAC,iBAAgB;AAAC,YAAU,KAAK,eAAZ,KAAuB;AAAO,cAAMqB,IAAQ,KAAK,gBAAX,OAAwB,KAAK,aAAa,kBAAiB,IAAG;AAAK,QAAa,KAAK,gBAAlB,cAAmC,KAAK,cAAT,MAAqB,KAAK,WAAW,WAAU,EAAG,MAAM,UAAQ,KAAK,YAAW,EAAG,cAAY,GAAG,SAAS,EAAE,GAAE,KAAK,WAAW,KAAKA,CAAC;AAAA,MAAE;AAAA,MAAC,YAAW;AAAC,aAAK,MAAK,GAAG,KAAK,aAAY,GAAG,KAAK,cAAa,GAAG,KAAK,eAAc,GAAS,KAAK,gBAAX,SAA0B,KAAK,aAAa,WAAU,EAAG,MAAM,UAAQ,KAAK,YAAW,EAAG,cAAY,GAAG,SAAS,EAAE,GAAE,KAAK,aAAa,SAAc,KAAK,UAAX,QAA0B,KAAK,iBAAZ,SAAoC,KAAK,aAAa,kBAAiB,MAA5C,UAAgD,KAAK,mBAAkB,KAAK,gBAAe,MAAK,KAAK,oBAAmB,GAAG,KAAK,oBAAmB;AAAA,MAAI;AAAA,MAAC,QAAO;AAAC,mBAAUA,KAAK,KAAK,IAAI,kBAAiB,EAAG,WAAW,CAAAA,MAAI,KAAK,YAAUA,MAAI,KAAK,aAAWA,MAAI,KAAK,gBAAcA,MAAI,KAAK,eAAaA,EAAE,WAAU,EAAG,MAAM,UAAQ,kBAAiBA,EAAE,uBAAqB,KAAK,gBAAcA,EAAE,kBAAiB;AAAA,MAAE;AAAA,MAAC,SAAQ;AAAC,cAAM,OAAM,GAAU,KAAK,cAAZ,QAAuB,KAAK,UAAU,eAAe,CAAC,GAAS,KAAK,aAAZ,QAAsB,KAAK,SAAS,eAAe,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,IAAC,MAAMX,EAAC;AAAA,MAAC,cAAa;AAAC,aAAK,WAAS,EAAC,WAAU,GAAE,MAAK,SAAQ,OAAM,GAAE,QAAO,GAAE,UAAS,GAAE,UAAS,GAAE,WAAU,GAAE,WAAU,GAAE,YAAW,IAAG,cAAa,KAAI,aAAY,IAAG,aAAY,GAAE,UAAS,IAAG,kBAAiB,GAAE,WAAU,IAAG,qBAAoB,IAAG,eAAc,IAAG,mBAAkB,IAAG,gBAAe,IAAG,iBAAgB,IAAG,oBAAmB,GAAE;AAAA,MAAC;AAAA,MAAC,YAAYW,GAAE;AAAC,cAAMsH,IAAE,KAAK;AAAS,YAAG,OAAO,OAAOA,GAAEtH,CAAC,GAAcsH,EAAE,SAAd,aAA8BA,EAAE,SAAZ,QAAiB,OAAM,IAAI,MAAM,+DAA+D;AAAE,YAAGA,EAAE,SAAO,KAAGA,EAAE,UAAQ,EAAE,OAAM,IAAI,MAAM,yBAAyB;AAAE,YAAGA,EAAE,gBAAc,EAAE,OAAM,IAAI,MAAM,uBAAuB;AAAE,eAAkBA,EAAE,SAAd,aAAoBA,EAAE,YAAU,MAAIA,EAAE,WAAS,MAAKA,EAAE,WAASA,EAAE,aAAWA,EAAE,WAAS,MAAKA,EAAE,aAAW,MAAIA,EAAE,YAAU,MAAKA,EAAE,YAAUA,EAAE,cAAYA,EAAE,YAAU,SAAOA,EAAE,WAASA,EAAE,OAAMA,EAAE,WAASA,EAAE,OAAMA,EAAE,YAAUA,EAAE,QAAOA,EAAE,YAAUA,EAAE,SAAQA;AAAA,MAAC;AAAA,IAAC;AAAC,KAAC,SAAStH,GAAEsH,GAAE;AAAC,MAASA,MAAT,WAAaA,IAAE,CAAA;AAAI,UAAIvM,IAAEuM,EAAE;AAAS,UAAmB,OAAO,WAApB,KAA6B;AAAC,YAAIiE,IAAE,SAAS,QAAM,SAAS,qBAAqB,MAAM,EAAE,CAAC,GAAEzP,IAAE,SAAS,cAAc,OAAO;AAAE,QAAAA,EAAE,OAAK,YAAmBf,MAAR,SAAWwQ,EAAE,aAAWA,EAAE,aAAazP,GAAEyP,EAAE,UAAU,IAAEA,EAAE,YAAYzP,CAAC,GAAEA,EAAE,aAAWA,EAAE,WAAW,UAAQkE,IAAElE,EAAE,YAAY,SAAS,eAAekE,CAAC,CAAC;AAAA,MAAC;AAAA,IAAC,GAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAA62B,GAAEA,EAAE,WAAS,cAAc,MAAK;AAAA,MAAC,cAAa;AAAC,aAAK,SAAO,oBAAI;AAAA,MAAG;AAAA,MAAC,GAAGA,GAAEsH,GAAE;AAAC,eAAO,KAAK,OAAO,IAAItH,CAAC,IAAE,KAAK,OAAO,IAAIA,CAAC,EAAE,KAAKsH,CAAC,IAAE,KAAK,OAAO,IAAItH,GAAE,CAACsH,CAAC,CAAC,GAAE;AAAA,MAAI;AAAA,MAAC,IAAItH,GAAE;AAAC,aAAK,OAAO,OAAOA,CAAC;AAAA,MAAC;AAAA,MAAC,QAAQA,GAAEsH,GAAEvM,IAAE,MAAK;AAAC,YAAG,KAAK,OAAO,IAAIiF,CAAC,EAAE,YAAUuL,KAAK,KAAK,OAAO,IAAIvL,CAAC,EAAE,CAAAuL,EAAE,EAAC,MAAKxQ,GAAE,QAAOuM,EAAC,CAAC;AAAA,MAAC;AAAA,IAAC,EAAC;AAAA,MAAC,YAAYtH,GAAEsH,GAAE;AAAC,iBAAQ,KAAK,cAAY,IAAG,KAAK,aAAW,IAAG,KAAK,UAAQ,MAAK,KAAK,QAAM,MAAK,KAAK,UAAS,IAAIjI,IAAG,YAAYiI,CAAC,GAAE,KAAK,QAAMtH;AAAA,MAAC;AAAA,MAAC,UAAS;AAAC,aAAK,GAAG,QAAO,GAAG,KAAK,MAAM,OAAM;AAAA,MAAE;AAAA,MAAC,SAAQ;AAAC,aAAK,OAAO,OAAM,GAAG,KAAK,MAAM,KAAI;AAAA,MAAE;AAAA,MAAC,eAAeA,GAAE;AAAC,aAAK,KAAG,IAAIgsF,EAAE,KAAK,OAAM,MAAK,KAAK,OAAO;AAAE,cAAM1kF,IAAE,KAAK,GAAG;AAAY,aAAK,SAAO,IAAI/J,EAAE,MAAK,KAAK,SAAQ+J,CAAC,GAAE,KAAK,iBAAe,IAAIyD,EAAE,KAAK,QAAO,IAAI,GAAE,KAAK,QAAM,IAAIjP,EAAE,MAAK,KAAK,QAAOkE,CAAC,GAAE,KAAK,MAAM,KAAI,GAAG,KAAK,OAAO,MAAK,GAAG,KAAK,MAAM,KAAK,KAAK,QAAQ,SAAS,GAAE,WAAW,MAAI;AAAC,eAAK,GAAG,OAAM,GAAG,KAAK,QAAQ,QAAO,MAAK,EAAC,MAAK,KAAK,QAAQ,WAAU,MAAK,KAAK,OAAO,eAAc,EAAE,CAAC;AAAA,QAAC,GAAE,CAAC;AAAA,MAAC;AAAA,MAAC,aAAaA,GAAE;AAAC,aAAK,KAAG,IAAIpB,EAAE,KAAK,OAAM,MAAK,KAAK,SAAQoB,CAAC,GAAE,KAAK,SAAO,IAAI6J,EAAE,MAAK,KAAK,SAAQ,KAAK,GAAG,gBAAgB,GAAE,KAAK,iBAAe,IAAIkB,EAAE,KAAK,QAAO,IAAI,GAAE,KAAK,QAAM,IAAI09E,EAAE,MAAK,KAAK,QAAO,KAAK,GAAG,eAAc,GAAGzoF,CAAC,GAAE,KAAK,MAAM,KAAI,GAAG,KAAK,OAAO,MAAK,GAAG,KAAK,MAAM,KAAK,KAAK,QAAQ,SAAS,GAAE,WAAW,MAAI;AAAC,eAAK,GAAG,OAAM,GAAG,KAAK,QAAQ,QAAO,MAAK,EAAC,MAAK,KAAK,QAAQ,WAAU,MAAK,KAAK,OAAO,iBAAgB,CAAC;AAAA,QAAC,GAAE,CAAC;AAAA,MAAC;AAAA,MAAC,iBAAiBA,GAAE;AAAC,cAAMsH,IAAE,KAAK,MAAM,oBAAmB;AAAG,aAAK,MAAM,QAAO,GAAG,KAAK,QAAM,IAAIxL,EAAE,MAAK,KAAK,QAAOkE,CAAC,GAAE,KAAK,MAAM,KAAI,GAAG,KAAK,MAAM,KAAKsH,CAAC,GAAE,KAAK,QAAQ,UAAS,MAAK,EAAC,MAAKA,GAAE,MAAK,KAAK,OAAO,iBAAgB,CAAC;AAAA,MAAC;AAAA,MAAC,eAAetH,GAAE;AAAC,cAAMsH,IAAE,KAAK,MAAM,oBAAmB;AAAG,aAAK,MAAM,QAAO,GAAG,KAAK,QAAM,IAAImhF,EAAE,MAAK,KAAK,QAAO,KAAK,GAAG,eAAc,GAAGzoF,CAAC,GAAE,KAAK,MAAM,KAAI,GAAG,KAAK,GAAG,YAAYA,CAAC,GAAE,KAAK,OAAO,OAAM,GAAG,KAAK,MAAM,KAAKsH,CAAC,GAAE,KAAK,QAAQ,UAAS,MAAK,EAAC,MAAKA,GAAE,MAAK,KAAK,OAAO,eAAc,EAAE,CAAC;AAAA,MAAC;AAAA,MAAC,QAAO;AAAC,aAAK,MAAM,QAAO,GAAG,KAAK,GAAG;MAAO;AAAA,MAAC,iBAAgB;AAAC,aAAK,MAAM;MAAU;AAAA,MAAC,iBAAgB;AAAC,aAAK,MAAM,SAAQ;AAAA,MAAE;AAAA,MAAC,WAAWtH,GAAE;AAAC,aAAK,MAAM,KAAKA,CAAC;AAAA,MAAC;AAAA,MAAC,SAASA,IAAE,OAAM;AAAC,aAAK,eAAe,SAASA,CAAC;AAAA,MAAC;AAAA,MAAC,SAASA,IAAE,OAAM;AAAC,aAAK,eAAe,SAASA,CAAC;AAAA,MAAC;AAAA,MAAC,KAAKA,GAAEsH,IAAE,OAAM;AAAC,aAAK,eAAe,WAAWtH,GAAEsH,CAAC;AAAA,MAAC;AAAA,MAAC,YAAYtH,GAAE;AAAC,aAAK,QAAQ,eAAc,MAAKA,CAAC;AAAA,MAAC;AAAA,MAAC,gBAAgBA,GAAE;AAAC,aAAK,QAAQ,QAAO,MAAKA,CAAC;AAAA,MAAC;AAAA,MAAC,kBAAkBA,GAAE;AAAC,aAAK,GAAG,oBAAoBA,CAAC,GAAE,KAAK,UAAS,KAAK,QAAQ,qBAAoB,MAAKA,CAAC;AAAA,MAAC;AAAA,MAAC,eAAc;AAAC,eAAO,KAAK,MAAM,aAAY;AAAA,MAAE;AAAA,MAAC,sBAAqB;AAAC,eAAO,KAAK,MAAM,oBAAmB;AAAA,MAAE;AAAA,MAAC,QAAQA,GAAE;AAAC,eAAO,KAAK,MAAM,QAAQA,CAAC;AAAA,MAAC;AAAA,MAAC,YAAW;AAAC,eAAO,KAAK;AAAA,MAAM;AAAA,MAAC,oBAAmB;AAAC,eAAO,KAAK;AAAA,MAAc;AAAA,MAAC,iBAAgB;AAAC,eAAO,KAAK,OAAO,eAAc;AAAA,MAAE;AAAA,MAAC,gBAAe;AAAC,eAAO,KAAK,OAAO,QAAO;AAAA,MAAE;AAAA,MAAC,cAAa;AAAC,eAAO,KAAK;AAAA,MAAO;AAAA,MAAC,QAAO;AAAC,eAAO,KAAK;AAAA,MAAE;AAAA,MAAC,WAAU;AAAC,eAAO,KAAK,eAAe,SAAQ;AAAA,MAAE;AAAA,MAAC,oBAAmB;AAAC,eAAO,KAAK;AAAA,MAAK;AAAA,MAAC,eAAeA,GAAE;AAAC,aAAK,gBAAcA,GAAE,KAAK,cAAY,IAAG,KAAK,aAAW;AAAA,MAAE;AAAA,MAAC,SAASA,GAAEsH,GAAE;AAAC,aAAK,eAAaA,KAAG,CAAC,KAAK,QAAQ,kBAAgB,KAAK,eAAawC,EAAE,2BAA2B,KAAK,eAAc9J,CAAC,IAAE,MAAI,KAAK,aAAW,IAAG,KAAK,eAAe,KAAKA,CAAC,KAAG,KAAK,eAAe,WAAWA,CAAC;AAAA,MAAC;AAAA,MAAC,SAASA,GAAEsH,IAAE,IAAG;AAAC,aAAK,gBAAc,KAAK,cAAY,IAAGA,MAAI,KAAK,aAAW,KAAK,eAAe,SAAQ,IAAG,KAAK,eAAe,KAAKtH,CAAC;AAAA,MAAG;AAAA,IAAC,GAAE,OAAO,eAAeA,GAAE,cAAa,EAAC,OAAM,GAAE,CAAC;AAAA,EAAC,CAAC;;;ACK/g2C,MAAMisF,GAAgB;AAAA,EASzB,YAAYC,GAA4BlzF,GAAgC;AARhE,IAAAkL,EAAA,kBAAgB;AAChB,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,gBAA4B,CAAA;AAC5B,IAAAA,EAAA,iBAAmC;AACnC,IAAAA,EAAA,2BAAoB;AACpB,IAAAA,EAAA,uBAAqB;AAGzB,SAAK,gBAAgBgoF,GACrB,KAAK,UAAUlzF,GACXA,EAAQ,aACR,KAAK,UAAU,IAAI,MAAMA,EAAQ,QAAQ;AAAA,EAEjD;AAAA,EAEO,KAAKmzF,GAAuBC,GAAwB;AACvD,SAAK,WAAW,IAAIC,YAAS,KAAK,eAAe;AAAA,MAC7C,OAAOF;AAAA,MACP,QAAQC;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,MACb,qBAAqB;AAAA,MACrB,kBAAkB,KAAK,QAAQ,oBAAoB;AAAA,MACnD,cAAc,KAAK,QAAQ,gBAAgB;AAAA,IAAA,CAC9C;AAGD,UAAME,IAAe,KAAK,cAAc,iBAAiB,UAAU;AACnE,SAAK,SAAS,aAAa,MAAM,KAAKA,CAAY,CAAC,GAEnD,KAAK,WAAA,GACL,KAAK,gBAAA;AAAA,EACT;AAAA,EAEQ,aAAa;AAEjB,SAAK,SAAS,GAAG,QAAQ,CAAChlF,MAAW;AAEjC,MAAIuhF,GAAY,UAAUvhF,EAAE,SACxB,KAAK,oBAAoB,IACzBuhF,GAAY,QAAQvhF,EAAE,MACtB,KAAK,UAAA,GACL,KAAK,oBAAoB;AAAA,IAEjC,CAAC,GAGD,KAAK,SAAS,GAAG,eAAe,CAACA,MAAW;AACxC,MAAA4hF,GAAU,QAAQ5hF,EAAE;AAAA,IACxB,CAAC,GAGD,KAAK,SAAS,GAAG,qBAAqB,CAACA,MAAW;AAC9C,MAAI2hF,GAAY,UAAU3hF,EAAE,SACxB2hF,GAAY,QAAQ3hF,EAAE;AAAA,IAE9B,CAAC;AAAA,EACL;AAAA,EAEQ,kBAAkB;AAEtB,SAAK,OAAO;AAAA,MACRilF,GAAO,MAAM;AACT,cAAMC,IAAa3D,GAAY,OACzBzrC,IAAQ8rC,GAAU,KAAA;AACxB,YAAI,CAAC,KAAK,YAAY,KAAK,qBAAqB9rC,MAAU,OAAQ;AAElE,cAAMqvC,IAAiB,KAAK,SAAS,oBAAA;AACrC,YAAIA,MAAmBD,KAAc,CAACzD,GAAa,OAAO;AACtD,gBAAM2D,IAAiB,CAAC7vF,MAAcA,MAAM,IAAI,IAAI,KAAK,KAAKA,IAAI,CAAC,GAC7D8vF,IAAeD,EAAeF,CAAU,GACxCI,IAAgBF,EAAeD,CAAc;AAEnD,UAAIE,MAAiBC,IAAgB,IACjC,KAAK,SAAS,SAAA,IACPD,MAAiBC,IAAgB,IACxC,KAAK,SAAS,SAAA,IACPD,MAAiBC,KACxB,KAAK,SAAS,WAAWJ,CAAU;AAAA,QAE3C;AAAA,MACJ,CAAC;AAAA,IAAA,GAIL,KAAK,OAAO;AAAA,MACRD,GAAO,MAAM;AAET,QADAxD,GAAa,OACR,KAAK,YAGV,WAAW,MAAM;AACb,UAAI,KAAK,YACL,KAAK,SAAS,OAAA,GAElB,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,QAC5C,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,IAAA,GAIL,KAAK,OAAO;AAAA,MACRwD,GAAO,MAAM;AACT,cAAMM,IAAUpD,GAAc,OACxBqD,IAAWpD,GAAiB,SAAS;AAE3C,QAAI,KAAK,kBACL,cAAc,KAAK,aAAa,GAChC,KAAK,gBAAgB,OAGrBmD,MACA,KAAK,gBAAgB,YAAY,MAAM;AAEnC,gBAAME,IAAWlD,GAAM,MAAM,SAAS;AACtC,cAAIhB,GAAY,UAAUkE,KAAalE,GAAY,UAAUkE,IAAW,KAAK,CAAChE,GAAa,KAAA,GAAS;AAGhG,YAAAU,GAAc,QAAQ;AACtB;AAAA,UACJ;AACA,eAAK,eAAA;AAAA,QACT,GAAGqD,CAAQ;AAAA,MAEnB,CAAC;AAAA,IAAA;AAAA,EAET;AAAA,EAEO,iBAAiB;AACpB,QAAI/D,GAAa,OAAO;AACpB,YAAMiE,IAAUnE,GAAY,QAAQ;AACpC,MAAImE,IAAUnD,GAAM,MAAM,WACtBhB,GAAY,QAAQmE,GACpB,KAAK,UAAA;AAAA,IAEb,MAAA,CAAW,KAAK,YACZ,KAAK,SAAS,SAAA;AAAA,EAEtB;AAAA,EAEO,iBAAiB;AACpB,QAAIjE,GAAa,OAAO;AACpB,YAAMkE,IAAUpE,GAAY,QAAQ;AACpC,MAAIoE,KAAW,MACXpE,GAAY,QAAQoE,GACpB,KAAK,UAAA;AAAA,IAEb,MAAA,CAAW,KAAK,YACZ,KAAK,SAAS,SAAA;AAAA,EAEtB;AAAA,EAEO,YAAY;AACf,IAAItD,GAAa,SAAS,KAAK,YAC3B,KAAK,QAAQ,cAAc,GAC3B,KAAK,QAAQ,OAAO,MAAM,OAAO,QAAQ,KAAK,8BAA8Bj6B,CAAG,CAAC;AAAA,EAExF;AAAA,EAEO,SAAS;AACZ,IAAI,KAAK,YACL,KAAK,SAAS,OAAA;AAAA,EAEtB;AAAA,EAEO,UAAU;AACb,SAAK,OAAO,QAAQ,CAAAw9B,MAASA,EAAA,CAAO,GACpC,KAAK,SAAS,CAAA,GACV,KAAK,aACL,KAAK,SAAS,QAAA,GACd,KAAK,WAAW;AAAA,EAExB;AACJ;ACvLO,MAAMC,GAAc;AAAA,EASvB,YAAYC,GAAiD;AARrD,IAAAlpF,EAAA,wBAAqC;AACrC,IAAAA,EAAA,sBAAmC;AACnC,IAAAA,EAAA;AACA,IAAAA,EAAA,wBAAwC;AACxC,IAAAA,EAAA,+BAA+C;AAC/C,IAAAA,EAAA,gBAA4B,CAAA;AAC7B,IAAAA,EAAA;AAGH,SAAK,eAAekpF;AAAA,EACxB;AAAA,EAEO,KAAKC,GAA6BC,GAA2B;AAChE,SAAK,iBAAiBD,GACtB,KAAK,eAAeC,GAEpB,KAAK,oBAAA,GACL,KAAK,sBAAA,GACL,KAAK,eAAA,GAGL,KAAK,sBAAA;AAAA,EACT;AAAA,EAEQ,iBAAiB;AAErB,SAAK,OAAO;AAAA,MACRf,GAAO,MAAM;AAET,QAAAxD,GAAa,OACbE,GAAY,OAGZ,WAAW,MAAM,KAAK,sBAAA,GAAyB,EAAE;AAAA,MACrD,CAAC;AAAA,IAAA;AAAA,EAET;AAAA,EAEQ,sBAAsB;AAC1B,IAAI,OAAO,iBAAmB,OAAe,KAAK,mBAC9C,KAAK,iBAAiB,IAAI,eAAe,MAAM;AAC3C,WAAK,sBAAA;AAAA,IACT,CAAC,GACD,KAAK,eAAe,QAAQ,KAAK,cAAc;AAAA,EAEvD;AAAA,EAEQ,wBAAwB;AAC5B,QAAI,OAAO,SAAW,OAAe,OAAO,YAAY;AACpD,WAAK,wBAAwB,OAAO,WAAW,yBAAyB;AAExE,YAAMsE,IAA0B,CAACjmF,MAA4C;AACzE,QAAIA,EAAE,SAIN,KAAK,sBAAA;AAAA,MACT;AAGA,MAAI,KAAK,sBAAsB,mBAC3B,KAAK,sBAAsB,iBAAiB,UAAUimF,CAAuB,IAE7E,KAAK,sBAAsB,YAAYA,CAAuB,GAIlEA,EAAwB,KAAK,qBAAqB;AAAA,IACtD;AAAA,EACJ;AAAA,EAEO,wBAAwB;AAC3B,QAAI,CAAC,KAAK,kBAAkB,CAAC,KAAK,aAAc;AAEhD,UAAMC,IAAa,KAAK,eAAe,aACjCC,IAAc,KAAK,eAAe;AAExC,QAAID,MAAe,KAAKC,MAAgB,EAAG;AAE3C,UAAM/nF,IAAQ,KAAK,aAAa,OAC1BC,IAAS,KAAK,aAAa,QAO3B+nF,IADW5D,GAAmB,QACJpkF,IAAQ,IAAKC,IAASD,IAAQC;AAE9D,QAAIgoF,IAAYH,GACZI,IAAaJ,IAAaE;AAG9B,IAAIE,IAAaH,MACbG,IAAaH,GACbE,IAAYF,IAAcC;AAK9B,QAAIG,IAAa,KAAK,KAAKF,CAAS;AACpC,IAAIE,IAAa,MAAM,MAAGA,KAAc,IAExC,KAAK,aAAa,MAAM,QAAQ,GAAGA,CAAU,MAC7C,KAAK,aAAa,MAAM,SAAS,GAAG,KAAK,MAAMD,CAAU,CAAC,MAC1D,KAAK,aAAa,MAAM,cAAc,IAElC,KAAK,oBACL,KAAK,iBAAA;AAAA,EAEb;AAAA,EAEO,UAAU;AACb,SAAK,OAAO,QAAQ,CAAAV,MAASA,EAAA,CAAO,GACpC,KAAK,SAAS,CAAA,GAEV,KAAK,kBAAkB,KAAK,mBAC5B,KAAK,eAAe,UAAU,KAAK,cAAc,GACjD,KAAK,eAAe,WAAA,GACpB,KAAK,iBAAiB,OAGtB,KAAK,0BAEL,KAAK,wBAAwB;AAAA,EAErC;AACJ;AC/HO,MAAMY,GAAmB;AAAA,EAM5B,YAAYjhF,GAAwBkhF,GAAkC;AAL9D,IAAA7pF,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,qBAA6B;AAC7B,IAAAA,EAAA,gBAA4B,CAAA;AAGhC,SAAK,YAAY2I,GACjB,KAAK,kBAAkBkhF;AAAA,EAC3B;AAAA,EAEO,OAAO;AACV,SAAK,UAAA,GACL,KAAK,cAAA,GACL,KAAK,UAAA,GACL,KAAK,eAAA;AAAA,EACT;AAAA,EAEQ,iBAAiB;AACrB,SAAK,OAAO;AAAA,MACRxB,GAAO,MAAM;AACT,QAAA/C,GAAS,QAAQI,GAAU,MAAM,UAE7BA,GAAU,MAAM,YAChB,KAAK,UAAU,MAAM,YAAY,aAAaA,GAAU,MAAM,UAAU,OAAOA,GAAU,MAAM,UAAU,aAAaA,GAAU,MAAM,KAAK,KAC3I,KAAK,UAAU,MAAM,aAAa,WAElC,KAAK,UAAU,MAAM,YAAY,IACjC,KAAK,UAAU,MAAM,aAAa;AAAA,MAE1C,CAAC;AAAA,IAAA;AAAA,EAET;AAAA,EAEQ,YAAY;AAChB,SAAK,UAAU,iBAAiB,SAAS,CAACtiF,MAAM;AAC5C,MAAIsiF,GAAU,MAAM,aAChBtiF,EAAE,eAAA,GACF,KAAK;AAAA,QACDsiF,GAAU,MAAM,aAAatiF,EAAE;AAAA,QAC/BsiF,GAAU,MAAM,aAAatiF,EAAE;AAAA,MAAA;AAAA,IAG3C,GAAG,EAAE,SAAS,IAAO;AAAA,EACzB;AAAA,EAEQ,gBAAgB;AACpB,QAAI0mF,IAAa,IACbC,IAAS,GACTC,IAAS,GACTC,IAAY,GACZC,IAAY;AAEhB,SAAK,UAAU,iBAAiB,aAAa,CAAC9mF,MAAM;AAChD,MAAIsiF,GAAU,MAAM,aAChBoE,IAAa,IACbC,IAAS3mF,EAAE,SACX4mF,IAAS5mF,EAAE,SACX6mF,IAAYvE,GAAU,MAAM,YAC5BwE,IAAYxE,GAAU,MAAM,YAC5B,KAAK,UAAU,MAAM,SAAS;AAAA,IAEtC,CAAC,GAED,OAAO,iBAAiB,aAAa,CAACtiF,MAAM;AACxC,UAAI,CAAC0mF,KAAc,CAACpE,GAAU,MAAM,SAAU;AAC9C,YAAM/T,IAAKvuE,EAAE,UAAU2mF,GACjBI,IAAK/mF,EAAE,UAAU4mF;AACvB,WAAK,cAAcC,IAAYtY,GAAIuY,IAAYC,CAAE;AAAA,IACrD,CAAC,GAED,OAAO,iBAAiB,WAAW,MAAM;AACrC,MAAIL,MACAA,IAAa,IACb,KAAK,UAAU,MAAM,SAASpE,GAAU,MAAM,WAAW,SAAS;AAAA,IAE1E,CAAC;AAAA,EACL;AAAA,EAEQ,YAAY;AAChB,QAAIoE,IAAa,IACbM,IAAU,GACVC,IAAU;AAEd,SAAK,UAAU,iBAAiB,cAAc,CAACjnF,MAAM;AACjD,UAAIA,EAAE,QAAQ,WAAW;AACrB,YAAI,CAACsiF,GAAU,MAAM;AACjB,eAAK,cAActiF,EAAE,QAAQ,CAAC,EAAE;AAAA,aAC7B;AACH,UAAA0mF,IAAa,IACb,KAAK,cAAc1mF,EAAE,QAAQ,CAAC,EAAE;AAChC,gBAAMknF,IAAclnF,EAAE,QAAQ,CAAC,EAAE;AACjC,UAAAgnF,IAAU1E,GAAU,MAAM,YAC1B2E,IAAU3E,GAAU,MAAM,YACzB,KAAK,UAAkB,eAAe4E;AAAA,QAC3C;AAAA,IAER,GAAG,EAAE,SAAS,IAAM,GAEpB,KAAK,UAAU,iBAAiB,aAAa,CAAClnF,MAAM;AAChD,UAAI0mF,KAAcpE,GAAU,MAAM,YAAYtiF,EAAE,QAAQ,WAAW,KAAK,KAAK,gBAAgB,MAAM;AAC/F,QAAAA,EAAE,eAAA;AACF,cAAMuuE,IAAKvuE,EAAE,QAAQ,CAAC,EAAE,UAAU,KAAK,aACjC+mF,IAAK/mF,EAAE,QAAQ,CAAC,EAAE,UAAW,KAAK,UAAkB;AAC1D,aAAK,cAAcgnF,IAAUzY,GAAI0Y,IAAUF,CAAE;AAAA,MACjD;AAAA,IACJ,GAAG,EAAE,SAAS,IAAO,GAErB,KAAK,UAAU,iBAAiB,YAAY,CAAC/mF,MAAM;AAC/C,UAAI,KAAK,gBAAgB,QAAQ,CAACsiF,GAAU,MAAM,YAAYb,GAAa,SAASzhF,EAAE,eAAe,WAAW,GAAG;AAC/G,cAAM2/D,IAAQ3/D,EAAE,eAAe,CAAC,EAAE,UAAU,KAAK;AACjD,QAAI2/D,IAAQ,MAAM4hB,GAAY,QAAQ,IAClC,KAAK,gBAAgB,eAAA,IACd5hB,IAAQ,OAAO4hB,GAAY,QAAQC,GAAW,QAAQ,KAC7D,KAAK,gBAAgB,eAAA;AAAA,MAE7B;AACA,WAAK,cAAc,MACnBkF,IAAa;AAAA,IACjB,GAAG,EAAE,SAAS,IAAM;AAAA,EACxB;AAAA,EAEO,SAAS;AACZ,QAAIS,IAAW7E,GAAU,MAAM,QAAQ;AACvC,IAAI6E,IAAW,MAAGA,IAAW,IAE7B7E,GAAU,QAAQ;AAAA,MACd,GAAGA,GAAU;AAAA,MACb,UAAU6E,IAAW;AAAA,MACrB,OAAOA;AAAA,IAAA,GAEPA,IAAW,MACX,KAAK,UAAU,MAAM,SAAS;AAAA,EAEtC;AAAA,EAEO,UAAU;AACb,QAAIA,IAAW7E,GAAU,MAAM,QAAQ;AACvC,IAAI6E,KAAY,KACZA,IAAW,GACX7E,GAAU,QAAQ,EAAE,GAAGA,GAAU,OAAO,UAAU,IAAO,YAAY,GAAG,YAAY,GAAG,OAAO,EAAA,GAC9F,KAAK,UAAU,MAAM,SAAS,MAE9BA,GAAU,QAAQ,EAAE,GAAGA,GAAU,OAAO,UAAU,IAAM,OAAO6E,EAAA;AAAA,EAEvE;AAAA,EAEQ,cAAcpvF,GAAWC,GAAW;AACxC,IAAAsqF,GAAU,QAAQ;AAAA,MACd,GAAGA,GAAU;AAAA,MACb,YAAYvqF;AAAA,MACZ,YAAYC;AAAA,IAAA;AAAA,EAEpB;AAAA,EAEO,UAAU;AACb,SAAK,OAAO,QAAQ,CAAA4tF,MAASA,EAAA,CAAO,GACpC,KAAK,SAAS,CAAA;AAAA,EAClB;AACJ;ACnIO,SAASwB,GAAoB/0F,GAA4C;AAC9E,MAAI,CAACA,KAAS,OAAOA,KAAU,SAAU,QAAO;AAChD,QAAMg1F,IAAYh1F;AAClB,SAAO,OAAOg1F,EAAU,UAAW,YAC9B,OAAOA,EAAU,OAAQ,YACzB,OAAOA,EAAU,SAAU;AAClC;AAEA,SAASC,GAAoBC,GAAoC;AAC/D,SAAI,MAAM,QAAQA,EAAM,WAAW,KAAKA,EAAM,YAAY,SAAS,IAC1DA,EAAM,cAGX,OAAOA,EAAM,cAAe,WAC1BA,EAAM,SAAS,WAAiB,CAACA,EAAM,YAAYA,EAAM,aAAa,CAAC,IACpE,CAACA,EAAM,UAAU,IAGnB,CAAA;AACT;AAEA,SAASC,GAAmBC,GAA4D;AACtF,SAAOA,MAAmB,QAAQ,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,OAAO;AACxE;AAEO,SAASC,GAAuBC,GAAuD;AAC5F,QAAMC,IAAuC,CAAA;AAC7C,MAAIC,IAAqB;AAEzB,SAAAF,EAAO,QAAQ,CAACJ,GAAOO,MAAe;AACpC,UAAMn4D,IAAO43D,EAAM,QAAQ,UACrBQ,IAAUR,EAAM,MAAM,SAASO,CAAU,IACzCL,IAAiBF,EAAM,kBAAkB,OACzCS,IAAcV,GAAoBC,CAAK;AAE7C,QAAI53D,MAAS,UAAU;AACrB,YAAMs4D,IAAgBD,EAAY,UAAU,IAAIA,EAAY,MAAM,GAAG,CAAC,IAAI,CAACH,GAAoBA,IAAqB,CAAC,GAC/GK,IAAYV,GAAmBC,CAAc;AAEnD,MAAAQ,EAAc,QAAQ,CAACh0E,GAAYk0E,MAAgB;AACjD,QAAAP,EAAW,KAAK;AAAA,UACd,OAAOA,EAAW;AAAA,UAClB,SAAAG;AAAA,UACA,YAAA9zE;AAAAA,UACA,UAAUi0E,EAAUC,CAAW,KAAK;AAAA,UACpC,QAAQZ,EAAM;AAAA,UACd,KAAKA,EAAM;AAAA,UACX,OAAOA,EAAM;AAAA,QAAA,CACd;AAAA,MACH,CAAC,GAEDM,IAAqBI,EAAcA,EAAc,SAAS,CAAC,IAAI;AAC/D;AAAA,IACF;AAEA,UAAMh0E,IAAa+zE,EAAY,CAAC,KAAKH;AACrC,IAAAD,EAAW,KAAK;AAAA,MACd,OAAOA,EAAW;AAAA,MAClB,SAAAG;AAAA,MACA,YAAA9zE;AAAA,MACA,UAAU;AAAA,MACV,QAAQszE,EAAM;AAAA,MACd,KAAKA,EAAM;AAAA,MACX,OAAOA,EAAM;AAAA,IAAA,CACd,GACDM,IAAqB5zE,IAAa;AAAA,EACpC,CAAC,GAEM2zE;AACT;;ACpFA,IAAIQ,KAAgB;AAEb,SAASC,KAAsB;AACpC,MAAI,OAAO,WAAa,OAAeD,GAAe;AAEtD,QAAME,IAAU;AAChB,MAAI,SAAS,eAAeA,CAAO,GAAG;AACpC,IAAAF,KAAgB;AAChB;AAAA,EACF;AAEA,QAAMG,IAAU,SAAS,cAAc,OAAO;AAC9C,EAAAA,EAAQ,KAAKD,GACbC,EAAQ,cAAcC,IACtB,SAAS,KAAK,YAAYD,CAAO,GACjCH,KAAgB;AAClB;AAEO,SAASK,GAAwBljF,GAAwB49E,GAA4B;AAC1F,EAAA59E,EAAU,UAAU,IAAI,cAAc,GACtCA,EAAU,UAAU,OAAO,kBAAkB,eAAe,GAExD49E,EAAO,UAAU,WAAS59E,EAAU,UAAU,IAAI,gBAAgB,GAClE49E,EAAO,UAAU,UAAQ59E,EAAU,UAAU,IAAI,eAAe,GAEhE49E,EAAO,gBACT59E,EAAU,MAAM,YAAY,iBAAiB49E,EAAO,YAAY;AAGlE,QAAMuF,IAAgBvF,EAAO,gBAAgB,CAAA;AAC7C,SAAO,QAAQuF,CAAa,EAAE,QAAQ,CAAC,CAACj2F,GAAMJ,CAAK,MAAM;AACvD,UAAMs2F,IAAel2F,EAAK,WAAW,IAAI,IAAIA,IAAO,KAAKA,CAAI;AAC7D,IAAA8S,EAAU,MAAM,YAAYojF,GAAct2F,CAAK;AAAA,EACjD,CAAC;AACH;AC1BA,MAAMu2F,KAAe,IAAA,IAAA,wh7/EAAA,YAAA,GAAA,EAA4D;AACjFC,GAA6B,YAAYD;AA+ClC,MAAME,KAAN,MAAMA,GAAe;AAAA,EAaxB,YAAoBC,GAAgCr3F,IAAiC,IAAI;AAXjF,IAAAkL,EAAA,mBAAgC;AAChC,IAAAA,EAAA;AAGA;AAAA,IAAAA,EAAA,yBAA0C;AAC1C,IAAAA,EAAA,uBAAsC;AACtC,IAAAA,EAAA,4BAAgD;AAEhD,IAAAA,EAAA,gBAAc;AACd,IAAAA,EAAA,mBAAoF,CAAA;AAExE,SAAA,WAAAmsF,GAChB,KAAK,UAAU;AAAA,MACX,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,GAAGr3F;AAAA,IAAA;AAAA,EAEX;AAAA,EAEA,MAAa,KAAKs3F,GAAgBC,GAAmD;AAOjF,QANI,OAAO,KAAK,YAAa,WACzB,KAAK,YAAY,SAAS,cAAc,KAAK,QAAQ,IAErD,KAAK,YAAY,KAAK,UAGtB,CAAC,KAAK,UAAW;AAErB,SAAK,QAAQ,EAAI;AAEjB,QAAIC,IAA0C,CAAA,GAC1ClnF,IAAW,EAAE,GAAG8mF,GAAe,sBAAA;AAEnC,QAAIG,KAAaA,EAAU,SAAS,GAAG;AACnC,YAAME,IAAeF,EAAU,OAAO7B,EAAmB;AACzD,MAAA8B,IAAgBxB,GAAuByB,CAAY;AAGnD,YAAMC,IAAgBF,EAAc,CAAC;AACrC,UAAIE,GAAe;AACf,cAAM5+E,IAAO,MAAM,KAAK,cAAc4+E,EAAc,OAAOA,EAAc,MAAM;AAC/E,YAAI5+E,GAAM;AAEN,gBAAM6+E,KADcD,EAAc,aAAa,SAAS5+E,EAAK,QAAQ,IAAIA,EAAK,SAC5CA,EAAK,QACjC8+E,IAAgB;AACtB,UAAAtnF,IAAWqnF,KAAe,IACpB,EAAE,OAAO,KAAK,MAAMC,IAAgBD,CAAW,GAAG,QAAQC,MAC1D,EAAE,OAAOA,GAAe,QAAQ,KAAK,MAAMA,IAAgBD,CAAW,EAAA;AAAA,QAChF;AAAA,MACJ;AAAA,IACJ,WAAWL;AACP,UAAI;AACA,cAAMzhC,IAAcgiC,GAAqBP,CAAM;AAC/C,aAAK,SAAS,MAAMzhC,EAAY;AAEhC,iBAAS9zD,IAAI,GAAGA,KAAK,KAAK,OAAO,UAAUA;AACvC,UAAAy1F,EAAc,KAAK;AAAA,YACf,OAAOz1F,IAAI;AAAA,YACX,SAAS,YAAYA,CAAC;AAAA,YACtB,YAAYA;AAAA,YACZ,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,KAAK;AAAA,YACL,OAAO;AAAA,UAAA,CACV;AAIL,cAAM+1F,KADY,MAAM,KAAK,OAAO,QAAQ,CAAC,GACxB,YAAY,EAAE,OAAO,GAAK,GACzCH,IAAcG,EAAG,QAAQA,EAAG,QAE5BF,IAAgB;AACtB,QAAAtnF,IAAWqnF,KAAe,IACpB,EAAE,OAAO,KAAK,MAAMC,IAAgBD,CAAW,GAAG,QAAQC,MAC1D,EAAE,OAAOA,GAAe,QAAQ,KAAK,MAAMA,IAAgBD,CAAW,EAAA;AAAA,MAChF,SAASrpF,GAAG;AACR,gBAAQ,MAAM,oBAAoBA,CAAC;AACnC;AAAA,MACJ;AAGJ,QAAI,CAACkpF,EAAc,OAAQ;AAG3B,IAAAtG,GAAU,KAAK,SAASsG,EAAc,QAAQA,GAAe,CAAC,CAACF,CAAM,GAGrEX,GAAA,GACAI,GAAwB,KAAK,WAAW,KAAK,OAAO,GACpD,KAAK,UAAU,YAAY;AAI3B,QAAIgB,GACAC,GACAC;AAEJ,UAAMC,IAAqB,EAAE,SAAS,KAAA,GAChCC,IAAwB,EAAE,SAAS,KAAA,GAGnCC,IAAUhG,GAAI;AAAA,MAChB,oBAAA8F;AAAA,MACA,uBAAAC;AAAA,MACA,gBAAgB,CAACptF,MAAOgtF,IAAgBhtF;AAAA,MACxC,cAAc,CAACA,MAAOitF,IAAcjtF;AAAA,MACpC,kBAAkB,CAACA,MAAOktF,IAAkBltF;AAAA,MAC5C,WAAW,KAAK,QAAQ;AAAA,MACxB,YAAY,MAAM;AACd,QAAI,KAAK,QAAQ,aAAY,KAAK,QAAQ,WAAWusF,CAAM,IACtD,OAAO,KAAKA,GAAQ,QAAQ;AAAA,MACrC;AAAA,IAAA,CACH;AAED,SAAK,UAAU,YAAYc,CAA0B,GAGrD,KAAK,gBAAgB,IAAIjE,GAAc7jF,CAAQ,GAC/C,KAAK,cAAc,mBAAmB,MAAM;AACxC,MAAI,KAAK,mBACL,KAAK,gBAAgB,OAAA;AAAA,IAE7B,GACA,KAAK,cAAc,KAAKynF,GAAgBC,CAAY,GAEpD,KAAK,kBAAkB,IAAI/E,GAAgBgF,GAAkB,KAAK,OAAO,GACzEC,EAAmB,UAAU,KAAK,iBAGlC,WAAW,MAAM;AACb,WAAK,gBAAiB,KAAK5nF,EAAS,OAAOA,EAAS,MAAM,GAE1D,KAAK,qBAAqB,IAAIwkF,GAAmBiD,GAAgB,KAAK,eAAgB,GACtF,KAAK,mBAAmB,KAAA,GACxBI,EAAsB,UAAU,KAAK,oBAErC,KAAK,KAAK,QAAQ,EAAE,YAAYX,EAAc,QAAQ;AAAA,IAC1D,GAAG,EAAE;AAAA,EACT;AAAA,EAEQ,cAAcn/D,GAAgE;AAClF,WAAO,IAAI,QAAQ,CAAApvB,MAAW;AAC1B,YAAMyP,IAAQ,IAAI,MAAA;AAClB,MAAAA,EAAM,SAAS,MAAMzP,EAAQ,EAAE,OAAOyP,EAAM,gBAAgBA,EAAM,OAAO,QAAQA,EAAM,iBAAiBA,EAAM,QAAQ,GACtHA,EAAM,UAAU,MAAMzP,EAAQ,IAAI,GAClCyP,EAAM,MAAM2f;AAAA,IAChB,CAAC;AAAA,EACL;AAAA,EAEO,SAASggE,GAAmB;AAC/B,IAAAxI,GAAY,QAAQwI;AAAA,EACxB;AAAA,EAEO,WAAW;AACd,IAAI,KAAK,mBAAiB,KAAK,gBAAgB,eAAA;AAAA,EACnD;AAAA,EAEO,WAAW;AACd,IAAI,KAAK,mBAAiB,KAAK,gBAAgB,eAAA;AAAA,EACnD;AAAA,EAEO,cAAcC,GAAmB;AACpC,IAAAvI,GAAa,QAAQuI;AAAA,EACzB;AAAA,EAEO,cAAct4F,GAAyC;AAC1D,SAAK,UAAU,EAAE,GAAG,KAAK,SAAS,GAAGA,EAAA,GACjCA,EAAQ,UAAU,WAAWmwF,GAAU,QAAQnwF,EAAQ,QACvDA,EAAQ,iBAAiB,WAAWswF,GAAa,QAAQtwF,EAAQ,eACjEA,EAAQ,eAAe,WAAWgwF,GAAW,QAAQhwF,EAAQ,aAC7DA,EAAQ,kBAAkB,WAAWowF,GAAc,QAAQpwF,EAAQ,gBACnEA,EAAQ,eAAe,WAAWuwF,GAAW,QAAQvwF,EAAQ,aAC7DA,EAAQ,iBAAiB,WAAW2wF,GAAa,QAAQ3wF,EAAQ,eACjEA,EAAQ,eAAe,WAAW+vF,GAAa,QAAQ/vF,EAAQ,aAC/DA,EAAQ,aAAa,WAAWywF,GAAc,QAAQzwF,EAAQ,WAC9DA,EAAQ,qBAAqB,WAAW0wF,GAAiB,QAAQ1wF,EAAQ,mBAEzE,KAAK,aACL+2F,GAAwB,KAAK,WAAW,KAAK,OAAO;AAAA,EAE5D;AAAA,EAEO,SAASQ,GAAkDD,GAAiB;AAE/E,SAAK,KAAKA,KAAU,IAAIC,CAAS;AAAA,EACrC;AAAA,EAEO,QAAQgB,IAAc,IAAM;AAC/B,IAAI,KAAK,mBAAiB,KAAK,gBAAgB,QAAA,GAC3C,KAAK,iBAAe,KAAK,cAAc,QAAA,GACvC,KAAK,sBAAoB,KAAK,mBAAmB,QAAA,GAErD,KAAK,kBAAkB,MACvB,KAAK,gBAAgB,MACrB,KAAK,qBAAqB,MAC1B,KAAK,SAAS,MAEVA,KAAe,KAAK,cACpB,KAAK,UAAU,YAAY,KAG/B,KAAK,KAAK,WAAW,MAAS;AAAA,EAClC;AAAA,EAEO,GAAsCv4B,GAAct+B,GAAkC;AACzF,UAAM0pD,IAAY,KAAK,UAAUprB,CAAS,yBAAS,IAAA;AACnD,WAAAorB,EAAU,IAAI1pD,CAAkC,GAChD,KAAK,UAAUs+B,CAAS,IAAIorB,GACrB,MAAM,KAAK,IAAIprB,GAAWt+B,CAAO;AAAA,EAC5C;AAAA,EAEO,IAAuCs+B,GAAct+B,GAAkC;AjBlSlG,QAAA/+B;AiBmSQ,KAAAA,IAAA,KAAK,UAAUq9D,CAAS,MAAxB,QAAAr9D,EAA2B,OAAO++B;AAAA,EACtC;AAAA,EAEQ,KAAwCs+B,GAAcw4B,GAAoC;AjBtStG,QAAA71F;AiBuSQ,KAAAA,IAAA,KAAK,UAAUq9D,CAAS,MAAxB,QAAAr9D,EAA2B,QAAQ,CAAC69B,MAAa;AAC5C,MAAAA,EAAqCg4D,CAAO;AAAA,IACjD;AAAA,EACJ;AACJ;AAjOIttF,EADSksF,IACe,yBAAwB,EAAE,OAAO,KAAK,QAAQ,IAAA;AADnE,IAAMqB,KAANrB;AAoOP,MAAMsB,KAAc,YACdC,KAAoBD,GAAY,kBAAkB,CAAA;AACxDC,GAAkB,iBAAiBF;AACnCC,GAAY,iBAAiBC;","x_google_ignoreList":[0,1,2,11]}
|
|
1
|
+
{"version":3,"file":"flipbook-engine.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|