mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-14 13:22:37 +00:00
* Improve mobile terminal typing and selection * Address mobile terminal review feedback * Remove dead native terminal input branch * Replay bracketed paste in terminal preamble * Stop per-key terminal resize claims * Stabilize terminal resize browser test * Use tracked terminal mode for native paste * Restore terminal toolbar focus handling * Adapt native terminal to active visibility state * Stabilize native mobile terminal interactions * Add native terminal fallback boundary * test(app): expect explicit terminal resize reclaim * fix(app): stabilize terminal buffer coordinates * fix(app): restrict terminal resize ownership * fix(terminal): gate restored input modes * fix(app): recover stalled terminal WebViews * chore(app): remove obsolete terminal harnesses * fix(app): make terminal resize claims explicit * test(app): stabilize native terminal device flows * test(app): track absolute scrollback coordinates * fix(app): isolate terminal WebView streams * fix(terminal): arbitrate size ownership across clients The daemon now distinguishes explicit ownership claims from passive geometry updates. This keeps the active client authoritative while allowing its split, viewport, and keyboard changes to resize the PTY without idle clients stealing it. * test(server): make worker resize assertion portable Query the worker's authoritative terminal snapshot instead of invoking a Unix-only shell command, so the resize regression exercises the same boundary on Windows and Unix.
6 lines
1.2 MiB
Plaintext
6 lines
1.2 MiB
Plaintext
// Generated by packages/app/scripts/build-terminal-webview-html.mjs.
|
|
// Do not edit by hand.
|
|
|
|
export const terminalEmulatorWebViewHtml =
|
|
'<!doctype html>\n<html>\n <head>\n <meta charset="utf-8" />\n <meta\n name="viewport"\n content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"\n />\n </head>\n <body>\n <script>"use strict";\n(() => {\n var __require = /* @__PURE__ */ ((x5) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x5, {\n get: (a2, b4) => (typeof require !== "undefined" ? require : a2)[b4]\n }) : x5)(function(x5) {\n if (typeof require !== "undefined") return require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + x5 + \'" is not supported\');\n });\n\n // node_modules/@xterm/xterm/css/xterm.css\n var xterm_default = `/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * https://github.com/chjj/term.js\n * @license MIT\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the "Software"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * Originally forked from (with the author\'s permission):\n * Fabrice Bellard\'s javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n */\n\n/**\n * Default styles for xterm.js\n */\n\n.xterm {\n cursor: text;\n position: relative;\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.xterm.focus,\n.xterm:focus {\n outline: none;\n}\n\n.xterm .xterm-helpers {\n position: absolute;\n top: 0;\n /**\n * The z-index of the helpers must be higher than the canvases in order for\n * IMEs to appear on top.\n */\n z-index: 5;\n}\n\n.xterm .xterm-helper-textarea {\n padding: 0;\n border: 0;\n margin: 0;\n /* Move textarea out of the screen to the far left, so that the cursor is not visible */\n position: absolute;\n opacity: 0;\n left: -9999em;\n top: 0;\n width: 0;\n height: 0;\n z-index: -5;\n /** Prevent wrapping so the IME appears against the textarea at the correct position */\n white-space: nowrap;\n overflow: hidden;\n resize: none;\n}\n\n.xterm .composition-view {\n /* TODO: Composition position got messed up somewhere */\n background: #000;\n color: #FFF;\n display: none;\n position: absolute;\n white-space: nowrap;\n z-index: 1;\n}\n\n.xterm .composition-view.active {\n display: block;\n}\n\n.xterm .xterm-viewport {\n overflow-y: scroll;\n cursor: default;\n position: absolute;\n right: 0;\n left: 0;\n top: 0;\n bottom: 0;\n}\n\n.xterm:not(.allow-transparency) .xterm-viewport {\n /* On OS X this is required in order for the scroll bar to appear fully opaque */\n background-color: #000;\n}\n\n.xterm .xterm-screen {\n position: relative;\n}\n\n.xterm .xterm-screen canvas {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.xterm.enable-mouse-events {\n /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */\n cursor: default;\n}\n\n.xterm.xterm-cursor-pointer,\n.xterm .xterm-cursor-pointer {\n cursor: pointer;\n}\n\n.xterm.column-select.focus {\n /* Column selection mode */\n cursor: crosshair;\n}\n\n.xterm .xterm-accessibility:not(.debug),\n.xterm .xterm-message {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n color: transparent;\n pointer-events: none;\n}\n\n.xterm .xterm-accessibility-tree:not(.debug) *::selection {\n color: transparent;\n}\n\n.xterm .xterm-accessibility-tree {\n font-family: monospace;\n user-select: text;\n white-space: pre;\n}\n\n.xterm .xterm-accessibility-tree > div {\n transform-origin: left;\n width: fit-content;\n}\n\n.xterm .live-region {\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.xterm-dim {\n /* Dim should not apply to background, so the opacity of the foreground color is applied\n * explicitly in the generated class and reset to 1 here */\n opacity: 1 !important;\n}\n\n.xterm-underline-1 { text-decoration: underline; }\n.xterm-underline-2 { text-decoration: double underline; }\n.xterm-underline-3 { text-decoration: wavy underline; }\n.xterm-underline-4 { text-decoration: dotted underline; }\n.xterm-underline-5 { text-decoration: dashed underline; }\n\n.xterm-overline {\n text-decoration: overline;\n}\n\n.xterm-overline.xterm-underline-1 { text-decoration: overline underline; }\n.xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }\n.xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }\n.xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }\n.xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }\n\n.xterm-strikethrough {\n text-decoration: line-through;\n}\n\n.xterm-screen .xterm-decoration-container .xterm-decoration {\n\tz-index: 6;\n\tposition: absolute;\n}\n\n.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {\n\tz-index: 7;\n}\n\n.xterm-decoration-overview-ruler {\n z-index: 8;\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\n}\n\n.xterm-decoration-top {\n z-index: 2;\n position: relative;\n}\n\n\n\n/* Derived from vs/base/browser/ui/scrollbar/media/scrollbar.css */\n\n/* xterm.js customization: Override xterm\'s cursor style */\n.xterm .xterm-scrollable-element > .xterm-scrollbar {\n cursor: default;\n}\n\n/* Arrows */\n\n.xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-scra {\n\tcursor: pointer;\n background-color: var(--vscode-scrollbarSliderBackground, rgba(100, 100, 100, 0.4));\n mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 11 11\'><path d=\'M2.5 8.5 L5.5 2.5 L8.5 8.5 Z\' fill=\'black\'/></svg>");\n -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 11 11\'><path d=\'M2.5 8.5 L5.5 2.5 L8.5 8.5 Z\' fill=\'black\'/></svg>");\n mask-repeat: no-repeat;\n -webkit-mask-repeat: no-repeat;\n mask-position: center center;\n -webkit-mask-position: center center;\n mask-size: 100% 100%;\n -webkit-mask-size: 100% 100%;\n}\n\n.xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-scra.xterm-arrow-down {\n transform: rotate(180deg);\n}\n\n.xterm .xterm-scrollable-element > .xterm-visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n\t/* In front of peek view */\n\tz-index: 11;\n}\n.xterm .xterm-scrollable-element > .xterm-invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.xterm .xterm-scrollable-element > .xterm-invisible.xterm-fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.xterm .xterm-scrollable-element > .xterm-shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset;\n}\n.xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset;\n}\n.xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.xterm .xterm-scrollable-element > .xterm-shadow.xterm-shadow-top.xterm-shadow-left {\n\tbox-shadow: var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset;\n}\n`;\n\n // node_modules/@xterm/addon-clipboard/lib/addon-clipboard.mjs\n var U = "3.7.8";\n var $ = U;\n var f = typeof Buffer == "function";\n var _ = typeof TextDecoder == "function" ? new TextDecoder() : void 0;\n var C = typeof TextEncoder == "function" ? new TextEncoder() : void 0;\n var N = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";\n var c = Array.prototype.slice.call(N);\n var d = ((e) => {\n let t = {};\n return e.forEach((r, o2) => t[r] = o2), t;\n })(c);\n var k = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\n var n = String.fromCharCode.bind(String);\n var B = typeof Uint8Array.from == "function" ? Uint8Array.from.bind(Uint8Array) : (e) => new Uint8Array(Array.prototype.slice.call(e, 0));\n var S = (e) => e.replace(/=/g, "").replace(/[+\\/]/g, (t) => t == "+" ? "-" : "_");\n var I = (e) => e.replace(/[^A-Za-z0-9\\+\\/]/g, "");\n var F = (e) => {\n let t, r, o2, i5, s4 = "", l4 = e.length % 3;\n for (let a2 = 0; a2 < e.length; ) {\n if ((r = e.charCodeAt(a2++)) > 255 || (o2 = e.charCodeAt(a2++)) > 255 || (i5 = e.charCodeAt(a2++)) > 255) throw new TypeError("invalid character found");\n t = r << 16 | o2 << 8 | i5, s4 += c[t >> 18 & 63] + c[t >> 12 & 63] + c[t >> 6 & 63] + c[t & 63];\n }\n return l4 ? s4.slice(0, l4 - 3) + "===".substring(l4) : s4;\n };\n var m = typeof btoa == "function" ? (e) => btoa(e) : f ? (e) => Buffer.from(e, "binary").toString("base64") : F;\n var b = f ? (e) => Buffer.from(e).toString("base64") : (e) => {\n let r = [];\n for (let o2 = 0, i5 = e.length; o2 < i5; o2 += 4096) r.push(n.apply(null, e.subarray(o2, o2 + 4096)));\n return m(r.join(""));\n };\n var x = (e, t = false) => t ? S(b(e)) : b(e);\n var H = (e) => {\n if (e.length < 2) {\n var t = e.charCodeAt(0);\n return t < 128 ? e : t < 2048 ? n(192 | t >>> 6) + n(128 | t & 63) : n(224 | t >>> 12 & 15) + n(128 | t >>> 6 & 63) + n(128 | t & 63);\n } else {\n var t = 65536 + (e.charCodeAt(0) - 55296) * 1024 + (e.charCodeAt(1) - 56320);\n return n(240 | t >>> 18 & 7) + n(128 | t >>> 12 & 63) + n(128 | t >>> 6 & 63) + n(128 | t & 63);\n }\n };\n var J = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n var P = (e) => e.replace(J, H);\n var T = f ? (e) => Buffer.from(e, "utf8").toString("base64") : C ? (e) => b(C.encode(e)) : (e) => m(P(e));\n var p = (e, t = false) => t ? S(T(e)) : T(e);\n var v = (e) => p(e, true);\n var q = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\n var G = (e) => {\n switch (e.length) {\n case 4:\n var t = (7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3), r = t - 65536;\n return n((r >>> 10) + 55296) + n((r & 1023) + 56320);\n case 3:\n return n((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2));\n default:\n return n((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1));\n }\n };\n var D = (e) => e.replace(q, G);\n var w = (e) => {\n if (e = e.replace(/\\s+/g, ""), !k.test(e)) throw new TypeError("malformed base64.");\n e += "==".slice(2 - (e.length & 3));\n let t, r, o2, i5 = [];\n for (let s4 = 0; s4 < e.length; ) t = d[e.charAt(s4++)] << 18 | d[e.charAt(s4++)] << 12 | (r = d[e.charAt(s4++)]) << 6 | (o2 = d[e.charAt(s4++)]), r === 64 ? i5.push(n(t >> 16 & 255)) : o2 === 64 ? i5.push(n(t >> 16 & 255, t >> 8 & 255)) : i5.push(n(t >> 16 & 255, t >> 8 & 255, t & 255));\n return i5.join("");\n };\n var y = typeof atob == "function" ? (e) => atob(I(e)) : f ? (e) => Buffer.from(e, "base64").toString("binary") : w;\n var R = f ? (e) => B(Buffer.from(e, "base64")) : (e) => B(y(e).split("").map((t) => t.charCodeAt(0)));\n var E = (e) => R(O(e));\n var K = f ? (e) => Buffer.from(e, "base64").toString("utf8") : _ ? (e) => _.decode(R(e)) : (e) => D(y(e));\n var O = (e) => I(e.replace(/[-_]/g, (t) => t == "-" ? "+" : "/"));\n var h = (e) => K(O(e));\n var M = (e) => {\n if (typeof e != "string") return false;\n let t = e.replace(/\\s+/g, "").replace(/={0,2}$/, "");\n return !/[^\\s0-9a-zA-Z\\+/]/.test(t) || !/[^\\s0-9a-zA-Z\\-_]/.test(t);\n };\n var z = (e) => ({ value: e, enumerable: false, writable: true, configurable: true });\n var Z = function() {\n let e = (t, r) => Object.defineProperty(String.prototype, t, z(r));\n e("fromBase64", function() {\n return h(this);\n }), e("toBase64", function(t) {\n return p(this, t);\n }), e("toBase64URI", function() {\n return p(this, true);\n }), e("toBase64URL", function() {\n return p(this, true);\n }), e("toUint8Array", function() {\n return E(this);\n });\n };\n var V = function() {\n let e = (t, r) => Object.defineProperty(Uint8Array.prototype, t, z(r));\n e("toBase64", function(t) {\n return x(this, t);\n }), e("toBase64URI", function() {\n return x(this, true);\n }), e("toBase64URL", function() {\n return x(this, true);\n });\n };\n var Q = () => {\n Z(), V();\n };\n var u = { version: U, VERSION: $, atob: y, atobPolyfill: w, btoa: m, btoaPolyfill: F, fromBase64: h, toBase64: p, encode: p, encodeURI: v, encodeURL: v, utob: P, btou: D, decode: h, isValid: M, fromUint8Array: x, toUint8Array: E, extendString: Z, extendUint8Array: V, extendBuiltins: Q };\n var j = class {\n constructor(t = new A(), r = new g()) {\n this._base64 = t;\n this._provider = r;\n }\n activate(t) {\n this._terminal = t, this._disposable = t.parser.registerOscHandler(52, (r) => this._setOrReportClipboard(r));\n }\n dispose() {\n return this._disposable?.dispose();\n }\n _readText(t, r) {\n let o2 = this._base64.encodeText(r);\n this._terminal?.input(`\\x1B]52;${t};${o2}\\x07`, false);\n }\n _setOrReportClipboard(t) {\n let r = t.split(";");\n if (r.length < 2) return true;\n let o2 = r[0], i5 = r[1];\n if (i5 === "?") {\n let a2 = this._provider.readText(o2);\n return a2 instanceof Promise ? a2.then((L6) => (this._readText(o2, L6), true)) : (this._readText(o2, a2), true);\n }\n let s4 = "";\n try {\n s4 = this._base64.decodeText(i5);\n } catch {\n }\n let l4 = this._provider.writeText(o2, s4);\n return l4 instanceof Promise ? l4.then(() => true) : true;\n }\n };\n var g = class {\n async readText(t) {\n return t !== "c" ? Promise.resolve("") : navigator.clipboard.readText();\n }\n async writeText(t, r) {\n return t !== "c" ? Promise.resolve() : navigator.clipboard.writeText(r);\n }\n };\n var A = class {\n encodeText(t) {\n return u.encode(t);\n }\n decodeText(t) {\n let r = u.decode(t);\n return !u.isValid(t) || u.encode(r) !== t ? "" : r;\n }\n };\n\n // node_modules/@xterm/addon-fit/lib/addon-fit.mjs\n var f2 = 2;\n var g2 = 1;\n function _2(t) {\n return t?.ownerDocument?.defaultView ? t.ownerDocument.defaultView : window;\n }\n function o(t) {\n return _2(t).getComputedStyle(t, null);\n }\n var l = class {\n activate(e) {\n this._terminal = e;\n }\n dispose() {\n }\n fit() {\n let e = this.proposeDimensions();\n !e || !this._terminal || isNaN(e.cols) || isNaN(e.rows) || this._terminal.resize(e.cols, e.rows);\n }\n proposeDimensions() {\n if (!this._terminal || !this._terminal.element || !this._terminal.element.parentElement) return;\n let e = this._terminal.dimensions;\n if (!e || e.css.cell.width === 0 || e.css.cell.height === 0) return;\n let s4 = this._terminal.options.scrollbar?.showScrollbar ?? true, a2 = this._terminal.options.scrollback === 0 || !s4 ? 0 : this._terminal.options.scrollbar?.width ?? 14, r = o(this._terminal.element.parentElement), m4 = parseInt(r.getPropertyValue("height")), d3 = Math.max(0, parseInt(r.getPropertyValue("width"))), n11 = o(this._terminal.element), i5 = { top: parseInt(n11.getPropertyValue("padding-top")), bottom: parseInt(n11.getPropertyValue("padding-bottom")), right: parseInt(n11.getPropertyValue("padding-right")), left: parseInt(n11.getPropertyValue("padding-left")) }, c2 = i5.top + i5.bottom, p3 = i5.right + i5.left, h3 = m4 - c2, u3 = d3 - p3 - a2;\n return { cols: Math.max(f2, Math.floor(u3 / e.css.cell.width)), rows: Math.max(g2, Math.floor(h3 / e.css.cell.height)) };\n }\n };\n\n // node_modules/@xterm/addon-image/lib/addon-image.mjs\n var it = Object.create;\n var Te = Object.defineProperty;\n var At = Object.getOwnPropertyDescriptor;\n var rt = Object.getOwnPropertyNames;\n var st = Object.getPrototypeOf;\n var nt = Object.prototype.hasOwnProperty;\n var L = (s4, e) => () => (e || s4((e = { exports: {} }).exports, e), e.exports);\n var at = (s4, e, t, i5) => {\n if (e && typeof e == "object" || typeof e == "function") for (let A4 of rt(e)) !nt.call(s4, A4) && A4 !== t && Te(s4, A4, { get: () => e[A4], enumerable: !(i5 = At(e, A4)) || i5.enumerable });\n return s4;\n };\n var M2 = (s4, e, t) => (t = s4 != null ? it(st(s4)) : {}, at(e || !s4 || !s4.__esModule ? Te(t, "default", { value: s4, enumerable: true }) : t, s4));\n var X = L((m4) => {\n "use strict";\n Object.defineProperty(m4, "__esModule", { value: true });\n m4.DEFAULT_FOREGROUND = m4.DEFAULT_BACKGROUND = m4.PALETTE_ANSI_256 = m4.PALETTE_VT340_GREY = m4.PALETTE_VT340_COLOR = m4.normalizeHLS = m4.normalizeRGB = m4.nearestColorIndex = m4.fromRGBA8888 = m4.toRGBA8888 = m4.alpha = m4.blue = m4.green = m4.red = m4.BIG_ENDIAN = void 0;\n m4.BIG_ENDIAN = new Uint8Array(new Uint32Array([4278190080]).buffer)[0] === 255;\n m4.BIG_ENDIAN && console.warn("BE platform detected. This version of node-sixel works only on LE properly.");\n function ve3(s4) {\n return s4 & 255;\n }\n m4.red = ve3;\n function Le3(s4) {\n return s4 >>> 8 & 255;\n }\n m4.green = Le3;\n function Me3(s4) {\n return s4 >>> 16 & 255;\n }\n m4.blue = Me3;\n function gt3(s4) {\n return s4 >>> 24 & 255;\n }\n m4.alpha = gt3;\n function B5(s4, e, t, i5 = 255) {\n return ((i5 & 255) << 24 | (t & 255) << 16 | (e & 255) << 8 | s4 & 255) >>> 0;\n }\n m4.toRGBA8888 = B5;\n function ht3(s4) {\n return [s4 & 255, s4 >> 8 & 255, s4 >> 16 & 255, s4 >>> 24];\n }\n m4.fromRGBA8888 = ht3;\n function dt3(s4, e) {\n let t = ve3(s4), i5 = Le3(s4), A4 = Me3(s4), r = Number.MAX_SAFE_INTEGER, n11 = -1;\n for (let a2 = 0; a2 < e.length; ++a2) {\n let o2 = t - e[a2][0], h3 = i5 - e[a2][1], g6 = A4 - e[a2][2], d3 = o2 * o2 + h3 * h3 + g6 * g6;\n if (!d3) return a2;\n d3 < r && (r = d3, n11 = a2);\n }\n return n11;\n }\n m4.nearestColorIndex = dt3;\n function Ie3(s4, e, t) {\n return Math.max(s4, Math.min(t, e));\n }\n function le3(s4, e, t) {\n return t < 0 && (t += 1), t > 1 && (t -= 1), t * 6 < 1 ? e + (s4 - e) * 6 * t : t * 2 < 1 ? s4 : t * 3 < 2 ? e + (s4 - e) * (4 - t * 6) : e;\n }\n function It3(s4, e, t) {\n if (!t) {\n let r = Math.round(e * 255);\n return B5(r, r, r);\n }\n let i5 = e < 0.5 ? e * (1 + t) : e + t - e * t, A4 = 2 * e - i5;\n return B5(Ie3(0, 255, Math.round(le3(i5, A4, s4 + 1 / 3) * 255)), Ie3(0, 255, Math.round(le3(i5, A4, s4) * 255)), Ie3(0, 255, Math.round(le3(i5, A4, s4 - 1 / 3) * 255)));\n }\n function c2(s4, e, t) {\n return (4278190080 | Math.round(t / 100 * 255) << 16 | Math.round(e / 100 * 255) << 8 | Math.round(s4 / 100 * 255)) >>> 0;\n }\n m4.normalizeRGB = c2;\n function lt4(s4, e, t) {\n return It3((s4 + 240 % 360) / 360, e / 100, t / 100);\n }\n m4.normalizeHLS = lt4;\n m4.PALETTE_VT340_COLOR = new Uint32Array([c2(0, 0, 0), c2(20, 20, 80), c2(80, 13, 13), c2(20, 80, 20), c2(80, 20, 80), c2(20, 80, 80), c2(80, 80, 20), c2(53, 53, 53), c2(26, 26, 26), c2(33, 33, 60), c2(60, 26, 26), c2(33, 60, 33), c2(60, 33, 60), c2(33, 60, 60), c2(60, 60, 33), c2(80, 80, 80)]);\n m4.PALETTE_VT340_GREY = new Uint32Array([c2(0, 0, 0), c2(13, 13, 13), c2(26, 26, 26), c2(40, 40, 40), c2(6, 6, 6), c2(20, 20, 20), c2(33, 33, 33), c2(46, 46, 46), c2(0, 0, 0), c2(13, 13, 13), c2(26, 26, 26), c2(40, 40, 40), c2(6, 6, 6), c2(20, 20, 20), c2(33, 33, 33), c2(46, 46, 46)]);\n m4.PALETTE_ANSI_256 = (() => {\n let s4 = [B5(0, 0, 0), B5(205, 0, 0), B5(0, 205, 0), B5(205, 205, 0), B5(0, 0, 238), B5(205, 0, 205), B5(0, 250, 205), B5(229, 229, 229), B5(127, 127, 127), B5(255, 0, 0), B5(0, 255, 0), B5(255, 255, 0), B5(92, 92, 255), B5(255, 0, 255), B5(0, 255, 255), B5(255, 255, 255)], e = [0, 95, 135, 175, 215, 255];\n for (let t = 0; t < 6; ++t) for (let i5 = 0; i5 < 6; ++i5) for (let A4 = 0; A4 < 6; ++A4) s4.push(B5(e[t], e[i5], e[A4]));\n for (let t = 8; t <= 238; t += 10) s4.push(B5(t, t, t));\n return new Uint32Array(s4);\n })();\n m4.DEFAULT_BACKGROUND = B5(0, 0, 0, 255);\n m4.DEFAULT_FOREGROUND = B5(255, 255, 255, 255);\n });\n var Ce = L((_e3) => {\n "use strict";\n Object.defineProperty(_e3, "__esModule", { value: true });\n _e3.InWasm = Bt2;\n var R4 = (s4) => {\n if (Uint8Array.fromBase64) return Uint8Array.fromBase64(s4);\n if (typeof Buffer < "u") return Buffer.from(s4, "base64");\n let e = atob(s4), t = new Uint8Array(e.length);\n for (let i5 = 0; i5 < t.length; ++i5) t[i5] = e.charCodeAt(i5);\n return t;\n };\n function Bt2(s4) {\n if (s4.d) {\n let { t: e, s: t, d: i5 } = s4, A4, r, n11 = WebAssembly;\n return e === 0 ? t ? (a2) => new n11.Instance(r || (r = new n11.Module(A4 || (A4 = R4(i5)))), a2) : (a2) => r ? n11.instantiate(r, a2) : n11.instantiate(A4 || (A4 = R4(i5)), a2).then((o2) => (r = o2.module) && o2.instance) : e === 1 ? t ? () => r || (r = new n11.Module(A4 || (A4 = R4(i5)))) : () => r ? Promise.resolve(r) : n11.compile(A4 || (A4 = R4(i5))).then((a2) => r = a2) : t ? () => A4 || (A4 = R4(i5)) : () => Promise.resolve(A4 || (A4 = R4(i5)));\n }\n if (typeof _wasmCtx > "u") throw new Error(\'must run "inwasm"\');\n _wasmCtx.add(s4);\n }\n });\n var Be = L((Ee2) => {\n "use strict";\n Object.defineProperty(Ee2, "__esModule", { value: true });\n var pt4 = Ce(), ft4 = (0, pt4.InWasm)({ s: 1, t: 0, d: "AGFzbQEAAAABBQFgAAF/Ag8BA2VudgZtZW1vcnkCAAEDAwIAAAcNAgNkZWMAAANlbmQAAQqLBgKZBAEKf0GIKCgCAEGgKGohAUGEKCgCACIDQaAoaiEAQYAoKAIAQQFrQXxxIgRBoChqIQUgBEEQayADSgRAIARBkChqIQMDQCABIABBA2otAABBAnQoAoAgIABBAmotAABBAnQoAoAYIABBAWotAABBAnQoAoAQIAAtAABBAnQoAoAIcnJyIgY2AgAgAUEDaiAAQQdqLQAAQQJ0KAKAICAAQQZqLQAAQQJ0KAKAGCAAQQVqLQAAQQJ0KAKAECAAQQRqLQAAQQJ0KAKACHJyciIHNgIAIAFBBmogAEELai0AAEECdCgCgCAgAEEKai0AAEECdCgCgBggAEEJai0AAEECdCgCgBAgAEEIai0AAEECdCgCgAhycnIiCDYCACABQQlqIABBD2otAABBAnQoAoAgIABBDmotAABBAnQoAoAYIABBDWotAABBAnQoAoAQIABBDGotAABBAnQoAoAIcnJyIgk2AgAgAiAGciAHciAIciAJciECIAFBDGohASAAQRBqIgAgA0kNAAsLIAAgBUkEQANAIAEgAEEDai0AAEECdCgCgCAgAEECai0AAEECdCgCgBggAEEBai0AAEECdCgCgBAgAC0AAEECdCgCgAhycnIiAzYCACACIANyIQIgAUEDaiEBIABBBGoiACAFSQ0ACwtBfyEAIAJB////B00Ef0GEKCAENgIAQYgoIAFBoChrNgIAQQAFQX8LC+0BAQR/AkBBgCgoAgAiAUGEKCgCACIAa0EFTgRAQX8hAxAADQFBgCgoAgAhAUGEKCgCACEAC0F/IQMgASAAayIBQQJIDQAgAC0AoShBAnQoAoAQIAAtAKAoQQJ0KAKACHIhAgJ/IAFBBEYEQEEDQQQgAC0AoyhBPUYbIAAtAKIoQT1GayEBC0EBIAFBA0kNABogAC0AoihBAnQoAoAYIAJyIQJBAiABQQRHDQAaIAAtAKMoQQJ0KAKAICACciECQQMLIQEgAkH///8HSw0AQQAhA0GIKCgCACIAIAI2AKAoQYgoIAAgAWo2AgALIAML" }), T4 = new Uint8Array("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").map((s4) => s4.charCodeAt(0))), k5 = new Uint32Array(1024);\n k5.fill(4278190080);\n for (let s4 = 0; s4 < T4.length; ++s4) k5[T4[s4]] = s4 << 2;\n for (let s4 = 0; s4 < T4.length; ++s4) k5[256 + T4[s4]] = s4 >> 4 | (s4 << 4 & 255) << 8;\n for (let s4 = 0; s4 < T4.length; ++s4) k5[512 + T4[s4]] = s4 >> 2 << 8 | (s4 << 6 & 255) << 16;\n for (let s4 = 0; s4 < T4.length; ++s4) k5[768 + T4[s4]] = s4 << 16;\n var Qt3 = new Uint8Array(0), ue2 = class {\n constructor(e, t, i5) {\n if (this._inst = null, this._ended = true, this._bytes = 0, this.keepSize = e ?? 1048576, this.maxBytes = t ?? 4294901760, this._bytes = i5 ?? 32768, this._bytes > this.maxBytes || this.maxBytes > 4294901760) throw new Error("invalid byte settings");\n }\n get data8() {\n return this._inst ? this._d.subarray(0, this._m32[1282]) : Qt3;\n }\n release() {\n this._inst && (this._bytes > this.keepSize ? this._inst = this._m32 = this._d = this._mem = null : (this._m32[1280] = 0, this._m32[1281] = 0, this._m32[1282] = 0));\n }\n init(e, t) {\n if (this.maxBytes = e ?? this.maxBytes, this._bytes = t ?? Math.min(this._bytes, this.maxBytes), this._bytes > this.maxBytes || this.maxBytes > 4294901760) throw Error("invalid byte settings");\n let i5 = this._m32, A4 = this._bytes + 5152;\n this._inst ? this._mem.buffer.byteLength < A4 && (this._mem.grow(Math.ceil((A4 - this._mem.buffer.byteLength) / 65536)), i5 = new Uint32Array(this._mem.buffer, 0), this._d = new Uint8Array(this._mem.buffer, 5152)) : (this._mem = new WebAssembly.Memory({ initial: Math.ceil(A4 / 65536) }), this._inst = ft4({ env: { memory: this._mem } }), i5 = new Uint32Array(this._mem.buffer, 0), i5.set(k5, 256), this._d = new Uint8Array(this._mem.buffer, 5152)), i5[1280] = 0, i5[1281] = 0, i5[1282] = 0, this._m32 = i5, this._ended = false;\n }\n _realloc(e) {\n let t = this._m32[1280] + e;\n if (this._bytes < t) {\n if (t > this.maxBytes) return -3;\n let i5 = this._bytes;\n for (; (i5 *= 2) < t; ) ;\n if (i5 = Math.min(i5, this.maxBytes), i5 < t) return -3;\n if (i5 + 5152 > this._mem.buffer.byteLength) {\n let A4 = Math.ceil((i5 + 5152 - this._mem.buffer.byteLength) / 65536);\n this._mem.grow(A4), this._m32 = new Uint32Array(this._mem.buffer, 0), this._d = new Uint8Array(this._mem.buffer, 5152);\n }\n this._bytes = i5;\n }\n return 0;\n }\n put(e) {\n if (!this._inst || this._ended) return -2;\n if (this._realloc(e.length)) return -3;\n let t = this._m32;\n return this._d.set(e, t[1280]), t[1280] += e.length, t[1280] - t[1281] >= 131072 ? this._inst.exports.dec() : 0;\n }\n end() {\n return this._ended = true, this._inst ? this._inst.exports.end() : -2;\n }\n get loadedBytes() {\n return this._inst ? this._m32[1280] : 0;\n }\n get freeBytes() {\n return this._inst ? this.maxBytes - this._m32[1280] : 0;\n }\n };\n Ee2.default = ue2;\n });\n var Re = L((fe3) => {\n "use strict";\n Object.defineProperty(fe3, "__esModule", { value: true });\n var Dt3 = Ce(), wt2 = (0, Dt3.InWasm)({ s: 1, t: 0, d: "AGFzbQEAAAABCgJgAABgA39/fwACDwEDZW52Bm1lbW9yeQIAAQMDAgABBwcBA2RlYwABCAEACu4EAgwAQQBBAEGAAvwLAAveBAEJf0EAQQBBgAL8CwAgAUEXTgRAIAAgAWpBCGshCkGACCEBIAJBAnRBgAhqIQsgAEEOaiEDQf8BIQZBACECA0AgA0EBaiEHIAMtAAAiCEE/cSEAAkACQCAIQcABcSIJRQRAIABBAnQiAC0AAyEGIAAtAAIhBCAALQABIQUgAC0AACECIAchAwwBCwJAIAhB/QFLDQAgCUHAAUcNACAFQQVsIAJBA2xqIARBB2xqIAZBC2xqQT9xQQJ0IgMgBDoAAiADIAU6AAEgAyACOgAAIANBA2ogBjoAAANAIAEgAjoAACABQQNqIAY6AAAgAUECaiAEOgAAIAFBAWogBToAACABQQRqIQEgAEUEQCAHIQMMBAsgAEEBayEAIAEgC0kNAAsgByEDDAILAn8CQAJAAkAgCEH+AWsOAgABAgsgAy0AAyEEIAMtAAIhBSADLQABIQIgA0EEagwCCyADKAIBIgJBGHYhBiACQRB2IQQgAkEIdiEFIANBBWoMAQsgCUGAAUcEQCAHIAlBwABHDQEaIAQgCEEDcWpBAmshBCACIABBBHZqQQJrIQIgBSAIQQJ2QQNxakECayEFIAcMAQsgBCAAQShrIgkgAy0AASIHQQ9xamohBCACIAdBBHYgCWpqIQIgACAFakEgayEFIANBAmoLIQMgBUEFbCACQQNsaiAEQQdsaiAGQQtsakE/cUECdCIAIAQ6AAIgACAFOgABIAAgAjoAACAAQQNqIAY6AAALIAEgBjoAAyABIAQ6AAIgASAFOgABIAEgAjoAACABQQRqIQELIAMgCkkNAAsLCw==" }), pe2 = class {\n constructor(e) {\n this.keepSize = e, this.width = 0, this.height = 0;\n }\n decode(e) {\n this.width = e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7], this.height = e[8] << 24 | e[9] << 16 | e[10] << 8 | e[11];\n let t = this.width * this.height, i5 = t * 4, A4 = e.length, r = Math.max(i5, A4) + (Math.min(i5, A4) >> 1) + 4096;\n this._inst ? this._mem.buffer.byteLength < r && (this._mem.grow(Math.ceil((r - this._mem.buffer.byteLength) / 65536)), this._d = null) : (this._mem = new WebAssembly.Memory({ initial: Math.ceil(r / 65536) }), this._inst = wt2({ env: { memory: this._mem } })), this._d || (this._d = new Uint8Array(this._mem.buffer));\n let n11 = this._mem.buffer.byteLength - A4 & -256;\n return this._d.set(e, n11), this._inst.exports.dec(n11, A4, t), this._d.subarray(1024, 1024 + i5);\n }\n release() {\n this._inst && this._mem.buffer.byteLength > this.keepSize && (this._inst = this._d = this._mem = null);\n }\n };\n fe3.default = pe2;\n });\n var Pe = L((re3) => {\n "use strict";\n Object.defineProperty(re3, "__esModule", { value: true });\n re3.LIMITS = void 0;\n re3.LIMITS = { CHUNK_SIZE: 16384, PALETTE_SIZE: 4096, MAX_WIDTH: 16384, BYTES: "AGFzbQEAAAABJAdgAAF/YAJ/fwBgA39/fwF/YAF/AX9gAABgBH9/f38AYAF/AAIlAgNlbnYLaGFuZGxlX2JhbmQAAwNlbnYLbW9kZV9wYXJzZWQAAwMTEgQAAAAAAQQBAQUBAAACAgAGAwQFAXABBwcFBAEBBwcGCAF/AUGAihoLB9wBDgZtZW1vcnkCABFnZXRfc3RhdGVfYWRkcmVzcwADEWdldF9jaHVua19hZGRyZXNzAAQOZ2V0X3AwX2FkZHJlc3MABRNnZXRfcGFsZXR0ZV9hZGRyZXNzAAYEaW5pdAALBmRlY29kZQAMDWN1cnJlbnRfd2lkdGgADQ5jdXJyZW50X2hlaWdodAAOGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtfaW5pdGlhbGl6ZQACCXN0YWNrU2F2ZQARDHN0YWNrUmVzdG9yZQASCnN0YWNrQWxsb2MAEwkMAQBBAQsGCgcJDxACDAEBCq5UEgMAAQsFAEGgCAsGAEGQiQELBgBBsIkCCwUAQZAJC+okAQh/QeQIKAIAIQVB4AgoAgAhA0HoCCgCACEIIAFBkIkBaiIJQf8BOgAAIAAgAUgEQCAAQZCJAWohBgNAIAMhBCAGQQFqIQECQCAGLQAAQf8AcSIDQTBrQQlLBEAgASEGDAELQewIKAIAQQJ0QewIaiICKAIAIQADQCACIAMgAEEKbGpBMGsiADYCACABLQAAIQMgAUEBaiIGIQEgA0H/AHEiA0Ewa0EKSQ0ACwsCQAJAAkACQAJAAkACQAJ/AkACQCADQT9rIgBBP00EQCAERQ0BIARBIUYEQAJAQfAIKAIAIgFBASABGyIHIAhqIgFB1AgoAgAiA0gNACADQf//AEoNAANAIANBAnQiAkGgiQJqIgRBoAgpAwA3AwAgAkGoiQJqQaAIKQMANwMAIAJBsIkCakGgCCkDADcDACACQbiJAmpBoAgpAwA3AwAgAkHAiQJqQaAIKQMANwMAIAJByIkCakGgCCkDADcDACACQdCJAmpBoAgpAwA3AwAgAkHYiQJqQaAIKQMANwMAIAJB4IkCakGgCCkDADcDACACQeiJAmpBoAgpAwA3AwAgAkHwiQJqQaAIKQMANwMAIAJB+IkCakGgCCkDADcDACACQYCKAmpBoAgpAwA3AwAgAkGIigJqQaAIKQMANwMAIAJBkIoCakGgCCkDADcDACACQZiKAmpBoAgpAwA3AwAgAkGgigJqQaAIKQMANwMAIAJBqIoCakGgCCkDADcDACACQbCKAmpBoAgpAwA3AwAgAkG4igJqQaAIKQMANwMAIAJBwIoCakGgCCkDADcDACACQciKAmpBoAgpAwA3AwAgAkHQigJqQaAIKQMANwMAIAJB2IoCakGgCCkDADcDACACQeCKAmpBoAgpAwA3AwAgAkHoigJqQaAIKQMANwMAIAJB8IoCakGgCCkDADcDACACQfiKAmpBoAgpAwA3AwAgAkGAiwJqQaAIKQMANwMAIAJBiIsCakGgCCkDADcDACACQZCLAmpBoAgpAwA3AwAgAkGYiwJqQaAIKQMANwMAIAJBoIsCakGgCCkDADcDACACQaiLAmpBoAgpAwA3AwAgAkGwiwJqQaAIKQMANwMAIAJBuIsCakGgCCkDADcDACACQcCLAmpBoAgpAwA3AwAgAkHIiwJqQaAIKQMANwMAIAJB0IsCakGgCCkDADcDACACQdiLAmpBoAgpAwA3AwAgAkHgiwJqQaAIKQMANwMAIAJB6IsCakGgCCkDADcDACACQfCLAmpBoAgpAwA3AwAgAkH4iwJqQaAIKQMANwMAIAJBgIwCakGgCCkDADcDACACQYiMAmpBoAgpAwA3AwAgAkGQjAJqQaAIKQMANwMAIAJBmIwCakGgCCkDADcDACACQaCMAmpBoAgpAwA3AwAgAkGojAJqQaAIKQMANwMAIAJBsIwCakGgCCkDADcDACACQbiMAmpBoAgpAwA3AwAgAkHAjAJqQaAIKQMANwMAIAJByIwCakGgCCkDADcDACACQdCMAmpBoAgpAwA3AwAgAkHYjAJqQaAIKQMANwMAIAJB4IwCakGgCCkDADcDACACQeiMAmpBoAgpAwA3AwAgAkHwjAJqQaAIKQMANwMAIAJB+IwCakGgCCkDADcDACACQYCNAmpBoAgpAwA3AwAgAkGIjQJqQaAIKQMANwMAIAJBkI0CakGgCCkDADcDACACQZiNAmpBoAgpAwA3AwAgAkGwiQZqIARBgAT8CgAAQdQIKAIAQQJ0QcCJCmogBEGABPwKAABB1AgoAgBBAnRB0IkOaiAEQYAE/AoAAEHUCCgCAEECdEHgiRJqIARBgAT8CgAAQdQIKAIAQQJ0QfCJFmogBEGABPwKAABB1AhB1AgoAgAiAkGAAWoiAzYCACABIANIDQEgAkGA/wBIDQALCwJAIABFDQAgCEH//wBLDQBBgIABIAhrIAcgAUH//wBLGyECAkAgAEEBcUUNACACRQ0AIAhBAnRBoIkCaiEDIAIhBCACQQdxIgcEQANAIAMgBTYCACADQQRqIQMgBEEBayEEIAdBAWsiBw0ACwsgAkEBa0EHSQ0AA0AgAyAFNgIcIAMgBTYCGCADIAU2AhQgAyAFNgIQIAMgBTYCDCADIAU2AgggAyAFNgIEIAMgBTYCACADQSBqIQMgBEEIayIEDQALCwJAIABBAnFFDQAgAkUNACAIQQJ0QbCJBmohAyACIQQgAkEHcSIHBEADQCADIAU2AgAgA0EEaiEDIARBAWshBCAHQQFrIgcNAAsLIAJBAWtBB0kNAANAIAMgBTYCHCADIAU2AhggAyAFNgIUIAMgBTYCECADIAU2AgwgAyAFNgIIIAMgBTYCBCADIAU2AgAgA0EgaiEDIARBCGsiBA0ACwsCQCAAQQRxRQ0AIAJFDQAgCEECdEHAiQpqIQMgAiEEIAJBB3EiBwRAA0AgAyAFNgIAIANBBGohAyAEQQFrIQQgB0EBayIHDQALCyACQQFrQQdJDQADQCADIAU2AhwgAyAFNgIYIAMgBTYCFCADIAU2AhAgAyAFNgIMIAMgBTYCCCADIAU2AgQgAyAFNgIAIANBIGohAyAEQQhrIgQNAAsLAkAgAEEIcUUNACACRQ0AIAhBAnRB0IkOaiEDIAIhBCACQQdxIgcEQANAIAMgBTYCACADQQRqIQMgBEEBayEEIAdBAWsiBw0ACwsgAkEBa0EHSQ0AA0AgAyAFNgIcIAMgBTYCGCADIAU2AhQgAyAFNgIQIAMgBTYCDCADIAU2AgggAyAFNgIEIAMgBTYCACADQSBqIQMgBEEIayIEDQALCwJAIABBEHFFDQAgAkUNACAIQQJ0QeCJEmohAyACIQQgAkEHcSIHBEADQCADIAU2AgAgA0EEaiEDIARBAWshBCAHQQFrIgcNAAsLIAJBAWtBB0kNAANAIAMgBTYCHCADIAU2AhggAyAFNgIUIAMgBTYCECADIAU2AgwgAyAFNgIIIAMgBTYCBCADIAU2AgAgA0EgaiEDIARBCGsiBA0ACwsgAEEgcUUNACACRQ0AIAJBAWshByAIQQJ0QfCJFmohAyACQQdxIgQEQANAIAMgBTYCACADQQRqIQMgAkEBayECIARBAWsiBA0ACwsgB0EHSQ0AA0AgAyAFNgIcIAMgBTYCGCADIAU2AhQgAyAFNgIQIAMgBTYCDCADIAU2AgggAyAFNgIEIAMgBTYCACADQSBqIQMgAkEIayICDQALC0HcCEHcCCgCACAAcjYCACAGQQFqIgIgBi0AAEH/AHEiA0E/ayIAQT9LDQQaDAMLAkBB7AgoAgAiBEEBRgRAQfAIKAIAIgNBzAgoAgAiAUkNASADIAFwIQMMAQtB+AgoAgAhAkH0CCgCACEBAkACQCAEQQVHDQAgAUEBRw0AIAJB6QJODQQMAQsgAkHkAEoNA0H8CCgCAEHkAEoNA0GACSgCAEHkAEoNAwsCQCABRQ0AIAFBAkoNACACQfwIKAIAQYAJKAIAIAFBAnRBiAhqKAIAEQIAIQFB8AgoAgAiA0HMCCgCACICTwR/IAMgAnAFIAMLQQJ0QZAJaiABNgIAC0HwCCgCACIDQcwIKAIAIgFJDQAgAyABcCEDCyADQQJ0QZAJaigCACEFDAELIANB/QBxQSFHBEAgCCEBIAYhAgwECyAEQSNHDQQCQEHsCCgCACICQQFGBEBB8AgoAgAiAUHMCCgCACIASQ0BIAEgAHAhAQwBC0H4CCgCACEBQfQIKAIAIQACQAJAIAJBBUcNACAAQQFHDQAgAUHpAkgNAQwHCyABQeQASg0GQfwIKAIAQeQASg0GQYAJKAIAQeQASg0GCwJAIABFDQAgAEECSg0AIAFB/AgoAgBBgAkoAgAgAEECdEGICGooAgARAgAhAEHwCCgCACIBQcwIKAIAIgJPBH8gASACcAUgAQtBAnRBkAlqIAA2AgALQfAIKAIAIgFBzAgoAgAiAEkNACABIABwIQELIAFBAnRBkAlqKAIAIQUMBAsgCCEBIAYhAgtB1AgoAgAhBgNAAkAgASAGSA0AIAZB//8ASg0AIAZBAnQiBEGgiQJqIgZBoAgpAwA3AwAgBEGoiQJqQaAIKQMANwMAIARBsIkCakGgCCkDADcDACAEQbiJAmpBoAgpAwA3AwAgBEHAiQJqQaAIKQMANwMAIARByIkCakGgCCkDADcDACAEQdCJAmpBoAgpAwA3AwAgBEHYiQJqQaAIKQMANwMAIARB4IkCakGgCCkDADcDACAEQeiJAmpBoAgpAwA3AwAgBEHwiQJqQaAIKQMANwMAIARB+IkCakGgCCkDADcDACAEQYCKAmpBoAgpAwA3AwAgBEGIigJqQaAIKQMANwMAIARBkIoCakGgCCkDADcDACAEQZiKAmpBoAgpAwA3AwAgBEGgigJqQaAIKQMANwMAIARBqIoCakGgCCkDADcDACAEQbCKAmpBoAgpAwA3AwAgBEG4igJqQaAIKQMANwMAIARBwIoCakGgCCkDADcDACAEQciKAmpBoAgpAwA3AwAgBEHQigJqQaAIKQMANwMAIARB2IoCakGgCCkDADcDACAEQeCKAmpBoAgpAwA3AwAgBEHoigJqQaAIKQMANwMAIARB8IoCakGgCCkDADcDACAEQfiKAmpBoAgpAwA3AwAgBEGAiwJqQaAIKQMANwMAIARBiIsCakGgCCkDADcDACAEQZCLAmpBoAgpAwA3AwAgBEGYiwJqQaAIKQMANwMAIARBoIsCakGgCCkDADcDACAEQaiLAmpBoAgpAwA3AwAgBEGwiwJqQaAIKQMANwMAIARBuIsCakGgCCkDADcDACAEQcCLAmpBoAgpAwA3AwAgBEHIiwJqQaAIKQMANwMAIARB0IsCakGgCCkDADcDACAEQdiLAmpBoAgpAwA3AwAgBEHgiwJqQaAIKQMANwMAIARB6IsCakGgCCkDADcDACAEQfCLAmpBoAgpAwA3AwAgBEH4iwJqQaAIKQMANwMAIARBgIwCakGgCCkDADcDACAEQYiMAmpBoAgpAwA3AwAgBEGQjAJqQaAIKQMANwMAIARBmIwCakGgCCkDADcDACAEQaCMAmpBoAgpAwA3AwAgBEGojAJqQaAIKQMANwMAIARBsIwCakGgCCkDADcDACAEQbiMAmpBoAgpAwA3AwAgBEHAjAJqQaAIKQMANwMAIARByIwCakGgCCkDADcDACAEQdCMAmpBoAgpAwA3AwAgBEHYjAJqQaAIKQMANwMAIARB4IwCakGgCCkDADcDACAEQeiMAmpBoAgpAwA3AwAgBEHwjAJqQaAIKQMANwMAIARB+IwCakGgCCkDADcDACAEQYCNAmpBoAgpAwA3AwAgBEGIjQJqQaAIKQMANwMAIARBkI0CakGgCCkDADcDACAEQZiNAmpBoAgpAwA3AwAgBEGwiQZqIAZBgAT8CgAAQdQIKAIAQQJ0QcCJCmogBkGABPwKAABB1AgoAgBBAnRB0IkOaiAGQYAE/AoAAEHUCCgCAEECdEHgiRJqIAZBgAT8CgAAQdQIKAIAQQJ0QfCJFmogBkGABPwKAABB1AhB1AgoAgBBgAFqIgY2AgALIAFB//8ATQRAIABBAXEgAWxBAnRBoIkCaiAFNgIAIABBAXZBAXEgAWxBAnRBsIkGaiAFNgIAIABBAnZBAXEgAWxBAnRBwIkKaiAFNgIAIABBA3ZBAXEgAWxBAnRB0IkOaiAFNgIAIABBBHZBAXEgAWxBAnRB4IkSaiAFNgIAIABBBXYgAWxBAnRB8IkWaiAFNgIAQdQIKAIAIQYLIAFBAWohAUHcCEHcCCgCACAAcjYCACACLQAAIQAgAkEBaiIEIQIgAEH/AHEiA0E/ayIAQcAASQ0ACyAECyECQQAhBCACIQYgASEIIANB/QBxQSFGDQELIANBJGsOCgEDAwMDAwMDAwIDC0HsCEIBNwIADAQLQdgIIAFB2AgoAgAiACAAIAFIGyIAQYCAASAAQYCAAUgbNgIADAILQegIIAFB2AgoAgAiACAAIAFIGyIAQYCAASAAQYCAAUgbIgA2AgBB2AggADYCACAAQQRrEAAEQEHoCEEENgIAQdgIQQQ2AgBB0AhBATYCAA8LEAgMAQsCQCADQTtHDQBB7AgoAgAiAEEHSg0AQewIIABBAWo2AgAgAEECdEHwCGpBADYCAAsgAiEGIAQhAyABIQgMAQtBBCEIIAIhBiAEIQMLIAYgCUkNAAsLQeQIIAU2AgBB4AggAzYCAEHoCCAINgIAC9ELAgF+CH9B2AhCBDcDAEGojQJBoAgpAwAiADcDAEGgjQIgADcDAEGYjQIgADcDAEGQjQIgADcDAEGIjQIgADcDAEGAjQIgADcDAEH4jAIgADcDAEHwjAIgADcDAEHojAIgADcDAEHgjAIgADcDAEHYjAIgADcDAEHQjAIgADcDAEHIjAIgADcDAEHAjAIgADcDAEG4jAIgADcDAEGwjAIgADcDAEGojAIgADcDAEGgjAIgADcDAEGYjAIgADcDAEGQjAIgADcDAEGIjAIgADcDAEGAjAIgADcDAEH4iwIgADcDAEHwiwIgADcDAEHoiwIgADcDAEHgiwIgADcDAEHYiwIgADcDAEHQiwIgADcDAEHIiwIgADcDAEHAiwIgADcDAEG4iwIgADcDAEGwiwIgADcDAEGoiwIgADcDAEGgiwIgADcDAEGYiwIgADcDAEGQiwIgADcDAEGIiwIgADcDAEGAiwIgADcDAEH4igIgADcDAEHwigIgADcDAEHoigIgADcDAEHgigIgADcDAEHYigIgADcDAEHQigIgADcDAEHIigIgADcDAEHAigIgADcDAEG4igIgADcDAEGwigIgADcDAEGoigIgADcDAEGgigIgADcDAEGYigIgADcDAEGQigIgADcDAEGIigIgADcDAEGAigIgADcDAEH4iQIgADcDAEHwiQIgADcDAEHoiQIgADcDAEHgiQIgADcDAEHYiQIgADcDAEHQiQIgADcDAEHIiQIgADcDAEHAiQIgADcDAEG4iQIgADcDAEGwiQIgADcDAEGoCCgCACIEQf8AakGAAW0hCAJAIARBgQFIDQBBASEBIAhBAiAIQQJKG0EBayICQQFxIQMgBEGBAk4EQCACQX5xIQIDQCABQQl0IgdBEHJBoIkCakGwiQJBgAT8CgAAIAdBsI0CakGwiQJBgAT8CgAAIAFBAmohASACQQJrIgINAAsLIANFDQAgAUEJdEEQckGgiQJqQbCJAkGABPwKAAALAkAgBEEBSA0AIAhBASAIQQFKGyIDQQFxIQUCQCADQQFrIgdFBEBBACEBDAELIANB/v///wdxIQJBACEBA0AgAUEJdCIGQRByQbCJBmpBsIkCQYAE/AoAACAGQZAEckGwiQZqQbCJAkGABPwKAAAgAUECaiEBIAJBAmsiAg0ACwsgBQRAIAFBCXRBEHJBsIkGakGwiQJBgAT8CgAACyAEQQFIDQAgA0EBcSEFIAcEfyADQf7///8HcSECQQAhAQNAIAFBCXQiBkEQckHAiQpqQbCJAkGABPwKAAAgBkGQBHJBwIkKakGwiQJBgAT8CgAAIAFBAmohASACQQJrIgINAAsgAUEHdEEEcgVBBAshASAFBEAgAUECdEHAiQpqQbCJAkGABPwKAAALIARBAUgNACADQQFxIQUgBwR/IANB/v///wdxIQJBACEBA0AgAUEJdCIGQRByQdCJDmpBsIkCQYAE/AoAACAGQZAEckHQiQ5qQbCJAkGABPwKAAAgAUECaiEBIAJBAmsiAg0ACyABQQd0QQRyBUEECyEBIAUEQCABQQJ0QdCJDmpBsIkCQYAE/AoAAAsgBEEBSA0AIANBAXEhBSAHBH8gA0H+////B3EhAkEAIQEDQCABQQl0IgZBEHJB4IkSakGwiQJBgAT8CgAAIAZBkARyQeCJEmpBsIkCQYAE/AoAACABQQJqIQEgAkECayICDQALIAFBB3RBBHIFQQQLIQEgBQRAIAFBAnRB4IkSakGwiQJBgAT8CgAACyAEQQFIDQAgA0EBcSEEIAcEfyADQf7///8HcSECQQAhAQNAIAFBCXQiA0EQckHwiRZqQbCJAkGABPwKAAAgA0GQBHJB8IkWakGwiQJBgAT8CgAAIAFBAmohASACQQJrIgINAAsgAUEHdEEEcgVBBAshASAERQ0AIAFBAnRB8IkWakGwiQJBgAT8CgAAC0HUCCAIQQd0QQRyNgIAC58TAgh/AX5B5AgoAgAhA0HgCCgCACECQegIKAIAIQcgAUGQiQFqIglB/wE6AAAgACABSARAIABBkIkBaiEIA0AgAiEEIAhBAWohAQJAIAgtAABB/wBxIgJBMGtBCUsEQCABIQgMAQtB7AgoAgBBAnRB7AhqIgUoAgAhAANAIAUgAiAAQQpsakEwayIANgIAIAEtAAAhAiABQQFqIgghASACQf8AcSICQTBrQQpJDQALCwJAAkACQAJAAkACQAJ/AkAgAkE/ayIAQT9NBEAgBEUNASAEQSFGBEBB8AgoAgAiAUEBIAEbIgQgB2ohAQJAIABFDQAgB0H//wBLDQBBgIABIAdrIAQgAUH//wBLGyEFAkAgAEEBcUUNACAHQQJ0QaCJAmohAiAFIgRBB3EiBgRAA0AgAiADNgIAIAJBBGohAiAEQQFrIQQgBkEBayIGDQALCyAFQQFrQQdJDQADQCACIAM2AhwgAiADNgIYIAIgAzYCFCACIAM2AhAgAiADNgIMIAIgAzYCCCACIAM2AgQgAiADNgIAIAJBIGohAiAEQQhrIgQNAAsLAkAgAEECcUUNACAHQQJ0QbCJBmohAiAFIgRBB3EiBgRAA0AgAiADNgIAIAJBBGohAiAEQQFrIQQgBkEBayIGDQALCyAFQQFrQQdJDQADQCACIAM2AhwgAiADNgIYIAIgAzYCFCACIAM2AhAgAiADNgIMIAIgAzYCCCACIAM2AgQgAiADNgIAIAJBIGohAiAEQQhrIgQNAAsLAkAgAEEEcUUNACAHQQJ0QcCJCmohAiAFIgRBB3EiBgRAA0AgAiADNgIAIAJBBGohAiAEQQFrIQQgBkEBayIGDQALCyAFQQFrQQdJDQADQCACIAM2AhwgAiADNgIYIAIgAzYCFCACIAM2AhAgAiADNgIMIAIgAzYCCCACIAM2AgQgAiADNgIAIAJBIGohAiAEQQhrIgQNAAsLAkAgAEEIcUUNACAHQQJ0QdCJDmohAiAFIgRBB3EiBgRAA0AgAiADNgIAIAJBBGohAiAEQQFrIQQgBkEBayIGDQALCyAFQQFrQQdJDQADQCACIAM2AhwgAiADNgIYIAIgAzYCFCACIAM2AhAgAiADNgIMIAIgAzYCCCACIAM2AgQgAiADNgIAIAJBIGohAiAEQQhrIgQNAAsLAkAgAEEQcUUNACAHQQJ0QeCJEmohAiAFIgRBB3EiBgRAA0AgAiADNgIAIAJBBGohAiAEQQFrIQQgBkEBayIGDQALCyAFQQFrQQdJDQADQCACIAM2AhwgAiADNgIYIAIgAzYCFCACIAM2AhAgAiADNgIMIAIgAzYCCCACIAM2AgQgAiADNgIAIAJBIGohAiAEQQhrIgQNAAsLIABBIHFFDQAgBUEBayEEIAdBAnRB8IkWaiEAIAVBB3EiAgRAA0AgACADNgIAIABBBGohACAFQQFrIQUgAkEBayICDQALCyAEQQdJDQADQCAAIAM2AhwgACADNgIYIAAgAzYCFCAAIAM2AhAgACADNgIMIAAgAzYCCCAAIAM2AgQgACADNgIAIABBIGohACAFQQhrIgUNAAsLIAhBAWoiBSAILQAAQf8AcSICQT9rIgBBP00NAxoMBAsCQEHsCCgCACIFQQFGBEBB8AgoAgAiAUHMCCgCACIESQ0BIAEgBHAhAQwBC0H4CCgCACEEQfQIKAIAIQECQAJAIAVBBUcNACABQQFHDQAgBEHpAk4NBAwBCyAEQeQASg0DQfwIKAIAQeQASg0DQYAJKAIAQeQASg0DCwJAIAFFDQAgAUECSg0AIARB/AgoAgBBgAkoAgAgAUECdEGICGooAgARAgAhBEHwCCgCACIBQcwIKAIAIgVPBH8gASAFcAUgAQtBAnRBkAlqIAQ2AgALQfAIKAIAIgFBzAgoAgAiBEkNACABIARwIQELIAFBAnRBkAlqKAIAIQMMAQsgAkH9AHFBIUcEQCAHIQEgAiEADAQLIARBI0cNBAJAQewIKAIAIgRBAUYEQEHwCCgCACIBQcwIKAIAIgBJDQEgASAAcCEBDAELQfgIKAIAIQFB9AgoAgAhAAJAAkAgBEEFRw0AIABBAUcNACABQekCSA0BDAcLIAFB5ABKDQZB/AgoAgBB5ABKDQZBgAkoAgBB5ABKDQYLAkAgAEUNACAAQQJKDQAgAUH8CCgCAEGACSgCACAAQQJ0QYgIaigCABECACEAQfAIKAIAIgFBzAgoAgAiBE8EfyABIARwBSABC0ECdEGQCWogADYCAAtB8AgoAgAiAUHMCCgCACIASQ0AIAEgAHAhAQsgAUECdEGQCWooAgAhAwwECyAHIQEgCAshBQNAIAFB//8ATQRAIABBAXEgAWxBAnRBoIkCaiADNgIAIABBAXZBAXEgAWxBAnRBsIkGaiADNgIAIABBAnZBAXEgAWxBAnRBwIkKaiADNgIAIABBA3ZBAXEgAWxBAnRB0IkOaiADNgIAIABBBHZBAXEgAWxBAnRB4IkSaiADNgIAIABBBXYgAWxBAnRB8IkWaiADNgIACyABQQFqIQEgBS0AACEAIAVBAWoiBCEFIABB/wBxIgJBP2siAEHAAEkNAAsgBCEFC0EAIQQgBSEIIAEhByACIQAgAkH9AHFBIUYNAQtBBCEHIAQhAiAAQSRrDgoDAgICAgICAgIBAgtB7AhCATcCAAwCC0GoCCgCAEEEaxAABEBB0AhBATYCAA8LAkBBqAgoAgAiBkEFSA0AQaAIKQMAIQogBkEDa0EBdiIBQQdxIQJBACEAIAFBAWtBB08EQCABQfj///8HcSEFA0AgAEEDdCIBQbCJAmogCjcDACABQQhyQbCJAmogCjcDACABQRByQbCJAmogCjcDACABQRhyQbCJAmogCjcDACABQSByQbCJAmogCjcDACABQShyQbCJAmogCjcDACABQTByQbCJAmogCjcDACABQThyQbCJAmogCjcDACAAQQhqIQAgBUEIayIFDQALCyACRQ0AA0AgAEEDdEGwiQJqIAo3AwAgAEEBaiEAIAJBAWsiAg0ACwtBwIkGQbCJAiAGQQJ0IgD8CgAAQdCJCkGwiQIgAPwKAABB4IkOQbCJAiAA/AoAAEHwiRJBsIkCIAD8CgAAQYCKFkGwiQIgAPwKAAAgBCECDAELAkAgAEE7Rw0AQewIKAIAIgBBB0oNAEHsCCAAQQFqNgIAIABBAnRB8AhqQQA2AgALIAEhBwsgCCAJSQ0ACwtB5AggAzYCAEHgCCACNgIAQegIIAc2AgAL4gcCBX8BfgJAQdAIAn8CQAJAIAAgAU4NACABQZCJAWohBiAAQZCJAWohBQNAIAUtAAAiA0H/AHEhAgJAAkACQAJAAkACQAJAQeAIKAIAIgRBIkcEQCAEDQcgAkEiRgRAQewIQgE3AgBB4AhBIjYCAAwICyACQT9rQcAASQ0GIANBIWsiAkEMTQ0BDAULAkAgAkEwayIEQQlNBEBB7AgoAgBBAnRB7AhqIgIgBCACKAIAQQpsajYCAAwBC0HsCCgCACEEIAJBO0YEQCAEQQdKDQFB7AggBEEBajYCACAEQQJ0QfAIakEANgIADAELIARBBEYEQEHECEECNgIAQbAIQfAIKQMANwMAQbgIQfgIKAIAIgI2AgBBvAhB/AgoAgAiBDYCAEHICEECQQFBwAgoAgAiAxs2AgBBrAggBEEAIAMbNgIAQagIIAJBgIABIAJBgIABSBtBBGpBACADGzYCAEHgCEEANgIADAoLIAJBP2tBwABJDQQLIANBIWsiAkEMTQ0BDAILQQEgAnRBjSBxRQ0DDAQLQQEgAnRBjSBxDQELIANBoQFrIgJBDEsNA0EBIAJ0QY0gcUUNAwtBxAhCgYCAgBA3AgBBsAhB8AgoAgBBAEHsCCgCACICQQBKGzYCAEG0CEH0CCgCAEEAIAJBAUobNgIAQbgIQfgIKAIAQQAgAkECShs2AgBB4AhBADYCAEG8CEEANgIADAQLIANBoQFrIgJBDEsNAUEBIAJ0QY0gcUUNAQtBxAhCgYCAgBA3AgBBsAhCADcDAEG4CEIANwMADAMLIAVBAWoiBSAGSQ0ACwsCQEHICCgCAA4DAwEAAQsCQEGoCCgCACIFQQVIDQBBoAgpAwAhByAFQQNrQQF2IgNBB3EhBEEAIQIgA0EBa0EHTwRAIANB+P///wdxIQYDQCACQQN0IgNBsIkCaiAHNwMAIANBCHJBsIkCaiAHNwMAIANBEHJBsIkCaiAHNwMAIANBGHJBsIkCaiAHNwMAIANBIHJBsIkCaiAHNwMAIANBKHJBsIkCaiAHNwMAIANBMHJBsIkCaiAHNwMAIANBOHJBsIkCaiAHNwMAIAJBCGohAiAGQQhrIgYNAAsLIARFDQADQCACQQN0QbCJAmogBzcDACACQQFqIQIgBEEBayIEDQALC0HAiQZBsIkCIAVBAnQiA/wKAABB0IkKQbCJAiAD/AoAAEHgiQ5BsIkCIAP8CgAAQfCJEkGwiQIgA/wKAABBgIoWQbCJAiAD/AoAAEECDAELEAhByAgoAgALEAEiAjYCACACDQAgACABQcgIKAIAQQJ0QYAIaigCABEBAAsLdABB6AhBBDYCAEHkCCAANgIAQewIQgE3AgBBxAhCADcCAEHACCADNgIAQdwIQgA3AgBBqAhCADcDAEGwCEIANwMAQbgIQgA3AwBBzAggAkGAICACQYAgSRs2AgBBoAggAa1CgYCAgBB+NwMAQdAIQQA2AgALIwBB0AgoAgBFBEAgACABQcgIKAIAQQJ0QYAIaigCABEBAAsLWgECfwJAAkACQEHICCgCAEEBaw4CAAECC0HYCEHoCCgCACIAQdgIKAIAIgEgACABShsiAEGAgAEgAEGAgAFIGyIANgIAIABBBGsPC0GoCCgCAEEEayEACyAAC0IBAX8Cf0EGQdwIKAIAIgBBIHENABpBBSAAQRBxDQAaQQQgAEEIcQ0AGkEDIABBBHENABpBAiAAQQFxIABBAnEbCwu9BQEFfQJ/IAJFBEAgAUH/AWxBMmpB5ABtIgBBCHQgAHIgAEEQdHIMAQsgArJDAADIQpUhBiAAQfABarJDAAC0Q5UhBQJ9IAGyQwAAyEKVIgNDAAAAP10EQCADIAZDAACAP5KUDAELIAYgA0MAAIA/IAaTlJILIQcgAyADkiEGAkAgBUOrqqo+kiIEQwAAAABdBEAgBEMAAIA/kiEEDAELIARDAACAP15FDQAgBEMAAIC/kiEECyAGIAeTIQMgBUMAAAAAXSEAAn8CfSADIAcgA5NDAADAQJQgBJSSIARDq6oqPl0NABogByAEQwAAAD9dDQAaIAMgBEOrqio/XUUNABogAyAHIAOTIARDAADAwJRDAACAQJKUkgtDAAB/Q5RDAAAAP5IiBkMAAIBPXSAGQwAAAABgcQRAIAapDAELQQALIQECQCAABEAgBUMAAIA/kiEEDAELIAUiBEMAAIA/XkUNACAFQwAAgL+SIQQLIAVDq6qqvpIiBUMAAAAAXSECAn8CfSADIAcgA5NDAADAQJQgBJSSIARDq6oqPl0NABogByAEQwAAAD9dDQAaIAMgBEOrqio/XUUNABogAyAHIAOTIARDAADAwJRDAACAQJKUkgtDAAB/Q5RDAAAAP5IiBkMAAIBPXSAGQwAAAABgcQRAIAapDAELQQALIQACQCACBEAgBUMAAIA/kiEFDAELIAVDAACAP15FDQAgBUMAAIC/kiEFCwJAIAVDq6oqPl0EQCADIAcgA5NDAADAQJQgBZSSIQcMAQsgBUMAAAA/XQ0AIAVDq6oqP11FBEAgAyEHDAELIAMgByADkyAFQwAAwMCUQwAAgECSlJIhBwsgAEEIdAJ/IAdDAAB/Q5RDAAAAP5IiBkMAAIBPXSAGQwAAAABgcQRAIAapDAELQQALQRB0ciABcgtBgICAeHILNwAgAEH/AWxBMmpB5ABtIAFB/wFsQTJqQeQAbUEIdHIgAkH/AWxBMmpB5ABtQRB0ckGAgIB4cgsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwsYAQBBgAgLEQEAAAACAAAAAwAAAAQAAAAF" };\n });\n var We = L((y5) => {\n "use strict";\n Object.defineProperty(y5, "__esModule", { value: true });\n y5.decodeAsync = y5.decode = y5.Decoder = y5.DecoderAsync = void 0;\n var K4 = X(), Q3 = Pe();\n function Lt3(s4) {\n if (typeof Buffer < "u") return Buffer.from(s4, "base64");\n let e = atob(s4), t = new Uint8Array(e.length);\n for (let i5 = 0; i5 < t.length; ++i5) t[i5] = e.charCodeAt(i5);\n return t;\n }\n var Ye3 = Lt3(Q3.LIMITS.BYTES), P5, se3 = new Uint32Array(), ye3 = class {\n constructor() {\n this.bandHandler = (e) => 1, this.modeHandler = (e) => 1;\n }\n handle_band(e) {\n return this.bandHandler(e);\n }\n mode_parsed(e) {\n return this.modeHandler(e);\n }\n }, Mt2 = { memoryLimit: 2048 * 65536, sixelColor: K4.DEFAULT_FOREGROUND, fillColor: K4.DEFAULT_BACKGROUND, palette: K4.PALETTE_VT340_COLOR, paletteLimit: Q3.LIMITS.PALETTE_SIZE, truncate: true };\n function qe2(s4) {\n let e = new ye3(), t = { env: { handle_band: e.handle_band.bind(e), mode_parsed: e.mode_parsed.bind(e) } };\n return WebAssembly.instantiate(P5 || Ye3, t).then((i5) => (P5 = P5 || i5.module, new Y2(s4, i5.instance || i5, e)));\n }\n y5.DecoderAsync = qe2;\n var Y2 = class {\n constructor(e, t, i5) {\n if (this._PIXEL_OFFSET = Q3.LIMITS.MAX_WIDTH + 4, this._canvas = se3, this._bandWidths = [], this._maxWidth = 0, this._minWidth = Q3.LIMITS.MAX_WIDTH, this._lastOffset = 0, this._currentHeight = 0, this._opts = Object.assign({}, Mt2, e), this._opts.paletteLimit > Q3.LIMITS.PALETTE_SIZE) throw new Error(`DecoderOptions.paletteLimit must not exceed ${Q3.LIMITS.PALETTE_SIZE}`);\n if (t) i5.bandHandler = this._handle_band.bind(this), i5.modeHandler = this._initCanvas.bind(this);\n else {\n let A4 = P5 || (P5 = new WebAssembly.Module(Ye3));\n t = new WebAssembly.Instance(A4, { env: { handle_band: this._handle_band.bind(this), mode_parsed: this._initCanvas.bind(this) } });\n }\n this._instance = t, this._wasm = this._instance.exports, this._chunk = new Uint8Array(this._wasm.memory.buffer, this._wasm.get_chunk_address(), Q3.LIMITS.CHUNK_SIZE), this._states = new Uint32Array(this._wasm.memory.buffer, this._wasm.get_state_address(), 12), this._palette = new Uint32Array(this._wasm.memory.buffer, this._wasm.get_palette_address(), Q3.LIMITS.PALETTE_SIZE), this._palette.set(this._opts.palette), this._pSrc = new Uint32Array(this._wasm.memory.buffer, this._wasm.get_p0_address()), this._wasm.init(K4.DEFAULT_FOREGROUND, 0, this._opts.paletteLimit, 0);\n }\n get _fillColor() {\n return this._states[0];\n }\n get _truncate() {\n return this._states[8];\n }\n get _rasterWidth() {\n return this._states[6];\n }\n get _rasterHeight() {\n return this._states[7];\n }\n get _width() {\n return this._states[2] ? this._states[2] - 4 : 0;\n }\n get _height() {\n return this._states[3];\n }\n get _level() {\n return this._states[9];\n }\n get _mode() {\n return this._states[10];\n }\n get _paletteLimit() {\n return this._states[11];\n }\n _initCanvas(e) {\n if (e === 2) {\n let t = this.width * this.height;\n if (t > this._canvas.length) {\n if (this._opts.memoryLimit && t * 4 > this._opts.memoryLimit) throw this.release(), new Error("image exceeds memory limit");\n this._canvas = new Uint32Array(t);\n }\n this._maxWidth = this._width;\n } else if (e === 1) if (this._level === 2) {\n let t = Math.min(this._rasterWidth, Q3.LIMITS.MAX_WIDTH) * this._rasterHeight;\n if (t > this._canvas.length) {\n if (this._opts.memoryLimit && t * 4 > this._opts.memoryLimit) throw this.release(), new Error("image exceeds memory limit");\n this._canvas = new Uint32Array(t);\n }\n } else this._canvas.length < 65536 && (this._canvas = new Uint32Array(65536));\n return 0;\n }\n _realloc(e, t) {\n let i5 = e + t;\n if (i5 > this._canvas.length) {\n if (this._opts.memoryLimit && i5 * 4 > this._opts.memoryLimit) throw this.release(), new Error("image exceeds memory limit");\n let A4 = new Uint32Array(Math.ceil(i5 / 65536) * 65536);\n A4.set(this._canvas), this._canvas = A4;\n }\n }\n _handle_band(e) {\n let t = this._PIXEL_OFFSET, i5 = this._lastOffset;\n if (this._mode === 2) {\n let A4 = this.height - this._currentHeight, r = 0;\n for (; r < 6 && A4 > 0; ) this._canvas.set(this._pSrc.subarray(t * r, t * r + e), i5 + e * r), r++, A4--;\n this._lastOffset += e * r, this._currentHeight += r;\n } else if (this._mode === 1) {\n this._realloc(i5, e * 6), this._maxWidth = Math.max(this._maxWidth, e), this._minWidth = Math.min(this._minWidth, e);\n for (let A4 = 0; A4 < 6; ++A4) this._canvas.set(this._pSrc.subarray(t * A4, t * A4 + e), i5 + e * A4);\n this._bandWidths.push(e), this._lastOffset += e * 6, this._currentHeight += 6;\n }\n return 0;\n }\n get width() {\n return this._mode !== 1 ? this._width : Math.max(this._maxWidth, this._wasm.current_width());\n }\n get height() {\n return this._mode !== 1 ? this._height : this._wasm.current_width() ? this._bandWidths.length * 6 + this._wasm.current_height() : this._bandWidths.length * 6;\n }\n get palette() {\n return this._palette.subarray(0, this._paletteLimit);\n }\n get memoryUsage() {\n return this._canvas.byteLength + this._wasm.memory.buffer.byteLength + 8 * this._bandWidths.length;\n }\n get properties() {\n return { width: this.width, height: this.height, mode: this._mode, level: this._level, truncate: !!this._truncate, paletteLimit: this._paletteLimit, fillColor: this._fillColor, memUsage: this.memoryUsage, rasterAttributes: { numerator: this._states[4], denominator: this._states[5], width: this._rasterWidth, height: this._rasterHeight } };\n }\n init(e = this._opts.fillColor, t = this._opts.palette, i5 = this._opts.paletteLimit, A4 = this._opts.truncate) {\n this._wasm.init(this._opts.sixelColor, e, i5, A4 ? 1 : 0), t && this._palette.set(t.subarray(0, Q3.LIMITS.PALETTE_SIZE)), this._bandWidths.length = 0, this._maxWidth = 0, this._minWidth = Q3.LIMITS.MAX_WIDTH, this._lastOffset = 0, this._currentHeight = 0;\n }\n decode(e, t = 0, i5 = e.length) {\n let A4 = t;\n for (; A4 < i5; ) {\n let r = Math.min(i5 - A4, Q3.LIMITS.CHUNK_SIZE);\n this._chunk.set(e.subarray(A4, A4 += r)), this._wasm.decode(0, r);\n }\n }\n decodeString(e, t = 0, i5 = e.length) {\n let A4 = t;\n for (; A4 < i5; ) {\n let r = Math.min(i5 - A4, Q3.LIMITS.CHUNK_SIZE);\n for (let n11 = 0, a2 = A4; n11 < r; ++n11, ++a2) this._chunk[n11] = e.charCodeAt(a2);\n A4 += r, this._wasm.decode(0, r);\n }\n }\n get data32() {\n if (this._mode === 0 || !this.width || !this.height) return se3;\n let e = this._wasm.current_width();\n if (this._mode === 2) {\n let t = this.height - this._currentHeight;\n if (t > 0) {\n let i5 = this._PIXEL_OFFSET, A4 = this._lastOffset, r = 0;\n for (; r < 6 && t > 0; ) this._canvas.set(this._pSrc.subarray(i5 * r, i5 * r + e), A4 + e * r), r++, t--;\n t && this._canvas.fill(this._fillColor, A4 + e * r);\n }\n return this._canvas.subarray(0, this.width * this.height);\n }\n if (this._mode === 1) {\n if (this._minWidth === this._maxWidth) {\n let r = false;\n if (e) if (e !== this._minWidth) r = true;\n else {\n let n11 = this._PIXEL_OFFSET, a2 = this._lastOffset;\n this._realloc(a2, e * 6);\n for (let o2 = 0; o2 < 6; ++o2) this._canvas.set(this._pSrc.subarray(n11 * o2, n11 * o2 + e), a2 + e * o2);\n }\n if (!r) return this._canvas.subarray(0, this.width * this.height);\n }\n let t = new Uint32Array(this.width * this.height);\n t.fill(this._fillColor);\n let i5 = 0, A4 = 0;\n for (let r = 0; r < this._bandWidths.length; ++r) {\n let n11 = this._bandWidths[r];\n for (let a2 = 0; a2 < 6; ++a2) t.set(this._canvas.subarray(A4, A4 += n11), i5), i5 += this.width;\n }\n if (e) {\n let r = this._PIXEL_OFFSET, n11 = this._wasm.current_height();\n for (let a2 = 0; a2 < n11; ++a2) t.set(this._pSrc.subarray(r * a2, r * a2 + e), i5 + this.width * a2);\n }\n return t;\n }\n return se3;\n }\n get data8() {\n return new Uint8ClampedArray(this.data32.buffer, 0, this.width * this.height * 4);\n }\n release() {\n this._canvas = se3, this._bandWidths.length = 0, this._maxWidth = 0, this._minWidth = Q3.LIMITS.MAX_WIDTH, this._wasm.init(K4.DEFAULT_FOREGROUND, 0, this._opts.paletteLimit, 0);\n }\n };\n y5.Decoder = Y2;\n function Rt3(s4, e) {\n let t = new Y2(e);\n return t.init(), typeof s4 == "string" ? t.decodeString(s4) : t.decode(s4), { width: t.width, height: t.height, data32: t.data32, data8: t.data8 };\n }\n y5.decode = Rt3;\n async function kt2(s4, e) {\n let t = await qe2(e);\n return t.init(), typeof s4 == "string" ? t.decodeString(s4) : t.decode(s4), { width: t.width, height: t.height, data32: t.data32, data8: t.data8 };\n }\n y5.decodeAsync = kt2;\n });\n function G2(s4) {\n return { dispose: s4 };\n }\n var F2 = class {\n constructor() {\n this._disposables = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n get isDisposed() {\n return this._isDisposed;\n }\n add(e) {\n return this._isDisposed ? e.dispose() : this._disposables.add(e), e;\n }\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n for (let e of this._disposables) e.dispose();\n this._disposables.clear();\n }\n }\n clear() {\n for (let e of this._disposables) e.dispose();\n this._disposables.clear();\n }\n };\n var H2 = class {\n constructor() {\n this._store = new F2();\n }\n dispose() {\n this._store.dispose();\n }\n _register(e) {\n return this._store.add(e);\n }\n };\n H2.None = Object.freeze({ dispose() {\n } });\n var W = class {\n constructor() {\n this._isDisposed = false;\n }\n get value() {\n return this._isDisposed ? void 0 : this._value;\n }\n set value(e) {\n this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e);\n }\n clear() {\n this.value = void 0;\n }\n dispose() {\n this._isDisposed = true, this._value?.dispose(), this._value = void 0;\n }\n };\n var z2 = class {\n constructor() {\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n return this._event ? this._event : (this._event = (e, t, i5) => {\n if (this._disposed) return G2(() => {\n });\n let A4 = { fn: e, thisArgs: t };\n this._listeners.push(A4);\n let r = G2(() => {\n let n11 = this._listeners.indexOf(A4);\n n11 !== -1 && this._listeners.splice(n11, 1);\n });\n return i5 && (Array.isArray(i5) ? i5.push(r) : i5.add(r)), r;\n }, this._event);\n }\n fire(e) {\n if (!this._disposed) switch (this._listeners.length) {\n case 0:\n return;\n case 1: {\n let { fn: t, thisArgs: i5 } = this._listeners[0];\n t.call(i5, e);\n return;\n }\n default: {\n let t = this._listeners.slice();\n for (let { fn: i5, thisArgs: A4 } of t) i5.call(A4, e);\n }\n }\n }\n dispose() {\n this._disposed || (this._disposed = true, this._listeners.length = 0);\n }\n };\n var ot;\n ((A4) => {\n function s4(r, n11) {\n return r((a2) => n11.fire(a2));\n }\n A4.forward = s4;\n function e(r, n11) {\n return (a2, o2, h3) => r((g6) => a2.call(o2, n11(g6)), void 0, h3);\n }\n A4.map = e;\n function t(...r) {\n return (n11, a2, o2) => {\n let h3 = new F2();\n for (let g6 of r) h3.add(g6((d3) => n11.call(a2, d3)));\n return o2 && (Array.isArray(o2) ? o2.push(h3) : o2.add(h3)), h3;\n };\n }\n A4.any = t;\n function i5(r, n11, a2) {\n return n11(a2), r((o2) => n11(o2));\n }\n A4.runAndSubscribe = i5;\n })(ot ||= {});\n var me = M2(X());\n var ct = 4096;\n var ce = 24;\n var D2 = class s extends H2 {\n constructor(t) {\n super();\n this._terminal = t;\n this._layers = /* @__PURE__ */ new Map();\n this._optionsRefresh = this._register(new W());\n this._oldOpen = this._terminal._core.open, this._terminal._core.open = (i5) => {\n this._oldOpen?.call(this._terminal._core, i5), this._open();\n }, this._terminal._core.screenElement && this._open(), this._optionsRefresh.value = this._terminal._core.optionsService.onOptionChange((i5) => {\n i5 === "fontSize" && (this.rescaleCanvas(), this._renderService?.refreshRows(0, this._terminal.rows));\n }), this._register(G2(() => {\n this.removeLayerFromDom(), this.removeLayerFromDom("bottom"), this._terminal._core && this._oldOpen && (this._terminal._core.open = this._oldOpen, this._oldOpen = void 0), this._renderService && this._oldSetRenderer && (this._renderService.setRenderer = this._oldSetRenderer, this._oldSetRenderer = void 0), this._renderService = void 0, this._layers.clear(), this._placeholderBitmap?.close(), this._placeholderBitmap = void 0, this._placeholder = void 0;\n }));\n }\n get canvas() {\n return this._layers.get("top")?.canvas;\n }\n static createCanvas(t, i5, A4) {\n let r = (t ?? document).createElement("canvas");\n return r.width = i5 | 0, r.height = A4 | 0, r;\n }\n static createImageData(t, i5, A4, r) {\n if (typeof ImageData != "function") {\n let n11 = t.createImageData(i5, A4);\n return r && n11.data.set(new Uint8ClampedArray(r, 0, i5 * A4 * 4)), n11;\n }\n return r ? new ImageData(new Uint8ClampedArray(r, 0, i5 * A4 * 4), i5, A4) : new ImageData(i5, A4);\n }\n static createImageBitmap(t) {\n return typeof createImageBitmap != "function" ? Promise.resolve(void 0) : createImageBitmap(t);\n }\n showPlaceholder(t) {\n t ? !this._placeholder && this.cellSize.height !== -1 && this._createPlaceHolder(Math.max(this.cellSize.height + 1, ce)) : (this._placeholderBitmap?.close(), this._placeholderBitmap = void 0, this._placeholder = void 0), this._renderService?.refreshRows(0, this._terminal.rows);\n }\n get dimensions() {\n return this._terminal.dimensions;\n }\n get cellSize() {\n return { width: this.dimensions?.css.cell.width || -1, height: this.dimensions?.css.cell.height || -1 };\n }\n clearLines(t, i5, A4) {\n let r = t * (this.dimensions?.css.cell.height || 0), n11 = this.dimensions?.css.canvas.width || 0, a2 = (++i5 - t) * (this.dimensions?.css.cell.height || 0);\n (!A4 || A4 === "top") && this._layers.get("top")?.clearRect(0, r, n11, a2), (!A4 || A4 === "bottom") && this._layers.get("bottom")?.clearRect(0, r, n11, a2);\n }\n clearAll(t) {\n if (!t || t === "top") {\n let i5 = this._layers.get("top");\n i5?.clearRect(0, 0, i5.canvas.width, i5.canvas.height);\n }\n if (!t || t === "bottom") {\n let i5 = this._layers.get("bottom");\n i5?.clearRect(0, 0, i5.canvas.width, i5.canvas.height);\n }\n }\n draw(t, i5, A4, r, n11 = 1) {\n let a2 = this._layers.get(t.layer);\n if (!a2) return;\n let { width: o2, height: h3 } = this.cellSize;\n if (o2 === -1 || h3 === -1) return;\n this._rescaleImage(t, o2, h3);\n let g6 = t.actual, d3 = Math.ceil(g6.width / o2), I4 = i5 % d3 * o2, _5 = Math.floor(i5 / d3) * h3, l4 = A4 * o2, u3 = r * h3, C4 = n11 * o2 + I4 > g6.width ? g6.width - I4 : n11 * o2, p3 = _5 + h3 > g6.height ? g6.height - _5 : h3;\n a2.drawImage(g6, Math.floor(I4), Math.floor(_5), Math.ceil(C4), Math.ceil(p3), Math.floor(l4), Math.floor(u3), Math.ceil(C4), Math.ceil(p3));\n }\n extractTile(t, i5) {\n let { width: A4, height: r } = this.cellSize;\n if (A4 === -1 || r === -1) return;\n this._rescaleImage(t, A4, r);\n let n11 = t.actual, a2 = Math.ceil(n11.width / A4), o2 = i5 % a2 * A4, h3 = Math.floor(i5 / a2) * r, g6 = A4 + o2 > n11.width ? n11.width - o2 : A4, d3 = h3 + r > n11.height ? n11.height - h3 : r, I4 = s.createCanvas(this.document, g6, d3), _5 = I4.getContext("2d");\n if (_5) return _5.drawImage(n11, Math.floor(o2), Math.floor(h3), Math.floor(g6), Math.floor(d3), 0, 0, Math.floor(g6), Math.floor(d3)), I4;\n }\n drawPlaceholder(t, i5, A4 = 1) {\n let r = this._layers.get("top");\n if (r) {\n let { width: n11, height: a2 } = this.cellSize;\n if (n11 === -1 || a2 === -1 || (this._placeholder ? a2 >= this._placeholder.height && this._createPlaceHolder(a2 + 1) : this._createPlaceHolder(Math.max(a2 + 1, ce)), !this._placeholder)) return;\n r.drawImage(this._placeholderBitmap ?? this._placeholder, t * n11, i5 * a2 % 2 ? 0 : 1, n11 * A4, a2, t * n11, i5 * a2, n11 * A4, a2);\n }\n }\n rescaleCanvas() {\n let t = this.dimensions?.css.canvas.width || 0, i5 = this.dimensions?.css.canvas.height || 0;\n for (let A4 of this._layers.values()) (A4.canvas.width !== t || A4.canvas.height !== i5) && (A4.canvas.width = t, A4.canvas.height = i5);\n }\n _rescaleImage(t, i5, A4) {\n if (i5 === t.actualCellSize.width && A4 === t.actualCellSize.height) return;\n let { width: r, height: n11 } = t.origCellSize;\n if (i5 === r && A4 === n11) {\n t.actual = t.orig, t.actualCellSize.width = r, t.actualCellSize.height = n11;\n return;\n }\n let a2 = s.createCanvas(this.document, Math.ceil(t.orig.width * i5 / r), Math.ceil(t.orig.height * A4 / n11)), o2 = a2.getContext("2d");\n o2 && (o2.drawImage(t.orig, 0, 0, a2.width, a2.height), t.actual = a2, t.actualCellSize.width = i5, t.actualCellSize.height = A4);\n }\n _open() {\n this._renderService = this._terminal._core._renderService, this._oldSetRenderer = this._renderService.setRenderer.bind(this._renderService), this._renderService.setRenderer = (t) => {\n for (let i5 of [...this._layers.keys()]) this.removeLayerFromDom(i5);\n this._oldSetRenderer?.call(this._renderService, t);\n };\n }\n insertLayerToDom(t = "top") {\n if (!this.document || !this._terminal._core.screenElement) {\n console.warn("image addon: cannot insert output canvas to DOM, missing document or screenElement");\n return;\n }\n if (this._layers.has(t)) return;\n let i5 = s.createCanvas(this.document, this.dimensions?.css.canvas.width || 0, this.dimensions?.css.canvas.height || 0);\n i5.classList.add(`xterm-image-layer-${t}`);\n let A4 = this._terminal._core.screenElement;\n A4.style.isolation = "isolate", t === "bottom" ? (i5.style.zIndex = "-1", A4.insertBefore(i5, A4.firstChild)) : (i5.style.zIndex = "0", A4.appendChild(i5));\n let r = i5.getContext("2d", { alpha: true });\n if (!r) {\n i5.remove();\n return;\n }\n this._layers.set(t, r), this.clearAll(t);\n }\n removeLayerFromDom(t = "top") {\n let i5 = this._layers.get(t);\n i5 && (i5.canvas.remove(), this._layers.delete(t));\n }\n hasLayer(t) {\n return this._layers.has(t);\n }\n _createPlaceHolder(t = ce) {\n this._placeholderBitmap?.close(), this._placeholderBitmap = void 0;\n let i5 = 32, A4 = s.createCanvas(this.document, i5, t), r = A4.getContext("2d", { alpha: false });\n if (!r) return;\n let n11 = s.createImageData(r, i5, t), a2 = new Uint32Array(n11.data.buffer), o2 = (0, me.toRGBA8888)(0, 0, 0), h3 = (0, me.toRGBA8888)(255, 255, 255);\n a2.fill(o2);\n for (let I4 = 0; I4 < t; ++I4) {\n let _5 = I4 % 2, l4 = I4 * i5;\n for (let u3 = 0; u3 < i5; u3 += 2) a2[l4 + u3 + _5] = h3;\n }\n r.putImageData(n11, 0, 0);\n let g6 = screen.width + i5 - 1 & ~(i5 - 1) || ct;\n this._placeholder = s.createCanvas(this.document, g6, t);\n let d3 = this._placeholder.getContext("2d", { alpha: false });\n if (!d3) {\n this._placeholder = void 0;\n return;\n }\n for (let I4 = 0; I4 < g6; I4 += i5) d3.drawImage(A4, I4, 0);\n s.createImageBitmap(this._placeholder).then((I4) => this._placeholderBitmap = I4);\n }\n get document() {\n return this._terminal._core._coreBrowserService?.window.document;\n }\n };\n var w2 = { width: 7, height: 14 };\n var U2 = class s2 {\n constructor(e = 0, t = 0, i5 = -1, A4 = -1) {\n this.imageId = i5;\n this.tileId = A4;\n this._ext = 0;\n this._urlId = 0;\n this._ext = e, this._urlId = t;\n }\n get ext() {\n return this._urlId ? this._ext & -469762049 | this.underlineStyle << 26 : this._ext;\n }\n set ext(e) {\n this._ext = e;\n }\n get underlineStyle() {\n return this._urlId ? 5 : (this._ext & 469762048) >> 26;\n }\n set underlineStyle(e) {\n this._ext &= -469762049, this._ext |= e << 26 & 469762048;\n }\n get underlineColor() {\n return this._ext & 67108863;\n }\n set underlineColor(e) {\n this._ext &= -67108864, this._ext |= e & 67108863;\n }\n get underlineVariantOffset() {\n let e = (this._ext & 3758096384) >> 29;\n return e < 0 ? e ^ 4294967288 : e;\n }\n set underlineVariantOffset(e) {\n this._ext &= 536870911, this._ext |= e << 29 & 3758096384;\n }\n get urlId() {\n return this._urlId;\n }\n set urlId(e) {\n this._urlId = e;\n }\n clone() {\n return new s2(this._ext, this._urlId, this.imageId, this.tileId);\n }\n isEmpty() {\n return this.underlineStyle === 0 && this._urlId === 0 && this.imageId === -1;\n }\n };\n var Z2 = new U2();\n var j2 = class {\n constructor(e, t, i5) {\n this._terminal = e;\n this._renderer = t;\n this._opts = i5;\n this._images = /* @__PURE__ */ new Map();\n this._lastId = 0;\n this._lowestId = 0;\n this._fullyCleared = false;\n this._needsFullClear = false;\n this._pixelLimit = 25e5;\n try {\n this.setLimit(this._opts.storageLimit);\n } catch (A4) {\n A4 instanceof Error && console.error(A4.message), console.warn(`storageLimit is set to ${this.getLimit()} MB`);\n }\n this._viewportMetrics = { cols: this._terminal.cols, rows: this._terminal.rows };\n }\n dispose() {\n this.reset();\n }\n reset() {\n for (let e of this._images.values()) e.marker?.dispose();\n this._images.clear(), this._renderer.clearAll();\n }\n getLimit() {\n return this._pixelLimit * 4 / 1e6;\n }\n setLimit(e) {\n if (e < 0.5 || e > 1e3) throw RangeError("invalid storageLimit, should be at least 0.5 MB and not exceed 1G");\n this._pixelLimit = e / 4 * 1e6 >>> 0, this._evictOldest(0);\n }\n getUsage() {\n return this._getStoredPixels() * 4 / 1e6;\n }\n _getStoredPixels() {\n let e = 0;\n for (let t of this._images.values()) t.orig && (e += t.orig.width * t.orig.height, t.actual && t.actual !== t.orig && (e += t.actual.width * t.actual.height));\n return e;\n }\n _delImg(e) {\n let t = this._images.get(e);\n t && (this._images.delete(e), window.ImageBitmap && t.orig instanceof ImageBitmap && t.orig.close(), this.onImageDeleted?.(e));\n }\n wipeAlternate() {\n let e = [];\n for (let [t, i5] of this._images.entries()) i5.bufferType === "alternate" && (i5.marker?.dispose(), e.push(t));\n for (let t of e) this._delImg(t);\n this._needsFullClear = true, this._fullyCleared = false;\n }\n deleteImage(e) {\n let t = this._images.get(e);\n t && (t.marker?.dispose(), this._delImg(e));\n }\n addImage(e, t, i5 = "top", A4 = 0) {\n this._evictOldest(e.width * e.height);\n let r = this._renderer.cellSize;\n (r.width === -1 || r.height === -1) && (r = w2);\n let n11 = Math.ceil(e.width / r.width), a2 = Math.ceil(e.height / r.height), o2 = ++this._lastId, h3 = this._terminal._core.buffer, g6 = this._terminal.cols, d3 = this._terminal.rows, I4 = h3.x, _5 = h3.y, l4 = I4, u3 = 0;\n t || (h3.x = 0, h3.y = 0, l4 = 0), this._terminal._core._inputHandler._dirtyRowTracker.markDirty(h3.y);\n for (let f5 = 0; f5 < a2; ++f5) {\n let S4 = h3.lines.get(h3.y + h3.ybase);\n for (let b4 = 0; b4 < n11 && !(l4 + b4 >= g6); ++b4) this._writeToCell(S4, l4 + b4, o2, f5 * n11 + b4), u3++;\n if (t) f5 < a2 - 1 && this._terminal._core._inputHandler.lineFeed();\n else if (++h3.y >= d3) break;\n h3.x = l4;\n }\n this._terminal._core._inputHandler._dirtyRowTracker.markDirty(h3.y), t ? h3.x = l4 : (h3.x = I4, h3.y = _5);\n let C4 = [];\n for (let [f5, S4] of this._images.entries()) S4.tileCount < 1 && (S4.marker?.dispose(), C4.push(f5));\n for (let f5 of C4) this._delImg(f5);\n let p3 = this._terminal.registerMarker(0);\n p3?.onDispose(() => {\n this._images.get(o2) && this._delImg(o2);\n }), this._terminal.buffer.active.type === "alternate" && this._evictOnAlternate();\n let E5 = { orig: e, origCellSize: r, actual: e, actualCellSize: { ...r }, marker: p3 || void 0, tileCount: u3, bufferType: this._terminal.buffer.active.type, layer: i5, zIndex: A4 };\n return this._images.set(o2, E5), this.onImageAdded?.(), o2;\n }\n render(e) {\n let t = false, i5 = false;\n for (let g6 of this._images.values()) if (g6.layer === "bottom" ? i5 = true : t = true, t && i5) break;\n if (t && !this._renderer.hasLayer("top") && (this._renderer.insertLayerToDom("top"), !this._renderer.hasLayer("top"))) return;\n if (i5 && !this._renderer.hasLayer("bottom") && this._renderer.insertLayerToDom("bottom"), this._renderer.rescaleCanvas(), !this._images.size) {\n this._fullyCleared || (this._renderer.clearAll(), this._fullyCleared = true, this._needsFullClear = false), this._renderer.hasLayer("top") && this._renderer.removeLayerFromDom("top"), this._renderer.hasLayer("bottom") && this._renderer.removeLayerFromDom("bottom");\n return;\n }\n !t && this._renderer.hasLayer("top") && (this._renderer.clearAll("top"), this._renderer.removeLayerFromDom("top")), !i5 && this._renderer.hasLayer("bottom") && (this._renderer.clearAll("bottom"), this._renderer.removeLayerFromDom("bottom")), this._needsFullClear && (this._renderer.clearAll(), this._fullyCleared = true, this._needsFullClear = false);\n let { start: A4, end: r } = e, n11 = this._terminal._core.buffer, a2 = this._terminal._core.cols;\n this._renderer.clearLines(A4, r);\n let o2 = [], h3 = [];\n for (let g6 = A4; g6 <= r; ++g6) {\n let d3 = n11.lines.get(g6 + n11.ydisp);\n if (!d3) return;\n for (let I4 = 0; I4 < a2; ++I4) {\n let _5;\n if (d3.getBg(I4) & 268435456) _5 = d3._extendedAttrs[I4] ?? Z2;\n else {\n let C4 = d3._extendedAttrs[I4];\n if (!C4 || C4.imageId === void 0 || C4.imageId === -1) continue;\n _5 = C4;\n }\n let l4 = _5.imageId;\n if (l4 === void 0 || l4 === -1) continue;\n let u3 = this._images.get(l4);\n if (_5.tileId !== -1) {\n let C4 = _5.tileId, p3 = I4, E5 = 1;\n for (; ++I4 < a2; ) {\n let f5 = d3._extendedAttrs[I4];\n if (!f5 || f5.imageId !== l4 || f5.tileId !== C4 + E5) break;\n _5 = f5, E5++;\n }\n I4--, u3 ? u3.actual && o2.push({ imgSpec: u3, tileId: C4, col: p3, row: g6, count: E5 }) : this._opts.showPlaceholder && h3.push({ col: p3, row: g6, count: E5 }), this._fullyCleared = false;\n }\n }\n }\n o2.sort((g6, d3) => g6.imgSpec.zIndex - d3.imgSpec.zIndex);\n for (let g6 of h3) this._renderer.drawPlaceholder(g6.col, g6.row, g6.count);\n for (let g6 of o2) this._renderer.draw(g6.imgSpec, g6.tileId, g6.col, g6.row, g6.count);\n }\n viewportResize(e) {\n if (!this._images.size) {\n this._viewportMetrics = e;\n return;\n }\n if (this._viewportMetrics.cols >= e.cols) {\n this._viewportMetrics = e;\n return;\n }\n let t = this._terminal._core.buffer, i5 = t.lines.length, A4 = this._viewportMetrics.cols - 1;\n for (let r = 0; r < i5; ++r) {\n let n11 = t.lines.get(r);\n if (n11.getBg(A4) & 268435456) {\n let a2 = n11._extendedAttrs[A4] ?? Z2, o2 = a2.imageId;\n if (o2 === void 0 || o2 === -1) continue;\n let h3 = this._images.get(o2);\n if (!h3) continue;\n let g6 = Math.ceil((h3.actual?.width || 0) / h3.actualCellSize.width);\n if (a2.tileId % g6 + 1 >= g6) continue;\n let d3 = false;\n for (let l4 = A4 + 1; l4 > e.cols; ++l4) if (n11._data[l4 * 3 + 0] & 4194303) {\n d3 = true;\n break;\n }\n if (d3) continue;\n let I4 = Math.min(e.cols, g6 - a2.tileId % g6 + A4), _5 = a2.tileId;\n for (let l4 = A4 + 1; l4 < I4; ++l4) this._writeToCell(n11, l4, o2, ++_5), h3.tileCount++;\n }\n }\n this._viewportMetrics = e;\n }\n getImageAtBufferCell(e, t) {\n let A4 = this._terminal._core.buffer.lines.get(t);\n if (A4 && A4.getBg(e) & 268435456) {\n let r = A4._extendedAttrs[e] ?? Z2;\n if (r.imageId && r.imageId !== -1) {\n let n11 = this._images.get(r.imageId)?.orig;\n if (window.ImageBitmap && n11 instanceof ImageBitmap) {\n let a2 = D2.createCanvas(window.document, n11.width, n11.height);\n return a2.getContext("2d")?.drawImage(n11, 0, 0, n11.width, n11.height), a2;\n }\n return n11;\n }\n }\n }\n extractTileAtBufferCell(e, t) {\n let A4 = this._terminal._core.buffer.lines.get(t);\n if (A4 && A4.getBg(e) & 268435456) {\n let r = A4._extendedAttrs[e] ?? Z2;\n if (r.imageId && r.imageId !== -1 && r.tileId !== -1) {\n let n11 = this._images.get(r.imageId);\n if (n11) return this._renderer.extractTile(n11, r.tileId);\n }\n }\n }\n _evictOldest(e) {\n let t = this._getStoredPixels(), i5 = t;\n for (; this._pixelLimit < i5 + e && this._images.size; ) {\n let A4 = this._images.get(++this._lowestId);\n A4 && A4.orig && (i5 -= A4.orig.width * A4.orig.height, A4.actual && A4.orig !== A4.actual && (i5 -= A4.actual.width * A4.actual.height), A4.marker?.dispose(), this._delImg(this._lowestId));\n }\n return t - i5;\n }\n _writeToCell(e, t, i5, A4) {\n if (e._data[t * 3 + 2] & 268435456) {\n let r = e._extendedAttrs[t];\n if (r) {\n if (r.imageId !== void 0) {\n let n11 = this._images.get(r.imageId);\n n11 && n11.tileCount--, r.imageId = i5, r.tileId = A4;\n return;\n }\n e._extendedAttrs[t] = new U2(r.ext, r.urlId, i5, A4);\n return;\n }\n }\n e._data[t * 3 + 2] |= 268435456, e._extendedAttrs[t] = new U2(0, 0, i5, A4);\n }\n _evictOnAlternate() {\n for (let i5 of this._images.values()) i5.bufferType === "alternate" && (i5.tileCount = 0);\n let e = this._terminal._core.buffer;\n for (let i5 = 0; i5 < this._terminal.rows; ++i5) {\n let A4 = e.lines.get(i5);\n if (A4) {\n for (let r = 0; r < this._terminal.cols; ++r) if (A4._data[r * 3 + 2] & 268435456) {\n let n11 = A4._extendedAttrs[r]?.imageId;\n if (n11) {\n let a2 = this._images.get(n11);\n a2 && a2.tileCount++;\n }\n }\n }\n }\n let t = [];\n for (let [i5, A4] of this._images.entries()) A4.bufferType === "alternate" && !A4.tileCount && (A4.marker?.dispose(), t.push(i5));\n for (let i5 of t) this._delImg(i5);\n }\n };\n var Ge = M2(Be());\n var Ue = M2(Re());\n function V2(s4) {\n let e = "";\n for (let t = 0; t < s4.length; ++t) e += String.fromCharCode(s4[t]);\n return e;\n }\n function Qe(s4) {\n let e = 0;\n for (let t = 0; t < s4.length; ++t) {\n if (s4[t] < 48 || s4[t] > 57) throw new Error("illegal char");\n e = e * 10 + s4[t] - 48;\n }\n return e;\n }\n function ke(s4) {\n let e = V2(s4);\n if (!e.match(/^((auto)|(\\d+?((px)|(%)){0,1}))$/)) throw new Error("illegal size");\n return e;\n }\n function bt(s4) {\n if (typeof Buffer < "u") return Buffer.from(V2(s4), "base64").toString();\n let e = atob(V2(s4)), t = new Uint8Array(e.length);\n for (let i5 = 0; i5 < t.length; ++i5) t[i5] = e.charCodeAt(i5);\n return new TextDecoder().decode(t);\n }\n var Ne = { inline: Qe, size: Qe, name: bt, width: ke, height: ke, preserveAspectRatio: Qe };\n var He = [70, 105, 108, 101];\n var De = 1024;\n var $2 = class {\n constructor() {\n this.state = 0;\n this._buffer = new Uint32Array(De);\n this._position = 0;\n this._key = "";\n this.fields = {};\n }\n reset() {\n this._buffer.fill(0), this.state = 0, this._position = 0, this.fields = {}, this._key = "";\n }\n parse(e, t, i5) {\n let A4 = this.state, r = this._position, n11 = this._buffer;\n if (A4 === 1 || A4 === 4 || A4 === 0 && r > 6) return -1;\n for (let a2 = t; a2 < i5; ++a2) {\n let o2 = e[a2];\n switch (o2) {\n case 59:\n if (!this._storeValue(r)) return this._a();\n A4 = 2, r = 0;\n break;\n case 61:\n if (A4 === 0) {\n for (let h3 = 0; h3 < He.length; ++h3) if (n11[h3] !== He[h3]) return this._a();\n A4 = 2, r = 0;\n } else if (A4 === 2) {\n if (!this._storeKey(r)) return this._a();\n A4 = 3, r = 0;\n } else if (A4 === 3) {\n if (r >= De) return this._a();\n n11[r++] = o2;\n }\n break;\n case 58:\n return A4 === 3 && !this._storeValue(r) ? this._a() : (this.state = 4, a2 + 1);\n default:\n if (r >= De) return this._a();\n n11[r++] = o2;\n }\n }\n return this.state = A4, this._position = r, -2;\n }\n _a() {\n return this.state = 1, -1;\n }\n _storeKey(e) {\n let t = V2(this._buffer.subarray(0, e));\n return t ? (this._key = t, this.fields[t] = null, true) : false;\n }\n _storeValue(e) {\n if (this._key) {\n try {\n let t = this._buffer.slice(0, e);\n this.fields[this._key] = Ne[this._key] ? Ne[this._key](t) : t;\n } catch {\n return false;\n }\n return true;\n }\n return false;\n }\n };\n var J2 = { mime: "unsupported", width: 0, height: 0 };\n function Fe(s4) {\n if (s4.length < 24) return J2;\n let e = new Uint32Array(s4.buffer, s4.byteOffset, 6);\n if (e[0] === 1196314761 && e[1] === 169478669 && e[3] === 1380206665) return { mime: "image/png", width: s4[16] << 24 | s4[17] << 16 | s4[18] << 8 | s4[19], height: s4[20] << 24 | s4[21] << 16 | s4[22] << 8 | s4[23] };\n if (s4[0] === 255 && s4[1] === 216 && s4[2] === 255) {\n let [t, i5] = yt(s4);\n return { mime: "image/jpeg", width: t, height: i5 };\n }\n return e[0] === 944130375 && (s4[4] === 55 || s4[4] === 57) && s4[5] === 97 ? { mime: "image/gif", width: s4[7] << 8 | s4[6], height: s4[9] << 8 | s4[8] } : e[0] === 1718185841 ? { mime: "image/qoi", width: s4[4] << 24 | s4[5] << 16 | s4[6] << 8 | s4[7], height: s4[8] << 24 | s4[9] << 16 | s4[10] << 8 | s4[11] } : J2;\n }\n function yt(s4) {\n let e = s4.length, t = 4, i5 = s4[t] << 8 | s4[t + 1];\n for (; ; ) {\n if (t += i5, t >= e) return [0, 0];\n if (s4[t] !== 255) return [0, 0];\n if (s4[t + 1] === 192 || s4[t + 1] === 194) return t + 8 < e ? [s4[t + 7] << 8 | s4[t + 8], s4[t + 5] << 8 | s4[t + 6]] : [0, 0];\n t += 2, i5 = s4[t] << 8 | s4[t + 1];\n }\n }\n var we = { name: "Unnamed file", size: 0, width: "auto", height: "auto", preserveAspectRatio: 1, inline: 0 };\n var ee = class {\n constructor(e, t, i5, A4) {\n this._opts = e;\n this._renderer = t;\n this._storage = i5;\n this._coreTerminal = A4;\n this._aborted = false;\n this._hp = new $2();\n this._header = we;\n this._metrics = J2;\n let r = Math.ceil(this._opts.iipSizeLimit * 4 / 3), n11 = Math.min(1048576, r);\n this._dec = new Ge.default(4194304, r, n11), this._qoiDec = new Ue.default(4194304);\n }\n reset() {\n }\n start() {\n this._aborted = false, this._header = we, this._metrics = J2, this._hp.reset();\n }\n put(e, t, i5) {\n if (!this._aborted) if (this._hp.state === 4) this._dec.put(e.subarray(t, i5)) !== 0 && (this._dec.release(), this._aborted = true);\n else {\n let A4 = this._hp.parse(e, t, i5);\n if (A4 === -1) {\n this._aborted = true;\n return;\n }\n if (A4 > 0) {\n if (this._header = Object.assign({}, we, this._hp.fields), !this._header.inline || !this._header.size || this._header.size > this._opts.iipSizeLimit) {\n this._aborted = true;\n return;\n }\n this._dec.init(), this._dec.put(e.subarray(A4, i5)) !== 0 && (this._dec.release(), this._aborted = true);\n }\n }\n }\n end(e) {\n if (this._aborted) return true;\n let t = 0, i5 = 0, A4 = true;\n if ((A4 = e) && (A4 = !this._dec.end()) && (A4 = this._dec.data8.length === this._header.size) && (this._metrics = Fe(this._dec.data8), (A4 = this._metrics.mime !== "unsupported") && (t = this._metrics.width, i5 = this._metrics.height, (A4 = t && i5 && t * i5 < this._opts.pixelLimit) && ([t, i5] = this._resize(t, i5).map(Math.floor), A4 = t && i5 && t * i5 < this._opts.pixelLimit))), !A4) return this._dec.release(), true;\n let r;\n if (this._metrics.mime === "image/qoi") {\n let n11 = this._qoiDec.decode(this._dec.data8);\n if (r = new ImageData(new Uint8ClampedArray(n11.buffer, n11.byteOffset, n11.byteLength), this._qoiDec.width, this._qoiDec.height), this._qoiDec.release(), t === this._qoiDec.width && i5 === this._qoiDec.height) {\n this._dec.release();\n let a2 = D2.createCanvas(void 0, this._qoiDec.width, this._qoiDec.height);\n return a2.getContext("2d")?.putImageData(r, 0, 0), this._storage.addImage(a2), true;\n }\n } else r = new Blob([this._dec.data8], { type: this._metrics.mime });\n return this._dec.release(), createImageBitmap(r, { resizeWidth: t, resizeHeight: i5 }).then((n11) => (this._storage.addImage(n11), true));\n }\n _resize(e, t) {\n let i5 = this._renderer.dimensions?.css.cell.width || w2.width, A4 = this._renderer.dimensions?.css.cell.height || w2.height, r = this._renderer.dimensions?.css.canvas.width || i5 * this._coreTerminal.cols, n11 = this._renderer.dimensions?.css.canvas.height || A4 * this._coreTerminal.rows, a2 = this._dim(this._header.width, r, i5), o2 = this._dim(this._header.height, n11, A4);\n if (!a2 && !o2) {\n let h3 = r / e, g6 = (n11 - A4) / t, d3 = Math.min(h3, g6);\n return d3 < 1 ? [e * d3, t * d3] : [e, t];\n }\n return a2 ? this._header.preserveAspectRatio || !a2 || !o2 ? [a2, t * a2 / e] : [a2, o2] : [e * o2 / t, o2];\n }\n _dim(e, t, i5) {\n return e === "auto" ? 0 : e.endsWith("%") ? parseInt(e.slice(0, -1)) * t / 100 : e.endsWith("px") ? parseInt(e.slice(0, -2)) : parseInt(e) * i5;\n }\n };\n var Ke = M2(Be());\n function be(s4) {\n let e = {}, t = s4.split(",");\n for (let i5 of t) {\n let A4 = i5.indexOf("=");\n if (A4 === -1) continue;\n let r = i5.substring(0, A4), n11 = i5.substring(A4 + 1);\n if (r === "a") {\n e.action = n11;\n continue;\n }\n if (r === "o") {\n e.compression = n11;\n continue;\n }\n if (r === "t") {\n e.transmission = n11;\n continue;\n }\n if (r === "d") {\n e.deleteSelector = n11;\n continue;\n }\n let a2 = parseInt(n11);\n switch (r) {\n case "f":\n e.format = a2;\n break;\n case "i":\n e.id = a2;\n break;\n case "I":\n e.imageNumber = a2;\n break;\n case "s":\n e.width = a2;\n break;\n case "v":\n e.height = a2;\n break;\n case "x":\n e.x = a2;\n break;\n case "y":\n e.y = a2;\n break;\n case "w":\n e.sourceWidth = a2;\n break;\n case "h":\n e.sourceHeight = a2;\n break;\n case "X":\n e.xOffset = a2;\n break;\n case "Y":\n e.yOffset = a2;\n break;\n case "c":\n e.columns = a2;\n break;\n case "r":\n e.rows = a2;\n break;\n case "m":\n e.more = a2;\n break;\n case "q":\n e.quiet = a2;\n break;\n case "C":\n e.cursorMovement = a2;\n break;\n case "z":\n e.zIndex = a2;\n break;\n case "p":\n e.placementId = a2;\n break;\n }\n }\n return e;\n }\n var xt = 4194304;\n var Tt = 4194304;\n var Je = 0;\n var Oe = 512;\n var vt = 59;\n var ie = class {\n constructor(e, t, i5, A4) {\n this._opts = e;\n this._renderer = t;\n this._kittyStorage = i5;\n this._coreTerminal = A4;\n this._aborted = false;\n this._decodeError = false;\n this._activeDecoder = null;\n this._inControlData = true;\n this._controlData = new Uint32Array(Oe);\n this._controlLength = 0;\n this._encodedSizeLimit = 0;\n this._totalEncodedSize = 0;\n this._parsedCommand = null;\n this._pendingTransmissions = /* @__PURE__ */ new Map();\n this._maxEncodedBytes = Math.ceil(this._opts.kittySizeLimit * 4 / 3), this._initialEncodedBytes = Math.min(Tt, this._maxEncodedBytes);\n }\n reset() {\n this._cleanupAllPending(), this._activeDecoder && (this._activeDecoder.release(), this._activeDecoder = null), this._kittyStorage.reset();\n }\n dispose() {\n this.reset();\n }\n _removePendingEntry(e) {\n this._pendingTransmissions.delete(e), this._lastPendingKey === e && (this._lastPendingKey = void 0);\n }\n _cleanupAllPending() {\n for (let e of this._pendingTransmissions.values()) e.decoder.release();\n this._pendingTransmissions.clear(), this._lastPendingKey = void 0;\n }\n start() {\n this._aborted = false, this._decodeError = false, this._inControlData = true, this._controlLength = 0, this._parsedCommand = null, this._encodedSizeLimit = this._maxEncodedBytes, this._totalEncodedSize = 0, this._activeDecoder = null;\n }\n put(e, t, i5) {\n if (!this._aborted) if (!this._inControlData) this._streamPayload(e, t, i5);\n else {\n let A4 = i5;\n for (let n11 = t; n11 < i5; n11++) if (e[n11] === vt) {\n this._inControlData = false, A4 = n11;\n break;\n }\n let r = A4 - t;\n if (this._controlLength + r > Oe) {\n this._aborted = true;\n return;\n }\n if (this._controlData.set(e.subarray(t, A4), this._controlLength), this._controlLength += r, !this._inControlData) {\n if (this._parsedCommand = be(this._parseControlDataString()), this._parsedCommand.id !== void 0 && this._parsedCommand.imageNumber !== void 0) {\n this._sendResponse(this._parsedCommand.id, "EINVAL:cannot specify both i and I keys", this._parsedCommand.quiet ?? 0), this._aborted = true;\n return;\n }\n if (this._parsedCommand.action === "d") return;\n let n11 = A4 + 1;\n n11 < i5 && this._streamPayload(e, n11, i5);\n }\n }\n }\n _streamPayload(e, t, i5) {\n if (this._aborted) return;\n let A4 = this._parsedCommand?.id ?? this._lastPendingKey ?? 0, r = this._pendingTransmissions.get(A4), n11 = r?.totalEncodedSize ?? 0;\n if (this._totalEncodedSize += i5 - t, n11 + this._totalEncodedSize > this._encodedSizeLimit) {\n let o2 = this._activeDecoder ?? r?.decoder;\n o2 && o2.release(), this._activeDecoder = null, r && this._removePendingEntry(A4), this._aborted = true;\n return;\n }\n this._decodeError || (r?.decoder && !this._activeDecoder && (this._activeDecoder = r.decoder), this._activeDecoder || (this._activeDecoder = new Ke.default(xt, this._maxEncodedBytes, this._initialEncodedBytes), this._activeDecoder.init()), this._activeDecoder.put(e.subarray(t, i5)) !== Je && (this._activeDecoder.release(), this._activeDecoder = null, this._decodeError = true, r && this._removePendingEntry(A4)));\n }\n end(e) {\n if (this._aborted || !e) return this._activeDecoder && (this._activeDecoder.release(), this._activeDecoder = null), true;\n if (this._inControlData) return this._handleNoPayloadCommand();\n let t = this._parsedCommand;\n if (t.action === "d") return this._handleDelete(t);\n let i5 = t.id ?? this._lastPendingKey ?? 0, A4 = t.more === 1, r = this._pendingTransmissions.get(i5);\n if (A4) return this._activeDecoder && (r ? (r.totalEncodedSize += this._totalEncodedSize, r.decodeError = r.decodeError || this._decodeError) : this._pendingTransmissions.set(i5, { cmd: { ...t }, decoder: this._activeDecoder, totalEncodedSize: this._totalEncodedSize, decodeError: this._decodeError }), this._lastPendingKey = i5, this._activeDecoder = null), true;\n r && (this._lastPendingKey = void 0);\n let n11 = this._decodeError, a2 = t, o2 = this._activeDecoder;\n r && (a2 = r.cmd, o2 = r.decoder, n11 = n11 || r.decodeError, this._pendingTransmissions.delete(i5));\n let h3 = new Uint8Array(0);\n o2 && (o2.end() !== Je && (n11 = true), h3 = o2.data8), this._activeDecoder = null;\n let g6 = this._handleCommandWithBytesAndCmd(a2, h3, n11);\n return o2 && o2.release(), g6;\n }\n _parseControlDataString() {\n let e = "";\n for (let t = 0; t < this._controlLength; t++) e += String.fromCodePoint(this._controlData[t]);\n return e;\n }\n _handleNoPayloadCommand() {\n let e = be(this._parseControlDataString());\n if (e.id !== void 0 && e.imageNumber !== void 0) return this._sendResponse(e.id, "EINVAL:cannot specify both i and I keys", e.quiet ?? 0), true;\n switch (e.action ?? "t") {\n case "d":\n return this._handleDelete(e);\n case "q":\n return this._sendResponse(e.id ?? 0, "OK", e.quiet ?? 0), true;\n case "p":\n return this._handlePlacement(e);\n default:\n return e.id !== void 0 && this._sendResponse(e.id, "EINVAL:unsupported action", e.quiet ?? 0), true;\n }\n }\n _handleCommandWithBytesAndCmd(e, t, i5) {\n switch (e.action ?? "t") {\n case "t": {\n let r = this._handleTransmit(e, t, i5);\n return (e.transmission ?? "d") === "d" && e.id !== void 0 && (i5 ? this._sendResponse(e.id, "EINVAL:invalid base64 data", e.quiet ?? 0) : t.length > 0 && this._sendResponse(e.id, "OK", e.quiet ?? 0)), r;\n }\n case "T":\n return this._handleTransmitDisplay(e, t, i5);\n case "q":\n return this._handleQuery(e, t, i5);\n case "p":\n return this._handlePlacement(e);\n default:\n return e.id !== void 0 && this._sendResponse(e.id, "EINVAL:unsupported action", e.quiet ?? 0), true;\n }\n }\n _handlePlacement(e) {\n if (e.id === void 0) return true;\n let t = e.id, i5 = this._kittyStorage.getImage(t);\n return i5 ? this._displayImage(i5, e).then((r) => (this._sendResponse(t, r ? "OK" : "EINVAL:image rendering failed", e.quiet ?? 0, e.placementId), true)) : (this._sendResponse(t, "ENOENT:image not found", e.quiet ?? 0, e.placementId), true);\n }\n _handleTransmit(e, t, i5) {\n return (e.transmission ?? "d") !== "d" ? (e.id !== void 0 && this._sendResponse(e.id, "EINVAL:unsupported transmission medium", e.quiet ?? 0), true) : (i5 || t.length === 0 || this._kittyStorage.storeImage(e.id, { data: new Blob([t]), width: e.width ?? 0, height: e.height ?? 0, format: e.format ?? 32, compression: e.compression ?? "" }), true);\n }\n _handleTransmitDisplay(e, t, i5) {\n if (i5) return e.id !== void 0 && this._sendResponse(e.id, "EINVAL:invalid base64 data", e.quiet ?? 0), true;\n this._handleTransmit(e, t, i5);\n let A4 = e.id ?? this._kittyStorage.lastImageId, r = this._kittyStorage.getImage(A4);\n if (r) {\n let n11 = this._displayImage(r, e);\n return e.id !== void 0 ? n11.then((a2) => (this._sendResponse(A4, a2 ? "OK" : "EINVAL:image rendering failed", e.quiet ?? 0), true)) : n11.then(() => true);\n }\n return true;\n }\n _handleQuery(e, t, i5) {\n let A4 = e.id ?? 0, r = e.quiet ?? 0;\n if ((e.transmission ?? "d") !== "d") return this._sendResponse(A4, "EINVAL:unsupported transmission medium", r), true;\n if (i5) return this._sendResponse(A4, "EINVAL:invalid base64 data", r), true;\n if (t.length === 0) return this._sendResponse(A4, "OK", r), true;\n let a2 = e.format ?? 32;\n if (a2 === 100) this._sendResponse(A4, "OK", r);\n else {\n let o2 = e.width ?? 0, h3 = e.height ?? 0;\n if (!o2 || !h3) return this._sendResponse(A4, "EINVAL:width and height required for raw pixel data", r), true;\n let g6 = a2 === 32 ? 4 : 3, d3 = o2 * h3 * g6;\n if (t.length < d3) return this._sendResponse(A4, "EINVAL:insufficient pixel data", r), true;\n this._sendResponse(A4, "OK", r);\n }\n return true;\n }\n _handleDelete(e) {\n switch (e.deleteSelector ?? "a") {\n case "a":\n case "A":\n this._cleanupAllPending(), this._kittyStorage.deleteAll();\n break;\n case "i":\n case "I":\n if (e.id !== void 0) {\n let i5 = this._pendingTransmissions.get(e.id);\n i5 && i5.decoder.release(), this._removePendingEntry(e.id), this._kittyStorage.deleteById(e.id);\n }\n break;\n default:\n break;\n }\n return true;\n }\n _sendResponse(e, t, i5, A4) {\n let r = t === "OK";\n if (r && i5 === 1 || !r && i5 === 2) return;\n let n11 = A4 ? `,p=${A4}` : "", a2 = `\\x1B_Gi=${e}${n11};${t}\\x1B\\\\`;\n this._coreTerminal._core.coreService.triggerDataEvent(a2);\n }\n _displayImage(e, t) {\n return this._decodeAndDisplay(e, t).then(() => true).catch(() => false);\n }\n async _decodeAndDisplay(e, t) {\n let i5 = await this._createBitmap(e);\n try {\n let A4 = Math.max(0, t.x ?? 0), r = Math.max(0, t.y ?? 0), n11 = t.sourceWidth || i5.width - A4, a2 = t.sourceHeight || i5.height - r, o2 = Math.max(0, i5.width - A4), h3 = Math.max(0, i5.height - r), g6 = Math.max(0, Math.min(n11, o2)), d3 = Math.max(0, Math.min(a2, h3));\n if (g6 === 0 || d3 === 0) throw new Error("invalid source rectangle");\n if (A4 !== 0 || r !== 0 || g6 !== i5.width || d3 !== i5.height) {\n let v6 = await createImageBitmap(i5, A4, r, g6, d3);\n i5.close(), i5 = v6;\n }\n let I4 = this._renderer.dimensions?.css.cell.width || w2.width, _5 = this._renderer.dimensions?.css.cell.height || w2.height, l4, u3;\n t.columns !== void 0 && t.rows !== void 0 ? (l4 = t.columns, u3 = t.rows) : t.columns !== void 0 ? (l4 = t.columns, u3 = Math.max(1, Math.ceil(i5.height / i5.width * (l4 * I4) / _5))) : t.rows !== void 0 ? (u3 = t.rows, l4 = Math.max(1, Math.ceil(i5.width / i5.height * (u3 * _5) / I4))) : (l4 = Math.ceil(i5.width / I4), u3 = Math.ceil(i5.height / _5));\n let C4 = i5.width, p3 = i5.height;\n if ((t.columns !== void 0 || t.rows !== void 0) && (C4 = Math.round(l4 * I4), p3 = Math.round(u3 * _5)), C4 * p3 > this._opts.pixelLimit) throw new Error("image exceeds pixel limit");\n let E5 = this._coreTerminal._core.buffer, f5 = E5.x, S4 = E5.y, b4 = E5.ybase, Ve3 = t.zIndex !== void 0 && t.zIndex < 0 ? "bottom" : "top";\n if (C4 !== i5.width || p3 !== i5.height) {\n let v6 = await createImageBitmap(i5, { resizeWidth: C4, resizeHeight: p3 });\n i5.close(), i5 = v6;\n }\n let he3 = Math.min(Math.max(0, t.xOffset ?? 0), I4 - 1), de3 = Math.min(Math.max(0, t.yOffset ?? 0), _5 - 1);\n if (he3 !== 0 || de3 !== 0) {\n let v6 = t.columns !== void 0 ? Math.round(l4 * I4) : i5.width + he3, et3 = t.rows !== void 0 ? Math.round(u3 * _5) : i5.height + de3, q3 = D2.createCanvas(window.document, v6, et3), xe2 = q3.getContext("2d");\n if (!xe2) throw new Error("Failed to create offset canvas context");\n xe2.drawImage(i5, he3, de3);\n let tt4 = await createImageBitmap(q3);\n if (q3.width = q3.height = 0, i5.close(), i5 = tt4, C4 = i5.width, p3 = i5.height, C4 * p3 > this._opts.pixelLimit) throw new Error("image exceeds pixel limit");\n t.columns === void 0 && (l4 = Math.ceil(i5.width / I4)), t.rows === void 0 && (u3 = Math.ceil(i5.height / _5));\n }\n let $e2 = t.zIndex ?? 0;\n if (this._kittyStorage.addImage(e.id, i5, true, Ve3, $e2), i5 = void 0, t.cursorMovement === 1) {\n let v6 = E5.ybase - b4;\n E5.x = f5, E5.y = Math.max(S4 - v6, 0);\n } else E5.x = Math.min(f5 + l4, this._coreTerminal.cols);\n } catch (A4) {\n throw i5?.close(), A4;\n }\n }\n async _createBitmap(e) {\n let t = new Uint8Array(await e.data.arrayBuffer());\n if (e.compression === "z" && (t = await this._decompressZlib(t)), e.format === 100) {\n let C4 = new Blob([t], { type: "image/png" });\n if (!window.createImageBitmap) {\n let p3 = URL.createObjectURL(C4), E5 = new Image();\n return new Promise((f5, S4) => {\n E5.addEventListener("load", () => {\n URL.revokeObjectURL(p3);\n let b4 = D2.createCanvas(window.document, E5.width, E5.height);\n b4.getContext("2d")?.drawImage(E5, 0, 0), createImageBitmap(b4).then(f5).catch(S4);\n }), E5.addEventListener("error", () => {\n URL.revokeObjectURL(p3), S4(new Error("Failed to load image"));\n }), E5.src = p3;\n });\n }\n return createImageBitmap(C4);\n }\n let i5 = e.width, A4 = e.height;\n if (!i5 || !A4) throw new Error("Width and height required for raw pixel data");\n let r = e.format === 32 ? 4 : 3, n11 = i5 * A4 * r;\n if (t.length < n11) throw new Error("Insufficient pixel data");\n let a2 = i5 * A4;\n if (e.format === 32) return createImageBitmap(new ImageData(new Uint8ClampedArray(t.buffer, t.byteOffset, a2 * 4), i5, A4));\n let o2 = new Uint8ClampedArray(a2 * 4), h3 = new Uint32Array(t.buffer, t.byteOffset, Math.floor(t.byteLength / 4)), g6 = new Uint32Array(o2.buffer), d3 = a2 & -4, I4 = 0, _5 = 0;\n for (let C4 = 0; C4 < d3; C4 += 4) {\n let p3 = h3[I4++], E5 = h3[I4++], f5 = h3[I4++];\n g6[_5++] = 4278190080 | p3, g6[_5++] = 4278190080 | p3 >>> 24 | E5 << 8, g6[_5++] = 4278190080 | E5 >>> 16 | f5 << 16, g6[_5++] = 4278190080 | f5 >>> 8;\n }\n let l4 = d3 * 3, u3 = d3 * 4;\n for (let C4 = d3; C4 < a2; C4++) o2[u3] = t[l4], o2[u3 + 1] = t[l4 + 1], o2[u3 + 2] = t[l4 + 2], o2[u3 + 3] = 255, l4 += 3, u3 += 4;\n return createImageBitmap(new ImageData(o2, i5, A4));\n }\n async _decompressZlib(e) {\n try {\n return await this._decompress(e, "deflate");\n } catch {\n return await this._decompress(e, "deflate-raw");\n }\n }\n async _decompress(e, t) {\n let i5 = new DecompressionStream(t), A4 = i5.writable.getWriter();\n A4.write(e), A4.close();\n let r = [], n11 = i5.readable.getReader();\n for (; ; ) {\n let { done: g6, value: d3 } = await n11.read();\n if (g6) break;\n r.push(d3);\n }\n let a2 = r.reduce((g6, d3) => g6 + d3.length, 0), o2 = new Uint8Array(a2), h3 = 0;\n for (let g6 of r) o2.set(g6, h3), h3 += g6.length;\n return o2;\n }\n get images() {\n return this._kittyStorage.images;\n }\n get _kittyIdToStorageId() {\n return this._kittyStorage.kittyIdToStorageId;\n }\n get pendingTransmissions() {\n return this._pendingTransmissions;\n }\n };\n var O2 = class O3 {\n constructor(e) {\n this._storage = e;\n this._nextImageId = 1;\n this._images = /* @__PURE__ */ new Map();\n this._kittyIdToStorageId = /* @__PURE__ */ new Map();\n this._storageIdToKittyId = /* @__PURE__ */ new Map();\n this._handleStorageImageDeleted = (e2) => {\n let t = this._storageIdToKittyId.get(e2);\n t !== void 0 && (this._kittyIdToStorageId.delete(t), this._storageIdToKittyId.delete(e2), this._images.delete(t));\n };\n this._previousOnImageDeleted = this._storage.onImageDeleted, this._wrappedOnImageDeleted = (t) => {\n this._previousOnImageDeleted?.(t), this._handleStorageImageDeleted(t);\n }, this._storage.onImageDeleted = this._wrappedOnImageDeleted;\n }\n reset() {\n this._nextImageId = 1, this._images.clear(), this._kittyIdToStorageId.clear(), this._storageIdToKittyId.clear();\n }\n dispose() {\n this.reset(), this._storage.onImageDeleted === this._wrappedOnImageDeleted && (this._storage.onImageDeleted = this._previousOnImageDeleted);\n }\n storeImage(e, t) {\n let i5 = e ?? this._nextImageId++, A4 = this._kittyIdToStorageId.get(i5);\n return A4 !== void 0 && (this._storage.deleteImage(A4), this._kittyIdToStorageId.delete(i5), this._storageIdToKittyId.delete(A4)), !this._images.has(i5) && this._images.size >= O3._maxStoredImages && this._evictUndisplayedImages(), this._images.set(i5, { ...t, id: i5 }), i5;\n }\n addImage(e, t, i5, A4, r) {\n let n11 = this._kittyIdToStorageId.get(e);\n n11 !== void 0 && this._storageIdToKittyId.delete(n11);\n let a2 = this._storage.addImage(t, i5, A4, r);\n this._kittyIdToStorageId.set(e, a2), this._storageIdToKittyId.set(a2, e);\n }\n getImage(e) {\n return this._images.get(e);\n }\n deleteById(e) {\n this._images.delete(e);\n let t = this._kittyIdToStorageId.get(e);\n t !== void 0 && (this._storage.deleteImage(t), this._kittyIdToStorageId.delete(e), this._storageIdToKittyId.delete(t));\n }\n deleteAll() {\n this._images.clear();\n for (let e of this._kittyIdToStorageId.values()) this._storage.deleteImage(e);\n this._kittyIdToStorageId.clear(), this._storageIdToKittyId.clear();\n }\n get images() {\n return this._images;\n }\n get kittyIdToStorageId() {\n return this._kittyIdToStorageId;\n }\n get lastImageId() {\n return this._nextImageId - 1;\n }\n _evictUndisplayedImages() {\n for (let [e] of this._images) {\n if (this._images.size <= O3._maxStoredImages / 2) break;\n this._kittyIdToStorageId.has(e) || this._images.delete(e);\n }\n }\n };\n O2._maxStoredImages = 256;\n var Ae = O2;\n var x2 = M2(X());\n var ze = M2(We());\n var Nt = 4194304;\n var Se = x2.PALETTE_ANSI_256;\n Se.set(x2.PALETTE_VT340_COLOR);\n var ae = class {\n constructor(e, t, i5) {\n this._opts = e;\n this._storage = t;\n this._coreTerminal = i5;\n this._size = 0;\n this._aborted = false;\n (0, ze.DecoderAsync)({ memoryLimit: this._opts.pixelLimit * 4, palette: Se, paletteLimit: this._opts.sixelPaletteLimit }).then((A4) => this._dec = A4);\n }\n reset() {\n this._dec && (this._dec.release(), this._dec._palette.fill(0), this._dec.init(0, Se, this._opts.sixelPaletteLimit));\n }\n hook(e) {\n if (this._size = 0, this._aborted = false, this._dec) {\n let t = e.params[1] === 1 ? 0 : Ht(this._coreTerminal._core._inputHandler._curAttrData, this._coreTerminal._core._themeService?.colors);\n this._dec.init(t, null, this._opts.sixelPaletteLimit);\n }\n }\n put(e, t, i5) {\n if (!(this._aborted || !this._dec)) {\n if (this._size += i5 - t, this._size > this._opts.sixelSizeLimit) {\n console.warn("SIXEL: too much data, aborting"), this._aborted = true, this._dec.release();\n return;\n }\n try {\n this._dec.decode(e, t, i5);\n } catch (A4) {\n console.warn(`SIXEL: error while decoding image - ${A4}`), this._aborted = true, this._dec.release();\n }\n }\n }\n unhook(e) {\n if (this._aborted || !e || !this._dec) return true;\n let t = this._dec.width, i5 = this._dec.height;\n if (!t || !i5) return i5 && this._storage.advanceCursor(i5), true;\n let A4 = D2.createCanvas(void 0, t, i5);\n return A4.getContext("2d")?.putImageData(new ImageData(this._dec.data8, t, i5), 0, 0), this._dec.memoryUsage > Nt && this._dec.release(), this._storage.addImage(A4), true;\n }\n };\n function Ht(s4, e) {\n let t = 0;\n if (!e) return t;\n if (s4.isInverse()) if (s4.isFgDefault()) t = ne(e.foreground.rgba);\n else if (s4.isFgRGB()) {\n let i5 = s4.constructor.toColorRGB(s4.getFgColor());\n t = (0, x2.toRGBA8888)(...i5);\n } else t = ne(e.ansi[s4.getFgColor()].rgba);\n else if (s4.isBgDefault()) t = ne(e.background.rgba);\n else if (s4.isBgRGB()) {\n let i5 = s4.constructor.toColorRGB(s4.getBgColor());\n t = (0, x2.toRGBA8888)(...i5);\n } else t = ne(e.ansi[s4.getBgColor()].rgba);\n return t;\n }\n function ne(s4) {\n return x2.BIG_ENDIAN ? s4 : (s4 & 255) << 24 | (s4 >>> 8 & 255) << 16 | (s4 >>> 16 & 255) << 8 | s4 >>> 24 & 255;\n }\n var oe = class {\n constructor(e, t, i5, A4) {\n this._storage = e;\n this._opts = t;\n this._renderer = i5;\n this._terminal = A4;\n }\n addImage(e) {\n this._storage.addImage(e, this._opts.sixelScrolling);\n }\n advanceCursor(e) {\n if (this._opts.sixelScrolling) {\n let t = this._renderer.cellSize;\n (t.width === -1 || t.height === -1) && (t = w2);\n let i5 = Math.ceil(e / t.height);\n for (let A4 = 1; A4 < i5; ++A4) this._terminal._core._inputHandler.lineFeed();\n }\n }\n };\n var ge = class {\n constructor(e) {\n this._storage = e;\n }\n addImage(e) {\n this._storage.addImage(e, true);\n }\n };\n var Xe = { enableSizeReports: true, pixelLimit: 16777216, sixelSupport: true, sixelScrolling: true, sixelPaletteLimit: 4096, sixelSizeLimit: 33554432, storageLimit: 128, showPlaceholder: true, iipSupport: true, iipSizeLimit: 33554432, kittySupport: true, kittySizeLimit: 33554432 };\n var Ze = 4096;\n var je = class {\n constructor(e) {\n this._disposables = [];\n this._handlers = /* @__PURE__ */ new Map();\n this._onImageAdded = new z2();\n this.onImageAdded = this._onImageAdded.event;\n this._opts = Object.assign({}, Xe, e), this._defaultOpts = Object.assign({}, Xe, e);\n }\n dispose() {\n for (let e of this._disposables) e.dispose();\n this._disposables.length = 0, this._handlers.clear(), this._onImageAdded.dispose();\n }\n _disposeLater(...e) {\n for (let t of e) this._disposables.push(t);\n }\n activate(e) {\n if (this._terminal = e, this._renderer = new D2(e), this._storage = new j2(e, this._renderer, this._opts), this._storage.onImageAdded = () => this._onImageAdded.fire(), this._opts.enableSizeReports) {\n let t = e.options.windowOptions ?? {};\n t.getWinSizePixels = true, t.getCellSizePixels = true, t.getWinSizeChars = true, e.options.windowOptions = t;\n }\n if (this._disposeLater(this._renderer, this._storage, e.parser.registerCsiHandler({ prefix: "?", final: "h" }, (t) => this._decset(t)), e.parser.registerCsiHandler({ prefix: "?", final: "l" }, (t) => this._decrst(t)), e.parser.registerCsiHandler({ final: "c" }, (t) => this._da1(t)), e.parser.registerCsiHandler({ prefix: "?", final: "S" }, (t) => this._xtermGraphicsAttributes(t)), e.onRender((t) => this._storage?.render(t)), e.parser.registerCsiHandler({ intermediates: "!", final: "p" }, () => this.reset()), e.parser.registerEscHandler({ final: "c" }, () => this.reset()), e._core._inputHandler.onRequestReset(() => this.reset()), e.buffer.onBufferChange(() => this._storage?.wipeAlternate()), e.onResize((t) => this._storage?.viewportResize(t))), this._opts.sixelSupport) {\n let t = new oe(this._storage, this._opts, this._renderer, e), i5 = new ae(this._opts, t, e);\n this._handlers.set("sixel", i5), this._disposeLater(e._core._inputHandler._parser.registerDcsHandler({ final: "q" }, i5));\n }\n if (this._opts.iipSupport) {\n let t = new ge(this._storage), i5 = new ee(this._opts, this._renderer, t, e);\n this._handlers.set("iip", i5), this._disposeLater(e._core._inputHandler._parser.registerOscHandler(1337, i5));\n }\n if (this._opts.kittySupport) {\n let t = new Ae(this._storage), i5 = new ie(this._opts, this._renderer, t, e);\n this._handlers.set("kitty", i5), this._disposeLater(t, i5, e._core._inputHandler._parser.registerApcHandler({ final: "G" }, i5));\n }\n }\n reset() {\n this._opts.sixelScrolling = this._defaultOpts.sixelScrolling, this._opts.sixelPaletteLimit = this._defaultOpts.sixelPaletteLimit, this._storage?.reset();\n for (let e of this._handlers.values()) e.reset();\n return false;\n }\n get storageLimit() {\n return this._storage?.getLimit() || -1;\n }\n set storageLimit(e) {\n this._storage?.setLimit(e), this._opts.storageLimit = e;\n }\n get storageUsage() {\n return this._storage ? this._storage.getUsage() : -1;\n }\n get showPlaceholder() {\n return this._opts.showPlaceholder;\n }\n set showPlaceholder(e) {\n this._opts.showPlaceholder = e, this._renderer?.showPlaceholder(e);\n }\n getImageAtBufferCell(e, t) {\n return this._storage?.getImageAtBufferCell(e, t);\n }\n extractTileAtBufferCell(e, t) {\n return this._storage?.extractTileAtBufferCell(e, t);\n }\n _report(e) {\n this._terminal?._core.coreService.triggerDataEvent(e);\n }\n _decset(e) {\n for (let t = 0; t < e.length; ++t) switch (e[t]) {\n case 80:\n this._opts.sixelScrolling = false;\n break;\n }\n return false;\n }\n _decrst(e) {\n for (let t = 0; t < e.length; ++t) switch (e[t]) {\n case 80:\n this._opts.sixelScrolling = true;\n break;\n }\n return false;\n }\n _da1(e) {\n return e[0] ? true : this._opts.sixelSupport ? (this._report("\\x1B[?62;4;9;22c"), true) : false;\n }\n _xtermGraphicsAttributes(e) {\n if (e.length < 2) return true;\n if (e[0] === 1) switch (e[1]) {\n case 1:\n return this._report(`\\x1B[?${e[0]};0;${this._opts.sixelPaletteLimit}S`), true;\n case 2:\n this._opts.sixelPaletteLimit = this._defaultOpts.sixelPaletteLimit, this._report(`\\x1B[?${e[0]};0;${this._opts.sixelPaletteLimit}S`);\n for (let t of this._handlers.values()) t.reset();\n return true;\n case 3:\n return e.length > 2 && !(e[2] instanceof Array) && e[2] <= Ze ? (this._opts.sixelPaletteLimit = e[2], this._report(`\\x1B[?${e[0]};0;${this._opts.sixelPaletteLimit}S`)) : this._report(`\\x1B[?${e[0]};2S`), true;\n case 4:\n return this._report(`\\x1B[?${e[0]};0;${Ze}S`), true;\n default:\n return this._report(`\\x1B[?${e[0]};2S`), true;\n }\n if (e[0] === 2) switch (e[1]) {\n case 1:\n let t = this._renderer?.dimensions?.css.canvas.width, i5 = this._renderer?.dimensions?.css.canvas.height;\n if (!t || !i5) {\n let r = w2;\n t = (this._terminal?.cols || 80) * r.width, i5 = (this._terminal?.rows || 24) * r.height;\n }\n if (t * i5 < this._opts.pixelLimit) this._report(`\\x1B[?${e[0]};0;${t.toFixed(0)};${i5.toFixed(0)}S`);\n else {\n let r = Math.floor(Math.sqrt(this._opts.pixelLimit));\n this._report(`\\x1B[?${e[0]};0;${r};${r}S`);\n }\n return true;\n case 4:\n let A4 = Math.floor(Math.sqrt(this._opts.pixelLimit));\n return this._report(`\\x1B[?${e[0]};0;${A4};${A4}S`), true;\n default:\n return this._report(`\\x1B[?${e[0]};2S`), true;\n }\n return this._report(`\\x1B[?${e[0]};1S`), true;\n }\n };\n\n // node_modules/@xterm/addon-search/lib/addon-search.mjs\n function _3(h3) {\n return { dispose: h3 };\n }\n function T2(h3) {\n if (!h3) return h3;\n if (Array.isArray(h3)) {\n for (let i5 of h3) i5.dispose();\n return [];\n }\n return h3.dispose(), h3;\n }\n function E2(...h3) {\n return _3(() => T2(h3));\n }\n var S2 = class {\n constructor() {\n this._disposables = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n get isDisposed() {\n return this._isDisposed;\n }\n add(i5) {\n return this._isDisposed ? i5.dispose() : this._disposables.add(i5), i5;\n }\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n for (let i5 of this._disposables) i5.dispose();\n this._disposables.clear();\n }\n }\n clear() {\n for (let i5 of this._disposables) i5.dispose();\n this._disposables.clear();\n }\n };\n var b2 = class {\n constructor() {\n this._store = new S2();\n }\n dispose() {\n this._store.dispose();\n }\n _register(i5) {\n return this._store.add(i5);\n }\n };\n b2.None = Object.freeze({ dispose() {\n } });\n var v2 = class {\n constructor() {\n this._isDisposed = false;\n }\n get value() {\n return this._isDisposed ? void 0 : this._value;\n }\n set value(i5) {\n this._isDisposed || i5 === this._value || (this._value?.dispose(), this._value = i5);\n }\n clear() {\n this.value = void 0;\n }\n dispose() {\n this._isDisposed = true, this._value?.dispose(), this._value = void 0;\n }\n };\n var I2 = class {\n constructor() {\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n return this._event ? this._event : (this._event = (i5, e, t) => {\n if (this._disposed) return _3(() => {\n });\n let r = { fn: i5, thisArgs: e };\n this._listeners.push(r);\n let s4 = _3(() => {\n let n11 = this._listeners.indexOf(r);\n n11 !== -1 && this._listeners.splice(n11, 1);\n });\n return t && (Array.isArray(t) ? t.push(s4) : t.add(s4)), s4;\n }, this._event);\n }\n fire(i5) {\n if (!this._disposed) switch (this._listeners.length) {\n case 0:\n return;\n case 1: {\n let { fn: e, thisArgs: t } = this._listeners[0];\n e.call(t, i5);\n return;\n }\n default: {\n let e = this._listeners.slice();\n for (let { fn: t, thisArgs: r } of e) t.call(r, i5);\n }\n }\n }\n dispose() {\n this._disposed || (this._disposed = true, this._listeners.length = 0);\n }\n };\n var W2;\n ((r) => {\n function h3(s4, n11) {\n return s4((a2) => n11.fire(a2));\n }\n r.forward = h3;\n function i5(s4, n11) {\n return (a2, o2, l4) => s4((c2) => a2.call(o2, n11(c2)), void 0, l4);\n }\n r.map = i5;\n function e(...s4) {\n return (n11, a2, o2) => {\n let l4 = new S2();\n for (let c2 of s4) l4.add(c2((p3) => n11.call(a2, p3)));\n return o2 && (Array.isArray(o2) ? o2.push(l4) : o2.add(l4)), l4;\n };\n }\n r.any = e;\n function t(s4, n11, a2) {\n return n11(a2), s4((o2) => n11(o2));\n }\n r.runAndSubscribe = t;\n })(W2 ||= {});\n function D3(h3, i5 = 0, e) {\n let t = setTimeout(() => {\n h3(), e && r.dispose();\n }, i5), r = _3(() => {\n clearTimeout(t);\n });\n return e?.add(r), r;\n }\n var C2 = class extends b2 {\n constructor(e) {\n super();\n this._terminal = e;\n this._linesCacheTimeout = this._register(new v2());\n this._linesCacheDisposables = this._register(new v2());\n this._lastAccessTimestamp = 0;\n this._register(_3(() => this._destroyLinesCache()));\n }\n initLinesCache() {\n this._linesCache || (this._linesCache = new Array(this._terminal.buffer.active.length), this._linesCacheDisposables.value = E2(this._terminal.onLineFeed(() => this._destroyLinesCache()), this._terminal.onCursorMove(() => this._destroyLinesCache()), this._terminal.onResize(() => this._destroyLinesCache()))), this._lastAccessTimestamp = Date.now(), this._linesCacheTimeout.value || this._scheduleLinesCacheTimeout(15e3);\n }\n _destroyLinesCache() {\n this._linesCache = void 0, this._lastAccessTimestamp = 0, this._linesCacheDisposables.clear(), this._linesCacheTimeout.clear();\n }\n _scheduleLinesCacheTimeout(e) {\n this._linesCacheTimeout.value = D3(() => {\n if (!this._linesCache) return;\n let r = Date.now() - this._lastAccessTimestamp;\n if (r >= 15e3) {\n this._destroyLinesCache();\n return;\n }\n this._scheduleLinesCacheTimeout(15e3 - r);\n }, e);\n }\n getLineFromCache(e) {\n return this._linesCache?.[e];\n }\n setLineInCache(e, t) {\n this._linesCache && (this._linesCache[e] = t);\n }\n translateBufferLineToStringWithWrap(e, t) {\n let r = [], s4 = [0], n11 = this._terminal.buffer.active.getLine(e);\n for (; n11; ) {\n let a2 = this._terminal.buffer.active.getLine(e + 1), o2 = a2 ? a2.isWrapped : false, l4 = n11.translateToString(!o2 && t);\n if (o2 && a2) {\n let c2 = n11.getCell(n11.length - 1);\n c2 && c2.getCode() === 0 && c2.getWidth() === 1 && a2.getCell(0)?.getWidth() === 2 && (l4 = l4.slice(0, -1));\n }\n if (r.push(l4), o2) s4.push(s4[s4.length - 1] + l4.length);\n else break;\n e++, n11 = a2;\n }\n return [r.join(""), s4];\n }\n };\n var x3 = class {\n get cachedSearchTerm() {\n return this._cachedSearchTerm;\n }\n set cachedSearchTerm(i5) {\n this._cachedSearchTerm = i5;\n }\n get lastSearchOptions() {\n return this._lastSearchOptions;\n }\n set lastSearchOptions(i5) {\n this._lastSearchOptions = i5;\n }\n isValidSearchTerm(i5) {\n return !!(i5 && i5.length > 0);\n }\n didOptionsChange(i5) {\n return this._lastSearchOptions ? i5 ? this._lastSearchOptions.caseSensitive !== i5.caseSensitive || this._lastSearchOptions.regex !== i5.regex || this._lastSearchOptions.wholeWord !== i5.wholeWord : false : true;\n }\n shouldUpdateHighlighting(i5, e) {\n return e?.decorations ? this._cachedSearchTerm === void 0 || i5 !== this._cachedSearchTerm || this.didOptionsChange(e) : false;\n }\n clearCachedTerm() {\n this._cachedSearchTerm = void 0;\n }\n reset() {\n this._cachedSearchTerm = void 0, this._lastSearchOptions = void 0;\n }\n };\n var R2 = class {\n constructor(i5, e) {\n this._terminal = i5;\n this._lineCache = e;\n }\n find(i5, e, t, r) {\n if (!i5 || i5.length === 0) {\n this._terminal.clearSelection();\n return;\n }\n if (t > this._terminal.cols) throw new Error(`Invalid col: ${t} to search in terminal of ${this._terminal.cols} cols`);\n this._lineCache.initLinesCache();\n let s4 = { startRow: e, startCol: t }, n11 = this._findInLine(i5, s4, r);\n if (!n11) for (let a2 = e + 1; a2 < this._terminal.buffer.active.baseY + this._terminal.rows && (s4.startRow = a2, s4.startCol = 0, n11 = this._findInLine(i5, s4, r), !n11); a2++) ;\n return n11;\n }\n findNextWithSelection(i5, e, t) {\n if (!i5 || i5.length === 0) {\n this._terminal.clearSelection();\n return;\n }\n let r = this._terminal.getSelectionPosition();\n this._terminal.clearSelection();\n let s4 = 0, n11 = 0;\n r && (t === i5 ? (s4 = r.end.x, n11 = r.end.y) : (s4 = r.start.x, n11 = r.start.y)), this._lineCache.initLinesCache();\n let a2 = { startRow: n11, startCol: s4 }, o2 = this._findInLine(i5, a2, e);\n if (!o2) for (let l4 = n11 + 1; l4 < this._terminal.buffer.active.baseY + this._terminal.rows && (a2.startRow = l4, a2.startCol = 0, o2 = this._findInLine(i5, a2, e), !o2); l4++) ;\n if (!o2 && n11 !== 0) for (let l4 = 0; l4 < n11 && (a2.startRow = l4, a2.startCol = 0, o2 = this._findInLine(i5, a2, e), !o2); l4++) ;\n return !o2 && r && (a2.startRow = r.start.y, a2.startCol = 0, o2 = this._findInLine(i5, a2, e)), o2;\n }\n findPreviousWithSelection(i5, e, t) {\n if (!i5 || i5.length === 0) {\n this._terminal.clearSelection();\n return;\n }\n let r = this._terminal.getSelectionPosition();\n this._terminal.clearSelection();\n let s4 = this._terminal.buffer.active.baseY + this._terminal.rows - 1, n11 = this._terminal.cols, a2 = true;\n this._lineCache.initLinesCache();\n let o2 = { startRow: s4, startCol: n11 }, l4;\n if (r && (o2.startRow = s4 = r.start.y, o2.startCol = n11 = r.start.x, t !== i5 && (l4 = this._findInLine(i5, o2, e, false), l4 || (o2.startRow = s4 = r.end.y, o2.startCol = n11 = r.end.x))), l4 ??= this._findInLine(i5, o2, e, a2), !l4) {\n o2.startCol = Math.max(o2.startCol, this._terminal.cols);\n for (let c2 = s4 - 1; c2 >= 0 && (o2.startRow = c2, l4 = this._findInLine(i5, o2, e, a2), !l4); c2--) ;\n }\n if (!l4 && s4 !== this._terminal.buffer.active.baseY + this._terminal.rows - 1) for (let c2 = this._terminal.buffer.active.baseY + this._terminal.rows - 1; c2 >= s4 && (o2.startRow = c2, l4 = this._findInLine(i5, o2, e, a2), !l4); c2--) ;\n return l4;\n }\n _isWholeWord(i5, e, t) {\n return (i5 === 0 || " ~!@#$%^&*()+`-=[]{}|\\\\;:\\"\',./<>?".includes(e[i5 - 1])) && (i5 + t.length === e.length || " ~!@#$%^&*()+`-=[]{}|\\\\;:\\"\',./<>?".includes(e[i5 + t.length]));\n }\n _findInLine(i5, e, t = {}, r = false) {\n let s4 = e.startRow, n11 = e.startCol;\n if (this._terminal.buffer.active.getLine(s4)?.isWrapped) {\n if (r) {\n e.startCol += this._terminal.cols;\n return;\n }\n return e.startRow--, e.startCol += this._terminal.cols, this._findInLine(i5, e, t);\n }\n let o2 = this._lineCache.getLineFromCache(s4);\n o2 || (o2 = this._lineCache.translateBufferLineToStringWithWrap(s4, true), this._lineCache.setLineInCache(s4, o2));\n let [l4, c2] = o2, p3 = this._bufferColsToStringOffset(s4, n11), m4 = i5, g6 = l4;\n t.regex || (m4 = t.caseSensitive ? i5 : i5.toLowerCase(), g6 = t.caseSensitive ? l4 : l4.toLowerCase());\n let f5 = -1;\n if (t.regex) {\n let u3 = RegExp(m4, t.caseSensitive ? "g" : "gi"), d3;\n if (r) for (; d3 = u3.exec(g6.slice(0, p3)); ) f5 = u3.lastIndex - d3[0].length, i5 = d3[0], u3.lastIndex -= i5.length - 1;\n else d3 = u3.exec(g6.slice(p3)), d3 && d3[0].length > 0 && (f5 = p3 + (u3.lastIndex - d3[0].length), i5 = d3[0]);\n } else r ? p3 - m4.length >= 0 && (f5 = g6.lastIndexOf(m4, p3 - m4.length)) : f5 = g6.indexOf(m4, p3);\n if (f5 >= 0) {\n if (t.wholeWord && !this._isWholeWord(f5, g6, i5)) return;\n let u3 = 0;\n for (; u3 < c2.length - 1 && f5 >= c2[u3 + 1]; ) u3++;\n let d3 = u3;\n for (; d3 < c2.length - 1 && f5 + i5.length >= c2[d3 + 1]; ) d3++;\n let O4 = f5 - c2[u3], k5 = f5 + i5.length - c2[d3], y5 = this._stringLengthToBufferSize(s4 + u3, O4), M4 = this._stringLengthToBufferSize(s4 + d3, k5) - y5 + this._terminal.cols * (d3 - u3);\n return { term: i5, col: y5, row: s4 + u3, size: M4 };\n }\n }\n _stringLengthToBufferSize(i5, e) {\n let t = this._terminal.buffer.active.getLine(i5);\n if (!t) return 0;\n for (let r = 0; r < e; r++) {\n let s4 = t.getCell(r);\n if (!s4) break;\n let n11 = s4.getChars();\n n11.length > 1 && (e -= n11.length - 1);\n let a2 = t.getCell(r + 1);\n a2 && a2.getWidth() === 0 && e++;\n }\n return e;\n }\n _bufferColsToStringOffset(i5, e) {\n let t = i5, r = 0, s4 = this._terminal.buffer.active.getLine(t);\n for (; e > 0 && s4; ) {\n for (let n11 = 0; n11 < e && n11 < this._terminal.cols; n11++) {\n let a2 = s4.getCell(n11);\n if (!a2) break;\n a2.getWidth() && (r += a2.getCode() === 0 ? 1 : a2.getChars().length);\n }\n if (t++, s4 = this._terminal.buffer.active.getLine(t), s4 && !s4.isWrapped) break;\n e -= this._terminal.cols;\n }\n return r;\n }\n };\n var w3 = class extends b2 {\n constructor(e) {\n super();\n this._terminal = e;\n this._highlightDecorations = [];\n this._highlightedLines = /* @__PURE__ */ new Set();\n this._register(_3(() => this.clearHighlightDecorations()));\n }\n createHighlightDecorations(e, t) {\n this.clearHighlightDecorations();\n for (let r of e) {\n let s4 = this._createResultDecorations(r, t, false);\n if (s4) for (let n11 of s4) this._storeDecoration(n11, r);\n }\n }\n createActiveDecoration(e, t) {\n let r = this._createResultDecorations(e, t, true);\n if (r) return { decorations: r, match: e, dispose() {\n T2(r);\n } };\n }\n clearHighlightDecorations() {\n T2(this._highlightDecorations), this._highlightDecorations = [], this._highlightedLines.clear();\n }\n _storeDecoration(e, t) {\n this._highlightedLines.add(e.marker.line), this._highlightDecorations.push({ decoration: e, match: t, dispose() {\n e.dispose();\n } });\n }\n _applyStyles(e, t, r) {\n e.classList.contains("xterm-find-result-decoration") || (e.classList.add("xterm-find-result-decoration"), t && (e.style.outline = `1px solid ${t}`)), r && e.classList.add("xterm-find-active-result-decoration");\n }\n _createResultDecorations(e, t, r) {\n let s4 = [], n11 = e.col, a2 = e.size, o2 = -this._terminal.buffer.active.baseY - this._terminal.buffer.active.cursorY + e.row;\n for (; a2 > 0; ) {\n let c2 = Math.min(this._terminal.cols - n11, a2);\n s4.push([o2, n11, c2]), n11 = 0, a2 -= c2, o2++;\n }\n let l4 = [];\n for (let c2 of s4) {\n let p3 = this._terminal.registerMarker(c2[0]), m4 = this._terminal.registerDecoration({ marker: p3, x: c2[1], width: c2[2], layer: r ? "top" : "bottom", backgroundColor: r ? t.activeMatchBackground : t.matchBackground, overviewRulerOptions: this._highlightedLines.has(p3.line) ? void 0 : { color: r ? t.activeMatchColorOverviewRuler : t.matchOverviewRuler, position: "center" } });\n if (m4) {\n let g6 = [];\n g6.push(p3), g6.push(m4.onRender((f5) => this._applyStyles(f5, r ? t.activeMatchBorder : t.matchBorder, false))), g6.push(m4.onDispose(() => T2(g6))), l4.push(m4);\n }\n }\n return l4.length === 0 ? void 0 : l4;\n }\n };\n var L2 = class extends b2 {\n constructor() {\n super(...arguments);\n this._searchResults = [];\n this._onDidChangeResults = this._register(new I2());\n }\n get onDidChangeResults() {\n return this._onDidChangeResults.event;\n }\n get searchResults() {\n return this._searchResults;\n }\n get selectedDecoration() {\n return this._selectedDecoration;\n }\n set selectedDecoration(e) {\n this._selectedDecoration = e;\n }\n updateResults(e, t) {\n this._searchResults = e.slice(0, t);\n }\n clearResults() {\n this._searchResults = [];\n }\n clearSelectedDecoration() {\n this._selectedDecoration && (this._selectedDecoration.dispose(), this._selectedDecoration = void 0);\n }\n findResultIndex(e) {\n for (let t = 0; t < this._searchResults.length; t++) {\n let r = this._searchResults[t];\n if (r.row === e.row && r.col === e.col && r.size === e.size) return t;\n }\n return -1;\n }\n fireResultsChanged(e) {\n if (!e) return;\n let t = -1;\n this._selectedDecoration && (t = this.findResultIndex(this._selectedDecoration.match)), this._onDidChangeResults.fire({ resultIndex: t, resultCount: this._searchResults.length });\n }\n reset() {\n this.clearSelectedDecoration(), this.clearResults();\n }\n };\n var A2 = class extends b2 {\n constructor(e) {\n super();\n this._highlightTimeout = this._register(new v2());\n this._lineCache = this._register(new v2());\n this._state = new x3();\n this._resultTracker = this._register(new L2());\n this._onAfterSearch = this._register(new I2());\n this.onAfterSearch = this._onAfterSearch.event;\n this._onBeforeSearch = this._register(new I2());\n this.onBeforeSearch = this._onBeforeSearch.event;\n this._highlightLimit = e?.highlightLimit ?? 1e3;\n }\n get onDidChangeResults() {\n return this._resultTracker.onDidChangeResults;\n }\n activate(e) {\n this._terminal = e, this._lineCache.value = new C2(e), this._engine = new R2(e, this._lineCache.value), this._decorationManager = new w3(e), this._register(this._terminal.onWriteParsed(() => this._updateMatches())), this._register(this._terminal.onResize(() => this._updateMatches())), this._register(_3(() => this.clearDecorations()));\n }\n _updateMatches() {\n this._highlightTimeout.clear(), this._state.cachedSearchTerm && this._state.lastSearchOptions?.decorations && (this._highlightTimeout.value = D3(() => {\n let e = this._state.cachedSearchTerm;\n this._state.clearCachedTerm(), this.findPrevious(e, { ...this._state.lastSearchOptions, incremental: true }, { noScroll: true });\n }, 200));\n }\n clearDecorations(e) {\n this._resultTracker.clearSelectedDecoration(), this._decorationManager?.clearHighlightDecorations(), this._resultTracker.clearResults(), e || this._state.clearCachedTerm();\n }\n clearActiveDecoration() {\n this._resultTracker.clearSelectedDecoration();\n }\n findNext(e, t, r) {\n if (!this._terminal || !this._engine) throw new Error("Cannot use addon until it has been loaded");\n this._onBeforeSearch.fire(), this._state.lastSearchOptions = t, this._state.shouldUpdateHighlighting(e, t) && this._highlightAllMatches(e, t);\n let s4 = this._findNextAndSelect(e, t, r);\n return this._fireResults(t), this._state.cachedSearchTerm = e, this._onAfterSearch.fire(), s4;\n }\n _highlightAllMatches(e, t) {\n if (!this._terminal || !this._engine || !this._decorationManager) throw new Error("Cannot use addon until it has been loaded");\n if (!this._state.isValidSearchTerm(e)) {\n this.clearDecorations();\n return;\n }\n this.clearDecorations(true);\n let r = [], s4, n11 = this._engine.find(e, 0, 0, t);\n for (; n11 && (s4?.row !== n11.row || s4?.col !== n11.col) && !(r.length >= this._highlightLimit); ) s4 = n11, r.push(s4), n11 = this._engine.find(e, s4.col + s4.term.length >= this._terminal.cols ? s4.row + 1 : s4.row, s4.col + s4.term.length >= this._terminal.cols ? 0 : s4.col + 1, t);\n this._resultTracker.updateResults(r, this._highlightLimit), t.decorations && this._decorationManager.createHighlightDecorations(r, t.decorations);\n }\n _findNextAndSelect(e, t, r) {\n if (!this._terminal || !this._engine) return false;\n if (!this._state.isValidSearchTerm(e)) return this._terminal.clearSelection(), this.clearDecorations(), false;\n let s4 = this._engine.findNextWithSelection(e, t, this._state.cachedSearchTerm);\n return this._selectResult(s4, t?.decorations, r?.noScroll);\n }\n findPrevious(e, t, r) {\n if (!this._terminal || !this._engine) throw new Error("Cannot use addon until it has been loaded");\n this._onBeforeSearch.fire(), this._state.lastSearchOptions = t, this._state.shouldUpdateHighlighting(e, t) && this._highlightAllMatches(e, t);\n let s4 = this._findPreviousAndSelect(e, t, r);\n return this._fireResults(t), this._state.cachedSearchTerm = e, this._onAfterSearch.fire(), s4;\n }\n _fireResults(e) {\n this._resultTracker.fireResultsChanged(!!e?.decorations);\n }\n _findPreviousAndSelect(e, t, r) {\n if (!this._terminal || !this._engine) return false;\n if (!this._state.isValidSearchTerm(e)) return this._terminal.clearSelection(), this.clearDecorations(), false;\n let s4 = this._engine.findPreviousWithSelection(e, t, this._state.cachedSearchTerm);\n return this._selectResult(s4, t?.decorations, r?.noScroll);\n }\n _selectResult(e, t, r) {\n if (!this._terminal || !this._decorationManager) return false;\n if (this._resultTracker.clearSelectedDecoration(), !e) return this._terminal.clearSelection(), false;\n if (this._terminal.select(e.col, e.row, e.size), t) {\n let s4 = this._decorationManager.createActiveDecoration(e, t);\n s4 && (this._resultTracker.selectedDecoration = s4);\n }\n if (!r && (e.row >= this._terminal.buffer.active.viewportY + this._terminal.rows || e.row < this._terminal.buffer.active.viewportY)) {\n let s4 = e.row - this._terminal.buffer.active.viewportY;\n s4 -= Math.floor(this._terminal.rows / 2), this._terminal.scrollLines(s4);\n }\n return true;\n }\n };\n\n // node_modules/@xterm/addon-unicode11/lib/addon-unicode11.mjs\n var p2 = [[768, 879], [1155, 1158], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1539], [1552, 1557], [1611, 1630], [1648, 1648], [1750, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2305, 2306], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2388], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2672, 2673], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2883], [2893, 2893], [2902, 2902], [2946, 2946], [3008, 3008], [3021, 3021], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3393, 3395], [3405, 3405], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769], [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3984, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4146], [4150, 4151], [4153, 4153], [4184, 4185], [4448, 4607], [4959, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7616, 7626], [7678, 7679], [8203, 8207], [8234, 8238], [8288, 8291], [8298, 8303], [8400, 8431], [12330, 12335], [12441, 12442], [43014, 43014], [43019, 43019], [43045, 43046], [64286, 64286], [65024, 65039], [65056, 65059], [65279, 65279], [65529, 65531]];\n var T3 = [[68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [917505, 917505], [917536, 917631], [917760, 917999]];\n var A3;\n function m2(s4, x5) {\n let i5 = 0, e = x5.length - 1, r;\n if (s4 < x5[0][0] || s4 > x5[e][1]) return false;\n for (; e >= i5; ) if (r = i5 + e >> 1, s4 > x5[r][1]) i5 = r + 1;\n else if (s4 < x5[r][0]) e = r - 1;\n else return true;\n return false;\n }\n var d2 = class {\n constructor() {\n this.version = "6";\n if (!A3) {\n A3 = new Uint8Array(65536), A3.fill(1), A3[0] = 0, A3.fill(0, 1, 32), A3.fill(0, 127, 160), A3.fill(2, 4352, 4448), A3[9001] = 2, A3[9002] = 2, A3.fill(2, 11904, 42192), A3[12351] = 1, A3.fill(2, 44032, 55204), A3.fill(2, 63744, 64256), A3.fill(2, 65040, 65050), A3.fill(2, 65072, 65136), A3.fill(2, 65280, 65377), A3.fill(2, 65504, 65511);\n for (let x5 = 0; x5 < p2.length; ++x5) A3.fill(0, p2[x5][0], p2[x5][1] + 1);\n }\n }\n wcwidth(x5) {\n return x5 < 32 ? 0 : x5 < 127 ? 1 : x5 < 65536 ? A3[x5] : m2(x5, T3) ? 0 : x5 >= 131072 && x5 <= 196605 || x5 >= 196608 && x5 <= 262141 ? 2 : 1;\n }\n charProperties(x5, i5) {\n let e = this.wcwidth(x5), r = e === 0 && i5 !== 0;\n if (r) {\n let t = B2.extractWidth(i5);\n t === 0 ? r = false : t > e && (e = t);\n }\n return B2.createPropertyValue(0, e, r);\n }\n };\n function u2(s4) {\n return { dispose: s4 };\n }\n var l2 = class {\n constructor() {\n this._disposables = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n get isDisposed() {\n return this._isDisposed;\n }\n add(x5) {\n return this._isDisposed ? x5.dispose() : this._disposables.add(x5), x5;\n }\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n for (let x5 of this._disposables) x5.dispose();\n this._disposables.clear();\n }\n }\n clear() {\n for (let x5 of this._disposables) x5.dispose();\n this._disposables.clear();\n }\n };\n var f3 = class {\n constructor() {\n this._store = new l2();\n }\n dispose() {\n this._store.dispose();\n }\n _register(x5) {\n return this._store.add(x5);\n }\n };\n f3.None = Object.freeze({ dispose() {\n } });\n var E3 = class {\n constructor() {\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n return this._event ? this._event : (this._event = (x5, i5, e) => {\n if (this._disposed) return u2(() => {\n });\n let r = { fn: x5, thisArgs: i5 };\n this._listeners.push(r);\n let t = u2(() => {\n let F4 = this._listeners.indexOf(r);\n F4 !== -1 && this._listeners.splice(F4, 1);\n });\n return e && (Array.isArray(e) ? e.push(t) : e.add(t)), t;\n }, this._event);\n }\n fire(x5) {\n if (!this._disposed) switch (this._listeners.length) {\n case 0:\n return;\n case 1: {\n let { fn: i5, thisArgs: e } = this._listeners[0];\n i5.call(e, x5);\n return;\n }\n default: {\n let i5 = this._listeners.slice();\n for (let { fn: e, thisArgs: r } of i5) e.call(r, x5);\n }\n }\n }\n dispose() {\n this._disposed || (this._disposed = true, this._listeners.length = 0);\n }\n };\n var U3;\n ((r) => {\n function s4(t, F4) {\n return t((n11) => F4.fire(n11));\n }\n r.forward = s4;\n function x5(t, F4) {\n return (n11, o2, C4) => t((c2) => n11.call(o2, F4(c2)), void 0, C4);\n }\n r.map = x5;\n function i5(...t) {\n return (F4, n11, o2) => {\n let C4 = new l2();\n for (let c2 of t) C4.add(c2((_5) => F4.call(n11, _5)));\n return o2 && (Array.isArray(o2) ? o2.push(C4) : o2.add(C4)), C4;\n };\n }\n r.any = i5;\n function e(t, F4, n11) {\n return F4(n11), t((o2) => F4(o2));\n }\n r.runAndSubscribe = e;\n })(U3 ||= {});\n var B2 = class s3 {\n constructor() {\n this._providers = /* @__PURE__ */ Object.create(null);\n this._active = "";\n this._onChange = new E3();\n this.onChange = this._onChange.event;\n let x5 = new d2();\n this.register(x5), this._active = x5.version, this._activeProvider = x5;\n }\n static extractShouldJoin(x5) {\n return (x5 & 1) !== 0;\n }\n static extractWidth(x5) {\n return x5 >> 1 & 3;\n }\n static extractCharKind(x5) {\n return x5 >> 3;\n }\n static createPropertyValue(x5, i5, e = false) {\n return (x5 & 16777215) << 3 | (i5 & 3) << 1 | (e ? 1 : 0);\n }\n dispose() {\n this._onChange.dispose();\n }\n get versions() {\n return Object.keys(this._providers);\n }\n get activeVersion() {\n return this._active;\n }\n set activeVersion(x5) {\n if (!this._providers[x5]) throw new Error(`unknown Unicode version "${x5}"`);\n this._active = x5, this._activeProvider = this._providers[x5], this._onChange.fire(x5);\n }\n register(x5) {\n this._providers[x5.version] = x5;\n }\n wcwidth(x5) {\n return this._activeProvider.wcwidth(x5);\n }\n getStringCellWidth(x5) {\n let i5 = 0, e = 0, r = x5.length;\n for (let t = 0; t < r; ++t) {\n let F4 = x5.charCodeAt(t);\n if (55296 <= F4 && F4 <= 56319) {\n if (++t >= r) return i5 + this.wcwidth(F4);\n let C4 = x5.charCodeAt(t);\n 56320 <= C4 && C4 <= 57343 ? F4 = (F4 - 55296) * 1024 + C4 - 56320 + 65536 : i5 += this.wcwidth(C4);\n }\n let n11 = this.charProperties(F4, e), o2 = s3.extractWidth(n11);\n s3.extractShouldJoin(n11) && (o2 -= s3.extractWidth(e)), i5 += o2, e = n11;\n }\n return i5;\n }\n charProperties(x5, i5) {\n return this._activeProvider.charProperties(x5, i5);\n }\n };\n var h2 = [[768, 879], [1155, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1541], [1552, 1562], [1564, 1564], [1611, 1631], [1648, 1648], [1750, 1757], [1759, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2045, 2045], [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2093], [2137, 2139], [2259, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2902, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4448, 4607], [4957, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6158], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6832, 6846], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7616, 7673], [7675, 7679], [8203, 8207], [8234, 8238], [8288, 8292], [8294, 8303], [8400, 8432], [11503, 11505], [11647, 11647], [11744, 11775], [12330, 12333], [12441, 12442], [42607, 42610], [42612, 42621], [42654, 42655], [42736, 42737], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43493, 43493], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43756, 43757], [43766, 43766], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [65024, 65039], [65056, 65071], [65279, 65279], [65529, 65531]];\n var y2 = [[66045, 66045], [66272, 66272], [66422, 66426], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [69446, 69456], [69633, 69633], [69688, 69702], [69759, 69761], [69811, 69814], [69817, 69818], [69821, 69821], [69837, 69837], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [78896, 78904], [92912, 92916], [92976, 92982], [94031, 94031], [94095, 94098], [113821, 113822], [113824, 113827], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [123184, 123190], [123628, 123631], [125136, 125142], [125252, 125258], [917505, 917505], [917536, 917631], [917760, 917999]];\n var b3 = [[4352, 4447], [8986, 8987], [9001, 9002], [9193, 9196], [9200, 9200], [9203, 9203], [9725, 9726], [9748, 9749], [9800, 9811], [9855, 9855], [9875, 9875], [9889, 9889], [9898, 9899], [9917, 9918], [9924, 9925], [9934, 9934], [9940, 9940], [9962, 9962], [9970, 9971], [9973, 9973], [9978, 9978], [9981, 9981], [9989, 9989], [9994, 9995], [10024, 10024], [10060, 10060], [10062, 10062], [10067, 10069], [10071, 10071], [10133, 10135], [10160, 10160], [10175, 10175], [11035, 11036], [11088, 11088], [11093, 11093], [11904, 11929], [11931, 12019], [12032, 12245], [12272, 12283], [12288, 12329], [12334, 12350], [12353, 12438], [12443, 12543], [12549, 12591], [12593, 12686], [12688, 12730], [12736, 12771], [12784, 12830], [12832, 12871], [12880, 19903], [19968, 42124], [42128, 42182], [43360, 43388], [44032, 55203], [63744, 64255], [65040, 65049], [65072, 65106], [65108, 65126], [65128, 65131], [65281, 65376], [65504, 65510]];\n var P2 = [[94176, 94179], [94208, 100343], [100352, 101106], [110592, 110878], [110928, 110930], [110948, 110951], [110960, 111355], [126980, 126980], [127183, 127183], [127374, 127374], [127377, 127386], [127488, 127490], [127504, 127547], [127552, 127560], [127568, 127569], [127584, 127589], [127744, 127776], [127789, 127797], [127799, 127868], [127870, 127891], [127904, 127946], [127951, 127955], [127968, 127984], [127988, 127988], [127992, 128062], [128064, 128064], [128066, 128252], [128255, 128317], [128331, 128334], [128336, 128359], [128378, 128378], [128405, 128406], [128420, 128420], [128507, 128591], [128640, 128709], [128716, 128716], [128720, 128722], [128725, 128725], [128747, 128748], [128756, 128762], [128992, 129003], [129293, 129393], [129395, 129398], [129402, 129442], [129445, 129450], [129454, 129482], [129485, 129535], [129648, 129651], [129656, 129658], [129664, 129666], [129680, 129685], [131072, 196605], [196608, 262141]];\n var D4;\n function v3(s4, x5) {\n let i5 = 0, e = x5.length - 1, r;\n if (s4 < x5[0][0] || s4 > x5[e][1]) return false;\n for (; e >= i5; ) if (r = i5 + e >> 1, s4 > x5[r][1]) i5 = r + 1;\n else if (s4 < x5[r][0]) e = r - 1;\n else return true;\n return false;\n }\n var a = class {\n constructor() {\n this.version = "11";\n if (!D4) {\n D4 = new Uint8Array(65536), D4.fill(1), D4[0] = 0, D4.fill(0, 1, 32), D4.fill(0, 127, 160);\n for (let x5 = 0; x5 < h2.length; ++x5) D4.fill(0, h2[x5][0], h2[x5][1] + 1);\n for (let x5 = 0; x5 < b3.length; ++x5) D4.fill(2, b3[x5][0], b3[x5][1] + 1);\n }\n }\n wcwidth(x5) {\n return x5 < 32 ? 0 : x5 < 127 ? 1 : x5 < 65536 ? D4[x5] : v3(x5, y2) ? 0 : v3(x5, P2) ? 2 : 1;\n }\n charProperties(x5, i5) {\n let e = this.wcwidth(x5), r = e === 0 && i5 !== 0;\n if (r) {\n let t = B2.extractWidth(i5);\n t === 0 ? r = false : t > e && (e = t);\n }\n return B2.createPropertyValue(0, e, r);\n }\n };\n var I3 = class {\n activate(x5) {\n x5.unicode.register(new a());\n }\n dispose() {\n }\n };\n\n // node_modules/@xterm/addon-web-links/lib/addon-web-links.mjs\n var v4 = class {\n constructor(e, t, n11, o2 = {}) {\n this._terminal = e;\n this._regex = t;\n this._handler = n11;\n this._options = o2;\n }\n provideLinks(e, t) {\n let n11 = g3.computeLink(e, this._regex, this._terminal, this._handler);\n t(this._addCallbacks(n11));\n }\n _addCallbacks(e) {\n return e.map((t) => (t.leave = this._options.leave, t.hover = (n11, o2) => {\n if (this._options.hover) {\n let { range: p3 } = t;\n this._options.hover(n11, o2, p3);\n }\n }, t));\n }\n };\n function k2(l4) {\n try {\n let e = new URL(l4), t = e.password && e.username ? `${e.protocol}//${e.username}:${e.password}@${e.host}` : e.username ? `${e.protocol}//${e.username}@${e.host}` : `${e.protocol}//${e.host}`;\n return l4.toLocaleLowerCase().startsWith(t.toLocaleLowerCase());\n } catch {\n return false;\n }\n }\n var g3 = class l3 {\n static computeLink(e, t, n11, o2) {\n let p3 = new RegExp(t.source, (t.flags || "") + "g"), [i5, r] = l3._getWindowedLineStrings(e - 1, n11), s4 = i5.join(""), a2, d3 = [];\n for (; a2 = p3.exec(s4); ) {\n let u3 = a2[0];\n if (!k2(u3)) continue;\n let [c2, h3] = l3._mapStrIdx(n11, r, 0, a2.index), [m4, f5] = l3._mapStrIdx(n11, c2, h3, u3.length);\n if (c2 === -1 || h3 === -1 || m4 === -1 || f5 === -1) continue;\n let b4 = { start: { x: h3 + 1, y: c2 + 1 }, end: { x: f5, y: m4 + 1 } };\n d3.push({ range: b4, text: u3, activate: o2 });\n }\n return d3;\n }\n static _getWindowedLineStrings(e, t) {\n let n11, o2 = e, p3 = e, i5 = 0, r = "", s4 = [];\n if (n11 = t.buffer.active.getLine(e)) {\n let a2 = n11.translateToString(true);\n if (n11.isWrapped && a2[0] !== " ") {\n for (i5 = 0; (n11 = t.buffer.active.getLine(--o2)) && i5 < 2048 && (r = n11.translateToString(true), i5 += r.length, s4.push(r), !(!n11.isWrapped || r.indexOf(" ") !== -1)); ) ;\n s4.reverse();\n }\n for (s4.push(a2), i5 = 0; (n11 = t.buffer.active.getLine(++p3)) && n11.isWrapped && i5 < 2048 && (r = n11.translateToString(true), i5 += r.length, s4.push(r), r.indexOf(" ") === -1); ) ;\n }\n return [s4, o2];\n }\n static _mapStrIdx(e, t, n11, o2) {\n let p3 = e.buffer.active, i5 = p3.getNullCell(), r = n11;\n for (; o2; ) {\n let s4 = p3.getLine(t);\n if (!s4) return [-1, -1];\n for (let a2 = r; a2 < s4.length; ++a2) {\n s4.getCell(a2, i5);\n let d3 = i5.getChars();\n if (i5.getWidth() && (o2 -= d3.length || 1, a2 === s4.length - 1 && d3 === "")) {\n let c2 = p3.getLine(t + 1);\n c2 && c2.isWrapped && (c2.getCell(0, i5), i5.getWidth() === 2 && (o2 += 1));\n }\n if (o2 < 0) return [t, a2];\n }\n t++, r = 0;\n }\n return [t, r];\n }\n };\n var _4 = /(https?|HTTPS?):[/]{2}[^\\s"\'!*(){}|\\\\\\^<>`]*[^\\s"\':,.!?{}|\\\\\\^~\\[\\]`()<>]/;\n function w4(l4, e) {\n let t = window.open();\n if (t) {\n try {\n t.opener = null;\n } catch {\n }\n t.location.href = e;\n } else console.warn("Opening link blocked as opener could not be cleared");\n }\n var L3 = class {\n constructor(e = w4, t = {}) {\n this._handler = e;\n this._options = t;\n }\n activate(e) {\n this._terminal = e;\n let t = this._options, n11 = t.urlRegex ?? _4;\n this._linkProvider = this._terminal.registerLinkProvider(new v4(this._terminal, n11, this._handler, t));\n }\n dispose() {\n this._linkProvider?.dispose();\n }\n };\n\n // node_modules/@xterm/addon-webgl/lib/addon-webgl.mjs\n function g4(i5) {\n return { dispose: i5 };\n }\n function St(i5) {\n if (!i5) return i5;\n if (Array.isArray(i5)) {\n for (let e of i5) e.dispose();\n return [];\n }\n return i5.dispose(), i5;\n }\n function ke2(...i5) {\n return g4(() => St(i5));\n }\n var B0 = class {\n constructor() {\n this._disposables = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n get isDisposed() {\n return this._isDisposed;\n }\n add(e) {\n return this._isDisposed ? e.dispose() : this._disposables.add(e), e;\n }\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n for (let e of this._disposables) e.dispose();\n this._disposables.clear();\n }\n }\n clear() {\n for (let e of this._disposables) e.dispose();\n this._disposables.clear();\n }\n };\n var W3 = class {\n constructor() {\n this._store = new B0();\n }\n dispose() {\n this._store.dispose();\n }\n _register(e) {\n return this._store.add(e);\n }\n };\n W3.None = Object.freeze({ dispose() {\n } });\n var C0 = class {\n constructor() {\n this._isDisposed = false;\n }\n get value() {\n return this._isDisposed ? void 0 : this._value;\n }\n set value(e) {\n this._isDisposed || e === this._value || (this._value?.dispose(), this._value = e);\n }\n clear() {\n this.value = void 0;\n }\n dispose() {\n this._isDisposed = true, this._value?.dispose(), this._value = void 0;\n }\n };\n var Ze2 = !!(typeof process < "u" && "title" in process && (typeof navigator > "u" || navigator.userAgent.startsWith("Node.js/")));\n var O0 = Ze2 ? "node" : navigator.userAgent;\n var me2 = Ze2 ? "node" : navigator.platform;\n var Ue2 = O0.includes("Firefox");\n var L1 = O0.includes("Chrome");\n var We2 = O0.includes("Edge");\n var fe = /^((?!chrome|android).)*safari/i.test(O0);\n function Ve() {\n if (!fe) return 0;\n let i5 = O0.match(/Version\\/(\\d+)/);\n return i5 === null || i5.length < 2 ? 0 : parseInt(i5[1]);\n }\n var h1 = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(me2);\n var d1 = ["Windows", "Win16", "Win32", "WinCE"].includes(me2);\n var _1 = me2.indexOf("Linux") >= 0;\n var c1 = /\\bCrOS\\b/.test(O0);\n var P3 = 0;\n var B3 = 0;\n var w5 = 0;\n var x4 = 0;\n var G3 = { css: "#00000000", rgba: 0 };\n var Z3;\n ((r) => {\n function i5(n11, a2, s4, o2) {\n return o2 !== void 0 ? `#${E0(n11)}${E0(a2)}${E0(s4)}${E0(o2)}` : `#${E0(n11)}${E0(a2)}${E0(s4)}`;\n }\n r.toCss = i5;\n function e(n11, a2, s4, o2 = 255) {\n return (n11 << 24 | a2 << 16 | s4 << 8 | o2) >>> 0;\n }\n r.toRgba = e;\n function t(n11, a2, s4, o2) {\n return { css: r.toCss(n11, a2, s4, o2), rgba: r.toRgba(n11, a2, s4, o2) };\n }\n r.toColor = t;\n })(Z3 ||= {});\n var I0;\n ((o2) => {\n function i5(l4, T4) {\n if (x4 = (T4.rgba & 255) / 255, x4 === 1) return { css: T4.css, rgba: T4.rgba };\n let h3 = T4.rgba >> 24 & 255, d3 = T4.rgba >> 16 & 255, _5 = T4.rgba >> 8 & 255, c2 = l4.rgba >> 24 & 255, u3 = l4.rgba >> 16 & 255, p3 = l4.rgba >> 8 & 255;\n P3 = c2 + Math.round((h3 - c2) * x4), B3 = u3 + Math.round((d3 - u3) * x4), w5 = p3 + Math.round((_5 - p3) * x4);\n let C4 = Z3.toCss(P3, B3, w5), Q3 = Z3.toRgba(P3, B3, w5);\n return { css: C4, rgba: Q3 };\n }\n o2.blend = i5;\n function e(l4) {\n return (l4.rgba & 255) === 255;\n }\n o2.isOpaque = e;\n function t(l4, T4, h3) {\n let d3 = h0.ensureContrastRatio(l4.rgba, T4.rgba, h3);\n if (d3) return Z3.toColor(d3 >> 24 & 255, d3 >> 16 & 255, d3 >> 8 & 255);\n }\n o2.ensureContrastRatio = t;\n function r(l4) {\n let T4 = (l4.rgba | 255) >>> 0;\n return [P3, B3, w5] = h0.toChannels(T4), { css: Z3.toCss(P3, B3, w5), rgba: T4 };\n }\n o2.opaque = r;\n function n11(l4, T4) {\n return x4 = Math.round(T4 * 255), [P3, B3, w5] = h0.toChannels(l4.rgba), { css: Z3.toCss(P3, B3, w5, x4), rgba: Z3.toRgba(P3, B3, w5, x4) };\n }\n o2.opacity = n11;\n function a2(l4, T4) {\n return x4 = l4.rgba & 255, n11(l4, x4 * T4 / 255);\n }\n o2.multiplyOpacity = a2;\n function s4(l4) {\n return [l4.rgba >> 24 & 255, l4.rgba >> 16 & 255, l4.rgba >> 8 & 255];\n }\n o2.toColorRGB = s4;\n })(I0 ||= {});\n var Rt;\n ((r) => {\n let i5, e;\n try {\n let n11 = document.createElement("canvas");\n n11.width = 1, n11.height = 1;\n let a2 = n11.getContext("2d", { willReadFrequently: true });\n a2 && (i5 = a2, i5.globalCompositeOperation = "copy", e = i5.createLinearGradient(0, 0, 1, 1));\n } catch {\n }\n function t(n11) {\n if (n11.match(/#[\\da-f]{3,8}/i)) switch (n11.length) {\n case 4:\n return P3 = parseInt(n11.slice(1, 2).repeat(2), 16), B3 = parseInt(n11.slice(2, 3).repeat(2), 16), w5 = parseInt(n11.slice(3, 4).repeat(2), 16), Z3.toColor(P3, B3, w5);\n case 5:\n return P3 = parseInt(n11.slice(1, 2).repeat(2), 16), B3 = parseInt(n11.slice(2, 3).repeat(2), 16), w5 = parseInt(n11.slice(3, 4).repeat(2), 16), x4 = parseInt(n11.slice(4, 5).repeat(2), 16), Z3.toColor(P3, B3, w5, x4);\n case 7:\n return { css: n11, rgba: (parseInt(n11.slice(1), 16) << 8 | 255) >>> 0 };\n case 9:\n return { css: n11, rgba: parseInt(n11.slice(1), 16) >>> 0 };\n }\n let a2 = n11.match(/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(,\\s*(0|1|\\d?\\.(\\d+))\\s*)?\\)/);\n if (a2) return P3 = parseInt(a2[1]), B3 = parseInt(a2[2]), w5 = parseInt(a2[3]), x4 = Math.round((a2[5] === void 0 ? 1 : parseFloat(a2[5])) * 255), Z3.toColor(P3, B3, w5, x4);\n if (n11 === "transparent") return { css: "transparent", rgba: 0 };\n if (!i5 || !e) throw new Error("css.toColor: Unsupported css format");\n if (i5.fillStyle = e, i5.fillStyle = n11, typeof i5.fillStyle != "string") throw new Error("css.toColor: Unsupported css format");\n if (i5.fillRect(0, 0, 1, 1), [P3, B3, w5, x4] = i5.getImageData(0, 0, 1, 1).data, x4 !== 255) throw new Error("css.toColor: Unsupported css format");\n return { rgba: Z3.toRgba(P3, B3, w5, x4), css: n11 };\n }\n r.toColor = t;\n })(Rt ||= {});\n var V3;\n ((t) => {\n function i5(r) {\n return e(r >> 16 & 255, r >> 8 & 255, r & 255);\n }\n t.relativeLuminance = i5;\n function e(r, n11, a2) {\n let s4 = r / 255, o2 = n11 / 255, l4 = a2 / 255, T4 = s4 <= 0.03928 ? s4 / 12.92 : Math.pow((s4 + 0.055) / 1.055, 2.4), h3 = o2 <= 0.03928 ? o2 / 12.92 : Math.pow((o2 + 0.055) / 1.055, 2.4), d3 = l4 <= 0.03928 ? l4 / 12.92 : Math.pow((l4 + 0.055) / 1.055, 2.4);\n return T4 * 0.2126 + h3 * 0.7152 + d3 * 0.0722;\n }\n t.relativeLuminance2 = e;\n })(V3 ||= {});\n var h0;\n ((a2) => {\n function i5(s4, o2) {\n if (x4 = (o2 & 255) / 255, x4 === 1) return o2;\n let l4 = o2 >> 24 & 255, T4 = o2 >> 16 & 255, h3 = o2 >> 8 & 255, d3 = s4 >> 24 & 255, _5 = s4 >> 16 & 255, c2 = s4 >> 8 & 255;\n return P3 = d3 + Math.round((l4 - d3) * x4), B3 = _5 + Math.round((T4 - _5) * x4), w5 = c2 + Math.round((h3 - c2) * x4), Z3.toRgba(P3, B3, w5);\n }\n a2.blend = i5;\n function e(s4, o2, l4) {\n let T4 = V3.relativeLuminance(s4 >> 8), h3 = V3.relativeLuminance(o2 >> 8);\n if (L0(T4, h3) < l4) {\n if (h3 < T4) {\n let u3 = t(s4, o2, l4), p3 = L0(T4, V3.relativeLuminance(u3 >> 8));\n if (p3 < l4) {\n let C4 = r(s4, o2, l4), Q3 = L0(T4, V3.relativeLuminance(C4 >> 8));\n return p3 > Q3 ? u3 : C4;\n }\n return u3;\n }\n let _5 = r(s4, o2, l4), c2 = L0(T4, V3.relativeLuminance(_5 >> 8));\n if (c2 < l4) {\n let u3 = t(s4, o2, l4), p3 = L0(T4, V3.relativeLuminance(u3 >> 8));\n return c2 > p3 ? _5 : u3;\n }\n return _5;\n }\n }\n a2.ensureContrastRatio = e;\n function t(s4, o2, l4) {\n let T4 = s4 >> 24 & 255, h3 = s4 >> 16 & 255, d3 = s4 >> 8 & 255, _5 = o2 >> 24 & 255, c2 = o2 >> 16 & 255, u3 = o2 >> 8 & 255, p3 = L0(V3.relativeLuminance2(_5, c2, u3), V3.relativeLuminance2(T4, h3, d3));\n for (; p3 < l4 && (_5 > 0 || c2 > 0 || u3 > 0); ) _5 -= Math.max(0, Math.ceil(_5 * 0.1)), c2 -= Math.max(0, Math.ceil(c2 * 0.1)), u3 -= Math.max(0, Math.ceil(u3 * 0.1)), p3 = L0(V3.relativeLuminance2(_5, c2, u3), V3.relativeLuminance2(T4, h3, d3));\n return (_5 << 24 | c2 << 16 | u3 << 8 | 255) >>> 0;\n }\n a2.reduceLuminance = t;\n function r(s4, o2, l4) {\n let T4 = s4 >> 24 & 255, h3 = s4 >> 16 & 255, d3 = s4 >> 8 & 255, _5 = o2 >> 24 & 255, c2 = o2 >> 16 & 255, u3 = o2 >> 8 & 255, p3 = L0(V3.relativeLuminance2(_5, c2, u3), V3.relativeLuminance2(T4, h3, d3));\n for (; p3 < l4 && (_5 < 255 || c2 < 255 || u3 < 255); ) _5 = Math.min(255, _5 + Math.ceil((255 - _5) * 0.1)), c2 = Math.min(255, c2 + Math.ceil((255 - c2) * 0.1)), u3 = Math.min(255, u3 + Math.ceil((255 - u3) * 0.1)), p3 = L0(V3.relativeLuminance2(_5, c2, u3), V3.relativeLuminance2(T4, h3, d3));\n return (_5 << 24 | c2 << 16 | u3 << 8 | 255) >>> 0;\n }\n a2.increaseLuminance = r;\n function n11(s4) {\n return [s4 >> 24 & 255, s4 >> 16 & 255, s4 >> 8 & 255, s4 & 255];\n }\n a2.toChannels = n11;\n })(h0 ||= {});\n function E0(i5) {\n let e = i5.toString(16);\n return e.length < 2 ? "0" + e : e;\n }\n function L0(i5, e) {\n return i5 < e ? (e + 0.05) / (i5 + 0.05) : (i5 + 0.05) / (e + 0.05);\n }\n function y3(i5) {\n if (!i5) throw new Error("value must not be falsy");\n return i5;\n }\n function K0(i5) {\n return 57508 <= i5 && i5 <= 57558;\n }\n function $e(i5) {\n return 57520 <= i5 && i5 <= 57527;\n }\n function xt2(i5) {\n return 57344 <= i5 && i5 <= 63743;\n }\n function Dt(i5) {\n return 9472 <= i5 && i5 <= 9631;\n }\n function Nt2(i5) {\n return i5 >= 128512 && i5 <= 128591 || i5 >= 127744 && i5 <= 128511 || i5 >= 128640 && i5 <= 128767 || i5 >= 9728 && i5 <= 9983 || i5 >= 9984 && i5 <= 10175 || i5 >= 65024 && i5 <= 65039 || i5 >= 129280 && i5 <= 129535 || i5 >= 127462 && i5 <= 127487;\n }\n function Ge2(i5, e, t, r) {\n return e === 1 && t > Math.ceil(r * 1.5) && i5 !== void 0 && i5 > 255 && !Nt2(i5) && !K0(i5) && !xt2(i5);\n }\n function z0(i5) {\n return K0(i5) || Dt(i5);\n }\n function Ke2() {\n return { css: { canvas: G0(), cell: G0() }, device: { canvas: G0(), cell: G0(), char: { width: 0, height: 0, left: 0, top: 0 } } };\n }\n function G0() {\n return { width: 0, height: 0 };\n }\n function ze2(i5, e, t = 0) {\n return (i5 - (Math.round(e) * 2 - t)) % (Math.round(e) * 2);\n }\n var L4;\n ((C4) => (C4.LINE_H = Object.freeze({ type: 2, data: "M0,.5 L1,.5", strokeWidth: 1 }), C4.LINE_V = Object.freeze({ type: 2, data: "M.5,0 L.5,1", strokeWidth: 1 }), C4.FADE_RIGHT = Object.freeze({ type: 2, data: "M0,.5 L.28,.5 M.32,.5 L.52,.5 M.60,.5 L.72,.5 M.84,.5 L.90,.5", strokeWidth: 1 }), C4.FADE_LEFT = Object.freeze({ type: 2, data: "M.10,.5 L.16,.5 M.28,.5 L.40,.5 M.48,.5 L.68,.5 M.72,.5 L1,.5", strokeWidth: 1 }), C4.FADE_DOWN = Object.freeze({ type: 2, data: "M.5,0 L.5,.28 M.5,.32 L.5,.52 M.5,.60 L.5,.72 M.5,.84 L.5,.90", strokeWidth: 1 }), C4.FADE_UP = Object.freeze({ type: 2, data: "M.5,.10 L.5,.16 M.5,.28 L.5,.40 M.5,.48 L.5,.68 M.5,.72 L.5,1", strokeWidth: 1 }), C4.CURVE_DOWN_RIGHT = Object.freeze({ type: 2, data: (Q3, m4) => `M.5,1 L.5,${0.5 + m4 / 0.15 * 0.5} C.5,${0.5 + m4 / 0.15 * 0.5},.5,.5,1,.5`, strokeWidth: 1 }), C4.CURVE_DOWN_LEFT = Object.freeze({ type: 2, data: (Q3, m4) => `M.5,1 L.5,${0.5 + m4 / 0.15 * 0.5} C.5,${0.5 + m4 / 0.15 * 0.5},.5,.5,0,.5`, strokeWidth: 1 }), C4.CURVE_UP_RIGHT = Object.freeze({ type: 2, data: (Q3, m4) => `M.5,0 L.5,${0.5 - m4 / 0.15 * 0.5} C.5,${0.5 - m4 / 0.15 * 0.5},.5,.5,1,.5`, strokeWidth: 1 }), C4.CURVE_UP_LEFT = Object.freeze({ type: 2, data: (Q3, m4) => `M.5,0 L.5,${0.5 - m4 / 0.15 * 0.5} C.5,${0.5 - m4 / 0.15 * 0.5},.5,.5,0,.5`, strokeWidth: 1 }), C4.NODE_FILL = Object.freeze({ type: 3, data: "M.85,.5 A.35,.175,0,1,1,.15,.5 A.35,.175,0,1,1,.85,.5" }), C4.NODE_STROKE = Object.freeze({ type: 3, data: "M.85,.5 A.35,.175,0,1,1,.15,.5 A.35,.175,0,1,1,.85,.5", strokeWidth: 1 }), C4.NODE_LINE_RIGHT = Object.freeze({ type: 3, data: "M1,.5 L.85,.5", strokeWidth: 1 }), C4.NODE_LINE_LEFT = Object.freeze({ type: 3, data: "M0,.5 L.15,.5", strokeWidth: 1 }), C4.NODE_LINE_DOWN = Object.freeze({ type: 3, data: "M.5,1 L.5,.7", strokeWidth: 1 }), C4.NODE_LINE_UP = Object.freeze({ type: 3, data: "M.5,0 L.5,.3", strokeWidth: 1 })))(L4 ||= {});\n var Xe2 = { "\\u2500": { type: 2, data: "M0,.5 L1,.5", strokeWidth: 1 }, "\\u2501": { type: 2, data: "M0,.5 L1,.5", strokeWidth: 3 }, "\\u2502": { type: 2, data: "M.5,0 L.5,1", strokeWidth: 1 }, "\\u2503": { type: 2, data: "M.5,0 L.5,1", strokeWidth: 3 }, "\\u2504": { type: 2, data: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5", strokeWidth: 1 }, "\\u2505": { type: 2, data: "M.0667,.5 L.2667,.5 M.4,.5 L.6,.5 M.7333,.5 L.9333,.5", strokeWidth: 3 }, "\\u2506": { type: 2, data: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333", strokeWidth: 1 }, "\\u2507": { type: 2, data: "M.5,.0667 L.5,.2667 M.5,.4 L.5,.6 M.5,.7333 L.5,.9333", strokeWidth: 3 }, "\\u2508": { type: 2, data: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5", strokeWidth: 1 }, "\\u2509": { type: 2, data: "M.05,.5 L.2,.5 M.3,.5 L.45,.5 M.55,.5 L.7,.5 M.8,.5 L.95,.5", strokeWidth: 3 }, "\\u250A": { type: 2, data: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95", strokeWidth: 1 }, "\\u250B": { type: 2, data: "M.5,.05 L.5,.2 M.5,.3 L.5,.45 L.5,.55 M.5,.7 L.5,.95", strokeWidth: 3 }, "\\u250C": { type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 1 }, "\\u250D": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u250E": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u250F": { type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 3 }, "\\u2510": { type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 1 }, "\\u2511": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u2512": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2513": { type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 3 }, "\\u2514": { type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 1 }, "\\u2515": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u2516": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u2517": { type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 3 }, "\\u2518": { type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 1 }, "\\u2519": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u251A": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u251B": { type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 3 }, "\\u251C": { type: 2, data: "M.5,0 L.5,1 M.5,.5 L1,.5", strokeWidth: 1 }, "\\u251D": [{ type: 2, data: "M.5,0 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u251E": [{ type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u251F": [{ type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2520": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,1", strokeWidth: 3 }], "\\u2521": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u2522": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u2523": { type: 2, data: "M.5,0 L.5,1 M.5,.5 L1,.5", strokeWidth: 3 }, "\\u2524": { type: 2, data: "M.5,0 L.5,1 M.5,.5 L0,.5", strokeWidth: 1 }, "\\u2525": [{ type: 2, data: "M.5,0 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u2526": [{ type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u2527": [{ type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2528": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,1", strokeWidth: 3 }], "\\u2529": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 3 }], "\\u252A": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 3 }], "\\u252B": { type: 2, data: "M.5,0 L.5,1 M.5,.5 L0,.5", strokeWidth: 3 }, "\\u252C": { type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,1", strokeWidth: 1 }, "\\u252D": [{ type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u252E": [{ type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u252F": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M0,.5 L1,.5", strokeWidth: 3 }], "\\u2530": [{ type: 2, data: "M0,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2531": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 3 }], "\\u2532": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u2533": { type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,1", strokeWidth: 3 }, "\\u2534": { type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,0", strokeWidth: 1 }, "\\u2535": [{ type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u2536": [{ type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u2537": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M0,.5 L1,.5", strokeWidth: 3 }], "\\u2538": [{ type: 2, data: "M0,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u2539": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 3 }], "\\u253A": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u253B": { type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,0", strokeWidth: 3 }, "\\u253C": { type: 2, data: "M0,.5 L1,.5 M.5,0 L.5,1", strokeWidth: 1 }, "\\u253D": [{ type: 2, data: "M.5,0 L.5,1 M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u253E": [{ type: 2, data: "M.5,0 L.5,1 M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u253F": [{ type: 2, data: "M.5,0 L.5,1", strokeWidth: 1 }, { type: 2, data: "M0,.5 L1,.5", strokeWidth: 3 }], "\\u2540": [{ type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u2541": [{ type: 2, data: "M.5,.5 L.5,0 M0,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2542": [{ type: 2, data: "M0,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,1", strokeWidth: 3 }], "\\u2543": [{ type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 3 }], "\\u2544": [{ type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u2545": [{ type: 2, data: "M.5,0 L.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M0,.5 L.5,.5 L.5,1", strokeWidth: 3 }], "\\u2546": [{ type: 2, data: "M.5,0 L.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M0.5,1 L.5,.5 L1,.5", strokeWidth: 3 }], "\\u2547": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0 M0,.5 L1,.5", strokeWidth: 3 }], "\\u2548": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M0,.5 L1,.5 M.5,.5 L.5,1", strokeWidth: 3 }], "\\u2549": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,1 M.5,.5 L0,.5", strokeWidth: 3 }], "\\u254A": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,0 L.5,1 M.5,.5 L1,.5", strokeWidth: 3 }], "\\u254B": { type: 2, data: "M0,.5 L1,.5 M.5,0 L.5,1", strokeWidth: 3 }, "\\u254C": { type: 2, data: "M.1,.5 L.4,.5 M.6,.5 L.9,.5", strokeWidth: 1 }, "\\u254D": { type: 2, data: "M.1,.5 L.4,.5 M.6,.5 L.9,.5", strokeWidth: 3 }, "\\u254E": { type: 2, data: "M.5,.1 L.5,.4 M.5,.6 L.5,.9", strokeWidth: 1 }, "\\u254F": { type: 2, data: "M.5,.1 L.5,.4 M.5,.6 L.5,.9", strokeWidth: 3 }, "\\u2550": { type: 2, data: (i5, e) => `M0,${0.5 - e} L1,${0.5 - e} M0,${0.5 + e} L1,${0.5 + e}`, strokeWidth: 1 }, "\\u2551": { type: 2, data: (i5, e) => `M${0.5 - i5},0 L${0.5 - i5},1 M${0.5 + i5},0 L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2552": { type: 2, data: (i5, e) => `M.5,1 L.5,${0.5 - e} L1,${0.5 - e} M.5,${0.5 + e} L1,${0.5 + e}`, strokeWidth: 1 }, "\\u2553": { type: 2, data: (i5, e) => `M${0.5 - i5},1 L${0.5 - i5},.5 L1,.5 M${0.5 + i5},.5 L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2554": { type: 2, data: (i5, e) => `M1,${0.5 - e} L${0.5 - i5},${0.5 - e} L${0.5 - i5},1 M1,${0.5 + e} L${0.5 + i5},${0.5 + e} L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2555": { type: 2, data: (i5, e) => `M0,${0.5 - e} L.5,${0.5 - e} L.5,1 M0,${0.5 + e} L.5,${0.5 + e}`, strokeWidth: 1 }, "\\u2556": { type: 2, data: (i5, e) => `M${0.5 + i5},1 L${0.5 + i5},.5 L0,.5 M${0.5 - i5},.5 L${0.5 - i5},1`, strokeWidth: 1 }, "\\u2557": { type: 2, data: (i5, e) => `M0,${0.5 + e} L${0.5 - i5},${0.5 + e} L${0.5 - i5},1 M0,${0.5 - e} L${0.5 + i5},${0.5 - e} L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2558": { type: 2, data: (i5, e) => `M.5,0 L.5,${0.5 + e} L1,${0.5 + e} M.5,${0.5 - e} L1,${0.5 - e}`, strokeWidth: 1 }, "\\u2559": { type: 2, data: (i5, e) => `M1,.5 L${0.5 - i5},.5 L${0.5 - i5},0 M${0.5 + i5},.5 L${0.5 + i5},0`, strokeWidth: 1 }, "\\u255A": { type: 2, data: (i5, e) => `M1,${0.5 - e} L${0.5 + i5},${0.5 - e} L${0.5 + i5},0 M1,${0.5 + e} L${0.5 - i5},${0.5 + e} L${0.5 - i5},0`, strokeWidth: 1 }, "\\u255B": { type: 2, data: (i5, e) => `M0,${0.5 + e} L.5,${0.5 + e} L.5,0 M0,${0.5 - e} L.5,${0.5 - e}`, strokeWidth: 1 }, "\\u255C": { type: 2, data: (i5, e) => `M0,.5 L${0.5 + i5},.5 L${0.5 + i5},0 M${0.5 - i5},.5 L${0.5 - i5},0`, strokeWidth: 1 }, "\\u255D": { type: 2, data: (i5, e) => `M0,${0.5 - e} L${0.5 - i5},${0.5 - e} L${0.5 - i5},0 M0,${0.5 + e} L${0.5 + i5},${0.5 + e} L${0.5 + i5},0`, strokeWidth: 1 }, "\\u255E": { type: 2, data: (i5, e) => `M.5,0 L.5,1 M.5,${0.5 - e} L1,${0.5 - e} M.5,${0.5 + e} L1,${0.5 + e}`, strokeWidth: 1 }, "\\u255F": { type: 2, data: (i5, e) => `M${0.5 - i5},0 L${0.5 - i5},1 M${0.5 + i5},0 L${0.5 + i5},1 M${0.5 + i5},.5 L1,.5`, strokeWidth: 1 }, "\\u2560": { type: 2, data: (i5, e) => `M${0.5 - i5},0 L${0.5 - i5},1 M1,${0.5 + e} L${0.5 + i5},${0.5 + e} L${0.5 + i5},1 M1,${0.5 - e} L${0.5 + i5},${0.5 - e} L${0.5 + i5},0`, strokeWidth: 1 }, "\\u2561": { type: 2, data: (i5, e) => `M.5,0 L.5,1 M0,${0.5 - e} L.5,${0.5 - e} M0,${0.5 + e} L.5,${0.5 + e}`, strokeWidth: 1 }, "\\u2562": { type: 2, data: (i5, e) => `M0,.5 L${0.5 - i5},.5 M${0.5 - i5},0 L${0.5 - i5},1 M${0.5 + i5},0 L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2563": { type: 2, data: (i5, e) => `M${0.5 + i5},0 L${0.5 + i5},1 M0,${0.5 + e} L${0.5 - i5},${0.5 + e} L${0.5 - i5},1 M0,${0.5 - e} L${0.5 - i5},${0.5 - e} L${0.5 - i5},0`, strokeWidth: 1 }, "\\u2564": { type: 2, data: (i5, e) => `M0,${0.5 - e} L1,${0.5 - e} M0,${0.5 + e} L1,${0.5 + e} M.5,${0.5 + e} L.5,1`, strokeWidth: 1 }, "\\u2565": { type: 2, data: (i5, e) => `M0,.5 L1,.5 M${0.5 - i5},.5 L${0.5 - i5},1 M${0.5 + i5},.5 L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2566": { type: 2, data: (i5, e) => `M0,${0.5 - e} L1,${0.5 - e} M0,${0.5 + e} L${0.5 - i5},${0.5 + e} L${0.5 - i5},1 M1,${0.5 + e} L${0.5 + i5},${0.5 + e} L${0.5 + i5},1`, strokeWidth: 1 }, "\\u2567": { type: 2, data: (i5, e) => `M.5,0 L.5,${0.5 - e} M0,${0.5 - e} L1,${0.5 - e} M0,${0.5 + e} L1,${0.5 + e}`, strokeWidth: 1 }, "\\u2568": { type: 2, data: (i5, e) => `M0,.5 L1,.5 M${0.5 - i5},.5 L${0.5 - i5},0 M${0.5 + i5},.5 L${0.5 + i5},0`, strokeWidth: 1 }, "\\u2569": { type: 2, data: (i5, e) => `M0,${0.5 + e} L1,${0.5 + e} M0,${0.5 - e} L${0.5 - i5},${0.5 - e} L${0.5 - i5},0 M1,${0.5 - e} L${0.5 + i5},${0.5 - e} L${0.5 + i5},0`, strokeWidth: 1 }, "\\u256A": { type: 2, data: (i5, e) => `M.5,0 L.5,1 M0,${0.5 - e} L1,${0.5 - e} M0,${0.5 + e} L1,${0.5 + e}`, strokeWidth: 1 }, "\\u256B": { type: 2, data: (i5, e) => `M0,.5 L1,.5 M${0.5 - i5},0 L${0.5 - i5},1 M${0.5 + i5},0 L${0.5 + i5},1`, strokeWidth: 1 }, "\\u256C": { type: 2, data: (i5, e) => `M0,${0.5 + e} L${0.5 - i5},${0.5 + e} L${0.5 - i5},1 M1,${0.5 + e} L${0.5 + i5},${0.5 + e} L${0.5 + i5},1 M0,${0.5 - e} L${0.5 - i5},${0.5 - e} L${0.5 - i5},0 M1,${0.5 - e} L${0.5 + i5},${0.5 - e} L${0.5 + i5},0`, strokeWidth: 1 }, "\\u256D": { type: 2, data: (i5, e) => `M.5,1 L.5,${0.5 + e / 0.15 * 0.5} C.5,${0.5 + e / 0.15 * 0.5},.5,.5,1,.5`, strokeWidth: 1 }, "\\u256E": { type: 2, data: (i5, e) => `M.5,1 L.5,${0.5 + e / 0.15 * 0.5} C.5,${0.5 + e / 0.15 * 0.5},.5,.5,0,.5`, strokeWidth: 1 }, "\\u256F": { type: 2, data: (i5, e) => `M.5,0 L.5,${0.5 - e / 0.15 * 0.5} C.5,${0.5 - e / 0.15 * 0.5},.5,.5,0,.5`, strokeWidth: 1 }, "\\u2570": { type: 2, data: (i5, e) => `M.5,0 L.5,${0.5 - e / 0.15 * 0.5} C.5,${0.5 - e / 0.15 * 0.5},.5,.5,1,.5`, strokeWidth: 1 }, "\\u2571": { type: 2, data: "M1,0 L0,1", strokeWidth: 1 }, "\\u2572": { type: 2, data: "M0,0 L1,1", strokeWidth: 1 }, "\\u2573": { type: 2, data: "M1,0 L0,1 M0,0 L1,1", strokeWidth: 1 }, "\\u2574": { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, "\\u2575": { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, "\\u2576": { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, "\\u2577": { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, "\\u2578": { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }, "\\u2579": { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }, "\\u257A": { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }, "\\u257B": { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }, "\\u257C": [{ type: 2, data: "M.5,.5 L0,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L1,.5", strokeWidth: 3 }], "\\u257D": [{ type: 2, data: "M.5,.5 L.5,0", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,1", strokeWidth: 3 }], "\\u257E": [{ type: 2, data: "M.5,.5 L1,.5", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L0,.5", strokeWidth: 3 }], "\\u257F": [{ type: 2, data: "M.5,.5 L.5,1", strokeWidth: 1 }, { type: 2, data: "M.5,.5 L.5,0", strokeWidth: 3 }], "\\u2580": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 4 }] }, "\\u2581": { type: 0, data: [{ x: 0, y: 7, w: 8, h: 1 }] }, "\\u2582": { type: 0, data: [{ x: 0, y: 6, w: 8, h: 2 }] }, "\\u2583": { type: 0, data: [{ x: 0, y: 5, w: 8, h: 3 }] }, "\\u2584": { type: 0, data: [{ x: 0, y: 4, w: 8, h: 4 }] }, "\\u2585": { type: 0, data: [{ x: 0, y: 3, w: 8, h: 5 }] }, "\\u2586": { type: 0, data: [{ x: 0, y: 2, w: 8, h: 6 }] }, "\\u2587": { type: 0, data: [{ x: 0, y: 1, w: 8, h: 7 }] }, "\\u2588": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 8 }] }, "\\u2589": { type: 0, data: [{ x: 0, y: 0, w: 7, h: 8 }] }, "\\u258A": { type: 0, data: [{ x: 0, y: 0, w: 6, h: 8 }] }, "\\u258B": { type: 0, data: [{ x: 0, y: 0, w: 5, h: 8 }] }, "\\u258C": { type: 0, data: [{ x: 0, y: 0, w: 4, h: 8 }] }, "\\u258D": { type: 0, data: [{ x: 0, y: 0, w: 3, h: 8 }] }, "\\u258E": { type: 0, data: [{ x: 0, y: 0, w: 2, h: 8 }] }, "\\u258F": { type: 0, data: [{ x: 0, y: 0, w: 1, h: 8 }] }, "\\u2590": { type: 0, data: [{ x: 4, y: 0, w: 4, h: 8 }] }, "\\u2591": { type: 1, data: [[1, 0], [0, 0]] }, "\\u2592": { type: 1, data: [[1, 0], [0, 1]] }, "\\u2593": { type: 1, data: [[1, 1], [1, 0]] }, "\\u2594": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 1 }] }, "\\u2595": { type: 0, data: [{ x: 7, y: 0, w: 1, h: 8 }] }, "\\u2596": { type: 0, data: [{ x: 0, y: 4, w: 4, h: 4 }] }, "\\u2597": { type: 0, data: [{ x: 4, y: 4, w: 4, h: 4 }] }, "\\u2598": { type: 0, data: [{ x: 0, y: 0, w: 4, h: 4 }] }, "\\u2599": { type: 0, data: [{ x: 0, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }] }, "\\u259A": { type: 0, data: [{ x: 0, y: 0, w: 4, h: 4 }, { x: 4, y: 4, w: 4, h: 4 }] }, "\\u259B": { type: 0, data: [{ x: 0, y: 0, w: 4, h: 8 }, { x: 4, y: 0, w: 4, h: 4 }] }, "\\u259C": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 4 }, { x: 4, y: 0, w: 4, h: 8 }] }, "\\u259D": { type: 0, data: [{ x: 4, y: 0, w: 4, h: 4 }] }, "\\u259E": { type: 0, data: [{ x: 4, y: 0, w: 4, h: 4 }, { x: 0, y: 4, w: 4, h: 4 }] }, "\\u259F": { type: 0, data: [{ x: 4, y: 0, w: 4, h: 8 }, { x: 0, y: 4, w: 8, h: 4 }] }, "\\uE0A0": { type: 5, data: { d: "M.3,1 L.03,1 L.03,.88 C.03,.82,.06,.78,.11,.73 C.15,.7,.2,.68,.28,.65 L.43,.6 C.49,.58,.53,.56,.56,.53 C.59,.5,.6,.47,.6,.43 L.6,.27 L.4,.27 L.69,.1 L.98,.27 L.78,.27 L.78,.46 C.78,.52,.76,.56,.72,.61 C.68,.66,.63,.67,.56,.7 L.48,.72 C.42,.74,.38,.76,.35,.78 C.32,.8,.31,.84,.31,.88 L.31,1 M.3,.5 L.03,.59 L.03,.09 L.3,.09 L.3,.655", type: 0 } }, "\\uE0A1": { type: 5, data: { d: "M.7,.4 L.7,.47 L.2,.47 L.2,.03 L.355,.03 L.355,.4 L.705,.4 M.7,.5 L.86,.5 L.86,.95 L.69,.95 L.44,.66 L.46,.86 L.46,.95 L.3,.95 L.3,.49 L.46,.49 L.71,.78 L.69,.565 L.69,.5", type: 0 } }, "\\uE0A2": { type: 5, data: { d: "M.25,.94 C.16,.94,.11,.92,.11,.87 L.11,.53 C.11,.48,.15,.455,.23,.45 L.23,.3 C.23,.25,.26,.22,.31,.19 C.36,.16,.43,.15,.51,.15 C.59,.15,.66,.16,.71,.19 C.77,.22,.79,.26,.79,.3 L.79,.45 C.87,.45,.91,.48,.91,.53 L.91,.87 C.91,.92,.86,.94,.77,.94 L.24,.94 M.53,.2 C.49,.2,.45,.21,.42,.23 C.39,.25,.38,.27,.38,.3 L.38,.45 L.68,.45 L.68,.3 C.68,.27,.67,.25,.64,.23 C.61,.21,.58,.2,.53,.2 M.58,.82 L.58,.66 C.63,.65,.65,.63,.65,.6 C.65,.58,.64,.57,.61,.56 C.58,.55,.56,.54,.52,.54 C.48,.54,.46,.55,.43,.56 C.4,.57,.39,.59,.39,.6 C.39,.63,.41,.64,.46,.66 L.46,.82 L.57,.82", type: 0 } }, "\\uE0A3": { type: 5, data: { d: "M.7,.4 L.7,.47 L.2,.47 L.2,.03 L.7,.03 L.7,.1 L.355,.1 L.355,.4 L.705,.4 M.7,.5 L.86,.5 L.86,.95 L.69,.95 L.44,.66 L.46,.86 L.46,.95 L.3,.95 L.3,.49 L.46,.49 L.71,.78 L.69,.565 L.69,.5", type: 0 } }, "\\uE0B0": { type: 5, data: { d: "M0,0 L1,.5 L0,1", type: 0, rightPadding: 2 } }, "\\uE0B1": { type: 5, data: { d: "M-1,-.5 L1,.5 L-1,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0B2": { type: 5, data: { d: "M1,0 L0,.5 L1,1", type: 0, leftPadding: 2 } }, "\\uE0B3": { type: 5, data: { d: "M2,-.5 L0,.5 L2,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0B4": { type: 5, data: { d: "M0,0 L0,1 C0.552,1,1,0.776,1,.5 C1,0.224,0.552,0,0,0", type: 0, rightPadding: 1 } }, "\\uE0B5": { type: 5, data: { d: "M.2,1 C.422,1,.8,.826,.78,.5 C.8,.174,0.422,0,.2,0", type: 1, rightPadding: 1 } }, "\\uE0B6": { type: 5, data: { d: "M1,0 L1,1 C0.448,1,0,0.776,0,.5 C0,0.224,0.448,0,1,0", type: 0, leftPadding: 1 } }, "\\uE0B7": { type: 5, data: { d: "M.8,1 C0.578,1,0.2,.826,.22,.5 C0.2,0.174,0.578,0,0.8,0", type: 1, leftPadding: 1 } }, "\\uE0B8": { type: 5, data: { d: "M-.5,-.5 L1.5,1.5 L-.5,1.5", type: 0 } }, "\\uE0B9": { type: 5, data: { d: "M-.5,-.5 L1.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0BA": { type: 5, data: { d: "M1.5,-.5 L-.5,1.5 L1.5,1.5", type: 0 } }, "\\uE0BB": { type: 5, data: { d: "M1.5,-.5 L-.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0BC": { type: 5, data: { d: "M1.5,-.5 L-.5,1.5 L-.5,-.5", type: 0 } }, "\\uE0BD": { type: 5, data: { d: "M1.5,-.5 L-.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0BE": { type: 5, data: { d: "M-.5,-.5 L1.5,1.5 L1.5,-.5", type: 0 } }, "\\uE0BF": { type: 5, data: { d: "M-.5,-.5 L1.5,1.5", type: 1, leftPadding: 1, rightPadding: 1 } }, "\\uE0C0": { type: 5, data: { d: "M0.8069,0.6075 Q0.7991,0.612,0.7815,0.6218 T0.7542,0.6369 T0.7282,0.6508 T0.7016,0.6644 T0.6778,0.6758 T0.6551,0.6854 T0.637,0.6911 T0.622,0.6936 Q0.6186,0.6936,0.6128,0.6942 T0.6018,0.6952 T0.5894,0.6956 T0.5757,0.6952 T0.561,0.693 T0.5451,0.6879 Q0.5342,0.6834,0.5193,0.6756 T0.4925,0.6614 T0.4673,0.6485 T0.4436,0.6389 T0.4239,0.6363 T0.4089,0.6422 Q0.4045,0.6467,0.3958,0.6554 T0.3843,0.6669 T0.3748,0.6746 T0.3613,0.683 T0.3442,0.6903 L0.3499,0.6956 Q0.3584,0.7042,0.3679,0.7177 T0.3836,0.7403 T0.4019,0.7583 T0.4295,0.7703 Q0.4688,0.7785,0.5203,0.7605 Q0.4902,0.7817,0.449,0.7911 T0.3696,0.8001 Q0.3567,0.7997,0.341,0.7942 T0.3111,0.7813 T0.2805,0.766 T0.2493,0.753 T0.218,0.7472 T0.187,0.754 Q0.1762,0.7589,0.1653,0.7681 T0.1453,0.7895 T0.1308,0.818 T0.1264,0.8507 L0.1264,0.858 Q0.1453,0.8462,0.1607,0.8433 T0.1899,0.8452 T0.2226,0.8625 Q0.2344,0.8707,0.2485,0.8752 T0.2813,0.8831 T0.3089,0.889 Q0.2981,0.8915,0.2846,0.8956 T0.2603,0.9037 T0.2368,0.9115 T0.2129,0.9174 T0.1894,0.9194 T0.1653,0.9155 Q0.1504,0.9115,0.1328,0.9196 T0.0986,0.9421 T0.0655,0.9708 T0.0317,0.9943 T0,1 Q0.001,0.94,0.0017,0.6508 T0.0024,0.2322 Q0.002,0.2109,0.0007,0.1379 T0,0.0249 Q0.0058,0.0253,0.009,0.0257 T0.0156,0.0288 T0.0203,0.0333 T0.0264,0.0422 T0.0349,0.0539 Q0.044,0.0657,0.0542,0.072 T0.0752,0.0789 T0.096,0.0775 T0.1175,0.0694 T0.1379,0.0573 T0.1579,0.0432 Q0.2141,0,0.2673,0.0318 Q0.2588,0.0318,0.2517,0.033 T0.239,0.0361 T0.2276,0.0424 T0.218,0.0504 T0.2085,0.0612 T0.1997,0.0732 T0.1899,0.0875 T0.1795,0.1028 Q0.1748,0.1093,0.1507,0.1234 T0.1186,0.1448 Q0.0999,0.1612,0.1108,0.1783 Q0.1162,0.1877,0.1238,0.1928 T0.1404,0.1979 T0.158,0.1967 T0.1775,0.1895 T0.1963,0.1791 T0.2151,0.1663 T0.2314,0.1534 T0.2458,0.141 T0.2561,0.1322 Q0.2815,0.1106,0.3017,0.101 T0.344,0.0926 T0.3919,0.1077 Q0.4099,0.1175,0.4265,0.1206 T0.4588,0.1202 T0.488,0.1098 T0.5176,0.0914 Q0.5071,0.1032,0.4963,0.1122 T0.4722,0.1285 T0.4497,0.1401 T0.4223,0.1518 T0.3943,0.1636 Q0.374,0.1726,0.3623,0.1863 T0.3482,0.2162 Q0.3445,0.2403,0.3608,0.2605 T0.4072,0.2876 Q0.4194,0.2909,0.4326,0.2899 T0.457,0.2856 T0.4805,0.2764 T0.5032,0.264 T0.5256,0.2497 T0.5478,0.2352 T0.5698,0.2222 T0.5921,0.2118 Q0.6982,0.173,0.81,0.2436 Q0.833,0.2583,0.8496,0.2674 T0.887,0.2846 T0.925,0.294 T0.9617,0.2911 T1,0.2746 Q0.9817,0.2946,0.96,0.3056 T0.9175,0.3191 T0.8731,0.3209 T0.8277,0.3164 T0.7818,0.3109 T0.7359,0.3101 T0.6907,0.3197 T0.647,0.3448 Q0.6443,0.3472,0.6333,0.3562 T0.6194,0.3674 T0.6076,0.3766 T0.594,0.386 T0.5815,0.3931 T0.5661,0.4007 T0.5501,0.4064 L0.5556,0.4121 Q0.5627,0.4198,0.5722,0.4251 T0.5926,0.4337 T0.6131,0.439 T0.6343,0.4431 T0.6521,0.4468 Q0.6762,0.4529,0.7056,0.4463 Q0.6772,0.4623,0.6543,0.471 T0.604,0.4814 Q0.5962,0.4818,0.5815,0.4825 T0.5591,0.4835 T0.5393,0.4857 T0.519,0.4908 T0.5007,0.4996 T0.4812,0.5141 T0.4627,0.5353 L0.4549,0.5451 L0.4661,0.543 Q0.4759,0.541,0.4909,0.55 T0.5315,0.5796 T0.5684,0.6083 Q0.5799,0.6161,0.5915,0.6212 T0.6181,0.6308 L0.6331,0.6353 Q0.6514,0.6418,0.7004,0.633 T0.8069,0.6075 Z", type: 0 } }, "\\uE0C1": { type: 5, data: { d: "M0.011,0.0469 Q0.0152,0.0412,0.02,0.0361 T0.0292,0.0281 T0.0365,0.0253 Q0.0426,0.0257,0.0461,0.0263 T0.0534,0.03 T0.0582,0.0345 T0.0645,0.0434 T0.0723,0.0546 Q0.0807,0.0653,0.0897,0.0712 T0.1081,0.0775 T0.1255,0.0765 T0.1438,0.0695 T0.1605,0.0593 T0.1772,0.0473 Q0.2388,0,0.2927,0.0326 L0.2614,0.0767 L0.2581,0.0767 Q0.2494,0.0767,0.2444,0.0773 T0.2359,0.0789 T0.2291,0.0842 T0.2233,0.0922 T0.2146,0.1054 T0.2026,0.1236 Q0.1943,0.1354,0.1843,0.1444 T0.1675,0.1574 T0.1526,0.1654 T0.1429,0.1701 Q0.1436,0.1717,0.1446,0.1733 Q0.1504,0.1823,0.1581,0.1866 T0.1733,0.1915 T0.1909,0.1884 T0.2085,0.1809 T0.2265,0.169 T0.2427,0.1564 T0.2575,0.1436 T0.2688,0.1338 Q0.2969,0.1101,0.3195,0.0995 T0.3643,0.0901 T0.4114,0.1048 Q0.4279,0.1138,0.4426,0.1168 T0.4705,0.117 T0.4945,0.1089 T0.5186,0.0942 L0.5211,0.0926 L0.5289,0.0922 Q0.5411,0.095,0.5189,0.1203 Q0.505,0.1358,0.4913,0.1474 T0.4634,0.167 T0.4389,0.1796 T0.4121,0.1909 T0.3866,0.2011 Q0.3782,0.2047,0.3727,0.2092 Q0.3717,0.2117,0.3714,0.2141 Q0.3695,0.2263,0.3751,0.2388 T0.394,0.2616 T0.4253,0.2761 Q0.4398,0.2785,0.4513,0.2779 T0.4756,0.2724 T0.4987,0.2616 T0.5216,0.2476 T0.5453,0.2321 T0.5703,0.217 T0.5976,0.2043 Q0.7015,0.166,0.8099,0.2345 Q0.8361,0.2512,0.8572,0.2616 T0.9006,0.2779 T0.9432,0.281 T0.9819,0.2663 L0.9887,0.2671 Q1,0.272,0.9768,0.2969 Q0.9558,0.3193,0.9319,0.333 T0.8858,0.3513 T0.8391,0.3569 T0.793,0.3546 T0.7485,0.3497 T0.7065,0.3473 T0.6681,0.3522 T0.6344,0.3699 Q0.5963,0.4005,0.5847,0.4082 Q0.595,0.4139,0.6079,0.4174 T0.6367,0.4237 T0.6586,0.4278 Q0.6793,0.4331,0.7044,0.4278 Q0.7057,0.4278,0.707,0.4274 Q0.7067,0.429,0.7062,0.4313 T0.7036,0.4398 T0.6993,0.4513 T0.6931,0.4619 T0.6851,0.4698 Q0.6573,0.4857,0.6336,0.4947 T0.5831,0.5053 Q0.577,0.5057,0.5615,0.5065 T0.5394,0.508 T0.5221,0.51 T0.5042,0.5139 T0.4905,0.5204 Q0.5008,0.5232,0.515,0.5328 T0.549,0.5585 T0.5799,0.5824 Q0.5905,0.5897,0.6013,0.5946 T0.6262,0.6036 T0.6409,0.6081 Q0.6567,0.6134,0.7035,0.605 T0.8028,0.5816 L0.7974,0.5922 T0.7867,0.6134 L0.7812,0.624 Q0.7799,0.6248,0.7786,0.6252 Q0.7709,0.6297,0.7573,0.6372 T0.7346,0.6499 T0.7123,0.6621 T0.6897,0.6741 T0.6686,0.6847 T0.648,0.6941 T0.6297,0.7013 T0.6129,0.7062 T0.5995,0.7076 Q0.5992,0.7076,0.5831,0.7092 T0.5529,0.7092 T0.525,0.7019 Q0.5105,0.6958,0.4824,0.6811 T0.4356,0.6586 T0.4079,0.6533 Q0.3872,0.6741,0.3827,0.6782 Q0.3872,0.6835,0.3934,0.6929 T0.4037,0.7078 T0.4142,0.7198 T0.4284,0.7304 T0.4466,0.7365 Q0.4824,0.7443,0.5292,0.728 L0.5292,0.7294 T0.529,0.7333 T0.5284,0.7392 T0.5266,0.7463 T0.5236,0.7539 T0.5186,0.7612 T0.5111,0.7679 Q0.5086,0.77,0.5056,0.7716 Q0.4466,0.8104,0.3591,0.8091 Q0.344,0.8091,0.3246,0.802 T0.2893,0.7863 T0.2543,0.77 T0.2206,0.76 T0.1894,0.7643 Q0.1804,0.7684,0.1733,0.7753 Q0.1591,0.7892,0.1601,0.8169 Q0.1784,0.8067,0.1938,0.8053 T0.2212,0.8087 T0.2507,0.825 Q0.2614,0.8324,0.2744,0.8365 T0.3053,0.844 T0.332,0.8499 L0.303,0.894 L0.2998,0.8948 Q0.2904,0.8968,0.278,0.9009 T0.2554,0.9086 T0.233,0.9158 T0.2099,0.9213 T0.1868,0.9229 T0.1633,0.9192 Q0.1517,0.916,0.1367,0.9241 T0.1065,0.9462 T0.0753,0.9737 T0.041,0.9955 T0.0061,1 Q0,0.9984,0.0068,0.9845 Q0.009,0.9804,0.0123,0.9755 Q0.0187,0.9666,0.0261,0.9606 T0.0374,0.9555 Q0.0481,0.958,0.0629,0.949 T0.0931,0.9262 T0.1247,0.8987 T0.1597,0.8777 T0.1949,0.8752 Q0.213,0.8805,0.2343,0.8772 Q0.2249,0.8736,0.2172,0.8683 Q0.1914,0.8511,0.1738,0.8497 T0.1349,0.8617 Q0.1304,0.865,0.1273,0.8646 T0.1242,0.8605 L0.1239,0.8536 Q0.1226,0.8295,0.1354,0.8016 T0.1723,0.7496 Q0.1914,0.7308,0.2104,0.7219 Q0.2259,0.7145,0.2425,0.7141 T0.273,0.7182 T0.3022,0.7296 T0.3301,0.7439 T0.3569,0.7571 T0.3821,0.7643 Q0.373,0.7561,0.3598,0.7367 T0.3382,0.7088 L0.3327,0.7035 Q0.3282,0.699,0.3353,0.6884 T0.3517,0.6692 L0.3611,0.6607 Q0.3711,0.657,0.3751,0.6554 T0.3837,0.6507 T0.3898,0.6458 T0.3979,0.637 T0.4111,0.6236 Q0.4172,0.6175,0.4234,0.6138 Q0.4327,0.6081,0.4439,0.6077 T0.4655,0.6105 T0.4884,0.6201 T0.5113,0.633 T0.5347,0.6468 T0.5573,0.6578 Q0.5705,0.6635,0.5833,0.665 T0.6112,0.665 T0.6286,0.6635 Q0.6421,0.6631,0.6718,0.6501 Q0.626,0.6578,0.6089,0.6517 Q0.6063,0.6509,0.6002,0.6491 T0.5884,0.6454 T0.5757,0.6409 T0.561,0.6344 T0.5466,0.6256 Q0.536,0.6183,0.5108,0.5989 T0.4722,0.5712 T0.4527,0.564 L0.4418,0.5661 Q0.4308,0.5681,0.4366,0.5563 Q0.4401,0.5485,0.4476,0.5392 L0.455,0.5298 Q0.4631,0.5188,0.4714,0.51 T0.4866,0.4947 T0.5021,0.4831 T0.516,0.4749 T0.53,0.4694 T0.5428,0.4657 T0.5558,0.4637 T0.5674,0.4629 T0.5795,0.4625 Q0.5489,0.4543,0.534,0.4384 L0.5286,0.4327 Q0.5244,0.4282,0.5318,0.4174 T0.5486,0.398 L0.5579,0.3899 Q0.567,0.387,0.5749,0.3834 T0.5878,0.3772 T0.6012,0.3687 T0.6126,0.3603 T0.6268,0.3487 T0.6421,0.3361 Q0.6567,0.3242,0.6712,0.3159 T0.7009,0.3034 T0.7277,0.2973 T0.7556,0.2961 T0.7809,0.2977 T0.8074,0.301 Q0.8096,0.3014,0.8109,0.3016 T0.8143,0.302 T0.818,0.3026 Q0.8012,0.2936,0.7767,0.2781 Q0.6718,0.2117,0.5744,0.2476 Q0.5637,0.2516,0.5492,0.2604 T0.5218,0.2779 T0.4923,0.2965 T0.461,0.3124 T0.4282,0.3216 T0.394,0.3206 Q0.3637,0.3136,0.3474,0.2936 T0.3353,0.2459 Q0.3385,0.2247,0.355,0.2023 Q0.3646,0.1892,0.3763,0.179 Q0.3898,0.1672,0.4063,0.1595 Q0.3927,0.1562,0.3785,0.1485 Q0.3604,0.1387,0.3453,0.1354 T0.3161,0.1354 T0.2899,0.1458 T0.2627,0.166 Q0.262,0.1664,0.254,0.1733 T0.2414,0.1841 T0.2267,0.196 T0.2094,0.2086 T0.1915,0.2196 T0.1725,0.2288 T0.1546,0.2337 T0.1373,0.2343 T0.1223,0.228 T0.1097,0.2145 Q0.0962,0.1929,0.1258,0.1582 Q0.131,0.1517,0.1371,0.1464 Q0.1462,0.1387,0.156,0.1321 T0.1752,0.1205 T0.1878,0.1134 Q0.1891,0.1117,0.1947,0.103 T0.2035,0.0899 T0.2125,0.0781 T0.2243,0.064 Q0.1949,0.0616,0.1672,0.0828 Q0.153,0.0934,0.1412,0.1009 T0.1146,0.1146 T0.0873,0.1213 T0.0616,0.116 T0.0374,0.0962 Q0.0339,0.0909,0.0295,0.0846 T0.024,0.0767 T0.0202,0.0728 T0.0148,0.0704 T0.0068,0.0697 Q0.0003,0.0693,0.0058,0.0567 Q0.0077,0.0522,0.011,0.0469 Z", type: 0 } }, "\\uE0C2": { type: 5, data: { d: "M0.1934,0.6075 Q0.2012,0.612,0.2188,0.6218 T0.2459,0.6369 T0.2718,0.6508 T0.2983,0.6644 T0.322,0.6758 T0.3447,0.6854 T0.363,0.6911 T0.3783,0.6936 Q0.3796,0.6936,0.396,0.6952 T0.4265,0.6952 T0.4548,0.6879 Q0.4656,0.6834,0.4805,0.6756 T0.5073,0.6614 T0.5327,0.6485 T0.5564,0.6389 T0.5759,0.6363 T0.5909,0.6422 Q0.5953,0.6467,0.604,0.6554 T0.6155,0.6669 T0.6251,0.6746 T0.6387,0.683 T0.6556,0.6903 L0.6498,0.6956 Q0.6414,0.7042,0.6319,0.7177 T0.6162,0.7403 T0.5979,0.7583 T0.5703,0.7703 Q0.5313,0.7785,0.4799,0.7605 Q0.5097,0.7817,0.5508,0.7911 T0.6302,0.8001 Q0.6431,0.7997,0.659,0.7942 T0.6888,0.7813 T0.7194,0.766 T0.7506,0.753 T0.7819,0.7472 T0.8131,0.754 Q0.8239,0.7589,0.8346,0.7681 T0.8544,0.7895 T0.8689,0.818 T0.8737,0.8507 L0.8733,0.858 Q0.8591,0.849,0.8474,0.845 T0.8242,0.8421 T0.8021,0.8482 T0.7772,0.8625 Q0.7653,0.8707,0.7513,0.8752 T0.7184,0.8831 T0.6908,0.889 Q0.7017,0.8915,0.7152,0.8956 T0.7396,0.9037 T0.7633,0.9115 T0.7872,0.9174 T0.8107,0.9194 T0.8347,0.9155 Q0.8493,0.9115,0.8671,0.9196 T0.9015,0.9421 T0.9345,0.9708 T0.9682,0.9943 T0.9997,1 Q0.999,0.94,0.9983,0.6508 T0.9976,0.2322 Q0.9976,0.2109,0.9992,0.1379 T1,0.0249 Q0.9949,0.0249,0.9917,0.0257 T0.9863,0.0273 T0.9817,0.0308 T0.9776,0.0357 T0.9721,0.0437 T0.9651,0.0539 Q0.956,0.0657,0.9456,0.072 T0.9247,0.0789 T0.904,0.0775 T0.8823,0.0694 T0.862,0.0573 T0.8422,0.0432 Q0.7856,0,0.7328,0.0318 Q0.7392,0.0318,0.7452,0.0324 T0.756,0.0345 T0.7657,0.0386 T0.7741,0.0437 T0.7821,0.0506 T0.7894,0.0588 T0.7966,0.0683 T0.8039,0.0787 T0.8119,0.0904 T0.8202,0.1028 Q0.8249,0.1093,0.849,0.1234 T0.8811,0.1448 Q0.8998,0.1612,0.8893,0.1783 Q0.8835,0.1877,0.8759,0.1928 T0.8593,0.1979 T0.8417,0.1967 T0.8222,0.1895 T0.8034,0.1791 T0.7848,0.1663 T0.7687,0.1534 T0.7543,0.141 T0.744,0.1322 Q0.7186,0.1106,0.6984,0.101 T0.6559,0.0926 T0.6082,0.1077 Q0.5899,0.1175,0.5733,0.1206 T0.5411,0.1202 T0.5122,0.1098 T0.4822,0.0914 Q0.4927,0.1032,0.5036,0.1122 T0.5276,0.1285 T0.5503,0.1401 T0.5777,0.1518 T0.6055,0.1636 Q0.6258,0.1726,0.6375,0.1863 T0.6519,0.2162 Q0.6556,0.2403,0.6392,0.2605 T0.5926,0.2876 Q0.5804,0.2909,0.5672,0.2899 T0.5428,0.2856 T0.5193,0.2764 T0.4966,0.264 T0.4744,0.2497 T0.4523,0.2352 T0.4301,0.2222 T0.4077,0.2118 Q0.3021,0.173,0.1903,0.2436 Q0.1669,0.2583,0.1504,0.2674 T0.1129,0.2846 T0.075,0.294 T0.0384,0.2911 T0,0.2746 Q0.021,0.297,0.0459,0.3082 T0.0953,0.3207 T0.146,0.3193 T0.1988,0.3131 T0.2508,0.3095 T0.3029,0.3176 T0.3529,0.3448 Q0.3566,0.348,0.3652,0.355 T0.3771,0.3645 T0.3877,0.3731 T0.3993,0.3815 T0.4103,0.3884 T0.4226,0.3953 T0.4352,0.4009 T0.4497,0.4064 L0.4443,0.4121 Q0.4372,0.4198,0.4277,0.4251 T0.4072,0.4337 T0.3867,0.439 T0.3656,0.4431 T0.3481,0.4468 Q0.3241,0.4529,0.2943,0.4463 Q0.3227,0.4623,0.3458,0.471 T0.3959,0.4814 Q0.404,0.4818,0.4187,0.4825 T0.4409,0.4835 T0.4605,0.4857 T0.4809,0.4908 T0.4992,0.4996 T0.5186,0.5141 T0.5371,0.5353 L0.5449,0.5451 L0.5337,0.543 Q0.5242,0.541,0.5091,0.55 T0.4683,0.5796 T0.4314,0.6083 Q0.4203,0.6161,0.4086,0.6212 T0.382,0.6308 T0.3667,0.6353 Q0.3485,0.6418,0.2995,0.633 T0.1934,0.6075 Z", type: 0 } }, "\\uE0C3": { type: 5, data: { d: "M0.989,0.0469 Q0.9829,0.0379,0.9753,0.0316 T0.9635,0.0253 Q0.9574,0.0257,0.9539,0.0263 T0.9466,0.03 T0.9418,0.0345 T0.9355,0.0434 T0.9277,0.0546 Q0.9193,0.0653,0.9103,0.0712 T0.8919,0.0775 T0.8745,0.0765 T0.8564,0.0695 T0.8396,0.0593 T0.8228,0.0473 Q0.7612,0,0.7073,0.0326 L0.7386,0.0767 L0.7419,0.0767 Q0.7506,0.0767,0.7556,0.0773 T0.7641,0.0789 T0.7709,0.0842 T0.7767,0.0922 T0.7854,0.1054 T0.7974,0.1236 Q0.8057,0.1354,0.8157,0.1444 T0.8325,0.1574 T0.8474,0.1654 T0.8571,0.1701 Q0.8564,0.1717,0.8554,0.1733 Q0.8503,0.1815,0.844,0.186 T0.8301,0.1909 T0.8153,0.1903 T0.7993,0.1845 T0.7836,0.1758 T0.768,0.1648 T0.754,0.1535 T0.741,0.1425 T0.7312,0.1338 Q0.7031,0.1101,0.6805,0.0995 T0.6357,0.0901 T0.5886,0.1048 Q0.5721,0.1138,0.5574,0.1168 T0.5295,0.117 T0.5055,0.1089 T0.4814,0.0942 L0.4789,0.0926 L0.4711,0.0922 Q0.4589,0.095,0.4811,0.1203 Q0.495,0.1358,0.5087,0.1474 T0.5366,0.167 T0.5611,0.1796 T0.5879,0.1909 T0.6134,0.2011 Q0.6218,0.2047,0.6273,0.2092 Q0.6283,0.2117,0.6286,0.2141 Q0.6305,0.2263,0.6249,0.2388 T0.606,0.2616 T0.5747,0.2761 Q0.5602,0.2785,0.5487,0.2779 T0.5245,0.2724 T0.5015,0.2616 T0.4784,0.2476 T0.4547,0.2321 T0.4297,0.217 T0.4024,0.2043 Q0.2985,0.166,0.1901,0.2345 Q0.1694,0.248,0.1523,0.2569 T0.1165,0.2726 T0.0818,0.2812 T0.0494,0.2796 T0.0181,0.2663 L0.0116,0.2671 Q0,0.272,0.0232,0.2969 Q0.0468,0.3222,0.0742,0.3365 T0.1278,0.3542 T0.1807,0.3564 T0.233,0.352 T0.2815,0.3473 T0.3269,0.3509 T0.3656,0.3699 Q0.4037,0.4005,0.4153,0.4082 Q0.405,0.4139,0.3921,0.4174 T0.3633,0.4237 T0.3414,0.4278 Q0.3207,0.4331,0.2956,0.4278 Q0.2943,0.4278,0.293,0.4274 Q0.2933,0.429,0.2938,0.4313 T0.2964,0.4398 T0.3007,0.4513 T0.3069,0.4619 T0.3149,0.4698 Q0.3427,0.4857,0.3664,0.4947 T0.4169,0.5053 Q0.423,0.5057,0.4385,0.5065 T0.4606,0.508 T0.4779,0.51 T0.4958,0.5139 T0.5095,0.5204 Q0.4992,0.5232,0.485,0.5328 T0.451,0.5585 T0.4201,0.5824 Q0.4095,0.5897,0.3987,0.5946 T0.3738,0.6036 T0.3591,0.6081 Q0.3433,0.6134,0.2965,0.605 T0.1972,0.5816 L0.2026,0.5922 T0.2133,0.6134 L0.2188,0.624 Q0.2201,0.6248,0.2214,0.6252 Q0.2291,0.6297,0.2486,0.6405 T0.2786,0.657 T0.3066,0.6721 T0.3353,0.6866 T0.3598,0.6972 T0.383,0.7051 T0.4005,0.7076 Q0.4008,0.7076,0.4169,0.7092 T0.4471,0.7092 T0.475,0.7019 Q0.4895,0.6958,0.5176,0.6811 T0.5644,0.6586 T0.5921,0.6533 Q0.6128,0.6741,0.6173,0.6782 Q0.6131,0.6835,0.6068,0.6929 T0.5963,0.7078 T0.5858,0.7198 T0.5716,0.7304 T0.5534,0.7365 Q0.5179,0.7443,0.4708,0.728 L0.4708,0.7294 T0.471,0.7333 T0.4716,0.7392 T0.4734,0.7463 T0.4764,0.7539 T0.4814,0.7612 T0.4889,0.7679 Q0.4914,0.77,0.4944,0.7716 Q0.5534,0.8104,0.6409,0.8091 Q0.6521,0.8091,0.6654,0.8053 T0.6907,0.7959 T0.7157,0.7838 T0.741,0.772 T0.7652,0.7631 T0.7888,0.7594 T0.8106,0.7643 Q0.8196,0.7684,0.8267,0.7753 Q0.8409,0.7892,0.8399,0.8169 Q0.8216,0.8067,0.8062,0.8053 T0.7788,0.8087 T0.7493,0.825 Q0.7386,0.8324,0.7256,0.8365 T0.6947,0.844 T0.668,0.8499 L0.697,0.894 L0.7002,0.8948 Q0.7099,0.8968,0.7222,0.9009 T0.7446,0.9086 T0.767,0.9158 T0.7901,0.9213 T0.8132,0.9229 T0.8367,0.9192 Q0.8483,0.916,0.8633,0.9241 T0.8937,0.9462 T0.9248,0.9737 T0.959,0.9955 T0.9939,1 Q1,0.9984,0.9932,0.9845 Q0.991,0.9804,0.9877,0.9755 Q0.9813,0.9666,0.9739,0.9606 T0.9626,0.9555 Q0.9519,0.958,0.9372,0.949 T0.9071,0.9262 T0.8753,0.8987 T0.8403,0.8777 T0.8051,0.8752 Q0.787,0.8805,0.7657,0.8772 Q0.7751,0.8736,0.7828,0.8683 Q0.8086,0.8511,0.8262,0.8497 T0.8651,0.8617 Q0.8696,0.865,0.8727,0.8646 T0.8758,0.8605 L0.8761,0.8536 Q0.8774,0.8295,0.8646,0.8016 T0.8277,0.7496 Q0.8086,0.7308,0.7896,0.7219 Q0.7741,0.7145,0.7575,0.7141 T0.727,0.7182 T0.6978,0.7296 T0.6699,0.7439 T0.6433,0.7571 T0.6179,0.7643 Q0.627,0.7561,0.6402,0.7367 T0.6618,0.7088 L0.6673,0.7035 Q0.6718,0.699,0.6647,0.6884 T0.6483,0.6692 L0.6389,0.6607 Q0.6289,0.657,0.6249,0.6554 T0.6163,0.6507 T0.6102,0.6458 T0.6021,0.637 T0.5889,0.6236 Q0.5828,0.6175,0.5766,0.6138 Q0.5673,0.6081,0.5561,0.6077 T0.5345,0.6105 T0.5116,0.6201 T0.4887,0.633 T0.4653,0.6468 T0.4427,0.6578 Q0.4295,0.6635,0.4167,0.665 T0.3888,0.665 T0.3714,0.6635 Q0.3579,0.6631,0.3282,0.6501 Q0.374,0.6578,0.3911,0.6517 Q0.3937,0.6509,0.4024,0.6482 T0.4179,0.6434 T0.4348,0.6364 T0.4534,0.6256 Q0.464,0.6183,0.4892,0.5989 T0.5278,0.5712 T0.5476,0.564 L0.5582,0.5661 Q0.5692,0.5681,0.5634,0.5563 Q0.5599,0.5485,0.5524,0.5392 L0.545,0.5298 Q0.5369,0.5188,0.5286,0.51 T0.5134,0.4947 T0.4979,0.4831 T0.484,0.4749 T0.47,0.4694 T0.4572,0.4657 T0.4442,0.4637 T0.4326,0.4629 T0.4205,0.4625 Q0.4511,0.4543,0.466,0.4384 L0.4714,0.4327 Q0.4795,0.4237,0.4469,0.394 L0.4421,0.3899 Q0.433,0.387,0.4251,0.3834 T0.4122,0.3772 T0.3988,0.3687 T0.3874,0.3603 T0.3732,0.3487 T0.3579,0.3361 Q0.3433,0.3242,0.3288,0.3159 T0.2993,0.3034 T0.2725,0.2973 T0.2446,0.2961 T0.2193,0.2977 T0.1926,0.301 Q0.1855,0.3022,0.182,0.3026 Q0.1991,0.2936,0.2233,0.2781 Q0.3282,0.2117,0.4256,0.2476 Q0.4363,0.2516,0.451,0.2604 T0.4784,0.2779 T0.5077,0.2965 T0.539,0.3124 T0.5718,0.3216 T0.606,0.3206 Q0.6363,0.3136,0.6526,0.2936 T0.6647,0.2459 Q0.6615,0.2247,0.645,0.2023 Q0.6354,0.1892,0.6237,0.179 Q0.6102,0.1672,0.5937,0.1595 Q0.6073,0.1562,0.6215,0.1485 Q0.6396,0.1387,0.6547,0.1354 T0.6839,0.1354 T0.7101,0.1458 T0.7373,0.166 Q0.738,0.1664,0.746,0.1733 T0.7586,0.1841 T0.7733,0.196 T0.7907,0.2086 T0.8086,0.2196 T0.8275,0.2288 T0.8454,0.2337 T0.8627,0.2343 T0.8777,0.228 T0.8903,0.2145 Q0.9038,0.1929,0.8742,0.1582 Q0.869,0.1517,0.8629,0.1464 Q0.8538,0.1387,0.844,0.1321 T0.8248,0.1205 T0.8122,0.1134 Q0.8109,0.1117,0.8053,0.103 T0.7965,0.0899 T0.7875,0.0781 T0.7757,0.064 Q0.8051,0.0616,0.8328,0.0828 Q0.847,0.0934,0.8588,0.1009 T0.8854,0.1146 T0.9127,0.1213 T0.9384,0.116 T0.9626,0.0962 Q0.9664,0.0909,0.9706,0.0846 T0.976,0.0767 T0.9798,0.0728 T0.9852,0.0704 T0.9932,0.0697 Q0.9997,0.0693,0.9942,0.0567 Q0.9923,0.0522,0.989,0.0469 Z", type: 0 } }, "\\uE0C4": { type: 5, data: { d: "M0.4116,0.0126 L0.4116,0.0776 L0.4871,0.0776 L0.4871,0.0126 L0.4116,0.0126 Z M0.4043,0 L0.4944,0 Q0.4973,0,0.4995,0.0021 T0.5017,0.0063 L0.5017,0.0839 Q0.5017,0.0864,0.4993,0.0883 T0.4944,0.0902 L0.4043,0.0902 Q0.4014,0.0902,0.3992,0.0881 T0.397,0.0839 L0.397,0.0063 Q0.397,0.0038,0.3994,0.0019 T0.4043,0 Z M0.4116,0.0126 L0.4116,0.0776 L0.4871,0.0776 L0.4871,0.0126 L0.4116,0.0126 Z M0.4043,0 L0.4944,0 Q0.4973,0,0.4995,0.0021 T0.5017,0.0063 L0.5017,0.0839 Q0.5017,0.0864,0.4993,0.0883 T0.4944,0.0902 L0.4043,0.0902 Q0.4014,0.0902,0.3992,0.0881 T0.397,0.0839 L0.397,0.0063 Q0.397,0.0038,0.3994,0.0019 T0.4043,0 Z M0.4116,0.0126 L0.4116,0.0776 L0.4871,0.0776 L0.4871,0.0126 L0.4116,0.0126 Z M0.4043,0 L0.4944,0 Q0.4973,0,0.4995,0.0021 T0.5017,0.0063 L0.5017,0.0839 Q0.5017,0.0864,0.4993,0.0883 T0.4944,0.0902 L0.4043,0.0902 Q0.4014,0.0902,0.3992,0.0881 T0.397,0.0839 L0.397,0.0063 Q0.397,0.0038,0.3994,0.0019 T0.4043,0 Z M0.9099,0.0084 L0.9099,0.0818 L0.9951,0.0818 L0.9951,0.0084 L0.9099,0.0084 Z M0.9075,0.0042 L0.9976,0.0042 Q1,0.0042,1,0.0063 L1,0.0839 Q1,0.086,0.9976,0.086 L0.9075,0.086 Q0.905,0.086,0.905,0.0839 L0.905,0.0063 Q0.905,0.0042,0.9075,0.0042 Z M0.9099,0.0084 L0.9099,0.0818 L0.9951,0.0818 L0.9951,0.0084 L0.9099,0.0084 Z M0.9075,0.0042 L0.9976,0.0042 Q1,0.0042,1,0.0063 L1,0.0839 Q1,0.086,0.9976,0.086 L0.9075,0.086 Q0.905,0.086,0.905,0.0839 L0.905,0.0063 Q0.905,0.0042,0.9075,0.0042 Z M0.9099,0.0084 L0.9099,0.0818 L0.9951,0.0818 L0.9951,0.0084 L0.9099,0.0084 Z M0.9075,0.0042 L0.9976,0.0042 Q1,0.0042,1,0.0063 L1,0.0839 Q1,0.086,0.9976,0.086 L0.9075,0.086 Q0.905,0.086,0.905,0.0839 L0.905,0.0063 Q0.905,0.0042,0.9075,0.0042 Z M0.66,0.0063 L0.7501,0.0063 L0.7501,0.0839 L0.66,0.0839 L0.66,0.0063 Z M0.66,0.0063 L0.7501,0.0063 L0.7501,0.0839 L0.66,0.0839 L0.66,0.0063 Z M0.66,0.0063 L0.7501,0.0063 L0.7501,0.0839 L0.66,0.0839 L0.66,0.0063 Z M0.5309,0.0063 L0.621,0.0063 L0.621,0.0839 L0.5309,0.0839 L0.5309,0.0063 Z M0.5309,0.0063 L0.621,0.0063 L0.621,0.0839 L0.5309,0.0839 L0.5309,0.0063 Z M0.5309,0.0063 L0.621,0.0063 L0.621,0.0839 L0.5309,0.0839 L0.5309,0.0063 Z M0.2689,0.0063 L0.359,0.0063 L0.359,0.0839 L0.2689,0.0839 L0.2689,0.0063 Z M0.2689,0.0063 L0.359,0.0063 L0.359,0.0839 L0.2689,0.0839 L0.2689,0.0063 Z M0.2689,0.0063 L0.359,0.0063 L0.359,0.0839 L0.2689,0.0839 L0.2689,0.0063 Z M0.1374,0.0063 L0.2275,0.0063 L0.2275,0.0839 L0.1374,0.0839 L0.1374,0.0063 Z M0.1374,0.0063 L0.2275,0.0063 L0.2275,0.0839 L0.1374,0.0839 L0.1374,0.0063 Z M0.1374,0.0063 L0.2275,0.0063 L0.2275,0.0839 L0.1374,0.0839 L0.1374,0.0063 Z M0,0.0063 L0.0901,0.0063 L0.0901,0.0839 L0,0.0839 L0,0.0063 Z M0,0.0063 L0.0901,0.0063 L0.0901,0.0839 L0,0.0839 L0,0.0063 Z M0,0.0063 L0.0901,0.0063 L0.0901,0.0839 L0,0.0839 L0,0.0063 Z M0.4087,0.9224 L0.4087,0.9958 L0.4939,0.9958 L0.4939,0.9224 L0.4087,0.9224 Z M0.4062,0.9182 L0.4963,0.9182 Q0.4988,0.9182,0.4988,0.9203 L0.4988,0.9979 Q0.4988,1,0.4963,1 L0.4062,1 Q0.4038,1,0.4038,0.9979 L0.4038,0.9203 Q0.4038,0.9182,0.4062,0.9182 Z M0.4087,0.9224 L0.4087,0.9958 L0.4939,0.9958 L0.4939,0.9224 L0.4087,0.9224 Z M0.4062,0.9182 L0.4963,0.9182 Q0.4988,0.9182,0.4988,0.9203 L0.4988,0.9979 Q0.4988,1,0.4963,1 L0.4062,1 Q0.4038,1,0.4038,0.9979 L0.4038,0.9203 Q0.4038,0.9182,0.4062,0.9182 Z M0.4087,0.9224 L0.4087,0.9958 L0.4939,0.9958 L0.4939,0.9224 L0.4087,0.9224 Z M0.4062,0.9182 L0.4963,0.9182 Q0.4988,0.9182,0.4988,0.9203 L0.4988,0.9979 Q0.4988,1,0.4963,1 L0.4062,1 Q0.4038,1,0.4038,0.9979 L0.4038,0.9203 Q0.4038,0.9182,0.4062,0.9182 Z M0.1374,0.9203 L0.2275,0.9203 L0.2275,0.9979 L0.1374,0.9979 L0.1374,0.9203 Z M0.1374,0.9203 L0.2275,0.9203 L0.2275,0.9979 L0.1374,0.9979 L0.1374,0.9203 Z M0.1374,0.9203 L0.2275,0.9203 L0.2275,0.9979 L0.1374,0.9979 L0.1374,0.9203 Z M0,0.9203 L0.0901,0.9203 L0.0901,0.9979 L0,0.9979 L0,0.9203 Z M0,0.9203 L0.0901,0.9203 L0.0901,0.9979 L0,0.9979 L0,0.9203 Z M0,0.9203 L0.0901,0.9203 L0.0901,0.9979 L0,0.9979 L0,0.9203 Z M0.9099,0.1158 L0.9099,0.1888 L0.9951,0.1888 L0.9951,0.1158 L0.9099,0.1158 Z M0.9075,0.1116 L0.9976,0.1116 Q1,0.1116,1,0.1137 L1,0.1909 Q1,0.193,0.9976,0.193 L0.9075,0.193 Q0.905,0.193,0.905,0.1909 L0.905,0.1137 Q0.905,0.1116,0.9075,0.1116 Z M0.7852,0.6086 L0.7852,0.682 L0.8704,0.682 L0.8704,0.6086 L0.7852,0.6086 Z M0.7828,0.6044 L0.8729,0.6044 Q0.8753,0.6044,0.8753,0.6065 L0.8753,0.6841 Q0.8753,0.6862,0.8729,0.6862 L0.7828,0.6862 Q0.7803,0.6862,0.7803,0.6841 L0.7803,0.6065 Q0.7803,0.6044,0.7828,0.6044 Z M0.66,0.1137 L0.7501,0.1137 L0.7501,0.1909 L0.66,0.1909 L0.66,0.1137 Z M0.6624,0.4102 L0.6624,0.4836 L0.7477,0.4836 L0.7477,0.4102 L0.6624,0.4102 Z M0.66,0.406 L0.7501,0.406 Q0.7526,0.406,0.7526,0.4081 L0.7526,0.4857 Q0.7526,0.4878,0.7501,0.4878 L0.66,0.4878 Q0.6576,0.4878,0.6576,0.4857 L0.6576,0.4081 Q0.6576,0.406,0.66,0.406 Z M0.6624,0.7131 L0.6624,0.7865 L0.7477,0.7865 L0.7477,0.7131 L0.6624,0.7131 Z M0.66,0.7089 L0.7501,0.7089 Q0.7526,0.7089,0.7526,0.711 L0.7526,0.7886 Q0.7526,0.7907,0.7501,0.7907 L0.66,0.7907 Q0.6576,0.7907,0.6576,0.7886 L0.6576,0.711 Q0.6576,0.7089,0.66,0.7089 Z M0.5407,0.2227 L0.5407,0.2836 L0.6113,0.2836 L0.6113,0.2227 L0.5407,0.2227 Z M0.5309,0.206 L0.621,0.206 Q0.623,0.206,0.6249,0.2068 T0.6281,0.2089 T0.6301,0.2116 T0.6308,0.2143 L0.6308,0.2919 Q0.6308,0.2957,0.6276,0.298 T0.621,0.3003 L0.5309,0.3003 Q0.5265,0.3003,0.5239,0.2976 T0.5212,0.2919 L0.5212,0.2143 Q0.5212,0.211,0.5244,0.2085 T0.5309,0.206 Z M0.5407,0.3184 L0.5407,0.3792 L0.6113,0.3792 L0.6113,0.3184 L0.5407,0.3184 Z M0.5309,0.3016 L0.621,0.3016 Q0.6254,0.3016,0.6281,0.3043 T0.6308,0.31 L0.6308,0.3876 Q0.6308,0.3914,0.6276,0.3937 T0.621,0.396 L0.5309,0.396 Q0.5265,0.396,0.5239,0.3932 T0.5212,0.3876 L0.5212,0.31 Q0.5212,0.3062,0.5244,0.3039 T0.5309,0.3016 Z M0.5309,0.4081 L0.621,0.4081 L0.621,0.4857 L0.5309,0.4857 L0.5309,0.4081 Z M0.5309,0.5059 L0.621,0.5059 L0.621,0.5835 L0.5309,0.5835 L0.5309,0.5059 Z M0.5407,0.6149 L0.5407,0.6758 L0.6113,0.6758 L0.6113,0.6149 L0.5407,0.6149 Z M0.5309,0.5982 L0.621,0.5982 Q0.6254,0.5982,0.6281,0.6009 T0.6308,0.6065 L0.6308,0.6841 Q0.6308,0.6879,0.6276,0.6902 T0.621,0.6925 L0.5309,0.6925 Q0.5265,0.6925,0.5239,0.6898 T0.5212,0.6841 L0.5212,0.6065 Q0.5212,0.6028,0.5244,0.6005 T0.5309,0.5982 Z M0.4062,0.1137 L0.4963,0.1137 L0.4963,0.1909 L0.4062,0.1909 L0.4062,0.1137 Z M0.4062,0.2143 L0.4963,0.2143 L0.4963,0.2919 L0.4062,0.2919 L0.4062,0.2143 Z M0.4184,0.4186 L0.4184,0.4753 L0.4842,0.4753 L0.4842,0.4186 L0.4184,0.4186 Z M0.4062,0.3977 L0.4963,0.3977 Q0.5017,0.3977,0.5051,0.401 T0.5085,0.4081 L0.5085,0.4857 Q0.5085,0.4904,0.5046,0.4933 T0.4963,0.4962 L0.4062,0.4962 Q0.4009,0.4962,0.3975,0.4929 T0.3941,0.4857 L0.3941,0.4081 Q0.3941,0.4035,0.398,0.4006 T0.4062,0.3977 Z M0.4062,0.5059 L0.4963,0.5059 L0.4963,0.5835 L0.4062,0.5835 L0.4062,0.5059 Z M0.4087,0.7131 L0.4087,0.7865 L0.4939,0.7865 L0.4939,0.7131 L0.4087,0.7131 Z M0.4062,0.7089 L0.4963,0.7089 Q0.4988,0.7089,0.4988,0.711 L0.4988,0.7886 Q0.4988,0.7907,0.4963,0.7907 L0.4062,0.7907 Q0.4038,0.7907,0.4038,0.7886 L0.4038,0.711 Q0.4038,0.7089,0.4062,0.7089 Z M0.2689,0.1137 L0.359,0.1137 L0.359,0.1909 L0.2689,0.1909 L0.2689,0.1137 Z M0.2689,0.2143 L0.359,0.2143 L0.359,0.2919 L0.2689,0.2919 L0.2689,0.2143 Z M0.2689,0.8154 L0.359,0.8154 L0.359,0.8926 L0.2689,0.8926 L0.2689,0.8154 Z M0.2689,0.31 L0.359,0.31 L0.359,0.3876 L0.2689,0.3876 L0.2689,0.31 Z M0.2689,0.8154 L0.359,0.8154 L0.359,0.8926 L0.2689,0.8926 L0.2689,0.8154 Z M0.2689,0.4081 L0.359,0.4081 L0.359,0.4857 L0.2689,0.4857 L0.2689,0.4081 Z M0.2689,0.5059 L0.359,0.5059 L0.359,0.5835 L0.2689,0.5835 L0.2689,0.5059 Z M0.2689,0.711 L0.359,0.711 L0.359,0.7886 L0.2689,0.7886 L0.2689,0.711 Z M0.2689,0.8154 L0.359,0.8154 L0.359,0.8926 L0.2689,0.8926 L0.2689,0.8154 Z M0.1374,0.1137 L0.2275,0.1137 L0.2275,0.1909 L0.1374,0.1909 L0.1374,0.1137 Z M0.1374,0.2143 L0.2275,0.2143 L0.2275,0.2919 L0.1374,0.2919 L0.1374,0.2143 Z M0.1374,0.8154 L0.2275,0.8154 L0.2275,0.8926 L0.1374,0.8926 L0.1374,0.8154 Z M0.1374,0.31 L0.2275,0.31 L0.2275,0.3876 L0.1374,0.3876 L0.1374,0.31 Z M0.1374,0.8154 L0.2275,0.8154 L0.2275,0.8926 L0.1374,0.8926 L0.1374,0.8154 Z M0.1374,0.4081 L0.2275,0.4081 L0.2275,0.4857 L0.1374,0.4857 L0.1374,0.4081 Z M0.1374,0.5059 L0.2275,0.5059 L0.2275,0.5835 L0.1374,0.5835 L0.1374,0.5059 Z M0.1374,0.6065 L0.2275,0.6065 L0.2275,0.6841 L0.1374,0.6841 L0.1374,0.6065 Z M0.1374,0.711 L0.2275,0.711 L0.2275,0.7886 L0.1374,0.7886 L0.1374,0.711 Z M0.1374,0.8154 L0.2275,0.8154 L0.2275,0.8926 L0.1374,0.8926 L0.1374,0.8154 Z M0,0.1137 L0.0901,0.1137 L0.0901,0.1909 L0,0.1909 L0,0.1137 Z M0,0.2143 L0.0901,0.2143 L0.0901,0.2919 L0,0.2919 L0,0.2143 Z M0,0.8154 L0.0901,0.8154 L0.0901,0.8926 L0,0.8926 L0,0.8154 Z M0,0.31 L0.0901,0.31 L0.0901,0.3876 L0,0.3876 L0,0.31 Z M0,0.8154 L0.0901,0.8154 L0.0901,0.8926 L0,0.8926 L0,0.8154 Z M0,0.4081 L0.0901,0.4081 L0.0901,0.4857 L0,0.4857 L0,0.4081 Z M0,0.5059 L0.0901,0.5059 L0.0901,0.5835 L0,0.5835 L0,0.5059 Z M0,0.6065 L0.0901,0.6065 L0.0901,0.6841 L0,0.6841 L0,0.6065 Z M0,0.711 L0.0901,0.711 L0.0901,0.7886 L0,0.7886 L0,0.711 Z M0,0.8154 L0.0901,0.8154 L0.0901,0.8926 L0,0.8926 L0,0.8154 Z", type: 0 } }, "\\uE0C5": { type: 5, data: { d: "M0.5884,0.0126 L0.5884,0.0776 L0.5129,0.0776 L0.5129,0.0126 L0.5884,0.0126 Z M0.5957,0 L0.5056,0 Q0.5027,0,0.5005,0.0021 T0.4983,0.0063 L0.4983,0.0839 Q0.4983,0.0864,0.5007,0.0883 T0.5056,0.0902 L0.5957,0.0902 Q0.5986,0.0902,0.6008,0.0881 T0.603,0.0839 L0.603,0.0063 Q0.603,0.0038,0.6006,0.0019 T0.5957,0 Z M0.5884,0.0126 L0.5884,0.0776 L0.5129,0.0776 L0.5129,0.0126 L0.5884,0.0126 Z M0.5957,0 L0.5056,0 Q0.5027,0,0.5005,0.0021 T0.4983,0.0063 L0.4983,0.0839 Q0.4983,0.0864,0.5007,0.0883 T0.5056,0.0902 L0.5957,0.0902 Q0.5986,0.0902,0.6008,0.0881 T0.603,0.0839 L0.603,0.0063 Q0.603,0.0038,0.6006,0.0019 T0.5957,0 Z M0.5884,0.0126 L0.5884,0.0776 L0.5129,0.0776 L0.5129,0.0126 L0.5884,0.0126 Z M0.5957,0 L0.5056,0 Q0.5027,0,0.5005,0.0021 T0.4983,0.0063 L0.4983,0.0839 Q0.4983,0.0864,0.5007,0.0883 T0.5056,0.0902 L0.5957,0.0902 Q0.5986,0.0902,0.6008,0.0881 T0.603,0.0839 L0.603,0.0063 Q0.603,0.0038,0.6006,0.0019 T0.5957,0 Z M0.0901,0.0084 L0.0901,0.0818 L0.0049,0.0818 L0.0049,0.0084 L0.0901,0.0084 Z M0.0925,0.0042 L0.0024,0.0042 Q0,0.0042,0,0.0063 L0,0.0839 Q0,0.086,0.0024,0.086 L0.0925,0.086 Q0.095,0.086,0.095,0.0839 L0.095,0.0063 Q0.095,0.0042,0.0925,0.0042 Z M0.0901,0.0084 L0.0901,0.0818 L0.0049,0.0818 L0.0049,0.0084 L0.0901,0.0084 Z M0.0925,0.0042 L0.0024,0.0042 Q0,0.0042,0,0.0063 L0,0.0839 Q0,0.086,0.0024,0.086 L0.0925,0.086 Q0.095,0.086,0.095,0.0839 L0.095,0.0063 Q0.095,0.0042,0.0925,0.0042 Z M0.0901,0.0084 L0.0901,0.0818 L0.0049,0.0818 L0.0049,0.0084 L0.0901,0.0084 Z M0.0925,0.0042 L0.0024,0.0042 Q0,0.0042,0,0.0063 L0,0.0839 Q0,0.086,0.0024,0.086 L0.0925,0.086 Q0.095,0.086,0.095,0.0839 L0.095,0.0063 Q0.095,0.0042,0.0925,0.0042 Z M0.34,0.0063 L0.2499,0.0063 L0.2499,0.0839 L0.34,0.0839 L0.34,0.0063 Z M0.34,0.0063 L0.2499,0.0063 L0.2499,0.0839 L0.34,0.0839 L0.34,0.0063 Z M0.34,0.0063 L0.2499,0.0063 L0.2499,0.0839 L0.34,0.0839 L0.34,0.0063 Z M0.4691,0.0063 L0.379,0.0063 L0.379,0.0839 L0.4691,0.0839 L0.4691,0.0063 Z M0.4691,0.0063 L0.379,0.0063 L0.379,0.0839 L0.4691,0.0839 L0.4691,0.0063 Z M0.4691,0.0063 L0.379,0.0063 L0.379,0.0839 L0.4691,0.0839 L0.4691,0.0063 Z M0.7311,0.0063 L0.641,0.0063 L0.641,0.0839 L0.7311,0.0839 L0.7311,0.0063 Z M0.7311,0.0063 L0.641,0.0063 L0.641,0.0839 L0.7311,0.0839 L0.7311,0.0063 Z M0.7311,0.0063 L0.641,0.0063 L0.641,0.0839 L0.7311,0.0839 L0.7311,0.0063 Z M0.8626,0.0063 L0.7725,0.0063 L0.7725,0.0839 L0.8626,0.0839 L0.8626,0.0063 Z M0.8626,0.0063 L0.7725,0.0063 L0.7725,0.0839 L0.8626,0.0839 L0.8626,0.0063 Z M0.8626,0.0063 L0.7725,0.0063 L0.7725,0.0839 L0.8626,0.0839 L0.8626,0.0063 Z M1,0.0063 L0.9099,0.0063 L0.9099,0.0839 L1,0.0839 L1,0.0063 Z M1,0.0063 L0.9099,0.0063 L0.9099,0.0839 L1,0.0839 L1,0.0063 Z M1,0.0063 L0.9099,0.0063 L0.9099,0.0839 L1,0.0839 L1,0.0063 Z M0.5913,0.9224 L0.5913,0.9958 L0.5061,0.9958 L0.5061,0.9224 L0.5913,0.9224 Z M0.5938,0.9182 L0.5037,0.9182 Q0.5012,0.9182,0.5012,0.9203 L0.5012,0.9979 Q0.5012,1,0.5037,1 L0.5938,1 Q0.5962,1,0.5962,0.9979 L0.5962,0.9203 Q0.5962,0.9182,0.5938,0.9182 Z M0.5913,0.9224 L0.5913,0.9958 L0.5061,0.9958 L0.5061,0.9224 L0.5913,0.9224 Z M0.5938,0.9182 L0.5037,0.9182 Q0.5012,0.9182,0.5012,0.9203 L0.5012,0.9979 Q0.5012,1,0.5037,1 L0.5938,1 Q0.5962,1,0.5962,0.9979 L0.5962,0.9203 Q0.5962,0.9182,0.5938,0.9182 Z M0.5913,0.9224 L0.5913,0.9958 L0.5061,0.9958 L0.5061,0.9224 L0.5913,0.9224 Z M0.5938,0.9182 L0.5037,0.9182 Q0.5012,0.9182,0.5012,0.9203 L0.5012,0.9979 Q0.5012,1,0.5037,1 L0.5938,1 Q0.5962,1,0.5962,0.9979 L0.5962,0.9203 Q0.5962,0.9182,0.5938,0.9182 Z M0.8626,0.9203 L0.7725,0.9203 L0.7725,0.9979 L0.8626,0.9979 L0.8626,0.9203 Z M0.8626,0.9203 L0.7725,0.9203 L0.7725,0.9979 L0.8626,0.9979 L0.8626,0.9203 Z M0.8626,0.9203 L0.7725,0.9203 L0.7725,0.9979 L0.8626,0.9979 L0.8626,0.9203 Z M1,0.9203 L0.9099,0.9203 L0.9099,0.9979 L1,0.9979 L1,0.9203 Z M1,0.9203 L0.9099,0.9203 L0.9099,0.9979 L1,0.9979 L1,0.9203 Z M1,0.9203 L0.9099,0.9203 L0.9099,0.9979 L1,0.9979 L1,0.9203 Z M0.0901,0.1158 L0.0901,0.1888 L0.0049,0.1888 L0.0049,0.1158 L0.0901,0.1158 Z M0.0925,0.1116 L0.0024,0.1116 Q0,0.1116,0,0.1137 L0,0.1909 Q0,0.193,0.0024,0.193 L0.0925,0.193 Q0.095,0.193,0.095,0.1909 L0.095,0.1137 Q0.095,0.1116,0.0925,0.1116 Z M0.2148,0.6086 L0.2148,0.682 L0.1296,0.682 L0.1296,0.6086 L0.2148,0.6086 Z M0.2172,0.6044 L0.1271,0.6044 Q0.1247,0.6044,0.1247,0.6065 L0.1247,0.6841 Q0.1247,0.6862,0.1271,0.6862 L0.2172,0.6862 Q0.2197,0.6862,0.2197,0.6841 L0.2197,0.6065 Q0.2197,0.6044,0.2172,0.6044 Z M0.34,0.1137 L0.2499,0.1137 L0.2499,0.1909 L0.34,0.1909 L0.34,0.1137 Z M0.3376,0.4102 L0.3376,0.4836 L0.2523,0.4836 L0.2523,0.4102 L0.3376,0.4102 Z M0.34,0.406 L0.2499,0.406 Q0.2474,0.406,0.2474,0.4081 L0.2474,0.4857 Q0.2474,0.4878,0.2499,0.4878 L0.34,0.4878 Q0.3424,0.4878,0.3424,0.4857 L0.3424,0.4081 Q0.3424,0.406,0.34,0.406 Z M0.3376,0.7131 L0.3376,0.7865 L0.2523,0.7865 L0.2523,0.7131 L0.3376,0.7131 Z M0.34,0.7089 L0.2499,0.7089 Q0.2474,0.7089,0.2474,0.711 L0.2474,0.7886 Q0.2474,0.7907,0.2499,0.7907 L0.34,0.7907 Q0.3424,0.7907,0.3424,0.7886 L0.3424,0.711 Q0.3424,0.7089,0.34,0.7089 Z M0.4593,0.2227 L0.4593,0.2836 L0.3887,0.2836 L0.3887,0.2227 L0.4593,0.2227 Z M0.4691,0.206 L0.379,0.206 Q0.3746,0.206,0.3719,0.2087 T0.3692,0.2143 L0.3692,0.2919 Q0.3692,0.2957,0.3724,0.298 T0.379,0.3003 L0.4691,0.3003 Q0.4735,0.3003,0.4761,0.2976 T0.4788,0.2919 L0.4788,0.2143 Q0.4788,0.211,0.4756,0.2085 T0.4691,0.206 Z M0.4593,0.3184 L0.4593,0.3792 L0.3887,0.3792 L0.3887,0.3184 L0.4593,0.3184 Z M0.4691,0.3016 L0.379,0.3016 Q0.3746,0.3016,0.3719,0.3043 T0.3692,0.31 L0.3692,0.3876 Q0.3692,0.3914,0.3724,0.3937 T0.379,0.396 L0.4691,0.396 Q0.4735,0.396,0.4761,0.3932 T0.4788,0.3876 L0.4788,0.31 Q0.4788,0.3062,0.4756,0.3039 T0.4691,0.3016 Z M0.4691,0.4081 L0.379,0.4081 L0.379,0.4857 L0.4691,0.4857 L0.4691,0.4081 Z M0.4691,0.5059 L0.379,0.5059 L0.379,0.5835 L0.4691,0.5835 L0.4691,0.5059 Z M0.4593,0.6149 L0.4593,0.6758 L0.3887,0.6758 L0.3887,0.6149 L0.4593,0.6149 Z M0.4691,0.5982 L0.379,0.5982 Q0.3746,0.5982,0.3719,0.6009 T0.3692,0.6065 L0.3692,0.6841 Q0.3692,0.6879,0.3724,0.6902 T0.379,0.6925 L0.4691,0.6925 Q0.4735,0.6925,0.4761,0.6898 T0.4788,0.6841 L0.4788,0.6065 Q0.4788,0.6028,0.4756,0.6005 T0.4691,0.5982 Z M0.5938,0.1137 L0.5037,0.1137 L0.5037,0.1909 L0.5938,0.1909 L0.5938,0.1137 Z M0.5938,0.2143 L0.5037,0.2143 L0.5037,0.2919 L0.5938,0.2919 L0.5938,0.2143 Z M0.5816,0.4186 L0.5816,0.4753 L0.5158,0.4753 L0.5158,0.4186 L0.5816,0.4186 Z M0.5938,0.3977 L0.5037,0.3977 Q0.4983,0.3977,0.4949,0.401 T0.4915,0.4081 L0.4915,0.4857 Q0.4915,0.4904,0.4954,0.4933 T0.5037,0.4962 L0.5938,0.4962 Q0.5991,0.4962,0.6025,0.4929 T0.6059,0.4857 L0.6059,0.4081 Q0.6059,0.4035,0.602,0.4006 T0.5938,0.3977 Z M0.5938,0.5059 L0.5037,0.5059 L0.5037,0.5835 L0.5938,0.5835 L0.5938,0.5059 Z M0.5913,0.7131 L0.5913,0.7865 L0.5061,0.7865 L0.5061,0.7131 L0.5913,0.7131 Z M0.5938,0.7089 L0.5037,0.7089 Q0.5012,0.7089,0.5012,0.711 L0.5012,0.7886 Q0.5012,0.7907,0.5037,0.7907 L0.5938,0.7907 Q0.5962,0.7907,0.5962,0.7886 L0.5962,0.711 Q0.5962,0.7089,0.5938,0.7089 Z M0.7311,0.1137 L0.641,0.1137 L0.641,0.1909 L0.7311,0.1909 L0.7311,0.1137 Z M0.7311,0.2143 L0.641,0.2143 L0.641,0.2919 L0.7311,0.2919 L0.7311,0.2143 Z M0.7311,0.8154 L0.641,0.8154 L0.641,0.8926 L0.7311,0.8926 L0.7311,0.8154 Z M0.7311,0.31 L0.641,0.31 L0.641,0.3876 L0.7311,0.3876 L0.7311,0.31 Z M0.7311,0.8154 L0.641,0.8154 L0.641,0.8926 L0.7311,0.8926 L0.7311,0.8154 Z M0.7311,0.4081 L0.641,0.4081 L0.641,0.4857 L0.7311,0.4857 L0.7311,0.4081 Z M0.7311,0.5059 L0.641,0.5059 L0.641,0.5835 L0.7311,0.5835 L0.7311,0.5059 Z M0.7311,0.711 L0.641,0.711 L0.641,0.7886 L0.7311,0.7886 L0.7311,0.711 Z M0.7311,0.8154 L0.641,0.8154 L0.641,0.8926 L0.7311,0.8926 L0.7311,0.8154 Z M0.8626,0.1137 L0.7725,0.1137 L0.7725,0.1909 L0.8626,0.1909 L0.8626,0.1137 Z M0.8626,0.2143 L0.7725,0.2143 L0.7725,0.2919 L0.8626,0.2919 L0.8626,0.2143 Z M0.8626,0.8154 L0.7725,0.8154 L0.7725,0.8926 L0.8626,0.8926 L0.8626,0.8154 Z M0.8626,0.31 L0.7725,0.31 L0.7725,0.3876 L0.8626,0.3876 L0.8626,0.31 Z M0.8626,0.8154 L0.7725,0.8154 L0.7725,0.8926 L0.8626,0.8926 L0.8626,0.8154 Z M0.8626,0.4081 L0.7725,0.4081 L0.7725,0.4857 L0.8626,0.4857 L0.8626,0.4081 Z M0.8626,0.5059 L0.7725,0.5059 L0.7725,0.5835 L0.8626,0.5835 L0.8626,0.5059 Z M0.8626,0.6065 L0.7725,0.6065 L0.7725,0.6841 L0.8626,0.6841 L0.8626,0.6065 Z M0.8626,0.711 L0.7725,0.711 L0.7725,0.7886 L0.8626,0.7886 L0.8626,0.711 Z M0.8626,0.8154 L0.7725,0.8154 L0.7725,0.8926 L0.8626,0.8926 L0.8626,0.8154 Z M1,0.1137 L0.9099,0.1137 L0.9099,0.1909 L1,0.1909 L1,0.1137 Z M1,0.2143 L0.9099,0.2143 L0.9099,0.2919 L1,0.2919 L1,0.2143 Z M1,0.8154 L0.9099,0.8154 L0.9099,0.8926 L1,0.8926 L1,0.8154 Z M1,0.31 L0.9099,0.31 L0.9099,0.3876 L1,0.3876 L1,0.31 Z M1,0.8154 L0.9099,0.8154 L0.9099,0.8926 L1,0.8926 L1,0.8154 Z M1,0.4081 L0.9099,0.4081 L0.9099,0.4857 L1,0.4857 L1,0.4081 Z M1,0.5059 L0.9099,0.5059 L0.9099,0.5835 L1,0.5835 L1,0.5059 Z M1,0.6065 L0.9099,0.6065 L0.9099,0.6841 L1,0.6841 L1,0.6065 Z M1,0.711 L0.9099,0.711 L0.9099,0.7886 L1,0.7886 L1,0.711 Z M1,0.8154 L0.9099,0.8154 L0.9099,0.8926 L1,0.8926 L1,0.8154 Z", type: 0 } }, "\\uE0C6": { type: 5, data: { d: "M0.6529,0.018 L0.6529,0.112 L0.7724,0.112 L0.7724,0.018 L0.6529,0.018 Z M0.6411,0 L0.7837,0 Q0.7873,0,0.7902,0.0015 T0.7943,0.005 T0.7956,0.0092 L0.7956,0.1208 Q0.7956,0.125,0.7917,0.1275 T0.7837,0.13 L0.6411,0.13 Q0.6359,0.13,0.6326,0.1271 T0.6292,0.1208 L0.6292,0.0092 Q0.6292,0.005,0.6331,0.0025 T0.6411,0 Z M0.6529,0.018 L0.6529,0.112 L0.7724,0.112 L0.7724,0.018 L0.6529,0.018 Z M0.6411,0 L0.7837,0 Q0.7873,0,0.7902,0.0015 T0.7943,0.005 T0.7956,0.0092 L0.7956,0.1208 Q0.7956,0.125,0.7917,0.1275 T0.7837,0.13 L0.6411,0.13 Q0.6359,0.13,0.6326,0.1271 T0.6292,0.1208 L0.6292,0.0092 Q0.6292,0.005,0.6331,0.0025 T0.6411,0 Z M0.6529,0.018 L0.6529,0.112 L0.7724,0.112 L0.7724,0.018 L0.6529,0.018 Z M0.6411,0 L0.7837,0 Q0.7873,0,0.7902,0.0015 T0.7943,0.005 T0.7956,0.0092 L0.7956,0.1208 Q0.7956,0.125,0.7917,0.1275 T0.7837,0.13 L0.6411,0.13 Q0.6359,0.13,0.6326,0.1271 T0.6292,0.1208 L0.6292,0.0092 Q0.6292,0.005,0.6331,0.0025 T0.6411,0 Z M0.4325,0.0143 L0.4325,0.1158 L0.5628,0.1158 L0.5628,0.0143 L0.4325,0.0143 Z M0.4264,0.0042 L0.5695,0.0042 Q0.5721,0.0042,0.5739,0.0057 T0.5757,0.0092 L0.5757,0.1208 Q0.5757,0.1221,0.5752,0.1231 T0.5736,0.1248 T0.5716,0.1256 T0.5695,0.1258 L0.4264,0.1258 Q0.4238,0.1258,0.422,0.1244 T0.4202,0.1208 L0.4202,0.0092 Q0.4202,0.008,0.4207,0.0069 T0.4222,0.0052 T0.4243,0.0044 T0.4264,0.0042 Z M0.4325,0.0143 L0.4325,0.1158 L0.5628,0.1158 L0.5628,0.0143 L0.4325,0.0143 Z M0.4264,0.0042 L0.5695,0.0042 Q0.5721,0.0042,0.5739,0.0057 T0.5757,0.0092 L0.5757,0.1208 Q0.5757,0.1221,0.5752,0.1231 T0.5736,0.1248 T0.5716,0.1256 T0.5695,0.1258 L0.4264,0.1258 Q0.4238,0.1258,0.422,0.1244 T0.4202,0.1208 L0.4202,0.0092 Q0.4202,0.008,0.4207,0.0069 T0.4222,0.0052 T0.4243,0.0044 T0.4264,0.0042 Z M0.4325,0.0143 L0.4325,0.1158 L0.5628,0.1158 L0.5628,0.0143 L0.4325,0.0143 Z M0.4264,0.0042 L0.5695,0.0042 Q0.5721,0.0042,0.5739,0.0057 T0.5757,0.0092 L0.5757,0.1208 Q0.5757,0.1221,0.5752,0.1231 T0.5736,0.1248 T0.5716,0.1256 T0.5695,0.1258 L0.4264,0.1258 Q0.4238,0.1258,0.422,0.1244 T0.4202,0.1208 L0.4202,0.0092 Q0.4202,0.008,0.4207,0.0069 T0.4222,0.0052 T0.4243,0.0044 T0.4264,0.0042 Z M0.2178,0.0092 L0.3605,0.0092 L0.3605,0.1208 L0.2178,0.1208 L0.2178,0.0092 Z M0.2178,0.0092 L0.3605,0.0092 L0.3605,0.1208 L0.2178,0.1208 L0.2178,0.0092 Z M0.2178,0.0092 L0.3605,0.0092 L0.3605,0.1208 L0.2178,0.1208 L0.2178,0.0092 Z M0,0.0092 L0.1432,0.0092 L0.1432,0.1208 L0,0.1208 L0,0.0092 Z M0,0.0092 L0.1432,0.0092 L0.1432,0.1208 L0,0.1208 L0,0.0092 Z M0,0.0092 L0.1432,0.0092 L0.1432,0.1208 L0,0.1208 L0,0.0092 Z M0.8574,0.3217 L0.8574,0.4098 L0.9691,0.4098 L0.9691,0.3217 L0.8574,0.3217 Z M0.8419,0.2978 L0.9846,0.2978 Q0.9892,0.2978,0.9928,0.2997 T0.9982,0.3043 T1,0.31 L1,0.4216 Q1,0.427,0.9951,0.4304 T0.9846,0.4337 L0.8419,0.4337 Q0.8352,0.4337,0.8308,0.4299 T0.8265,0.4216 L0.8265,0.31 Q0.8265,0.3062,0.829,0.3035 T0.835,0.2993 T0.8419,0.2978 Z M0.8574,0.888 L0.8574,0.9757 L0.9691,0.9757 L0.9691,0.888 L0.8574,0.888 Z M0.8419,0.8637 L0.9846,0.8637 Q0.9892,0.8637,0.9928,0.8658 T0.9982,0.8706 T1,0.8758 L1,0.9878 Q1,0.9929,0.9951,0.9964 T0.9846,1 L0.8419,1 Q0.8352,1,0.8308,0.996 T0.8265,0.9878 L0.8265,0.8758 Q0.8265,0.8708,0.8314,0.8672 T0.8419,0.8637 Z M0.6509,0.169 L0.6509,0.2706 L0.7806,0.2706 L0.7806,0.169 L0.6509,0.169 Z M0.6442,0.159 L0.7868,0.159 Q0.7899,0.159,0.7917,0.1604 T0.7935,0.164 L0.7935,0.2756 Q0.7935,0.2781,0.7915,0.2796 T0.7868,0.281 L0.6442,0.281 Q0.6416,0.281,0.6395,0.2794 T0.6375,0.2756 L0.6375,0.164 Q0.6375,0.1619,0.6398,0.1604 T0.6442,0.159 Z M0.6632,0.6044 L0.6632,0.6858 L0.7678,0.6858 L0.7678,0.6044 L0.6632,0.6044 Z M0.6442,0.5742 L0.7868,0.5742 Q0.7951,0.5742,0.8007,0.5791 T0.8064,0.5893 L0.8064,0.7013 Q0.8064,0.7076,0.8002,0.712 T0.7868,0.7164 L0.6442,0.7164 Q0.6359,0.7164,0.6305,0.7114 T0.6251,0.7013 L0.6251,0.5893 Q0.6251,0.5847,0.6282,0.5812 T0.6357,0.5759 T0.6442,0.5742 Z M0.4264,0.164 L0.5695,0.164 L0.5695,0.2756 L0.4264,0.2756 L0.4264,0.164 Z M0.4325,0.315 L0.4325,0.4165 L0.5628,0.4165 L0.5628,0.315 L0.4325,0.315 Z M0.4264,0.3049 L0.5695,0.3049 Q0.5721,0.3049,0.5739,0.3064 T0.5757,0.31 L0.5757,0.4216 Q0.5757,0.4237,0.5736,0.4251 T0.5695,0.4266 L0.4264,0.4266 Q0.4238,0.4266,0.422,0.4251 T0.4202,0.4216 L0.4202,0.31 Q0.4202,0.3087,0.4207,0.3077 T0.4222,0.306 T0.4243,0.3052 T0.4264,0.3049 Z M0.4264,0.4476 L0.5695,0.4476 L0.5695,0.5596 L0.4264,0.5596 L0.4264,0.4476 Z M0.4392,0.7408 L0.4392,0.8326 L0.5561,0.8326 L0.5561,0.7408 L0.4392,0.7408 Z M0.4264,0.7206 L0.5695,0.7206 Q0.5747,0.7206,0.5783,0.724 T0.5819,0.7307 L0.5819,0.8427 Q0.5819,0.8469,0.5778,0.8498 T0.5695,0.8528 L0.4264,0.8528 Q0.4207,0.8528,0.4171,0.8496 T0.4135,0.8427 L0.4135,0.7307 Q0.4135,0.7265,0.4176,0.7236 T0.4264,0.7206 Z M0.2178,0.164 L0.3605,0.164 L0.3605,0.2756 L0.2178,0.2756 L0.2178,0.164 Z M0.2178,0.31 L0.3605,0.31 L0.3605,0.4216 L0.2178,0.4216 L0.2178,0.31 Z M0.2178,0.5893 L0.3605,0.5893 L0.3605,0.7013 L0.2178,0.7013 L0.2178,0.5893 Z M0.2178,0.7307 L0.3605,0.7307 L0.3605,0.8427 L0.2178,0.8427 L0.2178,0.7307 Z M0.2178,0.8758 L0.3605,0.8758 L0.3605,0.9878 L0.2178,0.9878 L0.2178,0.8758 Z M0,0.164 L0.1432,0.164 L0.1432,0.2756 L0,0.2756 L0,0.164 Z M0,0.31 L0.1432,0.31 L0.1432,0.4216 L0,0.4216 L0,0.31 Z M0,0.4476 L0.1432,0.4476 L0.1432,0.5596 L0,0.5596 L0,0.4476 Z M0,0.5893 L0.1432,0.5893 L0.1432,0.7013 L0,0.7013 L0,0.5893 Z M0,0.7307 L0.1432,0.7307 L0.1432,0.8427 L0,0.8427 L0,0.7307 Z M0,0.8758 L0.1432,0.8758 L0.1432,0.9878 L0,0.9878 L0,0.8758 Z", type: 0 } }, "\\uE0C7": { type: 5, data: { d: "M0.3476,0.018 L0.3476,0.112 L0.2276,0.112 L0.2276,0.018 L0.3476,0.018 Z M0.3594,0 L0.2163,0 Q0.2132,0,0.2104,0.0015 T0.2062,0.005 T0.2049,0.0092 L0.2049,0.1208 Q0.2049,0.1237,0.2067,0.1258 T0.2111,0.129 T0.2163,0.13 L0.3594,0.13 Q0.3641,0.13,0.3674,0.1271 T0.3708,0.1208 L0.3708,0.0092 Q0.3708,0.005,0.3669,0.0025 T0.3594,0 Z M0.3476,0.018 L0.3476,0.112 L0.2276,0.112 L0.2276,0.018 L0.3476,0.018 Z M0.3594,0 L0.2163,0 Q0.2132,0,0.2104,0.0015 T0.2062,0.005 T0.2049,0.0092 L0.2049,0.1208 Q0.2049,0.1237,0.2067,0.1258 T0.2111,0.129 T0.2163,0.13 L0.3594,0.13 Q0.3641,0.13,0.3674,0.1271 T0.3708,0.1208 L0.3708,0.0092 Q0.3708,0.005,0.3669,0.0025 T0.3594,0 Z M0.3476,0.018 L0.3476,0.112 L0.2276,0.112 L0.2276,0.018 L0.3476,0.018 Z M0.3594,0 L0.2163,0 Q0.2132,0,0.2104,0.0015 T0.2062,0.005 T0.2049,0.0092 L0.2049,0.1208 Q0.2049,0.1237,0.2067,0.1258 T0.2111,0.129 T0.2163,0.13 L0.3594,0.13 Q0.3641,0.13,0.3674,0.1271 T0.3708,0.1208 L0.3708,0.0092 Q0.3708,0.005,0.3669,0.0025 T0.3594,0 Z M0.5675,0.0143 L0.5675,0.1158 L0.4377,0.1158 L0.4377,0.0143 L0.5675,0.0143 Z M0.5736,0.0042 L0.431,0.0042 Q0.4284,0.0042,0.4264,0.0057 T0.4243,0.0092 L0.4243,0.1208 Q0.4243,0.1221,0.4251,0.1231 T0.4269,0.1248 T0.4289,0.1256 T0.431,0.1258 L0.5736,0.1258 Q0.5767,0.1258,0.5785,0.1244 T0.5803,0.1208 L0.5803,0.0092 Q0.5803,0.008,0.5798,0.0069 T0.5783,0.0052 T0.5762,0.0044 T0.5736,0.0042 Z M0.5675,0.0143 L0.5675,0.1158 L0.4377,0.1158 L0.4377,0.0143 L0.5675,0.0143 Z M0.5736,0.0042 L0.431,0.0042 Q0.4284,0.0042,0.4264,0.0057 T0.4243,0.0092 L0.4243,0.1208 Q0.4243,0.1221,0.4251,0.1231 T0.4269,0.1248 T0.4289,0.1256 T0.431,0.1258 L0.5736,0.1258 Q0.5767,0.1258,0.5785,0.1244 T0.5803,0.1208 L0.5803,0.0092 Q0.5803,0.008,0.5798,0.0069 T0.5783,0.0052 T0.5762,0.0044 T0.5736,0.0042 Z M0.5675,0.0143 L0.5675,0.1158 L0.4377,0.1158 L0.4377,0.0143 L0.5675,0.0143 Z M0.5736,0.0042 L0.431,0.0042 Q0.4284,0.0042,0.4264,0.0057 T0.4243,0.0092 L0.4243,0.1208 Q0.4243,0.1221,0.4251,0.1231 T0.4269,0.1248 T0.4289,0.1256 T0.431,0.1258 L0.5736,0.1258 Q0.5767,0.1258,0.5785,0.1244 T0.5803,0.1208 L0.5803,0.0092 Q0.5803,0.008,0.5798,0.0069 T0.5783,0.0052 T0.5762,0.0044 T0.5736,0.0042 Z M0.7827,0.0092 L0.6395,0.0092 L0.6395,0.1208 L0.7827,0.1208 L0.7827,0.0092 Z M0.7827,0.0092 L0.6395,0.0092 L0.6395,0.1208 L0.7827,0.1208 L0.7827,0.0092 Z M0.7827,0.0092 L0.6395,0.0092 L0.6395,0.1208 L0.7827,0.1208 L0.7827,0.0092 Z M1,0.0092 L0.8574,0.0092 L0.8574,0.1208 L1,0.1208 L1,0.0092 Z M1,0.0092 L0.8574,0.0092 L0.8574,0.1208 L1,0.1208 L1,0.0092 Z M1,0.0092 L0.8574,0.0092 L0.8574,0.1208 L1,0.1208 L1,0.0092 Z M0.1432,0.3217 L0.1432,0.4098 L0.0309,0.4098 L0.0309,0.3217 L0.1432,0.3217 Z M0.1586,0.2978 L0.0154,0.2978 Q0.0088,0.2978,0.0044,0.3016 T0,0.31 L0,0.4216 Q0,0.427,0.0049,0.4304 T0.0154,0.4337 L0.1586,0.4337 Q0.1648,0.4337,0.1694,0.4299 T0.174,0.4216 L0.174,0.31 Q0.174,0.3062,0.1715,0.3035 T0.1653,0.2993 T0.1586,0.2978 Z M0.1432,0.888 L0.1432,0.9757 L0.0309,0.9757 L0.0309,0.888 L0.1432,0.888 Z M0.1586,0.8637 L0.0154,0.8637 Q0.0108,0.8637,0.0072,0.8658 T0.0018,0.8706 T0,0.8758 L0,0.9878 Q0,0.9929,0.0049,0.9964 T0.0154,1 L0.1586,1 Q0.1648,1,0.1694,0.996 T0.174,0.9878 L0.174,0.8758 Q0.174,0.8725,0.1715,0.8695 T0.1653,0.8651 T0.1586,0.8637 Z M0.3496,0.169 L0.3496,0.2706 L0.2194,0.2706 L0.2194,0.169 L0.3496,0.169 Z M0.3563,0.159 L0.2132,0.159 Q0.2106,0.159,0.2088,0.1604 T0.207,0.164 L0.207,0.2756 Q0.207,0.2781,0.2091,0.2796 T0.2132,0.281 L0.3563,0.281 Q0.3589,0.281,0.3607,0.2794 T0.3625,0.2756 L0.3625,0.164 Q0.3625,0.1619,0.3605,0.1604 T0.3563,0.159 Z M0.3368,0.6044 L0.3368,0.6858 L0.2327,0.6858 L0.2327,0.6044 L0.3368,0.6044 Z M0.3563,0.5742 L0.2132,0.5742 Q0.2049,0.5742,0.1993,0.5791 T0.1936,0.5893 L0.1936,0.7013 Q0.1936,0.7076,0.2001,0.712 T0.2132,0.7164 L0.3563,0.7164 Q0.3641,0.7164,0.3697,0.7114 T0.3754,0.7013 L0.3754,0.5893 Q0.3754,0.5847,0.3723,0.5812 T0.3648,0.5759 T0.3563,0.5742 Z M0.5736,0.164 L0.431,0.164 L0.431,0.2756 L0.5736,0.2756 L0.5736,0.164 Z M0.5675,0.315 L0.5675,0.4165 L0.4377,0.4165 L0.4377,0.315 L0.5675,0.315 Z M0.5736,0.3049 L0.431,0.3049 Q0.4284,0.3049,0.4264,0.3064 T0.4243,0.31 L0.4243,0.4216 Q0.4243,0.4237,0.4266,0.4251 T0.431,0.4266 L0.5736,0.4266 Q0.5767,0.4266,0.5785,0.4251 T0.5803,0.4216 L0.5803,0.31 Q0.5803,0.3087,0.5798,0.3077 T0.5783,0.306 T0.5762,0.3052 T0.5736,0.3049 Z M0.5736,0.4476 L0.431,0.4476 L0.431,0.5596 L0.5736,0.5596 L0.5736,0.4476 Z M0.5613,0.7408 L0.5613,0.8326 L0.4439,0.8326 L0.4439,0.7408 L0.5613,0.7408 Z M0.5736,0.7206 L0.431,0.7206 Q0.4253,0.7206,0.4217,0.724 T0.4181,0.7307 L0.4181,0.8427 Q0.4181,0.8469,0.4222,0.8498 T0.431,0.8528 L0.5736,0.8528 Q0.5778,0.8528,0.5808,0.8511 T0.5855,0.8471 T0.587,0.8427 L0.587,0.7307 Q0.587,0.7265,0.5826,0.7236 T0.5736,0.7206 Z M0.7827,0.164 L0.6395,0.164 L0.6395,0.2756 L0.7827,0.2756 L0.7827,0.164 Z M0.7827,0.31 L0.6395,0.31 L0.6395,0.4216 L0.7827,0.4216 L0.7827,0.31 Z M0.7827,0.5893 L0.6395,0.5893 L0.6395,0.7013 L0.7827,0.7013 L0.7827,0.5893 Z M0.7827,0.7307 L0.6395,0.7307 L0.6395,0.8427 L0.7827,0.8427 L0.7827,0.7307 Z M0.7827,0.8758 L0.6395,0.8758 L0.6395,0.9878 L0.7827,0.9878 L0.7827,0.8758 Z M1,0.164 L0.8574,0.164 L0.8574,0.2756 L1,0.2756 L1,0.164 Z M1,0.31 L0.8574,0.31 L0.8574,0.4216 L1,0.4216 L1,0.31 Z M1,0.4476 L0.8574,0.4476 L0.8574,0.5596 L1,0.5596 L1,0.4476 Z M1,0.5893 L0.8574,0.5893 L0.8574,0.7013 L1,0.7013 L1,0.5893 Z M1,0.7307 L0.8574,0.7307 L0.8574,0.8427 L1,0.8427 L1,0.7307 Z M1,0.8758 L0.8574,0.8758 L0.8574,0.9878 L1,0.9878 L1,0.8758 Z", type: 0 } }, "\\uE0C8": { type: 5, data: { d: "M0.0008,0.9979 Q0.0008,1,0.0032,1 Q0.0482,1,0.0602,0.9975 Q0.0667,0.9963,0.0847,0.9917 T0.1084,0.9859 Q0.1124,0.9851,0.1221,0.9851 L0.1253,0.9851 L0.1285,0.9851 Q0.1518,0.9851,0.1655,0.9809 Q0.1695,0.9801,0.1731,0.9788 T0.1791,0.9766 T0.1839,0.9747 T0.1888,0.9732 L0.1936,0.972 T0.1988,0.9712 T0.2048,0.971 L0.2096,0.971 Q0.2201,0.9714,0.2233,0.9714 T0.2345,0.9693 Q0.2386,0.9685,0.2502,0.9674 T0.2715,0.966 L0.2811,0.9656 Q0.2916,0.9647,0.2916,0.9573 Q0.2916,0.954,0.2892,0.9515 T0.2819,0.9486 Q0.2755,0.9482,0.2683,0.9482 Q0.2643,0.9482,0.2582,0.9484 T0.2498,0.9486 Q0.2426,0.9486,0.2402,0.9473 Q0.2386,0.9469,0.2317,0.943 T0.2161,0.937 Q0.2104,0.9357,0.1992,0.933 T0.1831,0.9291 Q0.1807,0.9287,0.1783,0.9285 T0.1739,0.928 T0.1703,0.9276 T0.1675,0.9272 T0.1655,0.9266 T0.1639,0.9253 Q0.1598,0.9216,0.1462,0.9216 L0.143,0.9216 L0.1398,0.9216 L0.1365,0.9216 Q0.1197,0.9195,0.1197,0.9154 L0.1197,0.9154 Q0.1205,0.9121,0.1373,0.9088 T0.1703,0.9054 Q0.1791,0.9054,0.1863,0.904 T0.1984,0.9011 T0.2064,0.8992 Q0.2402,0.8967,0.2506,0.8934 Q0.2538,0.8926,0.2602,0.8899 T0.2707,0.8872 Q0.2715,0.8872,0.2731,0.8876 Q0.2795,0.8884,0.2884,0.8884 Q0.3068,0.8884,0.3092,0.8826 L0.3092,0.8797 Q0.3092,0.8772,0.3076,0.8747 T0.3044,0.8706 T0.3028,0.8681 Q0.3076,0.8656,0.3237,0.8656 Q0.3317,0.8656,0.3622,0.8623 Q0.3655,0.8623,0.3867,0.8617 T0.4217,0.8602 Q0.4241,0.8598,0.4289,0.8598 L0.4345,0.8598 L0.441,0.8598 Q0.4578,0.8598,0.4667,0.8586 Q0.4739,0.8573,0.4851,0.8567 T0.5004,0.8552 Q0.5012,0.8552,0.5108,0.855 T0.5269,0.853 T0.5333,0.8461 Q0.5333,0.8445,0.5325,0.8432 T0.5309,0.8409 T0.5289,0.8391 T0.5261,0.8378 L0.5229,0.837 T0.5185,0.8362 T0.5133,0.8355 T0.5076,0.8349 T0.502,0.8341 Q0.4932,0.8324,0.4859,0.8324 Q0.4827,0.8324,0.4787,0.8328 T0.4731,0.8333 Q0.4707,0.8333,0.4683,0.8324 Q0.4482,0.825,0.4394,0.825 Q0.4369,0.825,0.4345,0.8254 Q0.4225,0.827,0.4153,0.827 Q0.4088,0.827,0.4064,0.8258 Q0.3976,0.8204,0.3751,0.8204 Q0.3703,0.8204,0.3667,0.8214 T0.3622,0.8225 Q0.3598,0.8225,0.3558,0.82 Q0.351,0.8175,0.3402,0.8167 T0.3177,0.8156 T0.3028,0.8146 L0.2956,0.8121 T0.2871,0.8094 T0.2771,0.8073 T0.2635,0.8063 Q0.261,0.8063,0.2586,0.8067 Q0.2378,0.8071,0.2273,0.8071 Q0.2072,0.8071,0.2024,0.8051 Q0.1976,0.8034,0.1932,0.8026 T0.1867,0.8013 T0.1847,0.8001 L0.1847,0.7993 Q0.1855,0.7984,0.1855,0.7978 T0.1859,0.7966 T0.1867,0.7959 T0.188,0.7955 T0.1896,0.7951 T0.1916,0.7949 T0.1944,0.7945 T0.1984,0.7941 T0.2032,0.7939 Q0.212,0.7926,0.2325,0.7918 T0.2562,0.7905 Q0.2691,0.7893,0.2787,0.7847 Q0.2835,0.7827,0.2968,0.7791 T0.3149,0.7756 Q0.3189,0.7756,0.3305,0.7733 T0.3446,0.771 L0.3454,0.771 Q0.3462,0.771,0.3498,0.7721 T0.3574,0.774 T0.3655,0.7748 Q0.3703,0.7748,0.3743,0.7731 T0.3823,0.7708 T0.3916,0.77 T0.3992,0.7694 Q0.4008,0.7694,0.4076,0.7688 T0.4205,0.7675 L0.4305,0.7665 Q0.4345,0.7657,0.4402,0.7617 T0.4458,0.7545 Q0.4458,0.7503,0.4353,0.7487 Q0.4297,0.7478,0.4209,0.7462 T0.4044,0.7433 T0.3904,0.7416 L0.3847,0.7416 Q0.3807,0.7416,0.3747,0.7422 T0.3663,0.7428 T0.3606,0.7424 Q0.3582,0.742,0.3562,0.7418 T0.3522,0.7412 T0.3482,0.7406 T0.3446,0.7401 T0.341,0.7397 T0.3373,0.7393 T0.3341,0.7391 L0.3293,0.7391 Q0.3277,0.7395,0.3253,0.7395 Q0.3205,0.7395,0.3052,0.7387 T0.2835,0.7379 Q0.2755,0.7379,0.253,0.7325 Q0.2506,0.7316,0.2462,0.731 T0.2382,0.7296 T0.2305,0.7271 T0.2181,0.7234 T0.2048,0.7196 T0.2,0.7155 Q0.2,0.7142,0.2016,0.713 Q0.208,0.7059,0.2285,0.6978 T0.2618,0.6898 Q0.2739,0.6898,0.2831,0.6848 T0.2956,0.6794 Q0.3028,0.6786,0.3289,0.6765 T0.3566,0.674 Q0.3582,0.674,0.3855,0.6723 T0.4406,0.6688 T0.4755,0.6653 Q0.5004,0.6607,0.5124,0.6599 L0.5165,0.6599 Q0.5213,0.6599,0.5277,0.6605 T0.5373,0.6611 Q0.543,0.6611,0.5494,0.6599 Q0.592,0.6524,0.6,0.6524 Q0.6064,0.6524,0.61,0.6499 T0.6161,0.6474 Q0.6177,0.6474,0.6261,0.6495 T0.6418,0.6516 L0.6482,0.6516 Q0.653,0.6512,0.6651,0.6506 T0.6876,0.6493 T0.7084,0.6477 T0.7229,0.645 Q0.7269,0.6437,0.7333,0.6437 Q0.7373,0.6437,0.7458,0.6443 T0.7574,0.645 Q0.7614,0.645,0.7631,0.6445 T0.7655,0.6441 Q0.7671,0.6441,0.7723,0.6448 T0.7823,0.6454 Q0.788,0.6454,0.7952,0.6445 Q0.8233,0.6408,0.8723,0.6367 Q0.9012,0.6342,0.9092,0.6342 L0.9165,0.6342 L0.9205,0.6342 Q0.9277,0.6342,0.9382,0.6323 T0.9526,0.6304 Q0.9534,0.6304,0.9594,0.6307 T0.9695,0.6309 Q0.9976,0.6309,0.9992,0.6234 Q1,0.6201,1,0.618 Q1,0.6089,0.9775,0.608 Q0.9703,0.6076,0.9582,0.6076 Q0.9518,0.6076,0.9394,0.6078 T0.9213,0.608 Q0.9036,0.608,0.8972,0.6072 Q0.894,0.6068,0.8871,0.6058 T0.8751,0.6039 T0.8627,0.6024 T0.8506,0.6018 L0.8474,0.6018 Q0.841,0.6022,0.8281,0.6041 T0.8112,0.606 Q0.8096,0.606,0.808,0.6056 Q0.7783,0.6002,0.7647,0.6002 Q0.7598,0.6002,0.7454,0.6006 T0.7261,0.601 Q0.7221,0.601,0.7145,0.6022 T0.7036,0.6035 Q0.6996,0.6035,0.6964,0.6022 Q0.6723,0.5902,0.6442,0.5902 Q0.6426,0.5902,0.6386,0.5904 T0.6337,0.5906 Q0.6273,0.5906,0.6249,0.5894 L0.6177,0.5856 T0.6116,0.5838 T0.6016,0.5825 T0.5855,0.5823 Q0.5719,0.5823,0.5574,0.5798 T0.5373,0.5774 L0.5341,0.5774 Q0.5293,0.5778,0.5213,0.5786 T0.51,0.5794 Q0.5036,0.5794,0.4988,0.5769 Q0.4932,0.574,0.4771,0.574 Q0.4723,0.574,0.4631,0.5745 T0.4498,0.5749 Q0.4418,0.5749,0.4394,0.5736 Q0.4353,0.5724,0.4305,0.5715 T0.4225,0.5707 T0.4145,0.5705 T0.4056,0.5699 Q0.4008,0.5691,0.398,0.5689 T0.394,0.5689 T0.3908,0.5686 T0.3855,0.5674 Q0.3831,0.567,0.3811,0.5662 T0.3779,0.5645 T0.3743,0.563 T0.3695,0.5624 Q0.3655,0.5624,0.3594,0.5635 T0.3494,0.5645 T0.3406,0.5635 T0.3325,0.5624 Q0.3309,0.5624,0.3301,0.5628 L0.3141,0.5628 Q0.2635,0.5628,0.2506,0.5612 Q0.2474,0.5608,0.2434,0.5608 Q0.2402,0.5608,0.2349,0.561 T0.2273,0.5612 Q0.2209,0.5612,0.2177,0.5595 Q0.2145,0.557,0.2145,0.5558 Q0.2169,0.5537,0.2345,0.5521 Q0.2876,0.5475,0.3028,0.5425 Q0.3068,0.5413,0.3149,0.5396 T0.3309,0.5367 T0.3478,0.5338 T0.3606,0.5309 Q0.3631,0.5305,0.3755,0.5259 T0.3968,0.5214 Q0.3992,0.5214,0.4024,0.5218 T0.4096,0.5222 Q0.4161,0.5222,0.4213,0.5209 T0.4313,0.5185 T0.4402,0.5172 Q0.4418,0.5168,0.447,0.5168 L0.4558,0.5168 T0.4639,0.5162 T0.4707,0.5141 T0.4731,0.5102 Q0.4731,0.5089,0.4723,0.5081 Q0.4699,0.5019,0.4627,0.4994 T0.4369,0.4965 Q0.4273,0.4961,0.4193,0.4946 T0.4048,0.4915 T0.3952,0.4894 Q0.392,0.4886,0.388,0.4886 Q0.3847,0.4886,0.3775,0.4892 T0.3647,0.4898 Q0.3598,0.4898,0.355,0.4894 Q0.3165,0.4861,0.3141,0.4853 Q0.2779,0.4774,0.2715,0.4774 Q0.2699,0.4774,0.2683,0.4776 T0.2627,0.4778 Q0.2498,0.4778,0.2281,0.4762 Q0.2241,0.4749,0.2233,0.4737 Q0.2249,0.472,0.2321,0.4708 Q0.2402,0.4695,0.2554,0.4695 L0.2675,0.4695 L0.2795,0.4695 Q0.294,0.4695,0.2996,0.4679 Q0.3141,0.4629,0.3373,0.4616 Q0.3414,0.4612,0.3466,0.4606 T0.3582,0.4589 T0.3687,0.4562 T0.3727,0.4525 Q0.3727,0.4509,0.3703,0.4492 Q0.3639,0.4455,0.3474,0.4419 T0.3213,0.4384 L0.3157,0.4384 L0.31,0.4384 Q0.294,0.4384,0.2859,0.4363 Q0.2795,0.4347,0.2691,0.4347 L0.2618,0.4347 L0.2546,0.4347 Q0.2458,0.4347,0.2394,0.4338 Q0.2257,0.4318,0.2193,0.4303 T0.2092,0.4266 T0.2052,0.4224 T0.2024,0.4154 T0.196,0.4052 Q0.1912,0.3994,0.1867,0.3949 T0.1807,0.3884 T0.1791,0.3849 Q0.1791,0.3824,0.1839,0.3745 Q0.1871,0.3687,0.1944,0.3637 T0.2072,0.3561 T0.2221,0.3501 T0.2321,0.3463 Q0.2353,0.3455,0.241,0.3445 T0.2522,0.3428 T0.2639,0.3411 T0.2731,0.3384 T0.2956,0.3351 T0.3197,0.3326 Q0.3213,0.3322,0.3237,0.3322 T0.3325,0.3331 T0.3414,0.3339 Q0.3478,0.3339,0.3518,0.3314 Q0.3606,0.3264,0.3703,0.3264 Q0.3775,0.3264,0.3847,0.3293 Q0.3888,0.331,0.396,0.331 Q0.4024,0.331,0.4116,0.3295 T0.4265,0.3266 T0.4414,0.3227 T0.4514,0.3202 Q0.4578,0.3181,0.4839,0.3152 T0.5112,0.3123 T0.5177,0.3119 T0.5285,0.3111 T0.5398,0.3096 T0.549,0.3065 T0.5526,0.3015 Q0.5526,0.2999,0.5518,0.2982 Q0.547,0.2903,0.5386,0.2883 T0.5165,0.2862 Q0.5116,0.2862,0.5056,0.2866 T0.4972,0.287 Q0.4884,0.287,0.4787,0.2833 Q0.4594,0.2758,0.4265,0.2758 Q0.4169,0.2758,0.4129,0.2766 Q0.4112,0.2771,0.4104,0.2771 Q0.4088,0.2771,0.4056,0.2748 T0.3968,0.2721 Q0.3695,0.2696,0.359,0.2659 Q0.355,0.2646,0.351,0.2646 T0.3426,0.2661 T0.3365,0.2675 T0.3333,0.2659 Q0.3277,0.2605,0.3116,0.2553 T0.2859,0.2501 L0.2843,0.2501 L0.2819,0.2501 Q0.2779,0.2501,0.2723,0.2493 T0.2586,0.2472 T0.2474,0.2455 Q0.1799,0.236,0.1719,0.236 Q0.1663,0.236,0.1606,0.235 T0.1502,0.2316 T0.1454,0.2265 Q0.1454,0.2223,0.1558,0.2173 Q0.1679,0.2115,0.1859,0.2092 T0.2185,0.207 T0.2353,0.2057 Q0.2369,0.2049,0.2502,0.2041 T0.2799,0.2022 T0.302,0.2007 Q0.3084,0.1999,0.3245,0.1954 T0.347,0.1908 Q0.3502,0.1908,0.3534,0.1916 Q0.3663,0.197,0.388,0.197 Q0.404,0.197,0.4088,0.1929 Q0.4096,0.192,0.4108,0.192 T0.4177,0.1945 T0.4277,0.197 T0.4369,0.1949 Q0.4442,0.1908,0.4843,0.1875 Q0.4892,0.1871,0.4968,0.1839 T0.5084,0.1808 L0.5108,0.1808 Q0.5213,0.1825,0.5454,0.1825 Q0.5823,0.1825,0.5992,0.1779 Q0.6096,0.1746,0.6217,0.1746 Q0.6249,0.1746,0.6309,0.1748 T0.6394,0.175 Q0.6434,0.175,0.6466,0.1746 Q0.6474,0.1746,0.6594,0.1738 T0.6787,0.1713 T0.6892,0.1659 Q0.6924,0.1634,0.6924,0.1593 Q0.6924,0.1547,0.6888,0.151 T0.6795,0.1472 Q0.6779,0.1472,0.6763,0.1477 Q0.6699,0.1493,0.6667,0.1493 Q0.661,0.1493,0.6506,0.1456 Q0.6329,0.1394,0.6129,0.1394 Q0.6048,0.1394,0.5992,0.1377 T0.5888,0.136 T0.5803,0.1377 T0.5751,0.1394 Q0.5711,0.1394,0.5639,0.1369 Q0.5365,0.1273,0.5116,0.1273 Q0.4876,0.1273,0.4667,0.1253 Q0.4627,0.1248,0.4542,0.1211 T0.4337,0.1174 L0.4305,0.1174 Q0.4217,0.1178,0.4153,0.119 T0.408,0.1203 Q0.4056,0.1203,0.4,0.117 Q0.3976,0.1153,0.396,0.1136 T0.3932,0.1112 T0.39,0.1099 T0.3847,0.1095 Q0.3799,0.1095,0.3687,0.1103 Q0.355,0.1112,0.3434,0.1141 T0.3301,0.117 Q0.3261,0.117,0.3229,0.1145 Q0.3181,0.1116,0.3052,0.1087 T0.2787,0.1043 T0.2546,0.1029 Q0.2506,0.1029,0.2474,0.1033 Q0.2418,0.1037,0.2349,0.1054 T0.2249,0.107 Q0.2225,0.107,0.2193,0.1066 Q0.2024,0.1024,0.1863,0.1024 Q0.1823,0.1024,0.1562,0.0971 T0.1269,0.0917 T0.1161,0.0896 T0.106,0.0854 Q0.1076,0.0846,0.11,0.0842 Q0.1173,0.0821,0.1261,0.0821 Q0.1301,0.0821,0.1369,0.0825 T0.1462,0.083 Q0.1494,0.083,0.151,0.0825 T0.1831,0.0813 T0.2201,0.0784 T0.243,0.074 T0.2667,0.0718 Q0.2707,0.0718,0.2755,0.0724 T0.2843,0.073 T0.2936,0.0724 T0.3024,0.0705 T0.3072,0.068 T0.3092,0.0657 T0.3108,0.0647 Q0.3116,0.0643,0.3133,0.0643 L0.3157,0.0643 L0.3181,0.0643 Q0.3446,0.0643,0.3446,0.0556 T0.3205,0.0469 L0.3189,0.0469 Q0.3157,0.0469,0.3157,0.0465 Q0.3084,0.0427,0.2835,0.0386 Q0.2739,0.0369,0.2675,0.0342 T0.2538,0.0299 Q0.249,0.029,0.245,0.029 T0.2378,0.0303 T0.2321,0.0315 Q0.2305,0.0315,0.2273,0.0307 Q0.2201,0.0286,0.2004,0.0272 T0.1775,0.0245 Q0.1735,0.0228,0.1663,0.0226 T0.1522,0.0197 T0.1345,0.0145 T0.1124,0.0079 Q0.0996,0.0033,0.0671,0.0044 T0.0297,0.0041 Q0.0169,0,0.0024,0.0017 Q0,0.0021,0,0.0037 Z M0.0064,0.9954 L0.0056,0.0058 Q0.0177,0.005,0.0281,0.0083 Q0.0345,0.01,0.0675,0.0089 T0.1108,0.012 Q0.1221,0.0162,0.1329,0.0187 T0.1498,0.0236 T0.1606,0.0268 T0.1691,0.0274 T0.1759,0.0286 Q0.1807,0.0303,0.2,0.0315 T0.2257,0.0348 Q0.2305,0.0361,0.2337,0.0361 Q0.2361,0.0361,0.2398,0.0348 T0.2466,0.0336 Q0.249,0.0336,0.2522,0.034 Q0.2586,0.0353,0.2655,0.0382 T0.2827,0.0427 Q0.3068,0.0469,0.3124,0.0502 Q0.3157,0.0523,0.3237,0.0523 L0.3277,0.0523 L0.3309,0.0523 Q0.3398,0.0523,0.3398,0.0556 Q0.3398,0.0581,0.3341,0.0587 T0.3205,0.0593 T0.3092,0.0603 T0.3036,0.0643 T0.2932,0.068 Q0.2884,0.0684,0.2843,0.0684 Q0.2811,0.0684,0.2763,0.0678 T0.2667,0.0672 Q0.2586,0.0672,0.2422,0.0697 T0.2177,0.0747 Q0.2137,0.0759,0.1831,0.0767 T0.1494,0.0784 L0.1474,0.0784 T0.1398,0.078 T0.1285,0.0776 Q0.1173,0.0776,0.1084,0.08 Q0.1004,0.0817,0.1004,0.0846 Q0.1004,0.0867,0.104,0.0888 T0.1124,0.0923 T0.1213,0.0948 T0.1269,0.0958 T0.155,0.1014 T0.1863,0.107 Q0.2016,0.107,0.2185,0.1107 Q0.2217,0.1116,0.2257,0.1116 Q0.2289,0.1116,0.2365,0.1099 T0.2482,0.1074 L0.2538,0.1074 Q0.2683,0.1074,0.2912,0.1107 T0.3197,0.1182 Q0.3245,0.1215,0.3301,0.1215 Q0.3333,0.1215,0.3454,0.1184 T0.3687,0.1145 Q0.3735,0.1141,0.3779,0.1139 T0.3843,0.1134 T0.3871,0.1132 Q0.3896,0.1132,0.39,0.1136 T0.392,0.1161 T0.3968,0.1203 Q0.404,0.1248,0.408,0.1248 Q0.4096,0.1248,0.4165,0.1234 T0.4305,0.1215 L0.4337,0.1215 Q0.4442,0.1215,0.4518,0.1251 T0.4659,0.1294 Q0.4876,0.1319,0.5116,0.1319 T0.5622,0.141 Q0.5703,0.1439,0.5751,0.1439 Q0.5791,0.1439,0.5831,0.1423 T0.5888,0.1406 Q0.592,0.1406,0.5944,0.1412 T0.6012,0.1427 T0.6129,0.1435 Q0.6313,0.1435,0.649,0.1497 Q0.6602,0.1535,0.6667,0.1535 Q0.6715,0.1535,0.6779,0.1522 Q0.6787,0.1518,0.6795,0.1518 Q0.6827,0.1518,0.6847,0.1541 T0.6867,0.1593 Q0.6867,0.1618,0.6851,0.1634 Q0.6835,0.1655,0.6775,0.1667 T0.6598,0.169 T0.6458,0.1705 T0.6402,0.1709 Q0.6378,0.1709,0.6321,0.1705 T0.6225,0.1701 Q0.6096,0.1701,0.5968,0.1738 Q0.5823,0.1779,0.5446,0.1779 Q0.5205,0.1779,0.5116,0.1767 Q0.51,0.1763,0.5084,0.1763 Q0.5028,0.1763,0.4944,0.1796 T0.4835,0.1829 L0.4771,0.1833 T0.4659,0.1844 L0.4546,0.1858 T0.443,0.1881 T0.4337,0.1912 Q0.4321,0.1916,0.4305,0.1916 Q0.4273,0.1916,0.4209,0.1895 T0.412,0.1875 Q0.408,0.1875,0.4056,0.19 Q0.4024,0.1925,0.388,0.1925 Q0.3663,0.1925,0.3558,0.1879 Q0.3518,0.1862,0.3462,0.1862 Q0.3373,0.1862,0.3213,0.191 T0.3012,0.1962 Q0.2964,0.1966,0.2799,0.1976 T0.2494,0.1997 T0.2313,0.2024 L0.2313,0.2024 L0.2293,0.2024 L0.2261,0.2024 L0.2217,0.2024 Q0.204,0.2024,0.1851,0.2047 T0.1526,0.2136 Q0.1406,0.2198,0.1406,0.226 Q0.1406,0.2319,0.1518,0.2362 T0.1719,0.2406 Q0.1791,0.2406,0.2466,0.2497 Q0.2498,0.2501,0.2574,0.2516 T0.2711,0.2538 T0.2819,0.2547 L0.2851,0.2547 Q0.2851,0.2543,0.2859,0.2543 Q0.294,0.2543,0.3096,0.2592 T0.3285,0.2684 Q0.3317,0.2721,0.3373,0.2721 Q0.3406,0.2721,0.3462,0.2708 T0.3542,0.2696 Q0.3558,0.2696,0.3574,0.27 Q0.3679,0.2737,0.3968,0.2762 Q0.3984,0.2766,0.4004,0.2779 L0.4044,0.2804 T0.4096,0.2816 Q0.412,0.2816,0.4145,0.2808 Q0.4177,0.2804,0.4249,0.2804 Q0.4586,0.2804,0.4763,0.287 Q0.4867,0.2912,0.4972,0.2912 Q0.5004,0.2912,0.5064,0.2908 T0.5165,0.2903 Q0.5293,0.2903,0.5361,0.2922 T0.547,0.3003 L0.547,0.3011 Q0.547,0.3036,0.5414,0.3049 T0.5249,0.3067 T0.51,0.3082 Q0.5092,0.3082,0.4831,0.3111 T0.4498,0.3161 Q0.408,0.3264,0.3952,0.3264 Q0.3896,0.3264,0.3863,0.3252 Q0.3783,0.3223,0.3703,0.3223 Q0.359,0.3223,0.3494,0.3277 Q0.347,0.3293,0.343,0.3293 Q0.3414,0.3293,0.3353,0.3285 T0.3253,0.3277 T0.3181,0.3285 Q0.3149,0.3289,0.2952,0.3306 T0.2699,0.3347 Q0.2675,0.3364,0.2598,0.3372 T0.2434,0.3395 T0.2297,0.3426 L0.2205,0.3461 T0.2048,0.3523 T0.1908,0.3606 T0.1791,0.3725 Q0.1743,0.3803,0.1743,0.3845 Q0.1743,0.3874,0.1763,0.3901 T0.1827,0.3976 T0.1912,0.4073 T0.198,0.4189 T0.2032,0.4276 T0.2137,0.4326 T0.2386,0.438 Q0.2458,0.4392,0.2562,0.4392 L0.2639,0.4392 L0.2699,0.4392 Q0.2795,0.4392,0.2843,0.4405 Q0.2932,0.443,0.3092,0.443 L0.3157,0.443 L0.3213,0.443 Q0.3293,0.443,0.3458,0.4463 T0.3671,0.4525 Q0.3598,0.4558,0.3373,0.4571 Q0.3124,0.4587,0.298,0.4637 Q0.294,0.465,0.2811,0.465 L0.2703,0.465 L0.2586,0.465 Q0.241,0.465,0.2305,0.4666 Q0.2185,0.4687,0.2185,0.4728 Q0.2185,0.4745,0.2205,0.4764 T0.2241,0.4791 L0.2265,0.4803 L0.2273,0.4803 Q0.2506,0.4824,0.261,0.4824 Q0.2675,0.4824,0.2699,0.482 Q0.2699,0.4815,0.2707,0.4815 Q0.2771,0.4815,0.3124,0.4898 Q0.3173,0.4907,0.3229,0.4913 T0.3386,0.4925 T0.3542,0.4936 T0.3663,0.494 Q0.3711,0.494,0.3787,0.4936 T0.3888,0.4932 Q0.392,0.4932,0.3944,0.4936 T0.4032,0.4959 T0.4181,0.499 T0.4369,0.5006 Q0.449,0.501,0.455,0.5021 T0.4639,0.5048 T0.4675,0.5093 L0.4675,0.5097 Q0.4675,0.5106,0.4663,0.511 T0.4622,0.5116 L0.4566,0.512 T0.4486,0.5124 T0.4402,0.5127 Q0.4345,0.5131,0.4257,0.5153 T0.4096,0.5176 Q0.4064,0.5176,0.4024,0.5172 L0.3968,0.5172 Q0.3863,0.5172,0.3731,0.522 T0.359,0.5268 Q0.355,0.528,0.3317,0.5321 T0.3004,0.5388 Q0.2867,0.5433,0.2337,0.5479 Q0.2096,0.55,0.2096,0.5562 Q0.2096,0.5591,0.2145,0.5628 Q0.2193,0.5662,0.2289,0.5662 Q0.2313,0.5662,0.2373,0.5657 T0.2458,0.5653 L0.2498,0.5653 Q0.2635,0.5674,0.3124,0.5674 Q0.3261,0.5674,0.3301,0.567 L0.3317,0.567 Q0.3341,0.567,0.3394,0.568 T0.3486,0.5691 Q0.3542,0.5691,0.3606,0.5678 T0.3699,0.5666 T0.3759,0.5686 T0.3839,0.5718 T0.3908,0.573 T0.3964,0.5734 T0.4048,0.5742 T0.4165,0.5751 T0.4277,0.5757 T0.4369,0.5778 Q0.4426,0.5794,0.4538,0.5794 Q0.4586,0.5794,0.4679,0.5792 T0.4811,0.579 Q0.4924,0.579,0.4956,0.5807 Q0.502,0.584,0.5108,0.584 L0.5137,0.584 T0.5173,0.5838 L0.5205,0.5834 L0.5237,0.583 L0.5269,0.5825 T0.5305,0.5821 T0.5341,0.5819 L0.5365,0.5819 Q0.5414,0.5819,0.5562,0.5842 T0.5855,0.5865 Q0.5912,0.5865,0.5948,0.5867 T0.6012,0.5869 T0.6064,0.5873 T0.61,0.5877 T0.6133,0.5886 T0.6157,0.5896 L0.6185,0.591 T0.6217,0.5931 Q0.6265,0.5952,0.6369,0.5952 L0.6418,0.5952 L0.6466,0.5952 Q0.6723,0.5952,0.6932,0.606 Q0.698,0.608,0.7044,0.608 Q0.7084,0.608,0.7161,0.6068 T0.7261,0.6056 Q0.7309,0.6056,0.7454,0.6051 T0.7647,0.6047 Q0.7775,0.6047,0.8072,0.6101 Q0.8096,0.6105,0.812,0.6105 Q0.8177,0.6105,0.8297,0.6085 T0.8474,0.606 L0.8506,0.606 Q0.8562,0.606,0.8647,0.607 T0.8831,0.6095 T0.8964,0.6118 Q0.9036,0.6122,0.9221,0.6122 L0.9406,0.6122 L0.959,0.6122 L0.9767,0.6122 Q0.9952,0.613,0.9952,0.6172 Q0.9952,0.6176,0.9944,0.6221 Q0.9936,0.6259,0.9574,0.6259 L0.955,0.6259 L0.9526,0.6259 Q0.9478,0.6259,0.9373,0.628 T0.9205,0.63 L0.9173,0.63 Q0.9133,0.6296,0.9084,0.6296 Q0.9004,0.6296,0.8715,0.6321 Q0.8233,0.6367,0.7944,0.64 Q0.7888,0.6408,0.7839,0.6408 T0.7739,0.6402 T0.7671,0.6396 Q0.7639,0.6396,0.7622,0.64 Q0.7614,0.6404,0.759,0.6404 Q0.7574,0.6404,0.749,0.6398 T0.7357,0.6392 Q0.7261,0.6392,0.7213,0.6412 Q0.7173,0.6425,0.7032,0.6437 T0.6711,0.6458 T0.6474,0.647 Q0.645,0.6474,0.6418,0.6474 Q0.6353,0.6474,0.6277,0.6454 T0.6161,0.6433 Q0.6104,0.6433,0.6072,0.6456 T0.6,0.6479 Q0.5912,0.6479,0.5486,0.6557 Q0.5422,0.657,0.5373,0.657 Q0.5349,0.657,0.5289,0.6564 T0.5173,0.6557 L0.5124,0.6557 Q0.4996,0.6562,0.4739,0.6611 Q0.4675,0.6624,0.4398,0.6645 T0.3851,0.668 T0.3558,0.6698 Q0.355,0.6698,0.3285,0.6721 T0.2948,0.6752 Q0.2892,0.6761,0.2843,0.6786 T0.2747,0.6831 T0.2618,0.6852 Q0.253,0.6852,0.2394,0.6893 T0.2141,0.6993 T0.1968,0.7105 Q0.1944,0.713,0.1944,0.7155 Q0.1944,0.7196,0.2012,0.7229 T0.2177,0.7285 T0.2281,0.7308 Q0.2321,0.7329,0.2365,0.7339 T0.245,0.7356 T0.2514,0.7366 Q0.2522,0.737,0.2554,0.7379 T0.2614,0.7393 T0.2679,0.7406 T0.2755,0.7416 T0.2835,0.742 Q0.29,0.742,0.3048,0.7428 T0.3253,0.7437 L0.3301,0.7437 L0.3333,0.7437 Q0.3341,0.7437,0.3598,0.7466 Q0.3639,0.7474,0.3671,0.7474 T0.3759,0.7466 T0.3855,0.7457 Q0.388,0.7457,0.3904,0.7462 Q0.3984,0.7466,0.4137,0.7495 T0.4349,0.7532 T0.441,0.7557 Q0.441,0.7599,0.4289,0.7619 Q0.4257,0.7628,0.4197,0.7634 T0.4072,0.7644 T0.3984,0.7652 Q0.3968,0.7652,0.3912,0.7655 T0.3811,0.7665 T0.3719,0.7694 Q0.3695,0.7702,0.3655,0.7702 T0.3546,0.7686 T0.3462,0.7665 L0.3446,0.7665 Q0.3406,0.7665,0.3293,0.769 T0.3149,0.7715 Q0.3084,0.7715,0.2952,0.7748 T0.2763,0.781 Q0.2675,0.7847,0.2554,0.7864 Q0.253,0.7864,0.2325,0.7874 T0.2024,0.7893 Q0.2008,0.7893,0.1984,0.7897 T0.1948,0.7901 T0.1916,0.7903 T0.1888,0.7908 T0.1867,0.7914 T0.1847,0.7922 L0.1831,0.793 T0.1819,0.7943 L0.1811,0.7959 T0.1799,0.7976 Q0.1791,0.7993,0.1791,0.8001 Q0.1791,0.8034,0.1831,0.8051 T0.1932,0.8078 T0.2,0.8092 Q0.2072,0.8117,0.2257,0.8117 Q0.2337,0.8117,0.2586,0.8109 L0.2635,0.8109 Q0.2707,0.8109,0.2767,0.8117 T0.2859,0.8136 T0.2936,0.8163 T0.3012,0.8187 Q0.3068,0.82,0.3277,0.8206 T0.3526,0.8237 Q0.3582,0.8266,0.3622,0.8266 Q0.3647,0.8266,0.3687,0.8258 T0.3751,0.825 Q0.396,0.825,0.404,0.8291 Q0.408,0.8316,0.4161,0.8316 Q0.4217,0.8316,0.4353,0.8295 L0.4394,0.8295 Q0.4466,0.8295,0.4659,0.8366 Q0.4699,0.8378,0.4747,0.8378 Q0.4763,0.8378,0.4807,0.8374 T0.4884,0.837 Q0.494,0.837,0.5004,0.8382 Q0.5052,0.8391,0.5124,0.8399 Q0.5221,0.8411,0.5249,0.8422 T0.5277,0.8461 Q0.5277,0.8482,0.5233,0.849 T0.5112,0.8501 T0.4996,0.8511 Q0.4964,0.8519,0.4851,0.8523 T0.4659,0.8544 Q0.4578,0.8557,0.4402,0.8557 L0.4349,0.8557 L0.4297,0.8557 L0.4209,0.8557 Q0.408,0.8565,0.3867,0.8571 T0.3614,0.8582 Q0.3317,0.8611,0.3237,0.8611 L0.3225,0.8611 L0.3213,0.8611 Q0.2972,0.8611,0.2972,0.8681 Q0.2972,0.8714,0.3008,0.8747 T0.3044,0.8805 Q0.3044,0.881,0.3036,0.8814 Q0.3012,0.8839,0.2851,0.8839 Q0.2779,0.8839,0.2739,0.883 Q0.2723,0.8826,0.2699,0.8826 T0.2643,0.8835 T0.259,0.8853 T0.2542,0.8876 T0.249,0.8893 Q0.2386,0.8922,0.2056,0.8946 Q0.2016,0.8951,0.1916,0.898 T0.1703,0.9009 Q0.1518,0.9009,0.1337,0.9044 T0.1149,0.9146 L0.1149,0.9158 Q0.1149,0.9175,0.1157,0.9187 T0.1173,0.921 T0.1201,0.9226 T0.1233,0.9237 T0.1269,0.9245 L0.1305,0.9251 T0.1337,0.9255 L0.1357,0.9258 Q0.139,0.9262,0.1446,0.9262 T0.1542,0.9266 T0.1598,0.9282 Q0.1614,0.9303,0.1647,0.9314 T0.1739,0.9328 T0.1815,0.9336 Q0.1863,0.9345,0.1976,0.9372 T0.2145,0.9415 Q0.2225,0.9432,0.2285,0.9467 T0.2378,0.9515 Q0.2426,0.9531,0.2514,0.9531 Q0.2538,0.9531,0.2602,0.9529 T0.2707,0.9527 Q0.2763,0.9527,0.2815,0.9531 T0.2867,0.9569 T0.2811,0.9614 Q0.2434,0.9627,0.2329,0.9652 Q0.2249,0.9672,0.2241,0.9672 L0.2096,0.9668 L0.2056,0.9668 Q0.2,0.9668,0.196,0.9672 T0.1884,0.9687 T0.1815,0.9708 T0.1731,0.9737 T0.1639,0.9772 Q0.1518,0.9805,0.1285,0.9805 L0.1253,0.9805 Q0.1124,0.9805,0.1076,0.9818 Q0.1012,0.983,0.0831,0.9876 T0.0594,0.9934 Q0.049,0.9954,0.0064,0.9954 Z M0.0032,0.9979 L0.0024,0.0037 Q0.0161,0.0021,0.0289,0.0062 Q0.0337,0.0075,0.0671,0.0066 T0.1116,0.01 T0.1337,0.0166 T0.151,0.022 Q0.1582,0.0249,0.1659,0.0251 T0.1767,0.0265 Q0.1807,0.0278,0.2,0.0292 T0.2265,0.0328 Q0.2305,0.034,0.2329,0.034 T0.239,0.0326 T0.2458,0.0311 T0.253,0.0319 Q0.2578,0.0332,0.2614,0.0342 T0.2667,0.0363 T0.2723,0.0384 T0.2827,0.0406 Q0.3084,0.0448,0.3141,0.0485 Q0.3149,0.0494,0.3225,0.0494 T0.3361,0.0504 T0.3422,0.0554 T0.3357,0.0606 T0.3205,0.0618 T0.31,0.0626 Q0.3092,0.0626,0.3056,0.0659 T0.2932,0.0701 Q0.2884,0.0709,0.2843,0.0709 Q0.2811,0.0709,0.2759,0.0701 T0.2667,0.0693 Q0.2586,0.0693,0.2422,0.0718 T0.2193,0.0763 Q0.2137,0.0784,0.1831,0.079 T0.1502,0.0805 Q0.1494,0.0809,0.147,0.0809 Q0.1454,0.0809,0.1386,0.0803 T0.1277,0.0796 Q0.1173,0.0796,0.1092,0.0821 Q0.1036,0.0834,0.1036,0.0854 Q0.1036,0.0879,0.1129,0.0908 T0.1269,0.0937 Q0.1293,0.0937,0.1558,0.0991 T0.1863,0.1045 Q0.2016,0.1045,0.2193,0.1087 Q0.2225,0.1091,0.2249,0.1091 Q0.2289,0.1091,0.2357,0.1076 T0.2482,0.1054 Q0.2506,0.1049,0.2546,0.1049 Q0.2699,0.1049,0.2924,0.1085 T0.3213,0.1165 Q0.3253,0.119,0.3301,0.119 Q0.3325,0.119,0.3446,0.1161 T0.3687,0.1124 Q0.3831,0.1112,0.3863,0.1112 T0.3908,0.1118 T0.3936,0.1145 T0.3984,0.1186 Q0.4048,0.1228,0.408,0.1228 Q0.4096,0.1228,0.4161,0.1213 T0.4305,0.1195 L0.4337,0.1195 Q0.4426,0.1195,0.4474,0.1211 T0.4566,0.1246 T0.4667,0.1273 Q0.4876,0.1298,0.5116,0.1298 Q0.5365,0.1298,0.5631,0.1389 Q0.5703,0.1414,0.5751,0.1414 Q0.5783,0.1414,0.5819,0.1398 T0.5888,0.1381 Q0.5928,0.1381,0.5984,0.1398 T0.6129,0.1414 Q0.6321,0.1414,0.6498,0.1477 Q0.661,0.1514,0.6667,0.1514 Q0.6707,0.1514,0.6771,0.1501 Q0.6787,0.1497,0.6795,0.1497 Q0.6835,0.1497,0.6863,0.1526 T0.6892,0.1593 Q0.6892,0.1626,0.6876,0.1647 Q0.6851,0.1672,0.6799,0.1686 T0.6695,0.1705 T0.6566,0.1715 T0.6458,0.1725 Q0.6434,0.173,0.6402,0.173 Q0.6378,0.173,0.6317,0.1727 T0.6225,0.1725 Q0.6096,0.1725,0.5984,0.1759 Q0.5823,0.1804,0.5454,0.1804 Q0.5205,0.1804,0.5116,0.1788 L0.5084,0.1788 Q0.5036,0.1788,0.4956,0.1819 T0.4843,0.185 Q0.4434,0.1887,0.4353,0.1929 Q0.4321,0.1945,0.4289,0.1945 T0.4197,0.1922 T0.4112,0.19 T0.4072,0.1912 Q0.4032,0.1949,0.388,0.1949 Q0.3663,0.1949,0.3542,0.19 Q0.351,0.1883,0.3462,0.1883 Q0.3406,0.1883,0.3321,0.1906 T0.3153,0.1954 T0.302,0.1983 Q0.2972,0.1991,0.2859,0.1997 T0.2643,0.201 T0.245,0.2024 T0.2337,0.2041 Q0.2321,0.2045,0.2181,0.2045 T0.1851,0.207 T0.1542,0.2157 Q0.143,0.2211,0.143,0.226 Q0.143,0.2314,0.153,0.2348 T0.1719,0.2381 Q0.1791,0.2381,0.2474,0.2476 Q0.2506,0.248,0.2558,0.2489 T0.2651,0.2505 T0.2739,0.252 T0.2819,0.2526 Q0.2835,0.2526,0.2851,0.2522 L0.2859,0.2522 Q0.2948,0.2522,0.3104,0.2574 T0.3309,0.2671 Q0.3333,0.2696,0.3365,0.2696 Q0.339,0.2696,0.3442,0.2684 T0.3526,0.2671 T0.3582,0.2679 Q0.3687,0.2717,0.3968,0.2742 Q0.4,0.2746,0.4036,0.2771 T0.4096,0.2796 Q0.4112,0.2796,0.4137,0.2787 Q0.4169,0.2779,0.4257,0.2779 Q0.4594,0.2779,0.4779,0.2849 Q0.4876,0.2891,0.4972,0.2891 Q0.4996,0.2891,0.506,0.2887 T0.5165,0.2883 Q0.5253,0.2883,0.5305,0.2889 T0.541,0.292 T0.5494,0.299 L0.5494,0.3015 Q0.5494,0.3036,0.5466,0.3051 T0.5386,0.3073 T0.5285,0.3086 T0.5181,0.3094 T0.5108,0.3102 Q0.5068,0.3107,0.494,0.3121 L0.4683,0.315 T0.4506,0.3181 Q0.449,0.3181,0.4426,0.32 T0.4313,0.3229 T0.4197,0.3256 T0.4064,0.3281 T0.3952,0.3289 Q0.3888,0.3289,0.3855,0.3273 Q0.3783,0.3243,0.3703,0.3243 Q0.3598,0.3243,0.351,0.3297 Q0.3478,0.3314,0.3422,0.3314 Q0.3398,0.3314,0.3337,0.3306 T0.3245,0.3297 T0.3189,0.3306 Q0.3149,0.3314,0.2956,0.3328 T0.2715,0.3368 Q0.2691,0.338,0.2635,0.3391 T0.2522,0.3407 T0.2406,0.3424 T0.2313,0.3447 Q0.2305,0.3447,0.2213,0.348 T0.206,0.354 T0.1924,0.3621 T0.1815,0.3733 Q0.1767,0.3816,0.1767,0.3849 Q0.1767,0.387,0.1783,0.3893 T0.1847,0.3961 T0.1936,0.4063 T0.2004,0.4181 T0.2052,0.4264 T0.2145,0.4309 T0.2386,0.4359 Q0.2458,0.4372,0.2554,0.4372 Q0.2578,0.4372,0.2627,0.437 T0.2699,0.4367 Q0.2795,0.4367,0.2851,0.4384 Q0.294,0.4409,0.3092,0.4409 Q0.3116,0.4409,0.3157,0.4407 T0.3213,0.4405 Q0.3301,0.4405,0.3466,0.444 T0.3687,0.4509 Q0.3703,0.4517,0.3703,0.4525 Q0.3703,0.4575,0.3373,0.4596 Q0.3133,0.4608,0.2988,0.4658 Q0.294,0.4674,0.2803,0.4674 Q0.2763,0.4674,0.2687,0.4672 T0.257,0.467 Q0.2402,0.467,0.2313,0.4687 Q0.2209,0.4708,0.2209,0.4737 Q0.2209,0.4741,0.2213,0.4749 T0.2229,0.4764 L0.2249,0.4774 T0.2265,0.4778 L0.2273,0.4782 Q0.2498,0.4803,0.2618,0.4803 Q0.2667,0.4803,0.2691,0.4799 Q0.2699,0.4795,0.2715,0.4795 Q0.2779,0.4795,0.3133,0.4873 Q0.3181,0.4886,0.3233,0.4892 T0.3386,0.4905 T0.3542,0.4915 T0.3655,0.4919 Q0.3703,0.4919,0.3779,0.4915 T0.3888,0.4911 T0.3952,0.4915 Q0.3976,0.4919,0.4008,0.4927 L0.4072,0.4944 T0.4149,0.4961 T0.4249,0.4975 T0.4369,0.4985 Q0.449,0.499,0.4554,0.5 T0.4651,0.5031 T0.4699,0.5085 Q0.4707,0.5093,0.4707,0.5097 Q0.4707,0.5114,0.4687,0.5124 T0.4631,0.5139 T0.4562,0.5145 T0.4478,0.5147 L0.4402,0.5147 Q0.4353,0.5151,0.4265,0.5174 T0.4096,0.5197 L0.4024,0.5197 Q0.4,0.5193,0.3968,0.5193 Q0.3896,0.5193,0.3831,0.5209 T0.3703,0.5253 T0.3598,0.5288 Q0.3558,0.5301,0.3321,0.5342 T0.302,0.5409 Q0.2876,0.5454,0.2337,0.55 Q0.2112,0.5521,0.2112,0.5558 Q0.2112,0.5574,0.2161,0.5612 Q0.2201,0.5637,0.2281,0.5637 Q0.2305,0.5637,0.2361,0.5633 T0.2442,0.5628 Q0.2474,0.5628,0.2498,0.5633 Q0.2635,0.5653,0.3133,0.5653 Q0.3261,0.5653,0.3301,0.5649 L0.3325,0.5649 Q0.3349,0.5649,0.3402,0.5657 T0.3494,0.5666 Q0.3542,0.5666,0.3598,0.5657 Q0.3663,0.5645,0.3695,0.5645 Q0.3735,0.5645,0.3775,0.5666 T0.3847,0.5695 Q0.3888,0.5707,0.3912,0.5709 T0.3968,0.5711 T0.4048,0.572 Q0.4096,0.5724,0.4165,0.5726 T0.4281,0.5734 T0.4378,0.5757 Q0.4418,0.5774,0.4522,0.5774 Q0.4562,0.5774,0.4655,0.5769 T0.4795,0.5765 Q0.4932,0.5765,0.4972,0.579 Q0.5028,0.5819,0.51,0.5819 Q0.5141,0.5819,0.5221,0.5809 T0.5341,0.5798 L0.5373,0.5798 Q0.5422,0.5798,0.557,0.5821 T0.5855,0.5844 L0.5936,0.5844 L0.5992,0.5844 T0.604,0.5848 T0.6076,0.5852 T0.6108,0.5859 T0.6137,0.5865 T0.6161,0.5873 T0.6181,0.5881 T0.6209,0.5896 L0.6233,0.591 Q0.6265,0.5927,0.6353,0.5927 L0.6402,0.5927 L0.645,0.5927 Q0.6723,0.5927,0.6948,0.6039 Q0.6988,0.606,0.7036,0.606 Q0.7076,0.606,0.7153,0.6045 T0.7261,0.6031 Q0.7309,0.6031,0.7454,0.6027 T0.7647,0.6022 Q0.7783,0.6022,0.808,0.608 L0.812,0.608 Q0.8169,0.608,0.8293,0.6062 T0.8474,0.6039 L0.8506,0.6039 Q0.857,0.6039,0.8655,0.6049 T0.8835,0.6074 T0.8972,0.6093 Q0.9036,0.6101,0.9213,0.6101 L0.9398,0.6101 L0.959,0.6101 L0.9767,0.6101 Q0.9976,0.6109,0.9976,0.6176 Q0.9976,0.6188,0.9968,0.6226 Q0.9952,0.6284,0.9671,0.6284 L0.959,0.6284 L0.9526,0.6284 Q0.9486,0.6284,0.9382,0.6302 T0.9205,0.6321 L0.9173,0.6321 Q0.9133,0.6317,0.9092,0.6317 Q0.9012,0.6317,0.8715,0.6346 Q0.8233,0.6387,0.7944,0.6421 Q0.7888,0.6429,0.7831,0.6429 Q0.7783,0.6429,0.7731,0.6425 T0.7663,0.6421 L0.7622,0.6421 Q0.7614,0.6425,0.7586,0.6425 T0.7474,0.6421 T0.7349,0.6416 Q0.7261,0.6416,0.7221,0.6429 Q0.7173,0.645,0.7032,0.646 T0.6711,0.6479 T0.6482,0.6491 Q0.645,0.6495,0.6418,0.6495 Q0.6353,0.6495,0.6273,0.6474 T0.6161,0.6454 Q0.612,0.6454,0.6088,0.6477 T0.6,0.6499 Q0.5912,0.6499,0.5494,0.6578 Q0.5422,0.6591,0.5373,0.6591 Q0.5341,0.6591,0.5281,0.6584 T0.5173,0.6578 L0.5124,0.6578 Q0.5004,0.6582,0.4747,0.6632 Q0.4675,0.6649,0.4398,0.6667 T0.3851,0.6703 T0.3566,0.6719 Q0.3534,0.6723,0.3406,0.6734 T0.3141,0.6757 T0.2948,0.6773 Q0.2908,0.6781,0.2819,0.6829 T0.2618,0.6877 Q0.2482,0.6877,0.2273,0.6958 T0.1992,0.7117 Q0.1976,0.7138,0.1976,0.7155 Q0.1976,0.7188,0.2032,0.7213 T0.2181,0.7258 T0.2289,0.7292 Q0.2337,0.7308,0.2378,0.7316 L0.2458,0.7333 T0.2522,0.7345 Q0.2747,0.7399,0.2835,0.7399 Q0.29,0.7399,0.3048,0.7408 T0.3253,0.7416 Q0.3277,0.7416,0.3297,0.7414 T0.3341,0.7412 L0.3598,0.7445 Q0.3639,0.7449,0.3663,0.7449 Q0.3695,0.7449,0.3751,0.7443 T0.3855,0.7437 L0.3904,0.7437 Q0.3984,0.7441,0.4141,0.7472 T0.4353,0.7507 Q0.4434,0.752,0.4434,0.7553 Q0.4434,0.7578,0.439,0.7605 T0.4297,0.764 Q0.4257,0.7648,0.4201,0.7655 T0.4076,0.7665 T0.3984,0.7673 Q0.3968,0.7673,0.3912,0.7677 T0.3815,0.7688 T0.3735,0.771 T0.3655,0.7727 Q0.3606,0.7727,0.3534,0.7708 T0.3458,0.769 L0.3446,0.769 Q0.3414,0.769,0.3297,0.7713 T0.3149,0.7735 Q0.3092,0.7735,0.296,0.7771 T0.2771,0.7831 Q0.2683,0.7872,0.2554,0.7885 Q0.253,0.7889,0.2325,0.7897 T0.2032,0.7914 Q0.2008,0.7918,0.198,0.792 T0.194,0.7924 T0.1912,0.7928 T0.1888,0.793 T0.1867,0.7934 T0.1851,0.7943 T0.1843,0.7953 T0.1835,0.7968 T0.1823,0.7984 T0.1815,0.8001 Q0.1815,0.8022,0.1847,0.8032 T0.1932,0.8053 T0.2008,0.8071 Q0.2072,0.8092,0.2265,0.8092 Q0.2361,0.8092,0.2586,0.8088 L0.2635,0.8088 Q0.2731,0.8088,0.2795,0.8098 T0.2928,0.8134 T0.302,0.8167 Q0.306,0.8179,0.3277,0.8183 T0.3542,0.8221 Q0.359,0.8246,0.3622,0.8246 Q0.3639,0.8246,0.3675,0.8237 T0.3751,0.8229 Q0.3968,0.8229,0.4048,0.8275 Q0.4088,0.8291,0.4161,0.8291 Q0.4225,0.8291,0.4353,0.8275 Q0.4369,0.827,0.4394,0.827 Q0.4474,0.827,0.4675,0.8345 Q0.4707,0.8358,0.4739,0.8358 Q0.4755,0.8358,0.4799,0.8353 T0.4876,0.8349 Q0.494,0.8349,0.5012,0.8362 L0.5076,0.837 T0.5133,0.8376 T0.5181,0.8382 T0.5221,0.8391 L0.5253,0.8399 T0.5277,0.8409 L0.5293,0.8422 T0.5301,0.8438 L0.5301,0.8461 Q0.5301,0.8499,0.5249,0.8511 T0.5112,0.8526 T0.5004,0.8532 Q0.4964,0.854,0.4851,0.8546 T0.4667,0.8565 Q0.4578,0.8577,0.441,0.8577 L0.4345,0.8577 L0.4289,0.8577 L0.4209,0.8577 Q0.4153,0.8582,0.4088,0.8586 T0.3968,0.8592 T0.3855,0.8594 T0.3755,0.8596 T0.3675,0.86 T0.3622,0.8602 Q0.3317,0.8635,0.3237,0.8635 Q0.2996,0.8635,0.2996,0.8681 Q0.2996,0.8698,0.3032,0.8733 T0.3068,0.8797 L0.3068,0.8822 Q0.3052,0.8859,0.2859,0.8859 Q0.2787,0.8859,0.2739,0.8851 L0.2699,0.8851 Q0.2659,0.8851,0.259,0.888 T0.2498,0.8913 Q0.2394,0.8946,0.2056,0.8971 Q0.2032,0.8971,0.1928,0.9002 T0.1703,0.9034 Q0.1526,0.9034,0.1353,0.9067 T0.1173,0.915 L0.1173,0.9158 Q0.1173,0.9166,0.1177,0.9175 T0.1189,0.9191 T0.1205,0.9204 T0.1229,0.9212 T0.1257,0.922 T0.1285,0.9226 T0.1309,0.9231 T0.1337,0.9235 T0.1365,0.9237 L0.1446,0.9237 T0.1554,0.9243 T0.1614,0.9268 T0.1659,0.9293 T0.1743,0.9303 T0.1823,0.9316 Q0.1863,0.932,0.1912,0.9332 T0.2028,0.9361 T0.2153,0.939 Q0.2233,0.9411,0.2297,0.9448 T0.2386,0.9494 Q0.2426,0.9506,0.2506,0.9506 Q0.253,0.9506,0.2594,0.9504 T0.2699,0.9502 Q0.2763,0.9502,0.2819,0.9511 Q0.2851,0.9511,0.2871,0.9529 T0.2892,0.9573 Q0.2892,0.9627,0.2811,0.9635 Q0.2434,0.9652,0.2337,0.9672 Q0.2257,0.9693,0.2241,0.9693 Q0.2217,0.9693,0.2096,0.9689 L0.2056,0.9689 Q0.1976,0.9689,0.1924,0.9699 T0.1787,0.9741 L0.1647,0.9793 Q0.1518,0.983,0.1285,0.983 L0.1261,0.983 L0.1237,0.983 Q0.1124,0.983,0.1076,0.9838 Q0.102,0.9851,0.0839,0.9896 T0.0602,0.9954 T0.0406,0.9971 T0.0153,0.9979 L0.0032,0.9979 Z", type: 0 } }, "\\uE0CA": { type: 5, data: { d: "M0.9992,0.998 Q0.9992,1,0.9968,1 Q0.9521,1,0.9392,0.998 Q0.9335,0.997,0.9152,0.9921 T0.8913,0.9862 Q0.8873,0.9852,0.8783,0.9852 L0.8747,0.9852 L0.871,0.9852 Q0.8483,0.9852,0.8345,0.9812 Q0.8289,0.9792,0.8228,0.9773 T0.8135,0.9743 T0.8054,0.9723 T0.7948,0.9713 L0.7908,0.9713 L0.777,0.9713 T0.7656,0.9693 Q0.7616,0.9683,0.7498,0.9674 T0.7283,0.9664 L0.7186,0.9654 Q0.708,0.9644,0.708,0.9575 Q0.708,0.9545,0.7109,0.952 T0.7178,0.9486 L0.7315,0.9486 L0.7417,0.9486 L0.7502,0.9486 Q0.7575,0.9486,0.7599,0.9476 Q0.7616,0.9466,0.7685,0.9426 T0.7843,0.9377 Q0.7899,0.9357,0.8009,0.9332 T0.8175,0.9298 Q0.82,0.9288,0.8228,0.9283 T0.8277,0.9278 T0.8313,0.9273 T0.8341,0.9263 T0.8362,0.9258 Q0.8402,0.9219,0.854,0.9219 L0.8569,0.9219 L0.8597,0.9219 L0.8637,0.9219 Q0.88,0.9199,0.88,0.9159 L0.88,0.9149 Q0.88,0.913,0.8719,0.911 T0.852,0.9075 T0.8297,0.906 Q0.8224,0.906,0.8167,0.905 T0.8074,0.9031 T0.8001,0.9006 T0.794,0.8991 Q0.7599,0.8971,0.7494,0.8942 Q0.7461,0.8932,0.7397,0.8902 T0.7299,0.8872 L0.7267,0.8872 Q0.721,0.8882,0.7121,0.8882 Q0.6926,0.8882,0.691,0.8833 L0.691,0.8803 Q0.691,0.8773,0.6922,0.8749 T0.6955,0.8704 L0.6975,0.8684 Q0.6926,0.8655,0.6764,0.8655 Q0.6683,0.8655,0.6375,0.8625 Q0.6358,0.8625,0.629,0.862 T0.6148,0.8615 T0.5973,0.861 T0.5791,0.8605 L0.5718,0.8605 L0.5661,0.8605 L0.5596,0.8605 Q0.5426,0.8605,0.5337,0.8586 Q0.5264,0.8576,0.515,0.8571 T0.4996,0.8556 Q0.498,0.8556,0.4947,0.8551 T0.4882,0.8546 T0.4809,0.8541 T0.474,0.8531 T0.4692,0.8506 T0.4672,0.8467 Q0.4672,0.8437,0.468,0.8422 T0.4704,0.8398 T0.4736,0.8383 T0.4781,0.8368 T0.4838,0.8358 T0.4911,0.8353 T0.4988,0.8338 Q0.5069,0.8328,0.5142,0.8328 Q0.5174,0.8328,0.5215,0.8333 T0.5264,0.8338 Q0.5296,0.8338,0.532,0.8328 Q0.5523,0.8249,0.5604,0.8249 L0.5653,0.8249 Q0.5775,0.8269,0.5848,0.8269 Q0.5912,0.8269,0.5937,0.8259 Q0.6026,0.821,0.6253,0.821 Q0.6294,0.821,0.6334,0.822 T0.6383,0.8229 Q0.6399,0.8229,0.644,0.82 Q0.6504,0.817,0.6723,0.816 T0.6975,0.814 Q0.6999,0.814,0.7048,0.8121 T0.7129,0.8091 T0.7226,0.8071 T0.7372,0.8061 L0.7421,0.8061 Q0.7624,0.8071,0.7721,0.8071 Q0.7924,0.8071,0.7981,0.8051 Q0.8021,0.8032,0.807,0.8027 T0.8135,0.8017 T0.8151,0.8002 L0.8151,0.7992 Q0.8143,0.7962,0.8127,0.7957 T0.8045,0.7943 Q0.7997,0.7943,0.7964,0.7933 Q0.7883,0.7933,0.7676,0.7923 T0.7437,0.7903 Q0.7307,0.7893,0.7218,0.7844 Q0.7194,0.7834,0.7141,0.7819 L0.7036,0.7789 T0.693,0.7765 T0.6853,0.7755 Q0.6805,0.7755,0.6691,0.773 T0.6553,0.7705 Q0.6545,0.7705,0.6545,0.7715 Q0.6537,0.7715,0.65,0.7725 T0.6423,0.774 T0.635,0.7745 Q0.6294,0.7745,0.6257,0.773 T0.618,0.771 T0.6083,0.77 T0.601,0.7695 Q0.5985,0.7695,0.5921,0.769 T0.5795,0.7676 T0.5702,0.7666 Q0.5653,0.7656,0.5596,0.7616 T0.5539,0.7547 Q0.5539,0.7498,0.5645,0.7488 Q0.5693,0.7478,0.5852,0.7448 T0.6099,0.7418 L0.6148,0.7418 Q0.6196,0.7418,0.6253,0.7423 T0.6338,0.7428 L0.6399,0.7428 Q0.6431,0.7418,0.6488,0.7409 T0.6586,0.7394 T0.6659,0.7389 L0.6707,0.7389 Q0.6723,0.7399,0.6748,0.7399 Q0.6796,0.7399,0.6946,0.7389 T0.7161,0.7379 Q0.7251,0.7379,0.7478,0.7319 Q0.7494,0.7319,0.7539,0.7315 T0.762,0.73 T0.7697,0.727 T0.7818,0.723 T0.7948,0.7196 T0.7997,0.7151 Q0.7997,0.7141,0.7989,0.7132 Q0.7924,0.7062,0.7717,0.6978 T0.738,0.6894 Q0.7267,0.6894,0.717,0.6845 T0.7048,0.6795 Q0.6975,0.6785,0.6711,0.6766 T0.6431,0.6746 Q0.6415,0.6736,0.6144,0.6721 T0.5596,0.6686 T0.5247,0.6657 Q0.4996,0.6607,0.4874,0.6597 L0.4834,0.6597 Q0.4785,0.6597,0.4724,0.6607 T0.4631,0.6617 Q0.4574,0.6617,0.4501,0.6597 Q0.4088,0.6518,0.4006,0.6518 Q0.3933,0.6518,0.3901,0.6499 T0.3844,0.6479 T0.3739,0.6499 T0.3585,0.6518 L0.352,0.6518 Q0.3471,0.6508,0.335,0.6503 T0.3122,0.6494 T0.2912,0.6479 T0.2766,0.6449 Q0.2733,0.6439,0.2668,0.6439 Q0.2628,0.6439,0.2543,0.6444 T0.2425,0.6449 T0.2368,0.6439 L0.2344,0.6439 Q0.2336,0.6439,0.2283,0.6444 T0.2182,0.6449 Q0.2117,0.6449,0.2052,0.6439 Q0.1768,0.6409,0.1281,0.637 Q0.0989,0.634,0.0916,0.634 L0.0835,0.634 L0.0795,0.634 Q0.0722,0.634,0.0616,0.632 T0.0479,0.6301 Q0.0462,0.6301,0.0406,0.6306 T0.0308,0.6311 Q0.0032,0.6311,0.0008,0.6231 Q0,0.6202,0,0.6182 Q0,0.6083,0.0227,0.6083 Q0.03,0.6073,0.0422,0.6073 Q0.0487,0.6073,0.0608,0.6078 T0.0787,0.6083 Q0.0973,0.6083,0.103,0.6073 Q0.1062,0.6063,0.1131,0.6053 T0.1253,0.6039 T0.1375,0.6024 T0.1492,0.6014 L0.1533,0.6014 Q0.1598,0.6024,0.1723,0.6044 T0.189,0.6063 Q0.1906,0.6063,0.1922,0.6053 Q0.2214,0.6004,0.236,0.6004 Q0.2409,0.6004,0.2551,0.6009 T0.2741,0.6014 Q0.2782,0.6014,0.2859,0.6024 T0.2968,0.6034 Q0.3009,0.6034,0.3041,0.6024 Q0.3277,0.5905,0.356,0.5905 L0.3613,0.5905 L0.3666,0.5905 Q0.3731,0.5905,0.3755,0.5895 Q0.382,0.5856,0.3844,0.5846 T0.3938,0.5831 T0.4144,0.5826 T0.4428,0.5801 T0.4631,0.5776 L0.4663,0.5776 Q0.4704,0.5776,0.4785,0.5786 T0.4899,0.5796 Q0.4964,0.5796,0.5012,0.5767 Q0.5069,0.5737,0.5223,0.5737 Q0.5272,0.5737,0.5369,0.5742 T0.5499,0.5747 Q0.558,0.5747,0.5612,0.5737 Q0.5661,0.5717,0.5714,0.5712 T0.5835,0.5702 T0.5945,0.5692 T0.6018,0.5687 L0.6062,0.5687 T0.6095,0.5682 T0.6148,0.5678 Q0.6172,0.5668,0.6196,0.5653 T0.6245,0.5633 T0.631,0.5628 T0.6407,0.5638 T0.6504,0.5648 T0.6594,0.5638 T0.6675,0.5628 L0.6707,0.5628 L0.6861,0.5628 Q0.7364,0.5628,0.7494,0.5608 L0.7567,0.5608 L0.7652,0.5608 L0.7729,0.5608 Q0.7794,0.5608,0.7818,0.5589 Q0.7851,0.5569,0.7859,0.5559 Q0.7835,0.5539,0.7656,0.5519 Q0.7121,0.547,0.6975,0.543 Q0.6934,0.541,0.6853,0.5396 L0.6691,0.5366 T0.6525,0.5336 T0.6391,0.5312 Q0.6367,0.5302,0.6245,0.5257 T0.6034,0.5213 L0.5977,0.5213 Q0.5945,0.5223,0.5904,0.5223 Q0.5839,0.5223,0.5787,0.5208 T0.5685,0.5183 T0.5596,0.5173 Q0.558,0.5173,0.5552,0.5168 T0.5495,0.5163 L0.5434,0.5163 T0.5373,0.5158 T0.532,0.5148 T0.5284,0.5129 T0.5272,0.5104 L0.5272,0.5074 Q0.5304,0.5015,0.5377,0.499 T0.5629,0.4965 Q0.5734,0.4955,0.5811,0.4946 T0.5953,0.4916 T0.605,0.4896 Q0.6083,0.4886,0.6123,0.4886 Q0.6148,0.4886,0.6225,0.4891 T0.635,0.4896 L0.6456,0.4896 Q0.6837,0.4857,0.6861,0.4857 Q0.7226,0.4768,0.7283,0.4768 Q0.7307,0.4768,0.732,0.4773 T0.7372,0.4777 Q0.7502,0.4777,0.7721,0.4758 Q0.7753,0.4748,0.777,0.4738 Q0.7745,0.4718,0.768,0.4708 Q0.7599,0.4688,0.7445,0.4688 Q0.7405,0.4688,0.7324,0.4693 T0.721,0.4698 Q0.7056,0.4698,0.6999,0.4679 Q0.6861,0.4629,0.6626,0.4619 Q0.6586,0.4609,0.6533,0.4604 T0.6419,0.459 T0.6314,0.456 T0.6269,0.452 Q0.6269,0.451,0.6302,0.4491 Q0.6358,0.4451,0.6525,0.4416 T0.6788,0.4382 L0.6845,0.4382 L0.6902,0.4382 Q0.7064,0.4382,0.7145,0.4362 Q0.7202,0.4342,0.7307,0.4342 L0.7356,0.4342 L0.7409,0.4342 L0.7453,0.4342 Q0.7543,0.4342,0.7607,0.4332 Q0.7778,0.4313,0.7847,0.4288 T0.7932,0.4248 T0.7972,0.4169 T0.8045,0.4045 L0.8094,0.3986 T0.8135,0.3942 L0.8167,0.3912 T0.8191,0.3887 T0.8204,0.3867 T0.8208,0.3848 Q0.8208,0.3818,0.8167,0.3739 Q0.8127,0.3689,0.8054,0.3635 T0.7924,0.3556 T0.7778,0.3497 T0.768,0.3462 Q0.764,0.3442,0.7478,0.3427 T0.7267,0.3383 Q0.7234,0.3363,0.7044,0.3348 T0.6805,0.3323 L0.6764,0.3323 T0.6679,0.3328 T0.6586,0.3333 Q0.6521,0.3333,0.648,0.3314 Q0.6391,0.3264,0.6294,0.3264 Q0.6229,0.3264,0.6156,0.3294 Q0.6115,0.3304,0.6042,0.3304 Q0.5977,0.3304,0.5888,0.3289 T0.5738,0.3264 T0.5584,0.3225 L0.5491,0.3195 Q0.5418,0.3185,0.5162,0.3155 T0.4895,0.3121 T0.4826,0.3116 T0.4716,0.3111 T0.4607,0.3096 T0.4513,0.3066 T0.4477,0.3017 Q0.4477,0.2997,0.4485,0.2977 Q0.4526,0.2898,0.4611,0.2878 T0.4842,0.2859 Q0.4882,0.2859,0.4943,0.2864 T0.5028,0.2868 Q0.5118,0.2868,0.5215,0.2829 Q0.5401,0.276,0.5734,0.276 Q0.5831,0.276,0.5872,0.277 L0.5904,0.277 T0.5949,0.2745 T0.6034,0.272 Q0.631,0.269,0.6407,0.2661 Q0.6448,0.2641,0.6488,0.2641 T0.6573,0.2656 T0.6634,0.2671 Q0.6659,0.2671,0.6675,0.2651 Q0.6723,0.2601,0.6886,0.2552 T0.7137,0.2502 L0.7153,0.2502 L0.7178,0.2502 Q0.7218,0.2502,0.7279,0.2493 T0.7417,0.2468 T0.7526,0.2453 Q0.8208,0.2354,0.8281,0.2354 Q0.8337,0.2354,0.8394,0.2344 T0.8496,0.2315 T0.854,0.2265 Q0.854,0.2216,0.8443,0.2176 Q0.8354,0.2127,0.8216,0.2102 T0.7972,0.2072 T0.777,0.2067 T0.7648,0.2057 Q0.7632,0.2047,0.7498,0.2038 T0.7202,0.2018 T0.6983,0.1998 Q0.6918,0.1998,0.676,0.1949 T0.6537,0.1899 Q0.6496,0.1899,0.6472,0.1919 Q0.6342,0.1968,0.6123,0.1968 Q0.5961,0.1968,0.5912,0.1929 Q0.5904,0.1919,0.5892,0.1919 T0.5823,0.1944 T0.5722,0.1968 T0.5637,0.1949 Q0.5556,0.1909,0.5158,0.1869 Q0.5109,0.1869,0.5032,0.1835 T0.4915,0.18 Q0.4907,0.18,0.4891,0.181 Q0.4793,0.182,0.455,0.182 Q0.4177,0.182,0.4015,0.1771 Q0.3901,0.1741,0.3779,0.1741 Q0.3747,0.1741,0.369,0.1746 T0.3609,0.1751 Q0.3569,0.1751,0.3536,0.1741 Q0.3512,0.1741,0.3459,0.1736 T0.3358,0.1726 T0.3256,0.1716 T0.3167,0.1696 T0.3106,0.1662 Q0.3082,0.1632,0.3082,0.1592 Q0.3082,0.1543,0.3114,0.1508 T0.3204,0.1474 L0.3236,0.1474 Q0.3301,0.1494,0.3333,0.1494 Q0.339,0.1494,0.3496,0.1454 Q0.3674,0.1385,0.3869,0.1385 Q0.395,0.1385,0.4011,0.137 T0.4116,0.1355 T0.4197,0.1375 T0.425,0.1395 Q0.429,0.1395,0.4355,0.1365 Q0.4631,0.1266,0.4882,0.1266 Q0.5126,0.1266,0.5337,0.1246 Q0.5369,0.1246,0.5458,0.1207 T0.5661,0.1167 L0.5693,0.1167 Q0.5791,0.1177,0.5852,0.1187 T0.5921,0.1197 Q0.5945,0.1197,0.6002,0.1167 Q0.6026,0.1147,0.605,0.1123 T0.6091,0.1093 T0.6156,0.1088 T0.6318,0.1098 Q0.6456,0.1108,0.6569,0.1137 T0.6707,0.1167 Q0.674,0.1167,0.6772,0.1147 Q0.6821,0.1108,0.6946,0.1083 T0.721,0.1044 T0.7453,0.1029 L0.7526,0.1029 Q0.7583,0.1039,0.7652,0.1053 T0.7753,0.1068 Q0.7778,0.1068,0.7802,0.1058 Q0.7981,0.1019,0.8143,0.1019 Q0.8175,0.1019,0.8439,0.0964 T0.8735,0.091 Q0.8759,0.091,0.8836,0.089 T0.8938,0.0851 Q0.8929,0.0841,0.8905,0.0841 Q0.8832,0.0821,0.8735,0.0821 Q0.8694,0.0821,0.8629,0.0826 T0.854,0.0831 Q0.8508,0.0831,0.8491,0.0821 Q0.8475,0.0821,0.8171,0.0811 T0.7802,0.0781 T0.7571,0.0737 T0.7332,0.0712 Q0.7299,0.0712,0.7247,0.0717 T0.7161,0.0722 L0.7064,0.0722 Q0.7032,0.0712,0.7003,0.0707 T0.6959,0.0692 T0.693,0.0678 T0.6914,0.0663 T0.6902,0.0648 T0.689,0.0643 L0.6869,0.0643 L0.6845,0.0643 L0.6821,0.0643 Q0.6553,0.0643,0.6553,0.0554 T0.6796,0.0465 L0.6813,0.0465 L0.6845,0.0465 Q0.6918,0.0425,0.717,0.0376 Q0.7226,0.0366,0.7267,0.0356 T0.7324,0.0336 T0.7376,0.0317 T0.747,0.0297 Q0.7518,0.0287,0.7551,0.0287 T0.762,0.0297 T0.768,0.0307 L0.7729,0.0307 Q0.7802,0.0277,0.7997,0.0267 T0.8224,0.0237 Q0.8273,0.0227,0.8341,0.0223 T0.8475,0.0193 T0.8654,0.0143 T0.8873,0.0079 Q0.9002,0.003,0.9331,0.004 T0.97,0.004 Q0.9838,0,0.9976,0.001 Q1,0.001,1,0.003 Z M0.9935,0.996 L0.9951,0.0049 Q0.9822,0.0049,0.9716,0.0079 Q0.9659,0.0099,0.9327,0.0089 T0.8897,0.0119 Q0.8775,0.0158,0.8666,0.0183 T0.85,0.0237 Q0.8418,0.0267,0.8341,0.0272 T0.8248,0.0277 Q0.82,0.0297,0.8001,0.0312 T0.7745,0.0346 Q0.7697,0.0356,0.7664,0.0356 Q0.764,0.0356,0.7603,0.0341 T0.7534,0.0326 Q0.751,0.0326,0.7478,0.0336 Q0.7429,0.0346,0.7397,0.0356 T0.7344,0.0376 T0.7283,0.0401 T0.7178,0.0425 Q0.6926,0.0465,0.6878,0.0495 Q0.6845,0.0514,0.6764,0.0514 L0.6723,0.0514 L0.6691,0.0514 Q0.6602,0.0514,0.6602,0.0554 Q0.6602,0.0574,0.6659,0.0579 T0.6796,0.0589 T0.691,0.0603 T0.6967,0.0643 T0.7072,0.0673 Q0.7121,0.0682,0.7153,0.0682 T0.7238,0.0678 T0.7332,0.0673 Q0.7413,0.0673,0.7579,0.0692 T0.7818,0.0742 Q0.7867,0.0752,0.8171,0.0762 T0.8508,0.0781 L0.852,0.0781 T0.8601,0.0776 T0.8719,0.0772 Q0.8832,0.0772,0.8921,0.0791 Q0.8994,0.0811,0.8994,0.0841 T0.8933,0.0895 T0.8812,0.094 T0.8735,0.0959 T0.8451,0.1014 T0.8143,0.1068 Q0.7989,0.1068,0.7818,0.1098 Q0.7778,0.1108,0.7745,0.1108 T0.768,0.1103 T0.7603,0.1088 T0.7518,0.1068 L0.7461,0.1068 Q0.7315,0.1068,0.7088,0.1103 T0.6805,0.1177 Q0.6756,0.1207,0.6699,0.1207 Q0.6667,0.1207,0.6545,0.1177 T0.631,0.1147 Q0.6269,0.1137,0.6225,0.1133 T0.616,0.1128 L0.6123,0.1128 T0.6103,0.1133 L0.6083,0.1157 T0.6034,0.1197 Q0.5961,0.1246,0.5921,0.1246 Q0.5904,0.1246,0.5835,0.1231 T0.5693,0.1217 L0.5661,0.1217 Q0.558,0.1217,0.5535,0.1231 T0.5446,0.1266 T0.5345,0.1296 Q0.5126,0.1316,0.4882,0.1316 T0.438,0.1405 Q0.4298,0.1434,0.425,0.1434 Q0.4209,0.1434,0.4173,0.1419 T0.4112,0.1405 T0.4027,0.1419 T0.3869,0.1434 Q0.3682,0.1434,0.3512,0.1494 Q0.3398,0.1533,0.3333,0.1533 Q0.3285,0.1533,0.3228,0.1513 L0.3212,0.1513 Q0.3179,0.1513,0.3155,0.1538 T0.3131,0.1592 Q0.3131,0.1612,0.3147,0.1632 Q0.3171,0.1652,0.3232,0.1667 T0.3406,0.1691 T0.3544,0.1701 L0.3601,0.1701 L0.3678,0.1701 L0.3771,0.1701 Q0.3909,0.1701,0.4031,0.1731 Q0.4177,0.178,0.4558,0.178 Q0.4793,0.178,0.4882,0.1761 L0.4915,0.1761 Q0.498,0.1761,0.5061,0.179 T0.5158,0.183 Q0.5166,0.183,0.5231,0.1835 T0.5341,0.1845 T0.545,0.1855 T0.5572,0.1874 T0.5661,0.1909 Q0.5677,0.1919,0.5702,0.1919 T0.5791,0.1894 T0.588,0.1869 Q0.5921,0.1869,0.5945,0.1899 Q0.5977,0.1919,0.6123,0.1919 Q0.6334,0.1919,0.6448,0.1879 Q0.6488,0.186,0.6537,0.186 Q0.6626,0.186,0.6784,0.1909 T0.6983,0.1958 Q0.704,0.1968,0.7206,0.1973 T0.7506,0.1993 T0.7689,0.2018 L0.7705,0.2018 L0.7741,0.2018 L0.7786,0.2018 Q0.8248,0.2018,0.8475,0.2136 Q0.8597,0.2196,0.8597,0.2255 T0.8483,0.2359 T0.8281,0.2404 Q0.8208,0.2404,0.7534,0.2493 Q0.7502,0.2502,0.7425,0.2512 T0.7287,0.2532 T0.7178,0.2542 L0.7153,0.2542 L0.7137,0.2542 Q0.7064,0.2542,0.6906,0.2591 T0.6715,0.2681 T0.6626,0.272 Q0.6594,0.272,0.6541,0.2705 T0.6464,0.269 T0.6431,0.27 Q0.6318,0.273,0.6034,0.276 Q0.6018,0.276,0.5998,0.2774 T0.5957,0.2799 T0.5904,0.2809 L0.5856,0.2809 Q0.5823,0.2799,0.575,0.2799 Q0.541,0.2799,0.5239,0.2868 Q0.5134,0.2908,0.5028,0.2908 Q0.4996,0.2908,0.4935,0.2903 T0.4842,0.2898 Q0.4704,0.2898,0.4635,0.2918 T0.4534,0.2997 L0.4534,0.3007 Q0.4534,0.3037,0.459,0.3046 T0.4753,0.3066 T0.4899,0.3076 Q0.4907,0.3076,0.5166,0.3106 T0.5507,0.3155 Q0.5921,0.3264,0.605,0.3264 Q0.6107,0.3264,0.6131,0.3254 Q0.6212,0.3225,0.6294,0.3225 Q0.6407,0.3225,0.6513,0.3274 Q0.6529,0.3294,0.6569,0.3294 Q0.6594,0.3294,0.665,0.3284 T0.6748,0.3274 T0.6821,0.3284 Q0.6861,0.3294,0.6967,0.3299 T0.7165,0.3314 T0.7299,0.3343 Q0.7324,0.3363,0.7486,0.3383 T0.7697,0.3422 Q0.7713,0.3432,0.7774,0.3452 T0.7887,0.3492 T0.8005,0.3546 T0.8127,0.3625 T0.8208,0.3719 Q0.8256,0.3798,0.8256,0.3848 Q0.8256,0.3877,0.8236,0.3902 T0.8171,0.3976 T0.809,0.4075 T0.8021,0.4189 T0.7968,0.4273 T0.7867,0.4322 T0.7616,0.4382 Q0.7543,0.4392,0.7437,0.4392 L0.7364,0.4392 L0.7299,0.4392 Q0.7202,0.4392,0.7161,0.4402 Q0.7072,0.4431,0.691,0.4431 L0.6845,0.4431 L0.6788,0.4431 Q0.6707,0.4431,0.6545,0.4461 T0.6334,0.452 Q0.6399,0.456,0.6626,0.457 Q0.6878,0.458,0.7024,0.4639 Q0.7064,0.4649,0.7186,0.4649 L0.7295,0.4649 L0.7413,0.4649 Q0.7591,0.4649,0.7697,0.4669 Q0.7818,0.4688,0.7818,0.4728 Q0.7818,0.4748,0.7798,0.4763 T0.7753,0.4787 L0.7737,0.4797 L0.7729,0.4797 Q0.7494,0.4827,0.7388,0.4827 Q0.7332,0.4827,0.7307,0.4817 L0.7291,0.4817 Q0.7226,0.4817,0.6878,0.4896 Q0.6829,0.4906,0.6772,0.4911 T0.6618,0.4921 T0.646,0.4931 T0.6342,0.4936 T0.6212,0.4931 T0.6115,0.4926 Q0.6083,0.4926,0.6058,0.4931 T0.5969,0.4955 T0.5819,0.499 T0.5629,0.5005 Q0.5572,0.5005,0.5527,0.501 T0.545,0.502 T0.5397,0.503 T0.5361,0.5045 T0.5337,0.5064 T0.5328,0.5094 L0.532,0.5094 Q0.532,0.5104,0.5337,0.5109 T0.5381,0.5114 T0.5438,0.5119 T0.5515,0.5124 L0.5604,0.5124 Q0.5661,0.5134,0.5746,0.5153 T0.5912,0.5173 L0.5977,0.5173 L0.6026,0.5173 Q0.6139,0.5173,0.6273,0.5218 T0.6407,0.5272 Q0.6448,0.5282,0.6683,0.5321 T0.6991,0.5381 Q0.7137,0.543,0.7664,0.548 Q0.7908,0.55,0.7908,0.5559 Q0.7908,0.5589,0.7859,0.5628 Q0.781,0.5658,0.7713,0.5658 Q0.7689,0.5658,0.7628,0.5653 T0.7543,0.5648 T0.7502,0.5658 Q0.7364,0.5678,0.6878,0.5678 Q0.674,0.5678,0.6699,0.5668 L0.6683,0.5668 Q0.6659,0.5668,0.6606,0.5678 T0.6513,0.5687 Q0.6464,0.5687,0.6391,0.5678 Q0.6334,0.5668,0.6302,0.5668 T0.6241,0.5687 T0.6164,0.5717 Q0.6123,0.5727,0.6099,0.5727 L0.6062,0.5727 T0.6022,0.5732 T0.5953,0.5737 Q0.5904,0.5747,0.5839,0.5747 T0.5726,0.5752 T0.5629,0.5776 T0.5458,0.5796 Q0.5418,0.5796,0.5324,0.5791 T0.5191,0.5786 Q0.5077,0.5786,0.5045,0.5806 Q0.498,0.5836,0.4899,0.5836 Q0.4858,0.5836,0.4777,0.5826 T0.4655,0.5816 L0.4631,0.5816 Q0.4582,0.5816,0.4436,0.5841 T0.4144,0.5865 L0.4051,0.5865 L0.3986,0.5865 T0.3933,0.587 T0.3897,0.5875 T0.3869,0.5885 T0.3844,0.5895 T0.3812,0.591 T0.3779,0.5925 Q0.3739,0.5955,0.3633,0.5955 L0.3585,0.5955 L0.3536,0.5955 Q0.3277,0.5955,0.3066,0.6053 Q0.3017,0.6083,0.296,0.6083 Q0.2912,0.6083,0.2839,0.6068 T0.2741,0.6053 Q0.2693,0.6053,0.2547,0.6048 T0.236,0.6044 Q0.2222,0.6044,0.193,0.6103 L0.1882,0.6103 Q0.1825,0.6103,0.1703,0.6083 T0.1525,0.6063 L0.15,0.6063 Q0.1436,0.6063,0.135,0.6073 T0.1168,0.6098 T0.1038,0.6113 Q0.0973,0.6123,0.0787,0.6123 L0.06,0.6123 L0.0414,0.6123 L0.0235,0.6123 Q0.0049,0.6133,0.0049,0.6172 L0.0057,0.6222 Q0.0073,0.6261,0.043,0.6261 L0.0454,0.6261 L0.0479,0.6261 Q0.0527,0.6261,0.0633,0.6281 T0.0803,0.6301 L0.0835,0.6301 L0.0916,0.6301 Q0.0998,0.6301,0.129,0.632 Q0.1768,0.636,0.206,0.64 Q0.2117,0.6409,0.2165,0.6409 Q0.2206,0.6409,0.2263,0.6405 T0.2336,0.64 L0.2384,0.64 L0.2409,0.64 T0.251,0.6395 T0.2644,0.639 Q0.2741,0.639,0.279,0.6409 Q0.283,0.6429,0.2972,0.6439 T0.3293,0.6459 T0.3528,0.6469 L0.3577,0.6469 Q0.3642,0.6469,0.3723,0.6449 T0.3844,0.6429 Q0.3901,0.6429,0.3933,0.6454 T0.4006,0.6479 Q0.4088,0.6479,0.4517,0.6558 Q0.4582,0.6568,0.4623,0.6568 Q0.4655,0.6568,0.4716,0.6563 T0.4826,0.6558 L0.4882,0.6558 Q0.5004,0.6558,0.5255,0.6607 Q0.5328,0.6627,0.5604,0.6647 T0.6152,0.6682 T0.644,0.6696 T0.6719,0.6721 T0.7056,0.6756 Q0.7113,0.6756,0.7198,0.6805 T0.738,0.6855 Q0.7453,0.6855,0.7551,0.6879 T0.7741,0.6939 T0.7912,0.7018 T0.8029,0.7102 Q0.8054,0.7132,0.8054,0.7151 Q0.8054,0.7191,0.8009,0.7216 T0.7908,0.7255 T0.779,0.7285 T0.7721,0.731 Q0.7672,0.7329,0.7632,0.7339 T0.7551,0.7354 T0.7486,0.7369 Q0.7478,0.7369,0.7445,0.7379 T0.7388,0.7394 T0.7324,0.7404 L0.7242,0.7413 T0.7161,0.7418 Q0.7105,0.7418,0.6955,0.7428 T0.6748,0.7438 L0.6699,0.7438 L0.6667,0.7438 Q0.6659,0.7438,0.6407,0.7468 Q0.6367,0.7478,0.6334,0.7478 T0.6245,0.7468 T0.6148,0.7458 L0.6099,0.7458 Q0.6018,0.7468,0.5864,0.7498 T0.5653,0.7532 T0.5596,0.7557 Q0.5596,0.7596,0.571,0.7616 Q0.5742,0.7626,0.5803,0.7631 T0.5929,0.7641 T0.6018,0.7656 L0.6087,0.7656 T0.6192,0.7666 T0.6277,0.7695 Q0.631,0.7705,0.6342,0.7705 Q0.6383,0.7705,0.6452,0.7685 T0.6537,0.7666 L0.6553,0.7666 Q0.6602,0.7666,0.6711,0.769 T0.6853,0.7715 Q0.691,0.7715,0.7048,0.775 T0.7242,0.7814 Q0.7324,0.7854,0.7445,0.7864 Q0.7478,0.7864,0.768,0.7873 T0.7972,0.7893 Q0.7989,0.7893,0.8017,0.7898 T0.8054,0.7903 L0.8082,0.7903 T0.811,0.7908 T0.8131,0.7913 T0.8151,0.7918 L0.8167,0.7928 T0.8179,0.7943 T0.8191,0.7957 T0.8204,0.7977 T0.8208,0.8002 Q0.8208,0.8032,0.8171,0.8051 T0.8074,0.8081 T0.7997,0.8091 Q0.7932,0.8121,0.7737,0.8121 Q0.7664,0.8121,0.7413,0.8111 L0.7364,0.8111 Q0.7275,0.8111,0.7214,0.8121 T0.7084,0.8155 T0.6991,0.819 Q0.6934,0.82,0.6723,0.8205 T0.6472,0.8239 Q0.6423,0.8269,0.6375,0.8269 Q0.6358,0.8269,0.6338,0.8264 T0.6294,0.8254 T0.6253,0.8249 Q0.6042,0.8249,0.5961,0.8289 Q0.5921,0.8318,0.5839,0.8318 Q0.5783,0.8318,0.5645,0.8299 L0.5604,0.8299 Q0.5531,0.8299,0.5337,0.8368 Q0.5296,0.8378,0.5255,0.8378 Q0.5239,0.8378,0.5195,0.8373 T0.5118,0.8368 Q0.5061,0.8368,0.4996,0.8388 Q0.4947,0.8388,0.4882,0.8398 Q0.4777,0.8417,0.4753,0.8427 T0.4728,0.8467 Q0.4728,0.8487,0.4769,0.8492 T0.4886,0.8501 T0.5004,0.8516 Q0.5036,0.8516,0.515,0.8521 T0.5345,0.8546 Q0.5426,0.8556,0.5596,0.8556 L0.5649,0.8556 L0.5702,0.8556 L0.5791,0.8556 Q0.5921,0.8566,0.6135,0.8571 T0.6383,0.8586 Q0.6683,0.8615,0.6764,0.8615 L0.6776,0.8615 L0.6788,0.8615 Q0.7032,0.8615,0.7032,0.8684 Q0.7032,0.8714,0.6995,0.8749 T0.6959,0.8803 L0.6959,0.8813 Q0.6991,0.8843,0.7153,0.8843 Q0.7218,0.8843,0.7259,0.8833 L0.7299,0.8833 Q0.7324,0.8833,0.7348,0.8838 T0.7393,0.8848 T0.7433,0.8863 L0.7474,0.8882 T0.751,0.8892 Q0.7616,0.8922,0.7948,0.8952 Q0.7981,0.8952,0.8082,0.8981 T0.8297,0.9011 T0.8528,0.9026 T0.8747,0.907 T0.8856,0.9149 L0.8856,0.9159 Q0.8856,0.9179,0.8848,0.9189 T0.8828,0.9209 T0.88,0.9228 T0.8767,0.9243 T0.8731,0.9248 T0.8698,0.9253 T0.8666,0.9258 L0.8646,0.9258 Q0.8621,0.9258,0.8577,0.9263 T0.85,0.9268 T0.8439,0.9273 T0.8402,0.9278 Q0.8386,0.9298,0.8358,0.9308 T0.8305,0.9322 T0.8244,0.9332 T0.8183,0.9337 Q0.8135,0.9347,0.8025,0.9372 T0.7859,0.9416 Q0.7778,0.9436,0.7717,0.9471 T0.7624,0.9515 Q0.7575,0.9535,0.7486,0.9535 Q0.7461,0.9535,0.7397,0.953 T0.7291,0.9525 Q0.7234,0.9525,0.7186,0.953 T0.7137,0.957 T0.7194,0.9614 Q0.7567,0.9634,0.7664,0.9654 Q0.7745,0.9674,0.7762,0.9674 L0.7908,0.9674 Q0.7924,0.9664,0.7948,0.9664 Q0.8029,0.9664,0.8082,0.9679 T0.8224,0.9723 T0.8362,0.9773 Q0.8483,0.9812,0.871,0.9812 L0.8751,0.9812 Q0.8873,0.9812,0.8929,0.9822 T0.9165,0.9876 T0.9408,0.9931 Q0.9513,0.996,0.9935,0.996 Z M0.9968,0.998 L0.9976,0.003 Q0.9838,0.002,0.9708,0.0059 Q0.9659,0.0069,0.9327,0.0059 T0.8881,0.0099 Q0.8767,0.0138,0.8658,0.0163 T0.8491,0.0218 Q0.8418,0.0247,0.8341,0.0247 T0.8232,0.0257 Q0.8191,0.0277,0.7997,0.0292 T0.7737,0.0326 Q0.7697,0.0336,0.7672,0.0336 T0.7612,0.0321 T0.7543,0.0307 T0.747,0.0317 Q0.7397,0.0326,0.7336,0.0356 T0.717,0.0406 Q0.6918,0.0445,0.6861,0.0475 Q0.6845,0.0485,0.6772,0.0485 T0.6638,0.05 T0.6577,0.0549 T0.6642,0.0598 T0.6796,0.0613 T0.6902,0.0623 Q0.691,0.0623,0.6946,0.0658 T0.7064,0.0702 L0.7161,0.0702 Q0.7194,0.0702,0.7242,0.0697 T0.7332,0.0692 Q0.7413,0.0692,0.7579,0.0717 T0.781,0.0762 Q0.7867,0.0781,0.8171,0.0786 T0.85,0.0801 L0.8532,0.0801 Q0.8548,0.0801,0.8613,0.0796 T0.8727,0.0791 Q0.8832,0.0791,0.8913,0.0811 Q0.897,0.0831,0.897,0.0851 Q0.897,0.088,0.8873,0.0905 T0.8735,0.093 Q0.871,0.093,0.8447,0.0984 T0.8143,0.1039 Q0.7981,0.1039,0.781,0.1078 Q0.7778,0.1088,0.7745,0.1088 T0.7644,0.1073 T0.7518,0.1048 L0.7453,0.1048 Q0.7299,0.1048,0.7076,0.1083 T0.6788,0.1157 Q0.6748,0.1187,0.6699,0.1187 Q0.6675,0.1187,0.6557,0.1157 T0.6318,0.1118 Q0.6164,0.1108,0.6135,0.1108 T0.6095,0.1113 T0.6067,0.1142 T0.6018,0.1187 Q0.5953,0.1227,0.5921,0.1227 Q0.5904,0.1227,0.5839,0.1212 T0.5693,0.1187 L0.5661,0.1187 Q0.558,0.1187,0.5527,0.1207 T0.5434,0.1246 T0.5337,0.1266 Q0.5126,0.1296,0.4882,0.1296 T0.4371,0.1385 Q0.4298,0.1414,0.425,0.1414 Q0.4225,0.1414,0.4189,0.1395 T0.4112,0.1375 Q0.4079,0.1375,0.4019,0.1395 T0.3869,0.1414 Q0.3682,0.1414,0.3504,0.1474 Q0.3398,0.1513,0.3333,0.1513 Q0.3293,0.1513,0.3228,0.1494 L0.3204,0.1494 Q0.3179,0.1494,0.3155,0.1508 T0.3118,0.1543 T0.3106,0.1592 T0.3127,0.1642 T0.32,0.1677 T0.3305,0.1701 T0.3435,0.1716 T0.3544,0.1721 Q0.3569,0.1731,0.3601,0.1731 Q0.3625,0.1731,0.3686,0.1726 T0.3779,0.1721 Q0.3901,0.1721,0.4023,0.1751 Q0.4177,0.18,0.455,0.18 Q0.4793,0.18,0.4882,0.178 L0.4915,0.178 Q0.4964,0.178,0.5045,0.1815 T0.5158,0.185 Q0.5564,0.1889,0.5645,0.1929 Q0.5677,0.1939,0.571,0.1939 Q0.575,0.1939,0.5807,0.1919 T0.5888,0.1899 T0.5929,0.1909 Q0.5969,0.1949,0.6123,0.1949 Q0.6334,0.1949,0.6456,0.1899 Q0.6488,0.1879,0.6537,0.1879 Q0.661,0.1879,0.6772,0.1929 T0.6983,0.1978 Q0.704,0.1988,0.7206,0.1998 T0.7502,0.2018 T0.7664,0.2038 Q0.7672,0.2038,0.7818,0.2043 T0.8151,0.2067 T0.8459,0.2156 Q0.8573,0.2206,0.8573,0.2255 Q0.8573,0.2295,0.8516,0.2324 T0.8394,0.2369 T0.8281,0.2384 Q0.8208,0.2384,0.7526,0.2473 Q0.7494,0.2483,0.7421,0.2493 T0.7287,0.2512 T0.7178,0.2522 L0.7153,0.2522 L0.7137,0.2522 Q0.7056,0.2522,0.6898,0.2572 T0.6691,0.2671 Q0.6667,0.269,0.6634,0.269 Q0.661,0.269,0.6557,0.2681 T0.6472,0.2671 Q0.6448,0.2671,0.6415,0.2681 Q0.631,0.271,0.6034,0.274 Q0.5994,0.274,0.5961,0.2765 T0.5904,0.2789 L0.5864,0.2789 Q0.5831,0.2779,0.5742,0.2779 Q0.541,0.2779,0.5223,0.2849 Q0.5126,0.2888,0.5028,0.2888 Q0.5004,0.2888,0.4943,0.2883 T0.4842,0.2878 Q0.4704,0.2878,0.4627,0.2898 T0.4509,0.2987 Q0.4501,0.2997,0.4501,0.3007 Q0.4501,0.3046,0.4574,0.3066 T0.4765,0.3091 T0.4899,0.3096 Q0.4931,0.3106,0.5061,0.3121 T0.5316,0.315 T0.5499,0.3175 Q0.5507,0.3175,0.5572,0.3195 T0.5685,0.3225 T0.5803,0.3254 T0.5933,0.3279 T0.605,0.3284 T0.6148,0.3274 Q0.6221,0.3244,0.6294,0.3244 Q0.6399,0.3244,0.6496,0.3294 Q0.6529,0.3314,0.6577,0.3314 Q0.6602,0.3314,0.6663,0.3304 T0.6756,0.3294 T0.6813,0.3304 Q0.6837,0.3304,0.6873,0.3309 L0.6946,0.3318 T0.7024,0.3323 T0.7105,0.3328 T0.7178,0.3338 T0.7238,0.3348 T0.7283,0.3363 Q0.7324,0.3383,0.7482,0.3403 T0.7689,0.3442 Q0.7697,0.3442,0.779,0.3477 T0.794,0.3536 T0.8074,0.3615 T0.8183,0.3729 Q0.8232,0.3808,0.8232,0.3848 Q0.8232,0.3867,0.8216,0.3892 T0.8151,0.3961 T0.8062,0.406 T0.7997,0.4179 T0.7952,0.4263 T0.7855,0.4308 T0.7616,0.4362 Q0.7543,0.4372,0.7445,0.4372 L0.7372,0.4372 L0.7307,0.4372 Q0.7202,0.4372,0.7153,0.4382 Q0.7064,0.4402,0.691,0.4402 L0.6845,0.4402 L0.6788,0.4402 Q0.6699,0.4402,0.6533,0.4436 T0.6318,0.451 Q0.6302,0.451,0.6302,0.452 Q0.6302,0.457,0.6626,0.459 Q0.6869,0.4609,0.7015,0.4659 Q0.7064,0.4669,0.7202,0.4669 L0.7311,0.4669 L0.7429,0.4669 Q0.7599,0.4669,0.7689,0.4688 Q0.7794,0.4708,0.7794,0.4738 L0.7786,0.4748 T0.777,0.4763 T0.7749,0.4773 L0.7737,0.4777 L0.7729,0.4777 Q0.7502,0.4797,0.738,0.4797 L0.7315,0.4797 L0.7291,0.4797 Q0.7226,0.4797,0.6869,0.4876 Q0.6821,0.4886,0.6768,0.4891 T0.6614,0.4901 T0.6456,0.4916 L0.6342,0.4916 Q0.6294,0.4916,0.6217,0.4911 T0.6115,0.4906 Q0.6083,0.4906,0.6054,0.4911 T0.5961,0.4936 T0.5815,0.4965 T0.5629,0.4985 Q0.5507,0.4985,0.5442,0.4995 T0.5345,0.5025 T0.5304,0.5084 L0.5296,0.5094 Q0.5296,0.5114,0.5316,0.5124 T0.5373,0.5138 T0.5442,0.5143 L0.5523,0.5143 L0.5604,0.5143 Q0.5637,0.5153,0.5677,0.5158 T0.5742,0.5173 T0.5811,0.5188 T0.5904,0.5193 L0.5977,0.5193 L0.6026,0.5193 Q0.6107,0.5193,0.6168,0.5208 T0.6294,0.5252 T0.6399,0.5292 Q0.6448,0.5302,0.6679,0.5341 T0.6983,0.541 Q0.7129,0.545,0.7664,0.55 Q0.7883,0.5519,0.7883,0.5559 Q0.7883,0.5579,0.7843,0.5608 T0.7721,0.5638 Q0.7697,0.5638,0.764,0.5633 T0.7559,0.5628 L0.7502,0.5628 Q0.7364,0.5648,0.6869,0.5648 L0.6699,0.5648 L0.6675,0.5648 Q0.665,0.5648,0.6602,0.5658 T0.6513,0.5668 Q0.6464,0.5668,0.6399,0.5658 Q0.6342,0.5648,0.6302,0.5648 T0.6225,0.5668 T0.6156,0.5697 Q0.6107,0.5707,0.6087,0.5707 T0.6034,0.5712 T0.5953,0.5717 Q0.5904,0.5727,0.5835,0.5727 T0.5718,0.5732 T0.562,0.5757 Q0.558,0.5767,0.5483,0.5767 L0.5349,0.5767 L0.5207,0.5767 Q0.5069,0.5767,0.5028,0.5786 Q0.4972,0.5816,0.4899,0.5816 Q0.4858,0.5816,0.4781,0.5806 T0.4663,0.5796 L0.4631,0.5796 Q0.4582,0.5796,0.4432,0.5821 T0.4144,0.5846 L0.4071,0.5846 L0.4011,0.5846 T0.3958,0.5851 T0.3921,0.5856 T0.3889,0.5861 T0.3865,0.5865 T0.384,0.5875 L0.382,0.5885 L0.3796,0.5895 L0.3771,0.5905 Q0.3731,0.5925,0.365,0.5925 L0.3601,0.5925 L0.3552,0.5925 Q0.3277,0.5925,0.3049,0.6044 Q0.3017,0.6053,0.296,0.6053 Q0.292,0.6053,0.2847,0.6044 T0.2741,0.6034 Q0.2693,0.6034,0.2547,0.6029 T0.236,0.6024 Q0.2222,0.6024,0.1922,0.6073 Q0.1906,0.6083,0.1882,0.6083 Q0.1833,0.6083,0.1711,0.6063 T0.1533,0.6044 Q0.1517,0.6034,0.1492,0.6034 Q0.1436,0.6034,0.135,0.6048 T0.1168,0.6078 T0.103,0.6093 Q0.0973,0.6103,0.0787,0.6103 L0.0604,0.6103 L0.0414,0.6103 L0.0235,0.6103 Q0.0024,0.6113,0.0024,0.6172 Q0.0024,0.6192,0.0032,0.6231 Q0.0049,0.6281,0.0333,0.6281 L0.0414,0.6281 L0.0479,0.6281 Q0.0519,0.6281,0.0624,0.6301 T0.0803,0.632 L0.0835,0.632 L0.0916,0.632 Q0.0989,0.632,0.1281,0.634 L0.206,0.6419 Q0.2117,0.6429,0.2174,0.6429 Q0.2214,0.6429,0.2271,0.6424 T0.2344,0.6419 L0.2376,0.6419 Q0.2393,0.6429,0.2417,0.6429 T0.2526,0.6419 T0.2652,0.6409 Q0.2741,0.6409,0.2782,0.6429 T0.2968,0.6459 T0.3293,0.6479 T0.352,0.6489 Q0.3552,0.6499,0.3585,0.6499 Q0.365,0.6499,0.3731,0.6474 T0.3844,0.6449 Q0.3885,0.6449,0.3917,0.6474 T0.4006,0.6499 Q0.4088,0.6499,0.4509,0.6578 Q0.4574,0.6588,0.4631,0.6588 Q0.4655,0.6588,0.4716,0.6583 T0.4834,0.6578 L0.4874,0.6578 Q0.5004,0.6588,0.5255,0.6637 Q0.532,0.6647,0.56,0.6667 T0.6148,0.6701 T0.644,0.6716 Q0.6464,0.6726,0.6594,0.6736 T0.6861,0.6756 T0.7048,0.6775 Q0.7097,0.6775,0.7186,0.6825 T0.738,0.6874 Q0.7518,0.6874,0.7729,0.6958 T0.8005,0.7122 Q0.8029,0.7141,0.8029,0.7151 Q0.8029,0.7191,0.7968,0.7216 T0.7818,0.726 T0.7705,0.729 L0.764,0.731 T0.7583,0.7324 T0.753,0.7334 T0.7486,0.7349 Q0.7251,0.7399,0.7161,0.7399 Q0.7097,0.7399,0.6951,0.7409 T0.6748,0.7418 L0.6703,0.7418 L0.6667,0.7418 Q0.6659,0.7418,0.6399,0.7448 L0.6334,0.7448 Q0.631,0.7448,0.6249,0.7443 T0.6148,0.7438 L0.6099,0.7438 Q0.601,0.7448,0.5856,0.7473 T0.5645,0.7507 Q0.5572,0.7517,0.5572,0.7547 T0.5616,0.7606 T0.5702,0.7646 Q0.5734,0.7646,0.5779,0.7651 T0.5864,0.7661 T0.5949,0.7671 T0.6018,0.7676 L0.6071,0.7676 T0.6135,0.7681 T0.62,0.769 T0.6269,0.771 T0.6342,0.7725 Q0.6391,0.7725,0.6464,0.7705 T0.6541,0.7685 L0.6553,0.7685 Q0.6586,0.7685,0.6699,0.771 T0.6853,0.7735 Q0.6902,0.7735,0.704,0.777 T0.7226,0.7834 Q0.7315,0.7873,0.7445,0.7883 Q0.747,0.7883,0.7676,0.7893 T0.7972,0.7913 Q0.7989,0.7913,0.8017,0.7918 T0.8058,0.7923 T0.809,0.7928 T0.8114,0.7933 T0.8131,0.7938 T0.8147,0.7943 T0.8159,0.7953 L0.8171,0.7967 T0.8175,0.7982 Q0.8183,0.7992,0.8183,0.8002 Q0.8183,0.8022,0.8155,0.8032 T0.807,0.8051 T0.7989,0.8071 Q0.7932,0.8091,0.7737,0.8091 L0.7413,0.8091 L0.7372,0.8091 Q0.7275,0.8091,0.721,0.8101 T0.7072,0.8136 T0.6983,0.817 Q0.6942,0.818,0.6825,0.818 T0.6602,0.819 T0.6456,0.822 Q0.6415,0.8249,0.6375,0.8249 Q0.6367,0.8249,0.6326,0.8239 T0.6253,0.8229 Q0.6034,0.8229,0.5953,0.8279 Q0.5912,0.8289,0.5848,0.8289 Q0.5775,0.8289,0.5645,0.8279 Q0.5629,0.8269,0.5604,0.8269 Q0.5523,0.8269,0.5328,0.8348 Q0.5296,0.8358,0.5264,0.8358 Q0.5247,0.8358,0.5203,0.8353 T0.5126,0.8348 Q0.5061,0.8348,0.4988,0.8358 Q0.4947,0.8368,0.4882,0.8378 Q0.4826,0.8388,0.4797,0.8388 T0.474,0.8398 T0.4704,0.8422 T0.4696,0.8462 T0.472,0.8501 T0.4781,0.8521 T0.4854,0.8526 L0.4935,0.8526 T0.4996,0.8536 Q0.5036,0.8536,0.515,0.8546 T0.5337,0.8566 Q0.5426,0.8576,0.5596,0.8576 L0.5657,0.8576 L0.571,0.8576 L0.5791,0.8576 Q0.5921,0.8586,0.6135,0.8591 T0.6383,0.8605 Q0.6683,0.8635,0.6764,0.8635 Q0.6999,0.8635,0.6999,0.8684 Q0.6999,0.8694,0.6967,0.8734 T0.6934,0.8803 L0.6934,0.8823 Q0.6951,0.8863,0.7137,0.8863 Q0.7218,0.8863,0.7267,0.8853 L0.7299,0.8853 Q0.734,0.8853,0.7409,0.8882 T0.7502,0.8912 Q0.7607,0.8942,0.794,0.8971 Q0.7972,0.8971,0.8078,0.9001 T0.8297,0.9031 Q0.8475,0.9031,0.8646,0.9065 T0.8824,0.9149 L0.8824,0.9159 Q0.8824,0.9169,0.882,0.9179 T0.8808,0.9194 L0.8792,0.9204 T0.8767,0.9214 T0.8743,0.9224 T0.8715,0.9228 L0.8686,0.9228 T0.8662,0.9233 T0.8637,0.9238 L0.8556,0.9238 T0.8447,0.9243 T0.8386,0.9268 Q0.837,0.9278,0.835,0.9288 T0.8305,0.9303 T0.8244,0.9308 T0.8175,0.9318 Q0.8127,0.9327,0.8017,0.9352 T0.7851,0.9397 Q0.777,0.9416,0.7705,0.9451 T0.7616,0.9496 Q0.7575,0.9505,0.7494,0.9505 L0.7405,0.9505 L0.7307,0.9505 Q0.7234,0.9505,0.7178,0.9515 Q0.7145,0.9515,0.7125,0.9535 T0.7105,0.9575 Q0.7105,0.9624,0.7194,0.9634 Q0.7567,0.9654,0.7664,0.9674 Q0.7745,0.9693,0.7762,0.9693 L0.7908,0.9693 L0.7948,0.9693 Q0.8005,0.9693,0.8058,0.9698 T0.8143,0.9718 T0.824,0.9753 T0.8354,0.9792 Q0.8483,0.9832,0.871,0.9832 L0.8739,0.9832 L0.8767,0.9832 Q0.8873,0.9832,0.8921,0.9842 Q0.8978,0.9852,0.9157,0.9896 T0.94,0.996 Q0.9424,0.996,0.9469,0.9965 T0.9566,0.997 T0.9676,0.9975 T0.9781,0.998 L0.9874,0.998 L0.9943,0.998 L0.9968,0.998 Z", type: 0 } }, "\\uE0CC": { type: 5, data: { d: "M1,0.5071 L0.8623,0.7102 L0.5865,0.7102 L0.4489,0.5071 L0.5865,0.3045 L0.8623,0.3045 Z M0.4135,0.7974 L0.2758,1 L0,1 L0,0.5944 L0.2758,0.5944 Z M0.4135,0.2026 L0.2758,0.4056 L0,0.4056 L0,0 L0.2758,0 Z", type: 0 } }, "\\uE0CD": { type: 5, data: { d: "M0.9726,0.5071 L0.8451,0.3184 L0.59,0.3184 L0.4624,0.5071 L0.59,0.6955 L0.8451,0.6955 Z M1,0.5071 L0.8588,0.716 L0.5768,0.716 L0.4355,0.5071 L0.5768,0.2982 L0.8588,0.2982 Z M0.401,0.7911 L0.2735,0.6028 L0.0236,0.6028 L0.0236,0.9799 L0.2735,0.9799 Z M0.4284,0.7911 L0.2872,1 L0,1 L0,0.5826 L0.2872,0.5826 Z M0.401,0.2089 L0.2735,0.0201 L0.0236,0.0201 L0.0236,0.3972 L0.2735,0.3972 Z M0.4284,0.2089 L0.2872,0.4174 L0,0.4174 L0,0 L0.2872,0 Z", type: 0 } }, "\\uE0CE": { type: 5, data: { d: "M1,0.4996 Q1,0.5365,0.9924,0.568 T0.9718,0.6177 T0.9433,0.6363 L0.9425,0.6367 Q0.9355,0.6367,0.9285,0.6326 L0.9308,0.6326 Q0.9129,0.6195,0.9013,0.587 T0.8871,0.5164 T0.8943,0.4373 T0.9254,0.3687 L0.9254,0.3691 Q0.9339,0.3628,0.9425,0.3628 Q0.9584,0.3628,0.9716,0.3811 T0.9924,0.431 T1,0.4996 Z M0.9234,0.6321 L0.8776,0.7169 Q0.8791,0.732,0.8791,0.7441 Q0.8791,0.781,0.8716,0.8123 T0.8508,0.862 T0.8224,0.8809 L0.8216,0.8809 Q0.8154,0.8809,0.8092,0.8775 L0.8088,0.8775 Q0.7905,0.8633,0.7792,0.8297 T0.766,0.7571 T0.775,0.6768 T0.8088,0.6086 L0.7431,0.6065 Q0.719,0.6313,0.7072,0.6705 T0.6965,0.7487 T0.7097,0.823 T0.7423,0.8763 L0.7913,0.8775 L0.7314,0.9895 L0.4648,0.5038 L0.7299,0.0176 L0.7882,0.1229 L0.7404,0.1212 Q0.7244,0.138,0.7136,0.1617 T0.6982,0.2108 T0.6943,0.2632 T0.7003,0.3144 T0.7159,0.3586 T0.7396,0.3909 L0.8072,0.3926 Q0.7894,0.3796,0.7777,0.3479 T0.7635,0.2789 T0.7697,0.2011 T0.7987,0.1326 Q0.8092,0.1225,0.8204,0.1225 Q0.8321,0.1225,0.8426,0.1332 T0.8609,0.1623 T0.8731,0.2062 T0.8776,0.2592 Q0.8776,0.268,0.8768,0.2815 L0.9219,0.3628 L0.8644,0.3612 Q0.8403,0.3855,0.8284,0.4247 T0.8177,0.5029 T0.8309,0.5772 T0.8632,0.6305 Z M0.6759,0.6384 Q0.6576,0.625,0.6457,0.5914 T0.6319,0.5185 T0.6407,0.4375 T0.6751,0.3691 L0.609,0.367 Q0.5849,0.3918,0.5731,0.431 T0.5626,0.509 T0.5758,0.5833 T0.6082,0.6367 Z M0.6459,0.0025 L0.391,0.4551 L0.0035,0.4551 L0.246,0 Z M0.6553,1 L0.2421,1 L0,0.5449 L0.3875,0.5449 Z", type: 0 } }, "\\uE0CF": { type: 5, data: { d: "M0.4996,0 Q0.5562,0,0.5961,0.0166 T0.6364,0.0566 L0.6368,0.0575 Q0.6368,0.0646,0.6324,0.0713 L0.6324,0.0692 Q0.6196,0.0868,0.5872,0.0986 T0.5166,0.1128 T0.4373,0.1057 T0.3689,0.0747 L0.3694,0.0747 Q0.3627,0.0663,0.3627,0.0575 Q0.3627,0.0336,0.4028,0.0168 T0.4996,0 Z M0.6324,0.0768 L0.717,0.1225 Q0.7321,0.1212,0.744,0.1212 Q0.8007,0.1212,0.8406,0.1378 T0.8809,0.1779 L0.8813,0.1783 Q0.8813,0.1846,0.8778,0.1909 Q0.8636,0.2093,0.8299,0.2208 T0.7573,0.2343 T0.6769,0.2253 T0.6089,0.1913 L0.6067,0.2567 Q0.6315,0.281,0.6707,0.2928 T0.7489,0.3035 T0.8231,0.2903 T0.8764,0.258 L0.8778,0.2085 L0.9898,0.2685 L0.504,0.5352 L0.0177,0.2701 L0.1227,0.2118 L0.1213,0.2596 Q0.1457,0.2836,0.1851,0.2955 T0.2635,0.3062 T0.3377,0.293 T0.3911,0.2605 L0.3928,0.193 Q0.38,0.2106,0.3483,0.2221 T0.2792,0.2364 T0.2013,0.2303 T0.1324,0.2013 Q0.1222,0.1909,0.1222,0.1795 Q0.1222,0.156,0.1623,0.1393 T0.2591,0.1225 Q0.2679,0.1225,0.2817,0.1233 L0.3627,0.078 L0.3609,0.1359 Q0.3857,0.1598,0.4249,0.1718 T0.5031,0.1825 T0.5773,0.1693 T0.6306,0.1367 Z M0.6386,0.3242 Q0.6253,0.3427,0.5917,0.3544 T0.5186,0.3683 T0.4376,0.3595 T0.3689,0.3251 L0.3671,0.3909 Q0.3915,0.4148,0.4309,0.4268 T0.5093,0.4375 T0.5835,0.4243 T0.6368,0.3918 Z M0.0027,0.354 L0.4553,0.6091 L0.4553,0.9962 L0,0.7542 Z M1,0.3448 L1,0.7576 L0.5447,1 L0.5447,0.6128 Z", type: 0 } }, "\\uE0D0": { type: 5, data: { d: "M0,0.7699 Q0,0.7172,0.0277,0.6731 T0.103,0.6032 T0.2066,0.5774 Q0.2487,0.5774,0.2865,0.5922 T0.3526,0.6339 L0.3935,0.6715 Q0.4218,0.6984,0.438,0.7336 T0.4541,0.8075 Q0.4541,0.8602,0.4264,0.9046 T0.3511,0.9745 T0.2475,1 Q0.2054,1,0.1676,0.9852 T0.1016,0.9435 L0.0606,0.9059 Q0.0317,0.879,0.0159,0.8438 T0,0.7699 Z M0.5459,0.7699 Q0.5459,0.7172,0.5736,0.6731 T0.6489,0.6032 T0.7525,0.5774 Q0.7946,0.5774,0.8324,0.5922 T0.8984,0.6339 L0.9394,0.6715 Q0.9579,0.6892,0.9714,0.7105 T0.9925,0.7567 T1,0.8075 Q1,0.8602,0.9723,0.9046 T0.897,0.9745 T0.7934,1 Q0.7513,1,0.7135,0.9852 T0.6474,0.9435 L0.6065,0.9059 Q0.5776,0.879,0.5617,0.8438 T0.5459,0.7699 Z M0,0.1925 Q0,0.1398,0.0277,0.0957 T0.103,0.0258 T0.2066,0 Q0.2487,0,0.2865,0.0148 T0.3526,0.0565 L0.3935,0.0941 Q0.4218,0.121,0.438,0.1562 T0.4541,0.2301 Q0.4541,0.2828,0.4264,0.3269 T0.3511,0.3968 T0.2475,0.4226 Q0.2054,0.4226,0.1676,0.4078 T0.1016,0.3661 L0.0606,0.3285 Q0.0317,0.3016,0.0159,0.2664 T0,0.1925 Z M0.5459,0.1925 Q0.5459,0.1398,0.5736,0.0957 T0.6489,0.0258 T0.7525,0 Q0.7946,0,0.8324,0.0148 T0.8984,0.0565 L0.9394,0.0941 Q0.9677,0.121,0.9838,0.1562 T1,0.2301 Q1,0.2828,0.9723,0.3269 T0.897,0.3968 T0.7934,0.4226 Q0.7513,0.4226,0.7135,0.4078 T0.6474,0.3661 L0.6065,0.3285 Q0.5874,0.3108,0.5741,0.2895 T0.5534,0.2433 T0.5459,0.1925 Z M0.3301,0.6403 Q0.3306,0.6403,0.3312,0.6409 L0.3272,0.6371 L0.3272,0.6371 Z M0.8759,0.6403 Q0.8765,0.6403,0.8771,0.6409 Q0.8748,0.6387,0.8725,0.6371 L0.8731,0.6371 Z M0.3301,0.0629 Q0.3306,0.0629,0.3312,0.0634 L0.3272,0.0597 L0.3272,0.0602 Z M0.8759,0.0629 Q0.8765,0.0629,0.8771,0.0634 Q0.8748,0.0613,0.8725,0.0597 Q0.8731,0.0597,0.8731,0.0602 Z M0.779,0.4113 L0.7501,0.3849 Q0.7046,0.3844,0.6636,0.3661 Q0.7132,0.407,0.779,0.4113 Z M0.7957,0.4118 Q0.8477,0.4113,0.8918,0.3874 T0.9619,0.3223 T0.9885,0.2323 L0.9585,0.2048 Q0.9538,0.2769,0.8987,0.3282 T0.7657,0.3844 Z M0.9879,0.2167 Q0.9827,0.1554,0.9388,0.1097 Q0.9585,0.1478,0.959,0.1898 Z M0.2331,0.4113 L0.2043,0.3849 Q0.1587,0.3844,0.1177,0.3661 Q0.1673,0.407,0.2331,0.4113 Z M0.2499,0.4118 Q0.2885,0.4118,0.324,0.3973 T0.3852,0.3589 T0.4264,0.3019 T0.4426,0.2323 L0.4126,0.2048 Q0.408,0.2769,0.3529,0.3282 T0.2198,0.3844 Z M0.442,0.2167 Q0.4368,0.1554,0.393,0.1097 Q0.4126,0.1478,0.4132,0.1903 Z M0.779,0.9887 L0.7501,0.9624 Q0.7046,0.9618,0.6636,0.9435 Q0.7132,0.9844,0.779,0.9887 Z M0.7957,0.9892 Q0.8477,0.9887,0.8918,0.9648 T0.9619,0.8997 T0.9885,0.8097 L0.9585,0.7823 Q0.9538,0.8543,0.8987,0.9056 T0.7657,0.9618 Z M0.9879,0.7941 Q0.9827,0.7328,0.9388,0.6871 Q0.9585,0.7253,0.959,0.7672 Z M0.2331,0.9887 L0.2043,0.9624 Q0.1587,0.9618,0.1177,0.9435 Q0.1673,0.9844,0.2331,0.9887 Z M0.2499,0.9892 Q0.3018,0.9887,0.3459,0.9648 T0.416,0.8997 T0.4426,0.8102 L0.4126,0.7823 Q0.408,0.8543,0.3529,0.9056 T0.2198,0.9618 Z M0.442,0.7941 Q0.4368,0.7328,0.393,0.6871 Q0.4126,0.7253,0.4132,0.7672 Z M0.3191,0.6452 Q0.2943,0.622,0.2643,0.6091 T0.2066,0.5962 Q0.1795,0.5962,0.1497,0.6091 T0.0949,0.6441 T0.0537,0.6995 T0.0375,0.7699 Q0.0375,0.8419,0.0941,0.8941 Q0.1189,0.9172,0.1489,0.9304 T0.2066,0.9435 Q0.2337,0.9435,0.2634,0.9304 T0.3182,0.8952 T0.3595,0.8398 T0.3756,0.7699 Q0.3756,0.6978,0.3191,0.6452 Z M0.026,0.7731 L0.026,0.7699 Q0.026,0.6935,0.0854,0.6376 Q0.0658,0.6538,0.0514,0.6739 T0.0289,0.718 T0.0202,0.7677 Z M0.0271,0.7892 L0.0208,0.7833 Q0.0254,0.8419,0.0681,0.886 Q0.0664,0.8828,0.0646,0.879 Q0.0329,0.8382,0.0271,0.7892 Z M0.3866,0.7823 Q0.382,0.8511,0.3278,0.9016 Q0.3843,0.8565,0.3918,0.7871 Z M0.3872,0.7677 L0.393,0.7726 L0.393,0.7699 Q0.393,0.7349,0.3791,0.7038 Q0.3739,0.6973,0.3681,0.6914 Q0.3866,0.7274,0.3872,0.7677 Z M0.865,0.6452 Q0.8402,0.622,0.8102,0.6091 T0.7525,0.5962 Q0.7305,0.5962,0.7072,0.6043 T0.6619,0.628 T0.6223,0.6642 T0.5941,0.7124 T0.5834,0.7699 Q0.5834,0.8419,0.6399,0.8941 Q0.6561,0.9097,0.6757,0.9207 T0.7149,0.9376 T0.7525,0.9435 Q0.7796,0.9435,0.8093,0.9304 T0.8641,0.8952 T0.9054,0.8398 T0.9215,0.7699 Q0.9215,0.6978,0.865,0.6452 Z M0.5718,0.7731 L0.5718,0.7699 Q0.5718,0.6935,0.6313,0.6376 Q0.6013,0.6618,0.584,0.6954 T0.5661,0.7677 Z M0.573,0.7892 L0.5666,0.7833 Q0.5713,0.8419,0.614,0.886 Q0.6122,0.8828,0.6105,0.879 Q0.5788,0.8382,0.573,0.7892 Z M0.9325,0.7823 Q0.9279,0.8511,0.8736,0.9016 Q0.9308,0.8565,0.9377,0.7871 Z M0.9331,0.7672 L0.9388,0.7726 L0.9388,0.7699 Q0.9388,0.7349,0.925,0.7038 Q0.9198,0.6973,0.914,0.6914 Q0.9325,0.7274,0.9331,0.7672 Z M0.3191,0.0677 Q0.2943,0.0446,0.2643,0.0317 T0.2066,0.0188 Q0.1795,0.0188,0.1497,0.0317 T0.0949,0.0667 T0.0537,0.122 T0.0375,0.1925 Q0.0375,0.2645,0.0941,0.3167 Q0.1189,0.3398,0.1489,0.353 T0.2066,0.3661 Q0.2337,0.3661,0.2634,0.353 T0.3182,0.3177 T0.3595,0.2624 T0.3756,0.1925 Q0.3756,0.1204,0.3191,0.0677 Z M0.026,0.1957 L0.026,0.1925 Q0.026,0.1161,0.0854,0.0602 Q0.0554,0.0844,0.0381,0.118 T0.0202,0.1903 Z M0.0271,0.2118 L0.0208,0.2059 Q0.0254,0.2645,0.0681,0.3086 Q0.0664,0.3054,0.0646,0.3016 Q0.0329,0.2608,0.0271,0.2118 Z M0.3866,0.2048 Q0.382,0.2737,0.3278,0.3242 Q0.3849,0.279,0.3918,0.2097 Z M0.3872,0.1903 L0.393,0.1952 L0.393,0.1925 Q0.393,0.1581,0.3791,0.1263 Q0.3739,0.1199,0.3681,0.114 Q0.3866,0.15,0.3872,0.1903 Z M0.865,0.0677 Q0.8402,0.0446,0.8102,0.0317 T0.7525,0.0188 Q0.7253,0.0188,0.6956,0.0317 T0.6408,0.0667 T0.5995,0.122 T0.5834,0.1925 Q0.5834,0.2645,0.6399,0.3167 Q0.6647,0.3398,0.6947,0.353 T0.7525,0.3661 Q0.7796,0.3661,0.8093,0.353 T0.8641,0.3177 T0.9054,0.2624 T0.9215,0.1925 Q0.9215,0.1204,0.865,0.0677 Z M0.5718,0.1957 L0.5718,0.1925 Q0.5718,0.1161,0.6313,0.0602 Q0.6013,0.0844,0.584,0.118 T0.5661,0.1903 Z M0.573,0.2118 L0.5666,0.2059 Q0.5713,0.2645,0.614,0.3086 Q0.6122,0.3054,0.6105,0.3016 Q0.5788,0.2608,0.573,0.2118 Z M0.9325,0.2048 Q0.9279,0.2737,0.8736,0.3242 Q0.9308,0.279,0.9377,0.2097 Z M0.9331,0.1898 L0.9388,0.1952 L0.9388,0.1925 Q0.9388,0.1575,0.925,0.1263 Q0.9198,0.1199,0.914,0.114 Q0.9325,0.15,0.9331,0.1898 Z", type: 0 } }, "\\uE0D1": { type: 5, data: { d: "M0.7639,0.1974 L0.9593,0.1974 L0.9593,0.1443 L0.7639,0.1443 L0.7639,0.1974 Z M0.7586,0.109 L0.9727,0.109 Q0.9839,0.109,0.992,0.1153 T1,0.1291 L1,0.382 Q1,0.3906,0.9912,0.3964 T0.9727,0.4021 L0.7586,0.4021 Q0.7468,0.4021,0.739,0.3956 T0.7313,0.382 L0.7313,0.1291 Q0.7313,0.1246,0.7339,0.1207 T0.7406,0.1143 T0.7495,0.1104 T0.7586,0.109 Z M0.7639,0.6575 L0.9593,0.6575 L0.9593,0.6044 L0.7639,0.6044 L0.7639,0.6575 Z M0.7313,0.8347 L0.7313,0.5843 Q0.7313,0.5757,0.7401,0.5699 T0.7586,0.5641 L0.9706,0.5641 Q0.9818,0.5641,0.9898,0.5705 T0.9979,0.5843 L0.9979,0.8347 Q0.9979,0.8433,0.989,0.8491 T0.9706,0.8549 L0.7586,0.8549 Q0.7468,0.8549,0.739,0.8483 T0.7313,0.8347 Z M0,1 L0,0 L0.7607,0 L0.7607,1 L0,1 Z", type: 0 } }, "\\uE0D2": { type: 5, data: { d: "M0.9764,0.0029 L0.3179,0.4552 L0,0.4552 L0,0 Z M1,1 L0,1 L0,0.5448 L0.3091,0.5448 Z", type: 0 } }, "\\uE0D4": { type: 5, data: { d: "M0.0236,0.0029 L0.6824,0.4552 L1,0.4552 L1,0 Z M0,1 L1,1 L1,0.5448 L0.6912,0.5448 Z", type: 0 } }, "\\uEE00": { type: 3, data: "M0,0 L1,0 L1,.05 L.1,.05 L.1,.95 L1,.95 L1,1 L0,1 Z" }, "\\uEE01": { type: 3, data: "M0,0 L1,0 L1,.05 L0,.05 Z M0,.95 L1,.95 L1,1 L0,1 Z" }, "\\uEE02": { type: 3, data: "M1,0 L0,0 L0,.05 L.9,.05 L.9,.95 L0,.95 L0,1 L1,1 Z" }, "\\uEE03": { type: 3, data: "M0,0 L1,0 L1,.05 L.1,.05 L.1,.95 L1,.95 L1,1 L0,1 Z M.25,.15 L1,.15 L1,.85 L.25,.85 Z" }, "\\uEE04": { type: 3, data: "M0,0 L1,0 L1,.05 L0,.05 Z M0,.95 L1,.95 L1,1 L0,1 Z M0,.15 L1,.15 L1,.85 L0,.85 Z" }, "\\uEE05": { type: 3, data: "M1,0 L0,0 L0,.05 L.9,.05 L.9,.95 L0,.95 L0,1 L1,1 Z M0,.15 L.75,.15 L.75,.85 L0,.85 Z" }, "\\uEE06": { type: 5, data: { d: "M0.6574,0.303 Q0.623,0.291,0.5852,0.285 T0.5082,0.279 T0.4311,0.285 T0.359,0.303 L0.3082,0.248 Q0.3525,0.232,0.4041,0.2235 T0.5082,0.215 T0.6123,0.2235 T0.7082,0.248 Z", type: 0 }, scaleType: 1 }, "\\uEE07": { type: 5, data: { d: "M0.8557,0.582 L0.7656,0.551 Q0.7852,0.53,0.7951,0.507 T0.8049,0.46 Q0.8049,0.424,0.782,0.3905 T0.718,0.332 T0.6221,0.293 T0.5082,0.279 L0.5082,0.215 Q0.5607,0.215,0.6123,0.2235 T0.709,0.248 T0.7918,0.287 T0.8557,0.3375 T0.8959,0.3965 T0.9098,0.46 T0.8959,0.5235 T0.8557,0.582 Z", type: 0 }, scaleType: 1 }, "\\uEE08": { type: 5, data: { d: "M0.5082,0.705 Q0.482,0.705,0.4557,0.703 T0.4049,0.697 L0.4311,0.635 Q0.4508,0.638,0.4697,0.6395 T0.5082,0.641 Q0.5672,0.641,0.6221,0.627 T0.718,0.588 T0.782,0.5295 T0.8049,0.46 Q0.8049,0.436,0.7951,0.413 T0.7656,0.369 L0.8557,0.338 Q0.882,0.365,0.8959,0.3965 T0.9098,0.46 T0.8959,0.5235 T0.8557,0.5825 T0.7918,0.633 T0.709,0.672 T0.6123,0.6965 T0.5082,0.705 Z", type: 0 }, scaleType: 1 }, "\\uEE09": { type: 5, data: { d: "M0.5082,0.705 Q0.4557,0.705,0.4041,0.6965 T0.3074,0.672 T0.2246,0.633 T0.1607,0.5825 T0.1205,0.5235 T0.1066,0.46 L0.2115,0.46 Q0.2115,0.496,0.2344,0.5295 T0.2984,0.588 T0.3943,0.627 T0.5082,0.641 T0.6221,0.627 T0.718,0.588 T0.782,0.5295 T0.8049,0.46 L0.9098,0.46 Q0.9098,0.492,0.8959,0.5235 T0.8557,0.5825 T0.7918,0.633 T0.709,0.672 T0.6123,0.6965 T0.5082,0.705 Z", type: 0 }, scaleType: 1 }, "\\uEE0A": { type: 5, data: { d: "M0.5082,0.705 Q0.4557,0.705,0.4041,0.6965 T0.3074,0.672 T0.2246,0.633 T0.1607,0.5825 T0.1205,0.5235 T0.1066,0.46 T0.1205,0.3965 T0.1607,0.338 L0.2508,0.369 Q0.2311,0.39,0.2213,0.413 T0.2115,0.46 Q0.2115,0.496,0.2344,0.5295 T0.2984,0.588 T0.3943,0.627 T0.5082,0.641 Q0.5279,0.641,0.5467,0.6395 T0.5852,0.635 L0.6115,0.697 Q0.5869,0.701,0.5607,0.703 T0.5082,0.705 Z", type: 0 }, scaleType: 1 }, "\\uEE0B": { type: 5, data: { d: "M0.1607,0.582 Q0.1344,0.555,0.1205,0.5235 T0.1066,0.46 T0.1205,0.3965 T0.1607,0.3375 T0.2246,0.287 T0.3074,0.248 T0.4041,0.2235 T0.5082,0.215 L0.5082,0.279 Q0.4492,0.279,0.3943,0.293 T0.2984,0.332 T0.2344,0.3905 T0.2115,0.46 Q0.2115,0.484,0.2213,0.507 T0.2508,0.551 Z", type: 0 }, scaleType: 1 }, "\\uF5D0": L4.LINE_H, "\\uF5D1": L4.LINE_V, "\\uF5D2": L4.FADE_RIGHT, "\\uF5D3": L4.FADE_LEFT, "\\uF5D4": L4.FADE_DOWN, "\\uF5D5": L4.FADE_UP, "\\uF5D6": L4.CURVE_DOWN_RIGHT, "\\uF5D7": L4.CURVE_DOWN_LEFT, "\\uF5D8": L4.CURVE_UP_RIGHT, "\\uF5D9": L4.CURVE_UP_LEFT, "\\uF5DA": [L4.LINE_V, L4.CURVE_UP_RIGHT], "\\uF5DB": [L4.LINE_V, L4.CURVE_DOWN_RIGHT], "\\uF5DC": [L4.CURVE_DOWN_RIGHT, L4.CURVE_UP_RIGHT], "\\uF5DD": [L4.LINE_V, L4.CURVE_UP_LEFT], "\\uF5DE": [L4.LINE_V, L4.CURVE_DOWN_LEFT], "\\uF5DF": [L4.CURVE_DOWN_LEFT, L4.CURVE_UP_LEFT], "\\uF5E0": [L4.LINE_H, L4.CURVE_DOWN_LEFT], "\\uF5E1": [L4.LINE_H, L4.CURVE_DOWN_RIGHT], "\\uF5E2": [L4.CURVE_DOWN_LEFT, L4.CURVE_DOWN_RIGHT], "\\uF5E3": [L4.LINE_H, L4.CURVE_UP_LEFT], "\\uF5E4": [L4.LINE_H, L4.CURVE_UP_RIGHT], "\\uF5E5": [L4.CURVE_UP_LEFT, L4.CURVE_UP_RIGHT], "\\uF5E6": [L4.LINE_V, L4.CURVE_UP_LEFT, L4.CURVE_UP_RIGHT], "\\uF5E7": [L4.LINE_V, L4.CURVE_DOWN_LEFT, L4.CURVE_DOWN_RIGHT], "\\uF5E8": [L4.LINE_H, L4.CURVE_DOWN_LEFT, L4.CURVE_UP_LEFT], "\\uF5E9": [L4.LINE_H, L4.CURVE_DOWN_RIGHT, L4.CURVE_UP_RIGHT], "\\uF5EA": [L4.LINE_V, L4.CURVE_DOWN_RIGHT, L4.CURVE_UP_LEFT], "\\uF5EB": [L4.LINE_V, L4.CURVE_DOWN_LEFT, L4.CURVE_UP_RIGHT], "\\uF5EC": [L4.LINE_H, L4.CURVE_DOWN_RIGHT, L4.CURVE_UP_LEFT], "\\uF5ED": [L4.LINE_H, L4.CURVE_DOWN_LEFT, L4.CURVE_UP_RIGHT], "\\uF5EE": [L4.NODE_FILL, L4.NODE_STROKE], "\\uF5EF": L4.NODE_STROKE, "\\uF5F0": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_RIGHT], "\\uF5F1": [L4.NODE_STROKE, L4.NODE_LINE_RIGHT], "\\uF5F2": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_LEFT], "\\uF5F3": [L4.NODE_STROKE, L4.NODE_LINE_LEFT], "\\uF5F4": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF5F5": [L4.NODE_STROKE, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF5F6": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_DOWN], "\\uF5F7": [L4.NODE_STROKE, L4.NODE_LINE_DOWN], "\\uF5F8": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP], "\\uF5F9": [L4.NODE_STROKE, L4.NODE_LINE_UP], "\\uF5FA": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_UP], "\\uF5FB": [L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_UP], "\\uF5FC": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_RIGHT], "\\uF5FD": [L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_RIGHT], "\\uF5FE": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT], "\\uF5FF": [L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT], "\\uF600": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_RIGHT], "\\uF601": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_RIGHT], "\\uF602": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_LEFT], "\\uF603": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_LEFT], "\\uF604": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_RIGHT], "\\uF605": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_RIGHT], "\\uF606": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT], "\\uF607": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT], "\\uF608": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF609": [L4.NODE_STROKE, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF60A": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF60B": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF60C": [L4.NODE_FILL, L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\uF60D": [L4.NODE_STROKE, L4.NODE_LINE_UP, L4.NODE_LINE_DOWN, L4.NODE_LINE_LEFT, L4.NODE_LINE_RIGHT], "\\u{1FB00}": f4(1), "\\u{1FB01}": f4(2), "\\u{1FB02}": f4(3), "\\u{1FB03}": f4(4), "\\u{1FB04}": f4(5), "\\u{1FB05}": f4(6), "\\u{1FB06}": f4(7), "\\u{1FB07}": f4(8), "\\u{1FB08}": f4(9), "\\u{1FB09}": f4(10), "\\u{1FB0A}": f4(11), "\\u{1FB0B}": f4(12), "\\u{1FB0C}": f4(13), "\\u{1FB0D}": f4(14), "\\u{1FB0E}": f4(15), "\\u{1FB0F}": f4(16), "\\u{1FB10}": f4(17), "\\u{1FB11}": f4(18), "\\u{1FB12}": f4(19), "\\u{1FB13}": f4(20), "\\u{1FB14}": f4(22), "\\u{1FB15}": f4(23), "\\u{1FB16}": f4(24), "\\u{1FB17}": f4(25), "\\u{1FB18}": f4(26), "\\u{1FB19}": f4(27), "\\u{1FB1A}": f4(28), "\\u{1FB1B}": f4(29), "\\u{1FB1C}": f4(30), "\\u{1FB1D}": f4(31), "\\u{1FB1E}": f4(32), "\\u{1FB1F}": f4(33), "\\u{1FB20}": f4(34), "\\u{1FB21}": f4(35), "\\u{1FB22}": f4(36), "\\u{1FB23}": f4(37), "\\u{1FB24}": f4(38), "\\u{1FB25}": f4(39), "\\u{1FB26}": f4(40), "\\u{1FB27}": f4(41), "\\u{1FB28}": f4(43), "\\u{1FB29}": f4(44), "\\u{1FB2A}": f4(45), "\\u{1FB2B}": f4(46), "\\u{1FB2C}": f4(47), "\\u{1FB2D}": f4(48), "\\u{1FB2E}": f4(49), "\\u{1FB2F}": f4(50), "\\u{1FB30}": f4(51), "\\u{1FB31}": f4(52), "\\u{1FB32}": f4(53), "\\u{1FB33}": f4(54), "\\u{1FB34}": f4(55), "\\u{1FB35}": f4(56), "\\u{1FB36}": f4(57), "\\u{1FB37}": f4(58), "\\u{1FB38}": f4(59), "\\u{1FB39}": f4(60), "\\u{1FB3A}": f4(61), "\\u{1FB3B}": f4(62), "\\u{1FB3C}": { type: 3, data: "M0,0.6667 L0,1 L0.5,1 Z" }, "\\u{1FB3D}": { type: 3, data: "M0,0.6667 L0,1 L1,1 Z" }, "\\u{1FB3E}": { type: 3, data: "M0,0.3333 L0,1 L0.5,1 Z" }, "\\u{1FB3F}": { type: 3, data: "M0,0.3333 L0,1 L1,1 Z" }, "\\u{1FB40}": { type: 3, data: "M0,0 L0,1 L0.5,1 Z" }, "\\u{1FB41}": { type: 3, data: "M0,0.3333 L0.5,0 L1,0 L1,1 L0,1 Z" }, "\\u{1FB42}": { type: 3, data: "M0,0.3333 L1,0 L1,1 L0,1 Z" }, "\\u{1FB43}": { type: 3, data: "M0,0.6667 L0.5,0 L1,0 L1,1 L0,1 Z" }, "\\u{1FB44}": { type: 3, data: "M0,0.6667 L1,0 L1,1 L0,1 Z" }, "\\u{1FB45}": { type: 3, data: "M0,1 L0.5,0 L1,0 L1,1 Z" }, "\\u{1FB46}": { type: 3, data: "M0,0.6667 L1,0.3333 L1,1 L0,1 Z" }, "\\u{1FB47}": { type: 3, data: "M0.5,1 L1,0.6667 L1,1 Z" }, "\\u{1FB48}": { type: 3, data: "M0,1 L1,0.6667 L1,1 Z" }, "\\u{1FB49}": { type: 3, data: "M0.5,1 L1,0.3333 L1,1 Z" }, "\\u{1FB4A}": { type: 3, data: "M0,1 L1,0.3333 L1,1 Z" }, "\\u{1FB4B}": { type: 3, data: "M0.5,1 L1,0 L1,1 Z" }, "\\u{1FB4C}": { type: 3, data: "M0.5,0 L0,0 L0,1 L1,1 L1,0.3333 Z" }, "\\u{1FB4D}": { type: 3, data: "M0,0 L0,1 L1,1 L1,0.3333 Z" }, "\\u{1FB4E}": { type: 3, data: "M0.5,0 L0,0 L0,1 L1,1 L1,0.6667 Z" }, "\\u{1FB4F}": { type: 3, data: "M0,0 L0,1 L1,1 L1,0.6667 Z" }, "\\u{1FB50}": { type: 3, data: "M0.5,0 L0,0 L0,1 L1,1 Z" }, "\\u{1FB51}": { type: 3, data: "M0,0.3333 L0,1 L1,1 L1,0.6667 Z" }, "\\u{1FB52}": { type: 3, data: "M0,0.6667 L0.5,1 L1,1 L1,0 L0,0 Z" }, "\\u{1FB53}": { type: 3, data: "M0,0.6667 L1,1 L1,0 L0,0 Z" }, "\\u{1FB54}": { type: 3, data: "M0,0.3333 L0.5,1 L1,1 L1,0 L0,0 Z" }, "\\u{1FB55}": { type: 3, data: "M0,0.3333 L1,1 L1,0 L0,0 Z" }, "\\u{1FB56}": { type: 3, data: "M0,0 L0.5,1 L1,1 L1,0 Z" }, "\\u{1FB57}": { type: 3, data: "M0,0.3333 L0,0 L0.5,0 Z" }, "\\u{1FB58}": { type: 3, data: "M0,0.3333 L0,0 L1,0 Z" }, "\\u{1FB59}": { type: 3, data: "M0,0.6667 L0,0 L0.5,0 Z" }, "\\u{1FB5A}": { type: 3, data: "M0,0.6667 L0,0 L1,0 Z" }, "\\u{1FB5B}": { type: 3, data: "M0,1 L0,0 L0.5,0 Z" }, "\\u{1FB5C}": { type: 3, data: "M0,0.6667 L0,0 L1,0 L1,0.3333 Z" }, "\\u{1FB5D}": { type: 3, data: "M0.5,1 L0,1 L0,0 L1,0 L1,0.6667 Z" }, "\\u{1FB5E}": { type: 3, data: "M0,1 L0,0 L1,0 L1,0.6667 Z" }, "\\u{1FB5F}": { type: 3, data: "M0.5,1 L0,1 L0,0 L1,0 L1,0.3333 Z" }, "\\u{1FB60}": { type: 3, data: "M0,1 L0,0 L1,0 L1,0.3333 Z" }, "\\u{1FB61}": { type: 3, data: "M0.5,1 L0,1 L0,0 L1,0 Z" }, "\\u{1FB62}": { type: 3, data: "M0.5,0 L1,0 L1,0.3333 Z" }, "\\u{1FB63}": { type: 3, data: "M0,0 L1,0 L1,0.3333 Z" }, "\\u{1FB64}": { type: 3, data: "M0.5,0 L1,0 L1,0.6667 Z" }, "\\u{1FB65}": { type: 3, data: "M0,0 L1,0 L1,0.6667 Z" }, "\\u{1FB66}": { type: 3, data: "M0.5,0 L1,0 L1,1 Z" }, "\\u{1FB67}": { type: 3, data: "M0,0.3333 L1,0.6667 L1,0 L0,0 Z" }, "\\u{1FB68}": { type: 3, data: "M0,0 L1,0 L1,1 L0,1 L0.5,0.5 Z" }, "\\u{1FB69}": { type: 3, data: "M0,0 L0.5,0.5 L1,0 L1,1 L0,1 Z" }, "\\u{1FB6A}": { type: 3, data: "M0,0 L1,0 L0.5,0.5 L1,1 L0,1 Z" }, "\\u{1FB6B}": { type: 3, data: "M0,0 L1,0 L1,1 L0.5,0.5 L0,1 Z" }, "\\u{1FB6C}": { type: 3, data: "M0,0 L0.5,0.5 L0,1 Z" }, "\\u{1FB6D}": { type: 3, data: "M0,0 L1,0 L0.5,0.5 Z" }, "\\u{1FB6E}": { type: 3, data: "M1,0 L1,1 L0.5,0.5 Z" }, "\\u{1FB6F}": { type: 3, data: "M0,1 L1,1 L0.5,0.5 Z" }, "\\u{1FB70}": { type: 0, data: [{ x: 1, y: 0, w: 1, h: 8 }] }, "\\u{1FB71}": { type: 0, data: [{ x: 2, y: 0, w: 1, h: 8 }] }, "\\u{1FB72}": { type: 0, data: [{ x: 3, y: 0, w: 1, h: 8 }] }, "\\u{1FB73}": { type: 0, data: [{ x: 4, y: 0, w: 1, h: 8 }] }, "\\u{1FB74}": { type: 0, data: [{ x: 5, y: 0, w: 1, h: 8 }] }, "\\u{1FB75}": { type: 0, data: [{ x: 6, y: 0, w: 1, h: 8 }] }, "\\u{1FB76}": { type: 0, data: [{ x: 0, y: 1, w: 8, h: 1 }] }, "\\u{1FB77}": { type: 0, data: [{ x: 0, y: 2, w: 8, h: 1 }] }, "\\u{1FB78}": { type: 0, data: [{ x: 0, y: 3, w: 8, h: 1 }] }, "\\u{1FB79}": { type: 0, data: [{ x: 0, y: 4, w: 8, h: 1 }] }, "\\u{1FB7A}": { type: 0, data: [{ x: 0, y: 5, w: 8, h: 1 }] }, "\\u{1FB7B}": { type: 0, data: [{ x: 0, y: 6, w: 8, h: 1 }] }, "\\u{1FB7C}": { type: 0, data: [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }] }, "\\u{1FB7D}": { type: 0, data: [{ x: 0, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }] }, "\\u{1FB7E}": { type: 0, data: [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 0, w: 8, h: 1 }] }, "\\u{1FB7F}": { type: 0, data: [{ x: 7, y: 0, w: 1, h: 8 }, { x: 0, y: 7, w: 8, h: 1 }] }, "\\u{1FB80}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }] }, "\\u{1FB81}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 1 }, { x: 0, y: 2, w: 8, h: 1 }, { x: 0, y: 4, w: 8, h: 1 }, { x: 0, y: 7, w: 8, h: 1 }] }, "\\u{1FB82}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 2 }] }, "\\u{1FB83}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 3 }] }, "\\u{1FB84}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 5 }] }, "\\u{1FB85}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 6 }] }, "\\u{1FB86}": { type: 0, data: [{ x: 0, y: 0, w: 8, h: 7 }] }, "\\u{1FB87}": { type: 0, data: [{ x: 6, y: 0, w: 2, h: 8 }] }, "\\u{1FB88}": { type: 0, data: [{ x: 5, y: 0, w: 3, h: 8 }] }, "\\u{1FB89}": { type: 0, data: [{ x: 3, y: 0, w: 5, h: 8 }] }, "\\u{1FB8A}": { type: 0, data: [{ x: 2, y: 0, w: 6, h: 8 }] }, "\\u{1FB8B}": { type: 0, data: [{ x: 1, y: 0, w: 7, h: 8 }] }, "\\u{1FB8C}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0 L0.5,0 L0.5,1 L0,1 Z" }, "\\u{1FB8D}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0.5,0 L1,0 L1,1 L0.5,1 Z" }, "\\u{1FB8E}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0 L1,0 L1,0.5 L0,0.5 Z" }, "\\u{1FB8F}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0.5 L1,0.5 L1,1 L0,1 Z" }, "\\u{1FB90}": { type: 1, data: [[0, 1], [1, 0]] }, "\\u{1FB91}": [{ type: 1, data: [[0, 1], [1, 0]], clipPath: "M0,0.5 L1,0.5 L1,1 L0,1 Z" }, { type: 0, data: [{ x: 0, y: 0, w: 8, h: 4 }] }], "\\u{1FB92}": [{ type: 1, data: [[0, 1], [1, 0]], clipPath: "M0,0 L1,0 L1,0.5 L0,0.5 Z" }, { type: 0, data: [{ x: 0, y: 4, w: 8, h: 4 }] }], "\\u{1FB94}": [{ type: 1, data: [[0, 1], [1, 0]], clipPath: "M0,0 L0.5,0 L0.5,1 L0,1 Z" }, { type: 0, data: [{ x: 4, y: 0, w: 4, h: 8 }] }], "\\u{1FB95}": { type: 0, data: [{ x: 0, y: 0, w: 2, h: 2 }, { x: 4, y: 0, w: 2, h: 2 }, { x: 2, y: 2, w: 2, h: 2 }, { x: 6, y: 2, w: 2, h: 2 }, { x: 0, y: 4, w: 2, h: 2 }, { x: 4, y: 4, w: 2, h: 2 }, { x: 2, y: 6, w: 2, h: 2 }, { x: 6, y: 6, w: 2, h: 2 }] }, "\\u{1FB96}": { type: 0, data: [{ x: 2, y: 0, w: 2, h: 2 }, { x: 6, y: 0, w: 2, h: 2 }, { x: 0, y: 2, w: 2, h: 2 }, { x: 4, y: 2, w: 2, h: 2 }, { x: 2, y: 4, w: 2, h: 2 }, { x: 6, y: 4, w: 2, h: 2 }, { x: 0, y: 6, w: 2, h: 2 }, { x: 4, y: 6, w: 2, h: 2 }] }, "\\u{1FB97}": { type: 0, data: [{ x: 0, y: 2, w: 8, h: 2 }, { x: 0, y: 6, w: 8, h: 2 }] }, "\\u{1FB98}": { type: 2, data: "M-0.25,-0.25 L1.25,1.25 M-0.25,0 L1,1.25 M-0.25,0.25 L0.75,1.25 M-0.25,0.5 L0.5,1.25 M0,-0.25 L1.25,1 M0.25,-0.25 L1.25,0.75 M0.5,-0.25 L1.25,0.5 M-0.25,0.75 L0.25,1.25 M0.75,-0.25 L1.25,0.25", strokeWidth: 1 }, "\\u{1FB99}": { type: 2, data: "M-0.25,0.5 L0.5,-0.25 M-0.25,0.75 L0.75,-0.25 M-0.25,1 L1,-0.25 M-0.25,1.25 L1.25,-0.25 M0,1.25 L1.25,0 M0.25,1.25 L1.25,0.25 M0.5,1.25 L1.25,0.5 M-0.25,0.25 L0.25,-0.25 M0.75,1.25 L1.25,0.75", strokeWidth: 1 }, "\\u{1FB9A}": { type: 5, data: { d: "M0,0 L.5,.5 L0,1 L1,1 L.5,.5 L1,0", type: 0 } }, "\\u{1FB9B}": { type: 5, data: { d: "M0,0 L.5,.5 L1,0 L1,1 L.5,.5 L0,1", type: 0 } }, "\\u{1FB9C}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0 L1,0 L0,1 Z" }, "\\u{1FB9D}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0 L1,0 L1,1 Z" }, "\\u{1FB9E}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M1,0 L1,1 L0,1 Z" }, "\\u{1FB9F}": { type: 1, data: [[1, 0], [0, 1]], clipPath: "M0,0 L1,1 L0,1 Z" }, "\\u{1FBA0}": { type: 2, data: "M.5,0 L0,.5", strokeWidth: 1 }, "\\u{1FBA1}": { type: 2, data: "M.5,0 L1,.5", strokeWidth: 1 }, "\\u{1FBA2}": { type: 2, data: "M0,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBA3}": { type: 2, data: "M1,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBA4}": { type: 2, data: "M.5,0 L0,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBA5}": { type: 2, data: "M.5,0 L1,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBA6}": { type: 2, data: "M0,.5 L.5,1 L1,.5", strokeWidth: 1 }, "\\u{1FBA7}": { type: 2, data: "M0,.5 L.5,0 L1,.5", strokeWidth: 1 }, "\\u{1FBA8}": { type: 2, data: "M.5,0 L0,.5 M1,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBA9}": { type: 2, data: "M.5,0 L1,.5 M0,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBAA}": { type: 2, data: "M.5,0 L1,.5 L.5,1 L0,.5", strokeWidth: 1 }, "\\u{1FBAB}": { type: 2, data: "M.5,0 L0,.5 L.5,1 L1,.5", strokeWidth: 1 }, "\\u{1FBAC}": { type: 2, data: "M0,.5 L.5,0 L1,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBAD}": { type: 2, data: "M1,.5 L.5,0 L0,.5 L.5,1", strokeWidth: 1 }, "\\u{1FBAE}": { type: 2, data: "M.5,0 L1,.5 L.5,1 L0,.5 Z", strokeWidth: 1 }, "\\u{1FBAF}": { type: 2, data: "M0,.5 L1,.5 M.5,.35 L.5,.65", strokeWidth: 1 }, "\\u{1FBB0}": { type: 3, data: "M0.1,0.2 L0.1,.8 L.4,.6 L.9,0.6 Z", scaleType: 1 }, "\\u{1FBB1}": { type: 4, data: { d: "M.1,.525 L.35,.675 L.9,.35", type: 1 }, scaleType: 1 }, "\\u{1FBB2}": { type: 3, data: "M.29,.27 L0.13,.56 L.22,.59 L.35,0.35 L.67,.35 L.57,.57 L.71,.76 L.22,.76 L.42,1 L.53,.98 L.43,.86 L.9,.86 L.71,.6 L1,.6 L1,.52 L.83,.52 L.92,.36 L1,.36 L1,.27Z M.99,.13 A.12,.12,0,1,1,.75,.13 A.12,.12,0,1,1,.99,.13" }, "\\u{1FBB3}": { type: 3, data: "M0,.27 L.3,.27 L.55,.12 L.63,.18 L.33,.36 L0,.36 M0,.52 L.33,.52 L.59,.89 L.73,.89 L.73,.98 L.53,.98 L.28,.6 L0,.6" }, "\\u{1FBB4}": { type: 4, data: { d: "M.15,.55 L.5,.4 L.5,.45 L.65,.45 L.65,.35 L.85,.35 L.85,.625 L.5,.625 L.5,.7 Z", type: 0 }, scaleType: 1 }, "\\u{1FBB5}": [{ type: 5, data: { d: "M0,0 L1,0 L1,.0625 L0,.0625 Z M0,.9375 L1,.9375 L1,1 L0,1 Z", type: 0 } }, { type: 5, data: { d: "M.15,.5 L.5,.35 L.5,.425 L.85,.425 L.85,.575 L.5,.575 L.5,.65 Z", type: 0 }, scaleType: 1 }], "\\u{1FBB6}": [{ type: 5, data: { d: "M0,0 L1,0 L1,.0625 L0,.0625 Z M0,.9375 L1,.9375 L1,1 L0,1 Z", type: 0 } }, { type: 5, data: { d: "M.85,.5 L.5,.35 L.5,.425 L.15,.425 L.15,.575 L.5,.575 L.5,.65 Z", type: 0 }, scaleType: 1 }], "\\u{1FBB7}": [{ type: 5, data: { d: "M.875,0 L1,0 L1,1 L.875,1 Z", type: 0 } }, { type: 5, data: { d: "M.5,.675 L.2,.5 L.35,.5 L.35,.325 L.65,.325 L.65,.5 L.8,.5 Z", type: 0 }, scaleType: 1 }], "\\u{1FBB8}": [{ type: 5, data: { d: "M.875,0 L1,0 L1,1 L.875,1 Z", type: 0 } }, { type: 5, data: { d: "M.5,.325 L.2,.5 L.35,.5 L.35,.675 L.65,.675 L.65,.5 L.8,.5 Z", type: 0 }, scaleType: 1 }], "\\u{1FBB9}": { type: 5, data: { d: "M1,.89 L.11,.89 L.11,.37 L.36,.12 L.74,.12 L.96,.34 L1,.34 L1,.405 L.92,.405 L.69,.185 L.41,.185 L.21,.42 L.21,.825 L1,.825 Z", type: 0 } }, "\\u{1FBBA}": { type: 5, data: { d: "M0,.89 L0,.825 L.78,.825 L.78,.53 L.7,.415 L0,.415 L0,.35 L.75,.35 L.88,.48 L.88,.89 Z", type: 0 } }, "\\u{1FBBB}": { type: 5, data: { d: "M.31,.275 L.44,.275 L.44,.47 L.05,.47 L.05,.405 L.31,.405 Z M.56,.275 L.69,.275 L.69,.405 L.95,.405 L.95,.47 L.56,.47 Z M.05,.53 L.44,.53 L.44,.725 L.31,.725 L.31,.595 L.05,.595 Z M.56,.53 L.95,.53 L.95,.595 L.69,.595 L.69,.725 L.56,.725 Z", type: 0 }, scaleType: 1 }, "\\u{1FBBC}": [{ type: 3, data: "M0,0 L1,0 L1,1 L0,1 L0,.935 L.885,.935 L.885,.065 L0,.065 Z" }, { type: 3, data: "M.67,.5 A.17,.085,0,1,1,.33,.5 A.17,.085,0,1,1,.67,.5", scaleType: 1 }], "\\u{1FBBD}": { type: 4, data: { d: "M0,0 L.5,.5 L1,0 L1,1 L.5,.5 L0,1 Z", type: 1 } }, "\\u{1FBBE}": { type: 4, data: { d: "M1,.5 L.5,1", type: 1 } }, "\\u{1FBBF}": { type: 4, data: { d: "M.5,0 L1,.5 L.5,1 L0,.5 Z", type: 1 } }, "\\u{1FBC0}": { type: 3, data: "M.16,.445 A.02,.01,0,0,1,.39,.33 L.5,.375 L.61,.33 A.02,.01,0,0,1,.84,.445 L.75,.5 L.84,.555 A.02,.01,0,0,1,.61,.67 L.5,.625 L.39,.67 A.02,.01,0,0,1,.16,.555 L.25,.5 Z M.24,.41 L.39,.5 L.24,.59 L.32,.63 L.5,.555 L.68,.63 L.76,.59 L.61,.5 L.76,.41 L.68,.37 L.5,.445 L.32,.37 Z", scaleType: 1 }, "\\u{1FBC1}": { type: 3, data: "M0.142308,0.924 Q0.130770,0.924,0.120193,0.922 T0.101924,0.916 T0.089424,0.9065 T0.084616,0.895 V0.025 Q0.084616,0.019,0.089424,0.0135 T0.101924,0.004 T0.120193,-0.002 T0.142308,-0.004 Q0.150000,-0.004,0.157693,-0.003 T0.173078,0.000 L0.430770,0.085 Q0.451924,0.059,0.494232,0.041 T0.587501,0.013 T0.692309,-0.0005 T0.800001,-0.004 H1 V0.055 H0.800001 Q0.771155,0.055,0.742309,0.056 T0.685578,0.060 T0.630770,0.0685 T0.580770,0.0825 T0.543270,0.1045 T0.528847,0.133 V0.647 H0.530770 Q0.596155,0.645,0.659616,0.638 T0.782693,0.6165 T0.893270,0.5805 T1,0.531 V0.623 Q0.934616,0.644,0.880770,0.6595 T0.769232,0.685 T0.650963,0.700 T0.528847,0.707 V0.787 Q0.528847,0.802,0.543270,0.8155 T0.580770,0.8375 T0.630770,0.8515 T0.685578,0.860 T0.742309,0.864 T0.800001,0.865 H1 V0.924 H0.800001 Q0.746155,0.924,0.692309,0.9205 T0.587501,0.907 T0.494232,0.879 T0.430770,0.835 L0.173078,0.920 Q0.165386,0.922,0.157693,0.923 T0.142308,0.924 Z M0.2,0.841 L0.415385,0.770 V0.150 L0.2,0.079 V0.841 Z M1,0.698 Q0.973077,0.694,0.969231,0.6885 T0.965385,0.677 Q0.965385,0.672,0.969231,0.6665 T1,0.657 V0.698 Z" }, "\\u{1FBC2}": { type: 3, data: "M0,0.623 V0.531 Q0.044231,0.512,0.0625,0.4905 T0.092308,0.4465 T0.108654,0.4005 T0.113462,0.354 V0.351 Q0.113462,0.345,0.117308,0.3395 T0.129808,0.3305 T0.148846,0.3245 T0.171154,0.323 H0.501923 Q0.532692,0.323,0.563462,0.3185 T0.617308,0.303 T0.651923,0.2765 T0.663462,0.2435 V0.241 Q0.663462,0.219,0.657692,0.197 T0.639423,0.1545 T0.604808,0.115 T0.549615,0.082 T0.475577,0.0615 T0.392308,0.055 H0 V-0.004 H1 V0.055 H0.667308 Q0.694231,0.071,0.713462,0.09 T0.746154,0.129 T0.766346,0.1705 T0.775,0.213 H1 V0.316 Q0.971154,0.305,0.955769,0.2965 T0.920192,0.2825 T0.876923,0.2745 T0.830769,0.272 H0.773077 Q0.767308,0.297,0.743269,0.319 T0.680769,0.355 T0.595192,0.375 T0.501923,0.381 H0.227308 Q0.223462,0.415,0.211,0.4485 T0.172692,0.5135 T0.108269,0.573 T0,0.623 Z M0.611538,0.924 H0 V0.865 H0.611538 Q0.642308,0.865,0.673077,0.8605 T0.727885,0.845 T0.762308,0.8185 T0.773077,0.787 V0.785 Q0.773077,0.769,0.762308,0.7535 T0.727885,0.727 T0.673077,0.7115 T0.611538,0.707 H0.059615 Q0.048077,0.707,0.037115,0.7045 T0,0.694 V0.653 Q0.026923,0.648,0.037115,0.646 T0.059615,0.644 H0.722692 Q0.753462,0.644,0.784231,0.6395 T0.839038,0.624 T0.873846,0.5975 T0.884615,0.566 V0.564 Q0.884615,0.548,0.873846,0.532 T0.839038,0.5055 T0.784231,0.49 T0.722692,0.4855 H0.392308 Q0.380769,0.4855,0.370192,0.483 T0.351923,0.4765 T0.339423,0.467 T0.334615,0.4555 T0.339423,0.444 T0.351923,0.4345 T0.370192,0.428 T0.392308,0.4255 H0.832692 Q0.855769,0.4255,0.878846,0.4235 T0.922115,0.416 T0.957692,0.4015 T1,0.3815 V0.4685 Q0.975,0.4705,0.966346,0.4725 T0.95,0.4765 Q0.961538,0.4835,0.969231,0.4915 T1,0.5075 V0.6205 Q0.965385,0.6455,0.926923,0.665 T0.84,0.6935 Q0.866923,0.7115,0.877596,0.7345 T0.894231,0.7855 V0.787 Q0.894231,0.815,0.876923,0.8425 T0.820192,0.8895 T0.726923,0.916 T0.611538,0.924 Z" }, "\\u{1FBC3}": { type: 3, data: "M0,0.473 V0.386 Q0.025490,0.378,0.028431,0.3695 T0.031373,0.352 V0.35 Q0.031373,0.342,0.028431,0.333 T0,0.316 V0.213 H0.652941 Q0.684314,0.213,0.715686,0.2085 T0.770588,0.193 T0.804902,0.1665 T0.815686,0.135 V0.133 Q0.815686,0.117,0.804902,0.101 T0.770588,0.0745 T0.715686,0.0595 T0.652941,0.055 H0 V-0.004 H0.652941 Q0.707843,-0.004,0.761765,0.004 T0.856863,0.031 T0.915686,0.0775 T0.933333,0.133 V0.135 Q0.933333,0.163,0.915686,0.1905 T0.856863,0.237 T0.761765,0.264 T0.652941,0.272 H0.109804 Q0.131373,0.29,0.140196,0.31 T0.149020,0.35 V0.352 Q0.149020,0.37,0.142157,0.388 T0.118627,0.4225 T0.076471,0.452 T0,0.473 Z M0,0.625 V0.513 Q0.029412,0.526,0.032353,0.54 T0.035294,0.568 V0.57 Q0.035294,0.584,0.032353,0.598 T0,0.625 Z" }, "\\u{1FBC4}": { type: 3, data: "M0.019231,1.085 V-0.165 H0.980769 V1.085 H0.019231 Z M0.446154,0.527 H0.553846 Q0.553846,0.511,0.5625,0.495 T0.591346,0.466 T0.631731,0.4405 T0.666346,0.4135 T0.688462,0.3825 T0.696154,0.35 Q0.696154,0.33,0.682692,0.311 T0.641346,0.2785 T0.575,0.259 T0.498077,0.253 T0.421154,0.259 T0.356731,0.279 T0.315385,0.3125 T0.301923,0.352 V0.357 H0.409615 V0.354 Q0.409615,0.345,0.414423,0.335 T0.431731,0.318 T0.4625,0.3075 T0.498077,0.304 Q0.517308,0.304,0.534615,0.307 T0.564423,0.3165 T0.582692,0.332 T0.588462,0.35 Q0.588462,0.366,0.572115,0.3805 T0.535577,0.4075 T0.496154,0.4335 T0.465385,0.4625 T0.45,0.4945 T0.446154,0.527 Z M0.5,0.667 Q0.519231,0.667,0.5375,0.664 T0.569231,0.654 T0.588462,0.637 T0.594231,0.617 T0.588462,0.5975 T0.569231,0.581 T0.5375,0.571 T0.5,0.568 T0.4625,0.571 T0.430769,0.581 T0.411538,0.5975 T0.405769,0.617 T0.411538,0.637 T0.430769,0.654 T0.4625,0.664 T0.5,0.667 Z", scaleType: 1 }, "\\u{1FBC5}": { type: 5, data: { d: "M.44,.425 L.44,.51 L.44,.56 L.19,.685 L.26,.72 L.5,.605 L.74,.72 L.81,.685 L.56,.56 L.56,.51 L.56,.425 Z M.17,.46 L.17,.51 L.83,.51 L.83,.46 Z M.67,.35 C.67,.303,.594,.265,.5,.265 C.406,.265,.33,.303,.33,.35 C.33,.397,.406,.435,.5,.435 C.594,.435,.67,.397,.67,.35 Z M.56,.35 C.56,.3665,.533,.38,.5,.38 C.467,.38,.44,.3665,.44,.35 C.44,.3335,.467,.32,.5,.32 C.533,.32,.56,.3335,.56,.35 Z", type: 0 }, scaleType: 1 }, "\\u{1FBC6}": { type: 5, data: { d: "M.44,.425 L.44,.46 L.23,.385 L.19,.43 L.44,.51 L.44,.56 L.29,.71 L.38,.735 L.5,.605 L.61,.735 L.7,.71 L.56,.56 L.56,.51 L.81,.43 L.77,.385 L.56,.46 L.56,.425 Z M.67,.35 C.67,.303,.594,.265,.5,.265 C.406,.265,.33,.303,.33,.35 C.33,.397,.406,.435,.5,.435 C.594,.435,.67,.397,.67,.35 Z M.56,.35 C.56,.3665,.533,.38,.5,.38 C.467,.38,.44,.3665,.44,.35 C.44,.3335,.467,.32,.5,.32 C.533,.32,.56,.3335,.56,.35 Z", type: 0 }, scaleType: 1 }, "\\u{1FBC7}": { type: 5, data: { d: "M.44,.425 L.44,.56 L.29,.71 L.38,.735 L.5,.605 L.74,.72 L.81,.685 L.56,.56 L.56,.425 Z M.18,.53 L.23,.575 L.81,.43 L.77,.385 Z M.67,.35 C.67,.303,.594,.265,.5,.265 C.406,.265,.33,.303,.33,.35 C.33,.397,.406,.435,.5,.435 C.594,.435,.67,.397,.67,.35 Z M.56,.35 C.56,.3665,.533,.38,.5,.38 C.467,.38,.44,.3665,.44,.35 C.44,.3335,.467,.32,.5,.32 C.533,.32,.56,.3335,.56,.35 Z", type: 0 }, scaleType: 1 }, "\\u{1FBC8}": { type: 5, data: { d: "M.44,.425 L.44,.56 L.19,.685 L.26,.72 L.5,.605 L.62,.735 L.71,.71 L.56,.56 L.56,.425 Z M.23,.385 L.18,.43 L.77,.575 L.81,.53 Z M.67,.35 C.67,.303,.594,.265,.5,.265 C.406,.265,.33,.303,.33,.35 C.33,.397,.406,.435,.5,.435 C.594,.435,.67,.397,.67,.35 Z M.56,.35 C.56,.3665,.533,.38,.5,.38 C.467,.38,.44,.3665,.44,.35 C.44,.3335,.467,.32,.5,.32 C.533,.32,.56,.3335,.56,.35 Z", type: 0 }, scaleType: 1 }, "\\u{1FBC9}": { type: 5, data: { d: "M.44,.425 L.45,.495 L.15,.645 L.34,.645 L.34,.7 L.44,.7 L.44,.645 L.56,.645 L.56,.7 L.66,.7 L.66,.645 L.84,.645 L.54,.495 L.56,.425 Z M.39,.6 L.5,.55 L.60,.6 Z M.17,.46 L.17,.51 L.83,.51 L.83,.46 Z M.67,.35 C.67,.303,.594,.265,.5,.265 C.406,.265,.33,.303,.33,.35 C.33,.397,.406,.435,.5,.435 C.594,.435,.67,.397,.67,.35 Z M.56,.35 C.56,.3665,.533,.38,.5,.38 C.467,.38,.44,.3665,.44,.35 C.44,.3335,.467,.32,.5,.32 C.533,.32,.56,.3335,.56,.35 Z", type: 0 }, scaleType: 1 }, "\\u{1FBCA}": { type: 5, data: { d: "M.26,.375 L.5,.255 L.74,.375 L.74,.665 L.5,.55 L.26,.665 Z M.37,.395 L.37,.54 L.5,.475 L.63,.54 L.63,.395 L.5,.33 Z", type: 0 }, scaleType: 1 }, "\\u{1FBCB}": { type: 5, data: { d: "M.09,.41 L.32,.295 L.5,.375 L.68,.295 L.91,.41 L.75,.5 L.91,.59 L.68,.705 L.5,.625 L.32,.705 L.09,.59 L.25,.5 Z M.24,.41 L.39,.5 L.24,.59 L.32,.63 L.5,.555 L.68,.63 L.76,.59 L.61,.5 L.76,.41 L.68,.37 L.5,.445 L.32,.37 Z", type: 0 }, scaleType: 1 }, "\\u{1FBCC}": { type: 5, data: { d: "M.55,.305 L.88,.305 L.88,.355 L.65,.355 L.65,.47 L.88,.47 L.88,.52 L.55,.52 Z", type: 0 }, scaleType: 1 }, "\\u{1FBCD}": { type: 5, data: { d: "M.38,.39 L.5,.33 L.62,.39 L.62,.53 L.5,.47 L.38,.53 Z", type: 0 }, scaleType: 1 }, "\\u{1FBCE}": { type: 3, data: "M0,0 L0.6667,0 L0.6667,1 L0,1 Z" }, "\\u{1FBCF}": { type: 3, data: "M0,0 L0.3333,0 L0.3333,1 L0,1 Z" }, "\\u{1FBD0}": { type: 2, data: "M1,.5 L0,1", strokeWidth: 1 }, "\\u{1FBD1}": { type: 2, data: "M1,0 L0,.5", strokeWidth: 1 }, "\\u{1FBD2}": { type: 2, data: "M0,0 L1,.5", strokeWidth: 1 }, "\\u{1FBD3}": { type: 2, data: "M0,.5 L1,1", strokeWidth: 1 }, "\\u{1FBD4}": { type: 2, data: "M0,0 L.5,1", strokeWidth: 1 }, "\\u{1FBD5}": { type: 2, data: "M.5,0 L1,1", strokeWidth: 1 }, "\\u{1FBD6}": { type: 2, data: "M1,0 L.5,1", strokeWidth: 1 }, "\\u{1FBD7}": { type: 2, data: "M.5,0 L0,1", strokeWidth: 1 }, "\\u{1FBD8}": { type: 2, data: "M0,0 L.5,.5 L1,0", strokeWidth: 1 }, "\\u{1FBD9}": { type: 2, data: "M1,0 L.5,.5 L1,1", strokeWidth: 1 }, "\\u{1FBDA}": { type: 2, data: "M0,1 L.5,.5 L1,1", strokeWidth: 1 }, "\\u{1FBDB}": { type: 2, data: "M0,0 L.5,.5 L0,1", strokeWidth: 1 }, "\\u{1FBDC}": { type: 2, data: "M0,0 L.5,1 L1,0", strokeWidth: 1 }, "\\u{1FBDD}": { type: 2, data: "M1,0 L0,.5 L1,1", strokeWidth: 1 }, "\\u{1FBDE}": { type: 2, data: "M0,1 L.5,0 L1,1", strokeWidth: 1 }, "\\u{1FBDF}": { type: 2, data: "M0,0 L1,.5 L0,1", strokeWidth: 1 }, "\\u{1FBE0}": { type: 5, data: { d: "M0,0 C0,.276,.224,.5,.5,.5 C.776,.5,1,.276,1,0", type: 1 } }, "\\u{1FBE1}": { type: 5, data: { d: "M1,0 C.724,0,.5,.224,.5,.5 C.5,.776,.724,1,1,1", type: 1 } }, "\\u{1FBE2}": { type: 5, data: { d: "M0,1 C0,.724,.224,.5,.5,.5 C.776,.5,1,.724,1,1", type: 1 } }, "\\u{1FBE3}": { type: 5, data: { d: "M0,0 C.276,0,.5,.224,.5,.5 C.5,.776,.276,1,0,1", type: 1 } }, "\\u{1FBE4}": { type: 0, data: [{ x: 2, y: 0, w: 4, h: 4 }] }, "\\u{1FBE5}": { type: 0, data: [{ x: 2, y: 4, w: 4, h: 4 }] }, "\\u{1FBE6}": { type: 0, data: [{ x: 0, y: 2, w: 4, h: 4 }] }, "\\u{1FBE7}": { type: 0, data: [{ x: 4, y: 2, w: 4, h: 4 }] }, "\\u{1FBE8}": { type: 5, data: { d: "M0,0 C0,.276,.224,.5,.5,.5 C.776,.5,1,.276,1,0 Z", type: 0 } }, "\\u{1FBE9}": { type: 5, data: { d: "M1,0 C.724,0,.5,.224,.5,.5 C.5,.776,.724,1,1,1 Z", type: 0 } }, "\\u{1FBEA}": { type: 5, data: { d: "M0,1 C0,.724,.224,.5,.5,.5 C.776,.5,1,.724,1,1 Z", type: 0 } }, "\\u{1FBEB}": { type: 5, data: { d: "M0,0 C.276,0,.5,.224,.5,.5 C.5,.776,.276,1,0,1 Z", type: 0 } }, "\\u{1FBEC}": { type: 5, data: { d: "M1,0 L.5,0 C.5,.276,.724,.5,1,.5 Z", type: 0 } }, "\\u{1FBED}": { type: 5, data: { d: "M0,1 L.5,1 C.5,.724,.276,.5,0,.5 Z", type: 0 } }, "\\u{1FBEE}": { type: 5, data: { d: "M1,1 L1,.5 C.724,.5,.5,.724,.5,1 Z", type: 0 } }, "\\u{1FBEF}": { type: 5, data: { d: "M0,0 L0,.5 C.276,.5,.5,.276,.5,0 Z", type: 0 } }, "\\u{1FBF0}": { type: 5, data: { d: a0(126), type: 0 }, scaleType: 1 }, "\\u{1FBF1}": { type: 5, data: { d: a0(48), type: 0 }, scaleType: 1 }, "\\u{1FBF2}": { type: 5, data: { d: a0(109), type: 0 }, scaleType: 1 }, "\\u{1FBF3}": { type: 5, data: { d: a0(121), type: 0 }, scaleType: 1 }, "\\u{1FBF4}": { type: 5, data: { d: a0(51), type: 0 }, scaleType: 1 }, "\\u{1FBF5}": { type: 5, data: { d: a0(91), type: 0 }, scaleType: 1 }, "\\u{1FBF6}": { type: 5, data: { d: a0(95), type: 0 }, scaleType: 1 }, "\\u{1FBF7}": { type: 5, data: { d: a0(114), type: 0 }, scaleType: 1 }, "\\u{1FBF8}": { type: 5, data: { d: a0(127), type: 0 }, scaleType: 1 }, "\\u{1FBF9}": { type: 5, data: { d: a0(123), type: 0 }, scaleType: 1 }, "\\u{1FBFA}": { type: 5, data: { d: "M.5,.175 C.2,.175,.15,.305,.15,.435 L.05,.63 L.35,.63 C.35,.682,.42,.76,.5,.76 C.58,.76,.65,.682,.65,.63 L.95,.63 L.85,.435 C.85,.305,.8,.175,.5,.175 Z", type: 0 }, scaleType: 1 }, ...Object.fromEntries(Array.from({ length: 256 }, (i5, e) => [String.fromCodePoint(10240 + e), { type: 6, data: e }])) };\n var Ye = /* @__PURE__ */ new Set([9617, 9618, 9619, 129932, 129933, 129934, 129935, 129936, 129937, 129938, 129940, 129948, 129949, 129950, 129951]);\n function f4(i5) {\n return { type: 2, data: () => {\n let e = [], r = [0.375, 0.25, 0.375], n11 = [0, 3 / 8, 5 / 8];\n for (let a2 = 0; a2 < 3; a2++) {\n let s4 = i5 >> a2 * 2 & 1, o2 = i5 >> a2 * 2 + 1 & 1;\n s4 && o2 ? e.push(`M0,${n11[a2]} L1,${n11[a2]} L1,${n11[a2] + r[a2]} L0,${n11[a2] + r[a2]} Z`) : s4 ? e.push(`M0,${n11[a2]} L${0.5},${n11[a2]} L${0.5},${n11[a2] + r[a2]} L0,${n11[a2] + r[a2]} Z`) : o2 && e.push(`M${0.5},${n11[a2]} L1,${n11[a2]} L1,${n11[a2] + r[a2]} L${0.5},${n11[a2] + r[a2]} Z`);\n }\n return e.join(" ");\n } };\n }\n function a0(i5) {\n let e = [];\n if (i5 & 64) {\n let Q3 = 0.21500000000000002, m4 = 0.95 - 0.15 - 0.015;\n e.push(`M${Q3},${0.2125} L${Q3 + 0.075},${0.175} L${m4 - 0.075},${0.175} L${m4},${0.2125} L${m4 - 0.075},${0.25} L${Q3 + 0.075},${0.25} Z`);\n }\n if (i5 & 32) {\n let u3 = 0.7999999999999999, p3 = 0.95 - 0.15 / 2, C4 = 0.95, Q3 = 0.175 + 0.075 + 0.015, m4 = 0.5 - 0.015;\n e.push(`M${p3},${Q3} L${C4},${Q3 + 0.0375} L${C4},${m4 - 0.0375} L${p3},${m4} L${u3},${m4 - 0.0375} L${u3},${Q3 + 0.0375} Z`);\n }\n if (i5 & 16) {\n let u3 = 0.7999999999999999, p3 = 0.95 - 0.15 / 2, C4 = 0.95, Q3 = 0.5 + 0.015, m4 = 0.825 - 0.075 - 0.015;\n e.push(`M${p3},${Q3} L${C4},${Q3 + 0.0375} L${C4},${m4 - 0.0375} L${p3},${m4} L${u3},${m4 - 0.0375} L${u3},${Q3 + 0.0375} Z`);\n }\n if (i5 & 8) {\n let Q3 = 0.21500000000000002, m4 = 0.95 - 0.15 - 0.015;\n e.push(`M${Q3},${0.7875} L${Q3 + 0.075},${0.75} L${m4 - 0.075},${0.75} L${m4},${0.7875} L${m4 - 0.075},${0.825} L${Q3 + 0.075},${0.825} Z`);\n }\n if (i5 & 4 && e.push(`M${0.125},${0.515} L${0.2},${0.515 + 0.0375} L${0.2},${0.735 - 0.0375} L${0.125},${0.735} L${0.05},${0.735 - 0.0375} L${0.05},${0.515 + 0.0375} Z`), i5 & 2 && e.push(`M${0.125},${0.265} L${0.2},${0.265 + 0.0375} L${0.2},${0.485 - 0.0375} L${0.125},${0.485} L${0.05},${0.485 - 0.0375} L${0.05},${0.265 + 0.0375} Z`), i5 & 1) {\n let Q3 = 0.21500000000000002, m4 = 0.95 - 0.15 - 0.015;\n e.push(`M${Q3},${0.5} L${Q3 + 0.075},${0.4625} L${m4 - 0.075},${0.4625} L${m4},${0.5} L${m4 - 0.075},${0.5375} L${Q3 + 0.075},${0.5375} Z`);\n }\n return e.join(" ");\n }\n var k3 = 0;\n var H3 = 0;\n var o0 = false;\n var d0 = false;\n var X0 = false;\n var K2;\n var w0 = 0;\n var Y0 = class {\n constructor(e, t, r, n11, a2, s4) {\n this._terminal = e;\n this._optionService = t;\n this._selectionRenderModel = r;\n this._decorationService = n11;\n this._coreBrowserService = a2;\n this._themeService = s4;\n this.result = { fg: 0, bg: 0, ext: 0 };\n }\n resolve(e, t, r, n11, a2) {\n this.result.bg = e.bg, this.result.fg = e.fg, this.result.ext = e.bg & 268435456 ? e.extended.ext : 0, H3 = 0, k3 = 0, d0 = false, o0 = false, X0 = false, K2 = this._themeService.colors, w0 = 0;\n let s4 = e.getCode();\n if (s4 !== 0 && e.extended.underlineStyle === 4) {\n let o2 = Math.max(1, Math.floor(this._optionService.rawOptions.fontSize * this._coreBrowserService.dpr / 15));\n w0 = t * n11 % (Math.round(o2) * 2);\n }\n if (w0 === 0 && Ye.has(s4) && (w0 = t * n11 % 2 * 2 + r * a2 % 2), this._decorationService.forEachDecorationAtCell(t, r, "bottom", (o2) => {\n o2.backgroundColorRGB && (H3 = o2.backgroundColorRGB.rgba >> 8 & 16777215, d0 = true), o2.foregroundColorRGB && (k3 = o2.foregroundColorRGB.rgba >> 8 & 16777215, o0 = true);\n }), X0 = this._selectionRenderModel.isCellSelected(this._terminal, t, r), X0) {\n if (this.result.fg & 67108864 || (this.result.bg & 50331648) !== 0) {\n if (this.result.fg & 67108864) switch (this.result.fg & 50331648) {\n case 16777216:\n case 33554432:\n H3 = this._themeService.colors.ansi[this.result.fg & 255].rgba;\n break;\n case 50331648:\n H3 = (this.result.fg & 16777215) << 8 | 255;\n break;\n case 0:\n default:\n H3 = this._themeService.colors.foreground.rgba;\n }\n else switch (this.result.bg & 50331648) {\n case 16777216:\n case 33554432:\n H3 = this._themeService.colors.ansi[this.result.bg & 255].rgba;\n break;\n case 50331648:\n H3 = (this.result.bg & 16777215) << 8 | 255;\n break;\n }\n H3 = h0.blend(H3, (this._coreBrowserService.isFocused ? K2.selectionBackgroundOpaque : K2.selectionInactiveBackgroundOpaque).rgba & 4294967040 | 128) >> 8 & 16777215;\n } else H3 = (this._coreBrowserService.isFocused ? K2.selectionBackgroundOpaque : K2.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;\n if (d0 = true, K2.selectionForeground && (k3 = K2.selectionForeground.rgba >> 8 & 16777215, o0 = true), z0(e.getCode())) {\n if (this.result.fg & 67108864 && (this.result.bg & 50331648) === 0) k3 = (this._coreBrowserService.isFocused ? K2.selectionBackgroundOpaque : K2.selectionInactiveBackgroundOpaque).rgba >> 8 & 16777215;\n else {\n if (this.result.fg & 67108864) switch (this.result.bg & 50331648) {\n case 16777216:\n case 33554432:\n k3 = this._themeService.colors.ansi[this.result.bg & 255].rgba;\n break;\n case 50331648:\n k3 = (this.result.bg & 16777215) << 8 | 255;\n break;\n }\n else switch (this.result.fg & 50331648) {\n case 16777216:\n case 33554432:\n k3 = this._themeService.colors.ansi[this.result.fg & 255].rgba;\n break;\n case 50331648:\n k3 = (this.result.fg & 16777215) << 8 | 255;\n break;\n case 0:\n default:\n k3 = this._themeService.colors.foreground.rgba;\n }\n k3 = h0.blend(k3, (this._coreBrowserService.isFocused ? K2.selectionBackgroundOpaque : K2.selectionInactiveBackgroundOpaque).rgba & 4294967040 | 128) >> 8 & 16777215;\n }\n o0 = true;\n }\n }\n this._decorationService.forEachDecorationAtCell(t, r, "top", (o2) => {\n o2.backgroundColorRGB && (H3 = o2.backgroundColorRGB.rgba >> 8 & 16777215, d0 = true), o2.foregroundColorRGB && (k3 = o2.foregroundColorRGB.rgba >> 8 & 16777215, o0 = true);\n }), d0 && (X0 ? H3 = e.bg & -16777216 & -134217729 | H3 | 50331648 : H3 = e.bg & -16777216 | H3 | 50331648), o0 && (k3 = e.fg & -16777216 & -67108865 | k3 | 50331648), this.result.fg & 67108864 && (d0 && !o0 && ((this.result.bg & 50331648) === 0 ? k3 = this.result.fg & -134217728 | K2.background.rgba >> 8 & 16777215 & 16777215 | 50331648 : k3 = this.result.fg & -134217728 | this.result.bg & 67108863, o0 = true), !d0 && o0 && ((this.result.fg & 50331648) === 0 ? H3 = this.result.bg & -67108864 | K2.foreground.rgba >> 8 & 16777215 & 16777215 | 50331648 : H3 = this.result.bg & -67108864 | this.result.fg & 67108863, d0 = true)), K2 = void 0, this.result.bg = d0 ? H3 : this.result.bg, this.result.fg = o0 ? k3 : this.result.fg, this.result.ext &= 536870911, this.result.ext |= w0 << 29 & 3758096384;\n }\n };\n var je2 = 0.5;\n var q0 = Ue2 || We2 ? "bottom" : "ideographic";\n function it2(i5, e, t, r, n11, a2, s4, o2, l4, T4, h3, d3 = 0) {\n let _5 = Xe2[e];\n if (_5) {\n let c2 = Array.isArray(_5) ? _5 : [_5];\n for (let u3 of c2) Zt(i5, u3, t, r, n11, a2, s4, o2, l4, T4, h3, d3);\n return true;\n }\n return false;\n }\n function Zt(i5, e, t, r, n11, a2, s4, o2, l4, T4, h3, d3 = 0) {\n let _5 = n11, c2 = a2, u3 = t, p3 = r;\n switch (e.scaleType === 1 && (_5 = s4, c2 = o2, u3 = t + (n11 - s4) / 2, p3 = r + (a2 - o2) / 2), e.clipPath && (i5.save(), Xt(i5, e.clipPath, u3, p3, _5, c2)), e.type) {\n case 0:\n Ut(i5, e.data, u3, p3, _5, c2);\n break;\n case 1:\n Kt(i5, e.data, u3, p3, _5, c2, d3);\n break;\n case 2:\n zt(i5, e.data, u3, p3, _5, c2, T4, e.strokeWidth);\n break;\n case 3:\n Vt(i5, e.data, u3, p3, _5, c2, T4, e.strokeWidth);\n break;\n case 4:\n Gt(i5, e.data, u3, p3, _5, c2, T4, h3);\n break;\n case 5:\n Yt(i5, e.data, u3, p3, _5, c2, l4, T4);\n break;\n case 6:\n Wt(i5, e.data, u3, p3, _5, c2);\n break;\n }\n e.clipPath && i5.restore();\n }\n function Ut(i5, e, t, r, n11, a2) {\n for (let s4 = 0; s4 < e.length; s4++) {\n let o2 = e[s4], l4 = n11 / 8, T4 = a2 / 8;\n i5.fillRect(t + o2.x * l4, r + o2.y * T4, o2.w * l4, o2.h * T4);\n }\n }\n var Je2 = new Uint8Array([1, 0, 1, 2, 1, 4, 5, 0, 5, 2, 5, 4, 1, 6, 5, 6]);\n function Wt(i5, e, t, r, n11, a2) {\n let s4 = n11 / 8, o2 = a2 * 0.1, T4 = a2 * 0.8 / 8, h3 = Math.min(s4, T4);\n for (let d3 = 0; d3 < 8; d3++) if (e & 1 << d3) {\n let _5 = Je2[d3 * 2], c2 = Je2[d3 * 2 + 1], u3 = t + (_5 + 1) * s4, p3 = r + o2 + (c2 + 1) * T4;\n i5.beginPath(), i5.arc(u3, p3, h3, 0, Math.PI * 2), i5.fill();\n }\n }\n function Vt(i5, e, t, r, n11, a2, s4, o2) {\n let l4 = typeof e == "string" ? e : e(0, 0);\n i5.beginPath();\n let T4 = 0, h3 = 0, d3 = 0, _5 = 0, c2 = "";\n for (let u3 of l4.split(" ")) {\n let p3 = u3[0], C4 = u3.substring(1).split(",");\n if (p3 === "Z") {\n i5.closePath(), c2 = p3;\n continue;\n }\n if (p3 === "V") {\n let m4 = r + parseFloat(C4[0]) * a2;\n i5.lineTo(T4, m4), h3 = m4, d3 = T4, _5 = h3, c2 = p3;\n continue;\n }\n if (p3 === "H") {\n let m4 = t + parseFloat(C4[0]) * n11;\n i5.lineTo(m4, h3), T4 = m4, d3 = T4, _5 = h3, c2 = p3;\n continue;\n }\n if (!C4[0] || !C4[1]) continue;\n if (p3 === "A") {\n let m4 = parseFloat(C4[0]) * n11, R4 = parseFloat(C4[1]) * a2, F4 = parseFloat(C4[2]) * Math.PI / 180, b4 = parseInt(C4[3]), A4 = parseInt(C4[4]), X3 = t + parseFloat(C4[5]) * n11, z4 = r + parseFloat(C4[6]) * a2;\n $t(i5, T4, h3, m4, R4, F4, b4, A4, X3, z4), T4 = X3, h3 = z4;\n continue;\n }\n let Q3 = C4.map((m4, R4) => {\n let F4 = parseFloat(m4);\n return R4 % 2 === 0 ? t + F4 * n11 : r + F4 * a2;\n });\n if (p3 === "M") i5.moveTo(Q3[0], Q3[1]), T4 = Q3[0], h3 = Q3[1], d3 = T4, _5 = h3;\n else if (p3 === "L") i5.lineTo(Q3[0], Q3[1]), T4 = Q3[0], h3 = Q3[1], d3 = T4, _5 = h3;\n else if (p3 === "Q") i5.quadraticCurveTo(Q3[0], Q3[1], Q3[2], Q3[3]), d3 = Q3[0], _5 = Q3[1], T4 = Q3[2], h3 = Q3[3];\n else if (p3 === "T") {\n let m4, R4;\n c2 === "Q" || c2 === "T" ? (m4 = 2 * T4 - d3, R4 = 2 * h3 - _5) : (m4 = T4, R4 = h3), i5.quadraticCurveTo(m4, R4, Q3[0], Q3[1]), d3 = m4, _5 = R4, T4 = Q3[0], h3 = Q3[1];\n } else p3 === "C" && (i5.bezierCurveTo(Q3[0], Q3[1], Q3[2], Q3[3], Q3[4], Q3[5]), d3 = Q3[2], _5 = Q3[3], T4 = Q3[4], h3 = Q3[5]);\n c2 = p3;\n }\n o2 !== void 0 ? (i5.strokeStyle = i5.fillStyle, i5.lineWidth = s4 * o2, i5.stroke()) : i5.fill();\n }\n function $t(i5, e, t, r, n11, a2, s4, o2, l4, T4) {\n if (r === 0 || n11 === 0) {\n i5.lineTo(l4, T4);\n return;\n }\n r = Math.abs(r), n11 = Math.abs(n11);\n let h3 = Math.cos(a2), d3 = Math.sin(a2), _5 = (e - l4) / 2, c2 = (t - T4) / 2, u3 = h3 * _5 + d3 * c2, p3 = -d3 * _5 + h3 * c2, C4 = r * r, Q3 = n11 * n11, m4 = u3 * u3, R4 = p3 * p3, F4 = m4 / C4 + R4 / Q3;\n if (F4 > 1) {\n let I4 = Math.sqrt(F4);\n r *= I4, n11 *= I4, C4 = r * r, Q3 = n11 * n11;\n }\n let b4 = (C4 * Q3 - C4 * R4 - Q3 * m4) / (C4 * R4 + Q3 * m4);\n b4 < 0 && (b4 = 0);\n let A4 = (s4 === o2 ? -1 : 1) * Math.sqrt(b4), X3 = A4 * (r * p3 / n11), z4 = A4 * -(n11 * u3 / r), x0 = h3 * X3 - d3 * z4 + (e + l4) / 2, e0 = d3 * X3 + h3 * z4 + (t + T4) / 2, T0 = (u3 - X3) / r, M4 = (p3 - z4) / n11, l0 = (-u3 - X3) / r, t0 = (-p3 - z4) / n11, Y2 = Math.atan2(M4, T0), n0 = Math.atan2(t0, l0) - Y2;\n o2 === 0 && n0 > 0 ? n0 -= 2 * Math.PI : o2 === 1 && n0 < 0 && (n0 += 2 * Math.PI);\n let D0 = Y2 + n0;\n i5.ellipse(x0, e0, r, n11, a2, Y2, D0, o2 === 0);\n }\n function Gt(i5, e, t, r, n11, a2, s4, o2) {\n i5.save(), i5.fillRect(t, r, n11, a2), o2 && (i5.fillStyle = o2, i5.strokeStyle = o2), i5.lineWidth = s4, i5.lineCap = "square", i5.beginPath();\n for (let l4 of e.d.split(" ")) {\n let T4 = l4[0], h3 = l4.substring(1).split(",");\n if (!h3[0] || !h3[1]) {\n T4 === "Z" && i5.closePath();\n continue;\n }\n let d3 = h3.map((_5, c2) => {\n let u3 = parseFloat(_5);\n return c2 % 2 === 0 ? t + u3 * n11 : r + u3 * a2;\n });\n T4 === "M" ? i5.moveTo(d3[0], d3[1]) : T4 === "L" && i5.lineTo(d3[0], d3[1]);\n }\n e.type === 1 ? i5.stroke() : i5.fill(), i5.restore();\n }\n var et = /* @__PURE__ */ new Map();\n function Kt(i5, e, t, r, n11, a2, s4 = 0) {\n let o2 = et.get(e);\n o2 || (o2 = /* @__PURE__ */ new Map(), et.set(e, o2));\n let l4 = i5.fillStyle;\n if (typeof l4 != "string") throw new Error(`Unexpected fillStyle type "${l4}"`);\n let T4 = o2.get(l4);\n if (!T4) {\n let _5 = e[0].length, c2 = e.length, u3 = i5.canvas.ownerDocument.createElement("canvas");\n u3.width = _5, u3.height = c2;\n let p3 = y3(u3.getContext("2d")), C4 = new ImageData(_5, c2), Q3, m4, R4, F4;\n if (l4.startsWith("#")) Q3 = parseInt(l4.slice(1, 3), 16), m4 = parseInt(l4.slice(3, 5), 16), R4 = parseInt(l4.slice(5, 7), 16), F4 = l4.length > 7 && parseInt(l4.slice(7, 9), 16) || 1;\n else if (l4.startsWith("rgba")) [Q3, m4, R4, F4] = l4.substring(5, l4.length - 1).split(",").map((b4) => parseFloat(b4));\n else throw new Error(`Unexpected fillStyle color format "${l4}" when drawing pattern glyph`);\n for (let b4 = 0; b4 < c2; b4++) for (let A4 = 0; A4 < _5; A4++) C4.data[(b4 * _5 + A4) * 4] = Q3, C4.data[(b4 * _5 + A4) * 4 + 1] = m4, C4.data[(b4 * _5 + A4) * 4 + 2] = R4, C4.data[(b4 * _5 + A4) * 4 + 3] = e[b4][A4] * (F4 * 255);\n p3.putImageData(C4, 0, 0), T4 = y3(i5.createPattern(u3, null)), o2.set(l4, T4);\n }\n let h3 = s4 >> 1 & 1, d3 = s4 & 1;\n h3 !== 0 || d3 !== 0 ? T4.setTransform(new DOMMatrix().translateSelf(-h3, -d3)) : T4.setTransform(new DOMMatrix()), i5.fillStyle = T4, i5.fillRect(t, r, n11, a2);\n }\n function zt(i5, e, t, r, n11, a2, s4, o2) {\n i5.save(), i5.beginPath(), i5.rect(t, r, n11, a2), i5.clip(), i5.beginPath();\n let l4;\n if (typeof e == "function") {\n let d3 = 0.15 / a2 * n11;\n l4 = e(0.15, d3);\n } else l4 = e;\n let T4 = { currentX: 0, currentY: 0, lastControlX: 0, lastControlY: 0, lastCommand: "" };\n for (let h3 of l4.split(" ")) {\n let d3 = h3[0];\n if (d3 === "Z") {\n i5.closePath(), T4.lastCommand = d3;\n continue;\n }\n let _5 = rt2[d3];\n if (!_5) {\n console.error(`Could not find drawing instructions for "${d3}"`);\n continue;\n }\n let c2 = h3.substring(1).split(",");\n !c2[0] || !c2[1] || (_5(i5, st2(c2, n11, a2, t, r, true, s4, 0, 0, false), T4), T4.lastCommand = d3);\n }\n o2 !== void 0 ? (i5.strokeStyle = i5.fillStyle, i5.lineWidth = s4 * o2, i5.stroke()) : i5.fill(), i5.closePath(), i5.restore();\n }\n function Xt(i5, e, t, r, n11, a2) {\n i5.beginPath();\n for (let s4 of e.split(" ")) {\n let o2 = s4[0];\n if (o2 === "Z") {\n i5.closePath();\n continue;\n }\n let l4 = s4.substring(1).split(",");\n if (!l4[0] || !l4[1]) continue;\n let T4 = t + parseFloat(l4[0]) * n11, h3 = r + parseFloat(l4[1]) * a2;\n o2 === "M" ? i5.moveTo(T4, h3) : o2 === "L" && i5.lineTo(T4, h3);\n }\n i5.clip();\n }\n function Yt(i5, e, t, r, n11, a2, s4, o2) {\n let l4 = new Path2D();\n l4.rect(t, r, n11, a2), i5.clip(l4), i5.beginPath();\n let T4 = s4 / 12;\n i5.lineWidth = o2 * T4;\n let h3 = { currentX: 0, currentY: 0, lastControlX: 0, lastControlY: 0, lastCommand: "" };\n for (let d3 of e.d.split(" ")) {\n let _5 = d3[0];\n if (_5 === "Z") {\n i5.closePath(), h3.lastCommand = _5;\n continue;\n }\n let c2 = rt2[_5];\n if (!c2) {\n console.error(`Could not find drawing instructions for "${_5}"`);\n continue;\n }\n let u3 = d3.substring(1).split(",");\n !u3[0] || !u3[1] || (c2(i5, st2(u3, n11, a2, t, r, false, o2, (e.leftPadding ?? 0) * (T4 / 2), (e.rightPadding ?? 0) * (T4 / 2)), h3), h3.lastCommand = _5);\n }\n e.type === 1 ? (i5.strokeStyle = i5.fillStyle, i5.stroke()) : i5.fill(), i5.closePath();\n }\n function tt(i5, e, t = 0) {\n return Math.max(Math.min(i5, e), t);\n }\n var rt2 = { C: (i5, e, t) => {\n i5.bezierCurveTo(e[0], e[1], e[2], e[3], e[4], e[5]), t.lastControlX = e[2], t.lastControlY = e[3], t.currentX = e[4], t.currentY = e[5];\n }, L: (i5, e, t) => {\n i5.lineTo(e[0], e[1]), t.lastControlX = t.currentX = e[0], t.lastControlY = t.currentY = e[1];\n }, M: (i5, e, t) => {\n i5.moveTo(e[0], e[1]), t.lastControlX = t.currentX = e[0], t.lastControlY = t.currentY = e[1];\n }, Q: (i5, e, t) => {\n i5.quadraticCurveTo(e[0], e[1], e[2], e[3]), t.lastControlX = e[0], t.lastControlY = e[1], t.currentX = e[2], t.currentY = e[3];\n }, T: (i5, e, t) => {\n let r, n11;\n t.lastCommand === "Q" || t.lastCommand === "T" ? (r = 2 * t.currentX - t.lastControlX, n11 = 2 * t.currentY - t.lastControlY) : (r = t.currentX, n11 = t.currentY), i5.quadraticCurveTo(r, n11, e[0], e[1]), t.lastControlX = r, t.lastControlY = n11, t.currentX = e[0], t.currentY = e[1];\n } };\n function st2(i5, e, t, r, n11, a2, s4, o2 = 0, l4 = 0, T4 = true) {\n let h3 = i5.map((d3) => parseFloat(d3) || parseInt(d3));\n if (h3.length < 2) throw new Error("Too few arguments for instruction");\n for (let d3 = 0; d3 < h3.length; d3 += 2) {\n if (h3[d3] *= e - o2 * s4 - l4 * s4, a2 && h3[d3] !== 0) {\n let _5 = Math.round(h3[d3] + 0.5) - 0.5;\n h3[d3] = T4 ? tt(_5, e, 0) : _5;\n }\n h3[d3] += r + o2 * s4;\n }\n for (let d3 = 1; d3 < h3.length; d3 += 2) {\n if (h3[d3] *= t, a2 && h3[d3] !== 0) {\n let _5 = Math.round(h3[d3] + 0.5) - 0.5;\n h3[d3] = T4 ? tt(_5, t, 0) : _5;\n }\n h3[d3] += n11;\n }\n return h3;\n }\n var j0 = class {\n constructor() {\n this._data = {};\n }\n set(e, t, r) {\n this._data[e] || (this._data[e] = {}), this._data[e][t] = r;\n }\n get(e, t) {\n return this._data[e] ? this._data[e][t] : void 0;\n }\n clear() {\n this._data = {};\n }\n };\n var k0 = class {\n constructor() {\n this._data = new j0();\n }\n set(e, t, r, n11, a2) {\n this._data.get(e, t) || this._data.set(e, t, new j0()), this._data.get(e, t).set(r, n11, a2);\n }\n get(e, t, r, n11) {\n return this._data.get(e, t)?.get(r, n11);\n }\n clear() {\n this._data.clear();\n }\n };\n var J0 = class {\n constructor(e) {\n this._tasks = [];\n this._i = 0;\n this._logService = e;\n }\n enqueue(e) {\n this._tasks.push(e), this._start();\n }\n flush() {\n for (; this._i < this._tasks.length; ) this._tasks[this._i]() || this._i++;\n this.clear();\n }\n clear() {\n this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0;\n }\n _start() {\n this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this)));\n }\n _process(e) {\n this._idleCallback = void 0;\n let t = 0, r = 0, n11 = e.timeRemaining(), a2 = 0;\n for (; this._i < this._tasks.length; ) {\n if (t = performance.now(), this._tasks[this._i]() || this._i++, t = Math.max(1, performance.now() - t), r = Math.max(t, r), a2 = e.timeRemaining(), r * 1.5 > a2) {\n n11 - t < -20 && this._logService.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(n11 - t))}ms`), this._start();\n return;\n }\n n11 = a2;\n }\n this.clear();\n }\n };\n var be2 = class extends J0 {\n _requestCallback(e) {\n return setTimeout(() => e(this._createDeadline(16)));\n }\n _cancelCallback(e) {\n clearTimeout(e);\n }\n _createDeadline(e) {\n let t = performance.now() + e;\n return { timeRemaining: () => Math.max(0, t - performance.now()) };\n }\n };\n var ve = class extends J0 {\n _requestCallback(e) {\n return requestIdleCallback(e);\n }\n _cancelCallback(e) {\n cancelIdleCallback(e);\n }\n };\n var nt2 = "requestIdleCallback" in globalThis ? ve : be2;\n var s0 = class i {\n constructor() {\n this.fg = 0;\n this.bg = 0;\n this.extended = new Z0();\n }\n static toColorRGB(e) {\n return [e >>> 16 & 255, e >>> 8 & 255, e & 255];\n }\n static fromColorRGB(e) {\n return (e[0] & 255) << 16 | (e[1] & 255) << 8 | e[2] & 255;\n }\n clone() {\n let e = new i();\n return e.fg = this.fg, e.bg = this.bg, e.extended = this.extended.clone(), e;\n }\n isInverse() {\n return this.fg & 67108864;\n }\n isBold() {\n return this.fg & 134217728;\n }\n isUnderline() {\n return this.hasExtendedAttrs() && this.extended.underlineStyle !== 0 ? 1 : this.fg & 268435456;\n }\n isBlink() {\n return this.fg & 536870912;\n }\n isInvisible() {\n return this.fg & 1073741824;\n }\n isItalic() {\n return this.bg & 67108864;\n }\n isDim() {\n return this.bg & 134217728;\n }\n isStrikethrough() {\n return this.fg & 2147483648;\n }\n isProtected() {\n return this.bg & 536870912;\n }\n isOverline() {\n return this.bg & 1073741824;\n }\n getFgColorMode() {\n return this.fg & 50331648;\n }\n getBgColorMode() {\n return this.bg & 50331648;\n }\n isFgRGB() {\n return (this.fg & 50331648) === 50331648;\n }\n isBgRGB() {\n return (this.bg & 50331648) === 50331648;\n }\n isFgPalette() {\n return (this.fg & 50331648) === 16777216 || (this.fg & 50331648) === 33554432;\n }\n isBgPalette() {\n return (this.bg & 50331648) === 16777216 || (this.bg & 50331648) === 33554432;\n }\n isFgDefault() {\n return (this.fg & 50331648) === 0;\n }\n isBgDefault() {\n return (this.bg & 50331648) === 0;\n }\n isAttributeDefault() {\n return this.fg === 0 && this.bg === 0;\n }\n getFgColor() {\n switch (this.fg & 50331648) {\n case 16777216:\n case 33554432:\n return this.fg & 255;\n case 50331648:\n return this.fg & 16777215;\n default:\n return -1;\n }\n }\n getBgColor() {\n switch (this.bg & 50331648) {\n case 16777216:\n case 33554432:\n return this.bg & 255;\n case 50331648:\n return this.bg & 16777215;\n default:\n return -1;\n }\n }\n hasExtendedAttrs() {\n return this.bg & 268435456;\n }\n updateExtended() {\n this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456;\n }\n getUnderlineColor() {\n if (this.bg & 268435456 && ~this.extended.underlineColor) switch (this.extended.underlineColor & 50331648) {\n case 16777216:\n case 33554432:\n return this.extended.underlineColor & 255;\n case 50331648:\n return this.extended.underlineColor & 16777215;\n default:\n return this.getFgColor();\n }\n return this.getFgColor();\n }\n getUnderlineColorMode() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? this.extended.underlineColor & 50331648 : this.getFgColorMode();\n }\n isUnderlineColorRGB() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 50331648 : this.isFgRGB();\n }\n isUnderlineColorPalette() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 16777216 || (this.extended.underlineColor & 50331648) === 33554432 : this.isFgPalette();\n }\n isUnderlineColorDefault() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 0 : this.isFgDefault();\n }\n getUnderlineStyle() {\n return this.fg & 268435456 ? this.bg & 268435456 ? this.extended.underlineStyle : 1 : 0;\n }\n getUnderlineVariantOffset() {\n return this.extended.underlineVariantOffset;\n }\n };\n var Z0 = class i2 {\n constructor(e = 0, t = 0) {\n this._ext = 0;\n this._urlId = 0;\n this._ext = e, this._urlId = t;\n }\n get ext() {\n return this._urlId ? this._ext & -469762049 | this.underlineStyle << 26 : this._ext;\n }\n set ext(e) {\n this._ext = e;\n }\n get underlineStyle() {\n return this._urlId ? 5 : (this._ext & 469762048) >> 26;\n }\n set underlineStyle(e) {\n this._ext &= -469762049, this._ext |= e << 26 & 469762048;\n }\n get underlineColor() {\n return this._ext & 67108863;\n }\n set underlineColor(e) {\n this._ext &= -67108864, this._ext |= e & 67108863;\n }\n get urlId() {\n return this._urlId;\n }\n set urlId(e) {\n this._urlId = e;\n }\n get underlineVariantOffset() {\n let e = (this._ext & 3758096384) >> 29;\n return e < 0 ? e ^ 4294967288 : e;\n }\n set underlineVariantOffset(e) {\n this._ext &= 536870911, this._ext |= e << 29 & 3758096384;\n }\n clone() {\n return new i2(this._ext, this._urlId);\n }\n isEmpty() {\n return this.underlineStyle === 0 && this._urlId === 0;\n }\n };\n var U4 = class {\n constructor() {\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n return this._event ? this._event : (this._event = (e, t, r) => {\n if (this._disposed) return g4(() => {\n });\n let n11 = { fn: e, thisArgs: t };\n this._listeners.push(n11);\n let a2 = g4(() => {\n let s4 = this._listeners.indexOf(n11);\n s4 !== -1 && this._listeners.splice(s4, 1);\n });\n return r && (Array.isArray(r) ? r.push(a2) : r.add(a2)), a2;\n }, this._event);\n }\n fire(e) {\n if (!this._disposed) switch (this._listeners.length) {\n case 0:\n return;\n case 1: {\n let { fn: t, thisArgs: r } = this._listeners[0];\n t.call(r, e);\n return;\n }\n default: {\n let t = this._listeners.slice();\n for (let { fn: r, thisArgs: n11 } of t) r.call(n11, e);\n }\n }\n }\n dispose() {\n this._disposed || (this._disposed = true, this._listeners.length = 0);\n }\n };\n var _0;\n ((n11) => {\n function i5(a2, s4) {\n return a2((o2) => s4.fire(o2));\n }\n n11.forward = i5;\n function e(a2, s4) {\n return (o2, l4, T4) => a2((h3) => o2.call(l4, s4(h3)), void 0, T4);\n }\n n11.map = e;\n function t(...a2) {\n return (s4, o2, l4) => {\n let T4 = new B0();\n for (let h3 of a2) T4.add(h3((d3) => s4.call(o2, d3)));\n return l4 && (Array.isArray(l4) ? l4.push(T4) : l4.add(T4)), T4;\n };\n }\n n11.any = t;\n function r(a2, s4, o2) {\n return s4(o2), a2((l4) => s4(l4));\n }\n n11.runAndSubscribe = r;\n })(_0 ||= {});\n var at2 = { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, offset: { x: 0, y: 0 }, size: { x: 0, y: 0 }, sizeClipSpace: { x: 0, y: 0 } };\n var U0 = 2;\n var W0;\n var j3 = class i3 {\n constructor(e, t, r, n11) {\n this._document = e;\n this._config = t;\n this._unicodeService = r;\n this._logService = n11;\n this._didWarmUp = false;\n this._cacheMap = new k0();\n this._cacheMapCombined = new k0();\n this._pages = [];\n this._activePages = [];\n this._workBoundingBox = { top: 0, left: 0, bottom: 0, right: 0 };\n this._workAttributeData = new s0();\n this._textureSize = 512;\n this._onAddTextureAtlasCanvas = new U4();\n this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event;\n this._onRemoveTextureAtlasCanvas = new U4();\n this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event;\n this._requestClearModel = false;\n this._createNewPage(), this._tmpCanvas = ot2(e, this._config.deviceCellWidth * 4 + U0 * 2, this._config.deviceCellHeight + U0 * 2), this._tmpCtx = y3(this._tmpCanvas.getContext("2d", { alpha: this._config.allowTransparency, willReadFrequently: true }));\n }\n get pages() {\n return this._pages;\n }\n dispose() {\n this._tmpCanvas.remove();\n for (let e of this.pages) e.canvas.remove();\n this._onAddTextureAtlasCanvas.dispose();\n }\n warmUp() {\n this._didWarmUp || (this._doWarmUp(), this._didWarmUp = true);\n }\n _doWarmUp() {\n let e = new nt2(this._logService);\n for (let t = 33; t < 126; t++) e.enqueue(() => {\n if (!this._cacheMap.get(t, 0, 0, 0)) {\n let r = this._drawToCache(t, 0, 0, 0, false, void 0);\n this._cacheMap.set(t, 0, 0, 0, r);\n }\n });\n }\n beginFrame() {\n return this._requestClearModel;\n }\n clearTexture() {\n if (!(this._pages[0].currentRow.x === 0 && this._pages[0].currentRow.y === 0)) {\n for (let e of this._pages) e.clear();\n this._cacheMap.clear(), this._cacheMapCombined.clear(), this._didWarmUp = false;\n }\n }\n _createNewPage() {\n if (i3.maxAtlasPages && this._pages.length >= Math.max(4, i3.maxAtlasPages)) {\n let t = this._pages.filter((T4) => T4.canvas.width * 2 <= (i3.maxTextureSize || 4096)).sort((T4, h3) => h3.canvas.width !== T4.canvas.width ? h3.canvas.width - T4.canvas.width : h3.percentageUsed - T4.percentageUsed), r = -1, n11 = 0;\n for (let T4 = 0; T4 < t.length; T4++) if (t[T4].canvas.width !== n11) r = T4, n11 = t[T4].canvas.width;\n else if (T4 - r === 3) break;\n let a2 = t.slice(r, r + 4);\n if (a2.length < 4 || a2.some((T4) => T4.canvas.width !== a2[0].canvas.width)) {\n let T4 = new M0(this._document, this._textureSize);\n return this._pages.push(T4), this._activePages.push(T4), this._onAddTextureAtlasCanvas.fire(T4.canvas), T4;\n }\n let s4 = a2.map((T4) => T4.glyphs[0].texturePage).sort((T4, h3) => T4 > h3 ? 1 : -1), o2 = this.pages.length - a2.length, l4 = this._mergePages(a2, o2);\n l4.version++;\n for (let T4 = s4.length - 1; T4 >= 0; T4--) this._deletePage(s4[T4]);\n this.pages.push(l4), this._requestClearModel = true, this._onAddTextureAtlasCanvas.fire(l4.canvas);\n }\n let e = new M0(this._document, this._textureSize);\n return this._pages.push(e), this._activePages.push(e), this._onAddTextureAtlasCanvas.fire(e.canvas), e;\n }\n _mergePages(e, t) {\n let r = e[0].canvas.width * 2, n11 = new M0(this._document, r, e);\n for (let [a2, s4] of e.entries()) {\n let o2 = a2 * s4.canvas.width % r, l4 = Math.floor(a2 / 2) * s4.canvas.height;\n n11.ctx.drawImage(s4.canvas, o2, l4);\n for (let h3 of s4.glyphs) h3.texturePage = t, h3.sizeClipSpace.x = h3.size.x / r, h3.sizeClipSpace.y = h3.size.y / r, h3.texturePosition.x += o2, h3.texturePosition.y += l4, h3.texturePositionClipSpace.x = h3.texturePosition.x / r, h3.texturePositionClipSpace.y = h3.texturePosition.y / r;\n this._onRemoveTextureAtlasCanvas.fire(s4.canvas);\n let T4 = this._activePages.indexOf(s4);\n T4 !== -1 && this._activePages.splice(T4, 1);\n }\n return n11;\n }\n _deletePage(e) {\n this._pages.splice(e, 1);\n for (let t = e; t < this._pages.length; t++) {\n let r = this._pages[t];\n for (let n11 of r.glyphs) n11.texturePage--;\n r.version++;\n }\n }\n getRasterizedGlyphCombinedChar(e, t, r, n11, a2, s4) {\n return this._getFromCacheMap(this._cacheMapCombined, e, t, r, n11, a2, s4);\n }\n getRasterizedGlyph(e, t, r, n11, a2, s4) {\n return this._getFromCacheMap(this._cacheMap, e, t, r, n11, a2, s4);\n }\n _getFromCacheMap(e, t, r, n11, a2, s4, o2) {\n return W0 = e.get(t, r, n11, a2), W0 || (W0 = this._drawToCache(t, r, n11, a2, s4, o2), e.set(t, r, n11, a2, W0)), W0;\n }\n _getColorFromAnsiIndex(e) {\n if (e >= this._config.colors.ansi.length) throw new Error("No color found for idx " + e);\n return this._config.colors.ansi[e];\n }\n _getBackgroundColor(e, t, r, n11) {\n if (this._config.allowTransparency) return G3;\n let a2;\n switch (e) {\n case 16777216:\n case 33554432:\n a2 = this._getColorFromAnsiIndex(t);\n break;\n case 50331648:\n let s4 = s0.toColorRGB(t);\n a2 = Z3.toColor(s4[0], s4[1], s4[2]);\n break;\n case 0:\n default:\n r ? a2 = I0.opaque(this._config.colors.foreground) : a2 = this._config.colors.background;\n break;\n }\n return this._config.allowTransparency || (a2 = I0.opaque(a2)), a2;\n }\n _getForegroundColor(e, t, r, n11, a2, s4, o2, l4, T4, h3) {\n let d3 = this._getMinimumContrastColor(e, t, r, n11, a2, s4, o2, T4, l4, h3);\n if (d3) return d3;\n let _5;\n switch (a2) {\n case 16777216:\n case 33554432:\n this._config.drawBoldTextInBrightColors && T4 && s4 < 8 && (s4 += 8), _5 = this._getColorFromAnsiIndex(s4);\n break;\n case 50331648:\n let c2 = s0.toColorRGB(s4);\n _5 = Z3.toColor(c2[0], c2[1], c2[2]);\n break;\n case 0:\n default:\n o2 ? _5 = this._config.colors.background : _5 = this._config.colors.foreground;\n }\n return this._config.allowTransparency && (_5 = I0.opaque(_5)), l4 && (_5 = I0.multiplyOpacity(_5, je2)), _5;\n }\n _resolveBackgroundRgba(e, t, r) {\n switch (e) {\n case 16777216:\n case 33554432:\n return this._getColorFromAnsiIndex(t).rgba;\n case 50331648:\n return t << 8;\n case 0:\n default:\n return r ? this._config.colors.foreground.rgba : this._config.colors.background.rgba;\n }\n }\n _resolveForegroundRgba(e, t, r, n11) {\n switch (e) {\n case 16777216:\n case 33554432:\n return this._config.drawBoldTextInBrightColors && n11 && t < 8 && (t += 8), this._getColorFromAnsiIndex(t).rgba;\n case 50331648:\n return t << 8;\n case 0:\n default:\n return r ? this._config.colors.background.rgba : this._config.colors.foreground.rgba;\n }\n }\n _getMinimumContrastColor(e, t, r, n11, a2, s4, o2, l4, T4, h3) {\n if (this._config.minimumContrastRatio === 1 || h3) return;\n let d3 = this._getContrastCache(T4), _5 = d3.getColor(e, n11);\n if (_5 !== void 0) return _5 ?? void 0;\n let c2 = this._resolveBackgroundRgba(t, r, o2), u3 = this._resolveForegroundRgba(a2, s4, o2, l4), p3 = h0.ensureContrastRatio(c2, u3, this._config.minimumContrastRatio / (T4 ? 2 : 1));\n if (!p3) {\n d3.setColor(e, n11, null);\n return;\n }\n let C4 = Z3.toColor(p3 >> 24 & 255, p3 >> 16 & 255, p3 >> 8 & 255);\n return d3.setColor(e, n11, C4), C4;\n }\n _getContrastCache(e) {\n return e ? this._config.colors.halfContrastCache : this._config.colors.contrastCache;\n }\n _drawToCache(e, t, r, n11, a2, s4) {\n let o2 = typeof e == "number" ? String.fromCharCode(e) : e;\n s4 && this._tmpCanvas.parentElement !== s4 && (this._tmpCanvas.style.display = "none", s4.append(this._tmpCanvas));\n let l4 = Math.min(this._config.deviceCellWidth * Math.max(o2.length, 2) + U0 * 2, this._config.deviceMaxTextureSize);\n this._tmpCanvas.width < l4 && (this._tmpCanvas.width = l4);\n let T4 = Math.min(this._config.deviceCellHeight + U0 * 4, this._textureSize);\n if (this._tmpCanvas.height < T4 && (this._tmpCanvas.height = T4), this._tmpCtx.save(), this._workAttributeData.fg = r, this._workAttributeData.bg = t, this._workAttributeData.extended.ext = n11, !!this._workAttributeData.isInvisible()) return at2;\n let d3 = !!this._workAttributeData.isBold(), _5 = !!this._workAttributeData.isInverse(), c2 = !!this._workAttributeData.isDim(), u3 = !!this._workAttributeData.isItalic(), p3 = !!this._workAttributeData.isUnderline(), C4 = !!this._workAttributeData.isStrikethrough(), Q3 = !!this._workAttributeData.isOverline(), m4 = this._workAttributeData.getFgColor(), R4 = this._workAttributeData.getFgColorMode(), F4 = this._workAttributeData.getBgColor(), b4 = this._workAttributeData.getBgColorMode();\n if (_5) {\n let E5 = m4;\n m4 = F4, F4 = E5;\n let N3 = R4;\n R4 = b4, b4 = N3;\n }\n let A4 = this._getBackgroundColor(b4, F4, _5, c2);\n this._tmpCtx.globalCompositeOperation = "copy", this._tmpCtx.fillStyle = A4.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.globalCompositeOperation = "source-over";\n let X3 = d3 ? this._config.fontWeightBold : this._config.fontWeight, z4 = u3 ? "italic" : "";\n this._tmpCtx.font = `${z4} ${X3} ${this._config.fontSize * this._config.devicePixelRatio}px ${this._config.fontFamily}`, this._tmpCtx.textBaseline = q0;\n let x0 = o2.length === 1 && K0(o2.charCodeAt(0)), e0 = o2.length === 1 && $e(o2.charCodeAt(0)), T0 = this._getForegroundColor(t, b4, F4, r, R4, m4, _5, c2, d3, z0(o2.charCodeAt(0)));\n this._tmpCtx.fillStyle = T0.css;\n let M4 = e0 ? 0 : U0 * 2, l0 = false;\n if (this._config.customGlyphs !== false) {\n let E5 = this._workAttributeData.getUnderlineVariantOffset();\n l0 = it2(this._tmpCtx, o2, M4, M4, this._config.deviceCellWidth, this._config.deviceCellHeight, this._config.deviceCharWidth, this._config.deviceCharHeight, this._config.fontSize, this._config.devicePixelRatio, A4.css, E5);\n }\n let t0 = !x0, Y2;\n if (typeof e == "number" ? Y2 = this._unicodeService.wcwidth(e) : Y2 = this._unicodeService.getStringCellWidth(e), p3) {\n this._tmpCtx.save();\n let E5 = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), N3 = E5 % 2 === 1 ? 0.5 : 0;\n if (this._tmpCtx.lineWidth = E5, this._workAttributeData.isUnderlineColorDefault()) this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle;\n else if (this._workAttributeData.isUnderlineColorRGB()) t0 = false, this._tmpCtx.strokeStyle = `rgb(${s0.toColorRGB(this._workAttributeData.getUnderlineColor()).join(",")})`;\n else {\n t0 = false;\n let r0 = this._workAttributeData.getUnderlineColor();\n this._config.drawBoldTextInBrightColors && this._workAttributeData.isBold() && r0 < 8 && (r0 += 8), this._tmpCtx.strokeStyle = this._getColorFromAnsiIndex(r0).css;\n }\n this._tmpCtx.fillStyle = this._tmpCtx.strokeStyle, this._tmpCtx.beginPath();\n let i0 = M4, $4 = Math.ceil(M4 + this._config.deviceCharHeight) - N3 - (a2 ? E5 * 2 : 0), pe2 = $4 + E5 * 2, f0 = this._workAttributeData.getUnderlineVariantOffset(), p0 = 0, v0 = 0;\n for (let r0 = 0; r0 < Y2; r0++) {\n let N0 = false;\n this._tmpCtx.save(), p0 = $4, v0 = pe2;\n let q3 = i0 + r0 * this._config.deviceCellWidth, Q0 = i0 + (r0 + 1) * this._config.deviceCellWidth;\n switch (this._workAttributeData.extended.underlineStyle) {\n case 2:\n this._tmpCtx.moveTo(q3, $4), this._tmpCtx.lineTo(Q0, $4), this._tmpCtx.moveTo(q3, pe2), this._tmpCtx.lineTo(Q0, pe2);\n break;\n case 3:\n p0 = this._config.deviceCharHeight + 1, v0 = p0 + 3 * this._config.devicePixelRatio;\n let Ne4 = new Path2D();\n Ne4.rect(q3, p0, this._config.deviceCellWidth, v0 - p0), this._tmpCtx.clip(Ne4);\n let vt3 = this._config.deviceCellWidth, Ot2 = v0 - p0, It3 = vt3 / 6, Ft = Ot2 / 3, Mt2 = [[0, 2, 1, 3, 2.4, 3, 0, 0.6], [5.5, 0, 2.5, 3, 1.1, 3, 4.1, 0], [4, 0, 6, 2, 6, 0.6, 5.4, 0]];\n for (let Ce3 of Mt2) {\n this._tmpCtx.beginPath();\n for (let P0 = 0; P0 < Ce3.length; P0 += 2) {\n let we3 = q3 + Ce3[P0] * It3, He3 = v0 - Ce3[P0 + 1] * Ft;\n P0 === 0 ? this._tmpCtx.moveTo(we3, He3) : this._tmpCtx.lineTo(we3, He3);\n }\n this._tmpCtx.closePath(), this._tmpCtx.fill();\n }\n N0 = true;\n break;\n case 4:\n let $0 = f0 === 0 ? 0 : f0 >= E5 ? E5 * 2 - f0 : E5 - f0;\n !(f0 >= E5) === false || $0 === 0 ? (this._tmpCtx.setLineDash([Math.round(E5), Math.round(E5)]), this._tmpCtx.moveTo(q3 + $0, $4), this._tmpCtx.lineTo(Q0, $4)) : (this._tmpCtx.setLineDash([Math.round(E5), Math.round(E5)]), this._tmpCtx.moveTo(q3, $4), this._tmpCtx.lineTo(q3 + $0, $4), this._tmpCtx.moveTo(q3 + $0 + E5, $4), this._tmpCtx.lineTo(Q0, $4)), f0 = ze2(Q0 - q3, E5, f0);\n break;\n case 5:\n let At3 = 0.6, gt3 = 0.3, Qe3 = Q0 - q3, Pe3 = Math.floor(At3 * Qe3), Be3 = Math.floor(gt3 * Qe3), yt4 = Qe3 - Pe3 - Be3;\n this._tmpCtx.setLineDash([Pe3, Be3, yt4]), this._tmpCtx.moveTo(q3, $4), this._tmpCtx.lineTo(Q0, $4);\n break;\n case 1:\n default:\n this._tmpCtx.moveTo(q3, $4), this._tmpCtx.lineTo(Q0, $4);\n break;\n }\n N0 || this._tmpCtx.stroke(), this._tmpCtx.restore();\n }\n if (this._tmpCtx.restore(), !l0 && this._config.fontSize >= 12 && !this._config.allowTransparency && o2 !== " ") {\n this._tmpCtx.save(), this._tmpCtx.textBaseline = "alphabetic";\n let r0 = this._tmpCtx.measureText(o2);\n if (this._tmpCtx.restore(), "actualBoundingBoxDescent" in r0 && r0.actualBoundingBoxDescent > 0) {\n this._tmpCtx.save();\n let N0 = new Path2D();\n N0.rect(i0, p0 - Math.ceil(E5 / 2), this._config.deviceCellWidth * Y2, v0 - p0 + Math.ceil(E5 / 2)), this._tmpCtx.clip(N0), this._tmpCtx.lineWidth = this._config.devicePixelRatio * 3, this._tmpCtx.strokeStyle = A4.css, this._tmpCtx.strokeText(o2, M4, M4 + this._config.deviceCharHeight), this._tmpCtx.restore();\n }\n }\n }\n if (Q3) {\n let E5 = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 15)), N3 = E5 % 2 === 1 ? 0.5 : 0;\n this._tmpCtx.lineWidth = E5, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(M4, M4 + N3), this._tmpCtx.lineTo(M4 + this._config.deviceCharWidth * Y2, M4 + N3), this._tmpCtx.stroke();\n }\n if (l0 || this._tmpCtx.fillText(o2, M4, M4 + this._config.deviceCharHeight), o2 === "_" && !this._config.allowTransparency) {\n let E5 = Ie(this._tmpCtx.getImageData(M4, M4, this._config.deviceCellWidth, this._config.deviceCellHeight), A4, T0, t0);\n if (E5) for (let N3 = 1; N3 <= 5 && (this._tmpCtx.save(), this._tmpCtx.fillStyle = A4.css, this._tmpCtx.fillRect(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), this._tmpCtx.restore(), this._tmpCtx.fillText(o2, M4, M4 + this._config.deviceCharHeight - N3), E5 = Ie(this._tmpCtx.getImageData(M4, M4, this._config.deviceCellWidth, this._config.deviceCellHeight), A4, T0, t0), !!E5); N3++) ;\n }\n if (C4) {\n let E5 = Math.max(1, Math.floor(this._config.fontSize * this._config.devicePixelRatio / 10)), N3 = this._tmpCtx.lineWidth % 2 === 1 ? 0.5 : 0;\n this._tmpCtx.lineWidth = E5, this._tmpCtx.strokeStyle = this._tmpCtx.fillStyle, this._tmpCtx.beginPath(), this._tmpCtx.moveTo(M4, M4 + Math.floor(this._config.deviceCharHeight / 2) - N3), this._tmpCtx.lineTo(M4 + this._config.deviceCharWidth * Y2, M4 + Math.floor(this._config.deviceCharHeight / 2) - N3), this._tmpCtx.stroke();\n }\n this._tmpCtx.restore();\n let n0 = this._tmpCtx.getImageData(0, 0, this._tmpCanvas.width, this._tmpCanvas.height), D0;\n if (this._config.allowTransparency ? D0 = qt(n0) : D0 = Ie(n0, A4, T0, t0), D0) return at2;\n let I4 = this._findGlyphBoundingBox(n0, this._workBoundingBox, l4, e0, l0, M4), O4, v6;\n for (; ; ) {\n if (this._activePages.length === 0) {\n let E5 = this._createNewPage();\n O4 = E5, v6 = E5.currentRow, v6.height = I4.size.y;\n break;\n }\n O4 = this._activePages[this._activePages.length - 1], v6 = O4.currentRow;\n for (let E5 of this._activePages) I4.size.y <= E5.currentRow.height && (O4 = E5, v6 = E5.currentRow);\n for (let E5 = this._activePages.length - 1; E5 >= 0; E5--) for (let N3 of this._activePages[E5].fixedRows) N3.height <= v6.height && I4.size.y <= N3.height && (O4 = this._activePages[E5], v6 = N3);\n if (I4.size.x > this._textureSize) {\n this._overflowSizePage || (this._overflowSizePage = new M0(this._document, this._config.deviceMaxTextureSize), this.pages.push(this._overflowSizePage), this._requestClearModel = true, this._onAddTextureAtlasCanvas.fire(this._overflowSizePage.canvas)), O4 = this._overflowSizePage, v6 = this._overflowSizePage.currentRow, v6.x + I4.size.x >= O4.canvas.width && (v6.x = 0, v6.y += v6.height, v6.height = 0);\n break;\n }\n if (v6.y + I4.size.y >= O4.canvas.height || v6.height > I4.size.y + 2) {\n let E5 = false;\n if (O4.currentRow.y + O4.currentRow.height + I4.size.y >= O4.canvas.height) {\n let N3;\n for (let i0 of this._activePages) if (i0.currentRow.y + i0.currentRow.height + I4.size.y < i0.canvas.height) {\n N3 = i0;\n break;\n }\n if (N3) O4 = N3;\n else if (i3.maxAtlasPages && this._pages.length >= i3.maxAtlasPages && v6.y + I4.size.y <= O4.canvas.height && v6.height >= I4.size.y && v6.x + I4.size.x <= O4.canvas.width) E5 = true;\n else {\n let i0 = this._createNewPage();\n O4 = i0, v6 = i0.currentRow, v6.height = I4.size.y, E5 = true;\n }\n }\n E5 || (O4.currentRow.height > 0 && O4.fixedRows.push(O4.currentRow), v6 = { x: 0, y: O4.currentRow.y + O4.currentRow.height, height: I4.size.y }, O4.fixedRows.push(v6), O4.currentRow = { x: 0, y: v6.y + v6.height, height: 0 });\n }\n if (v6.x + I4.size.x <= O4.canvas.width) break;\n v6 === O4.currentRow ? (v6.x = 0, v6.y += v6.height, v6.height = 0) : O4.fixedRows.splice(O4.fixedRows.indexOf(v6), 1);\n }\n return I4.texturePage = this._pages.indexOf(O4), I4.texturePosition.x = v6.x, I4.texturePosition.y = v6.y, I4.texturePositionClipSpace.x = v6.x / O4.canvas.width, I4.texturePositionClipSpace.y = v6.y / O4.canvas.height, I4.sizeClipSpace.x /= O4.canvas.width, I4.sizeClipSpace.y /= O4.canvas.height, v6.height = Math.max(v6.height, I4.size.y), v6.x += I4.size.x, O4.ctx.putImageData(n0, I4.texturePosition.x - this._workBoundingBox.left, I4.texturePosition.y - this._workBoundingBox.top, this._workBoundingBox.left, this._workBoundingBox.top, I4.size.x, I4.size.y), O4.addGlyph(I4), O4.version++, I4;\n }\n _findGlyphBoundingBox(e, t, r, n11, a2, s4) {\n t.top = 0;\n let o2 = n11 ? this._config.deviceCellHeight : this._tmpCanvas.height, l4 = n11 ? this._config.deviceCellWidth : r, T4 = false;\n for (let h3 = 0; h3 < o2; h3++) {\n for (let d3 = 0; d3 < l4; d3++) {\n let _5 = h3 * this._tmpCanvas.width * 4 + d3 * 4 + 3;\n if (e.data[_5] !== 0) {\n t.top = h3, T4 = true;\n break;\n }\n }\n if (T4) break;\n }\n t.left = 0, T4 = false;\n for (let h3 = 0; h3 < s4 + l4; h3++) {\n for (let d3 = 0; d3 < o2; d3++) {\n let _5 = d3 * this._tmpCanvas.width * 4 + h3 * 4 + 3;\n if (e.data[_5] !== 0) {\n t.left = h3, T4 = true;\n break;\n }\n }\n if (T4) break;\n }\n t.right = l4, T4 = false;\n for (let h3 = s4 + l4 - 1; h3 >= s4; h3--) {\n for (let d3 = 0; d3 < o2; d3++) {\n let _5 = d3 * this._tmpCanvas.width * 4 + h3 * 4 + 3;\n if (e.data[_5] !== 0) {\n t.right = h3, T4 = true;\n break;\n }\n }\n if (T4) break;\n }\n t.bottom = o2, T4 = false;\n for (let h3 = o2 - 1; h3 >= 0; h3--) {\n for (let d3 = 0; d3 < l4; d3++) {\n let _5 = h3 * this._tmpCanvas.width * 4 + d3 * 4 + 3;\n if (e.data[_5] !== 0) {\n t.bottom = h3, T4 = true;\n break;\n }\n }\n if (T4) break;\n }\n return { texturePage: 0, texturePosition: { x: 0, y: 0 }, texturePositionClipSpace: { x: 0, y: 0 }, size: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, sizeClipSpace: { x: t.right - t.left + 1, y: t.bottom - t.top + 1 }, offset: { x: -t.left + s4 + (n11 || a2 ? Math.floor((this._config.deviceCellWidth - this._config.deviceCharWidth) / 2) : 0), y: -t.top + s4 + (n11 || a2 ? this._config.lineHeight === 1 ? 0 : Math.round((this._config.deviceCellHeight - this._config.deviceCharHeight) / 2) : 0) } };\n }\n };\n var M0 = class {\n constructor(e, t, r) {\n this._usedPixels = 0;\n this._glyphs = [];\n this.version = 0;\n this.currentRow = { x: 0, y: 0, height: 0 };\n this.fixedRows = [];\n if (r) for (let n11 of r) this._glyphs.push(...n11.glyphs), this._usedPixels += n11._usedPixels;\n this.canvas = ot2(e, t, t), this.ctx = y3(this.canvas.getContext("2d", { alpha: true }));\n }\n get percentageUsed() {\n return this._usedPixels / (this.canvas.width * this.canvas.height);\n }\n get glyphs() {\n return this._glyphs;\n }\n addGlyph(e) {\n this._glyphs.push(e), this._usedPixels += e.size.x * e.size.y;\n }\n clear() {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height), this.currentRow.x = 0, this.currentRow.y = 0, this.currentRow.height = 0, this.fixedRows.length = 0, this.version++;\n }\n };\n function Ie(i5, e, t, r) {\n let n11 = e.rgba >>> 24, a2 = e.rgba >>> 16 & 255, s4 = e.rgba >>> 8 & 255, o2 = t.rgba >>> 24, l4 = t.rgba >>> 16 & 255, T4 = t.rgba >>> 8 & 255, h3 = Math.floor((Math.abs(n11 - o2) + Math.abs(a2 - l4) + Math.abs(s4 - T4)) / 12), d3 = true;\n for (let _5 = 0; _5 < i5.data.length; _5 += 4) i5.data[_5] === n11 && i5.data[_5 + 1] === a2 && i5.data[_5 + 2] === s4 || r && Math.abs(i5.data[_5] - n11) + Math.abs(i5.data[_5 + 1] - a2) + Math.abs(i5.data[_5 + 2] - s4) < h3 ? i5.data[_5 + 3] = 0 : d3 = false;\n return d3;\n }\n function qt(i5) {\n for (let e = 0; e < i5.data.length; e += 4) if (i5.data[e + 3] > 0) return false;\n return true;\n }\n function ot2(i5, e, t) {\n let r = i5.createElement("canvas");\n return r.width = e, r.height = t, r;\n }\n function Tt2(i5, e, t, r, n11, a2, s4, o2, l4 = true) {\n let T4 = { foreground: a2.foreground, background: a2.background, cursor: G3, cursorAccent: G3, selectionForeground: G3, selectionBackgroundTransparent: G3, selectionBackgroundOpaque: G3, selectionInactiveBackgroundTransparent: G3, selectionInactiveBackgroundOpaque: G3, overviewRulerBorder: G3, scrollbarSliderBackground: G3, scrollbarSliderHoverBackground: G3, scrollbarSliderActiveBackground: G3, ansi: a2.ansi.slice(), contrastCache: a2.contrastCache, halfContrastCache: a2.halfContrastCache };\n return { customGlyphs: l4, devicePixelRatio: s4, deviceMaxTextureSize: o2, letterSpacing: n11.letterSpacing, lineHeight: n11.lineHeight, deviceCellWidth: i5, deviceCellHeight: e, deviceCharWidth: t, deviceCharHeight: r, fontFamily: n11.fontFamily, fontSize: n11.fontSize, fontWeight: n11.fontWeight, fontWeightBold: n11.fontWeightBold, allowTransparency: n11.allowTransparency, drawBoldTextInBrightColors: n11.drawBoldTextInBrightColors, minimumContrastRatio: n11.minimumContrastRatio, colors: T4 };\n }\n function Fe2(i5, e) {\n for (let t = 0; t < i5.colors.ansi.length; t++) if (i5.colors.ansi[t].rgba !== e.colors.ansi[t].rgba) return false;\n return i5.devicePixelRatio === e.devicePixelRatio && i5.customGlyphs === e.customGlyphs && i5.lineHeight === e.lineHeight && i5.letterSpacing === e.letterSpacing && i5.fontFamily === e.fontFamily && i5.fontSize === e.fontSize && i5.fontWeight === e.fontWeight && i5.fontWeightBold === e.fontWeightBold && i5.allowTransparency === e.allowTransparency && i5.deviceCharWidth === e.deviceCharWidth && i5.deviceCharHeight === e.deviceCharHeight && i5.drawBoldTextInBrightColors === e.drawBoldTextInBrightColors && i5.minimumContrastRatio === e.minimumContrastRatio && i5.colors.foreground.rgba === e.colors.foreground.rgba && i5.colors.background.rgba === e.colors.background.rgba;\n }\n function lt(i5) {\n return (i5 & 50331648) === 16777216 || (i5 & 50331648) === 33554432;\n }\n var J3 = [];\n function ee2(i5, e, t, r, n11, a2, s4, o2, l4, T4 = true) {\n let h3 = Tt2(r, n11, a2, s4, e, t, o2, l4, T4);\n for (let u3 = 0; u3 < J3.length; u3++) {\n let p3 = J3[u3], C4 = p3.ownedBy.indexOf(i5);\n if (C4 >= 0) {\n if (Fe2(p3.config, h3)) return p3.atlas;\n p3.ownedBy.length === 1 ? (p3.atlas.dispose(), J3.splice(u3, 1)) : p3.ownedBy.splice(C4, 1);\n break;\n }\n }\n for (let u3 = 0; u3 < J3.length; u3++) {\n let p3 = J3[u3];\n if (Fe2(p3.config, h3)) return p3.ownedBy.push(i5), p3.atlas;\n }\n let d3 = i5._core, _5 = d3._logService, c2 = { atlas: new j3(document, h3, d3.unicodeService, _5), config: h3, ownedBy: [i5] };\n return J3.push(c2), c2.atlas;\n }\n function Me(i5) {\n for (let e = 0; e < J3.length; e++) {\n let t = J3[e].ownedBy.indexOf(i5);\n if (t !== -1) {\n J3[e].ownedBy.length === 1 ? (J3[e].atlas.dispose(), J3.splice(e, 1)) : J3[e].ownedBy.splice(t, 1);\n break;\n }\n }\n }\n var te = class {\n constructor(e, t) {\n this._renderCallback = e;\n this._coreBrowserService = t;\n this._isIdlePaused = false;\n this.isCursorVisible = true, this._coreBrowserService.isFocused && (this._restartInterval(), this._resetIdleTimer());\n }\n get isPaused() {\n return !(this._blinkStartTimeout || this._blinkInterval);\n }\n dispose() {\n this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0), this._idleTimeout && (this._coreBrowserService.window.clearTimeout(this._idleTimeout), this._idleTimeout = void 0);\n }\n restartBlinkAnimation() {\n this._isIdlePaused && this._resetIdleTimer(), !this.isPaused && (this._animationTimeRestarted = Date.now(), this.isCursorVisible = true, this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => {\n this._renderCallback(), this._animationFrame = void 0;\n })));\n }\n _restartInterval(e = 600) {\n this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout = this._coreBrowserService.window.setTimeout(() => {\n if (this._animationTimeRestarted) {\n let t = 600 - (Date.now() - this._animationTimeRestarted);\n if (this._animationTimeRestarted = void 0, t > 0) {\n this._restartInterval(t);\n return;\n }\n }\n this.isCursorVisible = false, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => {\n this._renderCallback(), this._animationFrame = void 0;\n }), this._blinkInterval = this._coreBrowserService.window.setInterval(() => {\n if (this._animationTimeRestarted) {\n let t = 600 - (Date.now() - this._animationTimeRestarted);\n this._animationTimeRestarted = void 0, this._restartInterval(t);\n return;\n }\n this.isCursorVisible = !this.isCursorVisible, this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => {\n this._renderCallback(), this._animationFrame = void 0;\n });\n }, 600);\n }, e);\n }\n pause() {\n this.isCursorVisible = true, this._isIdlePaused = false, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0), this._idleTimeout && (this._coreBrowserService.window.clearTimeout(this._idleTimeout), this._idleTimeout = void 0);\n }\n resume() {\n this.pause(), this._animationTimeRestarted = void 0, this._restartInterval(), this._resetIdleTimer(), this.restartBlinkAnimation();\n }\n _resetIdleTimer() {\n this._isIdlePaused = false, this._idleTimeout && this._coreBrowserService.window.clearTimeout(this._idleTimeout), this._idleTimeout = this._coreBrowserService.window.setTimeout(() => {\n this._stopBlinkingDueToIdle();\n }, 3e5);\n }\n _stopBlinkingDueToIdle() {\n this.isCursorVisible = true, this._isIdlePaused = true, this._blinkInterval && (this._coreBrowserService.window.clearInterval(this._blinkInterval), this._blinkInterval = void 0), this._blinkStartTimeout && (this._coreBrowserService.window.clearTimeout(this._blinkStartTimeout), this._blinkStartTimeout = void 0), this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0), this._coreBrowserService.window.clearTimeout(this._idleTimeout), this._idleTimeout = void 0, this._renderCallback();\n }\n };\n function Ae2(i5, e, t) {\n let r = new e.ResizeObserver((n11) => {\n let a2 = n11.find((l4) => l4.target === i5);\n if (!a2) return;\n if (!("devicePixelContentBoxSize" in a2)) {\n r?.disconnect(), r = void 0;\n return;\n }\n let s4 = a2.devicePixelContentBoxSize[0].inlineSize, o2 = a2.devicePixelContentBoxSize[0].blockSize;\n s4 > 0 && o2 > 0 && t(s4, o2);\n });\n try {\n r.observe(i5, { box: ["device-pixel-content-box"] });\n } catch {\n r.disconnect(), r = void 0;\n }\n return g4(() => r?.disconnect());\n }\n function Lt(i5) {\n return i5 > 65535 ? (i5 -= 65536, String.fromCharCode((i5 >> 10) + 55296) + String.fromCharCode(i5 % 1024 + 56320)) : String.fromCharCode(i5);\n }\n var ie2 = class i4 extends s0 {\n constructor() {\n super(...arguments);\n this.content = 0;\n this.fg = 0;\n this.bg = 0;\n this.extended = new Z0();\n this.combinedData = "";\n }\n static fromCharData(t) {\n let r = new i4();\n return r.setFromCharData(t), r;\n }\n isCombined() {\n return this.content & 2097152;\n }\n getWidth() {\n return this.content >> 22;\n }\n getChars() {\n return this.content & 2097152 ? this.combinedData : this.content & 2097151 ? Lt(this.content & 2097151) : "";\n }\n getCode() {\n return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : this.content & 2097151;\n }\n setFromCharData(t) {\n this.fg = t[0], this.bg = 0;\n let r = false;\n if (t[1].length > 2) r = true;\n else if (t[1].length === 2) {\n let n11 = t[1].charCodeAt(0);\n if (55296 <= n11 && n11 <= 56319) {\n let a2 = t[1].charCodeAt(1);\n 56320 <= a2 && a2 <= 57343 ? this.content = (n11 - 55296) * 1024 + a2 - 56320 + 65536 | t[2] << 22 : r = true;\n } else r = true;\n } else this.content = t[1].charCodeAt(0) | t[2] << 22;\n r && (this.combinedData = t[1], this.content = 2097152 | t[2] << 22);\n }\n getAsCharData() {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n attributesEquals(t) {\n if (this.getFgColorMode() !== t.getFgColorMode() || this.getFgColor() !== t.getFgColor() || this.getBgColorMode() !== t.getBgColorMode() || this.getBgColor() !== t.getBgColor() || this.isInverse() !== t.isInverse() || this.isBold() !== t.isBold() || this.isUnderline() !== t.isUnderline()) return false;\n if (this.isUnderline()) {\n if (this.getUnderlineStyle() !== t.getUnderlineStyle()) return false;\n let r = this.isUnderlineColorDefault(), n11 = t.isUnderlineColorDefault();\n if (!(r && n11) && (r !== n11 || this.getUnderlineColor() !== t.getUnderlineColor() || this.getUnderlineColorMode() !== t.getUnderlineColorMode())) return false;\n }\n return !(this.isOverline() !== t.isOverline() || this.isBlink() !== t.isBlink() || this.isInvisible() !== t.isInvisible() || this.isItalic() !== t.isItalic() || this.isDim() !== t.isDim() || this.isStrikethrough() !== t.isStrikethrough());\n }\n };\n var re = class extends W3 {\n constructor(t, r, n11) {\n super();\n this._renderCallback = t;\n this._coreBrowserService = r;\n this._optionsService = n11;\n this._intervalDuration = 0;\n this._blinkOn = true;\n this._needsBlinkInViewport = false;\n this._isViewportVisible = true;\n this._register(this._optionsService.onSpecificOptionChange("blinkIntervalDuration", (a2) => {\n this.setIntervalDuration(a2);\n })), this.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration), this._register(g4(() => this._clearInterval()));\n }\n get isBlinkOn() {\n return this._blinkOn;\n }\n get isEnabled() {\n return this._intervalDuration > 0;\n }\n setNeedsBlinkInViewport(t) {\n this._needsBlinkInViewport !== t && (this._needsBlinkInViewport = t, this._updateIntervalState());\n }\n setViewportVisible(t) {\n this._isViewportVisible !== t && (this._isViewportVisible = t, this._updateIntervalState());\n }\n setIntervalDuration(t) {\n t !== this._intervalDuration && (this._intervalDuration = t, this._clearInterval(), this._updateIntervalState());\n }\n _updateIntervalState() {\n if (this._intervalDuration > 0 && this._needsBlinkInViewport && this._isViewportVisible) {\n if (this._interval !== void 0) return;\n let r = this._blinkOn;\n this._blinkOn = true, this._interval = this._coreBrowserService.window.setInterval(() => {\n this._blinkOn = !this._blinkOn, this._renderCallback();\n }, this._intervalDuration), r || this._renderCallback();\n return;\n }\n this._clearInterval(), this._blinkOn || (this._blinkOn = true, this._renderCallback());\n }\n _clearInterval() {\n this._interval !== void 0 && (this._coreBrowserService.window.clearInterval(this._interval), this._interval = void 0);\n }\n };\n var ne2 = new Float32Array([2, 0, 0, 0, 0, -2, 0, 0, 0, 0, 1, 0, -1, 1, 0, 1]);\n function ae2(i5, e, t) {\n let r = y3(i5.createProgram());\n if (i5.attachShader(r, y3(ht(i5, i5.VERTEX_SHADER, e))), i5.attachShader(r, y3(ht(i5, i5.FRAGMENT_SHADER, t))), i5.linkProgram(r), i5.getProgramParameter(r, i5.LINK_STATUS)) return r;\n console.error(i5.getProgramInfoLog(r)), i5.deleteProgram(r);\n }\n function ht(i5, e, t) {\n let r = y3(i5.createShader(e));\n if (i5.shaderSource(r, t), i5.compileShader(r), i5.getShaderParameter(r, i5.COMPILE_STATUS)) return r;\n console.error(i5.getShaderInfoLog(r)), i5.deleteShader(r);\n }\n function dt(i5, e) {\n let t = Math.min(i5.length * 2, e), r = new Float32Array(t);\n for (let n11 = 0; n11 < i5.length; n11++) r[n11] = i5[n11];\n return r;\n }\n var se = class {\n constructor(e) {\n this.texture = e, this.version = -1;\n }\n };\n var e1 = `#version 300 es\nlayout (location = 0) in vec2 a_unitquad;\nlayout (location = 1) in vec2 a_cellpos;\nlayout (location = 2) in vec2 a_offset;\nlayout (location = 3) in vec2 a_size;\nlayout (location = 4) in float a_texpage;\nlayout (location = 5) in vec2 a_texcoord;\nlayout (location = 6) in vec2 a_texsize;\n\nuniform mat4 u_projection;\nuniform vec2 u_resolution;\n\nout vec2 v_texcoord;\nflat out int v_texpage;\n\nvoid main() {\n vec2 zeroToOne = (a_offset / u_resolution) + a_cellpos + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_texpage = int(a_texpage);\n v_texcoord = a_texcoord + a_unitquad * a_texsize;\n}`;\n function t1(i5) {\n let e = "";\n for (let t = 1; t < i5; t++) e += ` else if (v_texpage == ${t}) { outColor = texture(u_texture[${t}], v_texcoord); }`;\n return `#version 300 es\nprecision lowp float;\n\nin vec2 v_texcoord;\nflat in int v_texpage;\n\nuniform sampler2D u_texture[${i5}];\n\nout vec4 outColor;\n\nvoid main() {\n if (v_texpage == 0) {\n outColor = texture(u_texture[0], v_texcoord);\n } ${e}\n}`;\n }\n var m0 = 11;\n var g0 = m0 * Float32Array.BYTES_PER_ELEMENT;\n var i1 = 2;\n var D5 = 0;\n var S3;\n var ye = 0;\n var V0 = 0;\n var oe2 = class extends W3 {\n constructor(t, r, n11, a2) {\n super();\n this._terminal = t;\n this._gl = r;\n this._dimensions = n11;\n this._optionsService = a2;\n this._activeBuffer = 0;\n this._vertices = { count: 0, attributes: new Float32Array(0), attributesBuffers: [new Float32Array(0), new Float32Array(0)] };\n let s4 = this._gl;\n j3.maxAtlasPages === void 0 && (j3.maxAtlasPages = Math.min(32, y3(s4.getParameter(s4.MAX_TEXTURE_IMAGE_UNITS))), j3.maxTextureSize = y3(s4.getParameter(s4.MAX_TEXTURE_SIZE))), this._program = y3(ae2(s4, e1, t1(j3.maxAtlasPages))), this._register(g4(() => s4.deleteProgram(this._program))), this._projectionLocation = y3(s4.getUniformLocation(this._program, "u_projection")), this._resolutionLocation = y3(s4.getUniformLocation(this._program, "u_resolution")), this._textureLocation = y3(s4.getUniformLocation(this._program, "u_texture")), this._vertexArrayObject = s4.createVertexArray(), s4.bindVertexArray(this._vertexArrayObject);\n let o2 = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), l4 = s4.createBuffer();\n this._register(g4(() => s4.deleteBuffer(l4))), s4.bindBuffer(s4.ARRAY_BUFFER, l4), s4.bufferData(s4.ARRAY_BUFFER, o2, s4.STATIC_DRAW), s4.enableVertexAttribArray(0), s4.vertexAttribPointer(0, 2, this._gl.FLOAT, false, 0, 0);\n let T4 = new Uint8Array([0, 1, 2, 3]), h3 = s4.createBuffer();\n this._register(g4(() => s4.deleteBuffer(h3))), s4.bindBuffer(s4.ELEMENT_ARRAY_BUFFER, h3), s4.bufferData(s4.ELEMENT_ARRAY_BUFFER, T4, s4.STATIC_DRAW), this._attributesBuffer = y3(s4.createBuffer()), this._register(g4(() => s4.deleteBuffer(this._attributesBuffer))), s4.bindBuffer(s4.ARRAY_BUFFER, this._attributesBuffer), s4.enableVertexAttribArray(2), s4.vertexAttribPointer(2, 2, s4.FLOAT, false, g0, 0), s4.vertexAttribDivisor(2, 1), s4.enableVertexAttribArray(3), s4.vertexAttribPointer(3, 2, s4.FLOAT, false, g0, 2 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(3, 1), s4.enableVertexAttribArray(4), s4.vertexAttribPointer(4, 1, s4.FLOAT, false, g0, 4 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(4, 1), s4.enableVertexAttribArray(5), s4.vertexAttribPointer(5, 2, s4.FLOAT, false, g0, 5 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(5, 1), s4.enableVertexAttribArray(6), s4.vertexAttribPointer(6, 2, s4.FLOAT, false, g0, 7 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(6, 1), s4.enableVertexAttribArray(1), s4.vertexAttribPointer(1, 2, s4.FLOAT, false, g0, 9 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(1, 1), s4.useProgram(this._program);\n let d3 = new Int32Array(j3.maxAtlasPages);\n for (let _5 = 0; _5 < j3.maxAtlasPages; _5++) d3[_5] = _5;\n s4.uniform1iv(this._textureLocation, d3), s4.uniformMatrix4fv(this._projectionLocation, false, ne2), this._atlasTextures = [];\n for (let _5 = 0; _5 < j3.maxAtlasPages; _5++) {\n let c2 = new se(y3(s4.createTexture()));\n this._register(g4(() => s4.deleteTexture(c2.texture))), s4.activeTexture(s4.TEXTURE0 + _5), s4.bindTexture(s4.TEXTURE_2D, c2.texture), s4.texParameteri(s4.TEXTURE_2D, s4.TEXTURE_WRAP_S, s4.CLAMP_TO_EDGE), s4.texParameteri(s4.TEXTURE_2D, s4.TEXTURE_WRAP_T, s4.CLAMP_TO_EDGE), s4.texImage2D(s4.TEXTURE_2D, 0, s4.RGBA, 1, 1, 0, s4.RGBA, s4.UNSIGNED_BYTE, new Uint8Array([255, 0, 0, 255])), this._atlasTextures[_5] = c2;\n }\n s4.enable(s4.BLEND), s4.blendFunc(s4.SRC_ALPHA, s4.ONE_MINUS_SRC_ALPHA), this.handleResize();\n }\n beginFrame() {\n return this._atlas ? this._atlas.beginFrame() : true;\n }\n updateCell(t, r, n11, a2, s4, o2, l4, T4, h3) {\n this._updateCell(this._vertices.attributes, t, r, n11, a2, s4, o2, l4, T4, h3);\n }\n _updateCell(t, r, n11, a2, s4, o2, l4, T4, h3, d3) {\n if (D5 = (n11 * this._terminal.cols + r) * m0, a2 === 0 || a2 === void 0) {\n t.fill(0, D5, D5 + m0 - 1 - i1);\n return;\n }\n this._atlas && (T4 && T4.length > 1 ? S3 = this._atlas.getRasterizedGlyphCombinedChar(T4, s4, o2, l4, false, this._terminal.element) : S3 = this._atlas.getRasterizedGlyph(a2, s4, o2, l4, false, this._terminal.element), ye = Math.floor((this._dimensions.device.cell.width - this._dimensions.device.char.width) / 2), s4 !== d3 && S3.offset.x > ye ? (V0 = S3.offset.x - ye, t[D5] = -(S3.offset.x - V0) + this._dimensions.device.char.left, t[D5 + 1] = -S3.offset.y + this._dimensions.device.char.top, t[D5 + 2] = (S3.size.x - V0) / this._dimensions.device.canvas.width, t[D5 + 3] = S3.size.y / this._dimensions.device.canvas.height, t[D5 + 4] = S3.texturePage, t[D5 + 5] = S3.texturePositionClipSpace.x + V0 / this._atlas.pages[S3.texturePage].canvas.width, t[D5 + 6] = S3.texturePositionClipSpace.y, t[D5 + 7] = S3.sizeClipSpace.x - V0 / this._atlas.pages[S3.texturePage].canvas.width, t[D5 + 8] = S3.sizeClipSpace.y) : (t[D5] = -S3.offset.x + this._dimensions.device.char.left, t[D5 + 1] = -S3.offset.y + this._dimensions.device.char.top, t[D5 + 2] = S3.size.x / this._dimensions.device.canvas.width, t[D5 + 3] = S3.size.y / this._dimensions.device.canvas.height, t[D5 + 4] = S3.texturePage, t[D5 + 5] = S3.texturePositionClipSpace.x, t[D5 + 6] = S3.texturePositionClipSpace.y, t[D5 + 7] = S3.sizeClipSpace.x, t[D5 + 8] = S3.sizeClipSpace.y), this._optionsService.rawOptions.rescaleOverlappingGlyphs && Ge2(a2, h3, S3.size.x, this._dimensions.device.cell.width) && (t[D5 + 2] = (this._dimensions.device.cell.width - 1) / this._dimensions.device.canvas.width));\n }\n clear() {\n let t = this._terminal, r = t.cols * t.rows * m0;\n this._vertices.count !== r ? this._vertices.attributes = new Float32Array(r) : this._vertices.attributes.fill(0);\n let n11 = 0;\n for (; n11 < this._vertices.attributesBuffers.length; n11++) this._vertices.count !== r ? this._vertices.attributesBuffers[n11] = new Float32Array(r) : this._vertices.attributesBuffers[n11].fill(0);\n this._vertices.count = r, n11 = 0;\n for (let a2 = 0; a2 < t.rows; a2++) for (let s4 = 0; s4 < t.cols; s4++) this._vertices.attributes[n11 + 9] = s4 / t.cols, this._vertices.attributes[n11 + 10] = a2 / t.rows, n11 += m0;\n }\n handleResize() {\n let t = this._gl;\n t.useProgram(this._program), t.viewport(0, 0, this._dimensions.device.canvas.width, this._dimensions.device.canvas.height), t.uniform2f(this._resolutionLocation, this._dimensions.device.canvas.width, this._dimensions.device.canvas.height), this.clear();\n }\n render(t) {\n if (!this._atlas) return;\n let r = this._gl;\n r.useProgram(this._program), r.bindVertexArray(this._vertexArrayObject), this._activeBuffer = (this._activeBuffer + 1) % 2;\n let n11 = this._vertices.attributesBuffers[this._activeBuffer], a2 = 0;\n for (let s4 = 0; s4 < t.lineLengths.length; s4++) {\n let o2 = s4 * this._terminal.cols * m0, l4 = this._vertices.attributes.subarray(o2, o2 + t.lineLengths[s4] * m0);\n n11.set(l4, a2), a2 += l4.length;\n }\n r.bindBuffer(r.ARRAY_BUFFER, this._attributesBuffer), r.bufferData(r.ARRAY_BUFFER, n11.subarray(0, a2), r.STREAM_DRAW);\n for (let s4 = 0; s4 < this._atlas.pages.length; s4++) this._atlas.pages[s4].version !== this._atlasTextures[s4].version && this._bindAtlasPageTexture(r, this._atlas, s4);\n r.drawElementsInstanced(r.TRIANGLE_STRIP, 4, r.UNSIGNED_BYTE, 0, a2 / m0);\n }\n setAtlas(t) {\n this._atlas = t;\n for (let r of this._atlasTextures) r.version = -1;\n }\n _bindAtlasPageTexture(t, r, n11) {\n t.activeTexture(t.TEXTURE0 + n11), t.bindTexture(t.TEXTURE_2D, this._atlasTextures[n11].texture), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, r.pages[n11].canvas), t.generateMipmap(t.TEXTURE_2D), this._atlasTextures[n11].version = r.pages[n11].version;\n }\n setDimensions(t) {\n this._dimensions = t;\n }\n };\n var Se2 = class {\n constructor() {\n this.clear();\n }\n clear() {\n this.hasSelection = false, this.columnSelectMode = false, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0;\n }\n update(e, t, r, n11 = false) {\n if (this.selectionStart = t, this.selectionEnd = r, !t || !r || t[0] === r[0] && t[1] === r[1]) {\n this.clear();\n return;\n }\n let a2 = e.buffers.active.ydisp, s4 = t[1] - a2, o2 = r[1] - a2, l4 = Math.max(s4, 0), T4 = Math.min(o2, e.rows - 1);\n if (l4 >= e.rows || T4 < 0) {\n this.clear();\n return;\n }\n this.hasSelection = true, this.columnSelectMode = n11, this.viewportStartRow = s4, this.viewportEndRow = o2, this.viewportCappedStartRow = l4, this.viewportCappedEndRow = T4, this.startCol = t[0], this.endCol = r[0];\n }\n isCellSelected(e, t, r) {\n return this.hasSelection ? (r -= e.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? t >= this.startCol && r >= this.viewportCappedStartRow && t < this.endCol && r <= this.viewportCappedEndRow : t < this.startCol && r >= this.viewportCappedStartRow && t >= this.endCol && r <= this.viewportCappedEndRow : r > this.viewportStartRow && r < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && r === this.viewportStartRow && t >= this.startCol && t < this.endCol || this.viewportStartRow < this.viewportEndRow && r === this.viewportEndRow && t < this.endCol || this.viewportStartRow < this.viewportEndRow && r === this.viewportStartRow && t >= this.startCol) : false;\n }\n };\n function _t() {\n return new Se2();\n }\n var y0 = 4;\n var S0 = 1;\n var R0 = 2;\n var le = 3;\n var ct2 = 2147483648;\n var Te2 = class {\n constructor() {\n this.cells = new Uint32Array(0), this.lineLengths = new Uint32Array(0), this.selection = _t();\n }\n resize(e, t) {\n let r = e * t * y0;\n r !== this.cells.length && (this.cells = new Uint32Array(r), this.lineLengths = new Uint32Array(t));\n }\n clear() {\n this.cells.fill(0, 0), this.lineLengths.fill(0, 0);\n }\n };\n var r1 = `#version 300 es\nlayout (location = 0) in vec2 a_position;\nlayout (location = 1) in vec2 a_size;\nlayout (location = 2) in vec4 a_color;\nlayout (location = 3) in vec2 a_unitquad;\n\nuniform mat4 u_projection;\n\nout vec4 v_color;\n\nvoid main() {\n vec2 zeroToOne = a_position + (a_unitquad * a_size);\n gl_Position = u_projection * vec4(zeroToOne, 0.0, 1.0);\n v_color = a_color;\n}`;\n var s1 = `#version 300 es\nprecision lowp float;\n\nin vec4 v_color;\n\nout vec4 outColor;\n\nvoid main() {\n outColor = v_color;\n}`;\n var u0 = 8;\n var Re2 = u0 * Float32Array.BYTES_PER_ELEMENT;\n var n1 = 20 * u0;\n var Le = class {\n constructor() {\n this.attributes = new Float32Array(n1), this.count = 0;\n }\n };\n var c0 = 0;\n var ut = 0;\n var pt = 0;\n var Qt = 0;\n var Ct = 0;\n var mt = 0;\n var ft = 0;\n var he = class extends W3 {\n constructor(t, r, n11, a2) {\n super();\n this._terminal = t;\n this._gl = r;\n this._dimensions = n11;\n this._themeService = a2;\n this._vertices = new Le();\n this._verticesCursor = new Le();\n let s4 = this._gl;\n this._program = y3(ae2(s4, r1, s1)), this._register(g4(() => s4.deleteProgram(this._program))), this._projectionLocation = y3(s4.getUniformLocation(this._program, "u_projection")), this._vertexArrayObject = s4.createVertexArray(), s4.bindVertexArray(this._vertexArrayObject);\n let o2 = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]), l4 = s4.createBuffer();\n this._register(g4(() => s4.deleteBuffer(l4))), s4.bindBuffer(s4.ARRAY_BUFFER, l4), s4.bufferData(s4.ARRAY_BUFFER, o2, s4.STATIC_DRAW), s4.enableVertexAttribArray(3), s4.vertexAttribPointer(3, 2, this._gl.FLOAT, false, 0, 0);\n let T4 = new Uint8Array([0, 1, 2, 3]), h3 = s4.createBuffer();\n this._register(g4(() => s4.deleteBuffer(h3))), s4.bindBuffer(s4.ELEMENT_ARRAY_BUFFER, h3), s4.bufferData(s4.ELEMENT_ARRAY_BUFFER, T4, s4.STATIC_DRAW), this._attributesBuffer = y3(s4.createBuffer()), this._register(g4(() => s4.deleteBuffer(this._attributesBuffer))), s4.bindBuffer(s4.ARRAY_BUFFER, this._attributesBuffer), s4.enableVertexAttribArray(0), s4.vertexAttribPointer(0, 2, s4.FLOAT, false, Re2, 0), s4.vertexAttribDivisor(0, 1), s4.enableVertexAttribArray(1), s4.vertexAttribPointer(1, 2, s4.FLOAT, false, Re2, 2 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(1, 1), s4.enableVertexAttribArray(2), s4.vertexAttribPointer(2, 4, s4.FLOAT, false, Re2, 4 * Float32Array.BYTES_PER_ELEMENT), s4.vertexAttribDivisor(2, 1), this._updateCachedColors(a2.colors), this._register(this._themeService.onChangeColors((d3) => {\n this._updateCachedColors(d3), this._updateViewportRectangle();\n }));\n }\n renderBackgrounds() {\n this._renderVertices(this._vertices);\n }\n renderCursor() {\n this._renderVertices(this._verticesCursor);\n }\n _renderVertices(t) {\n let r = this._gl;\n r.useProgram(this._program), r.bindVertexArray(this._vertexArrayObject), r.uniformMatrix4fv(this._projectionLocation, false, ne2), r.bindBuffer(r.ARRAY_BUFFER, this._attributesBuffer), r.bufferData(r.ARRAY_BUFFER, t.attributes, r.DYNAMIC_DRAW), r.drawElementsInstanced(this._gl.TRIANGLE_STRIP, 4, r.UNSIGNED_BYTE, 0, t.count);\n }\n handleResize() {\n this._updateViewportRectangle();\n }\n setDimensions(t) {\n this._dimensions = t;\n }\n _updateCachedColors(t) {\n this._bgFloat = this._colorToFloat32Array(t.background), this._cursorFloat = this._colorToFloat32Array(t.cursor);\n }\n _updateViewportRectangle() {\n this._addRectangleFloat(this._vertices.attributes, 0, 0, 0, this._terminal.cols * this._dimensions.device.cell.width, this._terminal.rows * this._dimensions.device.cell.height, this._bgFloat);\n }\n updateBackgrounds(t) {\n let r = this._terminal, n11 = this._vertices, a2 = 1, s4, o2, l4, T4, h3, d3, _5, c2, u3, p3, C4;\n for (s4 = 0; s4 < r.rows; s4++) {\n for (l4 = -1, T4 = 0, h3 = 0, d3 = false, o2 = 0; o2 < r.cols; o2++) _5 = (s4 * r.cols + o2) * y0, c2 = t.cells[_5 + S0], u3 = t.cells[_5 + R0], p3 = !!(u3 & 67108864), (c2 !== T4 || u3 !== h3 && (d3 || p3)) && ((T4 !== 0 || d3 && h3 !== 0) && (C4 = a2++ * u0, this._updateRectangle(n11, C4, h3, T4, l4, o2, s4)), l4 = o2, T4 = c2, h3 = u3, d3 = p3);\n (T4 !== 0 || d3 && h3 !== 0) && (C4 = a2++ * u0, this._updateRectangle(n11, C4, h3, T4, l4, r.cols, s4));\n }\n n11.count = a2;\n }\n updateCursor(t) {\n let r = this._verticesCursor, n11 = t.cursor;\n if (!n11 || n11.style === "block") {\n r.count = 0;\n return;\n }\n let a2, s4 = 0;\n (n11.style === "bar" || n11.style === "outline") && (a2 = s4++ * u0, this._addRectangleFloat(r.attributes, a2, n11.x * this._dimensions.device.cell.width, n11.y * this._dimensions.device.cell.height, n11.style === "bar" ? n11.dpr * n11.cursorWidth : n11.dpr, this._dimensions.device.cell.height, this._cursorFloat)), (n11.style === "underline" || n11.style === "outline") && (a2 = s4++ * u0, this._addRectangleFloat(r.attributes, a2, n11.x * this._dimensions.device.cell.width, (n11.y + 1) * this._dimensions.device.cell.height - n11.dpr, n11.width * this._dimensions.device.cell.width, n11.dpr, this._cursorFloat)), n11.style === "outline" && (a2 = s4++ * u0, this._addRectangleFloat(r.attributes, a2, n11.x * this._dimensions.device.cell.width, n11.y * this._dimensions.device.cell.height, n11.width * this._dimensions.device.cell.width, n11.dpr, this._cursorFloat), a2 = s4++ * u0, this._addRectangleFloat(r.attributes, a2, (n11.x + n11.width) * this._dimensions.device.cell.width - n11.dpr, n11.y * this._dimensions.device.cell.height, n11.dpr, this._dimensions.device.cell.height, this._cursorFloat)), r.count = s4;\n }\n _updateRectangle(t, r, n11, a2, s4, o2, l4) {\n if (n11 & 67108864) switch (n11 & 50331648) {\n case 16777216:\n case 33554432:\n c0 = this._themeService.colors.ansi[n11 & 255].rgba;\n break;\n case 50331648:\n c0 = (n11 & 16777215) << 8;\n break;\n case 0:\n default:\n c0 = this._themeService.colors.foreground.rgba;\n }\n else switch (a2 & 50331648) {\n case 16777216:\n case 33554432:\n c0 = this._themeService.colors.ansi[a2 & 255].rgba;\n break;\n case 50331648:\n c0 = (a2 & 16777215) << 8;\n break;\n case 0:\n default:\n c0 = this._themeService.colors.background.rgba;\n }\n t.attributes.length < r + 4 && (t.attributes = dt(t.attributes, this._terminal.rows * this._terminal.cols * u0)), ut = s4 * this._dimensions.device.cell.width, pt = l4 * this._dimensions.device.cell.height, Qt = (c0 >> 24 & 255) / 255, Ct = (c0 >> 16 & 255) / 255, mt = (c0 >> 8 & 255) / 255, ft = 1, this._addRectangle(t.attributes, r, ut, pt, (o2 - s4) * this._dimensions.device.cell.width, this._dimensions.device.cell.height, Qt, Ct, mt, ft);\n }\n _addRectangle(t, r, n11, a2, s4, o2, l4, T4, h3, d3) {\n t[r] = n11 / this._dimensions.device.canvas.width, t[r + 1] = a2 / this._dimensions.device.canvas.height, t[r + 2] = s4 / this._dimensions.device.canvas.width, t[r + 3] = o2 / this._dimensions.device.canvas.height, t[r + 4] = l4, t[r + 5] = T4, t[r + 6] = h3, t[r + 7] = d3;\n }\n _addRectangleFloat(t, r, n11, a2, s4, o2, l4) {\n t[r] = n11 / this._dimensions.device.canvas.width, t[r + 1] = a2 / this._dimensions.device.canvas.height, t[r + 2] = s4 / this._dimensions.device.canvas.width, t[r + 3] = o2 / this._dimensions.device.canvas.height, t[r + 4] = l4[0], t[r + 5] = l4[1], t[r + 6] = l4[2], t[r + 7] = l4[3];\n }\n _colorToFloat32Array(t) {\n return new Float32Array([(t.rgba >> 24 & 255) / 255, (t.rgba >> 16 & 255) / 255, (t.rgba >> 8 & 255) / 255, (t.rgba & 255) / 255]);\n }\n };\n var de = class extends W3 {\n constructor(t, r, n11, a2, s4, o2, l4, T4) {\n super();\n this._container = r;\n this._alpha = s4;\n this._coreBrowserService = o2;\n this._optionsService = l4;\n this._themeService = T4;\n this._deviceCharWidth = 0;\n this._deviceCharHeight = 0;\n this._deviceCellWidth = 0;\n this._deviceCellHeight = 0;\n this._deviceCharLeft = 0;\n this._deviceCharTop = 0;\n this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add(`xterm-${n11}-layer`), this._canvas.style.zIndex = a2.toString(), this._initCanvas(), this._container.appendChild(this._canvas), this._register(this._themeService.onChangeColors((h3) => {\n this._refreshCharAtlas(t, h3), this.reset(t);\n })), this._register(g4(() => {\n this._canvas.remove();\n }));\n }\n _initCanvas() {\n this._ctx = y3(this._canvas.getContext("2d", { alpha: this._alpha })), this._alpha || this._clearAll();\n }\n handleBlur(t) {\n }\n handleFocus(t) {\n }\n handleCursorMove(t) {\n }\n handleGridChanged(t, r, n11) {\n }\n handleSelectionChanged(t, r, n11, a2 = false) {\n }\n _setTransparency(t, r) {\n if (r === this._alpha) return;\n let n11 = this._canvas;\n this._alpha = r, this._canvas = this._canvas.cloneNode(), this._initCanvas(), this._container.replaceChild(this._canvas, n11), this._refreshCharAtlas(t, this._themeService.colors), this.handleGridChanged(t, 0, t.rows - 1);\n }\n _refreshCharAtlas(t, r) {\n this._deviceCharWidth <= 0 && this._deviceCharHeight <= 0 || (this._charAtlas = ee2(t, this._optionsService.rawOptions, r, this._deviceCellWidth, this._deviceCellHeight, this._deviceCharWidth, this._deviceCharHeight, this._coreBrowserService.dpr, 2048), this._charAtlas.warmUp());\n }\n resize(t, r) {\n this._deviceCellWidth = r.device.cell.width, this._deviceCellHeight = r.device.cell.height, this._deviceCharWidth = r.device.char.width, this._deviceCharHeight = r.device.char.height, this._deviceCharLeft = r.device.char.left, this._deviceCharTop = r.device.char.top, this._canvas.width = r.device.canvas.width, this._canvas.height = r.device.canvas.height, this._canvas.style.width = `${r.css.canvas.width}px`, this._canvas.style.height = `${r.css.canvas.height}px`, this._alpha || this._clearAll(), this._refreshCharAtlas(t, this._themeService.colors);\n }\n _fillBottomLineAtCells(t, r, n11 = 1) {\n this._ctx.fillRect(t * this._deviceCellWidth, (r + 1) * this._deviceCellHeight - this._coreBrowserService.dpr - 1, n11 * this._deviceCellWidth, this._coreBrowserService.dpr);\n }\n _clearAll() {\n this._alpha ? this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(0, 0, this._canvas.width, this._canvas.height));\n }\n _clearCells(t, r, n11, a2) {\n this._alpha ? this._ctx.clearRect(t * this._deviceCellWidth, r * this._deviceCellHeight, n11 * this._deviceCellWidth, a2 * this._deviceCellHeight) : (this._ctx.fillStyle = this._themeService.colors.background.css, this._ctx.fillRect(t * this._deviceCellWidth, r * this._deviceCellHeight, n11 * this._deviceCellWidth, a2 * this._deviceCellHeight));\n }\n _fillCharTrueColor(t, r, n11, a2) {\n this._ctx.font = this._getFont(t, false, false), this._ctx.textBaseline = q0, this._clipCell(n11, a2, r.getWidth()), this._ctx.fillText(r.getChars(), n11 * this._deviceCellWidth + this._deviceCharLeft, a2 * this._deviceCellHeight + this._deviceCharTop + this._deviceCharHeight);\n }\n _clipCell(t, r, n11) {\n this._ctx.beginPath(), this._ctx.rect(t * this._deviceCellWidth, r * this._deviceCellHeight, n11 * this._deviceCellWidth, this._deviceCellHeight), this._ctx.clip();\n }\n _getFont(t, r, n11) {\n let a2 = r ? t.options.fontWeightBold : t.options.fontWeight;\n return `${n11 ? "italic" : ""} ${a2} ${t.options.fontSize * this._coreBrowserService.dpr}px ${t.options.fontFamily}`;\n }\n };\n var _e = class extends de {\n constructor(e, t, r, n11, a2, s4, o2) {\n super(r, e, "link", t, true, a2, s4, o2), this._register(n11.onShowLinkUnderline((l4) => this._handleShowLinkUnderline(l4))), this._register(n11.onHideLinkUnderline((l4) => this._handleHideLinkUnderline(l4)));\n }\n resize(e, t) {\n super.resize(e, t), this._state = void 0;\n }\n reset(e) {\n this._clearCurrentLink();\n }\n _clearCurrentLink() {\n if (this._state) {\n this._clearCells(this._state.x1, this._state.y1, this._state.cols - this._state.x1, 1);\n let e = this._state.y2 - this._state.y1 - 1;\n e > 0 && this._clearCells(0, this._state.y1 + 1, this._state.cols, e), this._clearCells(0, this._state.y2, this._state.x2, 1), this._state = void 0;\n }\n }\n _handleShowLinkUnderline(e) {\n if (e.fg === 257 ? this._ctx.fillStyle = this._themeService.colors.background.css : e.fg !== void 0 && lt(e.fg) ? this._ctx.fillStyle = this._themeService.colors.ansi[e.fg].css : this._ctx.fillStyle = this._themeService.colors.foreground.css, e.y1 === e.y2) this._fillBottomLineAtCells(e.x1, e.y1, e.x2 - e.x1);\n else {\n this._fillBottomLineAtCells(e.x1, e.y1, e.cols - e.x1);\n for (let t = e.y1 + 1; t < e.y2; t++) this._fillBottomLineAtCells(0, t, e.cols);\n this._fillBottomLineAtCells(0, e.y2, e.x2);\n }\n this._state = e;\n }\n _handleHideLinkUnderline(e) {\n this._clearCurrentLink();\n }\n };\n var xe = class {\n constructor(e, t, r, n11) {\n this._node = e, this._type = t, this._handler = r, this._options = n11, e.addEventListener(t, r, n11);\n }\n dispose() {\n !this._node || !this._handler || (this._node.removeEventListener(this._type, this._handler, this._options), this._node = null, this._handler = null);\n }\n };\n function ce2(i5, e, t, r) {\n return new xe(i5, e, t, r);\n }\n var ue = class extends W3 {\n constructor(t, r, n11, a2, s4, o2, l4, T4, h3 = true, d3) {\n super();\n this._terminal = t;\n this._characterJoinerService = r;\n this._charSizeService = n11;\n this._coreBrowserService = a2;\n this._coreService = s4;\n this._decorationService = o2;\n this._optionsService = l4;\n this._themeService = T4;\n this._customGlyphs = h3;\n this._cursorBlinkStateManager = this._register(new C0());\n this._charAtlasDisposable = this._register(new C0());\n this._observerDisposable = this._register(new C0());\n this._model = new Te2();\n this._rowHasBlinkingCells = [];\n this._rowHasBlinkingCellsCount = 0;\n this._workCell = new ie2();\n this._rectangleRenderer = this._register(new C0());\n this._glyphRenderer = this._register(new C0());\n this._onChangeTextureAtlas = this._register(new U4());\n this.onChangeTextureAtlas = this._onChangeTextureAtlas.event;\n this._onAddTextureAtlasCanvas = this._register(new U4());\n this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event;\n this._onRemoveTextureAtlasCanvas = this._register(new U4());\n this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event;\n this._onRequestRedraw = this._register(new U4());\n this.onRequestRedraw = this._onRequestRedraw.event;\n this._onContextLoss = this._register(new U4());\n this.onContextLoss = this._onContextLoss.event;\n this._canvas = this._coreBrowserService.mainDocument.createElement("canvas");\n let _5 = { antialias: false, depth: false, preserveDrawingBuffer: d3 };\n if (this._gl = this._canvas.getContext("webgl2", _5), !this._gl) throw new Error("WebGL2 not supported " + this._gl);\n this._register(this._themeService.onChangeColors(() => this._handleColorChange())), this._cellColorResolver = new Y0(this._terminal, this._optionsService, this._model.selection, this._decorationService, this._coreBrowserService, this._themeService), this._core = this._terminal._core, this._renderLayers = [new _e(this._core.screenElement, 2, this._terminal, this._core.linkifier, this._coreBrowserService, l4, this._themeService)], this.dimensions = Ke2(), this._devicePixelRatio = this._coreBrowserService.dpr, this._updateDimensions(), this._updateCursorBlink(), this._register(l4.onOptionChange(() => this._handleOptionsChanged())), this._textBlinkStateManager = this._register(new re(() => this._requestRedrawViewport(), this._coreBrowserService, this._optionsService)), this._resetBlinkingRowState(), this._deviceMaxTextureSize = this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE), this._register(ce2(this._canvas, "webglcontextlost", (c2) => {\n console.log("webglcontextlost event received"), c2.preventDefault(), this._contextRestorationTimeout = setTimeout(() => {\n this._contextRestorationTimeout = void 0, console.warn("webgl context not restored; firing onContextLoss"), this._onContextLoss.fire(c2);\n }, 3e3);\n })), this._register(ce2(this._canvas, "webglcontextrestored", (c2) => {\n console.warn("webglcontextrestored event received"), clearTimeout(this._contextRestorationTimeout), this._contextRestorationTimeout = void 0, Me(this._terminal), this._initializeWebGLState(), this._requestRedrawViewport();\n })), this._observerDisposable.value = Ae2(this._canvas, this._coreBrowserService.window, (c2, u3) => this._setCanvasDevicePixelDimensions(c2, u3)), this._register(this._coreBrowserService.onWindowChange((c2) => {\n this._observerDisposable.value = Ae2(this._canvas, c2, (u3, p3) => this._setCanvasDevicePixelDimensions(u3, p3));\n })), this._register(ce2(this._coreBrowserService.mainDocument, "mousedown", () => this._cursorBlinkStateManager.value?.restartBlinkAnimation())), this._core.screenElement.appendChild(this._canvas), [this._rectangleRenderer.value, this._glyphRenderer.value] = this._initializeWebGLState(), this._isAttached = this._core.screenElement.isConnected, this._register(g4(() => {\n for (let c2 of this._renderLayers) c2.dispose();\n this._canvas.parentElement?.removeChild(this._canvas), Me(this._terminal);\n }));\n }\n get textureAtlas() {\n return this._charAtlas?.pages[0].canvas;\n }\n _handleColorChange() {\n this._refreshCharAtlas(), this._clearModel(true);\n }\n handleDevicePixelRatioChange() {\n this._devicePixelRatio !== this._coreBrowserService.dpr && (this._devicePixelRatio = this._coreBrowserService.dpr, this.handleResize(this._terminal.cols, this._terminal.rows));\n }\n handleResize(t, r) {\n this._updateDimensions(), this._model.resize(this._terminal.cols, this._terminal.rows), this._resetBlinkingRowState();\n for (let n11 of this._renderLayers) n11.resize(this._terminal, this.dimensions);\n this._canvas.width = this.dimensions.device.canvas.width, this._canvas.height = this.dimensions.device.canvas.height, this._canvas.style.width = `${this.dimensions.css.canvas.width}px`, this._canvas.style.height = `${this.dimensions.css.canvas.height}px`, this._core.screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._core.screenElement.style.height = `${this.dimensions.css.canvas.height}px`, this._rectangleRenderer.value?.setDimensions(this.dimensions), this._rectangleRenderer.value?.handleResize(), this._glyphRenderer.value?.setDimensions(this.dimensions), this._glyphRenderer.value?.handleResize(), this._refreshCharAtlas(), this._clearModel(false), this._onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1, sync: true });\n }\n handleCharSizeChanged() {\n this.handleResize(this._terminal.cols, this._terminal.rows);\n }\n handleBlur() {\n for (let t of this._renderLayers) t.handleBlur(this._terminal);\n this._cursorBlinkStateManager.value?.pause(), this._requestRedrawViewport();\n }\n handleFocus() {\n for (let t of this._renderLayers) t.handleFocus(this._terminal);\n this._cursorBlinkStateManager.value?.resume(), this._requestRedrawViewport();\n }\n handleViewportVisibilityChange(t) {\n this._textBlinkStateManager.setViewportVisible(t);\n }\n handleSelectionChanged(t, r, n11) {\n for (let a2 of this._renderLayers) a2.handleSelectionChanged(this._terminal, t, r, n11);\n this._model.selection.update(this._core, t, r, n11), this._requestRedrawViewport();\n }\n handleCursorMove() {\n for (let t of this._renderLayers) t.handleCursorMove(this._terminal);\n this._cursorBlinkStateManager.value?.restartBlinkAnimation();\n }\n _handleOptionsChanged() {\n this._updateDimensions(), this._refreshCharAtlas(), this._updateCursorBlink();\n }\n _initializeWebGLState() {\n return this._rectangleRenderer.value = new he(this._terminal, this._gl, this.dimensions, this._themeService), this._glyphRenderer.value = new oe2(this._terminal, this._gl, this.dimensions, this._optionsService), this.handleCharSizeChanged(), [this._rectangleRenderer.value, this._glyphRenderer.value];\n }\n _refreshCharAtlas() {\n if (this.dimensions.device.char.width <= 0 && this.dimensions.device.char.height <= 0) {\n this._isAttached = false;\n return;\n }\n let t = ee2(this._terminal, this._optionsService.rawOptions, this._themeService.colors, this.dimensions.device.cell.width, this.dimensions.device.cell.height, this.dimensions.device.char.width, this.dimensions.device.char.height, this._coreBrowserService.dpr, this._deviceMaxTextureSize, this._customGlyphs);\n this._charAtlas !== t && (this._onChangeTextureAtlas.fire(t.pages[0].canvas), this._charAtlasDisposable.value = ke2(_0.forward(t.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas), _0.forward(t.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas))), this._charAtlas = t, this._charAtlas.warmUp(), this._glyphRenderer.value?.setAtlas(this._charAtlas);\n }\n _clearModel(t) {\n this._model.clear(), t && this._glyphRenderer.value?.clear();\n }\n clearTextureAtlas() {\n this._charAtlas?.clearTexture(), this._clearModel(true), this._requestRedrawViewport();\n }\n clear() {\n this._clearModel(true);\n for (let t of this._renderLayers) t.reset(this._terminal);\n this._resetBlinkingRowState(), this._textBlinkStateManager.setNeedsBlinkInViewport(false), this._cursorBlinkStateManager.value?.restartBlinkAnimation(), this._updateCursorBlink();\n }\n renderRows(t, r) {\n if (!this._isAttached) if (this._core.screenElement?.isConnected && this._charSizeService.width && this._charSizeService.height) this._updateDimensions(), this._refreshCharAtlas(), this._isAttached = true;\n else return;\n for (let n11 of this._renderLayers) n11.handleGridChanged(this._terminal, t, r);\n !this._glyphRenderer.value || !this._rectangleRenderer.value || (this._glyphRenderer.value.beginFrame() ? (this._clearModel(true), this._updateModel(0, this._terminal.rows - 1)) : this._updateModel(t, r), this._rectangleRenderer.value.renderBackgrounds(), this._glyphRenderer.value.render(this._model), (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible) && this._rectangleRenderer.value.renderCursor());\n }\n _updateCursorBlink() {\n this._coreService.decPrivateModes.cursorBlink ?? this._terminal.options.cursorBlink ? this._cursorBlinkStateManager.value = new te(() => {\n this._requestRedrawCursor();\n }, this._coreBrowserService) : this._cursorBlinkStateManager.clear(), this._requestRedrawCursor();\n }\n _updateModel(t, r) {\n let n11 = this._core, a2 = this._workCell, s4, o2, l4, T4, h3, d3, _5 = 0, c2 = true, u3, p3, C4, Q3, m4, R4, F4, b4, A4;\n t = Et(t, n11.rows - 1, 0), r = Et(r, n11.rows - 1, 0);\n let X3 = this._coreService.decPrivateModes.cursorStyle ?? n11.options.cursorStyle ?? "block", z4 = this._terminal.buffer.active.baseY + this._terminal.buffer.active.cursorY, x0 = z4 - n11.buffer.ydisp, e0 = Math.min(this._terminal.buffer.active.cursorX, n11.cols - 1), T0 = -1, M4 = this._coreService.isCursorInitialized && !this._coreService.isCursorHidden && (!this._cursorBlinkStateManager.value || this._cursorBlinkStateManager.value.isCursorVisible);\n this._model.cursor = void 0;\n let l0 = false;\n for (o2 = t; o2 <= r; o2++) {\n l4 = o2 + n11.buffer.ydisp, T4 = n11.buffer.lines.get(l4);\n let t0 = false;\n for (this._model.lineLengths[o2] = 0, C4 = z4 === l4, _5 = 0, h3 = this._characterJoinerService.getJoinedCharacters(l4), b4 = 0; b4 < n11.cols; b4++) {\n if (s4 = this._cellColorResolver.result.bg, T4.loadCell(b4, a2), b4 === 0 && (s4 = this._cellColorResolver.result.bg), d3 = false, c2 = b4 >= _5, u3 = b4, h3.length > 0 && b4 === h3[0][0] && c2) {\n p3 = h3.shift();\n let Y2 = this._model.selection.isCellSelected(this._terminal, p3[0], l4);\n for (F4 = p3[0] + 1; F4 < p3[1]; F4++) c2 &&= Y2 === this._model.selection.isCellSelected(this._terminal, F4, l4);\n c2 &&= !C4 || e0 < p3[0] || e0 >= p3[1], c2 ? (d3 = true, a2 = new De2(a2, T4.translateToString(true, p3[0], p3[1]), p3[1] - p3[0]), u3 = p3[1] - 1) : _5 = p3[1];\n }\n if (Q3 = a2.getChars(), m4 = a2.getCode(), F4 = (o2 * n11.cols + b4) * y0, !t0 && a2.isBlink() && (t0 = true), this._cellColorResolver.resolve(a2, b4, l4, this.dimensions.device.cell.width, this.dimensions.device.cell.height), M4 && l4 === z4 && (b4 === e0 && (this._model.cursor = { x: e0, y: x0, width: a2.getWidth(), style: this._coreBrowserService.isFocused ? X3 : n11.options.cursorInactiveStyle, cursorWidth: n11.options.cursorWidth, dpr: this._devicePixelRatio }, T0 = e0 + a2.getWidth() - 1), b4 >= e0 && b4 <= T0 && (this._coreBrowserService.isFocused && X3 === "block" || this._coreBrowserService.isFocused === false && n11.options.cursorInactiveStyle === "block") && (this._cellColorResolver.result.fg = 50331648 | this._themeService.colors.cursorAccent.rgba >> 8 & 16777215, this._cellColorResolver.result.bg = 50331648 | this._themeService.colors.cursor.rgba >> 8 & 16777215)), this._textBlinkStateManager.isEnabled && !this._textBlinkStateManager.isBlinkOn && a2.isBlink() && (this._cellColorResolver.result.fg |= 1073741824), m4 !== 0 && (this._model.lineLengths[o2] = b4 + 1), !(this._model.cells[F4] === m4 && this._model.cells[F4 + S0] === this._cellColorResolver.result.bg && this._model.cells[F4 + R0] === this._cellColorResolver.result.fg && this._model.cells[F4 + le] === this._cellColorResolver.result.ext) && (l0 = true, Q3.length > 1 && (m4 |= ct2), this._model.cells[F4] = m4, this._model.cells[F4 + S0] = this._cellColorResolver.result.bg, this._model.cells[F4 + R0] = this._cellColorResolver.result.fg, this._model.cells[F4 + le] = this._cellColorResolver.result.ext, R4 = a2.getWidth(), this._glyphRenderer.value.updateCell(b4, o2, m4, this._cellColorResolver.result.bg, this._cellColorResolver.result.fg, this._cellColorResolver.result.ext, Q3, R4, s4), d3)) {\n for (a2 = this._workCell, b4++; b4 <= u3; b4++) A4 = (o2 * n11.cols + b4) * y0, this._glyphRenderer.value.updateCell(b4, o2, 0, 0, 0, 0, "", 0, 0), this._model.cells[A4] = 0, this._model.cells[A4 + S0] = this._cellColorResolver.result.bg, this._model.cells[A4 + R0] = this._cellColorResolver.result.fg, this._model.cells[A4 + le] = this._cellColorResolver.result.ext;\n b4--;\n }\n }\n this._setRowBlinkState(o2, t0);\n }\n l0 && this._rectangleRenderer.value.updateBackgrounds(this._model), this._rectangleRenderer.value.updateCursor(this._model), this._updateTextBlinkState();\n }\n _resetBlinkingRowState() {\n this._rowHasBlinkingCells = new Array(this._terminal.rows).fill(false), this._rowHasBlinkingCellsCount = 0;\n }\n _setRowBlinkState(t, r) {\n this._rowHasBlinkingCells[t] !== r && (this._rowHasBlinkingCells[t] = r, this._rowHasBlinkingCellsCount += r ? 1 : -1);\n }\n _updateTextBlinkState() {\n this._textBlinkStateManager.setNeedsBlinkInViewport(this._rowHasBlinkingCellsCount > 0);\n }\n _updateDimensions() {\n !this._charSizeService.width || !this._charSizeService.height || (this.dimensions.device.char.width = Math.floor(this._charSizeService.width * this._devicePixelRatio), this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * this._devicePixelRatio), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.top = this._optionsService.rawOptions.lineHeight === 1 ? 0 : Math.round((this.dimensions.device.cell.height - this.dimensions.device.char.height) / 2), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.char.left = Math.floor(this._optionsService.rawOptions.letterSpacing / 2), this.dimensions.device.canvas.height = this._terminal.rows * this.dimensions.device.cell.height, this.dimensions.device.canvas.width = this._terminal.cols * this.dimensions.device.cell.width, this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / this._devicePixelRatio), this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / this._devicePixelRatio), this.dimensions.css.cell.height = this.dimensions.device.cell.height / this._devicePixelRatio, this.dimensions.css.cell.width = this.dimensions.device.cell.width / this._devicePixelRatio);\n }\n _setCanvasDevicePixelDimensions(t, r) {\n this._canvas.width === t && this._canvas.height === r || (this._canvas.width = t, this._canvas.height = r, this._onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1, sync: true }));\n }\n _requestRedrawViewport() {\n this._onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1 });\n }\n _requestRedrawCursor() {\n let t = this._terminal.buffer.active.cursorY;\n this._onRequestRedraw.fire({ start: t, end: t });\n }\n };\n var De2 = class extends s0 {\n constructor(t, r, n11) {\n super();\n this.content = 0;\n this.combinedData = "";\n this.fg = t.fg, this.bg = t.bg, this.combinedData = r, this._width = n11;\n }\n isCombined() {\n return 2097152;\n }\n getWidth() {\n return this._width;\n }\n getChars() {\n return this.combinedData;\n }\n getCode() {\n return 2097151;\n }\n setFromCharData(t) {\n throw new Error("not implemented");\n }\n getAsCharData() {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n };\n function Et(i5, e, t = 0) {\n return Math.max(Math.min(i5, e), t);\n }\n var bt2 = class extends W3 {\n constructor(t) {\n if (fe && Ve() < 16) {\n let r = { antialias: false, depth: false, preserveDrawingBuffer: true };\n if (!document.createElement("canvas").getContext("webgl2", r)) throw new Error("Webgl2 is only supported on Safari 16 and above");\n }\n super();\n this._onChangeTextureAtlas = this._register(new U4());\n this.onChangeTextureAtlas = this._onChangeTextureAtlas.event;\n this._onAddTextureAtlasCanvas = this._register(new U4());\n this.onAddTextureAtlasCanvas = this._onAddTextureAtlasCanvas.event;\n this._onRemoveTextureAtlasCanvas = this._register(new U4());\n this.onRemoveTextureAtlasCanvas = this._onRemoveTextureAtlasCanvas.event;\n this._onContextLoss = this._register(new U4());\n this.onContextLoss = this._onContextLoss.event;\n this._customGlyphs = t?.customGlyphs ?? true, this._preserveDrawingBuffer = t?.preserveDrawingBuffer;\n }\n activate(t) {\n let r = t._core;\n if (!t.element) {\n this._register(r.onWillOpen(() => this.activate(t)));\n return;\n }\n this._terminal = t;\n let n11 = r.coreService, a2 = r.optionsService, s4 = r, o2 = s4._renderService, l4 = s4._characterJoinerService, T4 = s4._charSizeService, h3 = s4._coreBrowserService, d3 = s4._decorationService, _5 = s4._themeService;\n this._renderer = this._register(new ue(t, l4, T4, h3, n11, d3, a2, _5, this._customGlyphs, this._preserveDrawingBuffer)), this._register(_0.forward(this._renderer.onContextLoss, this._onContextLoss)), this._register(_0.forward(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas)), this._register(_0.forward(this._renderer.onAddTextureAtlasCanvas, this._onAddTextureAtlasCanvas)), this._register(_0.forward(this._renderer.onRemoveTextureAtlasCanvas, this._onRemoveTextureAtlasCanvas)), o2.setRenderer(this._renderer), this._register(g4(() => {\n if (this._terminal._core._store._isDisposed) return;\n let c2 = this._terminal._core._renderService;\n c2.setRenderer(this._terminal._core._createRenderer()), c2.handleResize(t.cols, t.rows);\n }));\n }\n get textureAtlas() {\n return this._renderer?.textureAtlas;\n }\n clearTextureAtlas() {\n this._renderer?.clearTextureAtlas();\n }\n };\n\n // node_modules/@xterm/addon-ligatures/lib/addon-ligatures.mjs\n var Po = Object.create;\n var _n = Object.defineProperty;\n var Go = Object.getOwnPropertyDescriptor;\n var No = Object.getOwnPropertyNames;\n var Ho = Object.getPrototypeOf;\n var _o = Object.prototype.hasOwnProperty;\n var tt2 = ((s4) => typeof __require < "u" ? __require : typeof Proxy < "u" ? new Proxy(s4, { get: (f5, p3) => (typeof __require < "u" ? __require : f5)[p3] }) : s4)(function(s4) {\n if (typeof __require < "u") return __require.apply(this, arguments);\n throw Error(\'Dynamic require of "\' + s4 + \'" is not supported\');\n });\n var Ur = (s4, f5) => () => (f5 || s4((f5 = { exports: {} }).exports, f5), f5.exports);\n var zo = (s4, f5, p3, h3) => {\n if (f5 && typeof f5 == "object" || typeof f5 == "function") for (let v6 of No(f5)) !_o.call(s4, v6) && v6 !== p3 && _n(s4, v6, { get: () => f5[v6], enumerable: !(h3 = Go(f5, v6)) || h3.enumerable });\n return s4;\n };\n var Wo = (s4, f5, p3) => (p3 = s4 != null ? Po(Ho(s4)) : {}, zo(f5 || !s4 || !s4.__esModule ? _n(p3, "default", { value: s4, enumerable: true }) : p3, s4));\n var Wn = Ur((Or, zn2) => {\n (function(s4, f5) {\n typeof Or == "object" && typeof zn2 < "u" ? f5(Or) : typeof define == "function" && define.amd ? define(["exports"], f5) : f5(s4.opentype = s4.opentype || {});\n })(Or, (function(s4) {\n "use strict";\n var f5 = 0, p3 = -3;\n function h3() {\n this.table = new Uint16Array(16), this.trans = new Uint16Array(288);\n }\n function v6(e, r) {\n this.source = e, this.sourceIndex = 0, this.tag = 0, this.bitcount = 0, this.dest = r, this.destLen = 0, this.ltree = new h3(), this.dtree = new h3();\n }\n var x5 = new h3(), S4 = new h3(), L6 = new Uint8Array(30), k5 = new Uint16Array(30), D7 = new Uint8Array(30), V5 = new Uint16Array(30), N3 = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), W6 = new h3(), X3 = new Uint8Array(320);\n function ve3(e, r, t, n11) {\n var a2, i5;\n for (a2 = 0; a2 < t; ++a2) e[a2] = 0;\n for (a2 = 0; a2 < 30 - t; ++a2) e[a2 + t] = a2 / t | 0;\n for (i5 = n11, a2 = 0; a2 < 30; ++a2) r[a2] = i5, i5 += 1 << e[a2];\n }\n function Ae3(e, r) {\n var t;\n for (t = 0; t < 7; ++t) e.table[t] = 0;\n for (e.table[7] = 24, e.table[8] = 152, e.table[9] = 112, t = 0; t < 24; ++t) e.trans[t] = 256 + t;\n for (t = 0; t < 144; ++t) e.trans[24 + t] = t;\n for (t = 0; t < 8; ++t) e.trans[168 + t] = 280 + t;\n for (t = 0; t < 112; ++t) e.trans[176 + t] = 144 + t;\n for (t = 0; t < 5; ++t) r.table[t] = 0;\n for (r.table[5] = 32, t = 0; t < 32; ++t) r.trans[t] = t;\n }\n var xt4 = new Uint16Array(16);\n function Dr2(e, r, t, n11) {\n var a2, i5;\n for (a2 = 0; a2 < 16; ++a2) e.table[a2] = 0;\n for (a2 = 0; a2 < n11; ++a2) e.table[r[t + a2]]++;\n for (e.table[0] = 0, i5 = 0, a2 = 0; a2 < 16; ++a2) xt4[a2] = i5, i5 += e.table[a2];\n for (a2 = 0; a2 < n11; ++a2) r[t + a2] && (e.trans[xt4[r[t + a2]]++] = a2);\n }\n function oa(e) {\n e.bitcount-- || (e.tag = e.source[e.sourceIndex++], e.bitcount = 7);\n var r = e.tag & 1;\n return e.tag >>>= 1, r;\n }\n function Se3(e, r, t) {\n if (!r) return t;\n for (; e.bitcount < 24; ) e.tag |= e.source[e.sourceIndex++] << e.bitcount, e.bitcount += 8;\n var n11 = e.tag & 65535 >>> 16 - r;\n return e.tag >>>= r, e.bitcount -= r, n11 + t;\n }\n function Ar(e, r) {\n for (; e.bitcount < 24; ) e.tag |= e.source[e.sourceIndex++] << e.bitcount, e.bitcount += 8;\n var t = 0, n11 = 0, a2 = 0, i5 = e.tag;\n do\n n11 = 2 * n11 + (i5 & 1), i5 >>>= 1, ++a2, t += r.table[a2], n11 -= r.table[a2];\n while (n11 >= 0);\n return e.tag = i5, e.bitcount -= a2, r.trans[t + n11];\n }\n function ua(e, r, t) {\n var n11, a2, i5, o2, l4, u3;\n for (n11 = Se3(e, 5, 257), a2 = Se3(e, 5, 1), i5 = Se3(e, 4, 4), o2 = 0; o2 < 19; ++o2) X3[o2] = 0;\n for (o2 = 0; o2 < i5; ++o2) {\n var c2 = Se3(e, 3, 0);\n X3[N3[o2]] = c2;\n }\n for (Dr2(W6, X3, 0, 19), l4 = 0; l4 < n11 + a2; ) {\n var d3 = Ar(e, W6);\n switch (d3) {\n case 16:\n var y5 = X3[l4 - 1];\n for (u3 = Se3(e, 2, 3); u3; --u3) X3[l4++] = y5;\n break;\n case 17:\n for (u3 = Se3(e, 3, 3); u3; --u3) X3[l4++] = 0;\n break;\n case 18:\n for (u3 = Se3(e, 7, 11); u3; --u3) X3[l4++] = 0;\n break;\n default:\n X3[l4++] = d3;\n break;\n }\n }\n Dr2(r, X3, 0, n11), Dr2(t, X3, n11, a2);\n }\n function St3(e, r, t) {\n for (; ; ) {\n var n11 = Ar(e, r);\n if (n11 === 256) return f5;\n if (n11 < 256) e.dest[e.destLen++] = n11;\n else {\n var a2, i5, o2, l4;\n for (n11 -= 257, a2 = Se3(e, L6[n11], k5[n11]), i5 = Ar(e, t), o2 = e.destLen - Se3(e, D7[i5], V5[i5]), l4 = o2; l4 < o2 + a2; ++l4) e.dest[e.destLen++] = e.dest[l4];\n }\n }\n }\n function la(e) {\n for (var r, t, n11; e.bitcount > 8; ) e.sourceIndex--, e.bitcount -= 8;\n if (r = e.source[e.sourceIndex + 1], r = 256 * r + e.source[e.sourceIndex], t = e.source[e.sourceIndex + 3], t = 256 * t + e.source[e.sourceIndex + 2], r !== (~t & 65535)) return p3;\n for (e.sourceIndex += 4, n11 = r; n11; --n11) e.dest[e.destLen++] = e.source[e.sourceIndex++];\n return e.bitcount = 0, f5;\n }\n function fa(e, r) {\n var t = new v6(e, r), n11, a2, i5;\n do {\n switch (n11 = oa(t), a2 = Se3(t, 2, 0), a2) {\n case 0:\n i5 = la(t);\n break;\n case 1:\n i5 = St3(t, x5, S4);\n break;\n case 2:\n ua(t, t.ltree, t.dtree), i5 = St3(t, t.ltree, t.dtree);\n break;\n default:\n i5 = p3;\n }\n if (i5 !== f5) throw new Error("Data error");\n } while (!n11);\n return t.destLen < t.dest.length ? typeof t.dest.slice == "function" ? t.dest.slice(0, t.destLen) : t.dest.subarray(0, t.destLen) : t.dest;\n }\n Ae3(x5, S4), ve3(L6, k5, 4, 3), ve3(D7, V5, 2, 1), L6[28] = 0, k5[28] = 258;\n var pa = fa;\n function We4(e, r, t, n11, a2) {\n return Math.pow(1 - a2, 3) * e + 3 * Math.pow(1 - a2, 2) * a2 * r + 3 * (1 - a2) * Math.pow(a2, 2) * t + Math.pow(a2, 3) * n11;\n }\n function ke3() {\n this.x1 = Number.NaN, this.y1 = Number.NaN, this.x2 = Number.NaN, this.y2 = Number.NaN;\n }\n ke3.prototype.isEmpty = function() {\n return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2);\n }, ke3.prototype.addPoint = function(e, r) {\n typeof e == "number" && ((isNaN(this.x1) || isNaN(this.x2)) && (this.x1 = e, this.x2 = e), e < this.x1 && (this.x1 = e), e > this.x2 && (this.x2 = e)), typeof r == "number" && ((isNaN(this.y1) || isNaN(this.y2)) && (this.y1 = r, this.y2 = r), r < this.y1 && (this.y1 = r), r > this.y2 && (this.y2 = r));\n }, ke3.prototype.addX = function(e) {\n this.addPoint(e, null);\n }, ke3.prototype.addY = function(e) {\n this.addPoint(null, e);\n }, ke3.prototype.addBezier = function(e, r, t, n11, a2, i5, o2, l4) {\n var u3 = this, c2 = [e, r], d3 = [t, n11], y5 = [a2, i5], g6 = [o2, l4];\n this.addPoint(e, r), this.addPoint(o2, l4);\n for (var m4 = 0; m4 <= 1; m4++) {\n var T4 = 6 * c2[m4] - 12 * d3[m4] + 6 * y5[m4], O4 = -3 * c2[m4] + 9 * d3[m4] - 9 * y5[m4] + 3 * g6[m4], F4 = 3 * d3[m4] - 3 * c2[m4];\n if (O4 === 0) {\n if (T4 === 0) continue;\n var U6 = -F4 / T4;\n 0 < U6 && U6 < 1 && (m4 === 0 && u3.addX(We4(c2[m4], d3[m4], y5[m4], g6[m4], U6)), m4 === 1 && u3.addY(We4(c2[m4], d3[m4], y5[m4], g6[m4], U6)));\n continue;\n }\n var P5 = Math.pow(T4, 2) - 4 * F4 * O4;\n if (!(P5 < 0)) {\n var I4 = (-T4 + Math.sqrt(P5)) / (2 * O4);\n 0 < I4 && I4 < 1 && (m4 === 0 && u3.addX(We4(c2[m4], d3[m4], y5[m4], g6[m4], I4)), m4 === 1 && u3.addY(We4(c2[m4], d3[m4], y5[m4], g6[m4], I4)));\n var H5 = (-T4 - Math.sqrt(P5)) / (2 * O4);\n 0 < H5 && H5 < 1 && (m4 === 0 && u3.addX(We4(c2[m4], d3[m4], y5[m4], g6[m4], H5)), m4 === 1 && u3.addY(We4(c2[m4], d3[m4], y5[m4], g6[m4], H5)));\n }\n }\n }, ke3.prototype.addQuad = function(e, r, t, n11, a2, i5) {\n var o2 = e + 0.6666666666666666 * (t - e), l4 = r + 2 / 3 * (n11 - r), u3 = o2 + 1 / 3 * (a2 - e), c2 = l4 + 1 / 3 * (i5 - r);\n this.addBezier(e, r, o2, l4, u3, c2, a2, i5);\n };\n function Z5() {\n this.commands = [], this.fill = "black", this.stroke = null, this.strokeWidth = 1;\n }\n Z5.prototype.moveTo = function(e, r) {\n this.commands.push({ type: "M", x: e, y: r });\n }, Z5.prototype.lineTo = function(e, r) {\n this.commands.push({ type: "L", x: e, y: r });\n }, Z5.prototype.curveTo = Z5.prototype.bezierCurveTo = function(e, r, t, n11, a2, i5) {\n this.commands.push({ type: "C", x1: e, y1: r, x2: t, y2: n11, x: a2, y: i5 });\n }, Z5.prototype.quadTo = Z5.prototype.quadraticCurveTo = function(e, r, t, n11) {\n this.commands.push({ type: "Q", x1: e, y1: r, x: t, y: n11 });\n }, Z5.prototype.close = Z5.prototype.closePath = function() {\n this.commands.push({ type: "Z" });\n }, Z5.prototype.extend = function(e) {\n if (e.commands) e = e.commands;\n else if (e instanceof ke3) {\n var r = e;\n this.moveTo(r.x1, r.y1), this.lineTo(r.x2, r.y1), this.lineTo(r.x2, r.y2), this.lineTo(r.x1, r.y2), this.close();\n return;\n }\n Array.prototype.push.apply(this.commands, e);\n }, Z5.prototype.getBoundingBox = function() {\n for (var e = this, r = new ke3(), t = 0, n11 = 0, a2 = 0, i5 = 0, o2 = 0; o2 < this.commands.length; o2++) {\n var l4 = e.commands[o2];\n switch (l4.type) {\n case "M":\n r.addPoint(l4.x, l4.y), t = a2 = l4.x, n11 = i5 = l4.y;\n break;\n case "L":\n r.addPoint(l4.x, l4.y), a2 = l4.x, i5 = l4.y;\n break;\n case "Q":\n r.addQuad(a2, i5, l4.x1, l4.y1, l4.x, l4.y), a2 = l4.x, i5 = l4.y;\n break;\n case "C":\n r.addBezier(a2, i5, l4.x1, l4.y1, l4.x2, l4.y2, l4.x, l4.y), a2 = l4.x, i5 = l4.y;\n break;\n case "Z":\n a2 = t, i5 = n11;\n break;\n default:\n throw new Error("Unexpected path command " + l4.type);\n }\n }\n return r.isEmpty() && r.addPoint(0, 0), r;\n }, Z5.prototype.draw = function(e) {\n var r = this;\n e.beginPath();\n for (var t = 0; t < this.commands.length; t += 1) {\n var n11 = r.commands[t];\n n11.type === "M" ? e.moveTo(n11.x, n11.y) : n11.type === "L" ? e.lineTo(n11.x, n11.y) : n11.type === "C" ? e.bezierCurveTo(n11.x1, n11.y1, n11.x2, n11.y2, n11.x, n11.y) : n11.type === "Q" ? e.quadraticCurveTo(n11.x1, n11.y1, n11.x, n11.y) : n11.type === "Z" && e.closePath();\n }\n this.fill && (e.fillStyle = this.fill, e.fill()), this.stroke && (e.strokeStyle = this.stroke, e.lineWidth = this.strokeWidth, e.stroke());\n }, Z5.prototype.toPathData = function(e) {\n var r = this;\n e = e !== void 0 ? e : 2;\n function t(l4) {\n return Math.round(l4) === l4 ? "" + Math.round(l4) : l4.toFixed(e);\n }\n function n11() {\n for (var l4 = arguments, u3 = "", c2 = 0; c2 < arguments.length; c2 += 1) {\n var d3 = l4[c2];\n d3 >= 0 && c2 > 0 && (u3 += " "), u3 += t(d3);\n }\n return u3;\n }\n for (var a2 = "", i5 = 0; i5 < this.commands.length; i5 += 1) {\n var o2 = r.commands[i5];\n o2.type === "M" ? a2 += "M" + n11(o2.x, o2.y) : o2.type === "L" ? a2 += "L" + n11(o2.x, o2.y) : o2.type === "C" ? a2 += "C" + n11(o2.x1, o2.y1, o2.x2, o2.y2, o2.x, o2.y) : o2.type === "Q" ? a2 += "Q" + n11(o2.x1, o2.y1, o2.x, o2.y) : o2.type === "Z" && (a2 += "Z");\n }\n return a2;\n }, Z5.prototype.toSVG = function(e) {\n var r = \'<path d="\';\n return r += this.toPathData(e), r += \'"\', this.fill && this.fill !== "black" && (this.fill === null ? r += \' fill="none"\' : r += \' fill="\' + this.fill + \'"\'), this.stroke && (r += \' stroke="\' + this.stroke + \'" stroke-width="\' + this.strokeWidth + \'"\'), r += "/>", r;\n }, Z5.prototype.toDOMElement = function(e) {\n var r = this.toPathData(e), t = document.createElementNS("http://www.w3.org/2000/svg", "path");\n return t.setAttribute("d", r), t;\n };\n function Tt4(e) {\n throw new Error(e);\n }\n function kt2(e, r) {\n e || Tt4(r);\n }\n var G5 = { fail: Tt4, argument: kt2, assert: kt2 }, Ft = 32768, Lt3 = 2147483648, Ve3 = {}, E5 = {}, M4 = {};\n function ge2(e) {\n return function() {\n return e;\n };\n }\n E5.BYTE = function(e) {\n return G5.argument(e >= 0 && e <= 255, "Byte value should be between 0 and 255."), [e];\n }, M4.BYTE = ge2(1), E5.CHAR = function(e) {\n return [e.charCodeAt(0)];\n }, M4.CHAR = ge2(1), E5.CHARARRAY = function(e) {\n for (var r = [], t = 0; t < e.length; t += 1) r[t] = e.charCodeAt(t);\n return r;\n }, M4.CHARARRAY = function(e) {\n return e.length;\n }, E5.USHORT = function(e) {\n return [e >> 8 & 255, e & 255];\n }, M4.USHORT = ge2(2), E5.SHORT = function(e) {\n return e >= Ft && (e = -(2 * Ft - e)), [e >> 8 & 255, e & 255];\n }, M4.SHORT = ge2(2), E5.UINT24 = function(e) {\n return [e >> 16 & 255, e >> 8 & 255, e & 255];\n }, M4.UINT24 = ge2(3), E5.ULONG = function(e) {\n return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, e & 255];\n }, M4.ULONG = ge2(4), E5.LONG = function(e) {\n return e >= Lt3 && (e = -(2 * Lt3 - e)), [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, e & 255];\n }, M4.LONG = ge2(4), E5.FIXED = E5.ULONG, M4.FIXED = M4.ULONG, E5.FWORD = E5.SHORT, M4.FWORD = M4.SHORT, E5.UFWORD = E5.USHORT, M4.UFWORD = M4.USHORT, E5.LONGDATETIME = function(e) {\n return [0, 0, 0, 0, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, e & 255];\n }, M4.LONGDATETIME = ge2(8), E5.TAG = function(e) {\n return G5.argument(e.length === 4, "Tag should be exactly 4 ASCII characters."), [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)];\n }, M4.TAG = ge2(4), E5.Card8 = E5.BYTE, M4.Card8 = M4.BYTE, E5.Card16 = E5.USHORT, M4.Card16 = M4.USHORT, E5.OffSize = E5.BYTE, M4.OffSize = M4.BYTE, E5.SID = E5.USHORT, M4.SID = M4.USHORT, E5.NUMBER = function(e) {\n return e >= -107 && e <= 107 ? [e + 139] : e >= 108 && e <= 1131 ? (e = e - 108, [(e >> 8) + 247, e & 255]) : e >= -1131 && e <= -108 ? (e = -e - 108, [(e >> 8) + 251, e & 255]) : e >= -32768 && e <= 32767 ? E5.NUMBER16(e) : E5.NUMBER32(e);\n }, M4.NUMBER = function(e) {\n return E5.NUMBER(e).length;\n }, E5.NUMBER16 = function(e) {\n return [28, e >> 8 & 255, e & 255];\n }, M4.NUMBER16 = ge2(3), E5.NUMBER32 = function(e) {\n return [29, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, e & 255];\n }, M4.NUMBER32 = ge2(5), E5.REAL = function(e) {\n var r = e.toString(), t = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(r);\n if (t) {\n var n11 = parseFloat("1e" + ((t[2] ? +t[2] : 0) + t[1].length));\n r = (Math.round(e * n11) / n11).toString();\n }\n for (var a2 = "", i5 = 0, o2 = r.length; i5 < o2; i5 += 1) {\n var l4 = r[i5];\n l4 === "e" ? a2 += r[++i5] === "-" ? "c" : "b" : l4 === "." ? a2 += "a" : l4 === "-" ? a2 += "e" : a2 += l4;\n }\n a2 += a2.length & 1 ? "f" : "ff";\n for (var u3 = [30], c2 = 0, d3 = a2.length; c2 < d3; c2 += 2) u3.push(parseInt(a2.substr(c2, 2), 16));\n return u3;\n }, M4.REAL = function(e) {\n return E5.REAL(e).length;\n }, E5.NAME = E5.CHARARRAY, M4.NAME = M4.CHARARRAY, E5.STRING = E5.CHARARRAY, M4.STRING = M4.CHARARRAY, Ve3.UTF8 = function(e, r, t) {\n for (var n11 = [], a2 = t, i5 = 0; i5 < a2; i5++, r += 1) n11[i5] = e.getUint8(r);\n return String.fromCharCode.apply(null, n11);\n }, Ve3.UTF16 = function(e, r, t) {\n for (var n11 = [], a2 = t / 2, i5 = 0; i5 < a2; i5++, r += 2) n11[i5] = e.getUint16(r);\n return String.fromCharCode.apply(null, n11);\n }, E5.UTF16 = function(e) {\n for (var r = [], t = 0; t < e.length; t += 1) {\n var n11 = e.charCodeAt(t);\n r[r.length] = n11 >> 8 & 255, r[r.length] = n11 & 255;\n }\n return r;\n }, M4.UTF16 = function(e) {\n return e.length * 2;\n };\n var Mr = { "x-mac-croatian": "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\u0160\\u2122\\xB4\\xA8\\u2260\\u017D\\xD8\\u221E\\xB1\\u2264\\u2265\\u2206\\xB5\\u2202\\u2211\\u220F\\u0161\\u222B\\xAA\\xBA\\u03A9\\u017E\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u0106\\xAB\\u010C\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u0110\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\uF8FF\\xA9\\u2044\\u20AC\\u2039\\u203A\\xC6\\xBB\\u2013\\xB7\\u201A\\u201E\\u2030\\xC2\\u0107\\xC1\\u010D\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u0111\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u03C0\\xCB\\u02DA\\xB8\\xCA\\xE6\\u02C7", "x-mac-cyrillic": "\\u0410\\u0411\\u0412\\u0413\\u0414\\u0415\\u0416\\u0417\\u0418\\u0419\\u041A\\u041B\\u041C\\u041D\\u041E\\u041F\\u0420\\u0421\\u0422\\u0423\\u0424\\u0425\\u0426\\u0427\\u0428\\u0429\\u042A\\u042B\\u042C\\u042D\\u042E\\u042F\\u2020\\xB0\\u0490\\xA3\\xA7\\u2022\\xB6\\u0406\\xAE\\xA9\\u2122\\u0402\\u0452\\u2260\\u0403\\u0453\\u221E\\xB1\\u2264\\u2265\\u0456\\xB5\\u0491\\u0408\\u0404\\u0454\\u0407\\u0457\\u0409\\u0459\\u040A\\u045A\\u0458\\u0405\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\u040B\\u045B\\u040C\\u045C\\u0455\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u201E\\u040E\\u045E\\u040F\\u045F\\u2116\\u0401\\u0451\\u044F\\u0430\\u0431\\u0432\\u0433\\u0434\\u0435\\u0436\\u0437\\u0438\\u0439\\u043A\\u043B\\u043C\\u043D\\u043E\\u043F\\u0440\\u0441\\u0442\\u0443\\u0444\\u0445\\u0446\\u0447\\u0448\\u0449\\u044A\\u044B\\u044C\\u044D\\u044E", "x-mac-gaelic": "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u1E02\\xB1\\u2264\\u2265\\u1E03\\u010A\\u010B\\u1E0A\\u1E0B\\u1E1E\\u1E1F\\u0120\\u0121\\u1E40\\xE6\\xF8\\u1E41\\u1E56\\u1E57\\u027C\\u0192\\u017F\\u1E60\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1E61\\u1E9B\\xFF\\u0178\\u1E6A\\u20AC\\u2039\\u203A\\u0176\\u0177\\u1E6B\\xB7\\u1EF2\\u1EF3\\u204A\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\u2663\\xD2\\xDA\\xDB\\xD9\\u0131\\xDD\\xFD\\u0174\\u0175\\u1E84\\u1E85\\u1E80\\u1E81\\u1E82\\u1E83", "x-mac-greek": "\\xC4\\xB9\\xB2\\xC9\\xB3\\xD6\\xDC\\u0385\\xE0\\xE2\\xE4\\u0384\\xA8\\xE7\\xE9\\xE8\\xEA\\xEB\\xA3\\u2122\\xEE\\xEF\\u2022\\xBD\\u2030\\xF4\\xF6\\xA6\\u20AC\\xF9\\xFB\\xFC\\u2020\\u0393\\u0394\\u0398\\u039B\\u039E\\u03A0\\xDF\\xAE\\xA9\\u03A3\\u03AA\\xA7\\u2260\\xB0\\xB7\\u0391\\xB1\\u2264\\u2265\\xA5\\u0392\\u0395\\u0396\\u0397\\u0399\\u039A\\u039C\\u03A6\\u03AB\\u03A8\\u03A9\\u03AC\\u039D\\xAC\\u039F\\u03A1\\u2248\\u03A4\\xAB\\xBB\\u2026\\xA0\\u03A5\\u03A7\\u0386\\u0388\\u0153\\u2013\\u2015\\u201C\\u201D\\u2018\\u2019\\xF7\\u0389\\u038A\\u038C\\u038E\\u03AD\\u03AE\\u03AF\\u03CC\\u038F\\u03CD\\u03B1\\u03B2\\u03C8\\u03B4\\u03B5\\u03C6\\u03B3\\u03B7\\u03B9\\u03BE\\u03BA\\u03BB\\u03BC\\u03BD\\u03BF\\u03C0\\u03CE\\u03C1\\u03C3\\u03C4\\u03B8\\u03C9\\u03C2\\u03C7\\u03C5\\u03B6\\u03CA\\u03CB\\u0390\\u03B0\\xAD", "x-mac-icelandic": "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\xDD\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\xD0\\xF0\\xDE\\xFE\\xFD\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7", "x-mac-inuit": "\\u1403\\u1404\\u1405\\u1406\\u140A\\u140B\\u1431\\u1432\\u1433\\u1434\\u1438\\u1439\\u1449\\u144E\\u144F\\u1450\\u1451\\u1455\\u1456\\u1466\\u146D\\u146E\\u146F\\u1470\\u1472\\u1473\\u1483\\u148B\\u148C\\u148D\\u148E\\u1490\\u1491\\xB0\\u14A1\\u14A5\\u14A6\\u2022\\xB6\\u14A7\\xAE\\xA9\\u2122\\u14A8\\u14AA\\u14AB\\u14BB\\u14C2\\u14C3\\u14C4\\u14C5\\u14C7\\u14C8\\u14D0\\u14EF\\u14F0\\u14F1\\u14F2\\u14F4\\u14F5\\u1505\\u14D5\\u14D6\\u14D7\\u14D8\\u14DA\\u14DB\\u14EA\\u1528\\u1529\\u152A\\u152B\\u152D\\u2026\\xA0\\u152E\\u153E\\u1555\\u1556\\u1557\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1558\\u1559\\u155A\\u155D\\u1546\\u1547\\u1548\\u1549\\u154B\\u154C\\u1550\\u157F\\u1580\\u1581\\u1582\\u1583\\u1584\\u1585\\u158F\\u1590\\u1591\\u1592\\u1593\\u1594\\u1595\\u1671\\u1672\\u1673\\u1674\\u1675\\u1676\\u1596\\u15A0\\u15A1\\u15A2\\u15A3\\u15A4\\u15A5\\u15A6\\u157C\\u0141\\u0142", "x-mac-ce": "\\xC4\\u0100\\u0101\\xC9\\u0104\\xD6\\xDC\\xE1\\u0105\\u010C\\xE4\\u010D\\u0106\\u0107\\xE9\\u0179\\u017A\\u010E\\xED\\u010F\\u0112\\u0113\\u0116\\xF3\\u0117\\xF4\\xF6\\xF5\\xFA\\u011A\\u011B\\xFC\\u2020\\xB0\\u0118\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\u0119\\xA8\\u2260\\u0123\\u012E\\u012F\\u012A\\u2264\\u2265\\u012B\\u0136\\u2202\\u2211\\u0142\\u013B\\u013C\\u013D\\u013E\\u0139\\u013A\\u0145\\u0146\\u0143\\xAC\\u221A\\u0144\\u0147\\u2206\\xAB\\xBB\\u2026\\xA0\\u0148\\u0150\\xD5\\u0151\\u014C\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\u014D\\u0154\\u0155\\u0158\\u2039\\u203A\\u0159\\u0156\\u0157\\u0160\\u201A\\u201E\\u0161\\u015A\\u015B\\xC1\\u0164\\u0165\\xCD\\u017D\\u017E\\u016A\\xD3\\xD4\\u016B\\u016E\\xDA\\u016F\\u0170\\u0171\\u0172\\u0173\\xDD\\xFD\\u0137\\u017B\\u0141\\u017C\\u0122\\u02C7", macintosh: "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\uFB01\\uFB02\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7", "x-mac-romanian": "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\u0102\\u0218\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\u0103\\u0219\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u2044\\u20AC\\u2039\\u203A\\u021A\\u021B\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\u0131\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7", "x-mac-turkish": "\\xC4\\xC5\\xC7\\xC9\\xD1\\xD6\\xDC\\xE1\\xE0\\xE2\\xE4\\xE3\\xE5\\xE7\\xE9\\xE8\\xEA\\xEB\\xED\\xEC\\xEE\\xEF\\xF1\\xF3\\xF2\\xF4\\xF6\\xF5\\xFA\\xF9\\xFB\\xFC\\u2020\\xB0\\xA2\\xA3\\xA7\\u2022\\xB6\\xDF\\xAE\\xA9\\u2122\\xB4\\xA8\\u2260\\xC6\\xD8\\u221E\\xB1\\u2264\\u2265\\xA5\\xB5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xAA\\xBA\\u03A9\\xE6\\xF8\\xBF\\xA1\\xAC\\u221A\\u0192\\u2248\\u2206\\xAB\\xBB\\u2026\\xA0\\xC0\\xC3\\xD5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xF7\\u25CA\\xFF\\u0178\\u011E\\u011F\\u0130\\u0131\\u015E\\u015F\\u2021\\xB7\\u201A\\u201E\\u2030\\xC2\\xCA\\xC1\\xCB\\xC8\\xCD\\xCE\\xCF\\xCC\\xD3\\xD4\\uF8FF\\xD2\\xDA\\xDB\\xD9\\uF8A0\\u02C6\\u02DC\\xAF\\u02D8\\u02D9\\u02DA\\xB8\\u02DD\\u02DB\\u02C7" };\n Ve3.MACSTRING = function(e, r, t, n11) {\n var a2 = Mr[n11];\n if (a2 !== void 0) {\n for (var i5 = "", o2 = 0; o2 < t; o2++) {\n var l4 = e.getUint8(r + o2);\n l4 <= 127 ? i5 += String.fromCharCode(l4) : i5 += a2[l4 & 127];\n }\n return i5;\n }\n };\n var fr3 = typeof WeakMap == "function" && /* @__PURE__ */ new WeakMap(), pr2, ha = function(e) {\n if (!pr2) {\n pr2 = {};\n for (var r in Mr) pr2[r] = new String(r);\n }\n var t = pr2[e];\n if (t !== void 0) {\n if (fr3) {\n var n11 = fr3.get(t);\n if (n11 !== void 0) return n11;\n }\n var a2 = Mr[e];\n if (a2 !== void 0) {\n for (var i5 = {}, o2 = 0; o2 < a2.length; o2++) i5[a2.charCodeAt(o2)] = o2 + 128;\n return fr3 && fr3.set(t, i5), i5;\n }\n }\n };\n E5.MACSTRING = function(e, r) {\n var t = ha(r);\n if (t !== void 0) {\n for (var n11 = [], a2 = 0; a2 < e.length; a2++) {\n var i5 = e.charCodeAt(a2);\n if (i5 >= 128 && (i5 = t[i5], i5 === void 0)) return;\n n11[a2] = i5;\n }\n return n11;\n }\n }, M4.MACSTRING = function(e, r) {\n var t = E5.MACSTRING(e, r);\n return t !== void 0 ? t.length : 0;\n };\n function Br(e) {\n return e >= -128 && e <= 127;\n }\n function ca(e, r, t) {\n for (var n11 = 0, a2 = e.length; r < a2 && n11 < 64 && e[r] === 0; ) ++r, ++n11;\n return t.push(128 | n11 - 1), r;\n }\n function va(e, r, t) {\n for (var n11 = 0, a2 = e.length, i5 = r; i5 < a2 && n11 < 64; ) {\n var o2 = e[i5];\n if (!Br(o2) || o2 === 0 && i5 + 1 < a2 && e[i5 + 1] === 0) break;\n ++i5, ++n11;\n }\n t.push(n11 - 1);\n for (var l4 = r; l4 < i5; ++l4) t.push(e[l4] + 256 & 255);\n return i5;\n }\n function da(e, r, t) {\n for (var n11 = 0, a2 = e.length, i5 = r; i5 < a2 && n11 < 64; ) {\n var o2 = e[i5];\n if (o2 === 0 || Br(o2) && i5 + 1 < a2 && Br(e[i5 + 1])) break;\n ++i5, ++n11;\n }\n t.push(64 | n11 - 1);\n for (var l4 = r; l4 < i5; ++l4) {\n var u3 = e[l4];\n t.push(u3 + 65536 >> 8 & 255, u3 + 256 & 255);\n }\n return i5;\n }\n E5.VARDELTAS = function(e) {\n for (var r = 0, t = []; r < e.length; ) {\n var n11 = e[r];\n n11 === 0 ? r = ca(e, r, t) : n11 >= -128 && n11 <= 127 ? r = va(e, r, t) : r = da(e, r, t);\n }\n return t;\n }, E5.INDEX = function(e) {\n for (var r = 1, t = [r], n11 = [], a2 = 0; a2 < e.length; a2 += 1) {\n var i5 = E5.OBJECT(e[a2]);\n Array.prototype.push.apply(n11, i5), r += i5.length, t.push(r);\n }\n if (n11.length === 0) return [0, 0];\n for (var o2 = [], l4 = 1 + Math.floor(Math.log(r) / Math.log(2)) / 8 | 0, u3 = [void 0, E5.BYTE, E5.USHORT, E5.UINT24, E5.ULONG][l4], c2 = 0; c2 < t.length; c2 += 1) {\n var d3 = u3(t[c2]);\n Array.prototype.push.apply(o2, d3);\n }\n return Array.prototype.concat(E5.Card16(e.length), E5.OffSize(l4), o2, n11);\n }, M4.INDEX = function(e) {\n return E5.INDEX(e).length;\n }, E5.DICT = function(e) {\n for (var r = [], t = Object.keys(e), n11 = t.length, a2 = 0; a2 < n11; a2 += 1) {\n var i5 = parseInt(t[a2], 0), o2 = e[i5];\n r = r.concat(E5.OPERAND(o2.value, o2.type)), r = r.concat(E5.OPERATOR(i5));\n }\n return r;\n }, M4.DICT = function(e) {\n return E5.DICT(e).length;\n }, E5.OPERATOR = function(e) {\n return e < 1200 ? [e] : [12, e - 1200];\n }, E5.OPERAND = function(e, r) {\n var t = [];\n if (Array.isArray(r)) for (var n11 = 0; n11 < r.length; n11 += 1) G5.argument(e.length === r.length, "Not enough arguments given for type" + r), t = t.concat(E5.OPERAND(e[n11], r[n11]));\n else if (r === "SID") t = t.concat(E5.NUMBER(e));\n else if (r === "offset") t = t.concat(E5.NUMBER32(e));\n else if (r === "number") t = t.concat(E5.NUMBER(e));\n else if (r === "real") t = t.concat(E5.REAL(e));\n else throw new Error("Unknown operand type " + r);\n return t;\n }, E5.OP = E5.BYTE, M4.OP = M4.BYTE;\n var hr2 = typeof WeakMap == "function" && /* @__PURE__ */ new WeakMap();\n E5.CHARSTRING = function(e) {\n if (hr2) {\n var r = hr2.get(e);\n if (r !== void 0) return r;\n }\n for (var t = [], n11 = e.length, a2 = 0; a2 < n11; a2 += 1) {\n var i5 = e[a2];\n t = t.concat(E5[i5.type](i5.value));\n }\n return hr2 && hr2.set(e, t), t;\n }, M4.CHARSTRING = function(e) {\n return E5.CHARSTRING(e).length;\n }, E5.OBJECT = function(e) {\n var r = E5[e.type];\n return G5.argument(r !== void 0, "No encoding function for type " + e.type), r(e.value);\n }, M4.OBJECT = function(e) {\n var r = M4[e.type];\n return G5.argument(r !== void 0, "No sizeOf function for type " + e.type), r(e.value);\n }, E5.TABLE = function(e) {\n for (var r = [], t = e.fields.length, n11 = [], a2 = [], i5 = 0; i5 < t; i5 += 1) {\n var o2 = e.fields[i5], l4 = E5[o2.type];\n G5.argument(l4 !== void 0, "No encoding function for field type " + o2.type + " (" + o2.name + ")");\n var u3 = e[o2.name];\n u3 === void 0 && (u3 = o2.value);\n var c2 = l4(u3);\n o2.type === "TABLE" ? (a2.push(r.length), r = r.concat([0, 0]), n11.push(c2)) : r = r.concat(c2);\n }\n for (var d3 = 0; d3 < n11.length; d3 += 1) {\n var y5 = a2[d3], g6 = r.length;\n G5.argument(g6 < 65536, "Table " + e.tableName + " too big."), r[y5] = g6 >> 8, r[y5 + 1] = g6 & 255, r = r.concat(n11[d3]);\n }\n return r;\n }, M4.TABLE = function(e) {\n for (var r = 0, t = e.fields.length, n11 = 0; n11 < t; n11 += 1) {\n var a2 = e.fields[n11], i5 = M4[a2.type];\n G5.argument(i5 !== void 0, "No sizeOf function for field type " + a2.type + " (" + a2.name + ")");\n var o2 = e[a2.name];\n o2 === void 0 && (o2 = a2.value), r += i5(o2), a2.type === "TABLE" && (r += 2);\n }\n return r;\n }, E5.RECORD = E5.TABLE, M4.RECORD = M4.TABLE, E5.LITERAL = function(e) {\n return e;\n }, M4.LITERAL = function(e) {\n return e.length;\n };\n function ee4(e, r, t) {\n for (var n11 = this, a2 = 0; a2 < r.length; a2 += 1) {\n var i5 = r[a2];\n n11[i5.name] = i5.value;\n }\n if (this.tableName = e, this.fields = r, t) for (var o2 = Object.keys(t), l4 = 0; l4 < o2.length; l4 += 1) {\n var u3 = o2[l4], c2 = t[u3];\n n11[u3] !== void 0 && (n11[u3] = c2);\n }\n }\n ee4.prototype.encode = function() {\n return E5.TABLE(this);\n }, ee4.prototype.sizeOf = function() {\n return M4.TABLE(this);\n };\n function je4(e, r, t) {\n t === void 0 && (t = r.length);\n var n11 = new Array(r.length + 1);\n n11[0] = { name: e + "Count", type: "USHORT", value: t };\n for (var a2 = 0; a2 < r.length; a2++) n11[a2 + 1] = { name: e + a2, type: "USHORT", value: r[a2] };\n return n11;\n }\n function Pr(e, r, t) {\n var n11 = r.length, a2 = new Array(n11 + 1);\n a2[0] = { name: e + "Count", type: "USHORT", value: n11 };\n for (var i5 = 0; i5 < n11; i5++) a2[i5 + 1] = { name: e + i5, type: "TABLE", value: t(r[i5], i5) };\n return a2;\n }\n function cr2(e, r, t) {\n var n11 = r.length, a2 = [];\n a2[0] = { name: e + "Count", type: "USHORT", value: n11 };\n for (var i5 = 0; i5 < n11; i5++) a2 = a2.concat(t(r[i5], i5));\n return a2;\n }\n function vr3(e) {\n e.format === 1 ? ee4.call(this, "coverageTable", [{ name: "coverageFormat", type: "USHORT", value: 1 }].concat(je4("glyph", e.glyphs))) : G5.assert(false, "Can\'t create coverage table format 2 yet.");\n }\n vr3.prototype = Object.create(ee4.prototype), vr3.prototype.constructor = vr3;\n function dr2(e) {\n ee4.call(this, "scriptListTable", cr2("scriptRecord", e, function(r, t) {\n var n11 = r.script, a2 = n11.defaultLangSys;\n return G5.assert(!!a2, "Unable to write GSUB: script " + r.tag + " has no default language system."), [{ name: "scriptTag" + t, type: "TAG", value: r.tag }, { name: "script" + t, type: "TABLE", value: new ee4("scriptTable", [{ name: "defaultLangSys", type: "TABLE", value: new ee4("defaultLangSys", [{ name: "lookupOrder", type: "USHORT", value: 0 }, { name: "reqFeatureIndex", type: "USHORT", value: a2.reqFeatureIndex }].concat(je4("featureIndex", a2.featureIndexes))) }].concat(cr2("langSys", n11.langSysRecords, function(i5, o2) {\n var l4 = i5.langSys;\n return [{ name: "langSysTag" + o2, type: "TAG", value: i5.tag }, { name: "langSys" + o2, type: "TABLE", value: new ee4("langSys", [{ name: "lookupOrder", type: "USHORT", value: 0 }, { name: "reqFeatureIndex", type: "USHORT", value: l4.reqFeatureIndex }].concat(je4("featureIndex", l4.featureIndexes))) }];\n }))) }];\n }));\n }\n dr2.prototype = Object.create(ee4.prototype), dr2.prototype.constructor = dr2;\n function gr2(e) {\n ee4.call(this, "featureListTable", cr2("featureRecord", e, function(r, t) {\n var n11 = r.feature;\n return [{ name: "featureTag" + t, type: "TAG", value: r.tag }, { name: "feature" + t, type: "TABLE", value: new ee4("featureTable", [{ name: "featureParams", type: "USHORT", value: n11.featureParams }].concat(je4("lookupListIndex", n11.lookupListIndexes))) }];\n }));\n }\n gr2.prototype = Object.create(ee4.prototype), gr2.prototype.constructor = gr2;\n function mr2(e, r) {\n ee4.call(this, "lookupListTable", Pr("lookup", e, function(t) {\n var n11 = r[t.lookupType];\n return G5.assert(!!n11, "Unable to write GSUB lookup type " + t.lookupType + " tables."), new ee4("lookupTable", [{ name: "lookupType", type: "USHORT", value: t.lookupType }, { name: "lookupFlag", type: "USHORT", value: t.lookupFlag }].concat(Pr("subtable", t.subtables, n11)));\n }));\n }\n mr2.prototype = Object.create(ee4.prototype), mr2.prototype.constructor = mr2;\n var A4 = { Table: ee4, Record: ee4, Coverage: vr3, ScriptList: dr2, FeatureList: gr2, LookupList: mr2, ushortList: je4, tableList: Pr, recordList: cr2 };\n function Et3(e, r) {\n return e.getUint8(r);\n }\n function yr2(e, r) {\n return e.getUint16(r, false);\n }\n function ga(e, r) {\n return e.getInt16(r, false);\n }\n function Gr(e, r) {\n return e.getUint32(r, false);\n }\n function Ut2(e, r) {\n var t = e.getInt16(r, false), n11 = e.getUint16(r + 2, false);\n return t + n11 / 65535;\n }\n function ma(e, r) {\n for (var t = "", n11 = r; n11 < r + 4; n11 += 1) t += String.fromCharCode(e.getInt8(n11));\n return t;\n }\n function ya(e, r, t) {\n for (var n11 = 0, a2 = 0; a2 < t; a2 += 1) n11 <<= 8, n11 += e.getUint8(r + a2);\n return n11;\n }\n function ba(e, r, t) {\n for (var n11 = [], a2 = r; a2 < t; a2 += 1) n11.push(e.getUint8(a2));\n return n11;\n }\n function xa(e) {\n for (var r = "", t = 0; t < e.length; t += 1) r += String.fromCharCode(e[t]);\n return r;\n }\n var Sa = { byte: 1, uShort: 2, short: 2, uLong: 4, fixed: 4, longDateTime: 8, tag: 4 };\n function b4(e, r) {\n this.data = e, this.offset = r, this.relativeOffset = 0;\n }\n b4.prototype.parseByte = function() {\n var e = this.data.getUint8(this.offset + this.relativeOffset);\n return this.relativeOffset += 1, e;\n }, b4.prototype.parseChar = function() {\n var e = this.data.getInt8(this.offset + this.relativeOffset);\n return this.relativeOffset += 1, e;\n }, b4.prototype.parseCard8 = b4.prototype.parseByte, b4.prototype.parseUShort = function() {\n var e = this.data.getUint16(this.offset + this.relativeOffset);\n return this.relativeOffset += 2, e;\n }, b4.prototype.parseCard16 = b4.prototype.parseUShort, b4.prototype.parseSID = b4.prototype.parseUShort, b4.prototype.parseOffset16 = b4.prototype.parseUShort, b4.prototype.parseShort = function() {\n var e = this.data.getInt16(this.offset + this.relativeOffset);\n return this.relativeOffset += 2, e;\n }, b4.prototype.parseF2Dot14 = function() {\n var e = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n return this.relativeOffset += 2, e;\n }, b4.prototype.parseULong = function() {\n var e = Gr(this.data, this.offset + this.relativeOffset);\n return this.relativeOffset += 4, e;\n }, b4.prototype.parseOffset32 = b4.prototype.parseULong, b4.prototype.parseFixed = function() {\n var e = Ut2(this.data, this.offset + this.relativeOffset);\n return this.relativeOffset += 4, e;\n }, b4.prototype.parseString = function(e) {\n var r = this.data, t = this.offset + this.relativeOffset, n11 = "";\n this.relativeOffset += e;\n for (var a2 = 0; a2 < e; a2++) n11 += String.fromCharCode(r.getUint8(t + a2));\n return n11;\n }, b4.prototype.parseTag = function() {\n return this.parseString(4);\n }, b4.prototype.parseLongDateTime = function() {\n var e = Gr(this.data, this.offset + this.relativeOffset + 4);\n return e -= 2082844800, this.relativeOffset += 8, e;\n }, b4.prototype.parseVersion = function(e) {\n var r = yr2(this.data, this.offset + this.relativeOffset), t = yr2(this.data, this.offset + this.relativeOffset + 2);\n return this.relativeOffset += 4, e === void 0 && (e = 4096), r + t / e / 10;\n }, b4.prototype.skip = function(e, r) {\n r === void 0 && (r = 1), this.relativeOffset += Sa[e] * r;\n }, b4.prototype.parseULongList = function(e) {\n e === void 0 && (e = this.parseULong());\n for (var r = new Array(e), t = this.data, n11 = this.offset + this.relativeOffset, a2 = 0; a2 < e; a2++) r[a2] = t.getUint32(n11), n11 += 4;\n return this.relativeOffset += e * 4, r;\n }, b4.prototype.parseOffset16List = b4.prototype.parseUShortList = function(e) {\n e === void 0 && (e = this.parseUShort());\n for (var r = new Array(e), t = this.data, n11 = this.offset + this.relativeOffset, a2 = 0; a2 < e; a2++) r[a2] = t.getUint16(n11), n11 += 2;\n return this.relativeOffset += e * 2, r;\n }, b4.prototype.parseShortList = function(e) {\n for (var r = new Array(e), t = this.data, n11 = this.offset + this.relativeOffset, a2 = 0; a2 < e; a2++) r[a2] = t.getInt16(n11), n11 += 2;\n return this.relativeOffset += e * 2, r;\n }, b4.prototype.parseByteList = function(e) {\n for (var r = new Array(e), t = this.data, n11 = this.offset + this.relativeOffset, a2 = 0; a2 < e; a2++) r[a2] = t.getUint8(n11++);\n return this.relativeOffset += e, r;\n }, b4.prototype.parseList = function(e, r) {\n var t = this;\n r || (r = e, e = this.parseUShort());\n for (var n11 = new Array(e), a2 = 0; a2 < e; a2++) n11[a2] = r.call(t);\n return n11;\n }, b4.prototype.parseList32 = function(e, r) {\n var t = this;\n r || (r = e, e = this.parseULong());\n for (var n11 = new Array(e), a2 = 0; a2 < e; a2++) n11[a2] = r.call(t);\n return n11;\n }, b4.prototype.parseRecordList = function(e, r) {\n var t = this;\n r || (r = e, e = this.parseUShort());\n for (var n11 = new Array(e), a2 = Object.keys(r), i5 = 0; i5 < e; i5++) {\n for (var o2 = {}, l4 = 0; l4 < a2.length; l4++) {\n var u3 = a2[l4], c2 = r[u3];\n o2[u3] = c2.call(t);\n }\n n11[i5] = o2;\n }\n return n11;\n }, b4.prototype.parseRecordList32 = function(e, r) {\n var t = this;\n r || (r = e, e = this.parseULong());\n for (var n11 = new Array(e), a2 = Object.keys(r), i5 = 0; i5 < e; i5++) {\n for (var o2 = {}, l4 = 0; l4 < a2.length; l4++) {\n var u3 = a2[l4], c2 = r[u3];\n o2[u3] = c2.call(t);\n }\n n11[i5] = o2;\n }\n return n11;\n }, b4.prototype.parseStruct = function(e) {\n var r = this;\n if (typeof e == "function") return e.call(this);\n for (var t = Object.keys(e), n11 = {}, a2 = 0; a2 < t.length; a2++) {\n var i5 = t[a2], o2 = e[i5];\n n11[i5] = o2.call(r);\n }\n return n11;\n }, b4.prototype.parseValueRecord = function(e) {\n if (e === void 0 && (e = this.parseUShort()), e !== 0) {\n var r = {};\n return e & 1 && (r.xPlacement = this.parseShort()), e & 2 && (r.yPlacement = this.parseShort()), e & 4 && (r.xAdvance = this.parseShort()), e & 8 && (r.yAdvance = this.parseShort()), e & 16 && (r.xPlaDevice = void 0, this.parseShort()), e & 32 && (r.yPlaDevice = void 0, this.parseShort()), e & 64 && (r.xAdvDevice = void 0, this.parseShort()), e & 128 && (r.yAdvDevice = void 0, this.parseShort()), r;\n }\n }, b4.prototype.parseValueRecordList = function() {\n for (var e = this, r = this.parseUShort(), t = this.parseUShort(), n11 = new Array(t), a2 = 0; a2 < t; a2++) n11[a2] = e.parseValueRecord(r);\n return n11;\n }, b4.prototype.parsePointer = function(e) {\n var r = this.parseOffset16();\n if (r > 0) return new b4(this.data, this.offset + r).parseStruct(e);\n }, b4.prototype.parsePointer32 = function(e) {\n var r = this.parseOffset32();\n if (r > 0) return new b4(this.data, this.offset + r).parseStruct(e);\n }, b4.prototype.parseListOfLists = function(e) {\n for (var r = this, t = this.parseOffset16List(), n11 = t.length, a2 = this.relativeOffset, i5 = new Array(n11), o2 = 0; o2 < n11; o2++) {\n var l4 = t[o2];\n if (l4 === 0) {\n i5[o2] = void 0;\n continue;\n }\n if (r.relativeOffset = l4, e) {\n for (var u3 = r.parseOffset16List(), c2 = new Array(u3.length), d3 = 0; d3 < u3.length; d3++) r.relativeOffset = l4 + u3[d3], c2[d3] = e.call(r);\n i5[o2] = c2;\n } else i5[o2] = r.parseUShortList();\n }\n return this.relativeOffset = a2, i5;\n }, b4.prototype.parseCoverage = function() {\n var e = this, r = this.offset + this.relativeOffset, t = this.parseUShort(), n11 = this.parseUShort();\n if (t === 1) return { format: 1, glyphs: this.parseUShortList(n11) };\n if (t === 2) {\n for (var a2 = new Array(n11), i5 = 0; i5 < n11; i5++) a2[i5] = { start: e.parseUShort(), end: e.parseUShort(), index: e.parseUShort() };\n return { format: 2, ranges: a2 };\n }\n throw new Error("0x" + r.toString(16) + ": Coverage format must be 1 or 2.");\n }, b4.prototype.parseClassDef = function() {\n var e = this.offset + this.relativeOffset, r = this.parseUShort();\n if (r === 1) return { format: 1, startGlyph: this.parseUShort(), classes: this.parseUShortList() };\n if (r === 2) return { format: 2, ranges: this.parseRecordList({ start: b4.uShort, end: b4.uShort, classId: b4.uShort }) };\n throw new Error("0x" + e.toString(16) + ": ClassDef format must be 1 or 2.");\n }, b4.list = function(e, r) {\n return function() {\n return this.parseList(e, r);\n };\n }, b4.list32 = function(e, r) {\n return function() {\n return this.parseList32(e, r);\n };\n }, b4.recordList = function(e, r) {\n return function() {\n return this.parseRecordList(e, r);\n };\n }, b4.recordList32 = function(e, r) {\n return function() {\n return this.parseRecordList32(e, r);\n };\n }, b4.pointer = function(e) {\n return function() {\n return this.parsePointer(e);\n };\n }, b4.pointer32 = function(e) {\n return function() {\n return this.parsePointer32(e);\n };\n }, b4.tag = b4.prototype.parseTag, b4.byte = b4.prototype.parseByte, b4.uShort = b4.offset16 = b4.prototype.parseUShort, b4.uShortList = b4.prototype.parseUShortList, b4.uLong = b4.offset32 = b4.prototype.parseULong, b4.uLongList = b4.prototype.parseULongList, b4.struct = b4.prototype.parseStruct, b4.coverage = b4.prototype.parseCoverage, b4.classDef = b4.prototype.parseClassDef;\n var Ot2 = { reserved: b4.uShort, reqFeatureIndex: b4.uShort, featureIndexes: b4.uShortList };\n b4.prototype.parseScriptList = function() {\n return this.parsePointer(b4.recordList({ tag: b4.tag, script: b4.pointer({ defaultLangSys: b4.pointer(Ot2), langSysRecords: b4.recordList({ tag: b4.tag, langSys: b4.pointer(Ot2) }) }) })) || [];\n }, b4.prototype.parseFeatureList = function() {\n return this.parsePointer(b4.recordList({ tag: b4.tag, feature: b4.pointer({ featureParams: b4.offset16, lookupListIndexes: b4.uShortList }) })) || [];\n }, b4.prototype.parseLookupList = function(e) {\n return this.parsePointer(b4.list(b4.pointer(function() {\n var r = this.parseUShort();\n G5.argument(1 <= r && r <= 9, "GPOS/GSUB lookup type " + r + " unknown.");\n var t = this.parseUShort(), n11 = t & 16;\n return { lookupType: r, lookupFlag: t, subtables: this.parseList(b4.pointer(e[r])), markFilteringSet: n11 ? this.parseUShort() : void 0 };\n }))) || [];\n }, b4.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n var e = this.parseUShort(), r = this.parseUShort();\n G5.argument(e === 1 && r < 1, "GPOS/GSUB feature variations table unknown.");\n var t = this.parseRecordList32({ conditionSetOffset: b4.offset32, featureTableSubstitutionOffset: b4.offset32 });\n return t;\n }) || [];\n };\n var w6 = { getByte: Et3, getCard8: Et3, getUShort: yr2, getCard16: yr2, getShort: ga, getULong: Gr, getFixed: Ut2, getTag: ma, getOffset: ya, getBytes: ba, bytesToString: xa, Parser: b4 };\n function Ta(e, r) {\n r.parseUShort(), e.length = r.parseULong(), e.language = r.parseULong();\n var t;\n e.groupCount = t = r.parseULong(), e.glyphIndexMap = {};\n for (var n11 = 0; n11 < t; n11 += 1) for (var a2 = r.parseULong(), i5 = r.parseULong(), o2 = r.parseULong(), l4 = a2; l4 <= i5; l4 += 1) e.glyphIndexMap[l4] = o2, o2++;\n }\n function ka(e, r, t, n11, a2) {\n e.length = r.parseUShort(), e.language = r.parseUShort();\n var i5;\n e.segCount = i5 = r.parseUShort() >> 1, r.skip("uShort", 3), e.glyphIndexMap = {};\n for (var o2 = new w6.Parser(t, n11 + a2 + 14), l4 = new w6.Parser(t, n11 + a2 + 16 + i5 * 2), u3 = new w6.Parser(t, n11 + a2 + 16 + i5 * 4), c2 = new w6.Parser(t, n11 + a2 + 16 + i5 * 6), d3 = n11 + a2 + 16 + i5 * 8, y5 = 0; y5 < i5 - 1; y5 += 1) for (var g6 = void 0, m4 = o2.parseUShort(), T4 = l4.parseUShort(), O4 = u3.parseShort(), F4 = c2.parseUShort(), U6 = T4; U6 <= m4; U6 += 1) F4 !== 0 ? (d3 = c2.offset + c2.relativeOffset - 2, d3 += F4, d3 += (U6 - T4) * 2, g6 = w6.getUShort(t, d3), g6 !== 0 && (g6 = g6 + O4 & 65535)) : g6 = U6 + O4 & 65535, e.glyphIndexMap[U6] = g6;\n }\n function Fa(e, r) {\n var t = {};\n t.version = w6.getUShort(e, r), G5.argument(t.version === 0, "cmap table version should be 0."), t.numTables = w6.getUShort(e, r + 2);\n for (var n11 = -1, a2 = t.numTables - 1; a2 >= 0; a2 -= 1) {\n var i5 = w6.getUShort(e, r + 4 + a2 * 8), o2 = w6.getUShort(e, r + 4 + a2 * 8 + 2);\n if (i5 === 3 && (o2 === 0 || o2 === 1 || o2 === 10)) {\n n11 = w6.getULong(e, r + 4 + a2 * 8 + 4);\n break;\n }\n }\n if (n11 === -1) throw new Error("No valid cmap sub-tables found.");\n var l4 = new w6.Parser(e, r + n11);\n if (t.format = l4.parseUShort(), t.format === 12) Ta(t, l4);\n else if (t.format === 4) ka(t, l4, e, r, n11);\n else throw new Error("Only format 4 and 12 cmap tables are supported (found format " + t.format + ").");\n return t;\n }\n function La(e, r, t) {\n e.segments.push({ end: r, start: r, delta: -(r - t), offset: 0, glyphIndex: t });\n }\n function Ea(e) {\n e.segments.push({ end: 65535, start: 65535, delta: 1, offset: 0 });\n }\n function Ua(e) {\n var r = true, t;\n for (t = e.length - 1; t > 0; t -= 1) {\n var n11 = e.get(t);\n if (n11.unicode > 65535) {\n console.log("Adding CMAP format 12 (needed!)"), r = false;\n break;\n }\n }\n var a2 = [{ name: "version", type: "USHORT", value: 0 }, { name: "numTables", type: "USHORT", value: r ? 1 : 2 }, { name: "platformID", type: "USHORT", value: 3 }, { name: "encodingID", type: "USHORT", value: 1 }, { name: "offset", type: "ULONG", value: r ? 12 : 20 }];\n r || (a2 = a2.concat([{ name: "cmap12PlatformID", type: "USHORT", value: 3 }, { name: "cmap12EncodingID", type: "USHORT", value: 10 }, { name: "cmap12Offset", type: "ULONG", value: 0 }])), a2 = a2.concat([{ name: "format", type: "USHORT", value: 4 }, { name: "cmap4Length", type: "USHORT", value: 0 }, { name: "language", type: "USHORT", value: 0 }, { name: "segCountX2", type: "USHORT", value: 0 }, { name: "searchRange", type: "USHORT", value: 0 }, { name: "entrySelector", type: "USHORT", value: 0 }, { name: "rangeShift", type: "USHORT", value: 0 }]);\n var i5 = new A4.Table("cmap", a2);\n for (i5.segments = [], t = 0; t < e.length; t += 1) {\n for (var o2 = e.get(t), l4 = 0; l4 < o2.unicodes.length; l4 += 1) La(i5, o2.unicodes[l4], t);\n i5.segments = i5.segments.sort(function(P5, I4) {\n return P5.start - I4.start;\n });\n }\n Ea(i5);\n var u3 = i5.segments.length, c2 = 0, d3 = [], y5 = [], g6 = [], m4 = [], T4 = [], O4 = [];\n for (t = 0; t < u3; t += 1) {\n var F4 = i5.segments[t];\n F4.end <= 65535 && F4.start <= 65535 ? (d3 = d3.concat({ name: "end_" + t, type: "USHORT", value: F4.end }), y5 = y5.concat({ name: "start_" + t, type: "USHORT", value: F4.start }), g6 = g6.concat({ name: "idDelta_" + t, type: "SHORT", value: F4.delta }), m4 = m4.concat({ name: "idRangeOffset_" + t, type: "USHORT", value: F4.offset }), F4.glyphId !== void 0 && (T4 = T4.concat({ name: "glyph_" + t, type: "USHORT", value: F4.glyphId }))) : c2 += 1, !r && F4.glyphIndex !== void 0 && (O4 = O4.concat({ name: "cmap12Start_" + t, type: "ULONG", value: F4.start }), O4 = O4.concat({ name: "cmap12End_" + t, type: "ULONG", value: F4.end }), O4 = O4.concat({ name: "cmap12Glyph_" + t, type: "ULONG", value: F4.glyphIndex }));\n }\n if (i5.segCountX2 = (u3 - c2) * 2, i5.searchRange = Math.pow(2, Math.floor(Math.log(u3 - c2) / Math.log(2))) * 2, i5.entrySelector = Math.log(i5.searchRange / 2) / Math.log(2), i5.rangeShift = i5.segCountX2 - i5.searchRange, i5.fields = i5.fields.concat(d3), i5.fields.push({ name: "reservedPad", type: "USHORT", value: 0 }), i5.fields = i5.fields.concat(y5), i5.fields = i5.fields.concat(g6), i5.fields = i5.fields.concat(m4), i5.fields = i5.fields.concat(T4), i5.cmap4Length = 14 + d3.length * 2 + 2 + y5.length * 2 + g6.length * 2 + m4.length * 2 + T4.length * 2, !r) {\n var U6 = 16 + O4.length * 4;\n i5.cmap12Offset = 20 + i5.cmap4Length, i5.fields = i5.fields.concat([{ name: "cmap12Format", type: "USHORT", value: 12 }, { name: "cmap12Reserved", type: "USHORT", value: 0 }, { name: "cmap12Length", type: "ULONG", value: U6 }, { name: "cmap12Language", type: "ULONG", value: 0 }, { name: "cmap12nGroups", type: "ULONG", value: O4.length / 3 }]), i5.fields = i5.fields.concat(O4);\n }\n return i5;\n }\n var It3 = { parse: Fa, make: Ua }, br2 = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "266 ff", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"], Oa = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls"], Ia = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"], Me3 = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"];\n function Ct3(e) {\n this.font = e;\n }\n Ct3.prototype.charToGlyphIndex = function(e) {\n var r = e.charCodeAt(0), t = this.font.glyphs;\n if (t) {\n for (var n11 = 0; n11 < t.length; n11 += 1) for (var a2 = t.get(n11), i5 = 0; i5 < a2.unicodes.length; i5 += 1) if (a2.unicodes[i5] === r) return n11;\n }\n return null;\n };\n function wt2(e) {\n this.cmap = e;\n }\n wt2.prototype.charToGlyphIndex = function(e) {\n return this.cmap.glyphIndexMap[e.charCodeAt(0)] || 0;\n };\n function xr2(e, r) {\n this.encoding = e, this.charset = r;\n }\n xr2.prototype.charToGlyphIndex = function(e) {\n var r = e.charCodeAt(0), t = this.encoding[r];\n return this.charset.indexOf(t);\n };\n function Nr(e) {\n var r = this;\n switch (e.version) {\n case 1:\n this.names = Me3.slice();\n break;\n case 2:\n this.names = new Array(e.numberOfGlyphs);\n for (var t = 0; t < e.numberOfGlyphs; t++) e.glyphNameIndex[t] < Me3.length ? r.names[t] = Me3[e.glyphNameIndex[t]] : r.names[t] = e.names[e.glyphNameIndex[t] - Me3.length];\n break;\n case 2.5:\n this.names = new Array(e.numberOfGlyphs);\n for (var n11 = 0; n11 < e.numberOfGlyphs; n11++) r.names[n11] = Me3[n11 + e.glyphNameIndex[n11]];\n break;\n case 3:\n this.names = [];\n break;\n default:\n this.names = [];\n break;\n }\n }\n Nr.prototype.nameToGlyphIndex = function(e) {\n return this.names.indexOf(e);\n }, Nr.prototype.glyphIndexToName = function(e) {\n return this.names[e];\n };\n function Ca(e) {\n for (var r, t = e.tables.cmap.glyphIndexMap, n11 = Object.keys(t), a2 = 0; a2 < n11.length; a2 += 1) {\n var i5 = n11[a2], o2 = t[i5];\n r = e.glyphs.get(o2), r.addUnicode(parseInt(i5));\n }\n for (var l4 = 0; l4 < e.glyphs.length; l4 += 1) r = e.glyphs.get(l4), e.cffEncoding ? e.isCIDFont ? r.name = "gid" + l4 : r.name = e.cffEncoding.charset[l4] : e.glyphNames.names && (r.name = e.glyphNames.glyphIndexToName(l4));\n }\n function wa(e, r, t, n11, a2) {\n e.beginPath(), e.moveTo(r, t), e.lineTo(n11, a2), e.stroke();\n }\n var Be3 = { line: wa };\n function Rt3(e, r, t, n11, a2) {\n var i5;\n return (r & n11) > 0 ? (i5 = e.parseByte(), (r & a2) === 0 && (i5 = -i5), i5 = t + i5) : (r & a2) > 0 ? i5 = t : i5 = t + e.parseShort(), i5;\n }\n function Ra(e, r, t) {\n var n11 = new w6.Parser(r, t);\n e.numberOfContours = n11.parseShort(), e._xMin = n11.parseShort(), e._yMin = n11.parseShort(), e._xMax = n11.parseShort(), e._yMax = n11.parseShort();\n var a2, i5;\n if (e.numberOfContours > 0) {\n for (var o2 = e.endPointIndices = [], l4 = 0; l4 < e.numberOfContours; l4 += 1) o2.push(n11.parseUShort());\n e.instructionLength = n11.parseUShort(), e.instructions = [];\n for (var u3 = 0; u3 < e.instructionLength; u3 += 1) e.instructions.push(n11.parseByte());\n var c2 = o2[o2.length - 1] + 1;\n a2 = [];\n for (var d3 = 0; d3 < c2; d3 += 1) if (i5 = n11.parseByte(), a2.push(i5), (i5 & 8) > 0) for (var y5 = n11.parseByte(), g6 = 0; g6 < y5; g6 += 1) a2.push(i5), d3 += 1;\n if (G5.argument(a2.length === c2, "Bad flags."), o2.length > 0) {\n var m4 = [], T4;\n if (c2 > 0) {\n for (var O4 = 0; O4 < c2; O4 += 1) i5 = a2[O4], T4 = {}, T4.onCurve = !!(i5 & 1), T4.lastPointOfContour = o2.indexOf(O4) >= 0, m4.push(T4);\n for (var F4 = 0, U6 = 0; U6 < c2; U6 += 1) i5 = a2[U6], T4 = m4[U6], T4.x = Rt3(n11, i5, F4, 2, 16), F4 = T4.x;\n for (var P5 = 0, I4 = 0; I4 < c2; I4 += 1) i5 = a2[I4], T4 = m4[I4], T4.y = Rt3(n11, i5, P5, 4, 32), P5 = T4.y;\n }\n e.points = m4;\n } else e.points = [];\n } else if (e.numberOfContours === 0) e.points = [];\n else {\n e.isComposite = true, e.points = [], e.components = [];\n for (var H5 = true; H5; ) {\n a2 = n11.parseUShort();\n var R4 = { glyphIndex: n11.parseUShort(), xScale: 1, scale01: 0, scale10: 0, yScale: 1, dx: 0, dy: 0 };\n (a2 & 1) > 0 ? (a2 & 2) > 0 ? (R4.dx = n11.parseShort(), R4.dy = n11.parseShort()) : R4.matchedPoints = [n11.parseUShort(), n11.parseUShort()] : (a2 & 2) > 0 ? (R4.dx = n11.parseChar(), R4.dy = n11.parseChar()) : R4.matchedPoints = [n11.parseByte(), n11.parseByte()], (a2 & 8) > 0 ? R4.xScale = R4.yScale = n11.parseF2Dot14() : (a2 & 64) > 0 ? (R4.xScale = n11.parseF2Dot14(), R4.yScale = n11.parseF2Dot14()) : (a2 & 128) > 0 && (R4.xScale = n11.parseF2Dot14(), R4.scale01 = n11.parseF2Dot14(), R4.scale10 = n11.parseF2Dot14(), R4.yScale = n11.parseF2Dot14()), e.components.push(R4), H5 = !!(a2 & 32);\n }\n if (a2 & 256) {\n e.instructionLength = n11.parseUShort(), e.instructions = [];\n for (var B5 = 0; B5 < e.instructionLength; B5 += 1) e.instructions.push(n11.parseByte());\n }\n }\n }\n function Hr2(e, r) {\n for (var t = [], n11 = 0; n11 < e.length; n11 += 1) {\n var a2 = e[n11], i5 = { x: r.xScale * a2.x + r.scale01 * a2.y + r.dx, y: r.scale10 * a2.x + r.yScale * a2.y + r.dy, onCurve: a2.onCurve, lastPointOfContour: a2.lastPointOfContour };\n t.push(i5);\n }\n return t;\n }\n function Da(e) {\n for (var r = [], t = [], n11 = 0; n11 < e.length; n11 += 1) {\n var a2 = e[n11];\n t.push(a2), a2.lastPointOfContour && (r.push(t), t = []);\n }\n return G5.argument(t.length === 0, "There are still points left in the current contour."), r;\n }\n function Dt3(e) {\n var r = new Z5();\n if (!e) return r;\n for (var t = Da(e), n11 = 0; n11 < t.length; ++n11) {\n var a2 = t[n11], i5 = null, o2 = a2[a2.length - 1], l4 = a2[0];\n if (o2.onCurve) r.moveTo(o2.x, o2.y);\n else if (l4.onCurve) r.moveTo(l4.x, l4.y);\n else {\n var u3 = { x: (o2.x + l4.x) * 0.5, y: (o2.y + l4.y) * 0.5 };\n r.moveTo(u3.x, u3.y);\n }\n for (var c2 = 0; c2 < a2.length; ++c2) if (i5 = o2, o2 = l4, l4 = a2[(c2 + 1) % a2.length], o2.onCurve) r.lineTo(o2.x, o2.y);\n else {\n var d3 = i5, y5 = l4;\n i5.onCurve || (d3 = { x: (o2.x + i5.x) * 0.5, y: (o2.y + i5.y) * 0.5 }, r.lineTo(d3.x, d3.y)), l4.onCurve || (y5 = { x: (o2.x + l4.x) * 0.5, y: (o2.y + l4.y) * 0.5 }), r.lineTo(d3.x, d3.y), r.quadraticCurveTo(o2.x, o2.y, y5.x, y5.y);\n }\n r.closePath();\n }\n return r;\n }\n function Aa(e, r) {\n if (r.isComposite) for (var t = 0; t < r.components.length; t += 1) {\n var n11 = r.components[t], a2 = e.get(n11.glyphIndex);\n if (a2.getPath(), a2.points) {\n var i5 = void 0;\n if (n11.matchedPoints === void 0) i5 = Hr2(a2.points, n11);\n else {\n if (n11.matchedPoints[0] > r.points.length - 1 || n11.matchedPoints[1] > a2.points.length - 1) throw Error("Matched points out of range in " + r.name);\n var o2 = r.points[n11.matchedPoints[0]], l4 = a2.points[n11.matchedPoints[1]], u3 = { xScale: n11.xScale, scale01: n11.scale01, scale10: n11.scale10, yScale: n11.yScale, dx: 0, dy: 0 };\n l4 = Hr2([l4], u3)[0], u3.dx = o2.x - l4.x, u3.dy = o2.y - l4.y, i5 = Hr2(a2.points, u3);\n }\n r.points = r.points.concat(i5);\n }\n }\n return Dt3(r.points);\n }\n function Ma(e, r, t, n11) {\n for (var a2 = new qe2.GlyphSet(n11), i5 = 0; i5 < t.length - 1; i5 += 1) {\n var o2 = t[i5], l4 = t[i5 + 1];\n o2 !== l4 ? a2.push(i5, qe2.ttfGlyphLoader(n11, i5, Ra, e, r + o2, Aa)) : a2.push(i5, qe2.glyphLoader(n11, i5));\n }\n return a2;\n }\n var At3 = { getPath: Dt3, parse: Ma };\n function Ba(e, r) {\n var t = r || new Z5();\n return { configurable: true, get: function() {\n return typeof t == "function" && (t = t()), t;\n }, set: function(n11) {\n t = n11;\n } };\n }\n function fe3(e) {\n this.bindConstructorValues(e);\n }\n fe3.prototype.bindConstructorValues = function(e) {\n this.index = e.index || 0, this.name = e.name || null, this.unicode = e.unicode || void 0, this.unicodes = e.unicodes || e.unicode !== void 0 ? [e.unicode] : [], e.xMin && (this.xMin = e.xMin), e.yMin && (this.yMin = e.yMin), e.xMax && (this.xMax = e.xMax), e.yMax && (this.yMax = e.yMax), e.advanceWidth && (this.advanceWidth = e.advanceWidth), Object.defineProperty(this, "path", Ba(this, e.path));\n }, fe3.prototype.addUnicode = function(e) {\n this.unicodes.length === 0 && (this.unicode = e), this.unicodes.push(e);\n }, fe3.prototype.getBoundingBox = function() {\n return this.path.getBoundingBox();\n }, fe3.prototype.getPath = function(e, r, t, n11, a2) {\n e = e !== void 0 ? e : 0, r = r !== void 0 ? r : 0, t = t !== void 0 ? t : 72;\n var i5, o2;\n n11 || (n11 = {});\n var l4 = n11.xScale, u3 = n11.yScale;\n if (n11.hinting && a2 && a2.hinting && (o2 = this.path && a2.hinting.exec(this, t)), o2) i5 = At3.getPath(o2).commands, e = Math.round(e), r = Math.round(r), l4 = u3 = 1;\n else {\n i5 = this.path.commands;\n var c2 = 1 / this.path.unitsPerEm * t;\n l4 === void 0 && (l4 = c2), u3 === void 0 && (u3 = c2);\n }\n for (var d3 = new Z5(), y5 = 0; y5 < i5.length; y5 += 1) {\n var g6 = i5[y5];\n g6.type === "M" ? d3.moveTo(e + g6.x * l4, r + -g6.y * u3) : g6.type === "L" ? d3.lineTo(e + g6.x * l4, r + -g6.y * u3) : g6.type === "Q" ? d3.quadraticCurveTo(e + g6.x1 * l4, r + -g6.y1 * u3, e + g6.x * l4, r + -g6.y * u3) : g6.type === "C" ? d3.curveTo(e + g6.x1 * l4, r + -g6.y1 * u3, e + g6.x2 * l4, r + -g6.y2 * u3, e + g6.x * l4, r + -g6.y * u3) : g6.type === "Z" && d3.closePath();\n }\n return d3;\n }, fe3.prototype.getContours = function() {\n var e = this;\n if (this.points === void 0) return [];\n for (var r = [], t = [], n11 = 0; n11 < this.points.length; n11 += 1) {\n var a2 = e.points[n11];\n t.push(a2), a2.lastPointOfContour && (r.push(t), t = []);\n }\n return G5.argument(t.length === 0, "There are still points left in the current contour."), r;\n }, fe3.prototype.getMetrics = function() {\n for (var e = this.path.commands, r = [], t = [], n11 = 0; n11 < e.length; n11 += 1) {\n var a2 = e[n11];\n a2.type !== "Z" && (r.push(a2.x), t.push(a2.y)), (a2.type === "Q" || a2.type === "C") && (r.push(a2.x1), t.push(a2.y1)), a2.type === "C" && (r.push(a2.x2), t.push(a2.y2));\n }\n var i5 = { xMin: Math.min.apply(null, r), yMin: Math.min.apply(null, t), xMax: Math.max.apply(null, r), yMax: Math.max.apply(null, t), leftSideBearing: this.leftSideBearing };\n return isFinite(i5.xMin) || (i5.xMin = 0), isFinite(i5.xMax) || (i5.xMax = this.advanceWidth), isFinite(i5.yMin) || (i5.yMin = 0), isFinite(i5.yMax) || (i5.yMax = 0), i5.rightSideBearing = this.advanceWidth - i5.leftSideBearing - (i5.xMax - i5.xMin), i5;\n }, fe3.prototype.draw = function(e, r, t, n11, a2) {\n this.getPath(r, t, n11, a2).draw(e);\n }, fe3.prototype.drawPoints = function(e, r, t, n11) {\n function a2(y5, g6, m4, T4) {\n var O4 = Math.PI * 2;\n e.beginPath();\n for (var F4 = 0; F4 < y5.length; F4 += 1) e.moveTo(g6 + y5[F4].x * T4, m4 + y5[F4].y * T4), e.arc(g6 + y5[F4].x * T4, m4 + y5[F4].y * T4, 2, 0, O4, false);\n e.closePath(), e.fill();\n }\n r = r !== void 0 ? r : 0, t = t !== void 0 ? t : 0, n11 = n11 !== void 0 ? n11 : 24;\n for (var i5 = 1 / this.path.unitsPerEm * n11, o2 = [], l4 = [], u3 = this.path, c2 = 0; c2 < u3.commands.length; c2 += 1) {\n var d3 = u3.commands[c2];\n d3.x !== void 0 && o2.push({ x: d3.x, y: -d3.y }), d3.x1 !== void 0 && l4.push({ x: d3.x1, y: -d3.y1 }), d3.x2 !== void 0 && l4.push({ x: d3.x2, y: -d3.y2 });\n }\n e.fillStyle = "blue", a2(o2, r, t, i5), e.fillStyle = "red", a2(l4, r, t, i5);\n }, fe3.prototype.drawMetrics = function(e, r, t, n11) {\n var a2;\n r = r !== void 0 ? r : 0, t = t !== void 0 ? t : 0, n11 = n11 !== void 0 ? n11 : 24, a2 = 1 / this.path.unitsPerEm * n11, e.lineWidth = 1, e.strokeStyle = "black", Be3.line(e, r, -1e4, r, 1e4), Be3.line(e, -1e4, t, 1e4, t);\n var i5 = this.xMin || 0, o2 = this.yMin || 0, l4 = this.xMax || 0, u3 = this.yMax || 0, c2 = this.advanceWidth || 0;\n e.strokeStyle = "blue", Be3.line(e, r + i5 * a2, -1e4, r + i5 * a2, 1e4), Be3.line(e, r + l4 * a2, -1e4, r + l4 * a2, 1e4), Be3.line(e, -1e4, t + -o2 * a2, 1e4, t + -o2 * a2), Be3.line(e, -1e4, t + -u3 * a2, 1e4, t + -u3 * a2), e.strokeStyle = "green", Be3.line(e, r + c2 * a2, -1e4, r + c2 * a2, 1e4);\n };\n function Sr2(e, r, t) {\n Object.defineProperty(e, r, { get: function() {\n return e.path, e[t];\n }, set: function(n11) {\n e[t] = n11;\n }, enumerable: true, configurable: true });\n }\n function _r3(e, r) {\n var t = this;\n if (this.font = e, this.glyphs = {}, Array.isArray(r)) for (var n11 = 0; n11 < r.length; n11++) t.glyphs[n11] = r[n11];\n this.length = r && r.length || 0;\n }\n _r3.prototype.get = function(e) {\n return typeof this.glyphs[e] == "function" && (this.glyphs[e] = this.glyphs[e]()), this.glyphs[e];\n }, _r3.prototype.push = function(e, r) {\n this.glyphs[e] = r, this.length++;\n };\n function Pa(e, r) {\n return new fe3({ index: r, font: e });\n }\n function Ga(e, r, t, n11, a2, i5) {\n return function() {\n var o2 = new fe3({ index: r, font: e });\n return o2.path = function() {\n t(o2, n11, a2);\n var l4 = i5(e.glyphs, o2);\n return l4.unitsPerEm = e.unitsPerEm, l4;\n }, Sr2(o2, "xMin", "_xMin"), Sr2(o2, "xMax", "_xMax"), Sr2(o2, "yMin", "_yMin"), Sr2(o2, "yMax", "_yMax"), o2;\n };\n }\n function Na(e, r, t, n11) {\n return function() {\n var a2 = new fe3({ index: r, font: e });\n return a2.path = function() {\n var i5 = t(e, a2, n11);\n return i5.unitsPerEm = e.unitsPerEm, i5;\n }, a2;\n };\n }\n var qe2 = { GlyphSet: _r3, glyphLoader: Pa, ttfGlyphLoader: Ga, cffGlyphLoader: Na };\n function Mt2(e, r) {\n if (e === r) return true;\n if (Array.isArray(e) && Array.isArray(r)) {\n if (e.length !== r.length) return false;\n for (var t = 0; t < e.length; t += 1) if (!Mt2(e[t], r[t])) return false;\n return true;\n } else return false;\n }\n function zr(e) {\n var r;\n return e.length < 1240 ? r = 107 : e.length < 33900 ? r = 1131 : r = 32768, r;\n }\n function Oe3(e, r, t) {\n var n11 = [], a2 = [], i5 = w6.getCard16(e, r), o2, l4;\n if (i5 !== 0) {\n var u3 = w6.getByte(e, r + 2);\n o2 = r + (i5 + 1) * u3 + 2;\n for (var c2 = r + 3, d3 = 0; d3 < i5 + 1; d3 += 1) n11.push(w6.getOffset(e, c2, u3)), c2 += u3;\n l4 = o2 + n11[i5];\n } else l4 = r + 2;\n for (var y5 = 0; y5 < n11.length - 1; y5 += 1) {\n var g6 = w6.getBytes(e, o2 + n11[y5], o2 + n11[y5 + 1]);\n t && (g6 = t(g6)), a2.push(g6);\n }\n return { objects: a2, startOffset: r, endOffset: l4 };\n }\n function Ha(e) {\n for (var r = "", t = 15, n11 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"]; ; ) {\n var a2 = e.parseByte(), i5 = a2 >> 4, o2 = a2 & 15;\n if (i5 === t || (r += n11[i5], o2 === t)) break;\n r += n11[o2];\n }\n return parseFloat(r);\n }\n function _a(e, r) {\n var t, n11, a2, i5;\n if (r === 28) return t = e.parseByte(), n11 = e.parseByte(), t << 8 | n11;\n if (r === 29) return t = e.parseByte(), n11 = e.parseByte(), a2 = e.parseByte(), i5 = e.parseByte(), t << 24 | n11 << 16 | a2 << 8 | i5;\n if (r === 30) return Ha(e);\n if (r >= 32 && r <= 246) return r - 139;\n if (r >= 247 && r <= 250) return t = e.parseByte(), (r - 247) * 256 + t + 108;\n if (r >= 251 && r <= 254) return t = e.parseByte(), -(r - 251) * 256 - t - 108;\n throw new Error("Invalid b0 " + r);\n }\n function za(e) {\n for (var r = {}, t = 0; t < e.length; t += 1) {\n var n11 = e[t][0], a2 = e[t][1], i5 = void 0;\n if (a2.length === 1 ? i5 = a2[0] : i5 = a2, r.hasOwnProperty(n11) && !isNaN(r[n11])) throw new Error("Object " + r + " already has key " + n11);\n r[n11] = i5;\n }\n return r;\n }\n function Bt2(e, r, t) {\n r = r !== void 0 ? r : 0;\n var n11 = new w6.Parser(e, r), a2 = [], i5 = [];\n for (t = t !== void 0 ? t : e.length; n11.relativeOffset < t; ) {\n var o2 = n11.parseByte();\n o2 <= 21 ? (o2 === 12 && (o2 = 1200 + n11.parseByte()), a2.push([o2, i5]), i5 = []) : i5.push(_a(n11, o2));\n }\n return za(a2);\n }\n function $e2(e, r) {\n return r <= 390 ? r = br2[r] : r = e[r - 391], r;\n }\n function Pt2(e, r, t) {\n for (var n11 = {}, a2, i5 = 0; i5 < r.length; i5 += 1) {\n var o2 = r[i5];\n if (Array.isArray(o2.type)) {\n var l4 = [];\n l4.length = o2.type.length;\n for (var u3 = 0; u3 < o2.type.length; u3++) a2 = e[o2.op] !== void 0 ? e[o2.op][u3] : void 0, a2 === void 0 && (a2 = o2.value !== void 0 && o2.value[u3] !== void 0 ? o2.value[u3] : null), o2.type[u3] === "SID" && (a2 = $e2(t, a2)), l4[u3] = a2;\n n11[o2.name] = l4;\n } else a2 = e[o2.op], a2 === void 0 && (a2 = o2.value !== void 0 ? o2.value : null), o2.type === "SID" && (a2 = $e2(t, a2)), n11[o2.name] = a2;\n }\n return n11;\n }\n function Wa(e, r) {\n var t = {};\n return t.formatMajor = w6.getCard8(e, r), t.formatMinor = w6.getCard8(e, r + 1), t.size = w6.getCard8(e, r + 2), t.offsetSize = w6.getCard8(e, r + 3), t.startOffset = r, t.endOffset = r + 4, t;\n }\n var Gt3 = [{ name: "version", op: 0, type: "SID" }, { name: "notice", op: 1, type: "SID" }, { name: "copyright", op: 1200, type: "SID" }, { name: "fullName", op: 2, type: "SID" }, { name: "familyName", op: 3, type: "SID" }, { name: "weight", op: 4, type: "SID" }, { name: "isFixedPitch", op: 1201, type: "number", value: 0 }, { name: "italicAngle", op: 1202, type: "number", value: 0 }, { name: "underlinePosition", op: 1203, type: "number", value: -100 }, { name: "underlineThickness", op: 1204, type: "number", value: 50 }, { name: "paintType", op: 1205, type: "number", value: 0 }, { name: "charstringType", op: 1206, type: "number", value: 2 }, { name: "fontMatrix", op: 1207, type: ["real", "real", "real", "real", "real", "real"], value: [1e-3, 0, 0, 1e-3, 0, 0] }, { name: "uniqueId", op: 13, type: "number" }, { name: "fontBBox", op: 5, type: ["number", "number", "number", "number"], value: [0, 0, 0, 0] }, { name: "strokeWidth", op: 1208, type: "number", value: 0 }, { name: "xuid", op: 14, type: [], value: null }, { name: "charset", op: 15, type: "offset", value: 0 }, { name: "encoding", op: 16, type: "offset", value: 0 }, { name: "charStrings", op: 17, type: "offset", value: 0 }, { name: "private", op: 18, type: ["number", "offset"], value: [0, 0] }, { name: "ros", op: 1230, type: ["SID", "SID", "number"] }, { name: "cidFontVersion", op: 1231, type: "number", value: 0 }, { name: "cidFontRevision", op: 1232, type: "number", value: 0 }, { name: "cidFontType", op: 1233, type: "number", value: 0 }, { name: "cidCount", op: 1234, type: "number", value: 8720 }, { name: "uidBase", op: 1235, type: "number" }, { name: "fdArray", op: 1236, type: "offset" }, { name: "fdSelect", op: 1237, type: "offset" }, { name: "fontName", op: 1238, type: "SID" }], Nt4 = [{ name: "subrs", op: 19, type: "offset", value: 0 }, { name: "defaultWidthX", op: 20, type: "number", value: 0 }, { name: "nominalWidthX", op: 21, type: "number", value: 0 }];\n function Va(e, r) {\n var t = Bt2(e, 0, e.byteLength);\n return Pt2(t, Gt3, r);\n }\n function Ht2(e, r, t, n11) {\n var a2 = Bt2(e, r, t);\n return Pt2(a2, Nt4, n11);\n }\n function _t3(e, r, t, n11) {\n for (var a2 = [], i5 = 0; i5 < t.length; i5 += 1) {\n var o2 = new DataView(new Uint8Array(t[i5]).buffer), l4 = Va(o2, n11);\n l4._subrs = [], l4._subrsBias = 0;\n var u3 = l4.private[0], c2 = l4.private[1];\n if (u3 !== 0 && c2 !== 0) {\n var d3 = Ht2(e, c2 + r, u3, n11);\n if (l4._defaultWidthX = d3.defaultWidthX, l4._nominalWidthX = d3.nominalWidthX, d3.subrs !== 0) {\n var y5 = c2 + d3.subrs, g6 = Oe3(e, y5 + r);\n l4._subrs = g6.objects, l4._subrsBias = zr(l4._subrs);\n }\n l4._privateDict = d3;\n }\n a2.push(l4);\n }\n return a2;\n }\n function qa(e, r, t, n11) {\n var a2, i5, o2 = new w6.Parser(e, r);\n t -= 1;\n var l4 = [".notdef"], u3 = o2.parseCard8();\n if (u3 === 0) for (var c2 = 0; c2 < t; c2 += 1) a2 = o2.parseSID(), l4.push($e2(n11, a2));\n else if (u3 === 1) for (; l4.length <= t; ) {\n a2 = o2.parseSID(), i5 = o2.parseCard8();\n for (var d3 = 0; d3 <= i5; d3 += 1) l4.push($e2(n11, a2)), a2 += 1;\n }\n else if (u3 === 2) for (; l4.length <= t; ) {\n a2 = o2.parseSID(), i5 = o2.parseCard16();\n for (var y5 = 0; y5 <= i5; y5 += 1) l4.push($e2(n11, a2)), a2 += 1;\n }\n else throw new Error("Unknown charset format " + u3);\n return l4;\n }\n function Xa(e, r, t) {\n var n11, a2 = {}, i5 = new w6.Parser(e, r), o2 = i5.parseCard8();\n if (o2 === 0) for (var l4 = i5.parseCard8(), u3 = 0; u3 < l4; u3 += 1) n11 = i5.parseCard8(), a2[n11] = u3;\n else if (o2 === 1) {\n var c2 = i5.parseCard8();\n n11 = 1;\n for (var d3 = 0; d3 < c2; d3 += 1) for (var y5 = i5.parseCard8(), g6 = i5.parseCard8(), m4 = y5; m4 <= y5 + g6; m4 += 1) a2[m4] = n11, n11 += 1;\n } else throw new Error("Unknown encoding format " + o2);\n return new xr2(a2, t);\n }\n function Ya(e, r, t) {\n var n11, a2, i5, o2, l4 = new Z5(), u3 = [], c2 = 0, d3 = false, y5 = false, g6 = 0, m4 = 0, T4, O4, F4, U6;\n if (e.isCIDFont) {\n var P5 = e.tables.cff.topDict._fdSelect[r.index], I4 = e.tables.cff.topDict._fdArray[P5];\n T4 = I4._subrs, O4 = I4._subrsBias, F4 = I4._defaultWidthX, U6 = I4._nominalWidthX;\n } else T4 = e.tables.cff.topDict._subrs, O4 = e.tables.cff.topDict._subrsBias, F4 = e.tables.cff.topDict._defaultWidthX, U6 = e.tables.cff.topDict._nominalWidthX;\n var H5 = F4;\n function R4(q3, K4) {\n y5 && l4.closePath(), l4.moveTo(q3, K4), y5 = true;\n }\n function B5() {\n var q3;\n q3 = u3.length % 2 !== 0, q3 && !d3 && (H5 = u3.shift() + U6), c2 += u3.length >> 1, u3.length = 0, d3 = true;\n }\n function ue2(q3) {\n for (var K4, se3, le3, pe2, de3, J5, j5, re3, te3, ne3, oe4, he3, Y2 = 0; Y2 < q3.length; ) {\n var ae4 = q3[Y2];\n switch (Y2 += 1, ae4) {\n case 1:\n B5();\n break;\n case 3:\n B5();\n break;\n case 4:\n u3.length > 1 && !d3 && (H5 = u3.shift() + U6, d3 = true), m4 += u3.pop(), R4(g6, m4);\n break;\n case 5:\n for (; u3.length > 0; ) g6 += u3.shift(), m4 += u3.shift(), l4.lineTo(g6, m4);\n break;\n case 6:\n for (; u3.length > 0 && (g6 += u3.shift(), l4.lineTo(g6, m4), u3.length !== 0); ) m4 += u3.shift(), l4.lineTo(g6, m4);\n break;\n case 7:\n for (; u3.length > 0 && (m4 += u3.shift(), l4.lineTo(g6, m4), u3.length !== 0); ) g6 += u3.shift(), l4.lineTo(g6, m4);\n break;\n case 8:\n for (; u3.length > 0; ) n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2 + u3.shift(), l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n case 10:\n de3 = u3.pop() + O4, J5 = T4[de3], J5 && ue2(J5);\n break;\n case 11:\n return;\n case 12:\n switch (ae4 = q3[Y2], Y2 += 1, ae4) {\n case 35:\n n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), j5 = i5 + u3.shift(), re3 = o2 + u3.shift(), te3 = j5 + u3.shift(), ne3 = re3 + u3.shift(), oe4 = te3 + u3.shift(), he3 = ne3 + u3.shift(), g6 = oe4 + u3.shift(), m4 = he3 + u3.shift(), u3.shift(), l4.curveTo(n11, a2, i5, o2, j5, re3), l4.curveTo(te3, ne3, oe4, he3, g6, m4);\n break;\n case 34:\n n11 = g6 + u3.shift(), a2 = m4, i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), j5 = i5 + u3.shift(), re3 = o2, te3 = j5 + u3.shift(), ne3 = o2, oe4 = te3 + u3.shift(), he3 = m4, g6 = oe4 + u3.shift(), l4.curveTo(n11, a2, i5, o2, j5, re3), l4.curveTo(te3, ne3, oe4, he3, g6, m4);\n break;\n case 36:\n n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), j5 = i5 + u3.shift(), re3 = o2, te3 = j5 + u3.shift(), ne3 = o2, oe4 = te3 + u3.shift(), he3 = ne3 + u3.shift(), g6 = oe4 + u3.shift(), l4.curveTo(n11, a2, i5, o2, j5, re3), l4.curveTo(te3, ne3, oe4, he3, g6, m4);\n break;\n case 37:\n n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), j5 = i5 + u3.shift(), re3 = o2 + u3.shift(), te3 = j5 + u3.shift(), ne3 = re3 + u3.shift(), oe4 = te3 + u3.shift(), he3 = ne3 + u3.shift(), Math.abs(oe4 - g6) > Math.abs(he3 - m4) ? g6 = oe4 + u3.shift() : m4 = he3 + u3.shift(), l4.curveTo(n11, a2, i5, o2, j5, re3), l4.curveTo(te3, ne3, oe4, he3, g6, m4);\n break;\n default:\n console.log("Glyph " + r.index + ": unknown operator 1200" + ae4), u3.length = 0;\n }\n break;\n case 14:\n u3.length > 0 && !d3 && (H5 = u3.shift() + U6, d3 = true), y5 && (l4.closePath(), y5 = false);\n break;\n case 18:\n B5();\n break;\n case 19:\n case 20:\n B5(), Y2 += c2 + 7 >> 3;\n break;\n case 21:\n u3.length > 2 && !d3 && (H5 = u3.shift() + U6, d3 = true), m4 += u3.pop(), g6 += u3.pop(), R4(g6, m4);\n break;\n case 22:\n u3.length > 1 && !d3 && (H5 = u3.shift() + U6, d3 = true), g6 += u3.pop(), R4(g6, m4);\n break;\n case 23:\n B5();\n break;\n case 24:\n for (; u3.length > 2; ) n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2 + u3.shift(), l4.curveTo(n11, a2, i5, o2, g6, m4);\n g6 += u3.shift(), m4 += u3.shift(), l4.lineTo(g6, m4);\n break;\n case 25:\n for (; u3.length > 6; ) g6 += u3.shift(), m4 += u3.shift(), l4.lineTo(g6, m4);\n n11 = g6 + u3.shift(), a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2 + u3.shift(), l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n case 26:\n for (u3.length % 2 && (g6 += u3.shift()); u3.length > 0; ) n11 = g6, a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5, m4 = o2 + u3.shift(), l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n case 27:\n for (u3.length % 2 && (m4 += u3.shift()); u3.length > 0; ) n11 = g6 + u3.shift(), a2 = m4, i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2, l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n case 28:\n K4 = q3[Y2], se3 = q3[Y2 + 1], u3.push((K4 << 24 | se3 << 16) >> 16), Y2 += 2;\n break;\n case 29:\n de3 = u3.pop() + e.gsubrsBias, J5 = e.gsubrs[de3], J5 && ue2(J5);\n break;\n case 30:\n for (; u3.length > 0 && (n11 = g6, a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2 + (u3.length === 1 ? u3.shift() : 0), l4.curveTo(n11, a2, i5, o2, g6, m4), u3.length !== 0); ) n11 = g6 + u3.shift(), a2 = m4, i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), m4 = o2 + u3.shift(), g6 = i5 + (u3.length === 1 ? u3.shift() : 0), l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n case 31:\n for (; u3.length > 0 && (n11 = g6 + u3.shift(), a2 = m4, i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), m4 = o2 + u3.shift(), g6 = i5 + (u3.length === 1 ? u3.shift() : 0), l4.curveTo(n11, a2, i5, o2, g6, m4), u3.length !== 0); ) n11 = g6, a2 = m4 + u3.shift(), i5 = n11 + u3.shift(), o2 = a2 + u3.shift(), g6 = i5 + u3.shift(), m4 = o2 + (u3.length === 1 ? u3.shift() : 0), l4.curveTo(n11, a2, i5, o2, g6, m4);\n break;\n default:\n ae4 < 32 ? console.log("Glyph " + r.index + ": unknown operator " + ae4) : ae4 < 247 ? u3.push(ae4 - 139) : ae4 < 251 ? (K4 = q3[Y2], Y2 += 1, u3.push((ae4 - 247) * 256 + K4 + 108)) : ae4 < 255 ? (K4 = q3[Y2], Y2 += 1, u3.push(-(ae4 - 251) * 256 - K4 - 108)) : (K4 = q3[Y2], se3 = q3[Y2 + 1], le3 = q3[Y2 + 2], pe2 = q3[Y2 + 3], Y2 += 4, u3.push((K4 << 24 | se3 << 16 | le3 << 8 | pe2) / 65536));\n }\n }\n }\n return ue2(t), r.advanceWidth = H5, l4;\n }\n function Za(e, r, t, n11) {\n var a2 = [], i5, o2 = new w6.Parser(e, r), l4 = o2.parseCard8();\n if (l4 === 0) for (var u3 = 0; u3 < t; u3++) {\n if (i5 = o2.parseCard8(), i5 >= n11) throw new Error("CFF table CID Font FDSelect has bad FD index value " + i5 + " (FD count " + n11 + ")");\n a2.push(i5);\n }\n else if (l4 === 3) {\n var c2 = o2.parseCard16(), d3 = o2.parseCard16();\n if (d3 !== 0) throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID " + d3);\n for (var y5, g6 = 0; g6 < c2; g6++) {\n if (i5 = o2.parseCard8(), y5 = o2.parseCard16(), i5 >= n11) throw new Error("CFF table CID Font FDSelect has bad FD index value " + i5 + " (FD count " + n11 + ")");\n if (y5 > t) throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID " + y5);\n for (; d3 < y5; d3++) a2.push(i5);\n d3 = y5;\n }\n if (y5 !== t) throw new Error("CFF Table CID Font FDSelect format 3 range has bad final GID " + y5);\n } else throw new Error("CFF Table CID Font FDSelect table has unsupported format " + l4);\n return a2;\n }\n function Qa(e, r, t) {\n t.tables.cff = {};\n var n11 = Wa(e, r), a2 = Oe3(e, n11.endOffset, w6.bytesToString), i5 = Oe3(e, a2.endOffset), o2 = Oe3(e, i5.endOffset, w6.bytesToString), l4 = Oe3(e, o2.endOffset);\n t.gsubrs = l4.objects, t.gsubrsBias = zr(t.gsubrs);\n var u3 = _t3(e, r, i5.objects, o2.objects);\n if (u3.length !== 1) throw new Error("CFF table has too many fonts in \'FontSet\' - count of fonts NameIndex.length = " + u3.length);\n var c2 = u3[0];\n if (t.tables.cff.topDict = c2, c2._privateDict && (t.defaultWidthX = c2._privateDict.defaultWidthX, t.nominalWidthX = c2._privateDict.nominalWidthX), c2.ros[0] !== void 0 && c2.ros[1] !== void 0 && (t.isCIDFont = true), t.isCIDFont) {\n var d3 = c2.fdArray, y5 = c2.fdSelect;\n if (d3 === 0 || y5 === 0) throw new Error("Font is marked as a CID font, but FDArray and/or FDSelect information is missing");\n d3 += r;\n var g6 = Oe3(e, d3), m4 = _t3(e, r, g6.objects, o2.objects);\n c2._fdArray = m4, y5 += r, c2._fdSelect = Za(e, y5, t.numGlyphs, m4.length);\n }\n var T4 = r + c2.private[1], O4 = Ht2(e, T4, c2.private[0], o2.objects);\n if (t.defaultWidthX = O4.defaultWidthX, t.nominalWidthX = O4.nominalWidthX, O4.subrs !== 0) {\n var F4 = T4 + O4.subrs, U6 = Oe3(e, F4);\n t.subrs = U6.objects, t.subrsBias = zr(t.subrs);\n } else t.subrs = [], t.subrsBias = 0;\n var P5 = Oe3(e, r + c2.charStrings);\n t.nGlyphs = P5.objects.length;\n var I4 = qa(e, r + c2.charset, t.nGlyphs, o2.objects);\n c2.encoding === 0 ? t.cffEncoding = new xr2(Oa, I4) : c2.encoding === 1 ? t.cffEncoding = new xr2(Ia, I4) : t.cffEncoding = Xa(e, r + c2.encoding, I4), t.encoding = t.encoding || t.cffEncoding, t.glyphs = new qe2.GlyphSet(t);\n for (var H5 = 0; H5 < t.nGlyphs; H5 += 1) {\n var R4 = P5.objects[H5];\n t.glyphs.push(H5, qe2.cffGlyphLoader(t, H5, Ya, R4));\n }\n }\n function zt3(e, r) {\n var t, n11 = br2.indexOf(e);\n return n11 >= 0 && (t = n11), n11 = r.indexOf(e), n11 >= 0 ? t = n11 + br2.length : (t = br2.length + r.length, r.push(e)), t;\n }\n function Ja() {\n return new A4.Record("Header", [{ name: "major", type: "Card8", value: 1 }, { name: "minor", type: "Card8", value: 0 }, { name: "hdrSize", type: "Card8", value: 4 }, { name: "major", type: "Card8", value: 1 }]);\n }\n function Ka(e) {\n var r = new A4.Record("Name INDEX", [{ name: "names", type: "INDEX", value: [] }]);\n r.names = [];\n for (var t = 0; t < e.length; t += 1) r.names.push({ name: "name_" + t, type: "NAME", value: e[t] });\n return r;\n }\n function Wt2(e, r, t) {\n for (var n11 = {}, a2 = 0; a2 < e.length; a2 += 1) {\n var i5 = e[a2], o2 = r[i5.name];\n o2 !== void 0 && !Mt2(o2, i5.value) && (i5.type === "SID" && (o2 = zt3(o2, t)), n11[i5.op] = { name: i5.name, type: i5.type, value: o2 });\n }\n return n11;\n }\n function Vt3(e, r) {\n var t = new A4.Record("Top DICT", [{ name: "dict", type: "DICT", value: {} }]);\n return t.dict = Wt2(Gt3, e, r), t;\n }\n function qt3(e) {\n var r = new A4.Record("Top DICT INDEX", [{ name: "topDicts", type: "INDEX", value: [] }]);\n return r.topDicts = [{ name: "topDict_0", type: "TABLE", value: e }], r;\n }\n function ja(e) {\n var r = new A4.Record("String INDEX", [{ name: "strings", type: "INDEX", value: [] }]);\n r.strings = [];\n for (var t = 0; t < e.length; t += 1) r.strings.push({ name: "string_" + t, type: "STRING", value: e[t] });\n return r;\n }\n function $a() {\n return new A4.Record("Global Subr INDEX", [{ name: "subrs", type: "INDEX", value: [] }]);\n }\n function ei2(e, r) {\n for (var t = new A4.Record("Charsets", [{ name: "format", type: "Card8", value: 0 }]), n11 = 0; n11 < e.length; n11 += 1) {\n var a2 = e[n11], i5 = zt3(a2, r);\n t.fields.push({ name: "glyph_" + n11, type: "SID", value: i5 });\n }\n return t;\n }\n function ri2(e) {\n var r = [], t = e.path;\n r.push({ name: "width", type: "NUMBER", value: e.advanceWidth });\n for (var n11 = 0, a2 = 0, i5 = 0; i5 < t.commands.length; i5 += 1) {\n var o2 = void 0, l4 = void 0, u3 = t.commands[i5];\n if (u3.type === "Q") {\n var c2 = 0.3333333333333333, d3 = 2 / 3;\n u3 = { type: "C", x: u3.x, y: u3.y, x1: c2 * n11 + d3 * u3.x1, y1: c2 * a2 + d3 * u3.y1, x2: c2 * u3.x + d3 * u3.x1, y2: c2 * u3.y + d3 * u3.y1 };\n }\n if (u3.type === "M") o2 = Math.round(u3.x - n11), l4 = Math.round(u3.y - a2), r.push({ name: "dx", type: "NUMBER", value: o2 }), r.push({ name: "dy", type: "NUMBER", value: l4 }), r.push({ name: "rmoveto", type: "OP", value: 21 }), n11 = Math.round(u3.x), a2 = Math.round(u3.y);\n else if (u3.type === "L") o2 = Math.round(u3.x - n11), l4 = Math.round(u3.y - a2), r.push({ name: "dx", type: "NUMBER", value: o2 }), r.push({ name: "dy", type: "NUMBER", value: l4 }), r.push({ name: "rlineto", type: "OP", value: 5 }), n11 = Math.round(u3.x), a2 = Math.round(u3.y);\n else if (u3.type === "C") {\n var y5 = Math.round(u3.x1 - n11), g6 = Math.round(u3.y1 - a2), m4 = Math.round(u3.x2 - u3.x1), T4 = Math.round(u3.y2 - u3.y1);\n o2 = Math.round(u3.x - u3.x2), l4 = Math.round(u3.y - u3.y2), r.push({ name: "dx1", type: "NUMBER", value: y5 }), r.push({ name: "dy1", type: "NUMBER", value: g6 }), r.push({ name: "dx2", type: "NUMBER", value: m4 }), r.push({ name: "dy2", type: "NUMBER", value: T4 }), r.push({ name: "dx", type: "NUMBER", value: o2 }), r.push({ name: "dy", type: "NUMBER", value: l4 }), r.push({ name: "rrcurveto", type: "OP", value: 8 }), n11 = Math.round(u3.x), a2 = Math.round(u3.y);\n }\n }\n return r.push({ name: "endchar", type: "OP", value: 14 }), r;\n }\n function ti2(e) {\n for (var r = new A4.Record("CharStrings INDEX", [{ name: "charStrings", type: "INDEX", value: [] }]), t = 0; t < e.length; t += 1) {\n var n11 = e.get(t), a2 = ri2(n11);\n r.charStrings.push({ name: n11.name, type: "CHARSTRING", value: a2 });\n }\n return r;\n }\n function ni(e, r) {\n var t = new A4.Record("Private DICT", [{ name: "dict", type: "DICT", value: {} }]);\n return t.dict = Wt2(Nt4, e, r), t;\n }\n function ai2(e, r) {\n for (var t = new A4.Table("CFF ", [{ name: "header", type: "RECORD" }, { name: "nameIndex", type: "RECORD" }, { name: "topDictIndex", type: "RECORD" }, { name: "stringIndex", type: "RECORD" }, { name: "globalSubrIndex", type: "RECORD" }, { name: "charsets", type: "RECORD" }, { name: "charStringsIndex", type: "RECORD" }, { name: "privateDict", type: "RECORD" }]), n11 = 1 / r.unitsPerEm, a2 = { version: r.version, fullName: r.fullName, familyName: r.familyName, weight: r.weightName, fontBBox: r.fontBBox || [0, 0, 0, 0], fontMatrix: [n11, 0, 0, n11, 0, 0], charset: 999, encoding: 0, charStrings: 999, private: [0, 999] }, i5 = {}, o2 = [], l4, u3 = 1; u3 < e.length; u3 += 1) l4 = e.get(u3), o2.push(l4.name);\n var c2 = [];\n t.header = Ja(), t.nameIndex = Ka([r.postScriptName]);\n var d3 = Vt3(a2, c2);\n t.topDictIndex = qt3(d3), t.globalSubrIndex = $a(), t.charsets = ei2(o2, c2), t.charStringsIndex = ti2(e), t.privateDict = ni(i5, c2), t.stringIndex = ja(c2);\n var y5 = t.header.sizeOf() + t.nameIndex.sizeOf() + t.topDictIndex.sizeOf() + t.stringIndex.sizeOf() + t.globalSubrIndex.sizeOf();\n return a2.charset = y5, a2.encoding = 0, a2.charStrings = a2.charset + t.charsets.sizeOf(), a2.private[1] = a2.charStrings + t.charStringsIndex.sizeOf(), d3 = Vt3(a2, c2), t.topDictIndex = qt3(d3), t;\n }\n var Xt3 = { parse: Qa, make: ai2 };\n function ii2(e, r) {\n var t = {}, n11 = new w6.Parser(e, r);\n return t.version = n11.parseVersion(), t.fontRevision = Math.round(n11.parseFixed() * 1e3) / 1e3, t.checkSumAdjustment = n11.parseULong(), t.magicNumber = n11.parseULong(), G5.argument(t.magicNumber === 1594834165, "Font header has wrong magic number."), t.flags = n11.parseUShort(), t.unitsPerEm = n11.parseUShort(), t.created = n11.parseLongDateTime(), t.modified = n11.parseLongDateTime(), t.xMin = n11.parseShort(), t.yMin = n11.parseShort(), t.xMax = n11.parseShort(), t.yMax = n11.parseShort(), t.macStyle = n11.parseUShort(), t.lowestRecPPEM = n11.parseUShort(), t.fontDirectionHint = n11.parseShort(), t.indexToLocFormat = n11.parseShort(), t.glyphDataFormat = n11.parseShort(), t;\n }\n function si2(e) {\n var r = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3) + 2082844800, t = r;\n return e.createdTimestamp && (t = e.createdTimestamp + 2082844800), new A4.Table("head", [{ name: "version", type: "FIXED", value: 65536 }, { name: "fontRevision", type: "FIXED", value: 65536 }, { name: "checkSumAdjustment", type: "ULONG", value: 0 }, { name: "magicNumber", type: "ULONG", value: 1594834165 }, { name: "flags", type: "USHORT", value: 0 }, { name: "unitsPerEm", type: "USHORT", value: 1e3 }, { name: "created", type: "LONGDATETIME", value: t }, { name: "modified", type: "LONGDATETIME", value: r }, { name: "xMin", type: "SHORT", value: 0 }, { name: "yMin", type: "SHORT", value: 0 }, { name: "xMax", type: "SHORT", value: 0 }, { name: "yMax", type: "SHORT", value: 0 }, { name: "macStyle", type: "USHORT", value: 0 }, { name: "lowestRecPPEM", type: "USHORT", value: 0 }, { name: "fontDirectionHint", type: "SHORT", value: 2 }, { name: "indexToLocFormat", type: "SHORT", value: 0 }, { name: "glyphDataFormat", type: "SHORT", value: 0 }], e);\n }\n var Yt3 = { parse: ii2, make: si2 };\n function oi2(e, r) {\n var t = {}, n11 = new w6.Parser(e, r);\n return t.version = n11.parseVersion(), t.ascender = n11.parseShort(), t.descender = n11.parseShort(), t.lineGap = n11.parseShort(), t.advanceWidthMax = n11.parseUShort(), t.minLeftSideBearing = n11.parseShort(), t.minRightSideBearing = n11.parseShort(), t.xMaxExtent = n11.parseShort(), t.caretSlopeRise = n11.parseShort(), t.caretSlopeRun = n11.parseShort(), t.caretOffset = n11.parseShort(), n11.relativeOffset += 8, t.metricDataFormat = n11.parseShort(), t.numberOfHMetrics = n11.parseUShort(), t;\n }\n function ui2(e) {\n return new A4.Table("hhea", [{ name: "version", type: "FIXED", value: 65536 }, { name: "ascender", type: "FWORD", value: 0 }, { name: "descender", type: "FWORD", value: 0 }, { name: "lineGap", type: "FWORD", value: 0 }, { name: "advanceWidthMax", type: "UFWORD", value: 0 }, { name: "minLeftSideBearing", type: "FWORD", value: 0 }, { name: "minRightSideBearing", type: "FWORD", value: 0 }, { name: "xMaxExtent", type: "FWORD", value: 0 }, { name: "caretSlopeRise", type: "SHORT", value: 1 }, { name: "caretSlopeRun", type: "SHORT", value: 0 }, { name: "caretOffset", type: "SHORT", value: 0 }, { name: "reserved1", type: "SHORT", value: 0 }, { name: "reserved2", type: "SHORT", value: 0 }, { name: "reserved3", type: "SHORT", value: 0 }, { name: "reserved4", type: "SHORT", value: 0 }, { name: "metricDataFormat", type: "SHORT", value: 0 }, { name: "numberOfHMetrics", type: "USHORT", value: 0 }], e);\n }\n var Zt3 = { parse: oi2, make: ui2 };\n function li2(e, r, t, n11, a2) {\n for (var i5, o2, l4 = new w6.Parser(e, r), u3 = 0; u3 < n11; u3 += 1) {\n u3 < t && (i5 = l4.parseUShort(), o2 = l4.parseShort());\n var c2 = a2.get(u3);\n c2.advanceWidth = i5, c2.leftSideBearing = o2;\n }\n }\n function fi2(e) {\n for (var r = new A4.Table("hmtx", []), t = 0; t < e.length; t += 1) {\n var n11 = e.get(t), a2 = n11.advanceWidth || 0, i5 = n11.leftSideBearing || 0;\n r.fields.push({ name: "advanceWidth_" + t, type: "USHORT", value: a2 }), r.fields.push({ name: "leftSideBearing_" + t, type: "SHORT", value: i5 });\n }\n return r;\n }\n var Qt3 = { parse: li2, make: fi2 };\n function pi2(e) {\n for (var r = new A4.Table("ltag", [{ name: "version", type: "ULONG", value: 1 }, { name: "flags", type: "ULONG", value: 0 }, { name: "numTags", type: "ULONG", value: e.length }]), t = "", n11 = 12 + e.length * 4, a2 = 0; a2 < e.length; ++a2) {\n var i5 = t.indexOf(e[a2]);\n i5 < 0 && (i5 = t.length, t += e[a2]), r.fields.push({ name: "offset " + a2, type: "USHORT", value: n11 + i5 }), r.fields.push({ name: "length " + a2, type: "USHORT", value: e[a2].length });\n }\n return r.fields.push({ name: "stringPool", type: "CHARARRAY", value: t }), r;\n }\n function hi2(e, r) {\n var t = new w6.Parser(e, r), n11 = t.parseULong();\n G5.argument(n11 === 1, "Unsupported ltag table version."), t.skip("uLong", 1);\n for (var a2 = t.parseULong(), i5 = [], o2 = 0; o2 < a2; o2++) {\n for (var l4 = "", u3 = r + t.parseUShort(), c2 = t.parseUShort(), d3 = u3; d3 < u3 + c2; ++d3) l4 += String.fromCharCode(e.getInt8(d3));\n i5.push(l4);\n }\n return i5;\n }\n var Jt2 = { make: pi2, parse: hi2 };\n function ci2(e, r) {\n var t = {}, n11 = new w6.Parser(e, r);\n return t.version = n11.parseVersion(), t.numGlyphs = n11.parseUShort(), t.version === 1 && (t.maxPoints = n11.parseUShort(), t.maxContours = n11.parseUShort(), t.maxCompositePoints = n11.parseUShort(), t.maxCompositeContours = n11.parseUShort(), t.maxZones = n11.parseUShort(), t.maxTwilightPoints = n11.parseUShort(), t.maxStorage = n11.parseUShort(), t.maxFunctionDefs = n11.parseUShort(), t.maxInstructionDefs = n11.parseUShort(), t.maxStackElements = n11.parseUShort(), t.maxSizeOfInstructions = n11.parseUShort(), t.maxComponentElements = n11.parseUShort(), t.maxComponentDepth = n11.parseUShort()), t;\n }\n function vi(e) {\n return new A4.Table("maxp", [{ name: "version", type: "FIXED", value: 20480 }, { name: "numGlyphs", type: "USHORT", value: e }]);\n }\n var Kt2 = { parse: ci2, make: vi }, jt2 = ["copyright", "fontFamily", "fontSubfamily", "uniqueID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "manufacturerURL", "designerURL", "license", "licenseURL", "reserved", "preferredFamily", "preferredSubfamily", "compatibleFullName", "sampleText", "postScriptFindFontName", "wwsFamily", "wwsSubfamily"], $t3 = { 0: "en", 1: "fr", 2: "de", 3: "it", 4: "nl", 5: "sv", 6: "es", 7: "da", 8: "pt", 9: "no", 10: "he", 11: "ja", 12: "ar", 13: "fi", 14: "el", 15: "is", 16: "mt", 17: "tr", 18: "hr", 19: "zh-Hant", 20: "ur", 21: "hi", 22: "th", 23: "ko", 24: "lt", 25: "pl", 26: "hu", 27: "es", 28: "lv", 29: "se", 30: "fo", 31: "fa", 32: "ru", 33: "zh", 34: "nl-BE", 35: "ga", 36: "sq", 37: "ro", 38: "cz", 39: "sk", 40: "si", 41: "yi", 42: "sr", 43: "mk", 44: "bg", 45: "uk", 46: "be", 47: "uz", 48: "kk", 49: "az-Cyrl", 50: "az-Arab", 51: "hy", 52: "ka", 53: "mo", 54: "ky", 55: "tg", 56: "tk", 57: "mn-CN", 58: "mn", 59: "ps", 60: "ks", 61: "ku", 62: "sd", 63: "bo", 64: "ne", 65: "sa", 66: "mr", 67: "bn", 68: "as", 69: "gu", 70: "pa", 71: "or", 72: "ml", 73: "kn", 74: "ta", 75: "te", 76: "si", 77: "my", 78: "km", 79: "lo", 80: "vi", 81: "id", 82: "tl", 83: "ms", 84: "ms-Arab", 85: "am", 86: "ti", 87: "om", 88: "so", 89: "sw", 90: "rw", 91: "rn", 92: "ny", 93: "mg", 94: "eo", 128: "cy", 129: "eu", 130: "ca", 131: "la", 132: "qu", 133: "gn", 134: "ay", 135: "tt", 136: "ug", 137: "dz", 138: "jv", 139: "su", 140: "gl", 141: "af", 142: "br", 143: "iu", 144: "gd", 145: "gv", 146: "ga", 147: "to", 148: "el-polyton", 149: "kl", 150: "az", 151: "nn" }, di2 = { 0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 5, 11: 1, 12: 4, 13: 0, 14: 6, 15: 0, 16: 0, 17: 0, 18: 0, 19: 2, 20: 4, 21: 9, 22: 21, 23: 3, 24: 29, 25: 29, 26: 29, 27: 29, 28: 29, 29: 0, 30: 0, 31: 4, 32: 7, 33: 25, 34: 0, 35: 0, 36: 0, 37: 0, 38: 29, 39: 29, 40: 0, 41: 5, 42: 7, 43: 7, 44: 7, 45: 7, 46: 7, 47: 7, 48: 7, 49: 7, 50: 4, 51: 24, 52: 23, 53: 7, 54: 7, 55: 7, 56: 7, 57: 27, 58: 7, 59: 4, 60: 4, 61: 4, 62: 4, 63: 26, 64: 9, 65: 9, 66: 9, 67: 13, 68: 13, 69: 11, 70: 10, 71: 12, 72: 17, 73: 16, 74: 14, 75: 15, 76: 18, 77: 19, 78: 20, 79: 22, 80: 30, 81: 0, 82: 0, 83: 0, 84: 4, 85: 28, 86: 28, 87: 28, 88: 0, 89: 0, 90: 0, 91: 0, 92: 0, 93: 0, 94: 0, 128: 0, 129: 0, 130: 0, 131: 0, 132: 0, 133: 0, 134: 0, 135: 7, 136: 4, 137: 26, 138: 0, 139: 0, 140: 0, 141: 0, 142: 0, 143: 28, 144: 0, 145: 0, 146: 0, 147: 0, 148: 6, 149: 0, 150: 0, 151: 0 }, en2 = { 1078: "af", 1052: "sq", 1156: "gsw", 1118: "am", 5121: "ar-DZ", 15361: "ar-BH", 3073: "ar", 2049: "ar-IQ", 11265: "ar-JO", 13313: "ar-KW", 12289: "ar-LB", 4097: "ar-LY", 6145: "ary", 8193: "ar-OM", 16385: "ar-QA", 1025: "ar-SA", 10241: "ar-SY", 7169: "aeb", 14337: "ar-AE", 9217: "ar-YE", 1067: "hy", 1101: "as", 2092: "az-Cyrl", 1068: "az", 1133: "ba", 1069: "eu", 1059: "be", 2117: "bn", 1093: "bn-IN", 8218: "bs-Cyrl", 5146: "bs", 1150: "br", 1026: "bg", 1027: "ca", 3076: "zh-HK", 5124: "zh-MO", 2052: "zh", 4100: "zh-SG", 1028: "zh-TW", 1155: "co", 1050: "hr", 4122: "hr-BA", 1029: "cs", 1030: "da", 1164: "prs", 1125: "dv", 2067: "nl-BE", 1043: "nl", 3081: "en-AU", 10249: "en-BZ", 4105: "en-CA", 9225: "en-029", 16393: "en-IN", 6153: "en-IE", 8201: "en-JM", 17417: "en-MY", 5129: "en-NZ", 13321: "en-PH", 18441: "en-SG", 7177: "en-ZA", 11273: "en-TT", 2057: "en-GB", 1033: "en", 12297: "en-ZW", 1061: "et", 1080: "fo", 1124: "fil", 1035: "fi", 2060: "fr-BE", 3084: "fr-CA", 1036: "fr", 5132: "fr-LU", 6156: "fr-MC", 4108: "fr-CH", 1122: "fy", 1110: "gl", 1079: "ka", 3079: "de-AT", 1031: "de", 5127: "de-LI", 4103: "de-LU", 2055: "de-CH", 1032: "el", 1135: "kl", 1095: "gu", 1128: "ha", 1037: "he", 1081: "hi", 1038: "hu", 1039: "is", 1136: "ig", 1057: "id", 1117: "iu", 2141: "iu-Latn", 2108: "ga", 1076: "xh", 1077: "zu", 1040: "it", 2064: "it-CH", 1041: "ja", 1099: "kn", 1087: "kk", 1107: "km", 1158: "quc", 1159: "rw", 1089: "sw", 1111: "kok", 1042: "ko", 1088: "ky", 1108: "lo", 1062: "lv", 1063: "lt", 2094: "dsb", 1134: "lb", 1071: "mk", 2110: "ms-BN", 1086: "ms", 1100: "ml", 1082: "mt", 1153: "mi", 1146: "arn", 1102: "mr", 1148: "moh", 1104: "mn", 2128: "mn-CN", 1121: "ne", 1044: "nb", 2068: "nn", 1154: "oc", 1096: "or", 1123: "ps", 1045: "pl", 1046: "pt", 2070: "pt-PT", 1094: "pa", 1131: "qu-BO", 2155: "qu-EC", 3179: "qu", 1048: "ro", 1047: "rm", 1049: "ru", 9275: "smn", 4155: "smj-NO", 5179: "smj", 3131: "se-FI", 1083: "se", 2107: "se-SE", 8251: "sms", 6203: "sma-NO", 7227: "sms", 1103: "sa", 7194: "sr-Cyrl-BA", 3098: "sr", 6170: "sr-Latn-BA", 2074: "sr-Latn", 1132: "nso", 1074: "tn", 1115: "si", 1051: "sk", 1060: "sl", 11274: "es-AR", 16394: "es-BO", 13322: "es-CL", 9226: "es-CO", 5130: "es-CR", 7178: "es-DO", 12298: "es-EC", 17418: "es-SV", 4106: "es-GT", 18442: "es-HN", 2058: "es-MX", 19466: "es-NI", 6154: "es-PA", 15370: "es-PY", 10250: "es-PE", 20490: "es-PR", 3082: "es", 1034: "es", 21514: "es-US", 14346: "es-UY", 8202: "es-VE", 2077: "sv-FI", 1053: "sv", 1114: "syr", 1064: "tg", 2143: "tzm", 1097: "ta", 1092: "tt", 1098: "te", 1054: "th", 1105: "bo", 1055: "tr", 1090: "tk", 1152: "ug", 1058: "uk", 1070: "hsb", 1056: "ur", 2115: "uz-Cyrl", 1091: "uz", 1066: "vi", 1106: "cy", 1160: "wo", 1157: "sah", 1144: "ii", 1130: "yo" };\n function gi2(e, r, t) {\n switch (e) {\n case 0:\n if (r === 65535) return "und";\n if (t) return t[r];\n break;\n case 1:\n return $t3[r];\n case 3:\n return en2[r];\n }\n }\n var Wr2 = "utf-16", mi = { 0: "macintosh", 1: "x-mac-japanese", 2: "x-mac-chinesetrad", 3: "x-mac-korean", 6: "x-mac-greek", 7: "x-mac-cyrillic", 9: "x-mac-devanagai", 10: "x-mac-gurmukhi", 11: "x-mac-gujarati", 12: "x-mac-oriya", 13: "x-mac-bengali", 14: "x-mac-tamil", 15: "x-mac-telugu", 16: "x-mac-kannada", 17: "x-mac-malayalam", 18: "x-mac-sinhalese", 19: "x-mac-burmese", 20: "x-mac-khmer", 21: "x-mac-thai", 22: "x-mac-lao", 23: "x-mac-georgian", 24: "x-mac-armenian", 25: "x-mac-chinesesimp", 26: "x-mac-tibetan", 27: "x-mac-mongolian", 28: "x-mac-ethiopic", 29: "x-mac-ce", 30: "x-mac-vietnamese", 31: "x-mac-extarabic" }, yi2 = { 15: "x-mac-icelandic", 17: "x-mac-turkish", 18: "x-mac-croatian", 24: "x-mac-ce", 25: "x-mac-ce", 26: "x-mac-ce", 27: "x-mac-ce", 28: "x-mac-ce", 30: "x-mac-icelandic", 37: "x-mac-romanian", 38: "x-mac-ce", 39: "x-mac-ce", 40: "x-mac-ce", 143: "x-mac-inuit", 146: "x-mac-gaelic" };\n function rn2(e, r, t) {\n switch (e) {\n case 0:\n return Wr2;\n case 1:\n return yi2[t] || mi[r];\n case 3:\n if (r === 1 || r === 10) return Wr2;\n break;\n }\n }\n function bi(e, r, t) {\n for (var n11 = {}, a2 = new w6.Parser(e, r), i5 = a2.parseUShort(), o2 = a2.parseUShort(), l4 = a2.offset + a2.parseUShort(), u3 = 0; u3 < o2; u3++) {\n var c2 = a2.parseUShort(), d3 = a2.parseUShort(), y5 = a2.parseUShort(), g6 = a2.parseUShort(), m4 = jt2[g6] || g6, T4 = a2.parseUShort(), O4 = a2.parseUShort(), F4 = gi2(c2, y5, t), U6 = rn2(c2, d3, y5);\n if (U6 !== void 0 && F4 !== void 0) {\n var P5 = void 0;\n if (U6 === Wr2 ? P5 = Ve3.UTF16(e, l4 + O4, T4) : P5 = Ve3.MACSTRING(e, l4 + O4, T4, U6), P5) {\n var I4 = n11[m4];\n I4 === void 0 && (I4 = n11[m4] = {}), I4[F4] = P5;\n }\n }\n }\n var H5 = 0;\n return i5 === 1 && (H5 = a2.parseUShort()), n11;\n }\n function Vr2(e) {\n var r = {};\n for (var t in e) r[e[t]] = parseInt(t);\n return r;\n }\n function tn2(e, r, t, n11, a2, i5) {\n return new A4.Record("NameRecord", [{ name: "platformID", type: "USHORT", value: e }, { name: "encodingID", type: "USHORT", value: r }, { name: "languageID", type: "USHORT", value: t }, { name: "nameID", type: "USHORT", value: n11 }, { name: "length", type: "USHORT", value: a2 }, { name: "offset", type: "USHORT", value: i5 }]);\n }\n function xi2(e, r) {\n var t = e.length, n11 = r.length - t + 1;\n e: for (var a2 = 0; a2 < n11; a2++) for (; a2 < n11; a2++) {\n for (var i5 = 0; i5 < t; i5++) if (r[a2 + i5] !== e[i5]) continue e;\n return a2;\n }\n return -1;\n }\n function nn(e, r) {\n var t = xi2(e, r);\n if (t < 0) {\n t = r.length;\n for (var n11 = 0, a2 = e.length; n11 < a2; ++n11) r.push(e[n11]);\n }\n return t;\n }\n function Si2(e, r) {\n var t, n11 = [], a2 = {}, i5 = Vr2(jt2);\n for (var o2 in e) {\n var l4 = i5[o2];\n if (l4 === void 0 && (l4 = o2), t = parseInt(l4), isNaN(t)) throw new Error(\'Name table entry "\' + o2 + \'" does not exist, see nameTableNames for complete list.\');\n a2[t] = e[o2], n11.push(t);\n }\n for (var u3 = Vr2($t3), c2 = Vr2(en2), d3 = [], y5 = [], g6 = 0; g6 < n11.length; g6++) {\n t = n11[g6];\n var m4 = a2[t];\n for (var T4 in m4) {\n var O4 = m4[T4], F4 = 1, U6 = u3[T4], P5 = di2[U6], I4 = rn2(F4, P5, U6), H5 = E5.MACSTRING(O4, I4);\n H5 === void 0 && (F4 = 0, U6 = r.indexOf(T4), U6 < 0 && (U6 = r.length, r.push(T4)), P5 = 4, H5 = E5.UTF16(O4));\n var R4 = nn(H5, y5);\n d3.push(tn2(F4, P5, U6, t, H5.length, R4));\n var B5 = c2[T4];\n if (B5 !== void 0) {\n var ue2 = E5.UTF16(O4), q3 = nn(ue2, y5);\n d3.push(tn2(3, 1, B5, t, ue2.length, q3));\n }\n }\n }\n d3.sort(function(le3, pe2) {\n return le3.platformID - pe2.platformID || le3.encodingID - pe2.encodingID || le3.languageID - pe2.languageID || le3.nameID - pe2.nameID;\n });\n for (var K4 = new A4.Table("name", [{ name: "format", type: "USHORT", value: 0 }, { name: "count", type: "USHORT", value: d3.length }, { name: "stringOffset", type: "USHORT", value: 6 + d3.length * 12 }]), se3 = 0; se3 < d3.length; se3++) K4.fields.push({ name: "record_" + se3, type: "RECORD", value: d3[se3] });\n return K4.fields.push({ name: "strings", type: "LITERAL", value: y5 }), K4;\n }\n var an2 = { parse: bi, make: Si2 }, qr2 = [{ begin: 0, end: 127 }, { begin: 128, end: 255 }, { begin: 256, end: 383 }, { begin: 384, end: 591 }, { begin: 592, end: 687 }, { begin: 688, end: 767 }, { begin: 768, end: 879 }, { begin: 880, end: 1023 }, { begin: 11392, end: 11519 }, { begin: 1024, end: 1279 }, { begin: 1328, end: 1423 }, { begin: 1424, end: 1535 }, { begin: 42240, end: 42559 }, { begin: 1536, end: 1791 }, { begin: 1984, end: 2047 }, { begin: 2304, end: 2431 }, { begin: 2432, end: 2559 }, { begin: 2560, end: 2687 }, { begin: 2688, end: 2815 }, { begin: 2816, end: 2943 }, { begin: 2944, end: 3071 }, { begin: 3072, end: 3199 }, { begin: 3200, end: 3327 }, { begin: 3328, end: 3455 }, { begin: 3584, end: 3711 }, { begin: 3712, end: 3839 }, { begin: 4256, end: 4351 }, { begin: 6912, end: 7039 }, { begin: 4352, end: 4607 }, { begin: 7680, end: 7935 }, { begin: 7936, end: 8191 }, { begin: 8192, end: 8303 }, { begin: 8304, end: 8351 }, { begin: 8352, end: 8399 }, { begin: 8400, end: 8447 }, { begin: 8448, end: 8527 }, { begin: 8528, end: 8591 }, { begin: 8592, end: 8703 }, { begin: 8704, end: 8959 }, { begin: 8960, end: 9215 }, { begin: 9216, end: 9279 }, { begin: 9280, end: 9311 }, { begin: 9312, end: 9471 }, { begin: 9472, end: 9599 }, { begin: 9600, end: 9631 }, { begin: 9632, end: 9727 }, { begin: 9728, end: 9983 }, { begin: 9984, end: 10175 }, { begin: 12288, end: 12351 }, { begin: 12352, end: 12447 }, { begin: 12448, end: 12543 }, { begin: 12544, end: 12591 }, { begin: 12592, end: 12687 }, { begin: 43072, end: 43135 }, { begin: 12800, end: 13055 }, { begin: 13056, end: 13311 }, { begin: 44032, end: 55215 }, { begin: 55296, end: 57343 }, { begin: 67840, end: 67871 }, { begin: 19968, end: 40959 }, { begin: 57344, end: 63743 }, { begin: 12736, end: 12783 }, { begin: 64256, end: 64335 }, { begin: 64336, end: 65023 }, { begin: 65056, end: 65071 }, { begin: 65040, end: 65055 }, { begin: 65104, end: 65135 }, { begin: 65136, end: 65279 }, { begin: 65280, end: 65519 }, { begin: 65520, end: 65535 }, { begin: 3840, end: 4095 }, { begin: 1792, end: 1871 }, { begin: 1920, end: 1983 }, { begin: 3456, end: 3583 }, { begin: 4096, end: 4255 }, { begin: 4608, end: 4991 }, { begin: 5024, end: 5119 }, { begin: 5120, end: 5759 }, { begin: 5760, end: 5791 }, { begin: 5792, end: 5887 }, { begin: 6016, end: 6143 }, { begin: 6144, end: 6319 }, { begin: 10240, end: 10495 }, { begin: 40960, end: 42127 }, { begin: 5888, end: 5919 }, { begin: 66304, end: 66351 }, { begin: 66352, end: 66383 }, { begin: 66560, end: 66639 }, { begin: 118784, end: 119039 }, { begin: 119808, end: 120831 }, { begin: 1044480, end: 1048573 }, { begin: 65024, end: 65039 }, { begin: 917504, end: 917631 }, { begin: 6400, end: 6479 }, { begin: 6480, end: 6527 }, { begin: 6528, end: 6623 }, { begin: 6656, end: 6687 }, { begin: 11264, end: 11359 }, { begin: 11568, end: 11647 }, { begin: 19904, end: 19967 }, { begin: 43008, end: 43055 }, { begin: 65536, end: 65663 }, { begin: 65856, end: 65935 }, { begin: 66432, end: 66463 }, { begin: 66464, end: 66527 }, { begin: 66640, end: 66687 }, { begin: 66688, end: 66735 }, { begin: 67584, end: 67647 }, { begin: 68096, end: 68191 }, { begin: 119552, end: 119647 }, { begin: 73728, end: 74751 }, { begin: 119648, end: 119679 }, { begin: 7040, end: 7103 }, { begin: 7168, end: 7247 }, { begin: 7248, end: 7295 }, { begin: 43136, end: 43231 }, { begin: 43264, end: 43311 }, { begin: 43312, end: 43359 }, { begin: 43520, end: 43615 }, { begin: 65936, end: 65999 }, { begin: 66e3, end: 66047 }, { begin: 66208, end: 66271 }, { begin: 127024, end: 127135 }];\n function Ti2(e) {\n for (var r = 0; r < qr2.length; r += 1) {\n var t = qr2[r];\n if (e >= t.begin && e < t.end) return r;\n }\n return -1;\n }\n function ki(e, r) {\n var t = {}, n11 = new w6.Parser(e, r);\n t.version = n11.parseUShort(), t.xAvgCharWidth = n11.parseShort(), t.usWeightClass = n11.parseUShort(), t.usWidthClass = n11.parseUShort(), t.fsType = n11.parseUShort(), t.ySubscriptXSize = n11.parseShort(), t.ySubscriptYSize = n11.parseShort(), t.ySubscriptXOffset = n11.parseShort(), t.ySubscriptYOffset = n11.parseShort(), t.ySuperscriptXSize = n11.parseShort(), t.ySuperscriptYSize = n11.parseShort(), t.ySuperscriptXOffset = n11.parseShort(), t.ySuperscriptYOffset = n11.parseShort(), t.yStrikeoutSize = n11.parseShort(), t.yStrikeoutPosition = n11.parseShort(), t.sFamilyClass = n11.parseShort(), t.panose = [];\n for (var a2 = 0; a2 < 10; a2++) t.panose[a2] = n11.parseByte();\n return t.ulUnicodeRange1 = n11.parseULong(), t.ulUnicodeRange2 = n11.parseULong(), t.ulUnicodeRange3 = n11.parseULong(), t.ulUnicodeRange4 = n11.parseULong(), t.achVendID = String.fromCharCode(n11.parseByte(), n11.parseByte(), n11.parseByte(), n11.parseByte()), t.fsSelection = n11.parseUShort(), t.usFirstCharIndex = n11.parseUShort(), t.usLastCharIndex = n11.parseUShort(), t.sTypoAscender = n11.parseShort(), t.sTypoDescender = n11.parseShort(), t.sTypoLineGap = n11.parseShort(), t.usWinAscent = n11.parseUShort(), t.usWinDescent = n11.parseUShort(), t.version >= 1 && (t.ulCodePageRange1 = n11.parseULong(), t.ulCodePageRange2 = n11.parseULong()), t.version >= 2 && (t.sxHeight = n11.parseShort(), t.sCapHeight = n11.parseShort(), t.usDefaultChar = n11.parseUShort(), t.usBreakChar = n11.parseUShort(), t.usMaxContent = n11.parseUShort()), t;\n }\n function Fi2(e) {\n return new A4.Table("OS/2", [{ name: "version", type: "USHORT", value: 3 }, { name: "xAvgCharWidth", type: "SHORT", value: 0 }, { name: "usWeightClass", type: "USHORT", value: 0 }, { name: "usWidthClass", type: "USHORT", value: 0 }, { name: "fsType", type: "USHORT", value: 0 }, { name: "ySubscriptXSize", type: "SHORT", value: 650 }, { name: "ySubscriptYSize", type: "SHORT", value: 699 }, { name: "ySubscriptXOffset", type: "SHORT", value: 0 }, { name: "ySubscriptYOffset", type: "SHORT", value: 140 }, { name: "ySuperscriptXSize", type: "SHORT", value: 650 }, { name: "ySuperscriptYSize", type: "SHORT", value: 699 }, { name: "ySuperscriptXOffset", type: "SHORT", value: 0 }, { name: "ySuperscriptYOffset", type: "SHORT", value: 479 }, { name: "yStrikeoutSize", type: "SHORT", value: 49 }, { name: "yStrikeoutPosition", type: "SHORT", value: 258 }, { name: "sFamilyClass", type: "SHORT", value: 0 }, { name: "bFamilyType", type: "BYTE", value: 0 }, { name: "bSerifStyle", type: "BYTE", value: 0 }, { name: "bWeight", type: "BYTE", value: 0 }, { name: "bProportion", type: "BYTE", value: 0 }, { name: "bContrast", type: "BYTE", value: 0 }, { name: "bStrokeVariation", type: "BYTE", value: 0 }, { name: "bArmStyle", type: "BYTE", value: 0 }, { name: "bLetterform", type: "BYTE", value: 0 }, { name: "bMidline", type: "BYTE", value: 0 }, { name: "bXHeight", type: "BYTE", value: 0 }, { name: "ulUnicodeRange1", type: "ULONG", value: 0 }, { name: "ulUnicodeRange2", type: "ULONG", value: 0 }, { name: "ulUnicodeRange3", type: "ULONG", value: 0 }, { name: "ulUnicodeRange4", type: "ULONG", value: 0 }, { name: "achVendID", type: "CHARARRAY", value: "XXXX" }, { name: "fsSelection", type: "USHORT", value: 0 }, { name: "usFirstCharIndex", type: "USHORT", value: 0 }, { name: "usLastCharIndex", type: "USHORT", value: 0 }, { name: "sTypoAscender", type: "SHORT", value: 0 }, { name: "sTypoDescender", type: "SHORT", value: 0 }, { name: "sTypoLineGap", type: "SHORT", value: 0 }, { name: "usWinAscent", type: "USHORT", value: 0 }, { name: "usWinDescent", type: "USHORT", value: 0 }, { name: "ulCodePageRange1", type: "ULONG", value: 0 }, { name: "ulCodePageRange2", type: "ULONG", value: 0 }, { name: "sxHeight", type: "SHORT", value: 0 }, { name: "sCapHeight", type: "SHORT", value: 0 }, { name: "usDefaultChar", type: "USHORT", value: 0 }, { name: "usBreakChar", type: "USHORT", value: 0 }, { name: "usMaxContext", type: "USHORT", value: 0 }], e);\n }\n var Xr2 = { parse: ki, make: Fi2, unicodeRanges: qr2, getUnicodeRange: Ti2 };\n function Li2(e, r) {\n var t = {}, n11 = new w6.Parser(e, r);\n switch (t.version = n11.parseVersion(), t.italicAngle = n11.parseFixed(), t.underlinePosition = n11.parseShort(), t.underlineThickness = n11.parseShort(), t.isFixedPitch = n11.parseULong(), t.minMemType42 = n11.parseULong(), t.maxMemType42 = n11.parseULong(), t.minMemType1 = n11.parseULong(), t.maxMemType1 = n11.parseULong(), t.version) {\n case 1:\n t.names = Me3.slice();\n break;\n case 2:\n t.numberOfGlyphs = n11.parseUShort(), t.glyphNameIndex = new Array(t.numberOfGlyphs);\n for (var a2 = 0; a2 < t.numberOfGlyphs; a2++) t.glyphNameIndex[a2] = n11.parseUShort();\n t.names = [];\n for (var i5 = 0; i5 < t.numberOfGlyphs; i5++) if (t.glyphNameIndex[i5] >= Me3.length) {\n var o2 = n11.parseChar();\n t.names.push(n11.parseString(o2));\n }\n break;\n case 2.5:\n t.numberOfGlyphs = n11.parseUShort(), t.offset = new Array(t.numberOfGlyphs);\n for (var l4 = 0; l4 < t.numberOfGlyphs; l4++) t.offset[l4] = n11.parseChar();\n break;\n }\n return t;\n }\n function Ei2() {\n return new A4.Table("post", [{ name: "version", type: "FIXED", value: 196608 }, { name: "italicAngle", type: "FIXED", value: 0 }, { name: "underlinePosition", type: "FWORD", value: 0 }, { name: "underlineThickness", type: "FWORD", value: 0 }, { name: "isFixedPitch", type: "ULONG", value: 0 }, { name: "minMemType42", type: "ULONG", value: 0 }, { name: "maxMemType42", type: "ULONG", value: 0 }, { name: "minMemType1", type: "ULONG", value: 0 }, { name: "maxMemType1", type: "ULONG", value: 0 }]);\n }\n var sn2 = { parse: Li2, make: Ei2 }, me4 = new Array(9);\n me4[1] = function() {\n var r = this.offset + this.relativeOffset, t = this.parseUShort();\n if (t === 1) return { substFormat: 1, coverage: this.parsePointer(b4.coverage), deltaGlyphId: this.parseUShort() };\n if (t === 2) return { substFormat: 2, coverage: this.parsePointer(b4.coverage), substitute: this.parseOffset16List() };\n G5.assert(false, "0x" + r.toString(16) + ": lookup type 1 format must be 1 or 2.");\n }, me4[2] = function() {\n var r = this.parseUShort();\n return G5.argument(r === 1, "GSUB Multiple Substitution Subtable identifier-format must be 1"), { substFormat: r, coverage: this.parsePointer(b4.coverage), sequences: this.parseListOfLists() };\n }, me4[3] = function() {\n var r = this.parseUShort();\n return G5.argument(r === 1, "GSUB Alternate Substitution Subtable identifier-format must be 1"), { substFormat: r, coverage: this.parsePointer(b4.coverage), alternateSets: this.parseListOfLists() };\n }, me4[4] = function() {\n var r = this.parseUShort();\n return G5.argument(r === 1, "GSUB ligature table identifier-format must be 1"), { substFormat: r, coverage: this.parsePointer(b4.coverage), ligatureSets: this.parseListOfLists(function() {\n return { ligGlyph: this.parseUShort(), components: this.parseUShortList(this.parseUShort() - 1) };\n }) };\n };\n var Xe3 = { sequenceIndex: b4.uShort, lookupListIndex: b4.uShort };\n me4[5] = function() {\n var r = this.offset + this.relativeOffset, t = this.parseUShort();\n if (t === 1) return { substFormat: t, coverage: this.parsePointer(b4.coverage), ruleSets: this.parseListOfLists(function() {\n var i5 = this.parseUShort(), o2 = this.parseUShort();\n return { input: this.parseUShortList(i5 - 1), lookupRecords: this.parseRecordList(o2, Xe3) };\n }) };\n if (t === 2) return { substFormat: t, coverage: this.parsePointer(b4.coverage), classDef: this.parsePointer(b4.classDef), classSets: this.parseListOfLists(function() {\n var i5 = this.parseUShort(), o2 = this.parseUShort();\n return { classes: this.parseUShortList(i5 - 1), lookupRecords: this.parseRecordList(o2, Xe3) };\n }) };\n if (t === 3) {\n var n11 = this.parseUShort(), a2 = this.parseUShort();\n return { substFormat: t, coverages: this.parseList(n11, b4.pointer(b4.coverage)), lookupRecords: this.parseRecordList(a2, Xe3) };\n }\n G5.assert(false, "0x" + r.toString(16) + ": lookup type 5 format must be 1, 2 or 3.");\n }, me4[6] = function() {\n var r = this.offset + this.relativeOffset, t = this.parseUShort();\n if (t === 1) return { substFormat: 1, coverage: this.parsePointer(b4.coverage), chainRuleSets: this.parseListOfLists(function() {\n return { backtrack: this.parseUShortList(), input: this.parseUShortList(this.parseShort() - 1), lookahead: this.parseUShortList(), lookupRecords: this.parseRecordList(Xe3) };\n }) };\n if (t === 2) return { substFormat: 2, coverage: this.parsePointer(b4.coverage), backtrackClassDef: this.parsePointer(b4.classDef), inputClassDef: this.parsePointer(b4.classDef), lookaheadClassDef: this.parsePointer(b4.classDef), chainClassSet: this.parseListOfLists(function() {\n return { backtrack: this.parseUShortList(), input: this.parseUShortList(this.parseShort() - 1), lookahead: this.parseUShortList(), lookupRecords: this.parseRecordList(Xe3) };\n }) };\n if (t === 3) return { substFormat: 3, backtrackCoverage: this.parseList(b4.pointer(b4.coverage)), inputCoverage: this.parseList(b4.pointer(b4.coverage)), lookaheadCoverage: this.parseList(b4.pointer(b4.coverage)), lookupRecords: this.parseRecordList(Xe3) };\n G5.assert(false, "0x" + r.toString(16) + ": lookup type 6 format must be 1, 2 or 3.");\n }, me4[7] = function() {\n var r = this.parseUShort();\n G5.argument(r === 1, "GSUB Extension Substitution subtable identifier-format must be 1");\n var t = this.parseUShort(), n11 = new b4(this.data, this.offset + this.parseULong());\n return { substFormat: 1, lookupType: t, extension: me4[t].call(n11) };\n }, me4[8] = function() {\n var r = this.parseUShort();\n return G5.argument(r === 1, "GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"), { substFormat: r, coverage: this.parsePointer(b4.coverage), backtrackCoverage: this.parseList(b4.pointer(b4.coverage)), lookaheadCoverage: this.parseList(b4.pointer(b4.coverage)), substitutes: this.parseUShortList() };\n };\n function Ui2(e, r) {\n r = r || 0;\n var t = new b4(e, r), n11 = t.parseVersion(1);\n return G5.argument(n11 === 1 || n11 === 1.1, "Unsupported GSUB table version."), n11 === 1 ? { version: n11, scripts: t.parseScriptList(), features: t.parseFeatureList(), lookups: t.parseLookupList(me4) } : { version: n11, scripts: t.parseScriptList(), features: t.parseFeatureList(), lookups: t.parseLookupList(me4), variations: t.parseFeatureVariationsList() };\n }\n var Tr2 = new Array(9);\n Tr2[1] = function(r) {\n return r.substFormat === 1 ? new A4.Table("substitutionTable", [{ name: "substFormat", type: "USHORT", value: 1 }, { name: "coverage", type: "TABLE", value: new A4.Coverage(r.coverage) }, { name: "deltaGlyphID", type: "USHORT", value: r.deltaGlyphId }]) : new A4.Table("substitutionTable", [{ name: "substFormat", type: "USHORT", value: 2 }, { name: "coverage", type: "TABLE", value: new A4.Coverage(r.coverage) }].concat(A4.ushortList("substitute", r.substitute)));\n }, Tr2[3] = function(r) {\n return G5.assert(r.substFormat === 1, "Lookup type 3 substFormat must be 1."), new A4.Table("substitutionTable", [{ name: "substFormat", type: "USHORT", value: 1 }, { name: "coverage", type: "TABLE", value: new A4.Coverage(r.coverage) }].concat(A4.tableList("altSet", r.alternateSets, function(t) {\n return new A4.Table("alternateSetTable", A4.ushortList("alternate", t));\n })));\n }, Tr2[4] = function(r) {\n return G5.assert(r.substFormat === 1, "Lookup type 4 substFormat must be 1."), new A4.Table("substitutionTable", [{ name: "substFormat", type: "USHORT", value: 1 }, { name: "coverage", type: "TABLE", value: new A4.Coverage(r.coverage) }].concat(A4.tableList("ligSet", r.ligatureSets, function(t) {\n return new A4.Table("ligatureSetTable", A4.tableList("ligature", t, function(n11) {\n return new A4.Table("ligatureTable", [{ name: "ligGlyph", type: "USHORT", value: n11.ligGlyph }].concat(A4.ushortList("component", n11.components, n11.components.length + 1)));\n }));\n })));\n };\n function Oi3(e) {\n return new A4.Table("GSUB", [{ name: "version", type: "ULONG", value: 65536 }, { name: "scripts", type: "TABLE", value: new A4.ScriptList(e.scripts) }, { name: "features", type: "TABLE", value: new A4.FeatureList(e.features) }, { name: "lookups", type: "TABLE", value: new A4.LookupList(e.lookups, Tr2) }]);\n }\n var on2 = { parse: Ui2, make: Oi3 };\n function Ii2(e, r) {\n var t = new w6.Parser(e, r), n11 = t.parseULong();\n G5.argument(n11 === 1, "Unsupported META table version."), t.parseULong(), t.parseULong();\n for (var a2 = t.parseULong(), i5 = {}, o2 = 0; o2 < a2; o2++) {\n var l4 = t.parseTag(), u3 = t.parseULong(), c2 = t.parseULong(), d3 = Ve3.UTF8(e, r + u3, c2);\n i5[l4] = d3;\n }\n return i5;\n }\n function Ci2(e) {\n var r = Object.keys(e).length, t = "", n11 = 16 + r * 12, a2 = new A4.Table("meta", [{ name: "version", type: "ULONG", value: 1 }, { name: "flags", type: "ULONG", value: 0 }, { name: "offset", type: "ULONG", value: n11 }, { name: "numTags", type: "ULONG", value: r }]);\n for (var i5 in e) {\n var o2 = t.length;\n t += e[i5], a2.fields.push({ name: "tag " + i5, type: "TAG", value: i5 }), a2.fields.push({ name: "offset " + i5, type: "ULONG", value: n11 + o2 }), a2.fields.push({ name: "length " + i5, type: "ULONG", value: e[i5].length });\n }\n return a2.fields.push({ name: "stringPool", type: "CHARARRAY", value: t }), a2;\n }\n var un2 = { parse: Ii2, make: Ci2 };\n function ln2(e) {\n return Math.log(e) / Math.log(2) | 0;\n }\n function Yr2(e) {\n for (; e.length % 4 !== 0; ) e.push(0);\n for (var r = 0, t = 0; t < e.length; t += 4) r += (e[t] << 24) + (e[t + 1] << 16) + (e[t + 2] << 8) + e[t + 3];\n return r %= Math.pow(2, 32), r;\n }\n function fn2(e, r, t, n11) {\n return new A4.Record("Table Record", [{ name: "tag", type: "TAG", value: e !== void 0 ? e : "" }, { name: "checkSum", type: "ULONG", value: r !== void 0 ? r : 0 }, { name: "offset", type: "ULONG", value: t !== void 0 ? t : 0 }, { name: "length", type: "ULONG", value: n11 !== void 0 ? n11 : 0 }]);\n }\n function pn2(e) {\n var r = new A4.Table("sfnt", [{ name: "version", type: "TAG", value: "OTTO" }, { name: "numTables", type: "USHORT", value: 0 }, { name: "searchRange", type: "USHORT", value: 0 }, { name: "entrySelector", type: "USHORT", value: 0 }, { name: "rangeShift", type: "USHORT", value: 0 }]);\n r.tables = e, r.numTables = e.length;\n var t = Math.pow(2, ln2(r.numTables));\n r.searchRange = 16 * t, r.entrySelector = ln2(t), r.rangeShift = r.numTables * 16 - r.searchRange;\n for (var n11 = [], a2 = [], i5 = r.sizeOf() + fn2().sizeOf() * r.numTables; i5 % 4 !== 0; ) i5 += 1, a2.push({ name: "padding", type: "BYTE", value: 0 });\n for (var o2 = 0; o2 < e.length; o2 += 1) {\n var l4 = e[o2];\n G5.argument(l4.tableName.length === 4, "Table name" + l4.tableName + " is invalid.");\n var u3 = l4.sizeOf(), c2 = fn2(l4.tableName, Yr2(l4.encode()), i5, u3);\n for (n11.push({ name: c2.tag + " Table Record", type: "RECORD", value: c2 }), a2.push({ name: l4.tableName + " table", type: "RECORD", value: l4 }), i5 += u3, G5.argument(!isNaN(i5), "Something went wrong calculating the offset."); i5 % 4 !== 0; ) i5 += 1, a2.push({ name: "padding", type: "BYTE", value: 0 });\n }\n return n11.sort(function(d3, y5) {\n return d3.value.tag > y5.value.tag ? 1 : -1;\n }), r.fields = r.fields.concat(n11), r.fields = r.fields.concat(a2), r;\n }\n function hn2(e, r, t) {\n for (var n11 = 0; n11 < r.length; n11 += 1) {\n var a2 = e.charToGlyphIndex(r[n11]);\n if (a2 > 0) {\n var i5 = e.glyphs.get(a2);\n return i5.getMetrics();\n }\n }\n return t;\n }\n function wi2(e) {\n for (var r = 0, t = 0; t < e.length; t += 1) r += e[t];\n return r / e.length;\n }\n function Ri2(e) {\n for (var r = [], t = [], n11 = [], a2 = [], i5 = [], o2 = [], l4 = [], u3, c2 = 0, d3 = 0, y5 = 0, g6 = 0, m4 = 0, T4 = 0; T4 < e.glyphs.length; T4 += 1) {\n var O4 = e.glyphs.get(T4), F4 = O4.unicode | 0;\n if (isNaN(O4.advanceWidth)) throw new Error("Glyph " + O4.name + " (" + T4 + "): advanceWidth is not a number.");\n (u3 > F4 || u3 === void 0) && F4 > 0 && (u3 = F4), c2 < F4 && (c2 = F4);\n var U6 = Xr2.getUnicodeRange(F4);\n if (U6 < 32) d3 |= 1 << U6;\n else if (U6 < 64) y5 |= 1 << U6 - 32;\n else if (U6 < 96) g6 |= 1 << U6 - 64;\n else if (U6 < 123) m4 |= 1 << U6 - 96;\n else throw new Error("Unicode ranges bits > 123 are reserved for internal usage");\n if (O4.name !== ".notdef") {\n var P5 = O4.getMetrics();\n r.push(P5.xMin), t.push(P5.yMin), n11.push(P5.xMax), a2.push(P5.yMax), o2.push(P5.leftSideBearing), l4.push(P5.rightSideBearing), i5.push(O4.advanceWidth);\n }\n }\n var I4 = { xMin: Math.min.apply(null, r), yMin: Math.min.apply(null, t), xMax: Math.max.apply(null, n11), yMax: Math.max.apply(null, a2), advanceWidthMax: Math.max.apply(null, i5), advanceWidthAvg: wi2(i5), minLeftSideBearing: Math.min.apply(null, o2), maxLeftSideBearing: Math.max.apply(null, o2), minRightSideBearing: Math.min.apply(null, l4) };\n I4.ascender = e.ascender, I4.descender = e.descender;\n var H5 = Yt3.make({ flags: 3, unitsPerEm: e.unitsPerEm, xMin: I4.xMin, yMin: I4.yMin, xMax: I4.xMax, yMax: I4.yMax, lowestRecPPEM: 3, createdTimestamp: e.createdTimestamp }), R4 = Zt3.make({ ascender: I4.ascender, descender: I4.descender, advanceWidthMax: I4.advanceWidthMax, minLeftSideBearing: I4.minLeftSideBearing, minRightSideBearing: I4.minRightSideBearing, xMaxExtent: I4.maxLeftSideBearing + (I4.xMax - I4.xMin), numberOfHMetrics: e.glyphs.length }), B5 = Kt2.make(e.glyphs.length), ue2 = Xr2.make({ xAvgCharWidth: Math.round(I4.advanceWidthAvg), usWeightClass: e.tables.os2.usWeightClass, usWidthClass: e.tables.os2.usWidthClass, usFirstCharIndex: u3, usLastCharIndex: c2, ulUnicodeRange1: d3, ulUnicodeRange2: y5, ulUnicodeRange3: g6, ulUnicodeRange4: m4, fsSelection: e.tables.os2.fsSelection, sTypoAscender: I4.ascender, sTypoDescender: I4.descender, sTypoLineGap: 0, usWinAscent: I4.yMax, usWinDescent: Math.abs(I4.yMin), ulCodePageRange1: 1, sxHeight: hn2(e, "xyvw", { yMax: Math.round(I4.ascender / 2) }).yMax, sCapHeight: hn2(e, "HIKLEFJMNTZBDPRAGOQSUVWXY", I4).yMax, usDefaultChar: e.hasChar(" ") ? 32 : 0, usBreakChar: e.hasChar(" ") ? 32 : 0 }), q3 = Qt3.make(e.glyphs), K4 = It3.make(e.glyphs), se3 = e.getEnglishName("fontFamily"), le3 = e.getEnglishName("fontSubfamily"), pe2 = se3 + " " + le3, de3 = e.getEnglishName("postScriptName");\n de3 || (de3 = se3.replace(/\\s/g, "") + "-" + le3);\n var J5 = {};\n for (var j5 in e.names) J5[j5] = e.names[j5];\n J5.uniqueID || (J5.uniqueID = { en: e.getEnglishName("manufacturer") + ":" + pe2 }), J5.postScriptName || (J5.postScriptName = { en: de3 }), J5.preferredFamily || (J5.preferredFamily = e.names.fontFamily), J5.preferredSubfamily || (J5.preferredSubfamily = e.names.fontSubfamily);\n var re3 = [], te3 = an2.make(J5, re3), ne3 = re3.length > 0 ? Jt2.make(re3) : void 0, oe4 = sn2.make(), he3 = Xt3.make(e.glyphs, { version: e.getEnglishName("version"), fullName: pe2, familyName: se3, weightName: le3, postScriptName: de3, unitsPerEm: e.unitsPerEm, fontBBox: [0, I4.yMin, I4.ascender, I4.advanceWidthMax] }), Y2 = e.metas && Object.keys(e.metas).length > 0 ? un2.make(e.metas) : void 0, ae4 = [H5, R4, B5, ue2, te3, K4, oe4, he3, q3];\n ne3 && ae4.push(ne3), e.tables.gsub && ae4.push(on2.make(e.tables.gsub)), Y2 && ae4.push(Y2);\n for (var et3 = pn2(ae4), Mo = et3.encode(), Bo2 = Yr2(Mo), rt4 = et3.fields, Hn2 = false, Er2 = 0; Er2 < rt4.length; Er2 += 1) if (rt4[Er2].name === "head table") {\n rt4[Er2].value.checkSumAdjustment = 2981146554 - Bo2, Hn2 = true;\n break;\n }\n if (!Hn2) throw new Error("Could not find head table with checkSum to adjust.");\n return et3;\n }\n var Di2 = { make: pn2, fontToTable: Ri2, computeCheckSum: Yr2 };\n function Zr2(e, r) {\n for (var t = 0, n11 = e.length - 1; t <= n11; ) {\n var a2 = t + n11 >>> 1, i5 = e[a2].tag;\n if (i5 === r) return a2;\n i5 < r ? t = a2 + 1 : n11 = a2 - 1;\n }\n return -t - 1;\n }\n function cn2(e, r) {\n for (var t = 0, n11 = e.length - 1; t <= n11; ) {\n var a2 = t + n11 >>> 1, i5 = e[a2];\n if (i5 === r) return a2;\n i5 < r ? t = a2 + 1 : n11 = a2 - 1;\n }\n return -t - 1;\n }\n function vn2(e, r) {\n for (var t, n11 = 0, a2 = e.length - 1; n11 <= a2; ) {\n var i5 = n11 + a2 >>> 1;\n t = e[i5];\n var o2 = t.start;\n if (o2 === r) return t;\n o2 < r ? n11 = i5 + 1 : a2 = i5 - 1;\n }\n if (n11 > 0) return t = e[n11 - 1], r > t.end ? 0 : t;\n }\n function er2(e, r) {\n this.font = e, this.tableName = r;\n }\n er2.prototype = { searchTag: Zr2, binSearch: cn2, getTable: function(e) {\n var r = this.font.tables[this.tableName];\n return !r && e && (r = this.font.tables[this.tableName] = this.createDefaultTable()), r;\n }, getScriptNames: function() {\n var e = this.getTable();\n return e ? e.scripts.map(function(r) {\n return r.tag;\n }) : [];\n }, getDefaultScriptName: function() {\n var e = this.getTable();\n if (e) {\n for (var r = false, t = 0; t < e.scripts.length; t++) {\n var n11 = e.scripts[t].tag;\n if (n11 === "DFLT") return n11;\n n11 === "latn" && (r = true);\n }\n if (r) return "latn";\n }\n }, getScriptTable: function(e, r) {\n var t = this.getTable(r);\n if (t) {\n e = e || "DFLT";\n var n11 = t.scripts, a2 = Zr2(t.scripts, e);\n if (a2 >= 0) return n11[a2].script;\n if (r) {\n var i5 = { tag: e, script: { defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }, langSysRecords: [] } };\n return n11.splice(-1 - a2, 0, i5), i5.script;\n }\n }\n }, getLangSysTable: function(e, r, t) {\n var n11 = this.getScriptTable(e, t);\n if (n11) {\n if (!r || r === "dflt" || r === "DFLT") return n11.defaultLangSys;\n var a2 = Zr2(n11.langSysRecords, r);\n if (a2 >= 0) return n11.langSysRecords[a2].langSys;\n if (t) {\n var i5 = { tag: r, langSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] } };\n return n11.langSysRecords.splice(-1 - a2, 0, i5), i5.langSys;\n }\n }\n }, getFeatureTable: function(e, r, t, n11) {\n var a2 = this.getLangSysTable(e, r, n11);\n if (a2) {\n for (var i5, o2 = a2.featureIndexes, l4 = this.font.tables[this.tableName].features, u3 = 0; u3 < o2.length; u3++) if (i5 = l4[o2[u3]], i5.tag === t) return i5.feature;\n if (n11) {\n var c2 = l4.length;\n return G5.assert(c2 === 0 || t >= l4[c2 - 1].tag, "Features must be added in alphabetical order."), i5 = { tag: t, feature: { params: 0, lookupListIndexes: [] } }, l4.push(i5), o2.push(c2), i5.feature;\n }\n }\n }, getLookupTables: function(e, r, t, n11, a2) {\n var i5 = this.getFeatureTable(e, r, t, a2), o2 = [];\n if (i5) {\n for (var l4, u3 = i5.lookupListIndexes, c2 = this.font.tables[this.tableName].lookups, d3 = 0; d3 < u3.length; d3++) l4 = c2[u3[d3]], l4.lookupType === n11 && o2.push(l4);\n if (o2.length === 0 && a2) {\n l4 = { lookupType: n11, lookupFlag: 0, subtables: [], markFilteringSet: void 0 };\n var y5 = c2.length;\n return c2.push(l4), u3.push(y5), [l4];\n }\n }\n return o2;\n }, getGlyphClass: function(e, r) {\n switch (e.format) {\n case 1:\n return e.startGlyph <= r && r < e.startGlyph + e.classes.length ? e.classes[r - e.startGlyph] : 0;\n case 2:\n var t = vn2(e.ranges, r);\n return t ? t.classId : 0;\n }\n }, getCoverageIndex: function(e, r) {\n switch (e.format) {\n case 1:\n var t = cn2(e.glyphs, r);\n return t >= 0 ? t : -1;\n case 2:\n var n11 = vn2(e.ranges, r);\n return n11 ? n11.index + r - n11.start : -1;\n }\n }, expandCoverage: function(e) {\n if (e.format === 1) return e.glyphs;\n for (var r = [], t = e.ranges, n11 = 0; n11 < t.length; n11++) for (var a2 = t[n11], i5 = a2.start, o2 = a2.end, l4 = i5; l4 <= o2; l4++) r.push(l4);\n return r;\n } };\n function kr(e) {\n er2.call(this, e, "gpos");\n }\n kr.prototype = er2.prototype, kr.prototype.getKerningValue = function(e, r, t) {\n for (var n11 = this, a2 = 0; a2 < e.length; a2++) for (var i5 = e[a2].subtables, o2 = 0; o2 < i5.length; o2++) {\n var l4 = i5[o2], u3 = n11.getCoverageIndex(l4.coverage, r);\n if (!(u3 < 0)) switch (l4.posFormat) {\n case 1:\n for (var c2 = l4.pairSets[u3], d3 = 0; d3 < c2.length; d3++) {\n var y5 = c2[d3];\n if (y5.secondGlyph === t) return y5.value1 && y5.value1.xAdvance || 0;\n }\n break;\n case 2:\n var g6 = n11.getGlyphClass(l4.classDef1, r), m4 = n11.getGlyphClass(l4.classDef2, t), T4 = l4.classRecords[g6][m4];\n return T4.value1 && T4.value1.xAdvance || 0;\n }\n }\n return 0;\n }, kr.prototype.getKerningTables = function(e, r) {\n if (this.font.tables.gpos) return this.getLookupTables(e, r, "kern", 2);\n };\n function ye3(e) {\n er2.call(this, e, "gsub");\n }\n function Ai2(e, r) {\n var t = e.length;\n if (t !== r.length) return false;\n for (var n11 = 0; n11 < t; n11++) if (e[n11] !== r[n11]) return false;\n return true;\n }\n function dn2(e, r, t) {\n for (var n11 = e.subtables, a2 = 0; a2 < n11.length; a2++) {\n var i5 = n11[a2];\n if (i5.substFormat === r) return i5;\n }\n if (t) return n11.push(t), t;\n }\n ye3.prototype = er2.prototype, ye3.prototype.createDefaultTable = function() {\n return { version: 1, scripts: [{ tag: "DFLT", script: { defaultLangSys: { reserved: 0, reqFeatureIndex: 65535, featureIndexes: [] }, langSysRecords: [] } }], features: [], lookups: [] };\n }, ye3.prototype.getSingle = function(e, r, t) {\n for (var n11 = this, a2 = [], i5 = this.getLookupTables(r, t, e, 1), o2 = 0; o2 < i5.length; o2++) for (var l4 = i5[o2].subtables, u3 = 0; u3 < l4.length; u3++) {\n var c2 = l4[u3], d3 = n11.expandCoverage(c2.coverage), y5 = void 0;\n if (c2.substFormat === 1) {\n var g6 = c2.deltaGlyphId;\n for (y5 = 0; y5 < d3.length; y5++) {\n var m4 = d3[y5];\n a2.push({ sub: m4, by: m4 + g6 });\n }\n } else {\n var T4 = c2.substitute;\n for (y5 = 0; y5 < d3.length; y5++) a2.push({ sub: d3[y5], by: T4[y5] });\n }\n }\n return a2;\n }, ye3.prototype.getAlternates = function(e, r, t) {\n for (var n11 = this, a2 = [], i5 = this.getLookupTables(r, t, e, 3), o2 = 0; o2 < i5.length; o2++) for (var l4 = i5[o2].subtables, u3 = 0; u3 < l4.length; u3++) for (var c2 = l4[u3], d3 = n11.expandCoverage(c2.coverage), y5 = c2.alternateSets, g6 = 0; g6 < d3.length; g6++) a2.push({ sub: d3[g6], by: y5[g6] });\n return a2;\n }, ye3.prototype.getLigatures = function(e, r, t) {\n for (var n11 = this, a2 = [], i5 = this.getLookupTables(r, t, e, 4), o2 = 0; o2 < i5.length; o2++) for (var l4 = i5[o2].subtables, u3 = 0; u3 < l4.length; u3++) for (var c2 = l4[u3], d3 = n11.expandCoverage(c2.coverage), y5 = c2.ligatureSets, g6 = 0; g6 < d3.length; g6++) for (var m4 = d3[g6], T4 = y5[g6], O4 = 0; O4 < T4.length; O4++) {\n var F4 = T4[O4];\n a2.push({ sub: [m4].concat(F4.components), by: F4.ligGlyph });\n }\n return a2;\n }, ye3.prototype.addSingle = function(e, r, t, n11) {\n var a2 = this.getLookupTables(t, n11, e, 1, true)[0], i5 = dn2(a2, 2, { substFormat: 2, coverage: { format: 1, glyphs: [] }, substitute: [] });\n G5.assert(i5.coverage.format === 1, "Ligature: unable to modify coverage table format " + i5.coverage.format);\n var o2 = r.sub, l4 = this.binSearch(i5.coverage.glyphs, o2);\n l4 < 0 && (l4 = -1 - l4, i5.coverage.glyphs.splice(l4, 0, o2), i5.substitute.splice(l4, 0, 0)), i5.substitute[l4] = r.by;\n }, ye3.prototype.addAlternate = function(e, r, t, n11) {\n var a2 = this.getLookupTables(t, n11, e, 3, true)[0], i5 = dn2(a2, 1, { substFormat: 1, coverage: { format: 1, glyphs: [] }, alternateSets: [] });\n G5.assert(i5.coverage.format === 1, "Ligature: unable to modify coverage table format " + i5.coverage.format);\n var o2 = r.sub, l4 = this.binSearch(i5.coverage.glyphs, o2);\n l4 < 0 && (l4 = -1 - l4, i5.coverage.glyphs.splice(l4, 0, o2), i5.alternateSets.splice(l4, 0, 0)), i5.alternateSets[l4] = r.by;\n }, ye3.prototype.addLigature = function(e, r, t, n11) {\n var a2 = this.getLookupTables(t, n11, e, 4, true)[0], i5 = a2.subtables[0];\n i5 || (i5 = { substFormat: 1, coverage: { format: 1, glyphs: [] }, ligatureSets: [] }, a2.subtables[0] = i5), G5.assert(i5.coverage.format === 1, "Ligature: unable to modify coverage table format " + i5.coverage.format);\n var o2 = r.sub[0], l4 = r.sub.slice(1), u3 = { ligGlyph: r.by, components: l4 }, c2 = this.binSearch(i5.coverage.glyphs, o2);\n if (c2 >= 0) {\n for (var d3 = i5.ligatureSets[c2], y5 = 0; y5 < d3.length; y5++) if (Ai2(d3[y5].components, l4)) return;\n d3.push(u3);\n } else c2 = -1 - c2, i5.coverage.glyphs.splice(c2, 0, o2), i5.ligatureSets.splice(c2, 0, [u3]);\n }, ye3.prototype.getFeature = function(e, r, t) {\n if (/ss\\d\\d/.test(e)) return this.getSingle(e, r, t);\n switch (e) {\n case "aalt":\n case "salt":\n return this.getSingle(e, r, t).concat(this.getAlternates(e, r, t));\n case "dlig":\n case "liga":\n case "rlig":\n return this.getLigatures(e, r, t);\n }\n }, ye3.prototype.add = function(e, r, t, n11) {\n if (/ss\\d\\d/.test(e)) return this.addSingle(e, r, t, n11);\n switch (e) {\n case "aalt":\n case "salt":\n return typeof r.by == "number" ? this.addSingle(e, r, t, n11) : this.addAlternate(e, r, t, n11);\n case "dlig":\n case "liga":\n case "rlig":\n return this.addLigature(e, r, t, n11);\n }\n };\n function Mi2() {\n return typeof window < "u";\n }\n function gn2(e) {\n for (var r = new ArrayBuffer(e.length), t = new Uint8Array(r), n11 = 0; n11 < e.length; ++n11) t[n11] = e[n11];\n return r;\n }\n function Bi2(e) {\n for (var r = new Buffer(e.byteLength), t = new Uint8Array(e), n11 = 0; n11 < r.length; ++n11) r[n11] = t[n11];\n return r;\n }\n function Ye3(e, r) {\n if (!e) throw r;\n }\n var mn2, Pe3, yn2, Qr2;\n function bn(e) {\n this.font = e, this._fpgmState = this._prepState = void 0, this._errorState = 0;\n }\n function Pi2(e) {\n return e;\n }\n function xn2(e) {\n return Math.sign(e) * Math.round(Math.abs(e));\n }\n function Gi2(e) {\n return Math.sign(e) * Math.round(Math.abs(e * 2)) / 2;\n }\n function Ni2(e) {\n return Math.sign(e) * (Math.round(Math.abs(e) + 0.5) - 0.5);\n }\n function Hi2(e) {\n return Math.sign(e) * Math.ceil(Math.abs(e));\n }\n function _i(e) {\n return Math.sign(e) * Math.floor(Math.abs(e));\n }\n var Sn = function(e) {\n var r = this.srPeriod, t = this.srPhase, n11 = this.srThreshold, a2 = 1;\n return e < 0 && (e = -e, a2 = -1), e += n11 - t, e = Math.trunc(e / r) * r, e += t, e < 0 ? t * a2 : e * a2;\n }, Te4 = { x: 1, y: 0, axis: "x", distance: function(e, r, t, n11) {\n return (t ? e.xo : e.x) - (n11 ? r.xo : r.x);\n }, interpolate: function(e, r, t, n11) {\n var a2, i5, o2, l4, u3, c2, d3;\n if (!n11 || n11 === this) {\n if (a2 = e.xo - r.xo, i5 = e.xo - t.xo, u3 = r.x - r.xo, c2 = t.x - t.xo, o2 = Math.abs(a2), l4 = Math.abs(i5), d3 = o2 + l4, d3 === 0) {\n e.x = e.xo + (u3 + c2) / 2;\n return;\n }\n e.x = e.xo + (u3 * l4 + c2 * o2) / d3;\n return;\n }\n if (a2 = n11.distance(e, r, true, true), i5 = n11.distance(e, t, true, true), u3 = n11.distance(r, r, false, true), c2 = n11.distance(t, t, false, true), o2 = Math.abs(a2), l4 = Math.abs(i5), d3 = o2 + l4, d3 === 0) {\n Te4.setRelative(e, e, (u3 + c2) / 2, n11, true);\n return;\n }\n Te4.setRelative(e, e, (u3 * l4 + c2 * o2) / d3, n11, true);\n }, normalSlope: Number.NEGATIVE_INFINITY, setRelative: function(e, r, t, n11, a2) {\n if (!n11 || n11 === this) {\n e.x = (a2 ? r.xo : r.x) + t;\n return;\n }\n var i5 = a2 ? r.xo : r.x, o2 = a2 ? r.yo : r.y, l4 = i5 + t * n11.x, u3 = o2 + t * n11.y;\n e.x = l4 + (e.y - u3) / n11.normalSlope;\n }, slope: 0, touch: function(e) {\n e.xTouched = true;\n }, touched: function(e) {\n return e.xTouched;\n }, untouch: function(e) {\n e.xTouched = false;\n } }, Fe4 = { x: 0, y: 1, axis: "y", distance: function(e, r, t, n11) {\n return (t ? e.yo : e.y) - (n11 ? r.yo : r.y);\n }, interpolate: function(e, r, t, n11) {\n var a2, i5, o2, l4, u3, c2, d3;\n if (!n11 || n11 === this) {\n if (a2 = e.yo - r.yo, i5 = e.yo - t.yo, u3 = r.y - r.yo, c2 = t.y - t.yo, o2 = Math.abs(a2), l4 = Math.abs(i5), d3 = o2 + l4, d3 === 0) {\n e.y = e.yo + (u3 + c2) / 2;\n return;\n }\n e.y = e.yo + (u3 * l4 + c2 * o2) / d3;\n return;\n }\n if (a2 = n11.distance(e, r, true, true), i5 = n11.distance(e, t, true, true), u3 = n11.distance(r, r, false, true), c2 = n11.distance(t, t, false, true), o2 = Math.abs(a2), l4 = Math.abs(i5), d3 = o2 + l4, d3 === 0) {\n Fe4.setRelative(e, e, (u3 + c2) / 2, n11, true);\n return;\n }\n Fe4.setRelative(e, e, (u3 * l4 + c2 * o2) / d3, n11, true);\n }, normalSlope: 0, setRelative: function(e, r, t, n11, a2) {\n if (!n11 || n11 === this) {\n e.y = (a2 ? r.yo : r.y) + t;\n return;\n }\n var i5 = a2 ? r.xo : r.x, o2 = a2 ? r.yo : r.y, l4 = i5 + t * n11.x, u3 = o2 + t * n11.y;\n e.y = u3 + n11.normalSlope * (e.x - l4);\n }, slope: Number.POSITIVE_INFINITY, touch: function(e) {\n e.yTouched = true;\n }, touched: function(e) {\n return e.yTouched;\n }, untouch: function(e) {\n e.yTouched = false;\n } };\n Object.freeze(Te4), Object.freeze(Fe4);\n function rr2(e, r) {\n this.x = e, this.y = r, this.axis = void 0, this.slope = r / e, this.normalSlope = -e / r, Object.freeze(this);\n }\n rr2.prototype.distance = function(e, r, t, n11) {\n return this.x * Te4.distance(e, r, t, n11) + this.y * Fe4.distance(e, r, t, n11);\n }, rr2.prototype.interpolate = function(e, r, t, n11) {\n var a2, i5, o2, l4, u3, c2, d3;\n if (o2 = n11.distance(e, r, true, true), l4 = n11.distance(e, t, true, true), a2 = n11.distance(r, r, false, true), i5 = n11.distance(t, t, false, true), u3 = Math.abs(o2), c2 = Math.abs(l4), d3 = u3 + c2, d3 === 0) {\n this.setRelative(e, e, (a2 + i5) / 2, n11, true);\n return;\n }\n this.setRelative(e, e, (a2 * c2 + i5 * u3) / d3, n11, true);\n }, rr2.prototype.setRelative = function(e, r, t, n11, a2) {\n n11 = n11 || this;\n var i5 = a2 ? r.xo : r.x, o2 = a2 ? r.yo : r.y, l4 = i5 + t * n11.x, u3 = o2 + t * n11.y, c2 = n11.normalSlope, d3 = this.slope, y5 = e.x, g6 = e.y;\n e.x = (d3 * y5 - c2 * l4 + u3 - g6) / (d3 - c2), e.y = d3 * (e.x - y5) + g6;\n }, rr2.prototype.touch = function(e) {\n e.xTouched = true, e.yTouched = true;\n };\n function tr2(e, r) {\n var t = Math.sqrt(e * e + r * r);\n return e /= t, r /= t, e === 1 && r === 0 ? Te4 : e === 0 && r === 1 ? Fe4 : new rr2(e, r);\n }\n function Le3(e, r, t, n11) {\n this.x = this.xo = Math.round(e * 64) / 64, this.y = this.yo = Math.round(r * 64) / 64, this.lastPointOfContour = t, this.onCurve = n11, this.prevPointOnContour = void 0, this.nextPointOnContour = void 0, this.xTouched = false, this.yTouched = false, Object.preventExtensions(this);\n }\n Le3.prototype.nextTouched = function(e) {\n for (var r = this.nextPointOnContour; !e.touched(r) && r !== this; ) r = r.nextPointOnContour;\n return r;\n }, Le3.prototype.prevTouched = function(e) {\n for (var r = this.prevPointOnContour; !e.touched(r) && r !== this; ) r = r.prevPointOnContour;\n return r;\n };\n var nr2 = Object.freeze(new Le3(0, 0)), zi2 = { cvCutIn: 17 / 16, deltaBase: 9, deltaShift: 0.125, loop: 1, minDis: 1, autoFlip: true };\n function Ie3(e, r) {\n switch (this.env = e, this.stack = [], this.prog = r, e) {\n case "glyf":\n this.zp0 = this.zp1 = this.zp2 = 1, this.rp0 = this.rp1 = this.rp2 = 0;\n case "prep":\n this.fv = this.pv = this.dpv = Te4, this.round = xn2;\n }\n }\n bn.prototype.exec = function(e, r) {\n if (typeof r != "number") throw new Error("Point size is not a number!");\n if (!(this._errorState > 2)) {\n var t = this.font, n11 = this._prepState;\n if (!n11 || n11.ppem !== r) {\n var a2 = this._fpgmState;\n if (!a2) {\n Ie3.prototype = zi2, a2 = this._fpgmState = new Ie3("fpgm", t.tables.fpgm), a2.funcs = [], a2.font = t, s4.DEBUG && (console.log("---EXEC FPGM---"), a2.step = -1);\n try {\n Pe3(a2);\n } catch (c2) {\n console.log("Hinting error in FPGM:" + c2), this._errorState = 3;\n return;\n }\n }\n Ie3.prototype = a2, n11 = this._prepState = new Ie3("prep", t.tables.prep), n11.ppem = r;\n var i5 = t.tables.cvt;\n if (i5) for (var o2 = n11.cvt = new Array(i5.length), l4 = r / t.unitsPerEm, u3 = 0; u3 < i5.length; u3++) o2[u3] = i5[u3] * l4;\n else n11.cvt = [];\n s4.DEBUG && (console.log("---EXEC PREP---"), n11.step = -1);\n try {\n Pe3(n11);\n } catch (c2) {\n this._errorState < 2 && console.log("Hinting error in PREP:" + c2), this._errorState = 2;\n }\n }\n if (!(this._errorState > 1)) try {\n return yn2(e, n11);\n } catch (c2) {\n this._errorState < 1 && (console.log("Hinting error:" + c2), console.log("Note: further hinting errors are silenced")), this._errorState = 1;\n return;\n }\n }\n }, yn2 = function(e, r) {\n var t = r.ppem / r.font.unitsPerEm, n11 = t, a2 = e.components, i5, o2, l4;\n if (Ie3.prototype = r, !a2) l4 = new Ie3("glyf", e.instructions), s4.DEBUG && (console.log("---EXEC GLYPH---"), l4.step = -1), Qr2(e, l4, t, n11), o2 = l4.gZone;\n else {\n var u3 = r.font;\n o2 = [], i5 = [];\n for (var c2 = 0; c2 < a2.length; c2++) {\n var d3 = a2[c2], y5 = u3.glyphs.get(d3.glyphIndex);\n l4 = new Ie3("glyf", y5.instructions), s4.DEBUG && (console.log("---EXEC COMP " + c2 + "---"), l4.step = -1), Qr2(y5, l4, t, n11);\n for (var g6 = Math.round(d3.dx * t), m4 = Math.round(d3.dy * n11), T4 = l4.gZone, O4 = l4.contours, F4 = 0; F4 < T4.length; F4++) {\n var U6 = T4[F4];\n U6.xTouched = U6.yTouched = false, U6.xo = U6.x = U6.x + g6, U6.yo = U6.y = U6.y + m4;\n }\n var P5 = o2.length;\n o2.push.apply(o2, T4);\n for (var I4 = 0; I4 < O4.length; I4++) i5.push(O4[I4] + P5);\n }\n e.instructions && !l4.inhibitGridFit && (l4 = new Ie3("glyf", e.instructions), l4.gZone = l4.z0 = l4.z1 = l4.z2 = o2, l4.contours = i5, o2.push(new Le3(0, 0), new Le3(Math.round(e.advanceWidth * t), 0)), s4.DEBUG && (console.log("---EXEC COMPOSITE---"), l4.step = -1), Pe3(l4), o2.length -= 2);\n }\n return o2;\n }, Qr2 = function(e, r, t, n11) {\n for (var a2 = e.points || [], i5 = a2.length, o2 = r.gZone = r.z0 = r.z1 = r.z2 = [], l4 = r.contours = [], u3, c2 = 0; c2 < i5; c2++) u3 = a2[c2], o2[c2] = new Le3(u3.x * t, u3.y * n11, u3.lastPointOfContour, u3.onCurve);\n for (var d3, y5, g6 = 0; g6 < i5; g6++) u3 = o2[g6], d3 || (d3 = u3, l4.push(g6)), u3.lastPointOfContour ? (u3.nextPointOnContour = d3, d3.prevPointOnContour = u3, d3 = void 0) : (y5 = o2[g6 + 1], u3.nextPointOnContour = y5, y5.prevPointOnContour = u3);\n if (!r.inhibitGridFit) {\n if (s4.DEBUG) {\n console.log("PROCESSING GLYPH", r.stack);\n for (var m4 = 0; m4 < i5; m4++) console.log(m4, o2[m4].x, o2[m4].y);\n }\n if (o2.push(new Le3(0, 0), new Le3(Math.round(e.advanceWidth * t), 0)), Pe3(r), o2.length -= 2, s4.DEBUG) {\n console.log("FINISHED GLYPH", r.stack);\n for (var T4 = 0; T4 < i5; T4++) console.log(T4, o2[T4].x, o2[T4].y);\n }\n }\n }, Pe3 = function(e) {\n var r = e.prog;\n if (r) {\n var t = r.length, n11;\n for (e.ip = 0; e.ip < t; e.ip++) {\n if (s4.DEBUG && e.step++, n11 = mn2[r[e.ip]], !n11) throw new Error("unknown instruction: 0x" + Number(r[e.ip]).toString(16));\n n11(e);\n }\n }\n };\n function Fr(e) {\n for (var r = e.tZone = new Array(e.gZone.length), t = 0; t < r.length; t++) r[t] = new Le3(0, 0);\n }\n function Tn2(e, r) {\n var t = e.prog, n11 = e.ip, a2 = 1, i5;\n do\n if (i5 = t[++n11], i5 === 88) a2++;\n else if (i5 === 89) a2--;\n else if (i5 === 64) n11 += t[n11 + 1] + 1;\n else if (i5 === 65) n11 += 2 * t[n11 + 1] + 1;\n else if (i5 >= 176 && i5 <= 183) n11 += i5 - 176 + 1;\n else if (i5 >= 184 && i5 <= 191) n11 += (i5 - 184 + 1) * 2;\n else if (r && a2 === 1 && i5 === 27) break;\n while (a2 > 0);\n e.ip = n11;\n }\n function kn(e, r) {\n s4.DEBUG && console.log(r.step, "SVTCA[" + e.axis + "]"), r.fv = r.pv = r.dpv = e;\n }\n function Fn2(e, r) {\n s4.DEBUG && console.log(r.step, "SPVTCA[" + e.axis + "]"), r.pv = r.dpv = e;\n }\n function Ln2(e, r) {\n s4.DEBUG && console.log(r.step, "SFVTCA[" + e.axis + "]"), r.fv = e;\n }\n function En2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = t.pop(), i5 = r.z2[n11], o2 = r.z1[a2];\n s4.DEBUG && console.log("SPVTL[" + e + "]", n11, a2);\n var l4, u3;\n e ? (l4 = i5.y - o2.y, u3 = o2.x - i5.x) : (l4 = o2.x - i5.x, u3 = o2.y - i5.y), r.pv = r.dpv = tr2(l4, u3);\n }\n function Un2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = t.pop(), i5 = r.z2[n11], o2 = r.z1[a2];\n s4.DEBUG && console.log("SFVTL[" + e + "]", n11, a2);\n var l4, u3;\n e ? (l4 = i5.y - o2.y, u3 = o2.x - i5.x) : (l4 = o2.x - i5.x, u3 = o2.y - i5.y), r.fv = tr2(l4, u3);\n }\n function Wi2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "SPVFS[]", t, n11), e.pv = e.dpv = tr2(n11, t);\n }\n function Vi2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "SPVFS[]", t, n11), e.fv = tr2(n11, t);\n }\n function qi2(e) {\n var r = e.stack, t = e.pv;\n s4.DEBUG && console.log(e.step, "GPV[]"), r.push(t.x * 16384), r.push(t.y * 16384);\n }\n function Xi2(e) {\n var r = e.stack, t = e.fv;\n s4.DEBUG && console.log(e.step, "GFV[]"), r.push(t.x * 16384), r.push(t.y * 16384);\n }\n function Yi2(e) {\n e.fv = e.pv, s4.DEBUG && console.log(e.step, "SFVTPV[]");\n }\n function Zi2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop(), a2 = r.pop(), i5 = r.pop(), o2 = r.pop(), l4 = e.z0, u3 = e.z1, c2 = l4[t], d3 = l4[n11], y5 = u3[a2], g6 = u3[i5], m4 = e.z2[o2];\n s4.DEBUG && console.log("ISECT[], ", t, n11, a2, i5, o2);\n var T4 = c2.x, O4 = c2.y, F4 = d3.x, U6 = d3.y, P5 = y5.x, I4 = y5.y, H5 = g6.x, R4 = g6.y, B5 = (T4 - F4) * (I4 - R4) - (O4 - U6) * (P5 - H5), ue2 = T4 * U6 - O4 * F4, q3 = P5 * R4 - I4 * H5;\n m4.x = (ue2 * (P5 - H5) - q3 * (T4 - F4)) / B5, m4.y = (ue2 * (I4 - R4) - q3 * (O4 - U6)) / B5;\n }\n function Qi2(e) {\n e.rp0 = e.stack.pop(), s4.DEBUG && console.log(e.step, "SRP0[]", e.rp0);\n }\n function Ji2(e) {\n e.rp1 = e.stack.pop(), s4.DEBUG && console.log(e.step, "SRP1[]", e.rp1);\n }\n function Ki2(e) {\n e.rp2 = e.stack.pop(), s4.DEBUG && console.log(e.step, "SRP2[]", e.rp2);\n }\n function ji2(e) {\n var r = e.stack.pop();\n switch (s4.DEBUG && console.log(e.step, "SZP0[]", r), e.zp0 = r, r) {\n case 0:\n e.tZone || Fr(e), e.z0 = e.tZone;\n break;\n case 1:\n e.z0 = e.gZone;\n break;\n default:\n throw new Error("Invalid zone pointer");\n }\n }\n function $i2(e) {\n var r = e.stack.pop();\n switch (s4.DEBUG && console.log(e.step, "SZP1[]", r), e.zp1 = r, r) {\n case 0:\n e.tZone || Fr(e), e.z1 = e.tZone;\n break;\n case 1:\n e.z1 = e.gZone;\n break;\n default:\n throw new Error("Invalid zone pointer");\n }\n }\n function es2(e) {\n var r = e.stack.pop();\n switch (s4.DEBUG && console.log(e.step, "SZP2[]", r), e.zp2 = r, r) {\n case 0:\n e.tZone || Fr(e), e.z2 = e.tZone;\n break;\n case 1:\n e.z2 = e.gZone;\n break;\n default:\n throw new Error("Invalid zone pointer");\n }\n }\n function rs2(e) {\n var r = e.stack.pop();\n switch (s4.DEBUG && console.log(e.step, "SZPS[]", r), e.zp0 = e.zp1 = e.zp2 = r, r) {\n case 0:\n e.tZone || Fr(e), e.z0 = e.z1 = e.z2 = e.tZone;\n break;\n case 1:\n e.z0 = e.z1 = e.z2 = e.gZone;\n break;\n default:\n throw new Error("Invalid zone pointer");\n }\n }\n function ts2(e) {\n e.loop = e.stack.pop(), s4.DEBUG && console.log(e.step, "SLOOP[]", e.loop);\n }\n function ns2(e) {\n s4.DEBUG && console.log(e.step, "RTG[]"), e.round = xn2;\n }\n function as2(e) {\n s4.DEBUG && console.log(e.step, "RTHG[]"), e.round = Ni2;\n }\n function is2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "SMD[]", r), e.minDis = r / 64;\n }\n function ss2(e) {\n s4.DEBUG && console.log(e.step, "ELSE[]"), Tn2(e, false);\n }\n function os2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "JMPR[]", r), e.ip += r - 1;\n }\n function us2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "SCVTCI[]", r), e.cvCutIn = r / 64;\n }\n function ls2(e) {\n var r = e.stack;\n s4.DEBUG && console.log(e.step, "DUP[]"), r.push(r[r.length - 1]);\n }\n function Jr2(e) {\n s4.DEBUG && console.log(e.step, "POP[]"), e.stack.pop();\n }\n function fs2(e) {\n s4.DEBUG && console.log(e.step, "CLEAR[]"), e.stack.length = 0;\n }\n function ps2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "SWAP[]"), r.push(t), r.push(n11);\n }\n function hs2(e) {\n var r = e.stack;\n s4.DEBUG && console.log(e.step, "DEPTH[]"), r.push(r.length);\n }\n function cs2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "LOOPCALL[]", t, n11);\n var a2 = e.ip, i5 = e.prog;\n e.prog = e.funcs[t];\n for (var o2 = 0; o2 < n11; o2++) Pe3(e), s4.DEBUG && console.log(++e.step, o2 + 1 < n11 ? "next loopcall" : "done loopcall", o2);\n e.ip = a2, e.prog = i5;\n }\n function vs(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "CALL[]", r);\n var t = e.ip, n11 = e.prog;\n e.prog = e.funcs[r], Pe3(e), e.ip = t, e.prog = n11, s4.DEBUG && console.log(++e.step, "returning from", r);\n }\n function ds2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "CINDEX[]", t), r.push(r[r.length - t]);\n }\n function gs2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "MINDEX[]", t), r.push(r.splice(r.length - t, 1)[0]);\n }\n function ms2(e) {\n if (e.env !== "fpgm") throw new Error("FDEF not allowed here");\n var r = e.stack, t = e.prog, n11 = e.ip, a2 = r.pop(), i5 = n11;\n for (s4.DEBUG && console.log(e.step, "FDEF[]", a2); t[++n11] !== 45; ) ;\n e.ip = n11, e.funcs[a2] = t.slice(i5 + 1, n11);\n }\n function On2(e, r) {\n var t = r.stack.pop(), n11 = r.z0[t], a2 = r.fv, i5 = r.pv;\n s4.DEBUG && console.log(r.step, "MDAP[" + e + "]", t);\n var o2 = i5.distance(n11, nr2);\n e && (o2 = r.round(o2)), a2.setRelative(n11, nr2, o2, i5), a2.touch(n11), r.rp0 = r.rp1 = t;\n }\n function In2(e, r) {\n var t = r.z2, n11 = t.length - 2, a2, i5, o2;\n s4.DEBUG && console.log(r.step, "IUP[" + e.axis + "]");\n for (var l4 = 0; l4 < n11; l4++) a2 = t[l4], !e.touched(a2) && (i5 = a2.prevTouched(e), i5 !== a2 && (o2 = a2.nextTouched(e), i5 === o2 && e.setRelative(a2, a2, e.distance(i5, i5, false, true), e, true), e.interpolate(a2, i5, o2, e)));\n }\n function Cn2(e, r) {\n for (var t = r.stack, n11 = e ? r.rp1 : r.rp2, a2 = (e ? r.z0 : r.z1)[n11], i5 = r.fv, o2 = r.pv, l4 = r.loop, u3 = r.z2; l4--; ) {\n var c2 = t.pop(), d3 = u3[c2], y5 = o2.distance(a2, a2, false, true);\n i5.setRelative(d3, d3, y5, o2), i5.touch(d3), s4.DEBUG && console.log(r.step, (r.loop > 1 ? "loop " + (r.loop - l4) + ": " : "") + "SHP[" + (e ? "rp1" : "rp2") + "]", c2);\n }\n r.loop = 1;\n }\n function wn2(e, r) {\n var t = r.stack, n11 = e ? r.rp1 : r.rp2, a2 = (e ? r.z0 : r.z1)[n11], i5 = r.fv, o2 = r.pv, l4 = t.pop(), u3 = r.z2[r.contours[l4]], c2 = u3;\n s4.DEBUG && console.log(r.step, "SHC[" + e + "]", l4);\n var d3 = o2.distance(a2, a2, false, true);\n do\n c2 !== a2 && i5.setRelative(c2, c2, d3, o2), c2 = c2.nextPointOnContour;\n while (c2 !== u3);\n }\n function Rn2(e, r) {\n var t = r.stack, n11 = e ? r.rp1 : r.rp2, a2 = (e ? r.z0 : r.z1)[n11], i5 = r.fv, o2 = r.pv, l4 = t.pop();\n s4.DEBUG && console.log(r.step, "SHZ[" + e + "]", l4);\n var u3;\n switch (l4) {\n case 0:\n u3 = r.tZone;\n break;\n case 1:\n u3 = r.gZone;\n break;\n default:\n throw new Error("Invalid zone");\n }\n for (var c2, d3 = o2.distance(a2, a2, false, true), y5 = u3.length - 2, g6 = 0; g6 < y5; g6++) c2 = u3[g6], i5.setRelative(c2, c2, d3, o2);\n }\n function ys2(e) {\n for (var r = e.stack, t = e.loop, n11 = e.fv, a2 = r.pop() / 64, i5 = e.z2; t--; ) {\n var o2 = r.pop(), l4 = i5[o2];\n s4.DEBUG && console.log(e.step, (e.loop > 1 ? "loop " + (e.loop - t) + ": " : "") + "SHPIX[]", o2, a2), n11.setRelative(l4, l4, a2), n11.touch(l4);\n }\n e.loop = 1;\n }\n function bs2(e) {\n for (var r = e.stack, t = e.rp1, n11 = e.rp2, a2 = e.loop, i5 = e.z0[t], o2 = e.z1[n11], l4 = e.fv, u3 = e.dpv, c2 = e.z2; a2--; ) {\n var d3 = r.pop(), y5 = c2[d3];\n s4.DEBUG && console.log(e.step, (e.loop > 1 ? "loop " + (e.loop - a2) + ": " : "") + "IP[]", d3, t, "<->", n11), l4.interpolate(y5, i5, o2, u3), l4.touch(y5);\n }\n e.loop = 1;\n }\n function Dn2(e, r) {\n var t = r.stack, n11 = t.pop() / 64, a2 = t.pop(), i5 = r.z1[a2], o2 = r.z0[r.rp0], l4 = r.fv, u3 = r.pv;\n l4.setRelative(i5, o2, n11, u3), l4.touch(i5), s4.DEBUG && console.log(r.step, "MSIRP[" + e + "]", n11, a2), r.rp1 = r.rp0, r.rp2 = a2, e && (r.rp0 = a2);\n }\n function xs2(e) {\n for (var r = e.stack, t = e.rp0, n11 = e.z0[t], a2 = e.loop, i5 = e.fv, o2 = e.pv, l4 = e.z1; a2--; ) {\n var u3 = r.pop(), c2 = l4[u3];\n s4.DEBUG && console.log(e.step, (e.loop > 1 ? "loop " + (e.loop - a2) + ": " : "") + "ALIGNRP[]", u3), i5.setRelative(c2, n11, 0, o2), i5.touch(c2);\n }\n e.loop = 1;\n }\n function Ss2(e) {\n s4.DEBUG && console.log(e.step, "RTDG[]"), e.round = Gi2;\n }\n function An(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = t.pop(), i5 = r.z0[a2], o2 = r.fv, l4 = r.pv, u3 = r.cvt[n11];\n s4.DEBUG && console.log(r.step, "MIAP[" + e + "]", n11, "(", u3, ")", a2);\n var c2 = l4.distance(i5, nr2);\n e && (Math.abs(c2 - u3) < r.cvCutIn && (c2 = u3), c2 = r.round(c2)), o2.setRelative(i5, nr2, c2, l4), r.zp0 === 0 && (i5.xo = i5.x, i5.yo = i5.y), o2.touch(i5), r.rp0 = r.rp1 = a2;\n }\n function Ts2(e) {\n var r = e.prog, t = e.ip, n11 = e.stack, a2 = r[++t];\n s4.DEBUG && console.log(e.step, "NPUSHB[]", a2);\n for (var i5 = 0; i5 < a2; i5++) n11.push(r[++t]);\n e.ip = t;\n }\n function ks2(e) {\n var r = e.ip, t = e.prog, n11 = e.stack, a2 = t[++r];\n s4.DEBUG && console.log(e.step, "NPUSHW[]", a2);\n for (var i5 = 0; i5 < a2; i5++) {\n var o2 = t[++r] << 8 | t[++r];\n o2 & 32768 && (o2 = -((o2 ^ 65535) + 1)), n11.push(o2);\n }\n e.ip = r;\n }\n function Fs(e) {\n var r = e.stack, t = e.store;\n t || (t = e.store = []);\n var n11 = r.pop(), a2 = r.pop();\n s4.DEBUG && console.log(e.step, "WS", n11, a2), t[a2] = n11;\n }\n function Ls2(e) {\n var r = e.stack, t = e.store, n11 = r.pop();\n s4.DEBUG && console.log(e.step, "RS", n11);\n var a2 = t && t[n11] || 0;\n r.push(a2);\n }\n function Es2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "WCVTP", t, n11), e.cvt[n11] = t / 64;\n }\n function Us2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "RCVT", t), r.push(e.cvt[t] * 64);\n }\n function Mn2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = r.z2[n11];\n s4.DEBUG && console.log(r.step, "GC[" + e + "]", n11), t.push(r.dpv.distance(a2, nr2, e, false) * 64);\n }\n function Bn2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = t.pop(), i5 = r.z1[n11], o2 = r.z0[a2], l4 = r.dpv.distance(o2, i5, e, e);\n s4.DEBUG && console.log(r.step, "MD[" + e + "]", n11, a2, "->", l4), r.stack.push(Math.round(l4 * 64));\n }\n function Os(e) {\n s4.DEBUG && console.log(e.step, "MPPEM[]"), e.stack.push(e.ppem);\n }\n function Is(e) {\n s4.DEBUG && console.log(e.step, "FLIPON[]"), e.autoFlip = true;\n }\n function Cs(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "LT[]", t, n11), r.push(n11 < t ? 1 : 0);\n }\n function ws2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "LTEQ[]", t, n11), r.push(n11 <= t ? 1 : 0);\n }\n function Rs2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "GT[]", t, n11), r.push(n11 > t ? 1 : 0);\n }\n function Ds2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "GTEQ[]", t, n11), r.push(n11 >= t ? 1 : 0);\n }\n function As2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "EQ[]", t, n11), r.push(t === n11 ? 1 : 0);\n }\n function Ms2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "NEQ[]", t, n11), r.push(t !== n11 ? 1 : 0);\n }\n function Bs2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "ODD[]", t), r.push(Math.trunc(t) % 2 ? 1 : 0);\n }\n function Ps2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "EVEN[]", t), r.push(Math.trunc(t) % 2 ? 0 : 1);\n }\n function Gs2(e) {\n var r = e.stack.pop(), t;\n s4.DEBUG && console.log(e.step, "IF[]", r), r || (Tn2(e, true), s4.DEBUG && console.log(e.step, t === 27 ? "ELSE[]" : "EIF[]"));\n }\n function Ns(e) {\n s4.DEBUG && console.log(e.step, "EIF[]");\n }\n function Hs(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "AND[]", t, n11), r.push(t && n11 ? 1 : 0);\n }\n function _s2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "OR[]", t, n11), r.push(t || n11 ? 1 : 0);\n }\n function zs2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "NOT[]", t), r.push(t ? 0 : 1);\n }\n function Kr(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = r.fv, i5 = r.pv, o2 = r.ppem, l4 = r.deltaBase + (e - 1) * 16, u3 = r.deltaShift, c2 = r.z0;\n s4.DEBUG && console.log(r.step, "DELTAP[" + e + "]", n11, t);\n for (var d3 = 0; d3 < n11; d3++) {\n var y5 = t.pop(), g6 = t.pop(), m4 = l4 + ((g6 & 240) >> 4);\n if (m4 === o2) {\n var T4 = (g6 & 15) - 8;\n T4 >= 0 && T4++, s4.DEBUG && console.log(r.step, "DELTAPFIX", y5, "by", T4 * u3);\n var O4 = c2[y5];\n a2.setRelative(O4, O4, T4 * u3, i5);\n }\n }\n }\n function Ws(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "SDB[]", t), e.deltaBase = t;\n }\n function Vs(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "SDS[]", t), e.deltaShift = Math.pow(0.5, t);\n }\n function qs2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "ADD[]", t, n11), r.push(n11 + t);\n }\n function Xs2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "SUB[]", t, n11), r.push(n11 - t);\n }\n function Ys2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "DIV[]", t, n11), r.push(n11 * 64 / t);\n }\n function Zs2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "MUL[]", t, n11), r.push(n11 * t / 64);\n }\n function Qs2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "ABS[]", t), r.push(Math.abs(t));\n }\n function Js2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "NEG[]", t), r.push(-t);\n }\n function Ks2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "FLOOR[]", t), r.push(Math.floor(t / 64) * 64);\n }\n function js2(e) {\n var r = e.stack, t = r.pop();\n s4.DEBUG && console.log(e.step, "CEILING[]", t), r.push(Math.ceil(t / 64) * 64);\n }\n function Lr2(e, r) {\n var t = r.stack, n11 = t.pop();\n s4.DEBUG && console.log(r.step, "ROUND[]"), t.push(r.round(n11 / 64) * 64);\n }\n function $s2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "WCVTF[]", t, n11), e.cvt[n11] = t * e.ppem / e.font.unitsPerEm;\n }\n function jr2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = r.ppem, i5 = r.deltaBase + (e - 1) * 16, o2 = r.deltaShift;\n s4.DEBUG && console.log(r.step, "DELTAC[" + e + "]", n11, t);\n for (var l4 = 0; l4 < n11; l4++) {\n var u3 = t.pop(), c2 = t.pop(), d3 = i5 + ((c2 & 240) >> 4);\n if (d3 === a2) {\n var y5 = (c2 & 15) - 8;\n y5 >= 0 && y5++;\n var g6 = y5 * o2;\n s4.DEBUG && console.log(r.step, "DELTACFIX", u3, "by", g6), r.cvt[u3] += g6;\n }\n }\n }\n function eo2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "SROUND[]", r), e.round = Sn;\n var t;\n switch (r & 192) {\n case 0:\n t = 0.5;\n break;\n case 64:\n t = 1;\n break;\n case 128:\n t = 2;\n break;\n default:\n throw new Error("invalid SROUND value");\n }\n switch (e.srPeriod = t, r & 48) {\n case 0:\n e.srPhase = 0;\n break;\n case 16:\n e.srPhase = 0.25 * t;\n break;\n case 32:\n e.srPhase = 0.5 * t;\n break;\n case 48:\n e.srPhase = 0.75 * t;\n break;\n default:\n throw new Error("invalid SROUND value");\n }\n r &= 15, r === 0 ? e.srThreshold = 0 : e.srThreshold = (r / 8 - 0.5) * t;\n }\n function ro2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "S45ROUND[]", r), e.round = Sn;\n var t;\n switch (r & 192) {\n case 0:\n t = Math.sqrt(2) / 2;\n break;\n case 64:\n t = Math.sqrt(2);\n break;\n case 128:\n t = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error("invalid S45ROUND value");\n }\n switch (e.srPeriod = t, r & 48) {\n case 0:\n e.srPhase = 0;\n break;\n case 16:\n e.srPhase = 0.25 * t;\n break;\n case 32:\n e.srPhase = 0.5 * t;\n break;\n case 48:\n e.srPhase = 0.75 * t;\n break;\n default:\n throw new Error("invalid S45ROUND value");\n }\n r &= 15, r === 0 ? e.srThreshold = 0 : e.srThreshold = (r / 8 - 0.5) * t;\n }\n function to2(e) {\n s4.DEBUG && console.log(e.step, "ROFF[]"), e.round = Pi2;\n }\n function no2(e) {\n s4.DEBUG && console.log(e.step, "RUTG[]"), e.round = Hi2;\n }\n function ao2(e) {\n s4.DEBUG && console.log(e.step, "RDTG[]"), e.round = _i;\n }\n function io2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "SCANCTRL[]", r);\n }\n function Pn2(e, r) {\n var t = r.stack, n11 = t.pop(), a2 = t.pop(), i5 = r.z2[n11], o2 = r.z1[a2];\n s4.DEBUG && console.log(r.step, "SDPVTL[" + e + "]", n11, a2);\n var l4, u3;\n e ? (l4 = i5.y - o2.y, u3 = o2.x - i5.x) : (l4 = o2.x - i5.x, u3 = o2.y - i5.y), r.dpv = tr2(l4, u3);\n }\n function so2(e) {\n var r = e.stack, t = r.pop(), n11 = 0;\n s4.DEBUG && console.log(e.step, "GETINFO[]", t), t & 1 && (n11 = 35), t & 32 && (n11 |= 4096), r.push(n11);\n }\n function oo2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop(), a2 = r.pop();\n s4.DEBUG && console.log(e.step, "ROLL[]"), r.push(n11), r.push(t), r.push(a2);\n }\n function uo2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "MAX[]", t, n11), r.push(Math.max(n11, t));\n }\n function lo2(e) {\n var r = e.stack, t = r.pop(), n11 = r.pop();\n s4.DEBUG && console.log(e.step, "MIN[]", t, n11), r.push(Math.min(n11, t));\n }\n function fo2(e) {\n var r = e.stack.pop();\n s4.DEBUG && console.log(e.step, "SCANTYPE[]", r);\n }\n function po2(e) {\n var r = e.stack.pop(), t = e.stack.pop();\n switch (s4.DEBUG && console.log(e.step, "INSTCTRL[]", r, t), r) {\n case 1:\n e.inhibitGridFit = !!t;\n return;\n case 2:\n e.ignoreCvt = !!t;\n return;\n default:\n throw new Error("invalid INSTCTRL[] selector");\n }\n }\n function Ce3(e, r) {\n var t = r.stack, n11 = r.prog, a2 = r.ip;\n s4.DEBUG && console.log(r.step, "PUSHB[" + e + "]");\n for (var i5 = 0; i5 < e; i5++) t.push(n11[++a2]);\n r.ip = a2;\n }\n function we3(e, r) {\n var t = r.ip, n11 = r.prog, a2 = r.stack;\n s4.DEBUG && console.log(r.ip, "PUSHW[" + e + "]");\n for (var i5 = 0; i5 < e; i5++) {\n var o2 = n11[++t] << 8 | n11[++t];\n o2 & 32768 && (o2 = -((o2 ^ 65535) + 1)), a2.push(o2);\n }\n r.ip = t;\n }\n function C4(e, r, t, n11, a2, i5) {\n var o2 = i5.stack, l4 = e && o2.pop(), u3 = o2.pop(), c2 = i5.rp0, d3 = i5.z0[c2], y5 = i5.z1[u3], g6 = i5.minDis, m4 = i5.fv, T4 = i5.dpv, O4, F4, U6, P5;\n F4 = O4 = T4.distance(y5, d3, true, true), U6 = F4 >= 0 ? 1 : -1, F4 = Math.abs(F4), e && (P5 = i5.cvt[l4], n11 && Math.abs(F4 - P5) < i5.cvCutIn && (F4 = P5)), t && F4 < g6 && (F4 = g6), n11 && (F4 = i5.round(F4)), m4.setRelative(y5, d3, U6 * F4, T4), m4.touch(y5), s4.DEBUG && console.log(i5.step, (e ? "MIRP[" : "MDRP[") + (r ? "M" : "m") + (t ? ">" : "_") + (n11 ? "R" : "_") + (a2 === 0 ? "Gr" : a2 === 1 ? "Bl" : a2 === 2 ? "Wh" : "") + "]", e ? l4 + "(" + i5.cvt[l4] + "," + P5 + ")" : "", u3, "(d =", O4, "->", U6 * F4, ")"), i5.rp1 = i5.rp0, i5.rp2 = u3, r && (i5.rp0 = u3);\n }\n mn2 = [kn.bind(void 0, Fe4), kn.bind(void 0, Te4), Fn2.bind(void 0, Fe4), Fn2.bind(void 0, Te4), Ln2.bind(void 0, Fe4), Ln2.bind(void 0, Te4), En2.bind(void 0, 0), En2.bind(void 0, 1), Un2.bind(void 0, 0), Un2.bind(void 0, 1), Wi2, Vi2, qi2, Xi2, Yi2, Zi2, Qi2, Ji2, Ki2, ji2, $i2, es2, rs2, ts2, ns2, as2, is2, ss2, os2, us2, void 0, void 0, ls2, Jr2, fs2, ps2, hs2, ds2, gs2, void 0, void 0, void 0, cs2, vs, ms2, void 0, On2.bind(void 0, 0), On2.bind(void 0, 1), In2.bind(void 0, Fe4), In2.bind(void 0, Te4), Cn2.bind(void 0, 0), Cn2.bind(void 0, 1), wn2.bind(void 0, 0), wn2.bind(void 0, 1), Rn2.bind(void 0, 0), Rn2.bind(void 0, 1), ys2, bs2, Dn2.bind(void 0, 0), Dn2.bind(void 0, 1), xs2, Ss2, An.bind(void 0, 0), An.bind(void 0, 1), Ts2, ks2, Fs, Ls2, Es2, Us2, Mn2.bind(void 0, 0), Mn2.bind(void 0, 1), void 0, Bn2.bind(void 0, 0), Bn2.bind(void 0, 1), Os, void 0, Is, void 0, void 0, Cs, ws2, Rs2, Ds2, As2, Ms2, Bs2, Ps2, Gs2, Ns, Hs, _s2, zs2, Kr.bind(void 0, 1), Ws, Vs, qs2, Xs2, Ys2, Zs2, Qs2, Js2, Ks2, js2, Lr2.bind(void 0, 0), Lr2.bind(void 0, 1), Lr2.bind(void 0, 2), Lr2.bind(void 0, 3), void 0, void 0, void 0, void 0, $s2, Kr.bind(void 0, 2), Kr.bind(void 0, 3), jr2.bind(void 0, 1), jr2.bind(void 0, 2), jr2.bind(void 0, 3), eo2, ro2, void 0, void 0, to2, void 0, no2, ao2, Jr2, Jr2, void 0, void 0, void 0, void 0, void 0, io2, Pn2.bind(void 0, 0), Pn2.bind(void 0, 1), so2, void 0, oo2, uo2, lo2, fo2, po2, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, Ce3.bind(void 0, 1), Ce3.bind(void 0, 2), Ce3.bind(void 0, 3), Ce3.bind(void 0, 4), Ce3.bind(void 0, 5), Ce3.bind(void 0, 6), Ce3.bind(void 0, 7), Ce3.bind(void 0, 8), we3.bind(void 0, 1), we3.bind(void 0, 2), we3.bind(void 0, 3), we3.bind(void 0, 4), we3.bind(void 0, 5), we3.bind(void 0, 6), we3.bind(void 0, 7), we3.bind(void 0, 8), C4.bind(void 0, 0, 0, 0, 0, 0), C4.bind(void 0, 0, 0, 0, 0, 1), C4.bind(void 0, 0, 0, 0, 0, 2), C4.bind(void 0, 0, 0, 0, 0, 3), C4.bind(void 0, 0, 0, 0, 1, 0), C4.bind(void 0, 0, 0, 0, 1, 1), C4.bind(void 0, 0, 0, 0, 1, 2), C4.bind(void 0, 0, 0, 0, 1, 3), C4.bind(void 0, 0, 0, 1, 0, 0), C4.bind(void 0, 0, 0, 1, 0, 1), C4.bind(void 0, 0, 0, 1, 0, 2), C4.bind(void 0, 0, 0, 1, 0, 3), C4.bind(void 0, 0, 0, 1, 1, 0), C4.bind(void 0, 0, 0, 1, 1, 1), C4.bind(void 0, 0, 0, 1, 1, 2), C4.bind(void 0, 0, 0, 1, 1, 3), C4.bind(void 0, 0, 1, 0, 0, 0), C4.bind(void 0, 0, 1, 0, 0, 1), C4.bind(void 0, 0, 1, 0, 0, 2), C4.bind(void 0, 0, 1, 0, 0, 3), C4.bind(void 0, 0, 1, 0, 1, 0), C4.bind(void 0, 0, 1, 0, 1, 1), C4.bind(void 0, 0, 1, 0, 1, 2), C4.bind(void 0, 0, 1, 0, 1, 3), C4.bind(void 0, 0, 1, 1, 0, 0), C4.bind(void 0, 0, 1, 1, 0, 1), C4.bind(void 0, 0, 1, 1, 0, 2), C4.bind(void 0, 0, 1, 1, 0, 3), C4.bind(void 0, 0, 1, 1, 1, 0), C4.bind(void 0, 0, 1, 1, 1, 1), C4.bind(void 0, 0, 1, 1, 1, 2), C4.bind(void 0, 0, 1, 1, 1, 3), C4.bind(void 0, 1, 0, 0, 0, 0), C4.bind(void 0, 1, 0, 0, 0, 1), C4.bind(void 0, 1, 0, 0, 0, 2), C4.bind(void 0, 1, 0, 0, 0, 3), C4.bind(void 0, 1, 0, 0, 1, 0), C4.bind(void 0, 1, 0, 0, 1, 1), C4.bind(void 0, 1, 0, 0, 1, 2), C4.bind(void 0, 1, 0, 0, 1, 3), C4.bind(void 0, 1, 0, 1, 0, 0), C4.bind(void 0, 1, 0, 1, 0, 1), C4.bind(void 0, 1, 0, 1, 0, 2), C4.bind(void 0, 1, 0, 1, 0, 3), C4.bind(void 0, 1, 0, 1, 1, 0), C4.bind(void 0, 1, 0, 1, 1, 1), C4.bind(void 0, 1, 0, 1, 1, 2), C4.bind(void 0, 1, 0, 1, 1, 3), C4.bind(void 0, 1, 1, 0, 0, 0), C4.bind(void 0, 1, 1, 0, 0, 1), C4.bind(void 0, 1, 1, 0, 0, 2), C4.bind(void 0, 1, 1, 0, 0, 3), C4.bind(void 0, 1, 1, 0, 1, 0), C4.bind(void 0, 1, 1, 0, 1, 1), C4.bind(void 0, 1, 1, 0, 1, 2), C4.bind(void 0, 1, 1, 0, 1, 3), C4.bind(void 0, 1, 1, 1, 0, 0), C4.bind(void 0, 1, 1, 1, 0, 1), C4.bind(void 0, 1, 1, 1, 0, 2), C4.bind(void 0, 1, 1, 1, 0, 3), C4.bind(void 0, 1, 1, 1, 1, 0), C4.bind(void 0, 1, 1, 1, 1, 1), C4.bind(void 0, 1, 1, 1, 1, 2), C4.bind(void 0, 1, 1, 1, 1, 3)];\n function z4(e) {\n e = e || {}, e.empty || (Ye3(e.familyName, "When creating a new Font object, familyName is required."), Ye3(e.styleName, "When creating a new Font object, styleName is required."), Ye3(e.unitsPerEm, "When creating a new Font object, unitsPerEm is required."), Ye3(e.ascender, "When creating a new Font object, ascender is required."), Ye3(e.descender, "When creating a new Font object, descender is required."), Ye3(e.descender < 0, "Descender should be negative (e.g. -512)."), this.names = { fontFamily: { en: e.familyName || " " }, fontSubfamily: { en: e.styleName || " " }, fullName: { en: e.fullName || e.familyName + " " + e.styleName }, postScriptName: { en: e.postScriptName || e.familyName + e.styleName }, designer: { en: e.designer || " " }, designerURL: { en: e.designerURL || " " }, manufacturer: { en: e.manufacturer || " " }, manufacturerURL: { en: e.manufacturerURL || " " }, license: { en: e.license || " " }, licenseURL: { en: e.licenseURL || " " }, version: { en: e.version || "Version 0.1" }, description: { en: e.description || " " }, copyright: { en: e.copyright || " " }, trademark: { en: e.trademark || " " } }, this.unitsPerEm = e.unitsPerEm || 1e3, this.ascender = e.ascender, this.descender = e.descender, this.createdTimestamp = e.createdTimestamp, this.tables = { os2: { usWeightClass: e.weightClass || this.usWeightClasses.MEDIUM, usWidthClass: e.widthClass || this.usWidthClasses.MEDIUM, fsSelection: e.fsSelection || this.fsSelectionValues.REGULAR } }), this.supported = true, this.glyphs = new qe2.GlyphSet(this, e.glyphs || []), this.encoding = new Ct3(this), this.position = new kr(this), this.substitution = new ye3(this), this.tables = this.tables || {}, Object.defineProperty(this, "hinting", { get: function() {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === "truetype") return this._hinting = new bn(this);\n } });\n }\n z4.prototype.hasChar = function(e) {\n return this.encoding.charToGlyphIndex(e) !== null;\n }, z4.prototype.charToGlyphIndex = function(e) {\n return this.encoding.charToGlyphIndex(e);\n }, z4.prototype.charToGlyph = function(e) {\n var r = this.charToGlyphIndex(e), t = this.glyphs.get(r);\n return t || (t = this.glyphs.get(0)), t;\n }, z4.prototype.stringToGlyphs = function(e, r) {\n var t = this;\n r = r || this.defaultRenderOptions;\n for (var n11 = [], a2 = 0; a2 < e.length; a2 += 1) {\n var i5 = e[a2];\n n11.push(t.charToGlyphIndex(i5));\n }\n var o2 = n11.length;\n if (r.features) {\n var l4 = r.script || this.substitution.getDefaultScriptName(), u3 = [];\n r.features.liga && (u3 = u3.concat(this.substitution.getFeature("liga", l4, r.language))), r.features.rlig && (u3 = u3.concat(this.substitution.getFeature("rlig", l4, r.language)));\n for (var c2 = 0; c2 < o2; c2 += 1) for (var d3 = 0; d3 < u3.length; d3++) {\n for (var y5 = u3[d3], g6 = y5.sub, m4 = g6.length, T4 = 0; T4 < m4 && g6[T4] === n11[c2 + T4]; ) T4++;\n T4 === m4 && (n11.splice(c2, m4, y5.by), o2 = o2 - m4 + 1);\n }\n }\n for (var O4 = new Array(o2), F4 = this.glyphs.get(0), U6 = 0; U6 < o2; U6 += 1) O4[U6] = t.glyphs.get(n11[U6]) || F4;\n return O4;\n }, z4.prototype.nameToGlyphIndex = function(e) {\n return this.glyphNames.nameToGlyphIndex(e);\n }, z4.prototype.nameToGlyph = function(e) {\n var r = this.nameToGlyphIndex(e), t = this.glyphs.get(r);\n return t || (t = this.glyphs.get(0)), t;\n }, z4.prototype.glyphIndexToName = function(e) {\n return this.glyphNames.glyphIndexToName ? this.glyphNames.glyphIndexToName(e) : "";\n }, z4.prototype.getKerningValue = function(e, r) {\n return e = e.index || e, r = r.index || r, this.kerningPairs[e + "," + r] || 0;\n }, z4.prototype.defaultRenderOptions = { kerning: true, features: { liga: true, rlig: true } }, z4.prototype.forEachGlyph = function(e, r, t, n11, a2, i5) {\n var o2 = this;\n r = r !== void 0 ? r : 0, t = t !== void 0 ? t : 0, n11 = n11 !== void 0 ? n11 : 72, a2 = a2 || this.defaultRenderOptions;\n var l4 = 1 / this.unitsPerEm * n11, u3 = this.stringToGlyphs(e, a2), c2;\n if (a2.kerning) {\n var d3 = a2.script || this.position.getDefaultScriptName();\n c2 = this.position.getKerningTables(d3, a2.language);\n }\n for (var y5 = 0; y5 < u3.length; y5 += 1) {\n var g6 = u3[y5];\n if (i5.call(o2, g6, r, t, n11, a2), g6.advanceWidth && (r += g6.advanceWidth * l4), a2.kerning && y5 < u3.length - 1) {\n var m4 = c2 ? o2.position.getKerningValue(c2, g6.index, u3[y5 + 1].index) : o2.getKerningValue(g6, u3[y5 + 1]);\n r += m4 * l4;\n }\n a2.letterSpacing ? r += a2.letterSpacing * n11 : a2.tracking && (r += a2.tracking / 1e3 * n11);\n }\n return r;\n }, z4.prototype.getPath = function(e, r, t, n11, a2) {\n var i5 = new Z5();\n return this.forEachGlyph(e, r, t, n11, a2, function(o2, l4, u3, c2) {\n var d3 = o2.getPath(l4, u3, c2, a2, this);\n i5.extend(d3);\n }), i5;\n }, z4.prototype.getPaths = function(e, r, t, n11, a2) {\n var i5 = [];\n return this.forEachGlyph(e, r, t, n11, a2, function(o2, l4, u3, c2) {\n var d3 = o2.getPath(l4, u3, c2, a2, this);\n i5.push(d3);\n }), i5;\n }, z4.prototype.getAdvanceWidth = function(e, r, t) {\n return this.forEachGlyph(e, 0, 0, r, t, function() {\n });\n }, z4.prototype.draw = function(e, r, t, n11, a2, i5) {\n this.getPath(r, t, n11, a2, i5).draw(e);\n }, z4.prototype.drawPoints = function(e, r, t, n11, a2, i5) {\n this.forEachGlyph(r, t, n11, a2, i5, function(o2, l4, u3, c2) {\n o2.drawPoints(e, l4, u3, c2);\n });\n }, z4.prototype.drawMetrics = function(e, r, t, n11, a2, i5) {\n this.forEachGlyph(r, t, n11, a2, i5, function(o2, l4, u3, c2) {\n o2.drawMetrics(e, l4, u3, c2);\n });\n }, z4.prototype.getEnglishName = function(e) {\n var r = this.names[e];\n if (r) return r.en;\n }, z4.prototype.validate = function() {\n var e = [], r = this;\n function t(a2, i5) {\n a2 || e.push(i5);\n }\n function n11(a2) {\n var i5 = r.getEnglishName(a2);\n t(i5 && i5.trim().length > 0, "No English " + a2 + " specified.");\n }\n n11("fontFamily"), n11("weightName"), n11("manufacturer"), n11("copyright"), n11("version"), t(this.unitsPerEm > 0, "No unitsPerEm specified.");\n }, z4.prototype.toTables = function() {\n return Di2.fontToTable(this);\n }, z4.prototype.toBuffer = function() {\n return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."), this.toArrayBuffer();\n }, z4.prototype.toArrayBuffer = function() {\n for (var e = this.toTables(), r = e.encode(), t = new ArrayBuffer(r.length), n11 = new Uint8Array(t), a2 = 0; a2 < r.length; a2++) n11[a2] = r[a2];\n return t;\n }, z4.prototype.download = function(e) {\n var r = this.getEnglishName("fontFamily"), t = this.getEnglishName("fontSubfamily");\n e = e || r.replace(/\\s/g, "") + "-" + t + ".otf";\n var n11 = this.toArrayBuffer();\n if (Mi2()) window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem, window.requestFileSystem(window.TEMPORARY, n11.byteLength, function(o2) {\n o2.root.getFile(e, { create: true }, function(l4) {\n l4.createWriter(function(u3) {\n var c2 = new DataView(n11), d3 = new Blob([c2], { type: "font/opentype" });\n u3.write(d3), u3.addEventListener("writeend", function() {\n location.href = l4.toURL();\n }, false);\n });\n });\n }, function(o2) {\n throw new Error(o2.name + ": " + o2.message);\n });\n else {\n var a2 = tt2("fs"), i5 = Bi2(n11);\n a2.writeFileSync(e, i5);\n }\n }, z4.prototype.fsSelectionValues = { ITALIC: 1, UNDERSCORE: 2, NEGATIVE: 4, OUTLINED: 8, STRIKEOUT: 16, BOLD: 32, REGULAR: 64, USER_TYPO_METRICS: 128, WWS: 256, OBLIQUE: 512 }, z4.prototype.usWidthClasses = { ULTRA_CONDENSED: 1, EXTRA_CONDENSED: 2, CONDENSED: 3, SEMI_CONDENSED: 4, MEDIUM: 5, SEMI_EXPANDED: 6, EXPANDED: 7, EXTRA_EXPANDED: 8, ULTRA_EXPANDED: 9 }, z4.prototype.usWeightClasses = { THIN: 100, EXTRA_LIGHT: 200, LIGHT: 300, NORMAL: 400, MEDIUM: 500, SEMI_BOLD: 600, BOLD: 700, EXTRA_BOLD: 800, BLACK: 900 };\n function Gn2(e, r) {\n var t = JSON.stringify(e), n11 = 256;\n for (var a2 in r) {\n var i5 = parseInt(a2);\n if (!(!i5 || i5 < 256)) {\n if (JSON.stringify(r[a2]) === t) return i5;\n n11 <= i5 && (n11 = i5 + 1);\n }\n }\n return r[n11] = e, n11;\n }\n function ho2(e, r, t) {\n var n11 = Gn2(r.name, t);\n return [{ name: "tag_" + e, type: "TAG", value: r.tag }, { name: "minValue_" + e, type: "FIXED", value: r.minValue << 16 }, { name: "defaultValue_" + e, type: "FIXED", value: r.defaultValue << 16 }, { name: "maxValue_" + e, type: "FIXED", value: r.maxValue << 16 }, { name: "flags_" + e, type: "USHORT", value: 0 }, { name: "nameID_" + e, type: "USHORT", value: n11 }];\n }\n function co2(e, r, t) {\n var n11 = {}, a2 = new w6.Parser(e, r);\n return n11.tag = a2.parseTag(), n11.minValue = a2.parseFixed(), n11.defaultValue = a2.parseFixed(), n11.maxValue = a2.parseFixed(), a2.skip("uShort", 1), n11.name = t[a2.parseUShort()] || {}, n11;\n }\n function vo(e, r, t, n11) {\n for (var a2 = Gn2(r.name, n11), i5 = [{ name: "nameID_" + e, type: "USHORT", value: a2 }, { name: "flags_" + e, type: "USHORT", value: 0 }], o2 = 0; o2 < t.length; ++o2) {\n var l4 = t[o2].tag;\n i5.push({ name: "axis_" + e + " " + l4, type: "FIXED", value: r.coordinates[l4] << 16 });\n }\n return i5;\n }\n function go2(e, r, t, n11) {\n var a2 = {}, i5 = new w6.Parser(e, r);\n a2.name = n11[i5.parseUShort()] || {}, i5.skip("uShort", 1), a2.coordinates = {};\n for (var o2 = 0; o2 < t.length; ++o2) a2.coordinates[t[o2].tag] = i5.parseFixed();\n return a2;\n }\n function mo2(e, r) {\n var t = new A4.Table("fvar", [{ name: "version", type: "ULONG", value: 65536 }, { name: "offsetToData", type: "USHORT", value: 0 }, { name: "countSizePairs", type: "USHORT", value: 2 }, { name: "axisCount", type: "USHORT", value: e.axes.length }, { name: "axisSize", type: "USHORT", value: 20 }, { name: "instanceCount", type: "USHORT", value: e.instances.length }, { name: "instanceSize", type: "USHORT", value: 4 + e.axes.length * 4 }]);\n t.offsetToData = t.sizeOf();\n for (var n11 = 0; n11 < e.axes.length; n11++) t.fields = t.fields.concat(ho2(n11, e.axes[n11], r));\n for (var a2 = 0; a2 < e.instances.length; a2++) t.fields = t.fields.concat(vo(a2, e.instances[a2], e.axes, r));\n return t;\n }\n function yo2(e, r, t) {\n var n11 = new w6.Parser(e, r), a2 = n11.parseULong();\n G5.argument(a2 === 65536, "Unsupported fvar table version.");\n var i5 = n11.parseOffset16();\n n11.skip("uShort", 1);\n for (var o2 = n11.parseUShort(), l4 = n11.parseUShort(), u3 = n11.parseUShort(), c2 = n11.parseUShort(), d3 = [], y5 = 0; y5 < o2; y5++) d3.push(co2(e, r + i5 + y5 * l4, t));\n for (var g6 = [], m4 = r + i5 + o2 * l4, T4 = 0; T4 < u3; T4++) g6.push(go2(e, m4 + T4 * c2, d3, t));\n return { axes: d3, instances: g6 };\n }\n var bo = { make: mo2, parse: yo2 }, be4 = new Array(10);\n be4[1] = function() {\n var r = this.offset + this.relativeOffset, t = this.parseUShort();\n if (t === 1) return { posFormat: 1, coverage: this.parsePointer(b4.coverage), value: this.parseValueRecord() };\n if (t === 2) return { posFormat: 2, coverage: this.parsePointer(b4.coverage), values: this.parseValueRecordList() };\n G5.assert(false, "0x" + r.toString(16) + ": GPOS lookup type 1 format must be 1 or 2.");\n }, be4[2] = function() {\n var r = this.offset + this.relativeOffset, t = this.parseUShort(), n11 = this.parsePointer(b4.coverage), a2 = this.parseUShort(), i5 = this.parseUShort();\n if (t === 1) return { posFormat: t, coverage: n11, valueFormat1: a2, valueFormat2: i5, pairSets: this.parseList(b4.pointer(b4.list(function() {\n return { secondGlyph: this.parseUShort(), value1: this.parseValueRecord(a2), value2: this.parseValueRecord(i5) };\n }))) };\n if (t === 2) {\n var o2 = this.parsePointer(b4.classDef), l4 = this.parsePointer(b4.classDef), u3 = this.parseUShort(), c2 = this.parseUShort();\n return { posFormat: t, coverage: n11, valueFormat1: a2, valueFormat2: i5, classDef1: o2, classDef2: l4, class1Count: u3, class2Count: c2, classRecords: this.parseList(u3, b4.list(c2, function() {\n return { value1: this.parseValueRecord(a2), value2: this.parseValueRecord(i5) };\n })) };\n }\n G5.assert(false, "0x" + r.toString(16) + ": GPOS lookup type 2 format must be 1 or 2.");\n }, be4[3] = function() {\n return { error: "GPOS Lookup 3 not supported" };\n }, be4[4] = function() {\n return { error: "GPOS Lookup 4 not supported" };\n }, be4[5] = function() {\n return { error: "GPOS Lookup 5 not supported" };\n }, be4[6] = function() {\n return { error: "GPOS Lookup 6 not supported" };\n }, be4[7] = function() {\n return { error: "GPOS Lookup 7 not supported" };\n }, be4[8] = function() {\n return { error: "GPOS Lookup 8 not supported" };\n }, be4[9] = function() {\n return { error: "GPOS Lookup 9 not supported" };\n };\n function xo2(e, r) {\n r = r || 0;\n var t = new b4(e, r), n11 = t.parseVersion(1);\n return G5.argument(n11 === 1 || n11 === 1.1, "Unsupported GPOS table version " + n11), n11 === 1 ? { version: n11, scripts: t.parseScriptList(), features: t.parseFeatureList(), lookups: t.parseLookupList(be4) } : { version: n11, scripts: t.parseScriptList(), features: t.parseFeatureList(), lookups: t.parseLookupList(be4), variations: t.parseFeatureVariationsList() };\n }\n var So2 = new Array(10);\n function To2(e) {\n return new A4.Table("GPOS", [{ name: "version", type: "ULONG", value: 65536 }, { name: "scripts", type: "TABLE", value: new A4.ScriptList(e.scripts) }, { name: "features", type: "TABLE", value: new A4.FeatureList(e.features) }, { name: "lookups", type: "TABLE", value: new A4.LookupList(e.lookups, So2) }]);\n }\n var ko2 = { parse: xo2, make: To2 };\n function Fo2(e) {\n var r = {};\n e.skip("uShort");\n var t = e.parseUShort();\n G5.argument(t === 0, "Unsupported kern sub-table version."), e.skip("uShort", 2);\n var n11 = e.parseUShort();\n e.skip("uShort", 3);\n for (var a2 = 0; a2 < n11; a2 += 1) {\n var i5 = e.parseUShort(), o2 = e.parseUShort(), l4 = e.parseShort();\n r[i5 + "," + o2] = l4;\n }\n return r;\n }\n function Lo2(e) {\n var r = {};\n e.skip("uShort");\n var t = e.parseULong();\n t > 1 && console.warn("Only the first kern subtable is supported."), e.skip("uLong");\n var n11 = e.parseUShort(), a2 = n11 & 255;\n if (e.skip("uShort"), a2 === 0) {\n var i5 = e.parseUShort();\n e.skip("uShort", 3);\n for (var o2 = 0; o2 < i5; o2 += 1) {\n var l4 = e.parseUShort(), u3 = e.parseUShort(), c2 = e.parseShort();\n r[l4 + "," + u3] = c2;\n }\n }\n return r;\n }\n function Eo2(e, r) {\n var t = new w6.Parser(e, r), n11 = t.parseUShort();\n if (n11 === 0) return Fo2(t);\n if (n11 === 1) return Lo2(t);\n throw new Error("Unsupported kern table version (" + n11 + ").");\n }\n var Uo2 = { parse: Eo2 };\n function Oo2(e, r, t, n11) {\n for (var a2 = new w6.Parser(e, r), i5 = n11 ? a2.parseUShort : a2.parseULong, o2 = [], l4 = 0; l4 < t + 1; l4 += 1) {\n var u3 = i5.call(a2);\n n11 && (u3 *= 2), o2.push(u3);\n }\n return o2;\n }\n var Io2 = { parse: Oo2 };\n function Co2(e, r) {\n var t = tt2("fs");\n t.readFile(e, function(n11, a2) {\n if (n11) return r(n11.message);\n r(null, gn2(a2));\n });\n }\n function wo2(e, r) {\n var t = new XMLHttpRequest();\n t.open("get", e, true), t.responseType = "arraybuffer", t.onload = function() {\n return t.response ? r(null, t.response) : r("Font could not be loaded: " + t.statusText);\n }, t.onerror = function() {\n r("Font could not be loaded");\n }, t.send();\n }\n function Nn2(e, r) {\n for (var t = [], n11 = 12, a2 = 0; a2 < r; a2 += 1) {\n var i5 = w6.getTag(e, n11), o2 = w6.getULong(e, n11 + 4), l4 = w6.getULong(e, n11 + 8), u3 = w6.getULong(e, n11 + 12);\n t.push({ tag: i5, checksum: o2, offset: l4, length: u3, compression: false }), n11 += 16;\n }\n return t;\n }\n function Ro2(e, r) {\n for (var t = [], n11 = 44, a2 = 0; a2 < r; a2 += 1) {\n var i5 = w6.getTag(e, n11), o2 = w6.getULong(e, n11 + 4), l4 = w6.getULong(e, n11 + 8), u3 = w6.getULong(e, n11 + 12), c2 = void 0;\n l4 < u3 ? c2 = "WOFF" : c2 = false, t.push({ tag: i5, offset: o2, compression: c2, compressedLength: l4, length: u3 }), n11 += 20;\n }\n return t;\n }\n function Q3(e, r) {\n if (r.compression === "WOFF") {\n var t = new Uint8Array(e.buffer, r.offset + 2, r.compressedLength - 2), n11 = new Uint8Array(r.length);\n if (pa(t, n11), n11.byteLength !== r.length) throw new Error("Decompression error: " + r.tag + " decompressed length doesn\'t match recorded length");\n var a2 = new DataView(n11.buffer, 0);\n return { data: a2, offset: 0 };\n } else return { data: e, offset: r.offset };\n }\n function $r2(e) {\n var r, t, n11 = new z4({ empty: true }), a2 = new DataView(e, 0), i5, o2 = [], l4 = w6.getTag(a2, 0);\n if (l4 === "\\0\u0001\\0\\0" || l4 === "true" || l4 === "typ1") n11.outlinesFormat = "truetype", i5 = w6.getUShort(a2, 4), o2 = Nn2(a2, i5);\n else if (l4 === "OTTO") n11.outlinesFormat = "cff", i5 = w6.getUShort(a2, 4), o2 = Nn2(a2, i5);\n else if (l4 === "wOFF") {\n var u3 = w6.getTag(a2, 4);\n if (u3 === "\\0\u0001\\0\\0") n11.outlinesFormat = "truetype";\n else if (u3 === "OTTO") n11.outlinesFormat = "cff";\n else throw new Error("Unsupported OpenType flavor " + l4);\n i5 = w6.getUShort(a2, 12), o2 = Ro2(a2, i5);\n } else throw new Error("Unsupported OpenType signature " + l4);\n for (var c2, d3, y5, g6, m4, T4, O4, F4, U6, P5, I4, H5 = 0; H5 < i5; H5 += 1) {\n var R4 = o2[H5], B5 = void 0;\n switch (R4.tag) {\n case "cmap":\n B5 = Q3(a2, R4), n11.tables.cmap = It3.parse(B5.data, B5.offset), n11.encoding = new wt2(n11.tables.cmap);\n break;\n case "cvt ":\n B5 = Q3(a2, R4), I4 = new w6.Parser(B5.data, B5.offset), n11.tables.cvt = I4.parseShortList(R4.length / 2);\n break;\n case "fvar":\n d3 = R4;\n break;\n case "fpgm":\n B5 = Q3(a2, R4), I4 = new w6.Parser(B5.data, B5.offset), n11.tables.fpgm = I4.parseByteList(R4.length);\n break;\n case "head":\n B5 = Q3(a2, R4), n11.tables.head = Yt3.parse(B5.data, B5.offset), n11.unitsPerEm = n11.tables.head.unitsPerEm, r = n11.tables.head.indexToLocFormat;\n break;\n case "hhea":\n B5 = Q3(a2, R4), n11.tables.hhea = Zt3.parse(B5.data, B5.offset), n11.ascender = n11.tables.hhea.ascender, n11.descender = n11.tables.hhea.descender, n11.numberOfHMetrics = n11.tables.hhea.numberOfHMetrics;\n break;\n case "hmtx":\n T4 = R4;\n break;\n case "ltag":\n B5 = Q3(a2, R4), t = Jt2.parse(B5.data, B5.offset);\n break;\n case "maxp":\n B5 = Q3(a2, R4), n11.tables.maxp = Kt2.parse(B5.data, B5.offset), n11.numGlyphs = n11.tables.maxp.numGlyphs;\n break;\n case "name":\n U6 = R4;\n break;\n case "OS/2":\n B5 = Q3(a2, R4), n11.tables.os2 = Xr2.parse(B5.data, B5.offset);\n break;\n case "post":\n B5 = Q3(a2, R4), n11.tables.post = sn2.parse(B5.data, B5.offset), n11.glyphNames = new Nr(n11.tables.post);\n break;\n case "prep":\n B5 = Q3(a2, R4), I4 = new w6.Parser(B5.data, B5.offset), n11.tables.prep = I4.parseByteList(R4.length);\n break;\n case "glyf":\n y5 = R4;\n break;\n case "loca":\n F4 = R4;\n break;\n case "CFF ":\n c2 = R4;\n break;\n case "kern":\n O4 = R4;\n break;\n case "GPOS":\n g6 = R4;\n break;\n case "GSUB":\n m4 = R4;\n break;\n case "meta":\n P5 = R4;\n break;\n }\n }\n var ue2 = Q3(a2, U6);\n if (n11.tables.name = an2.parse(ue2.data, ue2.offset, t), n11.names = n11.tables.name, y5 && F4) {\n var q3 = r === 0, K4 = Q3(a2, F4), se3 = Io2.parse(K4.data, K4.offset, n11.numGlyphs, q3), le3 = Q3(a2, y5);\n n11.glyphs = At3.parse(le3.data, le3.offset, se3, n11);\n } else if (c2) {\n var pe2 = Q3(a2, c2);\n Xt3.parse(pe2.data, pe2.offset, n11);\n } else throw new Error("Font doesn\'t contain TrueType or CFF outlines.");\n var de3 = Q3(a2, T4);\n if (Qt3.parse(de3.data, de3.offset, n11.numberOfHMetrics, n11.numGlyphs, n11.glyphs), Ca(n11), O4) {\n var J5 = Q3(a2, O4);\n n11.kerningPairs = Uo2.parse(J5.data, J5.offset);\n } else n11.kerningPairs = {};\n if (g6) {\n var j5 = Q3(a2, g6);\n n11.tables.gpos = ko2.parse(j5.data, j5.offset);\n }\n if (m4) {\n var re3 = Q3(a2, m4);\n n11.tables.gsub = on2.parse(re3.data, re3.offset);\n }\n if (d3) {\n var te3 = Q3(a2, d3);\n n11.tables.fvar = bo.parse(te3.data, te3.offset, n11.names);\n }\n if (P5) {\n var ne3 = Q3(a2, P5);\n n11.tables.meta = un2.parse(ne3.data, ne3.offset), n11.metas = n11.tables.meta;\n }\n return n11;\n }\n function Do2(e, r) {\n var t = typeof window > "u", n11 = t ? Co2 : wo2;\n n11(e, function(a2, i5) {\n if (a2) return r(a2);\n var o2;\n try {\n o2 = $r2(i5);\n } catch (l4) {\n return r(l4, null);\n }\n return r(null, o2);\n });\n }\n function Ao2(e) {\n var r = tt2("fs"), t = r.readFileSync(e);\n return $r2(gn2(t));\n }\n s4.Font = z4, s4.Glyph = fe3, s4.Path = Z5, s4.BoundingBox = ke3, s4._parse = w6, s4.parse = $r2, s4.load = Do2, s4.loadSync = Ao2, Object.defineProperty(s4, "__esModule", { value: true });\n }));\n });\n var Zn = Ur((Au, Yn2) => {\n "use strict";\n Yn2.exports = function(s4) {\n s4.prototype[Symbol.iterator] = function* () {\n for (let f5 = this.head; f5; f5 = f5.next) yield f5.value;\n };\n };\n });\n var Jn = Ur((Mu, Qn) => {\n "use strict";\n Qn.exports = _5;\n _5.Node = He3;\n _5.create = _5;\n function _5(s4) {\n var f5 = this;\n if (f5 instanceof _5 || (f5 = new _5()), f5.tail = null, f5.head = null, f5.length = 0, s4 && typeof s4.forEach == "function") s4.forEach(function(v6) {\n f5.push(v6);\n });\n else if (arguments.length > 0) for (var p3 = 0, h3 = arguments.length; p3 < h3; p3++) f5.push(arguments[p3]);\n return f5;\n }\n _5.prototype.removeNode = function(s4) {\n if (s4.list !== this) throw new Error("removing node which does not belong to this list");\n var f5 = s4.next, p3 = s4.prev;\n return f5 && (f5.prev = p3), p3 && (p3.next = f5), s4 === this.head && (this.head = f5), s4 === this.tail && (this.tail = p3), s4.list.length--, s4.next = null, s4.prev = null, s4.list = null, f5;\n };\n _5.prototype.unshiftNode = function(s4) {\n if (s4 !== this.head) {\n s4.list && s4.list.removeNode(s4);\n var f5 = this.head;\n s4.list = this, s4.next = f5, f5 && (f5.prev = s4), this.head = s4, this.tail || (this.tail = s4), this.length++;\n }\n };\n _5.prototype.pushNode = function(s4) {\n if (s4 !== this.tail) {\n s4.list && s4.list.removeNode(s4);\n var f5 = this.tail;\n s4.list = this, s4.prev = f5, f5 && (f5.next = s4), this.tail = s4, this.head || (this.head = s4), this.length++;\n }\n };\n _5.prototype.push = function() {\n for (var s4 = 0, f5 = arguments.length; s4 < f5; s4++) Jo(this, arguments[s4]);\n return this.length;\n };\n _5.prototype.unshift = function() {\n for (var s4 = 0, f5 = arguments.length; s4 < f5; s4++) Ko2(this, arguments[s4]);\n return this.length;\n };\n _5.prototype.pop = function() {\n if (this.tail) {\n var s4 = this.tail.value;\n return this.tail = this.tail.prev, this.tail ? this.tail.next = null : this.head = null, this.length--, s4;\n }\n };\n _5.prototype.shift = function() {\n if (this.head) {\n var s4 = this.head.value;\n return this.head = this.head.next, this.head ? this.head.prev = null : this.tail = null, this.length--, s4;\n }\n };\n _5.prototype.forEach = function(s4, f5) {\n f5 = f5 || this;\n for (var p3 = this.head, h3 = 0; p3 !== null; h3++) s4.call(f5, p3.value, h3, this), p3 = p3.next;\n };\n _5.prototype.forEachReverse = function(s4, f5) {\n f5 = f5 || this;\n for (var p3 = this.tail, h3 = this.length - 1; p3 !== null; h3--) s4.call(f5, p3.value, h3, this), p3 = p3.prev;\n };\n _5.prototype.get = function(s4) {\n for (var f5 = 0, p3 = this.head; p3 !== null && f5 < s4; f5++) p3 = p3.next;\n if (f5 === s4 && p3 !== null) return p3.value;\n };\n _5.prototype.getReverse = function(s4) {\n for (var f5 = 0, p3 = this.tail; p3 !== null && f5 < s4; f5++) p3 = p3.prev;\n if (f5 === s4 && p3 !== null) return p3.value;\n };\n _5.prototype.map = function(s4, f5) {\n f5 = f5 || this;\n for (var p3 = new _5(), h3 = this.head; h3 !== null; ) p3.push(s4.call(f5, h3.value, this)), h3 = h3.next;\n return p3;\n };\n _5.prototype.mapReverse = function(s4, f5) {\n f5 = f5 || this;\n for (var p3 = new _5(), h3 = this.tail; h3 !== null; ) p3.push(s4.call(f5, h3.value, this)), h3 = h3.prev;\n return p3;\n };\n _5.prototype.reduce = function(s4, f5) {\n var p3, h3 = this.head;\n if (arguments.length > 1) p3 = f5;\n else if (this.head) h3 = this.head.next, p3 = this.head.value;\n else throw new TypeError("Reduce of empty list with no initial value");\n for (var v6 = 0; h3 !== null; v6++) p3 = s4(p3, h3.value, v6), h3 = h3.next;\n return p3;\n };\n _5.prototype.reduceReverse = function(s4, f5) {\n var p3, h3 = this.tail;\n if (arguments.length > 1) p3 = f5;\n else if (this.tail) h3 = this.tail.prev, p3 = this.tail.value;\n else throw new TypeError("Reduce of empty list with no initial value");\n for (var v6 = this.length - 1; h3 !== null; v6--) p3 = s4(p3, h3.value, v6), h3 = h3.prev;\n return p3;\n };\n _5.prototype.toArray = function() {\n for (var s4 = new Array(this.length), f5 = 0, p3 = this.head; p3 !== null; f5++) s4[f5] = p3.value, p3 = p3.next;\n return s4;\n };\n _5.prototype.toArrayReverse = function() {\n for (var s4 = new Array(this.length), f5 = 0, p3 = this.tail; p3 !== null; f5++) s4[f5] = p3.value, p3 = p3.prev;\n return s4;\n };\n _5.prototype.slice = function(s4, f5) {\n f5 = f5 || this.length, f5 < 0 && (f5 += this.length), s4 = s4 || 0, s4 < 0 && (s4 += this.length);\n var p3 = new _5();\n if (f5 < s4 || f5 < 0) return p3;\n s4 < 0 && (s4 = 0), f5 > this.length && (f5 = this.length);\n for (var h3 = 0, v6 = this.head; v6 !== null && h3 < s4; h3++) v6 = v6.next;\n for (; v6 !== null && h3 < f5; h3++, v6 = v6.next) p3.push(v6.value);\n return p3;\n };\n _5.prototype.sliceReverse = function(s4, f5) {\n f5 = f5 || this.length, f5 < 0 && (f5 += this.length), s4 = s4 || 0, s4 < 0 && (s4 += this.length);\n var p3 = new _5();\n if (f5 < s4 || f5 < 0) return p3;\n s4 < 0 && (s4 = 0), f5 > this.length && (f5 = this.length);\n for (var h3 = this.length, v6 = this.tail; v6 !== null && h3 > f5; h3--) v6 = v6.prev;\n for (; v6 !== null && h3 > s4; h3--, v6 = v6.prev) p3.push(v6.value);\n return p3;\n };\n _5.prototype.splice = function(s4, f5, ...p3) {\n s4 > this.length && (s4 = this.length - 1), s4 < 0 && (s4 = this.length + s4);\n for (var h3 = 0, v6 = this.head; v6 !== null && h3 < s4; h3++) v6 = v6.next;\n for (var x5 = [], h3 = 0; v6 && h3 < f5; h3++) x5.push(v6.value), v6 = this.removeNode(v6);\n v6 === null && (v6 = this.tail), v6 !== this.head && v6 !== this.tail && (v6 = v6.prev);\n for (var h3 = 0; h3 < p3.length; h3++) v6 = Qo(this, v6, p3[h3]);\n return x5;\n };\n _5.prototype.reverse = function() {\n for (var s4 = this.head, f5 = this.tail, p3 = s4; p3 !== null; p3 = p3.prev) {\n var h3 = p3.prev;\n p3.prev = p3.next, p3.next = h3;\n }\n return this.head = f5, this.tail = s4, this;\n };\n function Qo(s4, f5, p3) {\n var h3 = f5 === s4.head ? new He3(p3, null, f5, s4) : new He3(p3, f5, f5.next, s4);\n return h3.next === null && (s4.tail = h3), h3.prev === null && (s4.head = h3), s4.length++, h3;\n }\n function Jo(s4, f5) {\n s4.tail = new He3(f5, s4.tail, null, s4), s4.head || (s4.head = s4.tail), s4.length++;\n }\n function Ko2(s4, f5) {\n s4.head = new He3(f5, null, s4.head, s4), s4.tail || (s4.tail = s4.head), s4.length++;\n }\n function He3(s4, f5, p3, h3) {\n if (!(this instanceof He3)) return new He3(s4, f5, p3, h3);\n this.list = h3, this.value = s4, f5 ? (f5.next = this, this.prev = f5) : this.prev = null, p3 ? (p3.prev = this, this.next = p3) : this.next = null;\n }\n try {\n Zn()(_5);\n } catch {\n }\n });\n var ra = Ur((Bu, ea) => {\n "use strict";\n var jo = Jn(), _e3 = /* @__PURE__ */ Symbol("max"), Ue4 = /* @__PURE__ */ Symbol("length"), Je4 = /* @__PURE__ */ Symbol("lengthCalculator"), ur2 = /* @__PURE__ */ Symbol("allowStale"), ze4 = /* @__PURE__ */ Symbol("maxAge"), Ee2 = /* @__PURE__ */ Symbol("dispose"), Kn2 = /* @__PURE__ */ Symbol("noDisposeOnSet"), $4 = /* @__PURE__ */ Symbol("lruList"), xe2 = /* @__PURE__ */ Symbol("cache"), $n2 = /* @__PURE__ */ Symbol("updateAgeOnGet"), ht3 = () => 1, vt3 = class {\n constructor(f5) {\n if (typeof f5 == "number" && (f5 = { max: f5 }), f5 || (f5 = {}), f5.max && (typeof f5.max != "number" || f5.max < 0)) throw new TypeError("max must be a non-negative number");\n let p3 = this[_e3] = f5.max || 1 / 0, h3 = f5.length || ht3;\n if (this[Je4] = typeof h3 != "function" ? ht3 : h3, this[ur2] = f5.stale || false, f5.maxAge && typeof f5.maxAge != "number") throw new TypeError("maxAge must be a number");\n this[ze4] = f5.maxAge || 0, this[Ee2] = f5.dispose, this[Kn2] = f5.noDisposeOnSet || false, this[$n2] = f5.updateAgeOnGet || false, this.reset();\n }\n set max(f5) {\n if (typeof f5 != "number" || f5 < 0) throw new TypeError("max must be a non-negative number");\n this[_e3] = f5 || 1 / 0, or3(this);\n }\n get max() {\n return this[_e3];\n }\n set allowStale(f5) {\n this[ur2] = !!f5;\n }\n get allowStale() {\n return this[ur2];\n }\n set maxAge(f5) {\n if (typeof f5 != "number") throw new TypeError("maxAge must be a non-negative number");\n this[ze4] = f5, or3(this);\n }\n get maxAge() {\n return this[ze4];\n }\n set lengthCalculator(f5) {\n typeof f5 != "function" && (f5 = ht3), f5 !== this[Je4] && (this[Je4] = f5, this[Ue4] = 0, this[$4].forEach((p3) => {\n p3.length = this[Je4](p3.value, p3.key), this[Ue4] += p3.length;\n })), or3(this);\n }\n get lengthCalculator() {\n return this[Je4];\n }\n get length() {\n return this[Ue4];\n }\n get itemCount() {\n return this[$4].length;\n }\n rforEach(f5, p3) {\n p3 = p3 || this;\n for (let h3 = this[$4].tail; h3 !== null; ) {\n let v6 = h3.prev;\n jn2(this, f5, h3, p3), h3 = v6;\n }\n }\n forEach(f5, p3) {\n p3 = p3 || this;\n for (let h3 = this[$4].head; h3 !== null; ) {\n let v6 = h3.next;\n jn2(this, f5, h3, p3), h3 = v6;\n }\n }\n keys() {\n return this[$4].toArray().map((f5) => f5.key);\n }\n values() {\n return this[$4].toArray().map((f5) => f5.value);\n }\n reset() {\n this[Ee2] && this[$4] && this[$4].length && this[$4].forEach((f5) => this[Ee2](f5.key, f5.value)), this[xe2] = /* @__PURE__ */ new Map(), this[$4] = new jo(), this[Ue4] = 0;\n }\n dump() {\n return this[$4].map((f5) => Rr2(this, f5) ? false : { k: f5.key, v: f5.value, e: f5.now + (f5.maxAge || 0) }).toArray().filter((f5) => f5);\n }\n dumpLru() {\n return this[$4];\n }\n set(f5, p3, h3) {\n if (h3 = h3 || this[ze4], h3 && typeof h3 != "number") throw new TypeError("maxAge must be a number");\n let v6 = h3 ? Date.now() : 0, x5 = this[Je4](p3, f5);\n if (this[xe2].has(f5)) {\n if (x5 > this[_e3]) return Ke4(this, this[xe2].get(f5)), false;\n let k5 = this[xe2].get(f5).value;\n return this[Ee2] && (this[Kn2] || this[Ee2](f5, k5.value)), k5.now = v6, k5.maxAge = h3, k5.value = p3, this[Ue4] += x5 - k5.length, k5.length = x5, this.get(f5), or3(this), true;\n }\n let S4 = new dt3(f5, p3, x5, v6, h3);\n return S4.length > this[_e3] ? (this[Ee2] && this[Ee2](f5, p3), false) : (this[Ue4] += S4.length, this[$4].unshift(S4), this[xe2].set(f5, this[$4].head), or3(this), true);\n }\n has(f5) {\n if (!this[xe2].has(f5)) return false;\n let p3 = this[xe2].get(f5).value;\n return !Rr2(this, p3);\n }\n get(f5) {\n return ct4(this, f5, true);\n }\n peek(f5) {\n return ct4(this, f5, false);\n }\n pop() {\n let f5 = this[$4].tail;\n return f5 ? (Ke4(this, f5), f5.value) : null;\n }\n del(f5) {\n Ke4(this, this[xe2].get(f5));\n }\n load(f5) {\n this.reset();\n let p3 = Date.now();\n for (let h3 = f5.length - 1; h3 >= 0; h3--) {\n let v6 = f5[h3], x5 = v6.e || 0;\n if (x5 === 0) this.set(v6.k, v6.v);\n else {\n let S4 = x5 - p3;\n S4 > 0 && this.set(v6.k, v6.v, S4);\n }\n }\n }\n prune() {\n this[xe2].forEach((f5, p3) => ct4(this, p3, false));\n }\n }, ct4 = (s4, f5, p3) => {\n let h3 = s4[xe2].get(f5);\n if (h3) {\n let v6 = h3.value;\n if (Rr2(s4, v6)) {\n if (Ke4(s4, h3), !s4[ur2]) return;\n } else p3 && (s4[$n2] && (h3.value.now = Date.now()), s4[$4].unshiftNode(h3));\n return v6.value;\n }\n }, Rr2 = (s4, f5) => {\n if (!f5 || !f5.maxAge && !s4[ze4]) return false;\n let p3 = Date.now() - f5.now;\n return f5.maxAge ? p3 > f5.maxAge : s4[ze4] && p3 > s4[ze4];\n }, or3 = (s4) => {\n if (s4[Ue4] > s4[_e3]) for (let f5 = s4[$4].tail; s4[Ue4] > s4[_e3] && f5 !== null; ) {\n let p3 = f5.prev;\n Ke4(s4, f5), f5 = p3;\n }\n }, Ke4 = (s4, f5) => {\n if (f5) {\n let p3 = f5.value;\n s4[Ee2] && s4[Ee2](p3.key, p3.value), s4[Ue4] -= p3.length, s4[xe2].delete(p3.key), s4[$4].removeNode(f5);\n }\n }, dt3 = class {\n constructor(f5, p3, h3, v6, x5) {\n this.key = f5, this.value = p3, this.length = h3, this.now = v6, this.maxAge = x5 || 0;\n }\n }, jn2 = (s4, f5, p3, h3) => {\n let v6 = p3.value;\n Rr2(s4, v6) && (Ke4(s4, p3), s4[ur2] || (v6 = void 0)), v6 && f5.call(h3, v6.value, v6.key, s4);\n };\n ea.exports = vt3;\n });\n var ta = Wo(Wn());\n function ar(s4) {\n let f5 = { individual: {}, range: [] }, p3 = /* @__PURE__ */ new WeakMap();\n for (let h3 of s4) at3(f5, h3, p3);\n return f5;\n }\n function at3(s4, f5, p3) {\n for (let [h3, v6] of Object.entries(f5.individual)) if (s4.individual[h3]) Ze3(s4.individual[h3], v6, p3);\n else {\n let x5 = false;\n for (let [S4, { range: L6, entry: k5 }] of s4.range.entries()) {\n let D7 = nt3(Number(h3), L6);\n if (D7.both !== null) {\n x5 = true, s4.individual[h3] = v6, Ze3(s4.individual[h3], ie3(k5), p3), s4.range.splice(S4, 1);\n for (let V5 of D7.second) Array.isArray(V5) ? s4.range.push({ range: V5, entry: ie3(k5) }) : s4.individual[V5] = ie3(k5);\n }\n }\n x5 || (s4.individual[h3] = v6);\n }\n for (let { range: h3, entry: v6 } of f5.range) {\n let x5 = [h3];\n for (let S4 = 0; S4 < s4.range.length; S4++) {\n let { range: L6, entry: k5 } = s4.range[S4];\n for (let [D7, V5] of x5.entries()) if (Array.isArray(V5)) {\n let N3 = Vo(V5, L6);\n if (N3.both === null) continue;\n s4.range.splice(S4, 1), S4--;\n let W6 = ie3(k5);\n Array.isArray(N3.both) ? s4.range.push({ range: N3.both, entry: W6 }) : s4.individual[N3.both] = W6, Ze3(W6, ie3(v6), p3);\n for (let X3 of N3.second) Array.isArray(X3) ? s4.range.push({ range: X3, entry: ie3(k5) }) : s4.individual[X3] = ie3(k5);\n x5 = N3.first;\n } else {\n let N3 = nt3(V5, L6);\n if (N3.both === null) continue;\n s4.individual[V5] = ie3(v6), Ze3(s4.individual[V5], ie3(k5), p3), s4.range.splice(S4, 1), S4--;\n for (let W6 of N3.second) Array.isArray(W6) ? s4.range.push({ range: W6, entry: ie3(k5) }) : s4.individual[W6] = ie3(k5);\n x5.splice(D7, 1, ...N3.first);\n break;\n }\n }\n for (let S4 of Object.keys(s4.individual)) for (let [L6, k5] of x5.entries()) if (Array.isArray(k5)) {\n let D7 = nt3(Number(S4), k5);\n if (D7.both === null) continue;\n Ze3(s4.individual[S4], ie3(v6), p3), x5.splice(L6, 1, ...D7.second);\n break;\n } else if (Number(S4) === k5) {\n Ze3(s4.individual[S4], ie3(v6), p3);\n break;\n }\n for (let S4 of x5) Array.isArray(S4) ? s4.range.push({ range: S4, entry: ie3(v6) }) : s4.individual[S4] = ie3(v6);\n }\n }\n function Ze3(s4, f5, p3) {\n let h3 = p3.get(s4);\n h3?.has(f5) || (h3 || (h3 = /* @__PURE__ */ new Set(), p3.set(s4, h3)), h3.add(f5), f5.lookup && (!s4.lookup || s4.lookup.index > f5.lookup.index || s4.lookup.index === f5.lookup.index && s4.lookup.subIndex > f5.lookup.subIndex) && (s4.lookup = f5.lookup), f5.forward && (s4.forward ? at3(s4.forward, f5.forward, p3) : s4.forward = f5.forward), f5.reverse && (s4.reverse ? at3(s4.reverse, f5.reverse, p3) : s4.reverse = f5.reverse));\n }\n function Vo(s4, f5) {\n let p3 = { first: [], second: [], both: null };\n if (s4[0] < f5[1] && f5[0] < s4[1]) {\n let h3 = Math.max(s4[0], f5[0]), v6 = Math.min(s4[1], f5[1]);\n p3.both = Ge3(h3, v6);\n }\n if (s4[0] < f5[0]) {\n let h3 = s4[0], v6 = Math.min(f5[0], s4[1]);\n p3.first.push(Ge3(h3, v6));\n } else if (f5[0] < s4[0]) {\n let h3 = f5[0], v6 = Math.min(f5[1], s4[0]);\n p3.second.push(Ge3(h3, v6));\n }\n if (s4[1] > f5[1]) {\n let h3 = Math.max(s4[0], f5[1]), v6 = s4[1];\n p3.first.push(Ge3(h3, v6));\n } else if (f5[1] > s4[1]) {\n let h3 = Math.max(s4[1], f5[0]), v6 = f5[1];\n p3.second.push(Ge3(h3, v6));\n }\n return p3;\n }\n function nt3(s4, f5) {\n if (s4 < f5[0] || s4 > f5[1]) return { first: [s4], second: [f5], both: null };\n let p3 = { first: [], second: [], both: s4 };\n return f5[0] < s4 && p3.second.push(Ge3(f5[0], s4)), f5[1] > s4 && p3.second.push(Ge3(s4 + 1, f5[1])), p3;\n }\n function Ge3(s4, f5) {\n return f5 - s4 === 1 ? s4 : [s4, f5];\n }\n function ie3(s4, f5 = /* @__PURE__ */ new Map()) {\n if (f5.has(s4)) return f5.get(s4);\n let p3 = {};\n return f5.set(s4, p3), s4.forward && (p3.forward = Vn(s4.forward, f5)), s4.reverse && (p3.reverse = Vn(s4.reverse, f5)), s4.lookup && (p3.lookup = { contextRange: s4.lookup.contextRange.slice(), index: s4.lookup.index, length: s4.lookup.length, subIndex: s4.lookup.subIndex, substitutions: s4.lookup.substitutions.slice() }), p3;\n }\n function Vn(s4, f5 = /* @__PURE__ */ new Map()) {\n let p3 = {};\n for (let [h3, v6] of Object.entries(s4.individual)) p3[h3] = ie3(v6, f5);\n return { individual: p3, range: s4.range.map(({ range: h3, entry: v6 }) => ({ range: h3.slice(), entry: ie3(v6, f5) })) };\n }\n function ir(s4, f5, p3, h3) {\n let v6 = f5[h3], x5 = s4[v6];\n if (!x5) return;\n let S4 = x5.lookup;\n if (x5.reverse) {\n let k5 = qo(x5.reverse, f5, p3);\n (!S4 && k5 || k5 && S4 && (S4.index > k5.index || S4.index === k5.index && S4.subIndex > k5.subIndex)) && (S4 = k5);\n }\n if (++h3 >= f5.length || !x5.forward) return S4;\n let L6 = ir(x5.forward, f5, p3, h3);\n return (!S4 && L6 || L6 && S4 && (S4.index > L6.index || S4.index === L6.index && S4.subIndex > L6.subIndex)) && (S4 = L6), S4;\n }\n function qo(s4, f5, p3) {\n let h3 = s4[f5[--p3]], v6 = h3 && h3.lookup;\n for (; h3 && ((!v6 && h3.lookup || h3.lookup && v6 && v6.index > h3.lookup.index) && (v6 = h3.lookup), !(--p3 < 0 || !h3.reverse)); ) h3 = h3.reverse[f5[p3]];\n return v6;\n }\n function Ir(s4, f5, p3) {\n let h3 = false;\n for (let v6 = 0; v6 < s4.length; v6++) {\n let x5 = s4[v6];\n if (h3) {\n if (p3 <= x5[0]) return s4[v6 - 1][1] = p3, s4;\n if (p3 <= x5[1]) return s4[v6 - 1][1] = Math.max(p3, x5[1]), s4.splice(v6, 1), h3 = false, s4;\n s4.splice(v6, 1), v6--;\n } else {\n if (p3 <= x5[0]) return s4.splice(v6, 0, [f5, p3]), s4;\n if (p3 <= x5[1]) return x5[0] = Math.min(f5, x5[0]), s4;\n if (f5 < x5[1]) x5[0] = Math.min(f5, x5[0]), h3 = true;\n else continue;\n }\n }\n return h3 ? s4[s4.length - 1][1] = p3 : s4.push([f5, p3]), s4;\n }\n function it3(s4, f5) {\n switch (s4.format) {\n case 1:\n let p3 = s4.glyphs.indexOf(f5);\n return p3 !== -1 ? p3 : null;\n case 2:\n let h3 = s4.ranges.find((v6) => v6.start <= f5 && v6.end >= f5);\n return h3 ? h3.index : null;\n }\n }\n function ce3(s4) {\n switch (s4.format) {\n case 1:\n return s4.glyphs.map((p3, h3) => ({ glyphId: p3, index: h3 }));\n case 2:\n let f5 = [];\n for (let [p3, h3] of s4.ranges.entries()) h3.end === h3.start ? f5.push({ glyphId: h3.start, index: p3 }) : f5.push({ glyphId: [h3.start, h3.end + 1], index: p3 });\n return f5;\n }\n }\n function qn(s4, f5) {\n let p3 = f5[0], h3 = Cr(s4, p3), v6 = f5[0] + 1, x5 = /* @__PURE__ */ new Map();\n for (; v6 < f5[1]; ) Cr(s4, v6) !== h3 && (v6 - p3 <= 1 ? x5.set(p3, h3) : x5.set([p3, v6], h3)), v6++;\n return v6 - p3 <= 1 ? x5.set(p3, h3) : x5.set([p3, v6], h3), x5;\n }\n function Cr(s4, f5) {\n let p3 = it3(s4.coverage, f5);\n if (p3 === null) return null;\n switch (s4.substFormat) {\n case 1:\n return (f5 + s4.deltaGlyphId) % 2 ** 16;\n case 2:\n return s4.substitute[p3] ?? null;\n }\n }\n function Qe2(s4, f5, p3, h3, v6) {\n let x5 = [];\n for (let S4 of p3) {\n S4.entry.forward = { individual: {}, range: [] };\n for (let L6 of s4) x5.push(...Ne2(S4.entry.forward, h3, v6, f5, L6).map(({ entry: k5, substitution: D7 }) => ({ entry: k5, substitutions: [...S4.substitutions, D7] })));\n }\n return x5;\n }\n function Re3(s4, f5) {\n let p3 = [], h3 = /* @__PURE__ */ new Set();\n for (let v6 of f5) {\n if (h3.has(v6.entry)) continue;\n h3.add(v6.entry), v6.entry.forward ??= { individual: {}, range: [] };\n let x5 = {};\n for (let S4 of s4) Array.isArray(S4) ? v6.entry.forward.range.push({ entry: x5, range: S4 }) : v6.entry.forward.individual[S4] = x5;\n p3.push({ entry: x5, substitutions: v6.substitutions });\n }\n return p3;\n }\n function De3(s4, f5) {\n let p3 = [], h3 = /* @__PURE__ */ new Set();\n for (let v6 of f5) {\n if (h3.has(v6.entry)) continue;\n h3.add(v6.entry), v6.entry.reverse ??= { individual: {}, range: [] };\n let x5 = {};\n for (let S4 of s4) Array.isArray(S4) ? v6.entry.reverse.range.push({ entry: x5, range: S4 }) : v6.entry.reverse.individual[S4] = x5;\n p3.push({ entry: x5, substitutions: v6.substitutions });\n }\n return p3;\n }\n function Ne2(s4, f5, p3, h3, v6) {\n let x5 = [];\n if (!Array.isArray(v6)) s4.individual[v6] = {}, x5.push({ entry: s4.individual[v6], substitution: Yo(f5, p3, h3, v6) });\n else {\n let S4 = Xo(f5, p3, h3, v6);\n for (let [L6, k5] of S4) {\n let D7 = {};\n Array.isArray(L6) ? s4.range.push({ range: L6, entry: D7 }) : s4.individual[L6] = {}, x5.push({ entry: D7, substitution: k5 });\n }\n }\n return x5;\n }\n function Xo(s4, f5, p3, h3) {\n for (let v6 of s4.filter((x5) => x5.sequenceIndex === p3)) for (let x5 of f5[v6.lookupListIndex].subtables) {\n let S4 = qn(x5, h3);\n if (!Array.from(S4.values()).every((L6) => L6 !== null)) return S4;\n }\n return /* @__PURE__ */ new Map([[h3, null]]);\n }\n function Yo(s4, f5, p3, h3) {\n for (let v6 of s4.filter((x5) => x5.sequenceIndex === p3)) for (let x5 of f5[v6.lookupListIndex].subtables) {\n let S4 = Cr(x5, h3);\n if (S4 !== null) return S4;\n }\n return null;\n }\n function st3(s4, f5, p3) {\n let h3 = { individual: {}, range: [] }, v6 = ce3(s4.coverage);\n for (let { glyphId: x5, index: S4 } of v6) {\n let L6 = s4.chainRuleSets[S4];\n if (L6) for (let [k5, D7] of L6.entries()) {\n let V5 = Ne2(h3, D7.lookupRecords, f5, 0, x5).map(({ entry: N3, substitution: W6 }) => ({ entry: N3, substitutions: [W6] }));\n for (let [N3, W6] of D7.input.entries()) V5 = Qe2([W6], N3 + 1, V5, D7.lookupRecords, f5);\n for (let N3 of D7.lookahead) V5 = Re3([N3], V5);\n for (let N3 of D7.backtrack) V5 = De3([N3], V5);\n for (let { entry: N3, substitutions: W6 } of V5) N3.lookup = { substitutions: W6, length: D7.input.length + 1, index: p3, subIndex: k5, contextRange: [-1 * D7.backtrack.length, 1 + D7.input.length + D7.lookahead.length] };\n }\n }\n return h3;\n }\n function ut2(s4, f5) {\n switch (s4.format) {\n case 2:\n return Array.isArray(f5) ? Zo(s4, f5) : /* @__PURE__ */ new Map([[f5, ot3(s4, f5)]]);\n default:\n return /* @__PURE__ */ new Map([[f5, null]]);\n }\n }\n function Zo(s4, f5) {\n let p3 = f5[0], h3 = ot3(s4, p3), v6 = f5[0] + 1, x5 = /* @__PURE__ */ new Map();\n for (; v6 < f5[1]; ) ot3(s4, v6) !== h3 && (v6 - p3 <= 1 ? x5.set(p3, h3) : x5.set([p3, v6], h3)), v6++;\n return v6 - p3 <= 1 ? x5.set(p3, h3) : x5.set([p3, v6], h3), x5;\n }\n function ot3(s4, f5) {\n for (let p3 of s4.ranges) if (p3.start <= f5 && p3.end >= f5) return p3.classId;\n return null;\n }\n function wr(s4, f5) {\n switch (s4.format) {\n case 2:\n let p3 = [];\n for (let h3 of s4.ranges) h3.classId === f5 && (h3.end === h3.start ? p3.push(h3.start) : p3.push([h3.start, h3.end + 1]));\n return p3;\n default:\n return [];\n }\n }\n function lt2(s4, f5, p3) {\n let h3 = [], v6 = ce3(s4.coverage);\n for (let { glyphId: x5 } of v6) {\n let S4 = ut2(s4.inputClassDef, x5);\n for (let [L6, k5] of S4.entries()) {\n if (k5 === null) continue;\n let D7 = s4.chainClassSet[k5];\n if (D7) for (let [V5, N3] of D7.entries()) {\n let W6 = { individual: {}, range: [] }, X3 = Ne2(W6, N3.lookupRecords, f5, 0, L6).map(({ entry: ve3, substitution: Ae3 }) => ({ entry: ve3, substitutions: [Ae3] }));\n for (let [ve3, Ae3] of N3.input.entries()) X3 = Qe2(wr(s4.inputClassDef, Ae3), ve3 + 1, X3, N3.lookupRecords, f5);\n for (let ve3 of N3.lookahead) X3 = Re3(wr(s4.lookaheadClassDef, ve3), X3);\n for (let ve3 of N3.backtrack) X3 = De3(wr(s4.backtrackClassDef, ve3), X3);\n for (let { entry: ve3, substitutions: Ae3 } of X3) ve3.lookup = { substitutions: Ae3, index: p3, subIndex: V5, length: N3.input.length + 1, contextRange: [-1 * N3.backtrack.length, 1 + N3.input.length + N3.lookahead.length] };\n h3.push(W6);\n }\n }\n }\n return ar(h3);\n }\n function ft2(s4, f5, p3) {\n let h3 = { individual: {}, range: [] }, v6 = ce3(s4.inputCoverage[0]);\n for (let { glyphId: x5 } of v6) {\n let S4 = Ne2(h3, s4.lookupRecords, f5, 0, x5).map(({ entry: L6, substitution: k5 }) => ({ entry: L6, substitutions: [k5] }));\n for (let [L6, k5] of s4.inputCoverage.slice(1).entries()) S4 = Qe2(ce3(k5).map((D7) => D7.glyphId), L6 + 1, S4, s4.lookupRecords, f5);\n for (let L6 of s4.lookaheadCoverage) S4 = Re3(ce3(L6).map((k5) => k5.glyphId), S4);\n for (let L6 of s4.backtrackCoverage) S4 = De3(ce3(L6).map((k5) => k5.glyphId), S4);\n for (let { entry: L6, substitutions: k5 } of S4) L6.lookup = { substitutions: k5, index: p3, subIndex: 0, length: s4.inputCoverage.length, contextRange: [-1 * s4.backtrackCoverage.length, s4.inputCoverage.length + s4.lookaheadCoverage.length] };\n }\n return h3;\n }\n function pt2(s4, f5) {\n let p3 = { individual: {}, range: [] }, h3 = ce3(s4.coverage);\n for (let { glyphId: v6, index: x5 } of h3) {\n let S4 = {};\n Array.isArray(v6) ? p3.range.push({ entry: S4, range: v6 }) : p3.individual[v6] = S4;\n let L6 = [{ entry: S4, substitutions: [s4.substitutes[x5]] }];\n for (let k5 of s4.lookaheadCoverage) L6 = Re3(ce3(k5).map((D7) => D7.glyphId), L6);\n for (let k5 of s4.backtrackCoverage) L6 = De3(ce3(k5).map((D7) => D7.glyphId), L6);\n for (let { entry: k5, substitutions: D7 } of L6) k5.lookup = { substitutions: D7, index: f5, subIndex: 0, length: 1, contextRange: [-1 * s4.backtrackCoverage.length, 1 + s4.lookaheadCoverage.length] };\n }\n return p3;\n }\n function sr(s4, f5 = /* @__PURE__ */ new Map()) {\n let p3 = {};\n for (let [h3, v6] of Object.entries(s4.individual)) p3[h3] = Xn(v6, f5);\n for (let { range: h3, entry: v6 } of s4.range) {\n let x5 = Xn(v6, f5);\n for (let S4 = h3[0]; S4 < h3[1]; S4++) p3[S4] = x5;\n }\n return p3;\n }\n function Xn(s4, f5) {\n if (f5.has(s4)) return f5.get(s4);\n let p3 = {};\n return f5.set(s4, p3), s4.forward && (p3.forward = sr(s4.forward, f5)), s4.reverse && (p3.reverse = sr(s4.reverse, f5)), s4.lookup && (p3.lookup = s4.lookup), p3;\n }\n var $o = ra();\n var gt = class {\n constructor(f5, p3) {\n this._lookupTrees = [];\n this._glyphLookups = {};\n this._font = f5, p3.cacheSize > 0 && (this._cache = new $o({ max: p3.cacheSize, length: ((L6, k5) => k5.length) }));\n let v6 = (this._font.tables.gsub && this._font.tables.gsub.features.filter((L6) => L6.tag === "calt") || []).reduce((L6, k5) => [...L6, ...k5.feature.lookupListIndexes], []), x5 = this._font.tables.gsub && this._font.tables.gsub.lookups || [], S4 = x5.filter((L6, k5) => v6.some((D7) => D7 === k5));\n for (let [L6, k5] of S4.entries()) {\n let D7 = [];\n switch (k5.lookupType) {\n case 6:\n for (let [N3, W6] of k5.subtables.entries()) switch (W6.substFormat) {\n case 1:\n D7.push(st3(W6, x5, N3));\n break;\n case 2:\n D7.push(lt2(W6, x5, N3));\n break;\n case 3:\n D7.push(ft2(W6, x5, N3));\n break;\n }\n break;\n case 8:\n for (let [N3, W6] of k5.subtables.entries()) D7.push(pt2(W6, N3));\n break;\n }\n let V5 = sr(ar(D7));\n this._lookupTrees.push({ tree: V5, processForward: k5.lookupType !== 8 });\n for (let N3 of Object.keys(V5)) this._glyphLookups[N3] || (this._glyphLookups[N3] = []), this._glyphLookups[N3].push(L6);\n }\n }\n findLigatures(f5) {\n let p3 = this._cache && this._cache.get(f5);\n if (p3 && !Array.isArray(p3)) return p3;\n let h3 = [];\n for (let S4 of f5) h3.push(this._font.charToGlyphIndex(S4));\n if (this._lookupTrees.length === 0) return { inputGlyphs: h3, outputGlyphs: h3, contextRanges: [] };\n let v6 = this._findInternal(h3.slice()), x5 = { inputGlyphs: h3, outputGlyphs: v6.sequence, contextRanges: v6.ranges };\n return this._cache && this._cache.set(f5, x5), x5;\n }\n findLigatureRanges(f5) {\n if (this._lookupTrees.length === 0) return [];\n let p3 = this._cache && this._cache.get(f5);\n if (p3) return Array.isArray(p3) ? p3 : p3.contextRanges;\n let h3 = [];\n for (let x5 of f5) h3.push(this._font.charToGlyphIndex(x5));\n let v6 = this._findInternal(h3);\n return this._cache && this._cache.set(f5, v6.ranges), v6.ranges;\n }\n _findInternal(f5) {\n let p3 = [], h3 = this._getNextLookup(f5, 0);\n for (; h3.index !== null; ) {\n let v6 = this._lookupTrees[h3.index];\n if (v6.processForward) {\n let x5 = h3.last;\n for (let S4 = h3.first; S4 < x5; S4++) {\n let L6 = ir(v6.tree, f5, S4, S4);\n if (L6) {\n for (let k5 = 0; k5 < L6.substitutions.length; k5++) {\n let D7 = L6.substitutions[k5];\n D7 !== null && (f5[S4 + k5] = D7);\n }\n Ir(p3, L6.contextRange[0] + S4, L6.contextRange[1] + S4), S4 + L6.length >= x5 && (x5 = S4 + L6.length + 1), S4 += L6.length - 1;\n }\n }\n } else for (let x5 = h3.last - 1; x5 >= h3.first; x5--) {\n let S4 = ir(v6.tree, f5, x5, x5);\n if (S4) {\n for (let L6 = 0; L6 < S4.substitutions.length; L6++) {\n let k5 = S4.substitutions[L6];\n k5 !== null && (f5[x5 + L6] = k5);\n }\n Ir(p3, S4.contextRange[0] + x5, S4.contextRange[1] + x5), x5 -= S4.length - 1;\n }\n }\n h3 = this._getNextLookup(f5, h3.index + 1);\n }\n return { sequence: f5, ranges: p3 };\n }\n _getNextLookup(f5, p3) {\n let h3 = { index: null, first: 1 / 0, last: -1 };\n for (let v6 = 0; v6 < f5.length; v6++) {\n let x5 = this._glyphLookups[f5[v6]];\n if (x5) for (let S4 = 0; S4 < x5.length; S4++) {\n let L6 = x5[S4];\n if (L6 >= p3) {\n (h3.index === null || L6 <= h3.index) && (h3.index = L6, h3.first > v6 && (h3.first = v6), h3.last = v6 + 1);\n break;\n }\n }\n }\n return h3;\n }\n };\n function na(s4, f5) {\n let p3 = ta.parse(s4);\n return new gt(p3, { cacheSize: 0, ...f5 });\n }\n function yt2(s4) {\n if (typeof s4 != "string") throw new Error("Font family must be a string");\n let f5 = { input: s4, offset: 0 }, p3 = [], h3 = "";\n for (; f5.offset < f5.input.length; ) {\n let v6 = f5.input[f5.offset++];\n switch (v6) {\n case "\'":\n case \'"\':\n h3 += eu(f5, v6);\n break;\n case ",":\n p3.push(h3), h3 = "";\n break;\n default:\n /\\s/.test(v6) || (f5.offset--, h3 += ru(f5), p3.push(h3), h3 = "");\n }\n }\n return p3;\n }\n function eu(s4, f5) {\n let p3 = "", h3 = false;\n for (; s4.offset < s4.input.length; ) {\n let v6 = s4.input[s4.offset++];\n if (h3) /[\\dA-Fa-f]/.test(v6) ? (s4.offset--, p3 += aa(s4)) : v6 !== `\n` && (p3 += v6), h3 = false;\n else switch (v6) {\n case f5:\n return p3;\n case "\\\\":\n h3 = true;\n break;\n default:\n p3 += v6;\n }\n }\n throw new Error("Unterminated string");\n }\n function ru(s4) {\n let f5 = "", p3 = false;\n for (; s4.offset < s4.input.length; ) {\n let h3 = s4.input[s4.offset++];\n if (p3) /[\\dA-Fa-f]/.test(h3) ? (s4.offset--, f5 += aa(s4)) : f5 += h3, p3 = false;\n else switch (h3) {\n case "\\\\":\n p3 = true;\n break;\n case ",":\n return f5;\n default:\n /\\s/.test(h3) ? f5.endsWith(" ") || (f5 += " ") : f5 += h3;\n }\n }\n return f5;\n }\n function aa(s4) {\n let f5 = "";\n for (; s4.offset < s4.input.length; ) {\n let p3 = s4.input[s4.offset++];\n if (/\\s/.test(p3)) return mt2(f5);\n if (f5.length >= 6 || !/[\\dA-Fa-f]/.test(p3)) return s4.offset--, mt2(f5);\n f5 += p3;\n }\n return mt2(f5);\n }\n function mt2(s4) {\n return String.fromCodePoint(parseInt(s4, 16));\n }\n var lr;\n async function bt3(s4, f5) {\n if (!lr) {\n if (typeof navigator < "u" && "fonts" in navigator) {\n try {\n let v6 = await navigator.permissions.request?.({ name: "local-fonts" });\n if (v6 && v6.state !== "granted") throw new Error("Permission to access local fonts not granted.");\n } catch (v6) {\n if (v6 instanceof Error && v6.name !== "TypeError") throw v6;\n }\n let h3 = {};\n try {\n let v6 = await navigator.fonts.query();\n for (let x5 of v6) h3.hasOwnProperty(x5.family) || (h3[x5.family] = []), h3[x5.family].push(x5);\n lr = Promise.resolve(h3);\n } catch (v6) {\n v6 instanceof Error && console.error(v6.name, v6.message);\n }\n } else if (typeof window < "u" && "queryLocalFonts" in window) {\n let h3 = {};\n try {\n let v6 = await window.queryLocalFonts();\n for (let x5 of v6) h3.hasOwnProperty(x5.family) || (h3[x5.family] = []), h3[x5.family].push(x5);\n lr = Promise.resolve(h3);\n } catch (v6) {\n v6 instanceof Error && console.error(v6.name, v6.message);\n }\n }\n lr ??= Promise.resolve({});\n }\n let p3 = await lr;\n for (let h3 of yt2(s4)) {\n if (tu.includes(h3)) return;\n if (p3.hasOwnProperty(h3) && p3[h3].length > 0) {\n let v6 = p3[h3][0];\n if ("blob" in v6) {\n let S4 = await (await v6.blob()).arrayBuffer();\n return na(S4, { cacheSize: f5 });\n }\n return;\n }\n }\n }\n var tu = ["serif", "sans-serif", "cursive", "fantasy", "monospace", "system-ui", "emoji", "math", "fangsong"];\n var nu = 1e5;\n function ia(s4, f5 = []) {\n let p3, h3, v6 = 0, x5;\n return s4.registerCharacterJoiner((S4) => {\n let L6 = s4.options.fontFamily;\n if (L6 && (v6 === 0 || p3 !== L6)) {\n h3 = void 0, v6 = 1, p3 = L6;\n let k5 = p3;\n bt3(k5, nu).then((D7) => {\n k5 === s4.options.fontFamily && (v6 = 2, h3 = D7, D7 && s4.refresh(0, s4.rows - 1));\n }).catch((D7) => {\n k5 === s4.options.fontFamily && (v6 = 3, s4.options.logLevel === "debug" && console.debug(x5, new Error("Failure while loading font")), h3 = void 0, x5 = D7);\n });\n }\n return h3 && v6 === 2 ? h3.findLigatureRanges(S4).map((k5) => [k5[0], k5[1]]) : au(S4, f5);\n });\n }\n function au(s4, f5) {\n let p3 = [];\n for (let h3 = 0; h3 < s4.length; h3++) for (let v6 = 0; v6 < f5.length; v6++) if (s4.startsWith(f5[v6], h3)) {\n p3.push([h3, h3 + f5[v6].length]), h3 += f5[v6].length - 1;\n break;\n }\n return p3;\n }\n var sa = class {\n constructor(f5) {\n this._fallbackLigatures = (f5?.fallbackLigatures ?? ["<--", "<---", "<<-", "<-", "->", "->>", "-->", "--->", "<==", "<===", "<<=", "<=", "=>", "=>>", "==>", "===>", ">=", ">>=", "<->", "<-->", "<--->", "<---->", "<=>", "<==>", "<===>", "<====>", "::", ":::", "<~~", "</", "</>", "/>", "~~>", "==", "!=", "/=", "~=", "<>", "===", "!==", "!===", "<:", ":=", "*=", "*+", "<*", "<*>", "*>", "<|", "<|>", "|>", "+*", "=*", "=:", ":>", "/*", "*/", "+++", "<!--", "<!---"]).sort((p3, h3) => h3.length - p3.length), this._fontFeatureSettings = f5?.fontFeatureSettings;\n }\n activate(f5) {\n if (!f5.element) throw new Error("Cannot activate LigaturesAddon before open is called");\n this._terminal = f5, this._characterJoinerId = ia(f5, this._fallbackLigatures), f5.element.style.fontFeatureSettings = this._fontFeatureSettings ?? \'"calt" on\';\n }\n dispose() {\n this._characterJoinerId !== void 0 && (this._terminal?.deregisterCharacterJoiner(this._characterJoinerId), this._characterJoinerId = void 0), this._terminal?.element && (this._terminal.element.style.fontFeatureSettings = "");\n }\n };\n\n // node_modules/@xterm/xterm/lib/xterm.mjs\n var Us = Object.defineProperty;\n var Yn = Object.getOwnPropertyDescriptor;\n var Xn2 = (n11, t) => {\n for (var e in t) Us(n11, e, { get: t[e], enumerable: true });\n };\n var E4 = (n11, t, e, i5) => {\n for (var r = i5 > 1 ? void 0 : i5 ? Yn(t, e) : t, s4 = n11.length - 1, o2; s4 >= 0; s4--) (o2 = n11[s4]) && (r = (i5 ? o2(t, e, r) : o2(r)) || r);\n return i5 && r && Us(t, e, r), r;\n };\n var m3 = (n11, t) => (e, i5) => t(e, i5, n11);\n var Ks = "Terminal input";\n var zt2 = { get: () => Ks, set: (n11) => Ks = n11 };\n var zs = "Too much output to announce, navigate to rows manually to read";\n var Je3 = { get: () => zs, set: (n11) => zs = n11 };\n function jn(n11) {\n return n11.replace(/\\r?\\n/g, "\\r");\n }\n function Zn2(n11, t) {\n return t ? `\\x1B[200~${n11.replace(/\\x1b/g, "\\u241B")}\\x1B[201~` : n11;\n }\n function Gs(n11, t) {\n n11.clipboardData && n11.clipboardData.setData("text/plain", t.selectionText), n11.preventDefault();\n }\n function $s(n11, t, e, i5) {\n if (n11.stopPropagation(), n11.clipboardData) {\n let r = n11.clipboardData.getData("text/plain");\n Hr(r, t, e, i5);\n }\n }\n function Hr(n11, t, e, i5) {\n n11 = jn(n11), n11 = Zn2(n11, e.decPrivateModes.bracketedPasteMode && i5.rawOptions.ignoreBracketedPasteMode !== true), e.triggerDataEvent(n11, true), t.value = "";\n }\n function Wr(n11, t, e) {\n let i5 = e.getBoundingClientRect(), r = n11.clientX - i5.left - 10, s4 = n11.clientY - i5.top - 10;\n t.style.width = "20px", t.style.height = "20px", t.style.left = `${r}px`, t.style.top = `${s4}px`, t.style.zIndex = "1000", t.focus();\n }\n function Ur2(n11, t, e, i5, r) {\n Wr(n11, t, e), r && i5.rightClickSelect(n11), t.value = i5.selectionText, t.select();\n }\n function ve2(n11) {\n return n11 > 65535 ? (n11 -= 65536, String.fromCharCode((n11 >> 10) + 55296) + String.fromCharCode(n11 % 1024 + 56320)) : String.fromCharCode(n11);\n }\n function ye2(n11, t = 0, e = n11.length) {\n let i5 = "";\n for (let r = t; r < e; ++r) {\n let s4 = n11[r];\n s4 > 65535 ? (s4 -= 65536, i5 += String.fromCharCode((s4 >> 10) + 55296) + String.fromCharCode(s4 % 1024 + 56320)) : i5 += String.fromCharCode(s4);\n }\n return i5;\n }\n var Si = class {\n constructor() {\n this._interim = 0;\n }\n clear() {\n this._interim = 0;\n }\n decode(t, e) {\n let i5 = t.length;\n if (!i5) return 0;\n let r = 0, s4 = 0;\n if (this._interim) {\n let o2 = t.charCodeAt(s4++);\n 56320 <= o2 && o2 <= 57343 ? e[r++] = (this._interim - 55296) * 1024 + o2 - 56320 + 65536 : (e[r++] = this._interim, e[r++] = o2), this._interim = 0;\n }\n for (let o2 = s4; o2 < i5; ++o2) {\n let a2 = t.charCodeAt(o2);\n if (55296 <= a2 && a2 <= 56319) {\n if (++o2 >= i5) return this._interim = a2, r;\n let l4 = t.charCodeAt(o2);\n 56320 <= l4 && l4 <= 57343 ? e[r++] = (a2 - 55296) * 1024 + l4 - 56320 + 65536 : (e[r++] = a2, e[r++] = l4);\n continue;\n }\n a2 !== 65279 && (e[r++] = a2);\n }\n return r;\n }\n };\n var gi = class {\n constructor() {\n this.interim = new Uint8Array(3);\n }\n clear() {\n this.interim.fill(0);\n }\n decode(t, e) {\n let i5 = t.length;\n if (!i5) return 0;\n let r = 0, s4, o2, a2, l4, h3 = 0, d3 = 0;\n if (this.interim[0]) {\n let _5 = false, p3 = this.interim[0];\n p3 &= (p3 & 224) === 192 ? 31 : (p3 & 240) === 224 ? 15 : 7;\n let b4 = 0, f5;\n for (; (f5 = this.interim[++b4] & 63) && b4 < 4; ) p3 <<= 6, p3 |= f5;\n let S4 = (this.interim[0] & 224) === 192 ? 2 : (this.interim[0] & 240) === 224 ? 3 : 4, I4 = S4 - b4;\n for (; d3 < I4; ) {\n if (d3 >= i5) return 0;\n if (f5 = t[d3++], (f5 & 192) !== 128) {\n d3--, _5 = true;\n break;\n } else this.interim[b4++] = f5, p3 <<= 6, p3 |= f5 & 63;\n }\n _5 || (S4 === 2 ? p3 < 128 ? d3-- : e[r++] = p3 : S4 === 3 ? p3 < 2048 || p3 >= 55296 && p3 <= 57343 || p3 === 65279 || (e[r++] = p3) : p3 < 65536 || p3 > 1114111 || (e[r++] = p3)), this.interim.fill(0);\n }\n let c2 = i5 - 4, u3 = d3;\n for (; u3 < i5; ) {\n for (; u3 < c2 && !((s4 = t[u3]) & 128) && !((o2 = t[u3 + 1]) & 128) && !((a2 = t[u3 + 2]) & 128) && !((l4 = t[u3 + 3]) & 128); ) e[r++] = s4, e[r++] = o2, e[r++] = a2, e[r++] = l4, u3 += 4;\n if (s4 = t[u3++], s4 < 128) e[r++] = s4;\n else if ((s4 & 224) === 192) {\n if (u3 >= i5) return this.interim[0] = s4, r;\n if (o2 = t[u3++], (o2 & 192) !== 128) {\n u3--;\n continue;\n }\n if (h3 = (s4 & 31) << 6 | o2 & 63, h3 < 128) {\n u3--;\n continue;\n }\n e[r++] = h3;\n } else if ((s4 & 240) === 224) {\n if (u3 >= i5) return this.interim[0] = s4, r;\n if (o2 = t[u3++], (o2 & 192) !== 128) {\n u3--;\n continue;\n }\n if (u3 >= i5) return this.interim[0] = s4, this.interim[1] = o2, r;\n if (a2 = t[u3++], (a2 & 192) !== 128) {\n u3--;\n continue;\n }\n if (h3 = (s4 & 15) << 12 | (o2 & 63) << 6 | a2 & 63, h3 < 2048 || h3 >= 55296 && h3 <= 57343 || h3 === 65279) continue;\n e[r++] = h3;\n } else if ((s4 & 248) === 240) {\n if (u3 >= i5) return this.interim[0] = s4, r;\n if (o2 = t[u3++], (o2 & 192) !== 128) {\n u3--;\n continue;\n }\n if (u3 >= i5) return this.interim[0] = s4, this.interim[1] = o2, r;\n if (a2 = t[u3++], (a2 & 192) !== 128) {\n u3--;\n continue;\n }\n if (u3 >= i5) return this.interim[0] = s4, this.interim[1] = o2, this.interim[2] = a2, r;\n if (l4 = t[u3++], (l4 & 192) !== 128) {\n u3--;\n continue;\n }\n if (h3 = (s4 & 7) << 18 | (o2 & 63) << 12 | (a2 & 63) << 6 | l4 & 63, h3 < 65536 || h3 > 1114111) continue;\n e[r++] = h3;\n }\n }\n return r;\n }\n };\n var fe2 = class n2 {\n constructor() {\n this.fg = 0;\n this.bg = 0;\n this.extended = new Pe2();\n }\n static toColorRGB(t) {\n return [t >>> 16 & 255, t >>> 8 & 255, t & 255];\n }\n static fromColorRGB(t) {\n return (t[0] & 255) << 16 | (t[1] & 255) << 8 | t[2] & 255;\n }\n clone() {\n let t = new n2();\n return t.fg = this.fg, t.bg = this.bg, t.extended = this.extended.clone(), t;\n }\n isInverse() {\n return this.fg & 67108864;\n }\n isBold() {\n return this.fg & 134217728;\n }\n isUnderline() {\n return this.hasExtendedAttrs() && this.extended.underlineStyle !== 0 ? 1 : this.fg & 268435456;\n }\n isBlink() {\n return this.fg & 536870912;\n }\n isInvisible() {\n return this.fg & 1073741824;\n }\n isItalic() {\n return this.bg & 67108864;\n }\n isDim() {\n return this.bg & 134217728;\n }\n isStrikethrough() {\n return this.fg & 2147483648;\n }\n isProtected() {\n return this.bg & 536870912;\n }\n isOverline() {\n return this.bg & 1073741824;\n }\n getFgColorMode() {\n return this.fg & 50331648;\n }\n getBgColorMode() {\n return this.bg & 50331648;\n }\n isFgRGB() {\n return (this.fg & 50331648) === 50331648;\n }\n isBgRGB() {\n return (this.bg & 50331648) === 50331648;\n }\n isFgPalette() {\n return (this.fg & 50331648) === 16777216 || (this.fg & 50331648) === 33554432;\n }\n isBgPalette() {\n return (this.bg & 50331648) === 16777216 || (this.bg & 50331648) === 33554432;\n }\n isFgDefault() {\n return (this.fg & 50331648) === 0;\n }\n isBgDefault() {\n return (this.bg & 50331648) === 0;\n }\n isAttributeDefault() {\n return this.fg === 0 && this.bg === 0;\n }\n getFgColor() {\n switch (this.fg & 50331648) {\n case 16777216:\n case 33554432:\n return this.fg & 255;\n case 50331648:\n return this.fg & 16777215;\n default:\n return -1;\n }\n }\n getBgColor() {\n switch (this.bg & 50331648) {\n case 16777216:\n case 33554432:\n return this.bg & 255;\n case 50331648:\n return this.bg & 16777215;\n default:\n return -1;\n }\n }\n hasExtendedAttrs() {\n return this.bg & 268435456;\n }\n updateExtended() {\n this.extended.isEmpty() ? this.bg &= -268435457 : this.bg |= 268435456;\n }\n getUnderlineColor() {\n if (this.bg & 268435456 && ~this.extended.underlineColor) switch (this.extended.underlineColor & 50331648) {\n case 16777216:\n case 33554432:\n return this.extended.underlineColor & 255;\n case 50331648:\n return this.extended.underlineColor & 16777215;\n default:\n return this.getFgColor();\n }\n return this.getFgColor();\n }\n getUnderlineColorMode() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? this.extended.underlineColor & 50331648 : this.getFgColorMode();\n }\n isUnderlineColorRGB() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 50331648 : this.isFgRGB();\n }\n isUnderlineColorPalette() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 16777216 || (this.extended.underlineColor & 50331648) === 33554432 : this.isFgPalette();\n }\n isUnderlineColorDefault() {\n return this.bg & 268435456 && ~this.extended.underlineColor ? (this.extended.underlineColor & 50331648) === 0 : this.isFgDefault();\n }\n getUnderlineStyle() {\n return this.fg & 268435456 ? this.bg & 268435456 ? this.extended.underlineStyle : 1 : 0;\n }\n getUnderlineVariantOffset() {\n return this.extended.underlineVariantOffset;\n }\n };\n var Pe2 = class n3 {\n constructor(t = 0, e = 0) {\n this._ext = 0;\n this._urlId = 0;\n this._ext = t, this._urlId = e;\n }\n get ext() {\n return this._urlId ? this._ext & -469762049 | this.underlineStyle << 26 : this._ext;\n }\n set ext(t) {\n this._ext = t;\n }\n get underlineStyle() {\n return this._urlId ? 5 : (this._ext & 469762048) >> 26;\n }\n set underlineStyle(t) {\n this._ext &= -469762049, this._ext |= t << 26 & 469762048;\n }\n get underlineColor() {\n return this._ext & 67108863;\n }\n set underlineColor(t) {\n this._ext &= -67108864, this._ext |= t & 67108863;\n }\n get urlId() {\n return this._urlId;\n }\n set urlId(t) {\n this._urlId = t;\n }\n get underlineVariantOffset() {\n let t = (this._ext & 3758096384) >> 29;\n return t < 0 ? t ^ 4294967288 : t;\n }\n set underlineVariantOffset(t) {\n this._ext &= 536870911, this._ext |= t << 29 & 3758096384;\n }\n clone() {\n return new n3(this._ext, this._urlId);\n }\n isEmpty() {\n return this.underlineStyle === 0 && this._urlId === 0;\n }\n };\n var N2 = class n4 extends fe2 {\n constructor() {\n super(...arguments);\n this.content = 0;\n this.fg = 0;\n this.bg = 0;\n this.extended = new Pe2();\n this.combinedData = "";\n }\n static fromCharData(e) {\n let i5 = new n4();\n return i5.setFromCharData(e), i5;\n }\n isCombined() {\n return this.content & 2097152;\n }\n getWidth() {\n return this.content >> 22;\n }\n getChars() {\n return this.content & 2097152 ? this.combinedData : this.content & 2097151 ? ve2(this.content & 2097151) : "";\n }\n getCode() {\n return this.isCombined() ? this.combinedData.charCodeAt(this.combinedData.length - 1) : this.content & 2097151;\n }\n setFromCharData(e) {\n this.fg = e[0], this.bg = 0;\n let i5 = false;\n if (e[1].length > 2) i5 = true;\n else if (e[1].length === 2) {\n let r = e[1].charCodeAt(0);\n if (55296 <= r && r <= 56319) {\n let s4 = e[1].charCodeAt(1);\n 56320 <= s4 && s4 <= 57343 ? this.content = (r - 55296) * 1024 + s4 - 56320 + 65536 | e[2] << 22 : i5 = true;\n } else i5 = true;\n } else this.content = e[1].charCodeAt(0) | e[2] << 22;\n i5 && (this.combinedData = e[1], this.content = 2097152 | e[2] << 22);\n }\n getAsCharData() {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n attributesEquals(e) {\n if (this.getFgColorMode() !== e.getFgColorMode() || this.getFgColor() !== e.getFgColor() || this.getBgColorMode() !== e.getBgColorMode() || this.getBgColor() !== e.getBgColor() || this.isInverse() !== e.isInverse() || this.isBold() !== e.isBold() || this.isUnderline() !== e.isUnderline()) return false;\n if (this.isUnderline()) {\n if (this.getUnderlineStyle() !== e.getUnderlineStyle()) return false;\n let i5 = this.isUnderlineColorDefault(), r = e.isUnderlineColorDefault();\n if (!(i5 && r) && (i5 !== r || this.getUnderlineColor() !== e.getUnderlineColor() || this.getUnderlineColorMode() !== e.getUnderlineColorMode())) return false;\n }\n return !(this.isOverline() !== e.isOverline() || this.isBlink() !== e.isBlink() || this.isInvisible() !== e.isInvisible() || this.isItalic() !== e.isItalic() || this.isDim() !== e.isDim() || this.isStrikethrough() !== e.isStrikethrough());\n }\n };\n var qs = "di$target";\n var Vr = "di$dependencies";\n var $r = /* @__PURE__ */ new Map();\n function Ys(n11) {\n return n11[Vr] || [];\n }\n function F3(n11) {\n if ($r.has(n11)) return $r.get(n11);\n let t = function(e, i5, r) {\n if (arguments.length !== 3) throw new Error("@IServiceName-decorator can only be used to decorate a parameter");\n eo(t, e, r);\n };\n return t._id = n11, $r.set(n11, t), t;\n }\n function eo(n11, t, e) {\n t[qs] === t ? t[Vr].push({ id: n11, index: e }) : (t[Vr] = [{ id: n11, index: e }], t[qs] = t);\n }\n var L5 = F3("BufferService");\n var et2 = F3("MouseStateService");\n var Y = F3("CoreService");\n var Xs = F3("CharsetService");\n var tt3 = F3("InstantiationService");\n var pe = F3("LogService");\n var R3 = F3("OptionsService");\n var Ii = F3("OscLinkService");\n var js = F3("UnicodeService");\n var Ie2 = F3("DecorationService");\n var it4 = class {\n constructor(t, e, i5) {\n this._bufferService = t;\n this._optionsService = e;\n this._oscLinkService = i5;\n this._workCell = new N2();\n }\n provideLinks(t, e) {\n let i5 = this._bufferService.buffer.lines.get(t - 1);\n if (!i5) {\n e(void 0);\n return;\n }\n let r = [], s4 = this._optionsService.rawOptions.linkHandler, o2 = this._workCell, a2 = i5.getTrimmedLength(), l4 = -1, h3 = -1, d3 = false;\n for (let c2 = 0; c2 < a2; c2++) if (!(h3 === -1 && !i5.hasContent(c2))) {\n if (i5.loadCell(c2, o2), o2.hasExtendedAttrs() && o2.extended.urlId) if (h3 === -1) {\n h3 = c2, l4 = o2.extended.urlId;\n continue;\n } else d3 = o2.extended.urlId !== l4;\n else h3 !== -1 && (d3 = true);\n if (d3 || h3 !== -1 && c2 === a2 - 1) {\n let u3 = this._oscLinkService.getLinkData(l4)?.uri;\n if (u3) {\n let _5 = { start: { x: h3 + 1, y: t }, end: { x: c2 + (!d3 && c2 === a2 - 1 ? 1 : 0), y: t } }, p3 = false;\n if (!s4?.allowNonHttpProtocols) try {\n let b4 = new URL(u3);\n ["http:", "https:"].includes(b4.protocol) || (p3 = true);\n } catch {\n p3 = true;\n }\n p3 || r.push({ text: u3, range: _5, activate: (b4, f5) => s4 ? s4.activate(b4, f5, _5) : to(b4, f5), hover: (b4, f5) => s4?.hover?.(b4, f5, _5), leave: (b4, f5) => s4?.leave?.(b4, f5, _5) });\n }\n d3 = false, o2.hasExtendedAttrs() && o2.extended.urlId ? (h3 = c2, l4 = o2.extended.urlId) : (h3 = -1, l4 = -1);\n }\n }\n e(r);\n }\n };\n it4 = E4([m3(0, L5), m3(1, R3), m3(2, Ii)], it4);\n function to(n11, t) {\n if (confirm(`Do you want to navigate to ${t}?\n\nWARNING: This link could potentially be dangerous`)) {\n let i5 = window.open();\n if (i5) {\n try {\n i5.opener = null;\n } catch {\n }\n i5.location.href = t;\n } else console.warn("Opening link blocked as opener could not be cleared");\n }\n }\n var Me2 = F3("CharSizeService");\n var z3 = F3("CoreBrowserService");\n var Be2 = F3("MouseCoordsService");\n var Zs = F3("MouseService");\n var G4 = F3("RenderService");\n var Ci = F3("SelectionService");\n var Ei = F3("CharacterJoinerService");\n var _e2 = F3("ThemeService");\n var yi = F3("LinkProviderService");\n var Js = F3("KeyboardService");\n function y4(n11) {\n return { dispose: n11 };\n }\n function Oe2(n11) {\n if (!n11) return n11;\n if (Array.isArray(n11)) {\n for (let t of n11) t.dispose();\n return [];\n }\n return n11.dispose(), n11;\n }\n var we2 = class {\n constructor() {\n this._disposables = /* @__PURE__ */ new Set();\n this._isDisposed = false;\n }\n get isDisposed() {\n return this._isDisposed;\n }\n add(t) {\n return this._isDisposed ? t.dispose() : this._disposables.add(t), t;\n }\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n for (let t of this._disposables) t.dispose();\n this._disposables.clear();\n }\n }\n clear() {\n for (let t of this._disposables) t.dispose();\n this._disposables.clear();\n }\n };\n var g5 = class {\n constructor() {\n this._store = new we2();\n }\n dispose() {\n this._store.dispose();\n }\n _register(t) {\n return this._store.add(t);\n }\n };\n g5.None = Object.freeze({ dispose() {\n } });\n var me3 = class {\n constructor() {\n this._isDisposed = false;\n }\n get value() {\n return this._isDisposed ? void 0 : this._value;\n }\n set value(t) {\n this._isDisposed || t === this._value || (this._value?.dispose(), this._value = t);\n }\n clear() {\n this.value = void 0;\n }\n dispose() {\n this._isDisposed = true, this._value?.dispose(), this._value = void 0;\n }\n };\n var Ne3 = class {\n constructor() {\n this._token = -1;\n this._isDisposed = false;\n }\n dispose() {\n this.cancel(), this._isDisposed = true;\n }\n cancel() {\n this._token !== -1 && (clearTimeout(this._token), this._token = -1);\n }\n cancelAndSet(t, e) {\n if (this._isDisposed) throw new Error("Calling cancelAndSet on a disposed TimeoutTimer");\n this.cancel(), this._token = setTimeout(() => {\n this._token = -1, t();\n }, e);\n }\n setIfNotSet(t, e) {\n if (this._isDisposed) throw new Error("Calling setIfNotSet on a disposed TimeoutTimer");\n this._token === -1 && (this._token = setTimeout(() => {\n this._token = -1, t();\n }, e));\n }\n };\n var xi = class {\n constructor() {\n this._isDisposed = false;\n }\n cancel() {\n this._disposable?.dispose(), this._disposable = void 0;\n }\n cancelAndSet(t, e, i5 = globalThis) {\n if (this._isDisposed) throw new Error("Calling cancelAndSet on a disposed IntervalTimer");\n this.cancel();\n let r = i5.setInterval(() => {\n t();\n }, e);\n this._disposable = { dispose: () => {\n i5.clearInterval(r), this._disposable = void 0;\n } };\n }\n dispose() {\n this.cancel(), this._isDisposed = true;\n }\n };\n function oe3(n11) {\n let t = n11;\n if (t?.ownerDocument?.defaultView) return t.ownerDocument.defaultView;\n let e = n11;\n return e?.view ? e.view : window;\n }\n var qr = class {\n constructor(t, e, i5, r) {\n this._node = t, this._type = e, this._handler = i5, this._options = r, t.addEventListener(e, i5, r);\n }\n dispose() {\n !this._node || !this._handler || (this._node.removeEventListener(this._type, this._handler, this._options), this._node = null, this._handler = null);\n }\n };\n function C3(n11, t, e, i5) {\n return new qr(n11, t, e, i5);\n }\n function Yr(n11, t, e, i5) {\n return C3(n11, t, e, i5);\n }\n var ae3 = { CLICK: "click", MOUSE_DOWN: "mousedown", MOUSE_OVER: "mouseover", MOUSE_LEAVE: "mouseleave", KEY_DOWN: "keydown", KEY_UP: "keyup", INPUT: "input", BLUR: "blur", FOCUS: "focus", CHANGE: "change", POINTER_DOWN: "pointerdown", POINTER_MOVE: "pointermove", POINTER_UP: "pointerup", MOUSE_WHEEL: "wheel", WHEEL: "wheel" };\n function en(n11) {\n let t = n11.getBoundingClientRect(), e = oe3(n11);\n return { left: t.left + e.scrollX, top: t.top + e.scrollY, width: t.width, height: t.height };\n }\n var wi = class {\n constructor(t, e) {\n this._runner = t;\n this.priority = e;\n this._canceled = false;\n }\n dispose() {\n this._canceled = true;\n }\n execute() {\n if (!this._canceled) try {\n this._runner();\n } catch (t) {\n console.error(t);\n }\n }\n static sort(t, e) {\n return e.priority - t.priority;\n }\n };\n var Qs = /* @__PURE__ */ new Map();\n function tn(n11) {\n let t = Qs.get(n11);\n return t || (t = { next: [], current: [], animFrameRequested: false, inAnimationFrameRunner: false }, Qs.set(n11, t)), t;\n }\n function io(n11) {\n let t = tn(n11);\n for (t.animFrameRequested = false, t.current = t.next, t.next = [], t.inAnimationFrameRunner = true; t.current.length > 0; ) t.current.sort(wi.sort), t.current.shift().execute();\n t.inAnimationFrameRunner = false;\n }\n function rt3(n11, t, e = 0) {\n let i5 = tn(n11), r = new wi(t, e);\n return i5.next.push(r), i5.animFrameRequested || (i5.animFrameRequested = true, n11.requestAnimationFrame(() => io(n11))), r;\n }\n var Ti = class extends xi {\n constructor(t) {\n super(), this._defaultTarget = t ? oe3(t) : void 0;\n }\n cancelAndSet(t, e, i5) {\n super.cancelAndSet(t, e, i5 ?? this._defaultTarget ?? window);\n }\n };\n var Te3 = class {\n constructor(t) {\n this.domNode = t;\n this._width = "";\n this._height = "";\n this._top = "";\n this._left = "";\n this._bottom = "";\n this._right = "";\n this._className = "";\n this._position = "";\n this._layerHint = false;\n this._contain = "none";\n }\n setWidth(t) {\n let e = nt4(t);\n this._width !== e && (this._width = e, this.domNode.style.width = this._width);\n }\n setHeight(t) {\n let e = nt4(t);\n this._height !== e && (this._height = e, this.domNode.style.height = this._height);\n }\n setTop(t) {\n let e = nt4(t);\n this._top !== e && (this._top = e, this.domNode.style.top = this._top);\n }\n setLeft(t) {\n let e = nt4(t);\n this._left !== e && (this._left = e, this.domNode.style.left = this._left);\n }\n setBottom(t) {\n let e = nt4(t);\n this._bottom !== e && (this._bottom = e, this.domNode.style.bottom = this._bottom);\n }\n setRight(t) {\n let e = nt4(t);\n this._right !== e && (this._right = e, this.domNode.style.right = this._right);\n }\n setClassName(t) {\n this._className !== t && (this._className = t, this.domNode.className = this._className);\n }\n toggleClassName(t, e) {\n this.domNode.classList.toggle(t, e), this._className = this.domNode.className;\n }\n setPosition(t) {\n this._position !== t && (this._position = t, this.domNode.style.position = this._position);\n }\n setLayerHinting(t) {\n this._layerHint !== t && (this._layerHint = t, t ? this.domNode.style.transform = "translate3d(0px, 0px, 0px)" : this.domNode.style.transform = "");\n }\n setContain(t) {\n this._contain !== t && (this._contain = t, this.domNode.style.contain = this._contain);\n }\n setAttribute(t, e) {\n this.domNode.setAttribute(t, e);\n }\n };\n function nt4(n11) {\n return typeof n11 == "number" ? `${n11}px` : n11;\n }\n var ze3 = {};\n Xn2(ze3, { getSafariVersion: () => so, getZoomFactor: () => Zr, isChrome: () => Gt2, isChromeOS: () => Jr, isFirefox: () => at4, isLegacyEdge: () => ro, isLinux: () => $t2, isMac: () => ee3, isNode: () => Xr, isSafari: () => Di, isWindows: () => Ke3 });\n var Xr = !!(typeof process < "u" && "title" in process && (typeof navigator > "u" || navigator.userAgent.startsWith("Node.js/")));\n var ot4 = Xr ? "node" : navigator.userAgent;\n var jr = Xr ? "node" : navigator.platform;\n var at4 = ot4.includes("Firefox");\n var Gt2 = ot4.includes("Chrome");\n var ro = ot4.includes("Edge");\n var Di = /^((?!chrome|android).)*safari/i.test(ot4);\n function Zr(n11) {\n return 1;\n }\n function so() {\n if (!Di) return 0;\n let n11 = ot4.match(/Version\\/(\\d+)/);\n return n11 === null || n11.length < 2 ? 0 : parseInt(n11[1]);\n }\n var ee3 = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].includes(jr);\n var Ke3 = ["Windows", "Win16", "Win32", "WinCE"].includes(jr);\n var $t2 = jr.indexOf("Linux") >= 0;\n var Jr = /\\bCrOS\\b/.test(ot4);\n var rn = /* @__PURE__ */ new WeakMap();\n function no(n11) {\n if (!n11.parent || n11.parent === n11) return null;\n try {\n let t = n11.location, e = n11.parent.location;\n if (t.origin !== "null" && e.origin !== "null" && t.origin !== e.origin) return null;\n } catch {\n return null;\n }\n return n11.parent;\n }\n var Qr = class {\n static _getSameOriginWindowChain(t) {\n let e = rn.get(t);\n if (!e) {\n e = [], rn.set(t, e);\n let i5 = t, r;\n do\n r = no(i5), r ? e.push({ window: new WeakRef(i5), iframeElement: i5.frameElement ?? null }) : e.push({ window: new WeakRef(i5), iframeElement: null }), i5 = r;\n while (i5);\n }\n return e.slice(0);\n }\n static getPositionOfChildWindowRelativeToAncestorWindow(t, e) {\n if (!e || t === e) return { top: 0, left: 0 };\n let i5 = 0, r = 0, s4 = this._getSameOriginWindowChain(t);\n for (let o2 of s4) {\n let a2 = o2.window.deref();\n if (i5 += a2?.scrollY ?? 0, r += a2?.scrollX ?? 0, a2 === e || !o2.iframeElement) break;\n let l4 = o2.iframeElement.getBoundingClientRect();\n i5 += l4.top, r += l4.left;\n }\n return { top: i5, left: r };\n }\n };\n var lt3 = class {\n constructor(t, e) {\n this.timestamp = Date.now(), this.browserEvent = e, this.leftButton = e.button === 0, this.middleButton = e.button === 1, this.rightButton = e.button === 2, this.buttons = e.buttons, this.target = e.target, this.detail = e.detail ?? 1, e.type === "dblclick" && (this.detail = 2), this.ctrlKey = e.ctrlKey, this.shiftKey = e.shiftKey, this.altKey = e.altKey, this.metaKey = e.metaKey, typeof e.pageX == "number" ? (this.posx = e.pageX, this.posy = e.pageY) : (this.posx = e.clientX + this.target.ownerDocument.body.scrollLeft + this.target.ownerDocument.documentElement.scrollLeft, this.posy = e.clientY + this.target.ownerDocument.body.scrollTop + this.target.ownerDocument.documentElement.scrollTop);\n let i5 = Qr.getPositionOfChildWindowRelativeToAncestorWindow(t, e.view);\n this.posx -= i5.left, this.posy -= i5.top;\n }\n preventDefault() {\n this.browserEvent.preventDefault();\n }\n stopPropagation() {\n this.browserEvent.stopPropagation();\n }\n };\n var Vt2 = class {\n constructor(t, e = 0, i5 = 0) {\n this.browserEvent = t ?? null, this.target = t ? t.target ?? t.targetNode ?? t.srcElement ?? null : null, this.deltaY = i5, this.deltaX = e;\n let r = false;\n if (Gt2) {\n let s4 = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n r = (s4 ? parseInt(s4[1]) : 123) <= 122;\n }\n if (t) {\n let s4 = t, o2 = t, a2 = t.view?.devicePixelRatio ?? 1;\n if (typeof s4.wheelDeltaY < "u") r ? this.deltaY = s4.wheelDeltaY / (120 * a2) : this.deltaY = s4.wheelDeltaY / 120;\n else if (typeof o2.VERTICAL_AXIS < "u" && o2.axis === o2.VERTICAL_AXIS) this.deltaY = -o2.detail / 3;\n else if (t.type === "wheel") {\n let l4 = t;\n l4.deltaMode === l4.DOM_DELTA_LINE ? at4 && !ee3 ? this.deltaY = -t.deltaY / 3 : this.deltaY = -t.deltaY : this.deltaY = -t.deltaY / 40;\n }\n if (typeof s4.wheelDeltaX < "u") Di && Ke3 ? this.deltaX = -(s4.wheelDeltaX / 120) : r ? this.deltaX = s4.wheelDeltaX / (120 * a2) : this.deltaX = s4.wheelDeltaX / 120;\n else if (typeof o2.HORIZONTAL_AXIS < "u" && o2.axis === o2.HORIZONTAL_AXIS) this.deltaX = -t.detail / 3;\n else if (t.type === "wheel") {\n let l4 = t;\n l4.deltaMode === l4.DOM_DELTA_LINE ? at4 && !ee3 ? this.deltaX = -t.deltaX / 3 : this.deltaX = -t.deltaX : this.deltaX = -t.deltaX / 40;\n }\n this.deltaY === 0 && this.deltaX === 0 && t.wheelDelta && (r ? this.deltaY = t.wheelDelta / (120 * a2) : this.deltaY = t.wheelDelta / 120);\n }\n }\n preventDefault() {\n this.browserEvent?.preventDefault();\n }\n stopPropagation() {\n this.browserEvent?.stopPropagation();\n }\n };\n var ct3 = class {\n constructor() {\n this._hooks = new we2();\n this._pointerMoveCallback = null;\n this._onStopCallback = null;\n }\n dispose() {\n this.stopMonitoring(false), this._hooks.dispose();\n }\n stopMonitoring(t) {\n if (!this.isMonitoring()) return;\n this._hooks.clear(), this._pointerMoveCallback = null;\n let e = this._onStopCallback;\n this._onStopCallback = null, t && e && e();\n }\n isMonitoring() {\n return !!this._pointerMoveCallback;\n }\n startMonitoring(t, e, i5, r, s4) {\n this.isMonitoring() && this.stopMonitoring(false), this._pointerMoveCallback = r, this._onStopCallback = s4;\n let o2 = t;\n try {\n t.setPointerCapture(e), this._hooks.add(y4(() => {\n try {\n t.releasePointerCapture(e);\n } catch {\n }\n }));\n } catch {\n o2 = oe3(t);\n }\n this._hooks.add(C3(o2, ae3.POINTER_MOVE, (a2) => {\n if (a2.buttons !== i5) {\n this.stopMonitoring(true);\n return;\n }\n a2.preventDefault(), this._pointerMoveCallback(a2);\n })), this._hooks.add(C3(o2, ae3.POINTER_UP, (a2) => this.stopMonitoring(true)));\n }\n };\n var Fe3 = class extends g5 {\n _onclick(t, e) {\n this._register(C3(t, ae3.CLICK, (i5) => e(new lt3(oe3(t), i5))));\n }\n _onmouseover(t, e) {\n this._register(C3(t, ae3.MOUSE_OVER, (i5) => e(new lt3(oe3(t), i5))));\n }\n _onmouseleave(t, e) {\n this._register(C3(t, ae3.MOUSE_LEAVE, (i5) => e(new lt3(oe3(t), i5))));\n }\n };\n var Ri = class extends Fe3 {\n constructor(t) {\n super(), this._handleActivate = t.handleActivate, this.bgDomNode = document.createElement("div"), this.bgDomNode.className = "xterm-arrow-background", this.bgDomNode.style.position = "absolute", this.bgDomNode.style.width = t.bgWidth + "px", this.bgDomNode.style.height = t.bgHeight + "px", typeof t.top < "u" && (this.bgDomNode.style.top = "0px"), typeof t.left < "u" && (this.bgDomNode.style.left = "0px"), typeof t.bottom < "u" && (this.bgDomNode.style.bottom = "0px"), typeof t.right < "u" && (this.bgDomNode.style.right = "0px"), this.domNode = document.createElement("div"), this.domNode.className = t.className, this.domNode.style.position = "absolute";\n let e = Math.min(t.bgWidth, t.bgHeight);\n this.domNode.style.width = e + "px", this.domNode.style.height = e + "px", typeof t.top < "u" && (this.domNode.style.top = t.top + "px"), typeof t.left < "u" && (this.domNode.style.left = t.left + "px"), typeof t.bottom < "u" && (this.domNode.style.bottom = t.bottom + "px"), typeof t.right < "u" && (this.domNode.style.right = t.right + "px"), this._pointerMoveMonitor = this._register(new ct3()), this._register(Yr(this.bgDomNode, ae3.POINTER_DOWN, (i5) => this._arrowPointerDown(i5))), this._register(Yr(this.domNode, ae3.POINTER_DOWN, (i5) => this._arrowPointerDown(i5))), this._pointerdownRepeatTimer = this._register(new Ti()), this._pointerdownScheduleRepeatTimer = this._register(new Ne3());\n }\n _arrowPointerDown(t) {\n if (!t.target || !(t.target instanceof Element)) return;\n let e = () => {\n this._pointerdownRepeatTimer.cancelAndSet(() => this._handleActivate(), 1e3 / 24, oe3(t));\n };\n this._handleActivate(), this._pointerdownRepeatTimer.cancel(), this._pointerdownScheduleRepeatTimer.cancelAndSet(e, 200), this._pointerMoveMonitor.startMonitoring(t.target, t.pointerId, t.buttons, (i5) => {\n }, () => {\n this._pointerdownRepeatTimer.cancel(), this._pointerdownScheduleRepeatTimer.cancel();\n }), t.preventDefault();\n }\n };\n var v5 = class {\n constructor() {\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n return this._event ? this._event : (this._event = (t, e, i5) => {\n if (this._disposed) return y4(() => {\n });\n let r = { fn: t, thisArgs: e };\n this._listeners.push(r);\n let s4 = y4(() => {\n let o2 = this._listeners.indexOf(r);\n o2 !== -1 && this._listeners.splice(o2, 1);\n });\n return i5 && (Array.isArray(i5) ? i5.push(s4) : i5.add(s4)), s4;\n }, this._event);\n }\n fire(t) {\n if (!this._disposed) switch (this._listeners.length) {\n case 0:\n return;\n case 1: {\n let { fn: e, thisArgs: i5 } = this._listeners[0];\n e.call(i5, t);\n return;\n }\n default: {\n let e = this._listeners.slice();\n for (let { fn: i5, thisArgs: r } of e) i5.call(r, t);\n }\n }\n }\n dispose() {\n this._disposed || (this._disposed = true, this._listeners.length = 0);\n }\n };\n var X2;\n ((r) => {\n function n11(s4, o2) {\n return s4((a2) => o2.fire(a2));\n }\n r.forward = n11;\n function t(s4, o2) {\n return (a2, l4, h3) => s4((d3) => a2.call(l4, o2(d3)), void 0, h3);\n }\n r.map = t;\n function e(...s4) {\n return (o2, a2, l4) => {\n let h3 = new we2();\n for (let d3 of s4) h3.add(d3((c2) => o2.call(a2, c2)));\n return l4 && (Array.isArray(l4) ? l4.push(h3) : l4.add(h3)), h3;\n };\n }\n r.any = e;\n function i5(s4, o2, a2) {\n return o2(a2), s4((l4) => o2(l4));\n }\n r.runAndSubscribe = i5;\n })(X2 ||= {});\n var ts = class n5 {\n constructor(t, e, i5, r, s4, o2, a2) {\n this._forceIntegerValues = t;\n this._scrollStateBrand = void 0;\n this._forceIntegerValues && (e = e | 0, i5 = i5 | 0, r = r | 0, s4 = s4 | 0, o2 = o2 | 0, a2 = a2 | 0), this.rawScrollLeft = r, this.rawScrollTop = a2, e < 0 && (e = 0), r + e > i5 && (r = i5 - e), r < 0 && (r = 0), s4 < 0 && (s4 = 0), a2 + s4 > o2 && (a2 = o2 - s4), a2 < 0 && (a2 = 0), this.width = e, this.scrollWidth = i5, this.scrollLeft = r, this.height = s4, this.scrollHeight = o2, this.scrollTop = a2;\n }\n equals(t) {\n return this.rawScrollLeft === t.rawScrollLeft && this.rawScrollTop === t.rawScrollTop && this.width === t.width && this.scrollWidth === t.scrollWidth && this.scrollLeft === t.scrollLeft && this.height === t.height && this.scrollHeight === t.scrollHeight && this.scrollTop === t.scrollTop;\n }\n withScrollDimensions(t, e) {\n return new n5(this._forceIntegerValues, typeof t.width < "u" ? t.width : this.width, typeof t.scrollWidth < "u" ? t.scrollWidth : this.scrollWidth, e ? this.rawScrollLeft : this.scrollLeft, typeof t.height < "u" ? t.height : this.height, typeof t.scrollHeight < "u" ? t.scrollHeight : this.scrollHeight, e ? this.rawScrollTop : this.scrollTop);\n }\n withScrollPosition(t) {\n return new n5(this._forceIntegerValues, this.width, this.scrollWidth, typeof t.scrollLeft < "u" ? t.scrollLeft : this.rawScrollLeft, this.height, this.scrollHeight, typeof t.scrollTop < "u" ? t.scrollTop : this.rawScrollTop);\n }\n createScrollEvent(t, e) {\n let i5 = this.width !== t.width, r = this.scrollWidth !== t.scrollWidth, s4 = this.scrollLeft !== t.scrollLeft, o2 = this.height !== t.height, a2 = this.scrollHeight !== t.scrollHeight, l4 = this.scrollTop !== t.scrollTop;\n return { inSmoothScrolling: e, oldWidth: t.width, oldScrollWidth: t.scrollWidth, oldScrollLeft: t.scrollLeft, width: this.width, scrollWidth: this.scrollWidth, scrollLeft: this.scrollLeft, oldHeight: t.height, oldScrollHeight: t.scrollHeight, oldScrollTop: t.scrollTop, height: this.height, scrollHeight: this.scrollHeight, scrollTop: this.scrollTop, widthChanged: i5, scrollWidthChanged: r, scrollLeftChanged: s4, heightChanged: o2, scrollHeightChanged: a2, scrollTopChanged: l4 };\n }\n };\n var ht2 = class extends g5 {\n constructor(e) {\n super();\n this._scrollableBrand = void 0;\n this._onScroll = this._register(new v5());\n this.onScroll = this._onScroll.event;\n this._smoothScrollDuration = e.smoothScrollDuration, this._scheduleAtNextAnimationFrame = e.scheduleAtNextAnimationFrame, this._state = new ts(e.forceIntegerValues, 0, 0, 0, 0, 0, 0), this._smoothScrolling = null;\n }\n dispose() {\n this._smoothScrolling && (this._smoothScrolling.dispose(), this._smoothScrolling = null), super.dispose();\n }\n setSmoothScrollDuration(e) {\n this._smoothScrollDuration = e;\n }\n validateScrollPosition(e) {\n return this._state.withScrollPosition(e);\n }\n getScrollDimensions() {\n return this._state;\n }\n setScrollDimensions(e, i5) {\n let r = this._state.withScrollDimensions(e, i5);\n this._setState(r, !!this._smoothScrolling), this._smoothScrolling?.acceptScrollDimensions(this._state);\n }\n getFutureScrollPosition() {\n return this._smoothScrolling ? this._smoothScrolling.to : this._state;\n }\n getCurrentScrollPosition() {\n return this._state;\n }\n setScrollPositionNow(e) {\n let i5 = this._state.withScrollPosition(e);\n this._smoothScrolling && (this._smoothScrolling.dispose(), this._smoothScrolling = null), this._setState(i5, false);\n }\n setScrollPositionSmooth(e, i5) {\n if (this._smoothScrollDuration === 0) {\n this.setScrollPositionNow(e);\n return;\n }\n if (this._smoothScrolling) {\n e = { scrollLeft: typeof e.scrollLeft > "u" ? this._smoothScrolling.to.scrollLeft : e.scrollLeft, scrollTop: typeof e.scrollTop > "u" ? this._smoothScrolling.to.scrollTop : e.scrollTop };\n let r = this._state.withScrollPosition(e);\n if (this._smoothScrolling.to.scrollLeft === r.scrollLeft && this._smoothScrolling.to.scrollTop === r.scrollTop) return;\n let s4;\n i5 ? s4 = new qt2(this._smoothScrolling.from, r, this._smoothScrolling.startTime, this._smoothScrolling.duration) : s4 = qt2.start(this._state, r, this._smoothScrollDuration), this._smoothScrolling.dispose(), this._smoothScrolling = s4;\n } else {\n let r = this._state.withScrollPosition(e);\n this._smoothScrolling = qt2.start(this._state, r, this._smoothScrollDuration);\n }\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\n this._smoothScrolling && (this._smoothScrolling.animationFrameDisposable = null, this._performSmoothScrolling());\n });\n }\n hasPendingScrollAnimation() {\n return !!this._smoothScrolling;\n }\n _performSmoothScrolling() {\n if (!this._smoothScrolling) return;\n let e = this._smoothScrolling.tick(), i5 = this._state.withScrollPosition(e);\n if (this._setState(i5, true), !!this._smoothScrolling) {\n if (e.isDone) {\n this._smoothScrolling.dispose(), this._smoothScrolling = null;\n return;\n }\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\n this._smoothScrolling && (this._smoothScrolling.animationFrameDisposable = null, this._performSmoothScrolling());\n });\n }\n }\n _setState(e, i5) {\n let r = this._state;\n r.equals(e) || (this._state = e, this._onScroll.fire(this._state.createScrollEvent(r, i5)));\n }\n };\n var Li = class {\n constructor(t, e, i5) {\n this.scrollLeft = t, this.scrollTop = e, this.isDone = i5;\n }\n };\n function es(n11, t) {\n let e = t - n11;\n return function(i5) {\n return n11 + e * lo(i5);\n };\n }\n function oo(n11, t, e) {\n return function(i5) {\n return i5 < e ? n11(i5 / e) : t((i5 - e) / (1 - e));\n };\n }\n var qt2 = class n6 {\n constructor(t, e, i5, r) {\n this.from = t, this.to = e, this.duration = r, this.startTime = i5, this.animationFrameDisposable = null, this._initAnimations();\n }\n _initAnimations() {\n this._scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width), this._scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height);\n }\n _initAnimation(t, e, i5) {\n if (Math.abs(t - e) > 2.5 * i5) {\n let s4, o2;\n return t < e ? (s4 = t + 0.75 * i5, o2 = e - 0.75 * i5) : (s4 = t - 0.75 * i5, o2 = e + 0.75 * i5), oo(es(t, s4), es(o2, e), 0.33);\n }\n return es(t, e);\n }\n dispose() {\n this.animationFrameDisposable !== null && (this.animationFrameDisposable.dispose(), this.animationFrameDisposable = null);\n }\n acceptScrollDimensions(t) {\n this.to = t.withScrollPosition(this.to), this._initAnimations();\n }\n tick() {\n return this._tick(Date.now());\n }\n _tick(t) {\n let e = (t - this.startTime) / this.duration;\n if (e < 1) {\n let i5 = this._scrollLeft(e), r = this._scrollTop(e);\n return new Li(i5, r, false);\n }\n return new Li(this.to.scrollLeft, this.to.scrollTop, true);\n }\n static start(t, e, i5) {\n i5 = i5 + 10;\n let r = Date.now() - 10;\n return new n6(t, e, r, i5);\n }\n };\n function ao(n11) {\n return Math.pow(n11, 3);\n }\n function lo(n11) {\n return 1 - ao(1 - n11);\n }\n var Ai = class extends g5 {\n constructor(t, e, i5) {\n super(), this._visibility = t, this._visibleClassName = e, this._invisibleClassName = i5, this._domNode = null, this._isVisible = false, this._isNeeded = false, this._rawShouldBeVisible = false, this._shouldBeVisible = false, this._revealTimer = this._register(new Ne3());\n }\n setVisibility(t) {\n this._visibility !== t && (this._visibility = t, this._updateShouldBeVisible());\n }\n setShouldBeVisible(t) {\n this._rawShouldBeVisible = t, this._updateShouldBeVisible();\n }\n _applyVisibilitySetting() {\n return this._visibility === 2 ? false : this._visibility === 3 ? true : this._rawShouldBeVisible;\n }\n _updateShouldBeVisible() {\n let t = this._applyVisibilitySetting();\n this._shouldBeVisible !== t && (this._shouldBeVisible = t, this.ensureVisibility());\n }\n setIsNeeded(t) {\n this._isNeeded !== t && (this._isNeeded = t, this.ensureVisibility());\n }\n setDomNode(t) {\n this._domNode = t, this._domNode.setClassName(this._invisibleClassName), this.setShouldBeVisible(false);\n }\n ensureVisibility() {\n if (!this._isNeeded) {\n this._hide(false);\n return;\n }\n this._shouldBeVisible ? this._reveal() : this._hide(true);\n }\n _reveal() {\n this._isVisible || (this._isVisible = true, this._revealTimer.setIfNotSet(() => {\n this._domNode?.setClassName(this._visibleClassName);\n }, 0));\n }\n _hide(t) {\n this._revealTimer.cancel(), this._isVisible && (this._isVisible = false, this._domNode?.setClassName(this._invisibleClassName + (t ? " xterm-fade" : "")));\n }\n };\n var co = 140;\n var dt2 = class extends Fe3 {\n constructor(t) {\n super(), this._lazyRender = t.lazyRender, this._host = t.host, this._scrollable = t.scrollable, this._scrollByPage = t.scrollByPage, this._scrollbarState = t.scrollbarState, this._visibilityController = this._register(new Ai(t.visibility, "xterm-visible xterm-scrollbar " + t.extraScrollbarClassName, "xterm-invisible xterm-scrollbar " + t.extraScrollbarClassName)), this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._pointerMoveMonitor = this._register(new ct3()), this._shouldRender = true, this.domNode = new Te3(document.createElement("div")), this.domNode.setAttribute("role", "presentation"), this.domNode.setAttribute("aria-hidden", "true"), this._visibilityController.setDomNode(this.domNode), this.domNode.setPosition("absolute"), this._register(C3(this.domNode.domNode, ae3.POINTER_DOWN, (e) => this._domNodePointerDown(e)));\n }\n _createArrow(t) {\n let e = this._register(new Ri(t));\n return this.domNode.domNode.appendChild(e.bgDomNode), this.domNode.domNode.appendChild(e.domNode), e;\n }\n _createSlider(t, e, i5, r) {\n this.slider = new Te3(document.createElement("div")), this.slider.setClassName("xterm-slider"), this.slider.setPosition("absolute"), this.slider.setTop(t), this.slider.setLeft(e), typeof i5 == "number" && this.slider.setWidth(i5), typeof r == "number" && this.slider.setHeight(r), this.slider.setLayerHinting(true), this.slider.setContain("strict"), this.domNode.domNode.appendChild(this.slider.domNode), this._register(C3(this.slider.domNode, ae3.POINTER_DOWN, (s4) => {\n s4.button === 0 && (s4.preventDefault(), this._sliderPointerDown(s4));\n })), this._onclick(this.slider.domNode, (s4) => {\n s4.leftButton && s4.stopPropagation();\n });\n }\n _handleElementSize(t) {\n return this._scrollbarState.setVisibleSize(t) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = true, this._lazyRender || this.render()), this._shouldRender;\n }\n _handleElementScrollSize(t) {\n return this._scrollbarState.setScrollSize(t) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = true, this._lazyRender || this.render()), this._shouldRender;\n }\n _handleElementScrollPosition(t) {\n return this._scrollbarState.setScrollPosition(t) && (this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()), this._shouldRender = true, this._lazyRender || this.render()), this._shouldRender;\n }\n beginReveal() {\n this._visibilityController.setShouldBeVisible(true);\n }\n beginHide() {\n this._visibilityController.setShouldBeVisible(false);\n }\n render() {\n this._shouldRender && (this._shouldRender = false, this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize()), this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition()));\n }\n _domNodePointerDown(t) {\n t.target === this.domNode.domNode && this._handlePointerDown(t);\n }\n delegatePointerDown(t) {\n let e = this.domNode.domNode.getClientRects()[0].top, i5 = e + this._scrollbarState.getSliderPosition(), r = e + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize(), s4 = this._sliderPointerPosition(t);\n i5 <= s4 && s4 <= r ? t.button === 0 && (t.preventDefault(), this._sliderPointerDown(t)) : this._handlePointerDown(t);\n }\n _handlePointerDown(t) {\n let e, i5;\n if (t.target === this.domNode.domNode && typeof t.offsetX == "number" && typeof t.offsetY == "number") e = t.offsetX, i5 = t.offsetY;\n else {\n let s4 = en(this.domNode.domNode);\n e = t.pageX - s4.left, i5 = t.pageY - s4.top;\n }\n let r = this._pointerDownRelativePosition(e, i5);\n this._setDesiredScrollPositionNow(this._scrollByPage ? this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(r) : this._scrollbarState.getDesiredScrollPositionFromOffset(r)), t.button === 0 && (t.preventDefault(), this._sliderPointerDown(t));\n }\n _sliderPointerDown(t) {\n if (!t.target || !(t.target instanceof Element)) return;\n let e = this._sliderPointerPosition(t), i5 = this._sliderOrthogonalPointerPosition(t), r = this._scrollbarState.clone();\n this.slider.toggleClassName("xterm-active", true), this._pointerMoveMonitor.startMonitoring(t.target, t.pointerId, t.buttons, (s4) => {\n let o2 = this._sliderOrthogonalPointerPosition(s4), a2 = Math.abs(o2 - i5);\n if (Ke3 && a2 > co) {\n this._setDesiredScrollPositionNow(r.getScrollPosition());\n return;\n }\n let h3 = this._sliderPointerPosition(s4) - e;\n this._setDesiredScrollPositionNow(r.getDesiredScrollPositionFromDelta(h3));\n }, () => {\n this.slider.toggleClassName("xterm-active", false), this._host.handleDragEnd();\n }), this._host.handleDragStart();\n }\n _setDesiredScrollPositionNow(t) {\n let e = {};\n this.writeScrollPosition(e, t), this._scrollable.setScrollPositionNow(e);\n }\n updateScrollbarSize(t) {\n this._updateScrollbarSize(t), this._scrollbarState.setScrollbarSize(t), this._shouldRender = true, this._lazyRender || this.render();\n }\n isNeeded() {\n return this._scrollbarState.isNeeded();\n }\n };\n var ut3 = class n7 {\n constructor(t, e, i5, r, s4, o2) {\n this._scrollbarSize = Math.round(e), this._oppositeScrollbarSize = Math.round(i5), this._arrowSize = Math.round(t), this._visibleSize = r, this._scrollSize = s4, this._scrollPosition = o2, this._computedAvailableSize = 0, this._computedIsNeeded = false, this._computedSliderSize = 0, this._computedSliderRatio = 0, this._computedSliderPosition = 0, this._refreshComputedValues();\n }\n clone() {\n return new n7(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n }\n setVisibleSize(t) {\n let e = Math.round(t);\n return this._visibleSize !== e ? (this._visibleSize = e, this._refreshComputedValues(), true) : false;\n }\n setScrollSize(t) {\n let e = Math.round(t);\n return this._scrollSize !== e ? (this._scrollSize = e, this._refreshComputedValues(), true) : false;\n }\n setScrollPosition(t) {\n let e = Math.round(t);\n return this._scrollPosition !== e ? (this._scrollPosition = e, this._refreshComputedValues(), true) : false;\n }\n setScrollbarSize(t) {\n this._scrollbarSize = Math.round(t);\n }\n setArrowSize(t) {\n let e = Math.round(t);\n this._arrowSize !== e && (this._arrowSize = e, this._refreshComputedValues());\n }\n setOppositeScrollbarSize(t) {\n this._oppositeScrollbarSize = Math.round(t);\n }\n static _computeValues(t, e, i5, r, s4) {\n let o2 = Math.max(0, i5 - t), a2 = Math.max(0, o2 - 2 * e), l4 = r > 0 && r > i5;\n if (!l4) return { computedAvailableSize: Math.round(o2), computedIsNeeded: l4, computedSliderSize: Math.round(a2), computedSliderRatio: 0, computedSliderPosition: 0 };\n let h3 = Math.round(Math.max(20, Math.floor(i5 * a2 / r))), d3 = (a2 - h3) / (r - i5), c2 = s4 * d3;\n return { computedAvailableSize: Math.round(o2), computedIsNeeded: l4, computedSliderSize: Math.round(h3), computedSliderRatio: d3, computedSliderPosition: Math.round(c2) };\n }\n _refreshComputedValues() {\n let t = n7._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);\n this._computedAvailableSize = t.computedAvailableSize, this._computedIsNeeded = t.computedIsNeeded, this._computedSliderSize = t.computedSliderSize, this._computedSliderRatio = t.computedSliderRatio, this._computedSliderPosition = t.computedSliderPosition;\n }\n getArrowSize() {\n return this._arrowSize;\n }\n getScrollPosition() {\n return this._scrollPosition;\n }\n getRectangleLargeSize() {\n return this._computedAvailableSize;\n }\n getRectangleSmallSize() {\n return this._scrollbarSize;\n }\n isNeeded() {\n return this._computedIsNeeded;\n }\n getSliderSize() {\n return this._computedSliderSize;\n }\n getSliderPosition() {\n return this._computedSliderPosition;\n }\n getDesiredScrollPositionFromOffset(t) {\n if (!this._computedIsNeeded) return 0;\n let e = t - this._arrowSize - this._computedSliderSize / 2;\n return Math.round(e / this._computedSliderRatio);\n }\n getDesiredScrollPositionFromOffsetPaged(t) {\n if (!this._computedIsNeeded) return 0;\n let e = t - this._arrowSize, i5 = this._scrollPosition;\n return e < this._computedSliderPosition ? i5 -= this._visibleSize : i5 += this._visibleSize, i5;\n }\n getDesiredScrollPositionFromDelta(t) {\n if (!this._computedIsNeeded) return 0;\n let e = this._computedSliderPosition + t;\n return Math.round(e / this._computedSliderRatio);\n }\n };\n var Pi = class extends dt2 {\n constructor(t, e, i5) {\n let r = t.getScrollDimensions(), s4 = t.getCurrentScrollPosition();\n if (super({ lazyRender: e.lazyRender, host: i5, scrollbarState: new ut3(e.horizontalHasArrows ? e.horizontalScrollbarSize : 0, e.horizontal === 2 ? 0 : e.horizontalScrollbarSize, e.vertical === 2 ? 0 : e.verticalScrollbarSize, r.width, r.scrollWidth, s4.scrollLeft), visibility: e.horizontal, extraScrollbarClassName: "xterm-horizontal", scrollable: t, scrollByPage: e.scrollByPage }), e.horizontalHasArrows) throw new Error("horizontalHasArrows is not supported in xterm.js");\n this._createSlider(Math.floor((e.horizontalScrollbarSize - e.horizontalSliderSize) / 2), 0, void 0, e.horizontalSliderSize);\n }\n _updateSlider(t, e) {\n this.slider.setWidth(t), this.slider.setLeft(e);\n }\n _renderDomNode(t, e) {\n this.domNode.setWidth(t), this.domNode.setHeight(e), this.domNode.setLeft(0), this.domNode.setBottom(0);\n }\n handleScroll(t) {\n return this._shouldRender = this._handleElementScrollSize(t.scrollWidth) || this._shouldRender, this._shouldRender = this._handleElementScrollPosition(t.scrollLeft) || this._shouldRender, this._shouldRender = this._handleElementSize(t.width) || this._shouldRender, this._shouldRender;\n }\n _pointerDownRelativePosition(t, e) {\n return t;\n }\n _sliderPointerPosition(t) {\n return t.pageX;\n }\n _sliderOrthogonalPointerPosition(t) {\n return t.pageY;\n }\n _updateScrollbarSize(t) {\n this.slider.setHeight(t);\n }\n writeScrollPosition(t, e) {\n t.scrollLeft = e;\n }\n updateOptions(t) {\n this.updateScrollbarSize(t.horizontal === 2 ? 0 : t.horizontalScrollbarSize), this._scrollbarState.setOppositeScrollbarSize(t.vertical === 2 ? 0 : t.verticalScrollbarSize), this._visibilityController.setVisibility(t.horizontal), this._scrollByPage = t.scrollByPage;\n }\n };\n var Mi = class extends dt2 {\n constructor(e, i5, r) {\n let s4 = e.getScrollDimensions(), o2 = e.getCurrentScrollPosition(), a2 = i5.verticalHasArrows;\n super({ lazyRender: i5.lazyRender, host: r, scrollbarState: new ut3(a2 ? i5.verticalScrollbarSize : 0, i5.vertical === 2 ? 0 : i5.verticalScrollbarSize, 0, s4.height, s4.scrollHeight, o2.scrollTop), visibility: i5.vertical, extraScrollbarClassName: "xterm-vertical", scrollable: e, scrollByPage: i5.scrollByPage });\n this._arrowScrollDelta = 0;\n this._setArrows(a2, i5.verticalScrollbarSize), this._createSlider(0, Math.floor((i5.verticalScrollbarSize - i5.verticalSliderSize) / 2), i5.verticalSliderSize, void 0);\n }\n _updateSlider(e, i5) {\n this.slider.setHeight(e), this.slider.setTop(i5);\n }\n _renderDomNode(e, i5) {\n this.domNode.setWidth(i5), this.domNode.setHeight(e), this.domNode.setRight(0), this.domNode.setTop(0);\n }\n handleScroll(e) {\n return this._shouldRender = this._handleElementScrollSize(e.scrollHeight) || this._shouldRender, this._shouldRender = this._handleElementScrollPosition(e.scrollTop) || this._shouldRender, this._shouldRender = this._handleElementSize(e.height) || this._shouldRender, this._shouldRender;\n }\n _pointerDownRelativePosition(e, i5) {\n return i5;\n }\n _sliderPointerPosition(e) {\n return e.pageY;\n }\n _sliderOrthogonalPointerPosition(e) {\n return e.pageX;\n }\n _updateScrollbarSize(e) {\n this.slider.setWidth(e);\n }\n writeScrollPosition(e, i5) {\n e.scrollTop = i5;\n }\n _arrowScroll(e) {\n let i5 = this._scrollable.getCurrentScrollPosition();\n this._scrollable.setScrollPositionNow({ scrollTop: i5.scrollTop + e });\n }\n _setArrows(e, i5) {\n if (this._arrowScrollDelta = i5, (!this._arrowUp || !this._arrowDown) && (this._arrowUp = this._createArrow({ className: "xterm-scra xterm-arrow-up", top: 0, left: 0, bgWidth: i5, bgHeight: i5, handleActivate: () => this._arrowScroll(-this._arrowScrollDelta) }), this._arrowDown = this._createArrow({ className: "xterm-scra xterm-arrow-down", bottom: 0, left: 0, bgWidth: i5, bgHeight: i5, handleActivate: () => this._arrowScroll(this._arrowScrollDelta) })), this._updateArrowSize(this._arrowUp, i5), this._updateArrowSize(this._arrowDown, i5), !this._arrowUp || !this._arrowDown) return;\n let r = e ? "" : "none";\n this._arrowUp.bgDomNode.style.display = r, this._arrowUp.domNode.style.display = r, this._arrowDown.bgDomNode.style.display = r, this._arrowDown.domNode.style.display = r;\n }\n _updateArrowSize(e, i5) {\n e && (e.bgDomNode.style.width = `${i5}px`, e.bgDomNode.style.height = `${i5}px`, e.domNode.style.width = `${i5}px`, e.domNode.style.height = `${i5}px`);\n }\n updateOptions(e) {\n let i5 = e.verticalHasArrows ? e.verticalScrollbarSize : 0;\n this._scrollbarState.setArrowSize(i5), this._setArrows(e.verticalHasArrows, e.verticalScrollbarSize), this.updateScrollbarSize(e.vertical === 2 ? 0 : e.verticalScrollbarSize), this._scrollbarState.setOppositeScrollbarSize(0), this._visibilityController.setVisibility(e.vertical), this._scrollByPage = e.scrollByPage;\n }\n };\n var ho = 500;\n var sn = 50;\n var is = class {\n constructor(t, e, i5) {\n this.timestamp = t, this.deltaX = e, this.deltaY = i5, this.score = 0;\n }\n };\n var Oi = class Oi2 {\n constructor() {\n this._capacity = 5, this._memory = [], this._front = -1, this._rear = -1;\n }\n isPhysicalMouseWheel() {\n if (this._front === -1 && this._rear === -1) return false;\n let t = 1, e = 0, i5 = 1, r = this._rear;\n for (; r !== -1; ) {\n let s4 = r === this._front ? t : Math.pow(2, -i5);\n if (t -= s4, e += this._memory[r].score * s4, r === this._front) break;\n r = (this._capacity + r - 1) % this._capacity, i5++;\n }\n return e <= 0.5;\n }\n acceptStandardWheelEvent(t) {\n if (Gt2) {\n let e = oe3(t.browserEvent), i5 = Zr(e);\n this.accept(Date.now(), t.deltaX * i5, t.deltaY * i5);\n } else this.accept(Date.now(), t.deltaX, t.deltaY);\n }\n accept(t, e, i5) {\n let r = null, s4 = new is(t, e, i5);\n this._front === -1 && this._rear === -1 ? (this._memory[0] = s4, this._front = 0, this._rear = 0) : (r = this._memory[this._rear], this._rear = (this._rear + 1) % this._capacity, this._rear === this._front && (this._front = (this._front + 1) % this._capacity), this._memory[this._rear] = s4), s4.score = this._computeScore(s4, r);\n }\n _computeScore(t, e) {\n if (Math.abs(t.deltaX) > 0 && Math.abs(t.deltaY) > 0) return 1;\n let i5 = 0.5;\n if ((!this._isAlmostInt(t.deltaX) || !this._isAlmostInt(t.deltaY)) && (i5 += 0.25), e) {\n let r = Math.abs(t.deltaX), s4 = Math.abs(t.deltaY), o2 = Math.abs(e.deltaX), a2 = Math.abs(e.deltaY), l4 = Math.max(Math.min(r, o2), 1), h3 = Math.max(Math.min(s4, a2), 1), d3 = Math.max(r, o2), c2 = Math.max(s4, a2);\n d3 % l4 === 0 && c2 % h3 === 0 && (i5 -= 0.5);\n }\n return Math.min(Math.max(i5, 0), 1);\n }\n _isAlmostInt(t) {\n return Math.abs(Math.round(t) - t) < 0.01;\n }\n };\n Oi.INSTANCE = new Oi();\n var rs = Oi;\n var Bi = class extends Fe3 {\n constructor(e, i5, r) {\n super();\n this._onScroll = this._register(new v5());\n this.onScroll = this._onScroll.event;\n i5 = i5 ?? {};\n let s4, o2 = !r;\n r ? s4 = r : (i5.mouseWheelSmoothScroll = false, s4 = new ht2({ forceIntegerValues: true, smoothScrollDuration: 0, scheduleAtNextAnimationFrame: (l4) => rt3(oe3(e), l4) })), this._options = uo(i5), this._scrollable = s4, this._register(this._scrollable.onScroll((l4) => {\n this._handleScroll(l4), this._onScroll.fire(l4);\n })), o2 && this._register(this._scrollable);\n let a2 = { handleMouseWheel: (l4) => this._handleMouseWheel(l4), handleDragStart: () => this._handleDragStart(), handleDragEnd: () => this._handleDragEnd() };\n this._verticalScrollbar = this._register(new Mi(this._scrollable, this._options, a2)), this._horizontalScrollbar = this._register(new Pi(this._scrollable, this._options, a2)), this._domNode = document.createElement("div"), this._domNode.className = "xterm-scrollable-element " + this._options.className, this._domNode.setAttribute("role", "presentation"), this._domNode.style.position = "relative", this._domNode.appendChild(e), this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode), this._domNode.appendChild(this._verticalScrollbar.domNode.domNode), this._options.useShadows ? (this._leftShadowDomNode = new Te3(document.createElement("div")), this._leftShadowDomNode.setClassName("xterm-shadow"), this._domNode.appendChild(this._leftShadowDomNode.domNode), this._topShadowDomNode = new Te3(document.createElement("div")), this._topShadowDomNode.setClassName("xterm-shadow"), this._domNode.appendChild(this._topShadowDomNode.domNode), this._topLeftShadowDomNode = new Te3(document.createElement("div")), this._topLeftShadowDomNode.setClassName("xterm-shadow"), this._domNode.appendChild(this._topLeftShadowDomNode.domNode)) : (this._leftShadowDomNode = null, this._topShadowDomNode = null, this._topLeftShadowDomNode = null), this._listenOnDomNode = this._options.listenOnDomNode ?? this._domNode, this._mouseWheelToDispose = [], this._setListeningToMouseWheel(this._options.handleMouseWheel), this._onmouseover(this._listenOnDomNode, (l4) => this._handleMouseOver(l4)), this._onmouseleave(this._listenOnDomNode, (l4) => this._handleMouseLeave(l4)), this._hideTimeout = this._register(new Ne3()), this._isDragging = false, this._mouseIsOver = false, this._shouldRender = true, this._revealOnScroll = true;\n }\n get options() {\n return this._options;\n }\n dispose() {\n this._mouseWheelToDispose = Oe2(this._mouseWheelToDispose), super.dispose();\n }\n getDomNode() {\n return this._domNode;\n }\n getScrollDimensions() {\n return this._scrollable.getScrollDimensions();\n }\n setScrollDimensions(e) {\n this._scrollable.setScrollDimensions(e, false);\n }\n setScrollPosition(e) {\n e.reuseAnimation ? this._scrollable.setScrollPositionSmooth(e, e.reuseAnimation) : this._scrollable.setScrollPositionNow(e);\n }\n getScrollPosition() {\n return this._scrollable.getCurrentScrollPosition();\n }\n updateClassName(e) {\n this._options.className = e, ee3 && (this._options.className += " xterm-mac"), this._domNode.className = "xterm-scrollable-element " + this._options.className;\n }\n updateOptions(e) {\n typeof e.handleMouseWheel < "u" && (this._options.handleMouseWheel = e.handleMouseWheel, this._setListeningToMouseWheel(this._options.handleMouseWheel)), typeof e.mouseWheelScrollSensitivity < "u" && (this._options.mouseWheelScrollSensitivity = e.mouseWheelScrollSensitivity), typeof e.fastScrollSensitivity < "u" && (this._options.fastScrollSensitivity = e.fastScrollSensitivity), typeof e.scrollPredominantAxis < "u" && (this._options.scrollPredominantAxis = e.scrollPredominantAxis), typeof e.horizontal < "u" && (this._options.horizontal = e.horizontal), typeof e.vertical < "u" && (this._options.vertical = e.vertical), typeof e.horizontalHasArrows < "u" && (this._options.horizontalHasArrows = e.horizontalHasArrows), typeof e.verticalHasArrows < "u" && (this._options.verticalHasArrows = e.verticalHasArrows), typeof e.horizontalScrollbarSize < "u" && (this._options.horizontalScrollbarSize = e.horizontalScrollbarSize), typeof e.verticalScrollbarSize < "u" && (this._options.verticalScrollbarSize = e.verticalScrollbarSize), typeof e.scrollByPage < "u" && (this._options.scrollByPage = e.scrollByPage), this._horizontalScrollbar.updateOptions(this._options), this._verticalScrollbar.updateOptions(this._options), this._options.lazyRender || this._render();\n }\n delegateScrollFromMouseWheelEvent(e) {\n this._handleMouseWheel(new Vt2(e));\n }\n _setListeningToMouseWheel(e) {\n if (this._mouseWheelToDispose.length > 0 !== e && (this._mouseWheelToDispose = Oe2(this._mouseWheelToDispose), e)) {\n let r = (s4) => {\n this._handleMouseWheel(new Vt2(s4));\n };\n this._mouseWheelToDispose.push(C3(this._listenOnDomNode, ae3.MOUSE_WHEEL, r, { passive: false }));\n }\n }\n _handleMouseWheel(e) {\n if (e.browserEvent?.defaultPrevented) return;\n let i5 = rs.INSTANCE;\n i5.acceptStandardWheelEvent(e);\n let r = false;\n if (e.deltaY || e.deltaX) {\n let o2 = e.deltaY * this._options.mouseWheelScrollSensitivity, a2 = e.deltaX * this._options.mouseWheelScrollSensitivity;\n this._options.scrollPredominantAxis && (this._options.scrollYToX && a2 + o2 === 0 ? a2 = o2 = 0 : Math.abs(o2) >= Math.abs(a2) ? a2 = 0 : o2 = 0), this._options.flipAxes && ([o2, a2] = [a2, o2]);\n let l4 = !ee3 && e.browserEvent && e.browserEvent.shiftKey;\n (this._options.scrollYToX || l4) && !a2 && (a2 = o2, o2 = 0), e.browserEvent && e.browserEvent.altKey && (a2 = a2 * this._options.fastScrollSensitivity, o2 = o2 * this._options.fastScrollSensitivity);\n let h3 = this._scrollable.getFutureScrollPosition(), d3 = {};\n if (o2) {\n let c2 = sn * o2, u3 = h3.scrollTop - (c2 < 0 ? Math.floor(c2) : Math.ceil(c2));\n this._verticalScrollbar.writeScrollPosition(d3, u3);\n }\n if (a2) {\n let c2 = sn * a2, u3 = h3.scrollLeft - (c2 < 0 ? Math.floor(c2) : Math.ceil(c2));\n this._horizontalScrollbar.writeScrollPosition(d3, u3);\n }\n d3 = this._scrollable.validateScrollPosition(d3), (h3.scrollLeft !== d3.scrollLeft || h3.scrollTop !== d3.scrollTop) && (this._options.mouseWheelSmoothScroll && i5.isPhysicalMouseWheel() ? this._scrollable.setScrollPositionSmooth(d3) : this._scrollable.setScrollPositionNow(d3), r = true);\n }\n let s4 = r;\n !s4 && this._options.alwaysConsumeMouseWheel && (s4 = true), !s4 && this._options.consumeMouseWheelIfScrollbarIsNeeded && (this._verticalScrollbar.isNeeded() || this._horizontalScrollbar.isNeeded()) && (s4 = true), s4 && (e.preventDefault(), e.stopPropagation());\n }\n _handleScroll(e) {\n this._shouldRender = this._horizontalScrollbar.handleScroll(e) || this._shouldRender, this._shouldRender = this._verticalScrollbar.handleScroll(e) || this._shouldRender, this._options.useShadows && (this._shouldRender = true), this._revealOnScroll && this._reveal(), this._options.lazyRender || this._render();\n }\n renderNow() {\n if (!this._options.lazyRender) throw new Error("Please use `lazyRender` together with `renderNow`!");\n this._render();\n }\n _render() {\n if (this._shouldRender && (this._shouldRender = false, this._horizontalScrollbar.render(), this._verticalScrollbar.render(), this._options.useShadows)) {\n let e = this._scrollable.getCurrentScrollPosition(), i5 = e.scrollTop > 0, r = e.scrollLeft > 0, s4 = r ? " xterm-shadow-left" : "", o2 = i5 ? " xterm-shadow-top" : "", a2 = r || i5 ? " xterm-shadow-top-left-corner" : "";\n this._leftShadowDomNode.setClassName(`xterm-shadow${s4}`), this._topShadowDomNode.setClassName(`xterm-shadow${o2}`), this._topLeftShadowDomNode.setClassName(`xterm-shadow${a2}${o2}${s4}`);\n }\n }\n _handleDragStart() {\n this._isDragging = true, this._reveal();\n }\n _handleDragEnd() {\n this._isDragging = false, this._hide();\n }\n _handleMouseLeave(e) {\n this._mouseIsOver = false, this._hide();\n }\n _handleMouseOver(e) {\n this._mouseIsOver = true, this._reveal();\n }\n _reveal() {\n this._verticalScrollbar.beginReveal(), this._horizontalScrollbar.beginReveal(), this._scheduleHide();\n }\n _hide() {\n !this._mouseIsOver && !this._isDragging && (this._verticalScrollbar.beginHide(), this._horizontalScrollbar.beginHide());\n }\n _scheduleHide() {\n !this._mouseIsOver && !this._isDragging && this._hideTimeout.cancelAndSet(() => this._hide(), ho);\n }\n };\n function uo(n11) {\n let t = { lazyRender: typeof n11.lazyRender < "u" ? n11.lazyRender : false, className: typeof n11.className < "u" ? n11.className : "", useShadows: typeof n11.useShadows < "u" ? n11.useShadows : true, handleMouseWheel: typeof n11.handleMouseWheel < "u" ? n11.handleMouseWheel : true, flipAxes: typeof n11.flipAxes < "u" ? n11.flipAxes : false, consumeMouseWheelIfScrollbarIsNeeded: typeof n11.consumeMouseWheelIfScrollbarIsNeeded < "u" ? n11.consumeMouseWheelIfScrollbarIsNeeded : false, alwaysConsumeMouseWheel: typeof n11.alwaysConsumeMouseWheel < "u" ? n11.alwaysConsumeMouseWheel : false, scrollYToX: typeof n11.scrollYToX < "u" ? n11.scrollYToX : false, mouseWheelScrollSensitivity: typeof n11.mouseWheelScrollSensitivity < "u" ? n11.mouseWheelScrollSensitivity : 1, fastScrollSensitivity: typeof n11.fastScrollSensitivity < "u" ? n11.fastScrollSensitivity : 5, scrollPredominantAxis: typeof n11.scrollPredominantAxis < "u" ? n11.scrollPredominantAxis : true, mouseWheelSmoothScroll: typeof n11.mouseWheelSmoothScroll < "u" ? n11.mouseWheelSmoothScroll : true, listenOnDomNode: typeof n11.listenOnDomNode < "u" ? n11.listenOnDomNode : null, horizontal: typeof n11.horizontal < "u" ? n11.horizontal : 1, horizontalScrollbarSize: typeof n11.horizontalScrollbarSize < "u" ? n11.horizontalScrollbarSize : 10, horizontalSliderSize: typeof n11.horizontalSliderSize < "u" ? n11.horizontalSliderSize : 0, horizontalHasArrows: typeof n11.horizontalHasArrows < "u" ? n11.horizontalHasArrows : false, vertical: typeof n11.vertical < "u" ? n11.vertical : 1, verticalScrollbarSize: typeof n11.verticalScrollbarSize < "u" ? n11.verticalScrollbarSize : 10, verticalHasArrows: typeof n11.verticalHasArrows < "u" ? n11.verticalHasArrows : false, verticalSliderSize: typeof n11.verticalSliderSize < "u" ? n11.verticalSliderSize : 0, scrollByPage: typeof n11.scrollByPage < "u" ? n11.scrollByPage : false };\n return t.horizontalSliderSize = typeof n11.horizontalSliderSize < "u" ? n11.horizontalSliderSize : t.horizontalScrollbarSize, t.verticalSliderSize = typeof n11.verticalSliderSize < "u" ? n11.verticalSliderSize : t.verticalScrollbarSize, ee3 && (t.className += " xterm-mac"), t;\n }\n var ft3 = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3, d3) {\n super();\n this._bufferService = r;\n this._coreService = o2;\n this._optionsService = h3;\n this._renderService = d3;\n this._onRequestScrollLines = this._register(new v5());\n this.onRequestScrollLines = this._onRequestScrollLines.event;\n this._isSyncing = false;\n this._isHandlingScroll = false;\n this._suppressOnScrollHandler = false;\n this._needsSyncOnRender = false;\n let c2 = this._register(new ht2({ forceIntegerValues: false, smoothScrollDuration: this._optionsService.rawOptions.smoothScrollDuration, scheduleAtNextAnimationFrame: (u3) => rt3(s4.window, u3) }));\n this._register(this._optionsService.onSpecificOptionChange("smoothScrollDuration", () => {\n c2.setSmoothScrollDuration(this._optionsService.rawOptions.smoothScrollDuration);\n })), this._scrollableElement = this._register(new Bi(i5, { vertical: 1, horizontal: 2, useShadows: false, mouseWheelSmoothScroll: true, verticalHasArrows: this._optionsService.rawOptions.scrollbar?.showArrows ?? false, ...this._getChangeOptions() }, c2)), this._register(this._optionsService.onMultipleOptionChange(["scrollSensitivity", "fastScrollSensitivity", "scrollbar"], () => this._scrollableElement.updateOptions(this._getChangeOptions()))), this._register(a2.onProtocolChange((u3) => {\n this._scrollableElement.updateOptions({ handleMouseWheel: !(u3 & 16) });\n })), this._scrollableElement.setScrollDimensions({ height: 0, scrollHeight: 0 }), this._register(X2.runAndSubscribe(l4.onChangeColors, () => {\n e.style.backgroundColor = l4.colors.background.css, this._scrollableElement.getDomNode().style.backgroundColor = l4.colors.background.css;\n })), e.appendChild(this._scrollableElement.getDomNode()), this._register(y4(() => this._scrollableElement.getDomNode().remove())), this._styleElement = s4.mainDocument.createElement("style"), i5.appendChild(this._styleElement), this._register(y4(() => this._styleElement.remove())), this._register(X2.runAndSubscribe(l4.onChangeColors, () => {\n this._styleElement.textContent = [".xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-slider {", ` background: ${l4.colors.scrollbarSliderBackground.css};`, "}", ".xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-slider:hover {", ` background: ${l4.colors.scrollbarSliderHoverBackground.css};`, "}", ".xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-slider.xterm-active {", ` background: ${l4.colors.scrollbarSliderActiveBackground.css};`, "}"].join(`\n`);\n })), this._register(this._bufferService.onResize(() => this.queueSync())), this._register(this._bufferService.buffers.onBufferActivate(() => {\n this._latestYDisp = void 0, this.queueSync();\n })), this._register(this._bufferService.onScroll(() => this._sync())), this._register(this._renderService.onRender(() => {\n this._needsSyncOnRender && (this._needsSyncOnRender = false, this._sync());\n })), this._register(this._scrollableElement.onScroll((u3) => this._handleScroll(u3)));\n }\n scrollLines(e) {\n let i5 = this._scrollableElement.getScrollPosition();\n this._scrollableElement.setScrollPosition({ reuseAnimation: true, scrollTop: i5.scrollTop + e * this._renderService.dimensions.css.cell.height });\n }\n scrollToLine(e, i5) {\n i5 && (this._latestYDisp = e), this._scrollableElement.setScrollPosition({ reuseAnimation: !i5, scrollTop: e * this._renderService.dimensions.css.cell.height });\n }\n _getChangeOptions() {\n let e = this._optionsService.rawOptions.scrollbar?.showScrollbar ?? true, i5 = this._optionsService.rawOptions.scrollbar?.showArrows ?? false, r = e ? this._optionsService.rawOptions.scrollbar?.width ?? 14 : 0;\n return { mouseWheelScrollSensitivity: this._optionsService.rawOptions.scrollSensitivity, fastScrollSensitivity: this._optionsService.rawOptions.fastScrollSensitivity, vertical: e ? 1 : 2, verticalScrollbarSize: r, verticalHasArrows: i5 };\n }\n queueSync(e) {\n e !== void 0 && (this._latestYDisp = e), this._queuedAnimationFrame === void 0 && (this._queuedAnimationFrame = this._renderService.addRefreshCallback(() => {\n this._queuedAnimationFrame = void 0, this._sync(this._latestYDisp);\n }));\n }\n _sync(e = this._bufferService.buffer.ydisp) {\n if (!(!this._renderService || this._isSyncing)) {\n if (this._coreService.decPrivateModes.synchronizedOutput) {\n this._needsSyncOnRender = true;\n return;\n }\n this._isSyncing = true, this._suppressOnScrollHandler = true, this._scrollableElement.setScrollDimensions({ height: this._renderService.dimensions.css.canvas.height, scrollHeight: this._renderService.dimensions.css.cell.height * this._bufferService.buffer.lines.length }), this._suppressOnScrollHandler = false, e !== this._latestYDisp && this._scrollableElement.setScrollPosition({ scrollTop: e * this._renderService.dimensions.css.cell.height }), this._isSyncing = false;\n }\n }\n _handleScroll(e) {\n if (!this._renderService || this._isHandlingScroll || this._suppressOnScrollHandler) return;\n this._isHandlingScroll = true;\n let i5 = Math.round(e.scrollTop / this._renderService.dimensions.css.cell.height), r = i5 - this._bufferService.buffer.ydisp;\n r !== 0 && (this._latestYDisp = i5, this._onRequestScrollLines.fire(r)), this._isHandlingScroll = false;\n }\n handleTouchScroll(e) {\n let i5 = this._scrollableElement.getScrollPosition();\n this._scrollableElement.setScrollPosition({ scrollTop: i5.scrollTop - e });\n }\n };\n ft3 = E4([m3(2, L5), m3(3, z3), m3(4, Y), m3(5, et2), m3(6, _e2), m3(7, R3), m3(8, G4)], ft3);\n var pt3 = class extends g5 {\n constructor(e, i5, r, s4, o2) {\n super();\n this._screenElement = e;\n this._bufferService = i5;\n this._coreBrowserService = r;\n this._decorationService = s4;\n this._renderService = o2;\n this._decorationElements = /* @__PURE__ */ new Map();\n this._altBufferIsActive = false;\n this._dimensionsChanged = false;\n this._container = document.createElement("div"), this._container.classList.add("xterm-decoration-container"), this._screenElement.appendChild(this._container), this._register(this._renderService.onRenderedViewportChange(() => this._doRefreshDecorations())), this._register(this._renderService.onDimensionsChange(() => {\n this._dimensionsChanged = true, this._queueRefresh();\n })), this._register(this._coreBrowserService.onDprChange(() => this._queueRefresh())), this._register(this._bufferService.buffers.onBufferActivate(() => {\n this._altBufferIsActive = this._bufferService.buffer === this._bufferService.buffers.alt;\n })), this._register(this._decorationService.onDecorationRegistered(() => this._queueRefresh())), this._register(this._decorationService.onDecorationRemoved((a2) => this._removeDecoration(a2))), this._register(y4(() => {\n this._container.remove(), this._decorationElements.clear();\n }));\n }\n _queueRefresh() {\n this._animationFrame === void 0 && (this._animationFrame = this._renderService.addRefreshCallback(() => {\n this._doRefreshDecorations(), this._animationFrame = void 0;\n }));\n }\n _doRefreshDecorations() {\n for (let e of this._decorationService.decorations) this._renderDecoration(e);\n this._dimensionsChanged = false;\n }\n _renderDecoration(e) {\n this._refreshStyle(e), this._dimensionsChanged && this._refreshXPosition(e);\n }\n _createElement(e) {\n let i5 = this._coreBrowserService.mainDocument.createElement("div");\n i5.classList.add("xterm-decoration"), i5.classList.toggle("xterm-decoration-top-layer", e?.options?.layer === "top"), i5.style.width = `${Math.round((e.options.width || 1) * this._renderService.dimensions.css.cell.width)}px`, i5.style.height = `${(e.options.height || 1) * this._renderService.dimensions.css.cell.height}px`, i5.style.top = `${(e.marker.line - this._bufferService.buffers.active.ydisp) * this._renderService.dimensions.css.cell.height}px`, i5.style.lineHeight = `${this._renderService.dimensions.css.cell.height}px`;\n let r = e.options.x ?? 0;\n return r && r > this._bufferService.cols && (i5.style.display = "none"), this._refreshXPosition(e, i5), i5;\n }\n _refreshStyle(e) {\n let i5 = e.marker.line - this._bufferService.buffers.active.ydisp;\n if (i5 < 0 || i5 >= this._bufferService.rows) e.element && (e.element.style.display = "none", e.onRenderEmitter.fire(e.element));\n else {\n let r = this._decorationElements.get(e);\n r || (r = this._createElement(e), e.element = r, this._decorationElements.set(e, r), this._container.appendChild(r), e.onDispose(() => {\n this._decorationElements.delete(e), r.remove();\n })), r.style.display = this._altBufferIsActive ? "none" : "block", this._altBufferIsActive || (r.style.width = `${Math.round((e.options.width || 1) * this._renderService.dimensions.css.cell.width)}px`, r.style.height = `${(e.options.height || 1) * this._renderService.dimensions.css.cell.height}px`, r.style.top = `${i5 * this._renderService.dimensions.css.cell.height}px`, r.style.lineHeight = `${this._renderService.dimensions.css.cell.height}px`), e.onRenderEmitter.fire(r);\n }\n }\n _refreshXPosition(e, i5 = e.element) {\n if (!i5) return;\n let r = e.options.x ?? 0;\n (e.options.anchor || "left") === "right" ? i5.style.right = r ? `${r * this._renderService.dimensions.css.cell.width}px` : "" : i5.style.left = r ? `${r * this._renderService.dimensions.css.cell.width}px` : "";\n }\n _removeDecoration(e) {\n this._decorationElements.get(e)?.remove(), this._decorationElements.delete(e), e.dispose();\n }\n };\n pt3 = E4([m3(1, L5), m3(2, z3), m3(3, Ie2), m3(4, G4)], pt3);\n var Ni = class {\n constructor() {\n this._zones = [];\n this._zonePool = [];\n this._zonePoolIndex = 0;\n this._linePadding = { full: 0, left: 0, center: 0, right: 0 };\n }\n get zones() {\n return this._zonePool.length = Math.min(this._zonePool.length, this._zones.length), this._zones;\n }\n clear() {\n this._zones.length = 0, this._zonePoolIndex = 0;\n }\n addDecoration(t) {\n if (t.options.overviewRulerOptions) {\n for (let e of this._zones) if (e.color === t.options.overviewRulerOptions.color && e.position === t.options.overviewRulerOptions.position) {\n if (this._lineIntersectsZone(e, t.marker.line)) return;\n if (this._lineAdjacentToZone(e, t.marker.line, t.options.overviewRulerOptions.position)) {\n this._addLineToZone(e, t.marker.line);\n return;\n }\n }\n if (this._zonePoolIndex < this._zonePool.length) {\n this._zonePool[this._zonePoolIndex].color = t.options.overviewRulerOptions.color, this._zonePool[this._zonePoolIndex].position = t.options.overviewRulerOptions.position, this._zonePool[this._zonePoolIndex].startBufferLine = t.marker.line, this._zonePool[this._zonePoolIndex].endBufferLine = t.marker.line, this._zones.push(this._zonePool[this._zonePoolIndex++]);\n return;\n }\n this._zones.push({ color: t.options.overviewRulerOptions.color, position: t.options.overviewRulerOptions.position, startBufferLine: t.marker.line, endBufferLine: t.marker.line }), this._zonePool.push(this._zones[this._zones.length - 1]), this._zonePoolIndex++;\n }\n }\n setPadding(t) {\n this._linePadding = t;\n }\n _lineIntersectsZone(t, e) {\n return e >= t.startBufferLine && e <= t.endBufferLine;\n }\n _lineAdjacentToZone(t, e, i5) {\n return e >= t.startBufferLine - this._linePadding[i5 || "full"] && e <= t.endBufferLine + this._linePadding[i5 || "full"];\n }\n _addLineToZone(t, e) {\n t.startBufferLine = Math.min(t.startBufferLine, e), t.endBufferLine = Math.max(t.endBufferLine, e);\n }\n };\n var Ce2 = { full: 0, left: 0, center: 0, right: 0 };\n var He2 = { full: 0, left: 0, center: 0, right: 0 };\n var Yt2 = { full: 0, left: 0, center: 0, right: 0 };\n var Ge4 = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3) {\n super();\n this._viewportElement = e;\n this._screenElement = i5;\n this._bufferService = r;\n this._decorationService = s4;\n this._renderService = o2;\n this._optionsService = a2;\n this._themeService = l4;\n this._coreBrowserService = h3;\n this._colorZoneStore = new Ni();\n this._shouldUpdateDimensions = true;\n this._shouldUpdateAnchor = true;\n this._lastKnownBufferLength = 0;\n this._canvas = this._coreBrowserService.mainDocument.createElement("canvas"), this._canvas.classList.add("xterm-decoration-overview-ruler"), this._refreshCanvasDimensions(), this._viewportElement.parentElement?.insertBefore(this._canvas, this._viewportElement), this._register(y4(() => this._canvas?.remove()));\n let d3 = this._canvas.getContext("2d");\n if (d3) this._ctx = d3;\n else throw new Error("Ctx cannot be null");\n this._register(this._decorationService.onDecorationRegistered(() => this._queueRefresh(void 0, true))), this._register(this._decorationService.onDecorationRemoved(() => this._queueRefresh(void 0, true))), this._register(this._renderService.onRenderedViewportChange(() => this._queueRefresh())), this._register(this._bufferService.buffers.onBufferActivate(() => {\n this._canvas.style.display = this._bufferService.buffer === this._bufferService.buffers.alt ? "none" : "block";\n })), this._register(this._bufferService.onScroll(() => {\n this._lastKnownBufferLength !== this._bufferService.buffers.normal.lines.length && (this._refreshDrawHeightConstants(), this._refreshColorZonePadding());\n })), this._register(this._renderService.onDimensionsChange(() => this._queueRefresh(true))), this._register(this._coreBrowserService.onDprChange(() => this._queueRefresh(true))), this._register(this._optionsService.onSpecificOptionChange("scrollbar", () => this._queueRefresh(true))), this._register(this._themeService.onChangeColors(() => this._queueRefresh())), this._register(y4(() => {\n this._animationFrame !== void 0 && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0);\n })), this._queueRefresh(true);\n }\n get _width() {\n let e = this._optionsService.rawOptions.scrollbar;\n return e?.showScrollbar ?? true ? e?.width ?? 0 : 0;\n }\n _refreshDrawConstants() {\n let e = Math.floor((this._canvas.width - 1) / 3), i5 = Math.ceil((this._canvas.width - 1) / 3);\n He2.full = this._canvas.width, He2.left = e, He2.center = i5, He2.right = e, this._refreshDrawHeightConstants(), Yt2.full = 1, Yt2.left = 1, Yt2.center = 1 + He2.left, Yt2.right = 1 + He2.left + He2.center;\n }\n _refreshDrawHeightConstants() {\n Ce2.full = Math.round(2 * this._coreBrowserService.dpr);\n let e = this._canvas.height / this._bufferService.buffer.lines.length, i5 = Math.round(Math.max(Math.min(e, 12), 6) * this._coreBrowserService.dpr);\n Ce2.left = i5, Ce2.center = i5, Ce2.right = i5;\n }\n _refreshColorZonePadding() {\n this._colorZoneStore.setPadding({ full: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * Ce2.full), left: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * Ce2.left), center: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * Ce2.center), right: Math.floor(this._bufferService.buffers.active.lines.length / (this._canvas.height - 1) * Ce2.right) }), this._lastKnownBufferLength = this._bufferService.buffers.normal.lines.length;\n }\n _refreshCanvasDimensions() {\n if (this._store.isDisposed || !this._renderService.hasRenderer()) return;\n let e = this._renderService.dimensions.css.canvas.height, i5 = this._renderService.dimensions.device.canvas.height;\n this._canvas.style.width = `${this._width}px`, this._canvas.width = Math.round(this._width * this._coreBrowserService.dpr), this._canvas.style.height = `${e}px`, this._canvas.height = i5, this._refreshDrawConstants(), this._refreshColorZonePadding();\n }\n _refreshDecorations() {\n if (this._store.isDisposed || !this._renderService.hasRenderer()) return;\n this._shouldUpdateDimensions && this._refreshCanvasDimensions(), this._ctx.clearRect(0, 0, this._canvas.width, this._canvas.height), this._colorZoneStore.clear();\n for (let i5 of this._decorationService.decorations) this._colorZoneStore.addDecoration(i5);\n this._ctx.lineWidth = 1, this._renderRulerOutline();\n let e = this._colorZoneStore.zones;\n for (let i5 of e) i5.position !== "full" && this._renderColorZone(i5);\n for (let i5 of e) i5.position === "full" && this._renderColorZone(i5);\n this._shouldUpdateDimensions = false, this._shouldUpdateAnchor = false;\n }\n _renderRulerOutline() {\n this._ctx.fillStyle = this._themeService.colors.overviewRulerBorder.css, this._ctx.fillRect(0, 0, 1, this._canvas.height), this._optionsService.rawOptions.scrollbar?.overviewRuler?.showTopBorder && this._ctx.fillRect(1, 0, this._canvas.width - 1, 1), this._optionsService.rawOptions.scrollbar?.overviewRuler?.showBottomBorder && this._ctx.fillRect(1, this._canvas.height - 1, this._canvas.width - 1, this._canvas.height);\n }\n _renderColorZone(e) {\n this._ctx.fillStyle = e.color, this._ctx.fillRect(Yt2[e.position || "full"], Math.round((this._canvas.height - 1) * (e.startBufferLine / this._bufferService.buffers.active.lines.length) - Ce2[e.position || "full"] / 2), He2[e.position || "full"], Math.round((this._canvas.height - 1) * ((e.endBufferLine - e.startBufferLine) / this._bufferService.buffers.active.lines.length) + Ce2[e.position || "full"]));\n }\n _queueRefresh(e, i5) {\n this._store.isDisposed || (this._shouldUpdateDimensions = e || this._shouldUpdateDimensions, this._shouldUpdateAnchor = i5 || this._shouldUpdateAnchor, this._animationFrame === void 0 && (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => {\n this._store.isDisposed || this._refreshDecorations(), this._animationFrame = void 0;\n })));\n }\n };\n Ge4 = E4([m3(2, L5), m3(3, Ie2), m3(4, G4), m3(5, R3), m3(6, _e2), m3(7, z3)], Ge4);\n var _t2 = class {\n constructor(t, e, i5, r, s4, o2) {\n this._textarea = t;\n this._compositionView = e;\n this._bufferService = i5;\n this._optionsService = r;\n this._coreService = s4;\n this._renderService = o2;\n this._isComposing = false, this._isSendingComposition = false, this._compositionPosition = { start: 0, end: 0 }, this._compositionSuffix = "", this._dataAlreadySent = "";\n }\n get isComposing() {\n return this._isComposing;\n }\n compositionstart() {\n this._isComposing = true;\n let t = this._textarea.selectionStart ?? this._textarea.value.length, e = this._textarea.selectionEnd ?? t;\n this._compositionPosition.start = Math.min(t, e), this._compositionPosition.end = Math.max(t, e), this._compositionSuffix = this._textarea.value.substring(this._compositionPosition.end), this._compositionView.textContent = "", this._dataAlreadySent = "", this._compositionView.classList.add("active");\n }\n compositionupdate(t) {\n this._compositionView.textContent = `\\u200E${t.data}\\u200E`, this.updateCompositionElements(), setTimeout(() => {\n let e = this._textarea.selectionEnd ?? this._textarea.value.length;\n this._compositionPosition.end = Math.max(this._compositionPosition.start, e);\n }, 0);\n }\n compositionend() {\n this._finalizeComposition(true);\n }\n keydown(t) {\n if (this._isComposing || this._isSendingComposition) {\n if (t.keyCode === 20 || t.keyCode === 229 || t.keyCode === 16 || t.keyCode === 17 || t.keyCode === 18) return false;\n this._finalizeComposition(false);\n }\n return t.keyCode === 229 ? (this._handleAnyTextareaChanges(), false) : true;\n }\n input(t) {\n return this._textareaChangeTimer === void 0 || this._isComposing || t.isComposing || !t.inputType.startsWith("insert") || !t.data ? false : (window.clearTimeout(this._textareaChangeTimer), this._textareaChangeTimer = void 0, this._dataAlreadySent = t.data, this._coreService.triggerDataEvent(t.data, true), true);\n }\n _finalizeComposition(t) {\n if (this._compositionView.classList.remove("active"), this._isComposing = false, t) {\n let e = { start: this._compositionPosition.start, end: this._compositionPosition.end }, i5 = this._compositionSuffix;\n this._isSendingComposition = true, setTimeout(() => {\n if (this._isSendingComposition) {\n this._isSendingComposition = false;\n let r;\n if (e.start += this._dataAlreadySent.length, this._isComposing) r = this._textarea.value.substring(e.start, this._compositionPosition.start);\n else {\n let s4 = this._textarea.value, o2 = i5.length > 0 && s4.endsWith(i5) ? s4.length - i5.length : s4.length;\n r = s4.substring(e.start, Math.max(e.start, o2));\n }\n r.length > 0 && this._coreService.triggerDataEvent(r, true);\n }\n }, 0);\n } else {\n this._isSendingComposition = false;\n let e = this._textarea.value.substring(this._compositionPosition.start, this._compositionPosition.end);\n this._coreService.triggerDataEvent(e, true);\n }\n }\n _handleAnyTextareaChanges() {\n if (this._textareaChangeTimer) return;\n let t = this._textarea.value;\n this._textareaChangeTimer = window.setTimeout(() => {\n if (this._textareaChangeTimer = void 0, !this._isComposing) {\n let e = this._textarea.value, i5 = e.replace(t, "");\n this._dataAlreadySent = i5, e.length > t.length ? this._coreService.triggerDataEvent(i5, true) : e.length < t.length ? this._coreService.triggerDataEvent("\\x7F", true) : e.length === t.length && e !== t && this._coreService.triggerDataEvent(e, true);\n }\n }, 0);\n }\n updateCompositionElements(t) {\n if (this._isComposing) {\n if (this._bufferService.buffer.isCursorInViewport) {\n let e = Math.min(this._bufferService.buffer.x, this._bufferService.cols - 1), i5 = this._renderService.dimensions.css.cell.height, r = this._bufferService.buffer.y * this._renderService.dimensions.css.cell.height, s4 = e * this._renderService.dimensions.css.cell.width;\n this._compositionView.style.left = s4 + "px", this._compositionView.style.top = r + "px", this._compositionView.style.height = i5 + "px", this._compositionView.style.lineHeight = i5 + "px", this._compositionView.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._compositionView.style.fontSize = this._optionsService.rawOptions.fontSize + "px";\n let o2 = this._bufferService.cols * this._renderService.dimensions.css.cell.width - s4;\n this._compositionView.style.maxWidth = o2 + "px", this._compositionView.style.overflow = "hidden", this._compositionView.style.direction = "rtl";\n let a2 = this._compositionView.getBoundingClientRect();\n this._textarea.style.left = s4 + "px", this._textarea.style.top = r + "px", this._textarea.style.width = Math.max(a2.width, 1) + "px", this._textarea.style.height = Math.max(a2.height, 1) + "px", this._textarea.style.lineHeight = a2.height + "px";\n }\n t || setTimeout(() => this.updateCompositionElements(true), 0);\n }\n }\n };\n _t2 = E4([m3(2, L5), m3(3, R3), m3(4, Y), m3(5, G4)], _t2);\n var Z4 = 0;\n var J4 = 0;\n var Q2 = 0;\n var H4 = 0;\n var ss = { css: "#00000000", rgba: 0 };\n var B4;\n ((i5) => {\n function n11(r, s4, o2, a2) {\n return a2 !== void 0 ? `#${Ve2(r)}${Ve2(s4)}${Ve2(o2)}${Ve2(a2)}` : `#${Ve2(r)}${Ve2(s4)}${Ve2(o2)}`;\n }\n i5.toCss = n11;\n function t(r, s4, o2, a2 = 255) {\n return (r << 24 | s4 << 16 | o2 << 8 | a2) >>> 0;\n }\n i5.toRgba = t;\n function e(r, s4, o2, a2) {\n return { css: i5.toCss(r, s4, o2, a2), rgba: i5.toRgba(r, s4, o2, a2) };\n }\n i5.toColor = e;\n })(B4 ||= {});\n var k4;\n ((a2) => {\n function n11(l4, h3) {\n if (H4 = (h3.rgba & 255) / 255, H4 === 1) return { css: h3.css, rgba: h3.rgba };\n let d3 = h3.rgba >> 24 & 255, c2 = h3.rgba >> 16 & 255, u3 = h3.rgba >> 8 & 255, _5 = l4.rgba >> 24 & 255, p3 = l4.rgba >> 16 & 255, b4 = l4.rgba >> 8 & 255;\n Z4 = _5 + Math.round((d3 - _5) * H4), J4 = p3 + Math.round((c2 - p3) * H4), Q2 = b4 + Math.round((u3 - b4) * H4);\n let f5 = B4.toCss(Z4, J4, Q2), S4 = B4.toRgba(Z4, J4, Q2);\n return { css: f5, rgba: S4 };\n }\n a2.blend = n11;\n function t(l4) {\n return (l4.rgba & 255) === 255;\n }\n a2.isOpaque = t;\n function e(l4, h3, d3) {\n let c2 = Fi.ensureContrastRatio(l4.rgba, h3.rgba, d3);\n if (c2) return B4.toColor(c2 >> 24 & 255, c2 >> 16 & 255, c2 >> 8 & 255);\n }\n a2.ensureContrastRatio = e;\n function i5(l4) {\n let h3 = (l4.rgba | 255) >>> 0;\n return [Z4, J4, Q2] = Fi.toChannels(h3), { css: B4.toCss(Z4, J4, Q2), rgba: h3 };\n }\n a2.opaque = i5;\n function r(l4, h3) {\n return H4 = Math.round(h3 * 255), [Z4, J4, Q2] = Fi.toChannels(l4.rgba), { css: B4.toCss(Z4, J4, Q2, H4), rgba: B4.toRgba(Z4, J4, Q2, H4) };\n }\n a2.opacity = r;\n function s4(l4, h3) {\n return H4 = l4.rgba & 255, r(l4, H4 * h3 / 255);\n }\n a2.multiplyOpacity = s4;\n function o2(l4) {\n return [l4.rgba >> 24 & 255, l4.rgba >> 16 & 255, l4.rgba >> 8 & 255];\n }\n a2.toColorRGB = o2;\n })(k4 ||= {});\n var M3;\n ((i5) => {\n let n11, t;\n try {\n let r = document.createElement("canvas");\n r.width = 1, r.height = 1;\n let s4 = r.getContext("2d", { willReadFrequently: true });\n s4 && (n11 = s4, n11.globalCompositeOperation = "copy", t = n11.createLinearGradient(0, 0, 1, 1));\n } catch {\n }\n function e(r) {\n if (r.match(/#[\\da-f]{3,8}/i)) switch (r.length) {\n case 4:\n return Z4 = parseInt(r.slice(1, 2).repeat(2), 16), J4 = parseInt(r.slice(2, 3).repeat(2), 16), Q2 = parseInt(r.slice(3, 4).repeat(2), 16), B4.toColor(Z4, J4, Q2);\n case 5:\n return Z4 = parseInt(r.slice(1, 2).repeat(2), 16), J4 = parseInt(r.slice(2, 3).repeat(2), 16), Q2 = parseInt(r.slice(3, 4).repeat(2), 16), H4 = parseInt(r.slice(4, 5).repeat(2), 16), B4.toColor(Z4, J4, Q2, H4);\n case 7:\n return { css: r, rgba: (parseInt(r.slice(1), 16) << 8 | 255) >>> 0 };\n case 9:\n return { css: r, rgba: parseInt(r.slice(1), 16) >>> 0 };\n }\n let s4 = r.match(/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(,\\s*(0|1|\\d?\\.(\\d+))\\s*)?\\)/);\n if (s4) return Z4 = parseInt(s4[1]), J4 = parseInt(s4[2]), Q2 = parseInt(s4[3]), H4 = Math.round((s4[5] === void 0 ? 1 : parseFloat(s4[5])) * 255), B4.toColor(Z4, J4, Q2, H4);\n if (r === "transparent") return { css: "transparent", rgba: 0 };\n if (!n11 || !t) throw new Error("css.toColor: Unsupported css format");\n if (n11.fillStyle = t, n11.fillStyle = r, typeof n11.fillStyle != "string") throw new Error("css.toColor: Unsupported css format");\n if (n11.fillRect(0, 0, 1, 1), [Z4, J4, Q2, H4] = n11.getImageData(0, 0, 1, 1).data, H4 !== 255) throw new Error("css.toColor: Unsupported css format");\n return { rgba: B4.toRgba(Z4, J4, Q2, H4), css: r };\n }\n i5.toColor = e;\n })(M3 ||= {});\n var j4;\n ((e) => {\n function n11(i5) {\n return t(i5 >> 16 & 255, i5 >> 8 & 255, i5 & 255);\n }\n e.relativeLuminance = n11;\n function t(i5, r, s4) {\n let o2 = i5 / 255, a2 = r / 255, l4 = s4 / 255, h3 = o2 <= 0.03928 ? o2 / 12.92 : Math.pow((o2 + 0.055) / 1.055, 2.4), d3 = a2 <= 0.03928 ? a2 / 12.92 : Math.pow((a2 + 0.055) / 1.055, 2.4), c2 = l4 <= 0.03928 ? l4 / 12.92 : Math.pow((l4 + 0.055) / 1.055, 2.4);\n return h3 * 0.2126 + d3 * 0.7152 + c2 * 0.0722;\n }\n e.relativeLuminance2 = t;\n })(j4 ||= {});\n var Fi;\n ((s4) => {\n function n11(o2, a2) {\n if (H4 = (a2 & 255) / 255, H4 === 1) return a2;\n let l4 = a2 >> 24 & 255, h3 = a2 >> 16 & 255, d3 = a2 >> 8 & 255, c2 = o2 >> 24 & 255, u3 = o2 >> 16 & 255, _5 = o2 >> 8 & 255;\n return Z4 = c2 + Math.round((l4 - c2) * H4), J4 = u3 + Math.round((h3 - u3) * H4), Q2 = _5 + Math.round((d3 - _5) * H4), B4.toRgba(Z4, J4, Q2);\n }\n s4.blend = n11;\n function t(o2, a2, l4) {\n let h3 = j4.relativeLuminance(o2 >> 8), d3 = j4.relativeLuminance(a2 >> 8);\n if (De4(h3, d3) < l4) {\n if (d3 < h3) {\n let p3 = e(o2, a2, l4), b4 = De4(h3, j4.relativeLuminance(p3 >> 8));\n if (b4 < l4) {\n let f5 = i5(o2, a2, l4), S4 = De4(h3, j4.relativeLuminance(f5 >> 8));\n return b4 > S4 ? p3 : f5;\n }\n return p3;\n }\n let u3 = i5(o2, a2, l4), _5 = De4(h3, j4.relativeLuminance(u3 >> 8));\n if (_5 < l4) {\n let p3 = e(o2, a2, l4), b4 = De4(h3, j4.relativeLuminance(p3 >> 8));\n return _5 > b4 ? u3 : p3;\n }\n return u3;\n }\n }\n s4.ensureContrastRatio = t;\n function e(o2, a2, l4) {\n let h3 = o2 >> 24 & 255, d3 = o2 >> 16 & 255, c2 = o2 >> 8 & 255, u3 = a2 >> 24 & 255, _5 = a2 >> 16 & 255, p3 = a2 >> 8 & 255, b4 = De4(j4.relativeLuminance2(u3, _5, p3), j4.relativeLuminance2(h3, d3, c2));\n for (; b4 < l4 && (u3 > 0 || _5 > 0 || p3 > 0); ) u3 -= Math.max(0, Math.ceil(u3 * 0.1)), _5 -= Math.max(0, Math.ceil(_5 * 0.1)), p3 -= Math.max(0, Math.ceil(p3 * 0.1)), b4 = De4(j4.relativeLuminance2(u3, _5, p3), j4.relativeLuminance2(h3, d3, c2));\n return (u3 << 24 | _5 << 16 | p3 << 8 | 255) >>> 0;\n }\n s4.reduceLuminance = e;\n function i5(o2, a2, l4) {\n let h3 = o2 >> 24 & 255, d3 = o2 >> 16 & 255, c2 = o2 >> 8 & 255, u3 = a2 >> 24 & 255, _5 = a2 >> 16 & 255, p3 = a2 >> 8 & 255, b4 = De4(j4.relativeLuminance2(u3, _5, p3), j4.relativeLuminance2(h3, d3, c2));\n for (; b4 < l4 && (u3 < 255 || _5 < 255 || p3 < 255); ) u3 = Math.min(255, u3 + Math.ceil((255 - u3) * 0.1)), _5 = Math.min(255, _5 + Math.ceil((255 - _5) * 0.1)), p3 = Math.min(255, p3 + Math.ceil((255 - p3) * 0.1)), b4 = De4(j4.relativeLuminance2(u3, _5, p3), j4.relativeLuminance2(h3, d3, c2));\n return (u3 << 24 | _5 << 16 | p3 << 8 | 255) >>> 0;\n }\n s4.increaseLuminance = i5;\n function r(o2) {\n return [o2 >> 24 & 255, o2 >> 16 & 255, o2 >> 8 & 255, o2 & 255];\n }\n s4.toChannels = r;\n })(Fi ||= {});\n function Ve2(n11) {\n let t = n11.toString(16);\n return t.length < 2 ? "0" + t : t;\n }\n function De4(n11, t) {\n return n11 < t ? (t + 0.05) / (n11 + 0.05) : (n11 + 0.05) / (t + 0.05);\n }\n var Hi = class extends fe2 {\n constructor(e, i5, r) {\n super();\n this.content = 0;\n this.combinedData = "";\n this.fg = e.fg, this.bg = e.bg, this.combinedData = i5, this._width = r;\n }\n isCombined() {\n return 2097152;\n }\n getWidth() {\n return this._width;\n }\n getChars() {\n return this.combinedData;\n }\n getCode() {\n return 2097151;\n }\n setFromCharData(e) {\n throw new Error("not implemented");\n }\n getAsCharData() {\n return [this.fg, this.getChars(), this.getWidth(), this.getCode()];\n }\n };\n var We3 = class {\n constructor(t) {\n this._bufferService = t;\n this._characterJoiners = [];\n this._nextCharacterJoinerId = 0;\n this._workCell = new N2();\n }\n register(t) {\n let e = { id: this._nextCharacterJoinerId++, handler: t };\n return this._characterJoiners.push(e), e.id;\n }\n deregister(t) {\n for (let e = 0; e < this._characterJoiners.length; e++) if (this._characterJoiners[e].id === t) return this._characterJoiners.splice(e, 1), true;\n return false;\n }\n getJoinedCharacters(t) {\n if (this._characterJoiners.length === 0) return [];\n let e = this._bufferService.buffer.lines.get(t);\n if (!e || e.length === 0) return [];\n let i5 = [], r = e.translateToString(true), s4 = 0, o2 = 0, a2 = 0, l4 = e.getFg(0), h3 = e.getBg(0);\n for (let d3 = 0; d3 < e.getTrimmedLength(); d3++) if (e.loadCell(d3, this._workCell), this._workCell.getWidth() !== 0) {\n if (this._workCell.fg !== l4 || this._workCell.bg !== h3) {\n if (d3 - s4 > 1) {\n let c2 = this._getJoinedRanges(r, a2, o2, e, s4);\n for (let u3 = 0; u3 < c2.length; u3++) i5.push(c2[u3]);\n }\n s4 = d3, a2 = o2, l4 = this._workCell.fg, h3 = this._workCell.bg;\n }\n o2 += this._workCell.getChars().length || " ".length;\n }\n if (this._bufferService.cols - s4 > 1) {\n let d3 = this._getJoinedRanges(r, a2, o2, e, s4);\n for (let c2 = 0; c2 < d3.length; c2++) i5.push(d3[c2]);\n }\n return i5;\n }\n _getJoinedRanges(t, e, i5, r, s4) {\n let o2 = t.substring(e, i5), a2 = [];\n try {\n a2 = this._characterJoiners[0].handler(o2);\n } catch (l4) {\n console.error(l4);\n }\n for (let l4 = 1; l4 < this._characterJoiners.length; l4++) try {\n let h3 = this._characterJoiners[l4].handler(o2);\n for (let d3 = 0; d3 < h3.length; d3++) We3._mergeRanges(a2, h3[d3]);\n } catch (h3) {\n console.error(h3);\n }\n return this._stringRangesToCellRanges(a2, r, s4), a2;\n }\n _stringRangesToCellRanges(t, e, i5) {\n let r = 0, s4 = false, o2 = 0, a2 = t[r];\n if (a2) {\n for (let l4 = i5; l4 < this._bufferService.cols; l4++) {\n let h3 = e.getWidth(l4), d3 = e.getString(l4).length || " ".length;\n if (h3 !== 0) {\n if (!s4 && a2[0] <= o2 && (a2[0] = l4, s4 = true), a2[1] <= o2) {\n if (a2[1] = l4, a2 = t[++r], !a2) break;\n a2[0] <= o2 ? (a2[0] = l4, s4 = true) : s4 = false;\n }\n o2 += d3;\n }\n }\n a2 && (a2[1] = this._bufferService.cols);\n }\n }\n static _mergeRanges(t, e) {\n let i5 = false;\n for (let r = 0; r < t.length; r++) {\n let s4 = t[r];\n if (i5) {\n if (e[1] <= s4[0]) return t[r - 1][1] = e[1], t;\n if (e[1] <= s4[1]) return t[r - 1][1] = Math.max(e[1], s4[1]), t.splice(r, 1), t;\n t.splice(r, 1), r--;\n } else {\n if (e[1] <= s4[0]) return t.splice(r, 0, e), t;\n if (e[1] <= s4[1]) return s4[0] = Math.min(e[0], s4[0]), t;\n e[0] < s4[1] && (s4[0] = Math.min(e[0], s4[0]), i5 = true);\n continue;\n }\n }\n return i5 ? t[t.length - 1][1] = e[1] : t.push(e), t;\n }\n };\n We3 = E4([m3(0, L5)], We3);\n function ns(n11) {\n if (!n11) throw new Error("value must not be falsy");\n return n11;\n }\n function fo(n11) {\n return 57508 <= n11 && n11 <= 57558;\n }\n function po(n11) {\n return 9472 <= n11 && n11 <= 9631;\n }\n function on(n11) {\n return fo(n11) || po(n11);\n }\n function an() {\n return { css: { canvas: Wi(), cell: Wi() }, device: { canvas: Wi(), cell: Wi(), char: { width: 0, height: 0, left: 0, top: 0 } } };\n }\n function Wi() {\n return { width: 0, height: 0 };\n }\n var mt3 = class {\n constructor(t, e, i5, r, s4, o2, a2) {\n this._document = t;\n this._characterJoinerService = e;\n this._optionsService = i5;\n this._coreBrowserService = r;\n this._coreService = s4;\n this._decorationService = o2;\n this._themeService = a2;\n this._workCell = new N2();\n this._columnSelectMode = false;\n this.defaultSpacing = 0;\n }\n handleSelectionChanged(t, e, i5) {\n this._selectionStart = t, this._selectionEnd = e, this._columnSelectMode = i5;\n }\n createRow(t, e, i5, r, s4, o2, a2, l4, h3, d3, c2, u3, _5) {\n let p3 = [];\n _5 && (_5.hasBlinkingCells = false);\n let b4 = this._characterJoinerService.getJoinedCharacters(e), f5 = this._themeService.colors, S4 = t.getNoBgTrimmedLength();\n i5 && S4 < o2 + 1 && (S4 = o2 + 1);\n let I4, w6 = 0, x5 = "", ie4 = 0, ce4 = 0, Os = 0, Ns = 0, Fs = false, Hs = 0, _i = false, Ft = 0, Ws = 0, O4 = [], qn2 = c2 !== -1 && u3 !== -1;\n for (let ne3 = 0; ne3 < S4; ne3++) {\n t.loadCell(ne3, this._workCell);\n let Ar = this._workCell.getWidth();\n if (Ar === 0) continue;\n let mi = false, Ze4 = ne3 >= Ws, kr = ne3, T4 = this._workCell;\n if (b4.length > 0 && ne3 === b4[0][0] && Ze4) {\n let A4 = b4.shift(), Nr = this._isCellInSelection(A4[0], e);\n for (ie4 = A4[0] + 1; ie4 < A4[1]; ie4++) Ze4 &&= Nr === this._isCellInSelection(ie4, e);\n Ze4 &&= !i5 || o2 < A4[0] || o2 >= A4[1], Ze4 ? (mi = true, T4 = new Hi(this._workCell, t.translateToString(true, A4[0], A4[1]), A4[1] - A4[0]), kr = A4[1] - 1, Ar = T4.getWidth()) : Ws = A4[1];\n }\n let Ht2 = this._isCellInSelection(ne3, e), Pr = i5 && ne3 === o2, Mr = qn2 && ne3 >= c2 && ne3 <= u3;\n _5 && T4.isBlink() && (_5.hasBlinkingCells = true), !l4 && T4.isBlink() && O4.push("xterm-blink-hidden");\n let Br = false;\n this._decorationService.forEachDecorationAtCell(ne3, e, void 0, (A4) => {\n Br = true;\n });\n let bi = T4.getChars() || " ";\n if (bi === " " && (T4.isUnderline() || T4.isOverline()) && (bi = "\\xA0"), Ft = Ar * h3 - d3.get(bi, T4.isBold(), T4.isItalic()), !I4) I4 = this._document.createElement("span");\n else if (w6 && (Ht2 && _i || !Ht2 && !_i && T4.bg === ce4) && (Ht2 && _i && f5.selectionForeground || T4.fg === Os) && T4.extended.ext === Ns && Mr === Fs && Ft === Hs && !Pr && !mi && !Br && Ze4) {\n T4.isInvisible() ? x5 += " " : x5 += bi, w6++;\n continue;\n } else w6 && (I4.textContent = x5), I4 = this._document.createElement("span"), w6 = 0, x5 = "";\n if (ce4 = T4.bg, Os = T4.fg, Ns = T4.extended.ext, Fs = Mr, Hs = Ft, _i = Ht2, mi && o2 >= ne3 && o2 <= kr && (o2 = ne3), !this._coreService.isCursorHidden && Pr && this._coreService.isCursorInitialized) {\n if (O4.push("xterm-cursor"), this._coreBrowserService.isFocused) a2 && O4.push("xterm-cursor-blink"), O4.push(r === "bar" ? "xterm-cursor-bar" : r === "underline" ? "xterm-cursor-underline" : "xterm-cursor-block");\n else if (s4) switch (s4) {\n case "outline":\n O4.push("xterm-cursor-outline");\n break;\n case "block":\n O4.push("xterm-cursor-block");\n break;\n case "bar":\n O4.push("xterm-cursor-bar");\n break;\n case "underline":\n O4.push("xterm-cursor-underline");\n break;\n default:\n break;\n }\n }\n if (T4.isBold() && O4.push("xterm-bold"), T4.isItalic() && O4.push("xterm-italic"), T4.isDim() && O4.push("xterm-dim"), T4.isInvisible() ? x5 = " " : x5 = T4.getChars() || " ", T4.isUnderline() && (O4.push(`xterm-underline-${T4.extended.underlineStyle}`), x5 === " " && (x5 = "\\xA0"), !T4.isUnderlineColorDefault())) if (T4.isUnderlineColorRGB()) I4.style.textDecorationColor = `rgb(${fe2.toColorRGB(T4.getUnderlineColor()).join(",")})`;\n else {\n let A4 = T4.getUnderlineColor();\n this._optionsService.rawOptions.drawBoldTextInBrightColors && T4.isBold() && A4 < 8 && (A4 += 8), I4.style.textDecorationColor = f5.ansi[A4].css;\n }\n T4.isOverline() && (O4.push("xterm-overline"), x5 === " " && (x5 = "\\xA0")), T4.isStrikethrough() && O4.push("xterm-strikethrough"), Mr && (I4.style.textDecoration = "underline");\n let ue2 = T4.getFgColor(), Wt2 = T4.getFgColorMode(), ge2 = T4.getBgColor(), Ut2 = T4.getBgColorMode(), Or = !!T4.isInverse();\n if (Or) {\n let A4 = ue2;\n ue2 = ge2, ge2 = A4;\n let Nr = Wt2;\n Wt2 = Ut2, Ut2 = Nr;\n }\n let Ae3, vi, Kt2 = false;\n this._decorationService.forEachDecorationAtCell(ne3, e, void 0, (A4) => {\n A4.options.layer !== "top" && Kt2 || (A4.backgroundColorRGB && (Ut2 = 50331648, ge2 = A4.backgroundColorRGB.rgba >> 8 & 16777215, Ae3 = A4.backgroundColorRGB), A4.foregroundColorRGB && (Wt2 = 50331648, ue2 = A4.foregroundColorRGB.rgba >> 8 & 16777215, vi = A4.foregroundColorRGB), Kt2 = A4.options.layer === "top");\n }), !Kt2 && Ht2 && (Ae3 = this._coreBrowserService.isFocused ? f5.selectionBackgroundOpaque : f5.selectionInactiveBackgroundOpaque, ge2 = Ae3.rgba >> 8 & 16777215, Ut2 = 50331648, Kt2 = true, f5.selectionForeground && (Wt2 = 50331648, ue2 = f5.selectionForeground.rgba >> 8 & 16777215, vi = f5.selectionForeground)), Kt2 && O4.push("xterm-decoration-top");\n let ke3;\n switch (Ut2) {\n case 16777216:\n case 33554432:\n ke3 = f5.ansi[ge2], O4.push(`xterm-bg-${ge2}`);\n break;\n case 50331648:\n ke3 = B4.toColor(ge2 >> 16, ge2 >> 8 & 255, ge2 & 255), this._addStyle(I4, `background-color:#${(ge2 >>> 0).toString(16).padStart(6, "0")}`);\n break;\n case 0:\n default:\n Or ? (ke3 = f5.foreground, O4.push(`xterm-bg-${257}`)) : ke3 = f5.background;\n }\n switch (Ae3 || T4.isDim() && (Ae3 = k4.multiplyOpacity(ke3, 0.5)), Wt2) {\n case 16777216:\n case 33554432:\n T4.isBold() && ue2 < 8 && this._optionsService.rawOptions.drawBoldTextInBrightColors && (ue2 += 8), this._applyMinimumContrast(I4, ke3, f5.ansi[ue2], T4, Ae3, void 0) || O4.push(`xterm-fg-${ue2}`);\n break;\n case 50331648:\n let A4 = B4.toColor(ue2 >> 16 & 255, ue2 >> 8 & 255, ue2 & 255);\n this._applyMinimumContrast(I4, ke3, A4, T4, Ae3, vi) || this._addStyle(I4, `color:#${ue2.toString(16).padStart(6, "0")}`);\n break;\n case 0:\n default:\n this._applyMinimumContrast(I4, ke3, f5.foreground, T4, Ae3, vi) || Or && O4.push(`xterm-fg-${257}`);\n }\n O4.length && (I4.className = O4.join(" "), O4.length = 0), !Pr && !mi && !Br && Ze4 ? w6++ : I4.textContent = x5, Ft !== this.defaultSpacing && (I4.style.letterSpacing = `${Ft}px`), p3.push(I4), ne3 = kr;\n }\n return I4 && w6 && (I4.textContent = x5), p3;\n }\n _applyMinimumContrast(t, e, i5, r, s4, o2) {\n if (this._optionsService.rawOptions.minimumContrastRatio === 1 || on(r.getCode())) return false;\n let a2 = this._getContrastCache(r), l4;\n if (!s4 && !o2 && (l4 = a2.getColor(e.rgba, i5.rgba)), l4 === void 0) {\n let h3 = this._optionsService.rawOptions.minimumContrastRatio / (r.isDim() ? 2 : 1);\n l4 = k4.ensureContrastRatio(s4 ?? e, o2 ?? i5, h3), a2.setColor((s4 ?? e).rgba, (o2 ?? i5).rgba, l4 ?? null);\n }\n return l4 ? (this._addStyle(t, `color:${l4.css}`), true) : false;\n }\n _getContrastCache(t) {\n return t.isDim() ? this._themeService.colors.halfContrastCache : this._themeService.colors.contrastCache;\n }\n _addStyle(t, e) {\n t.setAttribute("style", `${t.getAttribute("style") || ""}${e};`);\n }\n _isCellInSelection(t, e) {\n let i5 = this._selectionStart, r = this._selectionEnd;\n return !i5 || !r ? false : this._columnSelectMode ? i5[0] <= r[0] ? t >= i5[0] && e >= i5[1] && t < r[0] && e <= r[1] : t < i5[0] && e >= i5[1] && t >= r[0] && e <= r[1] : e > i5[1] && e < r[1] || i5[1] === r[1] && e === i5[1] && t >= i5[0] && t < r[0] || i5[1] < r[1] && e === r[1] && t < r[0] || i5[1] < r[1] && e === i5[1] && t >= i5[0];\n }\n };\n mt3 = E4([m3(1, Ei), m3(2, R3), m3(3, z3), m3(4, Y), m3(5, Ie2), m3(6, _e2)], mt3);\n var Ui = class {\n constructor(t = () => new os()) {\n this._flat = new Float32Array(256);\n this._font = "";\n this._fontSize = 0;\n this._weight = "normal";\n this._weightBold = "bold";\n this._canvasElements = [];\n this._canvasElements = [t(), t(), t(), t()], this.clear();\n }\n dispose() {\n this._canvasElements.length = 0, this._holey = void 0;\n }\n clear() {\n this._flat.fill(-9999), this._holey = /* @__PURE__ */ new Map();\n }\n setFont(t, e, i5, r) {\n t === this._font && e === this._fontSize && i5 === this._weight && r === this._weightBold || (this._font = t, this._fontSize = e, this._weight = i5, this._weightBold = r, this._canvasElements[0].setFont(t, e, i5, false), this._canvasElements[1].setFont(t, e, r, false), this._canvasElements[2].setFont(t, e, i5, true), this._canvasElements[3].setFont(t, e, r, true), this.clear());\n }\n get(t, e, i5) {\n let r = 0;\n if (!e && !i5 && t.length === 1 && (r = t.charCodeAt(0)) < 256) {\n if (this._flat[r] !== -9999) return this._flat[r];\n let a2 = this._measure(t, 0);\n return a2 > 0 && (this._flat[r] = a2), a2;\n }\n let s4 = t;\n e && (s4 += "B"), i5 && (s4 += "I");\n let o2 = this._holey.get(s4);\n if (o2 === void 0) {\n let a2 = 0;\n e && (a2 |= 1), i5 && (a2 |= 2), o2 = this._measure(t, a2), o2 > 0 && this._holey.set(s4, o2);\n }\n return o2;\n }\n _measure(t, e) {\n return this._canvasElements[e].measure(t);\n }\n };\n var os = class {\n constructor() {\n typeof OffscreenCanvas < "u" ? (this._canvas = new OffscreenCanvas(1, 1), this._ctx = ns(this._canvas.getContext("2d"))) : (this._canvas = document.createElement("canvas"), this._canvas.width = 1, this._canvas.height = 1, this._ctx = ns(this._canvas.getContext("2d")));\n }\n setFont(t, e, i5, r) {\n let s4 = r ? "italic" : "";\n this._ctx.font = `${s4} ${i5} ${e}px ${t}`.trim();\n }\n measure(t) {\n return this._ctx.measureText(t).width;\n }\n };\n var as = class {\n constructor() {\n this.clear();\n }\n clear() {\n this.hasSelection = false, this.columnSelectMode = false, this.viewportStartRow = 0, this.viewportEndRow = 0, this.viewportCappedStartRow = 0, this.viewportCappedEndRow = 0, this.startCol = 0, this.endCol = 0, this.selectionStart = void 0, this.selectionEnd = void 0;\n }\n update(t, e, i5, r = false) {\n if (this.selectionStart = e, this.selectionEnd = i5, !e || !i5 || e[0] === i5[0] && e[1] === i5[1]) {\n this.clear();\n return;\n }\n let s4 = t.buffers.active.ydisp, o2 = e[1] - s4, a2 = i5[1] - s4, l4 = Math.max(o2, 0), h3 = Math.min(a2, t.rows - 1);\n if (l4 >= t.rows || h3 < 0) {\n this.clear();\n return;\n }\n this.hasSelection = true, this.columnSelectMode = r, this.viewportStartRow = o2, this.viewportEndRow = a2, this.viewportCappedStartRow = l4, this.viewportCappedEndRow = h3, this.startCol = e[0], this.endCol = i5[0];\n }\n isCellSelected(t, e, i5) {\n return this.hasSelection ? (i5 -= t.buffer.active.viewportY, this.columnSelectMode ? this.startCol <= this.endCol ? e >= this.startCol && i5 >= this.viewportCappedStartRow && e < this.endCol && i5 <= this.viewportCappedEndRow : e < this.startCol && i5 >= this.viewportCappedStartRow && e >= this.endCol && i5 <= this.viewportCappedEndRow : i5 > this.viewportStartRow && i5 < this.viewportEndRow || this.viewportStartRow === this.viewportEndRow && i5 === this.viewportStartRow && e >= this.startCol && e < this.endCol || this.viewportStartRow < this.viewportEndRow && i5 === this.viewportEndRow && e < this.endCol || this.viewportStartRow < this.viewportEndRow && i5 === this.viewportStartRow && e >= this.startCol) : false;\n }\n };\n function ln() {\n return new as();\n }\n var Ki = class extends g5 {\n constructor(e, i5, r) {\n super();\n this._renderCallback = e;\n this._coreBrowserService = i5;\n this._optionsService = r;\n this._intervalDuration = 0;\n this._blinkOn = true;\n this._needsBlinkInViewport = false;\n this._isViewportVisible = true;\n this._register(this._optionsService.onSpecificOptionChange("blinkIntervalDuration", (s4) => {\n this.setIntervalDuration(s4);\n })), this.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration), this._register(y4(() => this._clearInterval()));\n }\n get isBlinkOn() {\n return this._blinkOn;\n }\n get isEnabled() {\n return this._intervalDuration > 0;\n }\n setNeedsBlinkInViewport(e) {\n this._needsBlinkInViewport !== e && (this._needsBlinkInViewport = e, this._updateIntervalState());\n }\n setViewportVisible(e) {\n this._isViewportVisible !== e && (this._isViewportVisible = e, this._updateIntervalState());\n }\n setIntervalDuration(e) {\n e !== this._intervalDuration && (this._intervalDuration = e, this._clearInterval(), this._updateIntervalState());\n }\n _updateIntervalState() {\n if (this._intervalDuration > 0 && this._needsBlinkInViewport && this._isViewportVisible) {\n if (this._interval !== void 0) return;\n let i5 = this._blinkOn;\n this._blinkOn = true, this._interval = this._coreBrowserService.window.setInterval(() => {\n this._blinkOn = !this._blinkOn, this._renderCallback();\n }, this._intervalDuration), i5 || this._renderCallback();\n return;\n }\n this._clearInterval(), this._blinkOn || (this._blinkOn = true, this._renderCallback());\n }\n _clearInterval() {\n this._interval !== void 0 && (this._coreBrowserService.window.clearInterval(this._interval), this._interval = void 0);\n }\n };\n var ls = "xterm-dom-renderer-owner-";\n var le2 = "xterm-rows";\n var zi = "xterm-fg-";\n var cn = "xterm-bg-";\n var Xt2 = "xterm-focus";\n var Gi = "xterm-selection";\n var $i = "xterm-cursor-blink-idle";\n var _o2 = 1;\n var vt2 = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3, d3, c2, u3, _5, p3, b4) {\n super();\n this._terminal = e;\n this._document = i5;\n this._element = r;\n this._screenElement = s4;\n this._viewportElement = o2;\n this._helperContainer = a2;\n this._linkifier2 = l4;\n this._charSizeService = d3;\n this._optionsService = c2;\n this._bufferService = u3;\n this._coreService = _5;\n this._coreBrowserService = p3;\n this._themeService = b4;\n this._terminalClass = _o2++;\n this._rowElements = [];\n this._selectionRenderModel = ln();\n this._lastSelectionColumnMode = false;\n this._rowHasBlinkingCells = [];\n this._rowHasBlinkingCellsCount = 0;\n this._onRequestRedraw = this._register(new v5());\n this.onRequestRedraw = this._onRequestRedraw.event;\n this._rowContainer = this._document.createElement("div"), this._rowContainer.classList.add(le2), this._rowContainer.style.lineHeight = "normal", this._rowContainer.setAttribute("aria-hidden", "true"), this._refreshRowElements(this._bufferService.cols, this._bufferService.rows), this._selectionContainer = this._document.createElement("div"), this._selectionContainer.classList.add(Gi), this._selectionContainer.setAttribute("aria-hidden", "true"), this.dimensions = an(), this._updateDimensions(), this._register(this._optionsService.onOptionChange(() => this._handleOptionsChanged())), this._register(this._themeService.onChangeColors((f5) => this._injectCss(f5))), this._injectCss(this._themeService.colors), this._rowFactory = h3.createInstance(mt3, document), this._element.classList.add(ls + this._terminalClass), this._screenElement.appendChild(this._rowContainer), this._screenElement.appendChild(this._selectionContainer), this._register(this._linkifier2.onShowLinkUnderline((f5) => this._handleLinkHover(f5))), this._register(this._linkifier2.onHideLinkUnderline((f5) => this._handleLinkLeave(f5))), this._cursorBlinkStateManager = new cs(this._rowContainer, this._coreBrowserService), this._register(C3(this._document, "mousedown", () => this._cursorBlinkStateManager.restartBlinkAnimation())), this._register(y4(() => this._cursorBlinkStateManager.dispose())), this._textBlinkStateManager = this._register(new Ki(() => this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 }), this._coreBrowserService, this._optionsService)), this._register(y4(() => {\n this._element.classList.remove(ls + this._terminalClass), this._rowContainer.remove(), this._selectionContainer.remove(), this._widthCache.dispose(), this._themeStyleElement.remove(), this._dimensionsStyleElement.remove();\n })), this._widthCache = new Ui(), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing();\n }\n _updateDimensions() {\n let e = this._coreBrowserService.dpr;\n this.dimensions.device.char.width = this._charSizeService.width * e, this.dimensions.device.char.height = Math.ceil(this._charSizeService.height * e), this.dimensions.device.cell.width = this.dimensions.device.char.width + Math.round(this._optionsService.rawOptions.letterSpacing), this.dimensions.device.cell.height = Math.floor(this.dimensions.device.char.height * this._optionsService.rawOptions.lineHeight), this.dimensions.device.char.left = 0, this.dimensions.device.char.top = 0, this.dimensions.device.canvas.width = this.dimensions.device.cell.width * this._bufferService.cols, this.dimensions.device.canvas.height = this.dimensions.device.cell.height * this._bufferService.rows, this.dimensions.css.canvas.width = Math.round(this.dimensions.device.canvas.width / e), this.dimensions.css.canvas.height = Math.round(this.dimensions.device.canvas.height / e), this.dimensions.css.cell.width = this.dimensions.css.canvas.width / this._bufferService.cols, this.dimensions.css.cell.height = this.dimensions.css.canvas.height / this._bufferService.rows;\n for (let r of this._rowElements) r.style.width = `${this.dimensions.css.canvas.width}px`, r.style.height = `${this.dimensions.css.cell.height}px`, r.style.lineHeight = `${this.dimensions.css.cell.height}px`, r.style.overflow = "hidden";\n this._dimensionsStyleElement || (this._dimensionsStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._dimensionsStyleElement));\n let i5 = `${this._terminalSelector} .${le2} span { display: inline-block; height: 100%; vertical-align: top;}`;\n this._dimensionsStyleElement.textContent = i5, this._selectionContainer.style.height = this._viewportElement.style.height, this._screenElement.style.width = `${this.dimensions.css.canvas.width}px`, this._screenElement.style.height = `${this.dimensions.css.canvas.height}px`;\n }\n _injectCss(e) {\n this._themeStyleElement || (this._themeStyleElement = this._document.createElement("style"), this._screenElement.appendChild(this._themeStyleElement));\n let i5 = `${this._terminalSelector} .${le2} { pointer-events: none; color: ${e.foreground.css};}`;\n i5 += `${this._terminalSelector} .${le2}, ${this._terminalSelector} .${le2} span { font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`, i5 += `${this._terminalSelector} .${le2} .xterm-dim { color: ${k4.multiplyOpacity(e.foreground, 0.5).css};}`, i5 += `${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}${this._terminalSelector} span.xterm-blink-hidden { visibility: hidden;}`;\n let r = `blink_underline_${this._terminalClass}`, s4 = `blink_bar_${this._terminalClass}`, o2 = `blink_block_${this._terminalClass}`;\n i5 += `@keyframes ${r} { 50% { border-bottom-style: hidden; }}`, i5 += `@keyframes ${s4} { 50% { box-shadow: none; }}`, i5 += `@keyframes ${o2} { 0% { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css}; } 50% { background-color: inherit; color: ${e.cursor.css}; }}`, i5 += `${this._terminalSelector} .${le2}.${Xt2} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${r} 1s step-end infinite;}${this._terminalSelector} .${le2}.${Xt2} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${s4} 1s step-end infinite;}${this._terminalSelector} .${le2}.${Xt2} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${o2} 1s step-end infinite;}${this._terminalSelector} .${le2}.${$i} .xterm-cursor.xterm-cursor-blink { animation: none !important;}${this._terminalSelector} .${le2} .xterm-cursor.xterm-cursor-block { background-color: ${e.cursor.css}; color: ${e.cursorAccent.css};}${this._terminalSelector} .${le2} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${e.cursor.css} !important; color: ${e.cursorAccent.css} !important;}${this._terminalSelector} .${le2} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${e.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${le2} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${e.cursor.css} inset;}${this._terminalSelector} .${le2} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${e.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`, i5 += `${this._terminalSelector} .${Gi} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${Gi} div { position: absolute; background-color: ${e.selectionBackgroundOpaque.css};}${this._terminalSelector} .${Gi} div { position: absolute; background-color: ${e.selectionInactiveBackgroundOpaque.css};}`;\n for (let [a2, l4] of e.ansi.entries()) i5 += `${this._terminalSelector} .${zi}${a2} { color: ${l4.css}; }${this._terminalSelector} .${zi}${a2}.xterm-dim { color: ${k4.multiplyOpacity(l4, 0.5).css}; }${this._terminalSelector} .${cn}${a2} { background-color: ${l4.css}; }`;\n i5 += `${this._terminalSelector} .${zi}${257} { color: ${k4.opaque(e.background).css}; }${this._terminalSelector} .${zi}${257}.xterm-dim { color: ${k4.multiplyOpacity(k4.opaque(e.background), 0.5).css}; }${this._terminalSelector} .${cn}${257} { background-color: ${e.foreground.css}; }`, this._themeStyleElement.textContent = i5;\n }\n _setDefaultSpacing() {\n let e = this.dimensions.css.cell.width - this._widthCache.get("W", false, false);\n this._rowContainer.style.letterSpacing = `${e}px`, this._rowFactory.defaultSpacing = e;\n }\n handleDevicePixelRatioChange() {\n this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing();\n }\n _refreshRowElements(e, i5) {\n for (let r = this._rowElements.length; r <= i5; r++) {\n let s4 = this._document.createElement("div");\n this._rowContainer.appendChild(s4), this._rowElements.push(s4), this._rowHasBlinkingCells.push(false);\n }\n for (; this._rowElements.length > i5; ) this._rowContainer.removeChild(this._rowElements.pop()), this._rowHasBlinkingCells.pop() && this._rowHasBlinkingCellsCount--;\n }\n handleResize(e, i5) {\n this._refreshRowElements(e, i5), this._updateDimensions(), this.handleSelectionChanged(this._selectionRenderModel.selectionStart, this._selectionRenderModel.selectionEnd, this._selectionRenderModel.columnSelectMode);\n }\n handleCharSizeChanged() {\n this._updateDimensions(), this._widthCache.clear(), this._setDefaultSpacing();\n }\n handleBlur() {\n this._rowContainer.classList.remove(Xt2), this._cursorBlinkStateManager.pause(), this.renderRows(0, this._bufferService.rows - 1);\n }\n handleFocus() {\n this._rowContainer.classList.add(Xt2), this._cursorBlinkStateManager.resume(), this.renderRows(this._bufferService.buffer.y, this._bufferService.buffer.y);\n }\n handleViewportVisibilityChange(e) {\n this._textBlinkStateManager.setViewportVisible(e);\n }\n handleSelectionChanged(e, i5, r) {\n let s4 = this._bufferService.rows;\n this._selectionContainer.replaceChildren(), this._rowFactory.handleSelectionChanged(e, i5, r);\n let o2 = 0, a2 = -1;\n this._lastSelectionStart && this._lastSelectionEnd && (this._selectionRenderModel.update(this._terminal, this._lastSelectionStart, this._lastSelectionEnd, this._lastSelectionColumnMode), this._selectionRenderModel.hasSelection && (o2 = this._selectionRenderModel.viewportCappedStartRow, a2 = this._selectionRenderModel.viewportCappedEndRow));\n let l4 = 0, h3 = -1;\n if (!e || !i5) return;\n if (this._selectionRenderModel.update(this._terminal, e, i5, r), this._selectionRenderModel.hasSelection) {\n let u3 = this._selectionRenderModel.viewportStartRow, _5 = this._selectionRenderModel.viewportEndRow, p3 = this._selectionRenderModel.viewportCappedStartRow, b4 = this._selectionRenderModel.viewportCappedEndRow;\n l4 = p3, h3 = b4;\n let f5 = this._document.createDocumentFragment();\n if (r) {\n let S4 = e[0] > i5[0];\n f5.appendChild(this._createSelectionElement(p3, S4 ? i5[0] : e[0], S4 ? e[0] : i5[0], b4 - p3 + 1));\n } else {\n let S4 = u3 === p3 ? e[0] : 0, I4 = p3 === _5 ? i5[0] : this._bufferService.cols;\n f5.appendChild(this._createSelectionElement(p3, S4, I4));\n let w6 = b4 - p3 - 1;\n if (f5.appendChild(this._createSelectionElement(p3 + 1, 0, this._bufferService.cols, w6)), p3 !== b4) {\n let x5 = _5 === b4 ? i5[0] : this._bufferService.cols;\n f5.appendChild(this._createSelectionElement(b4, 0, x5));\n }\n }\n this._selectionContainer.appendChild(f5);\n }\n let d3 = Math.min(o2, l4), c2 = Math.max(a2, h3);\n if (c2 >= 0) {\n d3 = Math.max(d3, 0), c2 = Math.min(c2, s4 - 1);\n let _5 = this._bufferService.buffer.y;\n this._selectionRenderModel.hasSelection && _5 >= 0 && _5 < s4 && (d3 = Math.min(d3, _5), c2 = Math.max(c2, _5)), this.renderRows(d3, c2);\n }\n this._lastSelectionStart = e, this._lastSelectionEnd = i5, this._lastSelectionColumnMode = r;\n }\n _createSelectionElement(e, i5, r, s4 = 1) {\n let o2 = this._document.createElement("div"), a2 = i5 * this.dimensions.css.cell.width, l4 = this.dimensions.css.cell.width * (r - i5);\n return a2 + l4 > this.dimensions.css.canvas.width && (l4 = this.dimensions.css.canvas.width - a2), o2.style.height = `${s4 * this.dimensions.css.cell.height}px`, o2.style.top = `${e * this.dimensions.css.cell.height}px`, o2.style.left = `${a2}px`, o2.style.width = `${l4}px`, o2;\n }\n handleCursorMove() {\n this._cursorBlinkStateManager.restartBlinkAnimation();\n }\n _handleOptionsChanged() {\n this._updateDimensions(), this._injectCss(this._themeService.colors), this._widthCache.setFont(this._optionsService.rawOptions.fontFamily, this._optionsService.rawOptions.fontSize, this._optionsService.rawOptions.fontWeight, this._optionsService.rawOptions.fontWeightBold), this._setDefaultSpacing();\n }\n clear() {\n for (let e of this._rowElements) e.replaceChildren();\n this._rowHasBlinkingCellsCount > 0 && (this._rowHasBlinkingCells.fill(false), this._rowHasBlinkingCellsCount = 0, this._textBlinkStateManager.setNeedsBlinkInViewport(false));\n }\n renderRows(e, i5) {\n let r = this._bufferService.buffer, s4 = r.ybase + r.y, o2 = Math.min(r.x, this._bufferService.cols - 1), a2 = this._coreService.decPrivateModes.cursorBlink ?? this._optionsService.rawOptions.cursorBlink, l4 = this._coreService.decPrivateModes.cursorStyle ?? this._optionsService.rawOptions.cursorStyle, h3 = this._optionsService.rawOptions.cursorInactiveStyle, d3 = { hasBlinkingCells: false };\n for (let c2 = e; c2 <= i5; c2++) {\n let u3 = c2 + r.ydisp, _5 = this._rowElements[c2], p3 = r.lines.get(u3);\n if (!_5 || !p3) break;\n let b4 = this._document.getSelection();\n if (this._element.closest(".xterm-native-touch-selection") && b4 && !b4.isCollapsed && b4.rangeCount > 0 && this._rowContainer.contains(b4.getRangeAt(0).commonAncestorContainer) && b4.getRangeAt(0).intersectsNode(_5)) continue;\n _5.replaceChildren(...this._rowFactory.createRow(p3, u3, u3 === s4, l4, h3, o2, a2, this._textBlinkStateManager.isBlinkOn, this.dimensions.css.cell.width, this._widthCache, -1, -1, d3)), this._setRowBlinkState(c2, d3.hasBlinkingCells);\n }\n this._updateTextBlinkState();\n }\n get _terminalSelector() {\n return `.${ls}${this._terminalClass}`;\n }\n _handleLinkHover(e) {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, true);\n }\n _handleLinkLeave(e) {\n this._setCellUnderline(e.x1, e.x2, e.y1, e.y2, e.cols, false);\n }\n _setCellUnderline(e, i5, r, s4, o2, a2) {\n r < 0 && (e = 0), s4 < 0 && (i5 = 0);\n let l4 = this._bufferService.rows - 1;\n r = Math.max(Math.min(r, l4), 0), s4 = Math.max(Math.min(s4, l4), 0), o2 = Math.min(o2, this._bufferService.cols);\n let h3 = this._bufferService.buffer, d3 = h3.ybase + h3.y, c2 = Math.min(h3.x, o2 - 1), u3 = this._optionsService.rawOptions.cursorBlink, _5 = this._optionsService.rawOptions.cursorStyle, p3 = this._optionsService.rawOptions.cursorInactiveStyle, b4 = { hasBlinkingCells: false };\n for (let f5 = r; f5 <= s4; ++f5) {\n let S4 = f5 + h3.ydisp, I4 = this._rowElements[f5], w6 = h3.lines.get(S4);\n if (!I4 || !w6) break;\n I4.replaceChildren(...this._rowFactory.createRow(w6, S4, S4 === d3, _5, p3, c2, u3, this._textBlinkStateManager.isBlinkOn, this.dimensions.css.cell.width, this._widthCache, a2 ? f5 === r ? e : 0 : -1, a2 ? (f5 === s4 ? i5 : o2) - 1 : -1, b4)), this._setRowBlinkState(f5, b4.hasBlinkingCells);\n }\n this._updateTextBlinkState();\n }\n _setRowBlinkState(e, i5) {\n this._rowHasBlinkingCells[e] !== i5 && (this._rowHasBlinkingCells[e] = i5, this._rowHasBlinkingCellsCount += i5 ? 1 : -1);\n }\n _updateTextBlinkState() {\n this._textBlinkStateManager.setNeedsBlinkInViewport(this._rowHasBlinkingCellsCount > 0);\n }\n };\n vt2 = E4([m3(7, tt3), m3(8, Me2), m3(9, R3), m3(10, L5), m3(11, Y), m3(12, z3), m3(13, _e2)], vt2);\n var cs = class {\n constructor(t, e) {\n this._rowContainer = t;\n this._coreBrowserService = e;\n this._isIdlePaused = false;\n this._coreBrowserService.isFocused && this._resetIdleTimer();\n }\n dispose() {\n this._clearIdleTimer();\n }\n restartBlinkAnimation() {\n this._isIdlePaused && this._rowContainer.classList.remove($i), this._resetIdleTimer();\n }\n pause() {\n this._isIdlePaused = false, this._clearIdleTimer();\n }\n resume() {\n this._isIdlePaused = false, this._rowContainer.classList.remove($i), this._resetIdleTimer();\n }\n _resetIdleTimer() {\n this._isIdlePaused = false, this._clearIdleTimer(), this._idleTimeout = this._coreBrowserService.window.setTimeout(() => {\n this._stopBlinkingDueToIdle();\n }, 3e5);\n }\n _clearIdleTimer() {\n this._idleTimeout && (this._coreBrowserService.window.clearTimeout(this._idleTimeout), this._idleTimeout = void 0);\n }\n _stopBlinkingDueToIdle() {\n this._rowContainer.classList.add($i), this._isIdlePaused = true, this._idleTimeout = void 0;\n }\n };\n var St2 = class extends g5 {\n constructor(e, i5, r) {\n super();\n this._optionsService = r;\n this.width = 0;\n this.height = 0;\n this._onCharSizeChange = this._register(new v5());\n this.onCharSizeChange = this._onCharSizeChange.event;\n try {\n this._measureStrategy = this._register(new ds(this._optionsService));\n } catch {\n this._measureStrategy = this._register(new hs(e, i5, this._optionsService));\n }\n this._register(this._optionsService.onMultipleOptionChange(["fontFamily", "fontSize"], () => this.measure()));\n }\n get hasValidSize() {\n return this.width > 0 && this.height > 0;\n }\n measure() {\n let e = this._measureStrategy.measure();\n (e.width !== this.width || e.height !== this.height) && (this.width = e.width, this.height = e.height, this._onCharSizeChange.fire());\n }\n };\n St2 = E4([m3(2, R3)], St2);\n var Vi = class extends g5 {\n constructor() {\n super(...arguments);\n this._result = { width: 0, height: 0 };\n }\n _validateAndSet(e, i5) {\n e !== void 0 && e > 0 && i5 !== void 0 && i5 > 0 && (this._result.width = e, this._result.height = i5);\n }\n };\n var hs = class extends Vi {\n constructor(e, i5, r) {\n super();\n this._document = e;\n this._parentElement = i5;\n this._optionsService = r;\n this._measureElement = this._document.createElement("span"), this._measureElement.classList.add("xterm-char-measure-element"), this._measureElement.textContent = "W".repeat(32), this._measureElement.setAttribute("aria-hidden", "true"), this._measureElement.style.whiteSpace = "pre", this._measureElement.style.fontKerning = "none", this._parentElement.appendChild(this._measureElement);\n }\n measure() {\n return this._measureElement.style.fontFamily = this._optionsService.rawOptions.fontFamily, this._measureElement.style.fontSize = `${this._optionsService.rawOptions.fontSize}px`, this._validateAndSet(Number(this._measureElement.offsetWidth) / 32, Number(this._measureElement.offsetHeight)), this._result;\n }\n };\n var ds = class extends Vi {\n constructor(e) {\n super();\n this._optionsService = e;\n this._canvas = new OffscreenCanvas(100, 100), this._ctx = this._canvas.getContext("2d");\n let i5 = this._ctx.measureText("W");\n if (!("width" in i5 && "fontBoundingBoxAscent" in i5 && "fontBoundingBoxDescent" in i5)) throw new Error("Required font metrics not supported");\n }\n measure() {\n this._ctx.font = `${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;\n let e = this._ctx.measureText("W");\n return this._validateAndSet(e.width, e.fontBoundingBoxAscent + e.fontBoundingBoxDescent), this._result;\n }\n };\n var qi = class extends g5 {\n constructor(e, i5, r) {\n super();\n this._textarea = e;\n this._window = i5;\n this.mainDocument = r;\n this._isFocused = false;\n this._cachedIsFocused = void 0;\n this._onDprChange = this._register(new v5());\n this.onDprChange = this._onDprChange.event;\n this._onWindowChange = this._register(new v5());\n this.onWindowChange = this._onWindowChange.event;\n this._screenDprMonitor = this._register(new us(this._window)), this._register(this.onWindowChange((s4) => this._screenDprMonitor.setWindow(s4))), this._register(X2.forward(this._screenDprMonitor.onDprChange, this._onDprChange)), this._register(C3(this._textarea, "focus", () => this._isFocused = true)), this._register(C3(this._textarea, "blur", () => this._isFocused = false));\n }\n get window() {\n return this._window;\n }\n set window(e) {\n this._window !== e && (this._window = e, this._onWindowChange.fire(this._window));\n }\n get dpr() {\n return this.window.devicePixelRatio;\n }\n get isFocused() {\n return this._cachedIsFocused === void 0 && (this._cachedIsFocused = this._isFocused && this._textarea.ownerDocument.hasFocus(), queueMicrotask(() => this._cachedIsFocused = void 0)), this._cachedIsFocused;\n }\n };\n var us = class extends g5 {\n constructor(e) {\n super();\n this._parentWindow = e;\n this._windowResizeListener = this._register(new me3());\n this._onDprChange = this._register(new v5());\n this.onDprChange = this._onDprChange.event;\n this._outerListener = () => this._setDprAndFireIfDiffers(), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._updateDpr(), this._setWindowResizeListener(), this._register(y4(() => this.clearListener()));\n }\n setWindow(e) {\n this._parentWindow = e, this._setWindowResizeListener(), this._setDprAndFireIfDiffers();\n }\n _setWindowResizeListener() {\n this._windowResizeListener.value = C3(this._parentWindow, "resize", () => this._setDprAndFireIfDiffers());\n }\n _setDprAndFireIfDiffers() {\n this._parentWindow.devicePixelRatio !== this._currentDevicePixelRatio && this._onDprChange.fire(this._parentWindow.devicePixelRatio), this._updateDpr();\n }\n _updateDpr() {\n this._outerListener && (this._resolutionMediaMatchList?.removeListener(this._outerListener), this._currentDevicePixelRatio = this._parentWindow.devicePixelRatio, this._resolutionMediaMatchList = this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`), this._resolutionMediaMatchList.addListener(this._outerListener));\n }\n clearListener() {\n !this._resolutionMediaMatchList || !this._outerListener || (this._resolutionMediaMatchList.removeListener(this._outerListener), this._resolutionMediaMatchList = void 0, this._outerListener = void 0);\n }\n };\n var Yi = class extends g5 {\n constructor() {\n super();\n this.linkProviders = [];\n this._register(y4(() => this.linkProviders.length = 0));\n }\n registerLinkProvider(e) {\n return this.linkProviders.push(e), { dispose: () => {\n let i5 = this.linkProviders.indexOf(e);\n i5 !== -1 && this.linkProviders.splice(i5, 1);\n } };\n }\n };\n function jt(n11, t, e) {\n let i5 = e.getBoundingClientRect(), r = n11.getComputedStyle(e), s4 = parseInt(r.getPropertyValue("padding-left")), o2 = parseInt(r.getPropertyValue("padding-top"));\n return [t.clientX - i5.left - s4, t.clientY - i5.top - o2];\n }\n function hn(n11, t, e, i5, r, s4, o2, a2, l4) {\n if (!s4) return;\n let h3 = jt(n11, t, e);\n if (h3) return h3[0] = Math.ceil((h3[0] + (l4 ? o2 / 2 : 0)) / o2), h3[1] = Math.ceil(h3[1] / a2), h3[0] = Math.min(Math.max(h3[0], 1), i5 + (l4 ? 1 : 0)), h3[1] = Math.min(Math.max(h3[1], 1), r), h3;\n }\n var gt2 = class {\n constructor(t, e) {\n this._charSizeService = t;\n this._renderService = e;\n }\n getCoords(t, e, i5, r, s4) {\n return hn(window, t, e, i5, r, this._charSizeService.hasValidSize, this._renderService.dimensions.css.cell.width, this._renderService.dimensions.css.cell.height, s4);\n }\n getMouseReportCoords(t, e) {\n let i5 = jt(oe3(e), t, e);\n if (this._charSizeService.hasValidSize) return i5[0] = Math.min(Math.max(i5[0], 0), this._renderService.dimensions.css.canvas.width - 1), i5[1] = Math.min(Math.max(i5[1], 0), this._renderService.dimensions.css.canvas.height - 1), { col: Math.floor(i5[0] / this._renderService.dimensions.css.cell.width), row: Math.floor(i5[1] / this._renderService.dimensions.css.cell.height), x: Math.floor(i5[0]), y: Math.floor(i5[1]) };\n }\n };\n gt2 = E4([m3(0, Me2), m3(1, G4)], gt2);\n var dn = typeof window == "object" ? window : globalThis;\n function he2(n11, t = 0) {\n return n11[n11.length - (1 + t)];\n }\n function mo(n11, t, e) {\n let i5 = null, r = null;\n if (typeof e.value == "function" ? (i5 = "value", r = e.value, r.length !== 0 && console.warn("Memoize should only be used in functions with zero parameters")) : typeof e.get == "function" && (i5 = "get", r = e.get), !r || !i5) throw new Error("not supported");\n let s4 = `$memoize$${t}`, o2 = e;\n o2[i5] = function(...a2) {\n return this.hasOwnProperty(s4) || Object.defineProperty(this, s4, { configurable: false, enumerable: false, writable: false, value: r.apply(this, a2) }), this[s4];\n };\n }\n var It = class It2 {\n constructor(t) {\n this.element = t, this.next = It2.Undefined, this.prev = It2.Undefined;\n }\n };\n It.Undefined = new It(void 0);\n var te2 = It;\n var Xi = class {\n constructor() {\n this._first = te2.Undefined;\n this._last = te2.Undefined;\n }\n push(t) {\n return this._insert(t, true);\n }\n _insert(t, e) {\n let i5 = new te2(t);\n if (this._first === te2.Undefined) this._first = i5, this._last = i5;\n else if (e) {\n let s4 = this._last;\n this._last = i5, i5.prev = s4, s4.next = i5;\n } else {\n let s4 = this._first;\n this._first = i5, i5.next = s4, s4.prev = i5;\n }\n let r = false;\n return () => {\n r || (r = true, this._remove(i5));\n };\n }\n _remove(t) {\n if (t.prev !== te2.Undefined && t.next !== te2.Undefined) {\n let e = t.prev;\n e.next = t.next, t.next.prev = e;\n } else t.prev === te2.Undefined && t.next === te2.Undefined ? (this._first = te2.Undefined, this._last = te2.Undefined) : t.next === te2.Undefined ? (this._last = this._last.prev, this._last.next = te2.Undefined) : t.prev === te2.Undefined && (this._first = this._first.next, this._first.prev = te2.Undefined);\n }\n *[Symbol.iterator]() {\n let t = this._first;\n for (; t !== te2.Undefined; ) yield t.element, t = t.next;\n }\n };\n var de2;\n ((s4) => (s4.TAP = "-xterm-gesturetap", s4.CHANGE = "-xterm-gesturechange", s4.START = "-xterm-gesturestart", s4.END = "-xterm-gesturesend", s4.CONTEXT_MENU = "-xterm-gesturecontextmenu"))(de2 ||= {});\n var W4 = class W5 extends g5 {\n constructor() {\n super();\n this._dispatched = false;\n this._targets = new Xi();\n this._ignoreTargets = new Xi();\n this._activeTouches = {}, this._handle = null, this._lastSetTapCountTime = 0;\n let e = dn;\n this._register(C3(e.document, "touchstart", (i5) => this._handleTouchStart(i5), { passive: false })), this._register(C3(e.document, "touchend", (i5) => this._handleTouchEnd(e, i5))), this._register(C3(e.document, "touchmove", (i5) => this._handleTouchMove(i5), { passive: false }));\n }\n static addTarget(e) {\n if (!W5.isTouchDevice()) return g5.None;\n W5._instance || (W5._instance = new W5());\n let i5 = W5._instance._targets.push(e);\n return y4(i5);\n }\n static ignoreTarget(e) {\n if (!W5.isTouchDevice()) return g5.None;\n W5._instance || (W5._instance = new W5());\n let i5 = W5._instance._ignoreTargets.push(e);\n return y4(i5);\n }\n static isTouchDevice() {\n return "ontouchstart" in dn || navigator.maxTouchPoints > 0;\n }\n dispose() {\n this._handle && (this._handle.dispose(), this._handle = null), super.dispose();\n }\n _handleTouchStart(e) {\n let i5 = Date.now();\n this._handle && (this._handle.dispose(), this._handle = null);\n for (let r = 0, s4 = e.targetTouches.length; r < s4; r++) {\n let o2 = e.targetTouches.item(r);\n this._activeTouches[o2.identifier] = { id: o2.identifier, initialTarget: o2.target, initialTimeStamp: i5, initialPageX: o2.pageX, initialPageY: o2.pageY, rollingTimestamps: [i5], rollingPageX: [o2.pageX], rollingPageY: [o2.pageY] };\n let a2 = this._newGestureEvent(de2.START, o2.target);\n a2.pageX = o2.pageX, a2.pageY = o2.pageY, this._dispatchEvent(a2);\n }\n this._dispatched && (e.preventDefault(), e.stopPropagation(), this._dispatched = false);\n }\n _handleTouchEnd(e, i5) {\n let r = Date.now(), s4 = Object.keys(this._activeTouches).length;\n for (let o2 = 0, a2 = i5.changedTouches.length; o2 < a2; o2++) {\n let l4 = i5.changedTouches.item(o2);\n if (!this._activeTouches.hasOwnProperty(String(l4.identifier))) {\n console.warn("move of an UNKNOWN touch", l4);\n continue;\n }\n let h3 = this._activeTouches[l4.identifier], d3 = Date.now() - h3.initialTimeStamp;\n if (d3 < W5._holdDelay && Math.abs(h3.initialPageX - he2(h3.rollingPageX)) < 30 && Math.abs(h3.initialPageY - he2(h3.rollingPageY)) < 30) {\n let c2 = this._newGestureEvent(de2.TAP, h3.initialTarget);\n c2.pageX = he2(h3.rollingPageX), c2.pageY = he2(h3.rollingPageY), this._dispatchEvent(c2);\n } else if (d3 >= W5._holdDelay && Math.abs(h3.initialPageX - he2(h3.rollingPageX)) < 30 && Math.abs(h3.initialPageY - he2(h3.rollingPageY)) < 30) {\n let c2 = this._newGestureEvent(de2.CONTEXT_MENU, h3.initialTarget);\n c2.pageX = he2(h3.rollingPageX), c2.pageY = he2(h3.rollingPageY), this._dispatchEvent(c2);\n } else if (s4 === 1) {\n let c2 = he2(h3.rollingPageX), u3 = he2(h3.rollingPageY), _5 = he2(h3.rollingTimestamps) - h3.rollingTimestamps[0], p3 = c2 - h3.rollingPageX[0], b4 = u3 - h3.rollingPageY[0], f5 = [...this._targets].filter((S4) => h3.initialTarget instanceof Node && S4.contains(h3.initialTarget));\n this._inertia(e, f5, r, Math.abs(p3) / _5, p3 > 0 ? 1 : -1, c2, Math.abs(b4) / _5, b4 > 0 ? 1 : -1, u3);\n }\n this._dispatchEvent(this._newGestureEvent(de2.END, h3.initialTarget)), delete this._activeTouches[l4.identifier];\n }\n this._dispatched && (i5.preventDefault(), i5.stopPropagation(), this._dispatched = false);\n }\n _newGestureEvent(e, i5) {\n let r = document.createEvent("CustomEvent");\n return r.initEvent(e, false, true), r.initialTarget = i5, r.tapCount = 0, r;\n }\n _dispatchEvent(e) {\n if (e.type === de2.TAP) {\n let i5 = (/* @__PURE__ */ new Date()).getTime(), r = 0;\n i5 - this._lastSetTapCountTime > W5._clearTapCountTime ? r = 1 : r = 2, this._lastSetTapCountTime = i5, e.tapCount = r;\n } else (e.type === de2.CHANGE || e.type === de2.CONTEXT_MENU) && (this._lastSetTapCountTime = 0);\n if (e.initialTarget instanceof Node) {\n for (let r of this._ignoreTargets) if (r.contains(e.initialTarget)) return;\n let i5 = [];\n for (let r of this._targets) if (r.contains(e.initialTarget)) {\n let s4 = 0, o2 = e.initialTarget;\n for (; o2 && o2 !== r; ) s4++, o2 = o2.parentElement;\n i5.push([s4, r]);\n }\n i5.sort((r, s4) => r[0] - s4[0]);\n for (let [, r] of i5) r.dispatchEvent(e), this._dispatched = true;\n }\n }\n _inertia(e, i5, r, s4, o2, a2, l4, h3, d3) {\n this._handle = rt3(e, () => {\n let c2 = Date.now(), u3 = c2 - r, _5 = 0, p3 = 0, b4 = true;\n s4 += W5._scrollFriction * u3, l4 += W5._scrollFriction * u3, s4 > 0 && (b4 = false, _5 = o2 * s4 * u3), l4 > 0 && (b4 = false, p3 = h3 * l4 * u3);\n let f5 = this._newGestureEvent(de2.CHANGE);\n f5.translationX = _5, f5.translationY = p3, i5.forEach((S4) => S4.dispatchEvent(f5)), b4 || this._inertia(e, i5, c2, s4, o2, a2 + _5, l4, h3, d3 + p3);\n });\n }\n _handleTouchMove(e) {\n let i5 = Date.now();\n for (let r = 0, s4 = e.changedTouches.length; r < s4; r++) {\n let o2 = e.changedTouches.item(r);\n if (!this._activeTouches.hasOwnProperty(String(o2.identifier))) {\n console.warn("end of an UNKNOWN touch", o2);\n continue;\n }\n let a2 = this._activeTouches[o2.identifier], l4 = this._newGestureEvent(de2.CHANGE, a2.initialTarget);\n l4.translationX = o2.pageX - he2(a2.rollingPageX), l4.translationY = o2.pageY - he2(a2.rollingPageY), l4.pageX = o2.pageX, l4.pageY = o2.pageY, l4.clientX = o2.clientX, l4.clientY = o2.clientY, this._dispatchEvent(l4), a2.rollingPageX.length > 3 && (a2.rollingPageX.shift(), a2.rollingPageY.shift(), a2.rollingTimestamps.shift()), a2.rollingPageX.push(o2.pageX), a2.rollingPageY.push(o2.pageY), a2.rollingTimestamps.push(i5);\n }\n this._dispatched && (e.preventDefault(), e.stopPropagation(), this._dispatched = false);\n }\n };\n W4._scrollFriction = -5e-3, W4._holdDelay = 700, W4._clearTapCountTime = 400, E4([mo], W4, "isTouchDevice", 1);\n var ji = W4;\n var Ct2 = class {\n constructor(t, e, i5, r, s4, o2, a2, l4, h3) {\n this._renderService = t;\n this._mouseCoordsService = e;\n this._mouseStateService = i5;\n this._coreService = r;\n this._bufferService = s4;\n this._optionsService = o2;\n this._selectionService = a2;\n this._logService = l4;\n this._coreBrowserService = h3;\n this._lastEvent = null;\n this._wheelPartialScroll = 0;\n this._touchScrollAccumulator = 0;\n }\n bindMouse(t, e, i5) {\n let { element: r, document: s4 } = t, o2 = { mouseup: null, wheel: null, mousedrag: null, mousemove: null }, a2 = { target: t, focus: i5, requestedEvents: o2 }, l4 = { mouseup: (h3) => this._handleMouseUp(a2, h3), wheel: (h3) => this._handleWheel(a2, h3), mousedrag: (h3) => this._handleMouseDrag(a2, h3), mousemove: (h3) => this._handleMouseMove(a2, h3) };\n e(this._mouseStateService.onProtocolChange((h3) => {\n this._handleProtocolChange(a2, l4, h3);\n })), this._mouseStateService.activeProtocol = this._mouseStateService.activeProtocol, e(y4(() => {\n o2.mouseup && s4.removeEventListener("mouseup", o2.mouseup), o2.mousedrag && s4.removeEventListener("mousemove", o2.mousedrag);\n })), e(C3(r, "mousedown", (h3) => this._handleMouseDown(a2, h3))), e(C3(r, "wheel", (h3) => this._handlePassiveWheel(a2, h3), { passive: false })), t.element.closest(".xterm-native-touch-selection") || (e(ji.addTarget(t.screenElement)), e(C3(t.screenElement, de2.START, () => this._handleTouchStart())), e(C3(t.screenElement, de2.CHANGE, (h3) => this._handleTouchChange(a2, h3))));\n }\n _sendEvent(t, e) {\n let i5 = this._mouseCoordsService.getMouseReportCoords(e, t.target.screenElement);\n if (!i5) return false;\n let r, s4;\n switch (e.overrideType || e.type) {\n case "mousemove":\n s4 = 32, e.buttons === void 0 ? (r = 3, e.button !== void 0 && (r = e.button < 3 ? e.button : 3)) : r = e.buttons & 1 ? 0 : e.buttons & 4 ? 1 : e.buttons & 2 ? 2 : 3;\n break;\n case "mouseup":\n s4 = 0, r = e.button < 3 ? e.button : 3;\n break;\n case "mousedown":\n s4 = 1, r = e.button < 3 ? e.button : 3;\n break;\n case "wheel":\n if (!this._mouseStateService.allowCustomWheelEvent(e)) return false;\n let o2 = e.deltaY;\n if (o2 === 0 || this._consumeWheelEvent(e, this._renderService?.dimensions?.device?.cell?.height, this._coreBrowserService?.dpr) === 0) return false;\n s4 = o2 < 0 ? 0 : 1, r = 4;\n break;\n default:\n return false;\n }\n return s4 === void 0 || r === void 0 || r > 4 ? false : this._triggerMouseEvent({ col: i5.col, row: i5.row, x: i5.x, y: i5.y, button: r, action: s4, ctrl: e.ctrlKey, alt: e.altKey, shift: e.shiftKey });\n }\n _handleMouseUp(t, e) {\n this._sendEvent(t, e), e.buttons || (t.requestedEvents.mouseup && t.target.document.removeEventListener("mouseup", t.requestedEvents.mouseup), t.requestedEvents.mousedrag && t.target.document.removeEventListener("mousemove", t.requestedEvents.mousedrag));\n }\n _handleWheel(t, e) {\n return this._sendEvent(t, e), e.preventDefault(), e.stopPropagation(), false;\n }\n _handleMouseDrag(t, e) {\n e.buttons && this._sendEvent(t, e);\n }\n _handleMouseMove(t, e) {\n e.buttons || this._sendEvent(t, e);\n }\n _handleMouseDown(t, e) {\n e.preventDefault(), t.focus(), !(!this._mouseStateService.areMouseEventsActive || this._selectionService.shouldForceSelection(e)) && (this._sendEvent(t, e), t.requestedEvents.mouseup && t.target.document.addEventListener("mouseup", t.requestedEvents.mouseup), t.requestedEvents.mousedrag && t.target.document.addEventListener("mousemove", t.requestedEvents.mousedrag));\n }\n _handlePassiveWheel(t, e) {\n if (!t.requestedEvents.wheel) {\n if (!this._mouseStateService.allowCustomWheelEvent(e)) return false;\n if (!this._bufferService.buffer.hasScrollback) {\n if (e.deltaY === 0) return false;\n if (this._consumeWheelEvent(e, this._renderService?.dimensions?.device?.cell?.height, this._coreBrowserService?.dpr) === 0) return e.preventDefault(), e.stopPropagation(), false;\n let s4 = "\\x1B" + (this._coreService.decPrivateModes.applicationCursorKeys ? "O" : "[") + (e.deltaY < 0 ? "A" : "B");\n return this._coreService.triggerDataEvent(s4, true), e.preventDefault(), e.stopPropagation(), false;\n }\n }\n }\n _handleTouchStart() {\n this._touchScrollAccumulator = 0;\n }\n _handleTouchChange(t, e) {\n if (e.preventDefault(), e.stopPropagation(), t.requestedEvents.wheel) {\n this._handleTouchScrollAsWheel(t, e);\n return;\n }\n if (!this._bufferService.buffer.hasScrollback) {\n this._handleTouchScrollAsKeys(e);\n return;\n }\n t.target.handleTouchScroll?.(e.translationY);\n }\n _handleTouchScrollAsKeys(t) {\n let e = this._renderService?.dimensions.css.cell.height;\n if (!e) return;\n this._touchScrollAccumulator -= t.translationY;\n let i5 = Math.trunc(this._touchScrollAccumulator / e);\n if (i5 === 0) return;\n this._touchScrollAccumulator -= i5 * e;\n let r = "\\x1B" + (this._coreService.decPrivateModes.applicationCursorKeys ? "O" : "[") + (i5 < 0 ? "A" : "B");\n for (let s4 = 0; s4 < Math.abs(i5); s4++) this._coreService.triggerDataEvent(r, true);\n }\n _handleTouchScrollAsWheel(t, e) {\n let i5 = this._renderService?.dimensions.css.cell.height;\n if (!i5) return;\n this._touchScrollAccumulator -= e.translationY;\n let r = Math.trunc(this._touchScrollAccumulator / i5);\n if (r === 0) return;\n this._touchScrollAccumulator -= r * i5;\n let s4 = this._mouseCoordsService.getMouseReportCoords(e, t.target.screenElement);\n if (s4) for (let o2 = 0; o2 < Math.abs(r); o2++) this._triggerMouseEvent({ col: s4.col, row: s4.row, x: s4.x, y: s4.y, button: 4, action: r < 0 ? 0 : 1, ctrl: false, alt: false, shift: false });\n }\n reset() {\n this._lastEvent = null, this._wheelPartialScroll = 0, this._touchScrollAccumulator = 0;\n }\n _handleProtocolChange(t, e, i5) {\n let { element: r, document: s4 } = t.target, { requestedEvents: o2 } = t;\n i5 ? (this._optionsService.rawOptions.logLevel === "debug" && this._logService.debug("Binding to mouse events:", this._explainEvents(i5)), r.classList.add("enable-mouse-events"), this._selectionService.disable()) : (this._logService.debug("Unbinding from mouse events."), r.classList.remove("enable-mouse-events"), this._selectionService.enable()), i5 & 8 ? o2.mousemove || (r.addEventListener("mousemove", e.mousemove), o2.mousemove = e.mousemove) : (o2.mousemove && r.removeEventListener("mousemove", o2.mousemove), o2.mousemove = null), i5 & 16 ? o2.wheel || (r.addEventListener("wheel", e.wheel, { passive: false }), o2.wheel = e.wheel) : (o2.wheel && r.removeEventListener("wheel", o2.wheel), o2.wheel = null), i5 & 2 ? o2.mouseup ??= e.mouseup : (o2.mouseup && s4.removeEventListener("mouseup", o2.mouseup), o2.mouseup = null), i5 & 4 ? o2.mousedrag ??= e.mousedrag : (o2.mousedrag && s4.removeEventListener("mousemove", o2.mousedrag), o2.mousedrag = null);\n }\n _applyScrollModifier(t, e) {\n return e.altKey || e.ctrlKey || e.shiftKey ? t * this._optionsService.rawOptions.fastScrollSensitivity * this._optionsService.rawOptions.scrollSensitivity : t * this._optionsService.rawOptions.scrollSensitivity;\n }\n _consumeWheelEvent(t, e, i5) {\n if (t.deltaY === 0 || t.shiftKey || e === void 0 || i5 === void 0) return 0;\n let r = e / i5, s4 = this._applyScrollModifier(t.deltaY, t);\n return t.deltaMode === WheelEvent.DOM_DELTA_PIXEL ? (s4 /= r + 0, Math.abs(t.deltaY) < 50 && (s4 *= 0.3), this._wheelPartialScroll += s4, s4 = Math.floor(Math.abs(this._wheelPartialScroll)) * (this._wheelPartialScroll > 0 ? 1 : -1), this._wheelPartialScroll %= 1) : t.deltaMode === WheelEvent.DOM_DELTA_PAGE && (s4 *= this._bufferService.rows), s4;\n }\n _triggerMouseEvent(t) {\n if (t.col < 0 || t.col >= this._bufferService.cols || t.row < 0 || t.row >= this._bufferService.rows || t.button === 4 && t.action === 32 || t.button === 3 && t.action !== 32 || t.button !== 4 && (t.action === 2 || t.action === 3) || (t.col++, t.row++, t.action === 32 && this._lastEvent && this._equalEvents(this._lastEvent, t, this._mouseStateService.isPixelEncoding)) || !this._mouseStateService.restrictMouseEvent(t)) return false;\n let e = this._mouseStateService.encodeMouseEvent(t);\n return e && (this._mouseStateService.isDefaultEncoding ? this._coreService.triggerBinaryEvent(e) : this._coreService.triggerDataEvent(e, true)), this._lastEvent = t, true;\n }\n _explainEvents(t) {\n return { down: !!(t & 1), up: !!(t & 2), drag: !!(t & 4), move: !!(t & 8), wheel: !!(t & 16) };\n }\n _equalEvents(t, e, i5) {\n if (i5) {\n if (t.x !== e.x || t.y !== e.y) return false;\n } else if (t.col !== e.col || t.row !== e.row) return false;\n return !(t.button !== e.button || t.action !== e.action || t.ctrl !== e.ctrl || t.alt !== e.alt || t.shift !== e.shift);\n }\n };\n Ct2 = E4([m3(0, G4), m3(1, Be2), m3(2, et2), m3(3, Y), m3(4, L5), m3(5, R3), m3(6, Ci), m3(7, pe), m3(8, z3)], Ct2);\n var Zi = class {\n constructor(t, e) {\n this._renderCallback = t;\n this._coreBrowserService = e;\n this._refreshCallbacks = [];\n }\n dispose() {\n this._animationFrame && (this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame), this._animationFrame = void 0);\n }\n addRefreshCallback(t) {\n return this._refreshCallbacks.push(t), this._animationFrame || (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh())), this._animationFrame;\n }\n refresh(t, e, i5) {\n this._rowCount = i5, t = t ?? 0, e = e ?? this._rowCount - 1, this._rowStart = this._rowStart !== void 0 ? Math.min(this._rowStart, t) : t, this._rowEnd = this._rowEnd !== void 0 ? Math.max(this._rowEnd, e) : e, !this._animationFrame && (this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh()));\n }\n _innerRefresh() {\n if (this._animationFrame = void 0, this._rowStart === void 0 || this._rowEnd === void 0 || this._rowCount === void 0) {\n this._runRefreshCallbacks();\n return;\n }\n let t = Math.max(this._rowStart, 0), e = Math.min(this._rowEnd, this._rowCount - 1);\n this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(t, e), this._runRefreshCallbacks();\n }\n _runRefreshCallbacks() {\n for (let t of this._refreshCallbacks) t(0);\n this._refreshCallbacks = [];\n }\n };\n var Ji = class {\n constructor(t) {\n this._tasks = [];\n this._i = 0;\n this._logService = t;\n }\n enqueue(t) {\n this._tasks.push(t), this._start();\n }\n flush() {\n for (; this._i < this._tasks.length; ) this._tasks[this._i]() || this._i++;\n this.clear();\n }\n clear() {\n this._idleCallback && (this._cancelCallback(this._idleCallback), this._idleCallback = void 0), this._i = 0, this._tasks.length = 0;\n }\n _start() {\n this._idleCallback || (this._idleCallback = this._requestCallback(this._process.bind(this)));\n }\n _process(t) {\n this._idleCallback = void 0;\n let e = 0, i5 = 0, r = t.timeRemaining(), s4 = 0;\n for (; this._i < this._tasks.length; ) {\n if (e = performance.now(), this._tasks[this._i]() || this._i++, e = Math.max(1, performance.now() - e), i5 = Math.max(e, i5), s4 = t.timeRemaining(), i5 * 1.5 > s4) {\n r - e < -20 && this._logService.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(r - e))}ms`), this._start();\n return;\n }\n r = s4;\n }\n this.clear();\n }\n };\n var fs = class extends Ji {\n _requestCallback(t) {\n return setTimeout(() => t(this._createDeadline(16)));\n }\n _cancelCallback(t) {\n clearTimeout(t);\n }\n _createDeadline(t) {\n let e = performance.now() + t;\n return { timeRemaining: () => Math.max(0, e - performance.now()) };\n }\n };\n var ps = class extends Ji {\n _requestCallback(t) {\n return requestIdleCallback(t);\n }\n _cancelCallback(t) {\n cancelIdleCallback(t);\n }\n };\n var Et2 = "requestIdleCallback" in globalThis ? ps : fs;\n var Qi = class {\n constructor(t) {\n this._queue = new Et2(t);\n }\n set(t) {\n this._queue.clear(), this._queue.enqueue(t);\n }\n flush() {\n this._queue.flush();\n }\n dispose() {\n this._queue.clear();\n }\n };\n var yt3 = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3, d3, c2) {\n super();\n this._rowCount = e;\n this._optionsService = r;\n this._logService = s4;\n this._charSizeService = o2;\n this._coreService = a2;\n this._coreBrowserService = d3;\n this._renderer = this._register(new me3());\n this._observerDisposable = this._register(new me3());\n this._isPaused = false;\n this._needsFullRefresh = false;\n this._isNextRenderRedrawOnly = true;\n this._needsSelectionRefresh = false;\n this._canvasWidth = 0;\n this._canvasHeight = 0;\n this._selectionState = { start: void 0, end: void 0, columnSelectMode: false };\n this._onDimensionsChange = this._register(new v5());\n this.onDimensionsChange = this._onDimensionsChange.event;\n this._onRenderedViewportChange = this._register(new v5());\n this.onRenderedViewportChange = this._onRenderedViewportChange.event;\n this._onRender = this._register(new v5());\n this.onRender = this._onRender.event;\n this._onRefreshRequest = this._register(new v5());\n this.onRefreshRequest = this._onRefreshRequest.event;\n this._pausedResizeTask = this._register(new Qi(this._logService)), this._renderDebouncer = new Zi((u3, _5) => this._renderRows(u3, _5), this._coreBrowserService), this._register(this._renderDebouncer), this._syncOutputHandler = new _s(this._coreBrowserService, this._coreService, () => this._fullRefresh()), this._register(y4(() => this._syncOutputHandler.dispose())), this._register(this._coreBrowserService.onDprChange(() => this.handleDevicePixelRatioChange())), this._register(h3.onResize(() => this._fullRefresh())), this._register(h3.buffers.onBufferActivate(() => this._renderer.value?.clear())), this._register(this._optionsService.onOptionChange(() => this._handleOptionsChanged())), this._register(this._charSizeService.onCharSizeChange(() => this.handleCharSizeChanged())), this._register(l4.onDecorationRegistered(() => this._fullRefresh())), this._register(l4.onDecorationRemoved(() => this._fullRefresh())), this._register(this._optionsService.onMultipleOptionChange(["drawBoldTextInBrightColors", "letterSpacing", "lineHeight", "fontFamily", "fontSize", "fontWeight", "fontWeightBold", "minimumContrastRatio", "rescaleOverlappingGlyphs"], () => {\n this.clear(), this.handleResize(h3.cols, h3.rows), this._fullRefresh();\n })), this._register(this._optionsService.onMultipleOptionChange(["cursorBlink", "cursorStyle"], () => this.refreshRows(h3.buffer.y, h3.buffer.y, void 0, true))), this._register(c2.onChangeColors(() => this._fullRefresh())), this._registerIntersectionObserver(this._coreBrowserService.window, i5), this._register(this._coreBrowserService.onWindowChange((u3) => this._registerIntersectionObserver(u3, i5)));\n }\n get dimensions() {\n return this._renderer.value.dimensions;\n }\n _registerIntersectionObserver(e, i5) {\n if ("IntersectionObserver" in e) {\n let r = new e.IntersectionObserver((s4) => this._handleIntersectionChange(s4[s4.length - 1]), { threshold: 0 });\n r.observe(i5), this._observerDisposable.value = y4(() => r.disconnect());\n }\n }\n _handleIntersectionChange(e) {\n this._isPaused = e.isIntersecting === void 0 ? e.intersectionRatio === 0 : !e.isIntersecting, this._renderer.value?.handleViewportVisibilityChange?.(!this._isPaused), !this._isPaused && !this._charSizeService.hasValidSize && this._charSizeService.measure(), !this._isPaused && this._needsFullRefresh && (this._pausedResizeTask.flush(), this.refreshRows(0, this._rowCount - 1), this._needsFullRefresh = false);\n }\n refreshRows(e, i5, r = false, s4 = false) {\n if (this._isPaused) {\n this._needsFullRefresh = true;\n return;\n }\n if (this._coreService.decPrivateModes.synchronizedOutput) {\n this._syncOutputHandler.bufferRows(e, i5);\n return;\n }\n let o2 = this._syncOutputHandler.flush();\n o2 && (e = Math.min(e, o2.start), i5 = Math.max(i5, o2.end)), s4 || (this._isNextRenderRedrawOnly = false), r ? this._renderRows(e, i5) : this._renderDebouncer.refresh(e, i5, this._rowCount);\n }\n _renderRows(e, i5) {\n if (this._renderer.value) {\n if (this._coreService.decPrivateModes.synchronizedOutput) {\n this._syncOutputHandler.bufferRows(e, i5);\n return;\n }\n e = Math.min(e, this._rowCount - 1), i5 = Math.min(i5, this._rowCount - 1), this._renderer.value.renderRows(e, i5), this._needsSelectionRefresh && (this._renderer.value.handleSelectionChanged(this._selectionState.start, this._selectionState.end, this._selectionState.columnSelectMode), this._needsSelectionRefresh = false), this._isNextRenderRedrawOnly || this._onRenderedViewportChange.fire({ start: e, end: i5 }), this._onRender.fire({ start: e, end: i5 }), this._isNextRenderRedrawOnly = true;\n }\n }\n resize(e, i5) {\n this._rowCount = i5, this._fireOnCanvasResize();\n }\n _handleOptionsChanged() {\n this._renderer.value && (this.refreshRows(0, this._rowCount - 1), this._fireOnCanvasResize());\n }\n _fireOnCanvasResize() {\n this._renderer.value && (this._renderer.value.dimensions.css.canvas.width === this._canvasWidth && this._renderer.value.dimensions.css.canvas.height === this._canvasHeight || this._onDimensionsChange.fire(this._renderer.value.dimensions));\n }\n hasRenderer() {\n return !!this._renderer.value;\n }\n setRenderer(e) {\n this._renderer.value = e, this._renderer.value && (this._renderer.value.onRequestRedraw((i5) => this.refreshRows(i5.start, i5.end, i5.sync, true)), this._needsSelectionRefresh = true, this._fullRefresh());\n }\n addRefreshCallback(e) {\n return this._renderDebouncer.addRefreshCallback(e);\n }\n _fullRefresh() {\n this._isPaused ? this._needsFullRefresh = true : this.refreshRows(0, this._rowCount - 1);\n }\n clearTextureAtlas() {\n this._renderer.value && (this._renderer.value.clearTextureAtlas?.(), this._fullRefresh());\n }\n handleDevicePixelRatioChange() {\n this._charSizeService.measure(), this._renderer.value && (this._renderer.value.handleDevicePixelRatioChange(), this.refreshRows(0, this._rowCount - 1));\n }\n handleResize(e, i5) {\n this._renderer.value && (this._isPaused ? this._pausedResizeTask.set(() => this._renderer.value?.handleResize(e, i5)) : this._renderer.value.handleResize(e, i5), this._fullRefresh());\n }\n handleCharSizeChanged() {\n this._renderer.value?.handleCharSizeChanged();\n }\n handleBlur() {\n this._renderer.value?.handleBlur();\n }\n handleFocus() {\n this._renderer.value?.handleFocus();\n }\n handleSelectionChanged(e, i5, r) {\n this._selectionState.start = e, this._selectionState.end = i5, this._selectionState.columnSelectMode = r, this._renderer.value?.handleSelectionChanged(e, i5, r);\n }\n handleCursorMove() {\n this._renderer.value?.handleCursorMove();\n }\n clear() {\n this._renderer.value?.clear();\n }\n };\n yt3 = E4([m3(2, R3), m3(3, pe), m3(4, Me2), m3(5, Y), m3(6, Ie2), m3(7, L5), m3(8, z3), m3(9, _e2)], yt3);\n var _s = class {\n constructor(t, e, i5) {\n this._coreBrowserService = t;\n this._coreService = e;\n this._onTimeout = i5;\n this._start = 0;\n this._end = 0;\n this._isBuffering = false;\n }\n bufferRows(t, e) {\n this._isBuffering ? (this._start = Math.min(this._start, t), this._end = Math.max(this._end, e)) : (this._start = t, this._end = e, this._isBuffering = true), this._timeout ??= this._coreBrowserService.window.setTimeout(() => {\n this._timeout = void 0, this._coreService.decPrivateModes.synchronizedOutput = false, this._onTimeout();\n }, 1e3);\n }\n flush() {\n if (this._timeout !== void 0 && (this._coreBrowserService.window.clearTimeout(this._timeout), this._timeout = void 0), !this._isBuffering) return;\n let t = { start: this._start, end: this._end };\n return this._isBuffering = false, t;\n }\n dispose() {\n this._timeout !== void 0 && (this._coreBrowserService.window.clearTimeout(this._timeout), this._timeout = void 0);\n }\n };\n function un(n11, t, e, i5) {\n let r = e.buffer.x, s4 = e.buffer.y;\n if (!e.buffer.hasScrollback) return Io(r, s4, n11, t, e, i5) + er(s4, t, e, i5) + Co(r, s4, n11, t, e, i5);\n let o2;\n if (s4 === t) return o2 = r > n11 ? "D" : "C", Jt(Math.abs(r - n11), Zt2(o2, i5));\n o2 = s4 > t ? "D" : "C";\n let a2 = Math.abs(s4 - t), l4 = go(s4 > t ? n11 : r, e) + (a2 - 1) * e.cols + 1 + So(s4 > t ? r : n11, e);\n return Jt(l4, Zt2(o2, i5));\n }\n function So(n11, t) {\n return n11 - 1;\n }\n function go(n11, t) {\n return t.cols - n11;\n }\n function Io(n11, t, e, i5, r, s4) {\n return er(t, i5, r, s4).length === 0 ? "" : Jt(pn(n11, t, n11, t - qe(t, r), false, r).length, Zt2("D", s4));\n }\n function er(n11, t, e, i5) {\n let r = n11 - qe(n11, e), s4 = t - qe(t, e), o2 = Math.abs(r - s4) - Eo(n11, t, e);\n return Jt(o2, Zt2(fn(n11, t), i5));\n }\n function Co(n11, t, e, i5, r, s4) {\n let o2;\n er(t, i5, r, s4).length > 0 ? o2 = i5 - qe(i5, r) : o2 = t;\n let a2 = i5, l4 = yo(n11, t, e, i5, r, s4);\n return Jt(pn(n11, o2, e, a2, l4 === "C", r).length, Zt2(l4, s4));\n }\n function Eo(n11, t, e) {\n let i5 = 0, r = n11 - qe(n11, e), s4 = t - qe(t, e);\n for (let o2 = 0; o2 < Math.abs(r - s4); o2++) {\n let a2 = fn(n11, t) === "A" ? -1 : 1;\n e.buffer.lines.get(r + a2 * o2)?.isWrapped && i5++;\n }\n return i5;\n }\n function qe(n11, t) {\n let e = 0, i5 = t.buffer.lines.get(n11), r = i5?.isWrapped;\n for (; r && n11 >= 0 && n11 < t.rows; ) e++, i5 = t.buffer.lines.get(--n11), r = i5?.isWrapped;\n return e;\n }\n function yo(n11, t, e, i5, r, s4) {\n let o2;\n return er(e, i5, r, s4).length > 0 ? o2 = i5 - qe(i5, r) : o2 = t, n11 < e && o2 <= i5 || n11 >= e && o2 < i5 ? "C" : "D";\n }\n function fn(n11, t) {\n return n11 > t ? "A" : "B";\n }\n function pn(n11, t, e, i5, r, s4) {\n let o2 = n11, a2 = t, l4 = "";\n for (; (o2 !== e || a2 !== i5) && a2 >= 0 && a2 < s4.buffer.lines.length; ) o2 += r ? 1 : -1, r && o2 > s4.cols - 1 ? (l4 += s4.buffer.translateBufferLineToString(a2, false, n11, o2), o2 = 0, n11 = 0, a2++) : !r && o2 < 0 && (l4 += s4.buffer.translateBufferLineToString(a2, false, 0, n11 + 1), o2 = s4.cols - 1, n11 = o2, a2--);\n return l4 + s4.buffer.translateBufferLineToString(a2, false, n11, o2);\n }\n function Zt2(n11, t) {\n let e = t ? "O" : "[";\n return "\\x1B" + e + n11;\n }\n function Jt(n11, t) {\n n11 = Math.floor(n11);\n let e = "";\n for (let i5 = 0; i5 < n11; i5++) e += t;\n return e;\n }\n var tr = class {\n constructor(t) {\n this._bufferService = t;\n this.isSelectAllActive = false;\n this.selectionStartLength = 0;\n }\n clearSelection() {\n this.selectionStart = void 0, this.selectionEnd = void 0, this.isSelectAllActive = false, this.selectionStartLength = 0;\n }\n get finalSelectionStart() {\n return this.isSelectAllActive ? [0, 0] : !this.selectionEnd || !this.selectionStart ? this.selectionStart : this.areSelectionValuesReversed() ? this.selectionEnd : this.selectionStart;\n }\n get finalSelectionEnd() {\n if (this.isSelectAllActive) return [this._bufferService.cols, this._bufferService.buffer.ybase + this._bufferService.rows - 1];\n if (this.selectionStart) {\n if (!this.selectionEnd || this.areSelectionValuesReversed()) {\n let t = this.selectionStart[0] + this.selectionStartLength;\n return t > this._bufferService.cols ? t % this._bufferService.cols === 0 ? [this._bufferService.cols, this.selectionStart[1] + Math.floor(t / this._bufferService.cols) - 1] : [t % this._bufferService.cols, this.selectionStart[1] + Math.floor(t / this._bufferService.cols)] : [t, this.selectionStart[1]];\n }\n if (this.selectionStartLength && this.selectionEnd[1] === this.selectionStart[1]) {\n let t = this.selectionStart[0] + this.selectionStartLength;\n return t > this._bufferService.cols ? [t % this._bufferService.cols, this.selectionStart[1] + Math.floor(t / this._bufferService.cols)] : [Math.max(t, this.selectionEnd[0]), this.selectionEnd[1]];\n }\n return this.selectionEnd;\n }\n }\n areSelectionValuesReversed() {\n let t = this.selectionStart, e = this.selectionEnd;\n return !t || !e ? false : t[1] > e[1] || t[1] === e[1] && t[0] > e[0];\n }\n handleTrim(t) {\n return this.selectionStart && (this.selectionStart[1] -= t), this.selectionEnd && (this.selectionEnd[1] -= t), this.selectionEnd && this.selectionEnd[1] < 0 ? (this.clearSelection(), true) : (this.selectionStart && this.selectionStart[1] < 0 && (this.selectionStart[1] = 0), false);\n }\n };\n function ms(n11, t) {\n if (n11.start.y > n11.end.y) throw new Error(`Buffer range end (${n11.end.x}, ${n11.end.y}) cannot be before start (${n11.start.x}, ${n11.start.y})`);\n return t * (n11.end.y - n11.start.y) + (n11.end.x - n11.start.x + 1);\n }\n var bs = 50;\n var xo = 15;\n var wo = 50;\n var To = 500;\n var Do = "\\xA0";\n var Ro = new RegExp(Do, "g");\n var xt3 = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3, d3) {\n super();\n this._element = e;\n this._screenElement = i5;\n this._linkifier = r;\n this._bufferService = s4;\n this._coreService = o2;\n this._mouseCoordsService = a2;\n this._optionsService = l4;\n this._renderService = h3;\n this._coreBrowserService = d3;\n this._dragScrollAmount = 0;\n this._enabled = true;\n this._workCell = new N2();\n this._mouseDownTimeStamp = 0;\n this._oldHasSelection = false;\n this._oldSelectionStart = void 0;\n this._oldSelectionEnd = void 0;\n this._onLinuxMouseSelection = this._register(new v5());\n this.onLinuxMouseSelection = this._onLinuxMouseSelection.event;\n this._onRedrawRequest = this._register(new v5());\n this.onRequestRedraw = this._onRedrawRequest.event;\n this._onSelectionChange = this._register(new v5());\n this.onSelectionChange = this._onSelectionChange.event;\n this._onRequestScrollLines = this._register(new v5());\n this.onRequestScrollLines = this._onRequestScrollLines.event;\n this._mouseMoveListener = (c2) => this._handleMouseMove(c2), this._mouseUpListener = (c2) => this._handleMouseUp(c2), this._coreService.onUserInput(() => {\n this.hasSelection && this.clearSelection();\n }), this._trimListener = this._bufferService.buffer.lines.onTrim((c2) => this._handleTrim(c2)), this._register(this._bufferService.buffers.onBufferActivate((c2) => this._handleBufferActivate(c2))), this.enable(), this._model = new tr(this._bufferService), this._activeSelectionMode = 0, this._register(y4(() => {\n this._removeMouseDownListeners();\n })), this._register(this._bufferService.onResize((c2) => {\n c2.rowsChanged && this.clearSelection();\n }));\n }\n reset() {\n this.clearSelection();\n }\n disable() {\n this.clearSelection(), this._enabled = false;\n }\n enable() {\n this._enabled = true;\n }\n get selectionStart() {\n return this._model.finalSelectionStart;\n }\n get selectionEnd() {\n return this._model.finalSelectionEnd;\n }\n get hasSelection() {\n let e = this._model.finalSelectionStart, i5 = this._model.finalSelectionEnd;\n return !e || !i5 ? false : e[0] !== i5[0] || e[1] !== i5[1];\n }\n get selectionText() {\n let e = this._model.finalSelectionStart, i5 = this._model.finalSelectionEnd;\n if (!e || !i5) return "";\n let r = this._bufferService.buffer, s4 = [];\n if (this._activeSelectionMode === 3) {\n if (e[0] === i5[0]) return "";\n let a2 = e[0] < i5[0] ? e[0] : i5[0], l4 = e[0] < i5[0] ? i5[0] : e[0];\n for (let h3 = e[1]; h3 <= i5[1]; h3++) {\n let d3 = r.translateBufferLineToString(h3, true, a2, l4);\n s4.push(d3);\n }\n } else {\n let a2 = e[1] === i5[1] ? i5[0] : void 0;\n s4.push(r.translateBufferLineToString(e[1], true, e[0], a2));\n for (let l4 = e[1] + 1; l4 <= i5[1] - 1; l4++) {\n let h3 = r.lines.get(l4), d3 = r.translateBufferLineToString(l4, true);\n h3?.isWrapped ? s4[s4.length - 1] += d3 : s4.push(d3);\n }\n if (e[1] !== i5[1]) {\n let l4 = r.lines.get(i5[1]), h3 = r.translateBufferLineToString(i5[1], true, 0, i5[0]);\n l4 && l4.isWrapped ? s4[s4.length - 1] += h3 : s4.push(h3);\n }\n }\n return s4.map((a2) => a2.replace(Ro, " ")).join(Ke3 ? `\\r\n` : `\n`);\n }\n clearSelection() {\n this._model.clearSelection(), this._removeMouseDownListeners(), this.refresh(), this._onSelectionChange.fire();\n }\n refresh(e) {\n this._refreshAnimationFrame || (this._refreshAnimationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._refresh())), $t2 && e && this.selectionText.length && this._onLinuxMouseSelection.fire(this.selectionText);\n }\n _refresh() {\n this._refreshAnimationFrame = void 0, this._onRedrawRequest.fire({ start: this._model.finalSelectionStart, end: this._model.finalSelectionEnd, columnSelectMode: this._activeSelectionMode === 3 });\n }\n _isClickInSelection(e) {\n let i5 = this._getMouseBufferCoords(e), r = this._model.finalSelectionStart, s4 = this._model.finalSelectionEnd;\n return !r || !s4 || !i5 ? false : this._areCoordsInSelection(i5, r, s4);\n }\n isCellInSelection(e, i5) {\n let r = this._model.finalSelectionStart, s4 = this._model.finalSelectionEnd;\n return !r || !s4 ? false : this._areCoordsInSelection([e, i5], r, s4);\n }\n _areCoordsInSelection(e, i5, r) {\n return e[1] > i5[1] && e[1] < r[1] || i5[1] === r[1] && e[1] === i5[1] && e[0] >= i5[0] && e[0] < r[0] || i5[1] < r[1] && e[1] === r[1] && e[0] < r[0] || i5[1] < r[1] && e[1] === i5[1] && e[0] >= i5[0];\n }\n _selectWordAtCursor(e, i5) {\n let r = this._linkifier.currentLink?.link?.range;\n if (r) return this._model.selectionStart = [r.start.x - 1, r.start.y - 1], this._model.selectionStartLength = ms(r, this._bufferService.cols), this._model.selectionEnd = void 0, true;\n let s4 = this._getMouseBufferCoords(e);\n return s4 ? (this._selectWordAt(s4, i5), this._model.selectionEnd = void 0, true) : false;\n }\n selectAll() {\n this._model.isSelectAllActive = true, this.refresh(), this._onSelectionChange.fire();\n }\n selectLines(e, i5) {\n this._model.clearSelection(), e = Math.max(e, 0), i5 = Math.min(i5, this._bufferService.buffer.lines.length - 1), this._model.selectionStart = [0, e], this._model.selectionEnd = [this._bufferService.cols, i5], this.refresh(), this._onSelectionChange.fire();\n }\n _handleTrim(e) {\n this._model.handleTrim(e) && this.refresh();\n }\n _getMouseBufferCoords(e) {\n let i5 = this._mouseCoordsService.getCoords(e, this._screenElement, this._bufferService.cols, this._bufferService.rows, true);\n if (i5) return i5[0]--, i5[1]--, i5[1] += this._bufferService.buffer.ydisp, i5;\n }\n _getMouseEventScrollAmount(e) {\n let i5 = jt(this._coreBrowserService.window, e, this._screenElement)[1], r = this._renderService.dimensions.css.canvas.height;\n return i5 >= 0 && i5 <= r ? 0 : (i5 > r && (i5 -= r), i5 = Math.min(Math.max(i5, -bs), bs), i5 /= bs, i5 / Math.abs(i5) + Math.round(i5 * (xo - 1)));\n }\n shouldForceSelection(e) {\n return ee3 ? e.altKey && this._optionsService.rawOptions.macOptionClickForcesSelection : e.shiftKey;\n }\n handleMouseDown(e) {\n if (this._mouseDownTimeStamp = e.timeStamp, !(e.button === 2 && this.hasSelection) && e.button === 0) {\n if (!this._enabled) {\n if (!this.shouldForceSelection(e)) return;\n e.stopPropagation();\n }\n e.preventDefault(), this._dragScrollAmount = 0, this._enabled && e.shiftKey ? this._handleIncrementalClick(e) : e.detail === 1 ? this._handleSingleClick(e) : e.detail === 2 ? this._handleDoubleClick(e) : e.detail === 3 && this._handleTripleClick(e), this._addMouseDownListeners(), this.refresh(true);\n }\n }\n _addMouseDownListeners() {\n this._screenElement.ownerDocument && (this._screenElement.ownerDocument.addEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.addEventListener("mouseup", this._mouseUpListener)), this._dragScrollIntervalTimer = this._coreBrowserService.window.setInterval(() => this._dragScroll(), wo);\n }\n _removeMouseDownListeners() {\n this._screenElement.ownerDocument && (this._screenElement.ownerDocument.removeEventListener("mousemove", this._mouseMoveListener), this._screenElement.ownerDocument.removeEventListener("mouseup", this._mouseUpListener)), this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer), this._dragScrollIntervalTimer = void 0;\n }\n _handleIncrementalClick(e) {\n this._model.selectionStart && (this._model.selectionEnd = this._getMouseBufferCoords(e));\n }\n _handleSingleClick(e) {\n let i5 = this.hasSelection;\n if (this._model.selectionStartLength = 0, this._model.isSelectAllActive = false, this._activeSelectionMode = this.shouldColumnSelect(e) ? 3 : 0, this._model.selectionStart = this._getMouseBufferCoords(e), !this._model.selectionStart) return;\n this._model.selectionEnd = void 0, i5 && this._fireOnSelectionChange(this._model.finalSelectionStart, this._model.finalSelectionEnd, false);\n let r = this._bufferService.buffer.lines.get(this._model.selectionStart[1]);\n r && r.length !== this._model.selectionStart[0] && r.hasWidth(this._model.selectionStart[0]) === 0 && this._model.selectionStart[0]++;\n }\n _handleDoubleClick(e) {\n this._selectWordAtCursor(e, true) && (this._activeSelectionMode = 1);\n }\n _handleTripleClick(e) {\n let i5 = this._getMouseBufferCoords(e);\n i5 && (this._activeSelectionMode = 2, this._selectLineAt(i5[1]));\n }\n shouldColumnSelect(e) {\n return e.altKey && !(ee3 && this._optionsService.rawOptions.macOptionClickForcesSelection);\n }\n _handleMouseMove(e) {\n if (e.stopImmediatePropagation(), !this._model.selectionStart) return;\n let i5 = this._model.selectionEnd ? [this._model.selectionEnd[0], this._model.selectionEnd[1]] : null;\n if (this._model.selectionEnd = this._getMouseBufferCoords(e), !this._model.selectionEnd) {\n this.refresh(true);\n return;\n }\n this._activeSelectionMode === 2 ? this._model.selectionEnd[1] < this._model.selectionStart[1] ? this._model.selectionEnd[0] = 0 : this._model.selectionEnd[0] = this._bufferService.cols : this._activeSelectionMode === 1 && this._selectToWordAt(this._model.selectionEnd), this._dragScrollAmount = this._getMouseEventScrollAmount(e), this._activeSelectionMode !== 3 && (this._dragScrollAmount > 0 ? this._model.selectionEnd[0] = this._bufferService.cols : this._dragScrollAmount < 0 && (this._model.selectionEnd[0] = 0));\n let r = this._bufferService.buffer;\n if (this._model.selectionEnd[1] < r.lines.length) {\n let s4 = r.lines.get(this._model.selectionEnd[1]);\n s4 && s4.hasWidth(this._model.selectionEnd[0]) === 0 && this._model.selectionEnd[0] < this._bufferService.cols && this._model.selectionEnd[0]++;\n }\n (!i5 || i5[0] !== this._model.selectionEnd[0] || i5[1] !== this._model.selectionEnd[1]) && this.refresh(true);\n }\n _dragScroll() {\n if (!(!this._model.selectionEnd || !this._model.selectionStart) && this._dragScrollAmount) {\n this._onRequestScrollLines.fire({ amount: this._dragScrollAmount, suppressScrollEvent: false });\n let e = this._bufferService.buffer;\n this._dragScrollAmount > 0 ? (this._activeSelectionMode !== 3 && (this._model.selectionEnd[0] = this._bufferService.cols), this._model.selectionEnd[1] = Math.min(e.ydisp + this._bufferService.rows, e.lines.length - 1)) : (this._activeSelectionMode !== 3 && (this._model.selectionEnd[0] = 0), this._model.selectionEnd[1] = e.ydisp), this.refresh();\n }\n }\n _handleMouseUp(e) {\n let i5 = e.timeStamp - this._mouseDownTimeStamp;\n if (this._removeMouseDownListeners(), this.selectionText.length <= 1 && i5 < To && e.altKey && this._optionsService.rawOptions.altClickMovesCursor) {\n if (this._bufferService.buffer.ybase === this._bufferService.buffer.ydisp) {\n let r = this._mouseCoordsService.getCoords(e, this._element, this._bufferService.cols, this._bufferService.rows, false);\n if (r && r[0] !== void 0 && r[1] !== void 0) {\n let s4 = un(r[0] - 1, r[1] - 1, this._bufferService, this._coreService.decPrivateModes.applicationCursorKeys);\n this._coreService.triggerDataEvent(s4, true);\n }\n }\n } else this._fireEventIfSelectionChanged();\n }\n _fireEventIfSelectionChanged() {\n let e = this._model.finalSelectionStart, i5 = this._model.finalSelectionEnd, r = !!e && !!i5 && (e[0] !== i5[0] || e[1] !== i5[1]);\n if (!r) {\n this._oldHasSelection && this._fireOnSelectionChange(e, i5, r);\n return;\n }\n !e || !i5 || (!this._oldSelectionStart || !this._oldSelectionEnd || e[0] !== this._oldSelectionStart[0] || e[1] !== this._oldSelectionStart[1] || i5[0] !== this._oldSelectionEnd[0] || i5[1] !== this._oldSelectionEnd[1]) && this._fireOnSelectionChange(e, i5, r);\n }\n _fireOnSelectionChange(e, i5, r) {\n this._oldSelectionStart = e, this._oldSelectionEnd = i5, this._oldHasSelection = r, this._onSelectionChange.fire();\n }\n _handleBufferActivate(e) {\n this.clearSelection(), this._trimListener.dispose(), this._trimListener = e.activeBuffer.lines.onTrim((i5) => this._handleTrim(i5));\n }\n _convertViewportColToCharacterIndex(e, i5) {\n let r = i5;\n for (let s4 = 0; i5 >= s4; s4++) {\n let o2 = e.loadCell(s4, this._workCell).getChars().length;\n this._workCell.getWidth() === 0 ? r-- : o2 > 1 && i5 !== s4 && (r += o2 - 1);\n }\n return r;\n }\n setSelection(e, i5, r) {\n this._model.clearSelection(), this._removeMouseDownListeners(), this._model.selectionStart = [e, i5], this._model.selectionStartLength = r, this.refresh(), this._fireEventIfSelectionChanged();\n }\n rightClickSelect(e) {\n this._isClickInSelection(e) || (this._selectWordAtCursor(e, false) && this.refresh(true), this._fireEventIfSelectionChanged());\n }\n _getWordAt(e, i5, r = true, s4 = true) {\n if (e[0] >= this._bufferService.cols) return;\n let o2 = this._bufferService.buffer, a2 = o2.lines.get(e[1]);\n if (!a2) return;\n let l4 = o2.translateBufferLineToString(e[1], false), h3 = this._convertViewportColToCharacterIndex(a2, e[0]), d3 = h3, c2 = e[0] - h3, u3 = 0, _5 = 0, p3 = 0, b4 = 0;\n if (l4.charAt(h3) === " ") {\n for (; h3 > 0 && l4.charAt(h3 - 1) === " "; ) h3--;\n for (; d3 < l4.length && l4.charAt(d3 + 1) === " "; ) d3++;\n } else {\n let I4 = e[0], w6 = e[0];\n a2.getWidth(I4) === 0 && (u3++, I4--), a2.getWidth(w6) === 2 && (_5++, w6++);\n let x5 = a2.getString(w6).length;\n for (x5 > 1 && (b4 += x5 - 1, d3 += x5 - 1); I4 > 0 && h3 > 0 && !this._isCharWordSeparator(a2.loadCell(I4 - 1, this._workCell)); ) {\n a2.loadCell(I4 - 1, this._workCell);\n let ie4 = this._workCell.getChars().length;\n this._workCell.getWidth() === 0 ? (u3++, I4--) : ie4 > 1 && (p3 += ie4 - 1, h3 -= ie4 - 1), h3--, I4--;\n }\n for (; w6 < a2.length && d3 + 1 < l4.length && !this._isCharWordSeparator(a2.loadCell(w6 + 1, this._workCell)); ) {\n a2.loadCell(w6 + 1, this._workCell);\n let ie4 = this._workCell.getChars().length;\n this._workCell.getWidth() === 2 ? (_5++, w6++) : ie4 > 1 && (b4 += ie4 - 1, d3 += ie4 - 1), d3++, w6++;\n }\n }\n d3++;\n let f5 = h3 + c2 - u3 + p3, S4 = Math.min(this._bufferService.cols, d3 - h3 + u3 + _5 - p3 - b4);\n if (!(!i5 && l4.slice(h3, d3).trim() === "")) {\n if (r && f5 === 0 && a2.getCodePoint(0) !== 32) {\n let I4 = o2.lines.get(e[1] - 1);\n if (I4 && a2.isWrapped && I4.getCodePoint(this._bufferService.cols - 1) !== 32) {\n let w6 = this._getWordAt([this._bufferService.cols - 1, e[1] - 1], false, true, false);\n if (w6) {\n let x5 = this._bufferService.cols - w6.start;\n f5 -= x5, S4 += x5;\n }\n }\n }\n if (s4 && f5 + S4 === this._bufferService.cols && a2.getCodePoint(this._bufferService.cols - 1) !== 32) {\n let I4 = o2.lines.get(e[1] + 1);\n if (I4?.isWrapped && I4.getCodePoint(0) !== 32) {\n let w6 = this._getWordAt([0, e[1] + 1], false, false, true);\n w6 && (S4 += w6.length);\n }\n }\n return { start: f5, length: S4 };\n }\n }\n _selectWordAt(e, i5) {\n let r = this._getWordAt(e, i5);\n if (r) {\n for (; r.start < 0; ) r.start += this._bufferService.cols, e[1]--;\n this._model.selectionStart = [r.start, e[1]], this._model.selectionStartLength = r.length;\n }\n }\n _selectToWordAt(e) {\n let i5 = this._getWordAt(e, true);\n if (i5) {\n let r = e[1];\n for (; i5.start < 0; ) i5.start += this._bufferService.cols, r--;\n if (!this._model.areSelectionValuesReversed()) for (; i5.start + i5.length > this._bufferService.cols; ) i5.length -= this._bufferService.cols, r++;\n this._model.selectionEnd = [this._model.areSelectionValuesReversed() ? i5.start : i5.start + i5.length, r];\n }\n }\n _isCharWordSeparator(e) {\n return e.getWidth() === 0 ? false : this._optionsService.rawOptions.wordSeparator.indexOf(e.getChars()) >= 0;\n }\n _selectLineAt(e) {\n let i5 = this._bufferService.buffer.getWrappedRangeForLine(e), r = { start: { x: 0, y: i5.first }, end: { x: this._bufferService.cols - 1, y: i5.last } };\n this._model.selectionStart = [0, i5.first], this._model.selectionEnd = void 0, this._model.selectionStartLength = ms(r, this._bufferService.cols);\n }\n };\n xt3 = E4([m3(3, L5), m3(4, Y), m3(5, Be2), m3(6, R3), m3(7, G4), m3(8, z3)], xt3);\n var Qt2 = class {\n constructor() {\n this._data = {};\n }\n set(t, e, i5) {\n this._data[t] || (this._data[t] = {}), this._data[t][e] = i5;\n }\n get(t, e) {\n return this._data[t] ? this._data[t][e] : void 0;\n }\n clear() {\n this._data = {};\n }\n };\n var ei = class {\n constructor() {\n this._color = new Qt2();\n this._css = new Qt2();\n }\n setCss(t, e, i5) {\n this._css.set(t, e, i5);\n }\n getCss(t, e) {\n return this._css.get(t, e);\n }\n setColor(t, e, i5) {\n this._color.set(t, e, i5);\n }\n getColor(t, e) {\n return this._color.get(t, e);\n }\n clear() {\n this._color.clear(), this._css.clear();\n }\n };\n var $3 = Object.freeze((() => {\n let n11 = [M3.toColor("#2e3436"), M3.toColor("#cc0000"), M3.toColor("#4e9a06"), M3.toColor("#c4a000"), M3.toColor("#3465a4"), M3.toColor("#75507b"), M3.toColor("#06989a"), M3.toColor("#d3d7cf"), M3.toColor("#555753"), M3.toColor("#ef2929"), M3.toColor("#8ae234"), M3.toColor("#fce94f"), M3.toColor("#729fcf"), M3.toColor("#ad7fa8"), M3.toColor("#34e2e2"), M3.toColor("#eeeeec")], t = [0, 95, 135, 175, 215, 255];\n for (let e = 0; e < 216; e++) {\n let i5 = t[e / 36 % 6 | 0], r = t[e / 6 % 6 | 0], s4 = t[e % 6];\n n11.push({ css: B4.toCss(i5, r, s4), rgba: B4.toRgba(i5, r, s4) });\n }\n for (let e = 0; e < 24; e++) {\n let i5 = 8 + e * 10;\n n11.push({ css: B4.toCss(i5, i5, i5), rgba: B4.toRgba(i5, i5, i5) });\n }\n return n11;\n })());\n var Ye2 = M3.toColor("#ffffff");\n var ii = M3.toColor("#000000");\n var _n2 = M3.toColor("#ffffff");\n var mn = ii;\n var ti = { css: "rgba(255, 255, 255, 0.3)", rgba: 4294967117 };\n var Lo = Ye2;\n var wt = class extends g5 {\n constructor(e) {\n super();\n this._optionsService = e;\n this._contrastCache = new ei();\n this._halfContrastCache = new ei();\n this._onChangeColors = this._register(new v5());\n this.onChangeColors = this._onChangeColors.event;\n this._colors = { foreground: Ye2, background: ii, cursor: _n2, cursorAccent: mn, selectionForeground: void 0, selectionBackgroundTransparent: ti, selectionBackgroundOpaque: k4.blend(ii, ti), selectionInactiveBackgroundTransparent: ti, selectionInactiveBackgroundOpaque: k4.blend(ii, ti), scrollbarSliderBackground: k4.opacity(Ye2, 0.2), scrollbarSliderHoverBackground: k4.opacity(Ye2, 0.4), scrollbarSliderActiveBackground: k4.opacity(Ye2, 0.5), overviewRulerBorder: Ye2, ansi: $3.slice(), contrastCache: this._contrastCache, halfContrastCache: this._halfContrastCache }, this._updateRestoreColors(), this._setTheme(this._optionsService.rawOptions.theme), this._register(this._optionsService.onSpecificOptionChange("minimumContrastRatio", () => this._contrastCache.clear())), this._register(this._optionsService.onSpecificOptionChange("theme", () => this._setTheme(this._optionsService.rawOptions.theme)));\n }\n get colors() {\n return this._colors;\n }\n _setTheme(e = {}) {\n let i5 = this._colors;\n if (i5.foreground = P4(e.foreground, Ye2), i5.background = P4(e.background, ii), i5.cursor = k4.blend(i5.background, P4(e.cursor, _n2)), i5.cursorAccent = k4.blend(i5.background, P4(e.cursorAccent, mn)), i5.selectionBackgroundTransparent = P4(e.selectionBackground, ti), i5.selectionBackgroundOpaque = k4.blend(i5.background, i5.selectionBackgroundTransparent), i5.selectionInactiveBackgroundTransparent = P4(e.selectionInactiveBackground, i5.selectionBackgroundTransparent), i5.selectionInactiveBackgroundOpaque = k4.blend(i5.background, i5.selectionInactiveBackgroundTransparent), i5.selectionForeground = e.selectionForeground ? P4(e.selectionForeground, ss) : void 0, i5.selectionForeground === ss && (i5.selectionForeground = void 0), k4.isOpaque(i5.selectionBackgroundTransparent) && (i5.selectionBackgroundTransparent = k4.opacity(i5.selectionBackgroundTransparent, 0.3)), k4.isOpaque(i5.selectionInactiveBackgroundTransparent) && (i5.selectionInactiveBackgroundTransparent = k4.opacity(i5.selectionInactiveBackgroundTransparent, 0.3)), i5.scrollbarSliderBackground = P4(e.scrollbarSliderBackground, k4.opacity(i5.foreground, 0.2)), i5.scrollbarSliderHoverBackground = P4(e.scrollbarSliderHoverBackground, k4.opacity(i5.foreground, 0.4)), i5.scrollbarSliderActiveBackground = P4(e.scrollbarSliderActiveBackground, k4.opacity(i5.foreground, 0.5)), i5.overviewRulerBorder = P4(e.overviewRulerBorder, Lo), i5.ansi = $3.slice(), i5.ansi[0] = P4(e.black, $3[0]), i5.ansi[1] = P4(e.red, $3[1]), i5.ansi[2] = P4(e.green, $3[2]), i5.ansi[3] = P4(e.yellow, $3[3]), i5.ansi[4] = P4(e.blue, $3[4]), i5.ansi[5] = P4(e.magenta, $3[5]), i5.ansi[6] = P4(e.cyan, $3[6]), i5.ansi[7] = P4(e.white, $3[7]), i5.ansi[8] = P4(e.brightBlack, $3[8]), i5.ansi[9] = P4(e.brightRed, $3[9]), i5.ansi[10] = P4(e.brightGreen, $3[10]), i5.ansi[11] = P4(e.brightYellow, $3[11]), i5.ansi[12] = P4(e.brightBlue, $3[12]), i5.ansi[13] = P4(e.brightMagenta, $3[13]), i5.ansi[14] = P4(e.brightCyan, $3[14]), i5.ansi[15] = P4(e.brightWhite, $3[15]), e.extendedAnsi) {\n let r = Math.min(i5.ansi.length - 16, e.extendedAnsi.length);\n for (let s4 = 0; s4 < r; s4++) i5.ansi[s4 + 16] = P4(e.extendedAnsi[s4], $3[s4 + 16]);\n }\n this._contrastCache.clear(), this._halfContrastCache.clear(), this._updateRestoreColors(), this._onChangeColors.fire(this.colors);\n }\n restoreColor(e) {\n this._restoreColor(e), this._onChangeColors.fire(this.colors);\n }\n _restoreColor(e) {\n if (e === void 0) {\n for (let i5 = 0; i5 < this._restoreColors.ansi.length; ++i5) this._colors.ansi[i5] = this._restoreColors.ansi[i5];\n return;\n }\n switch (e) {\n case 256:\n this._colors.foreground = this._restoreColors.foreground;\n break;\n case 257:\n this._colors.background = this._restoreColors.background;\n break;\n case 258:\n this._colors.cursor = this._restoreColors.cursor;\n break;\n default:\n this._colors.ansi[e] = this._restoreColors.ansi[e];\n }\n }\n modifyColors(e) {\n e(this._colors), this._onChangeColors.fire(this.colors);\n }\n _updateRestoreColors() {\n this._restoreColors = { foreground: this._colors.foreground, background: this._colors.background, cursor: this._colors.cursor, ansi: this._colors.ansi.slice() };\n }\n };\n wt = E4([m3(0, R3)], wt);\n function P4(n11, t) {\n if (n11 !== void 0) try {\n return M3.toColor(n11);\n } catch {\n }\n return t;\n }\n var Ao = { 48: ["0", ")"], 49: ["1", "!"], 50: ["2", "@"], 51: ["3", "#"], 52: ["4", "$"], 53: ["5", "%"], 54: ["6", "^"], 55: ["7", "&"], 56: ["8", "*"], 57: ["9", "("], 186: [";", ":"], 187: ["=", "+"], 188: [",", "<"], 189: ["-", "_"], 190: [".", ">"], 191: ["/", "?"], 192: ["`", "~"], 219: ["[", "{"], 220: ["\\\\", "|"], 221: ["]", "}"], 222: ["\'", \'"\'] };\n function vn(n11, t, e, i5) {\n let r = { type: 0, cancel: false, key: void 0 }, s4 = (n11.shiftKey ? 1 : 0) | (n11.altKey ? 2 : 0) | (n11.ctrlKey ? 4 : 0) | (n11.metaKey ? 8 : 0);\n switch (n11.keyCode) {\n case 0:\n n11.key === "UIKeyInputUpArrow" ? t ? r.key = "\\x1BOA" : r.key = "\\x1B[A" : n11.key === "UIKeyInputLeftArrow" ? t ? r.key = "\\x1BOD" : r.key = "\\x1B[D" : n11.key === "UIKeyInputRightArrow" ? t ? r.key = "\\x1BOC" : r.key = "\\x1B[C" : n11.key === "UIKeyInputDownArrow" && (t ? r.key = "\\x1BOB" : r.key = "\\x1B[B");\n break;\n case 8:\n r.key = n11.ctrlKey ? "\\b" : "\\x7F", n11.altKey && (r.key = "\\x1B" + r.key);\n break;\n case 9:\n if (n11.shiftKey) {\n r.key = "\\x1B[Z";\n break;\n }\n r.key = "\t", r.cancel = true;\n break;\n case 13:\n n11.key === "c" && n11.ctrlKey ? r.key = "\u0003" : r.key = n11.altKey ? "\\x1B\\r" : "\\r", r.cancel = true;\n break;\n case 27:\n r.key = "\\x1B", n11.altKey && (r.key = "\\x1B\\x1B"), r.cancel = true;\n break;\n case 37:\n if (n11.metaKey) break;\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "D" : t ? r.key = "\\x1BOD" : r.key = "\\x1B[D";\n break;\n case 39:\n if (n11.metaKey) break;\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "C" : t ? r.key = "\\x1BOC" : r.key = "\\x1B[C";\n break;\n case 38:\n if (n11.metaKey) break;\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "A" : t ? r.key = "\\x1BOA" : r.key = "\\x1B[A";\n break;\n case 40:\n if (n11.metaKey) break;\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "B" : t ? r.key = "\\x1BOB" : r.key = "\\x1B[B";\n break;\n case 45:\n !n11.shiftKey && !n11.ctrlKey && (r.key = "\\x1B[2~");\n break;\n case 46:\n s4 ? r.key = "\\x1B[3;" + (s4 + 1) + "~" : r.key = "\\x1B[3~";\n break;\n case 36:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "H" : t ? r.key = "\\x1BOH" : r.key = "\\x1B[H";\n break;\n case 35:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "F" : t ? r.key = "\\x1BOF" : r.key = "\\x1B[F";\n break;\n case 33:\n n11.shiftKey ? r.type = 2 : n11.ctrlKey ? r.key = "\\x1B[5;" + (s4 + 1) + "~" : r.key = "\\x1B[5~";\n break;\n case 34:\n n11.shiftKey ? r.type = 3 : n11.ctrlKey ? r.key = "\\x1B[6;" + (s4 + 1) + "~" : r.key = "\\x1B[6~";\n break;\n case 112:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "P" : r.key = "\\x1BOP";\n break;\n case 113:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "Q" : r.key = "\\x1BOQ";\n break;\n case 114:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "R" : r.key = "\\x1BOR";\n break;\n case 115:\n s4 ? r.key = "\\x1B[1;" + (s4 + 1) + "S" : r.key = "\\x1BOS";\n break;\n case 116:\n s4 ? r.key = "\\x1B[15;" + (s4 + 1) + "~" : r.key = "\\x1B[15~";\n break;\n case 117:\n s4 ? r.key = "\\x1B[17;" + (s4 + 1) + "~" : r.key = "\\x1B[17~";\n break;\n case 118:\n s4 ? r.key = "\\x1B[18;" + (s4 + 1) + "~" : r.key = "\\x1B[18~";\n break;\n case 119:\n s4 ? r.key = "\\x1B[19;" + (s4 + 1) + "~" : r.key = "\\x1B[19~";\n break;\n case 120:\n s4 ? r.key = "\\x1B[20;" + (s4 + 1) + "~" : r.key = "\\x1B[20~";\n break;\n case 121:\n s4 ? r.key = "\\x1B[21;" + (s4 + 1) + "~" : r.key = "\\x1B[21~";\n break;\n case 122:\n s4 ? r.key = "\\x1B[23;" + (s4 + 1) + "~" : r.key = "\\x1B[23~";\n break;\n case 123:\n s4 ? r.key = "\\x1B[24;" + (s4 + 1) + "~" : r.key = "\\x1B[24~";\n break;\n default:\n if (n11.ctrlKey && !n11.shiftKey && !n11.altKey && !n11.metaKey) n11.keyCode >= 65 && n11.keyCode <= 90 ? r.key = String.fromCharCode(n11.keyCode - 64) : n11.keyCode === 32 ? r.key = "\\0" : n11.keyCode >= 51 && n11.keyCode <= 55 ? r.key = String.fromCharCode(n11.keyCode - 51 + 27) : n11.keyCode === 56 ? r.key = "\\x7F" : n11.key === "/" ? r.key = "\u001f" : n11.keyCode === 219 ? r.key = "\\x1B" : n11.keyCode === 220 ? r.key = "\u001c" : n11.keyCode === 221 && (r.key = "\u001d");\n else if ((!e || i5) && n11.altKey && !n11.metaKey) {\n let a2 = Ao[n11.keyCode]?.[n11.shiftKey ? 1 : 0];\n if (a2) r.key = "\\x1B" + a2;\n else if (n11.keyCode >= 65 && n11.keyCode <= 90) {\n let l4 = n11.ctrlKey ? n11.keyCode - 64 : n11.keyCode + 32, h3 = String.fromCharCode(l4);\n n11.shiftKey && (h3 = h3.toUpperCase()), r.key = "\\x1B" + h3;\n } else if (n11.keyCode === 32) r.key = "\\x1B" + (n11.ctrlKey ? "\\0" : " ");\n else if (n11.key === "Dead" && n11.code.startsWith("Key")) {\n let l4 = n11.code.slice(3, 4);\n n11.shiftKey || (l4 = l4.toLowerCase()), r.key = "\\x1B" + l4, r.cancel = true;\n }\n } else if (e && !n11.altKey && !n11.ctrlKey && !n11.shiftKey && n11.metaKey) n11.keyCode === 65 && (r.type = 1);\n else if (n11.key && !n11.ctrlKey && !n11.altKey && !n11.metaKey && n11.keyCode >= 48 && n11.key.length === 1) r.key = n11.key;\n else if (n11.key && n11.ctrlKey && n11.shiftKey) switch (n11.code) {\n case "Minus":\n r.key = "\u001f";\n break;\n case "Digit2":\n r.key = "\\0";\n break;\n case "Digit6":\n r.key = "\u001e";\n break;\n }\n break;\n }\n return r;\n }\n var ri = class {\n constructor() {\n this._functionalKeyCodes = { Escape: 27, Enter: 13, Tab: 9, Backspace: 127, CapsLock: 57358, ScrollLock: 57359, NumLock: 57360, PrintScreen: 57361, Pause: 57362, ContextMenu: 57363, F13: 57376, F14: 57377, F15: 57378, F16: 57379, F17: 57380, F18: 57381, F19: 57382, F20: 57383, F21: 57384, F22: 57385, F23: 57386, F24: 57387, F25: 57388, KP_0: 57399, KP_1: 57400, KP_2: 57401, KP_3: 57402, KP_4: 57403, KP_5: 57404, KP_6: 57405, KP_7: 57406, KP_8: 57407, KP_9: 57408, KP_Decimal: 57409, KP_Divide: 57410, KP_Multiply: 57411, KP_Subtract: 57412, KP_Add: 57413, KP_Enter: 57414, KP_Equal: 57415, ShiftLeft: 57441, ShiftRight: 57447, ControlLeft: 57442, ControlRight: 57448, AltLeft: 57443, AltRight: 57449, MetaLeft: 57444, MetaRight: 57450, MediaPlayPause: 57430, MediaStop: 57432, MediaTrackNext: 57435, MediaTrackPrevious: 57436, AudioVolumeDown: 57438, AudioVolumeUp: 57439, AudioVolumeMute: 57440 };\n this._csiTildeKeys = { Insert: 2, Delete: 3, PageUp: 5, PageDown: 6, F5: 15, F6: 17, F7: 18, F8: 19, F9: 20, F10: 21, F11: 23, F12: 24 };\n this._csiLetterKeys = { ArrowUp: "A", ArrowDown: "B", ArrowRight: "C", ArrowLeft: "D", Home: "H", End: "F" };\n this._ss3FunctionKeys = { F1: "P", F2: "Q", F3: "R", F4: "S" };\n }\n _getNumpadKeyCode(t) {\n if (t.code.startsWith("Numpad")) {\n let e = t.code.slice(6);\n if (e >= "0" && e <= "9") return 57399 + parseInt(e, 10);\n switch (e) {\n case "Decimal":\n return 57409;\n case "Divide":\n return 57410;\n case "Multiply":\n return 57411;\n case "Subtract":\n return 57412;\n case "Add":\n return 57413;\n case "Enter":\n return 57414;\n case "Equal":\n return 57415;\n }\n }\n }\n _getModifierKeyCode(t) {\n switch (t.code) {\n case "ShiftLeft":\n return 57441;\n case "ShiftRight":\n return 57447;\n case "ControlLeft":\n return 57442;\n case "ControlRight":\n return 57448;\n case "AltLeft":\n return 57443;\n case "AltRight":\n return 57449;\n case "MetaLeft":\n return 57444;\n case "MetaRight":\n return 57450;\n }\n }\n _encodeModifiers(t) {\n let e = 0;\n return t.shiftKey && (e |= 1), t.altKey && (e |= 2), t.ctrlKey && (e |= 4), t.metaKey && (e |= 8), e > 0 ? e + 1 : 0;\n }\n _getKeyCode(t, e) {\n let i5 = this._getNumpadKeyCode(t);\n if (i5 !== void 0) return i5;\n let r = this._getModifierKeyCode(t);\n if (r !== void 0) return r;\n let s4 = this._functionalKeyCodes[t.key];\n if (s4 !== void 0) return s4;\n if ((t.shiftKey || e && t.altKey) && t.code) {\n if (t.code.startsWith("Digit") && t.code.length === 6) {\n let o2 = t.code.charAt(5);\n if (o2 >= "0" && o2 <= "9") return o2.charCodeAt(0);\n }\n if (t.code.startsWith("Key") && t.code.length === 4) return t.code.charAt(3).toLowerCase().charCodeAt(0);\n }\n if (t.key.length === 1) {\n let o2 = t.key.codePointAt(0);\n return o2 >= 65 && o2 <= 90 ? o2 + 32 : o2;\n }\n }\n _isModifierKey(t) {\n return t.key === "Shift" || t.key === "Control" || t.key === "Alt" || t.key === "Meta";\n }\n _isLockKey(t) {\n return t.key === "CapsLock" || t.key === "NumLock" || t.key === "ScrollLock";\n }\n _buildCsiLetterSequence(t, e, i5, r) {\n let s4 = r && i5 !== 1;\n if (e > 0 || s4) {\n let o2 = "\\x1B[1;" + (e > 0 ? e : "1");\n return s4 && (o2 += ":" + i5), o2 += t, o2;\n }\n return "\\x1B[" + t;\n }\n _buildSs3Sequence(t, e, i5, r) {\n let s4 = r && i5 !== 1;\n if (e > 0 || s4) {\n let o2 = "\\x1B[1;" + (e > 0 ? e : "1");\n return s4 && (o2 += ":" + i5), o2 += t, o2;\n }\n return "\\x1BO" + t;\n }\n _buildCsiTildeSequence(t, e, i5, r) {\n let s4 = r && i5 !== 1, o2 = "\\x1B[" + t;\n return (e > 0 || s4) && (o2 += ";" + (e > 0 ? e : "1"), s4 && (o2 += ":" + i5)), o2 += "~", o2;\n }\n _buildCsiUSequence(t, e, i5, r, s4, o2, a2) {\n let l4 = !!(s4 & 2), h3 = !!(s4 & 4), d3 = "\\x1B[" + e, c2;\n h3 && t.shiftKey && t.key.length === 1 && !o2 && !a2 && (c2 = t.key.codePointAt(0), d3 += ":" + c2);\n let _5 = !!(s4 & 16) && r !== 3 && t.key.length === 1 && !o2 && !a2 && !t.ctrlKey ? t.key.codePointAt(0) : void 0, p3 = l4 && r !== 1 && (r === 3 || _5 === void 0);\n return (i5 > 0 || p3 || _5 !== void 0) && (d3 += ";", i5 > 0 ? d3 += i5 : p3 && (d3 += "1"), p3 && (d3 += ":" + r)), _5 !== void 0 && (d3 += ";" + _5), d3 += "u", d3;\n }\n evaluate(t, e, i5 = 1, r = false) {\n let s4 = { type: 0, cancel: false, key: void 0 }, o2 = this._encodeModifiers(t), a2 = this._isModifierKey(t), l4 = !!(e & 2);\n if (!l4 && i5 === 3 || a2 && !(e & 8) || this._isLockKey(t) && !(e & 8)) return s4;\n let h3 = this._csiLetterKeys[t.key];\n if (h3) return s4.key = this._buildCsiLetterSequence(h3, o2, i5, l4), s4.cancel = true, s4;\n let d3 = this._ss3FunctionKeys[t.key];\n if (d3) return s4.key = this._buildSs3Sequence(d3, o2, i5, l4), s4.cancel = true, s4;\n let c2 = this._csiTildeKeys[t.key];\n if (c2 !== void 0) return s4.key = this._buildCsiTildeSequence(c2, o2, i5, l4), s4.cancel = true, s4;\n let u3 = this._getKeyCode(t, r);\n if (u3 === void 0) return s4;\n let _5 = this._functionalKeyCodes[t.key] !== void 0 || this._getNumpadKeyCode(t) !== void 0, p3 = false;\n if (e & 8 || l4 ? p3 = true : e & 1 && (_5 && !(u3 === 13 || u3 === 9 || u3 === 127) ? p3 = true : o2 > 0 && (t.shiftKey && !t.ctrlKey && !t.altKey && !t.metaKey && t.key.length === 1 ? p3 = false : p3 = true)), p3) s4.key = this._buildCsiUSequence(t, u3, o2, i5, e, _5, a2), s4.cancel = true;\n else {\n let b4 = u3 === 13 ? "\\r" : u3 === 9 ? "\t" : u3 === 127 ? "\\x7F" : void 0;\n b4 ? s4.key = b4 : t.key.length === 1 && !t.ctrlKey && !t.altKey && !t.metaKey && (s4.key = t.key);\n }\n return s4;\n }\n static shouldUseProtocol(t) {\n return t > 0;\n }\n };\n var ir2 = class {\n constructor() {\n this._codeToVk = { KeyA: 65, KeyB: 66, KeyC: 67, KeyD: 68, KeyE: 69, KeyF: 70, KeyG: 71, KeyH: 72, KeyI: 73, KeyJ: 74, KeyK: 75, KeyL: 76, KeyM: 77, KeyN: 78, KeyO: 79, KeyP: 80, KeyQ: 81, KeyR: 82, KeyS: 83, KeyT: 84, KeyU: 85, KeyV: 86, KeyW: 87, KeyX: 88, KeyY: 89, KeyZ: 90, Digit0: 48, Digit1: 49, Digit2: 50, Digit3: 51, Digit4: 52, Digit5: 53, Digit6: 54, Digit7: 55, Digit8: 56, Digit9: 57, F1: 112, F2: 113, F3: 114, F4: 115, F5: 116, F6: 117, F7: 118, F8: 119, F9: 120, F10: 121, F11: 122, F12: 123, F13: 124, F14: 125, F15: 126, F16: 127, F17: 128, F18: 129, F19: 130, F20: 131, F21: 132, F22: 133, F23: 134, F24: 135, Numpad0: 96, Numpad1: 97, Numpad2: 98, Numpad3: 99, Numpad4: 100, Numpad5: 101, Numpad6: 102, Numpad7: 103, Numpad8: 104, Numpad9: 105, NumpadMultiply: 106, NumpadAdd: 107, NumpadSeparator: 108, NumpadSubtract: 109, NumpadDecimal: 110, NumpadDivide: 111, NumpadEnter: 13, NumLock: 144, ArrowUp: 38, ArrowDown: 40, ArrowLeft: 37, ArrowRight: 39, Home: 36, End: 35, PageUp: 33, PageDown: 34, Insert: 45, Delete: 46, ShiftLeft: 16, ShiftRight: 16, ControlLeft: 17, ControlRight: 17, AltLeft: 18, AltRight: 18, MetaLeft: 91, MetaRight: 92, CapsLock: 20, ScrollLock: 145, Escape: 27, Enter: 13, Tab: 9, Space: 32, Backspace: 8, Pause: 19, ContextMenu: 93, PrintScreen: 44, Semicolon: 186, Equal: 187, Comma: 188, Minus: 189, Period: 190, Slash: 191, Backquote: 192, BracketLeft: 219, Backslash: 220, BracketRight: 221, Quote: 222, IntlBackslash: 226 };\n this._codeToScancode = { KeyQ: 16, KeyW: 17, KeyE: 18, KeyR: 19, KeyT: 20, KeyY: 21, KeyU: 22, KeyI: 23, KeyO: 24, KeyP: 25, KeyA: 30, KeyS: 31, KeyD: 32, KeyF: 33, KeyG: 34, KeyH: 35, KeyJ: 36, KeyK: 37, KeyL: 38, KeyZ: 44, KeyX: 45, KeyC: 46, KeyV: 47, KeyB: 48, KeyN: 49, KeyM: 50, Digit1: 2, Digit2: 3, Digit3: 4, Digit4: 5, Digit5: 6, Digit6: 7, Digit7: 8, Digit8: 9, Digit9: 10, Digit0: 11, F1: 59, F2: 60, F3: 61, F4: 62, F5: 63, F6: 64, F7: 65, F8: 66, F9: 67, F10: 68, F11: 87, F12: 88, Numpad0: 82, Numpad1: 79, Numpad2: 80, Numpad3: 81, Numpad4: 75, Numpad5: 76, Numpad6: 77, Numpad7: 71, Numpad8: 72, Numpad9: 73, NumpadMultiply: 55, NumpadAdd: 78, NumpadSubtract: 74, NumpadDecimal: 83, NumpadDivide: 53, NumpadEnter: 28, NumLock: 69, ArrowUp: 72, ArrowDown: 80, ArrowLeft: 75, ArrowRight: 77, Home: 71, End: 79, PageUp: 73, PageDown: 81, Insert: 82, Delete: 83, ShiftLeft: 42, ShiftRight: 54, ControlLeft: 29, ControlRight: 29, AltLeft: 56, AltRight: 56, CapsLock: 58, ScrollLock: 70, Escape: 1, Enter: 28, Tab: 15, Space: 57, Backspace: 14, Pause: 69, Semicolon: 39, Equal: 13, Comma: 51, Minus: 12, Period: 52, Slash: 53, Backquote: 41, BracketLeft: 26, Backslash: 43, BracketRight: 27, Quote: 40 };\n this._enhancedKeyCodes = /* @__PURE__ */ new Set(["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Home", "End", "PageUp", "PageDown", "Insert", "Delete", "NumpadEnter", "NumpadDivide", "ControlRight", "AltRight", "PrintScreen", "Pause", "ContextMenu", "MetaLeft", "MetaRight"]);\n this._keyToControlChar = { Enter: 13, Backspace: 8, Tab: 9, Escape: 27 };\n }\n _getVirtualKeyCode(t) {\n let e = this._codeToVk[t.code];\n return e !== void 0 ? e : t.keyCode || 0;\n }\n _getScanCode(t) {\n return this._codeToScancode[t.code] || 0;\n }\n _getUnicodeChar(t) {\n if (t.ctrlKey && !t.altKey && !t.metaKey) {\n if (t.key === "Enter") return 10;\n if (t.key === "Backspace") return 127;\n }\n let e = this._keyToControlChar[t.key];\n if (e !== void 0) return e;\n if (t.key.length === 1) {\n let i5 = t.key.codePointAt(0) || 0;\n if (t.ctrlKey && !t.altKey && !t.metaKey) {\n if (i5 >= 65 && i5 <= 90) return i5 - 64;\n if (i5 >= 97 && i5 <= 122) return i5 - 96;\n }\n return i5;\n }\n return 0;\n }\n _getControlKeyState(t) {\n let e = 0;\n return t.shiftKey && (e |= 16), t.ctrlKey && (t.code === "ControlRight" ? e |= 4 : e |= 8), t.altKey && (t.code === "AltRight" ? e |= 1 : e |= 2), this._enhancedKeyCodes.has(t.code) && (e |= 256), e;\n }\n evaluateKeyboardEvent(t, e) {\n let i5 = this._getVirtualKeyCode(t), r = this._getScanCode(t), s4 = this._getUnicodeChar(t), o2 = e ? 1 : 0, a2 = this._getControlKeyState(t);\n return { type: 0, cancel: true, key: `\\x1B[${i5};${r};${s4};${o2};${a2};1_` };\n }\n };\n var Tt3 = class {\n constructor(t, e) {\n this._coreService = t;\n this._optionsService = e;\n }\n _getWin32InputMode() {\n return this._win32InputMode ??= new ir2(), this._win32InputMode;\n }\n _getKittyKeyboard() {\n return this._kittyKeyboard ??= new ri(), this._kittyKeyboard;\n }\n evaluateKeyDown(t) {\n if (this.useWin32InputMode) return this._getWin32InputMode().evaluateKeyboardEvent(t, true);\n let e = this._coreService.kittyKeyboard.flags;\n return this.useKitty ? this._getKittyKeyboard().evaluate(t, e, t.repeat ? 2 : 1, ee3 && this._optionsService.rawOptions.macOptionIsMeta) : vn(t, this._coreService.decPrivateModes.applicationCursorKeys, ee3, this._optionsService.rawOptions.macOptionIsMeta);\n }\n evaluateKeyUp(t) {\n if (this.useWin32InputMode) return this._getWin32InputMode().evaluateKeyboardEvent(t, false);\n let e = this._coreService.kittyKeyboard.flags;\n if (this.useKitty && e & 2) return this._getKittyKeyboard().evaluate(t, e, 3, ee3 && this._optionsService.rawOptions.macOptionIsMeta);\n }\n get useKitty() {\n let t = this._coreService.kittyKeyboard.flags;\n return !!(this._optionsService.rawOptions.vtExtensions?.kittyKeyboard && ri.shouldUseProtocol(t));\n }\n get useWin32InputMode() {\n return !!(this._optionsService.rawOptions.vtExtensions?.win32InputMode && this._coreService.decPrivateModes.win32InputMode);\n }\n };\n Tt3 = E4([m3(0, Y), m3(1, R3)], Tt3);\n var Ss = class {\n constructor(...t) {\n this._entries = /* @__PURE__ */ new Map();\n for (let [e, i5] of t) this.set(e, i5);\n }\n set(t, e) {\n let i5 = this._entries.get(t);\n return this._entries.set(t, e), i5;\n }\n forEach(t) {\n for (let [e, i5] of this._entries.entries()) t(e, i5);\n }\n has(t) {\n return this._entries.has(t);\n }\n get(t) {\n return this._entries.get(t);\n }\n };\n var rr = class {\n constructor() {\n this._services = new Ss();\n this._services.set(tt3, this);\n }\n setService(t, e) {\n this._services.set(t, e);\n }\n getService(t) {\n return this._services.get(t);\n }\n createInstance(t, ...e) {\n let i5 = Ys(t).sort((o2, a2) => o2.index - a2.index), r = [];\n for (let o2 of i5) {\n let a2 = this._services.get(o2.id);\n if (!a2) throw new Error(`[createInstance] ${t.name} depends on UNKNOWN service ${o2.id._id}.`);\n r.push(a2);\n }\n let s4 = i5.length > 0 ? i5[0].index : e.length;\n if (e.length !== s4) throw new Error(`[createInstance] First service dependency of ${t.name} at position ${s4 + 1} conflicts with ${e.length} static arguments`);\n return new t(...e, ...r);\n }\n };\n var ko = { trace: 0, debug: 1, info: 2, warn: 3, error: 4, off: 5 };\n var Po2 = "xterm.js: ";\n var Dt2 = class extends g5 {\n constructor(e) {\n super();\n this._optionsService = e;\n this._logLevel = 5;\n this._updateLogLevel(), this._register(this._optionsService.onSpecificOptionChange("logLevel", () => this._updateLogLevel()));\n }\n get logLevel() {\n return this._logLevel;\n }\n _updateLogLevel() {\n this._logLevel = ko[this._optionsService.rawOptions.logLevel];\n }\n _evalLazyOptionalParams(e) {\n for (let i5 = 0; i5 < e.length; i5++) typeof e[i5] == "function" && (e[i5] = e[i5]());\n }\n _log(e, i5, r) {\n this._evalLazyOptionalParams(r), e.call(console, (this._optionsService.options.logger ? "" : Po2) + i5, ...r);\n }\n trace(e, ...i5) {\n this._logLevel <= 0 && this._log(this._optionsService.options.logger?.trace.bind(this._optionsService.options.logger) ?? console.log, e, i5);\n }\n debug(e, ...i5) {\n this._logLevel <= 1 && this._log(this._optionsService.options.logger?.debug.bind(this._optionsService.options.logger) ?? console.log, e, i5);\n }\n info(e, ...i5) {\n this._logLevel <= 2 && this._log(this._optionsService.options.logger?.info.bind(this._optionsService.options.logger) ?? console.info, e, i5);\n }\n warn(e, ...i5) {\n this._logLevel <= 3 && this._log(this._optionsService.options.logger?.warn.bind(this._optionsService.options.logger) ?? console.warn, e, i5);\n }\n error(e, ...i5) {\n this._logLevel <= 4 && this._log(this._optionsService.options.logger?.error.bind(this._optionsService.options.logger) ?? console.error, e, i5);\n }\n };\n Dt2 = E4([m3(0, R3)], Dt2);\n var si = class extends g5 {\n constructor(e) {\n super();\n this._maxLength = e;\n this.onDeleteEmitter = this._register(new v5());\n this.onDelete = this.onDeleteEmitter.event;\n this.onInsertEmitter = this._register(new v5());\n this.onInsert = this.onInsertEmitter.event;\n this.onTrimEmitter = this._register(new v5());\n this.onTrim = this.onTrimEmitter.event;\n this._array = new Array(this._maxLength), this._startIndex = 0, this._length = 0;\n }\n get maxLength() {\n return this._maxLength;\n }\n set maxLength(e) {\n if (this._maxLength === e) return;\n let i5 = new Array(e);\n for (let r = 0; r < Math.min(e, this.length); r++) i5[r] = this._array[this._getCyclicIndex(r)];\n this._array = i5, this._maxLength = e, this._startIndex = 0;\n }\n get length() {\n return this._length;\n }\n set length(e) {\n if (e > this._length) for (let i5 = this._length; i5 < e; i5++) this._array[i5] = void 0;\n this._length = e;\n }\n get(e) {\n return this._array[this._getCyclicIndex(e)];\n }\n set(e, i5) {\n this._array[this._getCyclicIndex(e)] = i5;\n }\n push(e) {\n this._array[this._getCyclicIndex(this._length)] = e, this._length === this._maxLength ? (this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1)) : this._length++;\n }\n recycle() {\n if (this._length !== this._maxLength) throw new Error("Can only recycle when the buffer is full");\n return this._startIndex = ++this._startIndex % this._maxLength, this.onTrimEmitter.fire(1), this._array[this._getCyclicIndex(this._length - 1)];\n }\n get isFull() {\n return this._length === this._maxLength;\n }\n pop() {\n return this._array[this._getCyclicIndex(this._length-- - 1)];\n }\n splice(e, i5, ...r) {\n if (i5) {\n for (let s4 = e; s4 < this._length - i5; s4++) this._array[this._getCyclicIndex(s4)] = this._array[this._getCyclicIndex(s4 + i5)];\n this._length -= i5, this.onDeleteEmitter.fire({ index: e, amount: i5 });\n }\n for (let s4 = this._length - 1; s4 >= e; s4--) this._array[this._getCyclicIndex(s4 + r.length)] = this._array[this._getCyclicIndex(s4)];\n for (let s4 = 0; s4 < r.length; s4++) this._array[this._getCyclicIndex(e + s4)] = r[s4];\n if (r.length && this.onInsertEmitter.fire({ index: e, amount: r.length }), this._length + r.length > this._maxLength) {\n let s4 = this._length + r.length - this._maxLength;\n this._startIndex += s4, this._length = this._maxLength, this.onTrimEmitter.fire(s4);\n } else this._length += r.length;\n }\n trimStart(e) {\n e > this._length && (e = this._length), this._startIndex += e, this._length -= e, this.onTrimEmitter.fire(e);\n }\n shiftElements(e, i5, r) {\n if (!(i5 <= 0)) {\n if (e < 0 || e >= this._length) throw new Error("start argument out of range");\n if (e + r < 0) throw new Error("Cannot shift elements in list beyond index 0");\n if (r > 0) {\n for (let o2 = i5 - 1; o2 >= 0; o2--) this.set(e + o2 + r, this.get(e + o2));\n let s4 = e + i5 + r - this._length;\n if (s4 > 0) for (this._length += s4; this._length > this._maxLength; ) this._length--, this._startIndex++, this.onTrimEmitter.fire(1);\n } else for (let s4 = 0; s4 < i5; s4++) this.set(e + s4 + r, this.get(e + s4));\n }\n }\n _getCyclicIndex(e) {\n return (this._startIndex + e) % this._maxLength;\n }\n };\n var D6 = 3;\n var U5 = Object.freeze(new fe2());\n var sr2 = 0;\n var gn = new N2();\n var gs = 2;\n var Re4 = class n8 {\n constructor(t, e, i5 = false) {\n this.isWrapped = i5;\n this._combined = {};\n this._extendedAttrs = {};\n this._data = new Uint32Array(t * D6);\n let r = e ?? N2.fromCharData([0, "", 1, 0]);\n for (let s4 = 0; s4 < t; ++s4) this.setCell(s4, r);\n this.length = t;\n }\n get(t) {\n let e = this._data[t * D6 + 0], i5 = e & 2097151;\n return [this._data[t * D6 + 1], e & 2097152 ? this._combined[t] : i5 ? ve2(i5) : "", e >> 22, e & 2097152 ? this._combined[t].charCodeAt(this._combined[t].length - 1) : i5];\n }\n set(t, e) {\n this._data[t * D6 + 1] = e[0], e[1].length > 1 ? (this._combined[t] = e[1], this._data[t * D6 + 0] = t | 2097152 | e[2] << 22) : this._data[t * D6 + 0] = e[1].charCodeAt(0) | e[2] << 22;\n }\n getWidth(t) {\n return this._data[t * D6 + 0] >> 22;\n }\n hasWidth(t) {\n return this._data[t * D6 + 0] & 12582912;\n }\n getFg(t) {\n return this._data[t * D6 + 1];\n }\n getBg(t) {\n return this._data[t * D6 + 2];\n }\n hasContent(t) {\n return this._data[t * D6 + 0] & 4194303;\n }\n getCodePoint(t) {\n let e = this._data[t * D6 + 0];\n return e & 2097152 ? this._combined[t].charCodeAt(this._combined[t].length - 1) : e & 2097151;\n }\n isCombined(t) {\n return this._data[t * D6 + 0] & 2097152;\n }\n getString(t) {\n let e = this._data[t * D6 + 0];\n return e & 2097152 ? this._combined[t] : e & 2097151 ? ve2(e & 2097151) : "";\n }\n isProtected(t) {\n return this._data[t * D6 + 2] & 536870912;\n }\n loadCell(t, e) {\n return sr2 = t * D6, e.content = this._data[sr2 + 0], e.fg = this._data[sr2 + 1], e.bg = this._data[sr2 + 2], e.content & 2097152 && (e.combinedData = this._combined[t]), e.bg & 268435456 && (e.extended = this._extendedAttrs[t]), e;\n }\n setCell(t, e) {\n e.content & 2097152 && (this._combined[t] = e.combinedData), e.bg & 268435456 && (this._extendedAttrs[t] = e.extended), this._data[t * D6 + 0] = e.content, this._data[t * D6 + 1] = e.fg, this._data[t * D6 + 2] = e.bg;\n }\n setCellFromCodepoint(t, e, i5, r) {\n r.bg & 268435456 && (this._extendedAttrs[t] = r.extended), this._data[t * D6 + 0] = e | i5 << 22, this._data[t * D6 + 1] = r.fg, this._data[t * D6 + 2] = r.bg;\n }\n addCodepointToCell(t, e, i5) {\n let r = this._data[t * D6 + 0];\n r & 2097152 ? this._combined[t] += ve2(e) : r & 2097151 ? (this._combined[t] = ve2(r & 2097151) + ve2(e), r &= -2097152, r |= 2097152) : r = e | 1 << 22, i5 && (r &= -12582913, r |= i5 << 22), this._data[t * D6 + 0] = r;\n }\n insertCells(t, e, i5) {\n if (t %= this.length, t && this.getWidth(t - 1) === 2 && this.setCellFromCodepoint(t - 1, 0, 1, i5), e < this.length - t) {\n for (let r = this.length - t - e - 1; r >= 0; --r) this.setCell(t + e + r, this.loadCell(t + r, gn));\n for (let r = 0; r < e; ++r) this.setCell(t + r, i5);\n } else for (let r = t; r < this.length; ++r) this.setCell(r, i5);\n this.getWidth(this.length - 1) === 2 && this.setCellFromCodepoint(this.length - 1, 0, 1, i5);\n }\n deleteCells(t, e, i5) {\n if (t %= this.length, e < this.length - t) {\n for (let r = 0; r < this.length - t - e; ++r) this.setCell(t + r, this.loadCell(t + e + r, gn));\n for (let r = this.length - e; r < this.length; ++r) this.setCell(r, i5);\n } else for (let r = t; r < this.length; ++r) this.setCell(r, i5);\n t && this.getWidth(t - 1) === 2 && this.setCellFromCodepoint(t - 1, 0, 1, i5), this.getWidth(t) === 0 && !this.hasContent(t) && this.setCellFromCodepoint(t, 0, 1, i5);\n }\n replaceCells(t, e, i5, r = false) {\n if (r) {\n for (t && this.getWidth(t - 1) === 2 && !this.isProtected(t - 1) && this.setCellFromCodepoint(t - 1, 0, 1, i5), e < this.length && this.getWidth(e - 1) === 2 && !this.isProtected(e) && this.setCellFromCodepoint(e, 0, 1, i5); t < e && t < this.length; ) this.isProtected(t) || this.setCell(t, i5), t++;\n return;\n }\n for (t && this.getWidth(t - 1) === 2 && this.setCellFromCodepoint(t - 1, 0, 1, i5), e < this.length && this.getWidth(e - 1) === 2 && this.setCellFromCodepoint(e, 0, 1, i5); t < e && t < this.length; ) this.setCell(t++, i5);\n }\n resize(t, e) {\n if (t === this.length) return this._data.length * 4 * gs < this._data.buffer.byteLength;\n let i5 = t * D6;\n if (t > this.length) {\n if (this._data.buffer.byteLength >= i5 * 4) this._data = new Uint32Array(this._data.buffer, 0, i5);\n else {\n let r = new Uint32Array(i5);\n r.set(this._data), this._data = r;\n }\n for (let r = this.length; r < t; ++r) this.setCell(r, e);\n } else {\n this._data = this._data.subarray(0, i5);\n let r = Object.keys(this._combined);\n for (let o2 = 0; o2 < r.length; o2++) {\n let a2 = parseInt(r[o2], 10);\n a2 >= t && delete this._combined[a2];\n }\n let s4 = Object.keys(this._extendedAttrs);\n for (let o2 = 0; o2 < s4.length; o2++) {\n let a2 = parseInt(s4[o2], 10);\n a2 >= t && delete this._extendedAttrs[a2];\n }\n }\n return this.length = t, i5 * 4 * gs < this._data.buffer.byteLength;\n }\n cleanupMemory() {\n if (this._data.length * 4 * gs < this._data.buffer.byteLength) {\n let t = new Uint32Array(this._data.length);\n return t.set(this._data), this._data = t, 1;\n }\n return 0;\n }\n fill(t, e = false) {\n if (e) {\n for (let i5 = 0; i5 < this.length; ++i5) this.isProtected(i5) || this.setCell(i5, t);\n return;\n }\n this._combined = {}, this._extendedAttrs = {};\n for (let i5 = 0; i5 < this.length; ++i5) this.setCell(i5, t);\n }\n copyFrom(t) {\n this.length !== t.length ? this._data = new Uint32Array(t._data) : this._data.set(t._data), this.length = t.length, this._combined = {};\n for (let e in t._combined) this._combined[e] = t._combined[e];\n this._extendedAttrs = {};\n for (let e in t._extendedAttrs) this._extendedAttrs[e] = t._extendedAttrs[e];\n this.isWrapped = t.isWrapped;\n }\n clone() {\n let t = new n8(0);\n t._data = new Uint32Array(this._data), t.length = this.length;\n for (let e in this._combined) t._combined[e] = this._combined[e];\n for (let e in this._extendedAttrs) t._extendedAttrs[e] = this._extendedAttrs[e];\n return t.isWrapped = this.isWrapped, t;\n }\n getTrimmedLength() {\n for (let t = this.length - 1; t >= 0; --t) if (this._data[t * D6 + 0] & 4194303) return t + (this._data[t * D6 + 0] >> 22);\n return 0;\n }\n getNoBgTrimmedLength() {\n for (let t = this.length - 1; t >= 0; --t) if (this._data[t * D6 + 0] & 4194303 || this._data[t * D6 + 2] & 50331648) return t + (this._data[t * D6 + 0] >> 22);\n return 0;\n }\n copyCellsFrom(t, e, i5, r, s4) {\n let o2 = t._data;\n if (s4) for (let l4 = r - 1; l4 >= 0; l4--) {\n for (let h3 = 0; h3 < D6; h3++) this._data[(i5 + l4) * D6 + h3] = o2[(e + l4) * D6 + h3];\n o2[(e + l4) * D6 + 2] & 268435456 && (this._extendedAttrs[i5 + l4] = t._extendedAttrs[e + l4]);\n }\n else for (let l4 = 0; l4 < r; l4++) {\n for (let h3 = 0; h3 < D6; h3++) this._data[(i5 + l4) * D6 + h3] = o2[(e + l4) * D6 + h3];\n o2[(e + l4) * D6 + 2] & 268435456 && (this._extendedAttrs[i5 + l4] = t._extendedAttrs[e + l4]);\n }\n let a2 = Object.keys(t._combined);\n for (let l4 = 0; l4 < a2.length; l4++) {\n let h3 = parseInt(a2[l4], 10);\n h3 >= e && (this._combined[h3 - e + i5] = t._combined[h3]);\n }\n }\n translateToString(t, e, i5, r) {\n e = e ?? 0, i5 = i5 ?? this.length, t && (i5 = Math.min(i5, this.getTrimmedLength())), r && (r.length = 0);\n let s4 = "";\n for (; e < i5; ) {\n let o2 = this._data[e * D6 + 0], a2 = o2 & 2097151, l4 = o2 & 2097152 ? this._combined[e] : a2 ? ve2(a2) : " ";\n if (s4 += l4, r) for (let h3 = 0; h3 < l4.length; ++h3) r.push(e);\n e += o2 >> 22 || 1;\n }\n return r && r.push(e), s4;\n }\n };\n function In(n11, t, e, i5, r, s4) {\n let o2 = [];\n for (let a2 = 0; a2 < n11.length - 1; a2++) {\n let l4 = a2, h3 = n11.get(++l4);\n if (!h3.isWrapped) continue;\n let d3 = [n11.get(a2)];\n for (; l4 < n11.length && h3.isWrapped; ) d3.push(h3), h3 = n11.get(++l4);\n if (!s4 && i5 >= a2 && i5 < l4) {\n a2 += d3.length - 1;\n continue;\n }\n let c2 = 0, u3 = Rt2(d3, c2, t), _5 = 1, p3 = 0;\n for (; _5 < d3.length; ) {\n let f5 = Rt2(d3, _5, t), S4 = f5 - p3, I4 = e - u3, w6 = Math.min(S4, I4);\n d3[c2].copyCellsFrom(d3[_5], p3, u3, w6, false), u3 += w6, u3 === e && (c2++, u3 = 0), p3 += w6, p3 === f5 && (_5++, p3 = 0), u3 === 0 && c2 !== 0 && d3[c2 - 1].getWidth(e - 1) === 2 && (d3[c2].copyCellsFrom(d3[c2 - 1], e - 1, u3++, 1, false), d3[c2 - 1].setCell(e - 1, r));\n }\n d3[c2].replaceCells(u3, e, r);\n let b4 = 0;\n for (let f5 = d3.length - 1; f5 > 0 && (f5 > c2 || d3[f5].getTrimmedLength() === 0); f5--) b4++;\n b4 > 0 && (o2.push(a2 + d3.length - b4), o2.push(b4)), a2 += d3.length - 1;\n }\n return o2;\n }\n function Cn(n11, t) {\n let e = [], i5 = 0, r = t[i5], s4 = 0;\n for (let o2 = 0; o2 < n11.length; o2++) if (r === o2) {\n let a2 = t[++i5];\n n11.onDeleteEmitter.fire({ index: o2 - s4, amount: a2 }), o2 += a2 - 1, s4 += a2, r = t[++i5];\n } else e.push(o2);\n return { layout: e, countRemoved: s4 };\n }\n function En(n11, t) {\n let e = [];\n for (let i5 = 0; i5 < t.length; i5++) e.push(n11.get(t[i5]));\n for (let i5 = 0; i5 < e.length; i5++) n11.set(i5, e[i5]);\n n11.length = t.length;\n }\n function yn(n11, t, e) {\n let i5 = [], r = n11.map((l4, h3) => Rt2(n11, h3, t)).reduce((l4, h3) => l4 + h3), s4 = 0, o2 = 0, a2 = 0;\n for (; a2 < r; ) {\n if (r - a2 < e) {\n i5.push(r - a2);\n break;\n }\n s4 += e;\n let l4 = Rt2(n11, o2, t);\n s4 > l4 && (s4 -= l4, o2++);\n let h3 = n11[o2].getWidth(s4 - 1) === 2;\n h3 && s4--;\n let d3 = h3 ? e - 1 : e;\n i5.push(d3), a2 += d3;\n }\n return i5;\n }\n function Rt2(n11, t, e) {\n if (t === n11.length - 1) return n11[t].getTrimmedLength();\n let i5 = !n11[t].hasContent(e - 1) && n11[t].getWidth(e - 1) === 1, r = n11[t + 1].getWidth(0) === 2;\n return i5 && r ? e - 1 : e;\n }\n var or = class or2 {\n constructor(t) {\n this.line = t;\n this.isDisposed = false;\n this._disposables = [];\n this._id = or2._nextId++;\n this._onDispose = this.register(new v5());\n this.onDispose = this._onDispose.event;\n }\n get id() {\n return this._id;\n }\n dispose() {\n this.isDisposed || (this.isDisposed = true, this.line = -1, this._onDispose.fire(), Oe2(this._disposables), this._disposables.length = 0);\n }\n register(t) {\n return this._disposables.push(t), t;\n }\n };\n or._nextId = 1;\n var nr = or;\n var V4 = {};\n var Le2 = V4.B;\n V4[0] = { "`": "\\u25C6", a: "\\u2592", b: "\\u2409", c: "\\u240C", d: "\\u240D", e: "\\u240A", f: "\\xB0", g: "\\xB1", h: "\\u2424", i: "\\u240B", j: "\\u2518", k: "\\u2510", l: "\\u250C", m: "\\u2514", n: "\\u253C", o: "\\u23BA", p: "\\u23BB", q: "\\u2500", r: "\\u23BC", s: "\\u23BD", t: "\\u251C", u: "\\u2524", v: "\\u2534", w: "\\u252C", x: "\\u2502", y: "\\u2264", z: "\\u2265", "{": "\\u03C0", "|": "\\u2260", "}": "\\xA3", "~": "\\xB7" };\n V4.A = { "#": "\\xA3" };\n V4.B = void 0;\n V4[4] = { "#": "\\xA3", "@": "\\xBE", "[": "ij", "\\\\": "\\xBD", "]": "|", "{": "\\xA8", "|": "f", "}": "\\xBC", "~": "\\xB4" };\n V4.C = V4[5] = { "[": "\\xC4", "\\\\": "\\xD6", "]": "\\xC5", "^": "\\xDC", "`": "\\xE9", "{": "\\xE4", "|": "\\xF6", "}": "\\xE5", "~": "\\xFC" };\n V4.R = { "#": "\\xA3", "@": "\\xE0", "[": "\\xB0", "\\\\": "\\xE7", "]": "\\xA7", "{": "\\xE9", "|": "\\xF9", "}": "\\xE8", "~": "\\xA8" };\n V4.Q = { "@": "\\xE0", "[": "\\xE2", "\\\\": "\\xE7", "]": "\\xEA", "^": "\\xEE", "`": "\\xF4", "{": "\\xE9", "|": "\\xF9", "}": "\\xE8", "~": "\\xFB" };\n V4.K = { "@": "\\xA7", "[": "\\xC4", "\\\\": "\\xD6", "]": "\\xDC", "{": "\\xE4", "|": "\\xF6", "}": "\\xFC", "~": "\\xDF" };\n V4.Y = { "#": "\\xA3", "@": "\\xA7", "[": "\\xB0", "\\\\": "\\xE7", "]": "\\xE9", "`": "\\xF9", "{": "\\xE0", "|": "\\xF2", "}": "\\xE8", "~": "\\xEC" };\n V4.E = V4[6] = { "@": "\\xC4", "[": "\\xC6", "\\\\": "\\xD8", "]": "\\xC5", "^": "\\xDC", "`": "\\xE4", "{": "\\xE6", "|": "\\xF8", "}": "\\xE5", "~": "\\xFC" };\n V4.Z = { "#": "\\xA3", "@": "\\xA7", "[": "\\xA1", "\\\\": "\\xD1", "]": "\\xBF", "{": "\\xB0", "|": "\\xF1", "}": "\\xE7" };\n V4.H = V4[7] = { "@": "\\xC9", "[": "\\xC4", "\\\\": "\\xD6", "]": "\\xC5", "^": "\\xDC", "`": "\\xE9", "{": "\\xE4", "|": "\\xF6", "}": "\\xE5", "~": "\\xFC" };\n V4["="] = { "#": "\\xF9", "@": "\\xE0", "[": "\\xE9", "\\\\": "\\xE7", "]": "\\xEA", "^": "\\xEE", _: "\\xE8", "`": "\\xF4", "{": "\\xE4", "|": "\\xF6", "}": "\\xFC", "~": "\\xFB" };\n var xn = 4294967295;\n var oi = class {\n constructor(t, e, i5, r) {\n this._hasScrollback = t;\n this._optionsService = e;\n this._bufferService = i5;\n this._logService = r;\n this.ydisp = 0;\n this.ybase = 0;\n this.y = 0;\n this.x = 0;\n this.tabs = {};\n this.savedY = 0;\n this.savedX = 0;\n this.savedCurAttrData = U5.clone();\n this.savedCharset = Le2;\n this.savedCharsets = [];\n this.savedGlevel = 0;\n this.savedOriginMode = false;\n this.savedWraparoundMode = true;\n this.markers = [];\n this._nullCell = N2.fromCharData([0, "", 1, 0]);\n this._whitespaceCell = N2.fromCharData([0, " ", 1, 32]);\n this._isClearing = false;\n this._memoryCleanupPosition = 0;\n this._cols = this._bufferService.cols, this._rows = this._bufferService.rows, this.lines = new si(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops(), this._memoryCleanupQueue = new Et2(this._logService);\n }\n getNullCell(t) {\n return t ? (this._nullCell.fg = t.fg, this._nullCell.bg = t.bg, this._nullCell.extended = t.extended) : (this._nullCell.fg = 0, this._nullCell.bg = 0, this._nullCell.extended = new Pe2()), this._nullCell;\n }\n getWhitespaceCell(t) {\n return t ? (this._whitespaceCell.fg = t.fg, this._whitespaceCell.bg = t.bg, this._whitespaceCell.extended = t.extended) : (this._whitespaceCell.fg = 0, this._whitespaceCell.bg = 0, this._whitespaceCell.extended = new Pe2()), this._whitespaceCell;\n }\n getBlankLine(t, e) {\n return new Re4(this._bufferService.cols, this.getNullCell(t), e);\n }\n get hasScrollback() {\n return this._hasScrollback && this.lines.maxLength > this._rows;\n }\n get isCursorInViewport() {\n let e = this.ybase + this.y - this.ydisp;\n return e >= 0 && e < this._rows;\n }\n _getCorrectBufferLength(t) {\n if (!this._hasScrollback) return t;\n let e = t + this._optionsService.rawOptions.scrollback;\n return e > xn ? xn : e;\n }\n fillViewportRows(t) {\n if (this.lines.length === 0) {\n t ??= U5;\n let e = this._rows;\n for (; e--; ) this.lines.push(this.getBlankLine(t));\n }\n }\n clear() {\n this.ydisp = 0, this.ybase = 0, this.y = 0, this.x = 0, this.lines = new si(this._getCorrectBufferLength(this._rows)), this.scrollTop = 0, this.scrollBottom = this._rows - 1, this.setupTabStops();\n }\n resize(t, e) {\n let i5 = this.getNullCell(U5), r = 0, s4 = this._getCorrectBufferLength(e);\n if (s4 > this.lines.maxLength && (this.lines.maxLength = s4), this.lines.length > 0) {\n if (this._cols < t) for (let a2 = 0; a2 < this.lines.length; a2++) r += +this.lines.get(a2).resize(t, i5);\n let o2 = 0;\n if (this._rows < e) for (let a2 = this._rows; a2 < e; a2++) this.lines.length < e + this.ybase && (this._optionsService.rawOptions.windowsPty.backend !== void 0 || this._optionsService.rawOptions.windowsPty.buildNumber !== void 0 ? this.lines.push(new Re4(t, i5)) : this.ybase > 0 && this.lines.length <= this.ybase + this.y + o2 + 1 ? (this.ybase--, o2++, this.ydisp > 0 && this.ydisp--) : this.lines.push(new Re4(t, i5)));\n else for (let a2 = this._rows; a2 > e; a2--) this.lines.length > e + this.ybase && (this.lines.length > this.ybase + this.y + 1 ? this.lines.pop() : (this.ybase++, this.ydisp++));\n if (s4 < this.lines.maxLength) {\n let a2 = this.lines.length - s4;\n a2 > 0 && (this.lines.trimStart(a2), this.ybase = Math.max(this.ybase - a2, 0), this.ydisp = Math.max(this.ydisp - a2, 0), this.savedY = Math.max(this.savedY - a2, 0)), this.lines.maxLength = s4;\n }\n this.x = Math.min(this.x, t - 1), this.y = Math.min(this.y, e - 1), o2 && (this.y += o2), this.savedX = Math.min(this.savedX, t - 1), this.scrollTop = 0;\n }\n if (this.scrollBottom = e - 1, this._isReflowEnabled && (this._reflow(t, e), this._cols > t)) for (let o2 = 0; o2 < this.lines.length; o2++) r += +this.lines.get(o2).resize(t, i5);\n if (this._cols = t, this._rows = e, this.lines.length > 0) {\n let o2 = Math.max(0, this.lines.length - this.ybase - 1);\n this.y = Math.min(this.y, o2);\n }\n this._memoryCleanupQueue.clear(), r > 0.1 * this.lines.length && (this._memoryCleanupPosition = 0, this._memoryCleanupQueue.enqueue(() => this._batchedMemoryCleanup()));\n }\n _batchedMemoryCleanup() {\n let t = true;\n this._memoryCleanupPosition >= this.lines.length && (this._memoryCleanupPosition = 0, t = false);\n let e = 0;\n for (; this._memoryCleanupPosition < this.lines.length; ) if (e += this.lines.get(this._memoryCleanupPosition++).cleanupMemory(), e > 100) return true;\n return t;\n }\n get _isReflowEnabled() {\n let t = this._optionsService.rawOptions.windowsPty;\n return t && t.buildNumber ? this._hasScrollback && t.backend === "conpty" && t.buildNumber >= 21376 : this._hasScrollback;\n }\n _reflow(t, e) {\n this._cols !== t && (t > this._cols ? this._reflowLarger(t, e) : this._reflowSmaller(t, e));\n }\n _reflowLarger(t, e) {\n let i5 = this._optionsService.rawOptions.reflowCursorLine, r = In(this.lines, this._cols, t, this.ybase + this.y, this.getNullCell(U5), i5);\n if (r.length > 0) {\n let s4 = Cn(this.lines, r);\n En(this.lines, s4.layout), this._reflowLargerAdjustViewport(t, e, s4.countRemoved);\n }\n }\n _reflowLargerAdjustViewport(t, e, i5) {\n let r = this.getNullCell(U5), s4 = i5;\n for (; s4-- > 0; ) this.ybase === 0 ? (this.y > 0 && this.y--, this.lines.length < e && this.lines.push(new Re4(t, r))) : (this.ydisp === this.ybase && this.ydisp--, this.ybase--);\n this.savedY = Math.max(this.savedY - i5, 0);\n }\n _reflowSmaller(t, e) {\n let i5 = this._optionsService.rawOptions.reflowCursorLine, r = this.getNullCell(U5), s4 = [], o2 = 0;\n for (let a2 = this.lines.length - 1; a2 >= 0; a2--) {\n let l4 = this.lines.get(a2);\n if (!l4 || !l4.isWrapped && l4.getTrimmedLength() <= t) continue;\n let h3 = [l4];\n for (; l4.isWrapped && a2 > 0; ) l4 = this.lines.get(--a2), h3.unshift(l4);\n if (!i5) {\n let x5 = this.ybase + this.y;\n if (x5 >= a2 && x5 < a2 + h3.length) continue;\n }\n let d3 = h3[h3.length - 1].getTrimmedLength(), c2 = yn(h3, this._cols, t), u3 = c2.length - h3.length, _5;\n this.ybase === 0 && this.y !== this.lines.length - 1 ? _5 = Math.max(0, this.y - this.lines.maxLength + u3) : _5 = Math.max(0, this.lines.length - this.lines.maxLength + u3);\n let p3 = [];\n for (let x5 = 0; x5 < u3; x5++) {\n let ie4 = this.getBlankLine(U5, true);\n p3.push(ie4);\n }\n p3.length > 0 && (s4.push({ start: a2 + h3.length + o2, newLines: p3 }), o2 += p3.length), h3.push(...p3);\n let b4 = c2.length - 1, f5 = c2[b4];\n f5 === 0 && (b4--, f5 = c2[b4]);\n let S4 = h3.length - u3 - 1, I4 = d3;\n for (; S4 >= 0; ) {\n let x5 = Math.min(I4, f5);\n if (h3[b4] === void 0) break;\n if (h3[b4].copyCellsFrom(h3[S4], I4 - x5, f5 - x5, x5, true), f5 -= x5, f5 === 0 && (b4--, f5 = c2[b4]), I4 -= x5, I4 === 0) {\n S4--;\n let ie4 = Math.max(S4, 0);\n I4 = Rt2(h3, ie4, this._cols);\n }\n }\n for (let x5 = 0; x5 < h3.length; x5++) c2[x5] < t && h3[x5].setCell(c2[x5], r);\n let w6 = u3 - _5;\n for (; w6-- > 0; ) this.ybase === 0 ? this.y < e - 1 ? (this.y++, this.lines.pop()) : (this.ybase++, this.ydisp++) : this.ybase < Math.min(this.lines.maxLength, this.lines.length + o2) - e && (this.ybase === this.ydisp && this.ydisp++, this.ybase++);\n this.savedY = Math.min(this.savedY + u3, this.ybase + e - 1);\n }\n if (s4.length > 0) {\n let a2 = [], l4 = [];\n for (let f5 = 0; f5 < this.lines.length; f5++) l4.push(this.lines.get(f5));\n let h3 = this.lines.length, d3 = h3 - 1, c2 = 0, u3 = s4[c2];\n this.lines.length = Math.min(this.lines.maxLength, this.lines.length + o2);\n let _5 = 0;\n for (let f5 = Math.min(this.lines.maxLength - 1, h3 + o2 - 1); f5 >= 0; f5--) if (u3 && u3.start > d3 + _5) {\n for (let S4 = u3.newLines.length - 1; S4 >= 0; S4--) this.lines.set(f5--, u3.newLines[S4]);\n f5++, a2.push({ index: d3 + 1, amount: u3.newLines.length }), _5 += u3.newLines.length, u3 = s4[++c2];\n } else this.lines.set(f5, l4[d3--]);\n let p3 = 0;\n for (let f5 = a2.length - 1; f5 >= 0; f5--) a2[f5].index += p3, this.lines.onInsertEmitter.fire(a2[f5]), p3 += a2[f5].amount;\n let b4 = Math.max(0, h3 + o2 - this.lines.maxLength);\n b4 > 0 && this.lines.onTrimEmitter.fire(b4);\n }\n }\n translateBufferLineToString(t, e, i5 = 0, r) {\n let s4 = this.lines.get(t);\n return s4 ? s4.translateToString(e, i5, r) : "";\n }\n getWrappedRangeForLine(t) {\n let e = t, i5 = t;\n for (; e > 0 && this.lines.get(e).isWrapped; ) e--;\n for (; i5 + 1 < this.lines.length && this.lines.get(i5 + 1).isWrapped; ) i5++;\n return { first: e, last: i5 };\n }\n setupTabStops(t) {\n for (t != null ? this.tabs[t] || (t = this.prevStop(t)) : (this.tabs = {}, t = 0); t < this._cols; t += this._optionsService.rawOptions.tabStopWidth) this.tabs[t] = true;\n }\n prevStop(t) {\n for (t ??= this.x; !this.tabs[--t] && t > 0; ) ;\n return t >= this._cols ? this._cols - 1 : t < 0 ? 0 : t;\n }\n nextStop(t) {\n for (t ??= this.x; !this.tabs[++t] && t < this._cols; ) ;\n return t >= this._cols ? this._cols - 1 : t < 0 ? 0 : t;\n }\n clearMarkers(t) {\n this._isClearing = true;\n for (let e = 0; e < this.markers.length; e++) this.markers[e].line === t && (this.markers[e].dispose(), this.markers.splice(e--, 1));\n this._isClearing = false;\n }\n clearAllMarkers() {\n this._isClearing = true;\n for (let t = 0; t < this.markers.length; t++) this.markers[t].dispose();\n this.markers.length = 0, this._isClearing = false;\n }\n addMarker(t) {\n let e = new nr(t);\n return this.markers.push(e), e.register(this.lines.onTrim((i5) => {\n e.line -= i5, e.line < 0 && e.dispose();\n })), e.register(this.lines.onInsert((i5) => {\n e.line >= i5.index && (e.line += i5.amount);\n })), e.register(this.lines.onDelete((i5) => {\n e.line >= i5.index && e.line < i5.index + i5.amount && e.dispose(), e.line > i5.index && (e.line -= i5.amount);\n })), e.register(e.onDispose(() => this._removeMarker(e))), e;\n }\n _removeMarker(t) {\n this._isClearing || this.markers.splice(this.markers.indexOf(t), 1);\n }\n };\n var ar2 = class extends g5 {\n constructor(e, i5, r) {\n super();\n this._optionsService = e;\n this._bufferService = i5;\n this._logService = r;\n this._onBufferActivate = this._register(new v5());\n this.onBufferActivate = this._onBufferActivate.event;\n this.reset(), this._register(this._optionsService.onSpecificOptionChange("scrollback", () => this.resize(this._bufferService.cols, this._bufferService.rows))), this._register(this._optionsService.onSpecificOptionChange("tabStopWidth", () => this.setupTabStops()));\n }\n reset() {\n this._normal = new oi(true, this._optionsService, this._bufferService, this._logService), this._normal.fillViewportRows(), this._alt = new oi(false, this._optionsService, this._bufferService, this._logService), this._activeBuffer = this._normal, this._onBufferActivate.fire({ activeBuffer: this._normal, inactiveBuffer: this._alt }), this.setupTabStops();\n }\n get alt() {\n return this._alt;\n }\n get active() {\n return this._activeBuffer;\n }\n get normal() {\n return this._normal;\n }\n activateNormalBuffer() {\n this._activeBuffer !== this._normal && (this._normal.x = this._alt.x, this._normal.y = this._alt.y, this._alt.clearAllMarkers(), this._alt.clear(), this._activeBuffer = this._normal, this._onBufferActivate.fire({ activeBuffer: this._normal, inactiveBuffer: this._alt }));\n }\n activateAltBuffer(e) {\n this._activeBuffer !== this._alt && (this._alt.fillViewportRows(e), this._alt.x = this._normal.x, this._alt.y = this._normal.y, this._activeBuffer = this._alt, this._onBufferActivate.fire({ activeBuffer: this._alt, inactiveBuffer: this._normal }));\n }\n resize(e, i5) {\n this._normal.resize(e, i5), this._alt.resize(e, i5), this.setupTabStops(e);\n }\n setupTabStops(e) {\n this._normal.setupTabStops(e), this._alt.setupTabStops(e);\n }\n };\n var Es = 2;\n var ys = 1;\n var Lt2 = class extends g5 {\n constructor(e, i5) {\n super();\n this.isUserScrolling = false;\n this._onResize = this._register(new v5());\n this.onResize = this._onResize.event;\n this._onScroll = this._register(new v5());\n this.onScroll = this._onScroll.event;\n this.cols = Math.max(e.rawOptions.cols || 0, Es), this.rows = Math.max(e.rawOptions.rows || 0, ys), this.buffers = this._register(new ar2(e, this, i5)), this._register(this.buffers.onBufferActivate((r) => {\n this._onScroll.fire(r.activeBuffer.ydisp);\n }));\n }\n get buffer() {\n return this.buffers.active;\n }\n resize(e, i5) {\n let r = this.cols !== e, s4 = this.rows !== i5;\n this.cols = e, this.rows = i5, this.buffers.resize(e, i5), this._onResize.fire({ cols: e, rows: i5, colsChanged: r, rowsChanged: s4 });\n }\n reset() {\n this.buffers.reset(), this.isUserScrolling = false;\n }\n scroll(e, i5 = false) {\n let r = this.buffer, s4;\n s4 = this._cachedBlankLine, (!s4 || s4.length !== this.cols || s4.getFg(0) !== e.fg || s4.getBg(0) !== e.bg) && (s4 = r.getBlankLine(e, i5), this._cachedBlankLine = s4), s4.isWrapped = i5;\n let o2 = r.ybase + r.scrollTop, a2 = r.ybase + r.scrollBottom;\n if (r.scrollTop === 0) {\n let l4 = r.lines.isFull;\n a2 === r.lines.length - 1 ? l4 ? r.lines.recycle().copyFrom(s4) : r.lines.push(s4.clone()) : r.lines.splice(a2 + 1, 0, s4.clone()), l4 ? this.isUserScrolling && (r.ydisp = Math.max(r.ydisp - 1, 0)) : (r.ybase++, this.isUserScrolling || r.ydisp++);\n } else {\n let l4 = a2 - o2 + 1;\n r.lines.shiftElements(o2 + 1, l4 - 1, -1), r.lines.set(a2, s4.clone());\n }\n this.isUserScrolling || (r.ydisp = r.ybase), this._onScroll.fire(r.ydisp);\n }\n scrollLines(e, i5) {\n let r = this.buffer;\n if (e < 0) {\n if (r.ydisp === 0) return;\n this.isUserScrolling = true;\n } else e + r.ydisp >= r.ybase && (this.isUserScrolling = false);\n let s4 = r.ydisp;\n r.ydisp = Math.max(Math.min(r.ydisp + e, r.ybase), 0), s4 !== r.ydisp && (i5 || this._onScroll.fire(r.ydisp));\n }\n };\n Lt2 = E4([m3(0, R3), m3(1, pe)], Lt2);\n var At2 = { cols: 80, rows: 24, showCursorImmediately: false, cursorBlink: false, blinkIntervalDuration: 0, cursorStyle: "block", cursorWidth: 1, cursorInactiveStyle: "outline", drawBoldTextInBrightColors: true, documentOverride: null, fastScrollSensitivity: 5, fontFamily: "monospace", fontSize: 15, fontWeight: "normal", fontWeightBold: "bold", ignoreBracketedPasteMode: false, lineHeight: 1, letterSpacing: 0, linkHandler: null, logLevel: "info", logger: null, scrollback: 1e3, scrollbar: { showScrollbar: true }, scrollOnEraseInDisplay: false, scrollOnUserInput: true, scrollSensitivity: 1, screenReaderMode: false, smoothScrollDuration: 0, macOptionIsMeta: false, macOptionClickForcesSelection: false, minimumContrastRatio: 1, disableStdin: false, allowProposedApi: false, allowTransparency: false, tabStopWidth: 8, theme: {}, reflowCursorLine: false, rescaleOverlappingGlyphs: false, rightClickSelectsWord: ee3, windowOptions: {}, windowsPty: {}, wordSeparator: " ()[]{}\',\\"`", altClickMovesCursor: true, convertEol: false, termName: "xterm", quirks: {}, vtExtensions: {} };\n var Bo = ["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"];\n var lr2 = class extends g5 {\n constructor(e) {\n super();\n this._onOptionChange = this._register(new v5());\n this.onOptionChange = this._onOptionChange.event;\n let i5 = { ...At2 };\n for (let r in e) if (r in i5) try {\n let s4 = e[r];\n i5[r] = this._sanitizeAndValidateOption(r, s4);\n } catch (s4) {\n console.error(s4);\n }\n this.rawOptions = i5, this.options = { ...i5 }, this._setupOptions(), this._register(y4(() => {\n this.rawOptions.linkHandler = null, this.rawOptions.documentOverride = null;\n }));\n }\n onSpecificOptionChange(e, i5) {\n return this.onOptionChange((r) => {\n r === e && i5(this.rawOptions[e]);\n });\n }\n onMultipleOptionChange(e, i5) {\n return this.onOptionChange((r) => {\n e.indexOf(r) !== -1 && i5();\n });\n }\n _setupOptions() {\n let e = (r) => {\n if (!(r in At2)) throw new Error(`No option with key "${r}"`);\n return this.rawOptions[r];\n }, i5 = (r, s4) => {\n if (!(r in At2)) throw new Error(`No option with key "${r}"`);\n s4 = this._sanitizeAndValidateOption(r, s4), this.rawOptions[r] !== s4 && (this.rawOptions[r] = s4, this._onOptionChange.fire(r));\n };\n for (let r in this.rawOptions) {\n let s4 = { get: e.bind(this, r), set: i5.bind(this, r) };\n Object.defineProperty(this.options, r, s4);\n }\n }\n _sanitizeAndValidateOption(e, i5) {\n switch (e) {\n case "cursorStyle":\n if (i5 || (i5 = At2[e]), !Oo(i5)) throw new Error(`"${i5}" is not a valid value for ${e}`);\n break;\n case "wordSeparator":\n i5 || (i5 = At2[e]);\n break;\n case "fontWeight":\n case "fontWeightBold":\n if (typeof i5 == "number" && 1 <= i5 && i5 <= 1e3) break;\n i5 = Bo.includes(i5) ? i5 : At2[e];\n break;\n case "blinkIntervalDuration":\n if (i5 = Math.floor(i5), i5 < 0) throw new Error(`${e} cannot be less than 0, value: ${i5}`);\n break;\n case "cursorWidth":\n i5 = Math.floor(i5);\n case "lineHeight":\n case "tabStopWidth":\n if (i5 < 1) throw new Error(`${e} cannot be less than 1, value: ${i5}`);\n break;\n case "minimumContrastRatio":\n i5 = Math.max(1, Math.min(21, Math.round(i5 * 10) / 10));\n break;\n case "scrollback":\n if (i5 = Math.min(i5, 4294967295), i5 < 0) throw new Error(`${e} cannot be less than 0, value: ${i5}`);\n break;\n case "fastScrollSensitivity":\n case "scrollSensitivity":\n if (i5 <= 0) throw new Error(`${e} cannot be less than or equal to 0, value: ${i5}`);\n break;\n case "rows":\n case "cols":\n if (!i5 && i5 !== 0) throw new Error(`${e} must be numeric, value: ${i5}`);\n break;\n case "windowsPty":\n i5 = i5 ?? {};\n break;\n }\n return i5;\n }\n };\n function Oo(n11) {\n return n11 === "block" || n11 === "underline" || n11 === "bar";\n }\n function kt(n11, t = 5) {\n if (typeof n11 != "object") return n11;\n let e = Array.isArray(n11) ? [] : {};\n for (let i5 in n11) e[i5] = t <= 1 ? n11[i5] : n11[i5] && kt(n11[i5], t - 1);\n return e;\n }\n var wn = Object.freeze({ insertMode: false });\n var Tn = Object.freeze({ applicationCursorKeys: false, applicationKeypad: false, bracketedPasteMode: false, colorSchemeUpdates: false, cursorBlink: void 0, cursorStyle: void 0, origin: false, reverseWraparound: false, sendFocus: false, synchronizedOutput: false, win32InputMode: false, wraparound: true });\n var Dn = () => ({ flags: 0, mainFlags: 0, altFlags: 0, mainStack: [], altStack: [] });\n var Pt = class extends g5 {\n constructor(e, i5, r) {\n super();\n this._bufferService = e;\n this._logService = i5;\n this._optionsService = r;\n this.isCursorHidden = false;\n this._onData = this._register(new v5());\n this.onData = this._onData.event;\n this._onUserInput = this._register(new v5());\n this.onUserInput = this._onUserInput.event;\n this._onBinary = this._register(new v5());\n this.onBinary = this._onBinary.event;\n this._onRequestScrollToBottom = this._register(new v5());\n this.onRequestScrollToBottom = this._onRequestScrollToBottom.event;\n this.isCursorInitialized = r.rawOptions.showCursorImmediately ?? false, this.modes = kt(wn), this.decPrivateModes = kt(Tn), this.kittyKeyboard = Dn();\n }\n reset() {\n this.modes = kt(wn), this.decPrivateModes = kt(Tn), this.kittyKeyboard = Dn();\n }\n triggerDataEvent(e, i5 = false) {\n if (this._optionsService.rawOptions.disableStdin) return;\n let r = this._bufferService.buffer;\n i5 && this._optionsService.rawOptions.scrollOnUserInput && r.ybase !== r.ydisp && this._onRequestScrollToBottom.fire(), i5 && this._onUserInput.fire(), this._logService.debug(`sending data "${e}"`), this._logService.trace("sending data (codes)", () => e.split("").map((s4) => s4.charCodeAt(0))), this._onData.fire(e);\n }\n triggerBinaryEvent(e) {\n this._optionsService.rawOptions.disableStdin || (this._logService.debug(`sending binary "${e}"`), this._logService.trace("sending binary (codes)", () => e.split("").map((i5) => i5.charCodeAt(0))), this._onBinary.fire(e));\n }\n };\n Pt = E4([m3(0, L5), m3(1, pe), m3(2, R3)], Pt);\n var Rn = { NONE: { events: 0, restrict: () => false }, X10: { events: 1, restrict: (n11) => n11.button === 4 || n11.action !== 1 ? false : (n11.ctrl = false, n11.alt = false, n11.shift = false, true) }, VT200: { events: 19, restrict: (n11) => n11.action !== 32 }, DRAG: { events: 23, restrict: (n11) => !(n11.action === 32 && n11.button === 3) }, ANY: { events: 31, restrict: (n11) => true } };\n function xs(n11, t) {\n let e = (n11.ctrl ? 16 : 0) | (n11.shift ? 4 : 0) | (n11.alt ? 8 : 0);\n return n11.button === 4 ? (e |= 64, e |= n11.action) : (e |= n11.button & 3, n11.button & 4 && (e |= 64), n11.button & 8 && (e |= 128), n11.action === 32 ? e |= 32 : n11.action === 0 && !t && (e |= 3)), e;\n }\n var ws = String.fromCharCode;\n var Ln = { DEFAULT: (n11) => {\n let t = [xs(n11, false) + 32, n11.col + 32, n11.row + 32];\n return t[0] > 255 || t[1] > 255 || t[2] > 255 ? "" : `\\x1B[M${ws(t[0])}${ws(t[1])}${ws(t[2])}`;\n }, SGR: (n11) => {\n let t = n11.action === 0 && n11.button !== 4 ? "m" : "M";\n return `\\x1B[<${xs(n11, true)};${n11.col};${n11.row}${t}`;\n }, SGR_PIXELS: (n11) => {\n let t = n11.action === 0 && n11.button !== 4 ? "m" : "M";\n return `\\x1B[<${xs(n11, true)};${n11.x};${n11.y}${t}`;\n } };\n var cr = class extends g5 {\n constructor() {\n super();\n this._protocols = {};\n this._encodings = {};\n this._activeProtocol = "";\n this._activeEncoding = "";\n this._onProtocolChange = this._register(new v5());\n this.onProtocolChange = this._onProtocolChange.event;\n for (let e of Object.keys(Rn)) this.addProtocol(e, Rn[e]);\n for (let e of Object.keys(Ln)) this.addEncoding(e, Ln[e]);\n this.reset();\n }\n addProtocol(e, i5) {\n this._protocols[e] = i5;\n }\n addEncoding(e, i5) {\n this._encodings[e] = i5;\n }\n get activeProtocol() {\n return this._activeProtocol;\n }\n get areMouseEventsActive() {\n return this._protocols[this._activeProtocol].events !== 0;\n }\n set activeProtocol(e) {\n if (!this._protocols[e]) throw new Error(`unknown protocol "${e}"`);\n this._activeProtocol = e, this._onProtocolChange.fire(this._protocols[e].events);\n }\n get activeEncoding() {\n return this._activeEncoding;\n }\n set activeEncoding(e) {\n if (!this._encodings[e]) throw new Error(`unknown encoding "${e}"`);\n this._activeEncoding = e;\n }\n reset() {\n this.activeProtocol = "NONE", this.activeEncoding = "DEFAULT";\n }\n setCustomWheelEventHandler(e) {\n this._customWheelEventHandler = e;\n }\n allowCustomWheelEvent(e) {\n return this._customWheelEventHandler ? this._customWheelEventHandler(e) !== false : true;\n }\n restrictMouseEvent(e) {\n return this._protocols[this._activeProtocol].restrict(e);\n }\n encodeMouseEvent(e) {\n return this._encodings[this._activeEncoding](e);\n }\n get isDefaultEncoding() {\n return this._activeEncoding === "DEFAULT";\n }\n get isPixelEncoding() {\n return this._activeEncoding === "SGR_PIXELS";\n }\n };\n var Ts = [[768, 879], [1155, 1158], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1536, 1539], [1552, 1557], [1611, 1630], [1648, 1648], [1750, 1764], [1767, 1768], [1770, 1773], [1807, 1807], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2305, 2306], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2388], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2672, 2673], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2883], [2893, 2893], [2902, 2902], [2946, 2946], [3008, 3008], [3021, 3021], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3393, 3395], [3405, 3405], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3769], [3771, 3772], [3784, 3789], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3984, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4146], [4150, 4151], [4153, 4153], [4184, 4185], [4448, 4607], [4959, 4959], [5906, 5908], [5938, 5940], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7616, 7626], [7678, 7679], [8203, 8207], [8234, 8238], [8288, 8291], [8298, 8303], [8400, 8431], [12330, 12335], [12441, 12442], [43014, 43014], [43019, 43019], [43045, 43046], [64286, 64286], [65024, 65039], [65056, 65059], [65279, 65279], [65529, 65531]];\n var No2 = [[68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [119143, 119145], [119155, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [917505, 917505], [917536, 917631], [917760, 917999]];\n var q2;\n function Fo(n11, t) {\n let e = 0, i5 = t.length - 1, r;\n if (n11 < t[0][0] || n11 > t[i5][1]) return false;\n for (; i5 >= e; ) if (r = e + i5 >> 1, n11 > t[r][1]) e = r + 1;\n else if (n11 < t[r][0]) i5 = r - 1;\n else return true;\n return false;\n }\n var hr = class {\n constructor() {\n this.version = "6";\n if (!q2) {\n q2 = new Uint8Array(65536), q2.fill(1), q2[0] = 0, q2.fill(0, 1, 32), q2.fill(0, 127, 160), q2.fill(2, 4352, 4448), q2[9001] = 2, q2[9002] = 2, q2.fill(2, 11904, 42192), q2[12351] = 1, q2.fill(2, 44032, 55204), q2.fill(2, 63744, 64256), q2.fill(2, 65040, 65050), q2.fill(2, 65072, 65136), q2.fill(2, 65280, 65377), q2.fill(2, 65504, 65511);\n for (let t = 0; t < Ts.length; ++t) q2.fill(0, Ts[t][0], Ts[t][1] + 1);\n }\n }\n wcwidth(t) {\n return t < 32 ? 0 : t < 127 ? 1 : t < 65536 ? q2[t] : Fo(t, No2) ? 0 : t >= 131072 && t <= 196605 || t >= 196608 && t <= 262141 ? 2 : 1;\n }\n charProperties(t, e) {\n let i5 = this.wcwidth(t), r = i5 === 0 && e !== 0;\n if (r) {\n let s4 = be3.extractWidth(e);\n s4 === 0 ? r = false : s4 > i5 && (i5 = s4);\n }\n return be3.createPropertyValue(0, i5, r);\n }\n };\n var be3 = class n9 {\n constructor() {\n this._providers = /* @__PURE__ */ Object.create(null);\n this._active = "";\n this._onChange = new v5();\n this.onChange = this._onChange.event;\n let t = new hr();\n this.register(t), this._active = t.version, this._activeProvider = t;\n }\n static extractShouldJoin(t) {\n return (t & 1) !== 0;\n }\n static extractWidth(t) {\n return t >> 1 & 3;\n }\n static extractCharKind(t) {\n return t >> 3;\n }\n static createPropertyValue(t, e, i5 = false) {\n return (t & 16777215) << 3 | (e & 3) << 1 | (i5 ? 1 : 0);\n }\n dispose() {\n this._onChange.dispose();\n }\n get versions() {\n return Object.keys(this._providers);\n }\n get activeVersion() {\n return this._active;\n }\n set activeVersion(t) {\n if (!this._providers[t]) throw new Error(`unknown Unicode version "${t}"`);\n this._active = t, this._activeProvider = this._providers[t], this._onChange.fire(t);\n }\n register(t) {\n this._providers[t.version] = t;\n }\n wcwidth(t) {\n return this._activeProvider.wcwidth(t);\n }\n getStringCellWidth(t) {\n let e = 0, i5 = 0, r = t.length;\n for (let s4 = 0; s4 < r; ++s4) {\n let o2 = t.charCodeAt(s4);\n if (55296 <= o2 && o2 <= 56319) {\n if (++s4 >= r) return e + this.wcwidth(o2);\n let h3 = t.charCodeAt(s4);\n 56320 <= h3 && h3 <= 57343 ? o2 = (o2 - 55296) * 1024 + h3 - 56320 + 65536 : e += this.wcwidth(h3);\n }\n let a2 = this.charProperties(o2, i5), l4 = n9.extractWidth(a2);\n n9.extractShouldJoin(a2) && (l4 -= n9.extractWidth(i5)), e += l4, i5 = a2;\n }\n return e;\n }\n charProperties(t, e) {\n return this._activeProvider.charProperties(t, e);\n }\n };\n var dr = class {\n constructor() {\n this.glevel = 0;\n this._charsets = [];\n }\n get charsets() {\n return this._charsets;\n }\n reset() {\n this.charset = void 0, this._charsets = [], this.glevel = 0;\n }\n setgLevel(t) {\n this.glevel = t, this.charset = this._charsets[t];\n }\n setgCharset(t, e) {\n this._charsets[t] = e, this.glevel === t && (this.charset = e);\n }\n };\n function Ds(n11) {\n let e = n11.buffer.lines.get(n11.buffer.ybase + n11.buffer.y - 1)?.get(n11.cols - 1), i5 = n11.buffer.lines.get(n11.buffer.ybase + n11.buffer.y);\n i5 && e && (i5.isWrapped = e[3] !== 0 && e[3] !== 32);\n }\n var ai = 2147483647;\n var Ho2 = 256;\n var Mt = class n10 {\n constructor(t = 32, e = 32) {\n this.maxLength = t;\n this.maxSubParamsLength = e;\n if (e > Ho2) throw new Error("maxSubParamsLength must not be greater than 256");\n this.params = new Int32Array(t), this.length = 0, this._subParams = new Int32Array(e), this._subParamsLength = 0, this._subParamsIdx = new Uint16Array(t), this._rejectDigits = false, this._rejectSubDigits = false, this._digitIsSub = false;\n }\n static fromArray(t) {\n let e = new n10();\n if (!t.length) return e;\n for (let i5 = Array.isArray(t[0]) ? 1 : 0; i5 < t.length; ++i5) {\n let r = t[i5];\n if (Array.isArray(r)) for (let s4 = 0; s4 < r.length; ++s4) e.addSubParam(r[s4]);\n else e.addParam(r);\n }\n return e;\n }\n clone() {\n let t = new n10(this.maxLength, this.maxSubParamsLength);\n return t.params.set(this.params), t.length = this.length, t._subParams.set(this._subParams), t._subParamsLength = this._subParamsLength, t._subParamsIdx.set(this._subParamsIdx), t._rejectDigits = this._rejectDigits, t._rejectSubDigits = this._rejectSubDigits, t._digitIsSub = this._digitIsSub, t;\n }\n toArray() {\n let t = [];\n for (let e = 0; e < this.length; ++e) {\n t.push(this.params[e]);\n let i5 = this._subParamsIdx[e] >> 8, r = this._subParamsIdx[e] & 255;\n r - i5 > 0 && t.push(Array.prototype.slice.call(this._subParams, i5, r));\n }\n return t;\n }\n reset() {\n this.length = 0, this._subParamsLength = 0, this._rejectDigits = false, this._rejectSubDigits = false, this._digitIsSub = false;\n }\n resetZdm() {\n this.length = 1, this._subParamsLength = 0, this._rejectDigits = false, this._rejectSubDigits = false, this._digitIsSub = false, this._subParamsIdx[0] = 0, this.params[0] = 0;\n }\n addParam(t) {\n if (this._digitIsSub = false, this.length >= this.maxLength) {\n this._rejectDigits = true;\n return;\n }\n if (t < -1) throw new Error("values lesser than -1 are not allowed");\n this._subParamsIdx[this.length] = this._subParamsLength << 8 | this._subParamsLength, this.params[this.length++] = t > ai ? ai : t;\n }\n addSubParam(t) {\n if (this._digitIsSub = true, !!this.length) {\n if (this._rejectDigits || this._subParamsLength >= this.maxSubParamsLength) {\n this._rejectSubDigits = true;\n return;\n }\n if (t < -1) throw new Error("values lesser than -1 are not allowed");\n this._subParams[this._subParamsLength++] = t > ai ? ai : t, this._subParamsIdx[this.length - 1]++;\n }\n }\n hasSubParams(t) {\n return (this._subParamsIdx[t] & 255) - (this._subParamsIdx[t] >> 8) > 0;\n }\n getSubParams(t) {\n let e = this._subParamsIdx[t] >> 8, i5 = this._subParamsIdx[t] & 255;\n return i5 - e > 0 ? this._subParams.subarray(e, i5) : null;\n }\n getSubParamsAll() {\n let t = {};\n for (let e = 0; e < this.length; ++e) {\n let i5 = this._subParamsIdx[e] >> 8, r = this._subParamsIdx[e] & 255;\n r - i5 > 0 && (t[e] = this._subParams.slice(i5, r));\n }\n return t;\n }\n addDigit(t) {\n let e;\n if (this._rejectDigits || !(e = this._digitIsSub ? this._subParamsLength : this.length) || this._digitIsSub && this._rejectSubDigits) return;\n let i5 = this._digitIsSub ? this._subParams : this.params, r = i5[e - 1];\n i5[e - 1] = ~r ? Math.min(r * 10 + t, ai) : t;\n }\n };\n var li = [];\n var ur = class {\n constructor() {\n this._state = 0;\n this._active = li;\n this._id = -1;\n this._handlers = /* @__PURE__ */ Object.create(null);\n this._handlerFb = () => {\n };\n this._stack = { paused: false, loopPosition: 0, fallThrough: false };\n }\n registerHandler(t, e) {\n this._handlers[t] ??= [];\n let i5 = this._handlers[t];\n return i5.push(e), { dispose: () => {\n let r = i5.indexOf(e);\n r !== -1 && i5.splice(r, 1);\n } };\n }\n clearHandler(t) {\n this._handlers[t] && delete this._handlers[t];\n }\n setHandlerFallback(t) {\n this._handlerFb = t;\n }\n dispose() {\n this._handlers = /* @__PURE__ */ Object.create(null), this._handlerFb = () => {\n }, this._active = li;\n }\n reset() {\n if (this._state === 2) for (let t = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; t >= 0; --t) this._active[t].end(false);\n this._stack.paused = false, this._active = li, this._id = -1, this._state = 0;\n }\n _start() {\n if (this._active = this._handlers[this._id] || li, !this._active.length) this._handlerFb(this._id, "START");\n else for (let t = this._active.length - 1; t >= 0; t--) this._active[t].start();\n }\n _put(t, e, i5) {\n if (!this._active.length) this._handlerFb(this._id, "PUT", ye2(t, e, i5));\n else for (let r = this._active.length - 1; r >= 0; r--) this._active[r].put(t, e, i5);\n }\n start() {\n this.reset(), this._state = 1;\n }\n put(t, e, i5) {\n if (this._state !== 3) {\n if (this._state === 1) for (; e < i5; ) {\n let r = t[e++];\n if (r === 59) {\n this._state = 2, this._start();\n break;\n }\n if (r < 48 || 57 < r) {\n this._state = 3;\n return;\n }\n this._id === -1 && (this._id = 0), this._id = this._id * 10 + r - 48;\n }\n this._state === 2 && i5 - e > 0 && this._put(t, e, i5);\n }\n }\n end(t, e = true) {\n if (this._state !== 0) {\n if (this._state !== 3) if (this._state === 1 && this._start(), !this._active.length) this._handlerFb(this._id, "END", t);\n else {\n let i5 = false, r = this._active.length - 1, s4 = false;\n if (this._stack.paused && (r = this._stack.loopPosition - 1, i5 = e, s4 = this._stack.fallThrough, this._stack.paused = false), !s4 && i5 === false) {\n for (; r >= 0 && (i5 = this._active[r].end(t), i5 !== true); r--) if (i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = false, i5;\n r--;\n }\n for (; r >= 0; r--) if (i5 = this._active[r].end(false), i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = true, i5;\n }\n this._active = li, this._id = -1, this._state = 0;\n }\n }\n };\n var fr = class fr2 {\n constructor(t) {\n this._handler = t;\n this._data = "";\n this._hitLimit = false;\n }\n start() {\n this._data = "", this._hitLimit = false;\n }\n put(t, e, i5) {\n this._hitLimit || (this._data += ye2(t, e, i5), this._data.length > fr2._payloadLimit && (this._data = "", this._hitLimit = true));\n }\n end(t) {\n let e = false;\n if (this._hitLimit) e = false;\n else if (t && (e = this._handler(this._data), e instanceof Promise)) return e.then((i5) => (this._data = "", this._hitLimit = false, i5));\n return this._data = "", this._hitLimit = false, e;\n }\n };\n fr._payloadLimit = 1e7;\n var re2 = fr;\n var ci = [];\n var pr = class {\n constructor() {\n this._handlers = /* @__PURE__ */ Object.create(null);\n this._active = ci;\n this._ident = 0;\n this._handlerFb = () => {\n };\n this._stack = { paused: false, loopPosition: 0, fallThrough: false };\n }\n dispose() {\n this._handlers = /* @__PURE__ */ Object.create(null), this._handlerFb = () => {\n }, this._active = ci;\n }\n registerHandler(t, e) {\n this._handlers[t] ??= [];\n let i5 = this._handlers[t];\n return i5.push(e), { dispose: () => {\n let r = i5.indexOf(e);\n r !== -1 && i5.splice(r, 1);\n } };\n }\n clearHandler(t) {\n this._handlers[t] && delete this._handlers[t];\n }\n setHandlerFallback(t) {\n this._handlerFb = t;\n }\n reset() {\n if (this._active.length) for (let t = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; t >= 0; --t) this._active[t].unhook(false);\n this._stack.paused = false, this._active = ci, this._ident = 0;\n }\n hook(t, e) {\n if (this.reset(), this._ident = t, this._active = this._handlers[t] || ci, !this._active.length) this._handlerFb(this._ident, "HOOK", e);\n else for (let i5 = this._active.length - 1; i5 >= 0; i5--) this._active[i5].hook(e);\n }\n put(t, e, i5) {\n if (!this._active.length) this._handlerFb(this._ident, "PUT", ye2(t, e, i5));\n else for (let r = this._active.length - 1; r >= 0; r--) this._active[r].put(t, e, i5);\n }\n unhook(t, e = true) {\n if (!this._active.length) this._handlerFb(this._ident, "UNHOOK", t);\n else {\n let i5 = false, r = this._active.length - 1, s4 = false;\n if (this._stack.paused && (r = this._stack.loopPosition - 1, i5 = e, s4 = this._stack.fallThrough, this._stack.paused = false), !s4 && i5 === false) {\n for (; r >= 0 && (i5 = this._active[r].unhook(t), i5 !== true); r--) if (i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = false, i5;\n r--;\n }\n for (; r >= 0; r--) if (i5 = this._active[r].unhook(false), i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = true, i5;\n }\n this._active = ci, this._ident = 0;\n }\n };\n var hi = new Mt();\n hi.addParam(0);\n var _r = class _r2 {\n constructor(t) {\n this._handler = t;\n this._data = "";\n this._params = hi;\n this._hitLimit = false;\n }\n hook(t) {\n this._params = t.length > 1 || t.params[0] ? t.clone() : hi, this._data = "", this._hitLimit = false;\n }\n put(t, e, i5) {\n this._hitLimit || (this._data += ye2(t, e, i5), this._data.length > _r2._payloadLimit && (this._data = "", this._hitLimit = true));\n }\n unhook(t) {\n let e = false;\n if (this._hitLimit) e = false;\n else if (t && (e = this._handler(this._data, this._params), e instanceof Promise)) return e.then((i5) => (this._params = hi, this._data = "", this._hitLimit = false, i5));\n return this._params = hi, this._data = "", this._hitLimit = false, e;\n }\n };\n _r._payloadLimit = 1e7;\n var di = _r;\n var ui = [];\n var mr = class {\n constructor() {\n this._handlers = /* @__PURE__ */ Object.create(null);\n this._active = ui;\n this._ident = 0;\n this._handlerFb = () => {\n };\n this._stack = { paused: false, loopPosition: 0, fallThrough: false };\n }\n registerHandler(t, e) {\n this._handlers[t] ??= [];\n let i5 = this._handlers[t];\n return i5.push(e), { dispose: () => {\n let r = i5.indexOf(e);\n r !== -1 && i5.splice(r, 1);\n } };\n }\n clearHandler(t) {\n this._handlers[t] && delete this._handlers[t];\n }\n setHandlerFallback(t) {\n this._handlerFb = t;\n }\n dispose() {\n this._handlers = /* @__PURE__ */ Object.create(null), this._handlerFb = () => {\n }, this._active = ui;\n }\n reset() {\n if (this._active.length) for (let t = this._stack.paused ? this._stack.loopPosition - 1 : this._active.length - 1; t >= 0; --t) this._active[t].end(false);\n this._stack.paused = false, this._active = ui, this._ident = 0;\n }\n start(t) {\n if (this.reset(), this._ident = t, this._active = this._handlers[t] || ui, !this._active.length) this._handlerFb(this._ident, "START");\n else for (let e = this._active.length - 1; e >= 0; e--) this._active[e].start();\n }\n put(t, e, i5) {\n if (!this._active.length) this._handlerFb(this._ident, "PUT", ye2(t, e, i5));\n else for (let r = this._active.length - 1; r >= 0; r--) this._active[r].put(t, e, i5);\n }\n end(t, e = true) {\n if (!this._active.length) this._handlerFb(this._ident, "END", t);\n else {\n let i5 = false, r = this._active.length - 1, s4 = false;\n if (this._stack.paused && (r = this._stack.loopPosition - 1, i5 = e, s4 = this._stack.fallThrough, this._stack.paused = false), !s4 && i5 === false) {\n for (; r >= 0 && (i5 = this._active[r].end(t), i5 !== true); r--) if (i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = false, i5;\n r--;\n }\n for (; r >= 0; r--) if (i5 = this._active[r].end(false), i5 instanceof Promise) return this._stack.paused = true, this._stack.loopPosition = r, this._stack.fallThrough = true, i5;\n }\n this._active = ui, this._ident = 0;\n }\n };\n var vr = class vr2 {\n constructor(t) {\n this._handler = t;\n this._data = "";\n this._hitLimit = false;\n }\n start() {\n this._data = "", this._hitLimit = false;\n }\n put(t, e, i5) {\n this._hitLimit || (this._data += ye2(t, e, i5), this._data.length > vr2._payloadLimit && (this._data = "", this._hitLimit = true));\n }\n end(t) {\n let e = false;\n if (this._hitLimit) e = false;\n else if (t && (e = this._handler(this._data), e instanceof Promise)) return e.then((i5) => (this._data = "", this._hitLimit = false, i5));\n return this._data = "", this._hitLimit = false, e;\n }\n };\n vr._payloadLimit = 1e7;\n var br = vr;\n var Rs = class {\n constructor(t) {\n this.table = new Uint16Array(t);\n }\n setDefault(t, e) {\n this.table.fill(t << 8 | e);\n }\n add(t, e, i5, r) {\n this.table[e << 8 | t] = i5 << 8 | r;\n }\n addMany(t, e, i5, r) {\n for (let s4 = 0; s4 < t.length; s4++) this.table[e << 8 | t[s4]] = i5 << 8 | r;\n }\n };\n var se2 = 160;\n var Wo2 = (function() {\n let n11 = new Rs(4257), e = Array.apply(null, Array(256)).map((a2, l4) => l4), i5 = (a2, l4) => e.slice(a2, l4), r = i5(32, 127), s4 = i5(0, 24);\n s4.push(25), s4.push.apply(s4, i5(28, 32));\n let o2 = i5(0, 17);\n n11.setDefault(1, 0), n11.addMany(r, 0, 2, 0);\n for (let a2 of o2) n11.addMany([24, 26, 153, 154], a2, 3, 0), n11.addMany(i5(128, 144), a2, 3, 0), n11.addMany(i5(144, 152), a2, 3, 0), n11.add(156, a2, 0, 0), n11.add(27, a2, 11, 1), n11.add(157, a2, 4, 8), n11.addMany([152, 158], a2, 0, 7), n11.add(159, a2, 11, 14), n11.add(155, a2, 11, 3), n11.add(144, a2, 11, 9);\n return n11.addMany(s4, 0, 3, 0), n11.addMany(s4, 1, 3, 1), n11.add(127, 1, 0, 1), n11.addMany(s4, 8, 0, 8), n11.addMany(s4, 3, 3, 3), n11.add(127, 3, 0, 3), n11.addMany(s4, 4, 3, 4), n11.add(127, 4, 0, 4), n11.addMany(s4, 6, 3, 6), n11.addMany(s4, 5, 3, 5), n11.add(127, 5, 0, 5), n11.addMany(s4, 2, 3, 2), n11.add(127, 2, 0, 2), n11.add(93, 1, 4, 8), n11.addMany(r, 8, 5, 8), n11.add(127, 8, 5, 8), n11.addMany([156, 27, 24, 26, 7], 8, 6, 0), n11.addMany(i5(28, 32), 8, 0, 8), n11.addMany([88, 94], 1, 0, 7), n11.addMany(r, 7, 0, 7), n11.addMany(s4, 7, 0, 7), n11.add(156, 7, 0, 0), n11.add(127, 7, 0, 7), n11.add(95, 1, 11, 14), n11.addMany(s4, 14, 0, 14), n11.add(127, 14, 0, 14), n11.addMany(i5(32, 48), 14, 9, 15), n11.addMany(i5(48, 127), 14, 15, 16), n11.addMany(i5(48, 127), 15, 15, 16), n11.addMany(s4, 15, 0, 15), n11.addMany(i5(32, 48), 15, 9, 15), n11.add(127, 15, 0, 15), n11.addMany(r, 16, 16, 16), n11.addMany(s4, 16, 0, 16), n11.addMany(i5(8, 14), 16, 16, 16), n11.add(127, 16, 0, 16), n11.addMany([27, 156, 24, 26], 16, 17, 0), n11.add(91, 1, 11, 3), n11.addMany(i5(64, 127), 3, 7, 0), n11.addMany(i5(48, 60), 3, 8, 4), n11.addMany([60, 61, 62, 63], 3, 9, 4), n11.addMany(i5(48, 60), 4, 8, 4), n11.addMany(i5(64, 127), 4, 7, 0), n11.addMany([60, 61, 62, 63], 4, 0, 6), n11.addMany(i5(32, 64), 6, 0, 6), n11.add(127, 6, 0, 6), n11.addMany(i5(64, 127), 6, 0, 0), n11.addMany(i5(32, 48), 3, 9, 5), n11.addMany(i5(32, 48), 5, 9, 5), n11.addMany(i5(48, 64), 5, 0, 6), n11.addMany(i5(64, 127), 5, 7, 0), n11.addMany(i5(32, 48), 4, 9, 5), n11.addMany(i5(32, 48), 1, 9, 2), n11.addMany(i5(32, 48), 2, 9, 2), n11.addMany(i5(48, 127), 2, 10, 0), n11.addMany(i5(48, 80), 1, 10, 0), n11.addMany(i5(81, 88), 1, 10, 0), n11.addMany([89, 90, 92], 1, 10, 0), n11.addMany(i5(96, 127), 1, 10, 0), n11.add(80, 1, 11, 9), n11.addMany(s4, 9, 0, 9), n11.add(127, 9, 0, 9), n11.addMany(i5(32, 48), 9, 9, 12), n11.addMany(i5(48, 60), 9, 8, 10), n11.addMany([60, 61, 62, 63], 9, 9, 10), n11.addMany(s4, 11, 0, 11), n11.addMany(i5(32, 128), 11, 0, 11), n11.addMany(s4, 10, 0, 10), n11.add(127, 10, 0, 10), n11.addMany(i5(48, 60), 10, 8, 10), n11.addMany([60, 61, 62, 63], 10, 0, 11), n11.addMany(i5(32, 48), 10, 9, 12), n11.addMany(s4, 12, 0, 12), n11.add(127, 12, 0, 12), n11.addMany(i5(32, 48), 12, 9, 12), n11.addMany(i5(48, 64), 12, 0, 11), n11.addMany(i5(64, 127), 12, 12, 13), n11.addMany(i5(64, 127), 10, 12, 13), n11.addMany(i5(64, 127), 9, 12, 13), n11.addMany(s4, 13, 13, 13), n11.addMany(r, 13, 13, 13), n11.add(127, 13, 0, 13), n11.addMany([27, 156, 24, 26], 13, 14, 0), n11.add(se2, 0, 2, 0), n11.add(se2, 8, 5, 8), n11.add(se2, 6, 0, 6), n11.add(se2, 11, 0, 11), n11.add(se2, 13, 13, 13), n11.add(se2, 16, 16, 16), n11;\n })();\n var Sr = class extends g5 {\n constructor(e = Wo2) {\n super();\n this._transitions = e;\n this._parseStack = { state: 0, handlers: [], handlerPos: 0, transition: 0, chunkPos: 0 };\n this.initialState = 0, this.currentState = this.initialState, this._params = new Mt(), this._params.addParam(0), this._collect = 0, this.precedingJoinState = 0, this._printHandlerFb = (i5, r, s4) => {\n }, this._executeHandlerFb = (i5) => {\n }, this._csiHandlerFb = (i5, r) => {\n }, this._escHandlerFb = (i5) => {\n }, this._errorHandlerFb = (i5) => i5, this._printHandler = this._printHandlerFb, this._executeHandlers = /* @__PURE__ */ Object.create(null), this._executeHandlersArr = new Array(24).fill(void 0), this._csiHandlers = /* @__PURE__ */ Object.create(null), this._escHandlers = /* @__PURE__ */ Object.create(null), this._register(y4(() => {\n this._csiHandlers = /* @__PURE__ */ Object.create(null), this._executeHandlers = /* @__PURE__ */ Object.create(null), this._executeHandlersArr = new Array(24).fill(void 0), this._escHandlers = /* @__PURE__ */ Object.create(null);\n })), this._oscParser = this._register(new ur()), this._dcsParser = this._register(new pr()), this._apcParser = this._register(new mr()), this._errorHandler = this._errorHandlerFb, this.registerEscHandler({ final: "\\\\" }, () => true);\n }\n _identifier(e, i5 = [64, 126]) {\n let r = 0;\n if (e.prefix) {\n if (e.prefix.length > 1) throw new Error("only one byte as prefix supported");\n if (r = e.prefix.charCodeAt(0), r && 60 > r || r > 63) throw new Error("prefix must be in range 0x3c .. 0x3f");\n }\n if (e.intermediates) {\n if (e.intermediates.length > 2) throw new Error("only two bytes as intermediates are supported");\n for (let o2 = 0; o2 < e.intermediates.length; ++o2) {\n let a2 = e.intermediates.charCodeAt(o2);\n if (32 > a2 || a2 > 47) throw new Error("intermediate must be in range 0x20 .. 0x2f");\n r <<= 8, r |= a2;\n }\n }\n if (e.final.length !== 1) throw new Error("final must be a single byte");\n let s4 = e.final.charCodeAt(0);\n if (i5[0] > s4 || s4 > i5[1]) throw new Error(`final must be in range ${i5[0]} .. ${i5[1]}`);\n return r <<= 8, r |= s4, r;\n }\n identToString(e) {\n let i5 = [];\n for (; e; ) i5.push(String.fromCharCode(e & 255)), e >>= 8;\n return i5.reverse().join("");\n }\n setPrintHandler(e) {\n this._printHandler = e;\n }\n clearPrintHandler() {\n this._printHandler = this._printHandlerFb;\n }\n registerEscHandler(e, i5) {\n let r = this._identifier(e, [48, 126]);\n this._escHandlers[r] ??= [];\n let s4 = this._escHandlers[r];\n return s4.push(i5), { dispose: () => {\n let o2 = s4.indexOf(i5);\n o2 !== -1 && s4.splice(o2, 1);\n } };\n }\n clearEscHandler(e) {\n this._escHandlers[this._identifier(e, [48, 126])] && delete this._escHandlers[this._identifier(e, [48, 126])];\n }\n setEscHandlerFallback(e) {\n this._escHandlerFb = e;\n }\n setExecuteHandler(e, i5) {\n let r = e.charCodeAt(0);\n this._executeHandlers[r] = i5, r < 24 && (this._executeHandlersArr[r] = i5);\n }\n clearExecuteHandler(e) {\n let i5 = e.charCodeAt(0);\n this._executeHandlers[i5] && delete this._executeHandlers[i5], i5 < 24 && (this._executeHandlersArr[i5] = void 0);\n }\n setExecuteHandlerFallback(e) {\n this._executeHandlerFb = e;\n }\n registerCsiHandler(e, i5) {\n let r = this._identifier(e);\n this._csiHandlers[r] ??= [];\n let s4 = this._csiHandlers[r];\n return s4.push(i5), { dispose: () => {\n let o2 = s4.indexOf(i5);\n o2 !== -1 && s4.splice(o2, 1);\n } };\n }\n clearCsiHandler(e) {\n this._csiHandlers[this._identifier(e)] && delete this._csiHandlers[this._identifier(e)];\n }\n setCsiHandlerFallback(e) {\n this._csiHandlerFb = e;\n }\n registerDcsHandler(e, i5) {\n return this._dcsParser.registerHandler(this._identifier(e), i5);\n }\n clearDcsHandler(e) {\n this._dcsParser.clearHandler(this._identifier(e));\n }\n setDcsHandlerFallback(e) {\n this._dcsParser.setHandlerFallback(e);\n }\n registerOscHandler(e, i5) {\n return this._oscParser.registerHandler(e, i5);\n }\n clearOscHandler(e) {\n this._oscParser.clearHandler(e);\n }\n setOscHandlerFallback(e) {\n this._oscParser.setHandlerFallback(e);\n }\n registerApcHandler(e, i5) {\n return e.prefix = void 0, this._apcParser.registerHandler(this._identifier(e, [48, 126]), i5);\n }\n clearApcHandler(e) {\n e.prefix = void 0, this._apcParser.clearHandler(this._identifier(e, [48, 126]));\n }\n setApcHandlerFallback(e) {\n this._apcParser.setHandlerFallback(e);\n }\n setErrorHandler(e) {\n this._errorHandler = e;\n }\n clearErrorHandler() {\n this._errorHandler = this._errorHandlerFb;\n }\n reset() {\n this.currentState = this.initialState, this._oscParser.reset(), this._dcsParser.reset(), this._apcParser.reset(), this._params.resetZdm(), this._collect = 0, this.precedingJoinState = 0, this._parseStack.state !== 0 && (this._parseStack.state = 2, this._parseStack.handlers = []);\n }\n _preserveStack(e, i5, r, s4, o2) {\n this._parseStack.state = e, this._parseStack.handlers = i5, this._parseStack.handlerPos = r, this._parseStack.transition = s4, this._parseStack.chunkPos = o2;\n }\n parse(e, i5, r) {\n let s4 = 0, o2 = 0, a2 = 0, l4;\n if (this._parseStack.state) if (this._parseStack.state === 2) this._parseStack.state = 0, a2 = this._parseStack.chunkPos + 1;\n else {\n if (r === void 0 || this._parseStack.state === 1) throw this._parseStack.state = 1, new Error("improper continuation due to previous async handler, giving up parsing");\n let h3 = this._parseStack.handlers, d3 = this._parseStack.handlerPos - 1;\n switch (this._parseStack.state) {\n case 3:\n if (r === false && d3 > -1) {\n for (; d3 >= 0 && (l4 = h3[d3](this._params), l4 !== true); d3--) if (l4 instanceof Promise) return this._parseStack.handlerPos = d3, l4;\n }\n this._parseStack.handlers = [];\n break;\n case 4:\n if (r === false && d3 > -1) {\n for (; d3 >= 0 && (l4 = h3[d3](), l4 !== true); d3--) if (l4 instanceof Promise) return this._parseStack.handlerPos = d3, l4;\n }\n this._parseStack.handlers = [];\n break;\n case 6:\n if (s4 = e[this._parseStack.chunkPos], l4 = this._dcsParser.unhook(s4 !== 24 && s4 !== 26, r), l4) return l4;\n s4 === 27 && (this._parseStack.transition |= 1), this._params.resetZdm(), this._collect = 0;\n break;\n case 5:\n if (s4 = e[this._parseStack.chunkPos], l4 = this._oscParser.end(s4 !== 24 && s4 !== 26, r), l4) return l4;\n s4 === 27 && (this._parseStack.transition |= 1), this._params.resetZdm(), this._collect = 0;\n break;\n case 7:\n if (s4 = e[this._parseStack.chunkPos], l4 = this._apcParser.end(s4 !== 24 && s4 !== 26, r), l4) return l4;\n s4 === 27 && (this._parseStack.transition |= 1), this._params.resetZdm(), this._collect = 0;\n break;\n }\n this._parseStack.state = 0, a2 = this._parseStack.chunkPos + 1, this.precedingJoinState = 0, this.currentState = this._parseStack.transition & 255;\n }\n for (let h3 = a2; h3 < i5; ++h3) {\n if (s4 = e[h3], s4 < 24 && this.currentState <= 6) {\n (this._executeHandlersArr[s4] ?? this._executeHandlerFb)(s4), this.precedingJoinState = 0;\n continue;\n }\n if (s4 === 27 && this.currentState < 8 && h3 + 2 < i5 && e[h3 + 1] === 91) {\n this._params.resetZdm(), this._collect = 0;\n let d3 = h3 + 2, c2 = e[d3];\n c2 >= 60 && c2 <= 63 && (this._collect = c2, d3++);\n let u3 = false;\n for (; d3 < i5; d3++) if (c2 = e[d3], c2 >= 48 && c2 <= 57) this._params.addDigit(c2 - 48);\n else if (c2 === 59) this._params.addParam(0);\n else if (c2 === 58) this._params.addSubParam(-1);\n else if (c2 >= 64 && c2 <= 126) {\n let _5 = this._csiHandlers[this._collect << 8 | c2], p3 = _5 ? _5.length - 1 : -1;\n for (; p3 >= 0 && (l4 = _5[p3](this._params), l4 !== true); p3--) if (l4 instanceof Promise) return o2 = 1792, this._preserveStack(3, _5, p3, o2, d3), l4;\n p3 < 0 && this._csiHandlerFb(this._collect << 8 | c2, this._params), this.precedingJoinState = 0, h3 = d3, this.currentState = 0, u3 = true;\n break;\n } else break;\n u3 || (h3 = d3 - 1, this.currentState = 4);\n continue;\n }\n switch (o2 = this._transitions.table[this.currentState << 8 | (s4 < se2 ? s4 : se2)], o2 >> 8) {\n case 2:\n let d3 = h3, c2 = i5 - 4;\n for (; d3 < c2 && e[++d3] >= 32 && (e[d3] <= 126 || e[d3] >= se2) && e[++d3] >= 32 && (e[d3] <= 126 || e[d3] >= se2) && e[++d3] >= 32 && (e[d3] <= 126 || e[d3] >= se2) && e[++d3] >= 32 && (e[d3] <= 126 || e[d3] >= se2); ) ;\n if (d3 >= c2) for (; d3 < i5 && e[d3] >= 32 && (e[d3] <= 126 || e[d3] >= se2); ) d3++;\n this._printHandler(e, h3, d3), h3 = d3 - 1;\n break;\n case 3:\n this._executeHandlers[s4] ? this._executeHandlers[s4]() : this._executeHandlerFb(s4), this.precedingJoinState = 0;\n break;\n case 0:\n break;\n case 1:\n if (this._errorHandler({ position: h3, code: s4, currentState: this.currentState, collect: this._collect, params: this._params, abort: false }).abort) return;\n break;\n case 7:\n let _5 = this._csiHandlers[this._collect << 8 | s4], p3 = _5 ? _5.length - 1 : -1;\n for (; p3 >= 0 && (l4 = _5[p3](this._params), l4 !== true); p3--) if (l4 instanceof Promise) return this._preserveStack(3, _5, p3, o2, h3), l4;\n p3 < 0 && this._csiHandlerFb(this._collect << 8 | s4, this._params), this.precedingJoinState = 0;\n break;\n case 8:\n do\n switch (s4) {\n case 59:\n this._params.addParam(0);\n break;\n case 58:\n this._params.addSubParam(-1);\n break;\n default:\n this._params.addDigit(s4 - 48);\n }\n while (++h3 < i5 && (s4 = e[h3]) > 47 && s4 < 60);\n h3--;\n break;\n case 9:\n this._collect <<= 8, this._collect |= s4;\n break;\n case 10:\n let b4 = this._escHandlers[this._collect << 8 | s4], f5 = b4 ? b4.length - 1 : -1;\n for (; f5 >= 0 && (l4 = b4[f5](), l4 !== true); f5--) if (l4 instanceof Promise) return this._preserveStack(4, b4, f5, o2, h3), l4;\n f5 < 0 && this._escHandlerFb(this._collect << 8 | s4), this.precedingJoinState = 0;\n break;\n case 11:\n this._params.resetZdm(), this._collect = 0;\n break;\n case 12:\n this._dcsParser.hook(this._collect << 8 | s4, this._params);\n break;\n case 13:\n for (let S4 = h3 + 1; ; ++S4) if (S4 >= i5 || (s4 = e[S4]) === 24 || s4 === 26 || s4 === 27 || s4 > 127 && s4 < se2) {\n this._dcsParser.put(e, h3, S4), h3 = S4 - 1;\n break;\n }\n break;\n case 14:\n if (l4 = this._dcsParser.unhook(s4 !== 24 && s4 !== 26), l4) return this._preserveStack(6, [], 0, o2, h3), l4;\n s4 === 27 && (o2 |= 1), this._params.resetZdm(), this._collect = 0, this.precedingJoinState = 0;\n break;\n case 4:\n this._oscParser.start();\n break;\n case 5:\n for (let S4 = h3 + 1; ; S4++) if (S4 >= i5 || (s4 = e[S4]) < 32 || s4 > 127 && s4 < se2) {\n this._oscParser.put(e, h3, S4), h3 = S4 - 1;\n break;\n }\n break;\n case 6:\n if (l4 = this._oscParser.end(s4 !== 24 && s4 !== 26), l4) return this._preserveStack(5, [], 0, o2, h3), l4;\n s4 === 27 && (o2 |= 1), this._params.resetZdm(), this._collect = 0, this.precedingJoinState = 0;\n break;\n case 15:\n this._apcParser.start(this._collect << 8 | s4);\n break;\n case 16:\n for (let S4 = h3 + 1; ; ++S4) if (!(S4 < i5 && (e[S4] >= 32 && e[S4] < 127 || e[S4] >= 8 && e[S4] < 14 || e[S4] >= se2))) {\n this._apcParser.put(e, h3, S4), h3 = S4 - 1;\n break;\n }\n break;\n case 17:\n if (l4 = this._apcParser.end(s4 !== 24 && s4 !== 26), l4) return this._preserveStack(7, [], 0, o2, h3), l4;\n s4 === 27 && (o2 |= 1), this._params.resetZdm(), this._collect = 0, this.precedingJoinState = 0;\n break;\n }\n this.currentState = o2 & 255;\n }\n }\n };\n var Uo = /^([\\da-f])\\/([\\da-f])\\/([\\da-f])$|^([\\da-f]{2})\\/([\\da-f]{2})\\/([\\da-f]{2})$|^([\\da-f]{3})\\/([\\da-f]{3})\\/([\\da-f]{3})$|^([\\da-f]{4})\\/([\\da-f]{4})\\/([\\da-f]{4})$/;\n var Ko = /^[\\da-f]+$/;\n function As(n11) {\n if (!n11) return;\n let t = n11.toLowerCase();\n if (t.startsWith("rgb:")) {\n t = t.slice(4);\n let e = Uo.exec(t);\n if (e) {\n let i5 = e[1] ? 15 : e[4] ? 255 : e[7] ? 4095 : 65535;\n return [Math.round(parseInt(e[1] || e[4] || e[7] || e[10], 16) / i5 * 255), Math.round(parseInt(e[2] || e[5] || e[8] || e[11], 16) / i5 * 255), Math.round(parseInt(e[3] || e[6] || e[9] || e[12], 16) / i5 * 255)];\n }\n } else if (t.startsWith("#") && (t = t.slice(1), Ko.exec(t) && [3, 6, 9, 12].includes(t.length))) {\n let e = t.length / 3, i5 = [0, 0, 0];\n for (let r = 0; r < 3; ++r) {\n let s4 = parseInt(t.slice(e * r, e * r + e), 16);\n i5[r] = e === 1 ? s4 << 4 : e === 2 ? s4 : e === 3 ? s4 >> 4 : s4 >> 8;\n }\n return i5;\n }\n }\n function Ls(n11, t) {\n let e = n11.toString(16), i5 = e.length < 2 ? "0" + e : e;\n switch (t) {\n case 4:\n return e[0];\n case 8:\n return i5;\n case 12:\n return (i5 + i5).slice(0, 3);\n default:\n return i5 + i5;\n }\n }\n function Pn(n11, t = 16) {\n let [e, i5, r] = n11;\n return `rgb:${Ls(e, t)}/${Ls(i5, t)}/${Ls(r, t)}`;\n }\n var Mn = "6.1.0-beta.213";\n var Go2 = { "(": 0, ")": 1, "*": 2, "+": 3, "-": 1, ".": 2 };\n var Ue3 = 131072;\n var Bn = 10;\n function On(n11, t) {\n if (n11 > 24) return t.setWinLines || false;\n switch (n11) {\n case 1:\n return !!t.restoreWin;\n case 2:\n return !!t.minimizeWin;\n case 3:\n return !!t.setWinPosition;\n case 4:\n return !!t.setWinSizePixels;\n case 5:\n return !!t.raiseWin;\n case 6:\n return !!t.lowerWin;\n case 7:\n return !!t.refreshWin;\n case 8:\n return !!t.setWinSizeChars;\n case 9:\n return !!t.maximizeWin;\n case 10:\n return !!t.fullscreenWin;\n case 11:\n return !!t.getWinState;\n case 13:\n return !!t.getWinPosition;\n case 14:\n return !!t.getWinSizePixels;\n case 15:\n return !!t.getScreenSizePixels;\n case 16:\n return !!t.getCellSizePixels;\n case 18:\n return !!t.getWinSizeChars;\n case 19:\n return !!t.getScreenSizeChars;\n case 20:\n return !!t.getIconTitle;\n case 21:\n return !!t.getWinTitle;\n case 22:\n return !!t.pushTitle;\n case 23:\n return !!t.popTitle;\n case 24:\n return !!t.setWinLines;\n }\n return false;\n }\n var Nn = 5e3;\n var Fn = 0;\n var gr = class extends g5 {\n constructor(e, i5, r, s4, o2, a2, l4, h3, d3 = new Sr()) {\n super();\n this._bufferService = e;\n this._charsetService = i5;\n this._coreService = r;\n this._logService = s4;\n this._optionsService = o2;\n this._oscLinkService = a2;\n this._mouseStateService = l4;\n this._unicodeService = h3;\n this._parser = d3;\n this._parseBuffer = new Uint32Array(4096);\n this._stringDecoder = new Si();\n this._utf8Decoder = new gi();\n this._windowTitle = "";\n this._iconName = "";\n this._windowTitleStack = [];\n this._iconNameStack = [];\n this._curAttrData = U5.clone();\n this._eraseAttrDataInternal = U5.clone();\n this._onRequestBell = this._register(new v5());\n this.onRequestBell = this._onRequestBell.event;\n this._onRequestRefreshRows = this._register(new v5());\n this.onRequestRefreshRows = this._onRequestRefreshRows.event;\n this._onRequestReset = this._register(new v5());\n this.onRequestReset = this._onRequestReset.event;\n this._onRequestSendFocus = this._register(new v5());\n this.onRequestSendFocus = this._onRequestSendFocus.event;\n this._onRequestSyncScrollBar = this._register(new v5());\n this.onRequestSyncScrollBar = this._onRequestSyncScrollBar.event;\n this._onRequestWindowsOptionsReport = this._register(new v5());\n this.onRequestWindowsOptionsReport = this._onRequestWindowsOptionsReport.event;\n this._onA11yChar = this._register(new v5());\n this.onA11yChar = this._onA11yChar.event;\n this._onA11yTab = this._register(new v5());\n this.onA11yTab = this._onA11yTab.event;\n this._onCursorMove = this._register(new v5());\n this.onCursorMove = this._onCursorMove.event;\n this._onLineFeed = this._register(new v5());\n this.onLineFeed = this._onLineFeed.event;\n this._onScroll = this._register(new v5());\n this.onScroll = this._onScroll.event;\n this._onTitleChange = this._register(new v5());\n this.onTitleChange = this._onTitleChange.event;\n this._onColor = this._register(new v5());\n this.onColor = this._onColor.event;\n this._onRequestColorSchemeQuery = this._register(new v5());\n this.onRequestColorSchemeQuery = this._onRequestColorSchemeQuery.event;\n this._parseStack = { paused: false, cursorStartX: 0, cursorStartY: 0, decodedLength: 0, position: 0 };\n this._specialColors = [256, 257, 258];\n this._register(this._parser), this._dirtyRowTracker = new fi(this._bufferService), this._activeBuffer = this._bufferService.buffer, this._register(this._bufferService.buffers.onBufferActivate((c2) => this._activeBuffer = c2.activeBuffer)), this._parser.setCsiHandlerFallback((c2, u3) => {\n this._logService.debug("Unknown CSI code: ", { identifier: this._parser.identToString(c2), params: u3.toArray() });\n }), this._parser.setEscHandlerFallback((c2) => {\n this._logService.debug("Unknown ESC code: ", { identifier: this._parser.identToString(c2) });\n }), this._parser.setExecuteHandlerFallback((c2) => {\n this._logService.debug("Unknown EXECUTE code: ", { code: c2 });\n }), this._parser.setOscHandlerFallback((c2, u3, _5) => {\n this._logService.debug("Unknown OSC code: ", { identifier: c2, action: u3, data: _5 });\n }), this._parser.setDcsHandlerFallback((c2, u3, _5) => {\n u3 === "HOOK" && (_5 = _5.toArray()), this._logService.debug("Unknown DCS code: ", { identifier: this._parser.identToString(c2), action: u3, payload: _5 });\n }), this._parser.setApcHandlerFallback((c2, u3, _5) => {\n this._logService.debug("Unknown APC code: ", { identifier: this._parser.identToString(c2), action: u3, payload: _5 });\n }), this._parser.setPrintHandler((c2, u3, _5) => this.print(c2, u3, _5)), this._parser.registerCsiHandler({ final: "@" }, (c2) => this.insertChars(c2)), this._parser.registerCsiHandler({ intermediates: " ", final: "@" }, (c2) => this.scrollLeft(c2)), this._parser.registerCsiHandler({ final: "A" }, (c2) => this.cursorUp(c2)), this._parser.registerCsiHandler({ intermediates: " ", final: "A" }, (c2) => this.scrollRight(c2)), this._parser.registerCsiHandler({ final: "B" }, (c2) => this.cursorDown(c2)), this._parser.registerCsiHandler({ final: "C" }, (c2) => this.cursorForward(c2)), this._parser.registerCsiHandler({ final: "D" }, (c2) => this.cursorBackward(c2)), this._parser.registerCsiHandler({ final: "E" }, (c2) => this.cursorNextLine(c2)), this._parser.registerCsiHandler({ final: "F" }, (c2) => this.cursorPrecedingLine(c2)), this._parser.registerCsiHandler({ final: "G" }, (c2) => this.cursorCharAbsolute(c2)), this._parser.registerCsiHandler({ final: "H" }, (c2) => this.cursorPosition(c2)), this._parser.registerCsiHandler({ final: "I" }, (c2) => this.cursorForwardTab(c2)), this._parser.registerCsiHandler({ final: "J" }, (c2) => this.eraseInDisplay(c2, false)), this._parser.registerCsiHandler({ prefix: "?", final: "J" }, (c2) => this.eraseInDisplay(c2, true)), this._parser.registerCsiHandler({ final: "K" }, (c2) => this.eraseInLine(c2, false)), this._parser.registerCsiHandler({ prefix: "?", final: "K" }, (c2) => this.eraseInLine(c2, true)), this._parser.registerCsiHandler({ final: "L" }, (c2) => this.insertLines(c2)), this._parser.registerCsiHandler({ final: "M" }, (c2) => this.deleteLines(c2)), this._parser.registerCsiHandler({ final: "P" }, (c2) => this.deleteChars(c2)), this._parser.registerCsiHandler({ final: "S" }, (c2) => this.scrollUp(c2)), this._parser.registerCsiHandler({ final: "T" }, (c2) => this.scrollDown(c2)), this._parser.registerCsiHandler({ final: "X" }, (c2) => this.eraseChars(c2)), this._parser.registerCsiHandler({ final: "Z" }, (c2) => this.cursorBackwardTab(c2)), this._parser.registerCsiHandler({ final: "^" }, (c2) => this.scrollDown(c2)), this._parser.registerCsiHandler({ final: "`" }, (c2) => this.charPosAbsolute(c2)), this._parser.registerCsiHandler({ final: "a" }, (c2) => this.hPositionRelative(c2)), this._parser.registerCsiHandler({ final: "b" }, (c2) => this.repeatPrecedingCharacter(c2)), this._parser.registerCsiHandler({ final: "c" }, (c2) => this.sendDeviceAttributesPrimary(c2)), this._parser.registerCsiHandler({ prefix: ">", final: "c" }, (c2) => this.sendDeviceAttributesSecondary(c2)), this._parser.registerCsiHandler({ final: "d" }, (c2) => this.linePosAbsolute(c2)), this._parser.registerCsiHandler({ final: "e" }, (c2) => this.vPositionRelative(c2)), this._parser.registerCsiHandler({ final: "f" }, (c2) => this.hVPosition(c2)), this._parser.registerCsiHandler({ final: "g" }, (c2) => this.tabClear(c2)), this._parser.registerCsiHandler({ final: "h" }, (c2) => this.setMode(c2)), this._parser.registerCsiHandler({ prefix: "?", final: "h" }, (c2) => this.setModePrivate(c2)), this._parser.registerCsiHandler({ final: "l" }, (c2) => this.resetMode(c2)), this._parser.registerCsiHandler({ prefix: "?", final: "l" }, (c2) => this.resetModePrivate(c2)), this._parser.registerCsiHandler({ final: "m" }, (c2) => this.charAttributes(c2)), this._parser.registerCsiHandler({ final: "n" }, (c2) => this.deviceStatus(c2)), this._parser.registerCsiHandler({ prefix: "?", final: "n" }, (c2) => this.deviceStatusPrivate(c2)), this._parser.registerCsiHandler({ intermediates: "!", final: "p" }, (c2) => this.softReset(c2)), this._parser.registerCsiHandler({ prefix: ">", final: "q" }, (c2) => this.sendXtVersion(c2)), this._parser.registerCsiHandler({ intermediates: " ", final: "q" }, (c2) => this.setCursorStyle(c2)), this._parser.registerCsiHandler({ final: "r" }, (c2) => this.setScrollRegion(c2)), this._parser.registerCsiHandler({ final: "s" }, (c2) => this.saveCursor(c2)), this._parser.registerCsiHandler({ final: "t" }, (c2) => this.windowOptions(c2)), this._parser.registerCsiHandler({ final: "u" }, (c2) => this.restoreCursor(c2)), this._parser.registerCsiHandler({ intermediates: "\'", final: "}" }, (c2) => this.insertColumns(c2)), this._parser.registerCsiHandler({ intermediates: "\'", final: "~" }, (c2) => this.deleteColumns(c2)), this._parser.registerCsiHandler({ intermediates: \'"\', final: "q" }, (c2) => this.selectProtected(c2)), this._parser.registerCsiHandler({ intermediates: "$", final: "p" }, (c2) => this.requestMode(c2, true)), this._parser.registerCsiHandler({ prefix: "?", intermediates: "$", final: "p" }, (c2) => this.requestMode(c2, false)), this._parser.registerCsiHandler({ prefix: "=", final: "u" }, (c2) => this.kittyKeyboardSet(c2)), this._parser.registerCsiHandler({ prefix: "?", final: "u" }, (c2) => this.kittyKeyboardQuery(c2)), this._parser.registerCsiHandler({ prefix: ">", final: "u" }, (c2) => this.kittyKeyboardPush(c2)), this._parser.registerCsiHandler({ prefix: "<", final: "u" }, (c2) => this.kittyKeyboardPop(c2)), this._parser.setExecuteHandler("\\x07", () => this.bell()), this._parser.setExecuteHandler(`\n`, () => this.lineFeed()), this._parser.setExecuteHandler("\\v", () => this.lineFeed()), this._parser.setExecuteHandler("\\f", () => this.lineFeed()), this._parser.setExecuteHandler("\\r", () => this.carriageReturn()), this._parser.setExecuteHandler("\\b", () => this.backspace()), this._parser.setExecuteHandler("\t", () => this.tab()), this._parser.setExecuteHandler("\u000e", () => this.shiftOut()), this._parser.setExecuteHandler("\u000f", () => this.shiftIn()), this._parser.setExecuteHandler("\\x84", () => this.index()), this._parser.setExecuteHandler("\\x85", () => this.nextLine()), this._parser.setExecuteHandler("\\x88", () => this.tabSet()), this._parser.registerOscHandler(0, new re2((c2) => (this.setTitle(c2), this.setIconName(c2), true))), this._parser.registerOscHandler(1, new re2((c2) => this.setIconName(c2))), this._parser.registerOscHandler(2, new re2((c2) => this.setTitle(c2))), this._parser.registerOscHandler(4, new re2((c2) => this.setOrReportIndexedColor(c2))), this._parser.registerOscHandler(8, new re2((c2) => this.setHyperlink(c2))), this._parser.registerOscHandler(10, new re2((c2) => this.setOrReportFgColor(c2))), this._parser.registerOscHandler(11, new re2((c2) => this.setOrReportBgColor(c2))), this._parser.registerOscHandler(12, new re2((c2) => this.setOrReportCursorColor(c2))), this._parser.registerOscHandler(104, new re2((c2) => this.restoreIndexedColor(c2))), this._parser.registerOscHandler(110, new re2((c2) => this.restoreFgColor(c2))), this._parser.registerOscHandler(111, new re2((c2) => this.restoreBgColor(c2))), this._parser.registerOscHandler(112, new re2((c2) => this.restoreCursorColor(c2))), this._parser.registerEscHandler({ final: "7" }, () => this.saveCursor()), this._parser.registerEscHandler({ final: "8" }, () => this.restoreCursor()), this._parser.registerEscHandler({ final: "D" }, () => this.index()), this._parser.registerEscHandler({ final: "E" }, () => this.nextLine()), this._parser.registerEscHandler({ final: "H" }, () => this.tabSet()), this._parser.registerEscHandler({ final: "M" }, () => this.reverseIndex()), this._parser.registerEscHandler({ final: "=" }, () => this.keypadApplicationMode()), this._parser.registerEscHandler({ final: ">" }, () => this.keypadNumericMode()), this._parser.registerEscHandler({ final: "c" }, () => this.fullReset()), this._parser.registerEscHandler({ final: "n" }, () => this.setgLevel(2)), this._parser.registerEscHandler({ final: "o" }, () => this.setgLevel(3)), this._parser.registerEscHandler({ final: "|" }, () => this.setgLevel(3)), this._parser.registerEscHandler({ final: "}" }, () => this.setgLevel(2)), this._parser.registerEscHandler({ final: "~" }, () => this.setgLevel(1)), this._parser.registerEscHandler({ intermediates: "%", final: "@" }, () => this.selectDefaultCharset()), this._parser.registerEscHandler({ intermediates: "%", final: "G" }, () => this.selectDefaultCharset());\n for (let c2 in V4) this._parser.registerEscHandler({ intermediates: "(", final: c2 }, () => this.selectCharset("(" + c2)), this._parser.registerEscHandler({ intermediates: ")", final: c2 }, () => this.selectCharset(")" + c2)), this._parser.registerEscHandler({ intermediates: "*", final: c2 }, () => this.selectCharset("*" + c2)), this._parser.registerEscHandler({ intermediates: "+", final: c2 }, () => this.selectCharset("+" + c2)), this._parser.registerEscHandler({ intermediates: "-", final: c2 }, () => this.selectCharset("-" + c2)), this._parser.registerEscHandler({ intermediates: ".", final: c2 }, () => this.selectCharset("." + c2)), this._parser.registerEscHandler({ intermediates: "/", final: c2 }, () => this.selectCharset("/" + c2));\n this._parser.registerEscHandler({ intermediates: "#", final: "8" }, () => this.screenAlignmentPattern()), this._parser.setErrorHandler((c2) => (this._logService.error("Parsing error: ", c2), c2)), this._parser.registerDcsHandler({ intermediates: "$", final: "q" }, new di((c2, u3) => this.requestStatusString(c2, u3)));\n }\n getAttrData() {\n return this._curAttrData;\n }\n _preserveStack(e, i5, r, s4) {\n this._parseStack.paused = true, this._parseStack.cursorStartX = e, this._parseStack.cursorStartY = i5, this._parseStack.decodedLength = r, this._parseStack.position = s4;\n }\n _logSlowResolvingAsync(e) {\n if (this._logService.logLevel <= 3) {\n let i5, r = new Promise((s4, o2) => {\n i5 = setTimeout(() => o2("#SLOW_TIMEOUT"), Nn);\n });\n Promise.race([e, r]).then(() => {\n i5 !== void 0 && clearTimeout(i5);\n }, (s4) => {\n if (i5 !== void 0 && clearTimeout(i5), s4 !== "#SLOW_TIMEOUT") throw s4;\n console.warn(`async parser handler taking longer than ${Nn} ms`);\n });\n }\n }\n _getCurrentLinkId() {\n return this._curAttrData.extended.urlId;\n }\n parse(e, i5) {\n let r, s4 = this._activeBuffer.x, o2 = this._activeBuffer.y, a2 = 0, l4 = this._parseStack.paused;\n if (l4) {\n if (r = this._parser.parse(this._parseBuffer, this._parseStack.decodedLength, i5)) return this._logSlowResolvingAsync(r), r;\n s4 = this._parseStack.cursorStartX, o2 = this._parseStack.cursorStartY, this._parseStack.paused = false, e.length > Ue3 && (a2 = this._parseStack.position + Ue3);\n }\n if (this._logService.logLevel <= 1 && this._logService.debug(`parsing data ${typeof e == "string" ? ` "${e}"` : ` "${Array.prototype.map.call(e, (c2) => String.fromCharCode(c2)).join("")}"`}`), this._logService.logLevel === 0 && this._logService.trace("parsing data (codes)", typeof e == "string" ? e.split("").map((c2) => c2.charCodeAt(0)) : e), this._parseBuffer.length < e.length && this._parseBuffer.length < Ue3 && (this._parseBuffer = new Uint32Array(Math.min(e.length, Ue3))), l4 || this._dirtyRowTracker.clearRange(), e.length > Ue3) for (let c2 = a2; c2 < e.length; c2 += Ue3) {\n let u3 = c2 + Ue3 < e.length ? c2 + Ue3 : e.length, _5 = typeof e == "string" ? this._stringDecoder.decode(e.substring(c2, u3), this._parseBuffer) : this._utf8Decoder.decode(e.subarray(c2, u3), this._parseBuffer);\n if (r = this._parser.parse(this._parseBuffer, _5)) return this._preserveStack(s4, o2, _5, c2), this._logSlowResolvingAsync(r), r;\n }\n else if (!l4) {\n let c2 = typeof e == "string" ? this._stringDecoder.decode(e, this._parseBuffer) : this._utf8Decoder.decode(e, this._parseBuffer);\n if (r = this._parser.parse(this._parseBuffer, c2)) return this._preserveStack(s4, o2, c2, 0), this._logSlowResolvingAsync(r), r;\n }\n (this._activeBuffer.x !== s4 || this._activeBuffer.y !== o2) && this._onCursorMove.fire();\n let h3 = this._dirtyRowTracker.end + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp), d3 = this._dirtyRowTracker.start + (this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);\n d3 < this._bufferService.rows && this._onRequestRefreshRows.fire({ start: Math.min(d3, this._bufferService.rows - 1), end: Math.min(h3, this._bufferService.rows - 1) });\n }\n print(e, i5, r) {\n let s4, o2, a2 = this._charsetService.charset, l4 = this._optionsService.rawOptions.screenReaderMode, h3 = this._bufferService.cols, d3 = this._coreService.decPrivateModes.wraparound, c2 = this._coreService.modes.insertMode, u3 = this._curAttrData, _5 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n if (!_5) return;\n this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._activeBuffer.x && r - i5 > 0 && _5.getWidth(this._activeBuffer.x - 1) === 2 && _5.setCellFromCodepoint(this._activeBuffer.x - 1, 0, 1, u3);\n let p3 = this._parser.precedingJoinState;\n for (let b4 = i5; b4 < r; ++b4) {\n if (s4 = e[b4], s4 === 173) continue;\n if (s4 < 127 && a2) {\n let w6 = a2[String.fromCharCode(s4)];\n w6 && (s4 = w6.charCodeAt(0));\n }\n let f5 = this._unicodeService.charProperties(s4, p3);\n o2 = be3.extractWidth(f5);\n let S4 = be3.extractShouldJoin(f5), I4 = S4 ? be3.extractWidth(p3) : 0;\n if (p3 = f5, l4 && this._onA11yChar.fire(ve2(s4)), this._getCurrentLinkId() && this._oscLinkService.addLineToLink(this._getCurrentLinkId(), this._activeBuffer.ybase + this._activeBuffer.y), this._activeBuffer.x + o2 - I4 > h3) {\n if (d3) {\n let w6 = _5, x5 = this._activeBuffer.x - I4;\n if (this._activeBuffer.x = I4, this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData(), true)) : (this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = true), _5 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y), !_5) return;\n for (I4 > 0 && _5 instanceof Re4 && _5.copyCellsFrom(w6, x5, 0, I4, false); x5 < h3; ) w6.setCellFromCodepoint(x5++, 0, 1, u3);\n } else if (this._activeBuffer.x = h3 - 1, o2 === 2) continue;\n }\n if (S4 && this._activeBuffer.x) {\n let w6 = _5.getWidth(this._activeBuffer.x - 1) ? 1 : 2;\n _5.addCodepointToCell(this._activeBuffer.x - w6, s4, o2);\n for (let x5 = o2 - I4; --x5 >= 0; ) _5.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u3);\n continue;\n }\n if (c2 && (_5.insertCells(this._activeBuffer.x, o2 - I4, this._activeBuffer.getNullCell(u3)), _5.getWidth(h3 - 1) === 2 && _5.setCellFromCodepoint(h3 - 1, 0, 1, u3)), _5.setCellFromCodepoint(this._activeBuffer.x++, s4, o2, u3), o2 > 0) for (; --o2; ) _5.setCellFromCodepoint(this._activeBuffer.x++, 0, 0, u3);\n }\n this._parser.precedingJoinState = p3, this._activeBuffer.x < h3 && r - i5 > 0 && _5.getWidth(this._activeBuffer.x) === 0 && !_5.hasContent(this._activeBuffer.x) && _5.setCellFromCodepoint(this._activeBuffer.x, 0, 1, u3), this._dirtyRowTracker.markDirty(this._activeBuffer.y);\n }\n registerCsiHandler(e, i5) {\n return e.final === "t" && !e.prefix && !e.intermediates ? this._parser.registerCsiHandler(e, (r) => On(r.params[0], this._optionsService.rawOptions.windowOptions) ? i5(r) : true) : this._parser.registerCsiHandler(e, i5);\n }\n registerDcsHandler(e, i5) {\n return this._parser.registerDcsHandler(e, new di(i5));\n }\n registerEscHandler(e, i5) {\n return this._parser.registerEscHandler(e, i5);\n }\n registerOscHandler(e, i5) {\n return this._parser.registerOscHandler(e, new re2(i5));\n }\n registerApcHandler(e, i5) {\n return this._parser.registerApcHandler(e, new br(i5));\n }\n bell() {\n return this._onRequestBell.fire(), true;\n }\n lineFeed() {\n return this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._optionsService.rawOptions.convertEol && (this._activeBuffer.x = 0), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows ? this._activeBuffer.y = this._bufferService.rows - 1 : this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = false, this._activeBuffer.x >= this._bufferService.cols && this._activeBuffer.x--, this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._onLineFeed.fire(), true;\n }\n carriageReturn() {\n return this._activeBuffer.x = 0, true;\n }\n backspace() {\n if (!this._coreService.decPrivateModes.reverseWraparound) return this._restrictCursor(), this._activeBuffer.x > 0 && this._activeBuffer.x--, true;\n if (this._restrictCursor(this._bufferService.cols), this._activeBuffer.x > 0) this._activeBuffer.x--;\n else if (this._activeBuffer.x === 0 && this._activeBuffer.y > this._activeBuffer.scrollTop && this._activeBuffer.y <= this._activeBuffer.scrollBottom && this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y)?.isWrapped) {\n this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).isWrapped = false, this._activeBuffer.y--, this._activeBuffer.x = this._bufferService.cols - 1;\n let e = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n e.hasWidth(this._activeBuffer.x) && !e.hasContent(this._activeBuffer.x) && this._activeBuffer.x--;\n }\n return this._restrictCursor(), true;\n }\n tab() {\n if (this._activeBuffer.x >= this._bufferService.cols) return true;\n let e = this._activeBuffer.x;\n return this._activeBuffer.x = this._activeBuffer.nextStop(), this._optionsService.rawOptions.screenReaderMode && this._onA11yTab.fire(this._activeBuffer.x - e), true;\n }\n shiftOut() {\n return this._charsetService.setgLevel(1), true;\n }\n shiftIn() {\n return this._charsetService.setgLevel(0), true;\n }\n _restrictCursor(e = this._bufferService.cols - 1) {\n this._activeBuffer.x = Math.min(e, Math.max(0, this._activeBuffer.x)), this._activeBuffer.y = this._coreService.decPrivateModes.origin ? Math.min(this._activeBuffer.scrollBottom, Math.max(this._activeBuffer.scrollTop, this._activeBuffer.y)) : Math.min(this._bufferService.rows - 1, Math.max(0, this._activeBuffer.y)), this._dirtyRowTracker.markDirty(this._activeBuffer.y);\n }\n _setCursor(e, i5) {\n this._dirtyRowTracker.markDirty(this._activeBuffer.y), this._coreService.decPrivateModes.origin ? (this._activeBuffer.x = e, this._activeBuffer.y = this._activeBuffer.scrollTop + i5) : (this._activeBuffer.x = e, this._activeBuffer.y = i5), this._restrictCursor(), this._dirtyRowTracker.markDirty(this._activeBuffer.y);\n }\n _moveCursor(e, i5) {\n this._restrictCursor(), this._setCursor(this._activeBuffer.x + e, this._activeBuffer.y + i5);\n }\n cursorUp(e) {\n let i5 = this._activeBuffer.y - this._activeBuffer.scrollTop;\n return i5 >= 0 ? this._moveCursor(0, -Math.min(i5, e.params[0] || 1)) : this._moveCursor(0, -(e.params[0] || 1)), true;\n }\n cursorDown(e) {\n let i5 = this._activeBuffer.scrollBottom - this._activeBuffer.y;\n return i5 >= 0 ? this._moveCursor(0, Math.min(i5, e.params[0] || 1)) : this._moveCursor(0, e.params[0] || 1), true;\n }\n cursorForward(e) {\n return this._moveCursor(e.params[0] || 1, 0), true;\n }\n cursorBackward(e) {\n return this._moveCursor(-(e.params[0] || 1), 0), true;\n }\n cursorNextLine(e) {\n return this.cursorDown(e), this._activeBuffer.x = 0, true;\n }\n cursorPrecedingLine(e) {\n return this.cursorUp(e), this._activeBuffer.x = 0, true;\n }\n cursorCharAbsolute(e) {\n return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), true;\n }\n cursorPosition(e) {\n return this._setCursor(e.length >= 2 ? (e.params[1] || 1) - 1 : 0, (e.params[0] || 1) - 1), true;\n }\n charPosAbsolute(e) {\n return this._setCursor((e.params[0] || 1) - 1, this._activeBuffer.y), true;\n }\n hPositionRelative(e) {\n return this._moveCursor(e.params[0] || 1, 0), true;\n }\n linePosAbsolute(e) {\n return this._setCursor(this._activeBuffer.x, (e.params[0] || 1) - 1), true;\n }\n vPositionRelative(e) {\n return this._moveCursor(0, e.params[0] || 1), true;\n }\n hVPosition(e) {\n return this.cursorPosition(e), true;\n }\n tabClear(e) {\n let i5 = e.params[0];\n return i5 === 0 ? delete this._activeBuffer.tabs[this._activeBuffer.x] : i5 === 3 && (this._activeBuffer.tabs = {}), true;\n }\n cursorForwardTab(e) {\n if (this._activeBuffer.x >= this._bufferService.cols) return true;\n let i5 = e.params[0] || 1;\n for (; i5--; ) this._activeBuffer.x = this._activeBuffer.nextStop();\n return true;\n }\n cursorBackwardTab(e) {\n if (this._activeBuffer.x >= this._bufferService.cols) return true;\n let i5 = e.params[0] || 1;\n for (; i5--; ) this._activeBuffer.x = this._activeBuffer.prevStop();\n return true;\n }\n selectProtected(e) {\n let i5 = e.params[0];\n return i5 === 1 && (this._curAttrData.bg |= 536870912), (i5 === 2 || i5 === 0) && (this._curAttrData.bg &= -536870913), true;\n }\n _eraseInBufferLine(e, i5, r, s4 = false, o2 = false) {\n let a2 = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);\n a2 && (a2.replaceCells(i5, r, this._activeBuffer.getNullCell(this._eraseAttrData()), o2), s4 && (a2.isWrapped = false));\n }\n _resetBufferLine(e, i5 = false) {\n let r = this._activeBuffer.lines.get(this._activeBuffer.ybase + e);\n r && (r.fill(this._activeBuffer.getNullCell(this._eraseAttrData()), i5), this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase + e), r.isWrapped = false);\n }\n eraseInDisplay(e, i5 = false) {\n this._restrictCursor(this._bufferService.cols);\n let r;\n switch (e.params[0]) {\n case 0:\n for (r = this._activeBuffer.y, this._dirtyRowTracker.markDirty(r), this._eraseInBufferLine(r++, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0, i5); r < this._bufferService.rows; r++) this._resetBufferLine(r, i5);\n this._dirtyRowTracker.markDirty(r);\n break;\n case 1:\n if (r = this._activeBuffer.y, this._dirtyRowTracker.markDirty(r), this._eraseInBufferLine(r, 0, this._activeBuffer.x + 1, true, i5), this._activeBuffer.x + 1 >= this._bufferService.cols) {\n let o2 = this._activeBuffer.lines.get(r + 1);\n o2 && (o2.isWrapped = false);\n }\n for (; r--; ) this._resetBufferLine(r, i5);\n this._dirtyRowTracker.markDirty(0);\n break;\n case 2:\n if (this._optionsService.rawOptions.scrollOnEraseInDisplay) {\n for (r = this._bufferService.rows, this._dirtyRowTracker.markRangeDirty(0, r - 1); r-- && !this._activeBuffer.lines.get(this._activeBuffer.ybase + r)?.getTrimmedLength(); ) ;\n for (; r >= 0; r--) this._bufferService.scroll(this._eraseAttrData());\n } else {\n for (r = this._bufferService.rows, this._dirtyRowTracker.markDirty(r - 1); r--; ) this._resetBufferLine(r, i5);\n this._dirtyRowTracker.markDirty(0);\n }\n break;\n case 3:\n let s4 = this._activeBuffer.lines.length - this._bufferService.rows;\n s4 > 0 && (this._activeBuffer.lines.trimStart(s4), this._activeBuffer.ybase = Math.max(this._activeBuffer.ybase - s4, 0), this._activeBuffer.ydisp = Math.max(this._activeBuffer.ydisp - s4, 0), this._onScroll.fire(0));\n break;\n }\n return true;\n }\n eraseInLine(e, i5 = false) {\n switch (this._restrictCursor(this._bufferService.cols), e.params[0]) {\n case 0:\n this._eraseInBufferLine(this._activeBuffer.y, this._activeBuffer.x, this._bufferService.cols, this._activeBuffer.x === 0, i5);\n break;\n case 1:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._activeBuffer.x + 1, false, i5);\n break;\n case 2:\n this._eraseInBufferLine(this._activeBuffer.y, 0, this._bufferService.cols, true, i5);\n break;\n }\n return this._dirtyRowTracker.markDirty(this._activeBuffer.y), true;\n }\n insertLines(e) {\n this._restrictCursor();\n let i5 = e.params[0] || 1;\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let r = this._activeBuffer.ybase + this._activeBuffer.y, s4 = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, o2 = this._bufferService.rows - 1 + this._activeBuffer.ybase - s4 + 1;\n for (; i5--; ) this._activeBuffer.lines.splice(o2 - 1, 1), this._activeBuffer.lines.splice(r, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, true;\n }\n deleteLines(e) {\n this._restrictCursor();\n let i5 = e.params[0] || 1;\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let r = this._activeBuffer.ybase + this._activeBuffer.y, s4;\n for (s4 = this._bufferService.rows - 1 - this._activeBuffer.scrollBottom, s4 = this._bufferService.rows - 1 + this._activeBuffer.ybase - s4; i5--; ) this._activeBuffer.lines.splice(r, 1), this._activeBuffer.lines.splice(s4, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y, this._activeBuffer.scrollBottom), this._activeBuffer.x = 0, true;\n }\n insertChars(e) {\n this._restrictCursor();\n let i5 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n return i5 && (i5.insertCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), true;\n }\n deleteChars(e) {\n this._restrictCursor();\n let i5 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n return i5 && (i5.deleteCells(this._activeBuffer.x, e.params[0] || 1, this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), true;\n }\n scrollUp(e) {\n let i5 = e.params[0] || 1;\n for (; i5--; ) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 0, this._activeBuffer.getBlankLine(this._eraseAttrData()));\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n scrollDown(e) {\n let i5 = e.params[0] || 1;\n for (; i5--; ) this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollBottom, 1), this._activeBuffer.lines.splice(this._activeBuffer.ybase + this._activeBuffer.scrollTop, 0, this._activeBuffer.getBlankLine(U5));\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n scrollLeft(e) {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let i5 = e.params[0] || 1;\n for (let r = this._activeBuffer.scrollTop; r <= this._activeBuffer.scrollBottom; ++r) {\n let s4 = this._activeBuffer.lines.get(this._activeBuffer.ybase + r);\n s4.deleteCells(0, i5, this._activeBuffer.getNullCell(this._eraseAttrData())), s4.isWrapped = false;\n }\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n scrollRight(e) {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let i5 = e.params[0] || 1;\n for (let r = this._activeBuffer.scrollTop; r <= this._activeBuffer.scrollBottom; ++r) {\n let s4 = this._activeBuffer.lines.get(this._activeBuffer.ybase + r);\n s4.insertCells(0, i5, this._activeBuffer.getNullCell(this._eraseAttrData())), s4.isWrapped = false;\n }\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n insertColumns(e) {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let i5 = e.params[0] || 1;\n for (let r = this._activeBuffer.scrollTop; r <= this._activeBuffer.scrollBottom; ++r) {\n let s4 = this._activeBuffer.lines.get(this._activeBuffer.ybase + r);\n s4.insertCells(this._activeBuffer.x, i5, this._activeBuffer.getNullCell(this._eraseAttrData())), s4.isWrapped = false;\n }\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n deleteColumns(e) {\n if (this._activeBuffer.y > this._activeBuffer.scrollBottom || this._activeBuffer.y < this._activeBuffer.scrollTop) return true;\n let i5 = e.params[0] || 1;\n for (let r = this._activeBuffer.scrollTop; r <= this._activeBuffer.scrollBottom; ++r) {\n let s4 = this._activeBuffer.lines.get(this._activeBuffer.ybase + r);\n s4.deleteCells(this._activeBuffer.x, i5, this._activeBuffer.getNullCell(this._eraseAttrData())), s4.isWrapped = false;\n }\n return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom), true;\n }\n eraseChars(e) {\n this._restrictCursor();\n let i5 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y);\n return i5 && (i5.replaceCells(this._activeBuffer.x, this._activeBuffer.x + (e.params[0] || 1), this._activeBuffer.getNullCell(this._eraseAttrData())), this._dirtyRowTracker.markDirty(this._activeBuffer.y)), true;\n }\n repeatPrecedingCharacter(e) {\n let i5 = this._parser.precedingJoinState;\n if (!i5) return true;\n let r = e.params[0] || 1, s4 = be3.extractWidth(i5), o2 = this._activeBuffer.x - s4, l4 = this._activeBuffer.lines.get(this._activeBuffer.ybase + this._activeBuffer.y).getString(o2), h3 = new Uint32Array(l4.length * r), d3 = 0;\n for (let u3 = 0; u3 < l4.length; ) {\n let _5 = l4.codePointAt(u3) || 0;\n h3[d3++] = _5, u3 += _5 > 65535 ? 2 : 1;\n }\n let c2 = d3;\n for (let u3 = 1; u3 < r; ++u3) h3.copyWithin(c2, 0, d3), c2 += d3;\n return this.print(h3, 0, c2), true;\n }\n sendDeviceAttributesPrimary(e) {\n return e.params[0] > 0 || (this._is("xterm") || this._is("rxvt-unicode") || this._is("screen") ? this._coreService.triggerDataEvent("\\x1B[?1;2c") : this._is("linux") && this._coreService.triggerDataEvent("\\x1B[?6c")), true;\n }\n sendDeviceAttributesSecondary(e) {\n return e.params[0] > 0 || (this._is("xterm") ? this._coreService.triggerDataEvent("\\x1B[>0;276;0c") : this._is("rxvt-unicode") ? this._coreService.triggerDataEvent("\\x1B[>85;95;0c") : this._is("linux") ? this._coreService.triggerDataEvent(e.params[0] + "c") : this._is("screen") && this._coreService.triggerDataEvent("\\x1B[>83;40003;0c")), true;\n }\n sendXtVersion(e) {\n return e.params[0] > 0 || this._coreService.triggerDataEvent(`\\x1BP>|xterm.js(${Mn})\\x1B\\\\`), true;\n }\n _is(e) {\n return (this._optionsService.rawOptions.termName + "").startsWith(e);\n }\n setMode(e) {\n for (let i5 = 0; i5 < e.length; i5++) switch (e.params[i5]) {\n case 4:\n this._coreService.modes.insertMode = true;\n break;\n case 20:\n this._optionsService.options.convertEol = true;\n break;\n }\n return true;\n }\n setModePrivate(e) {\n for (let i5 = 0; i5 < e.length; i5++) switch (e.params[i5]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = true;\n break;\n case 2:\n this._charsetService.setgCharset(0, Le2), this._charsetService.setgCharset(1, Le2), this._charsetService.setgCharset(2, Le2), this._charsetService.setgCharset(3, Le2);\n break;\n case 3:\n this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(132, this._bufferService.rows), this._onRequestReset.fire());\n break;\n case 6:\n this._coreService.decPrivateModes.origin = true, this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = true;\n break;\n case 12:\n this._optionsService.rawOptions.quirks?.allowSetCursorBlink && (this._optionsService.options.cursorBlink = true);\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = true;\n break;\n case 66:\n this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = true, this._onRequestSyncScrollBar.fire();\n break;\n case 9:\n this._mouseStateService.activeProtocol = "X10";\n break;\n case 1e3:\n this._mouseStateService.activeProtocol = "VT200";\n break;\n case 1002:\n this._mouseStateService.activeProtocol = "DRAG";\n break;\n case 1003:\n this._mouseStateService.activeProtocol = "ANY";\n break;\n case 1004:\n this._coreService.decPrivateModes.sendFocus = true, this._onRequestSendFocus.fire();\n break;\n case 1005:\n this._logService.debug("DECSET 1005 not supported (see #2507)");\n break;\n case 1006:\n this._mouseStateService.activeEncoding = "SGR";\n break;\n case 1015:\n this._logService.debug("DECSET 1015 not supported (see #2507)");\n break;\n case 1016:\n this._mouseStateService.activeEncoding = "SGR_PIXELS";\n break;\n case 25:\n this._coreService.isCursorHidden = false;\n break;\n case 1048:\n this.saveCursor();\n break;\n case 1049:\n this.saveCursor();\n case 47:\n case 1047:\n if (this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) {\n let r = this._coreService.kittyKeyboard;\n r.mainFlags = r.flags, r.flags = r.altFlags;\n }\n this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()), this._coreService.isCursorInitialized = true, this._onRequestRefreshRows.fire(void 0), this._onRequestSyncScrollBar.fire();\n break;\n case 2004:\n this._coreService.decPrivateModes.bracketedPasteMode = true;\n break;\n case 2026:\n this._coreService.decPrivateModes.synchronizedOutput = true;\n break;\n case 2031:\n (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) && (this._coreService.decPrivateModes.colorSchemeUpdates = true);\n break;\n case 9001:\n this._optionsService.rawOptions.vtExtensions?.win32InputMode && (this._coreService.decPrivateModes.win32InputMode = true);\n break;\n }\n return true;\n }\n resetMode(e) {\n for (let i5 = 0; i5 < e.length; i5++) switch (e.params[i5]) {\n case 4:\n this._coreService.modes.insertMode = false;\n break;\n case 20:\n this._optionsService.options.convertEol = false;\n break;\n }\n return true;\n }\n resetModePrivate(e) {\n for (let i5 = 0; i5 < e.length; i5++) switch (e.params[i5]) {\n case 1:\n this._coreService.decPrivateModes.applicationCursorKeys = false;\n break;\n case 3:\n this._optionsService.rawOptions.windowOptions.setWinLines && (this._bufferService.resize(80, this._bufferService.rows), this._onRequestReset.fire());\n break;\n case 6:\n this._coreService.decPrivateModes.origin = false, this._setCursor(0, 0);\n break;\n case 7:\n this._coreService.decPrivateModes.wraparound = false;\n break;\n case 12:\n this._optionsService.rawOptions.quirks?.allowSetCursorBlink && (this._optionsService.options.cursorBlink = false);\n break;\n case 45:\n this._coreService.decPrivateModes.reverseWraparound = false;\n break;\n case 66:\n this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = false, this._onRequestSyncScrollBar.fire();\n break;\n case 9:\n case 1e3:\n case 1002:\n case 1003:\n this._mouseStateService.activeProtocol = "NONE";\n break;\n case 1004:\n this._coreService.decPrivateModes.sendFocus = false;\n break;\n case 1005:\n this._logService.debug("DECRST 1005 not supported (see #2507)");\n break;\n case 1006:\n this._mouseStateService.activeEncoding = "DEFAULT";\n break;\n case 1015:\n this._logService.debug("DECRST 1015 not supported (see #2507)");\n break;\n case 1016:\n this._mouseStateService.activeEncoding = "DEFAULT";\n break;\n case 25:\n this._coreService.isCursorHidden = true;\n break;\n case 1048:\n this.restoreCursor();\n break;\n case 1049:\n case 47:\n case 1047:\n if (this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) {\n let r = this._coreService.kittyKeyboard;\n r.altFlags = r.flags, r.flags = r.mainFlags;\n }\n this._bufferService.buffers.activateNormalBuffer(), e.params[i5] === 1049 && this.restoreCursor(), this._coreService.isCursorInitialized = true, this._onRequestRefreshRows.fire(void 0), this._onRequestSyncScrollBar.fire();\n break;\n case 2004:\n this._coreService.decPrivateModes.bracketedPasteMode = false;\n break;\n case 2026:\n this._coreService.decPrivateModes.synchronizedOutput = false, this._onRequestRefreshRows.fire(void 0);\n break;\n case 2031:\n (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) && (this._coreService.decPrivateModes.colorSchemeUpdates = false);\n break;\n case 9001:\n this._optionsService.rawOptions.vtExtensions?.win32InputMode && (this._coreService.decPrivateModes.win32InputMode = false);\n break;\n }\n return true;\n }\n requestMode(e, i5) {\n let r;\n ((ce4) => (ce4[ce4.NOT_RECOGNIZED = 0] = "NOT_RECOGNIZED", ce4[ce4.SET = 1] = "SET", ce4[ce4.RESET = 2] = "RESET", ce4[ce4.PERMANENTLY_SET = 3] = "PERMANENTLY_SET", ce4[ce4.PERMANENTLY_RESET = 4] = "PERMANENTLY_RESET"))(r ||= {});\n let s4 = this._coreService.decPrivateModes, { activeProtocol: o2, activeEncoding: a2 } = this._mouseStateService, l4 = this._coreService, { buffers: h3, cols: d3 } = this._bufferService, { active: c2, alt: u3 } = h3, _5 = this._optionsService.rawOptions, p3 = (S4, I4) => (l4.triggerDataEvent(`\\x1B[${i5 ? "" : "?"}${S4};${I4}$y`), true), b4 = (S4) => S4 ? 1 : 2, f5 = e.params[0];\n return i5 ? f5 === 2 ? p3(f5, 4) : f5 === 4 ? p3(f5, b4(l4.modes.insertMode)) : f5 === 12 ? p3(f5, 3) : f5 === 20 ? p3(f5, b4(_5.convertEol)) : p3(f5, 0) : f5 === 1 ? p3(f5, b4(s4.applicationCursorKeys)) : f5 === 3 ? p3(f5, _5.windowOptions.setWinLines ? d3 === 80 ? 2 : d3 === 132 ? 1 : 0 : 0) : f5 === 6 ? p3(f5, b4(s4.origin)) : f5 === 7 ? p3(f5, b4(s4.wraparound)) : f5 === 8 ? p3(f5, 3) : f5 === 9 ? p3(f5, b4(o2 === "X10")) : f5 === 12 ? p3(f5, b4(_5.cursorBlink)) : f5 === 25 ? p3(f5, b4(!l4.isCursorHidden)) : f5 === 45 ? p3(f5, b4(s4.reverseWraparound)) : f5 === 66 ? p3(f5, b4(s4.applicationKeypad)) : f5 === 67 ? p3(f5, 4) : f5 === 1e3 ? p3(f5, b4(o2 === "VT200")) : f5 === 1002 ? p3(f5, b4(o2 === "DRAG")) : f5 === 1003 ? p3(f5, b4(o2 === "ANY")) : f5 === 1004 ? p3(f5, b4(s4.sendFocus)) : f5 === 1005 ? p3(f5, 4) : f5 === 1006 ? p3(f5, b4(a2 === "SGR")) : f5 === 1015 ? p3(f5, 4) : f5 === 1016 ? p3(f5, b4(a2 === "SGR_PIXELS")) : f5 === 1048 ? p3(f5, 1) : f5 === 47 || f5 === 1047 || f5 === 1049 ? p3(f5, b4(c2 === u3)) : f5 === 2004 ? p3(f5, b4(s4.bracketedPasteMode)) : f5 === 2026 ? p3(f5, b4(s4.synchronizedOutput)) : f5 === 9001 && this._optionsService.rawOptions.vtExtensions?.win32InputMode ? p3(f5, b4(s4.win32InputMode)) : p3(f5, 0);\n }\n _updateAttrColor(e, i5, r, s4, o2) {\n return i5 === 2 ? (e |= 50331648, e &= -16777216, e |= fe2.fromColorRGB([r, s4, o2])) : i5 === 5 && (e &= -67108864, e |= 33554432 | r & 255), e;\n }\n _extractColor(e, i5, r) {\n let s4 = [0, 0, -1, 0, 0, 0], o2 = 0, a2 = 0;\n do {\n if (s4[a2 + o2] = e.params[i5 + a2], e.hasSubParams(i5 + a2)) {\n let l4 = e.getSubParams(i5 + a2), h3 = 0;\n do\n s4[1] === 5 && (o2 = 1), s4[a2 + h3 + 1 + o2] = l4[h3];\n while (++h3 < l4.length && h3 + a2 + 1 + o2 < s4.length);\n break;\n }\n if (s4[1] === 5 && a2 + o2 >= 2 || s4[1] === 2 && a2 + o2 >= 5) break;\n s4[1] && (o2 = 1);\n } while (++a2 + i5 < e.length && a2 + o2 < s4.length);\n for (let l4 = 2; l4 < s4.length; ++l4) s4[l4] === -1 && (s4[l4] = 0);\n switch (s4[0]) {\n case 38:\n r.fg = this._updateAttrColor(r.fg, s4[1], s4[3], s4[4], s4[5]);\n break;\n case 48:\n r.bg = this._updateAttrColor(r.bg, s4[1], s4[3], s4[4], s4[5]);\n break;\n case 58:\n r.extended = r.extended.clone(), r.extended.underlineColor = this._updateAttrColor(r.extended.underlineColor, s4[1], s4[3], s4[4], s4[5]);\n }\n return a2;\n }\n _processUnderline(e, i5) {\n i5.extended = i5.extended.clone(), (!~e || e > 5) && (e = 1), i5.extended.underlineStyle = e, i5.fg |= 268435456, e === 0 && (i5.fg &= -268435457), i5.updateExtended();\n }\n _processSGR0(e) {\n e.fg = U5.fg, e.bg = U5.bg, e.extended = e.extended.clone(), e.extended.underlineStyle = 0, e.extended.underlineColor &= -67108864, e.updateExtended();\n }\n charAttributes(e) {\n if (e.length === 1 && e.params[0] === 0) return this._processSGR0(this._curAttrData), true;\n let i5 = e.length, r, s4 = this._curAttrData;\n for (let o2 = 0; o2 < i5; o2++) r = e.params[o2], r >= 30 && r <= 37 ? (s4.fg &= -67108864, s4.fg |= 16777216 | r - 30) : r >= 40 && r <= 47 ? (s4.bg &= -67108864, s4.bg |= 16777216 | r - 40) : r >= 90 && r <= 97 ? (s4.fg &= -67108864, s4.fg |= 16777216 | r - 90 | 8) : r >= 100 && r <= 107 ? (s4.bg &= -67108864, s4.bg |= 16777216 | r - 100 | 8) : r === 0 ? this._processSGR0(s4) : r === 1 ? s4.fg |= 134217728 : r === 3 ? s4.bg |= 67108864 : r === 4 ? (s4.fg |= 268435456, this._processUnderline(e.hasSubParams(o2) ? e.getSubParams(o2)[0] : 1, s4)) : r === 5 ? s4.fg |= 536870912 : r === 7 ? s4.fg |= 67108864 : r === 8 ? s4.fg |= 1073741824 : r === 9 ? s4.fg |= 2147483648 : r === 2 ? s4.bg |= 134217728 : r === 21 ? this._processUnderline(2, s4) : r === 22 ? (s4.fg &= -134217729, s4.bg &= -134217729) : r === 23 ? s4.bg &= -67108865 : r === 24 ? (s4.fg &= -268435457, this._processUnderline(0, s4)) : r === 25 ? s4.fg &= -536870913 : r === 27 ? s4.fg &= -67108865 : r === 28 ? s4.fg &= -1073741825 : r === 29 ? s4.fg &= 2147483647 : r === 39 ? (s4.fg &= -67108864, s4.fg |= U5.fg & 16777215) : r === 49 ? (s4.bg &= -67108864, s4.bg |= U5.bg & 16777215) : r === 38 || r === 48 || r === 58 ? o2 += this._extractColor(e, o2, s4) : r === 53 ? s4.bg |= 1073741824 : r === 55 ? s4.bg &= -1073741825 : r === 221 && (this._optionsService.rawOptions.vtExtensions?.kittySgrBoldFaintControl ?? true) ? s4.fg &= -134217729 : r === 222 && (this._optionsService.rawOptions.vtExtensions?.kittySgrBoldFaintControl ?? true) ? s4.bg &= -134217729 : r === 59 ? (s4.extended = s4.extended.clone(), s4.extended.underlineColor = -1, s4.updateExtended()) : this._logService.debug("Unknown SGR attribute: %d.", r);\n return true;\n }\n deviceStatus(e) {\n switch (e.params[0]) {\n case 5:\n this._coreService.triggerDataEvent("\\x1B[0n");\n break;\n case 6:\n let i5 = this._activeBuffer.y + 1, r = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`\\x1B[${i5};${r}R`);\n break;\n }\n return true;\n }\n deviceStatusPrivate(e) {\n switch (e.params[0]) {\n case 6:\n let i5 = this._activeBuffer.y + 1, r = this._activeBuffer.x + 1;\n this._coreService.triggerDataEvent(`\\x1B[?${i5};${r}R`);\n break;\n case 15:\n break;\n case 25:\n break;\n case 26:\n break;\n case 53:\n break;\n case 996:\n (this._optionsService.rawOptions.vtExtensions?.colorSchemeQuery ?? true) && this._onRequestColorSchemeQuery.fire();\n break;\n }\n return true;\n }\n softReset(e) {\n return this._coreService.isCursorHidden = false, this._onRequestSyncScrollBar.fire(), this._activeBuffer.scrollTop = 0, this._activeBuffer.scrollBottom = this._bufferService.rows - 1, this._curAttrData = U5.clone(), this._coreService.reset(), this._charsetService.reset(), this._activeBuffer.savedX = 0, this._activeBuffer.savedY = this._activeBuffer.ybase, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, this._coreService.decPrivateModes.origin = false, true;\n }\n setCursorStyle(e) {\n let i5 = e.length === 0 ? 1 : e.params[0];\n if (i5 === 0) this._coreService.decPrivateModes.cursorStyle = void 0, this._coreService.decPrivateModes.cursorBlink = void 0;\n else {\n switch (i5) {\n case 1:\n case 2:\n this._coreService.decPrivateModes.cursorStyle = "block";\n break;\n case 3:\n case 4:\n this._coreService.decPrivateModes.cursorStyle = "underline";\n break;\n case 5:\n case 6:\n this._coreService.decPrivateModes.cursorStyle = "bar";\n break;\n }\n let r = i5 % 2 === 1;\n this._coreService.decPrivateModes.cursorBlink = r;\n }\n return true;\n }\n setScrollRegion(e) {\n let i5 = e.params[0] || 1, r;\n return (e.length < 2 || (r = e.params[1]) > this._bufferService.rows || r === 0) && (r = this._bufferService.rows), r > i5 && (this._activeBuffer.scrollTop = i5 - 1, this._activeBuffer.scrollBottom = r - 1, this._setCursor(0, 0)), true;\n }\n windowOptions(e) {\n if (!On(e.params[0], this._optionsService.rawOptions.windowOptions)) return true;\n let i5 = e.length > 1 ? e.params[1] : 0;\n switch (e.params[0]) {\n case 14:\n i5 !== 2 && this._onRequestWindowsOptionsReport.fire(0);\n break;\n case 16:\n this._onRequestWindowsOptionsReport.fire(1);\n break;\n case 18:\n this._bufferService && this._coreService.triggerDataEvent(`\\x1B[8;${this._bufferService.rows};${this._bufferService.cols}t`);\n break;\n case 22:\n (i5 === 0 || i5 === 2) && (this._windowTitleStack.push(this._windowTitle), this._windowTitleStack.length > Bn && this._windowTitleStack.shift()), (i5 === 0 || i5 === 1) && (this._iconNameStack.push(this._iconName), this._iconNameStack.length > Bn && this._iconNameStack.shift());\n break;\n case 23:\n (i5 === 0 || i5 === 2) && this._windowTitleStack.length && this.setTitle(this._windowTitleStack.pop()), (i5 === 0 || i5 === 1) && this._iconNameStack.length && this.setIconName(this._iconNameStack.pop());\n break;\n }\n return true;\n }\n saveCursor(e) {\n return this._activeBuffer.savedX = this._activeBuffer.x, this._activeBuffer.savedY = this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.savedCurAttrData.fg = this._curAttrData.fg, this._activeBuffer.savedCurAttrData.bg = this._curAttrData.bg, this._activeBuffer.savedCharset = this._charsetService.charset, this._activeBuffer.savedCharsets = this._charsetService.charsets.slice(), this._activeBuffer.savedGlevel = this._charsetService.glevel, this._activeBuffer.savedOriginMode = this._coreService.decPrivateModes.origin, this._activeBuffer.savedWraparoundMode = this._coreService.decPrivateModes.wraparound, true;\n }\n restoreCursor(e) {\n this._activeBuffer.x = this._activeBuffer.savedX || 0, this._activeBuffer.y = Math.max(this._activeBuffer.savedY - this._activeBuffer.ybase, 0), this._curAttrData.fg = this._activeBuffer.savedCurAttrData.fg, this._curAttrData.bg = this._activeBuffer.savedCurAttrData.bg;\n for (let i5 = 0; i5 < this._activeBuffer.savedCharsets.length; i5++) this._charsetService.setgCharset(i5, this._activeBuffer.savedCharsets[i5]);\n return this._charsetService.setgLevel(this._activeBuffer.savedGlevel), this._coreService.decPrivateModes.origin = this._activeBuffer.savedOriginMode, this._coreService.decPrivateModes.wraparound = this._activeBuffer.savedWraparoundMode, this._restrictCursor(), true;\n }\n setTitle(e) {\n return this._windowTitle = e, this._onTitleChange.fire(e), true;\n }\n setIconName(e) {\n return this._iconName = e, true;\n }\n setOrReportIndexedColor(e) {\n let i5 = [], r = e.split(";");\n for (; r.length > 1; ) {\n let s4 = r.shift(), o2 = r.shift();\n if (/^\\d+$/.exec(s4)) {\n let a2 = parseInt(s4);\n if (Hn(a2)) if (o2 === "?") i5.push({ type: 0, index: a2 });\n else {\n let l4 = As(o2);\n l4 && i5.push({ type: 1, index: a2, color: l4 });\n }\n }\n }\n return i5.length && this._onColor.fire(i5), true;\n }\n setHyperlink(e) {\n let i5 = e.indexOf(";");\n if (i5 === -1) return true;\n let r = e.slice(0, i5).trim(), s4 = e.slice(i5 + 1);\n return s4 ? this._createHyperlink(r, s4) : r.trim() ? false : this._finishHyperlink();\n }\n _createHyperlink(e, i5) {\n this._getCurrentLinkId() && this._finishHyperlink();\n let r = e.split(":"), s4, o2 = r.findIndex((a2) => a2.startsWith("id="));\n return o2 !== -1 && (s4 = r[o2].slice(3) || void 0), this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = this._oscLinkService.registerLink({ id: s4, uri: i5 }), this._curAttrData.updateExtended(), true;\n }\n _finishHyperlink() {\n return this._curAttrData.extended = this._curAttrData.extended.clone(), this._curAttrData.extended.urlId = 0, this._curAttrData.updateExtended(), true;\n }\n _setOrReportSpecialColor(e, i5) {\n let r = e.split(";");\n for (let s4 = 0; s4 < r.length && !(i5 >= this._specialColors.length); ++s4, ++i5) if (r[s4] === "?") this._onColor.fire([{ type: 0, index: this._specialColors[i5] }]);\n else {\n let o2 = As(r[s4]);\n o2 && this._onColor.fire([{ type: 1, index: this._specialColors[i5], color: o2 }]);\n }\n return true;\n }\n setOrReportFgColor(e) {\n return this._setOrReportSpecialColor(e, 0);\n }\n setOrReportBgColor(e) {\n return this._setOrReportSpecialColor(e, 1);\n }\n setOrReportCursorColor(e) {\n return this._setOrReportSpecialColor(e, 2);\n }\n restoreIndexedColor(e) {\n if (!e) return this._onColor.fire([{ type: 2 }]), true;\n let i5 = [], r = e.split(";");\n for (let s4 = 0; s4 < r.length; ++s4) if (/^\\d+$/.exec(r[s4])) {\n let o2 = parseInt(r[s4]);\n Hn(o2) && i5.push({ type: 2, index: o2 });\n }\n return i5.length && this._onColor.fire(i5), true;\n }\n restoreFgColor(e) {\n return this._onColor.fire([{ type: 2, index: 256 }]), true;\n }\n restoreBgColor(e) {\n return this._onColor.fire([{ type: 2, index: 257 }]), true;\n }\n restoreCursorColor(e) {\n return this._onColor.fire([{ type: 2, index: 258 }]), true;\n }\n nextLine() {\n return this._activeBuffer.x = 0, this.index(), true;\n }\n keypadApplicationMode() {\n return this._logService.debug("Serial port requested application keypad."), this._coreService.decPrivateModes.applicationKeypad = true, this._onRequestSyncScrollBar.fire(), true;\n }\n keypadNumericMode() {\n return this._logService.debug("Switching back to normal keypad."), this._coreService.decPrivateModes.applicationKeypad = false, this._onRequestSyncScrollBar.fire(), true;\n }\n selectDefaultCharset() {\n return this._charsetService.setgLevel(0), this._charsetService.setgCharset(0, Le2), true;\n }\n selectCharset(e) {\n return e.length !== 2 ? (this.selectDefaultCharset(), true) : (e[0] === "/" || this._charsetService.setgCharset(Go2[e[0]], V4[e[1]] ?? Le2), true);\n }\n index() {\n return this._restrictCursor(), this._activeBuffer.y++, this._activeBuffer.y === this._activeBuffer.scrollBottom + 1 ? (this._activeBuffer.y--, this._bufferService.scroll(this._eraseAttrData())) : this._activeBuffer.y >= this._bufferService.rows && (this._activeBuffer.y = this._bufferService.rows - 1), this._restrictCursor(), true;\n }\n tabSet() {\n return this._activeBuffer.tabs[this._activeBuffer.x] = true, true;\n }\n reverseIndex() {\n if (this._restrictCursor(), this._activeBuffer.y === this._activeBuffer.scrollTop) {\n let e = this._activeBuffer.scrollBottom - this._activeBuffer.scrollTop;\n this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase + this._activeBuffer.y, e, 1), this._activeBuffer.lines.set(this._activeBuffer.ybase + this._activeBuffer.y, this._activeBuffer.getBlankLine(this._eraseAttrData())), this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop, this._activeBuffer.scrollBottom);\n } else this._activeBuffer.y--, this._restrictCursor();\n return true;\n }\n fullReset() {\n return this._parser.reset(), this._onRequestReset.fire(), true;\n }\n reset() {\n this._curAttrData = U5.clone(), this._eraseAttrDataInternal = U5.clone();\n }\n _eraseAttrData() {\n return this._eraseAttrDataInternal.bg &= -67108864, this._eraseAttrDataInternal.bg |= this._curAttrData.bg & 67108863, this._eraseAttrDataInternal;\n }\n setgLevel(e) {\n return this._charsetService.setgLevel(e), true;\n }\n screenAlignmentPattern() {\n let e = new N2();\n e.content = 1 << 22 | 69, e.fg = this._curAttrData.fg, e.bg = this._curAttrData.bg, this._setCursor(0, 0);\n for (let i5 = 0; i5 < this._bufferService.rows; ++i5) {\n let r = this._activeBuffer.ybase + this._activeBuffer.y + i5, s4 = this._activeBuffer.lines.get(r);\n s4 && (s4.fill(e), s4.isWrapped = false);\n }\n return this._dirtyRowTracker.markAllDirty(), this._setCursor(0, 0), true;\n }\n requestStatusString(e, i5) {\n let r = (l4) => (this._coreService.triggerDataEvent(`\\x1B${l4}\\x1B\\\\`), true), s4 = this._bufferService.buffer, o2 = this._optionsService.rawOptions, a2 = { block: 2, underline: 4, bar: 6 };\n return r(e === \'"q\' ? `P1$r${this._curAttrData.isProtected() ? 1 : 0}"q` : e === \'"p\' ? \'P1$r61;1"p\' : e === "r" ? `P1$r${s4.scrollTop + 1};${s4.scrollBottom + 1}r` : e === "m" ? "P1$r0m" : e === " q" ? `P1$r${a2[o2.cursorStyle] - (o2.cursorBlink ? 1 : 0)} q` : "P0$r");\n }\n markRangeDirty(e, i5) {\n this._dirtyRowTracker.markRangeDirty(e, i5);\n }\n kittyKeyboardSet(e) {\n if (!this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) return true;\n let i5 = e.params[0] || 0, r = e.length > 1 && e.params[1] || 1, s4 = this._coreService.kittyKeyboard;\n switch (r) {\n case 1:\n s4.flags = i5;\n break;\n case 2:\n s4.flags |= i5;\n break;\n case 3:\n s4.flags &= ~i5;\n break;\n }\n return true;\n }\n kittyKeyboardQuery(e) {\n if (!this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) return true;\n let i5 = this._coreService.kittyKeyboard.flags;\n return this._coreService.triggerDataEvent(`\\x1B[?${i5}u`), true;\n }\n kittyKeyboardPush(e) {\n if (!this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) return true;\n let i5 = e.params[0] || 0, r = this._coreService.kittyKeyboard, o2 = this._bufferService.buffer === this._bufferService.buffers.alt ? r.altStack : r.mainStack;\n return o2.length >= 16 && o2.shift(), o2.push(r.flags), r.flags = i5, true;\n }\n kittyKeyboardPop(e) {\n if (!this._optionsService.rawOptions.vtExtensions?.kittyKeyboard) return true;\n let i5 = Math.max(1, e.params[0] || 1), r = this._coreService.kittyKeyboard, o2 = this._bufferService.buffer === this._bufferService.buffers.alt ? r.altStack : r.mainStack;\n for (let a2 = 0; a2 < i5 && o2.length > 0; a2++) r.flags = o2.pop();\n return o2.length === 0 && i5 > 0 && (r.flags = 0), true;\n }\n };\n var fi = class {\n constructor(t) {\n this._bufferService = t;\n this.clearRange();\n }\n clearRange() {\n this.start = this._bufferService.buffer.y, this.end = this._bufferService.buffer.y;\n }\n markDirty(t) {\n t < this.start ? this.start = t : t > this.end && (this.end = t);\n }\n markRangeDirty(t, e) {\n t > e && (Fn = t, t = e, e = Fn), t < this.start && (this.start = t), e > this.end && (this.end = e);\n }\n markAllDirty() {\n this.markRangeDirty(0, this._bufferService.rows - 1);\n }\n };\n fi = E4([m3(0, L5)], fi);\n function Hn(n11) {\n return 0 <= n11 && n11 < 256;\n }\n var $o2 = 5e7;\n var Wn2 = 12;\n var Vo2 = 50;\n var Ir2 = class extends g5 {\n constructor(e) {\n super();\n this._action = e;\n this._writeBuffer = [];\n this._callbacks = [];\n this._pendingData = 0;\n this._bufferOffset = 0;\n this._isSyncWriting = false;\n this._syncCalls = 0;\n this._didUserInput = false;\n this._onWriteParsed = this._register(new v5());\n this.onWriteParsed = this._onWriteParsed.event;\n }\n handleUserInput() {\n this._didUserInput = true;\n }\n flushSync() {\n if (this._isSyncWriting) return;\n this._isSyncWriting = true;\n let e;\n for (; e = this._writeBuffer.shift(); ) {\n this._action(e);\n let i5 = this._callbacks.shift();\n i5 && i5();\n }\n this._pendingData = 0, this._bufferOffset = 2147483647, this._writeBuffer.length = 0, this._callbacks.length = 0, this._isSyncWriting = false;\n }\n writeSync(e, i5) {\n if (i5 !== void 0 && this._syncCalls > i5) {\n this._syncCalls = 0;\n return;\n }\n if (this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(void 0), this._syncCalls++, this._isSyncWriting) return;\n this._isSyncWriting = true;\n let r;\n for (; r = this._writeBuffer.shift(); ) {\n this._action(r);\n let s4 = this._callbacks.shift();\n s4 && s4();\n }\n this._pendingData = 0, this._bufferOffset = 2147483647, this._isSyncWriting = false, this._syncCalls = 0;\n }\n write(e, i5) {\n if (this._pendingData > $o2) throw new Error("write data discarded, use flow control to avoid losing data");\n if (!this._writeBuffer.length) {\n if (this._bufferOffset = 0, this._didUserInput) {\n this._didUserInput = false, this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(i5), this._innerWrite();\n return;\n }\n setTimeout(() => this._innerWrite());\n }\n this._pendingData += e.length, this._writeBuffer.push(e), this._callbacks.push(i5);\n }\n _innerWrite(e = 0, i5 = true) {\n let r = e || performance.now();\n for (; this._writeBuffer.length > this._bufferOffset; ) {\n let s4 = this._writeBuffer[this._bufferOffset], o2 = this._action(s4, i5);\n if (o2) {\n let l4 = (h3) => performance.now() - r >= Wn2 ? setTimeout(() => this._innerWrite(0, h3)) : this._innerWrite(r, h3);\n o2.catch((h3) => (queueMicrotask(() => {\n throw h3;\n }), Promise.resolve(false))).then(l4);\n return;\n }\n let a2 = this._callbacks[this._bufferOffset];\n if (a2 && a2(), this._bufferOffset++, this._pendingData -= s4.length, performance.now() - r >= Wn2) break;\n }\n this._writeBuffer.length > this._bufferOffset ? (this._bufferOffset > Vo2 && (this._writeBuffer = this._writeBuffer.slice(this._bufferOffset), this._callbacks = this._callbacks.slice(this._bufferOffset), this._bufferOffset = 0), setTimeout(() => this._innerWrite())) : (this._writeBuffer.length = 0, this._callbacks.length = 0, this._pendingData = 0, this._bufferOffset = 0), this._onWriteParsed.fire();\n }\n };\n var Bt = class {\n constructor(t) {\n this._bufferService = t;\n this._nextId = 1;\n this._entriesWithId = /* @__PURE__ */ new Map();\n this._dataByLinkId = /* @__PURE__ */ new Map();\n }\n registerLink(t) {\n let e = this._bufferService.buffer;\n if (t.id === void 0) {\n let l4 = e.addMarker(e.ybase + e.y), h3 = { data: t, id: this._nextId++, lines: [l4] };\n return l4.onDispose(() => this._removeMarkerFromLink(h3, l4)), this._dataByLinkId.set(h3.id, h3), h3.id;\n }\n let i5 = t, r = this._getEntryIdKey(i5), s4 = this._entriesWithId.get(r);\n if (s4) return this.addLineToLink(s4.id, e.ybase + e.y), s4.id;\n let o2 = e.addMarker(e.ybase + e.y), a2 = { id: this._nextId++, key: this._getEntryIdKey(i5), data: i5, lines: [o2] };\n return o2.onDispose(() => this._removeMarkerFromLink(a2, o2)), this._entriesWithId.set(a2.key, a2), this._dataByLinkId.set(a2.id, a2), a2.id;\n }\n addLineToLink(t, e) {\n let i5 = this._dataByLinkId.get(t);\n if (i5 && i5.lines.every((r) => r.line !== e)) {\n let r = this._bufferService.buffer.addMarker(e);\n i5.lines.push(r), r.onDispose(() => this._removeMarkerFromLink(i5, r));\n }\n }\n getLinkData(t) {\n return this._dataByLinkId.get(t)?.data;\n }\n _getEntryIdKey(t) {\n return `${t.id};;${t.uri}`;\n }\n _removeMarkerFromLink(t, e) {\n let i5 = t.lines.indexOf(e);\n i5 !== -1 && (t.lines.splice(i5, 1), t.lines.length === 0 && (t.data.id !== void 0 && this._entriesWithId.delete(t.key), this._dataByLinkId.delete(t.id)));\n }\n };\n Bt = E4([m3(0, L5)], Bt);\n var Un = false;\n var Cr2 = class extends g5 {\n constructor(e) {\n super();\n this._windowsWrappingHeuristics = this._register(new me3());\n this._onBinary = this._register(new v5());\n this.onBinary = this._onBinary.event;\n this._onData = this._register(new v5());\n this.onData = this._onData.event;\n this._onLineFeed = this._register(new v5());\n this.onLineFeed = this._onLineFeed.event;\n this._onRender = this._register(new v5());\n this.onRender = this._onRender.event;\n this._onResize = this._register(new v5());\n this.onResize = this._onResize.event;\n this._onWriteParsed = this._register(new v5());\n this.onWriteParsed = this._onWriteParsed.event;\n this._onScroll = this._register(new v5());\n this._instantiationService = new rr(), this.optionsService = this._register(new lr2(e)), this._instantiationService.setService(R3, this.optionsService), this._logService = this._register(this._instantiationService.createInstance(Dt2)), this._instantiationService.setService(pe, this._logService), this._bufferService = this._register(this._instantiationService.createInstance(Lt2)), this._instantiationService.setService(L5, this._bufferService), this.coreService = this._register(this._instantiationService.createInstance(Pt)), this._instantiationService.setService(Y, this.coreService), this.mouseStateService = this._register(this._instantiationService.createInstance(cr)), this._instantiationService.setService(et2, this.mouseStateService), this.unicodeService = this._register(this._instantiationService.createInstance(be3)), this._instantiationService.setService(js, this.unicodeService), this._charsetService = this._instantiationService.createInstance(dr), this._instantiationService.setService(Xs, this._charsetService), this._oscLinkService = this._instantiationService.createInstance(Bt), this._instantiationService.setService(Ii, this._oscLinkService), this._inputHandler = this._register(new gr(this._bufferService, this._charsetService, this.coreService, this._logService, this.optionsService, this._oscLinkService, this.mouseStateService, this.unicodeService)), this._register(X2.forward(this._inputHandler.onLineFeed, this._onLineFeed)), this._register(X2.forward(this._bufferService.onResize, this._onResize)), this._register(X2.forward(this.coreService.onData, this._onData)), this._register(X2.forward(this.coreService.onBinary, this._onBinary)), this._register(this.coreService.onRequestScrollToBottom(() => this.scrollToBottom(true))), this._register(this.coreService.onUserInput(() => this._writeBuffer.handleUserInput())), this._register(this.optionsService.onMultipleOptionChange(["windowsPty"], () => this._handleWindowsPtyOptionChange())), this._register(this._bufferService.onScroll(() => {\n this._onScroll.fire({ position: this._bufferService.buffer.ydisp }), this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop, this._bufferService.buffer.scrollBottom);\n })), this._writeBuffer = this._register(new Ir2((i5, r) => this._inputHandler.parse(i5, r))), this._register(X2.forward(this._writeBuffer.onWriteParsed, this._onWriteParsed));\n }\n get onScroll() {\n return this._onScrollApi || (this._onScrollApi = this._register(new v5()), this._onScroll.event((e) => {\n this._onScrollApi?.fire(e.position);\n })), this._onScrollApi.event;\n }\n get cols() {\n return this._bufferService.cols;\n }\n get rows() {\n return this._bufferService.rows;\n }\n get buffers() {\n return this._bufferService.buffers;\n }\n get options() {\n return this.optionsService.options;\n }\n set options(e) {\n for (let i5 in e) this.optionsService.options[i5] = e[i5];\n }\n write(e, i5) {\n this._writeBuffer.write(e, i5);\n }\n writeSync(e, i5) {\n this._logService.logLevel <= 3 && !Un && (this._logService.warn("writeSync is unreliable and will be removed soon."), Un = true), this._writeBuffer.writeSync(e, i5);\n }\n input(e, i5 = true) {\n this.coreService.triggerDataEvent(e, i5);\n }\n resize(e, i5) {\n isNaN(e) || isNaN(i5) || (e = Math.max(e, Es), i5 = Math.max(i5, ys), this._writeBuffer.flushSync(), this._bufferService.resize(e, i5));\n }\n scroll(e, i5 = false) {\n this._bufferService.scroll(e, i5);\n }\n scrollLines(e, i5) {\n this._bufferService.scrollLines(e, i5);\n }\n scrollPages(e) {\n this.scrollLines(e * (this.rows - 1));\n }\n scrollToTop() {\n this.scrollLines(-this._bufferService.buffer.ydisp);\n }\n scrollToBottom(e) {\n this.scrollLines(this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);\n }\n scrollToLine(e) {\n let i5 = e - this._bufferService.buffer.ydisp;\n i5 !== 0 && this.scrollLines(i5);\n }\n registerEscHandler(e, i5) {\n return this._inputHandler.registerEscHandler(e, i5);\n }\n registerDcsHandler(e, i5) {\n return this._inputHandler.registerDcsHandler(e, i5);\n }\n registerCsiHandler(e, i5) {\n return this._inputHandler.registerCsiHandler(e, i5);\n }\n registerOscHandler(e, i5) {\n return this._inputHandler.registerOscHandler(e, i5);\n }\n registerApcHandler(e, i5) {\n return this._inputHandler.registerApcHandler(e, i5);\n }\n _setup() {\n this._handleWindowsPtyOptionChange();\n }\n reset() {\n this._inputHandler.reset(), this._bufferService.reset(), this._charsetService.reset(), this.coreService.reset(), this.mouseStateService.reset();\n }\n _handleWindowsPtyOptionChange() {\n let e = false, i5 = this.optionsService.rawOptions.windowsPty;\n i5 && i5.buildNumber !== void 0 && i5.buildNumber !== void 0 && (e = i5.backend === "conpty" && i5.buildNumber < 21376), e ? this._enableWindowsWrappingHeuristics() : this._windowsWrappingHeuristics.clear();\n }\n _enableWindowsWrappingHeuristics() {\n if (!this._windowsWrappingHeuristics.value) {\n let e = [];\n e.push(this.onLineFeed(Ds.bind(null, this._bufferService))), e.push(this.registerCsiHandler({ final: "H" }, () => (Ds(this._bufferService), false))), this._windowsWrappingHeuristics.value = y4(() => {\n for (let i5 of e) i5.dispose();\n });\n }\n }\n };\n var K3 = 0;\n var Er = class {\n constructor(t, e) {\n this._getKey = t;\n this._array = [];\n this._insertedValues = [];\n this._isFlushingInserted = false;\n this._deletedIndices = [];\n this._isFlushingDeleted = false;\n this._flushInsertedTask = new Et2(e), this._flushDeletedTask = new Et2(e);\n }\n clear() {\n this._array.length = 0, this._insertedValues.length = 0, this._flushInsertedTask.clear(), this._isFlushingInserted = false, this._deletedIndices.length = 0, this._flushDeletedTask.clear(), this._isFlushingDeleted = false;\n }\n insert(t) {\n this._flushCleanupDeleted(), this._insertedValues.length === 0 && this._flushInsertedTask.enqueue(() => this._flushInserted()), this._insertedValues.push(t);\n }\n _flushInserted() {\n let t = this._insertedValues.sort((s4, o2) => this._getKey(s4) - this._getKey(o2)), e = 0, i5 = 0, r = new Array(this._array.length + this._insertedValues.length);\n for (let s4 = 0; s4 < r.length; s4++) i5 >= this._array.length || this._getKey(t[e]) <= this._getKey(this._array[i5]) ? (r[s4] = t[e], e++) : r[s4] = this._array[i5++];\n this._array = r, this._insertedValues.length = 0;\n }\n _flushCleanupInserted() {\n !this._isFlushingInserted && this._insertedValues.length > 0 && this._flushInsertedTask.flush();\n }\n delete(t) {\n if (this._flushCleanupInserted(), this._array.length === 0) return false;\n let e = this._getKey(t);\n if (e === void 0 || (K3 = this._search(e), K3 === -1) || this._getKey(this._array[K3]) !== e) return false;\n do\n if (this._array[K3] === t) return this._deletedIndices.length === 0 && this._flushDeletedTask.enqueue(() => this._flushDeleted()), this._deletedIndices.push(K3), true;\n while (++K3 < this._array.length && this._getKey(this._array[K3]) === e);\n return false;\n }\n _flushDeleted() {\n this._isFlushingDeleted = true;\n let t = this._deletedIndices.sort((s4, o2) => s4 - o2), e = 0, i5 = new Array(this._array.length - t.length), r = 0;\n for (let s4 = 0; s4 < this._array.length; s4++) t[e] === s4 ? e++ : i5[r++] = this._array[s4];\n this._array = i5, this._deletedIndices.length = 0, this._isFlushingDeleted = false;\n }\n _flushCleanupDeleted() {\n !this._isFlushingDeleted && this._deletedIndices.length > 0 && this._flushDeletedTask.flush();\n }\n *getKeyIterator(t) {\n if (this._flushCleanupInserted(), this._flushCleanupDeleted(), this._array.length !== 0 && (K3 = this._search(t), !(K3 < 0 || K3 >= this._array.length) && this._getKey(this._array[K3]) === t)) do\n yield this._array[K3];\n while (++K3 < this._array.length && this._getKey(this._array[K3]) === t);\n }\n forEachByKey(t, e) {\n if (this._flushCleanupInserted(), this._flushCleanupDeleted(), this._array.length !== 0 && (K3 = this._search(t), !(K3 < 0 || K3 >= this._array.length) && this._getKey(this._array[K3]) === t)) do\n e(this._array[K3]);\n while (++K3 < this._array.length && this._getKey(this._array[K3]) === t);\n }\n values() {\n return this._flushCleanupInserted(), this._flushCleanupDeleted(), [...this._array].values();\n }\n _search(t) {\n let e = 0, i5 = this._array.length - 1;\n for (; i5 >= e; ) {\n let r = e + i5 >> 1, s4 = this._getKey(this._array[r]);\n if (s4 > t) i5 = r - 1;\n else if (s4 < t) e = r + 1;\n else {\n for (; r > 0 && this._getKey(this._array[r - 1]) === t; ) r--;\n return r;\n }\n }\n return e;\n }\n };\n var ks = 0;\n var Kn = 0;\n var Ps = 0;\n var zn = 0;\n var Ot = class extends g5 {\n constructor(e) {\n super();\n this._logService = e;\n this._onDecorationRegistered = this._register(new v5());\n this.onDecorationRegistered = this._onDecorationRegistered.event;\n this._onDecorationRemoved = this._register(new v5());\n this.onDecorationRemoved = this._onDecorationRemoved.event;\n this._decorations = new Er((i5) => i5?.marker.line, this._logService), this._register(y4(() => this.reset()));\n }\n get decorations() {\n return this._decorations.values();\n }\n registerDecoration(e) {\n if (e.marker.isDisposed) return;\n let i5 = new Ms(e);\n if (i5) {\n let r = i5.marker.onDispose(() => i5.dispose()), s4 = i5.onDispose(() => {\n s4.dispose(), i5 && (this._decorations.delete(i5) && this._onDecorationRemoved.fire(i5), r.dispose());\n });\n this._decorations.insert(i5), this._onDecorationRegistered.fire(i5);\n }\n return i5;\n }\n reset() {\n for (let e of this._decorations.values()) e.dispose();\n this._decorations.clear();\n }\n *getDecorationsAtCell(e, i5, r) {\n let s4 = 0, o2 = 0, a2 = 0, l4 = 0;\n for (let h3 of this._decorations.values()) a2 = h3.marker.line, l4 = a2 + (h3.options.height ?? 1), !(i5 < a2 || i5 >= l4) && (s4 = h3.options.x ?? 0, o2 = s4 + (h3.options.width ?? 1), e >= s4 && e < o2 && (!r || (h3.options.layer ?? "bottom") === r) && (yield h3));\n }\n forEachDecorationAtCell(e, i5, r, s4) {\n for (let o2 of this._decorations.values()) Ps = o2.marker.line, zn = Ps + (o2.options.height ?? 1), !(i5 < Ps || i5 >= zn) && (ks = o2.options.x ?? 0, Kn = ks + (o2.options.width ?? 1), e >= ks && e < Kn && (!r || (o2.options.layer ?? "bottom") === r) && s4(o2));\n }\n };\n Ot = E4([m3(0, pe)], Ot);\n var Ms = class extends we2 {\n constructor(e) {\n super();\n this.options = e;\n this.onRenderEmitter = this.add(new v5());\n this.onRender = this.onRenderEmitter.event;\n this._onDispose = this.add(new v5());\n this.onDispose = this._onDispose.event;\n this._cachedBg = null;\n this._cachedFg = null;\n this.marker = e.marker, this.options.overviewRulerOptions && !this.options.overviewRulerOptions.position && (this.options.overviewRulerOptions.position = "full");\n }\n get backgroundColorRGB() {\n return this._cachedBg === null && (this.options.backgroundColor ? this._cachedBg = M3.toColor(this.options.backgroundColor) : this._cachedBg = void 0), this._cachedBg;\n }\n get foregroundColorRGB() {\n return this._cachedFg === null && (this.options.foregroundColor ? this._cachedFg = M3.toColor(this.options.foregroundColor) : this._cachedFg = void 0), this._cachedFg;\n }\n dispose() {\n this._onDispose.fire(), super.dispose();\n }\n };\n var qo2 = 1e3;\n var yr = class {\n constructor(t, e = qo2) {\n this._renderCallback = t;\n this._debounceThresholdMS = e;\n this._lastRefreshMs = 0;\n this._additionalRefreshRequested = false;\n }\n dispose() {\n this._refreshTimeoutID && clearTimeout(this._refreshTimeoutID);\n }\n refresh(t, e, i5) {\n this._rowCount = i5, t = t ?? 0, e = e ?? this._rowCount - 1, this._rowStart = this._rowStart !== void 0 ? Math.min(this._rowStart, t) : t, this._rowEnd = this._rowEnd !== void 0 ? Math.max(this._rowEnd, e) : e;\n let r = performance.now();\n if (r - this._lastRefreshMs >= this._debounceThresholdMS) this._lastRefreshMs = r, this._innerRefresh();\n else if (!this._additionalRefreshRequested) {\n let s4 = r - this._lastRefreshMs, o2 = this._debounceThresholdMS - s4;\n this._additionalRefreshRequested = true, this._refreshTimeoutID = window.setTimeout(() => {\n this._lastRefreshMs = performance.now(), this._innerRefresh(), this._additionalRefreshRequested = false, this._refreshTimeoutID = void 0;\n }, o2);\n }\n }\n _innerRefresh() {\n if (this._rowStart === void 0 || this._rowEnd === void 0 || this._rowCount === void 0) return;\n let t = Math.max(this._rowStart, 0), e = Math.min(this._rowEnd, this._rowCount - 1);\n this._rowStart = void 0, this._rowEnd = void 0, this._renderCallback(t, e);\n }\n };\n var Gn = 20;\n var $n = false;\n var je3 = class extends g5 {\n constructor(e, i5, r, s4) {\n super();\n this._terminal = e;\n this._coreBrowserService = r;\n this._renderService = s4;\n this._rowColumns = /* @__PURE__ */ new WeakMap();\n this._liveRegionLineCount = 0;\n this._charsToConsume = [];\n this._charsToAnnounce = "";\n let o2 = this._coreBrowserService.mainDocument;\n this._accessibilityContainer = o2.createElement("div"), this._accessibilityContainer.classList.add("xterm-accessibility"), this._rowContainer = o2.createElement("div"), this._rowContainer.setAttribute("role", "list"), this._rowContainer.classList.add("xterm-accessibility-tree"), this._rowElements = [];\n for (let a2 = 0; a2 < this._terminal.rows; a2++) this._rowElements[a2] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[a2]);\n if (this._topBoundaryFocusListener = (a2) => this._handleBoundaryFocus(a2, 0), this._bottomBoundaryFocusListener = (a2) => this._handleBoundaryFocus(a2, 1), this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._accessibilityContainer.appendChild(this._rowContainer), this._liveRegion = o2.createElement("div"), this._liveRegion.classList.add("live-region"), this._liveRegion.setAttribute("aria-live", "assertive"), this._accessibilityContainer.appendChild(this._liveRegion), this._liveRegionDebouncer = this._register(new yr(this._renderRows.bind(this))), !this._terminal.element) throw new Error("Cannot enable accessibility before Terminal.open");\n $n ? (this._accessibilityContainer.classList.add("debug"), this._rowContainer.classList.add("debug"), this._debugRootContainer = o2.createElement("div"), this._debugRootContainer.classList.add("xterm"), this._debugRootContainer.appendChild(o2.createTextNode("------start a11y------")), this._debugRootContainer.appendChild(this._accessibilityContainer), this._debugRootContainer.appendChild(o2.createTextNode("------end a11y------")), this._terminal.element.insertAdjacentElement("afterend", this._debugRootContainer)) : this._terminal.element.insertAdjacentElement("afterbegin", this._accessibilityContainer), this._register(this._terminal.onResize((a2) => this._handleResize(a2.rows))), this._register(this._terminal.onRender((a2) => this._refreshRows(a2.start, a2.end))), this._register(this._terminal.onScroll(() => this._refreshRows())), this._register(this._terminal.onA11yChar((a2) => this._handleChar(a2))), this._register(this._terminal.onLineFeed(() => this._handleChar(`\n`))), this._register(this._terminal.onA11yTab((a2) => this._handleTab(a2))), this._register(this._terminal.onKey((a2) => this._handleKey(a2.key))), this._register(this._terminal.onBlur(() => this._clearLiveRegion())), this._register(this._renderService.onDimensionsChange(() => this._refreshRowsDimensions())), this._register(C3(o2, "selectionchange", () => this._handleSelectionChange())), this._register(this._coreBrowserService.onDprChange(() => this._refreshRowsDimensions())), this._refreshRowsDimensions(), this._refreshRows(), this._register(y4(() => {\n $n ? this._debugRootContainer.remove() : this._accessibilityContainer.remove(), this._rowElements.length = 0;\n }));\n }\n _handleTab(e) {\n for (let i5 = 0; i5 < e; i5++) this._handleChar(" ");\n }\n _handleChar(e) {\n this._liveRegionLineCount < Gn + 1 && (this._charsToConsume.length > 0 ? this._charsToConsume.shift() !== e && (this._charsToAnnounce += e) : this._charsToAnnounce += e, e === `\n` && (this._liveRegionLineCount++, this._liveRegionLineCount === Gn + 1 && (this._liveRegion.textContent = Je3.get())));\n }\n _clearLiveRegion() {\n this._liveRegion.textContent = "", this._liveRegionLineCount = 0;\n }\n _handleKey(e) {\n this._clearLiveRegion(), new RegExp("\\\\p{Control}", "u").test(e) || this._charsToConsume.push(e);\n }\n _refreshRows(e, i5) {\n this._liveRegionDebouncer.refresh(e, i5, this._terminal.rows);\n }\n _renderRows(e, i5) {\n let r = this._terminal.buffer, s4 = r.lines.length.toString();\n for (let o2 = e; o2 <= i5; o2++) {\n let a2 = r.lines.get(r.ydisp + o2), l4 = [], h3 = a2?.translateToString(true, void 0, void 0, l4) || "", d3 = (r.ydisp + o2 + 1).toString(), c2 = this._rowElements[o2];\n c2 && (h3.length === 0 ? (c2.textContent = "\\xA0", this._rowColumns.set(c2, [0, 1])) : (c2.textContent = h3, this._rowColumns.set(c2, l4)), c2.setAttribute("aria-posinset", d3), c2.setAttribute("aria-setsize", s4), this._alignRowWidth(c2));\n }\n this._announceCharacters();\n }\n _announceCharacters() {\n this._charsToAnnounce.length !== 0 && (this._liveRegion.textContent === Je3.get() && this._clearLiveRegion(), this._liveRegion.textContent += this._charsToAnnounce, this._charsToAnnounce = "");\n }\n _handleBoundaryFocus(e, i5) {\n let r = e.target, s4 = this._rowElements[i5 === 0 ? 1 : this._rowElements.length - 2], o2 = r.getAttribute("aria-posinset"), a2 = i5 === 0 ? "1" : `${this._terminal.buffer.lines.length}`;\n if (o2 === a2 || e.relatedTarget !== s4) return;\n let l4, h3;\n if (i5 === 0 ? (l4 = r, h3 = this._rowElements.pop(), this._rowContainer.removeChild(h3)) : (l4 = this._rowElements.shift(), h3 = r, this._rowContainer.removeChild(l4)), l4.removeEventListener("focus", this._topBoundaryFocusListener), h3.removeEventListener("focus", this._bottomBoundaryFocusListener), i5 === 0) {\n let d3 = this._createAccessibilityTreeNode();\n this._rowElements.unshift(d3), this._rowContainer.insertAdjacentElement("afterbegin", d3);\n } else {\n let d3 = this._createAccessibilityTreeNode();\n this._rowElements.push(d3), this._rowContainer.appendChild(d3);\n }\n this._rowElements[0].addEventListener("focus", this._topBoundaryFocusListener), this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._terminal.scrollLines(i5 === 0 ? -1 : 1), this._rowElements[i5 === 0 ? 1 : this._rowElements.length - 2].focus(), e.preventDefault(), e.stopImmediatePropagation();\n }\n _handleSelectionChange() {\n if (this._rowElements.length === 0) return;\n let e = this._coreBrowserService.mainDocument.getSelection();\n if (!e) return;\n if (e.isCollapsed) {\n this._rowContainer.contains(e.anchorNode) && this._terminal.clearSelection();\n return;\n }\n if (!e.anchorNode || !e.focusNode) {\n console.error("anchorNode and/or focusNode are null");\n return;\n }\n let i5 = { node: e.anchorNode, offset: e.anchorOffset }, r = { node: e.focusNode, offset: e.focusOffset };\n if ((i5.node.compareDocumentPosition(r.node) & Node.DOCUMENT_POSITION_PRECEDING || i5.node === r.node && i5.offset > r.offset) && ([i5, r] = [r, i5]), i5.node.compareDocumentPosition(this._rowElements[0]) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING) && (i5 = { node: this._rowElements[0].childNodes[0], offset: 0 }), !this._rowContainer.contains(i5.node)) return;\n let s4 = this._rowElements.slice(-1)[0];\n if (r.node.compareDocumentPosition(s4) & (Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_PRECEDING) && (r = { node: s4, offset: s4.textContent?.length ?? 0 }), !this._rowContainer.contains(r.node)) return;\n let o2 = ({ node: h3, offset: d3 }) => {\n let c2 = h3 instanceof Text ? h3.parentNode : h3, u3 = parseInt(c2?.getAttribute("aria-posinset"), 10) - 1;\n if (isNaN(u3)) return console.warn("row is invalid. Race condition?"), null;\n let _5 = this._rowColumns.get(c2);\n if (!_5) return console.warn("columns is null. Race condition?"), null;\n let p3 = d3 < _5.length ? _5[d3] : _5.slice(-1)[0] + 1;\n return p3 >= this._terminal.cols && (++u3, p3 = 0), { row: u3, column: p3 };\n }, a2 = o2(i5), l4 = o2(r);\n if (!(!a2 || !l4)) {\n if (a2.row > l4.row || a2.row === l4.row && a2.column >= l4.column) throw new Error("invalid range");\n this._terminal.select(a2.column, a2.row, (l4.row - a2.row) * this._terminal.cols - a2.column + l4.column);\n }\n }\n _handleResize(e) {\n this._rowElements[this._rowElements.length - 1].removeEventListener("focus", this._bottomBoundaryFocusListener);\n for (let i5 = this._rowContainer.children.length; i5 < this._terminal.rows; i5++) this._rowElements[i5] = this._createAccessibilityTreeNode(), this._rowContainer.appendChild(this._rowElements[i5]);\n for (; this._rowElements.length > e; ) this._rowContainer.removeChild(this._rowElements.pop());\n this._rowElements[this._rowElements.length - 1].addEventListener("focus", this._bottomBoundaryFocusListener), this._refreshRowsDimensions();\n }\n _createAccessibilityTreeNode() {\n let e = this._coreBrowserService.mainDocument.createElement("div");\n return e.setAttribute("role", "listitem"), e.tabIndex = -1, this._refreshRowDimensions(e), e;\n }\n _refreshRowsDimensions() {\n if (this._renderService.dimensions.css.cell.height) {\n Object.assign(this._accessibilityContainer.style, { width: `${this._renderService.dimensions.css.canvas.width}px`, fontSize: `${this._terminal.options.fontSize}px` }), this._rowElements.length !== this._terminal.rows && this._handleResize(this._terminal.rows);\n for (let e = 0; e < this._terminal.rows; e++) this._refreshRowDimensions(this._rowElements[e]), this._alignRowWidth(this._rowElements[e]);\n }\n }\n _refreshRowDimensions(e) {\n e.style.height = `${this._renderService.dimensions.css.cell.height}px`;\n }\n _alignRowWidth(e) {\n e.style.transform = "";\n let i5 = e.getBoundingClientRect().width, r = this._rowColumns.get(e)?.slice(-1)?.[0];\n if (!r) return;\n let s4 = r * this._renderService.dimensions.css.cell.width;\n e.style.transform = `scaleX(${s4 / i5})`;\n }\n };\n je3 = E4([m3(1, tt3), m3(2, z3), m3(3, G4)], je3);\n var Nt3 = class extends g5 {\n constructor(e, i5, r, s4, o2) {\n super();\n this._element = e;\n this._mouseCoordsService = i5;\n this._renderService = r;\n this._bufferService = s4;\n this._linkProviderService = o2;\n this._linkCacheDisposables = [];\n this._isMouseOut = true;\n this._wasResized = false;\n this._activeLine = -1;\n this._onShowLinkUnderline = this._register(new v5());\n this.onShowLinkUnderline = this._onShowLinkUnderline.event;\n this._onHideLinkUnderline = this._register(new v5());\n this.onHideLinkUnderline = this._onHideLinkUnderline.event;\n this._register(y4(() => {\n Oe2(this._linkCacheDisposables), this._linkCacheDisposables.length = 0, this._lastMouseEvent = void 0, this._activeProviderReplies?.clear();\n })), this._register(this._bufferService.onResize(() => {\n this._clearCurrentLink(), this._wasResized = true;\n })), this._register(C3(this._element, "mouseleave", () => {\n this._isMouseOut = true, this._clearCurrentLink();\n })), this._register(C3(this._element, "mousemove", this._handleMouseMove.bind(this))), this._register(C3(this._element, "mousedown", this._handleMouseDown.bind(this))), this._register(C3(this._element, "mouseup", this._handleMouseUp.bind(this)));\n }\n get currentLink() {\n return this._currentLink;\n }\n _handleMouseMove(e) {\n this._lastMouseEvent = e;\n let i5 = this._positionFromMouseEvent(e, this._element);\n if (!i5) return;\n this._isMouseOut = false;\n let r = e.composedPath();\n for (let s4 = 0; s4 < r.length; s4++) {\n let o2 = r[s4];\n if (o2.classList.contains("xterm")) break;\n if (o2.classList.contains("xterm-hover")) return;\n }\n (!this._lastBufferCell || i5.x !== this._lastBufferCell.x || i5.y !== this._lastBufferCell.y) && (this._handleHover(i5), this._lastBufferCell = i5);\n }\n _handleHover(e) {\n if (this._activeLine !== e.y || this._wasResized) {\n this._clearCurrentLink(), this._askForLink(e, false), this._wasResized = false;\n return;\n }\n this._currentLink && this._linkAtPosition(this._currentLink.link, e) || (this._clearCurrentLink(), this._askForLink(e, true));\n }\n _askForLink(e, i5) {\n (!this._activeProviderReplies || !i5) && (this._activeProviderReplies?.forEach((s4) => {\n s4?.forEach((o2) => {\n o2.link.dispose && o2.link.dispose();\n });\n }), this._activeProviderReplies = /* @__PURE__ */ new Map(), this._activeLine = e.y);\n let r = false;\n for (let [s4, o2] of this._linkProviderService.linkProviders.entries()) i5 ? this._activeProviderReplies?.get(s4) && (r = this._checkLinkProviderResult(s4, e, r)) : o2.provideLinks(e.y, (a2) => {\n if (this._isMouseOut) return;\n let l4 = a2?.map((h3) => ({ link: h3 }));\n this._activeProviderReplies?.set(s4, l4), r = this._checkLinkProviderResult(s4, e, r), this._activeProviderReplies?.size === this._linkProviderService.linkProviders.length && this._removeIntersectingLinks(e.y, this._activeProviderReplies);\n });\n }\n _removeIntersectingLinks(e, i5) {\n let r = /* @__PURE__ */ new Set();\n for (let s4 = 0; s4 < i5.size; s4++) {\n let o2 = i5.get(s4);\n if (o2) for (let a2 = 0; a2 < o2.length; a2++) {\n let l4 = o2[a2], h3 = l4.link.range.start.y < e ? 0 : l4.link.range.start.x, d3 = l4.link.range.end.y > e ? this._bufferService.cols : l4.link.range.end.x;\n for (let c2 = h3; c2 <= d3; c2++) {\n if (r.has(c2)) {\n o2.splice(a2--, 1);\n break;\n }\n r.add(c2);\n }\n }\n }\n }\n _checkLinkProviderResult(e, i5, r) {\n if (!this._activeProviderReplies) return r;\n let s4 = this._activeProviderReplies.get(e), o2 = false;\n for (let a2 = 0; a2 < e; a2++) (!this._activeProviderReplies.has(a2) || this._activeProviderReplies.get(a2)) && (o2 = true);\n if (!o2 && s4) {\n let a2 = s4.find((l4) => this._linkAtPosition(l4.link, i5));\n a2 && (r = true, this._handleNewLink(a2));\n }\n if (this._activeProviderReplies.size === this._linkProviderService.linkProviders.length && !r) for (let a2 = 0; a2 < this._activeProviderReplies.size; a2++) {\n let l4 = this._activeProviderReplies.get(a2)?.find((h3) => this._linkAtPosition(h3.link, i5));\n if (l4) {\n r = true, this._handleNewLink(l4);\n break;\n }\n }\n return r;\n }\n _handleMouseDown() {\n this._mouseDownLink = this._currentLink;\n }\n _handleMouseUp(e) {\n if (!this._currentLink) return;\n let i5 = this._positionFromMouseEvent(e, this._element);\n i5 && this._mouseDownLink && Yo2(this._mouseDownLink.link, this._currentLink.link) && this._linkAtPosition(this._currentLink.link, i5) && this._currentLink.link.activate(e, this._currentLink.link.text);\n }\n _clearCurrentLink(e, i5) {\n !this._currentLink || !this._lastMouseEvent || (!e || !i5 || this._currentLink.link.range.start.y >= e && this._currentLink.link.range.end.y <= i5) && (this._linkLeave(this._element, this._currentLink.link, this._lastMouseEvent), this._currentLink = void 0, Oe2(this._linkCacheDisposables), this._linkCacheDisposables.length = 0);\n }\n _handleNewLink(e) {\n if (!this._lastMouseEvent) return;\n let i5 = this._positionFromMouseEvent(this._lastMouseEvent, this._element);\n i5 && this._linkAtPosition(e.link, i5) && (this._currentLink = e, this._currentLink.state = { decorations: { underline: e.link.decorations === void 0 ? true : e.link.decorations.underline, pointerCursor: e.link.decorations === void 0 ? true : e.link.decorations.pointerCursor }, isHovered: true }, this._linkHover(this._element, e.link, this._lastMouseEvent), e.link.decorations = {}, Object.defineProperties(e.link.decorations, { pointerCursor: { get: () => this._currentLink?.state?.decorations.pointerCursor, set: (r) => {\n this._currentLink?.state && this._currentLink.state.decorations.pointerCursor !== r && (this._currentLink.state.decorations.pointerCursor = r, this._currentLink.state.isHovered && this._element.classList.toggle("xterm-cursor-pointer", r));\n } }, underline: { get: () => this._currentLink?.state?.decorations.underline, set: (r) => {\n this._currentLink?.state && this._currentLink?.state?.decorations.underline !== r && (this._currentLink.state.decorations.underline = r, this._currentLink.state.isHovered && this._fireUnderlineEvent(e.link, r));\n } } }), this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((r) => {\n if (!this._currentLink) return;\n let s4 = r.start === 0 ? 0 : r.start + 1 + this._bufferService.buffer.ydisp, o2 = this._bufferService.buffer.ydisp + 1 + r.end;\n if (this._currentLink.link.range.start.y >= s4 && this._currentLink.link.range.end.y <= o2 && (this._clearCurrentLink(s4, o2), this._lastMouseEvent)) {\n let a2 = this._positionFromMouseEvent(this._lastMouseEvent, this._element);\n a2 && this._askForLink(a2, false);\n }\n })));\n }\n _linkHover(e, i5, r) {\n this._currentLink?.state && (this._currentLink.state.isHovered = true, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(i5, true), this._currentLink.state.decorations.pointerCursor && e.classList.add("xterm-cursor-pointer")), i5.hover && i5.hover(r, i5.text);\n }\n _fireUnderlineEvent(e, i5) {\n let r = e.range, s4 = this._bufferService.buffer.ydisp, o2 = this._createLinkUnderlineEvent(r.start.x - 1, r.start.y - s4 - 1, r.end.x, r.end.y - s4 - 1, void 0);\n (i5 ? this._onShowLinkUnderline : this._onHideLinkUnderline).fire(o2);\n }\n _linkLeave(e, i5, r) {\n this._currentLink?.state && (this._currentLink.state.isHovered = false, this._currentLink.state.decorations.underline && this._fireUnderlineEvent(i5, false), this._currentLink.state.decorations.pointerCursor && e.classList.remove("xterm-cursor-pointer")), i5.leave && i5.leave(r, i5.text);\n }\n _linkAtPosition(e, i5) {\n let r = e.range.start.y * this._bufferService.cols + e.range.start.x, s4 = e.range.end.y * this._bufferService.cols + e.range.end.x, o2 = i5.y * this._bufferService.cols + i5.x;\n return r <= o2 && o2 <= s4;\n }\n _positionFromMouseEvent(e, i5) {\n let r = this._mouseCoordsService.getCoords(e, i5, this._bufferService.cols, this._bufferService.rows);\n if (r) return { x: r[0], y: r[1] + this._bufferService.buffer.ydisp };\n }\n _createLinkUnderlineEvent(e, i5, r, s4, o2) {\n return { x1: e, y1: i5, x2: r, y2: s4, cols: this._bufferService.cols, fg: o2 };\n }\n };\n Nt3 = E4([m3(1, Be2), m3(2, G4), m3(3, L5), m3(4, yi)], Nt3);\n function Yo2(n11, t) {\n return n11.text === t.text && n11.range.start.x === t.range.start.x && n11.range.start.y === t.range.start.y && n11.range.end.x === t.range.end.x && n11.range.end.y === t.range.end.y;\n }\n var xr = class extends Cr2 {\n constructor(e = {}) {\n super(e);\n this._linkifier = this._register(new me3());\n this.browser = ze3;\n this._keyDownHandled = false;\n this._keyDownSeen = false;\n this._keyPressHandled = false;\n this._unprocessedDeadKey = false;\n this._accessibilityManager = this._register(new me3());\n this._onCursorMove = this._register(new v5());\n this.onCursorMove = this._onCursorMove.event;\n this._onKey = this._register(new v5());\n this.onKey = this._onKey.event;\n this._onSelectionChange = this._register(new v5());\n this.onSelectionChange = this._onSelectionChange.event;\n this._onTitleChange = this._register(new v5());\n this.onTitleChange = this._onTitleChange.event;\n this._onBell = this._register(new v5());\n this.onBell = this._onBell.event;\n this._onFocus = this._register(new v5());\n this._onBlur = this._register(new v5());\n this._onA11yCharEmitter = this._register(new v5());\n this._onA11yTabEmitter = this._register(new v5());\n this._onWillOpen = this._register(new v5());\n this._onDimensionsChange = this._register(new v5());\n this.onDimensionsChange = this._onDimensionsChange.event;\n this._setup(), this._decorationService = this._instantiationService.createInstance(Ot), this._instantiationService.setService(Ie2, this._decorationService), this._keyboardService = this._instantiationService.createInstance(Tt3), this._instantiationService.setService(Js, this._keyboardService), this._linkProviderService = this._instantiationService.createInstance(Yi), this._instantiationService.setService(yi, this._linkProviderService), this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(it4)), this._register(this._inputHandler.onRequestBell(() => this._onBell.fire())), this._register(this._inputHandler.onRequestRefreshRows((i5) => this.refresh(i5?.start ?? 0, i5?.end ?? this.rows - 1))), this._register(this._inputHandler.onRequestSendFocus(() => this._reportFocus())), this._register(this._inputHandler.onRequestReset(() => this.reset())), this._register(this._inputHandler.onRequestWindowsOptionsReport((i5) => this._reportWindowsOptions(i5))), this._register(this._inputHandler.onColor((i5) => this._handleColorEvent(i5))), this._register(X2.forward(this._inputHandler.onCursorMove, this._onCursorMove)), this._register(X2.forward(this._inputHandler.onTitleChange, this._onTitleChange)), this._register(X2.forward(this._inputHandler.onA11yChar, this._onA11yCharEmitter)), this._register(X2.forward(this._inputHandler.onA11yTab, this._onA11yTabEmitter)), this._register(this._bufferService.onResize((i5) => this._afterResize(i5.cols, i5.rows))), this._register(y4(() => {\n this._customKeyEventHandler = void 0, this.element?.parentNode?.removeChild(this.element);\n }));\n }\n get linkifier() {\n return this._linkifier.value;\n }\n get onFocus() {\n return this._onFocus.event;\n }\n get onBlur() {\n return this._onBlur.event;\n }\n get onA11yChar() {\n return this._onA11yCharEmitter.event;\n }\n get onA11yTab() {\n return this._onA11yTabEmitter.event;\n }\n get onWillOpen() {\n return this._onWillOpen.event;\n }\n get dimensions() {\n if (!this._renderService) return;\n let e = this._renderService.dimensions;\n return { css: { canvas: { ...e.css.canvas }, cell: { ...e.css.cell } }, device: { canvas: { ...e.device.canvas }, cell: { ...e.device.cell }, char: { ...e.device.char } } };\n }\n _handleColorEvent(e) {\n if (this._themeService) for (let i5 of e) {\n let r, s4 = "";\n switch (i5.index) {\n case 256:\n r = "foreground", s4 = "10";\n break;\n case 257:\n r = "background", s4 = "11";\n break;\n case 258:\n r = "cursor", s4 = "12";\n break;\n default:\n r = "ansi", s4 = "4;" + i5.index;\n }\n switch (i5.type) {\n case 0:\n let o2 = k4.toColorRGB(r === "ansi" ? this._themeService.colors.ansi[i5.index] : this._themeService.colors[r]);\n this.coreService.triggerDataEvent(`\\x1B]${s4};${Pn(o2)}\\x1B\\\\`);\n break;\n case 1:\n if (r === "ansi") this._themeService.modifyColors((a2) => a2.ansi[i5.index] = B4.toColor(...i5.color));\n else {\n let a2 = r;\n this._themeService.modifyColors((l4) => l4[a2] = B4.toColor(...i5.color));\n }\n break;\n case 2:\n this._themeService.restoreColor(i5.index);\n break;\n }\n }\n }\n _reportColorScheme() {\n if (!this._themeService) return;\n let e = j4.relativeLuminance(this._themeService.colors.background.rgba >> 8), i5 = j4.relativeLuminance(this._themeService.colors.foreground.rgba >> 8), r = e < i5 ? 1 : 2;\n this.coreService.triggerDataEvent(`\\x1B[?997;${r}n`);\n }\n _setup() {\n super._setup(), this._customKeyEventHandler = void 0;\n }\n get buffer() {\n return this.buffers.active;\n }\n focus() {\n this.textarea && this.textarea.focus({ preventScroll: true });\n }\n _handleScreenReaderModeOptionChange(e) {\n e ? !this._accessibilityManager.value && this._renderService && (this._accessibilityManager.value = this._instantiationService.createInstance(je3, this)) : this._accessibilityManager.clear();\n }\n _handleTextAreaFocus(e) {\n this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent("\\x1B[I"), this.element.classList.add("focus"), this._showCursor(), this._onFocus.fire();\n }\n blur() {\n return this.textarea?.blur();\n }\n _handleTextAreaBlur() {\n this.textarea.value = "", this.refresh(this.buffer.y, this.buffer.y), this.coreService.decPrivateModes.sendFocus && this.coreService.triggerDataEvent("\\x1B[O"), this.element.classList.remove("focus"), this._onBlur.fire();\n }\n _syncTextArea() {\n if (!this.textarea || !this.buffer.isCursorInViewport || this._compositionHelper.isComposing || !this._renderService) return;\n let e = this.buffer.ybase + this.buffer.y, i5 = this.buffer.lines.get(e);\n if (!i5) return;\n let r = Math.min(this.buffer.x, this.cols - 1), s4 = this._renderService.dimensions.css.cell.height, o2 = i5.getWidth(r), a2 = this._renderService.dimensions.css.cell.width * o2, l4 = this.buffer.y * this._renderService.dimensions.css.cell.height, h3 = r * this._renderService.dimensions.css.cell.width;\n this.textarea.style.left = h3 + "px", this.textarea.style.top = l4 + "px", this.textarea.style.width = a2 + "px", this.textarea.style.height = s4 + "px", this.textarea.style.lineHeight = s4 + "px", this.textarea.style.zIndex = "-5";\n }\n _initGlobal() {\n this._bindKeys(), this._register(C3(this.element, "copy", (i5) => {\n this.hasSelection() && Gs(i5, this._selectionService);\n }));\n let e = (i5) => $s(i5, this.textarea, this.coreService, this.optionsService);\n this._register(C3(this.textarea, "paste", e)), this._register(C3(this.element, "paste", e)), at4 ? this._register(C3(this.element, "mousedown", (i5) => {\n i5.button === 2 && Ur2(i5, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord);\n })) : this._register(C3(this.element, "contextmenu", (i5) => {\n this.element.closest(".xterm-native-touch-selection") || Ur2(i5, this.textarea, this.screenElement, this._selectionService, this.options.rightClickSelectsWord);\n })), $t2 && this._register(C3(this.element, "auxclick", (i5) => {\n i5.button === 1 && Wr(i5, this.textarea, this.screenElement);\n }));\n }\n _bindKeys() {\n this._register(C3(this.textarea, "keyup", (e) => this._keyUp(e), true)), this._register(C3(this.textarea, "keydown", (e) => this._keyDown(e), true)), this._register(C3(this.textarea, "keypress", (e) => this._keyPress(e), true)), this._register(C3(this.textarea, "compositionstart", () => {\n this._syncTextArea(), this._compositionHelper.compositionstart(), this._compositionHelper.updateCompositionElements();\n })), this._register(C3(this.textarea, "compositionupdate", (e) => this._compositionHelper.compositionupdate(e))), this._register(C3(this.textarea, "compositionend", () => this._compositionHelper.compositionend())), this._register(C3(this.textarea, "input", (e) => this._inputEvent(e), true)), this._register(this.onRender(() => this._compositionHelper.updateCompositionElements()));\n }\n open(e) {\n if (!e) throw new Error("Terminal requires a parent element.");\n if (e.isConnected || this._logService.debug("Terminal.open was called on an element that was not attached to the DOM"), this.element?.ownerDocument.defaultView && this._coreBrowserService) {\n this.element.ownerDocument.defaultView !== this._coreBrowserService.window && (this._coreBrowserService.window = this.element.ownerDocument.defaultView);\n return;\n }\n this._document = e.ownerDocument, this.options.documentOverride && this.options.documentOverride instanceof Document && (this._document = this.optionsService.rawOptions.documentOverride), this.element = this._document.createElement("div"), this.element.dir = "ltr", this.element.classList.add("terminal"), this.element.classList.add("xterm"), this.element.classList.toggle("allow-transparency", this.options.allowTransparency), this._register(this.optionsService.onSpecificOptionChange("allowTransparency", (l4) => this.element.classList.toggle("allow-transparency", l4))), e.appendChild(this.element);\n let i5 = this._document.createDocumentFragment();\n this._viewportElement = this._document.createElement("div"), this._viewportElement.classList.add("xterm-viewport"), i5.appendChild(this._viewportElement), this.screenElement = this._document.createElement("div"), this.screenElement.classList.add("xterm-screen"), this._register(C3(this.screenElement, "mousemove", (l4) => this.updateCursorStyle(l4))), this._helperContainer = this._document.createElement("div"), this._helperContainer.classList.add("xterm-helpers"), this.screenElement.appendChild(this._helperContainer), i5.appendChild(this.screenElement);\n let r = this.textarea = this._document.createElement("textarea");\n this.textarea.classList.add("xterm-helper-textarea"), this.textarea.setAttribute("aria-label", zt2.get()), Jr || this.textarea.setAttribute("aria-multiline", "false"), this.textarea.setAttribute("autocorrect", "off"), this.textarea.setAttribute("autocapitalize", "off"), this.textarea.setAttribute("spellcheck", "false"), this.textarea.tabIndex = 0, this._register(this.optionsService.onSpecificOptionChange("disableStdin", () => r.readOnly = this.optionsService.rawOptions.disableStdin)), this.textarea.readOnly = this.optionsService.rawOptions.disableStdin, this._coreBrowserService = this._register(this._instantiationService.createInstance(qi, this.textarea, e.ownerDocument.defaultView ?? window, this._document ?? typeof window < "u" ? window.document : null)), this._instantiationService.setService(z3, this._coreBrowserService), this._register(C3(this.textarea, "focus", (l4) => this._handleTextAreaFocus(l4))), this._register(C3(this.textarea, "blur", () => this._handleTextAreaBlur())), this._helperContainer.appendChild(this.textarea), this._charSizeService = this._instantiationService.createInstance(St2, this._document, this._helperContainer), this._instantiationService.setService(Me2, this._charSizeService), this._themeService = this._instantiationService.createInstance(wt), this._instantiationService.setService(_e2, this._themeService), this._register(this._inputHandler.onRequestColorSchemeQuery(() => this._reportColorScheme())), this._register(this._themeService.onChangeColors(() => {\n this.coreService.decPrivateModes.colorSchemeUpdates && this._reportColorScheme();\n })), this._characterJoinerService = this._instantiationService.createInstance(We3), this._instantiationService.setService(Ei, this._characterJoinerService), this._renderService = this._register(this._instantiationService.createInstance(yt3, this.rows, this.screenElement)), this._instantiationService.setService(G4, this._renderService), this._register(this._renderService.onRenderedViewportChange((l4) => this._onRender.fire(l4))), this._register(this._renderService.onDimensionsChange((l4) => this._onDimensionsChange.fire({ css: { canvas: { ...l4.css.canvas }, cell: { ...l4.css.cell } }, device: { canvas: { ...l4.device.canvas }, cell: { ...l4.device.cell }, char: { ...l4.device.char } } }))), this.onResize((l4) => this._renderService.resize(l4.cols, l4.rows)), this._compositionView = this._document.createElement("div"), this._compositionView.classList.add("composition-view"), this._compositionHelper = this._instantiationService.createInstance(_t2, this.textarea, this._compositionView), this._helperContainer.appendChild(this._compositionView), this._mouseCoordsService = this._instantiationService.createInstance(gt2), this._instantiationService.setService(Be2, this._mouseCoordsService);\n let s4 = this._linkifier.value = this._register(this._instantiationService.createInstance(Nt3, this.screenElement));\n this.element.appendChild(i5);\n try {\n this._onWillOpen.fire(this.element);\n } catch {\n }\n this._renderService.hasRenderer() || this._renderService.setRenderer(this._createRenderer()), this._register(this.onCursorMove(() => {\n this._renderService.handleCursorMove(), this._syncTextArea();\n })), this._register(this.onResize(() => {\n this._renderService.handleResize(this.cols, this.rows), this._syncTextArea();\n })), this._register(this.onBlur(() => this._renderService.handleBlur())), this._register(this.onFocus(() => this._renderService.handleFocus())), this._viewport = this._register(this._instantiationService.createInstance(ft3, this.element, this.screenElement)), this._register(this._viewport.onRequestScrollLines((l4) => {\n super.scrollLines(l4, false), this.refresh(0, this.rows - 1);\n })), this._selectionService = this._register(this._instantiationService.createInstance(xt3, this.element, this.screenElement, s4)), this._instantiationService.setService(Ci, this._selectionService), this._mouseService = this._instantiationService.createInstance(Ct2), this._instantiationService.setService(Zs, this._mouseService), this._register(this._selectionService.onRequestScrollLines((l4) => this.scrollLines(l4.amount, l4.suppressScrollEvent))), this._register(this._selectionService.onSelectionChange(() => this._onSelectionChange.fire())), this._register(this._selectionService.onRequestRedraw((l4) => this._renderService.handleSelectionChanged(l4.start, l4.end, l4.columnSelectMode))), this._register(this._selectionService.onLinuxMouseSelection((l4) => {\n this.textarea.value = l4, this.textarea.focus(), this.textarea.select();\n })), this._register(X2.any(this._onScroll.event, this._inputHandler.onScroll)(() => {\n this._selectionService.refresh(), this._viewport?.queueSync();\n })), this._register(this._instantiationService.createInstance(pt3, this.screenElement)), this._register(C3(this.element, "mousedown", (l4) => this._selectionService.handleMouseDown(l4))), this.mouseStateService.areMouseEventsActive ? (this._selectionService.disable(), this.element.classList.add("enable-mouse-events")) : this._selectionService.enable(), this.options.screenReaderMode && (this._accessibilityManager.value = this._instantiationService.createInstance(je3, this)), this._register(this.optionsService.onSpecificOptionChange("screenReaderMode", (l4) => this._handleScreenReaderModeOptionChange(l4)));\n let o2 = this.options.scrollbar?.showScrollbar ?? true, a2 = this.options.scrollbar?.width;\n o2 && a2 && (this._overviewRulerRenderer = this._register(this._instantiationService.createInstance(Ge4, this._viewportElement, this.screenElement))), this.optionsService.onSpecificOptionChange("scrollbar", (l4) => {\n let h3 = (l4?.showScrollbar ?? true) && !!l4?.width;\n !this._overviewRulerRenderer && h3 && this._viewportElement && this.screenElement && (this._overviewRulerRenderer = this._register(this._instantiationService.createInstance(Ge4, this._viewportElement, this.screenElement)));\n }), this._charSizeService.measure(), this.refresh(0, this.rows - 1), this._initGlobal(), this._mouseService.bindMouse({ element: this.element, screenElement: this.screenElement, document: this._document, handleTouchScroll: (l4) => this._viewport?.handleTouchScroll(l4) }, (l4) => this._register(l4), () => this.focus());\n }\n _createRenderer() {\n return this._instantiationService.createInstance(vt2, this, this._document, this.element, this.screenElement, this._viewportElement, this._helperContainer, this.linkifier);\n }\n refresh(e, i5, r = false) {\n this._renderService?.refreshRows(e, i5, r);\n }\n updateCursorStyle(e) {\n this._selectionService?.shouldColumnSelect(e) ? this.element.classList.add("column-select") : this.element.classList.remove("column-select");\n }\n _showCursor() {\n this.coreService.isCursorInitialized || (this.coreService.isCursorInitialized = true, this.refresh(this.buffer.y, this.buffer.y));\n }\n scrollLines(e, i5) {\n this._viewport ? this._viewport.scrollLines(e) : super.scrollLines(e, i5), this.refresh(0, this.rows - 1);\n }\n scrollPages(e) {\n this.scrollLines(e * (this.rows - 1));\n }\n scrollToTop() {\n this.scrollLines(-this._bufferService.buffer.ydisp);\n }\n scrollToBottom(e) {\n e && this._viewport ? this._viewport.scrollToLine(this.buffer.ybase, true) : this.scrollLines(this._bufferService.buffer.ybase - this._bufferService.buffer.ydisp);\n }\n scrollToLine(e) {\n let i5 = e - this._bufferService.buffer.ydisp;\n i5 !== 0 && this.scrollLines(i5);\n }\n paste(e) {\n Hr(e, this.textarea, this.coreService, this.optionsService);\n }\n attachCustomKeyEventHandler(e) {\n this._customKeyEventHandler = e;\n }\n attachCustomWheelEventHandler(e) {\n this.mouseStateService.setCustomWheelEventHandler(e);\n }\n registerLinkProvider(e) {\n return this._linkProviderService.registerLinkProvider(e);\n }\n registerCharacterJoiner(e) {\n if (!this._characterJoinerService) throw new Error("Terminal must be opened first");\n let i5 = this._characterJoinerService.register(e);\n return this.refresh(0, this.rows - 1), i5;\n }\n deregisterCharacterJoiner(e) {\n if (!this._characterJoinerService) throw new Error("Terminal must be opened first");\n this._characterJoinerService.deregister(e) && this.refresh(0, this.rows - 1);\n }\n get markers() {\n return this.buffer.markers;\n }\n registerMarker(e) {\n return this.buffer.addMarker(this.buffer.ybase + this.buffer.y + e);\n }\n registerDecoration(e) {\n return this._decorationService.registerDecoration(e);\n }\n hasSelection() {\n return this._selectionService ? this._selectionService.hasSelection : false;\n }\n select(e, i5, r) {\n this._selectionService.setSelection(e, i5, r);\n }\n getSelection() {\n return this._selectionService ? this._selectionService.selectionText : "";\n }\n getSelectionPosition() {\n if (!(!this._selectionService || !this._selectionService.hasSelection)) return { start: { x: this._selectionService.selectionStart[0], y: this._selectionService.selectionStart[1] }, end: { x: this._selectionService.selectionEnd[0], y: this._selectionService.selectionEnd[1] } };\n }\n clearSelection() {\n this._selectionService?.clearSelection();\n }\n selectAll() {\n this._selectionService?.selectAll();\n }\n selectLines(e, i5) {\n this._selectionService?.selectLines(e, i5);\n }\n _keyDown(e) {\n if (this._keyDownHandled = false, this._keyDownSeen = true, this._customKeyEventHandler && this._customKeyEventHandler(e) === false) return false;\n let i5 = this.browser.isMac && this.options.macOptionIsMeta && e.altKey;\n if (!i5 && !this._compositionHelper.keydown(e)) return this.options.scrollOnUserInput && this.buffer.ybase !== this.buffer.ydisp && this.scrollToBottom(true), false;\n !i5 && (e.key === "Dead" || e.key === "AltGraph") && (this._unprocessedDeadKey = true);\n let r = this._keyboardService.evaluateKeyDown(e);\n if (this.updateCursorStyle(e), r.type === 3 || r.type === 2) {\n let o2 = this.rows - 1;\n return this.scrollLines(r.type === 2 ? -o2 : o2), e.preventDefault(), e.stopPropagation(), false;\n }\n if (r.type === 1 && this.selectAll(), this._isThirdLevelShift(this.browser, e) || (r.cancel && (e.preventDefault(), e.stopPropagation()), !r.key) || !this._keyboardService.useKitty && !this._keyboardService.useWin32InputMode && e.key && !e.ctrlKey && !e.altKey && !e.metaKey && e.key.length === 1 && e.key.charCodeAt(0) >= 65 && e.key.charCodeAt(0) <= 90) return true;\n if (this._unprocessedDeadKey) return this._unprocessedDeadKey = false, true;\n (r.key === "\u0003" || r.key === "\\r") && (this.textarea.value = "");\n let s4 = this._keyboardService.useWin32InputMode && Bs(e);\n if (this._onKey.fire({ key: r.key, domEvent: e }), this._showCursor(), this.coreService.triggerDataEvent(r.key, !s4), !this.optionsService.rawOptions.screenReaderMode || e.altKey || e.ctrlKey) return e.preventDefault(), e.stopPropagation(), false;\n this._keyDownHandled = true;\n }\n _isThirdLevelShift(e, i5) {\n let r = e.isMac && !this.options.macOptionIsMeta && i5.altKey && !i5.ctrlKey && !i5.metaKey || e.isWindows && i5.altKey && i5.ctrlKey && !i5.metaKey || e.isWindows && i5.getModifierState("AltGraph");\n return i5.type === "keypress" ? r : r && (!i5.keyCode || i5.keyCode > 47);\n }\n _keyUp(e) {\n if (this._keyDownSeen = false, this._customKeyEventHandler && this._customKeyEventHandler(e) === false) return;\n Bs(e) || this.focus();\n let i5 = this._keyboardService.evaluateKeyUp(e);\n if (i5?.key) {\n let r = this._keyboardService.useWin32InputMode && Bs(e);\n this.coreService.triggerDataEvent(i5.key, !r);\n }\n this.updateCursorStyle(e), this._keyPressHandled = false;\n }\n _keyPress(e) {\n let i5;\n if (this._keyPressHandled = false, this._keyDownHandled || this._customKeyEventHandler && this._customKeyEventHandler(e) === false) return false;\n if (e.charCode) i5 = e.charCode;\n else if (e.which === null || e.which === void 0) i5 = e.keyCode;\n else if (e.which !== 0 && e.charCode !== 0) i5 = e.which;\n else return false;\n return !i5 || (e.altKey || e.ctrlKey || e.metaKey) && !this._isThirdLevelShift(this.browser, e) ? false : (i5 = String.fromCharCode(i5), this._onKey.fire({ key: i5, domEvent: e }), this._showCursor(), this.coreService.triggerDataEvent(i5, true), this._keyPressHandled = true, this._unprocessedDeadKey = false, true);\n }\n _inputEvent(e) {\n if (this._compositionHelper.input(e)) return true;\n if (e.data && e.inputType === "insertText" && (!e.composed || !this._keyDownSeen) && !this.optionsService.rawOptions.screenReaderMode) {\n if (this._keyPressHandled) return false;\n this._unprocessedDeadKey = false;\n let i5 = e.data;\n return this.coreService.triggerDataEvent(i5, true), true;\n }\n return false;\n }\n resize(e, i5) {\n if (e === this.cols && i5 === this.rows) {\n this._charSizeService && !this._charSizeService.hasValidSize && this._charSizeService.measure();\n return;\n }\n super.resize(e, i5);\n }\n _afterResize(e, i5) {\n this._charSizeService?.measure();\n }\n clear() {\n if (!(this.buffer.ybase === 0 && this.buffer.y === 0)) {\n this.buffer.clearAllMarkers(), this.buffer.lines.set(0, this.buffer.lines.get(this.buffer.ybase + this.buffer.y)), this.buffer.lines.length = 1, this.buffer.ydisp = 0, this.buffer.ybase = 0, this.buffer.y = 0;\n for (let e = 1; e < this.rows; e++) this.buffer.lines.push(this.buffer.getBlankLine(U5));\n this._onScroll.fire({ position: this.buffer.ydisp }), this.refresh(0, this.rows - 1);\n }\n }\n reset() {\n this.options.rows = this.rows, this.options.cols = this.cols;\n let e = this._customKeyEventHandler;\n this._setup(), super.reset(), this._mouseService?.reset(), this._selectionService?.reset(), this._decorationService.reset(), this._customKeyEventHandler = e, this.refresh(0, this.rows - 1, true);\n }\n clearTextureAtlas() {\n this._renderService?.clearTextureAtlas();\n }\n _reportFocus() {\n this.element?.classList.contains("focus") ? this.coreService.triggerDataEvent("\\x1B[I") : this.coreService.triggerDataEvent("\\x1B[O");\n }\n _reportWindowsOptions(e) {\n if (this._renderService) switch (e) {\n case 0:\n let i5 = this._renderService.dimensions.css.canvas.width.toFixed(0), r = this._renderService.dimensions.css.canvas.height.toFixed(0);\n this.coreService.triggerDataEvent(`\\x1B[4;${r};${i5}t`);\n break;\n case 1:\n let s4 = this._renderService.dimensions.css.cell.width.toFixed(0), o2 = this._renderService.dimensions.css.cell.height.toFixed(0);\n this.coreService.triggerDataEvent(`\\x1B[6;${o2};${s4}t`);\n break;\n }\n }\n };\n function Bs(n11) {\n return n11.keyCode === 16 || n11.keyCode === 17 || n11.keyCode === 18 || n11.keyCode === 91 || n11.keyCode === 92 || n11.keyCode === 93 || n11.keyCode === 224 || n11.key === "Meta";\n }\n var wr2 = class {\n constructor() {\n this._addons = [];\n }\n dispose() {\n for (let t = this._addons.length - 1; t >= 0; t--) this._addons[t].instance.dispose();\n }\n loadAddon(t, e) {\n let i5 = { instance: e, dispose: e.dispose, isDisposed: false };\n this._addons.push(i5), e.dispose = () => this._wrappedAddonDispose(i5), e.activate(t);\n }\n _wrappedAddonDispose(t) {\n if (t.isDisposed) return;\n let e = -1;\n for (let i5 = 0; i5 < this._addons.length; i5++) if (this._addons[i5] === t) {\n e = i5;\n break;\n }\n if (e === -1) throw new Error("Could not dispose an addon that has not been loaded");\n t.isDisposed = true, t.dispose.apply(t.instance), this._addons.splice(e, 1);\n }\n };\n var Tr = class {\n constructor(t) {\n this._line = t;\n }\n get isWrapped() {\n return this._line.isWrapped;\n }\n get length() {\n return this._line.length;\n }\n getCell(t, e) {\n if (!(t < 0 || t >= this._line.length)) return e ? (this._line.loadCell(t, e), e) : this._line.loadCell(t, new N2());\n }\n translateToString(t, e, i5) {\n return this._line.translateToString(t, e, i5);\n }\n };\n var pi = class {\n constructor(t, e) {\n this._buffer = t;\n this.type = e;\n }\n init(t) {\n return this._buffer = t, this;\n }\n get cursorY() {\n return this._buffer.y;\n }\n get cursorX() {\n return this._buffer.x;\n }\n get viewportY() {\n return this._buffer.ydisp;\n }\n get baseY() {\n return this._buffer.ybase;\n }\n get length() {\n return this._buffer.lines.length;\n }\n getLine(t) {\n let e = this._buffer.lines.get(t);\n if (e) return new Tr(e);\n }\n getNullCell() {\n return new N2();\n }\n };\n var Dr = class extends g5 {\n constructor(e) {\n super();\n this._core = e;\n this._onBufferChange = this._register(new v5());\n this.onBufferChange = this._onBufferChange.event;\n this._normal = new pi(this._core.buffers.normal, "normal"), this._alternate = new pi(this._core.buffers.alt, "alternate"), this._core.buffers.onBufferActivate(() => this._onBufferChange.fire(this.active));\n }\n get active() {\n if (this._core.buffers.active === this._core.buffers.normal) return this.normal;\n if (this._core.buffers.active === this._core.buffers.alt) return this.alternate;\n throw new Error("Active buffer is neither normal nor alternate");\n }\n get normal() {\n return this._normal.init(this._core.buffers.normal);\n }\n get alternate() {\n return this._alternate.init(this._core.buffers.alt);\n }\n };\n var Rr = class {\n constructor(t) {\n this._core = t;\n }\n registerCsiHandler(t, e) {\n return this._core.registerCsiHandler(t, (i5) => e(i5.toArray()));\n }\n addCsiHandler(t, e) {\n return this.registerCsiHandler(t, e);\n }\n registerDcsHandler(t, e) {\n return this._core.registerDcsHandler(t, (i5, r) => e(i5, r.toArray()));\n }\n addDcsHandler(t, e) {\n return this.registerDcsHandler(t, e);\n }\n registerEscHandler(t, e) {\n return this._core.registerEscHandler(t, e);\n }\n addEscHandler(t, e) {\n return this.registerEscHandler(t, e);\n }\n registerOscHandler(t, e) {\n return this._core.registerOscHandler(t, e);\n }\n addOscHandler(t, e) {\n return this.registerOscHandler(t, e);\n }\n registerApcHandler(t, e) {\n return this._core.registerApcHandler(t, e);\n }\n };\n var Lr = class {\n constructor(t) {\n this._core = t;\n }\n register(t) {\n this._core.unicodeService.register(t);\n }\n get versions() {\n return this._core.unicodeService.versions;\n }\n get activeVersion() {\n return this._core.unicodeService.activeVersion;\n }\n set activeVersion(t) {\n this._core.unicodeService.activeVersion = t;\n }\n };\n var Xo2 = ["cols", "rows"];\n var Ee = 0;\n var Vn2 = class extends g5 {\n constructor(t) {\n super(), this._core = this._register(new xr(t)), this._addonManager = this._register(new wr2()), this._publicOptions = { ...this._core.options };\n let e = (r) => this._core.options[r], i5 = (r, s4) => {\n this._checkReadonlyOptions(r), this._core.options[r] = s4;\n };\n for (let r in this._core.options) {\n let s4 = { get: e.bind(this, r), set: i5.bind(this, r) };\n Object.defineProperty(this._publicOptions, r, s4);\n }\n }\n _checkReadonlyOptions(t) {\n if (Xo2.includes(t)) throw new Error(`Option "${t}" can only be set in the constructor`);\n }\n _checkProposedApi() {\n if (!this._core.optionsService.rawOptions.allowProposedApi) throw new Error("You must set the allowProposedApi option to true to use proposed API");\n }\n get onBell() {\n return this._core.onBell;\n }\n get onBinary() {\n return this._core.onBinary;\n }\n get onCursorMove() {\n return this._core.onCursorMove;\n }\n get onData() {\n return this._core.onData;\n }\n get onKey() {\n return this._core.onKey;\n }\n get onLineFeed() {\n return this._core.onLineFeed;\n }\n get onRender() {\n return this._core.onRender;\n }\n get onResize() {\n return this._core.onResize;\n }\n get onScroll() {\n return this._core.onScroll;\n }\n get onSelectionChange() {\n return this._core.onSelectionChange;\n }\n get onTitleChange() {\n return this._core.onTitleChange;\n }\n get onWriteParsed() {\n return this._core.onWriteParsed;\n }\n get onDimensionsChange() {\n return this._core.onDimensionsChange;\n }\n get element() {\n return this._core.element;\n }\n get screenElement() {\n return this._core.screenElement;\n }\n get parser() {\n return this._parser ??= new Rr(this._core);\n }\n get unicode() {\n return this._checkProposedApi(), new Lr(this._core);\n }\n get textarea() {\n return this._core.textarea;\n }\n get rows() {\n return this._core.rows;\n }\n get cols() {\n return this._core.cols;\n }\n get buffer() {\n return this._buffer ??= this._register(new Dr(this._core));\n }\n get markers() {\n return this._core.markers;\n }\n get modes() {\n let t = this._core.coreService.decPrivateModes, e = "none";\n switch (this._core.mouseStateService.activeProtocol) {\n case "X10":\n e = "x10";\n break;\n case "VT200":\n e = "vt200";\n break;\n case "DRAG":\n e = "drag";\n break;\n case "ANY":\n e = "any";\n break;\n }\n return { applicationCursorKeysMode: t.applicationCursorKeys, applicationKeypadMode: t.applicationKeypad, bracketedPasteMode: t.bracketedPasteMode, insertMode: this._core.coreService.modes.insertMode, mouseTrackingMode: e, originMode: t.origin, reverseWraparoundMode: t.reverseWraparound, sendFocusMode: t.sendFocus, showCursor: !this._core.coreService.isCursorHidden, synchronizedOutputMode: t.synchronizedOutput, win32InputMode: t.win32InputMode, wraparoundMode: t.wraparound };\n }\n get dimensions() {\n return this._core.dimensions;\n }\n get options() {\n return this._publicOptions;\n }\n set options(t) {\n for (let e in t) this._publicOptions[e] = t[e];\n }\n blur() {\n this._core.blur();\n }\n focus() {\n this._core.focus();\n }\n input(t, e = true) {\n this._core.input(t, e);\n }\n resize(t, e) {\n this._verifyIntegers(t, e), this._core.resize(t, e);\n }\n open(t) {\n this._core.open(t);\n }\n attachCustomKeyEventHandler(t) {\n this._core.attachCustomKeyEventHandler(t);\n }\n attachCustomWheelEventHandler(t) {\n this._core.attachCustomWheelEventHandler(t);\n }\n registerLinkProvider(t) {\n return this._core.registerLinkProvider(t);\n }\n registerCharacterJoiner(t) {\n return this._core.registerCharacterJoiner(t);\n }\n deregisterCharacterJoiner(t) {\n this._core.deregisterCharacterJoiner(t);\n }\n registerMarker(t = 0) {\n return this._verifyIntegers(t), this._core.registerMarker(t);\n }\n registerDecoration(t) {\n return this._verifyPositiveIntegers(t.x ?? 0, t.width ?? 0, t.height ?? 0), this._core.registerDecoration(t);\n }\n hasSelection() {\n return this._core.hasSelection();\n }\n select(t, e, i5) {\n this._verifyIntegers(t, e, i5), this._core.select(t, e, i5);\n }\n getSelection() {\n return this._core.getSelection();\n }\n getSelectionPosition() {\n return this._core.getSelectionPosition();\n }\n clearSelection() {\n this._core.clearSelection();\n }\n selectAll() {\n this._core.selectAll();\n }\n selectLines(t, e) {\n this._verifyIntegers(t, e), this._core.selectLines(t, e);\n }\n dispose() {\n super.dispose();\n }\n scrollLines(t) {\n this._verifyIntegers(t), this._core.scrollLines(t);\n }\n scrollPages(t) {\n this._verifyIntegers(t), this._core.scrollPages(t);\n }\n scrollToTop() {\n this._core.scrollToTop();\n }\n scrollToBottom() {\n this._core.scrollToBottom();\n }\n scrollToLine(t) {\n this._verifyIntegers(t), this._core.scrollToLine(t);\n }\n clear() {\n this._core.clear();\n }\n write(t, e) {\n this._core.write(t, e);\n }\n writeln(t, e) {\n this._core.write(t), this._core.write(`\\r\n`, e);\n }\n paste(t) {\n this._core.paste(t);\n }\n refresh(t, e) {\n this._verifyIntegers(t, e), this._core.refresh(t, e);\n }\n reset() {\n this._core.reset();\n }\n clearTextureAtlas() {\n this._core.clearTextureAtlas();\n }\n loadAddon(t) {\n this._addonManager.loadAddon(this, t);\n }\n static get strings() {\n return { get promptLabel() {\n return zt2.get();\n }, set promptLabel(t) {\n zt2.set(t);\n }, get tooMuchOutput() {\n return Je3.get();\n }, set tooMuchOutput(t) {\n Je3.set(t);\n } };\n }\n _verifyIntegers(...t) {\n for (Ee of t) if (Ee === 1 / 0 || isNaN(Ee) || Ee % 1 !== 0) throw new Error("This API only accepts integers");\n }\n _verifyPositiveIntegers(...t) {\n for (Ee of t) if (Ee && (Ee === 1 / 0 || isNaN(Ee) || Ee % 1 !== 0 || Ee < 0)) throw new Error("This API only accepts positive integers");\n }\n };\n\n // ../protocol/dist/terminal-input-mode.js\n var ESC = String.fromCharCode(27);\n var APPLICATION_CURSOR_KEYS_MODE = 1;\n var WIN32_INPUT_MODE = 9001;\n var BRACKETED_PASTE_MODE = 2004;\n var CSI_INPUT_MODE_SEQUENCE = new RegExp(`${ESC}\\\\[(?:([<>=?]?)([0-9;]*)u|\\\\?([0-9;]*)([hl]))`, "g");\n var INCOMPLETE_CSI_INPUT_MODE_SEQUENCE = new RegExp(`${ESC}\\\\[[<>=?]?[0-9;]*$`);\n function parseFirstParam(params) {\n const first = params.split(";")[0];\n if (!first || !/^\\d+$/.test(first)) {\n return null;\n }\n return Number(first);\n }\n function parseSecondParam(params) {\n const second = params.split(";")[1];\n if (!second || !/^\\d+$/.test(second)) {\n return null;\n }\n return Number(second);\n }\n function parsePrivateModeParams(params) {\n const modes = /* @__PURE__ */ new Set();\n for (const param of params.split(";")) {\n if (/^\\d+$/.test(param)) {\n modes.add(Number(param));\n }\n }\n return modes;\n }\n function terminalInputModeSupportsModifiedEnter(state) {\n return state.kittyKeyboardFlags > 0 || state.win32InputMode;\n }\n function terminalInputModeStatesEqual(left, right) {\n return left.kittyKeyboardFlags === right.kittyKeyboardFlags && left.win32InputMode === right.win32InputMode && Boolean(left.applicationCursorKeys) === Boolean(right.applicationCursorKeys) && Boolean(left.bracketedPaste) === Boolean(right.bracketedPaste);\n }\n var TerminalInputModeTracker = class {\n constructor() {\n this.kittyKeyboardFlags = 0;\n this.win32InputMode = false;\n this.applicationCursorKeys = false;\n this.bracketedPaste = false;\n this.kittyKeyboardStack = [];\n this.pending = "";\n }\n feed(data) {\n if (data.length === 0) {\n return { changed: false, responses: [] };\n }\n const text = `${this.pending}${data}`;\n this.pending = "";\n let changed = false;\n const responses = [];\n let consumedUntil = 0;\n CSI_INPUT_MODE_SEQUENCE.lastIndex = 0;\n for (; ; ) {\n const match = CSI_INPUT_MODE_SEQUENCE.exec(text);\n if (!match) {\n break;\n }\n consumedUntil = CSI_INPUT_MODE_SEQUENCE.lastIndex;\n if (match[4]) {\n changed = this.applyPrivateModeSequence(match[3] ?? "", match[4]) || changed;\n continue;\n }\n const result = this.applyKittyKeyboardSequence(match[1] ?? "", match[2] ?? "");\n changed = changed || result.changed;\n responses.push(...result.responses);\n }\n const tail = text.slice(consumedUntil);\n const pendingStart = tail.lastIndexOf(`${ESC}[`);\n if (pendingStart >= 0) {\n const pending = tail.slice(pendingStart);\n if (INCOMPLETE_CSI_INPUT_MODE_SEQUENCE.test(pending)) {\n this.pending = pending;\n }\n }\n return { changed, responses };\n }\n reset() {\n this.kittyKeyboardFlags = 0;\n this.win32InputMode = false;\n this.applicationCursorKeys = false;\n this.bracketedPaste = false;\n this.kittyKeyboardStack.length = 0;\n this.pending = "";\n }\n getState() {\n return {\n kittyKeyboardFlags: this.kittyKeyboardFlags,\n win32InputMode: this.win32InputMode,\n applicationCursorKeys: this.applicationCursorKeys,\n bracketedPaste: this.bracketedPaste\n };\n }\n getKittyKeyboardFlags() {\n return this.kittyKeyboardFlags;\n }\n supportsModifiedEnter() {\n return terminalInputModeSupportsModifiedEnter(this.getState());\n }\n getPreamble() {\n const parts = [];\n if (this.kittyKeyboardFlags > 0) {\n parts.push(`\\x1B[=${this.kittyKeyboardFlags};1u`);\n }\n if (this.win32InputMode) {\n parts.push("\\x1B[?9001h");\n }\n if (this.applicationCursorKeys) {\n parts.push("\\x1B[?1h");\n }\n if (this.bracketedPaste) {\n parts.push("\\x1B[?2004h");\n }\n return parts.join("");\n }\n applyKittyKeyboardSequence(prefix, params) {\n const previousFlags = this.kittyKeyboardFlags;\n switch (prefix) {\n case ">": {\n this.kittyKeyboardStack.push(this.kittyKeyboardFlags);\n this.kittyKeyboardFlags = parseFirstParam(params) ?? 1;\n break;\n }\n case "=": {\n const mode = parseSecondParam(params) ?? 1;\n this.kittyKeyboardFlags = mode === 0 ? 0 : parseFirstParam(params) ?? 0;\n break;\n }\n case "<": {\n const count = Math.max(1, parseFirstParam(params) ?? 1);\n for (let index = 0; index < count; index += 1) {\n this.kittyKeyboardFlags = this.kittyKeyboardStack.pop() ?? 0;\n }\n break;\n }\n case "?":\n return {\n changed: false,\n responses: [`\\x1B[?${this.kittyKeyboardFlags}u`]\n };\n default:\n return { changed: false, responses: [] };\n }\n return {\n changed: this.kittyKeyboardFlags !== previousFlags,\n responses: []\n };\n }\n applyPrivateModeSequence(params, final) {\n const modes = parsePrivateModeParams(params);\n let changed = false;\n if (modes.has(WIN32_INPUT_MODE)) {\n const previous = this.win32InputMode;\n this.win32InputMode = final === "h";\n changed = this.win32InputMode !== previous || changed;\n }\n if (modes.has(APPLICATION_CURSOR_KEYS_MODE)) {\n const previous = this.applicationCursorKeys;\n this.applicationCursorKeys = final === "h";\n changed = this.applicationCursorKeys !== previous || changed;\n }\n if (modes.has(BRACKETED_PASTE_MODE)) {\n const previous = this.bracketedPaste;\n this.bracketedPaste = final === "h";\n changed = this.bracketedPaste !== previous || changed;\n }\n return changed;\n }\n };\n\n // src/utils/terminal-keys.ts\n var MODIFIER_DOM_KEYS = /* @__PURE__ */ new Set(["Control", "Shift", "Alt", "Meta", "AltGraph", "OS"]);\n var DOM_KEY_ALIASES = {\n Esc: "Escape",\n Left: "ArrowLeft",\n Right: "ArrowRight",\n Up: "ArrowUp",\n Down: "ArrowDown",\n Del: "Delete",\n Spacebar: " ",\n Space: " "\n };\n var SUPPORTED_SPECIAL_KEYS = /* @__PURE__ */ new Set([\n "Enter",\n "Tab",\n "Backspace",\n "Escape",\n "ArrowUp",\n "ArrowDown",\n "ArrowLeft",\n "ArrowRight",\n "Home",\n "End",\n "Insert",\n "Delete",\n "PageUp",\n "PageDown",\n "F1",\n "F2",\n "F3",\n "F4",\n "F5",\n "F6",\n "F7",\n "F8",\n "F9",\n "F10",\n "F11",\n "F12"\n ]);\n function isTerminalModifierDomKey(rawKey) {\n return MODIFIER_DOM_KEYS.has(rawKey);\n }\n function normalizeDomTerminalKey(rawKey) {\n if (!rawKey) {\n return null;\n }\n const key = DOM_KEY_ALIASES[rawKey] ?? rawKey;\n if (key === "Unidentified" || key === "Dead" || key === "Compose" || key === "Process") {\n return null;\n }\n if (key.length === 1) {\n return key;\n }\n if (SUPPORTED_SPECIAL_KEYS.has(key)) {\n return key;\n }\n return null;\n }\n function normalizeTerminalTransportKey(key) {\n if (key.length === 1) {\n return key.toLowerCase();\n }\n return key;\n }\n function hasPendingTerminalModifiers(modifiers) {\n return modifiers.ctrl || modifiers.shift || modifiers.alt;\n }\n function isAppleHandheldPlatform(input) {\n const userAgent = input.userAgent ?? "";\n const platform = input.platform ?? "";\n const touchPoints = input.maxTouchPoints ?? 0;\n if (/iPad|iPhone|iPod/.test(userAgent)) {\n return true;\n }\n if (/Mac/i.test(platform) && touchPoints > 1) {\n return true;\n }\n return false;\n }\n function shouldInterceptDomTerminalKey(args) {\n if (hasPendingTerminalModifiers(args.pendingModifiers)) {\n return true;\n }\n if (args.key === "Enter" && (args.shiftKey || args.ctrlKey || args.altKey || args.metaKey)) {\n return Boolean(args.enhancedInputActive);\n }\n if (args.isAppleHandheld && args.ctrlKey && !args.metaKey && !args.altKey && !args.shiftKey && (args.key === "c" || args.key === "C")) {\n return true;\n }\n return false;\n }\n function mergeTerminalModifiers(args) {\n const { pendingModifiers, ctrlKey, shiftKey, altKey, metaKey } = args;\n return {\n ctrl: ctrlKey || pendingModifiers.ctrl,\n shift: shiftKey || pendingModifiers.shift,\n alt: altKey || pendingModifiers.alt,\n meta: metaKey\n };\n }\n\n // ../protocol/dist/terminal-snapshot.js\n var DEFAULT_STYLE = {\n fg: void 0,\n bg: void 0,\n fgMode: void 0,\n bgMode: void 0,\n bold: false,\n italic: false,\n underline: false,\n dim: false,\n inverse: false,\n strikethrough: false\n };\n function renderTerminalSnapshotToAnsi(state) {\n const rows = [...state.scrollback, ...state.grid];\n const wrapFlags = [...state.scrollbackWrapped ?? [], ...state.gridWrapped ?? []];\n const hasWrapInfo = wrapFlags.length === rows.length;\n const lines = hasWrapInfo ? [] : ["\\x1B[?7l"];\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {\n const row = rows[rowIndex] ?? [];\n const continuesToNextRow = hasWrapInfo && wrapFlags[rowIndex] === true;\n lines.push(renderTerminalRow(row, continuesToNextRow ? state.cols : void 0));\n if (rowIndex < rows.length - 1 && !continuesToNextRow) {\n lines.push("\\r\\n");\n }\n }\n lines.push("\\x1B[0m");\n const cursorPresentationAnsi = renderCursorPresentationToAnsi(state.cursor);\n if (cursorPresentationAnsi) {\n lines.push(cursorPresentationAnsi);\n }\n lines.push(`\\x1B[${state.cursor.row + 1};${state.cursor.col + 1}H`);\n lines.push(state.cursor.hidden ? "\\x1B[?25l" : "\\x1B[?25h");\n if (!hasWrapInfo) {\n lines.push("\\x1B[?7h");\n }\n return lines.join("");\n }\n function renderCursorPresentationToAnsi(cursor) {\n if (!cursor.style) {\n return null;\n }\n const cursorStyleCode = (() => {\n if (cursor.style === "block") {\n return cursor.blink === false ? 2 : 1;\n }\n if (cursor.style === "underline") {\n return cursor.blink === false ? 4 : 3;\n }\n return cursor.blink === false ? 6 : 5;\n })();\n return `\\x1B[${cursorStyleCode} q`;\n }\n function renderTerminalRow(row, padToCols) {\n const output = [];\n const contentLength = getTerminalRowLength(row);\n const length = padToCols !== void 0 ? Math.max(contentLength, padToCols) : contentLength;\n let previousStyle = DEFAULT_STYLE;\n for (let index = 0; index < length; index += 1) {\n const cell = row[index] ?? { char: " " };\n const nextStyle = getTerminalStyle(cell);\n if (!terminalStylesEqual(previousStyle, nextStyle)) {\n output.push(styleToAnsi(nextStyle));\n previousStyle = nextStyle;\n }\n output.push(cell.char || " ");\n }\n if (!terminalStylesEqual(previousStyle, DEFAULT_STYLE)) {\n output.push("\\x1B[0m");\n }\n return output.join("");\n }\n function getTerminalRowLength(row) {\n for (let index = row.length - 1; index >= 0; index -= 1) {\n const cell = row[index];\n if (!cell) {\n continue;\n }\n if (cell.char !== " ") {\n return index + 1;\n }\n if (cell.fg !== void 0 || cell.bg !== void 0 || cell.fgMode !== void 0 || cell.bgMode !== void 0 || cell.bold || cell.italic || cell.underline || cell.dim || cell.inverse || cell.strikethrough) {\n return index + 1;\n }\n }\n return 0;\n }\n function getTerminalStyle(cell) {\n return {\n fg: cell.fg,\n bg: cell.bg,\n fgMode: cell.fgMode,\n bgMode: cell.bgMode,\n bold: Boolean(cell.bold),\n italic: Boolean(cell.italic),\n underline: Boolean(cell.underline),\n dim: Boolean(cell.dim),\n inverse: Boolean(cell.inverse),\n strikethrough: Boolean(cell.strikethrough)\n };\n }\n function terminalStylesEqual(left, right) {\n return left.fg === right.fg && left.bg === right.bg && left.fgMode === right.fgMode && left.bgMode === right.bgMode && left.bold === right.bold && left.italic === right.italic && left.underline === right.underline && left.dim === right.dim && left.inverse === right.inverse && left.strikethrough === right.strikethrough;\n }\n function styleToAnsi(style) {\n const codes = ["0"];\n if (style.bold) {\n codes.push("1");\n }\n if (style.dim) {\n codes.push("2");\n }\n if (style.italic) {\n codes.push("3");\n }\n if (style.underline) {\n codes.push("4");\n }\n if (style.inverse) {\n codes.push("7");\n }\n if (style.strikethrough) {\n codes.push("9");\n }\n if (style.fg !== void 0 && style.fgMode !== void 0) {\n codes.push(...colorToSgr(style.fgMode, style.fg, false));\n }\n if (style.bg !== void 0 && style.bgMode !== void 0) {\n codes.push(...colorToSgr(style.bgMode, style.bg, true));\n }\n return `\\x1B[${codes.join(";")}m`;\n }\n function colorToSgr(mode, value, background) {\n if (mode === 1) {\n if (value >= 8) {\n return [String((background ? 100 : 90) + (value - 8))];\n }\n return [String((background ? 40 : 30) + value)];\n }\n if (mode === 2) {\n return [background ? "48" : "38", "5", String(value)];\n }\n if (mode === 3) {\n return [\n background ? "48" : "38",\n "2",\n String(value >> 16 & 255),\n String(value >> 8 & 255),\n String(value & 255)\n ];\n }\n return [];\n }\n\n // src/terminal/local-links/terminal-local-link-parsing.ts\n var linkSuffixRegexEol = generateLinkSuffixRegex(true);\n var linkSuffixRegex = generateLinkSuffixRegex(false);\n function generateLinkSuffixRegex(eolOnly) {\n let rowIndex = 0;\n let colIndex = 0;\n let rowEndIndex = 0;\n let colEndIndex = 0;\n const row = () => `(?<row${rowIndex++}>\\\\d+)`;\n const col = () => `(?<col${colIndex++}>\\\\d+)`;\n const rowEnd = () => `(?<rowEnd${rowEndIndex++}>\\\\d+)`;\n const colEnd = () => `(?<colEnd${colEndIndex++}>\\\\d+)`;\n const eolSuffix = eolOnly ? "$" : "";\n const clauses = [\n `(?::|#| |[\'"],|, )${row()}([:.]${col()}(?:-(?:${rowEnd()}\\\\.)?${colEnd()})?)?${eolSuffix}`,\n `[\'"]?(?:,? |: ?| on )lines? ${row()}(?:-${rowEnd()})?(?:,? (?:col(?:umn)?|characters?) ${col()}(?:-${colEnd()})?)?${eolSuffix}`,\n `:? ?[\\\\[\\\\(]${row()}(?:(?:, ?|:)${col()})?[\\\\]\\\\)]${eolSuffix}`\n ];\n return new RegExp(`(${clauses.join("|").replace(/ /g, "[\\xA0 ]")})`, eolOnly ? void 0 : "g");\n }\n function detectLinkSuffixes(line) {\n const results = [];\n linkSuffixRegex.lastIndex = 0;\n let match;\n while ((match = linkSuffixRegex.exec(line)) !== null) {\n const suffix = toLinkSuffix(match);\n if (!suffix) {\n break;\n }\n results.push(suffix);\n }\n return results;\n }\n function toLinkSuffix(match) {\n const groups = match?.groups;\n if (!groups || match.length < 1) {\n return null;\n }\n return {\n row: parseIntOptional(groups.row0 || groups.row1 || groups.row2),\n col: parseIntOptional(groups.col0 || groups.col1 || groups.col2),\n rowEnd: parseIntOptional(groups.rowEnd0 || groups.rowEnd1 || groups.rowEnd2),\n colEnd: parseIntOptional(groups.colEnd0 || groups.colEnd1 || groups.colEnd2),\n suffix: { index: match.index, text: match[0] }\n };\n }\n function parseIntOptional(value) {\n return value === void 0 ? void 0 : parseInt(value, 10);\n }\n var linkWithSuffixPathCharacters = /(?<path>(?:file:\\/\\/\\/)?[^\\s|<>[({][^\\s|<>]*)$/;\n var unixLocalLinkClause = `(?:(?:${"(?:\\\\.\\\\.?|\\\\~|file:\\\\/\\\\/)" /* PathPrefix */}|(?:${"[^\\\\0<>\\\\?\\\\s!`&*()\\\\[\\\\]\'\\":;\\\\\\\\]" /* ExcludedStartPathCharactersClause */}${"[^\\\\0<>\\\\?\\\\s!`&*()\'\\":;\\\\\\\\]" /* ExcludedPathCharactersClause */}*))?(?:${"\\\\/" /* PathSeparatorClause */}(?:${"[^\\\\0<>\\\\?\\\\s!`&*()\'\\":;\\\\\\\\]" /* ExcludedPathCharactersClause */})+)+)`;\n var winDrivePrefix = "(?:\\\\\\\\\\\\\\\\\\\\?\\\\\\\\|file:\\\\/\\\\/\\\\/)?[a-zA-Z]:";\n var winLocalLinkClause = `(?:(?:(?:${winDrivePrefix}|${"\\\\.\\\\.?|\\\\~" /* WinOtherPathPrefix */})|(?:${"[^\\\\0<>\\\\?\\\\|\\\\/\\\\s!`&*()\\\\[\\\\]\'\\":;]" /* WinExcludedStartPathCharactersClause */}${"[^\\\\0<>\\\\?\\\\|\\\\/\\\\s!`&*()\'\\":;]" /* WinExcludedPathCharactersClause */}*))?(?:${"(?:\\\\\\\\|\\\\/)" /* WinPathSeparatorClause */}(?:${"[^\\\\0<>\\\\?\\\\|\\\\/\\\\s!`&*()\'\\":;]" /* WinExcludedPathCharactersClause */})+)+)`;\n function detectTerminalLocalLinks(line) {\n const results = detectLinksViaSuffix(line);\n insertNonConflicting(results, detectPathsNoSuffix(line, unixLocalLinkClause));\n insertNonConflicting(results, detectPathsNoSuffix(line, winLocalLinkClause));\n return results;\n }\n function detectLinksViaSuffix(line) {\n const results = [];\n const suffixes = detectLinkSuffixes(line);\n for (const suffix of suffixes) {\n results.push(...detectLinksForSuffix(line, suffix));\n }\n return results;\n }\n function detectLinksForSuffix(line, suffix) {\n const beforeSuffix = line.substring(0, suffix.suffix.index);\n const possiblePathMatch = beforeSuffix.match(linkWithSuffixPathCharacters);\n if (!possiblePathMatch?.groups?.path || possiblePathMatch.index === void 0) {\n return [];\n }\n const pathWithPrefix = trimPathPrefix({\n path: possiblePathMatch.groups.path,\n startIndex: possiblePathMatch.index,\n suffix\n });\n if (!pathWithPrefix) {\n return [];\n }\n const pathIndex = pathWithPrefix.startIndex + (pathWithPrefix.prefix?.text.length ?? 0);\n const links = [\n {\n path: {\n index: pathIndex,\n text: pathWithPrefix.path\n },\n prefix: pathWithPrefix.prefix,\n suffix\n }\n ];\n for (const match of pathWithPrefix.path.matchAll(/(?<bracket>[[(])/g)) {\n const bracket = match.groups?.bracket;\n if (!bracket) {\n continue;\n }\n const nextCharacter = pathWithPrefix.path[match.index + bracket.length];\n if (nextCharacter === "]" || nextCharacter === ")") {\n continue;\n }\n links.push({\n path: {\n index: pathIndex + match.index + 1,\n text: pathWithPrefix.path.substring(match.index + bracket.length)\n },\n prefix: pathWithPrefix.prefix,\n suffix\n });\n }\n return links;\n }\n function trimPathPrefix(input) {\n const prefixMatch = input.path.match(/^(?<prefix>[\'"]+)/);\n if (!prefixMatch?.groups?.prefix) {\n return { path: input.path, startIndex: input.startIndex };\n }\n const prefix = {\n index: input.startIndex,\n text: prefixMatch.groups.prefix\n };\n const path = input.path.substring(prefix.text.length);\n if (path.trim().length === 0) {\n return null;\n }\n const trimPrefixAmount = getTrimPrefixAmount(prefix.text, input.suffix);\n if (trimPrefixAmount === 0) {\n return { path, startIndex: input.startIndex, prefix };\n }\n prefix.index += trimPrefixAmount;\n prefix.text = prefix.text[prefix.text.length - 1] ?? prefix.text;\n return { path, startIndex: input.startIndex + trimPrefixAmount, prefix };\n }\n function getTrimPrefixAmount(prefixText, suffix) {\n const suffixQuote = suffix.suffix.text[0];\n if (prefixText.length > 1 && suffixQuote?.match(/[\'"]/) && prefixText[prefixText.length - 1] === suffixQuote) {\n return prefixText.length - 1;\n }\n return 0;\n }\n function detectPathsNoSuffix(line, clause) {\n const results = [];\n const regex = new RegExp(clause, "g");\n let match;\n while ((match = regex.exec(line)) !== null) {\n let text = match[0];\n let index = match.index;\n if (!text) {\n break;\n }\n if ((line.startsWith("--- a/") || line.startsWith("+++ b/")) && index === 4 || line.startsWith("diff --git") && (text.startsWith("a/") || text.startsWith("b/"))) {\n text = text.substring(2);\n index += 2;\n }\n results.push({\n path: { index, text },\n prefix: void 0,\n suffix: void 0\n });\n }\n return results;\n }\n function insertNonConflicting(list, newItems) {\n for (const item of newItems) {\n const start = item.path.index;\n const end = item.path.index + item.path.text.length;\n const hasConflict = list.some((existing) => {\n const existingStart = existing.path.index;\n const existingEnd = existing.suffix?.suffix.index !== void 0 ? existing.suffix.suffix.index + existing.suffix.suffix.text.length : existing.path.index + existing.path.text.length;\n return start < existingEnd && end > existingStart;\n });\n if (!hasConflict) {\n list.push(item);\n }\n }\n list.sort((left, right) => left.path.index - right.path.index);\n }\n\n // src/terminal/local-links/terminal-local-link-provider.ts\n var MAX_LINE_LENGTH = 2e3;\n var MAX_LINK_LENGTH = 500;\n var MAX_RESOLVED_LINKS_IN_LINE = 10;\n function createTerminalLocalFileLinkProvider(terminal, options) {\n return new TerminalLocalFileLinkProvider(terminal, options);\n }\n var TerminalLocalFileLinkProvider = class {\n constructor(terminal, options) {\n this.terminal = terminal;\n this.options = options;\n }\n terminal;\n options;\n activeRequests = /* @__PURE__ */ new Map();\n async provideLinks(bufferLineNumber, callback) {\n let activeRequest = this.activeRequests.get(bufferLineNumber);\n if (activeRequest) {\n callback(await activeRequest);\n return;\n }\n activeRequest = this.provideLinksForLine(bufferLineNumber);\n this.activeRequests.set(bufferLineNumber, activeRequest);\n const links = await activeRequest;\n this.activeRequests.delete(bufferLineNumber);\n callback(links.length > 0 ? links : void 0);\n }\n async provideLinksForLine(bufferLineNumber) {\n const windowed = getWindowedLineContent(this.terminal, bufferLineNumber - 1);\n if (!windowed || windowed.text.length === 0 || windowed.text.length > MAX_LINE_LENGTH) {\n return [];\n }\n const parsedLinks = detectTerminalLocalLinks(windowed.text);\n const links = [];\n let resolvedLinkCount = 0;\n for (const parsedLink of parsedLinks) {\n if (parsedLink.path.text.length > MAX_LINK_LENGTH) {\n continue;\n }\n const source = toLinkSource(windowed.text, parsedLink);\n if (!source) {\n continue;\n }\n const target = await this.options.resolveLink(source);\n if (!target) {\n continue;\n }\n const range = toBufferRange({\n terminal: this.terminal,\n startLine: windowed.startLine,\n startIndex: parsedLink.prefix?.index ?? parsedLink.path.index,\n endIndex: getParsedLinkEndIndex(parsedLink)\n });\n if (!range) {\n continue;\n }\n links.push(createLocalFileLink({ range, source, target, options: this.options }));\n resolvedLinkCount += 1;\n if (resolvedLinkCount >= MAX_RESOLVED_LINKS_IN_LINE) {\n break;\n }\n }\n return links;\n }\n };\n function createLocalFileLink(input) {\n return {\n range: input.range,\n text: input.source.text,\n decorations: {\n pointerCursor: true,\n underline: true\n },\n activate: (event) => {\n event.preventDefault();\n const disposition = event.metaKey || event.ctrlKey ? "side" : "main";\n input.options.openLink(input.target, disposition, event);\n }\n };\n }\n function toLinkSource(lineText, parsedLink) {\n const path = trimLikelyTrailingPunctuation(parsedLink.path.text);\n if (!path || path.length !== parsedLink.path.text.length) {\n return null;\n }\n const lineStart = parsedLink.suffix?.row;\n const lineEnd = parsedLink.suffix?.rowEnd;\n const text = formatLinkSourceText({ path, suffix: parsedLink.suffix });\n if (!text) {\n return null;\n }\n const rawLinkText = lineText.slice(\n parsedLink.prefix?.index ?? parsedLink.path.index,\n getParsedLinkEndIndex(parsedLink)\n );\n if (!rawLinkText.trim()) {\n return null;\n }\n return {\n text,\n path,\n ...lineStart ? { lineStart } : {},\n ...lineEnd && lineStart && lineEnd >= lineStart ? { lineEnd } : {}\n };\n }\n function formatLinkSourceText(input) {\n const { path, suffix } = input;\n if (!suffix?.row) {\n return path;\n }\n let text = `${path}:${suffix.row}`;\n if (suffix.col) {\n text += `:${suffix.col}`;\n }\n if (suffix.rowEnd) {\n text += `-${suffix.rowEnd}`;\n if (suffix.colEnd) {\n text += `:${suffix.colEnd}`;\n }\n }\n return text;\n }\n function trimLikelyTrailingPunctuation(value) {\n return value.replace(/[\\][["\'.]+$/, "");\n }\n function getParsedLinkEndIndex(parsedLink) {\n if (parsedLink.suffix) {\n return parsedLink.suffix.suffix.index + parsedLink.suffix.suffix.text.length;\n }\n return parsedLink.path.index + parsedLink.path.text.length;\n }\n function getWindowedLineContent(terminal, requestedLine) {\n let startLine = requestedLine;\n let endLine = requestedLine;\n const line = terminal.buffer.active.getLine(requestedLine);\n if (!line) {\n return null;\n }\n const lineStrings = [];\n let contextLength = 0;\n while (startLine > 0 && terminal.buffer.active.getLine(startLine)?.isWrapped && contextLength < MAX_LINK_LENGTH) {\n startLine -= 1;\n const previous = terminal.buffer.active.getLine(startLine);\n if (!previous) {\n break;\n }\n contextLength += previous.translateToString(true).length;\n }\n for (let y5 = startLine; y5 <= endLine; y5 += 1) {\n const current = terminal.buffer.active.getLine(y5);\n if (current) {\n lineStrings.push(current.translateToString(true));\n }\n }\n contextLength = 0;\n while (endLine + 1 < terminal.buffer.active.length && terminal.buffer.active.getLine(endLine + 1)?.isWrapped && contextLength < MAX_LINK_LENGTH) {\n endLine += 1;\n const next = terminal.buffer.active.getLine(endLine);\n if (!next) {\n break;\n }\n const nextText = next.translateToString(true);\n contextLength += nextText.length;\n lineStrings.push(nextText);\n }\n return {\n text: lineStrings.join(""),\n startLine\n };\n }\n function toBufferRange(input) {\n const start = mapStringOffsetToBuffer(input.terminal, input.startLine, input.startIndex);\n if (!start) {\n return null;\n }\n const end = mapStringOffsetToBuffer(input.terminal, input.startLine, input.endIndex);\n if (!start || !end) {\n return null;\n }\n return {\n start: { x: start.x + 1, y: start.y + 1 },\n end: { x: end.x, y: end.y + 1 }\n };\n }\n function mapStringOffsetToBuffer(terminal, startLine, offset) {\n const buffer = terminal.buffer.active;\n const cell = buffer.getNullCell();\n let y5 = startLine;\n let charsRemaining = offset;\n while (true) {\n const line = buffer.getLine(y5);\n if (!line) {\n return null;\n }\n for (let column = 0; column < line.length; column += 1) {\n if (charsRemaining <= 0) {\n return { y: y5, x: column };\n }\n const currentCell = line.getCell(column, cell);\n const chars = currentCell?.getChars() ?? "";\n const width = currentCell?.getWidth() ?? 0;\n if (width) {\n charsRemaining -= chars.length || 1;\n if (isWrappedWideCharacterContinuation({\n buffer,\n cell,\n lineLength: line.length,\n column,\n y: y5,\n chars\n })) {\n charsRemaining += 1;\n }\n }\n if (charsRemaining <= 0) {\n return { y: y5, x: column + width };\n }\n }\n if (charsRemaining <= 0) {\n return { y: y5, x: line.length };\n }\n y5 += 1;\n }\n }\n function isWrappedWideCharacterContinuation(input) {\n if (input.column !== input.lineLength - 1 || input.chars !== "") {\n return false;\n }\n const nextLine = input.buffer.getLine(input.y + 1);\n const nextCell = nextLine?.getCell(0, input.cell);\n return Boolean(nextLine?.isWrapped && nextCell?.getWidth() === 2);\n }\n\n // src/terminal/runtime/terminal-font.ts\n var DEFAULT_TERMINAL_FONT_SIZE = 13;\n var DEFAULT_TERMINAL_FONT_FAMILY = [\n // Prefer common developer fonts, with Nerd Font variants for prompt/TUI glyphs.\n "JetBrains Mono",\n "JetBrainsMono Nerd Font",\n "JetBrainsMono NF",\n "MesloLGM Nerd Font",\n "MesloLGM NF",\n "Hack Nerd Font",\n "FiraCode Nerd Font",\n // PUA-only fallback (many Nerd glyphs live here on some systems).\n "Symbols Nerd Font",\n // System fallbacks.\n "SF Mono",\n "Menlo",\n "Monaco",\n "Consolas",\n "\'Liberation Mono\'",\n "monospace"\n ].join(", ");\n function resolveTerminalFontFamily(fontFamily) {\n const trimmed = fontFamily?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : DEFAULT_TERMINAL_FONT_FAMILY;\n }\n function resolveTerminalFontSize(fontSize) {\n return typeof fontSize === "number" && Number.isFinite(fontSize) && fontSize > 0 ? fontSize : DEFAULT_TERMINAL_FONT_SIZE;\n }\n\n // src/terminal/runtime/terminal-emulator-runtime.ts\n function createTerminalResizeEvent(input) {\n return {\n rows: input.rows,\n cols: input.cols,\n shouldClaim: input.shouldClaim,\n forceClaim: input.shouldClaim && input.forceClaim\n };\n }\n var isMac = typeof navigator !== "undefined" && (/Macintosh|Mac OS/i.test(navigator.userAgent ?? "") || /Mac/i.test(navigator.platform ?? ""));\n var isAppleHandheld = typeof navigator !== "undefined" && isAppleHandheldPlatform({\n userAgent: navigator.userAgent,\n platform: navigator.platform,\n maxTouchPoints: navigator.maxTouchPoints\n });\n var DEFAULT_TOUCH_SCROLL_LINE_HEIGHT_PX = 18;\n var FIT_TIMEOUT_DELAYS_MS = [0, 16, 48, 120, 250, 500, 1e3, 2e3];\n var OUTPUT_OPERATION_TIMEOUT_MS = 5e3;\n var EMPTY_TERMINAL_OUTPUT = new Uint8Array(0);\n var RESET_TERMINAL_OUTPUT = new Uint8Array([27, 99]);\n var terminalOutputEncoder = new TextEncoder();\n function encodeTerminalOutput(text) {\n return terminalOutputEncoder.encode(text);\n }\n function prependTerminalOutput(prefix, data) {\n const output = new Uint8Array(prefix.length + data.length);\n output.set(prefix, 0);\n output.set(data, prefix.length);\n return output;\n }\n function withOverviewRulerBorderHidden(theme) {\n return {\n ...theme,\n overviewRulerBorder: theme.background ?? "transparent"\n };\n }\n var TerminalEmulatorRuntime = class {\n callbacks = {};\n pendingModifiers = {\n ctrl: false,\n shift: false,\n alt: false\n };\n terminal = null;\n fitAddon = null;\n fitAndEmitResize = null;\n lastSize = null;\n cleanup = null;\n outputOperations = [];\n inFlightOutputOperation = null;\n inFlightOutputOperationTimeout = null;\n // Plain writes are submitted to xterm without waiting, so their onCommitted callbacks are\n // pending until xterm commits the write. unmount() disposes xterm before those fire, so we\n // track them here to flush remaining callbacks and avoid stalling upstream backpressure.\n pendingWriteCommits = /* @__PURE__ */ new Set();\n // True once a plain write has been submitted to xterm that no later barrier has gated\n // yet. A barrier only needs the sentinel-write gate when this is set; at mount or right\n // after another barrier it\'s false and the barrier applies immediately, saving a parse\n // cycle of latency. Cleared when a barrier starts (it gates every write before it).\n hasUngatedWrites = false;\n inputModeDecoder = new TextDecoder();\n suppressInput = false;\n inputModeTracker = new TerminalInputModeTracker();\n lastInputModeState = this.inputModeTracker.getState();\n themeBackgroundElements = [];\n handleVisibilityRestore = () => {\n if (typeof document !== "undefined" && document.visibilityState !== "visible") {\n return;\n }\n this.fitAndEmitResize?.({ forceRefresh: true, shouldClaim: false });\n if (typeof window.requestAnimationFrame === "function") {\n window.requestAnimationFrame(() => {\n this.fitAndEmitResize?.({ forceRefresh: true, shouldClaim: false });\n });\n }\n };\n setCallbacks(input) {\n this.callbacks = input.callbacks;\n }\n setPendingModifiers(input) {\n this.pendingModifiers = input.pendingModifiers;\n }\n getInputModeState() {\n return this.inputModeTracker.getState();\n }\n mount(input) {\n this.unmount();\n input.host.innerHTML = "";\n this.lastSize = null;\n this.inputModeTracker.reset();\n this.emitInputModeChange();\n const terminal = new Vn2({\n allowProposedApi: true,\n convertEol: false,\n cursorBlink: true,\n cursorStyle: "bar",\n fontFamily: resolveTerminalFontFamily(input.fontFamily),\n fontSize: resolveTerminalFontSize(input.fontSize),\n lineHeight: 1,\n macOptionIsMeta: true,\n minimumContrastRatio: 1,\n rescaleOverlappingGlyphs: true,\n scrollbar: {\n width: 8\n },\n scrollback: input.scrollback,\n theme: withOverviewRulerBorderHidden(input.theme)\n });\n const fitAddon = new l();\n const unicode11Addon = new I3();\n let webglAddon = null;\n let imageAddon = null;\n terminal.loadAddon(fitAddon);\n terminal.loadAddon(unicode11Addon);\n terminal.loadAddon(\n new L3((event, uri) => {\n event.preventDefault();\n void this.callbacks.onOpenExternalUrl?.(uri);\n })\n );\n const localFileLinkProvider = terminal.registerLinkProvider(\n createTerminalLocalFileLinkProvider(terminal, {\n resolveLink: async (source) => {\n const target = await this.callbacks.onResolveLocalFileLink?.(source);\n return target ?? null;\n },\n openLink: (target, disposition) => {\n void this.callbacks.onOpenLocalFileLink?.(target, disposition);\n }\n })\n );\n terminal.loadAddon(new A2({ highlightLimit: 2e4 }));\n terminal.loadAddon(new j());\n try {\n terminal.loadAddon(new sa());\n } catch {\n }\n terminal.open(input.host);\n this.themeBackgroundElements = this.collectThemeBackgroundElements(input);\n this.applyThemeBackground(input.theme);\n try {\n terminal.unicode.activeVersion = "11";\n } catch {\n }\n const disposeImageAddon = () => {\n try {\n imageAddon?.dispose();\n } catch {\n }\n imageAddon = null;\n };\n const disposeWebglRenderer = () => {\n if (!webglAddon) {\n return;\n }\n try {\n webglAddon.dispose();\n } catch {\n }\n webglAddon = null;\n disposeImageAddon();\n this.fitAndEmitResize?.({ forceRefresh: true, shouldClaim: false });\n };\n const registerProtocolQuerySuppression = () => {\n terminal.parser.registerCsiHandler({ final: "c" }, () => true);\n terminal.parser.registerCsiHandler({ prefix: ">", final: "c" }, () => true);\n terminal.parser.registerCsiHandler({ prefix: "=", final: "c" }, () => true);\n terminal.parser.registerCsiHandler({ final: "n" }, () => true);\n terminal.parser.registerCsiHandler({ prefix: "?", final: "n" }, () => true);\n terminal.parser.registerCsiHandler({ final: "R" }, () => true);\n terminal.parser.registerCsiHandler({ intermediates: "$", final: "p" }, () => true);\n terminal.parser.registerCsiHandler(\n { prefix: "?", intermediates: "$", final: "p" },\n () => true\n );\n for (const code of [10, 11, 12]) {\n terminal.parser.registerOscHandler(code, (data) => data.trim() === "?");\n }\n };\n registerProtocolQuerySuppression();\n let webglAddonRaf = requestAnimationFrame(() => {\n webglAddonRaf = null;\n try {\n disposeWebglRenderer();\n webglAddon = new bt2();\n webglAddon.onContextLoss(() => {\n disposeWebglRenderer();\n });\n terminal.loadAddon(webglAddon);\n imageAddon = new je();\n terminal.loadAddon(imageAddon);\n registerProtocolQuerySuppression();\n this.fitAndEmitResize?.({ forceRefresh: true, shouldClaim: false });\n } catch {\n disposeWebglRenderer();\n }\n });\n const restoreDocumentStyles = this.applyDocumentBoundsStyles({\n root: input.root\n });\n const restoreViewportStyles = this.applyViewportTouchStyles({\n host: input.host\n });\n this.terminal = terminal;\n this.fitAddon = fitAddon;\n window.__paseoTerminal = terminal;\n const fitAndEmitResize = (resizeInput) => {\n const forceRefresh = resizeInput?.forceRefresh ?? false;\n const shouldClaim = resizeInput?.shouldClaim ?? true;\n const forceClaim = resizeInput?.forceClaim ?? false;\n const currentTerminal = this.terminal;\n const currentFitAddon = this.fitAddon;\n if (!currentTerminal || !currentFitAddon) {\n return;\n }\n if (input.root.offsetWidth === 0 || input.root.offsetHeight === 0) {\n return;\n }\n try {\n currentFitAddon.fit();\n } catch {\n return;\n }\n const nextRows = currentTerminal.rows;\n const nextCols = currentTerminal.cols;\n const previous = this.lastSize;\n if (!forceRefresh && !forceClaim && previous && previous.rows === nextRows && previous.cols === nextCols) {\n return;\n }\n this.lastSize = { rows: nextRows, cols: nextCols };\n this.refreshVisibleRows();\n this.callbacks.onResize?.(\n createTerminalResizeEvent({\n rows: nextRows,\n cols: nextCols,\n shouldClaim,\n forceClaim\n })\n );\n };\n this.fitAndEmitResize = fitAndEmitResize;\n fitAndEmitResize({ forceRefresh: true, shouldClaim: false });\n const inputDisposable = terminal.onData((data) => {\n if (this.suppressInput) {\n return;\n }\n this.callbacks.onInput?.(data);\n });\n terminal.attachCustomKeyEventHandler((event) => {\n if (event.type !== "keydown" || event.isComposing) {\n return true;\n }\n if (!isMac && event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {\n const key = event.key.toLowerCase();\n if (key === "c" && terminal.hasSelection()) {\n void navigator.clipboard.writeText(terminal.getSelection());\n return false;\n }\n if (key === "v") {\n event.preventDefault();\n void navigator.clipboard.readText().then((text) => {\n if (text) {\n terminal.paste(text);\n }\n return;\n });\n return false;\n }\n return true;\n }\n const normalizedKey = normalizeDomTerminalKey(event.key);\n if (!normalizedKey || isTerminalModifierDomKey(event.key)) {\n return true;\n }\n if (!shouldInterceptDomTerminalKey({\n key: normalizedKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n pendingModifiers: this.pendingModifiers,\n enhancedInputActive: this.inputModeTracker.supportsModifiedEnter(),\n isAppleHandheld\n })) {\n return true;\n }\n const modifiers = mergeTerminalModifiers({\n pendingModifiers: this.pendingModifiers,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey\n });\n this.callbacks.onTerminalKey?.({\n key: normalizeTerminalTransportKey(normalizedKey),\n ...modifiers\n });\n if (this.pendingModifiers.ctrl || this.pendingModifiers.shift || this.pendingModifiers.alt) {\n this.callbacks.onPendingModifiersConsumed?.();\n }\n event.preventDefault();\n event.stopPropagation();\n return false;\n });\n const removeTouchListeners = this.setupTouchScrollHandlers({\n root: input.root,\n host: input.host,\n terminal\n });\n const resizeObserver = new ResizeObserver(() => {\n fitAndEmitResize({ shouldClaim: false });\n });\n resizeObserver.observe(input.root);\n resizeObserver.observe(input.host);\n const windowResizeHandler = () => {\n fitAndEmitResize({ shouldClaim: true });\n };\n window.addEventListener("resize", windowResizeHandler);\n const windowFocusHandler = () => {\n this.handleVisibilityRestore();\n };\n window.addEventListener("focus", windowFocusHandler);\n const documentVisibilityChangeHandler = () => {\n this.handleVisibilityRestore();\n };\n document.addEventListener("visibilitychange", documentVisibilityChangeHandler);\n const visualViewport = window.visualViewport;\n const visualViewportResizeHandler = () => {\n fitAndEmitResize({ shouldClaim: false });\n };\n visualViewport?.addEventListener("resize", visualViewportResizeHandler);\n const fitTimeouts = FIT_TIMEOUT_DELAYS_MS.map(\n (delayMs) => window.setTimeout(() => {\n fitAndEmitResize({ forceRefresh: true, shouldClaim: false });\n }, delayMs)\n );\n const fontSet = document.fonts;\n const fontReadyHandler = () => {\n fitAndEmitResize({ forceRefresh: true, shouldClaim: false });\n };\n fontSet?.addEventListener?.("loadingdone", fontReadyHandler);\n void fontSet?.ready.then(() => {\n fitAndEmitResize({ forceRefresh: true, shouldClaim: false });\n return;\n }).catch(() => {\n });\n window.setTimeout(() => {\n fitAndEmitResize({ forceRefresh: true, shouldClaim: false });\n }, 0);\n if (input.initialSnapshot) {\n this.renderSnapshot({ state: input.initialSnapshot });\n }\n this.processOutputQueue();\n const disposables = {\n disposeInput: () => {\n inputDisposable.dispose();\n },\n disconnectResizeObserver: () => {\n resizeObserver.disconnect();\n },\n removeWindowResize: () => {\n window.removeEventListener("resize", windowResizeHandler);\n },\n removeWindowFocus: () => {\n window.removeEventListener("focus", windowFocusHandler);\n },\n removeDocumentVisibilityChange: () => {\n document.removeEventListener("visibilitychange", documentVisibilityChangeHandler);\n },\n removeVisualViewportResize: () => {\n visualViewport?.removeEventListener("resize", visualViewportResizeHandler);\n },\n clearFitTimeouts: () => {\n for (const handle of fitTimeouts) {\n window.clearTimeout(handle);\n }\n },\n removeFontListeners: () => {\n fontSet?.removeEventListener?.("loadingdone", fontReadyHandler);\n },\n removeTouchListeners,\n restoreDocumentStyles,\n restoreViewportStyles,\n disposeFitAddon: () => {\n fitAddon.dispose();\n },\n disposeWebglAddon: () => {\n if (webglAddonRaf !== null) {\n cancelAnimationFrame(webglAddonRaf);\n webglAddonRaf = null;\n }\n disposeWebglRenderer();\n disposeImageAddon();\n },\n disposeTerminal: () => {\n localFileLinkProvider.dispose();\n terminal.dispose();\n }\n };\n this.cleanup = () => {\n disposables.disposeInput();\n disposables.disconnectResizeObserver();\n disposables.removeWindowResize();\n disposables.removeWindowFocus();\n disposables.removeDocumentVisibilityChange();\n disposables.removeVisualViewportResize();\n disposables.clearFitTimeouts();\n disposables.removeFontListeners();\n disposables.removeTouchListeners();\n disposables.disposeFitAddon();\n disposables.disposeWebglAddon();\n disposables.disposeTerminal();\n disposables.restoreDocumentStyles();\n disposables.restoreViewportStyles();\n };\n }\n write(input) {\n if (input.data.length === 0) {\n input.onCommitted?.();\n return;\n }\n this.outputOperations.push({\n type: "write",\n data: input.data,\n suppressInput: input.suppressInput ?? false,\n ...input.onCommitted ? { onCommitted: input.onCommitted } : {}\n });\n this.processOutputQueue();\n }\n clear(input) {\n this.outputOperations.push({\n type: "clear",\n data: EMPTY_TERMINAL_OUTPUT,\n suppressInput: false,\n ...input?.onCommitted ? { onCommitted: input.onCommitted } : {}\n });\n this.processOutputQueue();\n }\n paste(text) {\n this.terminal?.paste(text);\n }\n renderSnapshot(input) {\n if (!input.state) {\n this.clear(input);\n return;\n }\n this.restoreOutput({\n data: encodeTerminalOutput(renderTerminalSnapshotToAnsi(input.state)),\n rows: input.state.rows,\n cols: input.state.cols,\n ...input.onCommitted ? { onCommitted: input.onCommitted } : {}\n });\n }\n restoreOutput(input) {\n this.outputOperations.push({\n type: "snapshot",\n data: prependTerminalOutput(RESET_TERMINAL_OUTPUT, input.data),\n rows: input.rows,\n cols: input.cols,\n suppressInput: true,\n ...input.onCommitted ? { onCommitted: input.onCommitted } : {}\n });\n this.processOutputQueue();\n }\n resize(input) {\n this.fitAndEmitResize?.(input);\n }\n setTheme(input) {\n const terminal = this.terminal;\n if (!terminal) {\n return;\n }\n try {\n terminal.options.theme = withOverviewRulerBorderHidden(input.theme);\n } catch {\n return;\n }\n this.applyThemeBackground(input.theme);\n this.refreshVisibleRows();\n }\n setScrollback(input) {\n const terminal = this.terminal;\n if (!terminal) {\n return;\n }\n try {\n terminal.options.scrollback = input.lines;\n } catch {\n return;\n }\n this.refreshVisibleRows();\n }\n setFont(input) {\n const terminal = this.terminal;\n if (!terminal) {\n return;\n }\n try {\n terminal.options.fontFamily = resolveTerminalFontFamily(input.fontFamily);\n terminal.options.fontSize = resolveTerminalFontSize(input.fontSize);\n } catch {\n return;\n }\n this.fitAndEmitResize?.({ forceRefresh: true, shouldClaim: false });\n this.refreshVisibleRows();\n }\n focus(input) {\n const terminal = this.terminal;\n if (!terminal) {\n return;\n }\n if (input?.forceRefocus) {\n terminal.blur();\n }\n terminal.focus();\n }\n blur() {\n this.terminal?.blur();\n }\n refreshVisibleRows() {\n const terminal = this.terminal;\n if (!terminal || terminal.rows <= 0) {\n return;\n }\n try {\n terminal.refresh(0, terminal.rows - 1);\n } catch {\n }\n }\n collectThemeBackgroundElements(input) {\n return [\n input.root,\n input.host,\n ...Array.from(\n input.host.querySelectorAll(".xterm, .xterm-screen, .xterm-viewport")\n )\n ];\n }\n applyThemeBackground(theme) {\n const background = theme.background ?? "#0b0b0b";\n for (const element of this.themeBackgroundElements) {\n element.style.backgroundColor = background;\n }\n }\n unmount() {\n this.clearInFlightOutputTimeout();\n const inFlightOperation = this.inFlightOutputOperation;\n this.inFlightOutputOperation = null;\n if (inFlightOperation?.onCommitted) {\n inFlightOperation.onCommitted();\n }\n const pendingOperations = this.outputOperations.splice(0, this.outputOperations.length);\n for (const operation of pendingOperations) {\n operation.onCommitted?.();\n }\n for (const commit of Array.from(this.pendingWriteCommits)) {\n commit();\n }\n this.hasUngatedWrites = false;\n this.cleanup?.();\n this.cleanup = null;\n if (window.__paseoTerminal === this.terminal) {\n window.__paseoTerminal = void 0;\n }\n this.terminal = null;\n this.fitAddon = null;\n this.fitAndEmitResize = null;\n this.lastSize = null;\n this.themeBackgroundElements = [];\n this.suppressInput = false;\n this.inputModeDecoder.decode();\n this.inputModeTracker.reset();\n this.emitInputModeChange();\n }\n // A barrier op mutates terminal geometry or toggles suppressInput and must apply in\n // isolation: clear/snapshot reset/resize the terminal, and any write carrying\n // suppressInput flips input handling around the commit. Plain writes are fast-pathed.\n isBarrierOperation(operation) {\n return operation.type !== "write" || Boolean(operation.suppressInput);\n }\n processOutputQueue() {\n if (this.inFlightOutputOperation) {\n return;\n }\n const terminal = this.terminal;\n if (!terminal) {\n return;\n }\n while (this.outputOperations[0] && !this.isBarrierOperation(this.outputOperations[0])) {\n const writeOperation = this.outputOperations.shift();\n if (!writeOperation) {\n break;\n }\n this.submitWrite(terminal, writeOperation);\n }\n const operation = this.outputOperations.shift();\n if (!operation) {\n return;\n }\n if (!this.hasUngatedWrites) {\n this.startBarrierOperation(terminal, operation);\n return;\n }\n let started = false;\n const startBarrier = () => {\n if (started || this.inFlightOutputOperation !== operation || this.terminal !== terminal) {\n return;\n }\n started = true;\n this.clearInFlightOutputTimeout();\n this.startBarrierOperation(terminal, operation);\n };\n this.inFlightOutputOperation = operation;\n this.inFlightOutputOperationTimeout = setTimeout(startBarrier, OUTPUT_OPERATION_TIMEOUT_MS);\n try {\n terminal.write(EMPTY_TERMINAL_OUTPUT, startBarrier);\n } catch {\n startBarrier();\n }\n }\n submitWrite(terminal, operation) {\n const text = this.inputModeDecoder.decode(operation.data, { stream: true });\n const result = this.inputModeTracker.feed(text);\n if (result.changed) {\n this.emitInputModeChange();\n }\n this.hasUngatedWrites = true;\n const onCommitted = operation.onCommitted;\n if (!onCommitted) {\n try {\n terminal.write(operation.data);\n } catch {\n }\n return;\n }\n const commit = () => {\n if (!this.pendingWriteCommits.delete(commit)) {\n return;\n }\n onCommitted();\n };\n this.pendingWriteCommits.add(commit);\n try {\n terminal.write(operation.data, commit);\n } catch {\n commit();\n }\n }\n startBarrierOperation(terminal, operation) {\n this.inFlightOutputOperation = operation;\n this.hasUngatedWrites = false;\n const previousSuppressInput = this.suppressInput;\n if (operation.suppressInput) {\n this.suppressInput = Boolean(operation.suppressInput);\n }\n const finalizeOperation = (expectedOperation) => {\n if (this.inFlightOutputOperation !== expectedOperation) {\n return;\n }\n this.inFlightOutputOperation = null;\n this.clearInFlightOutputTimeout();\n this.suppressInput = previousSuppressInput;\n expectedOperation.onCommitted?.();\n this.processOutputQueue();\n };\n if (operation.type === "clear") {\n this.inputModeDecoder.decode();\n this.inputModeTracker.reset();\n this.emitInputModeChange();\n terminal.reset();\n finalizeOperation(operation);\n return;\n }\n if (operation.type === "snapshot") {\n this.inputModeDecoder.decode();\n this.inputModeTracker.reset();\n this.emitInputModeChange();\n try {\n if (typeof operation.cols === "number" && typeof operation.rows === "number" && (terminal.cols !== operation.cols || terminal.rows !== operation.rows)) {\n terminal.resize(operation.cols, operation.rows);\n }\n } catch {\n finalizeOperation(operation);\n return;\n }\n }\n const data = operation.data;\n if (operation.type === "write") {\n const text = this.inputModeDecoder.decode(data, { stream: true });\n const result = this.inputModeTracker.feed(text);\n if (result.changed) {\n this.emitInputModeChange();\n }\n }\n this.inFlightOutputOperationTimeout = setTimeout(() => {\n finalizeOperation(operation);\n }, OUTPUT_OPERATION_TIMEOUT_MS);\n try {\n terminal.write(data, () => {\n finalizeOperation(operation);\n });\n } catch {\n finalizeOperation(operation);\n }\n }\n clearInFlightOutputTimeout() {\n if (!this.inFlightOutputOperationTimeout) {\n return;\n }\n clearTimeout(this.inFlightOutputOperationTimeout);\n this.inFlightOutputOperationTimeout = null;\n }\n emitInputModeChange() {\n const state = this.inputModeTracker.getState();\n if (terminalInputModeStatesEqual(state, this.lastInputModeState)) {\n return;\n }\n this.lastInputModeState = state;\n this.callbacks.onInputModeChange?.(state);\n }\n applyDocumentBoundsStyles(input) {\n const documentElement = document.documentElement;\n const body = document.body;\n const rootContainer = input.root.parentElement;\n const previousDocumentElementOverflow = documentElement.style.overflow;\n const previousDocumentElementWidth = documentElement.style.width;\n const previousDocumentElementHeight = documentElement.style.height;\n const previousDocumentElementTextSizeAdjust = documentElement.style.getPropertyValue("text-size-adjust");\n const previousDocumentElementWebkitTextSizeAdjust = documentElement.style.getPropertyValue(\n "-webkit-text-size-adjust"\n );\n const previousBodyOverflow = body.style.overflow;\n const previousBodyWidth = body.style.width;\n const previousBodyHeight = body.style.height;\n const previousBodyMargin = body.style.margin;\n const previousBodyPadding = body.style.padding;\n const previousBodyTextSizeAdjust = body.style.getPropertyValue("text-size-adjust");\n const previousBodyWebkitTextSizeAdjust = body.style.getPropertyValue(\n "-webkit-text-size-adjust"\n );\n const previousRootOverflow = rootContainer?.style.overflow ?? "";\n const previousRootWidth = rootContainer?.style.width ?? "";\n const previousRootHeight = rootContainer?.style.height ?? "";\n documentElement.style.overflow = "hidden";\n documentElement.style.width = "100%";\n documentElement.style.height = "100%";\n documentElement.style.setProperty("text-size-adjust", "100%");\n documentElement.style.setProperty("-webkit-text-size-adjust", "100%");\n body.style.overflow = "hidden";\n body.style.width = "100%";\n body.style.height = "100%";\n body.style.margin = "0";\n body.style.padding = "0";\n body.style.setProperty("text-size-adjust", "100%");\n body.style.setProperty("-webkit-text-size-adjust", "100%");\n if (rootContainer) {\n rootContainer.style.overflow = "hidden";\n rootContainer.style.width = "100%";\n rootContainer.style.height = "100%";\n }\n return () => {\n documentElement.style.overflow = previousDocumentElementOverflow;\n documentElement.style.width = previousDocumentElementWidth;\n documentElement.style.height = previousDocumentElementHeight;\n documentElement.style.setProperty("text-size-adjust", previousDocumentElementTextSizeAdjust);\n documentElement.style.setProperty(\n "-webkit-text-size-adjust",\n previousDocumentElementWebkitTextSizeAdjust\n );\n body.style.overflow = previousBodyOverflow;\n body.style.width = previousBodyWidth;\n body.style.height = previousBodyHeight;\n body.style.margin = previousBodyMargin;\n body.style.padding = previousBodyPadding;\n body.style.setProperty("text-size-adjust", previousBodyTextSizeAdjust);\n body.style.setProperty("-webkit-text-size-adjust", previousBodyWebkitTextSizeAdjust);\n if (rootContainer) {\n rootContainer.style.overflow = previousRootOverflow;\n rootContainer.style.width = previousRootWidth;\n rootContainer.style.height = previousRootHeight;\n }\n };\n }\n applyViewportTouchStyles(input) {\n const viewportElement = input.host.querySelector(".xterm-viewport");\n const previousViewportOverscroll = viewportElement?.style.overscrollBehavior ?? "";\n const previousViewportTouchAction = viewportElement?.style.touchAction ?? "";\n const previousViewportOverflowY = viewportElement?.style.overflowY ?? "";\n const previousViewportOverflowX = viewportElement?.style.overflowX ?? "";\n const previousViewportPointerEvents = viewportElement?.style.pointerEvents ?? "";\n const previousViewportWebkitOverflowScrolling = viewportElement?.style.getPropertyValue("-webkit-overflow-scrolling") ?? "";\n if (viewportElement) {\n viewportElement.style.overscrollBehavior = "none";\n viewportElement.style.touchAction = "pan-y";\n viewportElement.style.overflowY = "auto";\n viewportElement.style.overflowX = "hidden";\n viewportElement.style.pointerEvents = "auto";\n viewportElement.style.setProperty("-webkit-overflow-scrolling", "touch");\n }\n return () => {\n if (viewportElement) {\n viewportElement.style.overscrollBehavior = previousViewportOverscroll;\n viewportElement.style.touchAction = previousViewportTouchAction;\n viewportElement.style.overflowY = previousViewportOverflowY;\n viewportElement.style.overflowX = previousViewportOverflowX;\n viewportElement.style.pointerEvents = previousViewportPointerEvents;\n viewportElement.style.setProperty(\n "-webkit-overflow-scrolling",\n previousViewportWebkitOverflowScrolling\n );\n }\n };\n }\n setupTouchScrollHandlers(input) {\n let touchScrollRemainderPx = 0;\n const measuredLineHeight = input.host.querySelector(".xterm-rows > div")?.getBoundingClientRect().height ?? 0;\n const touchScrollLineHeightPx = measuredLineHeight > 0 ? measuredLineHeight : DEFAULT_TOUCH_SCROLL_LINE_HEIGHT_PX;\n const activeTouch = {\n identifier: -1,\n startX: 0,\n startY: 0,\n lastX: 0,\n lastY: 0,\n mode: null\n };\n const touchStartHandler = (event) => {\n if (event.touches.length !== 1) {\n touchScrollRemainderPx = 0;\n activeTouch.identifier = -1;\n activeTouch.mode = null;\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n touchScrollRemainderPx = 0;\n activeTouch.identifier = -1;\n activeTouch.mode = null;\n return;\n }\n activeTouch.identifier = touch.identifier;\n activeTouch.startX = touch.clientX;\n activeTouch.startY = touch.clientY;\n activeTouch.lastX = touch.clientX;\n activeTouch.lastY = touch.clientY;\n activeTouch.mode = null;\n touchScrollRemainderPx = 0;\n };\n const touchMoveHandler = (event) => {\n if (event.touches.length !== 1) {\n return;\n }\n const touch = Array.from(event.touches).find(\n (candidate) => candidate.identifier === activeTouch.identifier\n );\n if (!touch) {\n return;\n }\n const totalDeltaX = touch.clientX - activeTouch.startX;\n const totalDeltaY = touch.clientY - activeTouch.startY;\n if (activeTouch.mode === null) {\n const absX = Math.abs(totalDeltaX);\n const absY = Math.abs(totalDeltaY);\n if (absX > 8 || absY > 8) {\n activeTouch.mode = absY >= absX ? "vertical" : "horizontal";\n }\n }\n const deltaY = touch.clientY - activeTouch.lastY;\n activeTouch.lastX = touch.clientX;\n activeTouch.lastY = touch.clientY;\n if (activeTouch.mode !== "vertical") {\n return;\n }\n touchScrollRemainderPx += deltaY;\n const lineDelta = Math.trunc(touchScrollRemainderPx / touchScrollLineHeightPx);\n if (lineDelta !== 0) {\n input.terminal.scrollLines(-lineDelta);\n touchScrollRemainderPx -= lineDelta * touchScrollLineHeightPx;\n }\n event.preventDefault();\n };\n const touchEndHandler = (event) => {\n const activeTouchEnded = Array.from(event.changedTouches).some(\n (touch) => touch.identifier === activeTouch.identifier\n );\n if (activeTouchEnded || event.touches.length === 0) {\n touchScrollRemainderPx = 0;\n activeTouch.identifier = -1;\n activeTouch.mode = null;\n }\n };\n const touchCancelHandler = () => {\n touchScrollRemainderPx = 0;\n activeTouch.identifier = -1;\n activeTouch.mode = null;\n };\n input.root.addEventListener("touchstart", touchStartHandler, { passive: true });\n input.root.addEventListener("touchmove", touchMoveHandler, { passive: false });\n input.root.addEventListener("touchend", touchEndHandler, { passive: true });\n input.root.addEventListener("touchcancel", touchCancelHandler, { passive: true });\n return () => {\n input.root.removeEventListener("touchstart", touchStartHandler);\n input.root.removeEventListener("touchmove", touchMoveHandler);\n input.root.removeEventListener("touchend", touchEndHandler);\n input.root.removeEventListener("touchcancel", touchCancelHandler);\n };\n }\n };\n\n // src/terminal/webview/terminal-emulator-webview-entry.ts\n var sendToNative = (message) => {\n window.ReactNativeWebView?.postMessage?.(JSON.stringify(message));\n };\n var TERMINAL_BACKGROUND_CSS_VAR = "--paseo-terminal-background";\n var DEFAULT_TERMINAL_BACKGROUND = "#0b0b0b";\n var TERMINAL_TAP_MOVE_TOLERANCE_PX = 8;\n function getTerminalBackground(theme) {\n return theme.background ?? DEFAULT_TERMINAL_BACKGROUND;\n }\n var installStyles = () => {\n const style = document.createElement("style");\n style.textContent = `\n${xterm_default}\n:root {\n ${TERMINAL_BACKGROUND_CSS_VAR}: transparent;\n}\nhtml,\nbody,\n#terminal-root {\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n overflow: hidden;\n overscroll-behavior: none;\n background: var(${TERMINAL_BACKGROUND_CSS_VAR});\n}\n#terminal-root {\n display: flex;\n min-width: 0;\n min-height: 0;\n}\n#terminal-host {\n flex: 1;\n min-width: 0;\n min-height: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: var(${TERMINAL_BACKGROUND_CSS_VAR});\n}\n#terminal-root .xterm,\n#terminal-root .xterm-screen,\n#terminal-root .xterm-viewport {\n background-color: var(${TERMINAL_BACKGROUND_CSS_VAR}) !important;\n}\n[data-terminal-scrollbar-root="true"] .xterm-viewport {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n[data-terminal-scrollbar-root="true"] .xterm-viewport::-webkit-scrollbar {\n width: 0;\n height: 0;\n}\n#terminal-root .xterm .xterm-helper-textarea {\n opacity: 0.01;\n width: 1px;\n height: 1px;\n min-width: 1px;\n min-height: 1px;\n color: transparent;\n background: transparent;\n caret-color: transparent;\n z-index: 5 !important;\n}\n`;\n document.head.appendChild(style);\n };\n var TerminalWebViewBridge = class {\n constructor(root2, host2) {\n this.root = root2;\n this.host = host2;\n this.root.addEventListener("pointerdown", this.handlePointerDown, { passive: true });\n this.root.addEventListener("touchstart", this.handleTouchStart, { passive: true });\n this.root.addEventListener("touchmove", this.handleTouchMove, { passive: true });\n this.root.addEventListener("touchend", this.handleTouchEnd, { passive: true });\n this.root.addEventListener("touchcancel", this.handleTouchCancel, { passive: true });\n this.root.addEventListener("pointermove", this.handlePointerMove, { passive: false });\n this.root.addEventListener("pointerup", this.handlePointerUp, { passive: true });\n this.root.addEventListener("pointercancel", this.handlePointerUp, { passive: true });\n }\n root;\n host;\n runtime = null;\n streamKey = null;\n nextLocalFileLinkRequestId = 1;\n pendingLocalFileLinkResolutions = /* @__PURE__ */ new Map();\n swipeGesturesEnabled = false;\n trackingSwipe = false;\n activePointerId = null;\n startX = 0;\n startY = 0;\n firedSwipe = false;\n tapTouchIdentifier = null;\n tapStartX = 0;\n tapStartY = 0;\n tapMoved = false;\n receive = (message) => {\n try {\n this.receiveUnsafe(message);\n } catch (error) {\n sendToNative({\n type: "debug",\n message: "terminal webview receive failed",\n details: error instanceof Error ? { message: error.message, stack: error.stack } : error\n });\n }\n };\n receiveUnsafe(message) {\n if (message.type === "mount") {\n this.mount(message);\n return;\n }\n if (message.type === "unmount") {\n this.unmount(message.streamKey);\n return;\n }\n if (!this.matches(message.streamKey)) {\n return;\n }\n if (message.type === "resolveLocalFileLinkResponse") {\n this.resolveLocalFileLinkRequest(message.requestId, message.target);\n return;\n }\n this.receiveMounted(message);\n }\n receiveMounted(message) {\n if (this.receiveConfigurationMessage(message)) return;\n switch (message.type) {\n case "writeOutput":\n this.runtime?.write({ data: encodeTerminalOutput(message.text) });\n break;\n case "restoreOutput":\n this.runtime?.restoreOutput({ data: encodeTerminalOutput(message.text) });\n break;\n case "renderSnapshot":\n this.runtime?.renderSnapshot({ state: message.state });\n break;\n case "paste":\n this.runtime?.paste(message.text);\n break;\n case "clear":\n this.runtime?.clear();\n break;\n case "focus":\n this.runtime?.focus({ forceRefocus: message.forceRefocus });\n break;\n case "resize":\n this.runtime?.resize({\n shouldClaim: message.shouldClaim ?? true,\n forceClaim: message.forceClaim\n });\n break;\n }\n }\n receiveConfigurationMessage(message) {\n switch (message.type) {\n case "setTheme":\n this.applyThemeBackground(message.theme);\n this.runtime?.setTheme({ theme: message.theme });\n return true;\n case "setScrollback":\n this.runtime?.setScrollback({ lines: message.lines });\n return true;\n case "setFont":\n this.runtime?.setFont({ fontFamily: message.fontFamily, fontSize: message.fontSize });\n return true;\n case "setPendingModifiers":\n this.runtime?.setPendingModifiers({ pendingModifiers: message.pendingModifiers });\n return true;\n case "setSwipeGesturesEnabled":\n this.swipeGesturesEnabled = message.enabled;\n return true;\n default:\n return false;\n }\n }\n mount(message) {\n this.unmount(this.streamKey);\n this.streamKey = message.streamKey;\n this.swipeGesturesEnabled = message.swipeGesturesEnabled;\n this.applyThemeBackground(message.theme);\n const runtime = new TerminalEmulatorRuntime();\n this.runtime = runtime;\n runtime.setCallbacks({\n callbacks: {\n onInput: (data) => sendToNative({ type: "input", streamKey: message.streamKey, data }),\n onResize: ({ rows, cols, shouldClaim, forceClaim }) => sendToNative({\n type: "resize",\n streamKey: message.streamKey,\n rows,\n cols,\n shouldClaim,\n forceClaim\n }),\n onTerminalKey: (input) => sendToNative({ type: "terminalKey", streamKey: message.streamKey, ...input }),\n onPendingModifiersConsumed: () => sendToNative({ type: "pendingModifiersConsumed", streamKey: message.streamKey }),\n onInputModeChange: (state) => sendToNative({ type: "inputModeChange", streamKey: message.streamKey, state }),\n onOpenExternalUrl: (url) => sendToNative({ type: "openExternalUrl", streamKey: message.streamKey, url }),\n onResolveLocalFileLink: (source) => this.requestLocalFileLinkResolution(source),\n onOpenLocalFileLink: (target, disposition) => sendToNative({\n type: "openLocalFileLink",\n streamKey: message.streamKey,\n target,\n disposition\n })\n }\n });\n runtime.setPendingModifiers({ pendingModifiers: message.pendingModifiers });\n runtime.mount({\n root: this.root,\n host: this.host,\n initialSnapshot: message.initialSnapshot,\n scrollback: message.scrollbackLines,\n theme: message.theme,\n fontFamily: message.fontFamily,\n fontSize: message.fontSize\n });\n sendToNative({ type: "rendererReady", streamKey: message.streamKey, isReady: true });\n }\n applyThemeBackground(theme) {\n const background = getTerminalBackground(theme);\n document.documentElement.style.setProperty(TERMINAL_BACKGROUND_CSS_VAR, background);\n document.body.style.backgroundColor = background;\n this.root.style.backgroundColor = background;\n this.host.style.backgroundColor = background;\n }\n blur = () => {\n this.runtime?.blur();\n };\n unmount(streamKey) {\n if (!this.runtime) {\n return;\n }\n const previousStreamKey = this.streamKey;\n this.runtime.unmount();\n this.runtime = null;\n this.streamKey = null;\n this.resolveAllLocalFileLinkRequests(null);\n if (previousStreamKey && (!streamKey || streamKey === previousStreamKey)) {\n sendToNative({ type: "rendererReady", streamKey: previousStreamKey, isReady: false });\n }\n }\n matches(streamKey) {\n return this.streamKey === streamKey;\n }\n requestLocalFileLinkResolution(source) {\n const streamKey = this.streamKey;\n if (!streamKey) {\n return Promise.resolve(null);\n }\n const requestId = this.nextLocalFileLinkRequestId++;\n return new Promise((resolve) => {\n this.pendingLocalFileLinkResolutions.set(requestId, resolve);\n sendToNative({\n type: "resolveLocalFileLink",\n streamKey,\n requestId,\n source\n });\n });\n }\n resolveLocalFileLinkRequest(requestId, target) {\n const resolve = this.pendingLocalFileLinkResolutions.get(requestId);\n if (!resolve) {\n return;\n }\n this.pendingLocalFileLinkResolutions.delete(requestId);\n resolve(target);\n }\n resolveAllLocalFileLinkRequests(target) {\n const requests = Array.from(this.pendingLocalFileLinkResolutions.values());\n this.pendingLocalFileLinkResolutions.clear();\n for (const resolve of requests) {\n resolve(target);\n }\n }\n handlePointerDown = (event) => {\n if (!event.isPrimary) {\n return;\n }\n if (!this.swipeGesturesEnabled) {\n return;\n }\n this.trackingSwipe = true;\n this.firedSwipe = false;\n this.activePointerId = event.pointerId;\n this.startX = event.clientX;\n this.startY = event.clientY;\n };\n handleTouchStart = (event) => {\n if (event.touches.length !== 1) {\n this.resetTap();\n return;\n }\n const touch = event.touches[0];\n this.tapTouchIdentifier = touch.identifier;\n this.tapStartX = touch.clientX;\n this.tapStartY = touch.clientY;\n this.tapMoved = false;\n };\n handleTouchMove = (event) => {\n const touch = this.findTrackedTouch(event.touches);\n if (!touch) {\n return;\n }\n const dx = touch.clientX - this.tapStartX;\n const dy = touch.clientY - this.tapStartY;\n if (Math.abs(dx) > TERMINAL_TAP_MOVE_TOLERANCE_PX || Math.abs(dy) > TERMINAL_TAP_MOVE_TOLERANCE_PX) {\n this.tapMoved = true;\n }\n };\n handleTouchEnd = (event) => {\n const completedTap = Boolean(this.findTrackedTouch(event.changedTouches) && !this.tapMoved);\n this.resetTap();\n if (completedTap) {\n this.runtime?.focus({ forceRefocus: true });\n }\n };\n handleTouchCancel = () => {\n this.resetTap();\n };\n handlePointerMove = (event) => {\n if (!this.trackingSwipe || this.firedSwipe || !this.streamKey) {\n return;\n }\n if (this.activePointerId !== null && event.pointerId !== this.activePointerId) {\n return;\n }\n const dx = event.clientX - this.startX;\n const dy = event.clientY - this.startY;\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n if (absDy >= 12 && absDy > absDx) {\n this.resetSwipe();\n return;\n }\n if (absDx < 22 || absDy !== 0 && absDx / absDy < 1.2) {\n return;\n }\n this.firedSwipe = true;\n sendToNative({ type: dx > 0 ? "swipeRight" : "swipeLeft", streamKey: this.streamKey });\n if (event.cancelable) event.preventDefault();\n };\n handlePointerUp = (event) => {\n if (this.activePointerId !== null && event.pointerId !== this.activePointerId) {\n return;\n }\n this.resetSwipe();\n };\n resetSwipe() {\n this.trackingSwipe = false;\n this.activePointerId = null;\n this.startX = 0;\n this.startY = 0;\n this.firedSwipe = false;\n }\n findTrackedTouch(touches) {\n if (this.tapTouchIdentifier === null) {\n return null;\n }\n for (let index = 0; index < touches.length; index += 1) {\n const touch = touches.item(index);\n if (touch?.identifier === this.tapTouchIdentifier) {\n return touch;\n }\n }\n return null;\n }\n resetTap() {\n this.tapTouchIdentifier = null;\n this.tapStartX = 0;\n this.tapStartY = 0;\n this.tapMoved = false;\n }\n };\n installStyles();\n var root = document.createElement("div");\n root.id = "terminal-root";\n root.dataset.terminalScrollbarRoot = "true";\n var host = document.createElement("div");\n host.id = "terminal-host";\n root.appendChild(host);\n document.body.appendChild(root);\n var bridge = new TerminalWebViewBridge(root, host);\n window.__PASEO_TERMINAL_WEBVIEW_RECEIVE__ = bridge.receive;\n window.__PASEO_TERMINAL_WEBVIEW_BLUR__ = bridge.blur;\n sendToNative({ type: "bridgeReady" });\n})();\n/*! Bundled license information:\n\n@xterm/addon-clipboard/lib/addon-clipboard.mjs:\n@xterm/addon-fit/lib/addon-fit.mjs:\n@xterm/addon-image/lib/addon-image.mjs:\n@xterm/addon-search/lib/addon-search.mjs:\n@xterm/addon-unicode11/lib/addon-unicode11.mjs:\n@xterm/addon-web-links/lib/addon-web-links.mjs:\n@xterm/addon-webgl/lib/addon-webgl.mjs:\n@xterm/addon-ligatures/lib/addon-ligatures.mjs:\n@xterm/xterm/lib/xterm.mjs:\n (**\n * Copyright (c) 2014-2024 The xterm.js authors. All rights reserved.\n * @license MIT\n *\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * @license MIT\n *\n * Originally forked from (with the author\'s permission):\n * Fabrice Bellard\'s javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n *)\n*/\n</script>\n </body>\n</html>';
|